@symerian/symi 2.6.42 → 2.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/dist/{acp-cli-CrEIx-c7.js → acp-cli-B2f0qBiM.js} +2 -2
- package/dist/{acp-cli-BLUeUUA5.js → acp-cli-D-9rzaOI.js} +2 -2
- package/dist/{agents-DDRDszOI.js → agents-Z8ruJPz2.js} +5 -5
- package/dist/{agents.config-BEVb1Pyx.js → agents.config-B9BZoM2m.js} +1 -1
- package/dist/{agents.config-BKCY6F2A.js → agents.config-C951ocyh.js} +1 -1
- package/dist/{audio-preflight-DD18zIZd.js → audio-preflight-HILy3i0m.js} +4 -4
- package/dist/{audit-DB9YkTVX.js → audit-BgdM9XZl.js} +2 -2
- package/dist/{audit-BjI_Yyr5.js → audit-xSagQWH8.js} +2 -2
- package/dist/{auth-choice-D2xXwBeN.js → auth-choice-BmYi6pBy.js} +2 -2
- package/dist/{auth-choice-BbzReh6k.js → auth-choice-D_VfXxhG.js} +2 -2
- package/dist/{banner-DqqRwplt.js → banner-Bucr6qZ5.js} +1 -1
- package/dist/{browser-cli-kDUw45Y0.js → browser-cli-Bc_JVdTj.js} +3 -3
- package/dist/{browser-cli-Ctn9do4z.js → browser-cli-Dr0yx7-7.js} +3 -3
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +1 -1
- package/dist/bundled/session-memory/handler.js +1 -1
- package/dist/{call-DwpGquzW.js → call-CX0cs106.js} +1 -1
- package/dist/{call-DKi-hnaF.js → call-DeCQ2DhS.js} +1 -1
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-options-DQcpDVCx.js → channel-options-BMDryXHq.js} +1 -1
- package/dist/{channel-options-DcazVJQf.js → channel-options-z8-WeZyO.js} +1 -1
- package/dist/{channel-web-u5yMYO4j.js → channel-web-D_YxZAHT.js} +1 -1
- package/dist/{channels-cli-C3iJE8eg.js → channels-cli-397NgC51.js} +7 -7
- package/dist/{channels-cli-Bog4Kn3X.js → channels-cli-CV7_JUru.js} +7 -7
- package/dist/{chrome-BxwUEWrH.js → chrome-CiOKaTN-.js} +7 -7
- package/dist/cli/daemon-cli.js +1 -1
- package/dist/{cli-eBtEEHLK.js → cli-4XU7pNlM.js} +4 -4
- package/dist/{cli-QybdZdE7.js → cli-Dq95udFO.js} +4 -4
- package/dist/{client-jI1oE0_k.js → client-B8xmq-Pw.js} +13 -1
- package/dist/{client-T3qcxXru.js → client-qUlxXXVJ.js} +13 -1
- package/dist/{command-registry-BWnZSpbL.js → command-registry-Cx9T7GYx.js} +10 -10
- package/dist/{completion-cli-BhJFXaVU.js → completion-cli-WlSuySPZ.js} +1 -1
- package/dist/{completion-cli-CUKm7Hb6.js → completion-cli-cyVjlhls.js} +2 -2
- package/dist/{config-cli-B796xZBe.js → config-cli-CMymzmrI.js} +1 -1
- package/dist/{config-cli-CjnQyv45.js → config-cli-EdmbBExA.js} +1 -1
- package/dist/{configure-D3wIQ0yI.js → configure-DRMAIBBf.js} +6 -6
- package/dist/{configure-DUqT7Dyn.js → configure-DkFujfiY.js} +6 -6
- package/dist/control-ui/css/style.css +165 -0
- package/dist/control-ui/js/app.js +39 -0
- package/dist/control-ui/js/gateway.js +2 -0
- package/dist/control-ui/js/history.js +220 -85
- package/dist/control-ui/js/settings.js +71 -8
- package/dist/{cron-cli-DCpsXkrw.js → cron-cli-BHxfvWeT.js} +3 -3
- package/dist/{cron-cli-QCTdVZuP.js → cron-cli-DacyI1Pw.js} +3 -3
- package/dist/{daemon-cli-DSDcmWOi.js → daemon-cli-BLhFbih0.js} +2 -2
- package/dist/{daemon-cli-DhJYEAoL.js → daemon-cli-BxKtiouf.js} +2 -2
- package/dist/daemon-cli.js +12 -0
- package/dist/{deliver-DtuY4Wgl.js → deliver-D6IcPfbt.js} +1 -1
- package/dist/{devices-cli-BNG-fvdl.js → devices-cli-1kiO08aL.js} +2 -2
- package/dist/{devices-cli-x3jIP4Ih.js → devices-cli-B8Q8AzbX.js} +2 -2
- package/dist/{doctor-completion-DBE1IVKj.js → doctor-completion-BDzhB9pE.js} +1 -1
- package/dist/{doctor-completion-D3oUNFQM.js → doctor-completion-CfeROjIz.js} +1 -1
- package/dist/entry.js +1 -1
- package/dist/{exec-approvals-cli-CmndFjEA.js → exec-approvals-cli-BRx2oxs5.js} +4 -4
- package/dist/{exec-approvals-cli-BSgxsdMt.js → exec-approvals-cli-Cj6Z-vxL.js} +4 -4
- package/dist/extensionAPI.js +6 -6
- package/dist/{gateway-cli-BguO9yV4.js → gateway-cli-C-G0QrTd.js} +185 -81
- package/dist/{gateway-cli-Dc1RT_b9.js → gateway-cli-Cpn7JyAw.js} +185 -81
- package/dist/{gateway-rpc-BMdVa3QV.js → gateway-rpc-BWTK7g8B.js} +1 -1
- package/dist/{gateway-rpc-5fREQe9Q.js → gateway-rpc-WM-HXUbl.js} +1 -1
- package/dist/{glass-ui-ws-DoIZyE9O.js → glass-ui-ws-BI81Lh6Z.js} +32 -13
- package/dist/{glass-ui-ws-D0UYleBF.js → glass-ui-ws-jAbqZVc9.js} +32 -13
- package/dist/{health-D3w4YMlC.js → health-B1nih5LD.js} +2 -2
- package/dist/{health-cVvZdeDu.js → health-CsTxt66a.js} +2 -2
- package/dist/{hooks-cli-te5hzOAB.js → hooks-cli-BhxMFkKe.js} +5 -5
- package/dist/{hooks-cli-DZIbjfOA.js → hooks-cli-CIlvtt2M.js} +5 -5
- package/dist/{image-lp19FlzF.js → image-D7Fl08gG.js} +1 -1
- package/dist/index.js +9 -9
- package/dist/llm-slug-generator.js +1 -1
- package/dist/{logs-cli-DtlrLf7u.js → logs-cli-BZV7dq_U.js} +3 -3
- package/dist/{logs-cli-CfGj-dOg.js → logs-cli-DyCcDkRs.js} +3 -3
- package/dist/{models-BCfPhQ4m.js → models-DhMe2rzL.js} +3 -3
- package/dist/{models-cli-BFAtjNIF.js → models-cli-DKM5sCQM.js} +5 -5
- package/dist/{models-cli-Cj2CwbPw.js → models-cli-Dewg24W2.js} +6 -6
- package/dist/{node-cli-DnfDOh1d.js → node-cli-4eMRkmrw.js} +1 -1
- package/dist/{node-cli-eHn9-YfJ.js → node-cli-Dfs0UmnJ.js} +1 -1
- package/dist/{nodes-cli-Ct4M7JOe.js → nodes-cli-BKb61OjH.js} +3 -3
- package/dist/{nodes-cli-Ci3oxw8k.js → nodes-cli-DxfP9DIz.js} +3 -3
- package/dist/{onboard-BMq8qc1m.js → onboard-Dw_nX2RD.js} +3 -3
- package/dist/{onboard-channels-B5wgcffj.js → onboard-channels-8ynJSZL6.js} +1 -1
- package/dist/{onboard-channels-CiOun4k1.js → onboard-channels-ChxtmhFY.js} +1 -1
- package/dist/{onboard-helpers-DFvWPFhU.js → onboard-helpers-CueJ7O_B.js} +1 -1
- package/dist/{onboard-helpers-BBtPmJEe.js → onboard-helpers-PpGrZIGw.js} +1 -1
- package/dist/{onboard-remote-BURDxwoE.js → onboard-remote-Cd9kIiSG.js} +1 -1
- package/dist/{onboard-remote-D-B4EiOE.js → onboard-remote-DCdpB2HH.js} +1 -1
- package/dist/{onboard-skills-BDCzVjxb.js → onboard-skills-CC2CV5Er.js} +1 -1
- package/dist/{onboard-skills-CbzgBT1W.js → onboard-skills-DRICcBwa.js} +1 -1
- package/dist/{onboard-VcdBF5TB.js → onboard-yrgbC1mu.js} +3 -3
- package/dist/{onboarding-Dp7p6zKa.js → onboarding-BJcYsOFw.js} +7 -7
- package/dist/{onboarding-CGNpTyg2.js → onboarding-e-RSXpUi.js} +7 -7
- package/dist/{onboarding.finalize-B6DOu8vp.js → onboarding.finalize-CKNdiZEZ.js} +9 -9
- package/dist/{onboarding.finalize-CrsE5P43.js → onboarding.finalize-DenYTWUu.js} +10 -10
- package/dist/{onboarding.gateway-config-DKwJ5bWd.js → onboarding.gateway-config-DTWQ-Bqq.js} +3 -3
- package/dist/{onboarding.gateway-config-B9zGPfCl.js → onboarding.gateway-config-Dj68bVBt.js} +3 -3
- package/dist/{pi-embedded-DQe8vBwU.js → pi-embedded-BzS693I1.js} +72 -21
- package/dist/{pi-embedded-helpers-Dij3O6ox.js → pi-embedded-helpers-DXAoe1Bx.js} +4 -4
- package/dist/{plugin-registry-BzIbwU3K.js → plugin-registry-Bzz7mUyl.js} +1 -1
- package/dist/{plugin-registry-D3TUplW8.js → plugin-registry-SUa2FFIj.js} +1 -1
- package/dist/plugin-sdk/{channel-web-B6m8UOCl.js → channel-web-DRabhx1e.js} +1 -1
- package/dist/plugin-sdk/gateway/protocol/index.d.ts +13 -2
- package/dist/plugin-sdk/gateway/protocol/schema/sessions.d.ts +11 -0
- package/dist/plugin-sdk/gateway/protocol/schema/types.d.ts +4 -1
- package/dist/plugin-sdk/index.js +2 -2
- package/dist/plugin-sdk/{reply-CGoJQT_s.js → reply-Cw3shPk2.js} +58 -7
- package/dist/plugin-sdk/{web-CJjSOTnI.js → web-CH43nBP0.js} +2 -2
- package/dist/{plugins-cli-BD1Jb2Ml.js → plugins-cli-DwtoU3xk.js} +5 -5
- package/dist/{plugins-cli-DFyRjAtJ.js → plugins-cli-qG50__1A.js} +5 -5
- package/dist/{program-context-45vPEw2G.js → program-context-CZwy-bh6.js} +29 -29
- package/dist/{program-qGm2M9PG.js → program-mZOVTSdQ.js} +10 -10
- package/dist/{prompt-select-styled-DRIS9jSv.js → prompt-select-styled-BZnuv8jI.js} +6 -6
- package/dist/{prompt-select-styled-DRraJGwA.js → prompt-select-styled-CtNg5KGU.js} +6 -6
- package/dist/{provider-auth-helpers-BNOWsjW5.js → provider-auth-helpers-CEYCb2mJ.js} +1 -1
- package/dist/{provider-auth-helpers-BREVjR7R.js → provider-auth-helpers-D60nbSLq.js} +1 -1
- package/dist/{push-apns-CYC70eKy.js → push-apns-B5txhDVi.js} +1 -1
- package/dist/{push-apns-CObVeJLC.js → push-apns-CoG1P_P0.js} +1 -1
- package/dist/{pw-ai-BO5cSmwD.js → pw-ai-CANiWpMA.js} +1 -1
- package/dist/{register.agent-DzzY8jON.js → register.agent-BY_Df_Me.js} +9 -9
- package/dist/{register.agent-DRrHvYcz.js → register.agent-CopGIf9e.js} +8 -8
- package/dist/{register.configure-DlXkwkNR.js → register.configure-Bu_XKu7Z.js} +11 -11
- package/dist/{register.configure-BxtTIFTa.js → register.configure-CoYQhQBT.js} +11 -11
- package/dist/{register.maintenance-LEf8Q_5p.js → register.maintenance-BtqQ3hDN.js} +11 -11
- package/dist/{register.maintenance-CXLXouZV.js → register.maintenance-VqCqhB7y.js} +10 -10
- package/dist/{register.message-DsPa-xHV.js → register.message-DZCCEK01.js} +5 -5
- package/dist/{register.message-C4ifV9vG.js → register.message-dd1xYBZT.js} +5 -5
- package/dist/{register.onboard-CrY4PxLP.js → register.onboard-B6EL1d-C.js} +7 -7
- package/dist/{register.onboard-DLRPa_4B.js → register.onboard-lzwHKufI.js} +7 -7
- package/dist/{register.setup-fBG_dJfi.js → register.setup-BJsr5_qp.js} +7 -7
- package/dist/{register.setup-By37g1vN.js → register.setup-D_b_HW5D.js} +7 -7
- package/dist/{register.status-health-sessions-DG7KGnD0.js → register.status-health-sessions-Dvj4mlom.js} +7 -7
- package/dist/{register.status-health-sessions-Ckw86-gn.js → register.status-health-sessions-jeiqtgl7.js} +7 -7
- package/dist/{register.subclis-C_xKLugM.js → register.subclis-DdPRkz29.js} +20 -20
- package/dist/{reply-DyjXROKp.js → reply-XaXqDK9F.js} +49 -10
- package/dist/{rpc-Co5PQ3IJ.js → rpc-N1nf_c1A.js} +1 -1
- package/dist/{rpc-D0FiEinj.js → rpc-QHo-8pCM.js} +1 -1
- package/dist/{run-main-Cg3ecTbO.js → run-main-MhL-xG3_.js} +17 -17
- package/dist/{runner-Ct0suQrd.js → runner-BS9gGL5i.js} +1 -1
- package/dist/{security-cli-D5BWzqEJ.js → security-cli-B-4J6enu.js} +3 -3
- package/dist/{security-cli-CG1uSlRK.js → security-cli-CSMUEGPK.js} +3 -3
- package/dist/{server-methods-CWcLut3F.js → server-methods-0ksPFnev.js} +471 -88
- package/dist/{server-methods-CW8eFTGD.js → server-methods-Bu1RjLe6.js} +471 -88
- package/dist/{server-node-events-C2h9OPo7.js → server-node-events-DCbzFyQF.js} +5 -5
- package/dist/{server-node-events-CDB0u8PP.js → server-node-events-DZAN3hWE.js} +5 -5
- package/dist/{status-B2Qt-5kL.js → status-CiHkFbIh.js} +1 -1
- package/dist/{status-ZPW5EACm.js → status-DOTlXdcN.js} +5 -5
- package/dist/{status-CMx3GAax.js → status-IWqSLXLR.js} +1 -1
- package/dist/{status-DfPfMVNZ.js → status-qkmUAeWo.js} +5 -5
- package/dist/{subagent-registry-DQHg3jUV.js → subagent-registry-DCoU9xIE.js} +49 -10
- package/dist/{system-cli-DFZNGx0i.js → system-cli-DY7ov1OT.js} +3 -3
- package/dist/{system-cli-Z7uzO8qd.js → system-cli-LFURKpwS.js} +3 -3
- package/dist/{tui-DjPsMdL6.js → tui-BH7JwqvB.js} +2 -2
- package/dist/{tui-DrATGNms.js → tui-C_5HG495.js} +2 -2
- package/dist/{tui-cli-D19-MCXt.js → tui-cli-B65PKZMj.js} +3 -3
- package/dist/{tui-cli-pWD_NrUR.js → tui-cli-CJnfmuxq.js} +3 -3
- package/dist/{unified-runner-DvOFqcrw.js → unified-runner-CApgXtVC.js} +58 -7
- package/dist/{update-cli-Df9rh_aN.js → update-cli-Bi6iMCXr.js} +11 -11
- package/dist/{update-cli-DBasZeVl.js → update-cli-BjQ3o9gQ.js} +12 -12
- package/dist/{update-runner-DVa6cMqp.js → update-runner-BhVsdpxm.js} +1 -1
- package/dist/{update-runner-BRKFzAwV.js → update-runner-FhW6n-Nv.js} +1 -1
- package/dist/{web-Dd05xbUr.js → web-ConlA_Ch.js} +4 -4
- package/dist/{web-Cw3bFAiP.js → web-CthDLVSz.js} +1 -1
- package/dist/{web-CGh5tw__.js → web-Db_-ahjX.js} +6 -6
- package/dist/{web-KiuDkd0x.js → web-Dpb_tv_j.js} +5 -5
- package/extensions/bluebubbles/package.json +1 -1
- package/extensions/copilot-proxy/package.json +1 -1
- package/extensions/diagnostics-otel/package.json +1 -1
- package/extensions/discord/package.json +1 -1
- package/extensions/feishu/package.json +1 -1
- package/extensions/google-antigravity-auth/package.json +1 -1
- package/extensions/google-gemini-cli-auth/package.json +1 -1
- package/extensions/googlechat/package.json +1 -1
- package/extensions/imessage/package.json +1 -1
- package/extensions/irc/package.json +1 -1
- package/extensions/learning-loop/package.json +1 -1
- package/extensions/line/package.json +1 -1
- package/extensions/llm-task/package.json +1 -1
- package/extensions/matrix/CHANGELOG.md +12 -0
- package/extensions/matrix/package.json +1 -1
- package/extensions/mattermost/package.json +1 -1
- package/extensions/memory-core/package.json +1 -1
- package/extensions/memory-lancedb/package.json +1 -1
- package/extensions/minimax-portal-auth/package.json +1 -1
- package/extensions/msteams/CHANGELOG.md +12 -0
- package/extensions/msteams/package.json +1 -1
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nostr/CHANGELOG.md +12 -0
- package/extensions/nostr/package.json +1 -1
- package/extensions/open-prose/package.json +1 -1
- package/extensions/outlook/package.json +1 -1
- package/extensions/pipeline/package.json +1 -1
- package/extensions/signal/package.json +1 -1
- package/extensions/slack/package.json +1 -1
- package/extensions/telegram/package.json +1 -1
- package/extensions/tlon/package.json +1 -1
- package/extensions/twitch/CHANGELOG.md +12 -0
- package/extensions/twitch/package.json +1 -1
- package/extensions/voice-call/CHANGELOG.md +12 -0
- package/extensions/voice-call/package.json +1 -1
- package/extensions/whatsapp/package.json +1 -1
- package/extensions/zalo/CHANGELOG.md +12 -0
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalouser/CHANGELOG.md +12 -0
- package/extensions/zalouser/package.json +1 -1
- package/package.json +1 -1
- package/skills/long-task/scripts/detach-task.sh +91 -14
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
// ── Session History Browser ────────────────────────────────────────────
|
|
2
|
-
// Provides the history drawer: list past sessions, browse archived
|
|
2
|
+
// Provides the history drawer: list past sessions, browse archived
|
|
3
|
+
// transcripts, favourite/delete/load. Exactly one row is ever CURRENT;
|
|
4
|
+
// all others are loadable past sessions.
|
|
3
5
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
4
6
|
|
|
5
7
|
"use strict";
|
|
@@ -15,7 +17,8 @@
|
|
|
15
17
|
|
|
16
18
|
let isOpen = false;
|
|
17
19
|
let toastTimer = null;
|
|
18
|
-
let __viewingFile = null;
|
|
20
|
+
let __viewingFile = null;
|
|
21
|
+
const DELETE_CONFIRM_MS = 5000;
|
|
19
22
|
|
|
20
23
|
// ── Open / close ──────────────────────────────────────────────────────
|
|
21
24
|
function openDrawer() {
|
|
@@ -48,10 +51,15 @@
|
|
|
48
51
|
drawerBody.innerHTML = '<div class="history-loading">Loading sessions…</div>';
|
|
49
52
|
__viewingFile = null;
|
|
50
53
|
|
|
54
|
+
const currentKey = window.SESSION_KEY ?? "agent:main:main";
|
|
55
|
+
const url = "/api/sessions?currentKey=" + encodeURIComponent(currentKey);
|
|
56
|
+
|
|
51
57
|
let sessions;
|
|
52
58
|
try {
|
|
53
|
-
const res = await fetch(
|
|
54
|
-
|
|
59
|
+
const res = await fetch(url);
|
|
60
|
+
const payload = await res.json();
|
|
61
|
+
// Response shape: { sessions: [...] } (2.7.1+)
|
|
62
|
+
sessions = Array.isArray(payload?.sessions) ? payload.sessions : [];
|
|
55
63
|
} catch {
|
|
56
64
|
drawerBody.innerHTML = '<div class="history-empty">Failed to load sessions.</div>';
|
|
57
65
|
return;
|
|
@@ -62,52 +70,203 @@
|
|
|
62
70
|
return;
|
|
63
71
|
}
|
|
64
72
|
|
|
73
|
+
// Group rows: CURRENT / FAVOURITES / RECENT
|
|
74
|
+
const current = sessions.filter((s) => s.kind === "current");
|
|
75
|
+
const favourites = sessions.filter((s) => s.kind !== "current" && s.favorited);
|
|
76
|
+
const recent = sessions.filter((s) => s.kind !== "current" && !s.favorited);
|
|
77
|
+
|
|
65
78
|
drawerBody.innerHTML = "";
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
}
|
|
104
|
-
|
|
79
|
+
|
|
80
|
+
if (current.length > 0) {
|
|
81
|
+
drawerBody.appendChild(renderSection("CURRENT", current));
|
|
82
|
+
}
|
|
83
|
+
if (favourites.length > 0) {
|
|
84
|
+
drawerBody.appendChild(renderSection("★ FAVOURITES", favourites));
|
|
85
|
+
}
|
|
86
|
+
if (recent.length > 0) {
|
|
87
|
+
drawerBody.appendChild(renderSection("RECENT", recent));
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
function renderSection(title, rows) {
|
|
92
|
+
const section = document.createElement("section");
|
|
93
|
+
section.className = "history-section";
|
|
94
|
+
const heading = document.createElement("div");
|
|
95
|
+
heading.className = "history-section-heading";
|
|
96
|
+
heading.textContent = title;
|
|
97
|
+
section.appendChild(heading);
|
|
98
|
+
for (const row of rows) {
|
|
99
|
+
section.appendChild(renderRow(row));
|
|
100
|
+
}
|
|
101
|
+
return section;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
function renderRow(row) {
|
|
105
|
+
const item = document.createElement("div");
|
|
106
|
+
item.className = "history-session-item history-session-" + row.kind;
|
|
107
|
+
|
|
108
|
+
const badge = BADGE[row.kind] ?? BADGE.past;
|
|
109
|
+
const when = formatTimestamp(row.lastActivity);
|
|
110
|
+
const preview = row.preview
|
|
111
|
+
? escHtml(row.preview) + (row.preview.length >= 80 ? "…" : "")
|
|
112
|
+
: '<em style="opacity:0.5">No messages</em>';
|
|
113
|
+
|
|
114
|
+
item.innerHTML = `
|
|
115
|
+
<header class="history-session-header">
|
|
116
|
+
<button class="history-fav-btn ${row.favorited ? "active" : ""}"
|
|
117
|
+
aria-pressed="${row.favorited ? "true" : "false"}"
|
|
118
|
+
aria-label="${row.favorited ? "Unfavourite" : "Favourite"} session"
|
|
119
|
+
title="${row.favorited ? "Unfavourite" : "Favourite"}">★</button>
|
|
120
|
+
<span class="history-session-badge ${badge.className}">${badge.label}</span>
|
|
121
|
+
<span class="history-session-date">${escHtml(when)}</span>
|
|
122
|
+
</header>
|
|
123
|
+
<div class="history-session-meta">
|
|
124
|
+
<span class="history-session-count">${row.msgCount} msgs · ${fmtSize(row.size)}</span>
|
|
125
|
+
</div>
|
|
126
|
+
<div class="history-session-preview">${preview}</div>
|
|
127
|
+
<footer class="history-session-actions">
|
|
128
|
+
${row.canLoad ? `<button class="history-load-btn">Load Session</button>` : ""}
|
|
129
|
+
${row.canDelete ? `<button class="history-delete-btn">Delete</button>` : ""}
|
|
130
|
+
</footer>
|
|
131
|
+
`;
|
|
132
|
+
|
|
133
|
+
// Clicking the row body (not a button) opens the transcript viewer.
|
|
134
|
+
item.addEventListener("click", (e) => {
|
|
135
|
+
const target = e.target;
|
|
136
|
+
if (target instanceof Element && target.closest("button")) {
|
|
137
|
+
return; // button click handled below
|
|
138
|
+
}
|
|
139
|
+
void loadTranscript(row.file, when);
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
const favBtn = item.querySelector(".history-fav-btn");
|
|
143
|
+
favBtn?.addEventListener("click", async (e) => {
|
|
144
|
+
e.stopPropagation();
|
|
145
|
+
await toggleFavorite(row, favBtn);
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
const loadBtn = item.querySelector(".history-load-btn");
|
|
149
|
+
loadBtn?.addEventListener("click", async (e) => {
|
|
150
|
+
e.stopPropagation();
|
|
151
|
+
await loadRow(row);
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
const deleteBtn = item.querySelector(".history-delete-btn");
|
|
155
|
+
if (deleteBtn instanceof HTMLButtonElement) {
|
|
156
|
+
wireTwoStageDelete(deleteBtn, () => deleteRow(row));
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
return item;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
const BADGE = {
|
|
163
|
+
current: { label: "CURRENT", className: "badge-current" },
|
|
164
|
+
past: { label: "PAST", className: "badge-past" },
|
|
165
|
+
archived: { label: "ARCHIVED", className: "badge-archived" },
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
// ── Actions ───────────────────────────────────────────────────────────
|
|
169
|
+
|
|
170
|
+
async function toggleFavorite(row, favBtn) {
|
|
171
|
+
if (!window.gateway?.connected) {
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
const next = !row.favorited;
|
|
175
|
+
try {
|
|
176
|
+
await window.gateway.rpc("sessions.favoriteFile", {
|
|
177
|
+
file: row.file,
|
|
178
|
+
favorited: next,
|
|
179
|
+
});
|
|
180
|
+
row.favorited = next;
|
|
181
|
+
favBtn.classList.toggle("active", next);
|
|
182
|
+
favBtn.setAttribute("aria-pressed", next ? "true" : "false");
|
|
183
|
+
// Re-render to move the row between FAVOURITES and RECENT sections.
|
|
184
|
+
void loadSessionList();
|
|
185
|
+
} catch (err) {
|
|
186
|
+
console.warn("[history] favorite toggle failed", err);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
async function loadRow(row) {
|
|
191
|
+
if (!window.gateway?.connected) {
|
|
192
|
+
alert("Gateway not connected.");
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
drawerBody.innerHTML = '<div class="history-loading">Loading session…</div>';
|
|
196
|
+
try {
|
|
197
|
+
await window.gateway.rpc("sessions.adoptFile", {
|
|
198
|
+
key: window.SESSION_KEY,
|
|
199
|
+
targetFile: row.file,
|
|
200
|
+
});
|
|
201
|
+
closeDrawer();
|
|
202
|
+
if (typeof window.reloadSession === "function") {
|
|
203
|
+
window.reloadSession();
|
|
105
204
|
}
|
|
205
|
+
} catch (err) {
|
|
206
|
+
drawerBody.innerHTML =
|
|
207
|
+
'<div class="history-empty">Load failed: ' +
|
|
208
|
+
escHtml(err?.message ?? String(err)) +
|
|
209
|
+
"</div>";
|
|
210
|
+
}
|
|
211
|
+
}
|
|
106
212
|
|
|
107
|
-
|
|
213
|
+
async function deleteRow(row) {
|
|
214
|
+
if (!window.gateway?.connected) {
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
try {
|
|
218
|
+
if (row.kind === "past" && row.sessionKey) {
|
|
219
|
+
// Archives the transcript via `sessions.delete` — the file becomes
|
|
220
|
+
// an ARCHIVED row in the next list refresh. Reversible.
|
|
221
|
+
await window.gateway.rpc("sessions.delete", {
|
|
222
|
+
key: row.sessionKey,
|
|
223
|
+
deleteTranscript: true,
|
|
224
|
+
});
|
|
225
|
+
} else {
|
|
226
|
+
// Archived files (or orphan live files): permanent deletion.
|
|
227
|
+
await window.gateway.rpc("sessions.deleteFile", { file: row.file });
|
|
228
|
+
}
|
|
229
|
+
await loadSessionList();
|
|
230
|
+
} catch (err) {
|
|
231
|
+
console.warn("[history] delete failed", err);
|
|
232
|
+
alert("Delete failed: " + (err?.message ?? String(err)));
|
|
108
233
|
}
|
|
109
234
|
}
|
|
110
235
|
|
|
236
|
+
/**
|
|
237
|
+
* Wire a Delete button as a two-stage confirm. First click arms it with
|
|
238
|
+
* "Really delete?" for DELETE_CONFIRM_MS; second click within the window
|
|
239
|
+
* runs the action. Auto-reverts if the user walks away.
|
|
240
|
+
*/
|
|
241
|
+
function wireTwoStageDelete(btn, run) {
|
|
242
|
+
let armed = false;
|
|
243
|
+
let armTimer = null;
|
|
244
|
+
const originalLabel = btn.textContent;
|
|
245
|
+
btn.addEventListener("click", (e) => {
|
|
246
|
+
e.stopPropagation();
|
|
247
|
+
if (!armed) {
|
|
248
|
+
armed = true;
|
|
249
|
+
btn.textContent = "Really delete?";
|
|
250
|
+
btn.classList.add("armed");
|
|
251
|
+
if (armTimer) {
|
|
252
|
+
clearTimeout(armTimer);
|
|
253
|
+
}
|
|
254
|
+
armTimer = setTimeout(() => {
|
|
255
|
+
armed = false;
|
|
256
|
+
btn.textContent = originalLabel;
|
|
257
|
+
btn.classList.remove("armed");
|
|
258
|
+
}, DELETE_CONFIRM_MS);
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
clearTimeout(armTimer);
|
|
262
|
+
armed = false;
|
|
263
|
+
btn.disabled = true;
|
|
264
|
+
btn.textContent = "Deleting…";
|
|
265
|
+
btn.classList.remove("armed");
|
|
266
|
+
void run();
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
|
|
111
270
|
// ── Transcript viewer ─────────────────────────────────────────────────
|
|
112
271
|
async function loadTranscript(file, label) {
|
|
113
272
|
__viewingFile = file;
|
|
@@ -125,7 +284,6 @@
|
|
|
125
284
|
|
|
126
285
|
drawerBody.innerHTML = "";
|
|
127
286
|
|
|
128
|
-
// Banner
|
|
129
287
|
const banner = document.createElement("div");
|
|
130
288
|
banner.className = "archive-banner";
|
|
131
289
|
banner.innerHTML = `
|
|
@@ -135,7 +293,6 @@
|
|
|
135
293
|
drawerBody.appendChild(banner);
|
|
136
294
|
drawerBody.querySelector("#archive-back-btn").addEventListener("click", loadSessionList);
|
|
137
295
|
|
|
138
|
-
// Messages container
|
|
139
296
|
const container = document.createElement("div");
|
|
140
297
|
container.className = "history-transcript";
|
|
141
298
|
|
|
@@ -146,13 +303,11 @@
|
|
|
146
303
|
for (const msg of relevant) {
|
|
147
304
|
const el = document.createElement("div");
|
|
148
305
|
el.className = `history-msg ${msg.role}`;
|
|
149
|
-
|
|
150
306
|
const roleLabel = msg.role === "user" ? "YOU" : "SYMI";
|
|
151
307
|
const text = extractMsgText(msg);
|
|
152
308
|
if (!text.trim()) {
|
|
153
309
|
continue;
|
|
154
310
|
}
|
|
155
|
-
|
|
156
311
|
el.innerHTML = `
|
|
157
312
|
<div class="history-msg-role ${msg.role}">${roleLabel}</div>
|
|
158
313
|
<div class="history-msg-text">${escHtml(text)}</div>
|
|
@@ -178,31 +333,6 @@
|
|
|
178
333
|
openDrawer();
|
|
179
334
|
});
|
|
180
335
|
|
|
181
|
-
// ── Session restore ────────────────────────────────────────────────────
|
|
182
|
-
async function restoreSession(file) {
|
|
183
|
-
if (!window.gateway?.connected) {
|
|
184
|
-
alert("Gateway not connected.");
|
|
185
|
-
return;
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
drawerBody.innerHTML = '<div class="history-loading">Restoring session…</div>';
|
|
189
|
-
|
|
190
|
-
try {
|
|
191
|
-
await window.gateway.rpc("sessions.restore", {
|
|
192
|
-
key: window.SESSION_KEY,
|
|
193
|
-
targetFile: file,
|
|
194
|
-
});
|
|
195
|
-
|
|
196
|
-
// Close drawer and reload the chat with the restored session
|
|
197
|
-
closeDrawer();
|
|
198
|
-
if (typeof window.reloadSession === "function") {
|
|
199
|
-
window.reloadSession();
|
|
200
|
-
}
|
|
201
|
-
} catch (err) {
|
|
202
|
-
drawerBody.innerHTML = `<div class="history-empty">Restore failed: ${escHtml(err.message)}</div>`;
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
|
|
206
336
|
// ── Helpers ───────────────────────────────────────────────────────────
|
|
207
337
|
function extractMsgText(msg) {
|
|
208
338
|
if (typeof msg.content === "string") {
|
|
@@ -227,22 +357,27 @@
|
|
|
227
357
|
}
|
|
228
358
|
|
|
229
359
|
function formatTimestamp(iso) {
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
return d.toLocaleString("en-US", {
|
|
233
|
-
month: "short",
|
|
234
|
-
day: "numeric",
|
|
235
|
-
year: "numeric",
|
|
236
|
-
hour: "2-digit",
|
|
237
|
-
minute: "2-digit",
|
|
238
|
-
hour12: true,
|
|
239
|
-
});
|
|
240
|
-
} catch {
|
|
241
|
-
return iso;
|
|
360
|
+
if (!iso) {
|
|
361
|
+
return "Unknown";
|
|
242
362
|
}
|
|
363
|
+
const d = new Date(iso);
|
|
364
|
+
if (Number.isNaN(d.getTime())) {
|
|
365
|
+
return "Unknown";
|
|
366
|
+
}
|
|
367
|
+
return d.toLocaleString("en-US", {
|
|
368
|
+
month: "short",
|
|
369
|
+
day: "numeric",
|
|
370
|
+
year: "numeric",
|
|
371
|
+
hour: "2-digit",
|
|
372
|
+
minute: "2-digit",
|
|
373
|
+
hour12: true,
|
|
374
|
+
});
|
|
243
375
|
}
|
|
244
376
|
|
|
245
377
|
function fmtSize(bytes) {
|
|
378
|
+
if (typeof bytes !== "number" || !Number.isFinite(bytes) || bytes < 0) {
|
|
379
|
+
return "0B";
|
|
380
|
+
}
|
|
246
381
|
if (bytes < 1024) {
|
|
247
382
|
return `${bytes}B`;
|
|
248
383
|
}
|
|
@@ -335,8 +335,21 @@ function openDebugPanel() {
|
|
|
335
335
|
a.click();
|
|
336
336
|
});
|
|
337
337
|
|
|
338
|
-
// Start capturing events
|
|
339
|
-
|
|
338
|
+
// Start capturing events. If a previous capture closure is still attached
|
|
339
|
+
// (rapid re-open race), mark it cancelled so its body no-ops before we
|
|
340
|
+
// swap in the new one. Without this, the previous closure keeps reading
|
|
341
|
+
// the old panel's DOM even after it's gone and throws silently.
|
|
342
|
+
if (window.__debugPanelCapture && typeof window.__debugPanelCapture === "function") {
|
|
343
|
+
try {
|
|
344
|
+
window.__debugPanelCapture.__cancelled = true;
|
|
345
|
+
} catch {
|
|
346
|
+
/* non-extensible function — ignore */
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
const capture = function (type, payload) {
|
|
350
|
+
if (capture.__cancelled) {
|
|
351
|
+
return;
|
|
352
|
+
}
|
|
340
353
|
if (debugPaused) {
|
|
341
354
|
return;
|
|
342
355
|
}
|
|
@@ -356,6 +369,8 @@ function openDebugPanel() {
|
|
|
356
369
|
}
|
|
357
370
|
renderDebugEntries();
|
|
358
371
|
};
|
|
372
|
+
capture.__cancelled = false;
|
|
373
|
+
window.__debugPanelCapture = capture;
|
|
359
374
|
}
|
|
360
375
|
|
|
361
376
|
function renderDebugEntries() {
|
|
@@ -395,6 +410,16 @@ function renderDebugEntries() {
|
|
|
395
410
|
}
|
|
396
411
|
|
|
397
412
|
function closeDebugPanel() {
|
|
413
|
+
// Cancel any pending capture closure before dropping the reference so
|
|
414
|
+
// in-flight capture() calls short-circuit if they were already scheduled.
|
|
415
|
+
const existing = window.__debugPanelCapture;
|
|
416
|
+
if (existing && typeof existing === "function") {
|
|
417
|
+
try {
|
|
418
|
+
existing.__cancelled = true;
|
|
419
|
+
} catch {
|
|
420
|
+
/* non-extensible — ignore */
|
|
421
|
+
}
|
|
422
|
+
}
|
|
398
423
|
window.__debugPanelCapture = null;
|
|
399
424
|
}
|
|
400
425
|
|
|
@@ -680,16 +705,42 @@ function renderDataCard(key, value) {
|
|
|
680
705
|
</div>`;
|
|
681
706
|
}
|
|
682
707
|
|
|
683
|
-
|
|
708
|
+
// Pagination state per generic panel — keyed by the page identifier.
|
|
709
|
+
// Resets when the panel is opened; survives across refresh within one session.
|
|
710
|
+
const GENERIC_PAGE_SIZE = 50;
|
|
711
|
+
const genericShownCount = new Map();
|
|
712
|
+
|
|
713
|
+
function resetGenericPagination(page) {
|
|
714
|
+
genericShownCount.set(page, GENERIC_PAGE_SIZE);
|
|
715
|
+
}
|
|
716
|
+
|
|
717
|
+
function bumpGenericPagination(page) {
|
|
718
|
+
const cur = genericShownCount.get(page) ?? GENERIC_PAGE_SIZE;
|
|
719
|
+
genericShownCount.set(page, cur + GENERIC_PAGE_SIZE);
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
function renderListData(items, page) {
|
|
684
723
|
if (!items || items.length === 0) {
|
|
685
724
|
return '<div class="settings-empty">No items found.</div>';
|
|
686
725
|
}
|
|
687
|
-
|
|
726
|
+
const shown = page ? (genericShownCount.get(page) ?? GENERIC_PAGE_SIZE) : items.length;
|
|
727
|
+
const slice = items.slice(0, shown);
|
|
728
|
+
const html = slice
|
|
688
729
|
.map((item, i) => {
|
|
689
730
|
const title = item.name || item.id || item.sessionKey || item.label || `Item ${i + 1}`;
|
|
690
731
|
return renderDataCard(title, item);
|
|
691
732
|
})
|
|
692
733
|
.join("");
|
|
734
|
+
if (!page || items.length <= shown) {
|
|
735
|
+
return html;
|
|
736
|
+
}
|
|
737
|
+
const remaining = items.length - shown;
|
|
738
|
+
const nextBatch = Math.min(GENERIC_PAGE_SIZE, remaining);
|
|
739
|
+
return `${html}
|
|
740
|
+
<div class="settings-pagination">
|
|
741
|
+
<span class="settings-pagination-info">Showing ${shown} of ${items.length}</span>
|
|
742
|
+
<button class="settings-btn" id="generic-show-more-btn" data-page="${escapeSettingsHtml(page)}">Show ${nextBatch} more</button>
|
|
743
|
+
</div>`;
|
|
693
744
|
}
|
|
694
745
|
|
|
695
746
|
function renderObjectData(data) {
|
|
@@ -760,9 +811,21 @@ async function openGenericPanel(page) {
|
|
|
760
811
|
</div>
|
|
761
812
|
`;
|
|
762
813
|
|
|
763
|
-
document
|
|
764
|
-
|
|
765
|
-
|
|
814
|
+
document.getElementById("generic-refresh-btn").addEventListener("click", () => {
|
|
815
|
+
resetGenericPagination(page);
|
|
816
|
+
void loadGenericData(page);
|
|
817
|
+
});
|
|
818
|
+
// Delegated click handler for the "Show more" button rendered inside
|
|
819
|
+
// generic-content. We attach on the container so it survives innerHTML
|
|
820
|
+
// re-renders driven by loadGenericData.
|
|
821
|
+
container.addEventListener("click", (e) => {
|
|
822
|
+
const target = e.target;
|
|
823
|
+
if (target && target.id === "generic-show-more-btn") {
|
|
824
|
+
bumpGenericPagination(page);
|
|
825
|
+
void loadGenericData(page);
|
|
826
|
+
}
|
|
827
|
+
});
|
|
828
|
+
resetGenericPagination(page);
|
|
766
829
|
await loadGenericData(page);
|
|
767
830
|
}
|
|
768
831
|
|
|
@@ -788,7 +851,7 @@ async function loadGenericData(page) {
|
|
|
788
851
|
}
|
|
789
852
|
if (spec.type === "list") {
|
|
790
853
|
const items = spec.key ? result[spec.key] : Array.isArray(result) ? result : [];
|
|
791
|
-
content.innerHTML = renderListData(items);
|
|
854
|
+
content.innerHTML = renderListData(items, page);
|
|
792
855
|
} else {
|
|
793
856
|
content.innerHTML = renderObjectData(result);
|
|
794
857
|
}
|
|
@@ -16,15 +16,15 @@ import { n as listChannelPlugins } from "./plugins-DKDeQZF0.js";
|
|
|
16
16
|
import "./accounts-DDuIpcln.js";
|
|
17
17
|
import "./bindings-DFaVVCsf.js";
|
|
18
18
|
import "./logging-w5jq5901.js";
|
|
19
|
-
import "./client-
|
|
20
|
-
import "./call-
|
|
19
|
+
import "./client-B8xmq-Pw.js";
|
|
20
|
+
import "./call-CX0cs106.js";
|
|
21
21
|
import "./pairing-token-CX3NN_qj.js";
|
|
22
22
|
import { t as formatDocsLink } from "./links-3i1eUga4.js";
|
|
23
23
|
import "./progress-jIePzvGA.js";
|
|
24
24
|
import { n as formatDurationHuman } from "./format-duration-D0B0Uo-I.js";
|
|
25
25
|
import { i as parseAbsoluteTimeMs, n as resolveCronStaggerMs } from "./stagger-CvFURHzt.js";
|
|
26
26
|
import { n as parsePositiveIntOrUndefined } from "./helpers-BtH6pa6c.js";
|
|
27
|
-
import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-
|
|
27
|
+
import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-WM-HXUbl.js";
|
|
28
28
|
|
|
29
29
|
//#region src/cli/cron-cli/shared.ts
|
|
30
30
|
const getCronChannelOptions = () => ["last", ...listChannelPlugins().map((plugin) => plugin.id)].join("|");
|
|
@@ -6,8 +6,8 @@ import "./agent-scope-D-jRCY0d.js";
|
|
|
6
6
|
import "./github-copilot-token-DuFIqfeC.js";
|
|
7
7
|
import "./manifest-registry-Czr39pxG.js";
|
|
8
8
|
import "./config-BNTB6qj8.js";
|
|
9
|
-
import "./client-
|
|
10
|
-
import "./call-
|
|
9
|
+
import "./client-qUlxXXVJ.js";
|
|
10
|
+
import "./call-DeCQ2DhS.js";
|
|
11
11
|
import "./message-channel-C9dERklz.js";
|
|
12
12
|
import "./pairing-token-Byh6drgn.js";
|
|
13
13
|
import { n as listChannelPlugins } from "./plugins-CwSlLxM8.js";
|
|
@@ -18,7 +18,7 @@ import { n as formatDurationHuman } from "./format-duration-BOC0O2XQ.js";
|
|
|
18
18
|
import { i as parseAbsoluteTimeMs, n as resolveCronStaggerMs } from "./stagger-CQar2eKe.js";
|
|
19
19
|
import { t as formatDocsLink } from "./links-DlWpl9Yv.js";
|
|
20
20
|
import "./progress-BAHiAaDW.js";
|
|
21
|
-
import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-
|
|
21
|
+
import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-BWTK7g8B.js";
|
|
22
22
|
import { n as parsePositiveIntOrUndefined } from "./helpers-ITexi1_a.js";
|
|
23
23
|
|
|
24
24
|
//#region src/cli/cron-cli/shared.ts
|
|
@@ -9,10 +9,10 @@ import { n as pickPrimaryTailnetIPv4 } from "./tailnet-B2SPYrh4.js";
|
|
|
9
9
|
import { u as resolveGatewayBindHost } from "./ws-C7EXRv8z.js";
|
|
10
10
|
import { a as resolveGatewayAuth } from "./auth-B741uFtk.js";
|
|
11
11
|
import { a as inspectPortUsage, s as formatPortDiagnostics } from "./ports-BOmtxoTv.js";
|
|
12
|
-
import { n as callGateway } from "./call-
|
|
12
|
+
import { n as callGateway } from "./call-CX0cs106.js";
|
|
13
13
|
import { t as formatDocsLink } from "./links-3i1eUga4.js";
|
|
14
14
|
import { n as withProgress } from "./progress-jIePzvGA.js";
|
|
15
|
-
import { g as resolveControlUiLinks, h as randomToken } from "./onboard-helpers-
|
|
15
|
+
import { g as resolveControlUiLinks, h as randomToken } from "./onboard-helpers-CueJ7O_B.js";
|
|
16
16
|
import { n as isWSLEnv } from "./wsl-q8spwrME.js";
|
|
17
17
|
import { c as resolveGatewayLaunchAgentLabel, d as resolveGatewaySystemdServiceName } from "./constants-CafH8-8D.js";
|
|
18
18
|
import { n as inheritOptionFromParent } from "./command-options-BkTXKWlb.js";
|
|
@@ -2,7 +2,7 @@ import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
|
2
2
|
import { At as getResolvedLoggerSettings, Dt as theme, Et as isRich, Tt as colorize, Ut as resolveGatewayPort, Wt as resolveIsNixMode, Yt as resolveStateDir, _ as defaultRuntime, lt as shortenHomePath, zt as resolveConfigPath } from "./entry.js";
|
|
3
3
|
import { t as formatCliCommand } from "./command-format-BtYOfWxC.js";
|
|
4
4
|
import { i as loadConfig, l as writeConfigFile, o as readConfigFileSnapshot, r as createConfigIO } from "./config-BNTB6qj8.js";
|
|
5
|
-
import { n as callGateway } from "./call-
|
|
5
|
+
import { n as callGateway } from "./call-DeCQ2DhS.js";
|
|
6
6
|
import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-C9dERklz.js";
|
|
7
7
|
import { l as resolveGatewayBindHost } from "./net-DZ5Ayk-W.js";
|
|
8
8
|
import { n as pickPrimaryTailnetIPv4 } from "./tailnet-Cmumpn76.js";
|
|
@@ -11,7 +11,7 @@ import { i as formatPortDiagnostics, n as inspectPortUsage } from "./ports-2xFXb
|
|
|
11
11
|
import { c as resolveGatewayLaunchAgentLabel, d as resolveGatewaySystemdServiceName } from "./constants-CPeVoSXJ.js";
|
|
12
12
|
import { t as formatDocsLink } from "./links-DlWpl9Yv.js";
|
|
13
13
|
import { n as withProgress } from "./progress-BAHiAaDW.js";
|
|
14
|
-
import { g as resolveControlUiLinks, h as randomToken } from "./onboard-helpers-
|
|
14
|
+
import { g as resolveControlUiLinks, h as randomToken } from "./onboard-helpers-PpGrZIGw.js";
|
|
15
15
|
import { n as isWSLEnv } from "./wsl-jdLWdiKy.js";
|
|
16
16
|
import { n as inheritOptionFromParent } from "./command-options-6wdtBBWB.js";
|
|
17
17
|
import { i as buildGatewayInstallPlan, r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-CVFg-ZmT.js";
|
package/dist/daemon-cli.js
CHANGED
|
@@ -10631,6 +10631,15 @@ const SessionsRestoreParamsSchema = Type.Object({
|
|
|
10631
10631
|
key: NonEmptyString,
|
|
10632
10632
|
targetFile: NonEmptyString
|
|
10633
10633
|
}, { additionalProperties: false });
|
|
10634
|
+
const SessionsAdoptFileParamsSchema = Type.Object({
|
|
10635
|
+
key: NonEmptyString,
|
|
10636
|
+
targetFile: NonEmptyString
|
|
10637
|
+
}, { additionalProperties: false });
|
|
10638
|
+
const SessionsFavoriteFileParamsSchema = Type.Object({
|
|
10639
|
+
file: NonEmptyString,
|
|
10640
|
+
favorited: Type.Boolean()
|
|
10641
|
+
}, { additionalProperties: false });
|
|
10642
|
+
const SessionsDeleteFileParamsSchema = Type.Object({ file: NonEmptyString }, { additionalProperties: false });
|
|
10634
10643
|
const SessionsDeleteParamsSchema = Type.Object({
|
|
10635
10644
|
key: NonEmptyString,
|
|
10636
10645
|
deleteTranscript: Type.Optional(Type.Boolean()),
|
|
@@ -10763,6 +10772,9 @@ const validateSessionsResolveParams = ajv.compile(SessionsResolveParamsSchema);
|
|
|
10763
10772
|
const validateSessionsPatchParams = ajv.compile(SessionsPatchParamsSchema);
|
|
10764
10773
|
const validateSessionsResetParams = ajv.compile(SessionsResetParamsSchema);
|
|
10765
10774
|
const validateSessionsRestoreParams = ajv.compile(SessionsRestoreParamsSchema);
|
|
10775
|
+
const validateSessionsAdoptFileParams = ajv.compile(SessionsAdoptFileParamsSchema);
|
|
10776
|
+
const validateSessionsFavoriteFileParams = ajv.compile(SessionsFavoriteFileParamsSchema);
|
|
10777
|
+
const validateSessionsDeleteFileParams = ajv.compile(SessionsDeleteFileParamsSchema);
|
|
10766
10778
|
const validateSessionsDeleteParams = ajv.compile(SessionsDeleteParamsSchema);
|
|
10767
10779
|
const validateSessionsCompactParams = ajv.compile(SessionsCompactParamsSchema);
|
|
10768
10780
|
const validateSessionsUsageParams = ajv.compile(SessionsUsageParamsSchema);
|
|
@@ -5,7 +5,7 @@ import { c as getActivePluginRegistry, v as createInternalHookEvent, y as trigge
|
|
|
5
5
|
import { t as createSubsystemLogger } from "./subsystem-CZixfwU8.js";
|
|
6
6
|
import { a as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-Cn6drXx2.js";
|
|
7
7
|
import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-71oIavrF.js";
|
|
8
|
-
import { B as resolveMirroredTranscriptText, i as isMessagingToolDuplicate, z as appendAssistantMessageToSessionTranscript } from "./pi-embedded-helpers-
|
|
8
|
+
import { B as resolveMirroredTranscriptText, i as isMessagingToolDuplicate, z as appendAssistantMessageToSessionTranscript } from "./pi-embedded-helpers-DXAoe1Bx.js";
|
|
9
9
|
import { d as getChannelDock } from "./thinking-W85Rb32m.js";
|
|
10
10
|
import { c as resolveChunkMode, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, n as chunkByParagraph } from "./chunk-DTMTDXwE.js";
|
|
11
11
|
import { n as resolveMarkdownTableMode } from "./markdown-tables-DawaaZEe.js";
|
|
@@ -5,8 +5,8 @@ import "./agent-scope-D-jRCY0d.js";
|
|
|
5
5
|
import "./github-copilot-token-DuFIqfeC.js";
|
|
6
6
|
import "./manifest-registry-Czr39pxG.js";
|
|
7
7
|
import "./config-BNTB6qj8.js";
|
|
8
|
-
import {
|
|
9
|
-
import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-
|
|
8
|
+
import { Ht as listDevicePairing, Jt as summarizeDeviceTokens, zt as approveDevicePairing } from "./client-qUlxXXVJ.js";
|
|
9
|
+
import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-DeCQ2DhS.js";
|
|
10
10
|
import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-C9dERklz.js";
|
|
11
11
|
import "./pairing-token-Byh6drgn.js";
|
|
12
12
|
import { n as isLoopbackHost } from "./net-DZ5Ayk-W.js";
|
|
@@ -12,8 +12,8 @@ import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-
|
|
|
12
12
|
import "./config-Dz95lSBW.js";
|
|
13
13
|
import "./manifest-registry-C4BxOMWX.js";
|
|
14
14
|
import { r as isLoopbackHost } from "./ws-C7EXRv8z.js";
|
|
15
|
-
import {
|
|
16
|
-
import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-
|
|
15
|
+
import { Ht as listDevicePairing, Jt as summarizeDeviceTokens, zt as approveDevicePairing } from "./client-B8xmq-Pw.js";
|
|
16
|
+
import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-CX0cs106.js";
|
|
17
17
|
import "./pairing-token-CX3NN_qj.js";
|
|
18
18
|
import { n as formatTimeAgo } from "./format-relative-BXoxEQVN.js";
|
|
19
19
|
import { n as withProgress } from "./progress-jIePzvGA.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { r as resolveCliName } from "./command-format-BtYOfWxC.js";
|
|
2
2
|
import { t as resolveSymiPackageRoot } from "./symi-root-BNuQ4lAT.js";
|
|
3
3
|
import { t as note } from "./note-DDecZomM.js";
|
|
4
|
-
import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-
|
|
4
|
+
import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-cyVjlhls.js";
|
|
5
5
|
import { spawnSync } from "node:child_process";
|
|
6
6
|
import path from "node:path";
|
|
7
7
|
|