@bud.sh/app 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/README.md +41 -31
  2. package/dist/client/assets/bud/design.js +1 -1
  3. package/dist/client/assets/canvas-Bih9EdKJ.js +1 -0
  4. package/dist/client/assets/difference-worker-Bzg-rizy.js +8 -0
  5. package/dist/client/assets/dist-CdE5wBkg.js +5 -0
  6. package/dist/client/assets/files-1dLuoM2f.js +1 -0
  7. package/dist/client/assets/i18n-CkO6VFI0.js +1 -0
  8. package/dist/client/assets/index-Cn2mxroU.css +2 -0
  9. package/dist/client/assets/{index-ChANGtl-.js → index-DtISWZp9.js} +2 -2
  10. package/dist/client/assets/pages-BJ-tNJ4J.js +1 -0
  11. package/dist/client/assets/{project-branches-DO897zM6.js → project-branches-Ce3rXrkc.js} +1 -1
  12. package/dist/client/assets/project-comments-CPUONfs8.js +1 -0
  13. package/dist/client/assets/project-thread-links-C-TGkq59.js +1 -0
  14. package/dist/client/assets/{project-threads-Lay351p4.js → project-threads-Bv7IDBgi.js} +105 -105
  15. package/dist/client/assets/project-work-DAE9-olg.js +1 -0
  16. package/dist/client/assets/{task-design-Avb2RO4w.js → task-design-CwySIAOl.js} +3 -3
  17. package/dist/client/assets/tasks-KWsCLi_h.js +3 -0
  18. package/dist/client/assets/wasm-inline-DSUyFn1L.js +1 -0
  19. package/dist/client/assets/workspace-CVdcfaaB.js +2 -0
  20. package/dist/client/index.html +3 -3
  21. package/dist/hosted/assets/{canvas-V36732ER.js → canvas-AII16n9i.js} +97 -6
  22. package/dist/hosted/assets/{comment-data-CF2ZV_3k.js → comment-data-BXfMElfx.js} +2004 -402
  23. package/dist/hosted/assets/dist-BCSTeNf4.js +4785 -0
  24. package/dist/hosted/assets/{files-DjSCjfU7.js → files-D_1yeAVO.js} +10 -5
  25. package/dist/hosted/assets/{pages-BzjzeuPu.js → pages-CN_SbKWA.js} +3 -3
  26. package/dist/hosted/assets/{project-branches-BT97J9i7.js → project-branches-Bxp0DCwg.js} +1 -1
  27. package/dist/hosted/assets/{project-thread-links-BRLgByEe.js → project-thread-links-KqQoKBLE.js} +76 -4
  28. package/dist/{node-host/assets/screen-CZXWJEds.js → hosted/assets/screen-DpAcDUKR.js} +29 -1
  29. package/dist/hosted/assets/tasks-D66LlwxM.js +1423 -0
  30. package/dist/hosted/assets/wasm-inline-Dl9tqabx.js +4 -0
  31. package/dist/hosted/hosted.js +7885 -6219
  32. package/dist/node/assets/Stream-CAm1eJ2n.js +16604 -0
  33. package/dist/{server/assets/bridge-B_Blt55E.js → node/assets/bridge-DQSBYHmw.js} +124 -290
  34. package/dist/node/assets/config-9_jWwNBh.js +1067 -0
  35. package/dist/node/assets/load-config.server-CMVtRVmO.js +261 -0
  36. package/dist/node/assets/module-3GgtT4Xs.js +308 -0
  37. package/dist/node/assets/server-DTQFuoX2.js +846 -0
  38. package/dist/node/assets/src-D-kG1GxB.js +2 -0
  39. package/dist/node/assets/{src-CerrKjID.js → src-Dwe9APUx.js} +93 -3
  40. package/dist/node/assets/src-DysjfbM8.js +8592 -0
  41. package/dist/node/bridge.js +1 -845
  42. package/dist/node/cli.js +206 -0
  43. package/dist/node/design.js +811 -13
  44. package/dist/node/index.js +2 -739
  45. package/dist/node/plugins.js +5711 -0
  46. package/dist/node/server.js +1 -6746
  47. package/dist/node/vite.js +121 -0
  48. package/dist/{server/assets/canvas-Dc1mYCwQ.js → node-host/assets/canvas-BeDoufy1.js} +97 -7
  49. package/dist/node-host/assets/{comment-data-DyIZNpfG.js → comment-data-DE2T9yTj.js} +1980 -376
  50. package/dist/node-host/assets/dist-BCSTeNf4.js +4785 -0
  51. package/dist/node-host/assets/{files-Dh2TiQZq.js → files-Dl-PTS09.js} +11 -6
  52. package/dist/node-host/assets/{pages-BxpjbYhs.js → pages-DL2sk6_U.js} +3 -3
  53. package/dist/node-host/assets/{project-branches-B7HUGiVK.js → project-branches-DGp5ELct.js} +1 -1
  54. package/dist/{server/assets/project-thread-links-CBOpf6zk.js → node-host/assets/project-thread-links-CgBV3Jcm.js} +76 -5
  55. package/dist/{hosted/assets/screen-CKp2C7kx.js → node-host/assets/screen-B55yyVfb.js} +29 -1
  56. package/dist/node-host/assets/tasks-DZRNkoxe.js +1425 -0
  57. package/dist/node-host/assets/wasm-inline-Dl9tqabx.js +4 -0
  58. package/dist/node-host/node-host.js +6127 -4438
  59. package/dist/server/assets/{branch-previews-ClkoJ0lM.js → branch-previews-DedrpnVR.js} +1555 -673
  60. package/dist/{node-host/assets/canvas-TRUfxfL5.js → server/assets/canvas-CJWQ-jjv.js} +98 -6
  61. package/dist/server/assets/{comment-data-CsjukwAW.js → comment-data-Rg42ToTW.js} +1666 -47
  62. package/dist/server/assets/dist-BCSTeNf4.js +4785 -0
  63. package/dist/server/assets/{events-iHpLGr3k.js → events-BH_rAu7O.js} +155 -20
  64. package/dist/server/assets/{files-E9mSFeoc.js → files-CPJqKeMo.js} +12 -7
  65. package/dist/server/assets/{listener-DN5TyOjJ.js → listener-D61O6PzF.js} +708 -12
  66. package/dist/server/assets/{pages-BBBXyJWV.js → pages-KJY_Ba92.js} +4 -4
  67. package/dist/server/assets/{project-branches-B0YIK6Ur.js → project-branches-qG9ACZvo.js} +2 -2
  68. package/dist/{node-host/assets/project-thread-links-CauJF0Cz.js → server/assets/project-thread-links-CqK0lqCF.js} +77 -4
  69. package/dist/{node-host/assets/tasks-request-ZWmbc8fE.js → server/assets/project-work-DoIwxWMm.js} +87 -2
  70. package/dist/server/assets/run-BJ8r5jSh.js +572 -0
  71. package/dist/server/assets/{screen-BIQA2mr4.js → screen-CBrHPFug.js} +30 -2
  72. package/dist/server/assets/{server-DxK-UB_Z.js → server-Dkbp5stG.js} +1521 -793
  73. package/dist/server/assets/{services-BRrgXYlT.js → services-BTfig8A8.js} +234 -997
  74. package/dist/server/assets/tasks-Bgu5Lg9Y.js +1427 -0
  75. package/dist/server/assets/wasm-inline-Dl9tqabx.js +4 -0
  76. package/dist/server/capture.js +1 -2
  77. package/dist/server/migration.js +569 -12
  78. package/dist/server/runtime.js +7 -5
  79. package/dist/server/server.js +3 -3
  80. package/dist/types/assets/{config-DIC2cf_S.d.ts → config-CvcYmE2s.d.ts} +188 -50
  81. package/dist/types/assets/{contract-CAT-XFNq.d.ts → contract-B7yuuqSn.d.ts} +44 -2
  82. package/dist/types/assets/{items-CaVkByHk.d.ts → items-BQdaVksf.d.ts} +12 -1
  83. package/dist/types/assets/memory-state-BBW-FAVA.d.ts +236 -0
  84. package/dist/types/assets/picker-Be5Gx4WR.d.ts +9 -0
  85. package/dist/types/assets/{task-design-xJOhRNWh.d.ts → task-design-BDHKFHpp.d.ts} +3 -1
  86. package/dist/types/bridge.d.ts +1 -1
  87. package/dist/types/companion.d.ts +3 -3
  88. package/dist/types/design.d.ts +2 -2
  89. package/dist/types/hosted.d.ts +3 -3
  90. package/dist/types/index.d.ts +2 -2
  91. package/dist/types/node-host.d.ts +2 -2
  92. package/dist/types/plugins.d.ts +445 -0
  93. package/dist/types/screen.d.ts +2 -2
  94. package/dist/types/server.d.ts +2 -228
  95. package/dist/types/vite.d.ts +16 -0
  96. package/package.json +19 -3
  97. package/dist/client/assets/canvas-Cu6R6xxT.js +0 -1
  98. package/dist/client/assets/difference-worker-jfTSn-Tw.js +0 -8
  99. package/dist/client/assets/files-js6ElfkU.js +0 -1
  100. package/dist/client/assets/i18n-DxqFr2mi.js +0 -1
  101. package/dist/client/assets/index-CFFxP0gS.css +0 -2
  102. package/dist/client/assets/pages-6_lhiQmz.js +0 -1
  103. package/dist/client/assets/project-comments-DFFKVpia.js +0 -1
  104. package/dist/client/assets/project-thread-links-NLFWQRD2.js +0 -1
  105. package/dist/client/assets/project-work-du0Y-L5Y.js +0 -1
  106. package/dist/client/assets/tasks-CA-E8bbK.js +0 -1
  107. package/dist/client/assets/tasks-request-C55IeuiP.js +0 -1
  108. package/dist/client/assets/workspace-Cw5HvX5d.js +0 -2
  109. package/dist/hosted/assets/tasks-Dj7AyBJB.js +0 -649
  110. package/dist/hosted/assets/tasks-request-DZob623r.js +0 -113
  111. package/dist/node-host/assets/tasks-Bs1IOpeU.js +0 -651
  112. package/dist/server/assets/project-work-qSKFO5yj.js +0 -88
  113. package/dist/server/assets/tasks-CiXodsLN.js +0 -652
  114. package/dist/server/assets/tasks-request-DhwCzpRi.js +0 -115
  115. package/dist/types/assets/picker-D1Bw3ndx.d.ts +0 -14
@@ -1,5 +1,5 @@
1
- import { a as FieldCardFooter, c as Button, i as FieldCardContent, l as Text, o as FieldCardHeader, r as FieldCard, s as ariaAttributes, t as Loader } from "./assets/loader-QRRDmKqp.js";
2
- import { C as valueByRole, g as parseWorkItemRef, j as statusCategory, k as fieldByRole, p as parseWorkCreate, v as parseWorkPatch } from "./assets/src-CerrKjID.js";
1
+ import { a as FieldCardFooter, c as Button, i as FieldCardContent, l as Text, n as Spinner, o as FieldCardHeader, r as FieldCard, s as ariaAttributes, t as Loader } from "./assets/loader-QRRDmKqp.js";
2
+ import { B as statusCategory, R as fieldByRole, S as parseWorkItemRef, j as valueByRole, w as parseWorkPatch, y as parseWorkCreate } from "./assets/src-Dwe9APUx.js";
3
3
  import { createElement, on, ref } from "remix/component";
4
4
  import { Fragment, jsx, jsxs } from "remix/component/jsx-runtime";
5
5
  import { createMatcher } from "remix/route-pattern/match";
@@ -686,6 +686,30 @@ function ccount(value, character) {
686
686
  * This source code is licensed under the ISC license.
687
687
  * See the LICENSE file in the root directory of this source tree.
688
688
  */
689
+ /**
690
+ * @license @lucide/icons v1.58.0 - ISC
691
+ *
692
+ * This source code is licensed under the ISC license.
693
+ * See the LICENSE file in the root directory of this source tree.
694
+ */
695
+ /**
696
+ * @license @lucide/icons v1.58.0 - ISC
697
+ *
698
+ * This source code is licensed under the ISC license.
699
+ * See the LICENSE file in the root directory of this source tree.
700
+ */
701
+ /**
702
+ * @license @lucide/icons v1.58.0 - ISC
703
+ *
704
+ * This source code is licensed under the ISC license.
705
+ * See the LICENSE file in the root directory of this source tree.
706
+ */
707
+ /**
708
+ * @license @lucide/icons v1.58.0 - ISC
709
+ *
710
+ * This source code is licensed under the ISC license.
711
+ * See the LICENSE file in the root directory of this source tree.
712
+ */
689
713
  //#endregion
690
714
  //#region ../ui/src/lib/icon.tsx
691
715
  var icons = {
@@ -1981,6 +2005,32 @@ var icons = {
1981
2005
  }]
1982
2006
  ]
1983
2007
  },
2008
+ "task-add": {
2009
+ name: "list-plus",
2010
+ size: 24,
2011
+ node: [
2012
+ ["path", {
2013
+ d: "M16 5H3",
2014
+ key: "m91uny"
2015
+ }],
2016
+ ["path", {
2017
+ d: "M11 12H3",
2018
+ key: "51ecnj"
2019
+ }],
2020
+ ["path", {
2021
+ d: "M16 19H3",
2022
+ key: "zzsher"
2023
+ }],
2024
+ ["path", {
2025
+ d: "M18 9v6",
2026
+ key: "1twb98"
2027
+ }],
2028
+ ["path", {
2029
+ d: "M21 12h-6",
2030
+ key: "bt1uis"
2031
+ }]
2032
+ ]
2033
+ },
1984
2034
  files: {
1985
2035
  name: "files",
1986
2036
  size: 24,
@@ -2379,6 +2429,60 @@ var icons = {
2379
2429
  }]
2380
2430
  ]
2381
2431
  },
2432
+ terminal: {
2433
+ name: "square-terminal",
2434
+ size: 24,
2435
+ node: [
2436
+ ["path", {
2437
+ d: "m7 11 2-2-2-2",
2438
+ key: "1lz0vl"
2439
+ }],
2440
+ ["path", {
2441
+ d: "M11 13h4",
2442
+ key: "1p7l4v"
2443
+ }],
2444
+ ["rect", {
2445
+ width: "18",
2446
+ height: "18",
2447
+ x: "3",
2448
+ y: "3",
2449
+ rx: "2",
2450
+ ry: "2",
2451
+ key: "1m3agn"
2452
+ }]
2453
+ ],
2454
+ aliases: ["terminal-square"]
2455
+ },
2456
+ "panel-right": {
2457
+ name: "panel-right",
2458
+ size: 24,
2459
+ node: [["rect", {
2460
+ width: "18",
2461
+ height: "18",
2462
+ x: "3",
2463
+ y: "3",
2464
+ rx: "2",
2465
+ key: "afitv7"
2466
+ }], ["path", {
2467
+ d: "M15 3v18",
2468
+ key: "14nvp0"
2469
+ }]]
2470
+ },
2471
+ "panel-bottom": {
2472
+ name: "panel-bottom",
2473
+ size: 24,
2474
+ node: [["rect", {
2475
+ width: "18",
2476
+ height: "18",
2477
+ x: "3",
2478
+ y: "3",
2479
+ rx: "2",
2480
+ key: "afitv7"
2481
+ }], ["path", {
2482
+ d: "M3 15h18",
2483
+ key: "5xshup"
2484
+ }]]
2485
+ },
2382
2486
  eye: {
2383
2487
  name: "eye",
2384
2488
  size: 24,
@@ -2782,6 +2886,34 @@ function Icon(handle) {
2782
2886
  //#region ../ui/src/lib/i18n/de.ts
2783
2887
  /** Bud's interface text in German, by message key. */
2784
2888
  var de = {
2889
+ "app.client.agentPanel.agent": {
2890
+ text: "Agent",
2891
+ source: "f5a4f646"
2892
+ },
2893
+ "app.client.agentPanel.changesRefused": {
2894
+ text: "Der Agent kann Änderungen gerade nicht entgegennehmen",
2895
+ source: "bdb2edb4"
2896
+ },
2897
+ "app.client.agentPanel.changesSent": {
2898
+ text: "An den Agenten gesendet",
2899
+ source: "7f5e7626"
2900
+ },
2901
+ "app.client.agentPanel.devServer": {
2902
+ text: "Dev-Server",
2903
+ source: "27e53ed7"
2904
+ },
2905
+ "app.client.agentPanel.ended": {
2906
+ text: "Die Sitzung wurde beendet. Wenn du dich wieder verbindest, startet sie erneut.",
2907
+ source: "bf6ebbec"
2908
+ },
2909
+ "app.client.agentPanel.failed": {
2910
+ text: "Die Factory hat nicht geantwortet.",
2911
+ source: "3bd3ae7a"
2912
+ },
2913
+ "app.client.agentPanel.shell": {
2914
+ text: "Shell",
2915
+ source: "ba1969a1"
2916
+ },
2785
2917
  "app.client.commentsRequest.emptyResponse": {
2786
2918
  text: "Der Kommentarservice hat eine leere Antwort zurückgegeben.",
2787
2919
  source: "c739d1f9"
@@ -2870,6 +3002,62 @@ var de = {
2870
3002
  text: "Die Bilder konnten nicht verglichen werden.",
2871
3003
  source: "8fd04955"
2872
3004
  },
3005
+ "app.client.factoryRun.discardAndMove": {
3006
+ text: "Lauf verwerfen & verschieben",
3007
+ source: "9b3e9067"
3008
+ },
3009
+ "app.client.factoryRun.failed": {
3010
+ text: "Bud konnte die Factory nicht erreichen.",
3011
+ source: "00cea450"
3012
+ },
3013
+ "app.client.factoryRun.keepRun": {
3014
+ text: "Lauf behalten",
3015
+ source: "88a5de36"
3016
+ },
3017
+ "app.client.factoryRun.moveQuestion": {
3018
+ text: "Für {id} läuft ein Agent. Wenn du die Aufgabe nach {status} verschiebst, werden der Lauf und seine Sandbox verworfen. Es wurde nichts gepusht, daher geht die Arbeit des Agents verloren.",
3019
+ source: "d0c22345"
3020
+ },
3021
+ "app.client.factoryRun.moveTitle": {
3022
+ text: "Lauf des Agents verwerfen?",
3023
+ source: "5ce9ffe3"
3024
+ },
3025
+ "app.client.factoryRun.noPreview": {
3026
+ text: "Der Dev-Server des Runs ist nicht erreichbar.",
3027
+ source: "6dd54cb3"
3028
+ },
3029
+ "app.client.factoryRun.previewFailed": {
3030
+ text: "Die Live-Vorschau konnte nicht geöffnet werden",
3031
+ source: "a96d281a"
3032
+ },
3033
+ "app.client.factoryRun.refused": {
3034
+ text: "Der Run wurde nicht geändert",
3035
+ source: "a5fc457d"
3036
+ },
3037
+ "app.client.factoryRun.statusesMissing": {
3038
+ text: "Füge oben die Factory-Status hinzu, bevor du Aufgaben startest.",
3039
+ source: "2a26077f"
3040
+ },
3041
+ "app.client.factorySetup.add": {
3042
+ text: "Factory-Status hinzufügen",
3043
+ source: "7992be24"
3044
+ },
3045
+ "app.client.factorySetup.added": {
3046
+ text: "Factory-Status hinzugefügt",
3047
+ source: "02f6f293"
3048
+ },
3049
+ "app.client.factorySetup.failed": {
3050
+ text: "Factory-Status konnten nicht hinzugefügt werden",
3051
+ source: "8500af1b"
3052
+ },
3053
+ "app.client.factorySetup.missing": {
3054
+ text: "In deinem Aufgaben-Store braucht die Factory diese Status: {statuses}.",
3055
+ source: "573be4b6"
3056
+ },
3057
+ "app.client.factorySetup.otherKind": {
3058
+ text: "Dein Aufgaben-Store führt diese Factory-Status als anderen Statustyp: {statuses}. Ordne andere Status in factory.statuses zu.",
3059
+ source: "1b96d5e4"
3060
+ },
2873
3061
  "app.client.fileDrafts.deleteWithUnsavedDrafts": {
2874
3062
  text: "Speichere oder verwerfe die ungespeicherten Entwürfe in dieser Auswahl, bevor du sie löschst.",
2875
3063
  source: "1deabbed"
@@ -3278,6 +3466,10 @@ var de = {
3278
3466
  text: "Der Kommentardienst hat eine andere Diskussion zurückgegeben.",
3279
3467
  source: "c0151231"
3280
3468
  },
3469
+ "app.client.projectComments.taskCreated": {
3470
+ text: "Aufgabe erstellt",
3471
+ source: "4e52cadc"
3472
+ },
3281
3473
  "app.client.projectComments.waitForCurrentOperation": {
3282
3474
  text: "Warte, bis der aktuelle Kommentarvorgang abgeschlossen ist.",
3283
3475
  source: "3c6007dd"
@@ -3485,6 +3677,10 @@ var de = {
3485
3677
  text: "Aufgaben konnten nicht geladen werden.",
3486
3678
  source: "b5dd285f"
3487
3679
  },
3680
+ "app.client.projectTasks.closeAgentView": {
3681
+ text: "Agent-Ansicht schliessen",
3682
+ source: "0d888f27"
3683
+ },
3488
3684
  "app.client.projectTasks.couldNotLoadTask": {
3489
3685
  text: "Diese Aufgabe konnte nicht geladen werden.",
3490
3686
  source: "370587a2"
@@ -3501,10 +3697,22 @@ var de = {
3501
3697
  text: "Der Aufgabendienst hat eine andere Aufgabe zurückgegeben. Aktualisiere vor dem erneuten Versuch.",
3502
3698
  source: "91adeaa0"
3503
3699
  },
3700
+ "app.client.projectTasks.openAgentView": {
3701
+ text: "Agent-Ansicht öffnen",
3702
+ source: "99976d29"
3703
+ },
3504
3704
  "app.client.projectTasks.refreshBeforeChanges": {
3505
3705
  text: "Aktualisiere die Aufgaben, bevor du Änderungen vornimmst.",
3506
3706
  source: "9f4e6583"
3507
3707
  },
3708
+ "app.client.projectTasks.runKept": {
3709
+ text: "Die Aufgabe bleibt, wo sie ist, während der Agent läuft.",
3710
+ source: "ed653075"
3711
+ },
3712
+ "app.client.projectTasks.runPushing": {
3713
+ text: "Der Branch der Aufgabe wird gepusht. Verschiebe sie, sobald der Push abgeschlossen ist.",
3714
+ source: "c4f8b8c6"
3715
+ },
3508
3716
  "app.client.projectTasks.undidTaskChange": {
3509
3717
  text: "Bud hat eine Aufgabenänderung rückgängig gemacht",
3510
3718
  source: "7f50e04c"
@@ -3521,6 +3729,10 @@ var de = {
3521
3729
  text: "Aufgaben verknüpfen",
3522
3730
  source: "b6640aab"
3523
3731
  },
3732
+ "app.client.projectThreadLinks.makeTask": {
3733
+ text: "Aufgabe erstellen",
3734
+ source: "f5eaf1d4"
3735
+ },
3524
3736
  "app.client.projectThreadLinks.reviewLinksBeforeSaving": {
3525
3737
  text: "Überprüfe die neuesten Verknüpfungen, bevor du speicherst.",
3526
3738
  source: "c567f897"
@@ -3553,6 +3765,38 @@ var de = {
3553
3765
  text: "Erneut versuchen",
3554
3766
  source: "8036af59"
3555
3767
  },
3768
+ "app.client.taskContextBlock.branch": {
3769
+ text: "Branch",
3770
+ source: "a3e27665"
3771
+ },
3772
+ "app.client.taskContextBlock.code": {
3773
+ text: "Code",
3774
+ source: "795db914"
3775
+ },
3776
+ "app.client.taskContextBlock.context": {
3777
+ text: "Kontext",
3778
+ source: "bd317f1c"
3779
+ },
3780
+ "app.client.taskContextBlock.element": {
3781
+ text: "Element",
3782
+ source: "7d376697"
3783
+ },
3784
+ "app.client.taskContextBlock.page": {
3785
+ text: "Seite",
3786
+ source: "e83d9196"
3787
+ },
3788
+ "app.client.taskContextBlock.screenshot": {
3789
+ text: "Die Seite rund um den Kommentar, mit markierter Stelle",
3790
+ source: "a97331f6"
3791
+ },
3792
+ "app.client.taskContextBlock.source": {
3793
+ text: "Quelle",
3794
+ source: "61e2a3f8"
3795
+ },
3796
+ "app.client.taskContextBlock.viewport": {
3797
+ text: "Ansicht",
3798
+ source: "60b5afe3"
3799
+ },
3556
3800
  "app.client.taskDiscussion.addContextPlaceholder": {
3557
3801
  text: "Füge Kontext für dein Team hinzu…",
3558
3802
  source: "af3fe6ea"
@@ -3660,6 +3904,10 @@ var de = {
3660
3904
  text: "Die Änderung der Aufgabenverknüpfung wurde nicht bestätigt. Überprüfe die neuesten Verknüpfungen, bevor du erneut speicherst.",
3661
3905
  source: "7616ef3c"
3662
3906
  },
3907
+ "app.client.workspace.agentView": {
3908
+ text: "{task} · Agent",
3909
+ source: "d5c33796"
3910
+ },
3663
3911
  "app.client.workspace.connectProjectToOpenDiscussion": {
3664
3912
  text: "Verbinde ein Projekt, um diese Diskussion zu öffnen.",
3665
3913
  source: "fc0ca04e"
@@ -3700,6 +3948,49 @@ var de = {
3700
3948
  text: "Diskussion",
3701
3949
  source: "52a76f71"
3702
3950
  },
3951
+ "app.server.commentTask.discussion": {
3952
+ text: "Diskussion",
3953
+ source: "52a76f71"
3954
+ },
3955
+ "app.server.commentTask.element": {
3956
+ text: "Element",
3957
+ source: "7d376697"
3958
+ },
3959
+ "app.server.commentTask.linkedTasks": {
3960
+ text: "verknüpfte Aufgaben",
3961
+ source: "b827f1f2"
3962
+ },
3963
+ "app.server.commentTask.replies": {
3964
+ text: "Antworten",
3965
+ source: "43e07f5f"
3966
+ },
3967
+ "app.server.commentTask.replyCount": {
3968
+ text: {
3969
+ one: "{count} Antwort",
3970
+ other: "{count} Antworten"
3971
+ },
3972
+ source: "2b046207"
3973
+ },
3974
+ "app.server.commentTask.source": {
3975
+ text: "Quelle",
3976
+ source: "61e2a3f8"
3977
+ },
3978
+ "app.server.commentTask.title": {
3979
+ text: "Kommentar zu {place}",
3980
+ source: "553c8e8c"
3981
+ },
3982
+ "app.server.commentTask.uncommitted": {
3983
+ text: "nicht committet",
3984
+ source: "fa6d4090"
3985
+ },
3986
+ "app.server.commentTask.where": {
3987
+ text: "Wo",
3988
+ source: "91dad0f8"
3989
+ },
3990
+ "app.server.commentTask.workingTree": {
3991
+ text: "Working Tree",
3992
+ source: "7674e9c0"
3993
+ },
3703
3994
  "appShell.mainNavigation": {
3704
3995
  text: "Hauptnavigation",
3705
3996
  source: "c5a8374a"
@@ -3853,10 +4144,6 @@ var de = {
3853
4144
  text: "Leinwand verschieben",
3854
4145
  source: "233eddf0"
3855
4146
  },
3856
- "canvas.canvasWorkspace.reload": {
3857
- text: "Neu laden",
3858
- source: "1a43a2ac"
3859
- },
3860
4147
  "canvas.canvasWorkspace.savingComments": {
3861
4148
  text: "Kommentare werden gespeichert",
3862
4149
  source: "1f15fbfb"
@@ -6781,6 +7068,114 @@ var de = {
6781
7068
  text: "Tabs",
6782
7069
  source: "8ec4824d"
6783
7070
  },
7071
+ "tasks.agentBrowser.address": {
7072
+ text: "Vorschauadresse",
7073
+ source: "37f7f743"
7074
+ },
7075
+ "tasks.agentBrowser.asleep": {
7076
+ text: "Die Sandbox ist im Ruhezustand, um Kosten zu sparen.",
7077
+ source: "662bf5ad"
7078
+ },
7079
+ "tasks.agentBrowser.back": {
7080
+ text: "Zurück",
7081
+ source: "c2954bc2"
7082
+ },
7083
+ "tasks.agentBrowser.commentOnElement": {
7084
+ text: "Kommentiere ein Element für den Agenten",
7085
+ source: "0dd8635f"
7086
+ },
7087
+ "tasks.agentBrowser.forward": {
7088
+ text: "Vorwärts",
7089
+ source: "e50883ba"
7090
+ },
7091
+ "tasks.agentBrowser.newComment": {
7092
+ text: "Änderung für den Agenten",
7093
+ source: "4d74ba2c"
7094
+ },
7095
+ "tasks.agentBrowser.noPreview": {
7096
+ text: "Hier wird die Vorschau angezeigt, sobald die Sandbox des Laufs mit dem Dev-Server läuft.",
7097
+ source: "65d4e271"
7098
+ },
7099
+ "tasks.agentBrowser.openInNewWindow": {
7100
+ text: "Vorschau in einem neuen Fenster öffnen",
7101
+ source: "e0d3f63c"
7102
+ },
7103
+ "tasks.agentBrowser.preview": {
7104
+ text: "Live-Vorschau",
7105
+ source: "7e42b06f"
7106
+ },
7107
+ "tasks.agentBrowser.reload": {
7108
+ text: "Neu laden",
7109
+ source: "1a43a2ac"
7110
+ },
7111
+ "tasks.agentBrowser.status": {
7112
+ text: "Vorschau-Status",
7113
+ source: "94b339ff"
7114
+ },
7115
+ "tasks.agentBrowser.tryAgain": {
7116
+ text: "Erneut versuchen",
7117
+ source: "213e90fa"
7118
+ },
7119
+ "tasks.agentBrowser.wake": {
7120
+ text: "Aufwecken",
7121
+ source: "d0fedeca"
7122
+ },
7123
+ "tasks.agentBrowser.waking": {
7124
+ text: "Sandbox wird aufgeweckt…",
7125
+ source: "1f99ad40"
7126
+ },
7127
+ "tasks.agentTerminal.disconnected": {
7128
+ text: "Verbindung wird wiederhergestellt…",
7129
+ source: "2f039284"
7130
+ },
7131
+ "tasks.agentTerminal.sessions": {
7132
+ text: "Terminal-Sitzungen",
7133
+ source: "0257839a"
7134
+ },
7135
+ "tasks.agentTerminal.terminal": {
7136
+ text: "Terminal {name}",
7137
+ source: "99a8191c"
7138
+ },
7139
+ "tasks.agentView.agentPanes": {
7140
+ text: "Browser oder Terminal",
7141
+ source: "9c5631e4"
7142
+ },
7143
+ "tasks.agentView.browser": {
7144
+ text: "Browser",
7145
+ source: "8df5852f"
7146
+ },
7147
+ "tasks.agentView.browserAndTerminal": {
7148
+ text: "Browser & Terminal",
7149
+ source: "50b6394f"
7150
+ },
7151
+ "tasks.agentView.details": {
7152
+ text: "Details",
7153
+ source: "0ec24245"
7154
+ },
7155
+ "tasks.agentView.hideTerminal": {
7156
+ text: "Terminal ausblenden",
7157
+ source: "b355c54b"
7158
+ },
7159
+ "tasks.agentView.showTerminal": {
7160
+ text: "Terminal anzeigen",
7161
+ source: "93576794"
7162
+ },
7163
+ "tasks.agentView.terminal": {
7164
+ text: "Terminal",
7165
+ source: "93c562d1"
7166
+ },
7167
+ "tasks.agentView.terminalBelow": {
7168
+ text: "Terminal unter dem Browser",
7169
+ source: "8f840a73"
7170
+ },
7171
+ "tasks.agentView.terminalBeside": {
7172
+ text: "Terminal neben dem Browser",
7173
+ source: "9f744076"
7174
+ },
7175
+ "tasks.agentView.view": {
7176
+ text: "Agent-Ansicht",
7177
+ source: "498637bb"
7178
+ },
6784
7179
  "tasks.taskActions.actionInProgress": {
6785
7180
  text: "Eine Aufgabenaktion läuft bereits.",
6786
7181
  source: "1ae83c01"
@@ -6967,6 +7362,14 @@ var de = {
6967
7362
  text: "In Bearbeitung",
6968
7363
  source: "2948b425"
6969
7364
  },
7365
+ "tasks.taskData.label.merged": {
7366
+ text: "Zusammengeführt",
7367
+ source: "28064199"
7368
+ },
7369
+ "tasks.taskData.label.needs_approval": {
7370
+ text: "Benötigt Freigabe",
7371
+ source: "ecf5c9c5"
7372
+ },
6970
7373
  "tasks.taskData.label.open": {
6971
7374
  text: "Offen",
6972
7375
  source: "538b10e9"
@@ -6979,6 +7382,10 @@ var de = {
6979
7382
  text: "Bereit",
6980
7383
  source: "0bca3294"
6981
7384
  },
7385
+ "tasks.taskData.label.ready_to_merge": {
7386
+ text: "Bereit zum Zusammenführen",
7387
+ source: "b0ea5dc5"
7388
+ },
6982
7389
  "tasks.taskData.label.task": {
6983
7390
  text: "Aufgabe",
6984
7391
  source: "76ef3d8c"
@@ -7310,6 +7717,160 @@ var de = {
7310
7717
  text: "Unerledigter Eintrag",
7311
7718
  source: "eee80db8"
7312
7719
  },
7720
+ "tasks.taskRunBadge.failed": {
7721
+ text: "Run fehlgeschlagen",
7722
+ source: "e2b5681f"
7723
+ },
7724
+ "tasks.taskRunBadge.merged": {
7725
+ text: "Zusammengeführt",
7726
+ source: "28064199"
7727
+ },
7728
+ "tasks.taskRunBadge.needsContext": {
7729
+ text: "Braucht Kontext",
7730
+ source: "18701779"
7731
+ },
7732
+ "tasks.taskRunBadge.pushed": {
7733
+ text: "Gepusht",
7734
+ source: "79d81944"
7735
+ },
7736
+ "tasks.taskRunBadge.pushing": {
7737
+ text: "Wird gepusht",
7738
+ source: "5dd372a3"
7739
+ },
7740
+ "tasks.taskRunBadge.review": {
7741
+ text: "Freigabe nötig",
7742
+ source: "ecf5c9c5"
7743
+ },
7744
+ "tasks.taskRunBadge.settingUp": {
7745
+ text: "Wird eingerichtet",
7746
+ source: "aee4ff74"
7747
+ },
7748
+ "tasks.taskRunBadge.working": {
7749
+ text: "Agent arbeitet",
7750
+ source: "102da6c1"
7751
+ },
7752
+ "tasks.taskRunPanel.activity": {
7753
+ text: "Aktivität des Agents",
7754
+ source: "3457114f"
7755
+ },
7756
+ "tasks.taskRunPanel.agent": {
7757
+ text: "Agent",
7758
+ source: "f5a4f646"
7759
+ },
7760
+ "tasks.taskRunPanel.answer": {
7761
+ text: "Dem Agenten antworten",
7762
+ source: "d2d2b425"
7763
+ },
7764
+ "tasks.taskRunPanel.answerPlaceholder": {
7765
+ text: "Was muss der Agent wissen?",
7766
+ source: "92f7895f"
7767
+ },
7768
+ "tasks.taskRunPanel.approve": {
7769
+ text: "Freigeben & pushen",
7770
+ source: "7110783c"
7771
+ },
7772
+ "tasks.taskRunPanel.asleep": {
7773
+ text: "Die Sandbox schläft, um Kosten zu sparen. Sie wacht auf, wenn du die Vorschau öffnest, Änderungen anforderst oder freigibst.",
7774
+ source: "110af9ad"
7775
+ },
7776
+ "tasks.taskRunPanel.cancel": {
7777
+ text: "Abbrechen",
7778
+ source: "35afca3b"
7779
+ },
7780
+ "tasks.taskRunPanel.changesPlaceholder": {
7781
+ text: "Was soll der Agent ändern?",
7782
+ source: "80c05411"
7783
+ },
7784
+ "tasks.taskRunPanel.confirmApprove": {
7785
+ text: "{branch} ins Repository pushen?",
7786
+ source: "2d1354f2"
7787
+ },
7788
+ "tasks.taskRunPanel.confirmDiscard": {
7789
+ text: "Diesen Run und seine Sandbox verwerfen? Es wurde nichts gepusht.",
7790
+ source: "6ac090ee"
7791
+ },
7792
+ "tasks.taskRunPanel.discard": {
7793
+ text: "Verwerfen",
7794
+ source: "1e706c21"
7795
+ },
7796
+ "tasks.taskRunPanel.failed": {
7797
+ text: "Der Run ist fehlgeschlagen.",
7798
+ source: "49b620f0"
7799
+ },
7800
+ "tasks.taskRunPanel.loading": {
7801
+ text: "Run wird geladen …",
7802
+ source: "331b7fa5"
7803
+ },
7804
+ "tasks.taskRunPanel.merged": {
7805
+ text: "{branch} ist zusammengeführt.",
7806
+ source: "e9b50ea9"
7807
+ },
7808
+ "tasks.taskRunPanel.minutes": {
7809
+ text: {
7810
+ one: "1 Min.",
7811
+ other: "{count} Min."
7812
+ },
7813
+ source: "f87c3e0b"
7814
+ },
7815
+ "tasks.taskRunPanel.needsContext": {
7816
+ text: "Der Agent braucht mehr Kontext, um fortzufahren.",
7817
+ source: "98437cea"
7818
+ },
7819
+ "tasks.taskRunPanel.preview": {
7820
+ text: "Live-Vorschau öffnen",
7821
+ source: "62e9491d"
7822
+ },
7823
+ "tasks.taskRunPanel.pushed": {
7824
+ text: "{branch} wurde bei {commit} gepusht.",
7825
+ source: "78703afe"
7826
+ },
7827
+ "tasks.taskRunPanel.pushing": {
7828
+ text: "{branch} wird gepusht …",
7829
+ source: "9b951555"
7830
+ },
7831
+ "tasks.taskRunPanel.requestChanges": {
7832
+ text: "Änderungen anfordern",
7833
+ source: "637e8883"
7834
+ },
7835
+ "tasks.taskRunPanel.retry": {
7836
+ text: "Erneut versuchen",
7837
+ source: "8036af59"
7838
+ },
7839
+ "tasks.taskRunPanel.review": {
7840
+ text: "Der Agent ist fertig und wartet auf deine Prüfung.",
7841
+ source: "7e509cde"
7842
+ },
7843
+ "tasks.taskRunPanel.seconds": {
7844
+ text: {
7845
+ one: "1 s",
7846
+ other: "{count} s"
7847
+ },
7848
+ source: "24364243"
7849
+ },
7850
+ "tasks.taskRunPanel.settingUp": {
7851
+ text: "Sandbox wird eingerichtet …",
7852
+ source: "be97ea8e"
7853
+ },
7854
+ "tasks.taskRunPanel.showOnCanvas": {
7855
+ text: "Auf der Leinwand anzeigen",
7856
+ source: "b076f243"
7857
+ },
7858
+ "tasks.taskRunPanel.start": {
7859
+ text: "Aufgabe starten",
7860
+ source: "dbc9a724"
7861
+ },
7862
+ "tasks.taskRunPanel.startAgain": {
7863
+ text: "Erneut starten",
7864
+ source: "9a468407"
7865
+ },
7866
+ "tasks.taskRunPanel.startHint": {
7867
+ text: "Ein Agent bearbeitet diese Aufgabe in einer Sandbox. Erst nach deiner Freigabe wird etwas gepusht.",
7868
+ source: "ccf1c6a4"
7869
+ },
7870
+ "tasks.taskRunPanel.working": {
7871
+ text: "Der Agent arbeitet …",
7872
+ source: "202318fe"
7873
+ },
7313
7874
  "tasks.taskSections.latestEvents": {
7314
7875
  text: {
7315
7876
  one: "Das neueste Ereignis wird angezeigt.",
@@ -7427,6 +7988,10 @@ var de = {
7427
7988
  text: "Erstelle eine Aufgabe, um mit der Planung deiner Arbeit zu beginnen.",
7428
7989
  source: "7c21b645"
7429
7990
  },
7991
+ "tasks.taskWorkspace.fewerStatuses": {
7992
+ text: "Weniger Statuswerte anzeigen",
7993
+ source: "1de3f0ed"
7994
+ },
7430
7995
  "tasks.taskWorkspace.filterEpic": {
7431
7996
  text: "Epic filtern",
7432
7997
  source: "19c2ed58"
@@ -7495,6 +8060,17 @@ var de = {
7495
8060
  text: "Noch kein {label}-Arbeitsbereich vorhanden",
7496
8061
  source: "233c23c9"
7497
8062
  },
8063
+ "tasks.taskWorkspace.otherStatuses": {
8064
+ text: {
8065
+ one: "+1 in einem anderen Status",
8066
+ other: "+{count} in anderen Statuswerten"
8067
+ },
8068
+ source: "6cae97c5"
8069
+ },
8070
+ "tasks.taskWorkspace.otherStatusesEmpty": {
8071
+ text: "Weitere Status",
8072
+ source: "d56d45a5"
8073
+ },
7498
8074
  "tasks.taskWorkspace.priority": {
7499
8075
  text: "Priorität",
7500
8076
  source: "e68d9f29"
@@ -7566,6 +8142,13 @@ var de = {
7566
8142
  text: "Deine lokalen Aufgabenänderungen teilen",
7567
8143
  source: "1dad116c"
7568
8144
  },
8145
+ "tasks.taskWorkspace.showTasks": {
8146
+ text: {
8147
+ one: "1 Aufgabe anzeigen",
8148
+ other: "{count} Aufgaben anzeigen"
8149
+ },
8150
+ source: "56258faa"
8151
+ },
7569
8152
  "tasks.taskWorkspace.showingCount": {
7570
8153
  text: "Zeigt {shown} von {total}",
7571
8154
  source: "e8675f4a"
@@ -7662,6 +8245,13 @@ var de = {
7662
8245
  * and the thing (`canvas.zoomIn`); `pnpm translate` keeps the other languages in step.
7663
8246
  */
7664
8247
  var en = {
8248
+ "app.client.agentPanel.agent": "Agent",
8249
+ "app.client.agentPanel.changesRefused": "The agent can’t take changes now",
8250
+ "app.client.agentPanel.changesSent": "Sent to the agent",
8251
+ "app.client.agentPanel.devServer": "Dev server",
8252
+ "app.client.agentPanel.ended": "The session ended. It starts again when you reconnect.",
8253
+ "app.client.agentPanel.failed": "The factory didn’t answer.",
8254
+ "app.client.agentPanel.shell": "Shell",
7665
8255
  "app.client.commentsRequest.emptyResponse": "The comments service returned an empty response.",
7666
8256
  "app.client.commentsRequest.invalidData": "The comments service returned invalid data.",
7667
8257
  "app.client.commentsRequest.invalidEndpoint": "Invalid comments endpoint.",
@@ -7684,6 +8274,20 @@ var en = {
7684
8274
  "app.client.differenceView.slideStatus": "{kind} · change {change} of {count} · {index} / {total}",
7685
8275
  "app.client.differenceView.slideshowLabel": "Differences slideshow",
7686
8276
  "app.client.differenceWorker.compareError": "The pictures could not be compared.",
8277
+ "app.client.factoryRun.discardAndMove": "Discard run & move",
8278
+ "app.client.factoryRun.failed": "Bud couldn’t reach the factory.",
8279
+ "app.client.factoryRun.keepRun": "Keep the run",
8280
+ "app.client.factoryRun.moveQuestion": "{id} has an agent run. Moving it to {status} discards the run and its sandbox; nothing was pushed, so the agent’s work is lost.",
8281
+ "app.client.factoryRun.moveTitle": "Discard the agent’s run?",
8282
+ "app.client.factoryRun.noPreview": "The run’s dev server isn’t up.",
8283
+ "app.client.factoryRun.previewFailed": "Couldn’t open the live preview",
8284
+ "app.client.factoryRun.refused": "The run didn’t change",
8285
+ "app.client.factoryRun.statusesMissing": "Add the factory statuses above before starting tasks.",
8286
+ "app.client.factorySetup.add": "Add factory statuses",
8287
+ "app.client.factorySetup.added": "Factory statuses added",
8288
+ "app.client.factorySetup.failed": "Couldn’t add the factory statuses",
8289
+ "app.client.factorySetup.missing": "The factory needs these statuses in your task store: {statuses}.",
8290
+ "app.client.factorySetup.otherKind": "Your task store has these factory statuses as another kind of status: {statuses}. Map other statuses in factory.statuses.",
7687
8291
  "app.client.fileDrafts.deleteWithUnsavedDrafts": "Save or discard the unsaved drafts in this selection before deleting it.",
7688
8292
  "app.client.fileDrafts.destinationDraftConflict": "The destination acquired an unsaved draft while the move was running. Both drafts remain available at their original paths; download or review them before continuing.",
7689
8293
  "app.client.fileDrafts.destinationHasDraft": "A destination has an unsaved draft. Save or discard it before moving files here.",
@@ -7795,6 +8399,7 @@ var en = {
7795
8399
  "app.client.projectComments.refreshBeforeTryingAgain": "The comment write could not be confirmed. Refresh before trying again.",
7796
8400
  "app.client.projectComments.reloadDiscussionBeforeSaving": "Reload this discussion before saving.",
7797
8401
  "app.client.projectComments.serviceReturnedAnotherDiscussion": "The comments service returned another discussion.",
8402
+ "app.client.projectComments.taskCreated": "Task created",
7798
8403
  "app.client.projectComments.waitForCurrentOperation": "Wait for the current comment operation to finish.",
7799
8404
  "app.client.projectDifferences.comparisonFailed": "The pictures could not be compared.",
7800
8405
  "app.client.projectFileReview.commentsUnavailable": "Comments are stored by your storage adapter. Beads: run bd init in this project.",
@@ -7849,15 +8454,20 @@ var en = {
7849
8454
  "app.client.projectPreviews.requestFailed": "Preview request failed ({status}).",
7850
8455
  "app.client.projectTaskPicker.adapterUnavailable": "The task adapter is unavailable.",
7851
8456
  "app.client.projectTaskPicker.loadFailed": "Could not load tasks.",
8457
+ "app.client.projectTasks.closeAgentView": "Close Agent view",
7852
8458
  "app.client.projectTasks.couldNotLoadTask": "Could not load this task.",
7853
8459
  "app.client.projectTasks.couldNotLoadTasks": "Could not load tasks.",
7854
8460
  "app.client.projectTasks.differentTaskRefresh": "The task service returned a different task. Refresh and try again.",
7855
8461
  "app.client.projectTasks.differentTaskRefreshRetry": "The task service returned a different task. Refresh before retrying.",
8462
+ "app.client.projectTasks.openAgentView": "Open Agent view",
7856
8463
  "app.client.projectTasks.refreshBeforeChanges": "Refresh tasks before making changes.",
8464
+ "app.client.projectTasks.runKept": "The task stays where it is while its agent runs.",
8465
+ "app.client.projectTasks.runPushing": "The task’s branch is being pushed; move it once the push is done.",
7857
8466
  "app.client.projectTasks.undidTaskChange": "Bud undid a task change",
7858
8467
  "app.client.projectTasks.writeNotConfirmed": "The write was not confirmed.",
7859
8468
  "app.client.projectThreadLinks.anotherDiscussion": "The service returned another discussion.",
7860
8469
  "app.client.projectThreadLinks.linkTasks": "Link tasks",
8470
+ "app.client.projectThreadLinks.makeTask": "Make task",
7861
8471
  "app.client.projectThreadLinks.reviewLinksBeforeSaving": "Review the latest links before saving.",
7862
8472
  "app.client.screenHost.couldNotOpen": "Could not open {label}.",
7863
8473
  "app.client.screenHost.didntOpen": "{label} didn't open",
@@ -7866,6 +8476,14 @@ var en = {
7866
8476
  "app.client.screenHost.loading": "Loading {label}…",
7867
8477
  "app.client.screenHost.noRouteMatches": "No screen route matches {href}.",
7868
8478
  "app.client.screenHost.retry": "Retry",
8479
+ "app.client.taskContextBlock.branch": "Branch",
8480
+ "app.client.taskContextBlock.code": "Code",
8481
+ "app.client.taskContextBlock.context": "Context",
8482
+ "app.client.taskContextBlock.element": "Element",
8483
+ "app.client.taskContextBlock.page": "Page",
8484
+ "app.client.taskContextBlock.screenshot": "The page around the comment, with its point marked",
8485
+ "app.client.taskContextBlock.source": "Source",
8486
+ "app.client.taskContextBlock.viewport": "Viewport",
7869
8487
  "app.client.taskDiscussion.addContextPlaceholder": "Add context for your team…",
7870
8488
  "app.client.taskDiscussion.addTaskComment": "Add task comment",
7871
8489
  "app.client.taskDiscussion.cancel": "Cancel",
@@ -7895,6 +8513,7 @@ var en = {
7895
8513
  },
7896
8514
  "app.client.threadLinks.taskDiscussionNeedsLinkedTask": "A task discussion needs at least one linked task.",
7897
8515
  "app.client.threadLinks.taskLinkChangeNotConfirmed": "The task link change was not confirmed. Review the latest links before saving again.",
8516
+ "app.client.workspace.agentView": "{task} · Agent",
7898
8517
  "app.client.workspace.connectProjectToOpenDiscussion": "Connect a project to open this discussion.",
7899
8518
  "app.client.workspace.couldNotOpenDiscussion": "Could not open this discussion.",
7900
8519
  "app.client.workspace.discussion": "Discussion",
@@ -7905,6 +8524,19 @@ var en = {
7905
8524
  "app.client.workspace.startProjectWithBudVitePlugin": "Start your project with the Bud Vite plugin, or run Bud from its directory. Its screens appear here when the companion connects.",
7906
8525
  "app.client.workspace.yourProjectSideBySide": "Your project, side by side.",
7907
8526
  "app.controller.discussion": "Discussion",
8527
+ "app.server.commentTask.discussion": "Discussion",
8528
+ "app.server.commentTask.element": "Element",
8529
+ "app.server.commentTask.linkedTasks": "linked tasks",
8530
+ "app.server.commentTask.replies": "Replies",
8531
+ "app.server.commentTask.replyCount": {
8532
+ one: "{count} reply",
8533
+ other: "{count} replies"
8534
+ },
8535
+ "app.server.commentTask.source": "Source",
8536
+ "app.server.commentTask.title": "Comment on {place}",
8537
+ "app.server.commentTask.uncommitted": "uncommitted",
8538
+ "app.server.commentTask.where": "Where",
8539
+ "app.server.commentTask.workingTree": "working tree",
7908
8540
  "appShell.mainNavigation": "Main navigation",
7909
8541
  "breadcrumb.navigationLabel": "Breadcrumb",
7910
8542
  "canvas.artboardCanvas.chooseCollectionPage": "Choose a {collection} page",
@@ -7950,7 +8582,6 @@ var en = {
7950
8582
  "canvas.canvasWorkspace.interactWithPages": "Interact with pages",
7951
8583
  "canvas.canvasWorkspace.newComment": "New comment",
7952
8584
  "canvas.canvasWorkspace.panCanvas": "Pan canvas",
7953
- "canvas.canvasWorkspace.reload": "Reload",
7954
8585
  "canvas.canvasWorkspace.savingComments": "Saving comments",
7955
8586
  "canvas.canvasWorkspace.showDarkPages": "Show dark pages",
7956
8587
  "canvas.canvasWorkspace.showFullPages": "Show full pages",
@@ -8763,6 +9394,33 @@ var en = {
8763
9394
  other: "{count} tabs"
8764
9395
  },
8765
9396
  "shellTabBar.tabsLabel": "Tabs",
9397
+ "tasks.agentBrowser.address": "Preview address",
9398
+ "tasks.agentBrowser.asleep": "The sandbox is asleep to save costs.",
9399
+ "tasks.agentBrowser.back": "Back",
9400
+ "tasks.agentBrowser.commentOnElement": "Comment on an element for the agent",
9401
+ "tasks.agentBrowser.forward": "Forward",
9402
+ "tasks.agentBrowser.newComment": "Change for the agent",
9403
+ "tasks.agentBrowser.noPreview": "The preview shows here while the run’s sandbox is up with its dev server.",
9404
+ "tasks.agentBrowser.openInNewWindow": "Open the preview in a new window",
9405
+ "tasks.agentBrowser.preview": "Live preview",
9406
+ "tasks.agentBrowser.reload": "Reload",
9407
+ "tasks.agentBrowser.status": "Preview status",
9408
+ "tasks.agentBrowser.tryAgain": "Try again",
9409
+ "tasks.agentBrowser.wake": "Wake it",
9410
+ "tasks.agentBrowser.waking": "Waking the sandbox…",
9411
+ "tasks.agentTerminal.disconnected": "Reconnecting…",
9412
+ "tasks.agentTerminal.sessions": "Terminal sessions",
9413
+ "tasks.agentTerminal.terminal": "{name} terminal",
9414
+ "tasks.agentView.agentPanes": "Browser or terminal",
9415
+ "tasks.agentView.browser": "Browser",
9416
+ "tasks.agentView.browserAndTerminal": "Browser & terminal",
9417
+ "tasks.agentView.details": "Details",
9418
+ "tasks.agentView.hideTerminal": "Hide terminal",
9419
+ "tasks.agentView.showTerminal": "Show terminal",
9420
+ "tasks.agentView.terminal": "Terminal",
9421
+ "tasks.agentView.terminalBelow": "Terminal below the browser",
9422
+ "tasks.agentView.terminalBeside": "Terminal beside the browser",
9423
+ "tasks.agentView.view": "Agent view",
8766
9424
  "tasks.taskActions.actionInProgress": "A task action is already in progress.",
8767
9425
  "tasks.taskActions.actions": "Actions",
8768
9426
  "tasks.taskActions.changeNotConfirmed": "The change was not confirmed. Refresh before trying again.",
@@ -8814,9 +9472,12 @@ var en = {
8814
9472
  "tasks.taskData.label.feature": "Feature",
8815
9473
  "tasks.taskData.label.hooked": "Hooked",
8816
9474
  "tasks.taskData.label.in_progress": "In progress",
9475
+ "tasks.taskData.label.merged": "Merged",
9476
+ "tasks.taskData.label.needs_approval": "Needs approval",
8817
9477
  "tasks.taskData.label.open": "Open",
8818
9478
  "tasks.taskData.label.pinned": "Pinned",
8819
9479
  "tasks.taskData.label.ready": "Ready",
9480
+ "tasks.taskData.label.ready_to_merge": "Ready to merge",
8820
9481
  "tasks.taskData.label.task": "Task",
8821
9482
  "tasks.taskData.low": "Low",
8822
9483
  "tasks.taskData.noEpic": "No epic",
@@ -8902,6 +9563,49 @@ var en = {
8902
9563
  "tasks.taskMarkdown.completedItem": "Completed item",
8903
9564
  "tasks.taskMarkdown.image": "Image",
8904
9565
  "tasks.taskMarkdown.incompleteItem": "Incomplete item",
9566
+ "tasks.taskRunBadge.failed": "Run failed",
9567
+ "tasks.taskRunBadge.merged": "Merged",
9568
+ "tasks.taskRunBadge.needsContext": "Needs context",
9569
+ "tasks.taskRunBadge.pushed": "Pushed",
9570
+ "tasks.taskRunBadge.pushing": "Pushing",
9571
+ "tasks.taskRunBadge.review": "Needs approval",
9572
+ "tasks.taskRunBadge.settingUp": "Setting up",
9573
+ "tasks.taskRunBadge.working": "Agent working",
9574
+ "tasks.taskRunPanel.activity": "Agent activity",
9575
+ "tasks.taskRunPanel.agent": "Agent",
9576
+ "tasks.taskRunPanel.answer": "Answer the agent",
9577
+ "tasks.taskRunPanel.answerPlaceholder": "What does the agent need to know?",
9578
+ "tasks.taskRunPanel.approve": "Approve & push",
9579
+ "tasks.taskRunPanel.asleep": "The sandbox sleeps to save cost. It wakes up when you open the preview, request changes or approve.",
9580
+ "tasks.taskRunPanel.cancel": "Cancel",
9581
+ "tasks.taskRunPanel.changesPlaceholder": "What should the agent change?",
9582
+ "tasks.taskRunPanel.confirmApprove": "Push {branch} to the repository?",
9583
+ "tasks.taskRunPanel.confirmDiscard": "Discard this run and its sandbox? Nothing was pushed.",
9584
+ "tasks.taskRunPanel.discard": "Discard",
9585
+ "tasks.taskRunPanel.failed": "The run failed.",
9586
+ "tasks.taskRunPanel.loading": "Loading the run…",
9587
+ "tasks.taskRunPanel.merged": "{branch} is merged.",
9588
+ "tasks.taskRunPanel.minutes": {
9589
+ one: "1 min",
9590
+ other: "{count} min"
9591
+ },
9592
+ "tasks.taskRunPanel.needsContext": "The agent needs more context to go on.",
9593
+ "tasks.taskRunPanel.preview": "Open live preview",
9594
+ "tasks.taskRunPanel.pushed": "Pushed {branch} at {commit}.",
9595
+ "tasks.taskRunPanel.pushing": "Pushing {branch}…",
9596
+ "tasks.taskRunPanel.requestChanges": "Request changes",
9597
+ "tasks.taskRunPanel.retry": "Retry",
9598
+ "tasks.taskRunPanel.review": "The agent is done and waits for your review.",
9599
+ "tasks.taskRunPanel.seconds": {
9600
+ one: "1 s",
9601
+ other: "{count} s"
9602
+ },
9603
+ "tasks.taskRunPanel.settingUp": "Setting up the sandbox…",
9604
+ "tasks.taskRunPanel.showOnCanvas": "Show on canvas",
9605
+ "tasks.taskRunPanel.start": "Start task",
9606
+ "tasks.taskRunPanel.startAgain": "Start again",
9607
+ "tasks.taskRunPanel.startHint": "An agent works on this task in a sandbox. Nothing is pushed until you approve.",
9608
+ "tasks.taskRunPanel.working": "The agent is working…",
8905
9609
  "tasks.taskSections.latestEvents": {
8906
9610
  one: "Showing the latest {count} event.",
8907
9611
  other: "Showing the latest {count} events."
@@ -8938,6 +9642,7 @@ var en = {
8938
9642
  "tasks.taskWorkspace.connectProject": "Connect a project",
8939
9643
  "tasks.taskWorkspace.createTask": "Create task",
8940
9644
  "tasks.taskWorkspace.createToPlan": "Create a task to start planning your work.",
9645
+ "tasks.taskWorkspace.fewerStatuses": "Show fewer statuses",
8941
9646
  "tasks.taskWorkspace.filterEpic": "Filter epic",
8942
9647
  "tasks.taskWorkspace.filterField": "Filter {field}",
8943
9648
  "tasks.taskWorkspace.filters": "Filters",
@@ -8955,6 +9660,11 @@ var en = {
8955
9660
  "tasks.taskWorkspace.noMatches": "No tasks match this view",
8956
9661
  "tasks.taskWorkspace.noRemote": "No {label} remote is configured",
8957
9662
  "tasks.taskWorkspace.noWorkspace": "No {label} workspace yet",
9663
+ "tasks.taskWorkspace.otherStatuses": {
9664
+ one: "+1 in other statuses",
9665
+ other: "+{count} in other statuses"
9666
+ },
9667
+ "tasks.taskWorkspace.otherStatusesEmpty": "Other statuses",
8958
9668
  "tasks.taskWorkspace.priority": "Priority",
8959
9669
  "tasks.taskWorkspace.projectTasks": "Project tasks",
8960
9670
  "tasks.taskWorkspace.pullChanges": "Pull changes",
@@ -8975,6 +9685,10 @@ var en = {
8975
9685
  "tasks.taskWorkspace.searchPlaceholder": "Search tasks, IDs, labels…",
8976
9686
  "tasks.taskWorkspace.searchTasks": "Search tasks",
8977
9687
  "tasks.taskWorkspace.shareLocalChanges": "Share your local task changes",
9688
+ "tasks.taskWorkspace.showTasks": {
9689
+ one: "Show 1 task",
9690
+ other: "Show {count} tasks"
9691
+ },
8978
9692
  "tasks.taskWorkspace.showingCount": "Showing {shown} of {total}",
8979
9693
  "tasks.taskWorkspace.sortTasks": "Sort tasks",
8980
9694
  "tasks.taskWorkspace.startBud": "Start Bud from your web project to see its tasks.",
@@ -9130,7 +9844,8 @@ function taskFields(item, schema) {
9130
9844
  /** Places in Bud's task screen, shared by links and the screen's matcher. */
9131
9845
  var taskRoutes = route("/tasks", {
9132
9846
  index: get("/"),
9133
- show: get("/:id")
9847
+ show: get("/:id"),
9848
+ agent: get("/:id/agent")
9134
9849
  });
9135
9850
  route("/pages", {
9136
9851
  index: get("/"),
@@ -9145,6 +9860,7 @@ route("/files", {
9145
9860
  });
9146
9861
  route("/comments", { show: get("/:id") });
9147
9862
  createMatcher(taskRoutes.show.pattern);
9863
+ createMatcher(taskRoutes.agent.pattern);
9148
9864
  /**
9149
9865
  * Turns an identifier such as `in_progress` into a label such as `In progress`.
9150
9866
  * @param value - The identifier.
@@ -9226,6 +9942,85 @@ function taskDate(value) {
9226
9942
  }).format(new Date(value)) + " UTC";
9227
9943
  }
9228
9944
  //#endregion
9945
+ //#region ../ui/src/lib/tasks/task-run-badge.tsx
9946
+ /**
9947
+ * What a factory run's badge says: busy states with a spinner, then review, a question for a
9948
+ * person, pushed or failed.
9949
+ * @param run - The run's state and error.
9950
+ * @returns Its tone, label and whether it spins, or null for a run that leaves no badge.
9951
+ */
9952
+ function taskRunBadge(run) {
9953
+ switch (run.state) {
9954
+ case "provisioning": return {
9955
+ tone: "busy",
9956
+ label: t("tasks.taskRunBadge.settingUp")
9957
+ };
9958
+ case "working":
9959
+ case "changes": return {
9960
+ tone: "busy",
9961
+ label: t("tasks.taskRunBadge.working")
9962
+ };
9963
+ case "review": return {
9964
+ tone: "review",
9965
+ label: t("tasks.taskRunBadge.review")
9966
+ };
9967
+ case "needs_context": return {
9968
+ tone: "question",
9969
+ label: t("tasks.taskRunBadge.needsContext")
9970
+ };
9971
+ case "approved":
9972
+ case "pushing": return {
9973
+ tone: "busy",
9974
+ label: t("tasks.taskRunBadge.pushing")
9975
+ };
9976
+ case "pushed": return {
9977
+ tone: "done",
9978
+ label: t("tasks.taskRunBadge.pushed")
9979
+ };
9980
+ case "merged": return {
9981
+ tone: "done",
9982
+ label: t("tasks.taskRunBadge.merged")
9983
+ };
9984
+ case "failed": return {
9985
+ tone: "failed",
9986
+ label: t("tasks.taskRunBadge.failed")
9987
+ };
9988
+ default: return null;
9989
+ }
9990
+ }
9991
+ var tones = {
9992
+ busy: "text-muted",
9993
+ review: "text-amber-600 dark:text-amber-400",
9994
+ question: "text-violet-600 dark:text-violet-400",
9995
+ done: "text-emerald-600 dark:text-emerald-400",
9996
+ failed: "text-red-600 dark:text-red-400"
9997
+ };
9998
+ /**
9999
+ * A task card's factory run badge: where the agent's run is, with a failed run's reason on hover.
10000
+ * @param handle - The run's summary.
10001
+ * @returns The badge render function; nothing for a run that leaves no badge.
10002
+ */
10003
+ function TaskRunBadge(handle) {
10004
+ return () => {
10005
+ let badge = taskRunBadge(handle.props.run);
10006
+ if (!badge) return null;
10007
+ return /* @__PURE__ */ jsxs("span", {
10008
+ class: `flex min-w-0 items-center gap-1 ${tones[badge.tone]}`,
10009
+ title: handle.props.run.error ?? void 0,
10010
+ "data-testid": "task-run-badge",
10011
+ "data-state": handle.props.run.state,
10012
+ children: [badge.tone === "busy" ? /* @__PURE__ */ jsx(Spinner, { size: 11 }) : /* @__PURE__ */ jsx(Icon, {
10013
+ name: badge.tone === "failed" ? "circle-alert" : handle.props.run.state === "merged" ? "circle-check" : badge.tone === "done" ? "push" : badge.tone === "question" ? "message" : "circle-dot",
10014
+ size: 12
10015
+ }), /* @__PURE__ */ jsx(Text, {
10016
+ variant: "ui-caption",
10017
+ class: "truncate",
10018
+ children: badge.label
10019
+ })]
10020
+ });
10021
+ };
10022
+ }
10023
+ //#endregion
9229
10024
  //#region ../ui/src/lib/tasks/task-card.tsx
9230
10025
  var statusTone = {
9231
10026
  backlog: "bg-violet-400",
@@ -9265,7 +10060,8 @@ function TaskCard(handle) {
9265
10060
  let issue = taskFields(item, schema);
9266
10061
  let linked = issue.dependencyCount ?? issue.dependencies.length;
9267
10062
  let dependents = issue.dependentCount ?? issue.dependents.length;
9268
- let hasMeta = ready || blocked || !!issue.assignee || !!issue.parentId || !!linked || !!dependents || !!issue.commentCount;
10063
+ let run = item.run && taskRunBadge(item.run) ? item.run : null;
10064
+ let hasMeta = !!run || ready || blocked || !!issue.assignee || !!issue.parentId || !!linked || !!dependents || !!issue.commentCount;
9269
10065
  let priority = /* @__PURE__ */ jsx(Text, {
9270
10066
  variant: "ui-caption",
9271
10067
  weight: "medium",
@@ -9274,6 +10070,7 @@ function TaskCard(handle) {
9274
10070
  children: typeof issue.priority === "number" ? `P${issue.priority}` : issue.priorityLabel
9275
10071
  });
9276
10072
  let meta = /* @__PURE__ */ jsxs(Fragment, { children: [
10073
+ run ? /* @__PURE__ */ jsx(TaskRunBadge, { run }) : null,
9277
10074
  ready ? /* @__PURE__ */ jsxs("span", {
9278
10075
  class: "flex items-center gap-1 text-emerald-600 dark:text-emerald-400",
9279
10076
  children: [/* @__PURE__ */ jsx(Icon, {
@@ -27141,6 +27938,7 @@ function TaskDetails(handle) {
27141
27938
  ]
27142
27939
  }),
27143
27940
  children: [
27941
+ handle.props.actions ?? null,
27144
27942
  /* @__PURE__ */ jsx(IconButton, {
27145
27943
  icon: "link",
27146
27944
  label: t("tasks.taskDetails.copyTaskLink"),
@@ -27166,13 +27964,13 @@ function TaskDetails(handle) {
27166
27964
  }),
27167
27965
  /* @__PURE__ */ jsxs("div", {
27168
27966
  "data-task-detail-scroll": "",
27169
- class: "flex min-h-0 flex-1 flex-col overflow-y-auto overscroll-contain",
27967
+ class: "@container/page flex min-h-0 flex-1 flex-col overflow-y-auto overscroll-contain",
27170
27968
  "aria-busy": loading ? "true" : "false",
27171
27969
  mix: scrollFade("y"),
27172
27970
  children: [
27173
27971
  loading && !issue ? /* @__PURE__ */ jsx(Loader, { label: t("tasks.taskDetails.loadingTask") }) : null,
27174
27972
  error ? /* @__PURE__ */ jsx("div", {
27175
- class: "px-4 pb-6 md:px-6",
27973
+ class: "px-4 pb-6 @min-[40rem]/page:px-6",
27176
27974
  children: /* @__PURE__ */ jsxs(FieldCard, {
27177
27975
  class: "max-w-2xl",
27178
27976
  role: "alert",
@@ -27187,7 +27985,7 @@ function TaskDetails(handle) {
27187
27985
  })
27188
27986
  }) : null,
27189
27987
  issue && item && detail ? /* @__PURE__ */ jsxs("div", {
27190
- class: "mx-auto grid w-full max-w-6xl gap-8 px-4 pt-6 pb-12 md:px-6 lg:grid-cols-[minmax(0,1fr)_18rem] lg:gap-12",
27988
+ class: "mx-auto grid w-full max-w-6xl gap-8 px-4 pt-6 pb-12 @min-[40rem]/page:px-6 @min-[56rem]/page:grid-cols-[minmax(0,1fr)_18rem] @min-[56rem]/page:gap-12",
27191
27989
  children: [/* @__PURE__ */ jsxs("article", {
27192
27990
  class: "flex min-w-0 flex-col gap-8",
27193
27991
  children: [
@@ -27309,7 +28107,7 @@ function TaskDetails(handle) {
27309
28107
  })
27310
28108
  ]
27311
28109
  }), /* @__PURE__ */ jsxs("aside", {
27312
- class: "flex min-w-0 flex-col gap-4 lg:sticky lg:top-6 lg:self-start",
28110
+ class: "flex min-w-0 flex-col gap-4 @min-[56rem]/page:sticky @min-[56rem]/page:top-6 @min-[56rem]/page:self-start",
27313
28111
  children: [/* @__PURE__ */ jsx(Properties, {
27314
28112
  ...context,
27315
28113
  item,