@popcraft/cli 0.42.1 → 0.42.3

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 +770 -107
  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.3"}`, ...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:",
@@ -94362,6 +94491,7 @@ function hasMessage(key5) {
94362
94491
  var current2, loading, listeners, formats, asts;
94363
94492
  var init_runtime = __esm({
94364
94493
  "lib/i18n/runtime.ts"() {
94494
+ "use strict";
94365
94495
  init_intl_messageformat();
94366
94496
  init_icu_messageformat_parser();
94367
94497
  init_catalogs();
@@ -96321,7 +96451,6 @@ async function sha256Prefix(bytes2) {
96321
96451
  }
96322
96452
  var init_media_hash = __esm({
96323
96453
  "lib/storage/media-hash.ts"() {
96324
- "use strict";
96325
96454
  }
96326
96455
  });
96327
96456
 
@@ -96704,7 +96833,6 @@ function releaseMediaMemory(hash3) {
96704
96833
  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
96834
  var init_media_store = __esm({
96706
96835
  "lib/storage/media-store.ts"() {
96707
- "use strict";
96708
96836
  init_media_types();
96709
96837
  init_idb();
96710
96838
  init_media_hash();
@@ -247766,7 +247894,6 @@ function repairCompositions(comps, nodes) {
247766
247894
  var isObj5, finite6, optFinite, isVec2, TIMELINE_COLOR_IDS, TIMELINE_COLORS, UNITS, ORDERS, PROP_KEYS, ANIMATOR_ID, MOTION_TYPES, TRANSITIONS, isFraction, MEDIA_HASH;
247767
247895
  var init_invariants = __esm({
247768
247896
  "lib/motion/invariants.ts"() {
247769
- "use strict";
247770
247897
  init_easing();
247771
247898
  init_properties();
247772
247899
  init_markers();
@@ -247863,7 +247990,6 @@ function resyncText(doc2, ids2) {
247863
247990
  var isVirtualId;
247864
247991
  var init_invariants2 = __esm({
247865
247992
  "lib/document/invariants.ts"() {
247866
- "use strict";
247867
247993
  init_auto_layout();
247868
247994
  init_scene_graph();
247869
247995
  init_text_bounds();
@@ -262550,7 +262676,6 @@ function invalidateMe() {
262550
262676
  var ApiError, inFlight, fileUrl, meInFlight, provisioned, ME_TTL_MS, cloudApi;
262551
262677
  var init_api4 = __esm({
262552
262678
  "lib/client/cloud/api.ts"() {
262553
- "use strict";
262554
262679
  init_session();
262555
262680
  init_plan_limit();
262556
262681
  init_purchases();
@@ -262561,6 +262686,9 @@ var init_api4 = __esm({
262561
262686
  this.code = code;
262562
262687
  this.body = body;
262563
262688
  }
262689
+ status;
262690
+ code;
262691
+ body;
262564
262692
  /** `{ limit, max, used, tier, upgradeTo }` when a plan limit blocked the request (`code === 'plan_limit'`). */
262565
262693
  get planLimit() {
262566
262694
  if (this.code !== "plan_limit") return null;
@@ -262820,7 +262948,6 @@ function planEntryAction({ home }) {
262820
262948
  var STORAGE_KEY2, useHyperyTeam, TEAM_PROMPT_ENABLED, TEAM_PROMPTED_KEY, PROMPTED_KEY, useTeamPrompt, started;
262821
262949
  var init_team = __esm({
262822
262950
  "lib/client/cloud/team.ts"() {
262823
- "use strict";
262824
262951
  init_esm();
262825
262952
  init_api4();
262826
262953
  init_session();
@@ -305384,13 +305511,13 @@ var init_output = __esm({
305384
305511
  * prefer the `'target'` event for those cases.
305385
305512
  */
305386
305513
  get target() {
305387
- const errorMessage3 = "Output.target cannot be used when using PathedTarget with an async callback. Use the 'target' event instead.";
305514
+ const errorMessage4 = "Output.target cannot be used when using PathedTarget with an async callback. Use the 'target' event instead.";
305388
305515
  if (this._rootTargetPromise) {
305389
- throw new TypeError(errorMessage3);
305516
+ throw new TypeError(errorMessage4);
305390
305517
  }
305391
305518
  const rootTargetResult = this._getRootTarget();
305392
305519
  if (isThenable(rootTargetResult)) {
305393
- throw new TypeError(errorMessage3);
305520
+ throw new TypeError(errorMessage4);
305394
305521
  }
305395
305522
  return rootTargetResult;
305396
305523
  }
@@ -311366,6 +311493,7 @@ async function dispatchShaped(key5, options) {
311366
311493
  var onViolation;
311367
311494
  var init_dispatch = __esm({
311368
311495
  "lib/commands/dispatch.ts"() {
311496
+ "use strict";
311369
311497
  init_errors();
311370
311498
  init_registry();
311371
311499
  init_confirm();
@@ -314555,18 +314683,18 @@ function textItems(node2, ctx2, raw = node2) {
314555
314683
  }
314556
314684
  embed.splice(0, embed.length, ...withSpaces);
314557
314685
  }
314558
- const runs = /* @__PURE__ */ new Map();
314686
+ const runs2 = /* @__PURE__ */ new Map();
314559
314687
  for (const g of embed) {
314560
314688
  const size6 = g.fontSize;
314561
314689
  const key5 = `${size6}`;
314562
- let run4 = runs.get(key5);
314690
+ let run4 = runs2.get(key5);
314563
314691
  if (!run4) {
314564
314692
  run4 = { size: size6, color: color4, alpha: alpha2, glyphs: [] };
314565
- runs.set(key5, run4);
314693
+ runs2.set(key5, run4);
314566
314694
  }
314567
314695
  run4.glyphs.push({ font: g.font, gid: g.gid, codePoints: [], x: g.penX ?? g.x, y: g.baseline ?? g.y });
314568
314696
  }
314569
- items.push({ t: "text", runs: [...runs.values()] });
314697
+ items.push({ t: "text", runs: [...runs2.values()] });
314570
314698
  }
314571
314699
  const outlineCmds = (gs) => ctx2.textCurves ? glyphCmds(gs) : ringsCmds(glyphInstancesToRings(gs));
314572
314700
  const glyphRule = ctx2.textCurves ? "nonzero" : "evenodd";
@@ -317334,6 +317462,7 @@ function videoPixelSize(resolution, aspect) {
317334
317462
  var VIDEO_ASPECTS, VIDEO_RESOLUTIONS, SEEDANCE_ASPECTS, range, VIDEO_MODELS, DEFAULT_VIDEO_MODEL, videoModel, VIDEO_LIMITS;
317335
317463
  var init_video_models = __esm({
317336
317464
  "lib/ai/video-models.ts"() {
317465
+ "use strict";
317337
317466
  VIDEO_ASPECTS = ["16:9", "9:16", "1:1", "4:3", "3:4", "21:9"];
317338
317467
  VIDEO_RESOLUTIONS = ["480p", "720p", "1080p"];
317339
317468
  SEEDANCE_ASPECTS = ["16:9", "9:16", "1:1", "4:3", "3:4", "21:9"];
@@ -320541,6 +320670,7 @@ function buildDesignContext(doc2, maxChars = AI_LIMITS.maxContextChars) {
320541
320670
  var hex8;
320542
320671
  var init_context = __esm({
320543
320672
  "lib/ai/context.ts"() {
320673
+ "use strict";
320544
320674
  init_limits();
320545
320675
  hex8 = (c2) => "#" + [c2.r, c2.g, c2.b].map((v) => Math.round(Math.max(0, Math.min(1, v)) * 255).toString(16).padStart(2, "0")).join("");
320546
320676
  }
@@ -320880,6 +321010,7 @@ function outerSizeFor(want, inner, outer) {
320880
321010
  var AUDIENCE_PRESETS, DEFAULT_AUDIENCE_RESOLUTION, MIN_SIDE, MAX_SIDE, FIT_OPEN_SIZE, clampSide, formatResolution, sameResolution, captureSize;
320881
321011
  var init_resolution = __esm({
320882
321012
  "lib/slides/audience/resolution.ts"() {
321013
+ "use strict";
320883
321014
  init_stage_view();
320884
321015
  AUDIENCE_PRESETS = [
320885
321016
  { id: "720p", label: "1280 \xD7 720 (720p)", resolution: { kind: "fixed", width: 1280, height: 720 } },
@@ -323162,11 +323293,11 @@ function textRuns(t3) {
323162
323293
  const text = t3.characters ?? "";
323163
323294
  const segs = [...t3.styledSegments ?? []].filter((s) => s.end > s.start).sort((a, b) => a.start - b.start);
323164
323295
  if (!segs.length && !t3.link) return void 0;
323165
- const runs = [];
323296
+ const runs2 = [];
323166
323297
  const push2 = (from2, to, seg) => {
323167
323298
  if (to <= from2) return;
323168
323299
  const link2 = seg?.link ?? t3.link;
323169
- runs.push({ text: text.slice(from2, to), style: seg ? runStyle(seg) : {}, ...link2 ? { link: link2 } : {} });
323300
+ runs2.push({ text: text.slice(from2, to), style: seg ? runStyle(seg) : {}, ...link2 ? { link: link2 } : {} });
323170
323301
  };
323171
323302
  let at4 = 0;
323172
323303
  for (const s of segs) {
@@ -323176,7 +323307,7 @@ function textRuns(t3) {
323176
323307
  at4 = Math.max(at4, end);
323177
323308
  }
323178
323309
  push2(at4, text.length);
323179
- return runs;
323310
+ return runs2;
323180
323311
  }
323181
323312
  var init_richtext = __esm({
323182
323313
  "lib/io/web/richtext.ts"() {
@@ -323937,8 +324068,8 @@ function buildPlainTree(doc2, nodeId2, opts = {}, start2, hooks = {}) {
323937
324068
  ...t3.letterSpacing ? { letterSpacing: t3.letterSpacing } : {},
323938
324069
  ...t3.lineHeight !== "AUTO" ? { lineHeight: t3.lineHeight } : {}
323939
324070
  };
323940
- const runs = textRuns(t3);
323941
- if (runs) web.runs = runs;
324071
+ const runs2 = textRuns(t3);
324072
+ if (runs2) web.runs = runs2;
323942
324073
  }
323943
324074
  const tl = timeline?.get(node2.id);
323944
324075
  const mo = tl ?? motion?.children.get(node2.id);
@@ -327685,7 +327816,7 @@ var init_package = __esm({
327685
327816
  "packages/runtime/package.json"() {
327686
327817
  package_default = {
327687
327818
  name: "@popcraft/runtime",
327688
- version: "0.42.1",
327819
+ version: "0.42.3",
327689
327820
  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
327821
  license: "MIT",
327691
327822
  homepage: "https://popcraft.app/docs/exporting/nextjs",
@@ -352351,6 +352482,7 @@ function exportsOf(source3) {
352351
352482
  var CODE_LIMITS, packageOf;
352352
352483
  var init_source2 = __esm({
352353
352484
  "lib/code/source.ts"() {
352485
+ "use strict";
352354
352486
  CODE_LIMITS = { modules: 100, sourceLength: 2e5, packages: 12 };
352355
352487
  packageOf = (spec) => spec.split("/").slice(0, spec.startsWith("@") ? 2 : 1).join("/");
352356
352488
  }
@@ -352393,6 +352525,7 @@ function compileModule(module2) {
352393
352525
  var import_sucrase, BUILT_IN, memo4;
352394
352526
  var init_compile2 = __esm({
352395
352527
  "lib/code/compile.ts"() {
352528
+ "use strict";
352396
352529
  import_sucrase = __toESM(require_dist2());
352397
352530
  init_source2();
352398
352531
  init_source2();
@@ -362435,7 +362568,7 @@ var init_theme_store = __esm({
362435
362568
  init_tauri();
362436
362569
  IDB_KEY = "popcraft-themes";
362437
362570
  useThemeStore = create2((setState, getState2) => {
362438
- const persist3 = () => {
362571
+ const persist2 = () => {
362439
362572
  const { activeThemeId, userThemes, accent } = getState2();
362440
362573
  void set3(IDB_KEY, { activeThemeId, userThemes, accent }).then(announceThemeChange, announceThemeChange);
362441
362574
  };
@@ -362463,14 +362596,14 @@ var init_theme_store = __esm({
362463
362596
  },
362464
362597
  setAccent: (accent) => {
362465
362598
  setState({ accent });
362466
- persist3();
362599
+ persist2();
362467
362600
  },
362468
362601
  setSystemAccent: (hex10) => {
362469
362602
  if (hex10 !== getState2().systemAccent) setState({ systemAccent: hex10 });
362470
362603
  },
362471
362604
  setActiveTheme: (id3) => {
362472
362605
  setState({ activeThemeId: id3, draft: {} });
362473
- persist3();
362606
+ persist2();
362474
362607
  },
362475
362608
  setDraftToken: (id3, value3) => setState((s) => {
362476
362609
  const draft = { ...s.draft };
@@ -362482,14 +362615,14 @@ var init_theme_store = __esm({
362482
362615
  saveUserTheme: (theme) => {
362483
362616
  const t3 = validateTheme(theme);
362484
362617
  setState((s) => ({ userThemes: [...s.userThemes.filter((u) => u.id !== t3.id), t3] }));
362485
- persist3();
362618
+ persist2();
362486
362619
  },
362487
362620
  removeUserTheme: (id3) => {
362488
362621
  setState((s) => ({
362489
362622
  userThemes: s.userThemes.filter((u) => u.id !== id3),
362490
362623
  activeThemeId: s.activeThemeId === id3 ? INITIAL_THEME_ID : s.activeThemeId
362491
362624
  }));
362492
- persist3();
362625
+ persist2();
362493
362626
  },
362494
362627
  commitDraft: (name2) => {
362495
362628
  const s = getState2();
@@ -362510,7 +362643,7 @@ var init_theme_store = __esm({
362510
362643
  };
362511
362644
  s.saveUserTheme(theme);
362512
362645
  setState({ activeThemeId: theme.id, draft: {} });
362513
- persist3();
362646
+ persist2();
362514
362647
  return theme.id;
362515
362648
  },
362516
362649
  duplicateActive: (name2) => {
@@ -362526,7 +362659,7 @@ var init_theme_store = __esm({
362526
362659
  };
362527
362660
  s.saveUserTheme(theme);
362528
362661
  setState({ activeThemeId: theme.id, draft: {} });
362529
- persist3();
362662
+ persist2();
362530
362663
  return theme.id;
362531
362664
  },
362532
362665
  setUserThemeCss: (id3, css) => {
@@ -365305,7 +365438,7 @@ async function runAgentLoop(opts) {
365305
365438
  onToolStart(info2) ?? null;
365306
365439
  }
365307
365440
  }
365308
- let runs = await (Promise.all(batch.map(async (info2) => {
365441
+ let runs2 = await (Promise.all(batch.map(async (info2) => {
365309
365442
  {
365310
365443
  try {
365311
365444
  {
@@ -365320,7 +365453,7 @@ async function runAgentLoop(opts) {
365320
365453
  }
365321
365454
  }) ?? null) ?? null);
365322
365455
  let onToolEnd = hook(hooks, "onToolEnd") ?? null;
365323
- for (const run4 of runs) {
365456
+ for (const run4 of runs2) {
365324
365457
  let actedHere = ((__v) => __v == null ? "null" : typeof __v)(run4.acted) === "boolean" ? run4.acted : actingNames.has(run4.name) ?? null;
365325
365458
  if (run4.ok === true && actedHere) {
365326
365459
  acted = true;
@@ -365440,7 +365573,7 @@ function createAgentRuntime(host) {
365440
365573
  emit6({ type: "session", sessionId: s.id, status: s.status, profile: s.profile, description: s.description }) ?? null;
365441
365574
  }
365442
365575
  };
365443
- let persist3 = (s) => {
365576
+ let persist2 = (s) => {
365444
365577
  {
365445
365578
  changed() ?? null;
365446
365579
  if (host.store == null || ((__v) => __v == null ? "null" : typeof __v)(host.store) !== "object") {
@@ -365585,7 +365718,7 @@ function createAgentRuntime(host) {
365585
365718
  parentQueue.push("Agent " + session3.id + " (" + session3.profile + ") " + (ok2 ? "finished" : "failed") + ":\n" + summary) ?? null;
365586
365719
  }
365587
365720
  sessionEvent(session3) ?? null;
365588
- persist3(session3) ?? null;
365721
+ persist2(session3) ?? null;
365589
365722
  return { ok: ok2, summary, rounds };
365590
365723
  }
365591
365724
  };
@@ -365660,7 +365793,7 @@ function createAgentRuntime(host) {
365660
365793
  }
365661
365794
  s.status = "stopped";
365662
365795
  s.endedAt = now2() ?? null;
365663
- persist3(s) ?? null;
365796
+ persist2(s) ?? null;
365664
365797
  return true;
365665
365798
  }
365666
365799
  };
@@ -365792,7 +365925,7 @@ function createAgentRuntime(host) {
365792
365925
  }
365793
365926
  if (session3.status === "running" || session3.status === "queued") {
365794
365927
  session3.inbox.push(text) ?? null;
365795
- persist3(session3) ?? null;
365928
+ persist2(session3) ?? null;
365796
365929
  return { kind: "queued", id: id3 };
365797
365930
  }
365798
365931
  let profile = profileById(session3.profile) ?? null;
@@ -365838,6 +365971,11 @@ var init_runtime5 = __esm({
365838
365971
  });
365839
365972
 
365840
365973
  // 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
365974
+ function forceTool(name2) {
365975
+ {
365976
+ return { type: "function", function: { name: name2 } };
365977
+ }
365978
+ }
365841
365979
  var init_types9 = __esm({
365842
365980
  "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
365981
  }
@@ -365900,14 +366038,119 @@ function sessionStore(kv, scope) {
365900
366038
  } };
365901
366039
  }
365902
366040
  }
366041
+ function runStore(kv, scope) {
366042
+ {
366043
+ let prefix = (scope ?? "default") + ":run:";
366044
+ return { get: async (id3) => {
366045
+ {
366046
+ return await (kv.get(prefix + id3) ?? null);
366047
+ }
366048
+ }, save: async (run4) => {
366049
+ {
366050
+ await (kv.set(prefix + run4.id, run4) ?? null);
366051
+ }
366052
+ }, list: async () => {
366053
+ {
366054
+ return await (loadAll(kv, prefix) ?? null);
366055
+ }
366056
+ }, remove: async (id3) => {
366057
+ {
366058
+ await ((kv["delete"] ?? null)(prefix + id3) ?? null);
366059
+ }
366060
+ } };
366061
+ }
366062
+ }
365903
366063
  var init_store = __esm({
365904
366064
  "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
366065
  }
365906
366066
  });
365907
366067
 
365908
366068
  // 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
366069
+ function errorMessage3(err2) {
366070
+ {
366071
+ if (err2 != null && ((__v) => __v == null ? "null" : typeof __v)(err2) === "object" && ((__v) => __v == null ? "null" : typeof __v)(err2.message) === "string") {
366072
+ return err2.message;
366073
+ }
366074
+ return String(err2) ?? null;
366075
+ }
366076
+ }
366077
+ async function runPersistent(opts) {
366078
+ {
366079
+ let now2 = ((__v) => __v == null ? "null" : typeof __v)(opts.now) === "function" ? opts.now : () => {
366080
+ {
366081
+ return Date.now() ?? null;
366082
+ }
366083
+ };
366084
+ let existing = await (opts.runs.get(opts.id) ?? null);
366085
+ let createdAt = existing != null ? existing.createdAt : now2() ?? null;
366086
+ let record2 = (status3, checkpoint) => {
366087
+ {
366088
+ let todos = opts.todos != null && ((__v) => __v == null ? "null" : typeof __v)(opts.todos) === "object" ? opts.todos.get() ?? null : existing != null ? existing.todos ?? null : null;
366089
+ let meta3 = opts.meta ?? (existing != null ? existing.meta ?? null : null);
366090
+ return { id: opts.id, createdAt, updatedAt: now2() ?? null, meta: meta3, todos, status: status3, checkpoint };
366091
+ }
366092
+ };
366093
+ let first2 = existing != null ? existing.checkpoint : { messages: opts.messages, round: 0, acted: false, nudgesLeft: 0, done: false };
366094
+ await (opts.runs.save(record2("running", first2) ?? null) ?? null);
366095
+ let mark2 = async (status3, error62) => {
366096
+ {
366097
+ let saved = await (opts.runs.get(opts.id) ?? null);
366098
+ if (saved != null) {
366099
+ let next2 = { ...saved, status: status3, updatedAt: now2() ?? null };
366100
+ if (((__v) => __v == null ? "null" : typeof __v)(error62) === "string") {
366101
+ next2.error = error62;
366102
+ }
366103
+ await (opts.runs.save(next2) ?? null);
366104
+ }
366105
+ }
366106
+ };
366107
+ let outcome = null;
366108
+ try {
366109
+ {
366110
+ outcome = await (runAgentLoop({ ...opts, checkpoint: async (state) => {
366111
+ {
366112
+ await (opts.runs.save(record2(state.done ? "done" : "running", state) ?? null) ?? null);
366113
+ if (((__v) => __v == null ? "null" : typeof __v)(opts.checkpoint) === "function") {
366114
+ await (opts.checkpoint(state) ?? null);
366115
+ }
366116
+ }
366117
+ } }) ?? null);
366118
+ }
366119
+ } catch (err2) {
366120
+ {
366121
+ await (mark2("error", errorMessage3(err2) ?? null) ?? null);
366122
+ throw err2;
366123
+ }
366124
+ }
366125
+ if (outcome.stopped) {
366126
+ await (mark2("stopped", null) ?? null);
366127
+ }
366128
+ return outcome;
366129
+ }
366130
+ }
366131
+ async function interruptedRuns(runs2, activeIds) {
366132
+ {
366133
+ let active3 = new Set(activeIds ?? []) ?? null;
366134
+ return (await (runs2.list() ?? null)).filter((r) => {
366135
+ {
366136
+ return r.status === "running" && !(active3.has(r.id) ?? null);
366137
+ }
366138
+ }) ?? null;
366139
+ }
366140
+ }
366141
+ async function resumeRun(id3, runs2, options) {
366142
+ {
366143
+ let saved = await (runs2.get(id3) ?? null);
366144
+ if (saved == null) {
366145
+ throw { message: 'No saved run "' + id3 + '".', code: "not_found" };
366146
+ }
366147
+ let cp = saved.checkpoint;
366148
+ 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);
366149
+ }
366150
+ }
365909
366151
  var init_run = __esm({
365910
366152
  "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"() {
366153
+ init_loop();
365911
366154
  }
365912
366155
  });
365913
366156
 
@@ -365997,11 +366240,6 @@ var init_stream_parse = __esm({
365997
366240
  });
365998
366241
 
365999
366242
  // 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
366243
  var session2, agentModel;
366006
366244
  var init_gateway = __esm({
366007
366245
  "lib/agent/gateway.ts"() {
@@ -366030,11 +366268,192 @@ var init_gateway = __esm({
366030
366268
  }
366031
366269
  });
366032
366270
 
366033
- // lib/agent/loop.ts
366034
- var init_loop2 = __esm({
366035
- "lib/agent/loop.ts"() {
366271
+ // lib/agent/turn-recovery.ts
366272
+ function wantsChange(text) {
366273
+ const body = text.trim();
366274
+ if (!body) return false;
366275
+ return !(body.endsWith("?") && QUESTION_START.test(body));
366276
+ }
366277
+ function createActionGuard(opts) {
366278
+ const maxReads = opts.maxReadRounds ?? MAX_READ_ROUNDS;
366279
+ const maxNudges = opts.nudges ?? ACTION_NUDGES;
366280
+ let readRounds = opts.initial?.readRounds ?? 0;
366281
+ let nudges = opts.initial?.nudges ?? 0;
366282
+ let acted = false;
366283
+ let actedThisRound = false;
366284
+ let ranThisRound = false;
366285
+ let notes = [];
366286
+ let choice = null;
366287
+ let budgetSpent = readRounds >= maxReads;
366288
+ return {
366289
+ onRun(run4, changed) {
366290
+ ranThisRound = true;
366291
+ if (run4.ok && changed) {
366292
+ acted = true;
366293
+ actedThisRound = true;
366294
+ }
366295
+ },
366296
+ onRoundEnd() {
366297
+ if (!opts.enabled || acted || !ranThisRound) {
366298
+ ranThisRound = false;
366299
+ actedThisRound = false;
366300
+ return;
366301
+ }
366302
+ if (!actedThisRound) readRounds++;
366303
+ ranThisRound = false;
366304
+ actedThisRound = false;
366305
+ if (!budgetSpent && readRounds >= maxReads) {
366306
+ budgetSpent = true;
366307
+ notes.push(READ_BUDGET_NOTE);
366308
+ choice = "required";
366309
+ }
366310
+ },
366311
+ onNudge() {
366312
+ nudges++;
366313
+ if (opts.enabled && nudges >= maxNudges && opts.writeTool) choice = forceTool(opts.writeTool);
366314
+ else if (opts.enabled) choice = "required";
366315
+ return nudges;
366316
+ },
366317
+ drain() {
366318
+ const out = notes;
366319
+ notes = [];
366320
+ return out;
366321
+ },
366322
+ toolChoice() {
366323
+ if (acted) return null;
366324
+ const c2 = choice;
366325
+ choice = null;
366326
+ return c2;
366327
+ },
366328
+ get acted() {
366329
+ return acted;
366330
+ },
366331
+ state: () => ({ readRounds, nudges, forced: budgetSpent })
366332
+ };
366333
+ }
366334
+ function createToolLedger(initial = null) {
366335
+ let done = { ...initial ?? {} };
366336
+ return {
366337
+ get: (id3) => done[id3],
366338
+ record: (run4) => {
366339
+ done = { ...done, [run4.id]: { id: run4.id, name: run4.name, argsText: run4.argsText, ok: run4.ok, summary: run4.summary, content: run4.content } };
366340
+ },
366341
+ entries: () => done,
366342
+ clear: () => {
366343
+ done = {};
366344
+ }
366345
+ };
366346
+ }
366347
+ async function runOnce(ledger, call2, run4) {
366348
+ const seen = ledger.get(call2.id);
366349
+ if (seen) return { ...seen, acted: false, replayed: true };
366350
+ const result = await run4();
366351
+ ledger.record(result);
366352
+ return result;
366353
+ }
366354
+ function resumeTranscript(checkpoint, pending8, ledger) {
366355
+ if (!pending8?.calls.length) return checkpoint;
366356
+ const answered = new Set(checkpoint.filter((m) => m.role === "tool").map((m) => m.tool_call_id));
366357
+ if (pending8.calls.every((c2) => answered.has(c2.id))) return checkpoint;
366358
+ const assistant = {
366359
+ role: "assistant",
366360
+ content: pending8.text,
366361
+ tool_calls: pending8.calls.map((c2) => ({ id: c2.id, type: "function", function: { name: c2.name, arguments: c2.argsText } }))
366362
+ };
366363
+ 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 }));
366364
+ return [...checkpoint, assistant, ...answers];
366365
+ }
366366
+ function whenResumable(signals = browserSignals(), signal, offlineWaitMs = 0) {
366367
+ if (!signals || signal?.aborted) return Promise.resolve();
366368
+ const visible2 = () => !signals.hidden() ? Promise.resolve() : new Promise((resolve7) => {
366369
+ const done = () => {
366370
+ off();
366371
+ signal?.removeEventListener("abort", done);
366372
+ resolve7();
366373
+ };
366374
+ const off = signals.subscribe(() => {
366375
+ if (!signals.hidden()) done();
366376
+ });
366377
+ signal?.addEventListener("abort", done);
366378
+ });
366379
+ return visible2().then(() => {
366380
+ if (!offlineWaitMs || signals.online() || signal?.aborted) return;
366381
+ return new Promise((resolve7) => {
366382
+ const done = () => {
366383
+ clearTimeout(timer);
366384
+ off();
366385
+ signal?.removeEventListener("abort", done);
366386
+ resolve7();
366387
+ };
366388
+ const timer = setTimeout(done, offlineWaitMs);
366389
+ const off = signals.subscribe(() => {
366390
+ if (signals.online()) done();
366391
+ });
366392
+ signal?.addEventListener("abort", done);
366393
+ });
366394
+ });
366395
+ }
366396
+ function isInterruption(err2, hidden2 = false) {
366397
+ if (hidden2) return true;
366398
+ const e = err2 ?? {};
366399
+ if (e.code === "ai_timeout") return true;
366400
+ if (typeof e.status === "number") return e.status >= 500 || e.status === 408;
366401
+ const text = `${String(e.name ?? "")} ${String(e.code ?? "")} ${String(e.message ?? "")}`.toLowerCase();
366402
+ return ["load failed", "failed to fetch", "network", "fetch failed", "econnreset", "socket", "stream", "stalled", "timed out", "timeout"].some((w) => text.includes(w));
366403
+ }
366404
+ function serialRuns(inner) {
366405
+ const latest = /* @__PURE__ */ new Map();
366406
+ let queue2 = Promise.resolve();
366407
+ return {
366408
+ peek: (id3) => latest.get(id3),
366409
+ get: async (id3) => latest.get(id3) ?? inner.get(id3),
366410
+ save: (rec) => {
366411
+ latest.set(rec.id, rec);
366412
+ const write3 = queue2.then(() => inner.save(rec));
366413
+ queue2 = write3.catch(() => {
366414
+ });
366415
+ return write3;
366416
+ },
366417
+ list: async () => {
366418
+ await queue2;
366419
+ return inner.list();
366420
+ },
366421
+ remove: (id3) => {
366422
+ latest.delete(id3);
366423
+ const write3 = queue2.then(() => inner.remove(id3));
366424
+ queue2 = write3.catch(() => {
366425
+ });
366426
+ return write3;
366427
+ }
366428
+ };
366429
+ }
366430
+ var ACTION_NUDGES, MAX_READ_ROUNDS, READ_BUDGET_NOTE, ACTION_NUDGE, QUESTION_START, browserSignals;
366431
+ var init_turn_recovery = __esm({
366432
+ "lib/agent/turn-recovery.ts"() {
366036
366433
  "use strict";
366037
366434
  init_agents();
366435
+ ACTION_NUDGES = 2;
366436
+ MAX_READ_ROUNDS = 4;
366437
+ 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.";
366438
+ 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.";
366439
+ 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;
366440
+ browserSignals = () => {
366441
+ if (typeof document === "undefined" || typeof window === "undefined") return null;
366442
+ return {
366443
+ hidden: () => document.visibilityState === "hidden",
366444
+ online: () => typeof navigator === "undefined" || navigator.onLine !== false,
366445
+ subscribe: (fn) => {
366446
+ document.addEventListener("visibilitychange", fn);
366447
+ window.addEventListener("online", fn);
366448
+ window.addEventListener("pageshow", fn);
366449
+ return () => {
366450
+ document.removeEventListener("visibilitychange", fn);
366451
+ window.removeEventListener("online", fn);
366452
+ window.removeEventListener("pageshow", fn);
366453
+ };
366454
+ }
366455
+ };
366456
+ };
366038
366457
  }
366039
366458
  });
366040
366459
 
@@ -366797,10 +367216,10 @@ function fullestFrame(frames) {
366797
367216
  return 0;
366798
367217
  }
366799
367218
  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));
367219
+ const runs2 = durations.map((d) => Math.min(PREVIEW_MAX_MS2, Math.max(0, d)));
367220
+ const period = Math.max(0, ...runs2.map((r) => r + PREVIEW_HOLD_MS));
366802
367221
  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))));
367222
+ const cells = runs2.map((run4) => Array.from({ length: count2 }, (_, i2) => Math.min(run4, i2 * 1e3 / PREVIEW_FPS % (run4 + PREVIEW_HOLD_MS))));
366804
367223
  return { delay: Math.round(1e3 / PREVIEW_FPS), cells };
366805
367224
  }
366806
367225
  function blitRGBA(dst, dw, dh, src, sw, sh, x2, y) {
@@ -399919,6 +400338,7 @@ function record(source, namespaces, globals, limits) {
399919
400338
  var HELPER_NAMES;
399920
400339
  var init_helper_names = __esm({
399921
400340
  "lib/agent/design-script/helper-names.ts"() {
400341
+ "use strict";
399922
400342
  HELPER_NAMES = ["draw", "marks", "fit", "motion", "captions", "overlays", "texture", "pointer", "windows", "devices", "type", "beat", "web", "social", "video", "site", "effects"];
399923
400343
  }
399924
400344
  });
@@ -400021,6 +400441,7 @@ async function replay(rec, namespaces2) {
400021
400441
  var BLOCKED, isRef2, isFn;
400022
400442
  var init_replay = __esm({
400023
400443
  "lib/agent/design-script/replay.ts"() {
400444
+ "use strict";
400024
400445
  BLOCKED = /* @__PURE__ */ new Set(["constructor", "prototype", "__proto__", "caller", "callee", "arguments", "call", "apply", "bind"]);
400025
400446
  isRef2 = (v) => !!v && typeof v === "object" && "$ref" in v && Array.isArray(v.path);
400026
400447
  isFn = (v) => !!v && typeof v === "object" && "$fn" in v && Array.isArray(v.ops);
@@ -400301,7 +400722,6 @@ function designRecorder() {
400301
400722
  var installed;
400302
400723
  var init_recorders = __esm({
400303
400724
  "lib/agent/design-script/recorders.ts"() {
400304
- "use strict";
400305
400725
  installed = null;
400306
400726
  }
400307
400727
  });
@@ -400510,10 +400930,14 @@ var init_live3 = __esm({
400510
400930
  // lib/agent/runner.ts
400511
400931
  var runner_exports = {};
400512
400932
  __export(runner_exports, {
400933
+ agentRuns: () => agentRuns,
400934
+ continueTurn: () => continueTurn,
400513
400935
  editorToolContext: () => editorToolContext,
400514
400936
  needsEditableSession: () => needsEditableSession,
400515
400937
  onChildTool: () => onChildTool,
400516
- runTurn: () => runTurn
400938
+ resumeInterrupted: () => resumeInterrupted,
400939
+ runTurn: () => runTurn,
400940
+ setAgentRuns: () => setAgentRuns
400517
400941
  });
400518
400942
  function needsEditableSession(name2) {
400519
400943
  const tool2 = getTool(name2);
@@ -400560,70 +400984,284 @@ async function runTurn(text, mentions = []) {
400560
400984
  useAgentStore.setState({ error: { message: availability3.message, code: availability3.reason } });
400561
400985
  return;
400562
400986
  }
400563
- const model = agentModel2();
400564
- if (!model) {
400987
+ if (!agentModel2()) {
400565
400988
  useAgentStore.setState({ error: { message: "Pick a chat model for the agent first.", code: "no_model" } });
400566
400989
  return;
400567
400990
  }
400568
400991
  const skillId = mentions.find((m) => m.kind === "skill")?.id ?? useAgentStore.getState().skillId;
400569
- const before = useEditorStore.getState().document;
400570
- const checkpoint = rememberCheckpoint(before);
400992
+ const checkpoint = rememberCheckpoint(useEditorStore.getState().document);
400571
400993
  const user2 = { id: newId2(), role: "user", parts: [{ type: "text", text }], createdAt: Date.now() };
400572
400994
  appendMessage(user2);
400573
400995
  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 });
400996
+ appendMessage({ id: assistantId, role: "assistant", parts: [], createdAt: Date.now(), checkpoint });
400997
+ const s = useAgentStore.getState();
400998
+ const meta3 = {
400999
+ documentId: s.documentId ?? useEditorStore.getState().document.id,
401000
+ threadId: s.activeThreadId ?? "",
401001
+ assistantId,
401002
+ skillId,
401003
+ mentions,
401004
+ wantsChange: wantsChange(text)
401005
+ };
401006
+ await drive(meta3, { messages: [systemMessage(skillId, mentions), ...historyMessages()], checkpoint });
401007
+ }
401008
+ async function resumeInterrupted(documentId) {
401009
+ if (useAgentStore.getState().running) return false;
401010
+ const store6 = agentRuns();
401011
+ let list2;
401012
+ try {
401013
+ list2 = await interruptedRuns(store6);
401014
+ } catch {
401015
+ return false;
401016
+ }
401017
+ const mine = list2.filter((r) => r.meta?.documentId === documentId).sort((a, b) => b.updatedAt - a.updatedAt);
401018
+ const [latest, ...rest] = mine;
401019
+ for (const r of rest) await store6.save({ ...r, status: "stopped", updatedAt: Date.now() });
401020
+ if (!latest) return false;
401021
+ if (Date.now() - latest.updatedAt > RESUME_WINDOW_MS || !findMessage(latest.meta)) {
401022
+ await store6.save({ ...latest, status: "stopped", updatedAt: Date.now() });
401023
+ return false;
401024
+ }
401025
+ if (useAgentStore.getState().running) return false;
401026
+ await drive(latest.meta, { resume: latest });
401027
+ return true;
401028
+ }
401029
+ async function continueTurn() {
401030
+ const s = useAgentStore.getState();
401031
+ if (s.running) return false;
401032
+ const messages = activeMessages();
401033
+ const last3 = [...messages].reverse().find((m) => m.role === "assistant");
401034
+ if (!last3) return false;
401035
+ const record2 = await agentRuns().get(last3.id).catch(() => null);
401036
+ if (record2?.meta && record2.meta.threadId === s.activeThreadId) {
401037
+ await drive(record2.meta, { resume: { ...record2, status: "running" } });
401038
+ return true;
401039
+ }
401040
+ const ask2 = [...messages].reverse().find((m) => m.role === "user");
401041
+ if (!ask2) return false;
401042
+ await runTurn(textOf3(ask2));
401043
+ return true;
401044
+ }
401045
+ function findMessage(meta3) {
401046
+ if (!meta3) return void 0;
401047
+ return useAgentStore.getState().threads.find((t3) => t3.id === meta3.threadId)?.messages.find((m) => m.id === meta3.assistantId);
401048
+ }
401049
+ function installPageHandlers() {
401050
+ if (typeof window === "undefined") return () => {
401051
+ };
401052
+ const save = () => persistThreads();
401053
+ const onVisibility = () => {
401054
+ if (document.visibilityState === "hidden") save();
401055
+ };
401056
+ window.addEventListener("pagehide", save);
401057
+ document.addEventListener("visibilitychange", onVisibility);
401058
+ return () => {
401059
+ window.removeEventListener("pagehide", save);
401060
+ document.removeEventListener("visibilitychange", onVisibility);
401061
+ };
401062
+ }
401063
+ function resilientModel(model, turn, parts) {
401064
+ return async (messages, specs, hooks, _signal, request2) => {
401065
+ await whenResumable(void 0, turn);
401066
+ const call2 = new AbortController();
401067
+ const onTurnAbort = () => call2.abort();
401068
+ turn.addEventListener("abort", onTurnAbort);
401069
+ let hiddenAt = 0;
401070
+ const onVisibility = () => {
401071
+ if (document.visibilityState === "hidden") hiddenAt = Date.now();
401072
+ else if (hiddenAt && Date.now() - hiddenAt > SUSPEND_RESTART_MS) call2.abort();
401073
+ };
401074
+ if (typeof document !== "undefined") document.addEventListener("visibilitychange", onVisibility);
401075
+ const base = parts.get();
401076
+ try {
401077
+ const cut = new Promise((_, reject) => call2.signal.addEventListener("abort", () => reject(new Error("aborted")), { once: true }));
401078
+ cut.catch(() => {
401079
+ });
401080
+ return await Promise.race([model(messages, specs, hooks, call2.signal, request2), cut]);
401081
+ } catch (err2) {
401082
+ parts.set(base);
401083
+ if (call2.signal.aborted && !turn.aborted) throw { message: "The stream was interrupted.", code: "interrupted" };
401084
+ throw err2;
401085
+ } finally {
401086
+ turn.removeEventListener("abort", onTurnAbort);
401087
+ if (typeof document !== "undefined") document.removeEventListener("visibilitychange", onVisibility);
401088
+ }
401089
+ };
401090
+ }
401091
+ async function drive(meta3, start2) {
401092
+ const model = agentModel2();
401093
+ if (!model) {
401094
+ useAgentStore.setState({ error: { message: "Pick a chat model for the agent first.", code: "no_model" } });
401095
+ return;
401096
+ }
401097
+ const store6 = agentRuns();
401098
+ const id3 = meta3.assistantId;
401099
+ const before = useEditorStore.getState().document;
401100
+ if (useAgentStore.getState().activeThreadId !== meta3.threadId) useAgentStore.setState({ activeThreadId: meta3.threadId });
401101
+ let checkpoint = "checkpoint" in start2 ? start2.checkpoint : findMessage(meta3)?.checkpoint;
401102
+ if (!checkpoint) {
401103
+ checkpoint = rememberCheckpoint(before);
401104
+ updateMessage(id3, (m) => ({ ...m, checkpoint }), { save: false });
401105
+ }
401106
+ const ledger = createToolLedger(meta3.ledger);
401107
+ let parts = [...findMessage(meta3)?.parts ?? []].filter((p2) => !(p2.type === "error" && p2.message === STOPPED_MESSAGE));
401108
+ const flush = (save = false) => setParts(id3, parts, { save });
401109
+ if ("resume" in start2) {
401110
+ parts = parts.map((p2) => {
401111
+ if (p2.type !== "tool" || p2.status !== "running") return p2;
401112
+ const done = ledger.get(p2.id);
401113
+ return done ? { ...p2, status: done.ok ? "done" : "error", summary: done.summary, result: done.content } : { ...p2, status: "error", summary: "interrupted", error: "interrupted" };
401114
+ });
401115
+ parts = [...parts, { type: "notice", kind: "resumed" }];
401116
+ flush(true);
401117
+ }
400577
401118
  const abort = new AbortController();
400578
- useAgentStore.setState({ running: true, abort, error: null });
401119
+ useAgentStore.setState({ running: true, resuming: false, abort, error: null });
400579
401120
  const ctx2 = editorToolContext(abort.signal);
400580
401121
  const { createDesignPreview: createDesignPreview2, DESIGN_TOOL: DESIGN_TOOL2 } = await Promise.resolve().then(() => (init_live3(), live_exports));
400581
401122
  const preview = createDesignPreview2();
400582
- registerTurnTools({ readOnly: !!editBlockReason(), signal: abort.signal });
401123
+ const readOnly = !!editBlockReason();
401124
+ registerTurnTools({ readOnly, signal: abort.signal });
400583
401125
  const runtime = agentRuntime();
401126
+ const tools = loopTools(meta3.skillId);
401127
+ const canWrite2 = !readOnly && meta3.wantsChange;
401128
+ const writeTool = tools.some((t3) => t3.spec.function.name === DESIGN_TOOL2) ? DESIGN_TOOL2 : null;
401129
+ const guard2 = createActionGuard({ enabled: canWrite2, writeTool, initial: meta3.guard });
401130
+ let pending8 = null;
401131
+ let saving2 = Promise.resolve();
401132
+ const saveMeta = () => {
401133
+ meta3.guard = guard2.state();
401134
+ meta3.ledger = ledger.entries();
401135
+ meta3.pending = pending8;
401136
+ const rec = store6.peek(id3);
401137
+ if (rec) saving2 = store6.save({ ...rec, meta: { ...meta3 }, updatedAt: Date.now() }).catch(() => {
401138
+ });
401139
+ return saving2;
401140
+ };
401141
+ const offPage = installPageHandlers();
401142
+ let interruptions = 0;
401143
+ let resumeFrom = "resume" in start2 ? start2.resume : null;
400584
401144
  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();
401145
+ while (true) {
401146
+ const options = {
401147
+ tools,
401148
+ meta: meta3,
401149
+ stopped: () => abort.signal.aborted,
401150
+ drainNotifications: () => {
401151
+ const notes = guard2.drain();
401152
+ if (notes.length) {
401153
+ parts = [...parts, { type: "notice", kind: "read-budget" }];
401154
+ flush();
401155
+ }
401156
+ return [...notes, ...runtime.drainParentNotifications()];
400618
401157
  },
400619
- onReasoningDelta: (d) => {
400620
- parts = pushReasoningDelta([...parts], d);
401158
+ maxParallel: MAX_PARALLEL_TOOLS,
401159
+ maxRounds: TURN_MAX_ROUNDS,
401160
+ modelRetries: 3,
401161
+ isRecoverable: (err2) => !abort.signal.aborted && isInterruption(err2),
401162
+ requireAction: canWrite2 ? { nudges: ACTION_NUDGES, message: ACTION_NUDGE } : false,
401163
+ toolChoice: () => guard2.toolChoice(),
401164
+ callModel: resilientModel(agentModel(() => model), abort.signal, { get: () => parts, set: (p2) => {
401165
+ parts = p2;
400621
401166
  flush();
401167
+ } }),
401168
+ checkpoint: async () => {
401169
+ pending8 = null;
401170
+ ledger.clear();
401171
+ await saveMeta();
400622
401172
  },
400623
- onToolProgress: (p2) => preview.update(p2.name, p2.arguments),
400624
- onToolEnd: syncTodos
401173
+ execTool: (call2) => runOnce(ledger, call2, async () => {
401174
+ const row2 = { type: "tool", id: call2.id, name: call2.name, argsText: call2.argsText, status: "running" };
401175
+ parts = upsertToolPart(parts, row2);
401176
+ flush();
401177
+ const docBefore = useEditorStore.getState().document;
401178
+ try {
401179
+ if (call2.name === DESIGN_TOOL2) preview.end();
401180
+ guardEdit(call2.name);
401181
+ const result = await runTool(call2.name, call2.argsText, { ...ctx2, toolCallId: call2.id });
401182
+ const content = JSON.stringify(result.data ?? { ok: true, summary: result.summary });
401183
+ parts = upsertToolPart(parts, { ...row2, status: "done", summary: result.summary, result: content });
401184
+ for (const url4 of result.images ?? []) parts = [...parts, { type: "image", url: url4, caption: call2.name }];
401185
+ const acted = useEditorStore.getState().document !== docBefore;
401186
+ return { id: call2.id, name: call2.name, argsText: call2.argsText, ok: true, summary: result.summary, content, images: result.images, acted };
401187
+ } catch (err2) {
401188
+ const message = err2.message ?? String(err2);
401189
+ parts = upsertToolPart(parts, { ...row2, status: "error", summary: message, error: message });
401190
+ return { id: call2.id, name: call2.name, argsText: call2.argsText, ok: false, summary: message, content: JSON.stringify({ error: message }), acted: false };
401191
+ } finally {
401192
+ flush(true);
401193
+ }
401194
+ }).then((run4) => {
401195
+ void saveMeta();
401196
+ return run4;
401197
+ }),
401198
+ hooks: {
401199
+ onAssistantStart: () => {
401200
+ pending8 = { text: "", calls: [] };
401201
+ },
401202
+ onTextDelta: (d) => {
401203
+ parts = pushTextDelta([...parts], d);
401204
+ if (pending8) pending8.text += d;
401205
+ flush();
401206
+ },
401207
+ onReasoningDelta: (d) => {
401208
+ parts = pushReasoningDelta([...parts], d);
401209
+ flush();
401210
+ },
401211
+ onToolProgress: (p2) => preview.update(p2.name, p2.arguments),
401212
+ onToolStart: (call2) => {
401213
+ pending8?.calls.push({ id: call2.id, name: call2.name, argsText: call2.argsText });
401214
+ void saveMeta();
401215
+ },
401216
+ onToolEnd: (run4) => {
401217
+ guard2.onRun(run4, run4.acted === true);
401218
+ syncTodos(run4);
401219
+ },
401220
+ onRoundEnd: () => guard2.onRoundEnd(),
401221
+ onNudge: () => {
401222
+ const count2 = guard2.onNudge();
401223
+ parts = [...parts, { type: "notice", kind: "nudge", count: count2, max: ACTION_NUDGES }];
401224
+ flush(true);
401225
+ }
401226
+ }
401227
+ };
401228
+ try {
401229
+ let outcome;
401230
+ if (resumeFrom) {
401231
+ const cp = resumeFrom.checkpoint;
401232
+ const nudgesLeft = canWrite2 ? Math.max(0, ACTION_NUDGES - guard2.state().nudges) : 0;
401233
+ const patched = { ...resumeFrom, status: "running", checkpoint: { ...cp, nudgesLeft, messages: resumeTranscript(cp.messages, meta3.pending, meta3.ledger) } };
401234
+ await store6.save(patched);
401235
+ pending8 = null;
401236
+ outcome = await resumeRun(id3, store6, options);
401237
+ } else {
401238
+ if (!("messages" in start2)) throw new Error("nothing to run");
401239
+ outcome = await runPersistent({ ...options, id: id3, runs: store6, messages: start2.messages });
401240
+ }
401241
+ if (canWrite2 && !outcome.stopped && !outcome.acted && !guard2.acted) parts = [...parts, { type: "notice", kind: "no-change" }];
401242
+ break;
401243
+ } catch (err2) {
401244
+ if (abort.signal.aborted) break;
401245
+ const hidden2 = typeof document !== "undefined" && document.visibilityState === "hidden";
401246
+ if (isInterruption(err2, hidden2) && interruptions < MAX_INTERRUPTIONS) {
401247
+ interruptions++;
401248
+ await saving2;
401249
+ const rec = await store6.get(id3);
401250
+ if (!rec) throw err2;
401251
+ await store6.save({ ...rec, status: "running", error: void 0, updatedAt: Date.now() });
401252
+ useAgentStore.setState({ resuming: true });
401253
+ persistThreads();
401254
+ await whenResumable(void 0, abort.signal, Math.min(3e4, 1e3 * 2 ** interruptions));
401255
+ if (abort.signal.aborted) break;
401256
+ useAgentStore.setState({ resuming: false });
401257
+ resumeFrom = await store6.get(id3);
401258
+ parts = [...parts, { type: "notice", kind: "resumed" }];
401259
+ flush(true);
401260
+ continue;
401261
+ }
401262
+ throw err2;
400625
401263
  }
400626
- });
401264
+ }
400627
401265
  } catch (err2) {
400628
401266
  if (!abort.signal.aborted) {
400629
401267
  const message = err2?.message ?? String(err2);
@@ -400631,26 +401269,27 @@ async function runTurn(text, mentions = []) {
400631
401269
  parts = [...parts, { type: "error", message, code }];
400632
401270
  }
400633
401271
  } finally {
401272
+ offPage();
400634
401273
  preview.end();
400635
401274
  if (abort.signal.aborted) {
400636
401275
  runtime.stopAll();
400637
- parts = [...parts, { type: "error", message: "Stopped. Any edits already applied are still there." }];
401276
+ parts = [...parts, { type: "error", message: STOPPED_MESSAGE }];
400638
401277
  }
400639
- if (useEditorStore.getState().document === before) updateMessage(assistantId, (m) => ({ ...m, checkpoint: void 0 }), { save: false });
401278
+ if (useEditorStore.getState().document === before) updateMessage(id3, (m) => ({ ...m, checkpoint: void 0 }), { save: false });
400640
401279
  flush(true);
400641
401280
  updateActiveThread((t3) => ({ ...t3, checkpoint: { id: checkpoint, label: "Undo these changes" } }));
400642
- useAgentStore.setState({ running: false, abort: null });
401281
+ useAgentStore.setState({ running: false, resuming: false, abort: null });
400643
401282
  }
400644
401283
  }
400645
- var ALWAYS_ALLOWED, MAX_HISTORY_MESSAGES, MAX_PARALLEL_TOOLS, TURN_MAX_ROUNDS, registerTurnTools, specsFor, loopTools;
401284
+ 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
401285
  var init_runner = __esm({
400647
401286
  "lib/agent/runner.ts"() {
400648
- "use strict";
400649
401287
  init_editor_store();
400650
401288
  init_client_store();
400651
401289
  init_editor_seams();
400652
401290
  init_gateway();
400653
- init_loop2();
401291
+ init_agents();
401292
+ init_turn_recovery();
400654
401293
  init_tools();
400655
401294
  init_builtin5();
400656
401295
  init_subagent_tools();
@@ -400681,6 +401320,14 @@ var init_runner = __esm({
400681
401320
  return skill?.tools.length ? toolSpecs([.../* @__PURE__ */ new Set([...skill.tools, ...ALWAYS_ALLOWED])]) : toolSpecs();
400682
401321
  };
400683
401322
  loopTools = (skillId) => specsFor(skillId).map((spec) => ({ spec, readOnly: getTool(spec.function.name)?.readOnly === true }));
401323
+ agentRuns = () => runs ??= serialRuns(runStore(indexedDbStore(AGENT_SESSIONS_DB), "editor"));
401324
+ setAgentRuns = (store6) => {
401325
+ runs = store6 && serialRuns(store6);
401326
+ };
401327
+ RESUME_WINDOW_MS = 30 * 6e4;
401328
+ MAX_INTERRUPTIONS = 6;
401329
+ SUSPEND_RESTART_MS = 5e3;
401330
+ STOPPED_MESSAGE = "Stopped. Any edits already applied are still there.";
400684
401331
  }
400685
401332
  });
400686
401333
 
@@ -400709,6 +401356,7 @@ __export(store_exports, {
400709
401356
  openAgentPanel: () => openAgentPanel,
400710
401357
  pendingConfirm: () => pendingConfirm,
400711
401358
  pendingQuestion: () => pendingQuestion,
401359
+ persistThreads: () => persistThreads,
400712
401360
  recordChildTool: () => recordChildTool,
400713
401361
  rememberCheckpoint: () => rememberCheckpoint,
400714
401362
  removeDraftMention: () => removeDraftMention,
@@ -400729,7 +401377,7 @@ __export(store_exports, {
400729
401377
  updateMessage: () => updateMessage,
400730
401378
  useAgentStore: () => useAgentStore
400731
401379
  });
400732
- function persist2() {
401380
+ function persistThreads() {
400733
401381
  const s = useAgentStore.getState();
400734
401382
  if (s.documentId) void saveThreads(s.documentId, s.threads);
400735
401383
  }
@@ -400738,7 +401386,7 @@ function updateActiveThread(fn, { save = true } = {}) {
400738
401386
  if (!s.activeThreadId) return;
400739
401387
  const threads = s.threads.map((t3) => t3.id === s.activeThreadId ? { ...fn(t3), updatedAt: Date.now() } : t3);
400740
401388
  useAgentStore.setState({ threads });
400741
- if (save) persist2();
401389
+ if (save) persistThreads();
400742
401390
  }
400743
401391
  function updateMessage(id3, fn, opts) {
400744
401392
  updateActiveThread((t3) => ({ ...t3, messages: t3.messages.map((m) => m.id === id3 ? fn(m) : m) }), opts);
@@ -400772,7 +401420,7 @@ function newThread() {
400772
401420
  cancelAsk("the chat was switched");
400773
401421
  const t3 = emptyThread();
400774
401422
  useAgentStore.setState((s) => ({ threads: [...s.threads, t3], activeThreadId: t3.id, todos: [], error: null, taskChildren: {}, draft: "", draftMentions: [] }));
400775
- persist2();
401423
+ persistThreads();
400776
401424
  return t3.id;
400777
401425
  }
400778
401426
  function selectThread(id3) {
@@ -400785,7 +401433,7 @@ function deleteThread(id3) {
400785
401433
  const threads = s.threads.filter((t3) => t3.id !== id3);
400786
401434
  const list2 = threads.length ? threads : [emptyThread()];
400787
401435
  useAgentStore.setState({ threads: list2, activeThreadId: s.activeThreadId === id3 ? list2[list2.length - 1].id : s.activeThreadId });
400788
- persist2();
401436
+ persistThreads();
400789
401437
  }
400790
401438
  function openAgentPanel(opts = {}) {
400791
401439
  useAgentStore.setState({
@@ -400820,7 +401468,7 @@ function stop() {
400820
401468
  const { abort } = useAgentStore.getState();
400821
401469
  abort?.abort();
400822
401470
  cancelAsk("the turn was stopped");
400823
- useAgentStore.setState({ running: false, abort: null });
401471
+ useAgentStore.setState({ running: false, resuming: false, abort: null });
400824
401472
  }
400825
401473
  function resolveAsk(answer2) {
400826
401474
  const pending8 = useAgentStore.getState().pendingAsk;
@@ -400948,6 +401596,7 @@ var init_store2 = __esm({
400948
401596
  threads: [],
400949
401597
  activeThreadId: null,
400950
401598
  running: false,
401599
+ resuming: false,
400951
401600
  abort: null,
400952
401601
  todos: [],
400953
401602
  skillId: null,
@@ -401413,7 +402062,7 @@ function registerAppCommands() {
401413
402062
  usePluginStore2.subscribe(sync);
401414
402063
  });
401415
402064
  }
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;
402065
+ 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
402066
  var init_app = __esm({
401418
402067
  "lib/commands/app.ts"() {
401419
402068
  init_zod();
@@ -401612,6 +402261,19 @@ var init_app = __esm({
401612
402261
  return { summary: dialog ? `Opened AI ${dialog}` : "Opened the agent" };
401613
402262
  }
401614
402263
  });
402264
+ agentContinue = defineCommand({
402265
+ id: "agent.continue",
402266
+ title: "Continue the agent",
402267
+ domain: "ai",
402268
+ effect: "none",
402269
+ permission: null,
402270
+ params: external_exports.object({}),
402271
+ expose: { ui: { label: "AI: Continue the agent\u2019s last turn", keywords: ["ai", "agent", "continue", "resume", "retry", "keep going"] } },
402272
+ run: async () => {
402273
+ const resumed = await (await Promise.resolve().then(() => (init_runner(), runner_exports))).continueTurn();
402274
+ return { summary: resumed ? "Continued the agent" : "Nothing to continue" };
402275
+ }
402276
+ });
401615
402277
  docAction = defineCommand({
401616
402278
  id: "document.action",
401617
402279
  title: "File",
@@ -401812,7 +402474,7 @@ var init_app = __esm({
401812
402474
  return { summary: `Showing ${(all4.find((b) => b.id === shown2) ?? all4[0]).name}`, data: { breakpoint: shown2 ?? all4[0].id } };
401813
402475
  }
401814
402476
  });
401815
- appCommands = [modeSet, modeEdit, nodeRasterize, panelOpen, panelToggle, dialogOpen, aiOpen, docAction, toolSet, toolPlace, nodeOps, canvasToggle, viewSetBreakpoint, popcornOpen, pageGo];
402477
+ appCommands = [modeSet, modeEdit, nodeRasterize, panelOpen, panelToggle, dialogOpen, aiOpen, agentContinue, docAction, toolSet, toolPlace, nodeOps, canvasToggle, viewSetBreakpoint, popcornOpen, pageGo];
401816
402478
  started6 = false;
401817
402479
  }
401818
402480
  });
@@ -405122,6 +405784,7 @@ function registerBuiltinCommands() {
405122
405784
  var builtinCommands, uiOnlyCommands;
405123
405785
  var init_builtin4 = __esm({
405124
405786
  "lib/commands/builtin.ts"() {
405787
+ "use strict";
405125
405788
  init_registry();
405126
405789
  init_node();
405127
405790
  init_node();
@@ -412711,7 +413374,7 @@ init_resources();
412711
413374
  init_desktop();
412712
413375
  init_hypery();
412713
413376
  import { createInterface } from "node:readline";
412714
- var VERSION2 = "0.42.1";
413377
+ var VERSION2 = "0.42.3";
412715
413378
  var HELP = `popcraft ${VERSION2} \u2014 the PopCraft command line
412716
413379
 
412717
413380
  Files (headless, on .popcraft files):