claude-mux 0.7.0 → 0.7.1

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 +4 -2
  2. package/dist/cli.d.ts +1 -1
  3. package/dist/cli.js +1 -1
  4. package/dist/utils/version.d.ts +1 -1
  5. package/dist/utils/version.js +1 -1
  6. package/dist/web/client/_app/immutable/chunks/{DU91Ml7U.js → BGcEgn7w.js} +1 -1
  7. package/{web/.svelte-kit/output/client/_app/immutable/chunks/DmdO6ygw.js → dist/web/client/_app/immutable/chunks/By6CYjmE.js} +1 -1
  8. package/dist/web/client/_app/immutable/chunks/{HKNo9LID.js → CR5jMWGV.js} +1 -1
  9. package/{web/.svelte-kit/output/client/_app/immutable/entry/app.CGIBnoln.js → dist/web/client/_app/immutable/entry/app.DmtnygN7.js} +2 -2
  10. package/dist/web/client/_app/immutable/entry/start.fYmelGlC.js +1 -0
  11. package/dist/web/client/_app/immutable/nodes/{0.CqlJ9a31.js → 0.DGDAdwT5.js} +1 -1
  12. package/dist/web/client/_app/immutable/nodes/{1.BQUZh2-w.js → 1.Cg8dWgUN.js} +1 -1
  13. package/dist/web/client/_app/immutable/nodes/{2.CCV1YdgF.js → 2.DItUEo3e.js} +1 -1
  14. package/dist/web/client/_app/immutable/nodes/{3.D9tDCdq8.js → 3.dHui0twF.js} +1 -1
  15. package/dist/web/client/_app/immutable/nodes/{4.BqPyNkFA.js → 4.CiEHP0cr.js} +1 -1
  16. package/dist/web/client/_app/version.json +1 -1
  17. package/dist/web/server/chunks/{0-BHWsmCJv.js → 0-BmRg-l2z.js} +5 -5
  18. package/dist/web/server/chunks/{0-BHWsmCJv.js.map → 0-BmRg-l2z.js.map} +1 -1
  19. package/dist/web/server/chunks/{1-YRx6A8Tm.js → 1-CPgO8U7d.js} +3 -3
  20. package/dist/web/server/chunks/{1-YRx6A8Tm.js.map → 1-CPgO8U7d.js.map} +1 -1
  21. package/dist/web/server/chunks/{2-eC6JuGAo.js → 2--ZO5fZp_.js} +5 -5
  22. package/dist/web/server/chunks/{2-eC6JuGAo.js.map → 2--ZO5fZp_.js.map} +1 -1
  23. package/dist/web/server/chunks/{3-Bk-wV20p.js → 3-7HqSep9c.js} +3 -3
  24. package/dist/web/server/chunks/{3-Bk-wV20p.js.map → 3-7HqSep9c.js.map} +1 -1
  25. package/dist/web/server/chunks/{4-nteBgDrW.js → 4-C1PCdmY0.js} +4 -4
  26. package/dist/web/server/chunks/{4-nteBgDrW.js.map → 4-C1PCdmY0.js.map} +1 -1
  27. package/dist/web/server/index.js +1 -1
  28. package/dist/web/server/index.js.map +1 -1
  29. package/dist/web/server/manifest.js +10 -10
  30. package/dist/web/server/manifest.js.map +1 -1
  31. package/docs/release-checklist.md +8 -34
  32. package/docs/removing-hooks.md +14 -14
  33. package/package.json +1 -1
  34. package/src/cli.ts +1 -1
  35. package/src/utils/version.ts +1 -1
  36. package/web/.svelte-kit/adapter-bun/chunks/internal.js +1 -1
  37. package/web/.svelte-kit/adapter-bun/manifest-full.js +1 -1
  38. package/web/.svelte-kit/adapter-bun/manifest.js +1 -1
  39. package/web/.svelte-kit/adapter-bun/nodes/0.js +1 -1
  40. package/web/.svelte-kit/adapter-bun/nodes/1.js +1 -1
  41. package/web/.svelte-kit/adapter-bun/nodes/2.js +1 -1
  42. package/web/.svelte-kit/adapter-bun/nodes/3.js +1 -1
  43. package/web/.svelte-kit/adapter-bun/nodes/4.js +1 -1
  44. package/web/.svelte-kit/adapter-node/.vite/manifest.json +200 -15
  45. package/web/.svelte-kit/adapter-node/_app/immutable/assets/AllSessionsPanel.BKhqOrbV.css +1 -0
  46. package/web/.svelte-kit/adapter-node/_app/immutable/assets/_layout.WptSHSUl.css +1 -0
  47. package/web/.svelte-kit/adapter-node/_app/immutable/assets/_page.DldLgTc-.css +1 -0
  48. package/web/.svelte-kit/adapter-node/_app/immutable/assets/_page.DoNWy7tW.css +1 -0
  49. package/web/.svelte-kit/adapter-node/chunks/AllSessionsPanel.svelte_svelte_type_style_lang.js +49 -0
  50. package/web/.svelte-kit/adapter-node/chunks/alert-dialog-description.js +2670 -0
  51. package/web/.svelte-kit/adapter-node/chunks/auth.js +59 -0
  52. package/web/.svelte-kit/adapter-node/chunks/button.js +82 -0
  53. package/web/.svelte-kit/adapter-node/chunks/client.js +29 -0
  54. package/web/.svelte-kit/adapter-node/chunks/context.js +28 -16
  55. package/web/.svelte-kit/adapter-node/chunks/events.js +121 -0
  56. package/web/.svelte-kit/adapter-node/chunks/index.js +1 -1
  57. package/web/.svelte-kit/adapter-node/chunks/index2.js +186 -68
  58. package/web/.svelte-kit/adapter-node/chunks/internal.js +5 -90
  59. package/web/.svelte-kit/adapter-node/chunks/pane.js +82 -0
  60. package/web/.svelte-kit/adapter-node/chunks/sessions-json.js +16 -1
  61. package/web/.svelte-kit/adapter-node/chunks/sessions.svelte.js +174 -12
  62. package/web/.svelte-kit/adapter-node/chunks/ws-handlers.js +782 -0
  63. package/web/.svelte-kit/adapter-node/entries/endpoints/api/auth/login/_server.ts.js +22 -0
  64. package/web/.svelte-kit/adapter-node/entries/endpoints/api/auth/logout/_server.ts.js +9 -0
  65. package/web/.svelte-kit/adapter-node/entries/endpoints/api/beads/_server.ts.js +22 -0
  66. package/web/.svelte-kit/adapter-node/entries/endpoints/api/chrome/_server.ts.js +30 -0
  67. package/web/.svelte-kit/adapter-node/entries/endpoints/api/files/image/_server.ts.js +53 -0
  68. package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_id_/kill/_server.ts.js +12 -6
  69. package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_id_/restart/_server.ts.js +40 -0
  70. package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_id_/screenshots/_server.ts.js +28 -0
  71. package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_id_/send/_server.ts.js +11 -4
  72. package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_server.ts.js +1 -78
  73. package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_target_/output/_server.ts.js +2 -2
  74. package/web/.svelte-kit/adapter-node/entries/endpoints/api/tmux/panes/_server.ts.js +21 -0
  75. package/web/.svelte-kit/adapter-node/entries/fallbacks/error.svelte.js +1 -18
  76. package/web/.svelte-kit/adapter-node/entries/hooks.server.js +105 -0
  77. package/web/.svelte-kit/adapter-node/entries/pages/_layout.svelte.js +493 -6
  78. package/web/.svelte-kit/adapter-node/entries/pages/_page.svelte.js +3024 -54
  79. package/web/.svelte-kit/adapter-node/entries/pages/login/_page.server.ts.js +15 -0
  80. package/web/.svelte-kit/adapter-node/entries/pages/login/_page.svelte.js +37 -0
  81. package/web/.svelte-kit/adapter-node/entries/pages/session/_target_/_page.svelte.js +623 -46
  82. package/web/.svelte-kit/adapter-node/manifest-full.js +67 -3
  83. package/web/.svelte-kit/adapter-node/manifest.js +67 -3
  84. package/web/.svelte-kit/adapter-node/nodes/0.js +2 -2
  85. package/web/.svelte-kit/adapter-node/nodes/1.js +1 -1
  86. package/web/.svelte-kit/adapter-node/nodes/2.js +2 -2
  87. package/web/.svelte-kit/adapter-node/nodes/3.js +6 -4
  88. package/web/.svelte-kit/adapter-node/nodes/4.js +8 -0
  89. package/web/.svelte-kit/ambient.d.ts +28 -2
  90. package/web/.svelte-kit/generated/server/internal.js +1 -1
  91. package/web/.svelte-kit/output/client/.vite/manifest.json +44 -44
  92. package/web/.svelte-kit/output/client/_app/immutable/chunks/{DU91Ml7U.js → BGcEgn7w.js} +1 -1
  93. package/{dist/web/client/_app/immutable/chunks/DmdO6ygw.js → web/.svelte-kit/output/client/_app/immutable/chunks/By6CYjmE.js} +1 -1
  94. package/web/.svelte-kit/output/client/_app/immutable/chunks/{HKNo9LID.js → CR5jMWGV.js} +1 -1
  95. package/{dist/web/client/_app/immutable/entry/app.CGIBnoln.js → web/.svelte-kit/output/client/_app/immutable/entry/app.DmtnygN7.js} +2 -2
  96. package/web/.svelte-kit/output/client/_app/immutable/entry/start.fYmelGlC.js +1 -0
  97. package/web/.svelte-kit/output/client/_app/immutable/nodes/{0.CqlJ9a31.js → 0.DGDAdwT5.js} +1 -1
  98. package/web/.svelte-kit/output/client/_app/immutable/nodes/{1.BQUZh2-w.js → 1.Cg8dWgUN.js} +1 -1
  99. package/web/.svelte-kit/output/client/_app/immutable/nodes/{2.CCV1YdgF.js → 2.DItUEo3e.js} +1 -1
  100. package/web/.svelte-kit/output/client/_app/immutable/nodes/{3.D9tDCdq8.js → 3.dHui0twF.js} +1 -1
  101. package/web/.svelte-kit/output/client/_app/immutable/nodes/{4.BqPyNkFA.js → 4.CiEHP0cr.js} +1 -1
  102. package/web/.svelte-kit/output/client/_app/version.json +1 -1
  103. package/web/.svelte-kit/output/server/chunks/internal.js +1 -1
  104. package/web/.svelte-kit/output/server/manifest-full.js +1 -1
  105. package/web/.svelte-kit/output/server/manifest.js +1 -1
  106. package/web/.svelte-kit/output/server/nodes/0.js +1 -1
  107. package/web/.svelte-kit/output/server/nodes/1.js +1 -1
  108. package/web/.svelte-kit/output/server/nodes/2.js +1 -1
  109. package/web/.svelte-kit/output/server/nodes/3.js +1 -1
  110. package/web/.svelte-kit/output/server/nodes/4.js +1 -1
  111. package/dist/web/client/_app/immutable/entry/start.CJk8zB1j.js +0 -1
  112. package/web/.svelte-kit/adapter-node/_app/immutable/assets/_layout.4NiX29PU.css +0 -1
  113. package/web/.svelte-kit/adapter-node/_app/immutable/assets/_page.BEMzYUGV.css +0 -1
  114. package/web/.svelte-kit/adapter-node/_app/immutable/assets/_page.DOJn7TG7.css +0 -1
  115. package/web/.svelte-kit/output/client/_app/immutable/entry/start.CJk8zB1j.js +0 -1
@@ -1,4 +1,4 @@
1
- import { r as run_all, f as deferred, i as includes, h as safe_equals, j as equals, o as object_prototype, k as array_prototype, l as get_descriptor, m as get_prototype_of, p as is_array, q as is_extensible, t as index_of, e as escape_html, n as noop, u as set_ssr_context, c as ssr_context, v as push$1, w as pop$1 } from "./context.js";
1
+ import { k as run_all, l as deferred, m as includes, p as safe_equals, q as equals, o as object_prototype, t as array_prototype, u as get_descriptor, b as get_prototype_of, i as is_array, v as is_extensible, w as index_of, e as escape_html, n as noop, x as set_ssr_context, f as ssr_context, y as push$1, z as pop$1 } from "./context.js";
2
2
  import { clsx as clsx$1 } from "clsx";
3
3
  import { B as BROWSER } from "./false.js";
4
4
  import * as devalue from "devalue";
@@ -71,6 +71,7 @@ const ELEMENT_IS_NAMESPACED = 1;
71
71
  const ELEMENT_PRESERVE_ATTRIBUTE_CASE = 1 << 1;
72
72
  const ELEMENT_IS_INPUT = 1 << 2;
73
73
  const UNINITIALIZED = /* @__PURE__ */ Symbol();
74
+ const ATTACHMENT_KEY = "@attach";
74
75
  let tracing_mode_flag = false;
75
76
  let component_context = null;
76
77
  function set_component_context(context) {
@@ -162,11 +163,11 @@ const STATUS_MASK = -7169;
162
163
  function set_signal_status(signal, status) {
163
164
  signal.f = signal.f & STATUS_MASK | status;
164
165
  }
165
- function update_derived_status(derived) {
166
- if ((derived.f & CONNECTED) !== 0 || derived.deps === null) {
167
- set_signal_status(derived, CLEAN);
166
+ function update_derived_status(derived2) {
167
+ if ((derived2.f & CONNECTED) !== 0 || derived2.deps === null) {
168
+ set_signal_status(derived2, CLEAN);
168
169
  } else {
169
- set_signal_status(derived, MAYBE_DIRTY);
170
+ set_signal_status(derived2, MAYBE_DIRTY);
170
171
  }
171
172
  }
172
173
  function clear_marked(deps) {
@@ -655,10 +656,10 @@ function schedule_effect(signal) {
655
656
  }
656
657
  queued_root_effects.push(effect);
657
658
  }
658
- function destroy_derived_effects(derived) {
659
- var effects = derived.effects;
659
+ function destroy_derived_effects(derived2) {
660
+ var effects = derived2.effects;
660
661
  if (effects !== null) {
661
- derived.effects = null;
662
+ derived2.effects = null;
662
663
  for (var i = 0; i < effects.length; i += 1) {
663
664
  destroy_effect(
664
665
  /** @type {Effect} */
@@ -667,8 +668,8 @@ function destroy_derived_effects(derived) {
667
668
  }
668
669
  }
669
670
  }
670
- function get_derived_parent_effect(derived) {
671
- var parent = derived.parent;
671
+ function get_derived_parent_effect(derived2) {
672
+ var parent = derived2.parent;
672
673
  while (parent !== null) {
673
674
  if ((parent.f & DERIVED) === 0) {
674
675
  return (parent.f & DESTROYED) === 0 ? (
@@ -680,29 +681,29 @@ function get_derived_parent_effect(derived) {
680
681
  }
681
682
  return null;
682
683
  }
683
- function execute_derived(derived) {
684
+ function execute_derived(derived2) {
684
685
  var value;
685
686
  var prev_active_effect = active_effect;
686
- set_active_effect(get_derived_parent_effect(derived));
687
+ set_active_effect(get_derived_parent_effect(derived2));
687
688
  {
688
689
  try {
689
- derived.f &= ~WAS_MARKED;
690
- destroy_derived_effects(derived);
691
- value = update_reaction(derived);
690
+ derived2.f &= ~WAS_MARKED;
691
+ destroy_derived_effects(derived2);
692
+ value = update_reaction(derived2);
692
693
  } finally {
693
694
  set_active_effect(prev_active_effect);
694
695
  }
695
696
  }
696
697
  return value;
697
698
  }
698
- function update_derived(derived) {
699
- var value = execute_derived(derived);
700
- if (!derived.equals(value)) {
701
- derived.wv = increment_write_version();
702
- if (!current_batch?.is_fork || derived.deps === null) {
703
- derived.v = value;
704
- if (derived.deps === null) {
705
- set_signal_status(derived, CLEAN);
699
+ function update_derived(derived2) {
700
+ var value = execute_derived(derived2);
701
+ if (!derived2.equals(value)) {
702
+ derived2.wv = increment_write_version();
703
+ if (!current_batch?.is_fork || derived2.deps === null) {
704
+ derived2.v = value;
705
+ if (derived2.deps === null) {
706
+ set_signal_status(derived2, CLEAN);
706
707
  return;
707
708
  }
708
709
  }
@@ -712,10 +713,10 @@ function update_derived(derived) {
712
713
  }
713
714
  if (batch_values !== null) {
714
715
  if (effect_tracking() || current_batch?.is_fork) {
715
- batch_values.set(derived, value);
716
+ batch_values.set(derived2, value);
716
717
  }
717
718
  } else {
718
- update_derived_status(derived);
719
+ update_derived_status(derived2);
719
720
  }
720
721
  }
721
722
  let eager_effects = /* @__PURE__ */ new Set();
@@ -768,14 +769,14 @@ function internal_set(source2, value) {
768
769
  var batch = Batch.ensure();
769
770
  batch.capture(source2, old_value);
770
771
  if ((source2.f & DERIVED) !== 0) {
771
- const derived = (
772
+ const derived2 = (
772
773
  /** @type {Derived} */
773
774
  source2
774
775
  );
775
776
  if ((source2.f & DIRTY) !== 0) {
776
- execute_derived(derived);
777
+ execute_derived(derived2);
777
778
  }
778
- update_derived_status(derived);
779
+ update_derived_status(derived2);
779
780
  }
780
781
  source2.wv = increment_write_version();
781
782
  mark_reactions(source2, DIRTY);
@@ -819,16 +820,16 @@ function mark_reactions(signal, status) {
819
820
  set_signal_status(reaction, status);
820
821
  }
821
822
  if ((flags & DERIVED) !== 0) {
822
- var derived = (
823
+ var derived2 = (
823
824
  /** @type {Derived} */
824
825
  reaction
825
826
  );
826
- batch_values?.delete(derived);
827
+ batch_values?.delete(derived2);
827
828
  if ((flags & WAS_MARKED) === 0) {
828
829
  if (flags & CONNECTED) {
829
830
  reaction.f |= WAS_MARKED;
830
831
  }
831
- mark_reactions(derived, MAYBE_DIRTY);
832
+ mark_reactions(derived2, MAYBE_DIRTY);
832
833
  }
833
834
  } else if (not_dirty) {
834
835
  if ((flags & BLOCK_EFFECT) !== 0 && eager_block_effects !== null) {
@@ -1146,11 +1147,11 @@ function create_effect(type, fn, sync) {
1146
1147
  push_effect(e, parent);
1147
1148
  }
1148
1149
  if (active_reaction !== null && (active_reaction.f & DERIVED) !== 0 && (type & ROOT_EFFECT) === 0) {
1149
- var derived = (
1150
+ var derived2 = (
1150
1151
  /** @type {Derived} */
1151
1152
  active_reaction
1152
1153
  );
1153
- (derived.effects ??= []).push(e);
1154
+ (derived2.effects ??= []).push(e);
1154
1155
  }
1155
1156
  }
1156
1157
  return effect;
@@ -1549,17 +1550,17 @@ function remove_reaction(signal, dependency) {
1549
1550
  // to be unused, when in fact it is used by the currently-updating parent. Checking `new_deps`
1550
1551
  // allows us to skip the expensive work of disconnecting and immediately reconnecting it
1551
1552
  (new_deps === null || !includes.call(new_deps, dependency))) {
1552
- var derived = (
1553
+ var derived2 = (
1553
1554
  /** @type {Derived} */
1554
1555
  dependency
1555
1556
  );
1556
- if ((derived.f & CONNECTED) !== 0) {
1557
- derived.f ^= CONNECTED;
1558
- derived.f &= ~WAS_MARKED;
1557
+ if ((derived2.f & CONNECTED) !== 0) {
1558
+ derived2.f ^= CONNECTED;
1559
+ derived2.f &= ~WAS_MARKED;
1559
1560
  }
1560
- update_derived_status(derived);
1561
- destroy_derived_effects(derived);
1562
- remove_reactions(derived, 0);
1561
+ update_derived_status(derived2);
1562
+ destroy_derived_effects(derived2);
1563
+ remove_reactions(derived2, 0);
1563
1564
  }
1564
1565
  }
1565
1566
  function remove_reactions(signal, start_index) {
@@ -1629,28 +1630,28 @@ function get(signal) {
1629
1630
  return old_values.get(signal);
1630
1631
  }
1631
1632
  if (is_derived) {
1632
- var derived = (
1633
+ var derived2 = (
1633
1634
  /** @type {Derived} */
1634
1635
  signal
1635
1636
  );
1636
1637
  if (is_destroying_effect) {
1637
- var value = derived.v;
1638
- if ((derived.f & CLEAN) === 0 && derived.reactions !== null || depends_on_old_values(derived)) {
1639
- value = execute_derived(derived);
1638
+ var value = derived2.v;
1639
+ if ((derived2.f & CLEAN) === 0 && derived2.reactions !== null || depends_on_old_values(derived2)) {
1640
+ value = execute_derived(derived2);
1640
1641
  }
1641
- old_values.set(derived, value);
1642
+ old_values.set(derived2, value);
1642
1643
  return value;
1643
1644
  }
1644
- var should_connect = (derived.f & CONNECTED) === 0 && !untracking && active_reaction !== null && (is_updating_effect || (active_reaction.f & CONNECTED) !== 0);
1645
- var is_new = derived.deps === null;
1646
- if (is_dirty(derived)) {
1645
+ var should_connect = (derived2.f & CONNECTED) === 0 && !untracking && active_reaction !== null && (is_updating_effect || (active_reaction.f & CONNECTED) !== 0);
1646
+ var is_new = derived2.deps === null;
1647
+ if (is_dirty(derived2)) {
1647
1648
  if (should_connect) {
1648
- derived.f |= CONNECTED;
1649
+ derived2.f |= CONNECTED;
1649
1650
  }
1650
- update_derived(derived);
1651
+ update_derived(derived2);
1651
1652
  }
1652
1653
  if (should_connect && !is_new) {
1653
- reconnect(derived);
1654
+ reconnect(derived2);
1654
1655
  }
1655
1656
  }
1656
1657
  if (batch_values?.has(signal)) {
@@ -1661,11 +1662,11 @@ function get(signal) {
1661
1662
  }
1662
1663
  return signal.v;
1663
1664
  }
1664
- function reconnect(derived) {
1665
- if (derived.deps === null) return;
1666
- derived.f |= CONNECTED;
1667
- for (const dep of derived.deps) {
1668
- (dep.reactions ??= []).push(derived);
1665
+ function reconnect(derived2) {
1666
+ if (derived2.deps === null) return;
1667
+ derived2.f |= CONNECTED;
1668
+ for (const dep of derived2.deps) {
1669
+ (dep.reactions ??= []).push(derived2);
1669
1670
  if ((dep.f & DERIVED) !== 0 && (dep.f & CONNECTED) === 0) {
1670
1671
  reconnect(
1671
1672
  /** @type {Derived} */
@@ -1674,10 +1675,10 @@ function reconnect(derived) {
1674
1675
  }
1675
1676
  }
1676
1677
  }
1677
- function depends_on_old_values(derived) {
1678
- if (derived.v === UNINITIALIZED) return true;
1679
- if (derived.deps === null) return false;
1680
- for (const dep of derived.deps) {
1678
+ function depends_on_old_values(derived2) {
1679
+ if (derived2.v === UNINITIALIZED) return true;
1680
+ if (derived2.deps === null) return false;
1681
+ for (const dep of derived2.deps) {
1681
1682
  if (old_values.has(dep)) {
1682
1683
  return true;
1683
1684
  }
@@ -1699,6 +1700,27 @@ function untrack(fn) {
1699
1700
  untracking = previous_untracking;
1700
1701
  }
1701
1702
  }
1703
+ const VOID_ELEMENT_NAMES = [
1704
+ "area",
1705
+ "base",
1706
+ "br",
1707
+ "col",
1708
+ "command",
1709
+ "embed",
1710
+ "hr",
1711
+ "img",
1712
+ "input",
1713
+ "keygen",
1714
+ "link",
1715
+ "meta",
1716
+ "param",
1717
+ "source",
1718
+ "track",
1719
+ "wbr"
1720
+ ];
1721
+ function is_void(name) {
1722
+ return VOID_ELEMENT_NAMES.includes(name) || name.toLowerCase() === "!doctype";
1723
+ }
1702
1724
  const DOM_BOOLEAN_ATTRIBUTES = [
1703
1725
  "allowfullscreen",
1704
1726
  "async",
@@ -1736,6 +1758,16 @@ const PASSIVE_EVENTS = ["touchstart", "touchmove"];
1736
1758
  function is_passive_event(name) {
1737
1759
  return PASSIVE_EVENTS.includes(name);
1738
1760
  }
1761
+ const RAW_TEXT_ELEMENTS = (
1762
+ /** @type {const} */
1763
+ ["textarea", "script", "style", "title"]
1764
+ );
1765
+ function is_raw_text_element(name) {
1766
+ return RAW_TEXT_ELEMENTS.includes(
1767
+ /** @type {typeof RAW_TEXT_ELEMENTS[number]} */
1768
+ name
1769
+ );
1770
+ }
1739
1771
  const replacements = {
1740
1772
  translate: /* @__PURE__ */ new Map([
1741
1773
  [true, "yes"],
@@ -1913,6 +1945,13 @@ https://svelte.dev/e/invalid_csp`);
1913
1945
  error.name = "Svelte error";
1914
1946
  throw error;
1915
1947
  }
1948
+ function lifecycle_function_unavailable(name) {
1949
+ const error = new Error(`lifecycle_function_unavailable
1950
+ \`${name}(...)\` is not available on the server
1951
+ https://svelte.dev/e/lifecycle_function_unavailable`);
1952
+ error.name = "Svelte error";
1953
+ throw error;
1954
+ }
1916
1955
  function server_context_required() {
1917
1956
  const error = new Error(`server_context_required
1918
1957
  Could not resolve \`render\` context.
@@ -2561,6 +2600,22 @@ class SSRState {
2561
2600
  }
2562
2601
  }
2563
2602
  const INVALID_ATTR_NAME_CHAR_REGEX = /[\s'">/=\u{FDD0}-\u{FDEF}\u{FFFE}\u{FFFF}\u{1FFFE}\u{1FFFF}\u{2FFFE}\u{2FFFF}\u{3FFFE}\u{3FFFF}\u{4FFFE}\u{4FFFF}\u{5FFFE}\u{5FFFF}\u{6FFFE}\u{6FFFF}\u{7FFFE}\u{7FFFF}\u{8FFFE}\u{8FFFF}\u{9FFFE}\u{9FFFF}\u{AFFFE}\u{AFFFF}\u{BFFFE}\u{BFFFF}\u{CFFFE}\u{CFFFF}\u{DFFFE}\u{DFFFF}\u{EFFFE}\u{EFFFF}\u{FFFFE}\u{FFFFF}\u{10FFFE}\u{10FFFF}]/u;
2603
+ function element(renderer, tag, attributes_fn = noop, children_fn = noop) {
2604
+ renderer.push("<!---->");
2605
+ if (tag) {
2606
+ renderer.push(`<${tag}`);
2607
+ attributes_fn();
2608
+ renderer.push(`>`);
2609
+ if (!is_void(tag)) {
2610
+ children_fn();
2611
+ if (!is_raw_text_element(tag)) {
2612
+ renderer.push(EMPTY_COMMENT);
2613
+ }
2614
+ renderer.push(`</${tag}>`);
2615
+ }
2616
+ }
2617
+ renderer.push("<!---->");
2618
+ }
2564
2619
  function render(component, options = {}) {
2565
2620
  if (options.csp?.hash && options.csp.nonce) {
2566
2621
  invalid_csp();
@@ -2611,6 +2666,22 @@ function attributes(attrs, css_hash, classes, styles, flags = 0) {
2611
2666
  }
2612
2667
  return attr_str;
2613
2668
  }
2669
+ function spread_props(props) {
2670
+ const merged_props = {};
2671
+ let key;
2672
+ for (let i = 0; i < props.length; i++) {
2673
+ const obj = props[i];
2674
+ for (key in obj) {
2675
+ const desc = Object.getOwnPropertyDescriptor(obj, key);
2676
+ if (desc) {
2677
+ Object.defineProperty(merged_props, key, desc);
2678
+ } else {
2679
+ merged_props[key] = obj[key];
2680
+ }
2681
+ }
2682
+ }
2683
+ return merged_props;
2684
+ }
2614
2685
  function stringify(value) {
2615
2686
  return typeof value === "string" ? value : value == null ? "" : value + "";
2616
2687
  }
@@ -2641,14 +2712,51 @@ function unsubscribe_stores(store_values) {
2641
2712
  store_values[store_name][1]();
2642
2713
  }
2643
2714
  }
2715
+ function bind_props(props_parent, props_now) {
2716
+ for (const key in props_now) {
2717
+ const initial_value = props_parent[key];
2718
+ const value = props_now[key];
2719
+ if (initial_value === void 0 && value !== void 0 && Object.getOwnPropertyDescriptor(props_parent, key)?.set) {
2720
+ props_parent[key] = value;
2721
+ }
2722
+ }
2723
+ }
2644
2724
  function ensure_array_like(array_like_or_iterator) {
2645
2725
  if (array_like_or_iterator) {
2646
2726
  return array_like_or_iterator.length !== void 0 ? array_like_or_iterator : Array.from(array_like_or_iterator);
2647
2727
  }
2648
2728
  return [];
2649
2729
  }
2730
+ function once(get_value) {
2731
+ let value = (
2732
+ /** @type {V} */
2733
+ UNINITIALIZED
2734
+ );
2735
+ return () => {
2736
+ if (value === UNINITIALIZED) {
2737
+ value = get_value();
2738
+ }
2739
+ return value;
2740
+ };
2741
+ }
2742
+ function props_id(renderer) {
2743
+ const uid = renderer.global.uid();
2744
+ renderer.push("<!--$" + uid + "-->");
2745
+ return uid;
2746
+ }
2747
+ function derived(fn) {
2748
+ const get_value = once(fn);
2749
+ let updated_value;
2750
+ return function(new_value) {
2751
+ if (arguments.length === 0) {
2752
+ return updated_value ?? get_value();
2753
+ }
2754
+ updated_value = new_value;
2755
+ return updated_value;
2756
+ };
2757
+ }
2650
2758
  export {
2651
- attr as $,
2759
+ stringify as $,
2652
2760
  internal_set as A,
2653
2761
  Batch as B,
2654
2762
  COMMENT_NODE as C,
@@ -2674,14 +2782,24 @@ export {
2674
2782
  flushSync as W,
2675
2783
  mutable_source as X,
2676
2784
  render as Y,
2677
- head as Z,
2678
- attr_class as _,
2785
+ attr_class as Z,
2786
+ attr_style as _,
2679
2787
  HYDRATION_END as a,
2680
- ensure_array_like as a0,
2681
- attr_style as a1,
2682
- stringify as a2,
2683
- store_get as a3,
2684
- unsubscribe_stores as a4,
2788
+ attr as a0,
2789
+ ensure_array_like as a1,
2790
+ store_get as a2,
2791
+ unsubscribe_stores as a3,
2792
+ head as a4,
2793
+ derived as a5,
2794
+ attributes as a6,
2795
+ bind_props as a7,
2796
+ spread_props as a8,
2797
+ props_id as a9,
2798
+ clsx as aa,
2799
+ element as ab,
2800
+ ATTACHMENT_KEY as ac,
2801
+ without_reactive_context as ad,
2802
+ lifecycle_function_unavailable as ae,
2685
2803
  HYDRATION_START as b,
2686
2804
  HYDRATION_START_ELSE as c,
2687
2805
  get as d,
@@ -1,5 +1,6 @@
1
1
  import { H as HYDRATION_ERROR, C as COMMENT_NODE, a as HYDRATION_END, g as get_next_sibling, b as HYDRATION_START, c as HYDRATION_START_ELSE, e as effect_tracking, d as get, r as render_effect, s as source, u as untrack, i as increment, q as queue_micro_task, f as active_effect, h as block, j as branch, B as Batch, p as pause_effect, k as create_text, l as defer_effect, m as set_active_effect, n as set_active_reaction, o as set_component_context, t as handle_error, v as active_reaction, w as component_context, x as move_effect, y as set_signal_status, D as DIRTY, z as schedule_effect, M as MAYBE_DIRTY, A as internal_set, E as destroy_effect, F as invoke_error_boundary, G as svelte_boundary_reset_onerror, I as EFFECT_TRANSPARENT, J as EFFECT_PRESERVED, K as BOUNDARY_EFFECT, L as init_operations, N as get_first_child, O as hydration_failed, P as clear_text_content, Q as component_root, R as is_passive_event, S as push, T as pop, U as set, V as LEGACY_PROPS, W as flushSync, X as mutable_source, Y as render } from "./index2.js";
2
- import { d as define_property, a as array_from, s as setContext } from "./context.js";
2
+ import { a as array_from, d as define_property, s as setContext } from "./context.js";
3
+ import { a as all_registered_events, r as root_event_handles, h as handle_event_propagation } from "./events.js";
3
4
  import "clsx";
4
5
  import "./environment.js";
5
6
  let public_env = {};
@@ -442,93 +443,6 @@ class Boundary {
442
443
  });
443
444
  }
444
445
  }
445
- const all_registered_events = /* @__PURE__ */ new Set();
446
- const root_event_handles = /* @__PURE__ */ new Set();
447
- let last_propagated_event = null;
448
- function handle_event_propagation(event) {
449
- var handler_element = this;
450
- var owner_document = (
451
- /** @type {Node} */
452
- handler_element.ownerDocument
453
- );
454
- var event_name = event.type;
455
- var path = event.composedPath?.() || [];
456
- var current_target = (
457
- /** @type {null | Element} */
458
- path[0] || event.target
459
- );
460
- last_propagated_event = event;
461
- var path_idx = 0;
462
- var handled_at = last_propagated_event === event && event.__root;
463
- if (handled_at) {
464
- var at_idx = path.indexOf(handled_at);
465
- if (at_idx !== -1 && (handler_element === document || handler_element === /** @type {any} */
466
- window)) {
467
- event.__root = handler_element;
468
- return;
469
- }
470
- var handler_idx = path.indexOf(handler_element);
471
- if (handler_idx === -1) {
472
- return;
473
- }
474
- if (at_idx <= handler_idx) {
475
- path_idx = at_idx;
476
- }
477
- }
478
- current_target = /** @type {Element} */
479
- path[path_idx] || event.target;
480
- if (current_target === handler_element) return;
481
- define_property(event, "currentTarget", {
482
- configurable: true,
483
- get() {
484
- return current_target || owner_document;
485
- }
486
- });
487
- var previous_reaction = active_reaction;
488
- var previous_effect = active_effect;
489
- set_active_reaction(null);
490
- set_active_effect(null);
491
- try {
492
- var throw_error;
493
- var other_errors = [];
494
- while (current_target !== null) {
495
- var parent_element = current_target.assignedSlot || current_target.parentNode || /** @type {any} */
496
- current_target.host || null;
497
- try {
498
- var delegated = current_target["__" + event_name];
499
- if (delegated != null && (!/** @type {any} */
500
- current_target.disabled || // DOM could've been updated already by the time this is reached, so we check this as well
501
- // -> the target could not have been disabled because it emits the event in the first place
502
- event.target === current_target)) {
503
- delegated.call(current_target, event);
504
- }
505
- } catch (error) {
506
- if (throw_error) {
507
- other_errors.push(error);
508
- } else {
509
- throw_error = error;
510
- }
511
- }
512
- if (event.cancelBubble || parent_element === handler_element || parent_element === null) {
513
- break;
514
- }
515
- current_target = parent_element;
516
- }
517
- if (throw_error) {
518
- for (let error of other_errors) {
519
- queueMicrotask(() => {
520
- throw error;
521
- });
522
- }
523
- throw throw_error;
524
- }
525
- } finally {
526
- event.__root = handler_element;
527
- delete event.currentTarget;
528
- set_active_reaction(previous_reaction);
529
- set_active_effect(previous_effect);
530
- }
531
- }
532
446
  function assign_nodes(start, end) {
533
447
  var effect = (
534
448
  /** @type {Effect} */
@@ -901,7 +815,7 @@ const options = {
901
815
  service_worker: false,
902
816
  service_worker_options: void 0,
903
817
  templates: {
904
- app: ({ head, body, assets, nonce, env }) => '<!doctype html>\n<html lang="en">\n <head>\n <meta charset="utf-8" />\n <meta name="viewport" content="width=device-width, initial-scale=1" />\n ' + head + '\n </head>\n <body data-sveltekit-preload-data="hover">\n <div style="display: contents">' + body + "</div>\n </body>\n</html>\n",
818
+ app: ({ head, body, assets, nonce, env }) => '<!doctype html>\n<html lang="en" class="dark">\n <head>\n <meta charset="utf-8" />\n <meta name="viewport" content="width=device-width, initial-scale=1" />\n ' + head + '\n </head>\n <body data-sveltekit-preload-data="hover">\n <div style="display: contents">' + body + "</div>\n </body>\n</html>\n",
905
819
  error: ({ status, message }) => '<!doctype html>\n<html lang="en">\n <head>\n <meta charset="utf-8" />\n <title>' + message + `</title>
906
820
 
907
821
  <style>
@@ -973,7 +887,7 @@ const options = {
973
887
  <div class="error">
974
888
  <span class="status">` + status + '</span>\n <div class="message">\n <h1>' + message + "</h1>\n </div>\n </div>\n </body>\n</html>\n"
975
889
  },
976
- version_hash: "2yy506"
890
+ version_hash: "12ck3dp"
977
891
  };
978
892
  async function get_hooks() {
979
893
  let handle;
@@ -981,6 +895,7 @@ async function get_hooks() {
981
895
  let handleError;
982
896
  let handleValidationError;
983
897
  let init;
898
+ ({ handle, handleFetch, handleError, handleValidationError, init } = await import("../entries/hooks.server.js"));
984
899
  let reroute;
985
900
  let transport;
986
901
  return {
@@ -0,0 +1,82 @@
1
+ import { execFileSync } from "child_process";
2
+ function isInTmux() {
3
+ return !!process.env.TMUX;
4
+ }
5
+ function getPaneTitle(target) {
6
+ try {
7
+ const result = execFileSync("tmux", ["display-message", "-p", "-t", target, "#{pane_title}"], {
8
+ encoding: "utf-8",
9
+ stdio: ["pipe", "pipe", "pipe"],
10
+ timeout: 1e3
11
+ });
12
+ return result.trim() || null;
13
+ } catch {
14
+ return null;
15
+ }
16
+ }
17
+ function capturePaneContent(target) {
18
+ if (!isInTmux()) {
19
+ return null;
20
+ }
21
+ try {
22
+ const result = execFileSync("tmux", ["capture-pane", "-p", "-t", target], {
23
+ encoding: "utf-8",
24
+ stdio: ["pipe", "pipe", "pipe"],
25
+ timeout: 1e3
26
+ });
27
+ return result;
28
+ } catch {
29
+ return null;
30
+ }
31
+ }
32
+ function detectRecentInterruption(content) {
33
+ if (!content) return null;
34
+ const lines = content.split("\n");
35
+ const bottomLines = lines.slice(-5).join("\n");
36
+ if (bottomLines.includes("Esc to cancel") || bottomLines.includes("Esc to interrupt") || bottomLines.includes("ctrl+c to interrupt")) {
37
+ return null;
38
+ }
39
+ let bottomSepIdx = -1;
40
+ for (let i = lines.length - 1; i >= 0; i--) {
41
+ if (lines[i].startsWith("─────")) {
42
+ bottomSepIdx = i;
43
+ break;
44
+ }
45
+ }
46
+ if (bottomSepIdx === -1) return null;
47
+ let topSepIdx = -1;
48
+ for (let i = bottomSepIdx - 1; i >= 0; i--) {
49
+ if (lines[i].startsWith("─────")) {
50
+ topSepIdx = i;
51
+ break;
52
+ }
53
+ }
54
+ if (topSepIdx === -1) return null;
55
+ let interactionStartIdx = -1;
56
+ const maxScan = Math.max(0, topSepIdx - 15);
57
+ for (let i = topSepIdx - 1; i >= maxScan; i--) {
58
+ const line = lines[i];
59
+ if (line.startsWith("●") || line.startsWith("❯")) {
60
+ interactionStartIdx = i;
61
+ break;
62
+ }
63
+ }
64
+ if (interactionStartIdx === -1) return null;
65
+ const slice = lines.slice(interactionStartIdx, topSepIdx).join("\n");
66
+ if (slice.includes("Interrupted")) return "interrupted";
67
+ if (slice.includes("User declined to answer")) return "declined";
68
+ return null;
69
+ }
70
+ function checkForInterruption(tmuxTarget) {
71
+ const content = capturePaneContent(tmuxTarget);
72
+ if (!content) return null;
73
+ const interruption = detectRecentInterruption(content);
74
+ if (interruption) {
75
+ return { state: "idle", current_action: null, prompt_text: null };
76
+ }
77
+ return null;
78
+ }
79
+ export {
80
+ checkForInterruption as c,
81
+ getPaneTitle as g
82
+ };
@@ -1,4 +1,4 @@
1
- import { readdirSync, readFileSync, existsSync, unlinkSync, writeFileSync, renameSync, mkdirSync } from "fs";
1
+ import { readdirSync, readFileSync, existsSync, mkdirSync, writeFileSync, renameSync, unlinkSync } from "fs";
2
2
  import { join } from "path";
3
3
  import { homedir } from "os";
4
4
  const CLAUDE_WATCH_DIR = join(homedir(), ".claude-watch");
@@ -37,6 +37,8 @@ function upsertSession(input) {
37
37
  id: input.id,
38
38
  pid: input.pid,
39
39
  cwd: input.cwd,
40
+ git_root: input.git_root ?? existing?.git_root ?? null,
41
+ beads_enabled: input.beads_enabled ?? existing?.beads_enabled ?? false,
40
42
  tmux_target: input.tmux_target ?? existing?.tmux_target ?? null,
41
43
  state: input.state ?? existing?.state ?? "busy",
42
44
  current_action: input.current_action ?? existing?.current_action ?? null,
@@ -69,6 +71,18 @@ function deleteSession(id) {
69
71
  } catch {
70
72
  }
71
73
  }
74
+ function removeScreenshot(id, screenshotPath) {
75
+ const session = getSession(id);
76
+ if (!session || !session.screenshots) return false;
77
+ const initialLength = session.screenshots.length;
78
+ session.screenshots = session.screenshots.filter((s) => s.path !== screenshotPath);
79
+ if (session.screenshots.length === initialLength) {
80
+ return false;
81
+ }
82
+ session.last_update = Date.now();
83
+ writeSessionFile(session);
84
+ return true;
85
+ }
72
86
  function getAllSessions() {
73
87
  ensureSessionsDir();
74
88
  const sessions = [];
@@ -105,5 +119,6 @@ export {
105
119
  getSession as b,
106
120
  deleteSession as d,
107
121
  getAllSessions as g,
122
+ removeScreenshot as r,
108
123
  upsertSession as u
109
124
  };