specrails-desktop 2.59.2 → 2.60.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/client/dist/assets/{ActivityFeedPage-vAY9C71W.js → ActivityFeedPage-3J7fR8yB.js} +1 -1
- package/client/dist/assets/{AgentBrowserCapture-CpwjGXQm.js → AgentBrowserCapture-D4a3wYM1.js} +1 -1
- package/client/dist/assets/{AgentModeAnalyticsPane-BHeoJVxQ.js → AgentModeAnalyticsPane-Dps30tk9.js} +2 -2
- package/client/dist/assets/{AgentModeCodePane-B0Nf3YkN.js → AgentModeCodePane-CvLimey8.js} +2 -2
- package/client/dist/assets/{AgentModeJobsPane-CpbIItY_.js → AgentModeJobsPane-25tQlLpF.js} +1 -1
- package/client/dist/assets/{AgentsPage-BVJAFXn3.js → AgentsPage-CUDp_sfw.js} +2 -2
- package/client/dist/assets/{AnalyticsPage-DDWees-K.js → AnalyticsPage-DXWMGn8b.js} +1 -1
- package/client/dist/assets/{CodePage-CzV5tkvS.js → CodePage-D981zRHy.js} +1 -1
- package/client/dist/assets/{DesktopAnalyticsPage-DfRHNK7i.js → DesktopAnalyticsPage-BkFBq0E6.js} +1 -1
- package/client/dist/assets/{DocsDialog-BxduBYbh.js → DocsDialog-BL7uSbIJ.js} +1 -1
- package/client/dist/assets/{DocsPage-DOVeRJn_.js → DocsPage-CsDLbmZX.js} +1 -1
- package/client/dist/assets/{ExportDropdown-BnKVV8UK.js → ExportDropdown-B4Olg1Fk.js} +1 -1
- package/client/dist/assets/{InteractiveJobComposer-Da9dvM-0.js → InteractiveJobComposer-Z6fl4791.js} +2 -2
- package/client/dist/assets/JobDetailModal-DS_Owxs6.js +1 -0
- package/client/dist/assets/JobDetailPage-1TUQ9vlE.js +1 -0
- package/client/dist/assets/{JobsPage-0vdlbNik.js → JobsPage-BSrl8P7u.js} +1 -1
- package/client/dist/assets/LoopBuilderPage-Dh5uk2Qy.js +1 -0
- package/client/dist/assets/{LoopPreviewModal-Df-S8NGf.js → LoopPreviewModal-CH1r-KhU.js} +1 -1
- package/client/dist/assets/{LoopWindowSurface-sdb7QbSo.js → LoopWindowSurface-CiZdI6aw.js} +1 -1
- package/client/dist/assets/{LoopsPage-CDfCC9Px.js → LoopsPage-BwFujdGi.js} +1 -1
- package/client/dist/assets/{MinimizedChatsContext-DKlPf54Y.js → MinimizedChatsContext-BD2bsRBe.js} +1 -1
- package/client/dist/assets/PluginsPage-B8f49Mvn.js +2 -0
- package/client/dist/assets/{ProjectSettingsDialog-DOkjT7xv.js → ProjectSettingsDialog-D7q-O6h3.js} +1 -1
- package/client/dist/assets/{RepositoryDeliveries-CJVpOUpZ.js → RepositoryDeliveries-NNorcGzT.js} +1 -1
- package/client/dist/assets/{RepositoryScopeSelector-BeM-2gIZ.js → RepositoryScopeSelector-D-jb4bI_.js} +1 -1
- package/client/dist/assets/{ReviewPacketPage-EBCim2w_.js → ReviewPacketPage-DpZSzF-Q.js} +1 -1
- package/client/dist/assets/{TemplatePreviewModal-1-92UGwN.js → TemplatePreviewModal-5CZdAZ0G.js} +1 -1
- package/client/dist/assets/{TicketDetailModalContext-CkVXuHxU.js → TicketDetailModalContext-BHmtj1As.js} +1 -1
- package/client/dist/assets/{Trans-CzhPjnjB.js → Trans-wmTUDVyC.js} +1 -1
- package/client/dist/assets/{agentRuntime-TXPQowKJ.js → agentRuntime-7Ydcvr6P.js} +1 -1
- package/client/dist/assets/{agentRuntime-Bpx3yWHK.js → agentRuntime-BHVw9orA.js} +1 -1
- package/client/dist/assets/{agentRuntime-15Pkk6we.js → agentRuntime-DCPDaQcV.js} +1 -1
- package/client/dist/assets/{agentRuntime-C78n13To.js → agentRuntime-DKTw4Ajg.js} +1 -1
- package/client/dist/assets/{agentRuntime-CCI7XF4c.js → agentRuntime-DVhij_i_.js} +1 -1
- package/client/dist/assets/{agentRuntime-Ddqvp2bP.js → agentRuntime-Doss-T8o.js} +1 -1
- package/client/dist/assets/{agentRuntime-CKDHe2-a.js → agentRuntime-eZSMUlkM.js} +1 -1
- package/client/dist/assets/{agentRuntime-hqZRy08E.js → agentRuntime-qSSU7fQk.js} +1 -1
- package/client/dist/assets/agents-B6ZsnARo.js +1 -0
- package/client/dist/assets/agents-BORdhe0K.js +1 -0
- package/client/dist/assets/agents-C6aq9Oqs.js +1 -0
- package/client/dist/assets/agents-Cbsc4bcX.js +1 -0
- package/client/dist/assets/agents-D0uYR6hq.js +1 -0
- package/client/dist/assets/agents-Doe1sHY5.js +1 -0
- package/client/dist/assets/agents-DyNi_I9m.js +1 -0
- package/client/dist/assets/agents-StKxiTg0.js +1 -0
- package/client/dist/assets/agentstudio-7cYCXn-L.js +1 -0
- package/client/dist/assets/{agentstudio-QdAJIDef.js → agentstudio-BHWQh8G3.js} +1 -1
- package/client/dist/assets/agentstudio-BjnWHyRs.js +1 -0
- package/client/dist/assets/{agentstudio-fLXpRGIi.js → agentstudio-BkV8vcK4.js} +1 -1
- package/client/dist/assets/{agentstudio-BWAKeGgB.js → agentstudio-BzugqB_N.js} +1 -1
- package/client/dist/assets/{agentstudio-Cja8Sjcp.js → agentstudio-CWbp7KvH.js} +1 -1
- package/client/dist/assets/agentstudio-DG6plf5o.js +1 -0
- package/client/dist/assets/agentstudio-DkZVF-Cc.js +1 -0
- package/client/dist/assets/{formatDistanceToNow-DlQaXc7c.js → formatDistanceToNow-Dax4zqPF.js} +1 -1
- package/client/dist/assets/{getTimezoneOffsetInMilliseconds-DxUFGcVq.js → getTimezoneOffsetInMilliseconds-dpIo42JZ.js} +1 -1
- package/client/dist/assets/{index-Czov72g7.js → index-g8S62tpS.js} +7 -7
- package/client/dist/assets/jira-B6OYw4CJ.js +1 -0
- package/client/dist/assets/jira-BTF6RaOe.js +1 -0
- package/client/dist/assets/jira-CEetIB2q.js +1 -0
- package/client/dist/assets/jira-CIzsZLw5.js +1 -0
- package/client/dist/assets/{jira-BOoaUXbb.js → jira-Cq6yvN4q.js} +1 -1
- package/client/dist/assets/jira-Daw9tmpI.js +1 -0
- package/client/dist/assets/jira-FXr7u2lh.js +1 -0
- package/client/dist/assets/jira-LaNQn7yl.js +1 -0
- package/client/dist/assets/{jira-api-CbJvbRYx.js → jira-api-CLrIvXFm.js} +1 -1
- package/client/dist/assets/{jobs-DZAbh1m2.js → jobs-ARwD85B9.js} +1 -1
- package/client/dist/assets/{jobs-BD47Ov11.js → jobs-BMF1w4WT.js} +1 -1
- package/client/dist/assets/{jobs-tWjcDF_6.js → jobs-CBfzGLwm.js} +1 -1
- package/client/dist/assets/{jobs-CSrRx5lD.js → jobs-CPjiluBY.js} +1 -1
- package/client/dist/assets/{jobs-epP7gt8W.js → jobs-CQQd58pY.js} +1 -1
- package/client/dist/assets/{jobs-1G3wodhl.js → jobs-De3EqaO0.js} +1 -1
- package/client/dist/assets/{jobs-BLOoVRRl.js → jobs-Du9-Ei9a.js} +1 -1
- package/client/dist/assets/{jobs-B4pu8TdF.js → jobs-qMHbnxwC.js} +1 -1
- package/client/dist/assets/{project-repositories-BkBD3rxx.js → project-repositories-BkyT8AjU.js} +1 -1
- package/client/dist/assets/{spending-CYotH-9N.js → spending-Oov7p52A.js} +1 -1
- package/client/dist/assets/{useDesktop-DpxVGfUC.js → useDesktop-DpiS8Uov.js} +1 -1
- package/client/dist/assets/{useRuntimeRuns-CfGRbhr9.js → useRuntimeRuns-DBm1mul0.js} +1 -1
- package/client/dist/assets/{useSharedWebSocket-C17TGqT8.js → useSharedWebSocket-BZxKaVNT.js} +2 -2
- package/client/dist/index.html +19 -19
- package/docs/getting-started.md +2 -2
- package/docs/guide/de/agents/1-meet-the-agents.md +1 -1
- package/docs/guide/de/agents/2-profiles-and-the-balanced-default.md +1 -1
- package/docs/guide/de/agents/3-customizing-models-per-agent.md +1 -1
- package/docs/guide/de/agents/4-custom-agents-catalog.md +3 -3
- package/docs/guide/en/agents/1-meet-the-agents.md +1 -1
- package/docs/guide/en/agents/2-profiles-and-the-balanced-default.md +1 -1
- package/docs/guide/en/agents/3-customizing-models-per-agent.md +1 -1
- package/docs/guide/en/agents/4-custom-agents-catalog.md +3 -3
- package/docs/guide/es/agents/1-meet-the-agents.md +1 -1
- package/docs/guide/es/agents/2-profiles-and-the-balanced-default.md +1 -1
- package/docs/guide/es/agents/3-customizing-models-per-agent.md +1 -1
- package/docs/guide/es/agents/4-custom-agents-catalog.md +3 -3
- package/docs/guide/fr/agents/1-meet-the-agents.md +1 -1
- package/docs/guide/fr/agents/2-profiles-and-the-balanced-default.md +1 -1
- package/docs/guide/fr/agents/3-customizing-models-per-agent.md +1 -1
- package/docs/guide/fr/agents/4-custom-agents-catalog.md +3 -3
- package/docs/guide/it/agents/1-meet-the-agents.md +1 -1
- package/docs/guide/it/agents/2-profiles-and-the-balanced-default.md +1 -1
- package/docs/guide/it/agents/3-customizing-models-per-agent.md +1 -1
- package/docs/guide/it/agents/4-custom-agents-catalog.md +3 -3
- package/docs/guide/ja/agents/1-meet-the-agents.md +1 -1
- package/docs/guide/ja/agents/2-profiles-and-the-balanced-default.md +1 -1
- package/docs/guide/ja/agents/3-customizing-models-per-agent.md +1 -1
- package/docs/guide/ja/agents/4-custom-agents-catalog.md +3 -3
- package/docs/guide/pt/agents/1-meet-the-agents.md +1 -1
- package/docs/guide/pt/agents/2-profiles-and-the-balanced-default.md +1 -1
- package/docs/guide/pt/agents/3-customizing-models-per-agent.md +1 -1
- package/docs/guide/pt/agents/4-custom-agents-catalog.md +3 -3
- package/docs/guide/zh/agents/1-meet-the-agents.md +1 -1
- package/docs/guide/zh/agents/2-profiles-and-the-balanced-default.md +1 -1
- package/docs/guide/zh/agents/3-customizing-models-per-agent.md +1 -1
- package/docs/guide/zh/agents/4-custom-agents-catalog.md +3 -3
- package/docs/internals/adding-a-provider.md +7 -6
- package/docs/internals/configuration.md +45 -0
- package/docs/internals/core-runtime-updates.md +19 -0
- package/docs/internals/loop-step-log-explorer.md +27 -0
- package/docs/internals/mission-rail-cards.md +7 -0
- package/docs/internals/profiles.md +17 -10
- package/docs/internals/review-packet.md +1 -1
- package/docs/internals/safe-pr-review-flow.md +9 -0
- package/docs/internals/source-map.md +6 -2
- package/docs/jira-integration-plan.md +7 -4
- package/docs/running-pipelines.md +2 -2
- package/package.json +1 -1
- package/server/dist/core-compat.js +7 -3
- package/server/dist/core-execution.js +5 -18
- package/server/dist/jira/jira-db.js +33 -6
- package/server/dist/jira/jira-materializer.js +11 -9
- package/server/dist/jira/jira-status-resolver.js +64 -22
- package/server/dist/jira/jira-sync-manager.js +40 -1
- package/server/dist/jira-router.js +8 -41
- package/server/dist/mcp/guide.js +4 -3
- package/server/dist/modules/agent-runtime/runtime/agent-runtime-bridge.js +22 -70
- package/server/dist/modules/agent-runtime/runtime/agent-runtime-controls.js +7 -4
- package/server/dist/modules/agent-runtime/runtime/agent-runtime-settings.js +24 -1
- package/server/dist/modules/agent-runtime/runtime/agent-runtime-verification-log.js +252 -0
- package/server/dist/modules/agents/runtime/profiles-router.js +74 -36
- package/server/dist/modules/delivery/runtime/rail-relaunch.js +10 -2
- package/server/dist/modules/execution/runtime/queue-manager.js +7 -9
- package/server/dist/modules/loops/runtime/loop-agents.js +2 -5
- package/server/dist/modules/loops/runtime/loop-command-catalog.js +5 -5
- package/server/dist/modules/loops/runtime/loop-definition.js +1 -1
- package/server/dist/modules/loops/runtime/loop-executors.js +0 -2
- package/server/dist/modules/loops/runtime/loop-implement-recipe.js +5 -4
- package/server/dist/modules/loops/runtime/loop-run-manager.js +5 -3
- package/server/dist/modules/loops/runtime/loops-router.js +3 -1
- package/server/dist/path-resolver.js +41 -20
- package/server/dist/project-env.js +22 -6
- package/server/dist/providers/gemini-agent-ack.js +13 -10
- package/server/dist/setup-manager.js +28 -43
- package/server/dist/util/checkout-path.js +22 -0
- package/server/dist/workspace-manager.js +13 -71
- package/server/dist/worktree-node-modules.js +70 -34
- package/client/dist/assets/JobDetailModal-DhwKbZGe.js +0 -1
- package/client/dist/assets/JobDetailPage-MtPE-E_1.js +0 -1
- package/client/dist/assets/LoopBuilderPage-DCUHozXh.js +0 -1
- package/client/dist/assets/PluginsPage-iL0G3rQQ.js +0 -2
- package/client/dist/assets/agents-CA5eT1d0.js +0 -1
- package/client/dist/assets/agents-CAgy-5uS.js +0 -1
- package/client/dist/assets/agents-CNm6Qzlv.js +0 -1
- package/client/dist/assets/agents-CTwbx-fb.js +0 -1
- package/client/dist/assets/agents-DEGV1Vao.js +0 -1
- package/client/dist/assets/agents-HsDF1aQU.js +0 -1
- package/client/dist/assets/agents-IQjdA-z9.js +0 -1
- package/client/dist/assets/agents-RkGoteXh.js +0 -1
- package/client/dist/assets/agentstudio-B2CTtQgZ.js +0 -1
- package/client/dist/assets/agentstudio-DtfPcr99.js +0 -1
- package/client/dist/assets/agentstudio-X70BKf6u.js +0 -1
- package/client/dist/assets/agentstudio-qXKqVnWS.js +0 -1
- package/client/dist/assets/jira-BNZu8f9O.js +0 -1
- package/client/dist/assets/jira-BYVN4L2u.js +0 -1
- package/client/dist/assets/jira-CKJg3HZd.js +0 -1
- package/client/dist/assets/jira-DDDsZ4ub.js +0 -1
- package/client/dist/assets/jira-DXwYjVE4.js +0 -1
- package/client/dist/assets/jira-Dn6U2nRW.js +0 -1
- package/client/dist/assets/jira-j7hVolR5.js +0 -1
- package/server/dist/modules/loops/runtime/loop-agent-defaults.json +0 -6
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({catalog:()=>r,default:()=>c,page:()=>n,profiles:()=>i,railSelectors:()=>s,routingRule:()=>o,usage:()=>a}),n={title:`Agents`,subtitle:`Manage agent profiles and the catalog (upstream + custom) for this project.`,tabs:{profiles:`Profiles`,usage:`Usage`,catalog:`Catalog`},banner:{title:`Profile-aware pipeline requires specrails-core {{required}}+`,body:`This project has <code>{{version}}</code>. Run <code>{{command}}</code> inside the project to unlock profile mode. Profiles you create here will still save; they just won't affect the pipeline until core is updated.`,unknownVersion:`unknown`}},r={loading:`Loading catalog…`,aiEditChipLabel:`AI Edit · {{agentId}}`,errors:{loadFailed:`Catalog load failed: {{status}}`,bodyLoadFailed:`Agent body load failed: {{status}}`,generateFailed:`Generate failed: {{status}}`,agentLoadFailed:`Load failed: {{status}}`},templates:{title:`Agent template library`,countOf:`{{shown}} of {{total}}`,description:`Start from a curated template across engineering, product, science, health, legal, and more. Pick one and open it in the Studio for review and editing before saving.`,searchPlaceholder:`Search by name, description, tag, or category…`,allCategories:`All`,tagFilter:`Tag filter:`,noMatch:`No templates match your filters.`,clearFilters:`Clear filters`,openInStudio:`Open in Studio →`,tip:`Tip: click a tag pill on any card to filter by that tag.`},generate:{title:`Generate a custom agent`,agentIdLabel:`Agent id`,agentIdHint:`Must start with <code>custom-</code>.`,descriptionLabel:`Describe what this agent should do`,descriptionPlaceholder:`e.g. Review Terraform/IaC changes and flag security misconfigurations, excessive IAM permissions, and public S3 buckets before merging. Conservative and terse.`,note:`Claude will draft a full <code>.md</code> body. You'll review it in the Studio and can edit before saving. This spawns a one-shot claude invocation and can take up to 90 seconds.`,generating:`Generating…`,generateButton:`Generate`},empty:{title:`No agents installed`,body:`Run <code>{{command}}</code> in this project to install the upstream agents, or create a custom agent now.`},actions:{template:`Template`,templateTitle:`Start from a template`,generate:`Generate`,generateWithClaude:`Generate with Claude`,generateWithAi:`Generate with AI`,blank:`Blank`,blankTitle:`Start from a blank template`},sidebar:{title:`Catalog`,createLabel:`Create a custom agent:`},sections:{upstream:`Upstream ({{count}})`,upstreamDescription:`Shipped by specrails-core; read-only.`,custom:`Custom ({{count}})`,customDescription:`Your project's custom-*.md files. Use Template / Generate / Blank above to create one.`,noCustomAgents:`No custom agents yet.`},detail:{defaultModel:`default model: {{model}}`,aiEdit:`AI Edit`,aiEditTitle:`Iteratively refine this agent with AI`,readOnly:`read-only`,editableHint:`editable — use Edit above`},kind:{upstream:`upstream`,custom:`custom`}},i={providerLabel:`Profile provider`,loading:`Loading profiles…`,selectPrompt:`Select a profile to edit`,errors:{listFailed:`List failed: {{status}}`,loadFailed:`Load failed: {{status}}`,migrationFailed:`Migration failed: {{status}}`,createFailed:`Create failed: {{status}}`,duplicateFailed:`Duplicate failed: {{status}}`,deleteFailed:`Delete failed: {{status}}`,saveFailed:`Save failed: {{status}}`},toasts:{migrated:`Profile migrated`,migratedDescription:`default profile created from your current agents`,migrationFailed:`Migration failed`,created:`Profile created`,createFailed:`Failed to create profile`,duplicated:`Profile duplicated`,duplicatedDescription:`{{from}} → {{to}}`,duplicateFailed:`Failed to duplicate profile`,deleted:`Profile deleted`,deleteFailed:`Failed to delete profile`,saved:`Profile saved`,saveFailed:`Failed to save profile`,savedWithUntargeted:`Profile saved with untargeted agents`,savedWithUntargetedDescription:`No routing rule points to: {{agents}}. Add a tag rule or retarget the default rule if you want them to run.`},createDialog:{title:`New profile`,description:`Pick a lowercase kebab-case name (letters, digits, and hyphens).`,confirmLabel:`Create`,invalidHint:`Must start with a letter or digit and contain only lowercase letters, digits, and hyphens.`},duplicateDialog:{title:`Duplicate "{{name}}"`,description:`Name for the new profile.`,invalidHint:`Lowercase kebab-case only.`},deleteDialog:{title:`Delete profile "{{name}}"?`,description:`This cannot be undone. Jobs already launched with this profile keep their snapshot; future launches will fall back to the resolution order.`},empty:{title:`No profiles yet`,body:`Profiles let you save orchestrator + agent + routing combinations and pick one per rail.`,migrateButton:`Migrate from current agents`,blankButton:`Blank profile`,migrateExplainer:`"Migrate" reads your existing <code>.claude/agents/</code> frontmatter models and creates a <code>default</code> profile mirroring today's behavior — zero-loss.`},sidebar:{title:`Profiles`,teamDefault:`(team default)`},editorFooter:{fixValidationIssues:`Fix validation issues before saving`,issuesToResolve_one:`{{count}} issue to resolve`,issuesToResolve_other:`{{count}} issues to resolve`}},a={title:`Profile usage`,windowLabel:`{{days}}d`,subtitleEmpty:`Jobs launched per profile in the selected window.`,subtitle:`Jobs launched per profile in the last {{count}} days.`,empty:`No profile-scoped jobs yet.`,jobsTooltip:`jobs`,jobsLabel_one:`job`,jobsLabel_other:`jobs`,successRateTooltip:`success rate`,okSuffix:`ok`,avgDurationTooltip:`avg duration`,avgTokensTooltip:`avg tokens`,tokensSuffix:`tok`},o={addTitle:`Add routing rule`,editTitle:`Edit routing rule`,addDescription:`Add a tag-matched routing rule using lowercase kebab-case tags.`,editDescription:`Update the tags or target agent for this rule.`,tagsLabel:`Tags`,tagsHint:`Comma-separated. Use lowercase kebab-case like <code>frontend</code> or <code>api-design</code>.`,invalidTags_one:`Invalid tag: {{tags}}. Tags must use lowercase letters, digits, and hyphens only.`,invalidTags_other:`Invalid tags: {{tags}}. Tags must use lowercase letters, digits, and hyphens only.`,routeToLabel:`Route to`,routeToHint:`Only agents in this profile's chain can be routing targets.`,addRule:`Add rule`,saveChanges:`Save changes`},s={profileTitle:`Agent profile for this rail`,noProfile:`No profile`,modelTitle:`Model for this Freestyle rail`,loopModelTitle:`Model for this loop`,engineTitle:`AI provider for all roles in this launch: architect, developer and reviewer`,localEngine:`Local engine`,rolesEngine:`Roles`,rolesEngineTitle:`Hybrid engines per role: architect, developer and reviewer use the runtime configuration; verifier and decider use the loop roles (Settings ▸ AI providers)`,rolesChip:`Per-role engines`,rolesChipTitle:`Engines configured per role in Settings ▸ AI providers: architect, developer and reviewer from the runtime configuration; verifier and decider from the loop roles. Model, effort and profile are not chosen here.`},c={page:n,catalog:r,profiles:i,usage:a,routingRule:o,railSelectors:s};export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={title:`Agenti`,subtitle:`Gestisci i profili agente e il catalogo (upstream + custom) di questo progetto.`,tabs:{profiles:`Profili`,usage:`Utilizzo`,catalog:`Catalogo`},banner:{title:`La pipeline con profili richiede specrails-core {{required}}+`,body:`Questo progetto ha <code>{{version}}</code>. Esegui <code>{{command}}</code> nel progetto per sbloccare la modalità profili. I profili creati qui verranno comunque salvati; semplicemente non influiranno sulla pipeline finché core non viene aggiornato.`,unknownVersion:`sconosciuta`}},t={loading:`Caricamento del catalogo…`,aiEditChipLabel:`Modifica AI · {{agentId}}`,errors:{loadFailed:`Caricamento del catalogo non riuscito: {{status}}`,bodyLoadFailed:`Caricamento del corpo dell'agente non riuscito: {{status}}`,generateFailed:`Generazione non riuscita: {{status}}`,agentLoadFailed:`Caricamento non riuscito: {{status}}`},templates:{title:`Libreria di template agente`,countOf:`{{shown}} di {{total}}`,description:`Parti da un template curato tra engineering, prodotto, scienza, salute, legale e altro. Scegline uno e aprilo nello Studio per revisionarlo e modificarlo prima di salvare.`,searchPlaceholder:`Cerca per nome, descrizione, tag o categoria…`,allCategories:`Tutte`,tagFilter:`Filtro tag:`,noMatch:`Nessun template corrisponde ai filtri.`,clearFilters:`Cancella filtri`,openInStudio:`Apri nello Studio →`,tip:`Suggerimento: clicca un tag su una card per filtrare per quel tag.`},generate:{title:`Genera un agente custom`,agentIdLabel:`ID agente`,agentIdHint:`Deve iniziare con <code>custom-</code>.`,descriptionLabel:`Descrivi cosa deve fare questo agente`,descriptionPlaceholder:`es. Revisiona le modifiche Terraform/IaC e segnala configurazioni di sicurezza errate, permessi IAM eccessivi e bucket S3 pubblici prima del merge. Conservativo e conciso.`,note:`Claude redigerà un corpo <code>.md</code> completo. Lo revisionerai nello Studio e potrai modificarlo prima di salvare. Questo avvia un'invocazione claude one-shot e può richiedere fino a 90 secondi.`,generating:`Generazione…`,generateButton:`Genera`},empty:{title:`Nessun agente installato`,body:`Esegui <code>{{command}}</code> in questo progetto per installare gli agenti upstream, oppure crea subito un agente custom.`},actions:{template:`Template`,templateTitle:`Parti da un template`,generate:`Genera`,generateWithClaude:`Genera con Claude`,generateWithAi:`Genera con IA`,blank:`Vuoto`,blankTitle:`Parti da un template vuoto`},sidebar:{title:`Catalogo`,createLabel:`Crea un agente custom:`},sections:{upstream:`Upstream ({{count}})`,upstreamDescription:`Forniti da specrails-core; sola lettura.`,custom:`Custom ({{count}})`,customDescription:`I file custom-*.md del tuo progetto. Usa Template / Genera / Vuoto qui sopra per crearne uno.`,noCustomAgents:`Ancora nessun agente custom.`},detail:{defaultModel:`modello predefinito: {{model}}`,aiEdit:`Modifica AI`,aiEditTitle:`Raffina iterativamente questo agente con l'AI`,readOnly:`sola lettura`,editableHint:`modificabile — usa Modifica qui sopra`},kind:{upstream:`upstream`,custom:`custom`}},n={providerLabel:`Provider del profilo`,loading:`Caricamento dei profili…`,selectPrompt:`Seleziona un profilo da modificare`,errors:{listFailed:`Caricamento dell'elenco non riuscito: {{status}}`,loadFailed:`Caricamento non riuscito: {{status}}`,migrationFailed:`Migrazione non riuscita: {{status}}`,createFailed:`Creazione non riuscita: {{status}}`,duplicateFailed:`Duplicazione non riuscita: {{status}}`,deleteFailed:`Eliminazione non riuscita: {{status}}`,saveFailed:`Salvataggio non riuscito: {{status}}`},toasts:{migrated:`Profilo migrato`,migratedDescription:`profilo default creato dagli agenti attuali`,migrationFailed:`Migrazione non riuscita`,created:`Profilo creato`,createFailed:`Impossibile creare il profilo`,duplicated:`Profilo duplicato`,duplicatedDescription:`{{from}} → {{to}}`,duplicateFailed:`Impossibile duplicare il profilo`,deleted:`Profilo eliminato`,deleteFailed:`Impossibile eliminare il profilo`,saved:`Profilo salvato`,saveFailed:`Impossibile salvare il profilo`,savedWithUntargeted:`Profilo salvato con agenti senza routing`,savedWithUntargetedDescription:`Nessuna regola di routing punta a: {{agents}}. Aggiungi una regola per tag o ridefinisci la regola default se vuoi che vengano eseguiti.`},createDialog:{title:`Nuovo profilo`,description:`Scegli un nome in kebab-case minuscolo (lettere, cifre e trattini).`,confirmLabel:`Crea`,invalidHint:`Deve iniziare con una lettera o una cifra e contenere solo lettere minuscole, cifre e trattini.`},duplicateDialog:{title:`Duplica "{{name}}"`,description:`Nome del nuovo profilo.`,invalidHint:`Solo kebab-case minuscolo.`},deleteDialog:{title:`Eliminare il profilo "{{name}}"?`,description:`Questa azione è irreversibile. I job già avviati con questo profilo mantengono il loro snapshot; i prossimi avvii ricadranno sull'ordine di risoluzione.`},empty:{title:`Ancora nessun profilo`,body:`I profili permettono di salvare combinazioni di orchestratore + agenti + routing e sceglierne una per rail.`,migrateButton:`Migra dagli agenti attuali`,blankButton:`Profilo vuoto`,migrateExplainer:`"Migra" legge i modelli dal frontmatter dei tuoi <code>.claude/agents/</code> esistenti e crea un profilo <code>default</code> che rispecchia il comportamento attuale — senza perdite.`},sidebar:{title:`Profili`,teamDefault:`(default del team)`},editorFooter:{fixValidationIssues:`Correggi i problemi di validazione prima di salvare`,issuesToResolve_one:`{{count}} problema da risolvere`,issuesToResolve_other:`{{count}} problemi da risolvere`}},r={title:`Utilizzo dei profili`,windowLabel:`{{days}}d`,subtitleEmpty:`Job avviati per profilo nella finestra selezionata.`,subtitle:`Job avviati per profilo negli ultimi {{count}} giorni.`,empty:`Ancora nessun job con profilo.`,jobsTooltip:`job`,jobsLabel_one:`job`,jobsLabel_other:`job`,successRateTooltip:`tasso di successo`,okSuffix:`ok`,avgDurationTooltip:`durata media`,avgTokensTooltip:`token medi`,tokensSuffix:`tok`},i={addTitle:`Aggiungi regola di routing`,editTitle:`Modifica regola di routing`,addDescription:`Aggiungi una regola di routing per tag usando tag in kebab-case minuscolo.`,editDescription:`Aggiorna i tag o l'agente di destinazione per questa regola.`,tagsLabel:`Tag`,tagsHint:`Separati da virgola. Usa kebab-case minuscolo come <code>frontend</code> o <code>api-design</code>.`,invalidTags_one:`Tag non valido: {{tags}}. I tag possono contenere solo lettere minuscole, cifre e trattini.`,invalidTags_other:`Tag non validi: {{tags}}. I tag possono contenere solo lettere minuscole, cifre e trattini.`,routeToLabel:`Instrada verso`,routeToHint:`Solo gli agenti nella catena di questo profilo possono essere destinazioni di routing.`,addRule:`Aggiungi regola`,saveChanges:`Salva modifiche`},a={profileTitle:`Profilo agente per questo rail`,noProfile:`Nessun profilo`,modelTitle:`Modello per questo rail Freestyle`,loopModelTitle:`Modello per questo loop`,engineTitle:`Provider IA per tutti i ruoli di questo avvio: architetto, sviluppatore e revisore`,localEngine:`Motore locale`,rolesEngine:`Ruoli`,rolesEngineTitle:`Motori ibridi per ruolo: architect, developer e reviewer usano la configurazione del runtime; verifier e decider usano i ruoli del loop (Impostazioni ▸ Agenti Specrails)`,rolesChip:`Motori per ruolo`,rolesChipTitle:`Motori configurati per ruolo in Impostazioni ▸ Agenti Specrails: architect, developer e reviewer dalla configurazione del runtime; verifier e decider dai ruoli del loop. Modello, sforzo e profilo non si scelgono qui.`},o={page:e,catalog:t,profiles:n,usage:r,routingRule:i,railSelectors:a};export{t as catalog,o as default,e as page,n as profiles,a as railSelectors,i as routingRule,r as usage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={title:`Agentes`,subtitle:`Gestiona los perfiles de agentes y el catálogo (upstream + personalizados) de este proyecto.`,tabs:{profiles:`Perfiles`,usage:`Uso`,catalog:`Catálogo`},banner:{title:`El pipeline con perfiles requiere specrails-core {{required}}+`,body:`Este proyecto tiene <code>{{version}}</code>. Ejecuta <code>{{command}}</code> dentro del proyecto para activar el modo perfiles. Los perfiles que crees aquí se guardarán igualmente; simplemente no afectarán al pipeline hasta que actualices core.`,unknownVersion:`desconocida`}},t={loading:`Cargando catálogo…`,aiEditChipLabel:`Edición IA · {{agentId}}`,errors:{loadFailed:`Error al cargar el catálogo: {{status}}`,bodyLoadFailed:`Error al cargar el cuerpo del agente: {{status}}`,generateFailed:`Error al generar: {{status}}`,agentLoadFailed:`Error al cargar: {{status}}`},templates:{title:`Biblioteca de plantillas de agentes`,countOf:`{{shown}} de {{total}}`,description:`Empieza desde una plantilla seleccionada de ingeniería, producto, ciencia, salud, legal y más. Elige una y ábrela en el Studio para revisarla y editarla antes de guardar.`,searchPlaceholder:`Buscar por nombre, descripción, etiqueta o categoría…`,allCategories:`Todas`,tagFilter:`Filtro de etiquetas:`,noMatch:`Ninguna plantilla coincide con tus filtros.`,clearFilters:`Limpiar filtros`,openInStudio:`Abrir en el Studio →`,tip:`Consejo: haz clic en una etiqueta de cualquier tarjeta para filtrar por ella.`},generate:{title:`Generar un agente personalizado`,agentIdLabel:`Id del agente`,agentIdHint:`Debe empezar por <code>custom-</code>.`,descriptionLabel:`Describe qué debe hacer este agente`,descriptionPlaceholder:`p. ej. Revisar cambios de Terraform/IaC y señalar errores de configuración de seguridad, permisos IAM excesivos y buckets S3 públicos antes del merge. Conservador y conciso.`,note:`Claude redactará un cuerpo <code>.md</code> completo. Lo revisarás en el Studio y podrás editarlo antes de guardar. Esto lanza una invocación puntual de claude y puede tardar hasta 90 segundos.`,generating:`Generando…`,generateButton:`Generar`},empty:{title:`No hay agentes instalados`,body:`Ejecuta <code>{{command}}</code> en este proyecto para instalar los agentes upstream, o crea ahora un agente personalizado.`},actions:{template:`Plantilla`,templateTitle:`Empezar desde una plantilla`,generate:`Generar`,generateWithClaude:`Generar con Claude`,generateWithAi:`Generar con IA`,blank:`En blanco`,blankTitle:`Empezar desde una plantilla en blanco`},sidebar:{title:`Catálogo`,createLabel:`Crear un agente personalizado:`},sections:{upstream:`Upstream ({{count}})`,upstreamDescription:`Incluidos con specrails-core; solo lectura.`,custom:`Personalizados ({{count}})`,customDescription:`Los archivos custom-*.md de tu proyecto. Usa Plantilla / Generar / En blanco arriba para crear uno.`,noCustomAgents:`Aún no hay agentes personalizados.`},detail:{defaultModel:`modelo por defecto: {{model}}`,aiEdit:`Edición IA`,aiEditTitle:`Refina este agente iterativamente con IA`,readOnly:`solo lectura`,editableHint:`editable — usa Editar arriba`},kind:{upstream:`upstream`,custom:`personalizado`}},n={providerLabel:`Proveedor del perfil`,loading:`Cargando perfiles…`,selectPrompt:`Selecciona un perfil para editarlo`,errors:{listFailed:`Error al listar: {{status}}`,loadFailed:`Error al cargar: {{status}}`,migrationFailed:`Error en la migración: {{status}}`,createFailed:`Error al crear: {{status}}`,duplicateFailed:`Error al duplicar: {{status}}`,deleteFailed:`Error al eliminar: {{status}}`,saveFailed:`Error al guardar: {{status}}`},toasts:{migrated:`Perfil migrado`,migratedDescription:`perfil default creado a partir de tus agentes actuales`,migrationFailed:`Error en la migración`,created:`Perfil creado`,createFailed:`No se pudo crear el perfil`,duplicated:`Perfil duplicado`,duplicatedDescription:`{{from}} → {{to}}`,duplicateFailed:`No se pudo duplicar el perfil`,deleted:`Perfil eliminado`,deleteFailed:`No se pudo eliminar el perfil`,saved:`Perfil guardado`,saveFailed:`No se pudo guardar el perfil`,savedWithUntargeted:`Perfil guardado con agentes sin asignar`,savedWithUntargetedDescription:`Ninguna regla de enrutado apunta a: {{agents}}. Añade una regla por etiquetas o reorienta la regla por defecto si quieres que se ejecuten.`},createDialog:{title:`Nuevo perfil`,description:`Elige un nombre en minúsculas y kebab-case (letras, dígitos y guiones).`,confirmLabel:`Crear`,invalidHint:`Debe empezar por una letra o un dígito y contener solo letras minúsculas, dígitos y guiones.`},duplicateDialog:{title:`Duplicar «{{name}}»`,description:`Nombre para el nuevo perfil.`,invalidHint:`Solo minúsculas en kebab-case.`},deleteDialog:{title:`¿Eliminar el perfil «{{name}}»?`,description:`Esta acción no se puede deshacer. Los jobs ya lanzados con este perfil conservan su snapshot; los próximos lanzamientos usarán el orden de resolución.`},empty:{title:`Aún no hay perfiles`,body:`Los perfiles te permiten guardar combinaciones de orquestador + agentes + enrutado y elegir una por rail.`,migrateButton:`Migrar desde los agentes actuales`,blankButton:`Perfil en blanco`,migrateExplainer:`«Migrar» lee los modelos del frontmatter de tu <code>.claude/agents/</code> actual y crea un perfil <code>default</code> que replica el comportamiento de hoy — sin pérdidas.`},sidebar:{title:`Perfiles`,teamDefault:`(por defecto del equipo)`},editorFooter:{fixValidationIssues:`Corrige los problemas de validación antes de guardar`,issuesToResolve_one:`{{count}} problema por resolver`,issuesToResolve_other:`{{count}} problemas por resolver`}},r={title:`Uso de perfiles`,windowLabel:`{{days}}d`,subtitleEmpty:`Jobs lanzados por perfil en la ventana seleccionada.`,subtitle:`Jobs lanzados por perfil en los últimos {{count}} días.`,empty:`Aún no hay jobs con perfil.`,jobsTooltip:`jobs`,jobsLabel_one:`job`,jobsLabel_other:`jobs`,successRateTooltip:`tasa de éxito`,okSuffix:`ok`,avgDurationTooltip:`duración media`,avgTokensTooltip:`media de tokens`,tokensSuffix:`tok`},i={addTitle:`Añadir regla de enrutado`,editTitle:`Editar regla de enrutado`,addDescription:`Añade una regla de enrutado por etiquetas usando etiquetas en minúsculas y kebab-case.`,editDescription:`Actualiza las etiquetas o el agente de destino de esta regla.`,tagsLabel:`Etiquetas`,tagsHint:`Separadas por comas. Usa minúsculas en kebab-case, como <code>frontend</code> o <code>api-design</code>.`,invalidTags_one:`Etiqueta no válida: {{tags}}. Las etiquetas solo pueden contener letras minúsculas, dígitos y guiones.`,invalidTags_other:`Etiquetas no válidas: {{tags}}. Las etiquetas solo pueden contener letras minúsculas, dígitos y guiones.`,routeToLabel:`Enrutar a`,routeToHint:`Solo los agentes de la cadena de este perfil pueden ser destinos de enrutado.`,addRule:`Añadir regla`,saveChanges:`Guardar cambios`},a={profileTitle:`Perfil de agentes para este rail`,noProfile:`Sin perfil`,modelTitle:`Modelo para este rail Freestyle`,loopModelTitle:`Modelo para este loop`,engineTitle:`Proveedor de IA para todos los roles de este lanzamiento: arquitecto, desarrollador y revisor`,localEngine:`Motor local`,rolesEngine:`Roles`,rolesEngineTitle:`Motores híbridos por rol: architect, developer y reviewer usan la configuración del runtime; verifier y decider usan los roles del loop (Ajustes ▸ Agentes Specrails)`,rolesChip:`Motores por rol`,rolesChipTitle:`Motores configurados por rol en Ajustes ▸ Agentes Specrails: architect, developer y reviewer desde la configuración del runtime; verifier y decider desde los roles del loop. Aquí no se elige modelo, esfuerzo ni perfil.`},o={page:e,catalog:t,profiles:n,usage:r,routingRule:i,railSelectors:a};export{t as catalog,o as default,e as page,n as profiles,a as railSelectors,i as routingRule,r as usage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={title:`Agents`,subtitle:`Gérez les profils d'agents et le catalogue (upstream + personnalisés) de ce projet.`,tabs:{profiles:`Profils`,usage:`Utilisation`,catalog:`Catalogue`},banner:{title:`Le pipeline avec profils nécessite specrails-core {{required}}+`,body:`Ce projet utilise <code>{{version}}</code>. Exécutez <code>{{command}}</code> dans le projet pour débloquer le mode profil. Les profils créés ici seront tout de même enregistrés ; ils n'affecteront simplement pas le pipeline tant que core n'est pas mis à jour.`,unknownVersion:`inconnue`}},t={loading:`Chargement du catalogue…`,aiEditChipLabel:`Édition IA · {{agentId}}`,errors:{loadFailed:`Échec du chargement du catalogue : {{status}}`,bodyLoadFailed:`Échec du chargement du corps de l'agent : {{status}}`,generateFailed:`Échec de la génération : {{status}}`,agentLoadFailed:`Échec du chargement : {{status}}`},templates:{title:`Bibliothèque de templates d'agents`,countOf:`{{shown}} sur {{total}}`,description:`Partez d'un template sélectionné dans l'ingénierie, le produit, la science, la santé, le juridique et plus encore. Choisissez-en un et ouvrez-le dans le Studio pour le relire et le modifier avant d'enregistrer.`,searchPlaceholder:`Rechercher par nom, description, tag ou catégorie…`,allCategories:`Toutes`,tagFilter:`Filtre de tags :`,noMatch:`Aucun template ne correspond à vos filtres.`,clearFilters:`Effacer les filtres`,openInStudio:`Ouvrir dans le Studio →`,tip:`Astuce : cliquez sur la pastille d'un tag sur une carte pour filtrer sur ce tag.`},generate:{title:`Générer un agent personnalisé`,agentIdLabel:`ID de l'agent`,agentIdHint:`Doit commencer par <code>custom-</code>.`,descriptionLabel:`Décrivez ce que cet agent doit faire`,descriptionPlaceholder:`ex. Relire les modifications Terraform/IaC et signaler les erreurs de configuration de sécurité, les permissions IAM excessives et les buckets S3 publics avant le merge. Conservateur et concis.`,note:`Claude rédigera un corps <code>.md</code> complet. Vous le relirez dans le Studio et pourrez le modifier avant d'enregistrer. Cela lance une invocation claude unique et peut prendre jusqu'à 90 secondes.`,generating:`Génération…`,generateButton:`Générer`},empty:{title:`Aucun agent installé`,body:`Exécutez <code>{{command}}</code> dans ce projet pour installer les agents upstream, ou créez un agent personnalisé dès maintenant.`},actions:{template:`Template`,templateTitle:`Partir d'un template`,generate:`Générer`,generateWithClaude:`Générer avec Claude`,generateWithAi:`Générer avec l’IA`,blank:`Vierge`,blankTitle:`Partir d'un template vierge`},sidebar:{title:`Catalogue`,createLabel:`Créer un agent personnalisé :`},sections:{upstream:`Upstream ({{count}})`,upstreamDescription:`Fournis par specrails-core ; lecture seule.`,custom:`Personnalisés ({{count}})`,customDescription:`Les fichiers custom-*.md de votre projet. Utilisez Template / Générer / Vierge ci-dessus pour en créer un.`,noCustomAgents:`Aucun agent personnalisé pour l'instant.`},detail:{defaultModel:`modèle par défaut : {{model}}`,aiEdit:`Édition IA`,aiEditTitle:`Affiner cet agent de manière itérative avec l'IA`,readOnly:`lecture seule`,editableHint:`modifiable — utilisez Modifier ci-dessus`},kind:{upstream:`upstream`,custom:`personnalisé`}},n={providerLabel:`Fournisseur du profil`,loading:`Chargement des profils…`,selectPrompt:`Sélectionnez un profil à modifier`,errors:{listFailed:`Échec du listage : {{status}}`,loadFailed:`Échec du chargement : {{status}}`,migrationFailed:`Échec de la migration : {{status}}`,createFailed:`Échec de la création : {{status}}`,duplicateFailed:`Échec de la duplication : {{status}}`,deleteFailed:`Échec de la suppression : {{status}}`,saveFailed:`Échec de l'enregistrement : {{status}}`},toasts:{migrated:`Profil migré`,migratedDescription:`profil default créé à partir de vos agents actuels`,migrationFailed:`Échec de la migration`,created:`Profil créé`,createFailed:`Échec de la création du profil`,duplicated:`Profil dupliqué`,duplicatedDescription:`{{from}} → {{to}}`,duplicateFailed:`Échec de la duplication du profil`,deleted:`Profil supprimé`,deleteFailed:`Échec de la suppression du profil`,saved:`Profil enregistré`,saveFailed:`Échec de l'enregistrement du profil`,savedWithUntargeted:`Profil enregistré avec des agents non ciblés`,savedWithUntargetedDescription:`Aucune règle de routage ne pointe vers : {{agents}}. Ajoutez une règle de tag ou reciblez la règle par défaut si vous voulez qu'ils s'exécutent.`},createDialog:{title:`Nouveau profil`,description:`Choisissez un nom en kebab-case minuscule (lettres, chiffres et tirets).`,confirmLabel:`Créer`,invalidHint:`Doit commencer par une lettre ou un chiffre et ne contenir que des lettres minuscules, des chiffres et des tirets.`},duplicateDialog:{title:`Dupliquer « {{name}} »`,description:`Nom du nouveau profil.`,invalidHint:`Kebab-case minuscule uniquement.`},deleteDialog:{title:`Supprimer le profil « {{name}} » ?`,description:`Cette action est irréversible. Les jobs déjà lancés avec ce profil conservent leur snapshot ; les prochains lancements reviendront à l'ordre de résolution.`},empty:{title:`Aucun profil pour l'instant`,body:`Les profils vous permettent d'enregistrer des combinaisons orchestrateur + agents + routage et d'en choisir une par rail.`,migrateButton:`Migrer depuis les agents actuels`,blankButton:`Profil vierge`,migrateExplainer:`« Migrer » lit les modèles du frontmatter de vos <code>.claude/agents/</code> existants et crée un profil <code>default</code> reproduisant le comportement actuel — sans aucune perte.`},sidebar:{title:`Profils`,teamDefault:`(défaut de l'équipe)`},editorFooter:{fixValidationIssues:`Corrigez les problèmes de validation avant d'enregistrer`,issuesToResolve_one:`{{count}} problème à résoudre`,issuesToResolve_other:`{{count}} problèmes à résoudre`}},r={title:`Utilisation des profils`,windowLabel:`{{days}}j`,subtitleEmpty:`Jobs lancés par profil sur la période sélectionnée.`,subtitle:`Jobs lancés par profil au cours des {{count}} derniers jours.`,empty:`Aucun job lié à un profil pour l'instant.`,jobsTooltip:`jobs`,jobsLabel_one:`job`,jobsLabel_other:`jobs`,successRateTooltip:`taux de réussite`,okSuffix:`ok`,avgDurationTooltip:`durée moyenne`,avgTokensTooltip:`tokens en moyenne`,tokensSuffix:`tok`},i={addTitle:`Ajouter une règle de routage`,editTitle:`Modifier la règle de routage`,addDescription:`Ajoutez une règle de routage par tags en kebab-case minuscule.`,editDescription:`Mettez à jour les tags ou l'agent cible de cette règle.`,tagsLabel:`Tags`,tagsHint:`Séparés par des virgules. Utilisez le kebab-case minuscule, comme <code>frontend</code> ou <code>api-design</code>.`,invalidTags_one:`Tag invalide : {{tags}}. Les tags ne peuvent contenir que des lettres minuscules, des chiffres et des tirets.`,invalidTags_other:`Tags invalides : {{tags}}. Les tags ne peuvent contenir que des lettres minuscules, des chiffres et des tirets.`,routeToLabel:`Router vers`,routeToHint:`Seuls les agents de la chaîne de ce profil peuvent être des cibles de routage.`,addRule:`Ajouter la règle`,saveChanges:`Enregistrer les modifications`},a={profileTitle:`Profil d'agents pour ce rail`,noProfile:`Aucun profil`,modelTitle:`Modèle pour ce rail Freestyle`,loopModelTitle:`Modèle pour ce loop`,engineTitle:`Fournisseur IA pour tous les rôles de ce lancement : architecte, développeur et réviseur`,localEngine:`Moteur local`,rolesEngine:`Rôles`,rolesEngineTitle:`Moteurs hybrides par rôle : architect, developer et reviewer utilisent la configuration du runtime ; verifier et decider utilisent les rôles de boucle (Réglages ▸ Agents Specrails)`,rolesChip:`Moteurs par rôle`,rolesChipTitle:`Moteurs configurés par rôle dans Réglages ▸ Agents Specrails : architect, developer et reviewer depuis la configuration du runtime ; verifier et decider depuis les rôles de boucle. Le modèle, l'effort et le profil ne se choisissent pas ici.`},o={page:e,catalog:t,profiles:n,usage:r,routingRule:i,railSelectors:a};export{t as catalog,o as default,e as page,n as profiles,a as railSelectors,i as routingRule,r as usage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={title:`Agentes`,subtitle:`Faça a gestão dos perfis de agentes e do catálogo (upstream + personalizados) deste projeto.`,tabs:{profiles:`Perfis`,usage:`Utilização`,catalog:`Catálogo`},banner:{title:`O pipeline com suporte de perfis requer specrails-core {{required}}+`,body:`Este projeto tem <code>{{version}}</code>. Execute <code>{{command}}</code> dentro do projeto para desbloquear o modo de perfis. Os perfis que criar aqui continuam a ser guardados; simplesmente não afetam o pipeline até o core ser atualizado.`,unknownVersion:`desconhecida`}},t={loading:`A carregar o catálogo…`,aiEditChipLabel:`Edição com IA · {{agentId}}`,errors:{loadFailed:`Falha ao carregar o catálogo: {{status}}`,bodyLoadFailed:`Falha ao carregar o corpo do agente: {{status}}`,generateFailed:`Falha ao gerar: {{status}}`,agentLoadFailed:`Falha ao carregar: {{status}}`},templates:{title:`Biblioteca de templates de agentes`,countOf:`{{shown}} de {{total}}`,description:`Comece a partir de um template selecionado nas áreas de engenharia, produto, ciência, saúde, jurídico e mais. Escolha um e abra-o no Studio para rever e editar antes de guardar.`,searchPlaceholder:`Pesquisar por nome, descrição, tag ou categoria…`,allCategories:`Todas`,tagFilter:`Filtro de tags:`,noMatch:`Nenhum template corresponde aos seus filtros.`,clearFilters:`Limpar filtros`,openInStudio:`Abrir no Studio →`,tip:`Dica: clique numa tag em qualquer cartão para filtrar por essa tag.`},generate:{title:`Gerar um agente personalizado`,agentIdLabel:`ID do agente`,agentIdHint:`Tem de começar por <code>custom-</code>.`,descriptionLabel:`Descreva o que este agente deve fazer`,descriptionPlaceholder:`p. ex. Rever alterações de Terraform/IaC e assinalar configurações de segurança incorretas, permissões IAM excessivas e buckets S3 públicos antes do merge. Conservador e conciso.`,note:`O Claude vai redigir um corpo <code>.md</code> completo. Poderá revê-lo no Studio e editá-lo antes de guardar. Isto lança uma invocação única do claude e pode demorar até 90 segundos.`,generating:`A gerar…`,generateButton:`Gerar`},empty:{title:`Nenhum agente instalado`,body:`Execute <code>{{command}}</code> neste projeto para instalar os agentes upstream, ou crie já um agente personalizado.`},actions:{template:`Template`,templateTitle:`Começar a partir de um template`,generate:`Gerar`,generateWithClaude:`Gerar com o Claude`,generateWithAi:`Gerar com IA`,blank:`Em branco`,blankTitle:`Começar a partir de um template em branco`},sidebar:{title:`Catálogo`,createLabel:`Criar um agente personalizado:`},sections:{upstream:`Upstream ({{count}})`,upstreamDescription:`Distribuídos pelo specrails-core; apenas de leitura.`,custom:`Personalizados ({{count}})`,customDescription:`Os ficheiros custom-*.md do seu projeto. Use Template / Gerar / Em branco acima para criar um.`,noCustomAgents:`Ainda não há agentes personalizados.`},detail:{defaultModel:`modelo predefinido: {{model}}`,aiEdit:`Edição com IA`,aiEditTitle:`Refinar este agente iterativamente com IA`,readOnly:`apenas leitura`,editableHint:`editável — use Editar acima`},kind:{upstream:`upstream`,custom:`personalizado`}},n={providerLabel:`Fornecedor do perfil`,loading:`A carregar perfis…`,selectPrompt:`Selecione um perfil para editar`,errors:{listFailed:`Falha ao listar: {{status}}`,loadFailed:`Falha ao carregar: {{status}}`,migrationFailed:`Falha na migração: {{status}}`,createFailed:`Falha ao criar: {{status}}`,duplicateFailed:`Falha ao duplicar: {{status}}`,deleteFailed:`Falha ao eliminar: {{status}}`,saveFailed:`Falha ao guardar: {{status}}`},toasts:{migrated:`Perfil migrado`,migratedDescription:`perfil default criado a partir dos seus agentes atuais`,migrationFailed:`Falha na migração`,created:`Perfil criado`,createFailed:`Falha ao criar o perfil`,duplicated:`Perfil duplicado`,duplicatedDescription:`{{from}} → {{to}}`,duplicateFailed:`Falha ao duplicar o perfil`,deleted:`Perfil eliminado`,deleteFailed:`Falha ao eliminar o perfil`,saved:`Perfil guardado`,saveFailed:`Falha ao guardar o perfil`,savedWithUntargeted:`Perfil guardado com agentes sem destino`,savedWithUntargetedDescription:`Nenhuma regra de encaminhamento aponta para: {{agents}}. Adicione uma regra de tags ou redirecione a regra predefinida se quiser que sejam executados.`},createDialog:{title:`Novo perfil`,description:`Escolha um nome em kebab-case minúsculo (letras, dígitos e hífenes).`,confirmLabel:`Criar`,invalidHint:`Tem de começar por uma letra ou dígito e conter apenas letras minúsculas, dígitos e hífenes.`},duplicateDialog:{title:`Duplicar "{{name}}"`,description:`Nome para o novo perfil.`,invalidHint:`Apenas kebab-case minúsculo.`},deleteDialog:{title:`Eliminar o perfil "{{name}}"?`,description:`Esta ação não pode ser anulada. Os jobs já lançados com este perfil mantêm o seu snapshot; os próximos lançamentos recorrem à ordem de resolução.`},empty:{title:`Ainda não há perfis`,body:`Os perfis permitem guardar combinações de orquestrador + agentes + encaminhamento e escolher uma por rail.`,migrateButton:`Migrar a partir dos agentes atuais`,blankButton:`Perfil em branco`,migrateExplainer:`"Migrar" lê os modelos do frontmatter existente em <code>.claude/agents/</code> e cria um perfil <code>default</code> que reflete o comportamento atual — sem perdas.`},sidebar:{title:`Perfis`,teamDefault:`(predefinição da equipa)`},editorFooter:{fixValidationIssues:`Corrija os problemas de validação antes de guardar`,issuesToResolve_one:`{{count}} problema por resolver`,issuesToResolve_other:`{{count}} problemas por resolver`}},r={title:`Utilização de perfis`,windowLabel:`{{days}}d`,subtitleEmpty:`Jobs lançados por perfil na janela selecionada.`,subtitle:`Jobs lançados por perfil nos últimos {{count}} dias.`,empty:`Ainda não há jobs associados a perfis.`,jobsTooltip:`jobs`,jobsLabel_one:`job`,jobsLabel_other:`jobs`,successRateTooltip:`taxa de sucesso`,okSuffix:`ok`,avgDurationTooltip:`duração média`,avgTokensTooltip:`média de tokens`,tokensSuffix:`tok`},i={addTitle:`Adicionar regra de encaminhamento`,editTitle:`Editar regra de encaminhamento`,addDescription:`Adicione uma regra de encaminhamento por tags usando tags em kebab-case minúsculo.`,editDescription:`Atualize as tags ou o agente de destino desta regra.`,tagsLabel:`Tags`,tagsHint:`Separadas por vírgulas. Use kebab-case minúsculo como <code>frontend</code> ou <code>api-design</code>.`,invalidTags_one:`Tag inválida: {{tags}}. As tags só podem usar letras minúsculas, dígitos e hífenes.`,invalidTags_other:`Tags inválidas: {{tags}}. As tags só podem usar letras minúsculas, dígitos e hífenes.`,routeToLabel:`Encaminhar para`,routeToHint:`Apenas os agentes da cadeia deste perfil podem ser destinos de encaminhamento.`,addRule:`Adicionar regra`,saveChanges:`Guardar alterações`},a={profileTitle:`Perfil de agentes para este rail`,noProfile:`Sem perfil`,modelTitle:`Modelo para este rail Freestyle`,loopModelTitle:`Modelo para este loop`,engineTitle:`Fornecedor de IA para todos os papéis desta execução: arquiteto, programador e revisor`,localEngine:`Motor local`,rolesEngine:`Papéis`,rolesEngineTitle:`Motores híbridos por papel: architect, developer e reviewer usam a configuração do runtime; verifier e decider usam os papéis do loop (Definições ▸ Agentes Specrails)`,rolesChip:`Motores por papel`,rolesChipTitle:`Motores configurados por papel em Definições ▸ Agentes Specrails: architect, developer e reviewer a partir da configuração do runtime; verifier e decider a partir dos papéis do loop. Modelo, esforço e perfil não se escolhem aqui.`},o={page:e,catalog:t,profiles:n,usage:r,routingRule:i,railSelectors:a};export{t as catalog,o as default,e as page,n as profiles,a as railSelectors,i as routingRule,r as usage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={loadingAgent:`A carregar agente…`,modeCreate:`Novo agente personalizado`,modeEdit:`Editar agente personalizado`,create:`Criar`,unsaved:`● não guardado`,resumeAiEdit:`Retomar AI Edit`,resumeAiEditTitle:`Devolver este rascunho ao overlay de AI Edit`,loadingAiDraft:`a carregar rascunho de IA…`,testButton:`Testar`,testButtonTitle:`Testar este agente com uma tarefa de exemplo`,historyButton:`Histórico`,historyButtonTitle:`Histórico de versões`,deleteConfirm:{title:`Eliminar o agente "{{agentId}}"?`,description:`Isto remove o .md do disco. O histórico de versões mantém-se na BD — use um novo agente personalizado se quiser recuperar o corpo mais tarde.`},errors:{loadDraftFailed:`Falha ao carregar o rascunho: {{status}}`,loadFailed:`Falha ao carregar: {{status}}`,saveFailed:`Falha ao guardar: {{status}}`,deleteFailed:`Falha ao eliminar: {{status}}`,testFailed:`Falha no teste: {{status}}`},toasts:{agentCreated:`Agente criado`,agentSaved:`Agente guardado`,agentDeleted:`Agente eliminado`,createFailed:`Falha ao criar o agente`,saveFailed:`Falha ao guardar o agente`,deleteFailed:`Falha ao eliminar o agente`},validation:{namePattern:`O nome deve começar por <code>custom-</code> e conter apenas letras minúsculas, dígitos e hífenes.`,missingFrontmatter:`Falta o frontmatter YAML (requer <code>---</code> de abertura na primeira linha).`},sampleTasks:{pick:`— escolha uma tarefa de exemplo —`,terraform:`Terraform: bucket S3 público`,sqlInjection:`Revisão de código: injeção de SQL`,accessibility:`Frontend: acessibilidade`,schemaChange:`Dados: alteração de schema`,slowQuery:`Desempenho: query lenta`},testPane:{header:`Testar agente`,sampleTaskLabel:`Tarefa de exemplo`,placeholder:`Descreva o que o agente deve fazer, ou escolha um exemplo acima.`,run:`Executar`,running:`A executar…`,sandboxNote:`Em sandbox; nenhum ficheiro é escrito.`,tokens_one:`<mono>{{count}}</mono> token`,tokens_other:`<mono>{{count}}</mono> tokens`,tokensUnavailable:`Utilização de tokens indisponível`,emptyHint:`Execute uma tarefa de exemplo contra o rascunho atual. O resultado aparece aqui.`},versions:{header:`Histórico de versões`,empty:`Não há versões anteriores registadas para este agente.`,restoreHint:`Clique numa versão para restaurar o respetivo corpo no editor (ainda é preciso Guardar).`}},t={eyebrow:`AI Edit`,headline:`Refine o seu agente`,streamingHeadline:`A refinar o seu agente…`,placeholderInitial:`Descreva como refinar este agente…`,placeholderFollowUp:`Envie um refinamento de seguimento…`,viewCurrentBody:`Ver o corpo atual do agente`,appliedAsVersion:`Aplicado como versão {{version}}.`,openInStudio:`Abrir rascunho no Studio para edição manual`,chips:{tightenTools:`Restringir a lista de ferramentas`,stricterPersonality:`Tornar a personalidade mais rigorosa`,workflowSection:`Adicionar uma secção de protocolo de Workflow`,sharpenDescription:`Encurtar e afinar a descrição`,matchDeveloperStyle:`Alinhar com o estilo do sr-developer`}},n={validation:{missingBaseline:`Falta o agente base obrigatório: {{agent}}`,multipleDefaultRules:`O routing pode ter no máximo uma regra default (encontradas {{found}})`,defaultRuleNotLast:`A regra de routing default tem de ser a última entrada`,unknownRoutingAgent:`O routing referencia um agente que não está na cadeia: {{agent}}`,invalidTags:`A regra de routing {{agent}} tem tags inválidas: {{tags}} (use kebab-case em minúsculas)`},validationSummary_one:`{{count}} problema de validação`,validationSummary_other:`{{count}} problemas de validação`,nameLabel:`Nome`,descriptionLabel:`Descrição`,descriptionPlaceholder:`Para que serve este perfil?`,orchestrator:{heading:`Orquestrador`,description:`Modelo de topo para o comando implement. Cada rail que executa herda a cadeia de agentes deste perfil.`},agentChain:{heading:`Cadeia de agentes ({{n}})`,addTitle:`Adicionar um agente do catálogo`,addDisabledTitle:`Todos os agentes do catálogo já estão na cadeia`,pickFromCatalog:`Escolher do catálogo ({{n}} disponíveis)`,emptyCatalog:`Não há mais agentes no catálogo. Adicione agentes personalizados no separador Catálogo de Agentes.`,kind:{upstream:`upstream`,custom:`personalizado`}},routing:{heading:`Routing ({{n}})`,addDefault:`Adicionar default`,addRule:`Adicionar regra`,needAgentsTitle:`Adicione pelo menos um agente antes de criar regras de routing`,explainer:`Vence a primeira regra correspondente. As regras são editáveis e removíveis, e o catch-all default fica em último quando presente. Se deixar o routing vazio, o pipeline recorre ao primeiro agente de tipo developer na cadeia.`,untargetedTitle:`Agentes sem destino na cadeia`,untargetedDetail:`Nenhuma regra de routing aponta para: <mono>{{agents}}</mono>. Adicione uma regra de tag ou redirecione a regra default se quiser que sejam executados.`},agentRow:{dragTitle:`Arraste para reordenar`,dragHandleAria:`Pega de arrasto`,pinnedFirst:`primeiro`,pinnedFirstTitle:`Fixado na primeira posição — o pipeline começa sempre com o sr-architect`,pinnedLast:`último`,pinnedLastTitle:`Fixado na última posição — a fase de merge é sempre a última a executar`,required:`obrigatório`,requiredRemoveTitle:`Agente base obrigatório — o pipeline depende desta linha`},routingRow:{everythingElse:`tudo o resto`,defaultTargetAria:`Destino de routing default (core, só de leitura)`,defaultTargetTitle:`Fallback core — não editável`,targetAria:`Destino de routing da regra {{ordinal}}`,editTitle:`Editar regra`,editAria:`Editar regra {{ordinal}}`,moveDown:`Mover para baixo`,moveUp:`Mover para cima`,coreDefaultBadge:`core · default`,coreDefaultTitle:`Fallback core — a regra de último recurso do pipeline, fixada no sr-developer`},legacyWorkflowNotice:`As definições do orquestrador e do encaminhamento aplicam-se aos workflows antigos. Os workflows Core usam os papéis selecionados no editor de loops.`},r={coreBadge:`core`,agents:{"sr-architect":{name:`Arquiteto`,description:`Design de arquitetura, specs de alterações, planeamento da implementação`},"sr-developer":{name:`Developer`,description:`Implementação full-stack em todas as camadas`},"sr-reviewer":{name:`Revisor`,description:`Revisão de código geral — o gate de qualidade final`}},coreTeamTitle:`Sua equipe de agentes`,coreTeamNote:`Esses três agentes principais são sempre instalados — nada a escolher. Adicione especialistas depois com perfis e agentes custom-*.`},i={"security-reviewer":{label:`Revisor de Segurança`,blurb:`Encontra bugs de autenticação, injeção e exposição de dados num diff antes do envio.`},"performance-profiler":{label:`Profiler de Desempenho`,blurb:`Encontra hot paths, queries N+1, loops sem limite, bundles inchados.`},"data-engineer":{label:`Engenheiro de Dados`,blurb:`Migrações de schema, pipelines ETL, transformações de dados.`},"ui-ux-polisher":{label:`Polidor de UI / UX`,blurb:`Acessibilidade, espaçamento, estados vazios, tratamento de erros.`},"api-designer":{label:`Designer de API`,blurb:`Versionamento, paginação, formatos de erro, retrocompatibilidade.`},"database-architect":{label:`Arquiteto de Base de Dados`,blurb:`Índices, normalização vs desnormalização, formatos de queries.`},"devops-sre":{label:`DevOps / SRE`,blurb:`CI/CD, observabilidade, preparação para incidentes, runbooks.`},"mobile-engineer":{label:`Engenheiro Mobile`,blurb:`Padrões iOS + Android, offline-first, atenção à bateria.`},"ml-engineer":{label:`Engenheiro de ML`,blurb:`Pipelines, avaliação, reprodutibilidade, monitorização de drift.`},"accessibility-auditor":{label:`Auditor de Acessibilidade`,blurb:`Revisão WCAG 2.2: contraste, foco, ARIA, teclado.`},"qa-test-strategist":{label:`Estratega de Testes QA`,blurb:`Planos de teste: divisão unitários / integração / E2E, lacunas de cobertura.`},"load-tester":{label:`Tester de Carga / Stress`,blurb:`Planeamento de capacidade, cenários k6 / Locust, caça aos gargalos.`},"integration-tester":{label:`Tester de Integração`,blurb:`Contratos entre serviços, fixtures, redução de testes instáveis.`},"regression-hunter":{label:`Caçador de Regressões`,blurb:`Faz bisect, reproduz e escreve primeiro o teste que falha.`},"data-analyst":{label:`Analista de Dados`,blurb:`Transforma perguntas vagas em queries + conclusões legíveis.`},"etl-reviewer":{label:`Revisor de Pipelines ETL`,blurb:`Idempotência, backfills, dados que chegam tarde.`},"dashboard-designer":{label:`Designer de Dashboards`,blurb:`Dashboards de leitura imediata, eixos honestos, uma ação por gráfico.`},"iac-reviewer":{label:`Revisor de IaC / Cloud`,blurb:`Terraform / CloudFormation: IAM, exposição pública, custos.`},"compliance-reviewer":{label:`Revisor de Conformidade`,blurb:`Verificações no âmbito do RGPD / SOC2 / HIPAA sobre fluxos de dados.`},"threat-modeler":{label:`Modelador de Ameaças`,blurb:`STRIDE / LINDDUN sobre diagramas de arquitetura.`},"product-manager":{label:`Product Manager`,blurb:`Enquadramento do problema, PRDs, priorização.`},"ux-researcher":{label:`Investigador de UX`,blurb:`Guiões de entrevista, planos de testes de usabilidade, síntese.`},"technical-writer":{label:`Redator Técnico`,blurb:`Documentação que realmente se lê — tutoriais, referências, changelogs.`},"design-reviewer":{label:`Revisor de Design System`,blurb:`Desvio de tokens, mau uso de componentes, consistência entre fluxos.`},"financial-analyst":{label:`Analista Financeiro`,blurb:`Unit economics, modelos de coortes, análise de cenários.`},"pricing-strategist":{label:`Estratega de Preços`,blurb:`Níveis, empacotamento, estudos de disposição a pagar.`},"market-researcher":{label:`Investigador de Mercado`,blurb:`TAM/SAM/SOM, mapas competitivos, segmentos de clientes.`},"ops-optimizer":{label:`Otimizador de Operações`,blurb:`Tempo de ciclo, deteção de gargalos, candidatos a automação.`},"seo-auditor":{label:`Auditor de SEO`,blurb:`SEO técnico + de conteúdo: indexabilidade, IA, correspondência de intenção.`},"growth-hacker":{label:`Experimentador de Growth`,blurb:`Diagnóstico de funil, experiências de lift, loops de ativação.`},"social-strategist":{label:`Estratega de Redes Sociais`,blurb:`Conteúdo adequado ao canal, calendário editorial, consistência de voz.`},"literature-reviewer":{label:`Revisor de Literatura`,blurb:`Resumos de revisões sistemáticas, grafos de citações, conflitos.`},"experiment-designer":{label:`Designer de Experiências`,blurb:`Hipóteses, controlos, tamanho da amostra, pré-registo.`},"statistical-analyst":{label:`Analista Estatístico`,blurb:`Escolhe o teste certo, reporta tamanhos de efeito, não apenas p-values.`},"scientific-writer":{label:`Redator Científico`,blurb:`Estrutura IMRaD, limites honestos, abstracts legíveis.`},"curriculum-designer":{label:`Designer de Currículos`,blurb:`Objetivos de aprendizagem → atividades → avaliação.`},"assessment-author":{label:`Autor de Avaliações`,blurb:`Itens que medem compreensão, não memorização.`},"tutor-explainer":{label:`Tutor / Explicador`,blurb:`Explicações simples à Feynman com exemplos resolvidos.`},"clinical-guideline-reviewer":{label:`Revisor de Diretrizes Clínicas`,blurb:`Compara a prática com as mais recentes diretrizes baseadas na evidência.`},"medical-summarizer":{label:`Sintetizador de Literatura Médica`,blurb:`Abstracts para clínicos: o que mudou, qualidade da evidência.`},"protocol-designer":{label:`Designer de Protocolos`,blurb:`Protocolos clínicos: endpoints, critérios de inclusão, segurança.`},"contract-reviewer":{label:`Revisor de Contratos`,blurb:`Sinaliza cláusulas de risco; explica o que realmente significam.`},"privacy-counsel":{label:`Consultor de Privacidade`,blurb:`RGPD / CCPA / LGPD aplicados a fluxos concretos.`},"copy-editor":{label:`Editor de Texto`,blurb:`Edições linha a linha: voz, cadência, cortar 30% sem perder o sentido.`},"brand-voice-guardian":{label:`Guardião da Voz da Marca`,blurb:`Aplica as regras de voz; deteta formulações fora da marca.`},"creative-brainstormer":{label:`Brainstormer Criativo`,blurb:`Divergente e depois convergente; mata vacas sagradas com delicadeza.`},"hiring-interviewer":{label:`Entrevistador de Recrutamento`,blurb:`Entrevistas estruturadas, focadas no sinal, conscientes de vieses.`},"strategic-planner":{label:`Planeador Estratégico`,blurb:`Objetivos → apostas → métricas; poda projetos de estimação.`},"coach-1on1":{label:`Coach de 1:1`,blurb:`Ajuda a enquadrar feedback, progressão de carreira, conversas difíceis.`},"meeting-facilitator":{label:`Facilitador de Reuniões`,blurb:`Agendas que produzem decisões, não atualizações.`}},a={studio:e,refine:t,profileEditor:n,agentSelector:r,templates:i};export{r as agentSelector,a as default,n as profileEditor,t as refine,e as studio,i as templates};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={loadingAgent:`Cargando agente…`,modeCreate:`Nuevo agente personalizado`,modeEdit:`Editar agente personalizado`,create:`Crear`,unsaved:`● sin guardar`,resumeAiEdit:`Reanudar AI Edit`,resumeAiEditTitle:`Devolver este borrador al panel de AI Edit`,loadingAiDraft:`cargando borrador de IA…`,testButton:`Probar`,testButtonTitle:`Probar este agente con una tarea de ejemplo`,historyButton:`Historial`,historyButtonTitle:`Historial de versiones`,deleteConfirm:{title:`¿Eliminar el agente "{{agentId}}"?`,description:`Esto elimina el .md del disco. El historial de versiones se conserva en la BD — usa un nuevo agente personalizado si quieres recuperar el cuerpo más adelante.`},errors:{loadDraftFailed:`Error al cargar el borrador: {{status}}`,loadFailed:`Error al cargar: {{status}}`,saveFailed:`Error al guardar: {{status}}`,deleteFailed:`Error al eliminar: {{status}}`,testFailed:`Error en la prueba: {{status}}`},toasts:{agentCreated:`Agente creado`,agentSaved:`Agente guardado`,agentDeleted:`Agente eliminado`,createFailed:`No se pudo crear el agente`,saveFailed:`No se pudo guardar el agente`,deleteFailed:`No se pudo eliminar el agente`},validation:{namePattern:`El nombre debe empezar por <code>custom-</code> y contener solo minúsculas, dígitos y guiones.`,missingFrontmatter:`Falta el frontmatter YAML (necesita un <code>---</code> de apertura en la primera línea).`},sampleTasks:{pick:`— elige una tarea de ejemplo —`,terraform:`Terraform: bucket S3 público`,sqlInjection:`Revisión de código: inyección SQL`,accessibility:`Frontend: accesibilidad`,schemaChange:`Datos: cambio de esquema`,slowQuery:`Rendimiento: consulta lenta`},testPane:{header:`Probar agente`,sampleTaskLabel:`Tarea de ejemplo`,placeholder:`Describe qué debe hacer el agente o elige un ejemplo arriba.`,run:`Ejecutar`,running:`Ejecutando…`,sandboxNote:`En sandbox; no se escriben archivos.`,tokens_one:`<mono>{{count}}</mono> token`,tokens_other:`<mono>{{count}}</mono> tokens`,tokensUnavailable:`Uso de tokens no disponible`,emptyHint:`Ejecuta una tarea de ejemplo contra el borrador actual. El resultado aparece aquí.`},versions:{header:`Historial de versiones`,empty:`No hay versiones anteriores registradas para este agente.`,restoreHint:`Haz clic en una versión para restaurar su cuerpo en el editor (aún tendrás que guardar).`}},t={eyebrow:`AI Edit`,headline:`Refina tu agente`,streamingHeadline:`Refinando tu agente…`,placeholderInitial:`Describe cómo refinar este agente…`,placeholderFollowUp:`Envía un refinamiento adicional…`,viewCurrentBody:`Ver el cuerpo actual del agente`,appliedAsVersion:`Aplicado como versión {{version}}.`,openInStudio:`Abrir el borrador en Studio para editarlo manualmente`,chips:{tightenTools:`Acota la lista de herramientas`,stricterPersonality:`Haz la personalidad más estricta`,workflowSection:`Añade una sección de protocolo de workflow`,sharpenDescription:`Acorta y afina la descripción`,matchDeveloperStyle:`Imita el estilo de sr-developer`}},n={validation:{missingBaseline:`Falta el agente base obligatorio: {{agent}}`,multipleDefaultRules:`El enrutado solo puede tener una regla por defecto (se encontraron {{found}})`,defaultRuleNotLast:`La regla de enrutado por defecto debe ser la última entrada`,unknownRoutingAgent:`El enrutado referencia un agente que no está en la cadena: {{agent}}`,invalidTags:`La regla de enrutado {{agent}} tiene tags no válidos: {{tags}} (usa kebab-case en minúsculas)`},validationSummary_one:`{{count}} problema de validación`,validationSummary_other:`{{count}} problemas de validación`,nameLabel:`Nombre`,descriptionLabel:`Descripción`,descriptionPlaceholder:`¿Para qué sirve este perfil?`,orchestrator:{heading:`Orquestador`,description:`Modelo de nivel superior para el comando implement. Cada rail que ejecuta hereda la cadena de agentes de este perfil.`},agentChain:{heading:`Cadena de agentes ({{n}})`,addTitle:`Añadir un agente del catálogo`,addDisabledTitle:`Todos los agentes del catálogo ya están en la cadena`,pickFromCatalog:`Elegir del catálogo ({{n}} disponibles)`,emptyCatalog:`No quedan agentes en el catálogo. Añade agentes personalizados desde la pestaña Catálogo de agentes.`,kind:{upstream:`upstream`,custom:`personalizado`}},routing:{heading:`Enrutado ({{n}})`,addDefault:`Añadir por defecto`,addRule:`Añadir regla`,needAgentsTitle:`Añade al menos un agente antes de crear reglas de enrutado`,explainer:`Gana la primera regla que coincida. Las reglas se pueden editar y eliminar, y la regla por defecto se mantiene en último lugar cuando existe. Si dejas el enrutado vacío, el pipeline recurre al primer agente de tipo developer de la cadena.`,untargetedTitle:`Agentes de la cadena sin regla`,untargetedDetail:`Ninguna regla de enrutado apunta a: <mono>{{agents}}</mono>. Añade una regla de tags o redirige la regla por defecto si quieres que se ejecuten.`},agentRow:{dragTitle:`Arrastra para reordenar`,dragHandleAria:`Asa de arrastre`,pinnedFirst:`primero`,pinnedFirstTitle:`Fijado en primera posición — el pipeline siempre empieza con sr-architect`,pinnedLast:`último`,pinnedLastTitle:`Fijado en última posición — la fase de merge siempre se ejecuta al final`,required:`obligatorio`,requiredRemoveTitle:`Agente base obligatorio — el pipeline depende de esta fila`},routingRow:{everythingElse:`todo lo demás`,defaultTargetAria:`Destino de enrutado por defecto (core, solo lectura)`,defaultTargetTitle:`Fallback del core — no editable`,targetAria:`Destino de enrutado para la regla {{ordinal}}`,editTitle:`Editar regla`,editAria:`Editar regla {{ordinal}}`,moveDown:`Bajar`,moveUp:`Subir`,coreDefaultBadge:`core · por defecto`,coreDefaultTitle:`Fallback del core — la regla de último recurso del pipeline, fijada a sr-developer`},legacyWorkflowNotice:`Los ajustes del orquestador y del enrutamiento se aplican a los workflows antiguos. Los workflows de Core usan los roles seleccionados en el editor de loops.`},r={coreBadge:`core`,agents:{"sr-architect":{name:`Arquitecto`,description:`Diseño de arquitectura, specs de cambios, planificación de la implementación`},"sr-developer":{name:`Desarrollador`,description:`Implementación full-stack en todas las capas`},"sr-reviewer":{name:`Revisor`,description:`Revisión general de código — el último control de calidad`}},coreTeamTitle:`Tu equipo de agentes`,coreTeamNote:`Estos tres agentes core se instalan siempre — no hay nada que elegir. Añade especialistas más tarde con perfiles y agentes custom-*.`},i={"security-reviewer":{label:`Revisor de seguridad`,blurb:`Encuentra bugs de autenticación, inyección y exposición de datos en un diff antes de publicarlo.`},"performance-profiler":{label:`Perfilador de rendimiento`,blurb:`Encuentra hot paths, consultas N+1, bucles sin límite y bundles hinchados.`},"data-engineer":{label:`Ingeniero de datos`,blurb:`Migraciones de esquema, pipelines ETL, transformaciones de datos.`},"ui-ux-polisher":{label:`Pulidor de UI / UX`,blurb:`Accesibilidad, espaciado, estados vacíos, gestión de errores.`},"api-designer":{label:`Diseñador de APIs`,blurb:`Versionado, paginación, formatos de error, retrocompatibilidad.`},"database-architect":{label:`Arquitecto de bases de datos`,blurb:`Índices, normalización frente a desnormalización, patrones de consulta.`},"devops-sre":{label:`DevOps / SRE`,blurb:`CI/CD, observabilidad, preparación ante incidentes, runbooks.`},"mobile-engineer":{label:`Ingeniero móvil`,blurb:`Patrones de iOS y Android, offline-first, cuidado con la batería.`},"ml-engineer":{label:`Ingeniero de ML`,blurb:`Pipelines, evaluación, reproducibilidad, monitorización de drift.`},"accessibility-auditor":{label:`Auditor de accesibilidad`,blurb:`Revisión WCAG 2.2: contraste, foco, ARIA, teclado.`},"qa-test-strategist":{label:`Estratega de tests QA`,blurb:`Planes de test: reparto unitarios / integración / E2E, huecos de cobertura.`},"load-tester":{label:`Tester de carga / estrés`,blurb:`Planificación de capacidad, escenarios k6 / Locust, caza de cuellos de botella.`},"integration-tester":{label:`Tester de integración`,blurb:`Contratos entre servicios, fixtures, reducción de tests flaky.`},"regression-hunter":{label:`Cazador de regresiones`,blurb:`Biseca, reproduce y escribe primero el test que falla.`},"data-analyst":{label:`Analista de datos`,blurb:`Convierte preguntas vagas en consultas + conclusiones legibles.`},"etl-reviewer":{label:`Revisor de pipelines ETL`,blurb:`Idempotencia, backfills, datos que llegan tarde.`},"dashboard-designer":{label:`Diseñador de dashboards`,blurb:`Dashboards de un vistazo, ejes honestos, una acción por gráfico.`},"iac-reviewer":{label:`Revisor de IaC / cloud`,blurb:`Terraform / CloudFormation: IAM, exposición pública, costes.`},"compliance-reviewer":{label:`Revisor de cumplimiento`,blurb:`Comprobaciones cercanas a RGPD / SOC2 / HIPAA sobre flujos de datos.`},"threat-modeler":{label:`Modelador de amenazas`,blurb:`STRIDE / LINDDUN sobre diagramas de arquitectura.`},"product-manager":{label:`Product Manager`,blurb:`Encuadre de problemas, PRDs, priorización.`},"ux-researcher":{label:`Investigador UX`,blurb:`Guiones de entrevista, planes de test de usabilidad, síntesis.`},"technical-writer":{label:`Redactor técnico`,blurb:`Docs que de verdad se leen — tutoriales, referencias, changelogs.`},"design-reviewer":{label:`Revisor de design system`,blurb:`Deriva de tokens, mal uso de componentes, consistencia entre flujos.`},"financial-analyst":{label:`Analista financiero`,blurb:`Unit economics, modelos de cohortes, análisis de escenarios.`},"pricing-strategist":{label:`Estratega de precios`,blurb:`Niveles, empaquetado, estudios de disposición a pagar.`},"market-researcher":{label:`Investigador de mercado`,blurb:`TAM/SAM/SOM, mapas competitivos, segmentos de clientes.`},"ops-optimizer":{label:`Optimizador de operaciones`,blurb:`Tiempos de ciclo, detección de cuellos de botella, candidatos a automatización.`},"seo-auditor":{label:`Auditor SEO`,blurb:`SEO técnico y de contenido: indexabilidad, arquitectura de la información, ajuste a la intención.`},"growth-hacker":{label:`Experimentador de growth`,blurb:`Diagnóstico de funnels, experimentos de mejora, bucles de activación.`},"social-strategist":{label:`Estratega de redes sociales`,blurb:`Contenido adaptado al canal, calendario editorial, consistencia de voz.`},"literature-reviewer":{label:`Revisor de literatura`,blurb:`Resúmenes de revisión sistemática, grafos de citas, conflictos.`},"experiment-designer":{label:`Diseñador de experimentos`,blurb:`Hipótesis, controles, tamaño muestral, prerregistro.`},"statistical-analyst":{label:`Analista estadístico`,blurb:`Elige el test correcto e informa tamaños de efecto, no solo p-valores.`},"scientific-writer":{label:`Redactor científico`,blurb:`Estructura IMRaD, límites honestos, abstracts legibles.`},"curriculum-designer":{label:`Diseñador curricular`,blurb:`Resultados de aprendizaje → actividades → evaluación.`},"assessment-author":{label:`Autor de evaluaciones`,blurb:`Ítems que miden comprensión, no memorización.`},"tutor-explainer":{label:`Tutor / explicador`,blurb:`Explicaciones sencillas al estilo Feynman con ejemplos resueltos.`},"clinical-guideline-reviewer":{label:`Revisor de guías clínicas`,blurb:`Contrasta la práctica con las últimas guías basadas en la evidencia.`},"medical-summarizer":{label:`Resumidor de literatura médica`,blurb:`Abstracts para clínicos: qué ha cambiado, calidad de la evidencia.`},"protocol-designer":{label:`Diseñador de protocolos`,blurb:`Protocolos clínicos: endpoints, criterios de inclusión, seguridad.`},"contract-reviewer":{label:`Revisor de contratos`,blurb:`Señala cláusulas de riesgo y explica qué significan en realidad.`},"privacy-counsel":{label:`Asesor de privacidad`,blurb:`RGPD / CCPA / LGPD aplicados a flujos concretos.`},"copy-editor":{label:`Editor de estilo`,blurb:`Ediciones línea a línea: voz, cadencia, recortar un 30 % sin perder significado.`},"brand-voice-guardian":{label:`Guardián de la voz de marca`,blurb:`Aplica las reglas de voz; caza frases fuera de marca.`},"creative-brainstormer":{label:`Brainstormer creativo`,blurb:`Diverge y luego converge; mata vacas sagradas con educación.`},"hiring-interviewer":{label:`Entrevistador de contratación`,blurb:`Entrevistas estructuradas, centradas en la señal, conscientes del sesgo.`},"strategic-planner":{label:`Planificador estratégico`,blurb:`Objetivos → apuestas → métricas; poda los proyectos capricho.`},"coach-1on1":{label:`Coach de 1:1`,blurb:`Ayuda a enmarcar el feedback, el crecimiento profesional y las conversaciones difíciles.`},"meeting-facilitator":{label:`Facilitador de reuniones`,blurb:`Agendas que producen decisiones, no actualizaciones.`}},a={studio:e,refine:t,profileEditor:n,agentSelector:r,templates:i};export{r as agentSelector,a as default,n as profileEditor,t as refine,e as studio,i as templates};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={loadingAgent:`正在加载 Agent…`,modeCreate:`新建自定义 Agent`,modeEdit:`编辑自定义 Agent`,create:`创建`,unsaved:`● 未保存`,resumeAiEdit:`继续 AI 编辑`,resumeAiEditTitle:`将此草稿交还给 AI 编辑浮层`,loadingAiDraft:`正在加载 AI 草稿…`,testButton:`测试`,testButtonTitle:`用示例任务测试此 Agent`,historyButton:`历史`,historyButtonTitle:`版本历史`,deleteConfirm:{title:`删除 Agent“{{agentId}}”?`,description:`这会从磁盘上删除该 .md 文件。版本历史仍保留在数据库中——若日后需要恢复内容,可新建一个自定义 Agent。`},errors:{loadDraftFailed:`加载草稿失败:{{status}}`,loadFailed:`加载失败:{{status}}`,saveFailed:`保存失败:{{status}}`,deleteFailed:`删除失败:{{status}}`,testFailed:`测试失败:{{status}}`},toasts:{agentCreated:`Agent 已创建`,agentSaved:`Agent 已保存`,agentDeleted:`Agent 已删除`,createFailed:`创建 Agent 失败`,saveFailed:`保存 Agent 失败`,deleteFailed:`删除 Agent 失败`},validation:{namePattern:`名称必须以 <code>custom-</code> 开头,且只能包含小写字母、数字和连字符。`,missingFrontmatter:`缺少 YAML frontmatter(第一行需要起始的 <code>---</code>)。`},sampleTasks:{pick:`—— 选择一个示例任务 ——`,terraform:`Terraform:公开的 S3 存储桶`,sqlInjection:`代码评审:SQL 注入`,accessibility:`前端:无障碍`,schemaChange:`数据:schema 变更`,slowQuery:`性能:慢查询`},testPane:{header:`测试 Agent`,sampleTaskLabel:`示例任务`,placeholder:`描述该 Agent 应该做什么,或在上方选择一个示例。`,run:`运行`,running:`运行中…`,sandboxNote:`沙箱运行;不写入任何文件。`,tokens_one:`<mono>{{count}}</mono> 个 token`,tokens_other:`<mono>{{count}}</mono> 个 token`,tokensUnavailable:`Token 用量不可用`,emptyHint:`针对当前草稿运行一个示例任务,输出会显示在这里。`},versions:{header:`版本历史`,empty:`此 Agent 暂无历史版本记录。`,restoreHint:`点击某个版本可将其内容恢复到编辑器中(仍需手动保存)。`}},t={eyebrow:`AI 编辑`,headline:`优化你的 Agent`,streamingHeadline:`正在优化你的 Agent…`,placeholderInitial:`描述如何优化此 Agent…`,placeholderFollowUp:`发送后续优化指令…`,viewCurrentBody:`查看当前 Agent 正文`,appliedAsVersion:`已应用为版本 {{version}}。`,openInStudio:`在 Studio 中打开草稿进行手动编辑`,chips:{tightenTools:`收紧工具列表`,stricterPersonality:`让人格设定更严格`,workflowSection:`添加 Workflow 协议章节`,sharpenDescription:`精简并锐化描述`,matchDeveloperStyle:`对齐 sr-developer 的风格`}},n={validation:{missingBaseline:`缺少必需的基线 Agent:{{agent}}`,multipleDefaultRules:`路由最多只能有一条默认规则(发现 {{found}} 条)`,defaultRuleNotLast:`默认路由规则必须是最后一条`,unknownRoutingAgent:`路由引用了不在链中的 Agent:{{agent}}`,invalidTags:`路由规则 {{agent}} 包含无效标签:{{tags}}(请使用小写 kebab-case)`},validationSummary_one:`{{count}} 个校验问题`,validationSummary_other:`{{count}} 个校验问题`,nameLabel:`名称`,descriptionLabel:`描述`,descriptionPlaceholder:`这个 Profile 用来做什么?`,orchestrator:{heading:`编排器`,description:`implement 命令的顶层模型。它运行的每条 rail 都会继承此 Profile 的 Agent 链。`},agentChain:{heading:`Agent 链({{n}})`,addTitle:`从目录中添加 Agent`,addDisabledTitle:`目录中的所有 Agent 都已在链中`,pickFromCatalog:`从目录选择({{n}} 个可用)`,emptyCatalog:`目录中没有更多 Agent。请在 Agent 目录标签页中添加自定义 Agent。`,kind:{upstream:`上游`,custom:`自定义`}},routing:{heading:`路由({{n}})`,addDefault:`添加默认规则`,addRule:`添加规则`,needAgentsTitle:`请先添加至少一个 Agent,再创建路由规则`,explainer:`首条匹配的规则生效。规则可编辑、可删除;存在默认兜底规则时它始终位于最后。如果路由留空,流水线会回退到链中第一个开发者类型的 Agent。`,untargetedTitle:`链中存在未被路由指向的 Agent`,untargetedDetail:`没有路由规则指向:<mono>{{agents}}</mono>。如需让它们运行,请添加标签规则或调整默认规则的目标。`},agentRow:{dragTitle:`拖动以重新排序`,dragHandleAria:`拖动手柄`,pinnedFirst:`首位`,pinnedFirstTitle:`固定在首位——流水线始终从 sr-architect 开始`,pinnedLast:`末位`,pinnedLastTitle:`固定在末位——合并阶段始终最后运行`,required:`必需`,requiredRemoveTitle:`必需的基线 Agent——流水线依赖此行`},routingRow:{everythingElse:`其余所有`,defaultTargetAria:`默认路由目标(核心,只读)`,defaultTargetTitle:`核心兜底——不可编辑`,targetAria:`规则 {{ordinal}} 的路由目标`,editTitle:`编辑规则`,editAria:`编辑规则 {{ordinal}}`,moveDown:`下移`,moveUp:`上移`,coreDefaultBadge:`核心 · 默认`,coreDefaultTitle:`核心兜底——流水线的最终兜底规则,固定指向 sr-developer`},legacyWorkflowNotice:`编排器和路由设置适用于旧版工作流。Core 工作流使用在 Loop Builder 中选择的角色。`},r={coreBadge:`核心`,agents:{"sr-architect":{name:`架构师`,description:`架构设计、变更 spec、实现规划`},"sr-developer":{name:`开发者`,description:`覆盖所有层的全栈实现`},"sr-reviewer":{name:`评审员`,description:`通用代码评审——最终质量门禁`}},coreTeamTitle:`你的智能体团队`,coreTeamNote:`这三个核心智能体始终会被安装——无需选择。之后可通过配置档案和 custom-* 智能体添加专家。`},i={"security-reviewer":{label:`安全评审员`,blurb:`在 diff 交付前发现认证、注入与数据泄露问题。`},"performance-profiler":{label:`性能剖析师`,blurb:`发现热点路径、N+1 查询、无界循环、bundle 膨胀。`},"data-engineer":{label:`数据工程师`,blurb:`Schema 迁移、ETL 流水线、数据转换。`},"ui-ux-polisher":{label:`UI / UX 打磨师`,blurb:`无障碍、间距、空状态、错误处理。`},"api-designer":{label:`API 设计师`,blurb:`版本管理、分页、错误结构、向后兼容。`},"database-architect":{label:`数据库架构师`,blurb:`索引、规范化与反规范化、查询模式。`},"devops-sre":{label:`DevOps / SRE`,blurb:`CI/CD、可观测性、事故响应准备、运维手册。`},"mobile-engineer":{label:`移动端工程师`,blurb:`iOS + Android 模式、离线优先、电量友好。`},"ml-engineer":{label:`机器学习工程师`,blurb:`流水线、评估、可复现性、漂移监控。`},"accessibility-auditor":{label:`无障碍审计员`,blurb:`WCAG 2.2 评审:对比度、焦点、ARIA、键盘。`},"qa-test-strategist":{label:`QA 测试策略师`,blurb:`测试计划:单元 / 集成 / E2E 划分、覆盖率缺口。`},"load-tester":{label:`负载 / 压力测试员`,blurb:`容量规划、k6 / Locust 场景、瓶颈排查。`},"integration-tester":{label:`集成测试员`,blurb:`跨服务契约、测试夹具、减少偶发失败。`},"regression-hunter":{label:`回归猎手`,blurb:`二分定位、复现问题、先写出会失败的测试。`},"data-analyst":{label:`数据分析师`,blurb:`把模糊的问题变成查询和可读的结论。`},"etl-reviewer":{label:`ETL 流水线评审`,blurb:`幂等性、数据回填、迟到数据。`},"dashboard-designer":{label:`仪表盘设计师`,blurb:`一眼看懂的仪表盘、诚实的坐标轴、每张图对应一个行动。`},"iac-reviewer":{label:`IaC / 云评审`,blurb:`Terraform / CloudFormation:IAM、公网暴露、成本。`},"compliance-reviewer":{label:`合规评审`,blurb:`针对数据流的 GDPR / SOC2 / HIPAA 相关检查。`},"threat-modeler":{label:`威胁建模师`,blurb:`对架构图进行 STRIDE / LINDDUN 分析。`},"product-manager":{label:`产品经理`,blurb:`问题界定、PRD、优先级排序。`},"ux-researcher":{label:`UX 研究员`,blurb:`访谈脚本、可用性测试计划、结果综合。`},"technical-writer":{label:`技术写作者`,blurb:`真正有人读的文档——教程、参考、更新日志。`},"design-reviewer":{label:`设计系统评审`,blurb:`Token 漂移、组件误用、跨流程一致性。`},"financial-analyst":{label:`财务分析师`,blurb:`单位经济模型、同期群模型、情景分析。`},"pricing-strategist":{label:`定价策略师`,blurb:`分层、打包、支付意愿研究。`},"market-researcher":{label:`市场研究员`,blurb:`TAM/SAM/SOM、竞争格局图、客户细分。`},"ops-optimizer":{label:`运营优化师`,blurb:`周期时间、瓶颈定位、自动化候选项。`},"seo-auditor":{label:`SEO 审计员`,blurb:`技术 + 内容 SEO:可索引性、信息架构、意图匹配。`},"growth-hacker":{label:`增长实验师`,blurb:`漏斗诊断、提升实验、激活闭环。`},"social-strategist":{label:`社交媒体策略师`,blurb:`适配渠道的内容、编辑日历、语调一致性。`},"literature-reviewer":{label:`文献综述员`,blurb:`系统性综述摘要、引用图谱、矛盾发现。`},"experiment-designer":{label:`实验设计师`,blurb:`假设、对照、样本量、预注册。`},"statistical-analyst":{label:`统计分析师`,blurb:`选对检验方法,报告效应量而不只是 p 值。`},"scientific-writer":{label:`科学写作者`,blurb:`IMRaD 结构、坦诚的局限性、可读的摘要。`},"curriculum-designer":{label:`课程设计师`,blurb:`学习目标 → 教学活动 → 评估。`},"assessment-author":{label:`测评编写者`,blurb:`衡量理解而非记忆的题目。`},"tutor-explainer":{label:`导师 / 讲解者`,blurb:`费曼式的简明讲解,配有完整例题。`},"clinical-guideline-reviewer":{label:`临床指南评审`,blurb:`将临床实践与最新循证指南对照。`},"medical-summarizer":{label:`医学文献摘要员`,blurb:`面向临床医生的摘要:变化点与证据质量。`},"protocol-designer":{label:`方案设计师`,blurb:`临床方案:终点指标、入组标准、安全性。`},"contract-reviewer":{label:`合同评审`,blurb:`标记高风险条款,并解释其实际含义。`},"privacy-counsel":{label:`隐私顾问`,blurb:`将 GDPR / CCPA / LGPD 应用到具体流程。`},"copy-editor":{label:`文字编辑`,blurb:`逐行润色:语气、节奏,删减 30% 而不失原意。`},"brand-voice-guardian":{label:`品牌语调守护者`,blurb:`执行语调规则,捕捉偏离品牌的措辞。`},"creative-brainstormer":{label:`创意头脑风暴师`,blurb:`先发散后收敛,礼貌地挑战固有观念。`},"hiring-interviewer":{label:`招聘面试官`,blurb:`结构化面试,聚焦信号,规避偏见。`},"strategic-planner":{label:`战略规划师`,blurb:`目标 → 押注 → 指标;剔除个人偏好项目。`},"coach-1on1":{label:`1:1 教练`,blurb:`帮助组织反馈、规划职业成长、应对艰难对话。`},"meeting-facilitator":{label:`会议主持人`,blurb:`产出决策而非汇报的会议议程。`}},a={studio:e,refine:t,profileEditor:n,agentSelector:r,templates:i};export{r as agentSelector,a as default,n as profileEditor,t as refine,e as studio,i as templates};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={loadingAgent:`Chargement de l'agent…`,modeCreate:`Nouvel agent personnalisé`,modeEdit:`Modifier l'agent personnalisé`,create:`Créer`,unsaved:`● non enregistré`,resumeAiEdit:`Reprendre l'Édition IA`,resumeAiEditTitle:`Renvoyer ce brouillon vers l'overlay Édition IA`,loadingAiDraft:`chargement du brouillon IA…`,testButton:`Tester`,testButtonTitle:`Tester cet agent sur une tâche d'exemple`,historyButton:`Historique`,historyButtonTitle:`Historique des versions`,deleteConfirm:{title:`Supprimer l'agent « {{agentId}} » ?`,description:`Supprime le fichier .md du disque. L'historique des versions reste en base — créez un nouvel agent personnalisé si vous voulez récupérer le corps plus tard.`},errors:{loadDraftFailed:`Échec du chargement du brouillon : {{status}}`,loadFailed:`Échec du chargement : {{status}}`,saveFailed:`Échec de l'enregistrement : {{status}}`,deleteFailed:`Échec de la suppression : {{status}}`,testFailed:`Échec du test : {{status}}`},toasts:{agentCreated:`Agent créé`,agentSaved:`Agent enregistré`,agentDeleted:`Agent supprimé`,createFailed:`Échec de la création de l'agent`,saveFailed:`Échec de l'enregistrement de l'agent`,deleteFailed:`Échec de la suppression de l'agent`},validation:{namePattern:`Le nom doit commencer par <code>custom-</code> et ne contenir que des lettres minuscules, des chiffres et des tirets.`,missingFrontmatter:`Frontmatter YAML manquant (il faut un <code>---</code> d'ouverture sur la première ligne).`},sampleTasks:{pick:`— choisir une tâche d'exemple —`,terraform:`Terraform : bucket S3 public`,sqlInjection:`Revue de code : injection SQL`,accessibility:`Frontend : accessibilité`,schemaChange:`Données : changement de schéma`,slowQuery:`Performance : requête lente`},testPane:{header:`Tester l'agent`,sampleTaskLabel:`Tâche d'exemple`,placeholder:`Décrivez ce que l'agent doit faire, ou choisissez un exemple ci-dessus.`,run:`Exécuter`,running:`Exécution…`,sandboxNote:`Exécution en sandbox ; aucun fichier écrit.`,tokens_one:`<mono>{{count}}</mono> token`,tokens_other:`<mono>{{count}}</mono> tokens`,tokensUnavailable:`Utilisation des tokens indisponible`,emptyHint:`Exécutez une tâche d'exemple sur le brouillon actuel. La sortie s'affiche ici.`},versions:{header:`Historique des versions`,empty:`Aucune version antérieure enregistrée pour cet agent.`,restoreHint:`Cliquez sur une version pour restaurer son corps dans l'éditeur (il faudra ensuite Enregistrer).`}},t={eyebrow:`Édition IA`,headline:`Affinez votre agent`,streamingHeadline:`Affinage de votre agent…`,placeholderInitial:`Décrivez comment affiner cet agent…`,placeholderFollowUp:`Envoyez un affinage complémentaire…`,viewCurrentBody:`Voir le corps actuel de l'agent`,appliedAsVersion:`Appliqué comme version {{version}}.`,openInStudio:`Ouvrir le brouillon dans le Studio pour l'éditer manuellement`,chips:{tightenTools:`Resserrer la liste d'outils`,stricterPersonality:`Rendre la personnalité plus stricte`,workflowSection:`Ajouter une section de protocole Workflow`,sharpenDescription:`Raccourcir et affûter la description`,matchDeveloperStyle:`S'aligner sur le style de sr-developer`}},n={validation:{missingBaseline:`Agent de base requis manquant : {{agent}}`,multipleDefaultRules:`Le routage admet au plus une règle par défaut ({{found}} trouvées)`,defaultRuleNotLast:`La règle de routage par défaut doit être la dernière entrée`,unknownRoutingAgent:`Le routage référence un agent absent de la chaîne : {{agent}}`,invalidTags:`La règle de routage {{agent}} a des tags invalides : {{tags}} (utilisez du kebab-case en minuscules)`},validationSummary_one:`{{count}} problème de validation`,validationSummary_other:`{{count}} problèmes de validation`,nameLabel:`Nom`,descriptionLabel:`Description`,descriptionPlaceholder:`À quoi sert ce profil ?`,orchestrator:{heading:`Orchestrateur`,description:`Modèle de premier niveau pour la commande implement. Chaque rail qu'elle exécute hérite de la chaîne d'agents de ce profil.`},agentChain:{heading:`Chaîne d'agents ({{n}})`,addTitle:`Ajouter un agent depuis le catalogue`,addDisabledTitle:`Tous les agents du catalogue sont déjà dans la chaîne`,pickFromCatalog:`Choisir dans le catalogue ({{n}} disponibles)`,emptyCatalog:`Plus aucun agent dans le catalogue. Ajoutez des agents personnalisés depuis l'onglet Catalogue d'agents.`,kind:{upstream:`upstream`,custom:`personnalisé`}},routing:{heading:`Routage ({{n}})`,addDefault:`Ajouter la règle par défaut`,addRule:`Ajouter une règle`,needAgentsTitle:`Ajoutez au moins un agent avant de créer des règles de routage`,explainer:`La première règle correspondante l'emporte. Les règles sont modifiables et supprimables, et la règle fourre-tout par défaut reste en dernier quand elle existe. Si le routage est vide, le pipeline se rabat sur le premier agent de type développeur de la chaîne.`,untargetedTitle:`Agents non ciblés dans la chaîne`,untargetedDetail:`Aucune règle de routage ne pointe vers : <mono>{{agents}}</mono>. Ajoutez une règle de tag ou reciblez la règle par défaut si vous voulez qu'ils s'exécutent.`},agentRow:{dragTitle:`Glisser pour réordonner`,dragHandleAria:`Poignée de glissement`,pinnedFirst:`premier`,pinnedFirstTitle:`Épinglé en première position — le pipeline commence toujours par sr-architect`,pinnedLast:`dernier`,pinnedLastTitle:`Épinglé en dernière position — la phase de merge s'exécute toujours en dernier`,required:`requis`,requiredRemoveTitle:`Agent de base requis — le pipeline dépend de cette ligne`},routingRow:{everythingElse:`tout le reste`,defaultTargetAria:`Cible de routage par défaut (core, lecture seule)`,defaultTargetTitle:`Repli core — non modifiable`,targetAria:`Cible de routage pour la règle {{ordinal}}`,editTitle:`Modifier la règle`,editAria:`Modifier la règle {{ordinal}}`,moveDown:`Descendre`,moveUp:`Monter`,coreDefaultBadge:`core · défaut`,coreDefaultTitle:`Repli core — la règle de dernier recours du pipeline, épinglée sur sr-developer`},legacyWorkflowNotice:`Les paramètres de l’orchestrateur et du routage s’appliquent aux anciens workflows. Les workflows Core utilisent les rôles sélectionnés dans l’éditeur de loops.`},r={coreBadge:`core`,agents:{"sr-architect":{name:`Architecte`,description:`Conception d'architecture, specs de changement, planification d'implémentation`},"sr-developer":{name:`Développeur`,description:`Implémentation full-stack sur toutes les couches`},"sr-reviewer":{name:`Relecteur`,description:`Revue de code générale — l'ultime contrôle qualité`}},coreTeamTitle:`Votre équipe d'agents`,coreTeamNote:`Ces trois agents de base sont toujours installés — rien à choisir. Ajoutez des spécialistes plus tard via des profils et des agents custom-*.`},i={"security-reviewer":{label:`Relecteur Sécurité`,blurb:`Détecte les bugs d'authentification, d'injection et d'exposition de données dans un diff avant livraison.`},"performance-profiler":{label:`Profileur de performance`,blurb:`Repère les hot paths, les requêtes N+1, les boucles non bornées, le gonflement du bundle.`},"data-engineer":{label:`Data Engineer`,blurb:`Migrations de schéma, pipelines ETL, transformations de données.`},"ui-ux-polisher":{label:`Polisseur UI / UX`,blurb:`Accessibilité, espacement, états vides, gestion des erreurs.`},"api-designer":{label:`Concepteur d'API`,blurb:`Versionnage, pagination, formats d'erreur, rétrocompatibilité.`},"database-architect":{label:`Architecte base de données`,blurb:`Index, normalisation vs dénormalisation, formes de requêtes.`},"devops-sre":{label:`DevOps / SRE`,blurb:`CI/CD, observabilité, préparation aux incidents, runbooks.`},"mobile-engineer":{label:`Ingénieur Mobile`,blurb:`Patterns iOS + Android, offline-first, sobriété batterie.`},"ml-engineer":{label:`Ingénieur ML`,blurb:`Pipelines, éval, reproductibilité, surveillance du drift.`},"accessibility-auditor":{label:`Auditeur Accessibilité`,blurb:`Revue WCAG 2.2 : contraste, focus, ARIA, clavier.`},"qa-test-strategist":{label:`Stratège de tests QA`,blurb:`Plans de test : répartition unitaires / intégration / E2E, lacunes de couverture.`},"load-tester":{label:`Testeur de charge / stress`,blurb:`Planification de capacité, scénarios k6 / Locust, chasse aux goulots d'étranglement.`},"integration-tester":{label:`Testeur d'intégration`,blurb:`Contrats inter-services, fixtures, réduction des tests flaky.`},"regression-hunter":{label:`Chasseur de régressions`,blurb:`Bisecte, reproduit, écrit d'abord le test qui échoue.`},"data-analyst":{label:`Data Analyst`,blurb:`Transforme des questions vagues en requêtes + conclusions lisibles.`},"etl-reviewer":{label:`Relecteur de pipeline ETL`,blurb:`Idempotence, backfills, données tardives.`},"dashboard-designer":{label:`Concepteur de dashboards`,blurb:`Dashboards lisibles d'un coup d'œil, axes honnêtes, une action par graphique.`},"iac-reviewer":{label:`Relecteur IaC / Cloud`,blurb:`Terraform / CloudFormation : IAM, exposition publique, coûts.`},"compliance-reviewer":{label:`Relecteur Conformité`,blurb:`Contrôles type RGPD / SOC2 / HIPAA sur les flux de données.`},"threat-modeler":{label:`Modélisateur de menaces`,blurb:`STRIDE / LINDDUN sur les diagrammes d'architecture.`},"product-manager":{label:`Product Manager`,blurb:`Cadrage du problème, PRD, priorisation.`},"ux-researcher":{label:`Chercheur UX`,blurb:`Scripts d'entretien, plans de tests d'utilisabilité, synthèse.`},"technical-writer":{label:`Rédacteur technique`,blurb:`Des docs qu'on lit vraiment — tutoriels, références, changelogs.`},"design-reviewer":{label:`Relecteur Design System`,blurb:`Dérive des tokens, mauvais usage des composants, cohérence entre les flux.`},"financial-analyst":{label:`Analyste financier`,blurb:`Unit economics, modèles de cohortes, analyse de scénarios.`},"pricing-strategist":{label:`Stratège Pricing`,blurb:`Paliers, packaging, études de disposition à payer.`},"market-researcher":{label:`Chargé d'études de marché`,blurb:`TAM/SAM/SOM, cartographies concurrentielles, segments clients.`},"ops-optimizer":{label:`Optimiseur des opérations`,blurb:`Temps de cycle, détection des goulots, candidats à l'automatisation.`},"seo-auditor":{label:`Auditeur SEO`,blurb:`SEO technique + contenu : indexabilité, architecture de l'information, adéquation à l'intention.`},"growth-hacker":{label:`Expérimentateur Growth`,blurb:`Diagnostic de funnel, expériences d'uplift, boucles d'activation.`},"social-strategist":{label:`Stratège réseaux sociaux`,blurb:`Contenu adapté au canal, calendrier éditorial, cohérence de la voix.`},"literature-reviewer":{label:`Relecteur de littérature`,blurb:`Synthèses de revues systématiques, graphes de citations, conflits.`},"experiment-designer":{label:`Concepteur d'expériences`,blurb:`Hypothèses, contrôles, taille d'échantillon, préenregistrement.`},"statistical-analyst":{label:`Analyste statistique`,blurb:`Choisit le bon test, rapporte les tailles d'effet, pas seulement les p-values.`},"scientific-writer":{label:`Rédacteur scientifique`,blurb:`Structure IMRaD, limites honnêtes, abstracts lisibles.`},"curriculum-designer":{label:`Concepteur de cursus`,blurb:`Objectifs d'apprentissage → activités → évaluation.`},"assessment-author":{label:`Auteur d'évaluations`,blurb:`Des questions qui mesurent la compréhension, pas la mémorisation.`},"tutor-explainer":{label:`Tuteur / Vulgarisateur`,blurb:`Explications simples façon Feynman, avec exemples corrigés.`},"clinical-guideline-reviewer":{label:`Relecteur de recommandations cliniques`,blurb:`Confronte la pratique aux dernières recommandations fondées sur les preuves.`},"medical-summarizer":{label:`Synthétiseur de littérature médicale`,blurb:`Des abstracts pour les cliniciens : ce qui change, qualité des preuves.`},"protocol-designer":{label:`Concepteur de protocoles`,blurb:`Protocoles cliniques : critères de jugement, critères d'inclusion, sécurité.`},"contract-reviewer":{label:`Relecteur de contrats`,blurb:`Signale les clauses à risque ; explique ce qu'elles veulent vraiment dire.`},"privacy-counsel":{label:`Conseil en confidentialité`,blurb:`RGPD / CCPA / LGPD appliqués à des flux concrets.`},"copy-editor":{label:`Réviseur éditorial`,blurb:`Corrections fines : voix, rythme, couper 30 % sans perdre le sens.`},"brand-voice-guardian":{label:`Gardien de la voix de marque`,blurb:`Fait respecter les règles de ton ; repère les formulations hors marque.`},"creative-brainstormer":{label:`Brainstormer créatif`,blurb:`Divergent puis convergent ; tue les vaches sacrées avec tact.`},"hiring-interviewer":{label:`Intervieweur de recrutement`,blurb:`Entretiens structurés, axés sur le signal, attentifs aux biais.`},"strategic-planner":{label:`Planificateur stratégique`,blurb:`Objectifs → paris → métriques ; élague les projets fétiches.`},"coach-1on1":{label:`Coach 1:1`,blurb:`Aide à cadrer le feedback, l'évolution de carrière, les conversations difficiles.`},"meeting-facilitator":{label:`Facilitateur de réunions`,blurb:`Des ordres du jour qui produisent des décisions, pas des points d'étape.`}},a={studio:e,refine:t,profileEditor:n,agentSelector:r,templates:i};export{r as agentSelector,a as default,n as profileEditor,t as refine,e as studio,i as templates};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={title:`Jira`,subtitle:`Specs dieses Projekts mit einem Jira-Board synchronisieren`,connectCta:`Mit Jira verbinden`},t={step:`Schritt {{current}} von {{total}}`,step1Title:`Verbinde dein Jira-Konto`,step2Title:`Wähle ein Jira-Projekt`,step3Title:`Status zuordnen (optional)`,step4Title:`Prüfen und verbinden`,next:`Weiter`,back:`Zurück`,cancel:`Abbrechen`,connect:`Verbinden`,connecting:`Verbinde…`,later:`Später erledigen`},n={baseUrlLabel:`Jira-URL`,baseUrlPlaceholder:`https://dein-unternehmen.atlassian.net`,baseUrlHelp:`Die URL deiner Jira-Cloud-Site oder deines Data-Center-Servers.`,emailLabel:`Konto-E-Mail`,emailPlaceholder:`du@unternehmen.com`,emailHelp:`Für Jira Cloud erforderlich — die E-Mail deines Atlassian-Kontos.`,tokenLabel:`API-Token`,tokenHelp:`Erstelle einen unter id.atlassian.com → Sicherheit → API-Tokens. Er wird verschlüsselt auf diesem Gerät gespeichert und verlässt es nie.`,test:`Verbindung testen`,testing:`Teste…`,testOk:`Verbunden als {{name}}`,retest:`Erneut testen`},r={searchPlaceholder:`Projekte suchen…`,manualLabel:`Oder gib einen Projektschlüssel ein`,manualPlaceholder:`PROJ`,selected:`{{key}} — {{name}}`,none:`Keine Projekte gefunden`,loading:`Projekte werden geladen…`},i={intro:`Status werden automatisch nach Kategorie zugeordnet (To Do / In Arbeit / Fertig). Überschreibe einen Status, wenn dein Workflow eigene Namen verwendet.`,auto:`Automatisch (nach Kategorie)`,todo:`Backlog / To Do`,inProgress:`In Arbeit`,onReview:`In Prüfung`,done:`Fertig`,cancelled:`Abgebrochen`,loading:`Status werden geladen…`},a={site:`Site`,project:`Projekt`,account:`Konto`,type:`Typ`,cloud:`Jira Cloud`,dc:`Jira Data Center`},o={connected:`Verbunden mit {{key}}`,enabledLabel:`Synchronisierung aktiviert`,enabledHelp:`Wenn aktiviert, werden Specs mit Jira synchronisiert und Rail-Ergebnisse aktualisieren die verknüpften Vorgänge.`,pausedHelp:`Die Synchronisierung ist pausiert. Specs bleiben auf dem Board, aktualisieren Jira aber nicht mehr.`,syncNow:`Jetzt synchronisieren`,syncing:`Synchronisiere…`,syncedToast:`{{count}} Vorgang/Vorgänge aus Jira synchronisiert`,disconnect:`Trennen`,disconnectConfirm:`Dieses Projekt von Jira trennen? Bestehende Specs bleiben auf dem Board; die Synchronisierung stoppt.`,disconnectedToast:`Von Jira getrennt`},s={title:`Ausstehende Jira-Updates`,pending:`{{count}} ausstehend`,dead:`{{count}} benötigen Aufmerksamkeit`,allSynced:`Alle Updates synchronisiert`,retry:`Erneut versuchen`,deadHelp:`Diese konnten nicht automatisch angewendet werden (z. B. hat dein Workflow keinen passenden Übergang). Korrigiere in Jira und versuche es erneut.`,opTransition:`Status-Update`,opComment:`Kommentar`,opCreate:`Vorgang erstellen`},c={title:`Jira getrennt`,body:`Dein Jira-Token ist abgelaufen oder wurde widerrufen. Verbinde dich erneut, um {{count}} ausstehende(s) Update(s) zu synchronisieren.`,reconnect:`Erneut verbinden`},l={label:`Jira`,openInJira:`In Jira öffnen`},u={willCreate:`Wird in Jira erstellt · {{key}}`},d={saveTitle:`Jira-Vorgang aktualisieren`,saveBody:`Beim Speichern wird der Jira-Vorgang {{key}} mit diesen Änderungen aktualisiert.`,saveConfirm:`Speichern und Jira aktualisieren`,detailsTitle:`Jira-Details`,developmentTitle:`Entwicklung`,dev:{pullRequests:`Pull Requests`,branches:`Branches`,commits:`Commits`},goToTicket:`Zum Ticket {{key}}`,epic:`Epic`},f={moveButton:`Verschieben nach {{status}}`,title:`Spec nach {{status}} verschieben?`,body:`Das Jira-Ticket {{key}} dieser Spec wird nach „{{status}}“ verschoben, statt gelöscht zu werden. Optional einen Grund angeben.`,commentLabel:`Grund (optional)`,commentPlaceholder:`Warum verschiebst du diese Spec?`,confirm:`Nach {{status}} verschieben`,moving:`Wird verschoben…`,movedToast:`{{key}} nach {{status}} verschoben`,configLabel:`Beim Verwerfen Ticket verschieben nach`,configHelp:`Wenn du eine mit Jira verknüpfte Spec verwirfst, wird ihr Ticket in diesen Status verschoben, statt gelöscht zu werden.`,configNone:`Keiner — normal löschen`,reviewLabel:`Verwerfen verschiebt nach`},p={generic:`Etwas ist schiefgelaufen`,testFirst:`Teste zuerst die Verbindung`},m={queued:`Verschieben nach „{{status}}" eingereiht — Synchronisierung mit Jira`,failed:`Spec konnte in Jira nicht verschoben werden`},h={section:e,wizard:t,creds:n,project:r,mapping:i,review:a,status:o,outbox:s,authExpired:c,badge:l,addSpec:u,detail:d,discard:f,errors:p,moveToStatus:m};export{u as addSpec,c as authExpired,l as badge,n as creds,h as default,d as detail,f as discard,p as errors,i as mapping,m as moveToStatus,s as outbox,r as project,a as review,e as section,o as status,t as wizard};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={title:`Jira`,subtitle:`このプロジェクトのスペックを Jira ボードと同期します`,connectCta:`Jira に接続`},t={step:`ステップ {{current}} / {{total}}`,step1Title:`Jira アカウントに接続`,step2Title:`Jira プロジェクトを選択`,step3Title:`ステータスを対応付け(任意)`,step4Title:`確認して接続`,next:`次へ`,back:`戻る`,cancel:`キャンセル`,connect:`接続`,connecting:`接続中…`,later:`後で行う`},n={baseUrlLabel:`Jira の URL`,baseUrlPlaceholder:`https://your-company.atlassian.net`,baseUrlHelp:`Jira Cloud サイトまたは Data Center サーバーの URL。`,emailLabel:`アカウントのメール`,emailPlaceholder:`you@company.com`,emailHelp:`Jira Cloud では必須です — Atlassian アカウントのメールアドレス。`,tokenLabel:`API トークン`,tokenHelp:`id.atlassian.com → セキュリティ → API トークンで作成します。このマシンに暗号化して保存され、外部に出ることはありません。`,test:`接続をテスト`,testing:`テスト中…`,testOk:`{{name}} として接続しました`,retest:`再テスト`},r={searchPlaceholder:`プロジェクトを検索…`,manualLabel:`またはプロジェクトキーを入力`,manualPlaceholder:`PROJ`,selected:`{{key}} — {{name}}`,none:`プロジェクトが見つかりません`,loading:`プロジェクトを読み込み中…`},i={intro:`ステータスはカテゴリ(To Do / 進行中 / 完了)で自動的に対応付けられます。ワークフローが独自の名前を使う場合は上書きできます。`,auto:`自動(カテゴリ別)`,todo:`バックログ / To Do`,inProgress:`進行中`,onReview:`レビュー中`,done:`完了`,cancelled:`キャンセル`,loading:`ステータスを読み込み中…`},a={site:`サイト`,project:`プロジェクト`,account:`アカウント`,type:`種類`,cloud:`Jira Cloud`,dc:`Jira Data Center`},o={connected:`{{key}} に接続済み`,enabledLabel:`同期を有効化`,enabledHelp:`有効にすると、スペックが Jira と同期し、rail の結果がリンクされた課題を更新します。`,pausedHelp:`同期は一時停止中です。スペックはボードに残りますが、Jira は更新されなくなります。`,syncNow:`今すぐ同期`,syncing:`同期中…`,syncedToast:`Jira から {{count}} 件の課題を同期しました`,disconnect:`切断`,disconnectConfirm:`このプロジェクトを Jira から切断しますか?既存のスペックはボードに残り、同期は停止します。`,disconnectedToast:`Jira から切断しました`},s={title:`保留中の Jira 更新`,pending:`{{count}} 件保留中`,dead:`{{count}} 件は対応が必要`,allSynced:`すべての更新が同期されました`,retry:`再試行`,deadHelp:`これらは自動で適用できませんでした(例:ワークフローに一致する遷移がない)。Jira で修正してから再試行してください。`,opTransition:`ステータス更新`,opComment:`コメント`,opCreate:`課題を作成`},c={title:`Jira が切断されました`,body:`Jira トークンが失効または取り消されました。再接続して保留中の {{count}} 件の更新を同期してください。`,reconnect:`再接続`},l={label:`Jira`,openInJira:`Jira で開く`},u={willCreate:`Jira に作成されます · {{key}}`},d={saveTitle:`Jira 課題を更新`,saveBody:`保存すると、Jira 課題 {{key}} がこの変更で更新されます。`,saveConfirm:`保存して Jira を更新`,detailsTitle:`Jira の詳細`,developmentTitle:`開発`,dev:{pullRequests:`プルリクエスト`,branches:`ブランチ`,commits:`コミット`},goToTicket:`チケット {{key}} を開く`,epic:`エピック`},f={moveButton:`{{status}} に移動`,title:`仕様を {{status}} に移動しますか?`,body:`この仕様の Jira 課題 {{key}} は削除されず、「{{status}}」に移動されます。任意で理由を追加できます。`,commentLabel:`理由(任意)`,commentPlaceholder:`この仕様を移動する理由は?`,confirm:`{{status}} に移動`,moving:`移動中…`,movedToast:`{{key}} を {{status}} に移動しました`,configLabel:`破棄時に課題を移動する先`,configHelp:`Jira と連携した仕様を破棄すると、その課題は削除されず、このステータスに移動されます。`,configNone:`なし — 通常どおり削除`,reviewLabel:`破棄時の移動先`},p={generic:`問題が発生しました`,testFirst:`先に接続をテストしてください`},m={queued:`「{{status}}」への移動をキューに追加 — Jira と同期中`,failed:`Jira でのスペック移動に失敗しました`},h={section:e,wizard:t,creds:n,project:r,mapping:i,review:a,status:o,outbox:s,authExpired:c,badge:l,addSpec:u,detail:d,discard:f,errors:p,moveToStatus:m};export{u as addSpec,c as authExpired,l as badge,n as creds,h as default,d as detail,f as discard,p as errors,i as mapping,m as moveToStatus,s as outbox,r as project,a as review,e as section,o as status,t as wizard};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-CNC7AqOf.js";var t=e({addSpec:()=>f,authExpired:()=>u,badge:()=>d,creds:()=>i,default:()=>_,detail:()=>p,discard:()=>m,errors:()=>h,mapping:()=>o,moveToStatus:()=>g,outbox:()=>l,project:()=>a,review:()=>s,section:()=>n,status:()=>c,wizard:()=>r}),n={title:`Jira`,subtitle:`Sync this project's specs with a Jira board`,connectCta:`Connect to Jira`},r={step:`Step {{current}} of {{total}}`,step1Title:`Connect your Jira account`,step2Title:`Choose a Jira project`,step3Title:`Map statuses (optional)`,step4Title:`Review & connect`,next:`Next`,back:`Back`,cancel:`Cancel`,connect:`Connect`,connecting:`Connecting…`,later:`Do it later`},i={baseUrlLabel:`Jira URL`,baseUrlPlaceholder:`https://your-company.atlassian.net`,baseUrlHelp:`Your Jira Cloud site or Data Center server URL.`,emailLabel:`Account email`,emailPlaceholder:`you@company.com`,emailHelp:`Required for Jira Cloud — the email of your Atlassian account.`,tokenLabel:`API token`,tokenHelp:`Create one at id.atlassian.com → Security → API tokens. It is stored encrypted on this machine and never leaves it.`,test:`Test connection`,testing:`Testing…`,testOk:`Connected as {{name}}`,retest:`Re-test`},a={searchPlaceholder:`Search projects…`,manualLabel:`Or enter a project key`,manualPlaceholder:`PROJ`,selected:`{{key}} — {{name}}`,none:`No projects found`,loading:`Loading projects…`},o={intro:`Statuses are matched automatically by category (To Do / In Progress / Done). Override any state if your workflow uses custom names.`,auto:`Automatic (by category)`,todo:`Backlog / To Do`,inProgress:`In Progress`,onReview:`On Review`,done:`Done`,cancelled:`Cancelled`,loading:`Loading statuses…`},s={site:`Site`,project:`Project`,account:`Account`,type:`Type`,cloud:`Jira Cloud`,dc:`Jira Data Center`},c={connected:`Connected to {{key}}`,enabledLabel:`Sync enabled`,enabledHelp:`When on, specs sync with Jira and rail outcomes update the linked issues.`,pausedHelp:`Sync is paused. Specs stay on the board but no longer update Jira.`,syncNow:`Sync now`,syncing:`Syncing…`,syncedToast:`Synced {{count}} issue(s) from Jira`,disconnect:`Disconnect`,disconnectConfirm:`Disconnect this project from Jira? Existing specs stay on the board; sync stops.`,disconnectedToast:`Disconnected from Jira`},l={title:`Pending Jira updates`,pending:`{{count}} pending`,dead:`{{count}} need attention`,allSynced:`All updates synced`,retry:`Retry`,deadHelp:`These couldn't be applied automatically (e.g. your workflow has no matching transition). Fix in Jira, then retry.`,opTransition:`Status update`,opComment:`Comment`,opCreate:`Create issue`},u={title:`Jira disconnected`,body:`Your Jira token expired or was revoked. Reconnect to sync {{count}} pending update(s).`,reconnect:`Reconnect`},d={label:`Jira`,openInJira:`Open in Jira`},f={willCreate:`Will be created in Jira · {{key}}`},p={saveTitle:`Update Jira ticket`,saveBody:`Saving will update Jira issue {{key}} with these changes.`,saveConfirm:`Save & update Jira`,detailsTitle:`Jira details`,developmentTitle:`Development`,dev:{pullRequests:`Pull requests`,branches:`Branches`,commits:`Commits`},goToTicket:`Go to Ticket {{key}}`,epic:`Epic`},m={moveButton:`Move to {{status}}`,title:`Move spec to {{status}}?`,body:`This spec's Jira issue {{key}} will be moved to "{{status}}" instead of being deleted. Add an optional reason for the move.`,commentLabel:`Reason (optional)`,commentPlaceholder:`Why are you moving this spec?`,confirm:`Move to {{status}}`,moving:`Moving…`,movedToast:`Moved {{key}} to {{status}}`,configLabel:`On discard, move issue to`,configHelp:`When you discard a Jira-backed spec, its issue is moved to this status instead of being deleted.`,configNone:`None — delete normally`,reviewLabel:`Discard moves to`},h={generic:`Something went wrong`,testFirst:`Test the connection first`},g={queued:`Move to "{{status}}" queued — syncing with Jira`,failed:`Failed to move the spec in Jira`},_={section:n,wizard:r,creds:i,project:a,mapping:o,review:s,status:c,outbox:l,authExpired:u,badge:d,addSpec:f,detail:p,discard:m,errors:h,moveToStatus:g};export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={title:`Jira`,subtitle:`Sincronize as specs deste projeto com um quadro Jira`,connectCta:`Conectar ao Jira`},t={step:`Passo {{current}} de {{total}}`,step1Title:`Conecte a sua conta Jira`,step2Title:`Escolha um projeto Jira`,step3Title:`Mapear estados (opcional)`,step4Title:`Revisar e conectar`,next:`Seguinte`,back:`Voltar`,cancel:`Cancelar`,connect:`Conectar`,connecting:`A conectar…`,later:`Fazer mais tarde`},n={baseUrlLabel:`URL do Jira`,baseUrlPlaceholder:`https://sua-empresa.atlassian.net`,baseUrlHelp:`O URL do seu site Jira Cloud ou servidor Data Center.`,emailLabel:`E-mail da conta`,emailPlaceholder:`voce@empresa.com`,emailHelp:`Necessário para o Jira Cloud — o e-mail da sua conta Atlassian.`,tokenLabel:`Token de API`,tokenHelp:`Crie um em id.atlassian.com → Segurança → Tokens de API. É armazenado cifrado nesta máquina e nunca a abandona.`,test:`Testar ligação`,testing:`A testar…`,testOk:`Ligado como {{name}}`,retest:`Testar de novo`},r={searchPlaceholder:`Procurar projetos…`,manualLabel:`Ou introduza uma chave de projeto`,manualPlaceholder:`PROJ`,selected:`{{key}} — {{name}}`,none:`Nenhum projeto encontrado`,loading:`A carregar projetos…`},i={intro:`Os estados são associados automaticamente por categoria (A fazer / Em curso / Concluído). Substitua um estado se o seu fluxo de trabalho usar nomes personalizados.`,auto:`Automático (por categoria)`,todo:`Backlog / A fazer`,inProgress:`Em curso`,onReview:`Em revisão`,done:`Concluído`,cancelled:`Cancelado`,loading:`A carregar estados…`},a={site:`Site`,project:`Projeto`,account:`Conta`,type:`Tipo`,cloud:`Jira Cloud`,dc:`Jira Data Center`},o={connected:`Ligado a {{key}}`,enabledLabel:`Sincronização ativada`,enabledHelp:`Quando ativa, as specs sincronizam com o Jira e os resultados dos rails atualizam os tickets associados.`,pausedHelp:`A sincronização está em pausa. As specs permanecem no quadro mas já não atualizam o Jira.`,syncNow:`Sincronizar agora`,syncing:`A sincronizar…`,syncedToast:`{{count}} ticket(s) sincronizados do Jira`,disconnect:`Desligar`,disconnectConfirm:`Desligar este projeto do Jira? As specs existentes permanecem no quadro; a sincronização para.`,disconnectedToast:`Desligado do Jira`},s={title:`Atualizações Jira pendentes`,pending:`{{count}} pendentes`,dead:`{{count}} a precisar de atenção`,allSynced:`Todas as atualizações sincronizadas`,retry:`Tentar de novo`,deadHelp:`Estas não puderam ser aplicadas automaticamente (ex.: o seu fluxo de trabalho não tem uma transição correspondente). Corrija no Jira e tente de novo.`,opTransition:`Atualização de estado`,opComment:`Comentário`,opCreate:`Criar ticket`},c={title:`Jira desligado`,body:`O seu token Jira expirou ou foi revogado. Volte a ligar para sincronizar {{count}} atualizações pendentes.`,reconnect:`Voltar a ligar`},l={label:`Jira`,openInJira:`Abrir no Jira`},u={willCreate:`Será criado no Jira · {{key}}`},d={saveTitle:`Atualizar ticket do Jira`,saveBody:`Ao salvar, o ticket do Jira {{key}} será atualizado com estas alterações.`,saveConfirm:`Salvar e atualizar Jira`,detailsTitle:`Detalhes do Jira`,developmentTitle:`Desenvolvimento`,dev:{pullRequests:`Pull requests`,branches:`Ramos`,commits:`Commits`},goToTicket:`Ir para o ticket {{key}}`,epic:`Épico`},f={moveButton:`Mover para {{status}}`,title:`Mover a spec para {{status}}?`,body:`O ticket do Jira {{key}} desta spec será movido para "{{status}}" em vez de ser excluído. Adicione um motivo opcional.`,commentLabel:`Motivo (opcional)`,commentPlaceholder:`Por que está movendo esta spec?`,confirm:`Mover para {{status}}`,moving:`Movendo…`,movedToast:`{{key}} movido para {{status}}`,configLabel:`Ao descartar, mover o ticket para`,configHelp:`Quando você descarta uma spec vinculada ao Jira, o ticket é movido para este status em vez de ser excluído.`,configNone:`Nenhum — excluir normalmente`,reviewLabel:`Descartar move para`},p={generic:`Algo correu mal`,testFirst:`Teste primeiro a ligação`},m={queued:`Movimento para "{{status}}" em fila — a sincronizar com o Jira`,failed:`Não foi possível mover a spec no Jira`},h={section:e,wizard:t,creds:n,project:r,mapping:i,review:a,status:o,outbox:s,authExpired:c,badge:l,addSpec:u,detail:d,discard:f,errors:p,moveToStatus:m};export{u as addSpec,c as authExpired,l as badge,n as creds,h as default,d as detail,f as discard,p as errors,i as mapping,m as moveToStatus,s as outbox,r as project,a as review,e as section,o as status,t as wizard};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={title:`Jira`,subtitle:`将此项目的规格与 Jira 看板同步`,connectCta:`连接到 Jira`},t={step:`第 {{current}} 步,共 {{total}} 步`,step1Title:`连接你的 Jira 账户`,step2Title:`选择一个 Jira 项目`,step3Title:`映射状态(可选)`,step4Title:`检查并连接`,next:`下一步`,back:`返回`,cancel:`取消`,connect:`连接`,connecting:`正在连接…`,later:`稍后再做`},n={baseUrlLabel:`Jira 网址`,baseUrlPlaceholder:`https://your-company.atlassian.net`,baseUrlHelp:`你的 Jira Cloud 站点或 Data Center 服务器网址。`,emailLabel:`账户邮箱`,emailPlaceholder:`you@company.com`,emailHelp:`Jira Cloud 必填——你的 Atlassian 账户邮箱。`,tokenLabel:`API 令牌`,tokenHelp:`在 id.atlassian.com → 安全 → API 令牌中创建。它会加密存储在本机,永不外泄。`,test:`测试连接`,testing:`测试中…`,testOk:`已连接为 {{name}}`,retest:`重新测试`},r={searchPlaceholder:`搜索项目…`,manualLabel:`或输入项目键`,manualPlaceholder:`PROJ`,selected:`{{key}} — {{name}}`,none:`未找到项目`,loading:`正在加载项目…`},i={intro:`状态会按类别自动匹配(待办 / 进行中 / 完成)。如果你的工作流使用自定义名称,可覆盖任一状态。`,auto:`自动(按类别)`,todo:`待办 / To Do`,inProgress:`进行中`,onReview:`评审中`,done:`完成`,cancelled:`已取消`,loading:`正在加载状态…`},a={site:`站点`,project:`项目`,account:`账户`,type:`类型`,cloud:`Jira Cloud`,dc:`Jira Data Center`},o={connected:`已连接到 {{key}}`,enabledLabel:`已启用同步`,enabledHelp:`启用后,规格会与 Jira 同步,rail 的结果会更新关联的事务。`,pausedHelp:`同步已暂停。规格仍在看板上,但不再更新 Jira。`,syncNow:`立即同步`,syncing:`正在同步…`,syncedToast:`已从 Jira 同步 {{count}} 个事务`,disconnect:`断开连接`,disconnectConfirm:`要断开此项目与 Jira 的连接吗?现有规格仍保留在看板上;同步将停止。`,disconnectedToast:`已断开与 Jira 的连接`},s={title:`待处理的 Jira 更新`,pending:`{{count}} 个待处理`,dead:`{{count}} 个需要处理`,allSynced:`所有更新已同步`,retry:`重试`,deadHelp:`这些无法自动应用(例如你的工作流没有匹配的转换)。请在 Jira 中修正后重试。`,opTransition:`状态更新`,opComment:`评论`,opCreate:`创建事务`},c={title:`Jira 已断开`,body:`你的 Jira 令牌已过期或被吊销。请重新连接以同步 {{count}} 个待处理更新。`,reconnect:`重新连接`},l={label:`Jira`,openInJira:`在 Jira 中打开`},u={willCreate:`将在 Jira 中创建 · {{key}}`},d={saveTitle:`更新 Jira 工单`,saveBody:`保存后将用这些更改更新 Jira 工单 {{key}}。`,saveConfirm:`保存并更新 Jira`,detailsTitle:`Jira 详情`,developmentTitle:`开发`,dev:{pullRequests:`拉取请求`,branches:`分支`,commits:`提交`},goToTicket:`前往工单 {{key}}`,epic:`史诗`},f={moveButton:`移动到 {{status}}`,title:`将规格移动到 {{status}}?`,body:`此规格的 Jira 工单 {{key}} 将被移动到“{{status}}”,而不是被删除。可选择填写原因。`,commentLabel:`原因(可选)`,commentPlaceholder:`为什么要移动此规格?`,confirm:`移动到 {{status}}`,moving:`正在移动…`,movedToast:`已将 {{key}} 移动到 {{status}}`,configLabel:`丢弃时将工单移动到`,configHelp:`当你丢弃一个关联 Jira 的规格时,其工单将被移动到此状态,而不是被删除。`,configNone:`无 — 正常删除`,reviewLabel:`丢弃时移动到`},p={generic:`出了点问题`,testFirst:`请先测试连接`},m={queued:`移动到"{{status}}"已排队 — 正在与 Jira 同步`,failed:`在 Jira 中移动该 spec 失败`},h={section:e,wizard:t,creds:n,project:r,mapping:i,review:a,status:o,outbox:s,authExpired:c,badge:l,addSpec:u,detail:d,discard:f,errors:p,moveToStatus:m};export{u as addSpec,c as authExpired,l as badge,n as creds,h as default,d as detail,f as discard,p as errors,i as mapping,m as moveToStatus,s as outbox,r as project,a as review,e as section,o as status,t as wizard};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={title:`Jira`,subtitle:`Sincronizza le spec di questo progetto con una board Jira`,connectCta:`Connetti a Jira`},t={step:`Passo {{current}} di {{total}}`,step1Title:`Connetti il tuo account Jira`,step2Title:`Scegli un progetto Jira`,step3Title:`Mappa gli stati (facoltativo)`,step4Title:`Rivedi e connetti`,next:`Avanti`,back:`Indietro`,cancel:`Annulla`,connect:`Connetti`,connecting:`Connessione…`,later:`Fallo più tardi`},n={baseUrlLabel:`URL Jira`,baseUrlPlaceholder:`https://tua-azienda.atlassian.net`,baseUrlHelp:`L'URL del tuo sito Jira Cloud o server Data Center.`,emailLabel:`Email dell'account`,emailPlaceholder:`tu@azienda.com`,emailHelp:`Richiesta per Jira Cloud — l'email del tuo account Atlassian.`,tokenLabel:`Token API`,tokenHelp:`Creane uno su id.atlassian.com → Sicurezza → Token API. Viene memorizzato cifrato su questa macchina e non la lascia mai.`,test:`Prova connessione`,testing:`Verifica…`,testOk:`Connesso come {{name}}`,retest:`Riprova`},r={searchPlaceholder:`Cerca progetti…`,manualLabel:`Oppure inserisci una chiave progetto`,manualPlaceholder:`PROJ`,selected:`{{key}} — {{name}}`,none:`Nessun progetto trovato`,loading:`Caricamento progetti…`},i={intro:`Gli stati vengono associati automaticamente per categoria (Da fare / In corso / Fatto). Sovrascrivi uno stato se il tuo workflow usa nomi personalizzati.`,auto:`Automatico (per categoria)`,todo:`Backlog / Da fare`,inProgress:`In corso`,onReview:`In revisione`,done:`Fatto`,cancelled:`Annullato`,loading:`Caricamento stati…`},a={site:`Sito`,project:`Progetto`,account:`Account`,type:`Tipo`,cloud:`Jira Cloud`,dc:`Jira Data Center`},o={connected:`Connesso a {{key}}`,enabledLabel:`Sincronizzazione attiva`,enabledHelp:`Quando attiva, le spec si sincronizzano con Jira e gli esiti dei rail aggiornano i ticket collegati.`,pausedHelp:`La sincronizzazione è in pausa. Le spec restano sulla board ma non aggiornano più Jira.`,syncNow:`Sincronizza ora`,syncing:`Sincronizzazione…`,syncedToast:`{{count}} ticket sincronizzati da Jira`,disconnect:`Disconnetti`,disconnectConfirm:`Disconnettere questo progetto da Jira? Le spec esistenti restano sulla board; la sincronizzazione si ferma.`,disconnectedToast:`Disconnesso da Jira`},s={title:`Aggiornamenti Jira in sospeso`,pending:`{{count}} in sospeso`,dead:`{{count}} da verificare`,allSynced:`Tutti gli aggiornamenti sincronizzati`,retry:`Riprova`,deadHelp:`Questi non sono stati applicati automaticamente (es. il tuo workflow non ha una transizione corrispondente). Correggi in Jira, poi riprova.`,opTransition:`Aggiornamento stato`,opComment:`Commento`,opCreate:`Crea ticket`},c={title:`Jira disconnesso`,body:`Il tuo token Jira è scaduto o è stato revocato. Riconnettiti per sincronizzare {{count}} aggiornamenti in sospeso.`,reconnect:`Riconnetti`},l={label:`Jira`,openInJira:`Apri in Jira`},u={willCreate:`Verrà creato in Jira · {{key}}`},d={saveTitle:`Aggiorna il ticket Jira`,saveBody:`Salvando, il ticket Jira {{key}} verrà aggiornato con queste modifiche.`,saveConfirm:`Salva e aggiorna Jira`,detailsTitle:`Dettagli Jira`,developmentTitle:`Sviluppo`,dev:{pullRequests:`Pull request`,branches:`Rami`,commits:`Commit`},goToTicket:`Vai al ticket {{key}}`,epic:`Epica`},f={moveButton:`Sposta in {{status}}`,title:`Spostare la spec in {{status}}?`,body:`Il ticket Jira {{key}} di questa spec verrà spostato in "{{status}}" invece di essere eliminato. Aggiungi un motivo facoltativo.`,commentLabel:`Motivo (facoltativo)`,commentPlaceholder:`Perché stai spostando questa spec?`,confirm:`Sposta in {{status}}`,moving:`Spostamento…`,movedToast:`{{key}} spostato in {{status}}`,configLabel:`Allo scarto, sposta il ticket in`,configHelp:`Quando scarti una spec collegata a Jira, il suo ticket viene spostato in questo stato invece di essere eliminato.`,configNone:`Nessuno — elimina normalmente`,reviewLabel:`Lo scarto sposta in`},p={generic:`Qualcosa è andato storto`,testFirst:`Prova prima la connessione`},m={queued:`Spostamento in "{{status}}" in coda — sincronizzazione con Jira`,failed:`Impossibile spostare la spec in Jira`},h={section:e,wizard:t,creds:n,project:r,mapping:i,review:a,status:o,outbox:s,authExpired:c,badge:l,addSpec:u,detail:d,discard:f,errors:p,moveToStatus:m};export{u as addSpec,c as authExpired,l as badge,n as creds,h as default,d as detail,f as discard,p as errors,i as mapping,m as moveToStatus,s as outbox,r as project,a as review,e as section,o as status,t as wizard};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={title:`Jira`,subtitle:`Synchronisez les specs de ce projet avec un tableau Jira`,connectCta:`Se connecter à Jira`},t={step:`Étape {{current}} sur {{total}}`,step1Title:`Connectez votre compte Jira`,step2Title:`Choisissez un projet Jira`,step3Title:`Associer les statuts (facultatif)`,step4Title:`Vérifier et connecter`,next:`Suivant`,back:`Retour`,cancel:`Annuler`,connect:`Connecter`,connecting:`Connexion…`,later:`Le faire plus tard`},n={baseUrlLabel:`URL Jira`,baseUrlPlaceholder:`https://votre-entreprise.atlassian.net`,baseUrlHelp:`L'URL de votre site Jira Cloud ou serveur Data Center.`,emailLabel:`E-mail du compte`,emailPlaceholder:`vous@entreprise.com`,emailHelp:`Requis pour Jira Cloud — l'e-mail de votre compte Atlassian.`,tokenLabel:`Jeton API`,tokenHelp:`Créez-en un sur id.atlassian.com → Sécurité → Jetons API. Il est stocké chiffré sur cette machine et n'en sort jamais.`,test:`Tester la connexion`,testing:`Test en cours…`,testOk:`Connecté en tant que {{name}}`,retest:`Retester`},r={searchPlaceholder:`Rechercher des projets…`,manualLabel:`Ou saisissez une clé de projet`,manualPlaceholder:`PROJ`,selected:`{{key}} — {{name}}`,none:`Aucun projet trouvé`,loading:`Chargement des projets…`},i={intro:`Les statuts sont associés automatiquement par catégorie (À faire / En cours / Terminé). Remplacez un état si votre workflow utilise des noms personnalisés.`,auto:`Automatique (par catégorie)`,todo:`Backlog / À faire`,inProgress:`En cours`,onReview:`En révision`,done:`Terminé`,cancelled:`Annulé`,loading:`Chargement des statuts…`},a={site:`Site`,project:`Projet`,account:`Compte`,type:`Type`,cloud:`Jira Cloud`,dc:`Jira Data Center`},o={connected:`Connecté à {{key}}`,enabledLabel:`Synchronisation activée`,enabledHelp:`Lorsqu'elle est activée, les specs se synchronisent avec Jira et les résultats des rails mettent à jour les tickets liés.`,pausedHelp:`La synchronisation est en pause. Les specs restent sur le tableau mais ne mettent plus Jira à jour.`,syncNow:`Synchroniser maintenant`,syncing:`Synchronisation…`,syncedToast:`{{count}} ticket(s) synchronisé(s) depuis Jira`,disconnect:`Déconnecter`,disconnectConfirm:`Déconnecter ce projet de Jira ? Les specs existantes restent sur le tableau ; la synchronisation s'arrête.`,disconnectedToast:`Déconnecté de Jira`},s={title:`Mises à jour Jira en attente`,pending:`{{count}} en attente`,dead:`{{count}} à vérifier`,allSynced:`Toutes les mises à jour sont synchronisées`,retry:`Réessayer`,deadHelp:`Celles-ci n'ont pas pu être appliquées automatiquement (p. ex. votre workflow n'a pas de transition correspondante). Corrigez dans Jira, puis réessayez.`,opTransition:`Mise à jour du statut`,opComment:`Commentaire`,opCreate:`Créer un ticket`},c={title:`Jira déconnecté`,body:`Votre jeton Jira a expiré ou a été révoqué. Reconnectez-vous pour synchroniser {{count}} mise(s) à jour en attente.`,reconnect:`Se reconnecter`},l={label:`Jira`,openInJira:`Ouvrir dans Jira`},u={willCreate:`Sera créé dans Jira · {{key}}`},d={saveTitle:`Mettre à jour le ticket Jira`,saveBody:`L'enregistrement mettra à jour le ticket Jira {{key}} avec ces modifications.`,saveConfirm:`Enregistrer et mettre à jour Jira`,detailsTitle:`Détails Jira`,developmentTitle:`Développement`,dev:{pullRequests:`Pull requests`,branches:`Branches`,commits:`Commits`},goToTicket:`Aller au ticket {{key}}`,epic:`Épopée`},f={moveButton:`Déplacer vers {{status}}`,title:`Déplacer la spec vers {{status}} ?`,body:`Le ticket Jira {{key}} de cette spec sera déplacé vers « {{status}} » au lieu d'être supprimé. Ajoutez un motif facultatif.`,commentLabel:`Motif (facultatif)`,commentPlaceholder:`Pourquoi déplacez-vous cette spec ?`,confirm:`Déplacer vers {{status}}`,moving:`Déplacement…`,movedToast:`{{key}} déplacé vers {{status}}`,configLabel:`À l'abandon, déplacer le ticket vers`,configHelp:`Lorsque vous abandonnez une spec liée à Jira, son ticket est déplacé vers ce statut au lieu d'être supprimé.`,configNone:`Aucun — supprimer normalement`,reviewLabel:`L'abandon déplace vers`},p={generic:`Une erreur s'est produite`,testFirst:`Testez d'abord la connexion`},m={queued:`Déplacement vers « {{status}} » en file — synchronisation avec Jira`,failed:`Impossible de déplacer la spec dans Jira`},h={section:e,wizard:t,creds:n,project:r,mapping:i,review:a,status:o,outbox:s,authExpired:c,badge:l,addSpec:u,detail:d,discard:f,errors:p,moveToStatus:m};export{u as addSpec,c as authExpired,l as badge,n as creds,h as default,d as detail,f as discard,p as errors,i as mapping,m as moveToStatus,s as outbox,r as project,a as review,e as section,o as status,t as wizard};
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"architect": "## Your task: architecture\n\nYou are the Specrails architect. Turn the requested work into an unambiguous, implementable plan that a developer agent will execute without talking to you.\n\n1. Orient quickly: locate the code the change touches, the tests that cover it and the conventions that apply. Calibrate depth to the blast radius. A localized change gets a short proposal, focused design and only the tasks it needs; a cross-cutting change earns a full impact analysis.\nIn design.md include a Local reference patterns section: cite actual repository paths and symbols for the closest existing implementation and its tests. Explain async rendering/state updates, error propagation and test setup when relevant. Check installed framework versions. If no equivalent exists, state that explicitly; never invent references.\n2. Decide the approach, name the exact files/modules to create or change (inside the repository scope when one is declared), and call out risks, edge cases and compatibility concerns. Plan only the change the requested work needs; unrelated clean-ups are out of scope.\n3. Break the work into ordered, atomic tasks. Each task names concrete files and includes its own tests. Every task must be completable by an agent that can only edit files and run commands: never add tasks such as \"run the test suite\", \"verify\", \"test manually in a browser\", \"commit\" or \"open a PR\". Core runs verification and the host owns delivery.\n4. Execute the official OpenSpec fast-forward skill. Query status and instructions in dependency order; author the real delta specs and other artifacts using those templates and project rules. Preserve existing requirements through OpenSpec delta semantics. Do not fabricate complete replacement specs.\n5. Propose verification. For each repository listed below without a configured verification command, name the existing command that proves the change: the project's test script, type check, build or lint (for example `npm` with args `[\"test\"]`, or `cargo` with `[\"test\"]`). Only propose commands that exist in the repository today or that a task in this plan adds; omit repositories where nothing automated applies. For a repository with a scope, the command must exercise that scope: omit cwd (it then runs in the scope directory) or name a directory inside it; never a command that runs every workspace of a larger checkout. Core runs them after the developer finishes and feeds failures back.\n6. Score your confidence honestly: `high` when the code evidence is conclusive; `medium` when the design rests on one non-obvious assumption (name it in the design); `low` when several plausible designs exist and you cannot choose without missing information. With `low`, put the single question whose answer decides the design in `question`. Core first lets you investigate further, then either asks the requester that exact question or proceeds on your stated assumptions, depending on the project configuration.",
|
|
3
|
-
"developer": "## Your task: implementation\n\nYou are the Specrails developer. Execute the official openspec-apply-change skill for the approved change, implement its pending tasks completely and update their progress through that workflow. Do not substitute a hand-written approximation of apply.\n\n1. Load and execute openspec-apply-change through the supplied binding. Consult its status and instructions apply, read the context files OpenSpec returns, then the relevant existing code and tests.\n2. Work task by task in order. Use test-driven development: write or extend the test first, make it pass with the smallest correct change, then tidy up. Run only focused tests that cover what you touched while iterating. Core owns the complete verification plan and runs it after your turn; do not duplicate that full run. Fix the precise failures Core returns on a correction pass.\n3. Immediately after completing each task, mark it `- [x]` in `tasks.md`; do not postpone all progress updates until the end of the phase. Only mark tasks whose code and tests are complete. Change nothing else in `tasks.md`, and never edit `proposal.md`, `design.md` or the specs: those documents are frozen, and editing them invalidates the run. If a task cannot be completed, leave it `- [ ]` and list it under `incomplete` with the reason.\n4. Keep the implementation consistent with the repository: naming, error handling, import style, formatting and existing utilities. Do not add dependencies unless the design requires them. Change only what the tasks require: the diff should contain the requested change and its tests, nothing else.\nInvestigation budget: consult the local reference patterns in design.md and equivalent application tests before framework internals or node_modules. After three unsuccessful experiments on the same failure, stop repeating commands: state the hypothesis, evidence and next discriminating experiment, then change approach. If three further experiments add no evidence, report the specific blocker under incomplete rather than consuming the remaining turn budget. Never weaken assertions or change acceptance criteria to make a test pass.\nVerification evidence: run tests without piping their output through grep/head or other filters that mask the original exit status. Capture complete stdout/stderr in a temporary log and preserve the test process exit code; inspect that log separately. Report the command and original exit code. Remove temporary debug tests before finishing. Core independently runs the final verification commands.\n5. If the shell is unavailable, still finish every task that only needs code and tests; Core runs the verification commands after your turn and returns the exact failures to you.\n\n## Durable implementation progress\n\nWhen loading the official apply skill, read its savedProgress handoff before repeating investigation. Reconcile it with the current diff and tasks; it is advisory history, never accepted verification evidence. Preserve completed work and previously discovered test commands or environment blockers. Recheck a blocker only when its relevant condition changed.\nAfter each completed task, and whenever the next action or a blocker changes, call the scoped workflow action write_progress with progress: {summary, completedTasks, nextTasks, checks: [{command, outcome}], blockers}. Replace the previous handoff with a concise current account (at most 8 KB); include exact focused test commands, original exit outcomes, relevant paths and the next discriminating action. Keep nextTasks concrete enough for a fresh session to continue unfinished work. Do not include full logs, credentials or claims that old checks authorize acceptance. The host persists this record outside the frozen OpenSpec artifacts. Use read_progress to refresh it. If interrupted, the next session receives it from load_skill; do not write runtime files directly.",
|
|
4
|
-
"reviewer": "## Your task: review\n\nYou are the Specrails reviewer and the last gate before this change is archived. Inspect the implementation, the approved artifacts and the verification evidence read-only. Do not fix anything.\n\nCheck, in this order:\n1. Spec completeness: every requirement in the change specs and every acceptance criterion is implemented. Cross-reference each one against the code.\n2. Task completion: every task in `tasks.md` is `- [x]` and is backed by real code and tests, not just a ticked box.\n3. Test quality: new behavior has tests that assert on behavior, cover error paths, and would fail without the change. Missing tests for production code are a blocking issue.\n4. Correctness and conventions: types and signatures fit the codebase, patterns match the repository, imports and error handling are consistent, no unrelated changes.\n5. Security: no secrets, injection, path traversal, unsafe deserialization, missing authorization or new attack surface. Scale scrutiny to what the change touches.\n6. Performance: no obvious N+1, unbounded loops or blocking work on hot paths introduced by the change.\n\nJudge BEHAVIOUR against the acceptance criteria, never the shape of the code against the wording of the plan: module layout, file lists, class or function names, naming conventions and implementation techniques named in the ticket, the design or a \"contract layer\" are suggestions the developer may legitimately improve on. A working implementation that satisfies a criterion by other means is correct; asking to rename, move or rewrite it to match the plan's wording is NOT an issue. Only a criterion that is not met, a defect, a missing test or a regression is.\n\nReview THE CHANGE. The change set below lists every file this run changed relative to its base, measured by Core from git. Judge those changes and the behavior they affect; code the change did not touch is not an issue unless the change breaks it. Never ask for edits to pre-existing code, other packages or workspaces, or configuration outside the change. An environment problem (credentials, registry access, missing tools) is not a code issue: record it under findings, never as an issue for the fixer.\n\nThe verification evidence below comes from real subprocesses run by Core after the developer finished; treat it as fact, not as a claim by the developer.",
|
|
5
|
-
"fixer": "## Your task: correction\n\nYou are the Specrails FIXER. The verification commands (or the review) failed after the developer's pass; your only job is to make them pass with minimal, precise edits to this change.\n\n1. Read the host failure facts first: command, cwd, original exit code, failureSummary, expected assertion and application file/line. If the excerpt is truncated, use read_verification_evidence with the command's evidenceId for complete stdout/stderr and source. Read the failing test and the implementation it exercises.\n2. Reproduce the failure with the narrowest test command. Compare the assertion, intended behavior, current implementation and actual diff. An unchanged file or a pre-existing test does not prove the failure is unrelated: changes can break existing tests indirectly. Classify the cause as an implementation defect, a test compatibility assumption, or an external/scope blocker. A claim that the failure existed before this change needs baseline or historical evidence; otherwise state that it is unconfirmed.\n3. Patch exactly the files and lines the failure names; touch neighbouring code only when the failure cannot be fixed otherwise. Rewrite a file only when a patch cannot express the change.\n4. Fix incorrect implementation behavior. A failing mandatory host test inside the admitted repository/workspace may also receive a minimal compatibility repair when you prove that its expected behavior is unchanged. For example, a source assertion broken only by formatting may tolerate whitespace while retaining every required operand and guard. This applies even to a pre-existing test outside the current changed-file list. Explain the original expectation and why the repair still rejects the prohibited behavior. Never weaken an assertion, delete or skip a test, hardcode success, change acceptance criteria, add dependencies or widen the repair beyond the diagnosed failure.\n5. A test file the host reports as never executed must be wired into the repository's test command (the test script or runner configuration) and then made to pass.\n6. Confirm the repair with the focused test command and a negative case for any repaired assertion: removing a required safety guard or returning the wrong value must still fail. Preserve the original test exit status; never pipe test execution through grep/head or another command that masks it. Capture stdout/stderr in a temporary log and inspect that log separately. Core runs the complete verification plan after your turn.\n7. Inspect only the reported files, direct dependencies and the evidence needed to establish the cause. Never edit outside the admitted repository/workspace, credentials, environment or unrelated configuration. For an external or unrepairable scope blocker, make no speculative edits and report the exact error, observed evidence and required action. `proposal.md`, `design.md` and the specs remain frozen; only tick completed tasks.\n8. Return the requested JSON contract. Include the diagnosis, exact focused commands and original exit codes, repair and preserved assertion in summary. List every unresolved failure and its reason under incomplete, even when the implementation tasks are already ticked. A failed test remains failed until real host verification passes.\n\n## Durable implementation progress\n\nWhen loading the official apply skill, read its savedProgress handoff before repeating investigation. Reconcile it with the current diff and tasks; it is advisory history, never accepted verification evidence. Preserve completed work and previously discovered test commands or environment blockers. Recheck a blocker only when its relevant condition changed.\nAfter each completed task, and whenever the next action or a blocker changes, call the scoped workflow action write_progress with progress: {summary, completedTasks, nextTasks, checks: [{command, outcome}], blockers}. Replace the previous handoff with a concise current account (at most 8 KB); include exact focused test commands, original exit outcomes, relevant paths and the next discriminating action. Keep nextTasks concrete enough for a fresh session to continue unfinished work. Do not include full logs, credentials or claims that old checks authorize acceptance. The host persists this record outside the frozen OpenSpec artifacts. Use read_progress to refresh it. If interrupted, the next session receives it from load_skill; do not write runtime files directly."
|
|
6
|
-
}
|