@cat-factory/app 0.183.0 → 0.184.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/pipeline/AgentPromptEditor.logic.spec.ts +93 -0
- package/app/components/pipeline/AgentPromptEditor.logic.ts +60 -0
- package/app/components/pipeline/AgentPromptEditor.vue +298 -0
- package/app/components/pipeline/PipelineBuilder.vue +62 -0
- package/app/components/sandbox/SandboxPanel.vue +63 -5
- package/app/composables/api/agentPrompts.ts +41 -0
- package/app/composables/useApi.ts +2 -0
- package/app/composables/usePipelineErrorToast.ts +8 -0
- package/app/stores/agentPrompts.ts +100 -0
- package/app/stores/sandbox.ts +15 -0
- package/app/types/agent-prompts.ts +13 -0
- package/i18n/locales/de.json +48 -4
- package/i18n/locales/en.json +63 -4
- package/i18n/locales/es.json +48 -4
- package/i18n/locales/fr.json +48 -4
- package/i18n/locales/he.json +48 -4
- package/i18n/locales/it.json +48 -4
- package/i18n/locales/ja.json +48 -4
- package/i18n/locales/pl.json +48 -4
- package/i18n/locales/tr.json +48 -4
- package/i18n/locales/uk.json +48 -4
- package/package.json +2 -2
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getAgentPromptContract,
|
|
3
|
+
listAgentPromptsContract,
|
|
4
|
+
promoteAgentPromptContract,
|
|
5
|
+
saveAgentPromptContract,
|
|
6
|
+
} from '@cat-factory/contracts'
|
|
7
|
+
import type { SaveAgentPromptInput } from '~/types/agent-prompts'
|
|
8
|
+
import type { ApiContext } from './context'
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* The workspace's agent system-prompt overrides, edited from the pipeline builder. There is no
|
|
12
|
+
* delete: going back to the shipped prompt is a save with `text: null`, so the history of what
|
|
13
|
+
* a workspace was running is never lost.
|
|
14
|
+
*/
|
|
15
|
+
export function agentPromptsApi({ send, ws }: ApiContext) {
|
|
16
|
+
return {
|
|
17
|
+
// The override INDEX (no prompt bodies) — the builder badges its steps from this.
|
|
18
|
+
listAgentPrompts: (workspaceId: string) =>
|
|
19
|
+
send(listAgentPromptsContract, { pathPrefix: ws(workspaceId) }),
|
|
20
|
+
|
|
21
|
+
// One kind's editor state: the shipped text, the effective text, and the revision log.
|
|
22
|
+
getAgentPrompt: (workspaceId: string, agentKind: string) =>
|
|
23
|
+
send(getAgentPromptContract, { pathPrefix: ws(workspaceId), pathParams: { agentKind } }),
|
|
24
|
+
|
|
25
|
+
saveAgentPrompt: (workspaceId: string, agentKind: string, body: SaveAgentPromptInput) =>
|
|
26
|
+
send(saveAgentPromptContract, {
|
|
27
|
+
pathPrefix: ws(workspaceId),
|
|
28
|
+
pathParams: { agentKind },
|
|
29
|
+
body,
|
|
30
|
+
}),
|
|
31
|
+
|
|
32
|
+
// Deploy the sandbox half of the workflow: a graded prompt version becomes the live prompt.
|
|
33
|
+
// The text is read server-side from the version, so what runs is what was graded.
|
|
34
|
+
promoteAgentPrompt: (workspaceId: string, agentKind: string, sandboxPromptVersionId: string) =>
|
|
35
|
+
send(promoteAgentPromptContract, {
|
|
36
|
+
pathPrefix: ws(workspaceId),
|
|
37
|
+
pathParams: { agentKind },
|
|
38
|
+
body: { sandboxPromptVersionId },
|
|
39
|
+
}),
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -2,6 +2,7 @@ import type { FragmentOwnerKind } from '~/types/domain'
|
|
|
2
2
|
import { createApiClient, createSend, createSendWith } from './api/client'
|
|
3
3
|
import type { ApiContext } from './api/context'
|
|
4
4
|
import { accountsApi } from './api/accounts'
|
|
5
|
+
import { agentPromptsApi } from './api/agentPrompts'
|
|
5
6
|
import { platformObservabilityApi } from './api/platformObservability'
|
|
6
7
|
import { reportsApi } from './api/reports'
|
|
7
8
|
import { authApi } from './api/auth'
|
|
@@ -134,6 +135,7 @@ export function useApi() {
|
|
|
134
135
|
...specApi(ctx),
|
|
135
136
|
...notificationsApi(ctx),
|
|
136
137
|
...presetsApi(ctx),
|
|
138
|
+
...agentPromptsApi(ctx),
|
|
137
139
|
...preflightsApi(ctx),
|
|
138
140
|
...publicApiKeysApi(ctx),
|
|
139
141
|
...sharedStacksApi(ctx),
|
|
@@ -187,6 +187,14 @@ const CONFLICT_INFO: Record<Exclude<ConflictReason, BespokeConflictReason>, Conf
|
|
|
187
187
|
titleKey: 'errors.reviewFriction.blockedTitle',
|
|
188
188
|
descriptionKey: 'errors.reviewFriction.blockedToast',
|
|
189
189
|
},
|
|
190
|
+
// Reachable from this generic lookup only if a prompt save is ever driven from a run-start
|
|
191
|
+
// path; the prompt editor words it itself (it also has to re-seed its textarea from what
|
|
192
|
+
// landed). Mapped regardless — the exhaustive Record is the drift guard, not a hint that
|
|
193
|
+
// every reason arrives here.
|
|
194
|
+
prompt_revision_conflict: {
|
|
195
|
+
titleKey: 'errors.conflict.title.prompt_revision_conflict',
|
|
196
|
+
descriptionKey: 'errors.conflict.description.prompt_revision_conflict',
|
|
197
|
+
},
|
|
190
198
|
}
|
|
191
199
|
|
|
192
200
|
/**
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { defineStore } from 'pinia'
|
|
2
|
+
import { computed, ref } from 'vue'
|
|
3
|
+
import type { AgentPromptDetail, AgentPromptSummary } from '~/types/agent-prompts'
|
|
4
|
+
import { useWorkspaceStore } from '~/stores/workspace'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* The workspace's agent system-prompt overrides — the pipeline builder's prompt editor.
|
|
8
|
+
*
|
|
9
|
+
* Two shapes, deliberately loaded apart. The INDEX (`summaries`) says which agent kinds deviate
|
|
10
|
+
* from what the product ships and is loaded with the builder, because it badges every step. A
|
|
11
|
+
* kind's prompt BODIES (`detail`) are loaded only when the editor for that kind opens: a prompt
|
|
12
|
+
* is thousands of characters and a pipeline has a dozen steps, so folding the bodies into the
|
|
13
|
+
* index would make opening the builder pay for text nobody read.
|
|
14
|
+
*/
|
|
15
|
+
export const useAgentPromptsStore = defineStore('agentPrompts', () => {
|
|
16
|
+
const api = useApi()
|
|
17
|
+
|
|
18
|
+
const summaries = ref<AgentPromptSummary[]>([])
|
|
19
|
+
const detail = ref<AgentPromptDetail | null>(null)
|
|
20
|
+
const loadingIndex = ref(false)
|
|
21
|
+
const loadingDetail = ref(false)
|
|
22
|
+
const saving = ref(false)
|
|
23
|
+
|
|
24
|
+
/** Agent kinds whose live prompt replaces the shipped one, for the builder's badges. */
|
|
25
|
+
const customizedKinds = computed(
|
|
26
|
+
() => new Set(summaries.value.filter((s) => s.customized).map((s) => s.agentKind)),
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
function isCustomized(agentKind: string): boolean {
|
|
30
|
+
return customizedKinds.value.has(agentKind)
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Load the override index. Best-effort: the builder is fully usable without it (the badges
|
|
35
|
+
* are an affordance, not the feature), and the endpoint 503s on a deployment that wires no
|
|
36
|
+
* override store at all.
|
|
37
|
+
*/
|
|
38
|
+
async function loadIndex() {
|
|
39
|
+
const ws = useWorkspaceStore()
|
|
40
|
+
if (!ws.workspaceId) return
|
|
41
|
+
loadingIndex.value = true
|
|
42
|
+
try {
|
|
43
|
+
summaries.value = await api.listAgentPrompts(ws.requireId())
|
|
44
|
+
} finally {
|
|
45
|
+
loadingIndex.value = false
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/** Open one kind's editor state. Errors propagate — an editor with no prompt is useless. */
|
|
50
|
+
async function load(agentKind: string) {
|
|
51
|
+
const ws = useWorkspaceStore()
|
|
52
|
+
detail.value = null
|
|
53
|
+
loadingDetail.value = true
|
|
54
|
+
try {
|
|
55
|
+
detail.value = await api.getAgentPrompt(ws.requireId(), agentKind)
|
|
56
|
+
return detail.value
|
|
57
|
+
} finally {
|
|
58
|
+
loadingDetail.value = false
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Append a revision: new text, or `null` to go back to the shipped prompt. The server returns
|
|
64
|
+
* the refreshed detail, so the editor re-renders from the server's view of the log rather
|
|
65
|
+
* than a locally-guessed one — which is what makes a rejected concurrent save (409) leave the
|
|
66
|
+
* user looking at what actually landed.
|
|
67
|
+
*/
|
|
68
|
+
async function save(agentKind: string, text: string | null, restoredFrom?: number) {
|
|
69
|
+
const ws = useWorkspaceStore()
|
|
70
|
+
saving.value = true
|
|
71
|
+
try {
|
|
72
|
+
detail.value = await api.saveAgentPrompt(ws.requireId(), agentKind, {
|
|
73
|
+
text,
|
|
74
|
+
...(restoredFrom !== undefined ? { restoredFrom } : {}),
|
|
75
|
+
})
|
|
76
|
+
await loadIndex()
|
|
77
|
+
return detail.value
|
|
78
|
+
} finally {
|
|
79
|
+
saving.value = false
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function reset() {
|
|
84
|
+
detail.value = null
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
return {
|
|
88
|
+
summaries,
|
|
89
|
+
detail,
|
|
90
|
+
loadingIndex,
|
|
91
|
+
loadingDetail,
|
|
92
|
+
saving,
|
|
93
|
+
customizedKinds,
|
|
94
|
+
isCustomized,
|
|
95
|
+
loadIndex,
|
|
96
|
+
load,
|
|
97
|
+
save,
|
|
98
|
+
reset,
|
|
99
|
+
}
|
|
100
|
+
})
|
package/app/stores/sandbox.ts
CHANGED
|
@@ -111,6 +111,20 @@ export const useSandboxStore = defineStore('sandbox', () => {
|
|
|
111
111
|
return saved
|
|
112
112
|
}
|
|
113
113
|
|
|
114
|
+
/**
|
|
115
|
+
* Promote a prompt version to the workspace's live prompt for its agent kind — the deploy half
|
|
116
|
+
* of the sandbox workflow. Reloads so the projected `workspace` rows (and their `live` marker)
|
|
117
|
+
* reflect the new head, and refreshes the prompt-override index the pipeline builder badges from
|
|
118
|
+
* so the two surfaces cannot disagree about what is running.
|
|
119
|
+
*/
|
|
120
|
+
async function promotePrompt(version: SandboxPromptVersion) {
|
|
121
|
+
const ws = useWorkspaceStore()
|
|
122
|
+
const detail = await api.promoteAgentPrompt(ws.requireId(), version.agentKind, version.id)
|
|
123
|
+
await load()
|
|
124
|
+
await useAgentPromptsStore().loadIndex()
|
|
125
|
+
return detail
|
|
126
|
+
}
|
|
127
|
+
|
|
114
128
|
async function archivePrompt(promptId: string) {
|
|
115
129
|
const ws = useWorkspaceStore()
|
|
116
130
|
await api.archiveSandboxPrompt(ws.requireId(), promptId)
|
|
@@ -164,6 +178,7 @@ export const useSandboxStore = defineStore('sandbox', () => {
|
|
|
164
178
|
promptsForKind,
|
|
165
179
|
fixturesForKind,
|
|
166
180
|
clonePrompt,
|
|
181
|
+
promotePrompt,
|
|
167
182
|
saveVersion,
|
|
168
183
|
archivePrompt,
|
|
169
184
|
createExperiment,
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// Per-workspace agent system-prompt overrides, mirroring `@cat-factory/contracts`
|
|
2
|
+
// (agent-prompts.ts). An append-only revision log per agent kind: the highest revision is what
|
|
3
|
+
// every run in the workspace sends, and a revision whose `text` is null is the deliberate way
|
|
4
|
+
// back to the prompt the product ships.
|
|
5
|
+
//
|
|
6
|
+
// All wire shapes are sourced from @cat-factory/contracts (single source of truth).
|
|
7
|
+
|
|
8
|
+
export type {
|
|
9
|
+
AgentPromptDetail,
|
|
10
|
+
AgentPromptRevision,
|
|
11
|
+
AgentPromptSummary,
|
|
12
|
+
SaveAgentPromptInput,
|
|
13
|
+
} from '@cat-factory/contracts'
|
package/i18n/locales/de.json
CHANGED
|
@@ -3604,7 +3604,9 @@
|
|
|
3604
3604
|
"skillNoneAvailable": "Keine Skills verfügbar. Verknüpfe eine Skill-Quelle in den Kontoeinstellungen.",
|
|
3605
3605
|
"skillMissing": "Dieser Skill ist nicht mehr im Katalog; wähle einen anderen.",
|
|
3606
3606
|
"skillNeedsPick": "Ein Skill-Schritt braucht einen ausgewählten Skill, bevor du speichern kannst.",
|
|
3607
|
-
"purposeStepsConflict": "Dieser Zweck schreibt keinen Code und führt keine Tests aus, doch die Pipeline enthält noch Implementierungs- oder Testschritte. Entfernen Sie diese oder setzen Sie den Zweck auf Entwicklung."
|
|
3607
|
+
"purposeStepsConflict": "Dieser Zweck schreibt keinen Code und führt keine Tests aus, doch die Pipeline enthält noch Implementierungs- oder Testschritte. Entfernen Sie diese oder setzen Sie den Zweck auf Entwicklung.",
|
|
3608
|
+
"promptEditTooltip": "Systemprompt dieses Agenten bearbeiten",
|
|
3609
|
+
"promptEditedTooltip": "Der Systemprompt dieses Agenten ist für diesen Arbeitsbereich bearbeitet"
|
|
3608
3610
|
},
|
|
3609
3611
|
"progress": {
|
|
3610
3612
|
"status": {
|
|
@@ -3678,6 +3680,41 @@
|
|
|
3678
3680
|
}
|
|
3679
3681
|
}
|
|
3680
3682
|
},
|
|
3683
|
+
"agentPrompt": {
|
|
3684
|
+
"title": "Systemprompt: {agent}",
|
|
3685
|
+
"description": "Ersetzt die Anweisung dieses Agenten für alle Läufe in diesem Arbeitsbereich.",
|
|
3686
|
+
"customized": "Bearbeitet",
|
|
3687
|
+
"usingBuiltin": "Standard",
|
|
3688
|
+
"managedNotice": "Die Plattform hängt an alles, was Sie hier speichern, ihre eigenen, nicht bearbeitbaren Regeln an.",
|
|
3689
|
+
"showAppended": "Angehängten Text anzeigen",
|
|
3690
|
+
"hideAppended": "Angehängten Text ausblenden",
|
|
3691
|
+
"appendedHeading": "Von der Plattform angehängt (nicht bearbeitbar)",
|
|
3692
|
+
"placeholder": "Beschreiben Sie, was dieser Agent tun soll.",
|
|
3693
|
+
"save": "Als neue Version speichern",
|
|
3694
|
+
"revert": "Zurück zum Standard",
|
|
3695
|
+
"loadBuiltin": "Standardtext laden",
|
|
3696
|
+
"showBuiltin": "Mit Standard vergleichen",
|
|
3697
|
+
"hideBuiltin": "Standard ausblenden",
|
|
3698
|
+
"restoringFrom": "Aus Version {n} geladen. Speichern, um sie wieder aktiv zu setzen.",
|
|
3699
|
+
"builtinHeading": "Standardprompt",
|
|
3700
|
+
"historyHeading": "Versionsverlauf",
|
|
3701
|
+
"historyEmpty": "Dieser Agent wurde in diesem Arbeitsbereich noch nie bearbeitet.",
|
|
3702
|
+
"live": "Aktiv",
|
|
3703
|
+
"restore": "Laden",
|
|
3704
|
+
"restoreTooltip": "Diese Version in den Editor laden",
|
|
3705
|
+
"revision": {
|
|
3706
|
+
"edit": "Version {n} (bearbeitet)",
|
|
3707
|
+
"restored": "Version {n} (aus Version {from} wiederhergestellt)",
|
|
3708
|
+
"builtin": "Version {n} (zurück zum Standard)"
|
|
3709
|
+
},
|
|
3710
|
+
"toast": {
|
|
3711
|
+
"saved": "Prompt gespeichert",
|
|
3712
|
+
"reverted": "Zurück zum Standardprompt",
|
|
3713
|
+
"saveFailed": "Prompt konnte nicht gespeichert werden",
|
|
3714
|
+
"loadFailed": "Prompt konnte nicht geladen werden",
|
|
3715
|
+
"conflict": "Jemand anderes hat diesen Prompt geändert. Neu geladen - wenden Sie Ihre Änderung erneut an."
|
|
3716
|
+
}
|
|
3717
|
+
},
|
|
3681
3718
|
"requirements": {
|
|
3682
3719
|
"title": "Anforderungsprüfung",
|
|
3683
3720
|
"iteration": "Iteration {current} / {max}",
|
|
@@ -4520,7 +4557,8 @@
|
|
|
4520
4557
|
"env_test_infraless": "Nichts zu testen",
|
|
4521
4558
|
"env_test_not_provisionable": "Umgebungs-Handler nicht konfiguriert",
|
|
4522
4559
|
"env_test_no_vcs": "Git-Anbieter nicht verbunden",
|
|
4523
|
-
"env_test_connection_failed": "Umgebungsverbindung fehlgeschlagen"
|
|
4560
|
+
"env_test_connection_failed": "Umgebungsverbindung fehlgeschlagen",
|
|
4561
|
+
"prompt_revision_conflict": "Prompt von jemand anderem geändert"
|
|
4524
4562
|
},
|
|
4525
4563
|
"description": {
|
|
4526
4564
|
"dependencies_unmet": "Diese Aufgabe hängt von anderen ab, die noch nicht abgeschlossen sind. Schließe sie ab oder gib sie frei und starte dann erneut.",
|
|
@@ -4544,7 +4582,8 @@
|
|
|
4544
4582
|
"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.",
|
|
4545
4583
|
"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.",
|
|
4546
4584
|
"env_test_connection_failed": "Der Umgebungs-Handler dieses Dienstes hat seinen Verbindungstest nicht bestanden. Prüfen Sie Endpunkt, Anmeldedaten und Projekteinstellungen und testen Sie die Verbindung erneut.",
|
|
4547
|
-
"env_test_connection_failed_detail": "Der Umgebungs-Handler dieses Dienstes hat seinen Verbindungstest nicht bestanden: {detail}. Prüfen Sie Endpunkt, Anmeldedaten und Projekteinstellungen und testen Sie die Verbindung erneut."
|
|
4585
|
+
"env_test_connection_failed_detail": "Der Umgebungs-Handler dieses Dienstes hat seinen Verbindungstest nicht bestanden: {detail}. Prüfen Sie Endpunkt, Anmeldedaten und Projekteinstellungen und testen Sie die Verbindung erneut.",
|
|
4586
|
+
"prompt_revision_conflict": "Eine andere Änderung an diesem Prompt war zuerst da. Laden Sie ihn neu und wenden Sie Ihre Änderung darauf erneut an."
|
|
4548
4587
|
},
|
|
4549
4588
|
"action": {
|
|
4550
4589
|
"connectGitHub": "GitHub verbinden",
|
|
@@ -5283,7 +5322,12 @@
|
|
|
5283
5322
|
"forkOf": "Fork · {name}",
|
|
5284
5323
|
"newVersionOf": "Neue Version von · {name}",
|
|
5285
5324
|
"saveVersion": "Neue Version speichern",
|
|
5286
|
-
"hint": "Wähle einen Prompt, um eine ausgelieferte Baseline zu forken oder einen Kandidaten zu versionieren. Jedes Speichern hängt eine unveränderliche Version an, die du testen kannst."
|
|
5325
|
+
"hint": "Wähle einen Prompt, um eine ausgelieferte Baseline zu forken oder einen Kandidaten zu versionieren. Jedes Speichern hängt eine unveränderliche Version an, die du testen kannst.",
|
|
5326
|
+
"liveInWorkspace": "Aktiv",
|
|
5327
|
+
"fromWorkspace": "Ihr Arbeitsbereich",
|
|
5328
|
+
"promoteTitle": "Diesen Prompt für diesen Agenten aktiv schalten",
|
|
5329
|
+
"promoted": "Jetzt der aktive Prompt für {agent}",
|
|
5330
|
+
"promoteFailed": "Prompt konnte nicht aktiviert werden"
|
|
5287
5331
|
},
|
|
5288
5332
|
"fixtureKind": {
|
|
5289
5333
|
"requirements": "Anforderungen",
|
package/i18n/locales/en.json
CHANGED
|
@@ -556,7 +556,8 @@
|
|
|
556
556
|
"env_test_infraless": "Nothing to test",
|
|
557
557
|
"env_test_not_provisionable": "Environment handler not configured",
|
|
558
558
|
"env_test_no_vcs": "Git provider not connected",
|
|
559
|
-
"env_test_connection_failed": "Environment connection failed"
|
|
559
|
+
"env_test_connection_failed": "Environment connection failed",
|
|
560
|
+
"prompt_revision_conflict": "Prompt changed by someone else"
|
|
560
561
|
},
|
|
561
562
|
"description": {
|
|
562
563
|
"dependencies_unmet": "This task depends on others that aren't finished yet. Complete or unblock them, then start it again.",
|
|
@@ -583,7 +584,8 @@
|
|
|
583
584
|
"env_test_connection_failed_detail": "The environment handler for this service failed its connection test: {detail}. Check its endpoint, credentials and project settings, then re-test the connection.",
|
|
584
585
|
"@env_test_connection_failed_detail": {
|
|
585
586
|
"description": "Keep the named placeholder for the failure detail intact (the environment provider's connection-test error message, injected at runtime)."
|
|
586
|
-
}
|
|
587
|
+
},
|
|
588
|
+
"prompt_revision_conflict": "Another edit to this prompt landed first. Reload it and re-apply your change on top."
|
|
587
589
|
},
|
|
588
590
|
"action": {
|
|
589
591
|
"connectGitHub": "Connect GitHub",
|
|
@@ -4032,7 +4034,9 @@
|
|
|
4032
4034
|
"skillNoneAvailable": "No skills available. Link a skill source in account settings.",
|
|
4033
4035
|
"skillMissing": "This skill is no longer in the catalog; pick another.",
|
|
4034
4036
|
"skillNeedsPick": "A Skill step needs a skill selected before you can save.",
|
|
4035
|
-
"purposeStepsConflict": "This purpose writes no code and runs no tests, but the pipeline still has implementation or testing steps. Remove them or switch the purpose to Build."
|
|
4037
|
+
"purposeStepsConflict": "This purpose writes no code and runs no tests, but the pipeline still has implementation or testing steps. Remove them or switch the purpose to Build.",
|
|
4038
|
+
"promptEditTooltip": "Edit this agent's system prompt",
|
|
4039
|
+
"promptEditedTooltip": "This agent's system prompt is edited for this workspace"
|
|
4036
4040
|
},
|
|
4037
4041
|
"progress": {
|
|
4038
4042
|
"status": {
|
|
@@ -4106,6 +4110,50 @@
|
|
|
4106
4110
|
}
|
|
4107
4111
|
}
|
|
4108
4112
|
},
|
|
4113
|
+
"agentPrompt": {
|
|
4114
|
+
"title": "System prompt: {agent}",
|
|
4115
|
+
"description": "Replace what this agent is told to do, for every run in this workspace.",
|
|
4116
|
+
"customized": "Edited",
|
|
4117
|
+
"usingBuiltin": "Built-in",
|
|
4118
|
+
"@usingBuiltin": {
|
|
4119
|
+
"description": "Badge meaning this agent runs the prompt the product ships. \"Built-in\" refers to that shipped prompt specifically, not to a user-set default."
|
|
4120
|
+
},
|
|
4121
|
+
"managedNotice": "The platform appends its own non-editable rules to whatever you save here.",
|
|
4122
|
+
"showAppended": "Show what gets appended",
|
|
4123
|
+
"hideAppended": "Hide what gets appended",
|
|
4124
|
+
"appendedHeading": "Appended by the platform (not editable)",
|
|
4125
|
+
"placeholder": "Describe what this agent should do.",
|
|
4126
|
+
"save": "Save as new version",
|
|
4127
|
+
"revert": "Back to built-in",
|
|
4128
|
+
"loadBuiltin": "Load built-in text",
|
|
4129
|
+
"showBuiltin": "Compare with built-in",
|
|
4130
|
+
"hideBuiltin": "Hide built-in",
|
|
4131
|
+
"restoringFrom": "Loaded from version {n}. Save to make it live again.",
|
|
4132
|
+
"builtinHeading": "Built-in prompt",
|
|
4133
|
+
"historyHeading": "Version history",
|
|
4134
|
+
"historyEmpty": "This agent has never been edited in this workspace.",
|
|
4135
|
+
"live": "Live",
|
|
4136
|
+
"@live": {
|
|
4137
|
+
"description": "Adjective, not a verb: labels the revision that is currently in effect."
|
|
4138
|
+
},
|
|
4139
|
+
"restore": "Load",
|
|
4140
|
+
"@restore": {
|
|
4141
|
+
"description": "Verb, imperative: loads the chosen revision into the editor. It does NOT save it - the user still presses Save."
|
|
4142
|
+
},
|
|
4143
|
+
"restoreTooltip": "Load this version into the editor",
|
|
4144
|
+
"revision": {
|
|
4145
|
+
"edit": "Version {n} (edited)",
|
|
4146
|
+
"restored": "Version {n} (restored from version {from})",
|
|
4147
|
+
"builtin": "Version {n} (back to built-in)"
|
|
4148
|
+
},
|
|
4149
|
+
"toast": {
|
|
4150
|
+
"saved": "Prompt saved",
|
|
4151
|
+
"reverted": "Back to the built-in prompt",
|
|
4152
|
+
"saveFailed": "Couldn't save the prompt",
|
|
4153
|
+
"loadFailed": "Couldn't load the prompt",
|
|
4154
|
+
"conflict": "Someone else changed this prompt. Reloaded - re-apply your edit."
|
|
4155
|
+
}
|
|
4156
|
+
},
|
|
4109
4157
|
"riskPolicy": {
|
|
4110
4158
|
"health": {
|
|
4111
4159
|
"title": "Risk policy updates",
|
|
@@ -5239,7 +5287,18 @@
|
|
|
5239
5287
|
"forkOf": "Fork · {name}",
|
|
5240
5288
|
"newVersionOf": "New version of · {name}",
|
|
5241
5289
|
"saveVersion": "Save new version",
|
|
5242
|
-
"hint": "Pick a prompt to fork a shipped baseline or version a candidate. Each save appends an immutable version you can put under test."
|
|
5290
|
+
"hint": "Pick a prompt to fork a shipped baseline or version a candidate. Each save appends an immutable version you can put under test.",
|
|
5291
|
+
"liveInWorkspace": "Live",
|
|
5292
|
+
"@liveInWorkspace": {
|
|
5293
|
+
"description": "Adjective, not a verb: badges the prompt version this workspace is currently running."
|
|
5294
|
+
},
|
|
5295
|
+
"fromWorkspace": "Your workspace",
|
|
5296
|
+
"@fromWorkspace": {
|
|
5297
|
+
"description": "Badge on a prompt version that came from this workspace's own edits, as opposed to one the product ships."
|
|
5298
|
+
},
|
|
5299
|
+
"promoteTitle": "Make this the live prompt for this agent",
|
|
5300
|
+
"promoted": "Now the live prompt for {agent}",
|
|
5301
|
+
"promoteFailed": "Couldn't promote this prompt"
|
|
5243
5302
|
},
|
|
5244
5303
|
"fixtureKind": {
|
|
5245
5304
|
"requirements": "requirements",
|
package/i18n/locales/es.json
CHANGED
|
@@ -511,7 +511,8 @@
|
|
|
511
511
|
"env_test_infraless": "Nada que probar",
|
|
512
512
|
"env_test_not_provisionable": "Gestor de entorno no configurado",
|
|
513
513
|
"env_test_no_vcs": "Proveedor de Git no conectado",
|
|
514
|
-
"env_test_connection_failed": "Fallo de conexión del entorno"
|
|
514
|
+
"env_test_connection_failed": "Fallo de conexión del entorno",
|
|
515
|
+
"prompt_revision_conflict": "Otra persona cambió el prompt"
|
|
515
516
|
},
|
|
516
517
|
"description": {
|
|
517
518
|
"dependencies_unmet": "Esta tarea depende de otras que aún no están terminadas. Complétalas o desbloquéalas y vuelve a iniciarla.",
|
|
@@ -535,7 +536,8 @@
|
|
|
535
536
|
"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.",
|
|
536
537
|
"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.",
|
|
537
538
|
"env_test_connection_failed": "El gestor de entornos de este servicio no superó su prueba de conexión. Revisa su endpoint, sus credenciales y la configuración del proyecto, y vuelve a probar la conexión.",
|
|
538
|
-
"env_test_connection_failed_detail": "El gestor de entornos de este servicio no superó su prueba de conexión: {detail}. Revisa su endpoint, sus credenciales y la configuración del proyecto, y vuelve a probar la conexión."
|
|
539
|
+
"env_test_connection_failed_detail": "El gestor de entornos de este servicio no superó su prueba de conexión: {detail}. Revisa su endpoint, sus credenciales y la configuración del proyecto, y vuelve a probar la conexión.",
|
|
540
|
+
"prompt_revision_conflict": "Otra edición de este prompt llegó primero. Recárgalo y vuelve a aplicar tu cambio encima."
|
|
539
541
|
},
|
|
540
542
|
"action": {
|
|
541
543
|
"connectGitHub": "Conectar GitHub",
|
|
@@ -3918,7 +3920,9 @@
|
|
|
3918
3920
|
"skillNoneAvailable": "No hay habilidades disponibles. Vincula una fuente de habilidades en la configuración de la cuenta.",
|
|
3919
3921
|
"skillMissing": "Esta habilidad ya no está en el catálogo; elige otra.",
|
|
3920
3922
|
"skillNeedsPick": "Un paso Skill necesita una habilidad seleccionada antes de poder guardar.",
|
|
3921
|
-
"purposeStepsConflict": "Este propósito no escribe código ni ejecuta pruebas, pero la canalización todavía tiene pasos de implementación o de prueba. Quítalos o cambia el propósito a Desarrollo."
|
|
3923
|
+
"purposeStepsConflict": "Este propósito no escribe código ni ejecuta pruebas, pero la canalización todavía tiene pasos de implementación o de prueba. Quítalos o cambia el propósito a Desarrollo.",
|
|
3924
|
+
"promptEditTooltip": "Editar el prompt del sistema de este agente",
|
|
3925
|
+
"promptEditedTooltip": "El prompt del sistema de este agente está editado para este espacio de trabajo"
|
|
3922
3926
|
},
|
|
3923
3927
|
"progress": {
|
|
3924
3928
|
"status": {
|
|
@@ -3992,6 +3996,41 @@
|
|
|
3992
3996
|
}
|
|
3993
3997
|
}
|
|
3994
3998
|
},
|
|
3999
|
+
"agentPrompt": {
|
|
4000
|
+
"title": "Prompt del sistema: {agent}",
|
|
4001
|
+
"description": "Sustituye lo que se le pide a este agente en todas las ejecuciones de este espacio de trabajo.",
|
|
4002
|
+
"customized": "Editado",
|
|
4003
|
+
"usingBuiltin": "Predeterminado",
|
|
4004
|
+
"managedNotice": "La plataforma añade sus propias reglas, no editables, a todo lo que guardes aquí.",
|
|
4005
|
+
"showAppended": "Ver el texto añadido",
|
|
4006
|
+
"hideAppended": "Ocultar el texto añadido",
|
|
4007
|
+
"appendedHeading": "Añadido por la plataforma (no editable)",
|
|
4008
|
+
"placeholder": "Describe qué debe hacer este agente.",
|
|
4009
|
+
"save": "Guardar como versión nueva",
|
|
4010
|
+
"revert": "Volver al predeterminado",
|
|
4011
|
+
"loadBuiltin": "Cargar el texto predeterminado",
|
|
4012
|
+
"showBuiltin": "Comparar con el predeterminado",
|
|
4013
|
+
"hideBuiltin": "Ocultar el predeterminado",
|
|
4014
|
+
"restoringFrom": "Cargado desde la versión {n}. Guarda para volver a activarla.",
|
|
4015
|
+
"builtinHeading": "Prompt predeterminado",
|
|
4016
|
+
"historyHeading": "Historial de versiones",
|
|
4017
|
+
"historyEmpty": "Este agente nunca se ha editado en este espacio de trabajo.",
|
|
4018
|
+
"live": "Activa",
|
|
4019
|
+
"restore": "Cargar",
|
|
4020
|
+
"restoreTooltip": "Cargar esta versión en el editor",
|
|
4021
|
+
"revision": {
|
|
4022
|
+
"edit": "Versión {n} (editada)",
|
|
4023
|
+
"restored": "Versión {n} (restaurada desde la versión {from})",
|
|
4024
|
+
"builtin": "Versión {n} (vuelta al predeterminado)"
|
|
4025
|
+
},
|
|
4026
|
+
"toast": {
|
|
4027
|
+
"saved": "Prompt guardado",
|
|
4028
|
+
"reverted": "De vuelta al prompt predeterminado",
|
|
4029
|
+
"saveFailed": "No se pudo guardar el prompt",
|
|
4030
|
+
"loadFailed": "No se pudo cargar el prompt",
|
|
4031
|
+
"conflict": "Otra persona cambió este prompt. Se recargó: vuelve a aplicar tu edición."
|
|
4032
|
+
}
|
|
4033
|
+
},
|
|
3995
4034
|
"palette": {
|
|
3996
4035
|
"hint": "Haz clic en un agente para añadirlo al pipeline.",
|
|
3997
4036
|
"customAgents": "Agentes personalizados"
|
|
@@ -5020,7 +5059,12 @@
|
|
|
5020
5059
|
"forkOf": "Bifurcación · {name}",
|
|
5021
5060
|
"newVersionOf": "Nueva versión de · {name}",
|
|
5022
5061
|
"saveVersion": "Guardar nueva versión",
|
|
5023
|
-
"hint": "Elige un prompt para bifurcar una base publicada o versionar un candidato. Cada guardado añade una versión inmutable que puedes poner a prueba."
|
|
5062
|
+
"hint": "Elige un prompt para bifurcar una base publicada o versionar un candidato. Cada guardado añade una versión inmutable que puedes poner a prueba.",
|
|
5063
|
+
"liveInWorkspace": "Activo",
|
|
5064
|
+
"fromWorkspace": "Tu espacio de trabajo",
|
|
5065
|
+
"promoteTitle": "Convertir en el prompt activo de este agente",
|
|
5066
|
+
"promoted": "Ahora es el prompt activo de {agent}",
|
|
5067
|
+
"promoteFailed": "No se pudo activar este prompt"
|
|
5024
5068
|
},
|
|
5025
5069
|
"fixtureKind": {
|
|
5026
5070
|
"requirements": "requisitos",
|
package/i18n/locales/fr.json
CHANGED
|
@@ -511,7 +511,8 @@
|
|
|
511
511
|
"env_test_infraless": "Rien à tester",
|
|
512
512
|
"env_test_not_provisionable": "Gestionnaire d'environnement non configuré",
|
|
513
513
|
"env_test_no_vcs": "Fournisseur Git non connecté",
|
|
514
|
-
"env_test_connection_failed": "Échec de la connexion à l'environnement"
|
|
514
|
+
"env_test_connection_failed": "Échec de la connexion à l'environnement",
|
|
515
|
+
"prompt_revision_conflict": "Invite modifiée par quelqu'un d'autre"
|
|
515
516
|
},
|
|
516
517
|
"description": {
|
|
517
518
|
"dependencies_unmet": "Cette tâche dépend d'autres qui ne sont pas encore terminées. Terminez-les ou débloquez-les, puis relancez-la.",
|
|
@@ -535,7 +536,8 @@
|
|
|
535
536
|
"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.",
|
|
536
537
|
"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.",
|
|
537
538
|
"env_test_connection_failed": "Le gestionnaire d'environnement de ce service a échoué à son test de connexion. Vérifiez son point de terminaison, ses identifiants et les paramètres du projet, puis retestez la connexion.",
|
|
538
|
-
"env_test_connection_failed_detail": "Le gestionnaire d'environnement de ce service a échoué à son test de connexion : {detail}. Vérifiez son point de terminaison, ses identifiants et les paramètres du projet, puis retestez la connexion."
|
|
539
|
+
"env_test_connection_failed_detail": "Le gestionnaire d'environnement de ce service a échoué à son test de connexion : {detail}. Vérifiez son point de terminaison, ses identifiants et les paramètres du projet, puis retestez la connexion.",
|
|
540
|
+
"prompt_revision_conflict": "Une autre modification de cette invite est arrivée en premier. Rechargez-la et réappliquez la vôtre par-dessus."
|
|
539
541
|
},
|
|
540
542
|
"action": {
|
|
541
543
|
"connectGitHub": "Connecter GitHub",
|
|
@@ -3918,7 +3920,9 @@
|
|
|
3918
3920
|
"skillNoneAvailable": "Aucune compétence disponible. Reliez une source de compétences dans les paramètres du compte.",
|
|
3919
3921
|
"skillMissing": "Cette compétence n'est plus dans le catalogue ; choisissez-en une autre.",
|
|
3920
3922
|
"skillNeedsPick": "Une étape Skill a besoin d'une compétence sélectionnée avant de pouvoir enregistrer.",
|
|
3921
|
-
"purposeStepsConflict": "Cet objectif n'écrit aucun code et n'exécute aucun test, mais le pipeline contient encore des étapes d'implémentation ou de test. Supprimez-les ou définissez l'objectif sur Développement."
|
|
3923
|
+
"purposeStepsConflict": "Cet objectif n'écrit aucun code et n'exécute aucun test, mais le pipeline contient encore des étapes d'implémentation ou de test. Supprimez-les ou définissez l'objectif sur Développement.",
|
|
3924
|
+
"promptEditTooltip": "Modifier l'invite système de cet agent",
|
|
3925
|
+
"promptEditedTooltip": "L'invite système de cet agent est modifiée pour cet espace de travail"
|
|
3922
3926
|
},
|
|
3923
3927
|
"progress": {
|
|
3924
3928
|
"status": {
|
|
@@ -3992,6 +3996,41 @@
|
|
|
3992
3996
|
}
|
|
3993
3997
|
}
|
|
3994
3998
|
},
|
|
3999
|
+
"agentPrompt": {
|
|
4000
|
+
"title": "Invite système : {agent}",
|
|
4001
|
+
"description": "Remplace ce qui est demandé à cet agent, pour toutes les exécutions de cet espace de travail.",
|
|
4002
|
+
"customized": "Modifiée",
|
|
4003
|
+
"usingBuiltin": "Par défaut",
|
|
4004
|
+
"managedNotice": "La plateforme ajoute ses propres règles, non modifiables, à tout ce que vous enregistrez ici.",
|
|
4005
|
+
"showAppended": "Afficher le texte ajouté",
|
|
4006
|
+
"hideAppended": "Masquer le texte ajouté",
|
|
4007
|
+
"appendedHeading": "Ajouté par la plateforme (non modifiable)",
|
|
4008
|
+
"placeholder": "Décrivez ce que cet agent doit faire.",
|
|
4009
|
+
"save": "Enregistrer comme nouvelle version",
|
|
4010
|
+
"revert": "Revenir à la version par défaut",
|
|
4011
|
+
"loadBuiltin": "Charger le texte par défaut",
|
|
4012
|
+
"showBuiltin": "Comparer avec la version par défaut",
|
|
4013
|
+
"hideBuiltin": "Masquer la version par défaut",
|
|
4014
|
+
"restoringFrom": "Chargée depuis la version {n}. Enregistrez pour la réactiver.",
|
|
4015
|
+
"builtinHeading": "Invite par défaut",
|
|
4016
|
+
"historyHeading": "Historique des versions",
|
|
4017
|
+
"historyEmpty": "Cet agent n'a jamais été modifié dans cet espace de travail.",
|
|
4018
|
+
"live": "Active",
|
|
4019
|
+
"restore": "Charger",
|
|
4020
|
+
"restoreTooltip": "Charger cette version dans l'éditeur",
|
|
4021
|
+
"revision": {
|
|
4022
|
+
"edit": "Version {n} (modifiée)",
|
|
4023
|
+
"restored": "Version {n} (restaurée depuis la version {from})",
|
|
4024
|
+
"builtin": "Version {n} (retour à la version par défaut)"
|
|
4025
|
+
},
|
|
4026
|
+
"toast": {
|
|
4027
|
+
"saved": "Invite enregistrée",
|
|
4028
|
+
"reverted": "Retour à l'invite par défaut",
|
|
4029
|
+
"saveFailed": "Impossible d'enregistrer l'invite",
|
|
4030
|
+
"loadFailed": "Impossible de charger l'invite",
|
|
4031
|
+
"conflict": "Quelqu'un d'autre a modifié cette invite. Rechargée : réappliquez votre modification."
|
|
4032
|
+
}
|
|
4033
|
+
},
|
|
3995
4034
|
"palette": {
|
|
3996
4035
|
"hint": "Cliquez sur un agent pour l'ajouter au pipeline.",
|
|
3997
4036
|
"customAgents": "Agents personnalisés"
|
|
@@ -5020,7 +5059,12 @@
|
|
|
5020
5059
|
"forkOf": "Bifurcation · {name}",
|
|
5021
5060
|
"newVersionOf": "Nouvelle version de · {name}",
|
|
5022
5061
|
"saveVersion": "Enregistrer la nouvelle version",
|
|
5023
|
-
"hint": "Choisissez un prompt pour bifurquer une base publiée ou versionner un candidat. Chaque enregistrement ajoute une version immuable que vous pouvez mettre à l'épreuve."
|
|
5062
|
+
"hint": "Choisissez un prompt pour bifurquer une base publiée ou versionner un candidat. Chaque enregistrement ajoute une version immuable que vous pouvez mettre à l'épreuve.",
|
|
5063
|
+
"liveInWorkspace": "Actif",
|
|
5064
|
+
"fromWorkspace": "Votre espace de travail",
|
|
5065
|
+
"promoteTitle": "Définir comme prompt actif de cet agent",
|
|
5066
|
+
"promoted": "Désormais le prompt actif de {agent}",
|
|
5067
|
+
"promoteFailed": "Impossible d'activer ce prompt"
|
|
5024
5068
|
},
|
|
5025
5069
|
"fixtureKind": {
|
|
5026
5070
|
"requirements": "exigences",
|