@popcraft/cli 0.42.1 → 0.42.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/popcraft.mjs +761 -117
  2. package/package.json +2 -2
package/dist/popcraft.mjs CHANGED
@@ -1196,7 +1196,7 @@ function operations(spec = openapi) {
1196
1196
  }
1197
1197
  async function call(target2, method, path, opts = {}) {
1198
1198
  const qs = new URLSearchParams(opts.query ?? {}).toString();
1199
- const headers = { "user-agent": `popcraft-cli/${"0.42.1"}`, ...opts.headers };
1199
+ const headers = { "user-agent": `popcraft-cli/${"0.42.2"}`, ...opts.headers };
1200
1200
  if (target2.token) headers.authorization = `Bearer ${target2.token}`;
1201
1201
  if (opts.contentType) headers["content-type"] = opts.contentType;
1202
1202
  try {
@@ -8633,6 +8633,7 @@ var init_headless = __esm({
8633
8633
  SIGNIN_DOMAINS = /* @__PURE__ */ new Set(["file", "collab", "library", "version", "plan", "photo", "media", "integration"]);
8634
8634
  APP_ONLY = /* @__PURE__ */ new Set([
8635
8635
  "ai.open",
8636
+ "agent.continue",
8636
8637
  "panel.open",
8637
8638
  "panel.toggle",
8638
8639
  "dialog.open",
@@ -32082,11 +32083,14 @@ var init_en2 = __esm({
32082
32083
  "agentPanel.atTheStartOfA": "at the start of a message to pick a skill.",
32083
32084
  "agentPanel.changeTheAgentModel": "Change the agent model",
32084
32085
  "agentPanel.chats": "Chats",
32086
+ "agentPanel.continue": "Continue",
32087
+ "agentPanel.continueHint": "Pick the turn up where it stopped",
32085
32088
  "agentPanel.createAndEditSkillsAnd": "Create and edit skills and agent profiles",
32086
32089
  "agentPanel.deleteChat": "Delete chat",
32087
32090
  "agentPanel.manage": "Manage",
32088
32091
  "agentPanel.messageCount": "{count, plural, one {# message} other {# messages}}",
32089
32092
  "agentPanel.newChat": "New chat",
32093
+ "agentPanel.resuming": "Resuming\u2026",
32090
32094
  "agentPanel.sendEnter": "Send (Enter)",
32091
32095
  "agentPanel.skill": "Skill: {name}",
32092
32096
  "agentPanel.skills": "Skills",
@@ -34420,6 +34424,10 @@ var init_en2 = __esm({
34420
34424
  "mentionInput.someone": "Someone",
34421
34425
  "mentionMenu.removeMention": "Remove mention",
34422
34426
  "messageParts.fromPlugin": "From the {plugin} plugin",
34427
+ "messageParts.noticeNoChange": "The agent finished without changing the document",
34428
+ "messageParts.noticeNudge": "Nothing has changed yet \u2014 asked the agent to make the change ({count} of {max})",
34429
+ "messageParts.noticeReadBudget": "Enough reading \u2014 asked the agent to start making the change",
34430
+ "messageParts.noticeResumed": "Resumed where it left off",
34423
34431
  "messageParts.plan": "Plan",
34424
34432
  "messageParts.pluginTool": "{plugin} \xB7 {tool}",
34425
34433
  "messageParts.renderedView": "Rendered view",
@@ -35016,6 +35024,7 @@ var init_en2 = __esm({
35016
35024
  "planBadge.freePlan": "Free plan",
35017
35025
  "planDialog.aICredits": "AI credits",
35018
35026
  "planDialog.aICreditsLeft": "AI credits left",
35027
+ "planDialog.appleIdTeamSlotTaken": "An Apple Account can hold one personal and one team subscription in PopCraft. The team subscription on this Apple Account is already on another team.",
35019
35028
  "planDialog.billedToTheTeamSelected": "Once your plan's AI credits are used up, AI is pay as you go, billed by usage.",
35020
35029
  "planDialog.billedYearly": "{price} billed yearly",
35021
35030
  "planDialog.billing": "Billing period",
@@ -37081,6 +37090,11 @@ var require_es = __commonJS({
37081
37090
  "audioMeter.thisTimelineHasNoSound": "Esta l\xEDnea de tiempo a\xFAn no tiene sonido: a\xF1ade audio en sus pistas para impulsarlo.",
37082
37091
  "backgroundTasks.backgroundTasks": "Tareas en segundo plano{value}",
37083
37092
  "backgroundTasks.cancelThisBackgroundTask": "Cancelar esta tarea en segundo plano",
37093
+ "backgroundTasks.hideSteps": "Ocultar sus pasos",
37094
+ "backgroundTasks.noStepsYet": "A\xFAn no hay pasos.",
37095
+ "backgroundTasks.queued": "En cola",
37096
+ "backgroundTasks.showSteps": "Mostrar sus pasos",
37097
+ "backgroundTasks.stepRunning": "Ejecut\xE1ndose\u2026",
37084
37098
  "bezierEditor.asCSS": "Como CSS",
37085
37099
  "bezierEditor.copyThisCurve": "Copiar esta curva",
37086
37100
  "bezierEditor.curve": "Curva",
@@ -39192,7 +39206,9 @@ var require_es = __commonJS({
39192
39206
  "mentionInput.addReaction": "A\xF1adir reacci\xF3n",
39193
39207
  "mentionInput.someone": "Alguien",
39194
39208
  "mentionMenu.removeMention": "Eliminar menci\xF3n",
39209
+ "messageParts.fromPlugin": "Del plugin {plugin}",
39195
39210
  "messageParts.plan": "Plan",
39211
+ "messageParts.pluginTool": "{plugin} \xB7 {tool}",
39196
39212
  "messageParts.renderedView": "Vista renderizada",
39197
39213
  "messageParts.thinking": "Pensando",
39198
39214
  "minimap.minimapTapOrDragTo": "Minimapa \u2014 toca o arrastra para mover la vista, doble toque para ajustar la p\xE1gina",
@@ -39787,6 +39803,7 @@ var require_es = __commonJS({
39787
39803
  "planBadge.freePlan": "Plan gratuito",
39788
39804
  "planDialog.aICredits": "Cr\xE9ditos de IA",
39789
39805
  "planDialog.aICreditsLeft": "Cr\xE9ditos de IA restantes",
39806
+ "planDialog.appleIdTeamSlotTaken": "Una cuenta de Apple puede tener una suscripci\xF3n personal y una de equipo en PopCraft. La suscripci\xF3n de equipo de esta cuenta de Apple ya est\xE1 en otro equipo.",
39790
39807
  "planDialog.billedToTheTeamSelected": "Una vez que se agoten los cr\xE9ditos de IA de tu plan, la IA se facturar\xE1 por uso.",
39791
39808
  "planDialog.billedYearly": "{price} facturado anualmente",
39792
39809
  "planDialog.billing": "Per\xEDodo de facturaci\xF3n",
@@ -39867,6 +39884,8 @@ var require_es = __commonJS({
39867
39884
  "pluginImport.noImporterIsInstalledFor": "No hay ning\xFAn importador instalado para \u201C{name}\u201D",
39868
39885
  "pluginImport.openAFileToImport": "Abrir un archivo para importar en",
39869
39886
  "pluginImport.producedNoLayers": "\u201C{name}\u201D no produjo capas",
39887
+ "pluginOverlays.addAgentTools": "Dar al agente de IA {count, plural, one {# herramienta} other {# herramientas}} que ejecutan este plugin",
39888
+ "pluginOverlays.addsAgentTools": "A\xF1ade {count, plural, one {# herramienta de agente} other {# herramientas de agente}}",
39870
39889
  "pluginOverlays.addsExport": "A\xF1ade Archivo \u203A Exportar \u203A {label}",
39871
39890
  "pluginOverlays.allowAndRun": "Permitir y ejecutar",
39872
39891
  "pluginOverlays.allowTo": "Permitir a \u201C{name}\u201D:",
@@ -41850,6 +41869,11 @@ var require_fr = __commonJS({
41850
41869
  "audioMeter.thisTimelineHasNoSound": "Cette timeline n\u2019a pas encore de son : ajoutez de l\u2019audio sur ses pistes pour l\u2019activer.",
41851
41870
  "backgroundTasks.backgroundTasks": "T\xE2ches en arri\xE8re-plan{value}",
41852
41871
  "backgroundTasks.cancelThisBackgroundTask": "Annuler cette t\xE2che en arri\xE8re-plan",
41872
+ "backgroundTasks.hideSteps": "Masquer ses \xE9tapes",
41873
+ "backgroundTasks.noStepsYet": "Aucune \xE9tape pour l\u2019instant.",
41874
+ "backgroundTasks.queued": "En attente",
41875
+ "backgroundTasks.showSteps": "Afficher ses \xE9tapes",
41876
+ "backgroundTasks.stepRunning": "Ex\xE9cution en cours\u2026",
41853
41877
  "bezierEditor.asCSS": "En CSS",
41854
41878
  "bezierEditor.copyThisCurve": "Copier cette courbe",
41855
41879
  "bezierEditor.curve": "Courbe",
@@ -43961,7 +43985,9 @@ var require_fr = __commonJS({
43961
43985
  "mentionInput.addReaction": "Ajouter une r\xE9action",
43962
43986
  "mentionInput.someone": "Quelqu\u2019un",
43963
43987
  "mentionMenu.removeMention": "Supprimer la mention",
43988
+ "messageParts.fromPlugin": "Du plug-in {plugin}",
43964
43989
  "messageParts.plan": "Plan",
43990
+ "messageParts.pluginTool": "{plugin} \xB7 {tool}",
43965
43991
  "messageParts.renderedView": "Vue rendue",
43966
43992
  "messageParts.thinking": "R\xE9flexion",
43967
43993
  "minimap.minimapTapOrDragTo": "Minicarte \u2014 touchez ou faites glisser pour d\xE9placer la vue, double-touchez pour ajuster \xE0 la page",
@@ -44556,6 +44582,7 @@ var require_fr = __commonJS({
44556
44582
  "planBadge.freePlan": "Forfait gratuit",
44557
44583
  "planDialog.aICredits": "Cr\xE9dits IA",
44558
44584
  "planDialog.aICreditsLeft": "Cr\xE9dits IA restants",
44585
+ "planDialog.appleIdTeamSlotTaken": "Un compte Apple peut contenir un abonnement personnel et un abonnement d\u2019\xE9quipe dans PopCraft. L\u2019abonnement d\u2019\xE9quipe de ce compte Apple est d\xE9j\xE0 utilis\xE9 par une autre \xE9quipe.",
44559
44586
  "planDialog.billedToTheTeamSelected": "Une fois les cr\xE9dits IA de votre forfait \xE9puis\xE9s, l\u2019IA est factur\xE9e \xE0 l\u2019utilisation.",
44560
44587
  "planDialog.billedYearly": "{price} factur\xE9 annuellement",
44561
44588
  "planDialog.billing": "P\xE9riode de facturation",
@@ -44636,6 +44663,8 @@ var require_fr = __commonJS({
44636
44663
  "pluginImport.noImporterIsInstalledFor": "Aucun importateur n\u2019est install\xE9 pour \xAB {name} \xBB",
44637
44664
  "pluginImport.openAFileToImport": "Ouvrir un fichier \xE0 importer dans",
44638
44665
  "pluginImport.producedNoLayers": "\xAB {name} \xBB n\u2019a produit aucune couche",
44666
+ "pluginOverlays.addAgentTools": "Donner \xE0 l\u2019agent IA {count, plural, one {# outil} other {# outils}} qui ex\xE9cutent ce plug-in",
44667
+ "pluginOverlays.addsAgentTools": "Ajoute {count, plural, one {# outil d\u2019agent} other {# outils d\u2019agent}}",
44639
44668
  "pluginOverlays.addsExport": "Ajoute Fichier \u203A Exporter \u203A {label}",
44640
44669
  "pluginOverlays.allowAndRun": "Autoriser et ex\xE9cuter",
44641
44670
  "pluginOverlays.allowTo": "Autoriser \xAB {name} \xBB \xE0 :",
@@ -46619,6 +46648,11 @@ var require_de = __commonJS({
46619
46648
  "audioMeter.thisTimelineHasNoSound": "Diese Zeitleiste hat noch keinen Ton: F\xFCge Audio auf ihren Spuren hinzu, um dies zu steuern.",
46620
46649
  "backgroundTasks.backgroundTasks": "Hintergrundaufgaben{value}",
46621
46650
  "backgroundTasks.cancelThisBackgroundTask": "Diese Hintergrundaufgabe abbrechen",
46651
+ "backgroundTasks.hideSteps": "Schritte ausblenden",
46652
+ "backgroundTasks.noStepsYet": "Noch keine Schritte.",
46653
+ "backgroundTasks.queued": "In Warteschlange",
46654
+ "backgroundTasks.showSteps": "Schritte anzeigen",
46655
+ "backgroundTasks.stepRunning": "Wird ausgef\xFChrt\u2026",
46622
46656
  "bezierEditor.asCSS": "Als CSS",
46623
46657
  "bezierEditor.copyThisCurve": "Diese Kurve kopieren",
46624
46658
  "bezierEditor.curve": "Kurve",
@@ -48730,7 +48764,9 @@ var require_de = __commonJS({
48730
48764
  "mentionInput.addReaction": "Reaktion hinzuf\xFCgen",
48731
48765
  "mentionInput.someone": "Jemand",
48732
48766
  "mentionMenu.removeMention": "Erw\xE4hnung entfernen",
48767
+ "messageParts.fromPlugin": "Vom {plugin}-Plugin",
48733
48768
  "messageParts.plan": "Plan",
48769
+ "messageParts.pluginTool": "{plugin} \xB7 {tool}",
48734
48770
  "messageParts.renderedView": "Gerenderte Ansicht",
48735
48771
  "messageParts.thinking": "Denke nach",
48736
48772
  "minimap.minimapTapOrDragTo": "Minikarte \u2014 tippe oder ziehe, um die Ansicht zu verschieben, doppeltippe, um die Seite anzupassen",
@@ -49325,6 +49361,7 @@ var require_de = __commonJS({
49325
49361
  "planBadge.freePlan": "Kostenloser Plan",
49326
49362
  "planDialog.aICredits": "KI-Guthaben",
49327
49363
  "planDialog.aICreditsLeft": "Verbleibendes KI-Guthaben",
49364
+ "planDialog.appleIdTeamSlotTaken": "Ein Apple-Konto kann in PopCraft ein pers\xF6nliches und ein Team-Abonnement enthalten. Das Team-Abonnement auf diesem Apple-Konto geh\xF6rt bereits zu einem anderen Team.",
49328
49365
  "planDialog.billedToTheTeamSelected": "Sobald die AI-Guthaben deines Plans aufgebraucht sind, wird AI nach dem Pay-as-you-go-Prinzip basierend auf der Nutzung abgerechnet.",
49329
49366
  "planDialog.billedYearly": "{price} j\xE4hrlich abgerechnet",
49330
49367
  "planDialog.billing": "Abrechnungszeitraum",
@@ -49405,6 +49442,8 @@ var require_de = __commonJS({
49405
49442
  "pluginImport.noImporterIsInstalledFor": "F\xFCr \u201E{name}\u201C ist kein Importeur installiert.",
49406
49443
  "pluginImport.openAFileToImport": "\xD6ffne eine Datei zum Importieren.",
49407
49444
  "pluginImport.producedNoLayers": "\u201E{name}\u201C hat keine Ebenen erzeugt.",
49445
+ "pluginOverlays.addAgentTools": "Gib dem KI-Agenten {count, plural, one {# Werkzeug} other {# Werkzeuge}}, die dieses Plugin ausf\xFChren",
49446
+ "pluginOverlays.addsAgentTools": "F\xFCgt {count, plural, one {# Agenten-Werkzeug} other {# Agenten-Werkzeuge}} hinzu",
49408
49447
  "pluginOverlays.addsExport": "F\xFCgt Datei \u203A Exportieren \u203A {label} hinzu",
49409
49448
  "pluginOverlays.allowAndRun": "Zulassen und ausf\xFChren",
49410
49449
  "pluginOverlays.allowTo": "\u201E{name}\u201C erlauben, zu:",
@@ -51388,6 +51427,11 @@ var require_it = __commonJS({
51388
51427
  "audioMeter.thisTimelineHasNoSound": "Questa timeline non ha ancora audio: aggiungi audio sulle sue tracce per attivarla.",
51389
51428
  "backgroundTasks.backgroundTasks": "Operazioni in background{value}",
51390
51429
  "backgroundTasks.cancelThisBackgroundTask": "Annulla questa operazione in background",
51430
+ "backgroundTasks.hideSteps": "Nascondi i passaggi",
51431
+ "backgroundTasks.noStepsYet": "Nessun passaggio.",
51432
+ "backgroundTasks.queued": "In coda",
51433
+ "backgroundTasks.showSteps": "Mostra i passaggi",
51434
+ "backgroundTasks.stepRunning": "In esecuzione\u2026",
51391
51435
  "bezierEditor.asCSS": "Come CSS",
51392
51436
  "bezierEditor.copyThisCurve": "Copia questa curva",
51393
51437
  "bezierEditor.curve": "Curva",
@@ -53499,7 +53543,9 @@ var require_it = __commonJS({
53499
53543
  "mentionInput.addReaction": "Aggiungi reazione",
53500
53544
  "mentionInput.someone": "Qualcuno",
53501
53545
  "mentionMenu.removeMention": "Rimuovi menzione",
53546
+ "messageParts.fromPlugin": "Dal plugin {plugin}",
53502
53547
  "messageParts.plan": "Piano",
53548
+ "messageParts.pluginTool": "{plugin} \xB7 {tool}",
53503
53549
  "messageParts.renderedView": "Vista renderizzata",
53504
53550
  "messageParts.thinking": "Elaborazione\u2026",
53505
53551
  "minimap.minimapTapOrDragTo": "Minimappa \u2014 tocca o trascina per spostare la vista, tocca due volte per adattare la pagina",
@@ -54094,6 +54140,7 @@ var require_it = __commonJS({
54094
54140
  "planBadge.freePlan": "Piano gratuito",
54095
54141
  "planDialog.aICredits": "Crediti AI",
54096
54142
  "planDialog.aICreditsLeft": "Crediti AI rimanenti",
54143
+ "planDialog.appleIdTeamSlotTaken": "Un account Apple pu\xF2 contenere un abbonamento personale e uno di team in PopCraft. L\u2019abbonamento di team su questo account Apple \xE8 gi\xE0 associato a un altro team.",
54097
54144
  "planDialog.billedToTheTeamSelected": "Una volta esauriti i crediti AI del tuo piano, l\u2019AI \xE8 a consumo, fatturata in base all\u2019utilizzo.",
54098
54145
  "planDialog.billedYearly": "{price} fatturato annualmente",
54099
54146
  "planDialog.billing": "Periodo di fatturazione",
@@ -54174,6 +54221,8 @@ var require_it = __commonJS({
54174
54221
  "pluginImport.noImporterIsInstalledFor": "Nessun importatore \xE8 installato per \u201C{name}\u201D",
54175
54222
  "pluginImport.openAFileToImport": "Apri un file da importare in",
54176
54223
  "pluginImport.producedNoLayers": "\u201C{name}\u201D non ha prodotto livelli",
54224
+ "pluginOverlays.addAgentTools": "Dai all\u2019agente AI {count, plural, one {# strumento} other {# strumenti}} che eseguono questo plugin",
54225
+ "pluginOverlays.addsAgentTools": "Aggiunge {count, plural, one {# strumento agente} other {# strumenti agente}}",
54177
54226
  "pluginOverlays.addsExport": "Aggiunge File \u203A Esporta \u203A {label}",
54178
54227
  "pluginOverlays.allowAndRun": "Consenti ed esegui",
54179
54228
  "pluginOverlays.allowTo": "Consenti a \u201C{name}\u201D di:",
@@ -56157,6 +56206,11 @@ var require_pt_BR = __commonJS({
56157
56206
  "audioMeter.thisTimelineHasNoSound": "Esta linha do tempo ainda n\xE3o tem som: adicione \xE1udio em suas pistas para impulsionar isso.",
56158
56207
  "backgroundTasks.backgroundTasks": "Tarefas em segundo plano{value}",
56159
56208
  "backgroundTasks.cancelThisBackgroundTask": "Cancelar esta tarefa em segundo plano",
56209
+ "backgroundTasks.hideSteps": "Ocultar seus passos",
56210
+ "backgroundTasks.noStepsYet": "Nenhum passo ainda.",
56211
+ "backgroundTasks.queued": "Na fila",
56212
+ "backgroundTasks.showSteps": "Mostrar seus passos",
56213
+ "backgroundTasks.stepRunning": "Executando\u2026",
56160
56214
  "bezierEditor.asCSS": "Como CSS",
56161
56215
  "bezierEditor.copyThisCurve": "Copiar esta curva",
56162
56216
  "bezierEditor.curve": "Curva",
@@ -58268,7 +58322,9 @@ var require_pt_BR = __commonJS({
58268
58322
  "mentionInput.addReaction": "Adicionar rea\xE7\xE3o",
58269
58323
  "mentionInput.someone": "Algu\xE9m",
58270
58324
  "mentionMenu.removeMention": "Remover men\xE7\xE3o",
58325
+ "messageParts.fromPlugin": "Do plugin {plugin}",
58271
58326
  "messageParts.plan": "Plano",
58327
+ "messageParts.pluginTool": "{plugin} \xB7 {tool}",
58272
58328
  "messageParts.renderedView": "Visualiza\xE7\xE3o renderizada",
58273
58329
  "messageParts.thinking": "Pensando",
58274
58330
  "minimap.minimapTapOrDragTo": "Minimapa \u2014 toque ou arraste para mover a visualiza\xE7\xE3o, toque duas vezes para ajustar \xE0 p\xE1gina",
@@ -58863,6 +58919,7 @@ var require_pt_BR = __commonJS({
58863
58919
  "planBadge.freePlan": "Plano Gr\xE1tis",
58864
58920
  "planDialog.aICredits": "Cr\xE9ditos de IA",
58865
58921
  "planDialog.aICreditsLeft": "Cr\xE9ditos de IA restantes",
58922
+ "planDialog.appleIdTeamSlotTaken": "Uma Conta Apple pode ter uma assinatura pessoal e uma assinatura de equipe no PopCraft. A assinatura de equipe nesta Conta Apple j\xE1 est\xE1 em outra equipe.",
58866
58923
  "planDialog.billedToTheTeamSelected": "Assim que os cr\xE9ditos de IA do seu plano acabarem, a IA \xE9 paga conforme o uso, faturada pela utiliza\xE7\xE3o.",
58867
58924
  "planDialog.billedYearly": "{price} cobrado anualmente",
58868
58925
  "planDialog.billing": "Per\xEDodo de cobran\xE7a",
@@ -58943,6 +59000,8 @@ var require_pt_BR = __commonJS({
58943
59000
  "pluginImport.noImporterIsInstalledFor": "Nenhum importador est\xE1 instalado para \u201C{name}\u201D",
58944
59001
  "pluginImport.openAFileToImport": "Abrir um arquivo para importar para",
58945
59002
  "pluginImport.producedNoLayers": "\u201C{name}\u201D n\xE3o produziu nenhuma camada",
59003
+ "pluginOverlays.addAgentTools": "Dar ao agente de IA {count, plural, one {uma # ferramenta} other {# ferramentas}} que executam este plugin",
59004
+ "pluginOverlays.addsAgentTools": "Adiciona {count, plural, one {uma # ferramenta de agente} other {# ferramentas de agente}}",
58946
59005
  "pluginOverlays.addsExport": "Adiciona Arquivo \u203A Exportar \u203A {label}",
58947
59006
  "pluginOverlays.allowAndRun": "Permitir e executar",
58948
59007
  "pluginOverlays.allowTo": "Permitir que \u201C{name}\u201D:",
@@ -60926,6 +60985,11 @@ var require_ja = __commonJS({
60926
60985
  "audioMeter.thisTimelineHasNoSound": "\u3053\u306E\u30BF\u30A4\u30E0\u30E9\u30A4\u30F3\u306B\u306F\u307E\u3060\u30B5\u30A6\u30F3\u30C9\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u30EC\u30FC\u30F3\u306B\u30AA\u30FC\u30C7\u30A3\u30AA\u3092\u8FFD\u52A0\u3057\u3066\u99C6\u52D5\u3055\u305B\u3066\u304F\u3060\u3055\u3044\u3002",
60927
60986
  "backgroundTasks.backgroundTasks": "\u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9\u30BF\u30B9\u30AF{value}",
60928
60987
  "backgroundTasks.cancelThisBackgroundTask": "\u3053\u306E\u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9\u30BF\u30B9\u30AF\u3092\u30AD\u30E3\u30F3\u30BB\u30EB",
60988
+ "backgroundTasks.hideSteps": "\u30B9\u30C6\u30C3\u30D7\u3092\u975E\u8868\u793A",
60989
+ "backgroundTasks.noStepsYet": "\u307E\u3060\u30B9\u30C6\u30C3\u30D7\u304C\u3042\u308A\u307E\u305B\u3093\u3002",
60990
+ "backgroundTasks.queued": "\u5F85\u6A5F\u4E2D",
60991
+ "backgroundTasks.showSteps": "\u30B9\u30C6\u30C3\u30D7\u3092\u8868\u793A",
60992
+ "backgroundTasks.stepRunning": "\u5B9F\u884C\u4E2D\u2026",
60929
60993
  "bezierEditor.asCSS": "CSS\u3068\u3057\u3066",
60930
60994
  "bezierEditor.copyThisCurve": "\u3053\u306E\u30AB\u30FC\u30D6\u3092\u30B3\u30D4\u30FC",
60931
60995
  "bezierEditor.curve": "\u30AB\u30FC\u30D6",
@@ -63037,7 +63101,9 @@ var require_ja = __commonJS({
63037
63101
  "mentionInput.addReaction": "\u30EA\u30A2\u30AF\u30B7\u30E7\u30F3\u3092\u8FFD\u52A0",
63038
63102
  "mentionInput.someone": "\u8AB0\u304B",
63039
63103
  "mentionMenu.removeMention": "\u30E1\u30F3\u30B7\u30E7\u30F3\u3092\u524A\u9664",
63104
+ "messageParts.fromPlugin": "{plugin}\u30D7\u30E9\u30B0\u30A4\u30F3\u304B\u3089",
63040
63105
  "messageParts.plan": "\u30D7\u30E9\u30F3",
63106
+ "messageParts.pluginTool": "{plugin} \xB7 {tool}",
63041
63107
  "messageParts.renderedView": "\u30EC\u30F3\u30C0\u30EA\u30F3\u30B0\u30D3\u30E5\u30FC",
63042
63108
  "messageParts.thinking": "\u8003\u3048\u4E2D",
63043
63109
  "minimap.minimapTapOrDragTo": "\u30DF\u30CB\u30DE\u30C3\u30D7 \u2014 \u30BF\u30C3\u30D7\u307E\u305F\u306F\u30C9\u30E9\u30C3\u30B0\u3067\u8868\u793A\u3092\u79FB\u52D5\u3001\u30C0\u30D6\u30EB\u30BF\u30C3\u30D7\u3067\u30DA\u30FC\u30B8\u5168\u4F53\u3092\u8868\u793A",
@@ -63632,6 +63698,7 @@ var require_ja = __commonJS({
63632
63698
  "planBadge.freePlan": "\u7121\u6599\u30D7\u30E9\u30F3",
63633
63699
  "planDialog.aICredits": "AI\u30AF\u30EC\u30B8\u30C3\u30C8",
63634
63700
  "planDialog.aICreditsLeft": "\u6B8B\u308AAI\u30AF\u30EC\u30B8\u30C3\u30C8",
63701
+ "planDialog.appleIdTeamSlotTaken": "Apple\u30A2\u30AB\u30A6\u30F3\u30C8\u3067\u306F\u3001PopCraft\u3067\u500B\u4EBA\u7528\u3068\u30C1\u30FC\u30E0\u7528\u306E\u30B5\u30D6\u30B9\u30AF\u30EA\u30D7\u30B7\u30E7\u30F3\u3092\u305D\u308C\u305E\u308C1\u3064\u305A\u3064\u4FDD\u6301\u3067\u304D\u307E\u3059\u3002\u3053\u306EApple\u30A2\u30AB\u30A6\u30F3\u30C8\u306E\u30C1\u30FC\u30E0\u30B5\u30D6\u30B9\u30AF\u30EA\u30D7\u30B7\u30E7\u30F3\u306F\u3001\u3059\u3067\u306B\u5225\u306E\u30C1\u30FC\u30E0\u3067\u4F7F\u7528\u3055\u308C\u3066\u3044\u307E\u3059\u3002",
63635
63702
  "planDialog.billedToTheTeamSelected": "\u30D7\u30E9\u30F3\u306EAI\u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u4F7F\u3044\u5207\u308B\u3068\u3001AI\u306F\u5F93\u91CF\u8AB2\u91D1\u5236\u3068\u306A\u308A\u3001\u4F7F\u7528\u91CF\u306B\u5FDC\u3058\u3066\u8ACB\u6C42\u3055\u308C\u307E\u3059\u3002",
63636
63703
  "planDialog.billedYearly": "{price} / \u5E74\u6255\u3044",
63637
63704
  "planDialog.billing": "\u8ACB\u6C42\u671F\u9593",
@@ -63712,6 +63779,8 @@ var require_ja = __commonJS({
63712
63779
  "pluginImport.noImporterIsInstalledFor": "\u300C{name}\u300D\u7528\u306E\u30A4\u30F3\u30DD\u30FC\u30BF\u30FC\u304C\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u3066\u3044\u307E\u305B\u3093",
63713
63780
  "pluginImport.openAFileToImport": "\u30A4\u30F3\u30DD\u30FC\u30C8\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304F",
63714
63781
  "pluginImport.producedNoLayers": "\u300C{name}\u300D\u306F\u30EC\u30A4\u30E4\u30FC\u3092\u751F\u6210\u3057\u307E\u305B\u3093\u3067\u3057\u305F",
63782
+ "pluginOverlays.addAgentTools": "AI\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u306B\u3001\u3053\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u3092\u5B9F\u884C\u3059\u308B{count, plural, other {# \u500B\u306E\u30C4\u30FC\u30EB}}\u3092\u4ED8\u4E0E\u3059\u308B",
63783
+ "pluginOverlays.addsAgentTools": "{count, plural, other {# \u500B\u306E\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30C4\u30FC\u30EB}}\u3092\u8FFD\u52A0",
63715
63784
  "pluginOverlays.addsExport": "\u30D5\u30A1\u30A4\u30EB \u203A \u66F8\u304D\u51FA\u3057 \u203A {label} \u3092\u8FFD\u52A0",
63716
63785
  "pluginOverlays.allowAndRun": "\u8A31\u53EF\u3057\u3066\u5B9F\u884C",
63717
63786
  "pluginOverlays.allowTo": "\u300C{name}\u300D\u306B\u4EE5\u4E0B\u3092\u8A31\u53EF\u3057\u307E\u3059:",
@@ -65695,6 +65764,11 @@ var require_ko = __commonJS({
65695
65764
  "audioMeter.thisTimelineHasNoSound": "\uC774 \uD0C0\uC784\uB77C\uC778\uC5D0\uB294 \uC544\uC9C1 \uC18C\uB9AC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4. \uC774 \uAE30\uB2A5\uC744 \uC0AC\uC6A9\uD558\uB824\uBA74 \uB808\uC778\uC5D0 \uC624\uB514\uC624\uB97C \uCD94\uAC00\uD558\uC138\uC694.",
65696
65765
  "backgroundTasks.backgroundTasks": "\uBC31\uADF8\uB77C\uC6B4\uB4DC \uC791\uC5C5{value}",
65697
65766
  "backgroundTasks.cancelThisBackgroundTask": "\uC774 \uBC31\uADF8\uB77C\uC6B4\uB4DC \uC791\uC5C5 \uCDE8\uC18C",
65767
+ "backgroundTasks.hideSteps": "\uB2E8\uACC4 \uC228\uAE30\uAE30",
65768
+ "backgroundTasks.noStepsYet": "\uC544\uC9C1 \uB2E8\uACC4\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.",
65769
+ "backgroundTasks.queued": "\uB300\uAE30 \uC911",
65770
+ "backgroundTasks.showSteps": "\uB2E8\uACC4 \uD45C\uC2DC",
65771
+ "backgroundTasks.stepRunning": "\uC2E4\uD589 \uC911\u2026",
65698
65772
  "bezierEditor.asCSS": "CSS\uB85C",
65699
65773
  "bezierEditor.copyThisCurve": "\uC774 \uACE1\uC120 \uBCF5\uC0AC",
65700
65774
  "bezierEditor.curve": "\uACE1\uC120",
@@ -67806,7 +67880,9 @@ var require_ko = __commonJS({
67806
67880
  "mentionInput.addReaction": "\uBC18\uC751 \uCD94\uAC00",
67807
67881
  "mentionInput.someone": "\uB204\uAD70\uAC00",
67808
67882
  "mentionMenu.removeMention": "\uBA58\uC158 \uC81C\uAC70",
67883
+ "messageParts.fromPlugin": "{plugin} \uD50C\uB7EC\uADF8\uC778\uC5D0\uC11C",
67809
67884
  "messageParts.plan": "\uACC4\uD68D",
67885
+ "messageParts.pluginTool": "{plugin} \xB7 {tool}",
67810
67886
  "messageParts.renderedView": "\uB80C\uB354\uB9C1\uB41C \uBCF4\uAE30",
67811
67887
  "messageParts.thinking": "\uC0DD\uAC01 \uC911",
67812
67888
  "minimap.minimapTapOrDragTo": "\uBBF8\uB2C8\uB9F5 \u2014 \uD0ED\uD558\uAC70\uB098 \uB4DC\uB798\uADF8\uD558\uC5EC \uBDF0 \uC774\uB3D9, \uB450 \uBC88 \uD0ED\uD558\uC5EC \uD398\uC774\uC9C0\uC5D0 \uB9DE\uCD94\uAE30",
@@ -68401,6 +68477,7 @@ var require_ko = __commonJS({
68401
68477
  "planBadge.freePlan": "\uBB34\uB8CC \uD50C\uB79C",
68402
68478
  "planDialog.aICredits": "AI \uD06C\uB808\uB527",
68403
68479
  "planDialog.aICreditsLeft": "\uB0A8\uC740 AI \uD06C\uB808\uB527",
68480
+ "planDialog.appleIdTeamSlotTaken": "Apple \uACC4\uC815 \uD558\uB098\uB2F9 PopCraft\uC5D0\uC11C \uAC1C\uC778 \uAD6C\uB3C5 \uD558\uB098\uC640 \uD300 \uAD6C\uB3C5 \uD558\uB098\uB97C \uAC00\uC9C8 \uC218 \uC788\uC2B5\uB2C8\uB2E4. \uC774 Apple \uACC4\uC815\uC758 \uD300 \uAD6C\uB3C5\uC740 \uC774\uBBF8 \uB2E4\uB978 \uD300\uC5D0 \uD560\uB2F9\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4.",
68404
68481
  "planDialog.billedToTheTeamSelected": "\uD50C\uB79C\uC758 AI \uD06C\uB808\uB527\uC744 \uBAA8\uB450 \uC0AC\uC6A9\uD558\uBA74 AI\uB294 \uC0AC\uC6A9\uD55C \uB9CC\uD07C \uC9C0\uBD88\uD558\uB294 \uBC29\uC2DD\uC774\uBA70, \uC0AC\uC6A9\uB7C9\uC5D0 \uB530\uB77C \uCCAD\uAD6C\uB429\uB2C8\uB2E4.",
68405
68482
  "planDialog.billedYearly": "\uC5F0\uAC04 {price} \uCCAD\uAD6C",
68406
68483
  "planDialog.billing": "\uACB0\uC81C \uC8FC\uAE30",
@@ -68481,6 +68558,8 @@ var require_ko = __commonJS({
68481
68558
  "pluginImport.noImporterIsInstalledFor": "\u201C{name}\u201D\uC5D0 \uB300\uD55C \uAC00\uC838\uC624\uAE30 \uB3C4\uAD6C\uAC00 \uC124\uCE58\uB418\uC5B4 \uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4",
68482
68559
  "pluginImport.openAFileToImport": "\uAC00\uC838\uC62C \uD30C\uC77C\uC744 \uC5FD\uB2C8\uB2E4.",
68483
68560
  "pluginImport.producedNoLayers": "\u201C{name}\u201D\uC5D0\uC11C \uB808\uC774\uC5B4\uB97C \uC0DD\uC131\uD558\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4.",
68561
+ "pluginOverlays.addAgentTools": "AI \uC5D0\uC774\uC804\uD2B8\uC5D0 \uC774 \uD50C\uB7EC\uADF8\uC778\uC744 \uC2E4\uD589\uD558\uB294 {count, plural, other {#\uAC1C \uB3C4\uAD6C}}\uB97C \uBD80\uC5EC\uD569\uB2C8\uB2E4.",
68562
+ "pluginOverlays.addsAgentTools": "{count, plural, other {#\uAC1C \uC5D0\uC774\uC804\uD2B8 \uB3C4\uAD6C}}\uB97C \uCD94\uAC00\uD569\uB2C8\uB2E4.",
68484
68563
  "pluginOverlays.addsExport": "\uD30C\uC77C \u203A \uB0B4\uBCF4\uB0B4\uAE30 \u203A {label}\uC744(\uB97C) \uCD94\uAC00\uD569\uB2C8\uB2E4.",
68485
68564
  "pluginOverlays.allowAndRun": "\uD5C8\uC6A9 \uBC0F \uC2E4\uD589",
68486
68565
  "pluginOverlays.allowTo": "\u201C{name}\u201D\uC5D0 \uB2E4\uC74C\uC744 \uD5C8\uC6A9\uD569\uB2C8\uB2E4:",
@@ -70464,6 +70543,11 @@ var require_zh_CN = __commonJS({
70464
70543
  "audioMeter.thisTimelineHasNoSound": "\u6B64\u65F6\u95F4\u8F74\u5C1A\u65E0\u58F0\u97F3\uFF1A\u8BF7\u5728\u5176\u8F68\u9053\u4E0A\u6DFB\u52A0\u97F3\u9891\u4EE5\u9A71\u52A8\u3002",
70465
70544
  "backgroundTasks.backgroundTasks": "\u540E\u53F0\u4EFB\u52A1{value}",
70466
70545
  "backgroundTasks.cancelThisBackgroundTask": "\u53D6\u6D88\u6B64\u540E\u53F0\u4EFB\u52A1",
70546
+ "backgroundTasks.hideSteps": "\u9690\u85CF\u5176\u6B65\u9AA4",
70547
+ "backgroundTasks.noStepsYet": "\u6682\u65E0\u6B65\u9AA4\u3002",
70548
+ "backgroundTasks.queued": "\u5DF2\u6392\u961F",
70549
+ "backgroundTasks.showSteps": "\u663E\u793A\u5176\u6B65\u9AA4",
70550
+ "backgroundTasks.stepRunning": "\u6B63\u5728\u8FD0\u884C\u2026",
70467
70551
  "bezierEditor.asCSS": "\u4F5C\u4E3A CSS",
70468
70552
  "bezierEditor.copyThisCurve": "\u590D\u5236\u6B64\u66F2\u7EBF",
70469
70553
  "bezierEditor.curve": "\u66F2\u7EBF",
@@ -72575,7 +72659,9 @@ var require_zh_CN = __commonJS({
72575
72659
  "mentionInput.addReaction": "\u6DFB\u52A0\u56DE\u5E94",
72576
72660
  "mentionInput.someone": "\u67D0\u4EBA",
72577
72661
  "mentionMenu.removeMention": "\u79FB\u9664\u63D0\u53CA",
72662
+ "messageParts.fromPlugin": "\u6765\u81EA {plugin} \u63D2\u4EF6",
72578
72663
  "messageParts.plan": "\u8BA1\u5212",
72664
+ "messageParts.pluginTool": "{plugin} \xB7 {tool}",
72579
72665
  "messageParts.renderedView": "\u6E32\u67D3\u89C6\u56FE",
72580
72666
  "messageParts.thinking": "\u601D\u8003\u4E2D",
72581
72667
  "minimap.minimapTapOrDragTo": "\u8FF7\u4F60\u5730\u56FE \u2014 \u8F7B\u89E6\u6216\u62D6\u52A8\u4EE5\u79FB\u52A8\u89C6\u56FE\uFF0C\u53CC\u51FB\u4EE5\u9002\u5E94\u9875\u9762",
@@ -73170,6 +73256,7 @@ var require_zh_CN = __commonJS({
73170
73256
  "planBadge.freePlan": "\u514D\u8D39\u5957\u9910",
73171
73257
  "planDialog.aICredits": "AI \u79EF\u5206",
73172
73258
  "planDialog.aICreditsLeft": "\u5269\u4F59 AI \u79EF\u5206",
73259
+ "planDialog.appleIdTeamSlotTaken": "\u4E00\u4E2A Apple \u8D26\u6237\u5728 PopCraft \u4E2D\u53EF\u4EE5\u6301\u6709\u4E00\u4E2A\u4E2A\u4EBA\u8BA2\u9605\u548C\u4E00\u4E2A\u56E2\u961F\u8BA2\u9605\u3002\u6B64 Apple \u8D26\u6237\u4E0A\u7684\u56E2\u961F\u8BA2\u9605\u5DF2\u5C5E\u4E8E\u53E6\u4E00\u4E2A\u56E2\u961F\u3002",
73173
73260
  "planDialog.billedToTheTeamSelected": "\u5F53\u60A8\u7684\u5957\u9910AI\u70B9\u6570\u7528\u5C3D\u540E\uFF0CAI\u5C06\u6309\u91CF\u4ED8\u8D39\uFF0C\u6839\u636E\u4F7F\u7528\u91CF\u8BA1\u8D39\u3002",
73174
73261
  "planDialog.billedYearly": "{price} / \u5E74",
73175
73262
  "planDialog.billing": "\u8BA1\u8D39\u5468\u671F",
@@ -73250,6 +73337,8 @@ var require_zh_CN = __commonJS({
73250
73337
  "pluginImport.noImporterIsInstalledFor": "\u672A\u5B89\u88C5\u201C{name}\u201D\u7684\u5BFC\u5165\u5668",
73251
73338
  "pluginImport.openAFileToImport": "\u6253\u5F00\u6587\u4EF6\u4EE5\u5BFC\u5165\u5230",
73252
73339
  "pluginImport.producedNoLayers": "\u201C{name}\u201D \u672A\u751F\u6210\u4EFB\u4F55\u56FE\u5C42",
73340
+ "pluginOverlays.addAgentTools": "\u4E3A AI \u4EE3\u7406\u63D0\u4F9B {count, plural, other {# \u4E2A\u5DE5\u5177}} \u6765\u8FD0\u884C\u6B64\u63D2\u4EF6",
73341
+ "pluginOverlays.addsAgentTools": "\u6DFB\u52A0 {count, plural, other {# \u4E2A\u4EE3\u7406\u5DE5\u5177}}",
73253
73342
  "pluginOverlays.addsExport": "\u6DFB\u52A0\u201C\u6587\u4EF6 \u203A \u5BFC\u51FA \u203A {label}\u201D",
73254
73343
  "pluginOverlays.allowAndRun": "\u5141\u8BB8\u5E76\u8FD0\u884C",
73255
73344
  "pluginOverlays.allowTo": "\u5141\u8BB8\u201C{name}\u201D\u6267\u884C\u4EE5\u4E0B\u64CD\u4F5C\uFF1A",
@@ -75233,6 +75322,11 @@ var require_zh_TW = __commonJS({
75233
75322
  "audioMeter.thisTimelineHasNoSound": "\u6B64\u6642\u9593\u8EF8\u5C1A\u7121\u8072\u97F3\uFF1A\u5728\u5176\u97F3\u8A0A\u8ECC\u9053\u4E0A\u65B0\u589E\u97F3\u8A0A\u4EE5\u9A45\u52D5\u6B64\u529F\u80FD\u3002",
75234
75323
  "backgroundTasks.backgroundTasks": "\u80CC\u666F\u4EFB\u52D9{value}",
75235
75324
  "backgroundTasks.cancelThisBackgroundTask": "\u53D6\u6D88\u6B64\u80CC\u666F\u4EFB\u52D9",
75325
+ "backgroundTasks.hideSteps": "\u96B1\u85CF\u6B65\u9A5F",
75326
+ "backgroundTasks.noStepsYet": "\u5C1A\u7121\u6B65\u9A5F\u3002",
75327
+ "backgroundTasks.queued": "\u5DF2\u6392\u5165\u4F47\u5217",
75328
+ "backgroundTasks.showSteps": "\u986F\u793A\u6B65\u9A5F",
75329
+ "backgroundTasks.stepRunning": "\u6B63\u5728\u57F7\u884C\u2026",
75236
75330
  "bezierEditor.asCSS": "\u4F5C\u70BA CSS",
75237
75331
  "bezierEditor.copyThisCurve": "\u8907\u88FD\u6B64\u66F2\u7DDA",
75238
75332
  "bezierEditor.curve": "\u66F2\u7DDA",
@@ -77344,7 +77438,9 @@ var require_zh_TW = __commonJS({
77344
77438
  "mentionInput.addReaction": "\u65B0\u589E\u56DE\u61C9",
77345
77439
  "mentionInput.someone": "\u67D0\u4EBA",
77346
77440
  "mentionMenu.removeMention": "\u79FB\u9664\u63D0\u53CA",
77441
+ "messageParts.fromPlugin": "\u4F86\u81EA {plugin} \u5916\u639B\u7A0B\u5F0F",
77347
77442
  "messageParts.plan": "\u8A08\u756B",
77443
+ "messageParts.pluginTool": "{plugin} \xB7 {tool}",
77348
77444
  "messageParts.renderedView": "\u6E32\u67D3\u8996\u5716",
77349
77445
  "messageParts.thinking": "\u601D\u8003\u4E2D",
77350
77446
  "minimap.minimapTapOrDragTo": "\u8FF7\u4F60\u5730\u5716 \u2014 \u9EDE\u64CA\u6216\u62D6\u66F3\u4EE5\u79FB\u52D5\u8996\u5716\uFF0C\u96D9\u64CA\u4EE5\u9069\u61C9\u9801\u9762",
@@ -77939,6 +78035,7 @@ var require_zh_TW = __commonJS({
77939
78035
  "planBadge.freePlan": "\u514D\u8CBB\u65B9\u6848",
77940
78036
  "planDialog.aICredits": "AI \u9EDE\u6578",
77941
78037
  "planDialog.aICreditsLeft": "\u5269\u9918 AI \u9EDE\u6578",
78038
+ "planDialog.appleIdTeamSlotTaken": "\u4E00\u500B Apple \u5E33\u865F\u5728 PopCraft \u4E2D\u53EF\u64C1\u6709\u4E00\u4EFD\u500B\u4EBA\u8A02\u95B1\u548C\u4E00\u4EFD\u5718\u968A\u8A02\u95B1\u3002\u6B64 Apple \u5E33\u865F\u7684\u5718\u968A\u8A02\u95B1\u5DF2\u7528\u65BC\u53E6\u4E00\u500B\u5718\u968A\u3002",
77942
78039
  "planDialog.billedToTheTeamSelected": "\u7576\u60A8\u7684\u65B9\u6848\u7684 AI \u9EDE\u6578\u7528\u76E1\u5F8C\uFF0CAI \u5C07\u63A1\u96A8\u7528\u96A8\u4ED8\u5236\uFF0C\u4E26\u6839\u64DA\u7528\u91CF\u8A08\u8CBB\u3002",
77943
78040
  "planDialog.billedYearly": "{price} (\u6309\u5E74\u8A08\u8CBB)",
77944
78041
  "planDialog.billing": "\u8A08\u8CBB\u9031\u671F",
@@ -78019,6 +78116,8 @@ var require_zh_TW = __commonJS({
78019
78116
  "pluginImport.noImporterIsInstalledFor": "\u672A\u5B89\u88DD\u300C{name}\u300D\u7684\u532F\u5165\u5668",
78020
78117
  "pluginImport.openAFileToImport": "\u958B\u555F\u6A94\u6848\u4EE5\u532F\u5165\u81F3",
78021
78118
  "pluginImport.producedNoLayers": "\u300C{name}\u300D\u672A\u7522\u751F\u4EFB\u4F55\u5716\u5C64",
78119
+ "pluginOverlays.addAgentTools": "\u7D66\u4E88 AI \u4EE3\u7406\u7A0B\u5F0F {count, plural, other {# \u500B\u5DE5\u5177}}\uFF0C\u9019\u4E9B\u5DE5\u5177\u53EF\u57F7\u884C\u6B64\u5916\u639B\u7A0B\u5F0F",
78120
+ "pluginOverlays.addsAgentTools": "\u65B0\u589E {count, plural, other {# \u500B\u4EE3\u7406\u7A0B\u5F0F\u5DE5\u5177}}",
78022
78121
  "pluginOverlays.addsExport": "\u65B0\u589E\u300C\u6A94\u6848\u300D\u203A\u300C\u532F\u51FA\u300D\u203A\u300C{label}\u300D",
78023
78122
  "pluginOverlays.allowAndRun": "\u5141\u8A31\u4E26\u57F7\u884C",
78024
78123
  "pluginOverlays.allowTo": "\u5141\u8A31\u300C{name}\u300D\u57F7\u884C\u4EE5\u4E0B\u64CD\u4F5C\uFF1A",
@@ -80002,6 +80101,11 @@ var require_ru = __commonJS({
80002
80101
  "audioMeter.thisTimelineHasNoSound": "\u041D\u0430 \u044D\u0442\u043E\u0439 \u0432\u0440\u0435\u043C\u0435\u043D\u043D\u043E\u0439 \u0448\u043A\u0430\u043B\u0435 \u043F\u043E\u043A\u0430 \u043D\u0435\u0442 \u0437\u0432\u0443\u043A\u0430: \u0434\u043E\u0431\u0430\u0432\u044C\u0442\u0435 \u0430\u0443\u0434\u0438\u043E \u043D\u0430 \u0435\u0435 \u0434\u043E\u0440\u043E\u0436\u043A\u0438, \u0447\u0442\u043E\u0431\u044B \u0430\u043A\u0442\u0438\u0432\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u044D\u0442\u043E.",
80003
80102
  "backgroundTasks.backgroundTasks": "\u0424\u043E\u043D\u043E\u0432\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438{value}",
80004
80103
  "backgroundTasks.cancelThisBackgroundTask": "\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C \u044D\u0442\u0443 \u0444\u043E\u043D\u043E\u0432\u0443\u044E \u0437\u0430\u0434\u0430\u0447\u0443",
80104
+ "backgroundTasks.hideSteps": "\u0421\u043A\u0440\u044B\u0442\u044C \u0448\u0430\u0433\u0438",
80105
+ "backgroundTasks.noStepsYet": "\u0428\u0430\u0433\u043E\u0432 \u043F\u043E\u043A\u0430 \u043D\u0435\u0442.",
80106
+ "backgroundTasks.queued": "\u0412 \u043E\u0447\u0435\u0440\u0435\u0434\u0438",
80107
+ "backgroundTasks.showSteps": "\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0448\u0430\u0433\u0438",
80108
+ "backgroundTasks.stepRunning": "\u0412\u044B\u043F\u043E\u043B\u043D\u044F\u0435\u0442\u0441\u044F\u2026",
80005
80109
  "bezierEditor.asCSS": "\u041A\u0430\u043A CSS",
80006
80110
  "bezierEditor.copyThisCurve": "\u0421\u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u044D\u0442\u0443 \u043A\u0440\u0438\u0432\u0443\u044E",
80007
80111
  "bezierEditor.curve": "\u041A\u0440\u0438\u0432\u0430\u044F",
@@ -82113,7 +82217,9 @@ var require_ru = __commonJS({
82113
82217
  "mentionInput.addReaction": "\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0440\u0435\u0430\u043A\u0446\u0438\u044E",
82114
82218
  "mentionInput.someone": "\u041A\u0442\u043E-\u0442\u043E",
82115
82219
  "mentionMenu.removeMention": "\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0443\u043F\u043E\u043C\u0438\u043D\u0430\u043D\u0438\u0435",
82220
+ "messageParts.fromPlugin": "\u0418\u0437 \u043F\u043B\u0430\u0433\u0438\u043D\u0430 \xAB{plugin}\xBB",
82116
82221
  "messageParts.plan": "\u041F\u043B\u0430\u043D",
82222
+ "messageParts.pluginTool": "{plugin} \xB7 {tool}",
82117
82223
  "messageParts.renderedView": "\u041E\u0442\u043E\u0431\u0440\u0430\u0436\u0430\u0435\u043C\u044B\u0439 \u0432\u0438\u0434",
82118
82224
  "messageParts.thinking": "\u041E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0430\u2026",
82119
82225
  "minimap.minimapTapOrDragTo": "\u041C\u0438\u043D\u0438\u043A\u0430\u0440\u0442\u0430 \u2014 \u043D\u0430\u0436\u043C\u0438\u0442\u0435 \u0438\u043B\u0438 \u043F\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u0432\u0438\u0434, \u0434\u0432\u0430\u0436\u0434\u044B \u043D\u0430\u0436\u043C\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0443\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443",
@@ -82708,6 +82814,7 @@ var require_ru = __commonJS({
82708
82814
  "planBadge.freePlan": "\u0411\u0435\u0441\u043F\u043B\u0430\u0442\u043D\u044B\u0439 \u043F\u043B\u0430\u043D",
82709
82815
  "planDialog.aICredits": "\u041A\u0440\u0435\u0434\u0438\u0442\u044B \u0418\u0418",
82710
82816
  "planDialog.aICreditsLeft": "\u041E\u0441\u0442\u0430\u043B\u043E\u0441\u044C \u043A\u0440\u0435\u0434\u0438\u0442\u043E\u0432 \u0418\u0418",
82817
+ "planDialog.appleIdTeamSlotTaken": "\u0423\u0447\u0451\u0442\u043D\u0430\u044F \u0437\u0430\u043F\u0438\u0441\u044C Apple \u043C\u043E\u0436\u0435\u0442 \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0442\u044C \u043E\u0434\u043D\u0443 \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u044C\u043D\u0443\u044E \u0438 \u043E\u0434\u043D\u0443 \u043A\u043E\u043C\u0430\u043D\u0434\u043D\u0443\u044E \u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0443 \u0432 PopCraft. \u041A\u043E\u043C\u0430\u043D\u0434\u043D\u0430\u044F \u043F\u043E\u0434\u043F\u0438\u0441\u043A\u0430 \u044D\u0442\u043E\u0439 \u0443\u0447\u0451\u0442\u043D\u043E\u0439 \u0437\u0430\u043F\u0438\u0441\u0438 Apple \u0443\u0436\u0435 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0434\u0440\u0443\u0433\u043E\u0439 \u043A\u043E\u043C\u0430\u043D\u0434\u043E\u0439.",
82711
82818
  "planDialog.billedToTheTeamSelected": "\u041A\u0430\u043A \u0442\u043E\u043B\u044C\u043A\u043E \u043A\u0440\u0435\u0434\u0438\u0442\u044B \u0418\u0418 \u0432\u0430\u0448\u0435\u0433\u043E \u043F\u043B\u0430\u043D\u0430 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u0447\u0435\u0440\u043F\u0430\u043D\u044B, \u0418\u0418 \u0431\u0443\u0434\u0435\u0442 \u043E\u043F\u043B\u0430\u0447\u0438\u0432\u0430\u0442\u044C\u0441\u044F \u043F\u043E \u043C\u0435\u0440\u0435 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F, \u0441 \u0432\u044B\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0435\u043C \u0441\u0447\u0435\u0442\u0430 \u043F\u043E \u0444\u0430\u043A\u0442\u0443 \u043F\u043E\u0442\u0440\u0435\u0431\u043B\u0435\u043D\u0438\u044F.",
82712
82819
  "planDialog.billedYearly": "{price} \u043F\u0440\u0438 \u0435\u0436\u0435\u0433\u043E\u0434\u043D\u043E\u0439 \u043E\u043F\u043B\u0430\u0442\u0435",
82713
82820
  "planDialog.billing": "\u041F\u0435\u0440\u0438\u043E\u0434 \u043E\u043F\u043B\u0430\u0442\u044B",
@@ -82788,6 +82895,8 @@ var require_ru = __commonJS({
82788
82895
  "pluginImport.noImporterIsInstalledFor": "\u0414\u043B\u044F \xAB{name}\xBB \u043D\u0435 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D \u0438\u043C\u043F\u043E\u0440\u0442\u0435\u0440",
82789
82896
  "pluginImport.openAFileToImport": "\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u0444\u0430\u0439\u043B \u0434\u043B\u044F \u0438\u043C\u043F\u043E\u0440\u0442\u0430 \u0432",
82790
82897
  "pluginImport.producedNoLayers": "\xAB{name}\xBB \u043D\u0435 \u0441\u043E\u0437\u0434\u0430\u043B \u0441\u043B\u043E\u0435\u0432",
82898
+ "pluginOverlays.addAgentTools": "\u041F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u0418\u0418-\u0430\u0433\u0435\u043D\u0442\u0443 {count, plural, one {# \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442} few {# \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u0430} many {# \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432} other {# \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432}}, \u0437\u0430\u043F\u0443\u0441\u043A\u0430\u044E\u0449\u0438\u0439 \u044D\u0442\u043E\u0442 \u043F\u043B\u0430\u0433\u0438\u043D",
82899
+ "pluginOverlays.addsAgentTools": "\u0414\u043E\u0431\u0430\u0432\u043B\u044F\u0435\u0442 {count, plural, one {# \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442 \u0430\u0433\u0435\u043D\u0442\u0430} few {# \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u0430 \u0430\u0433\u0435\u043D\u0442\u0430} many {# \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u0430\u0433\u0435\u043D\u0442\u0430} other {# \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u0430\u0433\u0435\u043D\u0442\u0430}}",
82791
82900
  "pluginOverlays.addsExport": "\u0414\u043E\u0431\u0430\u0432\u043B\u044F\u0435\u0442 \u0424\u0430\u0439\u043B \u203A \u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u203A {label}",
82792
82901
  "pluginOverlays.allowAndRun": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044C \u0438 \u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C",
82793
82902
  "pluginOverlays.allowTo": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044C \xAB{name}\xBB:",
@@ -84771,6 +84880,11 @@ var require_ar = __commonJS({
84771
84880
  "audioMeter.thisTimelineHasNoSound": "\u0644\u0627 \u064A\u062D\u062A\u0648\u064A \u0647\u0630\u0627 \u0627\u0644\u0645\u062E\u0637\u0637 \u0627\u0644\u0632\u0645\u0646\u064A \u0639\u0644\u0649 \u0635\u0648\u062A \u0628\u0639\u062F: \u0623\u0636\u0641 \u0635\u0648\u062A\u064B\u0627 \u0625\u0644\u0649 \u0645\u0633\u0627\u0631\u0627\u062A\u0647 \u0644\u062A\u0634\u063A\u064A\u0644\u0647.",
84772
84881
  "backgroundTasks.backgroundTasks": "\u0645\u0647\u0627\u0645 \u0627\u0644\u062E\u0644\u0641\u064A\u0629{value}",
84773
84882
  "backgroundTasks.cancelThisBackgroundTask": "\u0625\u0644\u063A\u0627\u0621 \u0645\u0647\u0645\u0629 \u0627\u0644\u062E\u0644\u0641\u064A\u0629 \u0647\u0630\u0647",
84883
+ "backgroundTasks.hideSteps": "\u0625\u062E\u0641\u0627\u0621 \u062E\u0637\u0648\u0627\u062A\u0647",
84884
+ "backgroundTasks.noStepsYet": "\u0644\u0627 \u062A\u0648\u062C\u062F \u062E\u0637\u0648\u0627\u062A \u0628\u0639\u062F.",
84885
+ "backgroundTasks.queued": "\u0641\u064A \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0627\u0646\u062A\u0638\u0627\u0631",
84886
+ "backgroundTasks.showSteps": "\u0625\u0638\u0647\u0627\u0631 \u062E\u0637\u0648\u0627\u062A\u0647",
84887
+ "backgroundTasks.stepRunning": "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u0634\u063A\u064A\u0644\u2026",
84774
84888
  "bezierEditor.asCSS": "\u0643\u0640 CSS",
84775
84889
  "bezierEditor.copyThisCurve": "\u0646\u0633\u062E \u0647\u0630\u0627 \u0627\u0644\u0645\u0646\u062D\u0646\u0649",
84776
84890
  "bezierEditor.curve": "\u0645\u0646\u062D\u0646\u0649",
@@ -86882,7 +86996,9 @@ var require_ar = __commonJS({
86882
86996
  "mentionInput.addReaction": "\u0625\u0636\u0627\u0641\u0629 \u0631\u062F \u0641\u0639\u0644",
86883
86997
  "mentionInput.someone": "\u0634\u062E\u0635 \u0645\u0627",
86884
86998
  "mentionMenu.removeMention": "\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0625\u0634\u0627\u0631\u0629",
86999
+ "messageParts.fromPlugin": "\u0645\u0646 \u0627\u0644\u0645\u0643\u0648\u0646 \u0627\u0644\u0625\u0636\u0627\u0641\u064A {plugin}",
86885
87000
  "messageParts.plan": "\u062E\u0637\u0629",
87001
+ "messageParts.pluginTool": "{plugin} \xB7 {tool}",
86886
87002
  "messageParts.renderedView": "\u0639\u0631\u0636 \u0645\u064F\u0635\u064A\u0651\u064E\u0631",
86887
87003
  "messageParts.thinking": "\u062C\u0627\u0631\u064A \u0627\u0644\u062A\u0641\u0643\u064A\u0631",
86888
87004
  "minimap.minimapTapOrDragTo": "\u0627\u0644\u062E\u0631\u064A\u0637\u0629 \u0627\u0644\u0645\u0635\u063A\u0631\u0629 \u2014 \u0627\u0646\u0642\u0631 \u0623\u0648 \u0627\u0633\u062D\u0628 \u0644\u062A\u062D\u0631\u064A\u0643 \u0627\u0644\u0639\u0631\u0636\u060C \u0627\u0646\u0642\u0631 \u0645\u0631\u062A\u064A\u0646 \u0644\u0645\u0644\u0627\u0621\u0645\u0629 \u0627\u0644\u0635\u0641\u062D\u0629",
@@ -87477,6 +87593,7 @@ var require_ar = __commonJS({
87477
87593
  "planBadge.freePlan": "\u0627\u0644\u062E\u0637\u0629 \u0627\u0644\u0645\u062C\u0627\u0646\u064A\u0629",
87478
87594
  "planDialog.aICredits": "\u0631\u0635\u064A\u062F \u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064A",
87479
87595
  "planDialog.aICreditsLeft": "\u0631\u0635\u064A\u062F \u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064A \u0627\u0644\u0645\u062A\u0628\u0642\u064A",
87596
+ "planDialog.appleIdTeamSlotTaken": "\u064A\u0645\u0643\u0646 \u0644\u062D\u0633\u0627\u0628 Apple \u0623\u0646 \u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649 \u0627\u0634\u062A\u0631\u0627\u0643 \u0634\u062E\u0635\u064A \u0648\u0627\u062D\u062F \u0648\u0627\u0634\u062A\u0631\u0627\u0643 \u0641\u0631\u064A\u0642 \u0648\u0627\u062D\u062F \u0641\u064A PopCraft. \u0627\u0634\u062A\u0631\u0627\u0643 \u0627\u0644\u0641\u0631\u064A\u0642 \u0639\u0644\u0649 \u062D\u0633\u0627\u0628 Apple \u0647\u0630\u0627 \u0645\u0648\u062C\u0648\u062F \u0628\u0627\u0644\u0641\u0639\u0644 \u0641\u064A \u0641\u0631\u064A\u0642 \u0622\u062E\u0631.",
87480
87597
  "planDialog.billedToTheTeamSelected": "\u0628\u0645\u062C\u0631\u062F \u0627\u0633\u062A\u0646\u0641\u0627\u062F \u0623\u0631\u0635\u062F\u0629 \u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064A \u0644\u062E\u0637\u062A\u0643\u060C \u064A\u0635\u0628\u062D \u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064A \u0628\u0646\u0638\u0627\u0645 \u0627\u0644\u062F\u0641\u0639 \u062D\u0633\u0628 \u0627\u0644\u0627\u0633\u062A\u062E\u062F\u0627\u0645\u060C \u0648\u062A\u062A\u0645 \u0627\u0644\u0641\u0648\u062A\u0631\u0629 \u0628\u0646\u0627\u0621\u064B \u0639\u0644\u0649 \u0627\u0644\u0627\u0633\u062A\u0647\u0644\u0627\u0643.",
87481
87598
  "planDialog.billedYearly": "{price} \u062A\u064F\u0641\u0648\u062A\u0631 \u0633\u0646\u0648\u064A\u064B\u0627",
87482
87599
  "planDialog.billing": "\u0641\u062A\u0631\u0629 \u0627\u0644\u0641\u0648\u062A\u0631\u0629",
@@ -87557,6 +87674,8 @@ var require_ar = __commonJS({
87557
87674
  "pluginImport.noImporterIsInstalledFor": "\u0644\u0627 \u064A\u0648\u062C\u062F \u0645\u0633\u062A\u0648\u0631\u062F \u0645\u062B\u0628\u062A \u0644\u0640 \u201C{name}\u201D",
87558
87675
  "pluginImport.openAFileToImport": "\u0627\u0641\u062A\u062D \u0645\u0644\u0641\u064B\u0627 \u0644\u0644\u0627\u0633\u062A\u064A\u0631\u0627\u062F \u0625\u0644\u0649",
87559
87676
  "pluginImport.producedNoLayers": "\u0644\u0645 \u064A\u0646\u062A\u062C \u201D{name}\u201C \u0623\u064A \u0637\u0628\u0642\u0627\u062A",
87677
+ "pluginOverlays.addAgentTools": "\u0627\u0645\u0646\u062D \u0648\u0643\u064A\u0644 \u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064A {count, plural, zero {\u0635\u0641\u0631 \u0623\u062F\u0627\u0629} one {# \u0623\u062F\u0627\u0629} two {# \u0623\u062F\u0627\u062A\u064A\u0646} few {# \u0623\u062F\u0648\u0627\u062A} many {# \u0623\u062F\u0627\u0629} other {# \u0623\u062F\u0627\u0629}} \u0627\u0644\u062A\u064A \u062A\u0634\u063A\u0644 \u0647\u0630\u0627 \u0627\u0644\u0645\u0643\u0648\u0646 \u0627\u0644\u0625\u0636\u0627\u0641\u064A",
87678
+ "pluginOverlays.addsAgentTools": "\u064A\u0636\u064A\u0641 {count, plural, zero {\u0635\u0641\u0631 \u0623\u062F\u0627\u0629 \u0648\u0643\u064A\u0644} one {# \u0623\u062F\u0627\u0629 \u0648\u0643\u064A\u0644} two {# \u0623\u062F\u0627\u062A\u064A \u0648\u0643\u064A\u0644} few {# \u0623\u062F\u0648\u0627\u062A \u0648\u0643\u064A\u0644} many {# \u0623\u062F\u0627\u0629 \u0648\u0643\u064A\u0644} other {# \u0623\u062F\u0627\u0629 \u0648\u0643\u064A\u0644}}",
87560
87679
  "pluginOverlays.addsExport": "\u064A\u0636\u064A\u0641 \u0645\u0644\u0641 > \u062A\u0635\u062F\u064A\u0631 > {label}",
87561
87680
  "pluginOverlays.allowAndRun": "\u0627\u0644\u0633\u0645\u0627\u062D \u0648\u0627\u0644\u062A\u0634\u063A\u064A\u0644",
87562
87681
  "pluginOverlays.allowTo": "\u0627\u0644\u0633\u0645\u0627\u062D \u0644\u0640 \u201D{name}\u201C \u0628\u0640:",
@@ -89540,6 +89659,11 @@ var require_hi = __commonJS({
89540
89659
  "audioMeter.thisTimelineHasNoSound": "\u0907\u0938 \u091F\u093E\u0907\u092E\u0932\u093E\u0907\u0928 \u092E\u0947\u0902 \u0905\u092D\u0940 \u0924\u0915 \u0915\u094B\u0908 \u0906\u0935\u093E\u091C\u093C \u0928\u0939\u0940\u0902 \u0939\u0948: \u0907\u0938\u0947 \u091A\u0932\u093E\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0907\u0938\u0915\u0940 \u0932\u0947\u0928 \u092A\u0930 \u0911\u0921\u093F\u092F\u094B \u091C\u094B\u0921\u093C\u0947\u0902\u0964",
89541
89660
  "backgroundTasks.backgroundTasks": "\u092C\u0948\u0915\u0917\u094D\u0930\u093E\u0909\u0902\u0921 \u0915\u093E\u0930\u094D\u092F{value}",
89542
89661
  "backgroundTasks.cancelThisBackgroundTask": "\u0907\u0938 \u092C\u0948\u0915\u0917\u094D\u0930\u093E\u0909\u0902\u0921 \u0915\u093E\u0930\u094D\u092F \u0915\u094B \u0930\u0926\u094D\u0926 \u0915\u0930\u0947\u0902",
89662
+ "backgroundTasks.hideSteps": "\u0907\u0938\u0915\u0947 \u091A\u0930\u0923 \u091B\u093F\u092A\u093E\u090F\u0901",
89663
+ "backgroundTasks.noStepsYet": "\u0905\u092D\u0940 \u0924\u0915 \u0915\u094B\u0908 \u091A\u0930\u0923 \u0928\u0939\u0940\u0902\u0964",
89664
+ "backgroundTasks.queued": "\u0915\u0924\u093E\u0930\u092C\u0926\u094D\u0927",
89665
+ "backgroundTasks.showSteps": "\u0907\u0938\u0915\u0947 \u091A\u0930\u0923 \u0926\u093F\u0916\u093E\u090F\u0901",
89666
+ "backgroundTasks.stepRunning": "\u091A\u0932 \u0930\u0939\u093E \u0939\u0948\u2026",
89543
89667
  "bezierEditor.asCSS": "CSS \u0915\u0947 \u0930\u0942\u092A \u092E\u0947\u0902",
89544
89668
  "bezierEditor.copyThisCurve": "\u0907\u0938 \u0935\u0915\u094D\u0930 \u0915\u094B \u0915\u0949\u092A\u0940 \u0915\u0930\u0947\u0902",
89545
89669
  "bezierEditor.curve": "\u0935\u0915\u094D\u0930",
@@ -91651,7 +91775,9 @@ var require_hi = __commonJS({
91651
91775
  "mentionInput.addReaction": "\u092A\u094D\u0930\u0924\u093F\u0915\u094D\u0930\u093F\u092F\u093E \u091C\u094B\u0921\u093C\u0947\u0902",
91652
91776
  "mentionInput.someone": "\u0915\u094B\u0908",
91653
91777
  "mentionMenu.removeMention": "\u0909\u0932\u094D\u0932\u0947\u0916 \u0939\u091F\u093E\u090F\u0901",
91778
+ "messageParts.fromPlugin": "{plugin} \u092A\u094D\u0932\u0917\u0907\u0928 \u0938\u0947",
91654
91779
  "messageParts.plan": "\u092F\u094B\u091C\u0928\u093E",
91780
+ "messageParts.pluginTool": "{plugin} \xB7 {tool}",
91655
91781
  "messageParts.renderedView": "\u0930\u0947\u0902\u0921\u0930 \u0915\u093F\u092F\u093E \u0917\u092F\u093E \u0926\u0943\u0936\u094D\u092F",
91656
91782
  "messageParts.thinking": "\u0938\u094B\u091A \u0930\u0939\u093E \u0939\u0948",
91657
91783
  "minimap.minimapTapOrDragTo": "\u092E\u093F\u0928\u0940\u092E\u0948\u092A \u2014 \u0926\u0943\u0936\u094D\u092F \u0915\u094B \u0938\u094D\u0925\u093E\u0928\u093E\u0902\u0924\u0930\u093F\u0924 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u091F\u0948\u092A \u0915\u0930\u0947\u0902 \u092F\u093E \u0916\u0940\u0902\u091A\u0947\u0902, \u092A\u0943\u0937\u094D\u0920 \u0915\u094B \u092B\u093C\u093F\u091F \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0921\u092C\u0932-\u091F\u0948\u092A \u0915\u0930\u0947\u0902",
@@ -92246,6 +92372,7 @@ var require_hi = __commonJS({
92246
92372
  "planBadge.freePlan": "\u0928\u093F\u0903\u0936\u0941\u0932\u094D\u0915 \u092A\u094D\u0932\u093E\u0928",
92247
92373
  "planDialog.aICredits": "AI \u0915\u094D\u0930\u0947\u0921\u093F\u091F",
92248
92374
  "planDialog.aICreditsLeft": "\u0936\u0947\u0937 AI \u0915\u094D\u0930\u0947\u0921\u093F\u091F",
92375
+ "planDialog.appleIdTeamSlotTaken": "\u090F\u0915 Apple \u0916\u093E\u0924\u0947 \u092E\u0947\u0902 PopCraft \u092E\u0947\u0902 \u090F\u0915 \u0935\u094D\u092F\u0915\u094D\u0924\u093F\u0917\u0924 \u0914\u0930 \u090F\u0915 \u091F\u0940\u092E \u0938\u0926\u0938\u094D\u092F\u0924\u093E \u0939\u094B \u0938\u0915\u0924\u0940 \u0939\u0948\u0964 \u0907\u0938 Apple \u0916\u093E\u0924\u0947 \u092A\u0930 \u091F\u0940\u092E \u0938\u0926\u0938\u094D\u092F\u0924\u093E \u092A\u0939\u0932\u0947 \u0938\u0947 \u0939\u0940 \u0915\u093F\u0938\u0940 \u0905\u0928\u094D\u092F \u091F\u0940\u092E \u092E\u0947\u0902 \u0939\u0948\u0964",
92249
92376
  "planDialog.billedToTheTeamSelected": "\u0906\u092A\u0915\u0947 \u092A\u094D\u0932\u093E\u0928 \u0915\u0947 AI \u0915\u094D\u0930\u0947\u0921\u093F\u091F \u0938\u092E\u093E\u092A\u094D\u0924 \u0939\u094B\u0928\u0947 \u0915\u0947 \u092C\u093E\u0926, AI \u0909\u092A\u092F\u094B\u0917 \u0915\u0947 \u0905\u0928\u0941\u0938\u093E\u0930 \u092D\u0941\u0917\u0924\u093E\u0928 \u0915\u0930\u0947\u0902 \u0915\u0947 \u0906\u0927\u093E\u0930 \u092A\u0930 \u0915\u093E\u092E \u0915\u0930\u0947\u0917\u093E, \u091C\u093F\u0938\u0915\u093E \u092C\u093F\u0932 \u0909\u092A\u092F\u094B\u0917 \u0915\u0947 \u0906\u0927\u093E\u0930 \u092A\u0930 \u0932\u093F\u092F\u093E \u091C\u093E\u090F\u0917\u093E\u0964",
92250
92377
  "planDialog.billedYearly": "{price} \u0915\u093E \u092C\u093F\u0932 \u0938\u093E\u0932\u093E\u0928\u093E",
92251
92378
  "planDialog.billing": "\u092C\u093F\u0932\u093F\u0902\u0917 \u0905\u0935\u0927\u093F",
@@ -92326,6 +92453,8 @@ var require_hi = __commonJS({
92326
92453
  "pluginImport.noImporterIsInstalledFor": "\u201C{name}\u201D \u0915\u0947 \u0932\u093F\u090F \u0915\u094B\u0908 \u0906\u092F\u093E\u0924\u0915 \u0938\u094D\u0925\u093E\u092A\u093F\u0924 \u0928\u0939\u0940\u0902 \u0939\u0948",
92327
92454
  "pluginImport.openAFileToImport": "\u0906\u092F\u093E\u0924 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u090F\u0915 \u092B\u093C\u093E\u0907\u0932 \u0916\u094B\u0932\u0947\u0902",
92328
92455
  "pluginImport.producedNoLayers": "\u201C{name}\u201D \u0928\u0947 \u0915\u094B\u0908 \u092A\u0930\u0924\u0947\u0902 \u0928\u0939\u0940\u0902 \u092C\u0928\u093E\u0908\u0902",
92456
+ "pluginOverlays.addAgentTools": "AI \u090F\u091C\u0947\u0902\u091F \u0915\u094B {count, plural, one {# \u091F\u0942\u0932} other {# \u091F\u0942\u0932}} \u0926\u0947\u0902 \u091C\u094B \u0907\u0938 \u092A\u094D\u0932\u0917\u0907\u0928 \u0915\u094B \u091A\u0932\u093E\u0924\u0947 \u0939\u0948\u0902",
92457
+ "pluginOverlays.addsAgentTools": "{count, plural, one {# \u090F\u091C\u0947\u0902\u091F \u091F\u0942\u0932} other {# \u090F\u091C\u0947\u0902\u091F \u091F\u0942\u0932}} \u091C\u094B\u0921\u093C\u0924\u093E \u0939\u0948",
92329
92458
  "pluginOverlays.addsExport": "\u092B\u093C\u093E\u0907\u0932 \u203A \u0928\u093F\u0930\u094D\u092F\u093E\u0924 \u203A {label} \u091C\u094B\u0921\u093C\u0924\u093E \u0939\u0948",
92330
92459
  "pluginOverlays.allowAndRun": "\u0905\u0928\u0941\u092E\u0924\u093F \u0926\u0947\u0902 \u0914\u0930 \u091A\u0932\u093E\u090F\u0901",
92331
92460
  "pluginOverlays.allowTo": "\u201C{name}\u201D \u0915\u094B \u0907\u0938\u0915\u0940 \u0905\u0928\u0941\u092E\u0924\u093F \u0926\u0947\u0902:",
@@ -96321,7 +96450,6 @@ async function sha256Prefix(bytes2) {
96321
96450
  }
96322
96451
  var init_media_hash = __esm({
96323
96452
  "lib/storage/media-hash.ts"() {
96324
- "use strict";
96325
96453
  }
96326
96454
  });
96327
96455
 
@@ -96704,7 +96832,6 @@ function releaseMediaMemory(hash3) {
96704
96832
  var key2, peaksKey, objectUrls, sourceKey, remoteResolver, MEDIA_FETCH_TIMEOUT_MS, SHIPPED_MEDIA_PATH, notShipped, MEDIA_SCHEME, isImageDataUrl, memory, pendingLoads, sourceAliases, PAINT_KEYS, URL_KEYS;
96705
96833
  var init_media_store = __esm({
96706
96834
  "lib/storage/media-store.ts"() {
96707
- "use strict";
96708
96835
  init_media_types();
96709
96836
  init_idb();
96710
96837
  init_media_hash();
@@ -97221,7 +97348,6 @@ function selectionWorldBounds(nodes, ids2, scrollState) {
97221
97348
  }
97222
97349
  var init_selection_bounds = __esm({
97223
97350
  "lib/editor/selection-bounds.ts"() {
97224
- "use strict";
97225
97351
  init_scene_graph();
97226
97352
  init_transform();
97227
97353
  }
@@ -97413,7 +97539,6 @@ function relinkCopies(doc2, copies) {
97413
97539
  var TEXT_PATH_SOURCE_TYPES, isPathSource;
97414
97540
  var init_text_links = __esm({
97415
97541
  "lib/document/text-links.ts"() {
97416
- "use strict";
97417
97542
  init_transform();
97418
97543
  TEXT_PATH_SOURCE_TYPES = ["VECTOR", "ELLIPSE", "RECTANGLE", "POLYGON", "STAR", "LINE", "ARROW", "FRAME"];
97419
97544
  isPathSource = (n) => !!n && TEXT_PATH_SOURCE_TYPES.includes(n.type);
@@ -247863,7 +247988,6 @@ function resyncText(doc2, ids2) {
247863
247988
  var isVirtualId;
247864
247989
  var init_invariants2 = __esm({
247865
247990
  "lib/document/invariants.ts"() {
247866
- "use strict";
247867
247991
  init_auto_layout();
247868
247992
  init_scene_graph();
247869
247993
  init_text_bounds();
@@ -252299,7 +252423,6 @@ function resizeWindow(doc2, target2, rect) {
252299
252423
  }
252300
252424
  var init_crop = __esm({
252301
252425
  "lib/editor/crop.ts"() {
252302
- "use strict";
252303
252426
  init_dist_node();
252304
252427
  init_scene_graph();
252305
252428
  init_photo_frames();
@@ -252763,7 +252886,6 @@ function getActiveRenderer() {
252763
252886
  var active;
252764
252887
  var init_renderer_registry = __esm({
252765
252888
  "lib/engine/renderer-registry.ts"() {
252766
- "use strict";
252767
252889
  active = null;
252768
252890
  }
252769
252891
  });
@@ -256788,7 +256910,6 @@ function followPeers(peers) {
256788
256910
  var PALETTE, usePresence, awareness, CURSOR_SEND_MS, VIEWPORT_SEND_MS, cursorTimer, pendingCursor, sentCursor, EMOTE_MS, lastFollowCamera;
256789
256911
  var init_presence = __esm({
256790
256912
  "lib/collab/presence.ts"() {
256791
- "use strict";
256792
256913
  init_esm();
256793
256914
  init_editor_store();
256794
256915
  init_status_announcements();
@@ -260320,7 +260441,6 @@ function retuneShaderAudio(node2, fillId) {
260320
260441
  }
260321
260442
  var init_shader_audio = __esm({
260322
260443
  "lib/motion/shader-audio.ts"() {
260323
- "use strict";
260324
260444
  init_shader_params();
260325
260445
  init_modifier_edit();
260326
260446
  init_keys();
@@ -262288,7 +262408,6 @@ function formatLimit(key5, max3) {
262288
262408
  var formatBytes;
262289
262409
  var init_limits2 = __esm({
262290
262410
  "lib/billing/limits.ts"() {
262291
- "use strict";
262292
262411
  init_format();
262293
262412
  init_plans();
262294
262413
  formatBytes = formatFileSize;
@@ -305384,13 +305503,13 @@ var init_output = __esm({
305384
305503
  * prefer the `'target'` event for those cases.
305385
305504
  */
305386
305505
  get target() {
305387
- const errorMessage3 = "Output.target cannot be used when using PathedTarget with an async callback. Use the 'target' event instead.";
305506
+ const errorMessage4 = "Output.target cannot be used when using PathedTarget with an async callback. Use the 'target' event instead.";
305388
305507
  if (this._rootTargetPromise) {
305389
- throw new TypeError(errorMessage3);
305508
+ throw new TypeError(errorMessage4);
305390
305509
  }
305391
305510
  const rootTargetResult = this._getRootTarget();
305392
305511
  if (isThenable(rootTargetResult)) {
305393
- throw new TypeError(errorMessage3);
305512
+ throw new TypeError(errorMessage4);
305394
305513
  }
305395
305514
  return rootTargetResult;
305396
305515
  }
@@ -310619,7 +310738,6 @@ async function createFreshFileOrExplain(place4 = {}, seed2 = {}) {
310619
310738
  var online, goesLocal;
310620
310739
  var init_new_file = __esm({
310621
310740
  "lib/client/cloud/new-file.ts"() {
310622
- "use strict";
310623
310741
  init_scene_graph();
310624
310742
  init_print_pages();
310625
310743
  init_page_presets();
@@ -311160,6 +311278,7 @@ function startCloudSync() {
311160
311278
  var status, readOnlyDoc, activeLink, statusListeners, notice, urlArmed, opening, syncStatus, canEdit, uploaded, MEDIA_UPLOAD_PARALLEL, pushTimer, pushing, dirty, pendingMedia, collab, collabSession, collabAnonymous, uploadedThumbs, thumbCheckedAt, THUMB_EVERY_MS, THUMB_MIN_GAP_MS, putThumbnail, openingFiles, mediaHealed, started2;
311161
311279
  var init_sync2 = __esm({
311162
311280
  "lib/client/cloud/sync.ts"() {
311281
+ "use strict";
311163
311282
  init_paint_repair();
311164
311283
  init_migrate();
311165
311284
  init_view();
@@ -312426,7 +312545,6 @@ function applyTextPath(layout2, path, tp, rebase = true) {
312426
312545
  var defaultCircleRadius, ownsPath, mapPoint;
312427
312546
  var init_text_path = __esm({
312428
312547
  "lib/engine/text/text-path.ts"() {
312429
- "use strict";
312430
312548
  init_scene_graph();
312431
312549
  init_transform();
312432
312550
  init_shape_to_path();
@@ -312544,7 +312662,6 @@ function areaBounds(rings) {
312544
312662
  }
312545
312663
  var init_text_area = __esm({
312546
312664
  "lib/engine/text/text-area.ts"() {
312547
- "use strict";
312548
312665
  }
312549
312666
  });
312550
312667
 
@@ -314555,18 +314672,18 @@ function textItems(node2, ctx2, raw = node2) {
314555
314672
  }
314556
314673
  embed.splice(0, embed.length, ...withSpaces);
314557
314674
  }
314558
- const runs = /* @__PURE__ */ new Map();
314675
+ const runs2 = /* @__PURE__ */ new Map();
314559
314676
  for (const g of embed) {
314560
314677
  const size6 = g.fontSize;
314561
314678
  const key5 = `${size6}`;
314562
- let run4 = runs.get(key5);
314679
+ let run4 = runs2.get(key5);
314563
314680
  if (!run4) {
314564
314681
  run4 = { size: size6, color: color4, alpha: alpha2, glyphs: [] };
314565
- runs.set(key5, run4);
314682
+ runs2.set(key5, run4);
314566
314683
  }
314567
314684
  run4.glyphs.push({ font: g.font, gid: g.gid, codePoints: [], x: g.penX ?? g.x, y: g.baseline ?? g.y });
314568
314685
  }
314569
- items.push({ t: "text", runs: [...runs.values()] });
314686
+ items.push({ t: "text", runs: [...runs2.values()] });
314570
314687
  }
314571
314688
  const outlineCmds = (gs) => ctx2.textCurves ? glyphCmds(gs) : ringsCmds(glyphInstancesToRings(gs));
314572
314689
  const glyphRule = ctx2.textCurves ? "nonzero" : "evenodd";
@@ -316889,7 +317006,6 @@ async function exportSettingFile(renderer, node2, setting, doc2, styles) {
316889
317006
  var MIME, DEFAULT_EXPORT, exportSettingsOf;
316890
317007
  var init_export = __esm({
316891
317008
  "lib/io/export.ts"() {
316892
- "use strict";
316893
317009
  init_download();
316894
317010
  init_scene_graph();
316895
317011
  init_codecs();
@@ -316981,6 +317097,7 @@ async function selectionReferenceImages(doc2, selection, opts = {}) {
316981
317097
  var FIT_QUALITIES, FIT_SCALES, blobToDataUrl;
316982
317098
  var init_reference_images = __esm({
316983
317099
  "lib/ai/reference-images.ts"() {
317100
+ "use strict";
316984
317101
  init_export();
316985
317102
  init_selection_bounds();
316986
317103
  init_renderer_registry();
@@ -317334,6 +317451,7 @@ function videoPixelSize(resolution, aspect) {
317334
317451
  var VIDEO_ASPECTS, VIDEO_RESOLUTIONS, SEEDANCE_ASPECTS, range, VIDEO_MODELS, DEFAULT_VIDEO_MODEL, videoModel, VIDEO_LIMITS;
317335
317452
  var init_video_models = __esm({
317336
317453
  "lib/ai/video-models.ts"() {
317454
+ "use strict";
317337
317455
  VIDEO_ASPECTS = ["16:9", "9:16", "1:1", "4:3", "3:4", "21:9"];
317338
317456
  VIDEO_RESOLUTIONS = ["480p", "720p", "1080p"];
317339
317457
  SEEDANCE_ASPECTS = ["16:9", "9:16", "1:1", "4:3", "3:4", "21:9"];
@@ -317822,6 +317940,7 @@ function agentToolList() {
317822
317940
  var AGENT_CAPABILITIES, legacyCommandId, legacyTools, blobToDataUrl3, provided, legacyTool, legacyToolList;
317823
317941
  var init_agent = __esm({
317824
317942
  "lib/commands/agent.ts"() {
317943
+ "use strict";
317825
317944
  init_types5();
317826
317945
  init_registry();
317827
317946
  init_errors();
@@ -323162,11 +323281,11 @@ function textRuns(t3) {
323162
323281
  const text = t3.characters ?? "";
323163
323282
  const segs = [...t3.styledSegments ?? []].filter((s) => s.end > s.start).sort((a, b) => a.start - b.start);
323164
323283
  if (!segs.length && !t3.link) return void 0;
323165
- const runs = [];
323284
+ const runs2 = [];
323166
323285
  const push2 = (from2, to, seg) => {
323167
323286
  if (to <= from2) return;
323168
323287
  const link2 = seg?.link ?? t3.link;
323169
- runs.push({ text: text.slice(from2, to), style: seg ? runStyle(seg) : {}, ...link2 ? { link: link2 } : {} });
323288
+ runs2.push({ text: text.slice(from2, to), style: seg ? runStyle(seg) : {}, ...link2 ? { link: link2 } : {} });
323170
323289
  };
323171
323290
  let at4 = 0;
323172
323291
  for (const s of segs) {
@@ -323176,7 +323295,7 @@ function textRuns(t3) {
323176
323295
  at4 = Math.max(at4, end);
323177
323296
  }
323178
323297
  push2(at4, text.length);
323179
- return runs;
323298
+ return runs2;
323180
323299
  }
323181
323300
  var init_richtext = __esm({
323182
323301
  "lib/io/web/richtext.ts"() {
@@ -323937,8 +324056,8 @@ function buildPlainTree(doc2, nodeId2, opts = {}, start2, hooks = {}) {
323937
324056
  ...t3.letterSpacing ? { letterSpacing: t3.letterSpacing } : {},
323938
324057
  ...t3.lineHeight !== "AUTO" ? { lineHeight: t3.lineHeight } : {}
323939
324058
  };
323940
- const runs = textRuns(t3);
323941
- if (runs) web.runs = runs;
324059
+ const runs2 = textRuns(t3);
324060
+ if (runs2) web.runs = runs2;
323942
324061
  }
323943
324062
  const tl = timeline?.get(node2.id);
323944
324063
  const mo = tl ?? motion?.children.get(node2.id);
@@ -327685,7 +327804,7 @@ var init_package = __esm({
327685
327804
  "packages/runtime/package.json"() {
327686
327805
  package_default = {
327687
327806
  name: "@popcraft/runtime",
327688
- version: "0.42.1",
327807
+ version: "0.42.2",
327689
327808
  description: "What code exported from PopCraft shares: the meaning of expressions (operators and functions) and, as it grows, the parts of a design's behaviour that are common code rather than generated React.",
327690
327809
  license: "MIT",
327691
327810
  homepage: "https://popcraft.app/docs/exporting/nextjs",
@@ -352470,7 +352589,6 @@ function hashOf2(text) {
352470
352589
  }
352471
352590
  var init_hash = __esm({
352472
352591
  "lib/code/hash.ts"() {
352473
- "use strict";
352474
352592
  }
352475
352593
  });
352476
352594
 
@@ -361433,7 +361551,6 @@ var init_delete_current_file = __esm({
361433
361551
  var storeOpsSeam;
361434
361552
  var init_seams = __esm({
361435
361553
  "lib/commands/seams.ts"() {
361436
- "use strict";
361437
361554
  storeOpsSeam = (st) => ({
361438
361555
  booleanOperation: (op4) => st().booleanOperation(op4),
361439
361556
  flatten: () => st().flattenSelection(),
@@ -362435,7 +362552,7 @@ var init_theme_store = __esm({
362435
362552
  init_tauri();
362436
362553
  IDB_KEY = "popcraft-themes";
362437
362554
  useThemeStore = create2((setState, getState2) => {
362438
- const persist3 = () => {
362555
+ const persist2 = () => {
362439
362556
  const { activeThemeId, userThemes, accent } = getState2();
362440
362557
  void set3(IDB_KEY, { activeThemeId, userThemes, accent }).then(announceThemeChange, announceThemeChange);
362441
362558
  };
@@ -362463,14 +362580,14 @@ var init_theme_store = __esm({
362463
362580
  },
362464
362581
  setAccent: (accent) => {
362465
362582
  setState({ accent });
362466
- persist3();
362583
+ persist2();
362467
362584
  },
362468
362585
  setSystemAccent: (hex10) => {
362469
362586
  if (hex10 !== getState2().systemAccent) setState({ systemAccent: hex10 });
362470
362587
  },
362471
362588
  setActiveTheme: (id3) => {
362472
362589
  setState({ activeThemeId: id3, draft: {} });
362473
- persist3();
362590
+ persist2();
362474
362591
  },
362475
362592
  setDraftToken: (id3, value3) => setState((s) => {
362476
362593
  const draft = { ...s.draft };
@@ -362482,14 +362599,14 @@ var init_theme_store = __esm({
362482
362599
  saveUserTheme: (theme) => {
362483
362600
  const t3 = validateTheme(theme);
362484
362601
  setState((s) => ({ userThemes: [...s.userThemes.filter((u) => u.id !== t3.id), t3] }));
362485
- persist3();
362602
+ persist2();
362486
362603
  },
362487
362604
  removeUserTheme: (id3) => {
362488
362605
  setState((s) => ({
362489
362606
  userThemes: s.userThemes.filter((u) => u.id !== id3),
362490
362607
  activeThemeId: s.activeThemeId === id3 ? INITIAL_THEME_ID : s.activeThemeId
362491
362608
  }));
362492
- persist3();
362609
+ persist2();
362493
362610
  },
362494
362611
  commitDraft: (name2) => {
362495
362612
  const s = getState2();
@@ -362510,7 +362627,7 @@ var init_theme_store = __esm({
362510
362627
  };
362511
362628
  s.saveUserTheme(theme);
362512
362629
  setState({ activeThemeId: theme.id, draft: {} });
362513
- persist3();
362630
+ persist2();
362514
362631
  return theme.id;
362515
362632
  },
362516
362633
  duplicateActive: (name2) => {
@@ -362526,7 +362643,7 @@ var init_theme_store = __esm({
362526
362643
  };
362527
362644
  s.saveUserTheme(theme);
362528
362645
  setState({ activeThemeId: theme.id, draft: {} });
362529
- persist3();
362646
+ persist2();
362530
362647
  return theme.id;
362531
362648
  },
362532
362649
  setUserThemeCss: (id3, css) => {
@@ -365305,7 +365422,7 @@ async function runAgentLoop(opts) {
365305
365422
  onToolStart(info2) ?? null;
365306
365423
  }
365307
365424
  }
365308
- let runs = await (Promise.all(batch.map(async (info2) => {
365425
+ let runs2 = await (Promise.all(batch.map(async (info2) => {
365309
365426
  {
365310
365427
  try {
365311
365428
  {
@@ -365320,7 +365437,7 @@ async function runAgentLoop(opts) {
365320
365437
  }
365321
365438
  }) ?? null) ?? null);
365322
365439
  let onToolEnd = hook(hooks, "onToolEnd") ?? null;
365323
- for (const run4 of runs) {
365440
+ for (const run4 of runs2) {
365324
365441
  let actedHere = ((__v) => __v == null ? "null" : typeof __v)(run4.acted) === "boolean" ? run4.acted : actingNames.has(run4.name) ?? null;
365325
365442
  if (run4.ok === true && actedHere) {
365326
365443
  acted = true;
@@ -365440,7 +365557,7 @@ function createAgentRuntime(host) {
365440
365557
  emit6({ type: "session", sessionId: s.id, status: s.status, profile: s.profile, description: s.description }) ?? null;
365441
365558
  }
365442
365559
  };
365443
- let persist3 = (s) => {
365560
+ let persist2 = (s) => {
365444
365561
  {
365445
365562
  changed() ?? null;
365446
365563
  if (host.store == null || ((__v) => __v == null ? "null" : typeof __v)(host.store) !== "object") {
@@ -365585,7 +365702,7 @@ function createAgentRuntime(host) {
365585
365702
  parentQueue.push("Agent " + session3.id + " (" + session3.profile + ") " + (ok2 ? "finished" : "failed") + ":\n" + summary) ?? null;
365586
365703
  }
365587
365704
  sessionEvent(session3) ?? null;
365588
- persist3(session3) ?? null;
365705
+ persist2(session3) ?? null;
365589
365706
  return { ok: ok2, summary, rounds };
365590
365707
  }
365591
365708
  };
@@ -365660,7 +365777,7 @@ function createAgentRuntime(host) {
365660
365777
  }
365661
365778
  s.status = "stopped";
365662
365779
  s.endedAt = now2() ?? null;
365663
- persist3(s) ?? null;
365780
+ persist2(s) ?? null;
365664
365781
  return true;
365665
365782
  }
365666
365783
  };
@@ -365792,7 +365909,7 @@ function createAgentRuntime(host) {
365792
365909
  }
365793
365910
  if (session3.status === "running" || session3.status === "queued") {
365794
365911
  session3.inbox.push(text) ?? null;
365795
- persist3(session3) ?? null;
365912
+ persist2(session3) ?? null;
365796
365913
  return { kind: "queued", id: id3 };
365797
365914
  }
365798
365915
  let profile = profileById(session3.profile) ?? null;
@@ -365838,6 +365955,11 @@ var init_runtime5 = __esm({
365838
365955
  });
365839
365956
 
365840
365957
  // node_modules/.pnpm/@hyperyai+sdk@2.1.0_@types+react-dom@19.3.0_@types+react@19.3.0__@types+react@19.3.0_re_62022f8c0abbfd4c405f5fb20b5aa9ec/node_modules/@hyperyai/sdk/dist/agents/core/types.js
365958
+ function forceTool(name2) {
365959
+ {
365960
+ return { type: "function", function: { name: name2 } };
365961
+ }
365962
+ }
365841
365963
  var init_types9 = __esm({
365842
365964
  "node_modules/.pnpm/@hyperyai+sdk@2.1.0_@types+react-dom@19.3.0_@types+react@19.3.0__@types+react@19.3.0_re_62022f8c0abbfd4c405f5fb20b5aa9ec/node_modules/@hyperyai/sdk/dist/agents/core/types.js"() {
365843
365965
  }
@@ -365900,14 +366022,119 @@ function sessionStore(kv, scope) {
365900
366022
  } };
365901
366023
  }
365902
366024
  }
366025
+ function runStore(kv, scope) {
366026
+ {
366027
+ let prefix = (scope ?? "default") + ":run:";
366028
+ return { get: async (id3) => {
366029
+ {
366030
+ return await (kv.get(prefix + id3) ?? null);
366031
+ }
366032
+ }, save: async (run4) => {
366033
+ {
366034
+ await (kv.set(prefix + run4.id, run4) ?? null);
366035
+ }
366036
+ }, list: async () => {
366037
+ {
366038
+ return await (loadAll(kv, prefix) ?? null);
366039
+ }
366040
+ }, remove: async (id3) => {
366041
+ {
366042
+ await ((kv["delete"] ?? null)(prefix + id3) ?? null);
366043
+ }
366044
+ } };
366045
+ }
366046
+ }
365903
366047
  var init_store = __esm({
365904
366048
  "node_modules/.pnpm/@hyperyai+sdk@2.1.0_@types+react-dom@19.3.0_@types+react@19.3.0__@types+react@19.3.0_re_62022f8c0abbfd4c405f5fb20b5aa9ec/node_modules/@hyperyai/sdk/dist/agents/core/store.js"() {
365905
366049
  }
365906
366050
  });
365907
366051
 
365908
366052
  // node_modules/.pnpm/@hyperyai+sdk@2.1.0_@types+react-dom@19.3.0_@types+react@19.3.0__@types+react@19.3.0_re_62022f8c0abbfd4c405f5fb20b5aa9ec/node_modules/@hyperyai/sdk/dist/agents/core/run.js
366053
+ function errorMessage3(err2) {
366054
+ {
366055
+ if (err2 != null && ((__v) => __v == null ? "null" : typeof __v)(err2) === "object" && ((__v) => __v == null ? "null" : typeof __v)(err2.message) === "string") {
366056
+ return err2.message;
366057
+ }
366058
+ return String(err2) ?? null;
366059
+ }
366060
+ }
366061
+ async function runPersistent(opts) {
366062
+ {
366063
+ let now2 = ((__v) => __v == null ? "null" : typeof __v)(opts.now) === "function" ? opts.now : () => {
366064
+ {
366065
+ return Date.now() ?? null;
366066
+ }
366067
+ };
366068
+ let existing = await (opts.runs.get(opts.id) ?? null);
366069
+ let createdAt = existing != null ? existing.createdAt : now2() ?? null;
366070
+ let record2 = (status3, checkpoint) => {
366071
+ {
366072
+ let todos = opts.todos != null && ((__v) => __v == null ? "null" : typeof __v)(opts.todos) === "object" ? opts.todos.get() ?? null : existing != null ? existing.todos ?? null : null;
366073
+ let meta3 = opts.meta ?? (existing != null ? existing.meta ?? null : null);
366074
+ return { id: opts.id, createdAt, updatedAt: now2() ?? null, meta: meta3, todos, status: status3, checkpoint };
366075
+ }
366076
+ };
366077
+ let first2 = existing != null ? existing.checkpoint : { messages: opts.messages, round: 0, acted: false, nudgesLeft: 0, done: false };
366078
+ await (opts.runs.save(record2("running", first2) ?? null) ?? null);
366079
+ let mark2 = async (status3, error62) => {
366080
+ {
366081
+ let saved = await (opts.runs.get(opts.id) ?? null);
366082
+ if (saved != null) {
366083
+ let next2 = { ...saved, status: status3, updatedAt: now2() ?? null };
366084
+ if (((__v) => __v == null ? "null" : typeof __v)(error62) === "string") {
366085
+ next2.error = error62;
366086
+ }
366087
+ await (opts.runs.save(next2) ?? null);
366088
+ }
366089
+ }
366090
+ };
366091
+ let outcome = null;
366092
+ try {
366093
+ {
366094
+ outcome = await (runAgentLoop({ ...opts, checkpoint: async (state) => {
366095
+ {
366096
+ await (opts.runs.save(record2(state.done ? "done" : "running", state) ?? null) ?? null);
366097
+ if (((__v) => __v == null ? "null" : typeof __v)(opts.checkpoint) === "function") {
366098
+ await (opts.checkpoint(state) ?? null);
366099
+ }
366100
+ }
366101
+ } }) ?? null);
366102
+ }
366103
+ } catch (err2) {
366104
+ {
366105
+ await (mark2("error", errorMessage3(err2) ?? null) ?? null);
366106
+ throw err2;
366107
+ }
366108
+ }
366109
+ if (outcome.stopped) {
366110
+ await (mark2("stopped", null) ?? null);
366111
+ }
366112
+ return outcome;
366113
+ }
366114
+ }
366115
+ async function interruptedRuns(runs2, activeIds) {
366116
+ {
366117
+ let active3 = new Set(activeIds ?? []) ?? null;
366118
+ return (await (runs2.list() ?? null)).filter((r) => {
366119
+ {
366120
+ return r.status === "running" && !(active3.has(r.id) ?? null);
366121
+ }
366122
+ }) ?? null;
366123
+ }
366124
+ }
366125
+ async function resumeRun(id3, runs2, options) {
366126
+ {
366127
+ let saved = await (runs2.get(id3) ?? null);
366128
+ if (saved == null) {
366129
+ throw { message: 'No saved run "' + id3 + '".', code: "not_found" };
366130
+ }
366131
+ let cp = saved.checkpoint;
366132
+ return await (runPersistent({ ...options, id: id3, runs: runs2, messages: cp.messages.concat([{ role: "user", content: "The session was interrupted and has resumed. Check the state of your work, then carry on where you left off." }]) ?? null, resumeState: { round: cp.round, acted: cp.acted, nudgesLeft: cp.nudgesLeft }, meta: options.meta ?? saved.meta ?? null }) ?? null);
366133
+ }
366134
+ }
365909
366135
  var init_run = __esm({
365910
366136
  "node_modules/.pnpm/@hyperyai+sdk@2.1.0_@types+react-dom@19.3.0_@types+react@19.3.0__@types+react@19.3.0_re_62022f8c0abbfd4c405f5fb20b5aa9ec/node_modules/@hyperyai/sdk/dist/agents/core/run.js"() {
366137
+ init_loop();
365911
366138
  }
365912
366139
  });
365913
366140
 
@@ -365997,11 +366224,6 @@ var init_stream_parse = __esm({
365997
366224
  });
365998
366225
 
365999
366226
  // lib/agent/gateway.ts
366000
- async function streamChat(opts, handlers = {}, signal) {
366001
- const call2 = createHyperyModel2({ ...session2, model: opts.model, maxTokens: opts.maxTokens, temperature: opts.temperature });
366002
- const turn = await call2(opts.messages, opts.tools ?? [], handlers, signal);
366003
- return { text: turn.text, reasoning: turn.reasoning ?? "", toolCalls: turn.toolCalls };
366004
- }
366005
366227
  var session2, agentModel;
366006
366228
  var init_gateway = __esm({
366007
366229
  "lib/agent/gateway.ts"() {
@@ -366030,11 +366252,192 @@ var init_gateway = __esm({
366030
366252
  }
366031
366253
  });
366032
366254
 
366033
- // lib/agent/loop.ts
366034
- var init_loop2 = __esm({
366035
- "lib/agent/loop.ts"() {
366255
+ // lib/agent/turn-recovery.ts
366256
+ function wantsChange(text) {
366257
+ const body = text.trim();
366258
+ if (!body) return false;
366259
+ return !(body.endsWith("?") && QUESTION_START.test(body));
366260
+ }
366261
+ function createActionGuard(opts) {
366262
+ const maxReads = opts.maxReadRounds ?? MAX_READ_ROUNDS;
366263
+ const maxNudges = opts.nudges ?? ACTION_NUDGES;
366264
+ let readRounds = opts.initial?.readRounds ?? 0;
366265
+ let nudges = opts.initial?.nudges ?? 0;
366266
+ let acted = false;
366267
+ let actedThisRound = false;
366268
+ let ranThisRound = false;
366269
+ let notes = [];
366270
+ let choice = null;
366271
+ let budgetSpent = readRounds >= maxReads;
366272
+ return {
366273
+ onRun(run4, changed) {
366274
+ ranThisRound = true;
366275
+ if (run4.ok && changed) {
366276
+ acted = true;
366277
+ actedThisRound = true;
366278
+ }
366279
+ },
366280
+ onRoundEnd() {
366281
+ if (!opts.enabled || acted || !ranThisRound) {
366282
+ ranThisRound = false;
366283
+ actedThisRound = false;
366284
+ return;
366285
+ }
366286
+ if (!actedThisRound) readRounds++;
366287
+ ranThisRound = false;
366288
+ actedThisRound = false;
366289
+ if (!budgetSpent && readRounds >= maxReads) {
366290
+ budgetSpent = true;
366291
+ notes.push(READ_BUDGET_NOTE);
366292
+ choice = "required";
366293
+ }
366294
+ },
366295
+ onNudge() {
366296
+ nudges++;
366297
+ if (opts.enabled && nudges >= maxNudges && opts.writeTool) choice = forceTool(opts.writeTool);
366298
+ else if (opts.enabled) choice = "required";
366299
+ return nudges;
366300
+ },
366301
+ drain() {
366302
+ const out = notes;
366303
+ notes = [];
366304
+ return out;
366305
+ },
366306
+ toolChoice() {
366307
+ if (acted) return null;
366308
+ const c2 = choice;
366309
+ choice = null;
366310
+ return c2;
366311
+ },
366312
+ get acted() {
366313
+ return acted;
366314
+ },
366315
+ state: () => ({ readRounds, nudges, forced: budgetSpent })
366316
+ };
366317
+ }
366318
+ function createToolLedger(initial = null) {
366319
+ let done = { ...initial ?? {} };
366320
+ return {
366321
+ get: (id3) => done[id3],
366322
+ record: (run4) => {
366323
+ done = { ...done, [run4.id]: { id: run4.id, name: run4.name, argsText: run4.argsText, ok: run4.ok, summary: run4.summary, content: run4.content } };
366324
+ },
366325
+ entries: () => done,
366326
+ clear: () => {
366327
+ done = {};
366328
+ }
366329
+ };
366330
+ }
366331
+ async function runOnce(ledger, call2, run4) {
366332
+ const seen = ledger.get(call2.id);
366333
+ if (seen) return { ...seen, acted: false, replayed: true };
366334
+ const result = await run4();
366335
+ ledger.record(result);
366336
+ return result;
366337
+ }
366338
+ function resumeTranscript(checkpoint, pending8, ledger) {
366339
+ if (!pending8?.calls.length) return checkpoint;
366340
+ const answered = new Set(checkpoint.filter((m) => m.role === "tool").map((m) => m.tool_call_id));
366341
+ if (pending8.calls.every((c2) => answered.has(c2.id))) return checkpoint;
366342
+ const assistant = {
366343
+ role: "assistant",
366344
+ content: pending8.text,
366345
+ tool_calls: pending8.calls.map((c2) => ({ id: c2.id, type: "function", function: { name: c2.name, arguments: c2.argsText } }))
366346
+ };
366347
+ const answers = pending8.calls.map((c2) => ledger?.[c2.id]).filter((e) => !!e).map((e) => ({ role: "tool", tool_call_id: e.id, name: e.name, content: e.content }));
366348
+ return [...checkpoint, assistant, ...answers];
366349
+ }
366350
+ function whenResumable(signals = browserSignals(), signal, offlineWaitMs = 0) {
366351
+ if (!signals || signal?.aborted) return Promise.resolve();
366352
+ const visible2 = () => !signals.hidden() ? Promise.resolve() : new Promise((resolve7) => {
366353
+ const done = () => {
366354
+ off();
366355
+ signal?.removeEventListener("abort", done);
366356
+ resolve7();
366357
+ };
366358
+ const off = signals.subscribe(() => {
366359
+ if (!signals.hidden()) done();
366360
+ });
366361
+ signal?.addEventListener("abort", done);
366362
+ });
366363
+ return visible2().then(() => {
366364
+ if (!offlineWaitMs || signals.online() || signal?.aborted) return;
366365
+ return new Promise((resolve7) => {
366366
+ const done = () => {
366367
+ clearTimeout(timer);
366368
+ off();
366369
+ signal?.removeEventListener("abort", done);
366370
+ resolve7();
366371
+ };
366372
+ const timer = setTimeout(done, offlineWaitMs);
366373
+ const off = signals.subscribe(() => {
366374
+ if (signals.online()) done();
366375
+ });
366376
+ signal?.addEventListener("abort", done);
366377
+ });
366378
+ });
366379
+ }
366380
+ function isInterruption(err2, hidden2 = false) {
366381
+ if (hidden2) return true;
366382
+ const e = err2 ?? {};
366383
+ if (e.code === "ai_timeout") return true;
366384
+ if (typeof e.status === "number") return e.status >= 500 || e.status === 408;
366385
+ const text = `${String(e.name ?? "")} ${String(e.code ?? "")} ${String(e.message ?? "")}`.toLowerCase();
366386
+ return ["load failed", "failed to fetch", "network", "fetch failed", "econnreset", "socket", "stream", "stalled", "timed out", "timeout"].some((w) => text.includes(w));
366387
+ }
366388
+ function serialRuns(inner) {
366389
+ const latest = /* @__PURE__ */ new Map();
366390
+ let queue2 = Promise.resolve();
366391
+ return {
366392
+ peek: (id3) => latest.get(id3),
366393
+ get: async (id3) => latest.get(id3) ?? inner.get(id3),
366394
+ save: (rec) => {
366395
+ latest.set(rec.id, rec);
366396
+ const write3 = queue2.then(() => inner.save(rec));
366397
+ queue2 = write3.catch(() => {
366398
+ });
366399
+ return write3;
366400
+ },
366401
+ list: async () => {
366402
+ await queue2;
366403
+ return inner.list();
366404
+ },
366405
+ remove: (id3) => {
366406
+ latest.delete(id3);
366407
+ const write3 = queue2.then(() => inner.remove(id3));
366408
+ queue2 = write3.catch(() => {
366409
+ });
366410
+ return write3;
366411
+ }
366412
+ };
366413
+ }
366414
+ var ACTION_NUDGES, MAX_READ_ROUNDS, READ_BUDGET_NOTE, ACTION_NUDGE, QUESTION_START, browserSignals;
366415
+ var init_turn_recovery = __esm({
366416
+ "lib/agent/turn-recovery.ts"() {
366036
366417
  "use strict";
366037
366418
  init_agents();
366419
+ ACTION_NUDGES = 2;
366420
+ MAX_READ_ROUNDS = 4;
366421
+ READ_BUDGET_NOTE = "You have read enough to start. Make the change now with a tool that edits the document; read more only if a write fails.";
366422
+ ACTION_NUDGE = "Nothing has changed in the document yet. Make the change that was asked for now, with a tool that edits the document. If you truly cannot, say exactly what is blocking you.";
366423
+ QUESTION_START = /^(what|why|how|which|who|where|when|is|are|does|do|did|can you (explain|tell)|could you (explain|tell)|explain|describe|tell me|list|show me what)\b/i;
366424
+ browserSignals = () => {
366425
+ if (typeof document === "undefined" || typeof window === "undefined") return null;
366426
+ return {
366427
+ hidden: () => document.visibilityState === "hidden",
366428
+ online: () => typeof navigator === "undefined" || navigator.onLine !== false,
366429
+ subscribe: (fn) => {
366430
+ document.addEventListener("visibilitychange", fn);
366431
+ window.addEventListener("online", fn);
366432
+ window.addEventListener("pageshow", fn);
366433
+ return () => {
366434
+ document.removeEventListener("visibilitychange", fn);
366435
+ window.removeEventListener("online", fn);
366436
+ window.removeEventListener("pageshow", fn);
366437
+ };
366438
+ }
366439
+ };
366440
+ };
366038
366441
  }
366039
366442
  });
366040
366443
 
@@ -366797,10 +367200,10 @@ function fullestFrame(frames) {
366797
367200
  return 0;
366798
367201
  }
366799
367202
  function posterSchedule(durations) {
366800
- const runs = durations.map((d) => Math.min(PREVIEW_MAX_MS2, Math.max(0, d)));
366801
- const period = Math.max(0, ...runs.map((r) => r + PREVIEW_HOLD_MS));
367203
+ const runs2 = durations.map((d) => Math.min(PREVIEW_MAX_MS2, Math.max(0, d)));
367204
+ const period = Math.max(0, ...runs2.map((r) => r + PREVIEW_HOLD_MS));
366802
367205
  const count2 = Math.max(1, Math.ceil(period * PREVIEW_FPS / 1e3));
366803
- const cells = runs.map((run4) => Array.from({ length: count2 }, (_, i2) => Math.min(run4, i2 * 1e3 / PREVIEW_FPS % (run4 + PREVIEW_HOLD_MS))));
367206
+ const cells = runs2.map((run4) => Array.from({ length: count2 }, (_, i2) => Math.min(run4, i2 * 1e3 / PREVIEW_FPS % (run4 + PREVIEW_HOLD_MS))));
366804
367207
  return { delay: Math.round(1e3 / PREVIEW_FPS), cells };
366805
367208
  }
366806
367209
  function blitRGBA(dst, dw, dh, src, sw, sh, x2, y) {
@@ -400301,7 +400704,6 @@ function designRecorder() {
400301
400704
  var installed;
400302
400705
  var init_recorders = __esm({
400303
400706
  "lib/agent/design-script/recorders.ts"() {
400304
- "use strict";
400305
400707
  installed = null;
400306
400708
  }
400307
400709
  });
@@ -400510,10 +400912,14 @@ var init_live3 = __esm({
400510
400912
  // lib/agent/runner.ts
400511
400913
  var runner_exports = {};
400512
400914
  __export(runner_exports, {
400915
+ agentRuns: () => agentRuns,
400916
+ continueTurn: () => continueTurn,
400513
400917
  editorToolContext: () => editorToolContext,
400514
400918
  needsEditableSession: () => needsEditableSession,
400515
400919
  onChildTool: () => onChildTool,
400516
- runTurn: () => runTurn
400920
+ resumeInterrupted: () => resumeInterrupted,
400921
+ runTurn: () => runTurn,
400922
+ setAgentRuns: () => setAgentRuns
400517
400923
  });
400518
400924
  function needsEditableSession(name2) {
400519
400925
  const tool2 = getTool(name2);
@@ -400560,70 +400966,284 @@ async function runTurn(text, mentions = []) {
400560
400966
  useAgentStore.setState({ error: { message: availability3.message, code: availability3.reason } });
400561
400967
  return;
400562
400968
  }
400563
- const model = agentModel2();
400564
- if (!model) {
400969
+ if (!agentModel2()) {
400565
400970
  useAgentStore.setState({ error: { message: "Pick a chat model for the agent first.", code: "no_model" } });
400566
400971
  return;
400567
400972
  }
400568
400973
  const skillId = mentions.find((m) => m.kind === "skill")?.id ?? useAgentStore.getState().skillId;
400569
- const before = useEditorStore.getState().document;
400570
- const checkpoint = rememberCheckpoint(before);
400974
+ const checkpoint = rememberCheckpoint(useEditorStore.getState().document);
400571
400975
  const user2 = { id: newId2(), role: "user", parts: [{ type: "text", text }], createdAt: Date.now() };
400572
400976
  appendMessage(user2);
400573
400977
  const assistantId = newId2();
400574
- appendMessage({ id: assistantId, role: "assistant", parts: [], createdAt: Date.now(), checkpoint }, { save: false });
400575
- let parts = [];
400576
- const flush = (save = false) => setParts(assistantId, parts, { save });
400978
+ appendMessage({ id: assistantId, role: "assistant", parts: [], createdAt: Date.now(), checkpoint });
400979
+ const s = useAgentStore.getState();
400980
+ const meta3 = {
400981
+ documentId: s.documentId ?? useEditorStore.getState().document.id,
400982
+ threadId: s.activeThreadId ?? "",
400983
+ assistantId,
400984
+ skillId,
400985
+ mentions,
400986
+ wantsChange: wantsChange(text)
400987
+ };
400988
+ await drive(meta3, { messages: [systemMessage(skillId, mentions), ...historyMessages()], checkpoint });
400989
+ }
400990
+ async function resumeInterrupted(documentId) {
400991
+ if (useAgentStore.getState().running) return false;
400992
+ const store6 = agentRuns();
400993
+ let list2;
400994
+ try {
400995
+ list2 = await interruptedRuns(store6);
400996
+ } catch {
400997
+ return false;
400998
+ }
400999
+ const mine = list2.filter((r) => r.meta?.documentId === documentId).sort((a, b) => b.updatedAt - a.updatedAt);
401000
+ const [latest, ...rest] = mine;
401001
+ for (const r of rest) await store6.save({ ...r, status: "stopped", updatedAt: Date.now() });
401002
+ if (!latest) return false;
401003
+ if (Date.now() - latest.updatedAt > RESUME_WINDOW_MS || !findMessage(latest.meta)) {
401004
+ await store6.save({ ...latest, status: "stopped", updatedAt: Date.now() });
401005
+ return false;
401006
+ }
401007
+ if (useAgentStore.getState().running) return false;
401008
+ await drive(latest.meta, { resume: latest });
401009
+ return true;
401010
+ }
401011
+ async function continueTurn() {
401012
+ const s = useAgentStore.getState();
401013
+ if (s.running) return false;
401014
+ const messages = activeMessages();
401015
+ const last3 = [...messages].reverse().find((m) => m.role === "assistant");
401016
+ if (!last3) return false;
401017
+ const record2 = await agentRuns().get(last3.id).catch(() => null);
401018
+ if (record2?.meta && record2.meta.threadId === s.activeThreadId) {
401019
+ await drive(record2.meta, { resume: { ...record2, status: "running" } });
401020
+ return true;
401021
+ }
401022
+ const ask2 = [...messages].reverse().find((m) => m.role === "user");
401023
+ if (!ask2) return false;
401024
+ await runTurn(textOf3(ask2));
401025
+ return true;
401026
+ }
401027
+ function findMessage(meta3) {
401028
+ if (!meta3) return void 0;
401029
+ return useAgentStore.getState().threads.find((t3) => t3.id === meta3.threadId)?.messages.find((m) => m.id === meta3.assistantId);
401030
+ }
401031
+ function installPageHandlers() {
401032
+ if (typeof window === "undefined") return () => {
401033
+ };
401034
+ const save = () => persistThreads();
401035
+ const onVisibility = () => {
401036
+ if (document.visibilityState === "hidden") save();
401037
+ };
401038
+ window.addEventListener("pagehide", save);
401039
+ document.addEventListener("visibilitychange", onVisibility);
401040
+ return () => {
401041
+ window.removeEventListener("pagehide", save);
401042
+ document.removeEventListener("visibilitychange", onVisibility);
401043
+ };
401044
+ }
401045
+ function resilientModel(model, turn, parts) {
401046
+ return async (messages, specs, hooks, _signal, request2) => {
401047
+ await whenResumable(void 0, turn);
401048
+ const call2 = new AbortController();
401049
+ const onTurnAbort = () => call2.abort();
401050
+ turn.addEventListener("abort", onTurnAbort);
401051
+ let hiddenAt = 0;
401052
+ const onVisibility = () => {
401053
+ if (document.visibilityState === "hidden") hiddenAt = Date.now();
401054
+ else if (hiddenAt && Date.now() - hiddenAt > SUSPEND_RESTART_MS) call2.abort();
401055
+ };
401056
+ if (typeof document !== "undefined") document.addEventListener("visibilitychange", onVisibility);
401057
+ const base = parts.get();
401058
+ try {
401059
+ const cut = new Promise((_, reject) => call2.signal.addEventListener("abort", () => reject(new Error("aborted")), { once: true }));
401060
+ cut.catch(() => {
401061
+ });
401062
+ return await Promise.race([model(messages, specs, hooks, call2.signal, request2), cut]);
401063
+ } catch (err2) {
401064
+ parts.set(base);
401065
+ if (call2.signal.aborted && !turn.aborted) throw { message: "The stream was interrupted.", code: "interrupted" };
401066
+ throw err2;
401067
+ } finally {
401068
+ turn.removeEventListener("abort", onTurnAbort);
401069
+ if (typeof document !== "undefined") document.removeEventListener("visibilitychange", onVisibility);
401070
+ }
401071
+ };
401072
+ }
401073
+ async function drive(meta3, start2) {
401074
+ const model = agentModel2();
401075
+ if (!model) {
401076
+ useAgentStore.setState({ error: { message: "Pick a chat model for the agent first.", code: "no_model" } });
401077
+ return;
401078
+ }
401079
+ const store6 = agentRuns();
401080
+ const id3 = meta3.assistantId;
401081
+ const before = useEditorStore.getState().document;
401082
+ if (useAgentStore.getState().activeThreadId !== meta3.threadId) useAgentStore.setState({ activeThreadId: meta3.threadId });
401083
+ let checkpoint = "checkpoint" in start2 ? start2.checkpoint : findMessage(meta3)?.checkpoint;
401084
+ if (!checkpoint) {
401085
+ checkpoint = rememberCheckpoint(before);
401086
+ updateMessage(id3, (m) => ({ ...m, checkpoint }), { save: false });
401087
+ }
401088
+ const ledger = createToolLedger(meta3.ledger);
401089
+ let parts = [...findMessage(meta3)?.parts ?? []].filter((p2) => !(p2.type === "error" && p2.message === STOPPED_MESSAGE));
401090
+ const flush = (save = false) => setParts(id3, parts, { save });
401091
+ if ("resume" in start2) {
401092
+ parts = parts.map((p2) => {
401093
+ if (p2.type !== "tool" || p2.status !== "running") return p2;
401094
+ const done = ledger.get(p2.id);
401095
+ return done ? { ...p2, status: done.ok ? "done" : "error", summary: done.summary, result: done.content } : { ...p2, status: "error", summary: "interrupted", error: "interrupted" };
401096
+ });
401097
+ parts = [...parts, { type: "notice", kind: "resumed" }];
401098
+ flush(true);
401099
+ }
400577
401100
  const abort = new AbortController();
400578
- useAgentStore.setState({ running: true, abort, error: null });
401101
+ useAgentStore.setState({ running: true, resuming: false, abort, error: null });
400579
401102
  const ctx2 = editorToolContext(abort.signal);
400580
401103
  const { createDesignPreview: createDesignPreview2, DESIGN_TOOL: DESIGN_TOOL2 } = await Promise.resolve().then(() => (init_live3(), live_exports));
400581
401104
  const preview = createDesignPreview2();
400582
- registerTurnTools({ readOnly: !!editBlockReason(), signal: abort.signal });
401105
+ const readOnly = !!editBlockReason();
401106
+ registerTurnTools({ readOnly, signal: abort.signal });
400583
401107
  const runtime = agentRuntime();
401108
+ const tools = loopTools(meta3.skillId);
401109
+ const canWrite2 = !readOnly && meta3.wantsChange;
401110
+ const writeTool = tools.some((t3) => t3.spec.function.name === DESIGN_TOOL2) ? DESIGN_TOOL2 : null;
401111
+ const guard2 = createActionGuard({ enabled: canWrite2, writeTool, initial: meta3.guard });
401112
+ let pending8 = null;
401113
+ let saving2 = Promise.resolve();
401114
+ const saveMeta = () => {
401115
+ meta3.guard = guard2.state();
401116
+ meta3.ledger = ledger.entries();
401117
+ meta3.pending = pending8;
401118
+ const rec = store6.peek(id3);
401119
+ if (rec) saving2 = store6.save({ ...rec, meta: { ...meta3 }, updatedAt: Date.now() }).catch(() => {
401120
+ });
401121
+ return saving2;
401122
+ };
401123
+ const offPage = installPageHandlers();
401124
+ let interruptions = 0;
401125
+ let resumeFrom = "resume" in start2 ? start2.resume : null;
400584
401126
  try {
400585
- await runAgentLoop({
400586
- messages: [systemMessage(skillId, mentions), ...historyMessages()],
400587
- tools: loopTools(skillId),
400588
- stopped: () => abort.signal.aborted,
400589
- // Finished background subagents, and their reports and questions, arrive here between rounds.
400590
- drainNotifications: () => runtime.drainParentNotifications(),
400591
- maxParallel: MAX_PARALLEL_TOOLS,
400592
- maxRounds: TURN_MAX_ROUNDS,
400593
- callModel: (messages, specs, hooks) => streamChat({ model, messages, tools: specs }, hooks, abort.signal),
400594
- execTool: async (call2) => {
400595
- const row2 = { type: "tool", id: call2.id, name: call2.name, argsText: call2.argsText, status: "running" };
400596
- parts = upsertToolPart(parts, row2);
400597
- flush();
400598
- try {
400599
- if (call2.name === DESIGN_TOOL2) preview.end();
400600
- guardEdit(call2.name);
400601
- const result = await runTool(call2.name, call2.argsText, { ...ctx2, toolCallId: call2.id });
400602
- const content = JSON.stringify(result.data ?? { ok: true, summary: result.summary });
400603
- parts = upsertToolPart(parts, { ...row2, status: "done", summary: result.summary, result: content });
400604
- for (const url4 of result.images ?? []) parts = [...parts, { type: "image", url: url4, caption: call2.name }];
400605
- flush();
400606
- return { id: call2.id, name: call2.name, argsText: call2.argsText, ok: true, summary: result.summary, content, images: result.images };
400607
- } catch (err2) {
400608
- const message = err2.message ?? String(err2);
400609
- parts = upsertToolPart(parts, { ...row2, status: "error", summary: message, error: message });
400610
- flush();
400611
- return { id: call2.id, name: call2.name, argsText: call2.argsText, ok: false, summary: message, content: JSON.stringify({ error: message }) };
400612
- }
400613
- },
400614
- hooks: {
400615
- onTextDelta: (d) => {
400616
- parts = pushTextDelta([...parts], d);
400617
- flush();
401127
+ while (true) {
401128
+ const options = {
401129
+ tools,
401130
+ meta: meta3,
401131
+ stopped: () => abort.signal.aborted,
401132
+ drainNotifications: () => {
401133
+ const notes = guard2.drain();
401134
+ if (notes.length) {
401135
+ parts = [...parts, { type: "notice", kind: "read-budget" }];
401136
+ flush();
401137
+ }
401138
+ return [...notes, ...runtime.drainParentNotifications()];
400618
401139
  },
400619
- onReasoningDelta: (d) => {
400620
- parts = pushReasoningDelta([...parts], d);
401140
+ maxParallel: MAX_PARALLEL_TOOLS,
401141
+ maxRounds: TURN_MAX_ROUNDS,
401142
+ modelRetries: 3,
401143
+ isRecoverable: (err2) => !abort.signal.aborted && isInterruption(err2),
401144
+ requireAction: canWrite2 ? { nudges: ACTION_NUDGES, message: ACTION_NUDGE } : false,
401145
+ toolChoice: () => guard2.toolChoice(),
401146
+ callModel: resilientModel(agentModel(() => model), abort.signal, { get: () => parts, set: (p2) => {
401147
+ parts = p2;
400621
401148
  flush();
401149
+ } }),
401150
+ checkpoint: async () => {
401151
+ pending8 = null;
401152
+ ledger.clear();
401153
+ await saveMeta();
400622
401154
  },
400623
- onToolProgress: (p2) => preview.update(p2.name, p2.arguments),
400624
- onToolEnd: syncTodos
401155
+ execTool: (call2) => runOnce(ledger, call2, async () => {
401156
+ const row2 = { type: "tool", id: call2.id, name: call2.name, argsText: call2.argsText, status: "running" };
401157
+ parts = upsertToolPart(parts, row2);
401158
+ flush();
401159
+ const docBefore = useEditorStore.getState().document;
401160
+ try {
401161
+ if (call2.name === DESIGN_TOOL2) preview.end();
401162
+ guardEdit(call2.name);
401163
+ const result = await runTool(call2.name, call2.argsText, { ...ctx2, toolCallId: call2.id });
401164
+ const content = JSON.stringify(result.data ?? { ok: true, summary: result.summary });
401165
+ parts = upsertToolPart(parts, { ...row2, status: "done", summary: result.summary, result: content });
401166
+ for (const url4 of result.images ?? []) parts = [...parts, { type: "image", url: url4, caption: call2.name }];
401167
+ const acted = useEditorStore.getState().document !== docBefore;
401168
+ return { id: call2.id, name: call2.name, argsText: call2.argsText, ok: true, summary: result.summary, content, images: result.images, acted };
401169
+ } catch (err2) {
401170
+ const message = err2.message ?? String(err2);
401171
+ parts = upsertToolPart(parts, { ...row2, status: "error", summary: message, error: message });
401172
+ return { id: call2.id, name: call2.name, argsText: call2.argsText, ok: false, summary: message, content: JSON.stringify({ error: message }), acted: false };
401173
+ } finally {
401174
+ flush(true);
401175
+ }
401176
+ }).then((run4) => {
401177
+ void saveMeta();
401178
+ return run4;
401179
+ }),
401180
+ hooks: {
401181
+ onAssistantStart: () => {
401182
+ pending8 = { text: "", calls: [] };
401183
+ },
401184
+ onTextDelta: (d) => {
401185
+ parts = pushTextDelta([...parts], d);
401186
+ if (pending8) pending8.text += d;
401187
+ flush();
401188
+ },
401189
+ onReasoningDelta: (d) => {
401190
+ parts = pushReasoningDelta([...parts], d);
401191
+ flush();
401192
+ },
401193
+ onToolProgress: (p2) => preview.update(p2.name, p2.arguments),
401194
+ onToolStart: (call2) => {
401195
+ pending8?.calls.push({ id: call2.id, name: call2.name, argsText: call2.argsText });
401196
+ void saveMeta();
401197
+ },
401198
+ onToolEnd: (run4) => {
401199
+ guard2.onRun(run4, run4.acted === true);
401200
+ syncTodos(run4);
401201
+ },
401202
+ onRoundEnd: () => guard2.onRoundEnd(),
401203
+ onNudge: () => {
401204
+ const count2 = guard2.onNudge();
401205
+ parts = [...parts, { type: "notice", kind: "nudge", count: count2, max: ACTION_NUDGES }];
401206
+ flush(true);
401207
+ }
401208
+ }
401209
+ };
401210
+ try {
401211
+ let outcome;
401212
+ if (resumeFrom) {
401213
+ const cp = resumeFrom.checkpoint;
401214
+ const nudgesLeft = canWrite2 ? Math.max(0, ACTION_NUDGES - guard2.state().nudges) : 0;
401215
+ const patched = { ...resumeFrom, status: "running", checkpoint: { ...cp, nudgesLeft, messages: resumeTranscript(cp.messages, meta3.pending, meta3.ledger) } };
401216
+ await store6.save(patched);
401217
+ pending8 = null;
401218
+ outcome = await resumeRun(id3, store6, options);
401219
+ } else {
401220
+ if (!("messages" in start2)) throw new Error("nothing to run");
401221
+ outcome = await runPersistent({ ...options, id: id3, runs: store6, messages: start2.messages });
401222
+ }
401223
+ if (canWrite2 && !outcome.stopped && !outcome.acted && !guard2.acted) parts = [...parts, { type: "notice", kind: "no-change" }];
401224
+ break;
401225
+ } catch (err2) {
401226
+ if (abort.signal.aborted) break;
401227
+ const hidden2 = typeof document !== "undefined" && document.visibilityState === "hidden";
401228
+ if (isInterruption(err2, hidden2) && interruptions < MAX_INTERRUPTIONS) {
401229
+ interruptions++;
401230
+ await saving2;
401231
+ const rec = await store6.get(id3);
401232
+ if (!rec) throw err2;
401233
+ await store6.save({ ...rec, status: "running", error: void 0, updatedAt: Date.now() });
401234
+ useAgentStore.setState({ resuming: true });
401235
+ persistThreads();
401236
+ await whenResumable(void 0, abort.signal, Math.min(3e4, 1e3 * 2 ** interruptions));
401237
+ if (abort.signal.aborted) break;
401238
+ useAgentStore.setState({ resuming: false });
401239
+ resumeFrom = await store6.get(id3);
401240
+ parts = [...parts, { type: "notice", kind: "resumed" }];
401241
+ flush(true);
401242
+ continue;
401243
+ }
401244
+ throw err2;
400625
401245
  }
400626
- });
401246
+ }
400627
401247
  } catch (err2) {
400628
401248
  if (!abort.signal.aborted) {
400629
401249
  const message = err2?.message ?? String(err2);
@@ -400631,26 +401251,27 @@ async function runTurn(text, mentions = []) {
400631
401251
  parts = [...parts, { type: "error", message, code }];
400632
401252
  }
400633
401253
  } finally {
401254
+ offPage();
400634
401255
  preview.end();
400635
401256
  if (abort.signal.aborted) {
400636
401257
  runtime.stopAll();
400637
- parts = [...parts, { type: "error", message: "Stopped. Any edits already applied are still there." }];
401258
+ parts = [...parts, { type: "error", message: STOPPED_MESSAGE }];
400638
401259
  }
400639
- if (useEditorStore.getState().document === before) updateMessage(assistantId, (m) => ({ ...m, checkpoint: void 0 }), { save: false });
401260
+ if (useEditorStore.getState().document === before) updateMessage(id3, (m) => ({ ...m, checkpoint: void 0 }), { save: false });
400640
401261
  flush(true);
400641
401262
  updateActiveThread((t3) => ({ ...t3, checkpoint: { id: checkpoint, label: "Undo these changes" } }));
400642
- useAgentStore.setState({ running: false, abort: null });
401263
+ useAgentStore.setState({ running: false, resuming: false, abort: null });
400643
401264
  }
400644
401265
  }
400645
- var ALWAYS_ALLOWED, MAX_HISTORY_MESSAGES, MAX_PARALLEL_TOOLS, TURN_MAX_ROUNDS, registerTurnTools, specsFor, loopTools;
401266
+ var ALWAYS_ALLOWED, MAX_HISTORY_MESSAGES, MAX_PARALLEL_TOOLS, TURN_MAX_ROUNDS, registerTurnTools, specsFor, loopTools, runs, agentRuns, setAgentRuns, RESUME_WINDOW_MS, MAX_INTERRUPTIONS, SUSPEND_RESTART_MS, STOPPED_MESSAGE;
400646
401267
  var init_runner = __esm({
400647
401268
  "lib/agent/runner.ts"() {
400648
- "use strict";
400649
401269
  init_editor_store();
400650
401270
  init_client_store();
400651
401271
  init_editor_seams();
400652
401272
  init_gateway();
400653
- init_loop2();
401273
+ init_agents();
401274
+ init_turn_recovery();
400654
401275
  init_tools();
400655
401276
  init_builtin5();
400656
401277
  init_subagent_tools();
@@ -400681,6 +401302,14 @@ var init_runner = __esm({
400681
401302
  return skill?.tools.length ? toolSpecs([.../* @__PURE__ */ new Set([...skill.tools, ...ALWAYS_ALLOWED])]) : toolSpecs();
400682
401303
  };
400683
401304
  loopTools = (skillId) => specsFor(skillId).map((spec) => ({ spec, readOnly: getTool(spec.function.name)?.readOnly === true }));
401305
+ agentRuns = () => runs ??= serialRuns(runStore(indexedDbStore(AGENT_SESSIONS_DB), "editor"));
401306
+ setAgentRuns = (store6) => {
401307
+ runs = store6 && serialRuns(store6);
401308
+ };
401309
+ RESUME_WINDOW_MS = 30 * 6e4;
401310
+ MAX_INTERRUPTIONS = 6;
401311
+ SUSPEND_RESTART_MS = 5e3;
401312
+ STOPPED_MESSAGE = "Stopped. Any edits already applied are still there.";
400684
401313
  }
400685
401314
  });
400686
401315
 
@@ -400709,6 +401338,7 @@ __export(store_exports, {
400709
401338
  openAgentPanel: () => openAgentPanel,
400710
401339
  pendingConfirm: () => pendingConfirm,
400711
401340
  pendingQuestion: () => pendingQuestion,
401341
+ persistThreads: () => persistThreads,
400712
401342
  recordChildTool: () => recordChildTool,
400713
401343
  rememberCheckpoint: () => rememberCheckpoint,
400714
401344
  removeDraftMention: () => removeDraftMention,
@@ -400729,7 +401359,7 @@ __export(store_exports, {
400729
401359
  updateMessage: () => updateMessage,
400730
401360
  useAgentStore: () => useAgentStore
400731
401361
  });
400732
- function persist2() {
401362
+ function persistThreads() {
400733
401363
  const s = useAgentStore.getState();
400734
401364
  if (s.documentId) void saveThreads(s.documentId, s.threads);
400735
401365
  }
@@ -400738,7 +401368,7 @@ function updateActiveThread(fn, { save = true } = {}) {
400738
401368
  if (!s.activeThreadId) return;
400739
401369
  const threads = s.threads.map((t3) => t3.id === s.activeThreadId ? { ...fn(t3), updatedAt: Date.now() } : t3);
400740
401370
  useAgentStore.setState({ threads });
400741
- if (save) persist2();
401371
+ if (save) persistThreads();
400742
401372
  }
400743
401373
  function updateMessage(id3, fn, opts) {
400744
401374
  updateActiveThread((t3) => ({ ...t3, messages: t3.messages.map((m) => m.id === id3 ? fn(m) : m) }), opts);
@@ -400772,7 +401402,7 @@ function newThread() {
400772
401402
  cancelAsk("the chat was switched");
400773
401403
  const t3 = emptyThread();
400774
401404
  useAgentStore.setState((s) => ({ threads: [...s.threads, t3], activeThreadId: t3.id, todos: [], error: null, taskChildren: {}, draft: "", draftMentions: [] }));
400775
- persist2();
401405
+ persistThreads();
400776
401406
  return t3.id;
400777
401407
  }
400778
401408
  function selectThread(id3) {
@@ -400785,7 +401415,7 @@ function deleteThread(id3) {
400785
401415
  const threads = s.threads.filter((t3) => t3.id !== id3);
400786
401416
  const list2 = threads.length ? threads : [emptyThread()];
400787
401417
  useAgentStore.setState({ threads: list2, activeThreadId: s.activeThreadId === id3 ? list2[list2.length - 1].id : s.activeThreadId });
400788
- persist2();
401418
+ persistThreads();
400789
401419
  }
400790
401420
  function openAgentPanel(opts = {}) {
400791
401421
  useAgentStore.setState({
@@ -400820,7 +401450,7 @@ function stop() {
400820
401450
  const { abort } = useAgentStore.getState();
400821
401451
  abort?.abort();
400822
401452
  cancelAsk("the turn was stopped");
400823
- useAgentStore.setState({ running: false, abort: null });
401453
+ useAgentStore.setState({ running: false, resuming: false, abort: null });
400824
401454
  }
400825
401455
  function resolveAsk(answer2) {
400826
401456
  const pending8 = useAgentStore.getState().pendingAsk;
@@ -400948,6 +401578,7 @@ var init_store2 = __esm({
400948
401578
  threads: [],
400949
401579
  activeThreadId: null,
400950
401580
  running: false,
401581
+ resuming: false,
400951
401582
  abort: null,
400952
401583
  todos: [],
400953
401584
  skillId: null,
@@ -401413,7 +402044,7 @@ function registerAppCommands() {
401413
402044
  usePluginStore2.subscribe(sync);
401414
402045
  });
401415
402046
  }
401416
- var none, emit4, store5, MODE_IDS, MODE_ALIASES, modeSet, modeEdit, PANELS, panelOpen, panelToggle, dialogOpen, aiOpen, docAction, TOOLS, toolSet, toolPlace, nodeRasterize, nodeOps, canvasToggle, popcornOpen, viewSetBreakpoint, appCommands, started6;
402047
+ var none, emit4, store5, MODE_IDS, MODE_ALIASES, modeSet, modeEdit, PANELS, panelOpen, panelToggle, dialogOpen, aiOpen, agentContinue, docAction, TOOLS, toolSet, toolPlace, nodeRasterize, nodeOps, canvasToggle, popcornOpen, viewSetBreakpoint, appCommands, started6;
401417
402048
  var init_app = __esm({
401418
402049
  "lib/commands/app.ts"() {
401419
402050
  init_zod();
@@ -401612,6 +402243,19 @@ var init_app = __esm({
401612
402243
  return { summary: dialog ? `Opened AI ${dialog}` : "Opened the agent" };
401613
402244
  }
401614
402245
  });
402246
+ agentContinue = defineCommand({
402247
+ id: "agent.continue",
402248
+ title: "Continue the agent",
402249
+ domain: "ai",
402250
+ effect: "none",
402251
+ permission: null,
402252
+ params: external_exports.object({}),
402253
+ expose: { ui: { label: "AI: Continue the agent\u2019s last turn", keywords: ["ai", "agent", "continue", "resume", "retry", "keep going"] } },
402254
+ run: async () => {
402255
+ const resumed = await (await Promise.resolve().then(() => (init_runner(), runner_exports))).continueTurn();
402256
+ return { summary: resumed ? "Continued the agent" : "Nothing to continue" };
402257
+ }
402258
+ });
401615
402259
  docAction = defineCommand({
401616
402260
  id: "document.action",
401617
402261
  title: "File",
@@ -401812,7 +402456,7 @@ var init_app = __esm({
401812
402456
  return { summary: `Showing ${(all4.find((b) => b.id === shown2) ?? all4[0]).name}`, data: { breakpoint: shown2 ?? all4[0].id } };
401813
402457
  }
401814
402458
  });
401815
- appCommands = [modeSet, modeEdit, nodeRasterize, panelOpen, panelToggle, dialogOpen, aiOpen, docAction, toolSet, toolPlace, nodeOps, canvasToggle, viewSetBreakpoint, popcornOpen, pageGo];
402459
+ appCommands = [modeSet, modeEdit, nodeRasterize, panelOpen, panelToggle, dialogOpen, aiOpen, agentContinue, docAction, toolSet, toolPlace, nodeOps, canvasToggle, viewSetBreakpoint, popcornOpen, pageGo];
401816
402460
  started6 = false;
401817
402461
  }
401818
402462
  });
@@ -412711,7 +413355,7 @@ init_resources();
412711
413355
  init_desktop();
412712
413356
  init_hypery();
412713
413357
  import { createInterface } from "node:readline";
412714
- var VERSION2 = "0.42.1";
413358
+ var VERSION2 = "0.42.2";
412715
413359
  var HELP = `popcraft ${VERSION2} \u2014 the PopCraft command line
412716
413360
 
412717
413361
  Files (headless, on .popcraft files):