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.
- package/README.md +4 -2
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +1 -1
- package/dist/utils/version.d.ts +1 -1
- package/dist/utils/version.js +1 -1
- package/dist/web/client/_app/immutable/chunks/{DU91Ml7U.js → BGcEgn7w.js} +1 -1
- package/{web/.svelte-kit/output/client/_app/immutable/chunks/DmdO6ygw.js → dist/web/client/_app/immutable/chunks/By6CYjmE.js} +1 -1
- package/dist/web/client/_app/immutable/chunks/{HKNo9LID.js → CR5jMWGV.js} +1 -1
- package/{web/.svelte-kit/output/client/_app/immutable/entry/app.CGIBnoln.js → dist/web/client/_app/immutable/entry/app.DmtnygN7.js} +2 -2
- package/dist/web/client/_app/immutable/entry/start.fYmelGlC.js +1 -0
- package/dist/web/client/_app/immutable/nodes/{0.CqlJ9a31.js → 0.DGDAdwT5.js} +1 -1
- package/dist/web/client/_app/immutable/nodes/{1.BQUZh2-w.js → 1.Cg8dWgUN.js} +1 -1
- package/dist/web/client/_app/immutable/nodes/{2.CCV1YdgF.js → 2.DItUEo3e.js} +1 -1
- package/dist/web/client/_app/immutable/nodes/{3.D9tDCdq8.js → 3.dHui0twF.js} +1 -1
- package/dist/web/client/_app/immutable/nodes/{4.BqPyNkFA.js → 4.CiEHP0cr.js} +1 -1
- package/dist/web/client/_app/version.json +1 -1
- package/dist/web/server/chunks/{0-BHWsmCJv.js → 0-BmRg-l2z.js} +5 -5
- package/dist/web/server/chunks/{0-BHWsmCJv.js.map → 0-BmRg-l2z.js.map} +1 -1
- package/dist/web/server/chunks/{1-YRx6A8Tm.js → 1-CPgO8U7d.js} +3 -3
- package/dist/web/server/chunks/{1-YRx6A8Tm.js.map → 1-CPgO8U7d.js.map} +1 -1
- package/dist/web/server/chunks/{2-eC6JuGAo.js → 2--ZO5fZp_.js} +5 -5
- package/dist/web/server/chunks/{2-eC6JuGAo.js.map → 2--ZO5fZp_.js.map} +1 -1
- package/dist/web/server/chunks/{3-Bk-wV20p.js → 3-7HqSep9c.js} +3 -3
- package/dist/web/server/chunks/{3-Bk-wV20p.js.map → 3-7HqSep9c.js.map} +1 -1
- package/dist/web/server/chunks/{4-nteBgDrW.js → 4-C1PCdmY0.js} +4 -4
- package/dist/web/server/chunks/{4-nteBgDrW.js.map → 4-C1PCdmY0.js.map} +1 -1
- package/dist/web/server/index.js +1 -1
- package/dist/web/server/index.js.map +1 -1
- package/dist/web/server/manifest.js +10 -10
- package/dist/web/server/manifest.js.map +1 -1
- package/docs/release-checklist.md +8 -34
- package/docs/removing-hooks.md +14 -14
- package/package.json +1 -1
- package/src/cli.ts +1 -1
- package/src/utils/version.ts +1 -1
- package/web/.svelte-kit/adapter-bun/chunks/internal.js +1 -1
- package/web/.svelte-kit/adapter-bun/manifest-full.js +1 -1
- package/web/.svelte-kit/adapter-bun/manifest.js +1 -1
- package/web/.svelte-kit/adapter-bun/nodes/0.js +1 -1
- package/web/.svelte-kit/adapter-bun/nodes/1.js +1 -1
- package/web/.svelte-kit/adapter-bun/nodes/2.js +1 -1
- package/web/.svelte-kit/adapter-bun/nodes/3.js +1 -1
- package/web/.svelte-kit/adapter-bun/nodes/4.js +1 -1
- package/web/.svelte-kit/adapter-node/.vite/manifest.json +200 -15
- package/web/.svelte-kit/adapter-node/_app/immutable/assets/AllSessionsPanel.BKhqOrbV.css +1 -0
- package/web/.svelte-kit/adapter-node/_app/immutable/assets/_layout.WptSHSUl.css +1 -0
- package/web/.svelte-kit/adapter-node/_app/immutable/assets/_page.DldLgTc-.css +1 -0
- package/web/.svelte-kit/adapter-node/_app/immutable/assets/_page.DoNWy7tW.css +1 -0
- package/web/.svelte-kit/adapter-node/chunks/AllSessionsPanel.svelte_svelte_type_style_lang.js +49 -0
- package/web/.svelte-kit/adapter-node/chunks/alert-dialog-description.js +2670 -0
- package/web/.svelte-kit/adapter-node/chunks/auth.js +59 -0
- package/web/.svelte-kit/adapter-node/chunks/button.js +82 -0
- package/web/.svelte-kit/adapter-node/chunks/client.js +29 -0
- package/web/.svelte-kit/adapter-node/chunks/context.js +28 -16
- package/web/.svelte-kit/adapter-node/chunks/events.js +121 -0
- package/web/.svelte-kit/adapter-node/chunks/index.js +1 -1
- package/web/.svelte-kit/adapter-node/chunks/index2.js +186 -68
- package/web/.svelte-kit/adapter-node/chunks/internal.js +5 -90
- package/web/.svelte-kit/adapter-node/chunks/pane.js +82 -0
- package/web/.svelte-kit/adapter-node/chunks/sessions-json.js +16 -1
- package/web/.svelte-kit/adapter-node/chunks/sessions.svelte.js +174 -12
- package/web/.svelte-kit/adapter-node/chunks/ws-handlers.js +782 -0
- package/web/.svelte-kit/adapter-node/entries/endpoints/api/auth/login/_server.ts.js +22 -0
- package/web/.svelte-kit/adapter-node/entries/endpoints/api/auth/logout/_server.ts.js +9 -0
- package/web/.svelte-kit/adapter-node/entries/endpoints/api/beads/_server.ts.js +22 -0
- package/web/.svelte-kit/adapter-node/entries/endpoints/api/chrome/_server.ts.js +30 -0
- package/web/.svelte-kit/adapter-node/entries/endpoints/api/files/image/_server.ts.js +53 -0
- package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_id_/kill/_server.ts.js +12 -6
- package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_id_/restart/_server.ts.js +40 -0
- package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_id_/screenshots/_server.ts.js +28 -0
- package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_id_/send/_server.ts.js +11 -4
- package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_server.ts.js +1 -78
- package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_target_/output/_server.ts.js +2 -2
- package/web/.svelte-kit/adapter-node/entries/endpoints/api/tmux/panes/_server.ts.js +21 -0
- package/web/.svelte-kit/adapter-node/entries/fallbacks/error.svelte.js +1 -18
- package/web/.svelte-kit/adapter-node/entries/hooks.server.js +105 -0
- package/web/.svelte-kit/adapter-node/entries/pages/_layout.svelte.js +493 -6
- package/web/.svelte-kit/adapter-node/entries/pages/_page.svelte.js +3024 -54
- package/web/.svelte-kit/adapter-node/entries/pages/login/_page.server.ts.js +15 -0
- package/web/.svelte-kit/adapter-node/entries/pages/login/_page.svelte.js +37 -0
- package/web/.svelte-kit/adapter-node/entries/pages/session/_target_/_page.svelte.js +623 -46
- package/web/.svelte-kit/adapter-node/manifest-full.js +67 -3
- package/web/.svelte-kit/adapter-node/manifest.js +67 -3
- package/web/.svelte-kit/adapter-node/nodes/0.js +2 -2
- package/web/.svelte-kit/adapter-node/nodes/1.js +1 -1
- package/web/.svelte-kit/adapter-node/nodes/2.js +2 -2
- package/web/.svelte-kit/adapter-node/nodes/3.js +6 -4
- package/web/.svelte-kit/adapter-node/nodes/4.js +8 -0
- package/web/.svelte-kit/ambient.d.ts +28 -2
- package/web/.svelte-kit/generated/server/internal.js +1 -1
- package/web/.svelte-kit/output/client/.vite/manifest.json +44 -44
- package/web/.svelte-kit/output/client/_app/immutable/chunks/{DU91Ml7U.js → BGcEgn7w.js} +1 -1
- package/{dist/web/client/_app/immutable/chunks/DmdO6ygw.js → web/.svelte-kit/output/client/_app/immutable/chunks/By6CYjmE.js} +1 -1
- package/web/.svelte-kit/output/client/_app/immutable/chunks/{HKNo9LID.js → CR5jMWGV.js} +1 -1
- package/{dist/web/client/_app/immutable/entry/app.CGIBnoln.js → web/.svelte-kit/output/client/_app/immutable/entry/app.DmtnygN7.js} +2 -2
- package/web/.svelte-kit/output/client/_app/immutable/entry/start.fYmelGlC.js +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/nodes/{0.CqlJ9a31.js → 0.DGDAdwT5.js} +1 -1
- package/web/.svelte-kit/output/client/_app/immutable/nodes/{1.BQUZh2-w.js → 1.Cg8dWgUN.js} +1 -1
- package/web/.svelte-kit/output/client/_app/immutable/nodes/{2.CCV1YdgF.js → 2.DItUEo3e.js} +1 -1
- package/web/.svelte-kit/output/client/_app/immutable/nodes/{3.D9tDCdq8.js → 3.dHui0twF.js} +1 -1
- package/web/.svelte-kit/output/client/_app/immutable/nodes/{4.BqPyNkFA.js → 4.CiEHP0cr.js} +1 -1
- package/web/.svelte-kit/output/client/_app/version.json +1 -1
- package/web/.svelte-kit/output/server/chunks/internal.js +1 -1
- package/web/.svelte-kit/output/server/manifest-full.js +1 -1
- package/web/.svelte-kit/output/server/manifest.js +1 -1
- package/web/.svelte-kit/output/server/nodes/0.js +1 -1
- package/web/.svelte-kit/output/server/nodes/1.js +1 -1
- package/web/.svelte-kit/output/server/nodes/2.js +1 -1
- package/web/.svelte-kit/output/server/nodes/3.js +1 -1
- package/web/.svelte-kit/output/server/nodes/4.js +1 -1
- package/dist/web/client/_app/immutable/entry/start.CJk8zB1j.js +0 -1
- package/web/.svelte-kit/adapter-node/_app/immutable/assets/_layout.4NiX29PU.css +0 -1
- package/web/.svelte-kit/adapter-node/_app/immutable/assets/_page.BEMzYUGV.css +0 -1
- package/web/.svelte-kit/adapter-node/_app/immutable/assets/_page.DOJn7TG7.css +0 -1
- package/web/.svelte-kit/output/client/_app/immutable/entry/start.CJk8zB1j.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
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(
|
|
166
|
-
if ((
|
|
167
|
-
set_signal_status(
|
|
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(
|
|
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(
|
|
659
|
-
var effects =
|
|
659
|
+
function destroy_derived_effects(derived2) {
|
|
660
|
+
var effects = derived2.effects;
|
|
660
661
|
if (effects !== null) {
|
|
661
|
-
|
|
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(
|
|
671
|
-
var 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(
|
|
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(
|
|
687
|
+
set_active_effect(get_derived_parent_effect(derived2));
|
|
687
688
|
{
|
|
688
689
|
try {
|
|
689
|
-
|
|
690
|
-
destroy_derived_effects(
|
|
691
|
-
value = update_reaction(
|
|
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(
|
|
699
|
-
var value = execute_derived(
|
|
700
|
-
if (!
|
|
701
|
-
|
|
702
|
-
if (!current_batch?.is_fork ||
|
|
703
|
-
|
|
704
|
-
if (
|
|
705
|
-
set_signal_status(
|
|
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(
|
|
716
|
+
batch_values.set(derived2, value);
|
|
716
717
|
}
|
|
717
718
|
} else {
|
|
718
|
-
update_derived_status(
|
|
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
|
|
772
|
+
const derived2 = (
|
|
772
773
|
/** @type {Derived} */
|
|
773
774
|
source2
|
|
774
775
|
);
|
|
775
776
|
if ((source2.f & DIRTY) !== 0) {
|
|
776
|
-
execute_derived(
|
|
777
|
+
execute_derived(derived2);
|
|
777
778
|
}
|
|
778
|
-
update_derived_status(
|
|
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
|
|
823
|
+
var derived2 = (
|
|
823
824
|
/** @type {Derived} */
|
|
824
825
|
reaction
|
|
825
826
|
);
|
|
826
|
-
batch_values?.delete(
|
|
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(
|
|
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
|
|
1150
|
+
var derived2 = (
|
|
1150
1151
|
/** @type {Derived} */
|
|
1151
1152
|
active_reaction
|
|
1152
1153
|
);
|
|
1153
|
-
(
|
|
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
|
|
1553
|
+
var derived2 = (
|
|
1553
1554
|
/** @type {Derived} */
|
|
1554
1555
|
dependency
|
|
1555
1556
|
);
|
|
1556
|
-
if ((
|
|
1557
|
-
|
|
1558
|
-
|
|
1557
|
+
if ((derived2.f & CONNECTED) !== 0) {
|
|
1558
|
+
derived2.f ^= CONNECTED;
|
|
1559
|
+
derived2.f &= ~WAS_MARKED;
|
|
1559
1560
|
}
|
|
1560
|
-
update_derived_status(
|
|
1561
|
-
destroy_derived_effects(
|
|
1562
|
-
remove_reactions(
|
|
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
|
|
1633
|
+
var derived2 = (
|
|
1633
1634
|
/** @type {Derived} */
|
|
1634
1635
|
signal
|
|
1635
1636
|
);
|
|
1636
1637
|
if (is_destroying_effect) {
|
|
1637
|
-
var value =
|
|
1638
|
-
if ((
|
|
1639
|
-
value = execute_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(
|
|
1642
|
+
old_values.set(derived2, value);
|
|
1642
1643
|
return value;
|
|
1643
1644
|
}
|
|
1644
|
-
var should_connect = (
|
|
1645
|
-
var is_new =
|
|
1646
|
-
if (is_dirty(
|
|
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
|
-
|
|
1649
|
+
derived2.f |= CONNECTED;
|
|
1649
1650
|
}
|
|
1650
|
-
update_derived(
|
|
1651
|
+
update_derived(derived2);
|
|
1651
1652
|
}
|
|
1652
1653
|
if (should_connect && !is_new) {
|
|
1653
|
-
reconnect(
|
|
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(
|
|
1665
|
-
if (
|
|
1666
|
-
|
|
1667
|
-
for (const dep of
|
|
1668
|
-
(dep.reactions ??= []).push(
|
|
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(
|
|
1678
|
-
if (
|
|
1679
|
-
if (
|
|
1680
|
-
for (const dep of
|
|
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
|
-
|
|
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
|
-
|
|
2678
|
-
|
|
2785
|
+
attr_class as Z,
|
|
2786
|
+
attr_style as _,
|
|
2679
2787
|
HYDRATION_END as a,
|
|
2680
|
-
|
|
2681
|
-
|
|
2682
|
-
|
|
2683
|
-
|
|
2684
|
-
|
|
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 {
|
|
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: "
|
|
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,
|
|
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
|
};
|