@popcraft/cli 0.42.0 → 0.42.2

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