specrails-desktop 2.13.0 → 2.15.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-D0-P3PsD.js → ActivityFeedPage-C_clKk8d.js} +1 -1
- package/client/dist/assets/AgentsPage-jcPUtPhP.js +86 -0
- package/client/dist/assets/AnalyticsPage-DZkVU3yd.js +1 -0
- package/client/dist/assets/{BarChart-D9vfeilz.js → BarChart-Dq1h8eYR.js} +1 -1
- package/client/dist/assets/CodePage-BcbZT88K.js +2 -0
- package/client/dist/assets/{DesktopAnalyticsPage-C6Qccm5E.js → DesktopAnalyticsPage-CYhXhJoQ.js} +1 -1
- package/client/dist/assets/DocsDialog-CS3Syf61.js +11 -0
- package/client/dist/assets/DocsPage-l3ZcTO2E.js +11 -0
- package/client/dist/assets/{ExportDropdown-DMJ__Yui.js → ExportDropdown-DdB2ncYh.js} +1 -1
- package/client/dist/assets/IntegrationsPage-CJ_Om1zu.js +3 -0
- package/client/dist/assets/JobDetailPage-D5Cxw0md.js +16 -0
- package/client/dist/assets/JobsPage-3v_iX83r.js +1 -0
- package/client/dist/assets/{LoopBuilderPage-BS3enu9N.js → LoopBuilderPage-4s_adZy5.js} +2 -2
- package/client/dist/assets/LoopsPage-DA94-o0j.js +1 -0
- package/client/dist/assets/analytics-BDlELxc7.js +1 -0
- package/client/dist/assets/analytics-BE49LbUk.js +1 -0
- package/client/dist/assets/analytics-CQqu1yE5.js +1 -0
- package/client/dist/assets/analytics-CgEkAUiP.js +1 -0
- package/client/dist/assets/analytics-D1ElChhs.js +1 -0
- package/client/dist/assets/analytics-DBGO8B6-.js +1 -0
- package/client/dist/assets/analytics-DDqve9Ma.js +1 -0
- package/client/dist/assets/analytics-DEsEAJZL.js +1 -0
- package/client/dist/assets/{common-DI4jE5y-.js → common-C9VyfY7g.js} +1 -1
- package/client/dist/assets/{common-DTHzyfYC.js → common-CNoRVpnA.js} +1 -1
- package/client/dist/assets/{common-CnrZ9gCZ.js → common-CcHFVATT.js} +1 -1
- package/client/dist/assets/{common-BhFasU8N.js → common-CzCQ0rpW.js} +1 -1
- package/client/dist/assets/{common-DY4nzbWC.js → common-Dmpyh323.js} +1 -1
- package/client/dist/assets/{common-CwhHWbTD.js → common-LDwESeCX.js} +1 -1
- package/client/dist/assets/{common-DS8zKLQT.js → common-ULlk84G4.js} +1 -1
- package/client/dist/assets/common-kftoE0Q-.js +1 -0
- package/client/dist/assets/dashboard-03EpOoMM.js +1 -0
- package/client/dist/assets/dashboard-BQ3Oa8CE.js +1 -0
- package/client/dist/assets/dashboard-C-dXxut-.js +1 -0
- package/client/dist/assets/dashboard-C2owt3eN.js +1 -0
- package/client/dist/assets/dashboard-C52PElPV.js +1 -0
- package/client/dist/assets/dashboard-CUjyhohl.js +1 -0
- package/client/dist/assets/dashboard-Ch6H-457.js +1 -0
- package/client/dist/assets/dashboard-zH9quXks.js +1 -0
- package/client/dist/assets/{dist-js-o4iwbCuN.js → dist-js-D27I-bfi.js} +1 -1
- package/client/dist/assets/{dist-js-_oLAsZQ4.js → dist-js-Ele_sHO7.js} +1 -1
- package/client/dist/assets/index-BRMyOS1B.css +2 -0
- package/client/dist/assets/index-meTWPBzY.js +144 -0
- package/client/dist/assets/{lib-CVrpo1ac.js → lib-qdRfWwE1.js} +1 -1
- package/client/dist/assets/loops-BYNUJVyD.js +1 -0
- package/client/dist/assets/loops-B_gS4Pqu.js +1 -0
- package/client/dist/assets/loops-B_w7STrw.js +1 -0
- package/client/dist/assets/loops-DE-2cmLw.js +1 -0
- package/client/dist/assets/loops-D_ZxkD4l.js +1 -0
- package/client/dist/assets/loops-DfGadne0.js +1 -0
- package/client/dist/assets/loops-Fv4Bs-9A.js +1 -0
- package/client/dist/assets/loops-mcoeFMat.js +1 -0
- package/client/dist/assets/{tickets-IbYhlr-6.js → tickets-68LH1xp6.js} +1 -1
- package/client/dist/assets/{tickets-EnP6m_Ao.js → tickets-D6f3GSYn.js} +1 -1
- package/client/dist/assets/{tickets-BFrVcXAI.js → tickets-DBQXMYYA.js} +1 -1
- package/client/dist/assets/{tickets-C3gG--yT.js → tickets-OrJwUxJR.js} +1 -1
- package/client/dist/assets/{tickets-Cfhwbdxj.js → tickets-PtHNxQo5.js} +1 -1
- package/client/dist/assets/{tickets-ZS5EsDxn.js → tickets-REr-EQx9.js} +1 -1
- package/client/dist/assets/{tickets-DcggvP3k.js → tickets-blQnNA4N.js} +1 -1
- package/client/dist/assets/{tickets-lJR7pWNI.js → tickets-jxsTrApR.js} +1 -1
- package/client/dist/assets/{upload-Dn9N1ESQ.js → upload-DPG87J4t.js} +1 -1
- package/client/dist/assets/{value-Bd3Cf9Sr.js → value-BRVOAvhY.js} +1 -1
- package/client/dist/index.html +7 -7
- package/package.json +1 -1
- package/server/dist/ai-invocations.js +5 -2
- package/server/dist/db.js +35 -2
- package/server/dist/desktop-analytics.js +39 -6
- package/server/dist/loop-command-catalog.js +97 -0
- package/server/dist/loop-constants.js +51 -1
- package/server/dist/loop-decider.js +13 -10
- package/server/dist/loop-executors.js +58 -6
- package/server/dist/loop-factory.js +10 -3
- package/server/dist/loop-graph.js +21 -0
- package/server/dist/loop-run-manager.js +145 -14
- package/server/dist/loop-runs-store.js +51 -0
- package/server/dist/loop-templates-ported.js +675 -0
- package/server/dist/loop-templates.js +48 -6
- package/server/dist/loops-router.js +1 -0
- package/server/dist/merge-manager.js +81 -0
- package/server/dist/pricing.js +20 -1
- package/server/dist/project-registry.js +7 -0
- package/server/dist/project-router-loop-runs.js +15 -2
- package/server/dist/project-router-spending.js +56 -8
- package/server/dist/queue-manager.js +70 -10
- package/server/dist/rail-isolated-launch.js +189 -0
- package/server/dist/rail-isolation.js +54 -0
- package/server/dist/rail-merge-orchestrator.js +45 -0
- package/server/dist/rail-worktrees-store.js +52 -0
- package/server/dist/rails-router.js +56 -4
- package/server/dist/repo-lock.js +25 -0
- package/server/dist/result-event.js +15 -1
- package/server/dist/spending.js +161 -21
- package/server/dist/worktree-manager.js +159 -0
- package/client/dist/assets/AgentsPage-BZa3lhQM.js +0 -86
- package/client/dist/assets/AnalyticsPage-CgaEg-lx.js +0 -1
- package/client/dist/assets/CodePage-2GUsF_JS.js +0 -2
- package/client/dist/assets/DocsDialog-BAmtk9Jc.js +0 -11
- package/client/dist/assets/DocsPage-CJwnpB57.js +0 -11
- package/client/dist/assets/IntegrationsPage-CP2VcOpr.js +0 -3
- package/client/dist/assets/JobDetailPage-Bk6tQTew.js +0 -16
- package/client/dist/assets/JobsPage-BvbeqWjS.js +0 -1
- package/client/dist/assets/LoopsPage-B0pgvoky.js +0 -2
- package/client/dist/assets/analytics-BHApBnUn.js +0 -1
- package/client/dist/assets/analytics-BUxrug9J.js +0 -1
- package/client/dist/assets/analytics-Cy6DTfO-.js +0 -1
- package/client/dist/assets/analytics-DMJxD9FD.js +0 -1
- package/client/dist/assets/analytics-DgrBuxla.js +0 -1
- package/client/dist/assets/analytics-DwxT1CS8.js +0 -1
- package/client/dist/assets/analytics-GrLc-SMr.js +0 -1
- package/client/dist/assets/analytics-qvPq4T4h.js +0 -1
- package/client/dist/assets/common-D9GAPxeN.js +0 -1
- package/client/dist/assets/dashboard-8FSyxKGV.js +0 -1
- package/client/dist/assets/dashboard-A9XQUfdS.js +0 -1
- package/client/dist/assets/dashboard-BFktSDsV.js +0 -1
- package/client/dist/assets/dashboard-C1PKCXLs.js +0 -1
- package/client/dist/assets/dashboard-DNf0czU-.js +0 -1
- package/client/dist/assets/dashboard-DQQCOVfu.js +0 -1
- package/client/dist/assets/dashboard-DxFqeHZk.js +0 -1
- package/client/dist/assets/dashboard-WvPGhbbi.js +0 -1
- package/client/dist/assets/index-DrFJinsI.css +0 -2
- package/client/dist/assets/index-QEeqwz4v.js +0 -143
- package/client/dist/assets/loops-B1ZQCKEk.js +0 -1
- package/client/dist/assets/loops-Bp5yTSic.js +0 -1
- package/client/dist/assets/loops-BvoL_LAc.js +0 -1
- package/client/dist/assets/loops-BwgehdXY.js +0 -1
- package/client/dist/assets/loops-CMLUqUpc.js +0 -1
- package/client/dist/assets/loops-CW69VvTI.js +0 -1
- package/client/dist/assets/loops-DkV2RhEb.js +0 -1
- package/client/dist/assets/loops-arQ602Zm.js +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./chunk-CilyBKbf.js";var t=e({actions:()=>c,builder:()=>p,builtInBadge:()=>h,card:()=>l,catalog:()=>_,confirmDelete:()=>u,default:()=>v,empty:()=>s,errors:()=>f,newLoop:()=>i,newLoopName:()=>d,preview:()=>m,run:()=>g,sections:()=>a,status:()=>o,subtitle:()=>r,title:()=>n}),n=`Loops`,r=`Reusable automation loops — shared across all your projects.`,i=`New loop`,a={drafts:`Drafts`,published:`Published`,templates:`Templates`,builtIn:`Built-in`},o={draft:`Draft`,published:`Published`,running:`Running`},s={title:`No loops yet`,body:`Create one from scratch or start from a template.`},c={edit:`Edit`,delete:`Delete`,publish:`Publish`,unpublish:`Unpublish`,duplicate:`Duplicate`,use:`Use template`,preview:`Preview`,fork:`Fork to edit`,run:`Run`,export:`Export`,import:`Import`,select:`Select {{name}}`},l={nodes_one:`{{count}} node`,nodes_other:`{{count}} nodes`,usedIn:`In use · {{project}}`},u=`Delete this loop? It will disappear from every rail picker.`,d=`New loop`,f={load:`Failed to load loops`,save:`Failed to save loop`,publishInvalid:`This loop can't be published yet — fix the highlighted issues.`},p={back:`Back to Loops`,save:`Save`,saved:`Loop saved`,publish:`Publish`,published:`Loop published`,addNode:`Add node`,deleteNode:`Delete node`,config:{maxIterations:`Max iterations`,timeout:`Timeout (min)`,maxIterationsHint:`Hard cap on Loop Decider iterations — the loop stops when it's reached even if the goal isn't met. Prevents runaway loops.`,timeoutHint:`Wall-clock limit for the whole run, in minutes. If exceeded, the run is stopped and marked failed — a safety net alongside max iterations.`,maxCost:`Max cost ($)`,maxCostHint:`Optional USD budget for the whole run. Checked BETWEEN steps (a step’s cost is only known once it finishes), so the loop stops before the next step once the total crosses it — may overshoot by one step. For non-Claude providers the cost is an estimate. Empty = no cap.`},nodes:{start:`Start`,"ai-step":`AI Step`,shell:`Shell`,decider:`Loop Decider`,condition:`Condition`,end:`End`},inspector:{selectNode:`Select a node to edit it.`,prompt:`Prompt`,provider:`Provider`,model:`Model`,effort:`Reasoning effort`,command:`Command`,goal:`Goal / stop criteria`,join:`Join`,outcome:`Outcome`,startNote:`The entry point of the loop. Connect it to the first step.`,promptHint:`Click or drag a token to insert it into the prompt.`,tokensSpec:`Spec fields`,tokensJira:`Jira`,tokensCommands:`Commands`,label:`Name`},branch:{continue:`↻ Continue`,stop:`✓ Stop`},edgesHelp:{label:`How steps connect`,body:`Arrows set the run ORDER, not data — boxes have no input ports and edges carry no parameters. Each AI Step automatically resumes its session (full prior context) plus a short summary of previous steps; nothing is wired by hand. The Loop Decider has two outputs: ↻ Continue (goal not met → loop back) and ✓ Stop (goal met → exit).`},arrange:{label:`Arrange`,vertical:`Vertical`,horizontal:`Horizontal`,grid:`Grid`,reset:`Reset`},constants:{label:`Constants`,manage:`Manage constants`,title:`Loop constants`,empty:`No custom constants yet.`,name:`NAME`,value:`value`,add:`Add`,builtinBadge:`Built-in`},paste:{done_one:`Pasted {{count}} step`,done_other:`Pasted {{count}} steps`},problems:{count_one:`{{count}} problem`,count_other:`{{count}} problems`,NO_START:`Add a Start node.`,MULTIPLE_START:`Only one Start node is allowed.`,NO_END:`Add at least one End node.`,ORPHAN:`This step isn't reachable from Start.`,DECIDER_BRANCHES:`Loop Decider needs a Continue and a Stop branch.`,EMPTY_PROMPT:`AI Step has an empty prompt.`,EMPTY_COMMAND:`Shell step has an empty command.`,EMPTY_GOAL:`Loop Decider has no goal.`,DEAD_END:`This step has no outgoing connection.`},preview:{label:`Preview`,title:`Dry-run preview`,sampleNote:`Spec values use sample data; commands and constants resolve exactly as they will at run time.`,empty:`No steps to preview.`,error:`Preview failed`}},m={steps:`Steps`,limits:`{{iterations}} iterations max · {{timeout}} min timeout`},h=`Built-in`,g={title:`Run {{name}}`,subtitle:`Launch this loop on a project (no ticket needed).`,project:`Project`,provider:`Provider`,effort:`Reasoning effort`,execute:`Execute`,noProjects:`No projects available.`,launched:`Running {{name}}`},_={"ship-and-green":{name:`Ship & Green`,description:`Fully autonomous: implement the spec, verify, and refine (fix) on failure — looping verify → fix → verify until everything is green. No human intervention.`},"verify-pass":{name:`Verify Pass`,description:`Autonomous verify-and-fix: detect and run the project's build/lint/tests, then refine on failure — verify → fix → verify until green.`},"ci-watch":{name:`CI Watch`,description:`Poll CI checks on the open PR (the agent uses the repo's CI tooling) until every check is green.`},"lint-and-fix":{name:`Lint & Fix`,description:`The agent detects and runs the project's linter and fixes every issue, iterating until the codebase is clean.`},"type-safe":{name:`Type Safe`,description:`The agent detects and runs the project's type checker and resolves every error, iterating until it passes cleanly.`},"coverage-climb":{name:`Coverage Climb`,description:`The agent runs the project's coverage tooling and adds focused tests until the thresholds pass.`},"build-fix":{name:`Build Fix`,description:`The agent detects and runs the project's production build and fixes compile/bundle errors until it is green.`},"deploy-check":{name:`Deploy Check`,description:`The agent polls the deployment/health status (using the project's deploy tooling) until the service reports healthy.`},factory_implement:{name:`Implement`,description:`Fully autonomous: implement the spec, verify, and refine (fix) on failure — looping until all tests pass.`},factory_batch:{name:`Batch Implement`,description:`Batch-implement all the rail's tickets at once, then verify + refine on failure until green.`},factory_ultracode:{name:`Ultracode`,description:`Autonomous per-ticket implementation (no pipeline), then verify + refine until green. Claude only.`}},v={title:n,subtitle:r,newLoop:i,sections:a,status:o,empty:s,actions:c,card:l,confirmDelete:u,newLoopName:d,errors:f,builder:p,preview:m,builtInBadge:h,run:g,catalog:_,import:{done_one:`Imported {{count}} loop`,done_other:`Imported {{count}} loops`,skipped_one:`Skipped {{count}} duplicate: {{names}}`,skipped_other:`Skipped {{count}} duplicates: {{names}}`,invalid:`That file isn't a valid loops export.`}};export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e=`Loops`,t=`Wiederverwendbare Automatisierungs-Loops – projektübergreifend geteilt.`,n=`Neuer Loop`,r={drafts:`Entwürfe`,published:`Veröffentlicht`,templates:`Vorlagen`,builtIn:`Integriert`},i={draft:`Entwurf`,published:`Veröffentlicht`,running:`Läuft`},a={title:`Noch keine Loops`,body:`Erstelle einen von Grund auf neu oder beginne mit einer Vorlage.`},o={edit:`Bearbeiten`,delete:`Löschen`,publish:`Veröffentlichen`,unpublish:`Zurückziehen`,duplicate:`Duplizieren`,use:`Vorlage verwenden`,preview:`Vorschau`,fork:`Zum Bearbeiten forken`,run:`Ausführen`,export:`Exportieren`,import:`Importieren`,select:`{{name}} auswählen`},s={nodes_one:`{{count}} Knoten`,nodes_other:`{{count}} Knoten`,usedIn:`In Verwendung · {{project}}`},c=`Diesen Loop löschen? Er verschwindet aus jeder Rail-Auswahl.`,l=`Neuer Loop`,u={load:`Loops konnten nicht geladen werden`,save:`Loop konnte nicht gespeichert werden`,publishInvalid:`Dieser Loop kann noch nicht veröffentlicht werden – behebe die hervorgehobenen Probleme.`},d={back:`Zurück zu Loops`,save:`Speichern`,saved:`Loop gespeichert`,publish:`Veröffentlichen`,published:`Loop veröffentlicht`,addNode:`Knoten hinzufügen`,deleteNode:`Knoten löschen`,config:{maxIterations:`Maximale Iterationen`,timeout:`Timeout (Min.)`,maxIterationsHint:`Obergrenze für Loop-Decider-Iterationen — der Loop stoppt beim Erreichen, auch wenn das Ziel nicht erfüllt ist. Verhindert Endlosschleifen.`,timeoutHint:`Echtzeit-Limit für den gesamten Lauf, in Minuten. Bei Überschreitung wird der Lauf gestoppt und als fehlgeschlagen markiert — ein Sicherheitsnetz neben den max. Iterationen.`,maxCost:`Max. Kosten ($)`,maxCostHint:`Optionales USD-Budget für den gesamten Lauf. Wird ZWISCHEN Schritten geprüft (die Kosten eines Schritts stehen erst nach dessen Ende fest), der Loop stoppt vor dem nächsten Schritt, sobald die Summe es überschreitet — kann um einen Schritt überschreiten. Bei Nicht-Claude-Anbietern sind die Kosten geschätzt. Leer = kein Limit.`},nodes:{start:`Start`,"ai-step":`KI-Schritt`,shell:`Shell`,decider:`Loop-Entscheider`,condition:`Bedingung`,end:`Ende`},inspector:{selectNode:`Wähle einen Knoten aus, um ihn zu bearbeiten.`,prompt:`Prompt`,provider:`Anbieter`,model:`Modell`,effort:`Denkaufwand`,command:`Befehl`,goal:`Ziel / Abbruchkriterien`,join:`Verknüpfung`,outcome:`Ergebnis`,startNote:`Der Einstiegspunkt des Loops. Verbinde ihn mit dem ersten Schritt.`,promptHint:`Klicke oder ziehe ein Token, um es in den Prompt einzufügen.`,tokensSpec:`Spec-Felder`,tokensJira:`Jira`,tokensCommands:`Befehle`,label:`Name`},branch:{continue:`↻ Fortsetzen`,stop:`✓ Stoppen`},edgesHelp:{label:`Wie Schritte verbunden werden`,body:`Pfeile legen die REIHENFOLGE der Ausführung fest, keine Daten — Boxen haben keine Eingangsports und Kanten übergeben keine Parameter. Jeder AI Step setzt automatisch seine Session fort (vollständiger vorheriger Kontext) plus eine kurze Zusammenfassung der vorherigen Schritte; nichts wird von Hand verdrahtet. Der Loop Decider hat zwei Ausgänge: ↻ Fortsetzen (Ziel nicht erreicht → zurück in die Schleife) und ✓ Stoppen (Ziel erreicht → beenden).`},arrange:{label:`Anordnen`,vertical:`Vertikal`,horizontal:`Horizontal`,grid:`Raster`,reset:`Zurücksetzen`},constants:{label:`Konstanten`,manage:`Konstanten verwalten`,title:`Loop-Konstanten`,empty:`Noch keine eigenen Konstanten.`,name:`NAME`,value:`Wert`,add:`Hinzufügen`,builtinBadge:`Integriert`},paste:{done_one:`{{count}} Schritt eingefügt`,done_other:`{{count}} Schritte eingefügt`},problems:{count_one:`{{count}} Problem`,count_other:`{{count}} Probleme`,NO_START:`Füge einen Start-Knoten hinzu.`,MULTIPLE_START:`Nur ein Start-Knoten ist erlaubt.`,NO_END:`Füge mindestens einen End-Knoten hinzu.`,ORPHAN:`Dieser Schritt ist vom Start nicht erreichbar.`,DECIDER_BRANCHES:`Der Loop Decider braucht einen Fortsetzen- und einen Stopp-Zweig.`,EMPTY_PROMPT:`Der KI-Schritt hat einen leeren Prompt.`,EMPTY_COMMAND:`Der Shell-Schritt hat einen leeren Befehl.`,EMPTY_GOAL:`Der Loop Decider hat kein Ziel.`,DEAD_END:`Dieser Schritt hat keine ausgehende Verbindung.`},preview:{label:`Vorschau`,title:`Probelauf-Vorschau`,sampleNote:`Spec-Werte sind Beispieldaten; Befehle und Konstanten werden wie zur Laufzeit aufgelöst.`,empty:`Keine Schritte zur Vorschau.`,error:`Vorschau fehlgeschlagen`}},f={steps:`Schritte`,limits:`max. {{iterations}} Iterationen · {{timeout}} Min. Timeout`},p=`Integriert`,m={title:`{{name}} ausführen`,subtitle:`Diesen Loop auf einem Projekt starten (kein Ticket nötig).`,project:`Projekt`,provider:`Anbieter`,effort:`Reasoning-Aufwand`,execute:`Ausführen`,noProjects:`Keine Projekte verfügbar.`,launched:`{{name}} wird ausgeführt`},h={"ship-and-green":{name:`Ship & Green`,description:`Vollständig autonom: spec implementieren, verifizieren und bei Fehlern nachbessern (Fix) — in der Schleife verifizieren → fixen → verifizieren, bis alles grün ist. Kein manuelles Eingreifen.`},"verify-pass":{name:`Verify Pass`,description:`Autonomes Verifizieren-und-Fixen: build/lint/Tests des Projekts erkennen und ausführen, dann bei Fehlern nachbessern — verifizieren → fixen → verifizieren, bis grün.`},"ci-watch":{name:`CI Watch`,description:`Fragt die CI-Checks des offenen PR ab (der Agent nutzt das CI-Tooling des Repos), bis jeder Check grün ist.`},"lint-and-fix":{name:`Lint & Fix`,description:`Der Agent erkennt und führt den lint des Projekts aus und behebt jedes Problem, iterierend, bis die Codebasis sauber ist.`},"type-safe":{name:`Type Safe`,description:`Der Agent erkennt und führt den Typchecker des Projekts aus und behebt jeden Fehler, iterierend, bis er sauber durchläuft.`},"coverage-climb":{name:`Coverage Climb`,description:`Der Agent führt das Coverage-Tooling des Projekts aus und ergänzt gezielte Tests, bis die Schwellenwerte erreicht sind.`},"build-fix":{name:`Build Fix`,description:`Der Agent erkennt und führt den Produktions-build des Projekts aus und behebt Kompilier-/Bundle-Fehler, bis er grün ist.`},"deploy-check":{name:`Deploy Check`,description:`Der Agent fragt den deploy-/Health-Status ab (mit dem deploy-Tooling des Projekts), bis der Dienst als gesund gemeldet wird.`},factory_implement:{name:`Implementieren`,description:`Vollständig autonom: spec implementieren, verifizieren und bei Fehlern nachbessern (Fix) — in der Schleife, bis alle Tests bestehen.`},factory_batch:{name:`Batch-Implementierung`,description:`Alle Tickets des Rails auf einmal als Batch implementieren, dann verifizieren + bei Fehlern nachbessern, bis grün.`},factory_ultracode:{name:`Ultracode`,description:`Autonome Implementierung pro Ticket (keine Pipeline), dann verifizieren + nachbessern, bis grün. Nur Claude.`}},g={title:e,subtitle:t,newLoop:n,sections:r,status:i,empty:a,actions:o,card:s,confirmDelete:c,newLoopName:l,errors:u,builder:d,preview:f,builtInBadge:p,run:m,catalog:h,import:{done_one:`{{count}} Loop importiert`,done_other:`{{count}} Loops importiert`,skipped_one:`{{count}} Duplikat übersprungen: {{names}}`,skipped_other:`{{count}} Duplikate übersprungen: {{names}}`,invalid:`Diese Datei ist kein gültiger Loops-Export.`}};export{o as actions,d as builder,p as builtInBadge,s as card,h as catalog,c as confirmDelete,g as default,a as empty,u as errors,n as newLoop,l as newLoopName,f as preview,m as run,r as sections,i as status,t as subtitle,e as title};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e=`Loops`,t=`再利用可能な自動化ループ — すべてのプロジェクトで共有されます。`,n=`新しいループ`,r={drafts:`下書き`,published:`公開済み`,templates:`テンプレート`,builtIn:`組み込み`},i={draft:`下書き`,published:`公開済み`,running:`実行中`},a={title:`ループはまだありません`,body:`ゼロから作成するか、テンプレートから始めましょう。`},o={edit:`編集`,delete:`削除`,publish:`公開`,unpublish:`公開を取り消す`,duplicate:`複製`,use:`テンプレートを使用`,preview:`プレビュー`,fork:`フォークして編集`,run:`実行`,export:`エクスポート`,import:`インポート`,select:`{{name}} を選択`},s={nodes_one:`{{count}} 個のノード`,nodes_other:`{{count}} 個のノード`,usedIn:`使用中 · {{project}}`},c=`このループを削除しますか?すべてのレールのピッカーから表示されなくなります。`,l=`新しいループ`,u={load:`ループの読み込みに失敗しました`,save:`ループの保存に失敗しました`,publishInvalid:`このループはまだ公開できません — ハイライトされた問題を修正してください。`},d={back:`ループに戻る`,save:`保存`,saved:`ループを保存しました`,publish:`公開`,published:`ループを公開しました`,addNode:`ノードを追加`,deleteNode:`ノードを削除`,config:{maxIterations:`最大反復回数`,timeout:`タイムアウト(分)`,maxIterationsHint:`Loop Decider の反復回数の上限 — 目標が未達でも到達したらループを停止。暴走ループを防ぎます。`,timeoutHint:`実行全体の実時間の上限(分)。超過すると実行は停止し失敗として記録されます — 最大反復回数と並ぶ安全策です。`,maxCost:`最大コスト ($)`,maxCostHint:`実行全体の任意の USD 予算。ステップ間で確認(各ステップの費用はそのステップ終了時にのみ判明)するため、合計が超えると次のステップ前にループを停止します(1ステップ分超過する可能性あり)。Claude 以外のプロバイダーでは費用は推定値です。空欄 = 上限なし。`},nodes:{start:`開始`,"ai-step":`AI ステップ`,shell:`シェル`,decider:`ループ判定`,condition:`条件`,end:`終了`},inspector:{selectNode:`編集するノードを選択してください。`,prompt:`プロンプト`,provider:`プロバイダー`,model:`モデル`,effort:`推論の労力`,command:`コマンド`,goal:`目標 / 停止条件`,join:`結合`,outcome:`結果`,startNote:`ループのエントリーポイント。最初のステップに接続してください。`,promptHint:`トークンをクリックまたはドラッグしてプロンプトに挿入します。`,tokensSpec:`Spec フィールド`,tokensJira:`Jira`,tokensCommands:`コマンド`,label:`名前`},branch:{continue:`↻ 続行`,stop:`✓ 終了`},edgesHelp:{label:`ステップの接続方法`,body:`矢印は実行の順序を設定するもので、データの流れではありません — ボックスには入力ポートがなく、エッジはパラメータを運びません。各 AI Step は自動的にそのセッションを再開し (これまでの完全なコンテキスト)、加えて前のステップの短い要約を引き継ぎます。手作業での配線は一切ありません。Loop Decider には 2 つの出力があります: ↻ Continue (目標未達 → ループバック) と ✓ Stop (目標達成 → 終了)。`},arrange:{label:`整列`,vertical:`垂直`,horizontal:`水平`,grid:`グリッド`,reset:`リセット`},constants:{label:`定数`,manage:`定数を管理`,title:`ループ定数`,empty:`カスタム定数はまだありません。`,name:`名前`,value:`値`,add:`追加`,builtinBadge:`組み込み`},paste:{done_one:`{{count}} 個のステップを貼り付けました`,done_other:`{{count}} 個のステップを貼り付けました`},problems:{count_one:`{{count}} 件の問題`,count_other:`{{count}} 件の問題`,NO_START:`開始ノードを追加してください。`,MULTIPLE_START:`開始ノードは1つだけ許可されます。`,NO_END:`終了ノードを少なくとも1つ追加してください。`,ORPHAN:`このステップは開始から到達できません。`,DECIDER_BRANCHES:`Loop Decider には継続と停止の分岐が必要です。`,EMPTY_PROMPT:`AI ステップのプロンプトが空です。`,EMPTY_COMMAND:`Shell ステップのコマンドが空です。`,EMPTY_GOAL:`Loop Decider に目標がありません。`,DEAD_END:`このステップには出力接続がありません。`},preview:{label:`プレビュー`,title:`ドライラン プレビュー`,sampleNote:`Spec の値はサンプルです。コマンドと定数は実行時と同じように解決されます。`,empty:`プレビューするステップがありません。`,error:`プレビューに失敗しました`}},f={steps:`ステップ`,limits:`最大 {{iterations}} 回 · {{timeout}} 分タイムアウト`},p=`組み込み`,m={title:`{{name}} を実行`,subtitle:`このループをプロジェクトで実行します(チケット不要)。`,project:`プロジェクト`,provider:`プロバイダー`,effort:`推論の強度`,execute:`実行`,noProjects:`利用可能なプロジェクトがありません。`,launched:`{{name}} を実行中`},h={"ship-and-green":{name:`Ship & Green`,description:`完全自律: spec を実装し、検証し、失敗時には修正 (refine) する — すべてがグリーンになるまで 検証 → 修正 → 検証 をループします。人手による介入は不要です。`},"verify-pass":{name:`Verify Pass`,description:`自律的な検証と修正: プロジェクトの build / lint / テストを検出して実行し、失敗時には修正 — グリーンになるまで 検証 → 修正 → 検証 を繰り返します。`},"ci-watch":{name:`CI Watch`,description:`オープンな PR の CI チェックをポーリングし (エージェントがリポジトリの CI ツールを使用)、すべてのチェックがグリーンになるまで続けます。`},"lint-and-fix":{name:`Lint & Fix`,description:`エージェントがプロジェクトの linter を検出して実行し、すべての問題を修正します。コードベースがクリーンになるまで反復します。`},"type-safe":{name:`Type Safe`,description:`エージェントがプロジェクトの型チェッカーを検出して実行し、すべてのエラーを解消します。問題なくパスするまで反復します。`},"coverage-climb":{name:`Coverage Climb`,description:`エージェントがプロジェクトのカバレッジツールを実行し、しきい値をパスするまで的を絞ったテストを追加します。`},"build-fix":{name:`Build Fix`,description:`エージェントがプロジェクトの本番 build を検出して実行し、グリーンになるまでコンパイル / バンドルのエラーを修正します。`},"deploy-check":{name:`Deploy Check`,description:`エージェントがデプロイ / ヘルスステータスをポーリングし (プロジェクトの deploy ツールを使用)、サービスが正常を報告するまで続けます。`},factory_implement:{name:`実装`,description:`完全自律: spec を実装し、検証し、失敗時には修正 (refine) する — すべてのテストがパスするまでループします。`},factory_batch:{name:`一括実装`,description:`レールのすべてのチケットを一度に一括実装し、失敗時にはグリーンになるまで 検証 + 修正 を行います。`},factory_ultracode:{name:`Ultracode`,description:`チケットごとの自律実装 (パイプラインなし)、その後グリーンになるまで 検証 + 修正 を行います。Claude のみ。`}},g={title:e,subtitle:t,newLoop:n,sections:r,status:i,empty:a,actions:o,card:s,confirmDelete:c,newLoopName:l,errors:u,builder:d,preview:f,builtInBadge:p,run:m,catalog:h,import:{done_one:`{{count}} 個のループをインポートしました`,done_other:`{{count}} 個のループをインポートしました`,skipped_one:`{{count}} 件の重複をスキップ:{{names}}`,skipped_other:`{{count}} 件の重複をスキップ:{{names}}`,invalid:`そのファイルは有効なループのエクスポートではありません。`}};export{o as actions,d as builder,p as builtInBadge,s as card,h as catalog,c as confirmDelete,g as default,a as empty,u as errors,n as newLoop,l as newLoopName,f as preview,m as run,r as sections,i as status,t as subtitle,e as title};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e=`Loops`,t=`Loop di automazione riutilizzabili — condivisi tra tutti i tuoi progetti.`,n=`Nuovo loop`,r={drafts:`Bozze`,published:`Pubblicati`,templates:`Modelli`,builtIn:`Integrati`},i={draft:`Bozza`,published:`Pubblicato`,running:`In esecuzione`},a={title:`Ancora nessun loop`,body:`Creane uno da zero o parti da un modello.`},o={edit:`Modifica`,delete:`Elimina`,publish:`Pubblica`,unpublish:`Annulla pubblicazione`,duplicate:`Duplica`,use:`Usa modello`,preview:`Anteprima`,fork:`Fork per modificare`,run:`Esegui`,export:`Esporta`,import:`Importa`,select:`Seleziona {{name}}`},s={nodes_one:`{{count}} nodo`,nodes_other:`{{count}} nodi`,usedIn:`In uso · {{project}}`},c=`Eliminare questo loop? Scomparirà da ogni selettore di rail.`,l=`Nuovo loop`,u={load:`Impossibile caricare i loop`,save:`Impossibile salvare il loop`,publishInvalid:`Questo loop non può ancora essere pubblicato — correggi i problemi evidenziati.`},d={back:`Torna ai loop`,save:`Salva`,saved:`Loop salvato`,publish:`Pubblica`,published:`Loop pubblicato`,addNode:`Aggiungi nodo`,deleteNode:`Elimina nodo`,config:{maxIterations:`Iterazioni massime`,timeout:`Timeout (min)`,maxIterationsHint:`Limite massimo di iterazioni del Loop Decider — il loop si ferma al raggiungimento anche se l'obiettivo non è soddisfatto. Evita loop infiniti.`,timeoutHint:`Limite di tempo reale per l'intera esecuzione, in minuti. Se superato, l'esecuzione viene interrotta e segnata come fallita — una rete di sicurezza insieme alle iterazioni massime.`,maxCost:`Costo max ($)`,maxCostHint:`Budget USD opzionale per l’intera esecuzione. Controllato TRA i passi (il costo di un passo si conosce solo al termine), il loop si ferma prima del passo successivo quando il totale lo supera — può sforare di un passo. Per i provider non-Claude il costo è stimato. Vuoto = nessun limite.`},nodes:{start:`Inizio`,"ai-step":`Passo IA`,shell:`Shell`,decider:`Decisore del loop`,condition:`Condizione`,end:`Fine`},inspector:{selectNode:`Seleziona un nodo per modificarlo.`,prompt:`Prompt`,provider:`Provider`,model:`Modello`,effort:`Sforzo di ragionamento`,command:`Comando`,goal:`Obiettivo / criteri di arresto`,join:`Unione`,outcome:`Esito`,startNote:`Il punto di ingresso del loop. Collegalo al primo passo.`,promptHint:`Clicca o trascina un token per inserirlo nel prompt.`,tokensSpec:`Campi della spec`,tokensJira:`Jira`,tokensCommands:`Comandi`,label:`Nome`},branch:{continue:`↻ Continua`,stop:`✓ Ferma`},edgesHelp:{label:`Come si collegano i passaggi`,body:`Le frecce definiscono l'ORDINE di esecuzione, non i dati — i box non hanno porte di input e gli archi non trasportano parametri. Ogni AI Step riprende automaticamente la propria sessione (intero contesto precedente) più un breve riepilogo dei passaggi precedenti; nulla viene collegato a mano. Il Loop Decider ha due uscite: ↻ Continua (obiettivo non raggiunto → torna al ciclo) e ✓ Ferma (obiettivo raggiunto → esci).`},arrange:{label:`Disponi`,vertical:`Verticale`,horizontal:`Orizzontale`,grid:`Griglia`,reset:`Reimposta`},constants:{label:`Costanti`,manage:`Gestisci costanti`,title:`Costanti del loop`,empty:`Ancora nessuna costante personalizzata.`,name:`NOME`,value:`valore`,add:`Aggiungi`,builtinBadge:`Integrate`},paste:{done_one:`{{count}} passo incollato`,done_other:`{{count}} passi incollati`},problems:{count_one:`{{count}} problema`,count_other:`{{count}} problemi`,NO_START:`Aggiungi un nodo di Avvio.`,MULTIPLE_START:`È consentito un solo nodo di Avvio.`,NO_END:`Aggiungi almeno un nodo di Fine.`,ORPHAN:`Questo passo non è raggiungibile dall'Avvio.`,DECIDER_BRANCHES:`Il Loop Decider richiede un ramo Continua e uno Ferma.`,EMPTY_PROMPT:`L'AI Step ha il prompt vuoto.`,EMPTY_COMMAND:`Il passo Shell ha il comando vuoto.`,EMPTY_GOAL:`Il Loop Decider non ha un obiettivo.`,DEAD_END:`Questo passo non ha connessioni in uscita.`},preview:{label:`Anteprima`,title:`Anteprima (dry-run)`,sampleNote:`I valori dello spec sono di esempio; comandi e costanti si risolvono come a runtime.`,empty:`Nessun passo da visualizzare.`,error:`Anteprima non riuscita`}},f={steps:`Passi`,limits:`max {{iterations}} iterazioni · {{timeout}} min di timeout`},p=`Integrato`,m={title:`Esegui {{name}}`,subtitle:`Avvia questo loop su un progetto (senza ticket).`,project:`Progetto`,provider:`Provider`,effort:`Sforzo di ragionamento`,execute:`Esegui`,noProjects:`Nessun progetto disponibile.`,launched:`Esecuzione di {{name}}`},h={"ship-and-green":{name:`Ship & Green`,description:`Completamente autonomo: implementa la spec, verifica e affina (corregge) in caso di fallimento — ripetendo il ciclo verifica → correggi → verifica finché tutto è verde. Nessun intervento umano.`},"verify-pass":{name:`Verify Pass`,description:`Verifica e correzione autonome: rileva ed esegue build/lint/test del progetto, poi affina in caso di fallimento — verifica → correggi → verifica finché è verde.`},"ci-watch":{name:`CI Watch`,description:`Controlla i check di CI sulla PR aperta (l'agente usa gli strumenti di CI del repository) finché ogni check non è verde.`},"lint-and-fix":{name:`Lint & Fix`,description:`L'agente rileva ed esegue il linter del progetto e corregge ogni problema, iterando finché il codice non è pulito.`},"type-safe":{name:`Type Safe`,description:`L'agente rileva ed esegue il type checker del progetto e risolve ogni errore, iterando finché non passa senza errori.`},"coverage-climb":{name:`Coverage Climb`,description:`L'agente esegue gli strumenti di copertura del progetto e aggiunge test mirati finché le soglie non vengono superate.`},"build-fix":{name:`Build Fix`,description:`L'agente rileva ed esegue il build di produzione del progetto e corregge gli errori di compilazione/bundle finché non è verde.`},"deploy-check":{name:`Deploy Check`,description:`L'agente controlla lo stato di deploy/salute (usando gli strumenti di deploy del progetto) finché il servizio non risulta integro.`},factory_implement:{name:`Implementa`,description:`Completamente autonomo: implementa la spec, verifica e affina (corregge) in caso di fallimento — ripetendo il ciclo finché tutti i test non passano.`},factory_batch:{name:`Implementa in batch`,description:`Implementa in batch tutti i ticket del rail in una sola volta, poi verifica + affina in caso di fallimento finché non è verde.`},factory_ultracode:{name:`Ultracode`,description:`Implementazione autonoma per ticket (senza pipeline), poi verifica + affina finché non è verde. Solo Claude.`}},g={title:e,subtitle:t,newLoop:n,sections:r,status:i,empty:a,actions:o,card:s,confirmDelete:c,newLoopName:l,errors:u,builder:d,preview:f,builtInBadge:p,run:m,catalog:h,import:{done_one:`{{count}} loop importato`,done_other:`{{count}} loop importati`,skipped_one:`{{count}} duplicato saltato: {{names}}`,skipped_other:`{{count}} duplicati saltati: {{names}}`,invalid:`Quel file non è un export di loop valido.`}};export{o as actions,d as builder,p as builtInBadge,s as card,h as catalog,c as confirmDelete,g as default,a as empty,u as errors,n as newLoop,l as newLoopName,f as preview,m as run,r as sections,i as status,t as subtitle,e as title};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e=`Loops`,t=`Bucles de automatización reutilizables — compartidos entre todos tus proyectos.`,n=`Nuevo loop`,r={drafts:`Borradores`,published:`Publicados`,templates:`Plantillas`,builtIn:`Integrados`},i={draft:`Borrador`,published:`Publicado`,running:`En ejecución`},a={title:`Aún no hay loops`,body:`Crea uno desde cero o empieza a partir de una plantilla.`},o={edit:`Editar`,delete:`Eliminar`,publish:`Publicar`,unpublish:`Despublicar`,duplicate:`Duplicar`,use:`Usar plantilla`,preview:`Vista previa`,fork:`Bifurcar para editar`,run:`Ejecutar`,export:`Exportar`,import:`Importar`,select:`Seleccionar {{name}}`},s={nodes_one:`{{count}} nodo`,nodes_other:`{{count}} nodos`,usedIn:`En uso · {{project}}`},c=`¿Eliminar este loop? Desaparecerá de todos los selectores de rieles.`,l=`Nuevo loop`,u={load:`No se pudieron cargar los loops`,save:`No se pudo guardar el loop`,publishInvalid:`Este loop aún no se puede publicar — corrige los problemas resaltados.`},d={back:`Volver a los loops`,save:`Guardar`,saved:`Loop guardado`,publish:`Publicar`,published:`Loop publicado`,addNode:`Añadir nodo`,deleteNode:`Eliminar nodo`,config:{maxIterations:`Iteraciones máximas`,timeout:`Tiempo límite (min)`,maxIterationsHint:`Tope de iteraciones del Loop Decider — el loop se detiene al alcanzarlo aunque no se cumpla el objetivo. Evita bucles infinitos.`,timeoutHint:`Límite de tiempo real de toda la ejecución, en minutos. Si se supera, la ejecución se detiene y se marca como fallida — una red de seguridad junto a las iteraciones máximas.`,maxCost:`Coste máx ($)`,maxCostHint:`Presupuesto opcional en USD para toda la ejecución. Se comprueba ENTRE pasos (el coste de un paso solo se sabe al terminarlo), así que el loop para antes del siguiente paso cuando el total lo supera — puede pasarse un paso. En proveedores no-Claude el coste es estimado. Vacío = sin tope.`},nodes:{start:`Inicio`,"ai-step":`Paso de IA`,shell:`Shell`,decider:`Decisor del loop`,condition:`Condición`,end:`Fin`},inspector:{selectNode:`Selecciona un nodo para editarlo.`,prompt:`Prompt`,provider:`Proveedor`,model:`Modelo`,effort:`Esfuerzo de razonamiento`,command:`Comando`,goal:`Objetivo / criterio de parada`,join:`Unión`,outcome:`Resultado`,startNote:`El punto de entrada del loop. Conéctalo al primer paso.`,promptHint:`Haz clic o arrastra un token para insertarlo en el prompt.`,tokensSpec:`Campos del spec`,tokensJira:`Jira`,tokensCommands:`Comandos`,label:`Nombre`},branch:{continue:`↻ Continuar`,stop:`✓ Detener`},edgesHelp:{label:`Cómo se conectan los pasos`,body:`Las flechas marcan el ORDEN de ejecución, no los datos: las cajas no tienen puertos de entrada y las conexiones no transportan parámetros. Cada AI Step reanuda automáticamente su sesión (con todo el contexto previo) más un resumen breve de los pasos anteriores; nada se conecta a mano. El Loop Decider tiene dos salidas: ↻ Continuar (objetivo no cumplido → volver al bucle) y ✓ Detener (objetivo cumplido → salir).`},arrange:{label:`Ordenar`,vertical:`Vertical`,horizontal:`Horizontal`,grid:`Cuadrícula`,reset:`Restablecer`},constants:{label:`Constantes`,manage:`Gestionar constantes`,title:`Constantes del loop`,empty:`Aún no hay constantes personalizadas.`,name:`NOMBRE`,value:`valor`,add:`Añadir`,builtinBadge:`Integradas`},paste:{done_one:`{{count}} paso pegado`,done_other:`{{count}} pasos pegados`},problems:{count_one:`{{count}} problema`,count_other:`{{count}} problemas`,NO_START:`Añade un nodo de Inicio.`,MULTIPLE_START:`Solo se permite un nodo de Inicio.`,NO_END:`Añade al menos un nodo de Fin.`,ORPHAN:`Este paso no es alcanzable desde Inicio.`,DECIDER_BRANCHES:`El Decisor necesita una rama Continuar y otra Detener.`,EMPTY_PROMPT:`El Paso de IA tiene el prompt vacío.`,EMPTY_COMMAND:`El paso Shell tiene el comando vacío.`,EMPTY_GOAL:`El Decisor no tiene objetivo.`,DEAD_END:`Este paso no tiene conexión de salida.`},preview:{label:`Previsualizar`,title:`Previsualización (dry-run)`,sampleNote:`Los valores del spec son de ejemplo; comandos y constantes se resuelven tal cual en ejecución.`,empty:`No hay pasos que previsualizar.`,error:`Falló la previsualización`}},f={steps:`Pasos`,limits:`máx. {{iterations}} iteraciones · {{timeout}} min de timeout`},p=`Integrado`,m={title:`Ejecutar {{name}}`,subtitle:`Lanza este loop en un proyecto (sin ticket).`,project:`Proyecto`,provider:`Proveedor`,effort:`Esfuerzo de razonamiento`,execute:`Ejecutar`,noProjects:`No hay proyectos disponibles.`,launched:`Ejecutando {{name}}`},h={"ship-and-green":{name:`Ship & Green`,description:`Totalmente autónomo: implementa la spec, verifica y refina (corrige) cuando falla, encadenando verificar → corregir → verificar hasta que todo esté en verde. Sin intervención humana.`},"verify-pass":{name:`Verificación`,description:`Verifica y corrige de forma autónoma: detecta y ejecuta el build, el lint y los tests del proyecto y luego refina cuando falla, encadenando verificar → corregir → verificar hasta que esté en verde.`},"ci-watch":{name:`Vigilar CI`,description:`Consulta los checks de CI del PR abierto (el agente usa las herramientas de CI del repositorio) hasta que todos los checks estén en verde.`},"lint-and-fix":{name:`Lint y corregir`,description:`El agente detecta y ejecuta el linter del proyecto y corrige cada incidencia, iterando hasta que el código esté limpio.`},"type-safe":{name:`Tipado seguro`,description:`El agente detecta y ejecuta el comprobador de tipos del proyecto y resuelve cada error, iterando hasta que pase sin problemas.`},"coverage-climb":{name:`Subir cobertura`,description:`El agente ejecuta las herramientas de cobertura del proyecto y añade tests específicos hasta superar los umbrales.`},"build-fix":{name:`Arreglar build`,description:`El agente detecta y ejecuta el build de producción del proyecto y corrige los errores de compilación o de empaquetado hasta que esté en verde.`},"deploy-check":{name:`Comprobar deploy`,description:`El agente consulta el estado del deploy y de salud (usando las herramientas de deploy del proyecto) hasta que el servicio se reporte saludable.`},factory_implement:{name:`Implementar`,description:`Totalmente autónomo: implementa la spec, verifica y refina (corrige) cuando falla, encadenando hasta que pasen todos los tests.`},factory_batch:{name:`Implementar en lote`,description:`Implementa de golpe todos los tickets del raíl y luego verifica y refina cuando falla hasta que esté en verde.`},factory_ultracode:{name:`Ultracode`,description:`Implementación autónoma por ticket (sin pipeline) y luego verifica y refina hasta que esté en verde. Solo con Claude.`}},g={title:e,subtitle:t,newLoop:n,sections:r,status:i,empty:a,actions:o,card:s,confirmDelete:c,newLoopName:l,errors:u,builder:d,preview:f,builtInBadge:p,run:m,catalog:h,import:{done_one:`{{count}} loop importado`,done_other:`{{count}} loops importados`,skipped_one:`Omitido {{count}} duplicado: {{names}}`,skipped_other:`Omitidos {{count}} duplicados: {{names}}`,invalid:`Ese archivo no es una exportación de loops válida.`}};export{o as actions,d as builder,p as builtInBadge,s as card,h as catalog,c as confirmDelete,g as default,a as empty,u as errors,n as newLoop,l as newLoopName,f as preview,m as run,r as sections,i as status,t as subtitle,e as title};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e=`Loops`,t=`Loops de automação reutilizáveis — partilhados entre todos os seus projetos.`,n=`Novo loop`,r={drafts:`Rascunhos`,published:`Publicados`,templates:`Modelos`,builtIn:`Integrados`},i={draft:`Rascunho`,published:`Publicado`,running:`Em execução`},a={title:`Ainda não há loops`,body:`Crie um do zero ou comece a partir de um modelo.`},o={edit:`Editar`,delete:`Eliminar`,publish:`Publicar`,unpublish:`Despublicar`,duplicate:`Duplicar`,use:`Usar modelo`,preview:`Pré-visualização`,fork:`Bifurcar para editar`,run:`Executar`,export:`Exportar`,import:`Importar`,select:`Selecionar {{name}}`},s={nodes_one:`{{count}} nó`,nodes_other:`{{count}} nós`,usedIn:`Em uso · {{project}}`},c=`Eliminar este loop? Desaparecerá de todos os seletores de rail.`,l=`Novo loop`,u={load:`Falha ao carregar os loops`,save:`Falha ao guardar o loop`,publishInvalid:`Este loop ainda não pode ser publicado — corrija os problemas assinalados.`},d={back:`Voltar aos Loops`,save:`Guardar`,saved:`Loop guardado`,publish:`Publicar`,published:`Loop publicado`,addNode:`Adicionar nó`,deleteNode:`Eliminar nó`,config:{maxIterations:`Iterações máximas`,timeout:`Tempo limite (min)`,maxIterationsHint:`Limite de iterações do Loop Decider — o loop para ao atingi-lo mesmo que o objetivo não seja cumprido. Evita loops infinitos.`,timeoutHint:`Limite de tempo real de toda a execução, em minutos. Se excedido, a execução é interrompida e marcada como falha — uma rede de segurança junto com as iterações máximas.`,maxCost:`Custo máx ($)`,maxCostHint:`Orçamento opcional em USD para toda a execução. Verificado ENTRE passos (o custo de um passo só é conhecido ao terminá-lo), o loop para antes do próximo passo quando o total ultrapassa — pode passar um passo. Em provedores não-Claude o custo é estimado. Vazio = sem limite.`},nodes:{start:`Início`,"ai-step":`Passo de IA`,shell:`Shell`,decider:`Decisor do Loop`,condition:`Condição`,end:`Fim`},inspector:{selectNode:`Selecione um nó para o editar.`,prompt:`Prompt`,provider:`Fornecedor`,model:`Modelo`,effort:`Esforço de raciocínio`,command:`Comando`,goal:`Objetivo / critérios de paragem`,join:`Junção`,outcome:`Resultado`,startNote:`O ponto de entrada do loop. Ligue-o ao primeiro passo.`,promptHint:`Clique ou arraste um token para inseri-lo no prompt.`,tokensSpec:`Campos da spec`,tokensJira:`Jira`,tokensCommands:`Comandos`,label:`Nome`},branch:{continue:`↻ Continuar`,stop:`✓ Parar`},edgesHelp:{label:`Como as etapas se conectam`,body:`As setas definem a ORDEM de execução, não os dados — as caixas não têm portas de entrada e as conexões não carregam parâmetros. Cada AI Step retoma automaticamente sua sessão (todo o contexto anterior) mais um breve resumo das etapas anteriores; nada é ligado manualmente. O Loop Decider tem duas saídas: ↻ Continuar (objetivo não atingido → volta ao loop) e ✓ Parar (objetivo atingido → sai).`},arrange:{label:`Organizar`,vertical:`Vertical`,horizontal:`Horizontal`,grid:`Grade`,reset:`Redefinir`},constants:{label:`Constantes`,manage:`Gerenciar constantes`,title:`Constantes do loop`,empty:`Ainda não há constantes personalizadas.`,name:`NOME`,value:`valor`,add:`Adicionar`,builtinBadge:`Integradas`},paste:{done_one:`{{count}} passo colado`,done_other:`{{count}} passos colados`},problems:{count_one:`{{count}} problema`,count_other:`{{count}} problemas`,NO_START:`Adicione um nó de Início.`,MULTIPLE_START:`Só é permitido um nó de Início.`,NO_END:`Adicione pelo menos um nó de Fim.`,ORPHAN:`Este passo não é acessível a partir do Início.`,DECIDER_BRANCHES:`O Loop Decider precisa de uma ramificação Continuar e uma Parar.`,EMPTY_PROMPT:`O AI Step está com o prompt vazio.`,EMPTY_COMMAND:`O passo Shell está com o comando vazio.`,EMPTY_GOAL:`O Loop Decider não tem objetivo.`,DEAD_END:`Este passo não tem conexão de saída.`},preview:{label:`Pré-visualizar`,title:`Pré-visualização (dry-run)`,sampleNote:`Os valores do spec são exemplos; comandos e constantes são resolvidos como em execução.`,empty:`Nenhum passo para pré-visualizar.`,error:`Falha na pré-visualização`}},f={steps:`Passos`,limits:`máx. {{iterations}} iterações · {{timeout}} min de timeout`},p=`Integrado`,m={title:`Executar {{name}}`,subtitle:`Inicia este loop num projeto (sem ticket).`,project:`Projeto`,provider:`Provedor`,effort:`Esforço de raciocínio`,execute:`Executar`,noProjects:`Sem projetos disponíveis.`,launched:`Executando {{name}}`},h={"ship-and-green":{name:`Ship & Green`,description:`Totalmente autônomo: implementa a spec, verifica e refina (corrige) em caso de falha — repetindo verificar → corrigir → verificar até tudo ficar verde. Sem intervenção humana.`},"verify-pass":{name:`Verificação`,description:`Verificação e correção autônomas: detecta e executa o build/lint/testes do projeto e, em caso de falha, refina — verificar → corrigir → verificar até ficar verde.`},"ci-watch":{name:`Monitorar CI`,description:`Consulta as verificações de CI no PR aberto (o agente usa as ferramentas de CI do repositório) até que todas fiquem verdes.`},"lint-and-fix":{name:`Lint & Corrigir`,description:`O agente detecta e executa o lint do projeto e corrige cada problema, iterando até o código ficar limpo.`},"type-safe":{name:`Tipos Seguros`,description:`O agente detecta e executa o verificador de tipos do projeto e resolve cada erro, iterando até passar sem problemas.`},"coverage-climb":{name:`Subir Cobertura`,description:`O agente executa a ferramenta de cobertura do projeto e adiciona testes focados até atingir os limites exigidos.`},"build-fix":{name:`Corrigir Build`,description:`O agente detecta e executa o build de produção do projeto e corrige erros de compilação/empacotamento até ficar verde.`},"deploy-check":{name:`Checar Deploy`,description:`O agente consulta o status de deploy/saúde (usando as ferramentas de deploy do projeto) até o serviço reportar que está saudável.`},factory_implement:{name:`Implementar`,description:`Totalmente autônomo: implementa a spec, verifica e refina (corrige) em caso de falha — repetindo até todos os testes passarem.`},factory_batch:{name:`Implementar em Lote`,description:`Implementa de uma vez todos os tickets do trilho e, em seguida, verifica + refina em caso de falha até ficar verde.`},factory_ultracode:{name:`Ultracode`,description:`Implementação autônoma por ticket (sem pipeline) e, em seguida, verifica + refina até ficar verde. Apenas Claude.`}},g={title:e,subtitle:t,newLoop:n,sections:r,status:i,empty:a,actions:o,card:s,confirmDelete:c,newLoopName:l,errors:u,builder:d,preview:f,builtInBadge:p,run:m,catalog:h,import:{done_one:`{{count}} loop importado`,done_other:`{{count}} loops importados`,skipped_one:`{{count}} duplicado ignorado: {{names}}`,skipped_other:`{{count}} duplicados ignorados: {{names}}`,invalid:`Esse arquivo não é uma exportação de loops válida.`}};export{o as actions,d as builder,p as builtInBadge,s as card,h as catalog,c as confirmDelete,g as default,a as empty,u as errors,n as newLoop,l as newLoopName,f as preview,m as run,r as sections,i as status,t as subtitle,e as title};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e=`Loops`,t=`Boucles d'automatisation réutilisables — partagées entre tous vos projets.`,n=`Nouvelle boucle`,r={drafts:`Brouillons`,published:`Publiées`,templates:`Modèles`,builtIn:`Intégrés`},i={draft:`Brouillon`,published:`Publiée`,running:`En cours`},a={title:`Aucune boucle pour l'instant`,body:`Créez-en une de zéro ou partez d'un modèle.`},o={edit:`Modifier`,delete:`Supprimer`,publish:`Publier`,unpublish:`Dépublier`,duplicate:`Dupliquer`,use:`Utiliser le modèle`,preview:`Aperçu`,fork:`Dupliquer pour éditer`,run:`Exécuter`,export:`Exporter`,import:`Importer`,select:`Sélectionner {{name}}`},s={nodes_one:`{{count}} nœud`,nodes_other:`{{count}} nœuds`,usedIn:`En cours d'utilisation · {{project}}`},c=`Supprimer cette boucle ? Elle disparaîtra de tous les sélecteurs de rail.`,l=`Nouvelle boucle`,u={load:`Échec du chargement des boucles`,save:`Échec de l'enregistrement de la boucle`,publishInvalid:`Cette boucle ne peut pas encore être publiée — corrigez les problèmes signalés.`},d={back:`Retour aux boucles`,save:`Enregistrer`,saved:`Boucle enregistrée`,publish:`Publier`,published:`Boucle publiée`,addNode:`Ajouter un nœud`,deleteNode:`Supprimer le nœud`,config:{maxIterations:`Itérations max`,timeout:`Délai (min)`,maxIterationsHint:`Plafond d'itérations du Loop Decider — la boucle s'arrête une fois atteint, même si l'objectif n'est pas rempli. Évite les boucles infinies.`,timeoutHint:`Limite de temps réel pour toute l'exécution, en minutes. Si dépassée, l'exécution est arrêtée et marquée échouée — un filet de sécurité avec le nombre max d'itérations.`,maxCost:`Coût max ($)`,maxCostHint:`Budget USD optionnel pour toute l’exécution. Vérifié ENTRE les étapes (le coût d’une étape n’est connu qu’à sa fin), la boucle s’arrête avant l’étape suivante une fois le total dépassé — peut dépasser d’une étape. Pour les fournisseurs non-Claude, le coût est estimé. Vide = aucune limite.`},nodes:{start:`Début`,"ai-step":`Étape IA`,shell:`Shell`,decider:`Décideur de boucle`,condition:`Condition`,end:`Fin`},inspector:{selectNode:`Sélectionnez un nœud pour le modifier.`,prompt:`Invite`,provider:`Fournisseur`,model:`Modèle`,effort:`Effort de raisonnement`,command:`Commande`,goal:`Objectif / critères d'arrêt`,join:`Jointure`,outcome:`Résultat`,startNote:`Le point d'entrée de la boucle. Connectez-le à la première étape.`,promptHint:`Cliquez ou glissez un jeton pour l'insérer dans le prompt.`,tokensSpec:`Champs du spec`,tokensJira:`Jira`,tokensCommands:`Commandes`,label:`Nom`},branch:{continue:`↻ Continuer`,stop:`✓ Arrêter`},edgesHelp:{label:`Comment les étapes se connectent`,body:`Les flèches définissent l'ORDRE d'exécution, pas les données — les boîtes n'ont pas de ports d'entrée et les arêtes ne transportent aucun paramètre. Chaque AI Step reprend automatiquement sa session (tout le contexte précédent) plus un bref résumé des étapes antérieures ; rien n'est câblé à la main. Le Loop Decider a deux sorties : ↻ Continuer (objectif non atteint → retour en boucle) et ✓ Arrêter (objectif atteint → sortie).`},arrange:{label:`Disposer`,vertical:`Vertical`,horizontal:`Horizontal`,grid:`Grille`,reset:`Réinitialiser`},constants:{label:`Constantes`,manage:`Gérer les constantes`,title:`Constantes du loop`,empty:`Aucune constante personnalisée.`,name:`NOM`,value:`valeur`,add:`Ajouter`,builtinBadge:`Intégrées`},paste:{done_one:`{{count}} étape collée`,done_other:`{{count}} étapes collées`},problems:{count_one:`{{count}} problème`,count_other:`{{count}} problèmes`,NO_START:`Ajoutez un nœud de départ.`,MULTIPLE_START:`Un seul nœud de départ est autorisé.`,NO_END:`Ajoutez au moins un nœud de fin.`,ORPHAN:`Cette étape n'est pas accessible depuis le départ.`,DECIDER_BRANCHES:`Le Loop Decider a besoin d'une branche Continuer et d'une branche Arrêter.`,EMPTY_PROMPT:`L'AI Step a un prompt vide.`,EMPTY_COMMAND:`L'étape Shell a une commande vide.`,EMPTY_GOAL:`Le Loop Decider n'a pas d'objectif.`,DEAD_END:`Cette étape n'a aucune connexion sortante.`},preview:{label:`Aperçu`,title:`Aperçu (dry-run)`,sampleNote:`Les valeurs du spec sont des exemples ; commandes et constantes sont résolues telles qu'à l'exécution.`,empty:`Aucune étape à prévisualiser.`,error:`Échec de l'aperçu`}},f={steps:`Étapes`,limits:`{{iterations}} itérations max · {{timeout}} min de délai`},p=`Intégré`,m={title:`Exécuter {{name}}`,subtitle:`Lance ce loop sur un projet (sans ticket).`,project:`Projet`,provider:`Fournisseur`,effort:`Effort de raisonnement`,execute:`Exécuter`,noProjects:`Aucun projet disponible.`,launched:`Exécution de {{name}}`},h={"ship-and-green":{name:`Ship & Green`,description:`Totalement autonome : implémente le spec, vérifie, puis corrige en cas d'échec — en bouclant vérifier → corriger → vérifier jusqu'à ce que tout soit au vert. Aucune intervention humaine.`},"verify-pass":{name:`Passe de vérification`,description:`Vérification et correction autonomes : détecte et lance le build/lint/tests du projet, puis corrige en cas d'échec — vérifier → corriger → vérifier jusqu'au vert.`},"ci-watch":{name:`Surveillance CI`,description:`Interroge les contrôles CI sur la PR ouverte (l'agent utilise l'outillage CI du dépôt) jusqu'à ce que chaque contrôle soit au vert.`},"lint-and-fix":{name:`Lint & correction`,description:`L'agent détecte et lance le linter du projet et corrige chaque problème, en itérant jusqu'à ce que le code soit propre.`},"type-safe":{name:`Types sûrs`,description:`L'agent détecte et lance le vérificateur de types du projet et résout chaque erreur, en itérant jusqu'à ce qu'il passe sans accroc.`},"coverage-climb":{name:`Montée de couverture`,description:`L'agent lance l'outillage de couverture du projet et ajoute des tests ciblés jusqu'à ce que les seuils soient atteints.`},"build-fix":{name:`Correction de build`,description:`L'agent détecte et lance le build de production du projet et corrige les erreurs de compilation/bundle jusqu'à ce qu'il soit au vert.`},"deploy-check":{name:`Contrôle de deploy`,description:`L'agent interroge l'état de deploy/santé (à l'aide de l'outillage de deploy du projet) jusqu'à ce que le service se déclare en bonne santé.`},factory_implement:{name:`Implémenter`,description:`Totalement autonome : implémente le spec, vérifie, puis corrige en cas d'échec — en bouclant jusqu'à ce que tous les tests passent.`},factory_batch:{name:`Implémentation par lots`,description:`Implémente d'un coup tous les tickets du rail, puis vérifie et corrige en cas d'échec jusqu'au vert.`},factory_ultracode:{name:`Ultracode`,description:`Implémentation autonome par ticket (sans pipeline), puis vérification et correction jusqu'au vert. Claude uniquement.`}},g={title:e,subtitle:t,newLoop:n,sections:r,status:i,empty:a,actions:o,card:s,confirmDelete:c,newLoopName:l,errors:u,builder:d,preview:f,builtInBadge:p,run:m,catalog:h,import:{done_one:`{{count}} loop importé`,done_other:`{{count}} loops importés`,skipped_one:`{{count}} doublon ignoré : {{names}}`,skipped_other:`{{count}} doublons ignorés : {{names}}`,invalid:`Ce fichier n'est pas un export de loops valide.`}};export{o as actions,d as builder,p as builtInBadge,s as card,h as catalog,c as confirmDelete,g as default,a as empty,u as errors,n as newLoop,l as newLoopName,f as preview,m as run,r as sections,i as status,t as subtitle,e as title};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e=`Loops`,t=`可复用的自动化循环——在你所有项目间共享。`,n=`新建循环`,r={drafts:`草稿`,published:`已发布`,templates:`模板`,builtIn:`内置`},i={draft:`草稿`,published:`已发布`,running:`运行中`},a={title:`暂无循环`,body:`从零创建一个,或从模板开始。`},o={edit:`编辑`,delete:`删除`,publish:`发布`,unpublish:`取消发布`,duplicate:`复制`,use:`使用模板`,preview:`预览`,fork:`复刻以编辑`,run:`运行`,export:`导出`,import:`导入`,select:`选择 {{name}}`},s={nodes_one:`{{count}} 个节点`,nodes_other:`{{count}} 个节点`,usedIn:`使用中 · {{project}}`},c=`删除此循环?它将从所有 rail 选择器中消失。`,l=`新建循环`,u={load:`加载循环失败`,save:`保存循环失败`,publishInvalid:`此循环暂时无法发布——请修复高亮显示的问题。`},d={back:`返回循环列表`,save:`保存`,saved:`循环已保存`,publish:`发布`,published:`循环已发布`,addNode:`添加节点`,deleteNode:`删除节点`,config:{maxIterations:`最大迭代次数`,timeout:`超时(分钟)`,maxIterationsHint:`Loop Decider 迭代次数上限——达到后即使目标未达成也会停止循环。防止无限循环。`,timeoutHint:`整个运行的实际时间上限(分钟)。超过后运行将停止并标记为失败——与最大迭代次数一起作为安全网。`,maxCost:`最大费用 ($)`,maxCostHint:`整个运行的可选美元预算。在步骤之间检查(每步费用只有在该步结束后才知道),因此当总额超过时循环会在下一步之前停止——可能超出一步。非 Claude 提供方的费用为估算。留空 = 不限制。`},nodes:{start:`开始`,"ai-step":`AI 步骤`,shell:`Shell`,decider:`循环决策器`,condition:`条件`,end:`结束`},inspector:{selectNode:`选择一个节点进行编辑。`,prompt:`提示词`,provider:`提供方`,model:`模型`,effort:`推理强度`,command:`命令`,goal:`目标 / 停止条件`,join:`合并`,outcome:`结果`,startNote:`循环的入口点。将其连接到第一个步骤。`,promptHint:`点击或拖动令牌将其插入提示词。`,tokensSpec:`Spec 字段`,tokensJira:`Jira`,tokensCommands:`命令`,label:`名称`},branch:{continue:`↻ 继续`,stop:`✓ 停止`},edgesHelp:{label:`步骤如何连接`,body:`箭头设定的是运行顺序,而非数据——节点没有输入端口,连线也不携带任何参数。每个 AI Step 都会自动恢复其会话(完整的先前上下文),并附带前序步骤的简短摘要;无需手动连线。Loop Decider 有两个输出:↻ 继续(目标未达成 → 循环返回)和 ✓ 停止(目标达成 → 退出)。`},arrange:{label:`排列`,vertical:`垂直`,horizontal:`水平`,grid:`网格`,reset:`重置`},constants:{label:`常量`,manage:`管理常量`,title:`循环常量`,empty:`还没有自定义常量。`,name:`名称`,value:`值`,add:`添加`,builtinBadge:`内置`},paste:{done_one:`已粘贴 {{count}} 个步骤`,done_other:`已粘贴 {{count}} 个步骤`},problems:{count_one:`{{count}} 个问题`,count_other:`{{count}} 个问题`,NO_START:`添加一个开始节点。`,MULTIPLE_START:`只允许一个开始节点。`,NO_END:`至少添加一个结束节点。`,ORPHAN:`该步骤无法从开始到达。`,DECIDER_BRANCHES:`Loop Decider 需要一个继续分支和一个停止分支。`,EMPTY_PROMPT:`AI 步骤的提示词为空。`,EMPTY_COMMAND:`Shell 步骤的命令为空。`,EMPTY_GOAL:`Loop Decider 没有目标。`,DEAD_END:`该步骤没有出向连接。`},preview:{label:`预览`,title:`试运行预览`,sampleNote:`Spec 值为示例数据;命令和常量按运行时的实际值解析。`,empty:`没有可预览的步骤。`,error:`预览失败`}},f={steps:`步骤`,limits:`最多 {{iterations}} 次迭代 · {{timeout}} 分钟超时`},p=`内置`,m={title:`运行 {{name}}`,subtitle:`在某个项目上启动此循环(无需工单)。`,project:`项目`,provider:`提供方`,effort:`推理强度`,execute:`执行`,noProjects:`没有可用的项目。`,launched:`正在运行 {{name}}`},h={"ship-and-green":{name:`交付并通过`,description:`全自动:实现 spec、验证,失败时自动修正(fix)——循环执行 验证 → 修复 → 验证,直到全部通过。无需人工干预。`},"verify-pass":{name:`验证通过`,description:`自动验证并修复:检测并运行项目的 build/lint/测试,失败时自动修正——验证 → 修复 → 验证,直到全部通过。`},"ci-watch":{name:`CI 监视`,description:`轮询当前已打开 PR 的 CI 检查(由 agent 使用仓库的 CI 工具),直到每一项检查都通过。`},"lint-and-fix":{name:`Lint 修复`,description:`agent 检测并运行项目的 linter,修复每一个问题,持续迭代直到代码库干净无误。`},"type-safe":{name:`类型安全`,description:`agent 检测并运行项目的类型检查器,解决每一个错误,持续迭代直到顺利通过。`},"coverage-climb":{name:`覆盖率提升`,description:`agent 运行项目的覆盖率工具并补充针对性测试,直到达到阈值。`},"build-fix":{name:`构建修复`,description:`agent 检测并运行项目的生产 build,修复编译/打包错误,直到顺利通过。`},"deploy-check":{name:`部署检查`,description:`agent 轮询部署/健康状态(使用项目的 deploy 工具),直到服务报告健康。`},factory_implement:{name:`实现`,description:`全自动:实现 spec、验证,失败时自动修正(fix)——循环直到所有测试通过。`},factory_batch:{name:`批量实现`,description:`一次性批量实现该 rail 的全部工单,然后验证 + 失败时修正,直到全部通过。`},factory_ultracode:{name:`Ultracode`,description:`按工单自动实现(无流水线),然后验证 + 修正,直到全部通过。仅支持 Claude。`}},g={title:e,subtitle:t,newLoop:n,sections:r,status:i,empty:a,actions:o,card:s,confirmDelete:c,newLoopName:l,errors:u,builder:d,preview:f,builtInBadge:p,run:m,catalog:h,import:{done_one:`已导入 {{count}} 个循环`,done_other:`已导入 {{count}} 个循环`,skipped_one:`已跳过 {{count}} 个重复项:{{names}}`,skipped_other:`已跳过 {{count}} 个重复项:{{names}}`,invalid:`该文件不是有效的循环导出。`}};export{o as actions,d as builder,p as builtInBadge,s as card,h as catalog,c as confirmDelete,g as default,a as empty,u as errors,n as newLoop,l as newLoopName,f as preview,m as run,r as sections,i as status,t as subtitle,e as title};
|