@cat-factory/app 0.171.0 → 0.173.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.
Files changed (35) hide show
  1. package/README.md +4 -0
  2. package/app/components/board/AddTaskModal.vue +10 -252
  3. package/app/components/board/CreateInitiativeModal.vue +27 -0
  4. package/app/components/board/nodes/InitiativeCard.vue +14 -0
  5. package/app/components/common/InterviewGateNotice.vue +39 -0
  6. package/app/components/context/ContextAttachmentFields.vue +289 -0
  7. package/app/components/docs/DocInterviewWindow.vue +77 -14
  8. package/app/components/fragments/FragmentLibraryManager.vue +91 -13
  9. package/app/components/fragments/GitHubDocUrlImport.vue +83 -0
  10. package/app/components/github/RepoTreeBrowser.vue +65 -10
  11. package/app/components/initiative/InitiativePlanningWindow.vue +82 -13
  12. package/app/components/layout/DefaultTestEnvBanner.vue +117 -0
  13. package/app/components/panels/inspector/InitiativeInspector.vue +15 -0
  14. package/app/components/settings/DefaultProvisionTypeSection.vue +176 -0
  15. package/app/components/settings/InfrastructureWindow.vue +8 -1
  16. package/app/composables/useContextLinking.ts +14 -2
  17. package/app/composables/useInitiativePlanning.ts +28 -6
  18. package/app/pages/index.vue +12 -1
  19. package/app/stores/ui/modals.ts +46 -0
  20. package/app/stores/workspaceSettings.ts +5 -0
  21. package/app/utils/defaultProvisioning.spec.ts +100 -0
  22. package/app/utils/defaultProvisioning.ts +99 -0
  23. package/app/utils/interviewGate.spec.ts +51 -0
  24. package/app/utils/interviewGate.ts +51 -0
  25. package/i18n/locales/de.json +70 -22
  26. package/i18n/locales/en.json +73 -22
  27. package/i18n/locales/es.json +70 -22
  28. package/i18n/locales/fr.json +70 -22
  29. package/i18n/locales/he.json +70 -22
  30. package/i18n/locales/it.json +70 -22
  31. package/i18n/locales/ja.json +70 -22
  32. package/i18n/locales/pl.json +70 -22
  33. package/i18n/locales/tr.json +70 -22
  34. package/i18n/locales/uk.json +70 -22
  35. package/package.json +2 -2
@@ -934,6 +934,15 @@
934
934
  },
935
935
  "saved": "Modellzugriffsrichtlinie gespeichert",
936
936
  "saveFailed": "Modellzugriffsrichtlinie konnte nicht gespeichert werden"
937
+ },
938
+ "defaultProvision": {
939
+ "title": "Standard für neue Services",
940
+ "hint": "Der Bereitstellungsmechanismus, der für jeden künftig hinzugefügten Service vorgeschlagen wird. Bereits vorhandene Services bleiben unverändert, und jeder Service kann davon abweichen.",
941
+ "suggestionHint": "Das ist bislang nur ein Vorschlag. Speichern Sie ihn, um ihn als Standard des Boards zu hinterlegen.",
942
+ "save": "Standard speichern",
943
+ "saved": "Standard-Testumgebung gespeichert.",
944
+ "savedState": "Gespeichert.",
945
+ "saveFailed": "Die Standard-Testumgebung konnte nicht gespeichert werden."
937
946
  }
938
947
  },
939
948
  "inspector": {
@@ -2156,6 +2165,11 @@
2156
2165
  "add": "Mitglied konnte nicht hinzugefügt werden",
2157
2166
  "remove": "Mitglied konnte nicht entfernt werden"
2158
2167
  }
2168
+ },
2169
+ "defaultTestEnvBanner": {
2170
+ "title": "Standard-Testumgebung wählen",
2171
+ "body": "Für dieses Board ist noch nicht festgelegt, wie seine Services eine Testumgebung erhalten. Wählen Sie einen Standard, dann startet jeder künftig hinzugefügte Service damit, statt einzeln eingerichtet zu werden. Pro Service lässt sich das weiterhin ändern.",
2172
+ "action": "Standard wählen"
2159
2173
  }
2160
2174
  },
2161
2175
  "board": {
@@ -2318,17 +2332,6 @@
2318
2332
  "bestPractices": "Best Practices",
2319
2333
  "bestPracticesHint": "Best-Practice-Fragmente anheften, damit die Agenten dieser Aufgabe sie zusätzlich zu den Standards auf Service-Ebene befolgen.",
2320
2334
  "agentConfiguration": "Agent-Konfiguration",
2321
- "contextDocuments": "Kontextdokumente",
2322
- "contextIssues": "Kontext-Issues",
2323
- "attach": "Anhängen",
2324
- "connectSource": "Quelle verbinden",
2325
- "connectSourceNamed": "{source} verbinden",
2326
- "done": "Fertig",
2327
- "attachDocDisabledConnect": "Verbinden Sie zuerst eine Dokumentquelle (Integrationen)",
2328
- "attachDocDisabledEnable": "Aktivieren Sie zuerst die Dokumente-Integration",
2329
- "attachIssueDisabledConnect": "Verbinden Sie zuerst einen Issue-Tracker (Integrationen)",
2330
- "attachIssueDisabledEnable": "Aktivieren Sie zuerst die Issue-Tracker-Integration",
2331
- "importsOnAdd": "importiert beim Hinzufügen",
2332
2335
  "noDocsHint": "Hängen Sie eine Anforderung, ein RFC oder ein PRD an, damit Agenten es beim Implementieren dieser Aufgabe sehen.",
2333
2336
  "noIssuesHint": "Hängen Sie ein Tracker-Issue an, damit Agenten dessen Beschreibung und Kommentare beim Implementieren dieser Aufgabe sehen.",
2334
2337
  "plannedHint": "Die Aufgabe wird in einem geplanten Zustand hinzugefügt. Sie läuft erst, wenn Sie eine Pipeline darauf starten — Sie können sie bis dahin weiter bearbeiten.",
@@ -2494,6 +2497,19 @@
2494
2497
  "noTasksYet": "Noch keine Aufgaben"
2495
2498
  }
2496
2499
  },
2500
+ "contextAttachments": {
2501
+ "documents": "Kontextdokumente",
2502
+ "issues": "Kontext-Issues",
2503
+ "attach": "Anhängen",
2504
+ "done": "Fertig",
2505
+ "connectSource": "Quelle verbinden",
2506
+ "connectSourceNamed": "{source} verbinden",
2507
+ "attachDocDisabledConnect": "Verbinden Sie zuerst eine Dokumentquelle (Integrationen)",
2508
+ "attachDocDisabledEnable": "Aktivieren Sie zuerst die Dokumente-Integration",
2509
+ "attachIssueDisabledConnect": "Verbinden Sie zuerst einen Issue-Tracker (Integrationen)",
2510
+ "attachIssueDisabledEnable": "Aktivieren Sie zuerst die Issue-Tracker-Integration",
2511
+ "importsOnAdd": "importiert beim Hinzufügen"
2512
+ },
2497
2513
  "providers": {
2498
2514
  "presetMismatch": {
2499
2515
  "title": "Preset verwendet nicht verfügbare Modelle",
@@ -2826,7 +2842,8 @@
2826
2842
  "useThisFolder": "Diesen Ordner verwenden",
2827
2843
  "errors": {
2828
2844
  "listDirectory": "Verzeichnis konnte nicht aufgelistet werden"
2829
- }
2845
+ },
2846
+ "selectAllFiles": "{count} Datei auswählen | Alle {count} Dateien auswählen"
2830
2847
  }
2831
2848
  },
2832
2849
  "personalSubscriptions": {
@@ -3866,7 +3883,19 @@
3866
3883
  "link": "Als lebendes Fragment verknüpfen",
3867
3884
  "githubBrowseHint": "Durchsuchen Sie das Repo und wählen Sie eine oder mehrere zu verknüpfende Dateien.",
3868
3885
  "selectedFiles": "Ausgewählte Dateien ({count})",
3869
- "removeFile": "Datei entfernen"
3886
+ "removeFile": "Datei entfernen",
3887
+ "blockedReason": {
3888
+ "noSource": "Wählen Sie zuerst oben eine Dokumentquelle aus.",
3889
+ "noRepo": "Wählen Sie ein Repository aus oder fügen Sie oben eine GitHub-Datei- oder Ordner-URL ein.",
3890
+ "noFiles": "Haken Sie im Repository-Browser mindestens eine Datei an.",
3891
+ "noRef": "Geben Sie zuerst eine Seiten-ID oder URL ein."
3892
+ },
3893
+ "urlImport": {
3894
+ "placeholder": "GitHub-Datei- oder Ordner-URL einfügen (z. B. https://github.com/owner/repo/tree/main/docs)",
3895
+ "action": "Suchen",
3896
+ "invalid": "Das sieht nicht nach der URL einer Repository-Datei oder eines Ordners aus.",
3897
+ "notFound": "Kein zugängliches Repository passt zu {slug}. Prüfen Sie die URL oder verbinden Sie das Repository zuerst."
3898
+ }
3870
3899
  },
3871
3900
  "sources": {
3872
3901
  "metaSynced": "synchronisiert · ref {ref}",
@@ -4101,7 +4130,10 @@
4101
4130
  "pathInvalid": "Geben Sie einen Pfad innerhalb des Repositorys an (kein \"..\", keine absoluten Pfade und keine Backslashes).",
4102
4131
  "hint": "Es läuft noch nichts: Führen Sie nach dem Erstellen die Initiative-Planning-Pipeline auf dem Block aus. Sie analysiert die Codebasis und entwirft den mehrphasigen Plan zu Ihrer Freigabe.",
4103
4132
  "submit": "Initiative erstellen",
4104
- "failedTitle": "Die Initiative konnte nicht erstellt werden"
4133
+ "failedTitle": "Die Initiative konnte nicht erstellt werden",
4134
+ "contextDocsHint": "Hänge eine Anforderung, ein RFC oder ein PRD an, damit die Planungsagenten es beim Abstecken und Entwerfen des Plans lesen.",
4135
+ "contextIssuesHint": "Hänge ein Tracker-Issue an, damit die Planungsagenten beim Entwerfen des Plans seine Beschreibung und Kommentare sehen.",
4136
+ "linkFailed": "Initiative erstellt, aber {count} Anhang konnte nicht verknüpft werden | Initiative erstellt, aber {count} Anhänge konnten nicht verknüpft werden"
4105
4137
  },
4106
4138
  "status": {
4107
4139
  "planning": "Planung",
@@ -4154,6 +4186,7 @@
4154
4186
  "inspector": {
4155
4187
  "runPlanning": "Planung ausführen",
4156
4188
  "answerPlanning": "Planungsfragen beantworten",
4189
+ "planningInProgress": "Planung läuft",
4157
4190
  "pause": "Pausieren",
4158
4191
  "resume": "Fortsetzen",
4159
4192
  "cancel": "Initiative abbrechen",
@@ -4162,13 +4195,21 @@
4162
4195
  "planning": {
4163
4196
  "title": "Die Initiative planen",
4164
4197
  "subtitle": "Beantworten Sie die Fragen des Planers, damit er die Initiative eingrenzen kann",
4165
- "intro": "Der Planer grenzt diese Initiative ein. Beantworten Sie seine Fragen, um Ziel und Einschränkungen zu formen, dann fahren Sie fort oder gehen Sie mit dem, was er hat, zur Planung über.",
4198
+ "intro": "Der Planer grenzt diese Initiative ein. Beantworten Sie seine Fragen, um Ziel und Einschränkungen zu formen, und senden Sie sie dann ab. Sie können ihn auch mit dem, was er bereits hat, jetzt planen lassen.",
4166
4199
  "empty": "Keine Initiative für diesen Block gefunden.",
4167
4200
  "converged": "Keine Fragen ausstehend. Der Planer hat, was er braucht, und entwirft den Plan.",
4201
+ "idle": "Die Planung wurde noch nicht gestartet. Führen Sie die Planung von der Initiative aus, um das Interview zu beginnen.",
4202
+ "working": "Der Planer verarbeitet Ihre Antworten",
4203
+ "workingHint": "Das dauert einen Moment. Rückfragen erscheinen hier, sobald er fertig ist, oder er beginnt mit dem Entwurf des Plans, wenn ihm die Angaben genügen.",
4204
+ "failed": "Der Planungslauf wurde abgebrochen",
4205
+ "failedHint": "Er endete, bevor der Planer antworten konnte. Ihre Antworten sind gespeichert; führen Sie die Planung von der Initiative aus erneut aus.",
4168
4206
  "answerPlaceholder": "Ihre Antwort",
4169
- "hint": "Fortfahren lässt den Planer Rückfragen stellen; Übergehen plant mit den bisherigen Antworten.",
4170
- "proceed": "Zur Planung übergehen",
4171
- "continue": "Fortfahren"
4207
+ "hint": "Antworten senden lässt den Planer Rückfragen stellen; Jetzt planen entwirft den Plan mit den bisherigen Antworten.",
4208
+ "unanswered": "Unbeantwortete Fragen: {count}",
4209
+ "proceed": "Jetzt planen",
4210
+ "proceedTitle": "Die restlichen Fragen überspringen und den Plan jetzt entwerfen",
4211
+ "continue": "Antworten senden",
4212
+ "continueTitle": "Ihre Antworten senden; der Planer stellt möglicherweise Rückfragen"
4172
4213
  },
4173
4214
  "followUpStatus": {
4174
4215
  "open": "Offen",
@@ -4501,14 +4542,21 @@
4501
4542
  "docInterview": {
4502
4543
  "title": "Das Dokument verfeinern",
4503
4544
  "subtitle": "Beantworte die Fragen des Interviewers, damit er das Dokument formen kann",
4504
- "intro": "Der Interviewer verfeinert dieses Dokument, bevor es geschrieben wird. Beantworte seine Fragen, um Umfang, Zielgruppe und Struktur zu formen, und fahre dann fort oder gehe mit dem vorhandenen Stand direkt zum Entwurf über.",
4545
+ "intro": "Der Interviewer verfeinert dieses Dokument, bevor es geschrieben wird. Beantworte seine Fragen, um Umfang, Zielgruppe und Struktur zu formen, und sende sie dann ab. Du kannst ihn auch mit dem vorhandenen Stand jetzt entwerfen lassen.",
4505
4546
  "empty": "Kein Interview für diesen Block gefunden.",
4506
4547
  "brief": "Autoren-Briefing",
4507
4548
  "converged": "Es stehen keine Fragen aus. Der Interviewer hat, was er braucht, und das Dokument wird entworfen.",
4549
+ "working": "Der Interviewer verarbeitet deine Antworten",
4550
+ "workingHint": "Das dauert einen Moment. Nachfragen erscheinen hier, sobald er fertig ist, oder der Entwurf beginnt, wenn ihm die Angaben genügen.",
4551
+ "failed": "Der Dokumentenlauf wurde abgebrochen",
4552
+ "failedHint": "Er endete, bevor der Interviewer antworten konnte. Deine Antworten sind gespeichert; führe die Dokumentaufgabe erneut aus.",
4508
4553
  "answerPlaceholder": "Deine Antwort",
4509
- "hint": "Mit \"Fortfahren\" kann der Interviewer Nachfragen stellen; mit \"Weiter zum Entwurf\" wird mit den bisherigen Antworten entworfen.",
4510
- "proceed": "Weiter zum Entwurf",
4511
- "continue": "Fortfahren",
4554
+ "hint": "Mit \"Antworten senden\" kann der Interviewer Nachfragen stellen; mit \"Jetzt entwerfen\" wird mit den bisherigen Antworten entworfen.",
4555
+ "unanswered": "Unbeantwortete Fragen: {count}",
4556
+ "proceed": "Jetzt entwerfen",
4557
+ "proceedTitle": "Die restlichen Fragen überspringen und den Entwurf jetzt beginnen",
4558
+ "continue": "Antworten senden",
4559
+ "continueTitle": "Deine Antworten senden; der Interviewer stellt möglicherweise Nachfragen",
4512
4560
  "status": {
4513
4561
  "awaiting": "Warten auf Antworten",
4514
4562
  "done": "Fertig"
@@ -309,17 +309,6 @@
309
309
  "bestPractices": "Best practices",
310
310
  "bestPracticesHint": "Pin best-practice fragments so this task's agents follow them, on top of the service-level standards.",
311
311
  "agentConfiguration": "Agent configuration",
312
- "contextDocuments": "Context documents",
313
- "contextIssues": "Context issues",
314
- "attach": "Attach",
315
- "connectSource": "Connect a source",
316
- "connectSourceNamed": "Connect {source}",
317
- "done": "Done",
318
- "attachDocDisabledConnect": "Connect a document source first (Integrations)",
319
- "attachDocDisabledEnable": "Enable the documents integration first",
320
- "attachIssueDisabledConnect": "Connect an issue tracker first (Integrations)",
321
- "attachIssueDisabledEnable": "Enable the issue-tracker integration first",
322
- "importsOnAdd": "imports on add",
323
312
  "noDocsHint": "Attach a requirement, RFC or PRD so agents see it while implementing this task.",
324
313
  "noIssuesHint": "Attach a tracker issue so agents see its description and comments while implementing this task.",
325
314
  "plannedHint": "The task is added in a planned state. It won't run until you start a pipeline on it — you can keep editing it until then.",
@@ -500,6 +489,19 @@
500
489
  "noTasksYet": "No tasks yet"
501
490
  }
502
491
  },
492
+ "contextAttachments": {
493
+ "documents": "Context documents",
494
+ "issues": "Context issues",
495
+ "attach": "Attach",
496
+ "done": "Done",
497
+ "connectSource": "Connect a source",
498
+ "connectSourceNamed": "Connect {source}",
499
+ "attachDocDisabledConnect": "Connect a document source first (Integrations)",
500
+ "attachDocDisabledEnable": "Enable the documents integration first",
501
+ "attachIssueDisabledConnect": "Connect an issue tracker first (Integrations)",
502
+ "attachIssueDisabledEnable": "Enable the issue-tracker integration first",
503
+ "importsOnAdd": "imports on add"
504
+ },
503
505
  "errors": {
504
506
  "action": {
505
507
  "retryFailed": "Retry failed",
@@ -2190,6 +2192,11 @@
2190
2192
  "add": "Could not add member",
2191
2193
  "remove": "Could not remove member"
2192
2194
  }
2195
+ },
2196
+ "defaultTestEnvBanner": {
2197
+ "title": "Pick a default test environment",
2198
+ "body": "This board hasn't chosen how its services get a test environment. Pick a default and every service you add from now on starts with it, instead of being set up one at a time. You can still change it per service.",
2199
+ "action": "Choose default"
2193
2200
  }
2194
2201
  },
2195
2202
  "settings": {
@@ -3139,6 +3146,15 @@
3139
3146
  },
3140
3147
  "saved": "Model access policy saved",
3141
3148
  "saveFailed": "Could not save the model access policy"
3149
+ },
3150
+ "defaultProvision": {
3151
+ "title": "Default for new services",
3152
+ "hint": "The provisioning mechanism suggested for every service you add from now on. It does not change services that already exist, and each service can override it.",
3153
+ "suggestionHint": "This is a suggestion so far. Save it to record it as the board's default.",
3154
+ "save": "Save default",
3155
+ "saved": "Default test environment saved.",
3156
+ "savedState": "Saved.",
3157
+ "saveFailed": "Could not save the default test environment."
3142
3158
  }
3143
3159
  },
3144
3160
  "providers": {
@@ -3488,7 +3504,8 @@
3488
3504
  "useThisFolder": "Use this folder",
3489
3505
  "errors": {
3490
3506
  "listDirectory": "Could not list directory"
3491
- }
3507
+ },
3508
+ "selectAllFiles": "Select {count} file | Select all {count} files"
3492
3509
  }
3493
3510
  },
3494
3511
  "slack": {
@@ -3562,14 +3579,21 @@
3562
3579
  "docInterview": {
3563
3580
  "title": "Refine the document",
3564
3581
  "subtitle": "Answer the interviewer's questions so it can shape the document",
3565
- "intro": "The interviewer is refining this document before it's written. Answer its questions to shape the scope, audience and structure, then continue or proceed to draft with what it has.",
3582
+ "intro": "The interviewer is refining this document before it's written. Answer its questions to shape the scope, audience and structure, then submit them. You can also have it draft now with what it already has.",
3566
3583
  "empty": "No interview found for this block.",
3567
3584
  "brief": "Authoring brief",
3568
3585
  "converged": "No questions are pending. The interviewer has what it needs and the document is being drafted.",
3586
+ "working": "The interviewer is working on your answers",
3587
+ "workingHint": "This takes a moment. Follow-up questions appear here when it is done, or drafting starts if it has enough.",
3588
+ "failed": "The document run stopped",
3589
+ "failedHint": "It ended before the interviewer could answer. Your answers are saved; re-run the document task to try again.",
3569
3590
  "answerPlaceholder": "Your answer",
3570
- "hint": "Continue lets the interviewer ask follow-ups; Proceed drafts with the answers so far.",
3571
- "proceed": "Proceed to draft",
3572
- "continue": "Continue",
3591
+ "hint": "Submit answers lets the interviewer ask follow-ups; Draft now writes the document with the answers so far.",
3592
+ "unanswered": "Unanswered questions: {count}",
3593
+ "proceed": "Draft now",
3594
+ "proceedTitle": "Skip the remaining questions and start the draft now",
3595
+ "continue": "Submit answers",
3596
+ "continueTitle": "Send your answers; the interviewer may ask follow-up questions",
3573
3597
  "status": {
3574
3598
  "awaiting": "Awaiting answers",
3575
3599
  "done": "Done"
@@ -4995,7 +5019,19 @@
4995
5019
  "link": "Link as living fragment",
4996
5020
  "githubBrowseHint": "Browse the repo and pick one or more files to link.",
4997
5021
  "selectedFiles": "Selected files ({count})",
4998
- "removeFile": "Remove file"
5022
+ "removeFile": "Remove file",
5023
+ "blockedReason": {
5024
+ "noSource": "Choose a document source above first.",
5025
+ "noRepo": "Pick a repository, or paste a GitHub file or folder URL above.",
5026
+ "noFiles": "Tick at least one file in the repository browser.",
5027
+ "noRef": "Enter a page id or URL first."
5028
+ },
5029
+ "urlImport": {
5030
+ "placeholder": "Paste a GitHub file or folder URL (e.g. https://github.com/owner/repo/tree/main/docs)",
5031
+ "action": "Find",
5032
+ "invalid": "This doesn't look like a repository file or folder URL.",
5033
+ "notFound": "No accessible repository matches {slug}. Check the URL or connect the repository first."
5034
+ }
4999
5035
  },
5000
5036
  "sources": {
5001
5037
  "metaSynced": "synced · ref {ref}",
@@ -5265,7 +5301,13 @@
5265
5301
  "pathInvalid": "Enter a path inside the repository (no \"..\", absolute paths, or backslashes).",
5266
5302
  "hint": "Nothing runs yet: after creating, run the Initiative Planning pipeline on the block. It analyses the codebase and drafts the multi-phase plan for your approval.",
5267
5303
  "submit": "Create initiative",
5268
- "failedTitle": "Could not create the initiative"
5304
+ "failedTitle": "Could not create the initiative",
5305
+ "contextDocsHint": "Attach a requirement, RFC or PRD so the planning agents read it while scoping and drafting the plan.",
5306
+ "contextIssuesHint": "Attach a tracker issue so the planning agents see its description and comments while drafting the plan.",
5307
+ "linkFailed": "Initiative created, but {count} attachment could not be linked | Initiative created, but {count} attachments could not be linked",
5308
+ "@linkFailed": {
5309
+ "description": "Count-based: how many context attachments (docs/issues) failed to link after the initiative was created (count is always >= 1). Provide ALL plural forms your language needs (English has 2; Polish/Ukrainian need 3 - one/few/many - via the custom pluralRules in i18n.config.ts)."
5310
+ }
5269
5311
  },
5270
5312
  "status": {
5271
5313
  "planning": "Planning",
@@ -5318,6 +5360,7 @@
5318
5360
  "inspector": {
5319
5361
  "runPlanning": "Run planning",
5320
5362
  "answerPlanning": "Answer planning questions",
5363
+ "planningInProgress": "Planning in progress",
5321
5364
  "pause": "Pause",
5322
5365
  "resume": "Resume",
5323
5366
  "cancel": "Cancel initiative",
@@ -5326,13 +5369,21 @@
5326
5369
  "planning": {
5327
5370
  "title": "Plan the initiative",
5328
5371
  "subtitle": "Answer the planner's questions so it can scope the initiative",
5329
- "intro": "The planner is scoping this initiative. Answer its questions to shape the goal and constraints, then continue or proceed to plan with what it has.",
5372
+ "intro": "The planner is scoping this initiative. Answer its questions to shape the goal and constraints, then submit them. You can also have it plan now with what it already has.",
5330
5373
  "empty": "No initiative found for this block.",
5331
5374
  "converged": "No questions are pending. The planner has what it needs and is drafting the plan.",
5375
+ "idle": "Planning has not started yet. Run planning from the initiative to begin the interview.",
5376
+ "working": "The planner is working on your answers",
5377
+ "workingHint": "This takes a moment. Follow-up questions appear here when it is done, or it starts drafting the plan if it has enough.",
5378
+ "failed": "The planning run stopped",
5379
+ "failedHint": "It ended before the planner could answer. Your answers are saved; re-run planning from the initiative to try again.",
5332
5380
  "answerPlaceholder": "Your answer",
5333
- "hint": "Continue lets the planner ask follow-ups; Proceed plans with the answers so far.",
5334
- "proceed": "Proceed to plan",
5335
- "continue": "Continue"
5381
+ "hint": "Submit answers lets the planner ask follow-ups; Plan now drafts the plan with the answers so far.",
5382
+ "unanswered": "Unanswered questions: {count}",
5383
+ "proceed": "Plan now",
5384
+ "proceedTitle": "Skip the remaining questions and draft the plan now",
5385
+ "continue": "Submit answers",
5386
+ "continueTitle": "Send your answers; the planner may ask follow-up questions"
5336
5387
  },
5337
5388
  "followUpStatus": {
5338
5389
  "open": "Open",
@@ -285,17 +285,6 @@
285
285
  "bestPractices": "Buenas prácticas",
286
286
  "bestPracticesHint": "Fija fragmentos de buenas prácticas para que los agentes de esta tarea los sigan, además de los estándares del servicio.",
287
287
  "agentConfiguration": "Configuración del agente",
288
- "contextDocuments": "Documentos de contexto",
289
- "contextIssues": "Incidencias de contexto",
290
- "attach": "Adjuntar",
291
- "connectSource": "Conectar una fuente",
292
- "connectSourceNamed": "Conectar {source}",
293
- "done": "Hecho",
294
- "attachDocDisabledConnect": "Conecta primero una fuente de documentos (Integraciones)",
295
- "attachDocDisabledEnable": "Activa primero la integración de documentos",
296
- "attachIssueDisabledConnect": "Conecta primero un gestor de incidencias (Integraciones)",
297
- "attachIssueDisabledEnable": "Activa primero la integración del gestor de incidencias",
298
- "importsOnAdd": "se importa al añadir",
299
288
  "noDocsHint": "Adjunta un requisito, RFC o PRD para que los agentes lo vean al implementar esta tarea.",
300
289
  "noIssuesHint": "Adjunta una incidencia del gestor para que los agentes vean su descripción y comentarios al implementar esta tarea.",
301
290
  "plannedHint": "La tarea se añade en estado planificado. No se ejecutará hasta que inicies una pipeline sobre ella; puedes seguir editándola hasta entonces.",
@@ -461,6 +450,19 @@
461
450
  "noTasksYet": "Aún no hay tareas"
462
451
  }
463
452
  },
453
+ "contextAttachments": {
454
+ "documents": "Documentos de contexto",
455
+ "issues": "Incidencias de contexto",
456
+ "attach": "Adjuntar",
457
+ "done": "Hecho",
458
+ "connectSource": "Conectar una fuente",
459
+ "connectSourceNamed": "Conectar {source}",
460
+ "attachDocDisabledConnect": "Conecta primero una fuente de documentos (Integraciones)",
461
+ "attachDocDisabledEnable": "Activa primero la integración de documentos",
462
+ "attachIssueDisabledConnect": "Conecta primero un gestor de incidencias (Integraciones)",
463
+ "attachIssueDisabledEnable": "Activa primero la integración del gestor de incidencias",
464
+ "importsOnAdd": "se importa al añadir"
465
+ },
464
466
  "errors": {
465
467
  "action": {
466
468
  "retryFailed": "El reintento falló",
@@ -2121,6 +2123,11 @@
2121
2123
  "add": "No se pudo añadir el miembro",
2122
2124
  "remove": "No se pudo quitar el miembro"
2123
2125
  }
2126
+ },
2127
+ "defaultTestEnvBanner": {
2128
+ "title": "Elige un entorno de pruebas predeterminado",
2129
+ "body": "Este tablero aún no ha definido cómo obtienen un entorno de pruebas sus servicios. Elige un valor predeterminado y todos los servicios que añadas a partir de ahora empezarán con él, en lugar de configurarse uno a uno. Podrás cambiarlo en cada servicio.",
2130
+ "action": "Elegir predeterminado"
2124
2131
  }
2125
2132
  },
2126
2133
  "settings": {
@@ -3046,6 +3053,15 @@
3046
3053
  },
3047
3054
  "saved": "Política de acceso a modelos guardada",
3048
3055
  "saveFailed": "No se pudo guardar la política de acceso a modelos"
3056
+ },
3057
+ "defaultProvision": {
3058
+ "title": "Predeterminado para servicios nuevos",
3059
+ "hint": "El mecanismo de aprovisionamiento que se sugerirá para cada servicio que añadas a partir de ahora. No modifica los servicios ya existentes y cada servicio puede sustituirlo.",
3060
+ "suggestionHint": "Por ahora es solo una sugerencia. Guárdala para registrarla como predeterminado del tablero.",
3061
+ "save": "Guardar predeterminado",
3062
+ "saved": "Entorno de pruebas predeterminado guardado.",
3063
+ "savedState": "Guardado.",
3064
+ "saveFailed": "No se ha podido guardar el entorno de pruebas predeterminado."
3049
3065
  }
3050
3066
  },
3051
3067
  "providers": {
@@ -3380,7 +3396,8 @@
3380
3396
  "useThisFolder": "Usar esta carpeta",
3381
3397
  "errors": {
3382
3398
  "listDirectory": "No se pudo listar el directorio"
3383
- }
3399
+ },
3400
+ "selectAllFiles": "Seleccionar {count} archivo | Seleccionar los {count} archivos"
3384
3401
  }
3385
3402
  },
3386
3403
  "slack": {
@@ -3454,14 +3471,21 @@
3454
3471
  "docInterview": {
3455
3472
  "title": "Refinar el documento",
3456
3473
  "subtitle": "Responde a las preguntas del entrevistador para dar forma al documento",
3457
- "intro": "El entrevistador está refinando este documento antes de redactarlo. Responde a sus preguntas para definir el alcance, el público y la estructura, y luego continúa o procede a redactar con lo que tiene.",
3474
+ "intro": "El entrevistador está refinando este documento antes de redactarlo. Responde a sus preguntas para definir el alcance, el público y la estructura, y luego envíalas. También puedes pedirle que redacte ahora con lo que ya tiene.",
3458
3475
  "empty": "No se encontró ninguna entrevista para este bloque.",
3459
3476
  "brief": "Resumen de redacción",
3460
3477
  "converged": "No hay preguntas pendientes. El entrevistador tiene lo que necesita y el documento se está redactando.",
3478
+ "working": "El entrevistador está procesando tus respuestas",
3479
+ "workingHint": "Esto tarda un momento. Las preguntas de seguimiento aparecerán aquí cuando termine, o empezará la redacción si ya tiene suficiente.",
3480
+ "failed": "La ejecución del documento se detuvo",
3481
+ "failedHint": "Terminó antes de que el entrevistador pudiera responder. Tus respuestas están guardadas; vuelve a ejecutar la tarea del documento.",
3461
3482
  "answerPlaceholder": "Tu respuesta",
3462
- "hint": "Continuar permite al entrevistador hacer preguntas de seguimiento; Proceder redacta con las respuestas actuales.",
3463
- "proceed": "Proceder a redactar",
3464
- "continue": "Continuar",
3483
+ "hint": "Enviar respuestas permite al entrevistador hacer preguntas de seguimiento; Redactar ahora redacta con las respuestas actuales.",
3484
+ "unanswered": "Preguntas sin responder: {count}",
3485
+ "proceed": "Redactar ahora",
3486
+ "proceedTitle": "Omitir las preguntas restantes y empezar la redacción ahora",
3487
+ "continue": "Enviar respuestas",
3488
+ "continueTitle": "Envía tus respuestas; el entrevistador puede hacer preguntas de seguimiento",
3465
3489
  "status": {
3466
3490
  "awaiting": "Esperando respuestas",
3467
3491
  "done": "Hecho"
@@ -4779,7 +4803,19 @@
4779
4803
  "link": "Vincular como fragmento vivo",
4780
4804
  "githubBrowseHint": "Explora el repositorio y elige uno o más archivos a enlazar.",
4781
4805
  "selectedFiles": "Archivos seleccionados ({count})",
4782
- "removeFile": "Quitar archivo"
4806
+ "removeFile": "Quitar archivo",
4807
+ "blockedReason": {
4808
+ "noSource": "Elige primero una fuente de documentos arriba.",
4809
+ "noRepo": "Elige un repositorio o pega arriba la URL de un archivo o carpeta de GitHub.",
4810
+ "noFiles": "Marca al menos un archivo en el explorador del repositorio.",
4811
+ "noRef": "Introduce primero un id de página o una URL."
4812
+ },
4813
+ "urlImport": {
4814
+ "placeholder": "Pega la URL de un archivo o carpeta de GitHub (p. ej. https://github.com/owner/repo/tree/main/docs)",
4815
+ "action": "Buscar",
4816
+ "invalid": "Esto no parece la URL de un archivo o carpeta de un repositorio.",
4817
+ "notFound": "Ningún repositorio accesible coincide con {slug}. Revisa la URL o conecta primero el repositorio."
4818
+ }
4783
4819
  },
4784
4820
  "sources": {
4785
4821
  "metaSynced": "sincronizado · ref {ref}",
@@ -5103,7 +5139,10 @@
5103
5139
  "pathInvalid": "Introduce una ruta dentro del repositorio (sin \"..\", rutas absolutas ni barras invertidas).",
5104
5140
  "hint": "Todavia no se ejecuta nada: tras crearla, ejecuta el pipeline de planificacion de iniciativas sobre el bloque. Analiza el codigo y redacta el plan multifase para tu aprobacion.",
5105
5141
  "submit": "Crear iniciativa",
5106
- "failedTitle": "No se pudo crear la iniciativa"
5142
+ "failedTitle": "No se pudo crear la iniciativa",
5143
+ "contextDocsHint": "Adjunta un requisito, RFC o PRD para que los agentes de planificación lo lean al delimitar y redactar el plan.",
5144
+ "contextIssuesHint": "Adjunta una incidencia para que los agentes de planificación vean su descripción y comentarios al redactar el plan.",
5145
+ "linkFailed": "Iniciativa creada, pero no se pudo vincular {count} adjunto | Iniciativa creada, pero no se pudieron vincular {count} adjuntos"
5107
5146
  },
5108
5147
  "status": {
5109
5148
  "planning": "Planificando",
@@ -5156,6 +5195,7 @@
5156
5195
  "inspector": {
5157
5196
  "runPlanning": "Ejecutar planificacion",
5158
5197
  "answerPlanning": "Responder preguntas de planificacion",
5198
+ "planningInProgress": "Planificacion en curso",
5159
5199
  "pause": "Pausar",
5160
5200
  "resume": "Reanudar",
5161
5201
  "cancel": "Cancelar iniciativa",
@@ -5164,13 +5204,21 @@
5164
5204
  "planning": {
5165
5205
  "title": "Planificar la iniciativa",
5166
5206
  "subtitle": "Responde las preguntas del planificador para acotar la iniciativa",
5167
- "intro": "El planificador esta acotando esta iniciativa. Responde sus preguntas para definir el objetivo y las restricciones, luego continua, o procede a planificar con lo que tiene.",
5207
+ "intro": "El planificador esta acotando esta iniciativa. Responde sus preguntas para definir el objetivo y las restricciones, y luego envialas. Tambien puedes pedirle que planifique ahora con lo que ya tiene.",
5168
5208
  "empty": "No se encontro ninguna iniciativa para este bloque.",
5169
5209
  "converged": "No hay preguntas pendientes. El planificador tiene lo que necesita y esta redactando el plan.",
5210
+ "idle": "La planificacion aun no ha comenzado. Ejecuta la planificacion desde la iniciativa para iniciar la entrevista.",
5211
+ "working": "El planificador esta procesando tus respuestas",
5212
+ "workingHint": "Esto tarda un momento. Las preguntas de seguimiento apareceran aqui cuando termine, o empezara a redactar el plan si ya tiene suficiente.",
5213
+ "failed": "La ejecucion de planificacion se detuvo",
5214
+ "failedHint": "Termino antes de que el planificador pudiera responder. Tus respuestas estan guardadas; vuelve a ejecutar la planificacion desde la iniciativa.",
5170
5215
  "answerPlaceholder": "Tu respuesta",
5171
- "hint": "Continuar permite al planificador hacer mas preguntas; Proceder planifica con las respuestas actuales.",
5172
- "proceed": "Proceder a planificar",
5173
- "continue": "Continuar"
5216
+ "hint": "Enviar respuestas permite al planificador hacer mas preguntas; Planificar ahora redacta el plan con las respuestas actuales.",
5217
+ "unanswered": "Preguntas sin responder: {count}",
5218
+ "proceed": "Planificar ahora",
5219
+ "proceedTitle": "Omitir las preguntas restantes y redactar el plan ahora",
5220
+ "continue": "Enviar respuestas",
5221
+ "continueTitle": "Envia tus respuestas; el planificador puede hacer preguntas de seguimiento"
5174
5222
  },
5175
5223
  "followUpStatus": {
5176
5224
  "open": "Abierto",