@symerian/symi 3.5.14 → 3.5.16
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/{agent-Cq8f1rHB.js → agent-RWZSPbLw.js} +1 -1
- package/dist/{agent-CSOQs4VQ.js → agent-Za31LZ2H.js} +1 -1
- package/dist/{agents-BiKiy1SO.js → agents-CulBOE6L.js} +3 -3
- package/dist/{audit-DJURK8ly.js → audit-B1fVD2bA.js} +2 -2
- package/dist/{audit-BPhWpe_6.js → audit-BQnxE5w6.js} +2 -2
- package/dist/{auth-choice-9XyVfAyH.js → auth-choice-B8n3tJtT.js} +2 -2
- package/dist/{auth-choice-BYOypIGE.js → auth-choice-C8ElO44A.js} +2 -2
- package/dist/{banner-BDexjPFs.js → banner-B91SPus6.js} +1 -1
- package/dist/{browser-cli-BxDx4t2-.js → browser-cli-BvOz7txM.js} +3 -3
- package/dist/{browser-cli-BT0akXlr.js → browser-cli-CXDzGAN7.js} +3 -3
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +4 -4
- package/dist/bundled/session-memory/handler.js +4 -4
- package/dist/{call-mzNPQq1S.js → call-A18kwyah.js} +2 -1
- package/dist/{call-BC1HAVqW.js → call-PpGwcPn-.js} +2 -1
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-options-Cy9aQzx9.js → channel-options-1G5HGFpn.js} +1 -1
- package/dist/{channel-options-BjgoCETm.js → channel-options-CsyyC4uc.js} +1 -1
- package/dist/{channels-cli-DokpJOeN.js → channels-cli-R3TK9Jwf.js} +9 -9
- package/dist/{channels-cli-R0UMOKTA.js → channels-cli-aF7d6Af9.js} +9 -9
- package/dist/{chrome-CmQwGAuL.js → chrome-OTJg3QKn.js} +7 -7
- package/dist/{cli-ay-COtm8.js → cli-Bguq-s8o.js} +6 -6
- package/dist/{cli-BnLVnWOZ.js → cli-CFaH6TRI.js} +6 -6
- package/dist/{client-BcvL_D-H.js → client-CdiymIXS.js} +32 -1
- package/dist/{client-BfnNfATE.js → client-DDqXo-cF.js} +32 -1
- package/dist/{command-registry-CjxdlqkY.js → command-registry-2hfSOaGL.js} +11 -11
- package/dist/{completion-cli-kGAGMr-I.js → completion-cli-BEO2AB41.js} +1 -1
- package/dist/{completion-cli-D2pLg5yF.js → completion-cli-TYU7Y_XZ.js} +2 -2
- package/dist/{config-cli-D12Nouyy.js → config-cli-Cvylxp-R.js} +1 -1
- package/dist/{config-cli-BAognmPE.js → config-cli-D6vpEtzB.js} +1 -1
- package/dist/{configure-CJp0NIbm.js → configure-BMRfSJ5h.js} +6 -6
- package/dist/{configure-B8-2sqW3.js → configure-DRDyxmMR.js} +6 -6
- package/dist/control-ui/css/style.css +80 -0
- package/dist/control-ui/index.html +1 -0
- package/dist/control-ui/js/gateway.js +10 -0
- package/dist/control-ui/js/symframe.js +353 -0
- package/dist/{cron-cli-DoXlzwQ0.js → cron-cli-DVEdIAaa.js} +3 -3
- package/dist/{cron-cli-BJzi2QtY.js → cron-cli-DlxcZT7g.js} +3 -3
- package/dist/{daemon-cli-CRGNFCN7.js → daemon-cli-6ZV3jmTp.js} +2 -2
- package/dist/{daemon-cli-DXHRewv8.js → daemon-cli-DqJhEk3T.js} +2 -2
- package/dist/daemon-cli.js +32 -0
- package/dist/{deliver-B04yNX82.js → deliver-BiWlR84Y.js} +4 -4
- package/dist/{devices-cli-DAG-TaOo.js → devices-cli-C4rLpzkl.js} +2 -2
- package/dist/{devices-cli-YdVaVQkF.js → devices-cli-C6EdHL_5.js} +2 -2
- package/dist/{doctor-completion-CmKOsLDy.js → doctor-completion-CvaSyxyp.js} +1 -1
- package/dist/{doctor-completion-Ca692KiP.js → doctor-completion-DgNgQFQQ.js} +1 -1
- package/dist/entry.js +1 -1
- package/dist/{exec-approvals-cli-Cnie7kMb.js → exec-approvals-cli-Ca54uWdL.js} +4 -4
- package/dist/{exec-approvals-cli-BuHNELGd.js → exec-approvals-cli-bu1S7v6i.js} +4 -4
- package/dist/extensionAPI.js +2 -2
- package/dist/{gateway-cli-zh8P3vbG.js → gateway-cli-BNhURE6O.js} +16 -16
- package/dist/{gateway-cli-CvzoUDQs.js → gateway-cli-DCTPCoQx.js} +16 -16
- package/dist/{gateway-rpc-st8ffJBC.js → gateway-rpc-DMSsr0Xn.js} +1 -1
- package/dist/{gateway-rpc-CIHuIeji.js → gateway-rpc-vivTzTCq.js} +1 -1
- package/dist/{glass-ui-ws-QqYp-Uof.js → glass-ui-ws-Bzs3ALoN.js} +13 -13
- package/dist/{glass-ui-ws-DCXg7AbP.js → glass-ui-ws-C88aJslb.js} +13 -13
- package/dist/{health-BIwN5H6b.js → health--v-C6lSf.js} +1 -1
- package/dist/{health-BaYDaHPT.js → health-D0jGdk53.js} +1 -1
- package/dist/{hooks-cli-ClMPrbD7.js → hooks-cli-CZ_pSdXS.js} +7 -7
- package/dist/{hooks-cli-CJ0OoLFk.js → hooks-cli-CrZvzan1.js} +7 -7
- package/dist/index.js +10 -10
- package/dist/llm-slug-generator.js +4 -4
- package/dist/{logs-cli-D8A5dpnm.js → logs-cli-Dde2Dp2w.js} +3 -3
- package/dist/{logs-cli-CK9YhKnf.js → logs-cli-vIxaNVmF.js} +3 -3
- package/dist/{manager-Ct4kRT7n.js → manager--GmDbwza.js} +1 -1
- package/dist/{manager-Dh_-GTcG.js → manager-BMA3iRMq.js} +1 -1
- package/dist/{manager-DjhxLEpd.js → manager-DjhE8yLr.js} +1 -1
- package/dist/{manager-807ZlqEf.js → manager-S5d36_EM.js} +1 -1
- package/dist/{memory-CkJCn1Gg.js → memory-BcdI7NSs.js} +3 -3
- package/dist/{memory-B2hM774N.js → memory-DBx1wEvf.js} +3 -3
- package/dist/{memory-cli-C3CONZGB.js → memory-cli-CQSVrNAK.js} +2 -2
- package/dist/{memory-cli-CPebu_bx.js → memory-cli-jNf_SaXU.js} +2 -2
- package/dist/{models-Cbad7KB1.js → models-BgZWEpSL.js} +3 -3
- package/dist/{models-cli-C1yhTK5G.js → models-cli-6tdy2DaI.js} +9 -9
- package/dist/{models-cli-B_U9E8SV.js → models-cli-CiL6wDtk.js} +8 -8
- package/dist/{node-cli-CFIBFPOd.js → node-cli-BTXwMEJE.js} +1 -1
- package/dist/{node-cli-Cmfs9las.js → node-cli-ClniLggz.js} +1 -1
- package/dist/{nodes-cli-DlkO0Hyw.js → nodes-cli-DLaX4pgX.js} +3 -3
- package/dist/{nodes-cli-BH1TUf3n.js → nodes-cli-DrhMUDXx.js} +3 -3
- package/dist/{onboard-CWNtW-LS.js → onboard-DRn6pFfO.js} +3 -3
- package/dist/{onboard-channels-DPzbq3iB.js → onboard-channels-BN00--TD.js} +1 -1
- package/dist/{onboard-channels-BRi2UP_-.js → onboard-channels-DeRg97iI.js} +1 -1
- package/dist/{onboard-8eYravsD.js → onboard-fBxK2Bky.js} +3 -3
- package/dist/{onboard-helpers-DahbbzzQ.js → onboard-helpers-CAAZ0RDq.js} +1 -1
- package/dist/{onboard-helpers-Bf1LB5fd.js → onboard-helpers-Cv6fL8Vq.js} +1 -1
- package/dist/{onboard-remote-BgDE1b8f.js → onboard-remote-CXRFa8AU.js} +1 -1
- package/dist/{onboard-remote-B6Ox0wMi.js → onboard-remote-pucDu-pH.js} +1 -1
- package/dist/{onboard-skills-D-ppyTcQ.js → onboard-skills-BVTCfqlg.js} +1 -1
- package/dist/{onboard-skills-V1IT5l9E.js → onboard-skills-C_93kjju.js} +1 -1
- package/dist/{onboarding-Cw8abFVd.js → onboarding-CLOZkMhc.js} +8 -8
- package/dist/{onboarding-D35WPHUd.js → onboarding-i1rA1XGe.js} +8 -8
- package/dist/{onboarding.finalize-BStHm3Q-.js → onboarding.finalize-BV76YUaD.js} +9 -9
- package/dist/{onboarding.finalize-C50T8L4e.js → onboarding.finalize-gk9ot6lb.js} +8 -8
- package/dist/{onboarding.gateway-config-DJ1YAlBD.js → onboarding.gateway-config-eFJnSC-S.js} +3 -3
- package/dist/{onboarding.gateway-config-D6xPpItN.js → onboarding.gateway-config-wB3ShGU4.js} +3 -3
- package/dist/{pi-embedded-BxKs-STI.js → pi-embedded-BAgVs8XC.js} +35 -3
- package/dist/{plugin-registry-BFyeIJdT.js → plugin-registry-2DU3g0AT.js} +1 -1
- package/dist/{plugin-registry-B9SUsQmV.js → plugin-registry-CubHLj0v.js} +1 -1
- package/dist/plugin-sdk/gateway/protocol/index.d.ts +5 -2
- package/dist/plugin-sdk/gateway/protocol/schema/logs-chat.d.ts +26 -0
- package/dist/{plugins-cli-DKEgD6T2.js → plugins-cli-CIYGRkKI.js} +7 -7
- package/dist/{plugins-cli-BTdd7aE9.js → plugins-cli-Dpj76E3-.js} +7 -7
- package/dist/{program-C668x3bd.js → program-Qug3oi2C.js} +12 -12
- package/dist/{program-context-CV_ibEw9.js → program-context-CCIGjsQL.js} +38 -30
- package/dist/{prompt-select-styled-BlpvaJVg.js → prompt-select-styled-ARnCLf3Q.js} +7 -7
- package/dist/{prompt-select-styled-G6u6Q8v9.js → prompt-select-styled-BdNTADj2.js} +7 -7
- package/dist/{provider-auth-helpers-R-cnIeud.js → provider-auth-helpers-B_gA1eP9.js} +1 -1
- package/dist/{provider-auth-helpers-DAtMFGrU.js → provider-auth-helpers-LpT83BSS.js} +1 -1
- package/dist/{push-apns-Bx0i-bNw.js → push-apns-BWeNJb15.js} +1 -1
- package/dist/{push-apns--j8PeFrK.js → push-apns-CLngpXwL.js} +1 -1
- package/dist/{pw-ai-DLsdzdgc.js → pw-ai-DY_6l11g.js} +1 -1
- package/dist/{register.agent-muhvyTMD.js → register.agent-Dz24Zz7t.js} +11 -11
- package/dist/{register.agent-CYRt1iiv.js → register.agent-pWEv9TC7.js} +12 -12
- package/dist/{register.configure-CsvtHB87.js → register.configure-BMLA-3Mt.js} +14 -14
- package/dist/{register.configure-DUaVY9dt.js → register.configure-DQWtFNGt.js} +14 -14
- package/dist/{register.maintenance-BrNuk6hl.js → register.maintenance-BncnnneX.js} +12 -12
- package/dist/{register.maintenance-DMLKAqqc.js → register.maintenance-CTF70v5h.js} +13 -13
- package/dist/{register.message-9WxgUBSA.js → register.message-C-p-GZ8z.js} +7 -7
- package/dist/{register.message-DZG9UElS.js → register.message-vUwGF3E9.js} +7 -7
- package/dist/{register.onboard-C-5RaI3-.js → register.onboard-DhcpKFgU.js} +6 -6
- package/dist/{register.onboard-Bpo5ofDH.js → register.onboard-O0P6rCuX.js} +6 -6
- package/dist/{register.setup-D87mlpLA.js → register.setup-CZfWa9-Z.js} +6 -6
- package/dist/{register.setup-DQXuZsGD.js → register.setup-D3XQyELS.js} +6 -6
- package/dist/{register.status-health-sessions-B600sqsd.js → register.status-health-sessions-C9Zdn1ai.js} +8 -8
- package/dist/{register.status-health-sessions-ZYT6lFhO.js → register.status-health-sessions-Dn2gy0gi.js} +8 -8
- package/dist/{register.subclis-DdlLdgzD.js → register.subclis-Dv8bf2ox.js} +28 -20
- package/dist/{rpc-Co5Ci69t.js → rpc-DP3AhcZq.js} +1 -1
- package/dist/{rpc-DZpJ-mGE.js → rpc-KjYXUeLD.js} +1 -1
- package/dist/{run-main-C1YGbNWb.js → run-main-BsVhPYM4.js} +20 -20
- package/dist/{security-cli-Bkcil7sD.js → security-cli-CGLnA_ni.js} +3 -3
- package/dist/{security-cli-CAdCbDUS.js → security-cli-hTCYStCU.js} +3 -3
- package/dist/{server-methods-FxoNbY02.js → server-methods-C3_JU-DI.js} +36 -11
- package/dist/{server-methods-DMPwNvoz.js → server-methods-D_zGEWNK.js} +36 -11
- package/dist/{server-node-events-Dp9EiddI.js → server-node-events-CRYzL3TY.js} +8 -8
- package/dist/{server-node-events-k7h7NWLL.js → server-node-events-CW5ilXPN.js} +8 -8
- package/dist/{status-CYqfS1u_.js → status-1ACP62Xm.js} +5 -5
- package/dist/{status-BU-hn3iH.js → status-C_K3wapX.js} +1 -1
- package/dist/{status-D3h1mSLx.js → status-DbIBRkrV.js} +5 -5
- package/dist/{status-CHEd1LqO.js → status-NK8EUhIy.js} +1 -1
- package/dist/{subagent-registry-4qeNm1OL.js → subagent-registry-SZbZfkbr.js} +5 -5
- package/dist/symframe-cli-BKrtoG8H.js +51 -0
- package/dist/symframe-cli-CsA_x7U9.js +56 -0
- package/dist/{synthesis-DceZPirI.js → synthesis-BLRsy_PZ.js} +6 -6
- package/dist/{synthesis-DFNyev83.js → synthesis-CA2zGGNE.js} +6 -6
- package/dist/{synthesis-CxR-cX-4.js → synthesis-CUbz4CaL.js} +2 -2
- package/dist/{synthesis-BH4onG1c.js → synthesis-Dv6bJWYX.js} +4 -4
- package/dist/{system-cli-BCAd92UF.js → system-cli-BoxTfo1R.js} +3 -3
- package/dist/{system-cli-GwzCZpdT.js → system-cli-CYgTroZA.js} +3 -3
- package/dist/{tui-9lZLkRZm.js → tui-BdtfeKft.js} +2 -2
- package/dist/{tui-ROL_b9BF.js → tui-CO7OA9ZO.js} +2 -2
- package/dist/{tui-cli-C7NUBeQi.js → tui-cli-CcSS08na.js} +3 -3
- package/dist/{tui-cli-C6Q0KKvj.js → tui-cli-_WzJLbOA.js} +3 -3
- package/dist/{unified-runner-D9LZYzyF.js → unified-runner-B0cMr4If.js} +5 -5
- package/dist/{unified-runner-LBbNjudz.js → unified-runner-ByJSAveb.js} +42 -10
- package/dist/{update-cli-Du-NLjgh.js → update-cli-CrP5Kvo4.js} +13 -13
- package/dist/{update-cli-CWYfdfuU.js → update-cli-y4Q__h4E.js} +14 -14
- package/package.json +1 -1
- /package/dist/{consolidate-BSUbtSDt.js → consolidate-BoM9cz9L.js} +0 -0
- /package/dist/{consolidate-DhoiF4n7.js → consolidate-nNhnUpNj.js} +0 -0
- /package/dist/{onboard-hooks-CXRw9BJY.js → onboard-hooks-CxJRzS5z.js} +0 -0
- /package/dist/{onboard-hooks-DfDF9AU4.js → onboard-hooks-D5-mtFUY.js} +0 -0
- /package/dist/{qmd-manager-CYEAMLE7.js → qmd-manager-C1levE0a.js} +0 -0
- /package/dist/{qmd-manager-C6wRtPm_.js → qmd-manager-CR71XjjR.js} +0 -0
- /package/dist/{webhooks-cli-C3uyehJS.js → webhooks-cli-BUWSS_ve.js} +0 -0
- /package/dist/{webhooks-cli-C3g4MxCE.js → webhooks-cli-BrDeMswO.js} +0 -0
|
@@ -0,0 +1,353 @@
|
|
|
1
|
+
// ── Symframe registry ─────────────────────────────────────────────────
|
|
2
|
+
// Phase 2 of the symframe arc. Provides `window.symframe.add/update/remove/list`
|
|
3
|
+
// for dynamic cards in the right column. The 3 existing panels (SUBAGENTS,
|
|
4
|
+
// REASONING, SCHEDULING) auto-register at boot as sticky cards — they keep
|
|
5
|
+
// their own DOM and JS hookups, the registry just tracks metadata.
|
|
6
|
+
//
|
|
7
|
+
// Card stack order: ephemeral (non-sticky) cards stack at the TOP of the
|
|
8
|
+
// container, newest at the very top; sticky cards anchor below them in
|
|
9
|
+
// fixed insertion order so the always-visible system panels never drift.
|
|
10
|
+
//
|
|
11
|
+
// Phase 3+ will add type-specific renderers + a server-side push RPC. For
|
|
12
|
+
// now the registry is JS-only and exercisable from the browser console:
|
|
13
|
+
// symframe.add({ title: "Test", body: "hello", dismissable: true });
|
|
14
|
+
// symframe.update("<id>", { body: "updated" });
|
|
15
|
+
// symframe.remove("<id>");
|
|
16
|
+
|
|
17
|
+
(function () {
|
|
18
|
+
const container = document.getElementById("symframe-cards");
|
|
19
|
+
const countEl = document.getElementById("symframe-count");
|
|
20
|
+
if (!container) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/** @type {Map<string, Card>} */
|
|
25
|
+
const cards = new Map();
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* @typedef {Object} Card
|
|
29
|
+
* @property {string} id
|
|
30
|
+
* @property {string} [type] generic descriptor; renderers in Phase 3+ key off this
|
|
31
|
+
* @property {string} title header text (rendered uppercase via existing .panel-label)
|
|
32
|
+
* @property {string} [body] plain-text body (escaped)
|
|
33
|
+
* @property {string} [bodyHtml] trusted-HTML body (no escape) — only set internally
|
|
34
|
+
* @property {Array<Action>} [actions] footer buttons
|
|
35
|
+
* @property {boolean} [sticky] true → anchored at bottom of stack, no dismiss control
|
|
36
|
+
* @property {boolean} [dismissable] true → header gains a × button that calls remove(id)
|
|
37
|
+
* @property {Element} [element] DOM element for register()-tracked cards (existing panels)
|
|
38
|
+
* @property {number} createdAt set by the registry
|
|
39
|
+
*/
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* @typedef {Object} Action
|
|
43
|
+
* @property {string} label
|
|
44
|
+
* @property {"primary"|"secondary"} [kind]
|
|
45
|
+
* @property {() => void} onClick
|
|
46
|
+
*/
|
|
47
|
+
|
|
48
|
+
function genId() {
|
|
49
|
+
return `sf-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function updateCount() {
|
|
53
|
+
if (!countEl) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const total = cards.size;
|
|
57
|
+
countEl.textContent = total === 1 ? "1 card" : `${total} cards`;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Per-type renderers transform a raw card into HTML the body slot
|
|
61
|
+
// accepts. Phase 3 ships `text` (plain) and `markdown` (via the bundled
|
|
62
|
+
// marked.min.js). Future types (`code`, `email-draft`, `pdf`, etc.) plug
|
|
63
|
+
// in here without touching the rest of the registry.
|
|
64
|
+
function renderBodyForType(card) {
|
|
65
|
+
const type = card.type || "text";
|
|
66
|
+
if (type === "markdown" && typeof window.marked?.parse === "function") {
|
|
67
|
+
return { html: window.marked.parse(card.body || "") };
|
|
68
|
+
}
|
|
69
|
+
// Fallback: text body (escaped via textContent in caller) or trusted HTML.
|
|
70
|
+
if (card.bodyHtml) {
|
|
71
|
+
return { html: card.bodyHtml };
|
|
72
|
+
}
|
|
73
|
+
return { text: card.body || "" };
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// Default Copy action when the card has a body and no explicit actions.
|
|
77
|
+
// Wraps card.body (the original text the producer pushed, not the
|
|
78
|
+
// rendered HTML) into a clipboard.writeText call.
|
|
79
|
+
function buildDefaultActions(card) {
|
|
80
|
+
if (Array.isArray(card.actions) && card.actions.length > 0) {
|
|
81
|
+
return card.actions;
|
|
82
|
+
}
|
|
83
|
+
if (!card.body && !card.bodyHtml) {
|
|
84
|
+
return [];
|
|
85
|
+
}
|
|
86
|
+
const copyTarget = card.body ?? card.bodyHtml ?? "";
|
|
87
|
+
return [
|
|
88
|
+
{
|
|
89
|
+
label: "Copy",
|
|
90
|
+
kind: "secondary",
|
|
91
|
+
onClick: async () => {
|
|
92
|
+
try {
|
|
93
|
+
if (navigator.clipboard && typeof navigator.clipboard.writeText === "function") {
|
|
94
|
+
await navigator.clipboard.writeText(copyTarget);
|
|
95
|
+
}
|
|
96
|
+
} catch (err) {
|
|
97
|
+
console.warn("[symframe] copy failed:", err);
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
];
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
function renderCardElement(card) {
|
|
105
|
+
const el = document.createElement("div");
|
|
106
|
+
el.className = "glass-panel symframe-card symframe-card-dynamic";
|
|
107
|
+
if (card.sticky) {
|
|
108
|
+
el.classList.add("symframe-card-sticky");
|
|
109
|
+
}
|
|
110
|
+
el.dataset.cardId = card.id;
|
|
111
|
+
if (card.type) {
|
|
112
|
+
el.dataset.cardType = card.type;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// Header
|
|
116
|
+
const header = document.createElement("div");
|
|
117
|
+
header.className = "panel-label symframe-card-header";
|
|
118
|
+
const titleSpan = document.createElement("span");
|
|
119
|
+
titleSpan.textContent = card.title || "";
|
|
120
|
+
header.appendChild(titleSpan);
|
|
121
|
+
if (card.dismissable && !card.sticky) {
|
|
122
|
+
const dismiss = document.createElement("button");
|
|
123
|
+
dismiss.className = "symframe-card-dismiss";
|
|
124
|
+
dismiss.type = "button";
|
|
125
|
+
dismiss.setAttribute("aria-label", "Dismiss");
|
|
126
|
+
dismiss.textContent = "×";
|
|
127
|
+
dismiss.addEventListener("click", (e) => {
|
|
128
|
+
e.preventDefault();
|
|
129
|
+
e.stopPropagation();
|
|
130
|
+
remove(card.id);
|
|
131
|
+
});
|
|
132
|
+
header.appendChild(dismiss);
|
|
133
|
+
}
|
|
134
|
+
el.appendChild(header);
|
|
135
|
+
|
|
136
|
+
// Body via type-specific renderer
|
|
137
|
+
if (card.bodyHtml || card.body) {
|
|
138
|
+
const body = document.createElement("div");
|
|
139
|
+
body.className = "symframe-card-body";
|
|
140
|
+
const rendered = renderBodyForType(card);
|
|
141
|
+
if (rendered.html !== undefined) {
|
|
142
|
+
body.innerHTML = rendered.html;
|
|
143
|
+
} else {
|
|
144
|
+
body.textContent = rendered.text;
|
|
145
|
+
}
|
|
146
|
+
el.appendChild(body);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// Actions (custom or default Copy)
|
|
150
|
+
const actions = buildDefaultActions(card);
|
|
151
|
+
if (actions.length > 0) {
|
|
152
|
+
const actionsRow = document.createElement("div");
|
|
153
|
+
actionsRow.className = "symframe-card-actions";
|
|
154
|
+
for (const action of actions) {
|
|
155
|
+
const btn = document.createElement("button");
|
|
156
|
+
btn.className = "symframe-card-action";
|
|
157
|
+
if (action.kind === "primary") {
|
|
158
|
+
btn.classList.add("symframe-card-action-primary");
|
|
159
|
+
}
|
|
160
|
+
btn.type = "button";
|
|
161
|
+
btn.textContent = action.label || "";
|
|
162
|
+
if (typeof action.onClick === "function") {
|
|
163
|
+
btn.addEventListener("click", (e) => {
|
|
164
|
+
e.preventDefault();
|
|
165
|
+
try {
|
|
166
|
+
action.onClick();
|
|
167
|
+
} catch (err) {
|
|
168
|
+
console.warn("[symframe] action threw:", err);
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
} else if (action.rpc) {
|
|
172
|
+
// Server-pushed cards declare actions as { rpc: "method", params: {...} }
|
|
173
|
+
// since closures don't survive the WebSocket. Resolve via the
|
|
174
|
+
// gateway client at click time.
|
|
175
|
+
btn.addEventListener("click", async (e) => {
|
|
176
|
+
e.preventDefault();
|
|
177
|
+
try {
|
|
178
|
+
if (window.gateway?.rpc) {
|
|
179
|
+
await window.gateway.rpc(action.rpc, action.params || {});
|
|
180
|
+
}
|
|
181
|
+
} catch (err) {
|
|
182
|
+
console.warn("[symframe] rpc action failed:", action.rpc, err);
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
actionsRow.appendChild(btn);
|
|
187
|
+
}
|
|
188
|
+
el.appendChild(actionsRow);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
return el;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
function insertElement(card, el) {
|
|
195
|
+
if (card.sticky) {
|
|
196
|
+
// Sticky cards anchor below all ephemeral cards. Append to end of
|
|
197
|
+
// the sticky group (which is the end of the container, since
|
|
198
|
+
// ephemeral cards live above).
|
|
199
|
+
container.appendChild(el);
|
|
200
|
+
} else {
|
|
201
|
+
// Ephemeral cards stack at the top, newest first → prepend.
|
|
202
|
+
container.prepend(el);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* Track an existing DOM-managed card (e.g. SUBAGENTS panel). The
|
|
208
|
+
* element is already in the container and renders/updates itself; the
|
|
209
|
+
* registry just records metadata so list/count/sort logic can see it.
|
|
210
|
+
*/
|
|
211
|
+
function register(card) {
|
|
212
|
+
if (!card || !card.id || !card.element) {
|
|
213
|
+
console.warn("[symframe] register: missing id or element");
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
const entry = {
|
|
217
|
+
...card,
|
|
218
|
+
sticky: card.sticky !== false,
|
|
219
|
+
dismissable: false,
|
|
220
|
+
createdAt: Date.now(),
|
|
221
|
+
};
|
|
222
|
+
cards.set(entry.id, entry);
|
|
223
|
+
entry.element.classList.add("symframe-card");
|
|
224
|
+
if (entry.sticky) {
|
|
225
|
+
entry.element.classList.add("symframe-card-sticky");
|
|
226
|
+
}
|
|
227
|
+
updateCount();
|
|
228
|
+
return entry;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Add a new dynamic card. Renders into the container, prepended for
|
|
233
|
+
* ephemeral cards or appended for sticky cards.
|
|
234
|
+
*/
|
|
235
|
+
function add(card) {
|
|
236
|
+
const id = card?.id || genId();
|
|
237
|
+
if (cards.has(id)) {
|
|
238
|
+
// Treat as update if id collides.
|
|
239
|
+
return update(id, card);
|
|
240
|
+
}
|
|
241
|
+
const entry = {
|
|
242
|
+
...card,
|
|
243
|
+
id,
|
|
244
|
+
sticky: card?.sticky === true,
|
|
245
|
+
dismissable: card?.dismissable !== false,
|
|
246
|
+
createdAt: Date.now(),
|
|
247
|
+
};
|
|
248
|
+
const el = renderCardElement(entry);
|
|
249
|
+
entry.element = el;
|
|
250
|
+
cards.set(id, entry);
|
|
251
|
+
insertElement(entry, el);
|
|
252
|
+
updateCount();
|
|
253
|
+
return entry;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Patch an existing card. Re-renders the card's DOM element from the
|
|
258
|
+
* merged data; preserves stack position.
|
|
259
|
+
*/
|
|
260
|
+
function update(id, patch) {
|
|
261
|
+
const existing = cards.get(id);
|
|
262
|
+
if (!existing) {
|
|
263
|
+
console.warn(`[symframe] update: unknown id ${id}`);
|
|
264
|
+
return;
|
|
265
|
+
}
|
|
266
|
+
if (!existing.element) {
|
|
267
|
+
console.warn(`[symframe] update: card ${id} has no element (registered, not added)`);
|
|
268
|
+
// Allow metadata patch without re-render
|
|
269
|
+
const merged = { ...existing, ...patch, id };
|
|
270
|
+
cards.set(id, merged);
|
|
271
|
+
return merged;
|
|
272
|
+
}
|
|
273
|
+
const merged = { ...existing, ...patch, id };
|
|
274
|
+
const newEl = renderCardElement(merged);
|
|
275
|
+
merged.element = newEl;
|
|
276
|
+
existing.element.replaceWith(newEl);
|
|
277
|
+
cards.set(id, merged);
|
|
278
|
+
return merged;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
/**
|
|
282
|
+
* Remove a card from the registry + DOM. Sticky cards refuse removal
|
|
283
|
+
* unless force=true is passed (defensive — the system panels really
|
|
284
|
+
* shouldn't disappear via stray API calls).
|
|
285
|
+
*/
|
|
286
|
+
function remove(id, force = false) {
|
|
287
|
+
const entry = cards.get(id);
|
|
288
|
+
if (!entry) {
|
|
289
|
+
return false;
|
|
290
|
+
}
|
|
291
|
+
if (entry.sticky && !force) {
|
|
292
|
+
console.warn(`[symframe] remove: refusing to drop sticky card '${id}' without force=true`);
|
|
293
|
+
return false;
|
|
294
|
+
}
|
|
295
|
+
if (entry.element && entry.element.parentElement === container) {
|
|
296
|
+
entry.element.remove();
|
|
297
|
+
}
|
|
298
|
+
cards.delete(id);
|
|
299
|
+
updateCount();
|
|
300
|
+
return true;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
/** Snapshot of all registered cards. */
|
|
304
|
+
function list() {
|
|
305
|
+
return Array.from(cards.values());
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
// Auto-register the 3 sticky panels that already live in the DOM. The
|
|
309
|
+
// existing JS for each panel (subagents.js, scheduling.js, reasoning
|
|
310
|
+
// render code) keeps targeting them by id and is unaffected.
|
|
311
|
+
const KNOWN_STICKY = [
|
|
312
|
+
{ id: "subagents", elementId: "subagents-panel", title: "SUBAGENTS", type: "panel-subagents" },
|
|
313
|
+
{ id: "reasoning", elementId: "reasoning-panel", title: "REASONING", type: "panel-reasoning" },
|
|
314
|
+
{
|
|
315
|
+
id: "scheduling",
|
|
316
|
+
elementId: "scheduling-panel",
|
|
317
|
+
title: "SCHEDULING",
|
|
318
|
+
type: "panel-scheduling",
|
|
319
|
+
},
|
|
320
|
+
];
|
|
321
|
+
for (const known of KNOWN_STICKY) {
|
|
322
|
+
const el = document.getElementById(known.elementId);
|
|
323
|
+
if (el) {
|
|
324
|
+
register({
|
|
325
|
+
id: known.id,
|
|
326
|
+
type: known.type,
|
|
327
|
+
title: known.title,
|
|
328
|
+
sticky: true,
|
|
329
|
+
element: el,
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
window.symframe = { add, update, remove, list, register };
|
|
335
|
+
|
|
336
|
+
// Phase 3: server-pushed cards. The gateway's `symframe` broadcast is
|
|
337
|
+
// re-emitted as a window-level CustomEvent by gateway.js — subscribe
|
|
338
|
+
// here and route to the registry. Payload shape matches the
|
|
339
|
+
// chat.symframe.push RPC: { action, id?, card? }.
|
|
340
|
+
window.addEventListener("symi:symframe", (e) => {
|
|
341
|
+
const payload = e.detail;
|
|
342
|
+
if (!payload || typeof payload !== "object") {
|
|
343
|
+
return;
|
|
344
|
+
}
|
|
345
|
+
if (payload.action === "add" && payload.card) {
|
|
346
|
+
add(payload.card);
|
|
347
|
+
} else if (payload.action === "update" && payload.id && payload.card) {
|
|
348
|
+
update(payload.id, payload.card);
|
|
349
|
+
} else if (payload.action === "remove" && payload.id) {
|
|
350
|
+
remove(payload.id);
|
|
351
|
+
}
|
|
352
|
+
});
|
|
353
|
+
})();
|
|
@@ -13,15 +13,15 @@ import "./shell-env-Dc3iU7HK.js";
|
|
|
13
13
|
import "./manifest-registry-D1MLZEjS.js";
|
|
14
14
|
import "./message-channel-DgjXWzf-.js";
|
|
15
15
|
import { n as listChannelPlugins } from "./plugins-CF5skkHh.js";
|
|
16
|
-
import "./client-
|
|
17
|
-
import "./call-
|
|
16
|
+
import "./client-DDqXo-cF.js";
|
|
17
|
+
import "./call-PpGwcPn-.js";
|
|
18
18
|
import "./pairing-token-Dcy37-4s.js";
|
|
19
19
|
import { n as formatDurationHuman } from "./format-duration-CIjmjQST.js";
|
|
20
20
|
import { i as parseAbsoluteTimeMs, n as resolveCronStaggerMs } from "./stagger-DQs772BN.js";
|
|
21
21
|
import { t as formatDocsLink } from "./links-CQZxjjCO.js";
|
|
22
22
|
import "./progress-DQTvTiEg.js";
|
|
23
23
|
import { n as parsePositiveIntOrUndefined } from "./helpers-DGBa5iKd.js";
|
|
24
|
-
import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-
|
|
24
|
+
import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-DMSsr0Xn.js";
|
|
25
25
|
|
|
26
26
|
//#region src/cli/cron-cli/shared.ts
|
|
27
27
|
const getCronChannelOptions = () => ["last", ...listChannelPlugins().map((plugin) => plugin.id)].join("|");
|
|
@@ -6,8 +6,8 @@ import "./model-selection-CMx1evaF.js";
|
|
|
6
6
|
import "./manifest-registry-CVLmi8rz.js";
|
|
7
7
|
import "./config-D7TcU4qN.js";
|
|
8
8
|
import "./shell-env-CTYaxUs_.js";
|
|
9
|
-
import "./client-
|
|
10
|
-
import "./call-
|
|
9
|
+
import "./client-CdiymIXS.js";
|
|
10
|
+
import "./call-A18kwyah.js";
|
|
11
11
|
import "./message-channel-DXToSaWK.js";
|
|
12
12
|
import "./pairing-token-B-OTYROz.js";
|
|
13
13
|
import { n as listChannelPlugins } from "./plugins-BsEhWvLn.js";
|
|
@@ -15,7 +15,7 @@ import { n as formatDurationHuman } from "./format-duration-CIjmjQST.js";
|
|
|
15
15
|
import { i as parseAbsoluteTimeMs, n as resolveCronStaggerMs } from "./stagger-DUVGiPYV.js";
|
|
16
16
|
import { t as formatDocsLink } from "./links-B9CbwY46.js";
|
|
17
17
|
import "./progress-BOQ0hkeM.js";
|
|
18
|
-
import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-
|
|
18
|
+
import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-vivTzTCq.js";
|
|
19
19
|
import { n as parsePositiveIntOrUndefined } from "./helpers-lLtg0Hgi.js";
|
|
20
20
|
|
|
21
21
|
//#region src/cli/cron-cli/shared.ts
|
|
@@ -10,13 +10,13 @@ import { u as resolveGatewayBindHost } from "./ws-C7Ktmt-R.js";
|
|
|
10
10
|
import { a as resolveGatewayAuth } from "./auth-Bkx-QuRN.js";
|
|
11
11
|
import { a as inspectPortUsage, s as formatPortDiagnostics } from "./ports-gxLM5ahL.js";
|
|
12
12
|
import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-DgjXWzf-.js";
|
|
13
|
-
import { n as callGateway } from "./call-
|
|
13
|
+
import { n as callGateway } from "./call-PpGwcPn-.js";
|
|
14
14
|
import { c as resolveGatewayLaunchAgentLabel, d as resolveGatewaySystemdServiceName } from "./constants-BLIhifCJ.js";
|
|
15
15
|
import { t as formatDocsLink } from "./links-CQZxjjCO.js";
|
|
16
16
|
import { n as withProgress } from "./progress-DQTvTiEg.js";
|
|
17
17
|
import { n as inheritOptionFromParent } from "./command-options-DgcCGXMQ.js";
|
|
18
18
|
import { i as buildGatewayInstallPlan, r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-7YBz5otm.js";
|
|
19
|
-
import { g as resolveControlUiLinks, h as randomToken } from "./onboard-helpers-
|
|
19
|
+
import { g as resolveControlUiLinks, h as randomToken } from "./onboard-helpers-Cv6fL8Vq.js";
|
|
20
20
|
import { n as isWSLEnv } from "./wsl-Ci3VOaSK.js";
|
|
21
21
|
import { s as resolveGatewayLogPaths, t as resolveGatewayService } from "./service-BF50XyKr.js";
|
|
22
22
|
import { a as createCliStatusTextStyles, c as parsePortFromArgs, d as renderRuntimeHints, f as resolveRuntimeStatusColor, g as installDaemonServiceAndEmit, h as createDaemonActionContext, i as runServiceUninstall, l as pickProbeHostForBind, m as buildDaemonServiceSnapshot, n as runServiceStart, o as filterDaemonEnv, p as safeDaemonEnv, r as runServiceStop, s as normalizeListenerAddress, t as runServiceRestart, u as renderGatewayServiceStartHints } from "./lifecycle-core-DdbL6ELJ.js";
|
|
@@ -2,7 +2,7 @@ import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
|
2
2
|
import { Q as theme, Rt as shortenHomePath, X as colorize, Z as isRich, _ as defaultRuntime, ct as resolveConfigPath, ft as resolveGatewayPort, pt as resolveIsNixMode, tt as getResolvedLoggerSettings, yt as resolveStateDir } from "./entry.js";
|
|
3
3
|
import { t as formatCliCommand } from "./command-format-B3nkKRhC.js";
|
|
4
4
|
import { i as loadConfig, l as writeConfigFile, o as readConfigFileSnapshot, r as createConfigIO } from "./config-D7TcU4qN.js";
|
|
5
|
-
import { n as callGateway } from "./call-
|
|
5
|
+
import { n as callGateway } from "./call-A18kwyah.js";
|
|
6
6
|
import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-DXToSaWK.js";
|
|
7
7
|
import { l as resolveGatewayBindHost } from "./net-TZUXtwGR.js";
|
|
8
8
|
import { n as pickPrimaryTailnetIPv4 } from "./tailnet-B2SPYrh4.js";
|
|
@@ -13,7 +13,7 @@ import { t as formatDocsLink } from "./links-B9CbwY46.js";
|
|
|
13
13
|
import { n as withProgress } from "./progress-BOQ0hkeM.js";
|
|
14
14
|
import { n as inheritOptionFromParent } from "./command-options-Vxb4M7Aj.js";
|
|
15
15
|
import { i as buildGatewayInstallPlan, r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-DaJ4Tf2a.js";
|
|
16
|
-
import { g as resolveControlUiLinks, h as randomToken } from "./onboard-helpers-
|
|
16
|
+
import { g as resolveControlUiLinks, h as randomToken } from "./onboard-helpers-CAAZ0RDq.js";
|
|
17
17
|
import { n as isWSLEnv } from "./wsl-S50RbgL8.js";
|
|
18
18
|
import { s as resolveGatewayLogPaths, t as resolveGatewayService } from "./service-Ccv3Zi5_.js";
|
|
19
19
|
import { a as createCliStatusTextStyles, c as parsePortFromArgs, d as renderRuntimeHints, f as resolveRuntimeStatusColor, g as installDaemonServiceAndEmit, h as createDaemonActionContext, i as runServiceUninstall, l as pickProbeHostForBind, m as buildDaemonServiceSnapshot, n as runServiceStart, o as filterDaemonEnv, p as safeDaemonEnv, r as runServiceStop, s as normalizeListenerAddress, t as runServiceRestart, u as renderGatewayServiceStartHints } from "./lifecycle-core-O50xtu5c.js";
|
package/dist/daemon-cli.js
CHANGED
|
@@ -9607,6 +9607,36 @@ const ChatHistoryParamsSchema = Type.Object({
|
|
|
9607
9607
|
const ChatCommandsListParamsSchema = Type.Object({}, { additionalProperties: false });
|
|
9608
9608
|
const ChatToolsListParamsSchema = Type.Object({}, { additionalProperties: false });
|
|
9609
9609
|
const ChatSkillsListParamsSchema = Type.Object({}, { additionalProperties: false });
|
|
9610
|
+
/**
|
|
9611
|
+
* Push a card to the symframe (the right-column dynamic display panel
|
|
9612
|
+
* in Glass UI). Mirrors the registry methods on `window.symframe`:
|
|
9613
|
+
* - action="add" → `card` required (id auto-generated if missing)
|
|
9614
|
+
* - action="update" → `id` required, `card` carries the patch
|
|
9615
|
+
* - action="remove" → `id` required, no card
|
|
9616
|
+
*
|
|
9617
|
+
* The handler broadcasts a `symframe` event over the WebSocket; clients
|
|
9618
|
+
* route it to their local registry. The card schema is permissive
|
|
9619
|
+
* (additionalProperties on card) so new content types can ship without
|
|
9620
|
+
* a schema bump.
|
|
9621
|
+
*/
|
|
9622
|
+
const ChatSymframePushParamsSchema = Type.Object({
|
|
9623
|
+
action: Type.Union([
|
|
9624
|
+
Type.Literal("add"),
|
|
9625
|
+
Type.Literal("update"),
|
|
9626
|
+
Type.Literal("remove")
|
|
9627
|
+
]),
|
|
9628
|
+
id: Type.Optional(NonEmptyString),
|
|
9629
|
+
card: Type.Optional(Type.Object({
|
|
9630
|
+
id: Type.Optional(NonEmptyString),
|
|
9631
|
+
type: Type.Optional(Type.String()),
|
|
9632
|
+
title: Type.Optional(Type.String()),
|
|
9633
|
+
body: Type.Optional(Type.String()),
|
|
9634
|
+
bodyHtml: Type.Optional(Type.String()),
|
|
9635
|
+
actions: Type.Optional(Type.Array(Type.Unknown())),
|
|
9636
|
+
sticky: Type.Optional(Type.Boolean()),
|
|
9637
|
+
dismissable: Type.Optional(Type.Boolean())
|
|
9638
|
+
}, { additionalProperties: true }))
|
|
9639
|
+
}, { additionalProperties: false });
|
|
9610
9640
|
const ChatSendParamsSchema = Type.Object({
|
|
9611
9641
|
sessionKey: NonEmptyString,
|
|
9612
9642
|
message: Type.String(),
|
|
@@ -10039,6 +10069,7 @@ const validateChatHistoryParams = ajv.compile(ChatHistoryParamsSchema);
|
|
|
10039
10069
|
const validateChatCommandsListParams = ajv.compile(ChatCommandsListParamsSchema);
|
|
10040
10070
|
const validateChatToolsListParams = ajv.compile(ChatToolsListParamsSchema);
|
|
10041
10071
|
const validateChatSkillsListParams = ajv.compile(ChatSkillsListParamsSchema);
|
|
10072
|
+
const validateChatSymframePushParams = ajv.compile(ChatSymframePushParamsSchema);
|
|
10042
10073
|
const validateChatSendParams = ajv.compile(ChatSendParamsSchema);
|
|
10043
10074
|
const validateChatAbortParams = ajv.compile(ChatAbortParamsSchema);
|
|
10044
10075
|
const validateChatInjectParams = ajv.compile(ChatInjectParamsSchema);
|
|
@@ -10423,6 +10454,7 @@ const METHOD_SCOPE_GROUPS = {
|
|
|
10423
10454
|
"node.invoke",
|
|
10424
10455
|
"chat.send",
|
|
10425
10456
|
"chat.abort",
|
|
10457
|
+
"chat.symframe.push",
|
|
10426
10458
|
"browser.request",
|
|
10427
10459
|
"push.test"
|
|
10428
10460
|
],
|
|
@@ -9,7 +9,7 @@ import { t as formatCliCommand } from "./command-format-BrrHNE8r.js";
|
|
|
9
9
|
import { n as isPidAlive, t as resolveProcessScopedMap } from "./process-scoped-map-B-dHc_9I.js";
|
|
10
10
|
import { c as loadConfig, d as writeConfigFile, m as parseByteSize, p as parseDurationMs, s as createConfigIO, t as SsrFBlockedError } from "./ssrf-DNhyFMRW.js";
|
|
11
11
|
import { t as parseBooleanValue } from "./boolean-BsqeuxE6.js";
|
|
12
|
-
import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-
|
|
12
|
+
import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-OTJg3QKn.js";
|
|
13
13
|
import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-Dm4gX4Tl.js";
|
|
14
14
|
import { n as formatErrorMessage, t as extractErrorCode } from "./errors-C89ppfp9.js";
|
|
15
15
|
import { b as SafeOpenError, d as extensionForMime, i as buildImageResizeSideGrid, l as resizeToJpeg, o as getImageMetadata, r as IMAGE_REDUCE_QUALITY_STEPS, t as getAgentScopedMediaLocalRoots, u as detectMime, x as openFileWithinRoot } from "./local-roots-C7fBKoOI.js";
|
|
@@ -939,7 +939,7 @@ function isModuleNotFoundError(err) {
|
|
|
939
939
|
}
|
|
940
940
|
async function loadPwAiModule(mode) {
|
|
941
941
|
try {
|
|
942
|
-
return await import("./pw-ai-
|
|
942
|
+
return await import("./pw-ai-DY_6l11g.js");
|
|
943
943
|
} catch (err) {
|
|
944
944
|
if (mode === "soft") return null;
|
|
945
945
|
if (isModuleNotFoundError(err)) return null;
|
|
@@ -3536,11 +3536,11 @@ function createProfileContext(opts, profile) {
|
|
|
3536
3536
|
const userDataDir = resolveSymiUserDataDir(profile.name);
|
|
3537
3537
|
const profileState = getProfileState();
|
|
3538
3538
|
if (await isHttpReachable(300) && !profileState.running) try {
|
|
3539
|
-
await (await import("./pw-ai-
|
|
3539
|
+
await (await import("./pw-ai-DY_6l11g.js")).closePlaywrightBrowserConnection();
|
|
3540
3540
|
} catch {}
|
|
3541
3541
|
if (profileState.running) await stopRunningBrowser();
|
|
3542
3542
|
try {
|
|
3543
|
-
await (await import("./pw-ai-
|
|
3543
|
+
await (await import("./pw-ai-DY_6l11g.js")).closePlaywrightBrowserConnection();
|
|
3544
3544
|
} catch {}
|
|
3545
3545
|
if (!fs.existsSync(userDataDir)) return {
|
|
3546
3546
|
moved: false,
|
|
@@ -12,8 +12,8 @@ import "./shell-env-Dc3iU7HK.js";
|
|
|
12
12
|
import "./manifest-registry-D1MLZEjS.js";
|
|
13
13
|
import { r as isLoopbackHost } from "./ws-C7Ktmt-R.js";
|
|
14
14
|
import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-DgjXWzf-.js";
|
|
15
|
-
import {
|
|
16
|
-
import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-
|
|
15
|
+
import { Gt as approveDevicePairing, Jt as listDevicePairing, en as summarizeDeviceTokens } from "./client-DDqXo-cF.js";
|
|
16
|
+
import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-PpGwcPn-.js";
|
|
17
17
|
import "./pairing-token-Dcy37-4s.js";
|
|
18
18
|
import { n as formatTimeAgo } from "./format-relative-D4GQsWlP.js";
|
|
19
19
|
import { n as withProgress } from "./progress-DQTvTiEg.js";
|
|
@@ -5,8 +5,8 @@ import "./model-selection-CMx1evaF.js";
|
|
|
5
5
|
import "./manifest-registry-CVLmi8rz.js";
|
|
6
6
|
import "./config-D7TcU4qN.js";
|
|
7
7
|
import "./shell-env-CTYaxUs_.js";
|
|
8
|
-
import {
|
|
9
|
-
import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-
|
|
8
|
+
import { Gt as approveDevicePairing, Jt as listDevicePairing, en as summarizeDeviceTokens } from "./client-CdiymIXS.js";
|
|
9
|
+
import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-A18kwyah.js";
|
|
10
10
|
import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-DXToSaWK.js";
|
|
11
11
|
import "./pairing-token-B-OTYROz.js";
|
|
12
12
|
import { n as isLoopbackHost } from "./net-TZUXtwGR.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { n as resolveCliName } from "./cli-name-CzMV-gJF.js";
|
|
2
2
|
import { t as resolveSymiPackageRoot } from "./symi-root-BQ0IpoW2.js";
|
|
3
3
|
import { t as note } from "./note-ytwb4wwn.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-BEO2AB41.js";
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import { spawnSync } from "node:child_process";
|
|
7
7
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { n as resolveCliName } from "./cli-name-DY75UA5M.js";
|
|
2
2
|
import { t as resolveSymiPackageRoot } from "./symi-root-Ctw1Rb_n.js";
|
|
3
3
|
import { t as note } from "./note-Cltpxj6i.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-TYU7Y_XZ.js";
|
|
5
5
|
import { spawnSync } from "node:child_process";
|
|
6
6
|
import path from "node:path";
|
|
7
7
|
|
package/dist/entry.js
CHANGED
|
@@ -2315,7 +2315,7 @@ if (!ensureExperimentalWarningSuppressed()) {
|
|
|
2315
2315
|
applyCliProfileEnv({ profile: parsed.profile });
|
|
2316
2316
|
process$1.argv = parsed.argv;
|
|
2317
2317
|
}
|
|
2318
|
-
import("./run-main-
|
|
2318
|
+
import("./run-main-BsVhPYM4.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
|
|
2319
2319
|
console.error("[symi] Failed to start CLI:", error instanceof Error ? error.stack ?? error.message : error);
|
|
2320
2320
|
process$1.exitCode = 1;
|
|
2321
2321
|
});
|
|
@@ -5,20 +5,20 @@ import "./model-selection-CMx1evaF.js";
|
|
|
5
5
|
import "./manifest-registry-CVLmi8rz.js";
|
|
6
6
|
import "./config-D7TcU4qN.js";
|
|
7
7
|
import "./shell-env-CTYaxUs_.js";
|
|
8
|
-
import "./client-
|
|
9
|
-
import "./call-
|
|
8
|
+
import "./client-CdiymIXS.js";
|
|
9
|
+
import "./call-A18kwyah.js";
|
|
10
10
|
import "./message-channel-DXToSaWK.js";
|
|
11
11
|
import "./pairing-token-B-OTYROz.js";
|
|
12
12
|
import { n as formatTimeAgo } from "./format-relative-CxLpEQOX.js";
|
|
13
13
|
import { c as readExecApprovalsSnapshot, p as saveExecApprovals } from "./exec-approvals-DEjIocmZ.js";
|
|
14
14
|
import { t as formatDocsLink } from "./links-B9CbwY46.js";
|
|
15
15
|
import "./progress-BOQ0hkeM.js";
|
|
16
|
-
import { n as callGatewayFromCli } from "./gateway-rpc-
|
|
16
|
+
import { n as callGatewayFromCli } from "./gateway-rpc-vivTzTCq.js";
|
|
17
17
|
import "./systemd-Dtydk5-z.js";
|
|
18
18
|
import "./service-Ccv3Zi5_.js";
|
|
19
19
|
import { t as renderTable } from "./table-Dm8jYqmW.js";
|
|
20
20
|
import { t as describeUnknownError } from "./shared-BJRsBGGr.js";
|
|
21
|
-
import { i as resolveNodeId, r as nodesCallOpts } from "./rpc-
|
|
21
|
+
import { i as resolveNodeId, r as nodesCallOpts } from "./rpc-DP3AhcZq.js";
|
|
22
22
|
import JSON5 from "json5";
|
|
23
23
|
import fs from "node:fs/promises";
|
|
24
24
|
|
|
@@ -11,19 +11,19 @@ import "./env-BRnPI9sO.js";
|
|
|
11
11
|
import "./shell-env-Dc3iU7HK.js";
|
|
12
12
|
import "./manifest-registry-D1MLZEjS.js";
|
|
13
13
|
import "./message-channel-DgjXWzf-.js";
|
|
14
|
-
import "./client-
|
|
15
|
-
import "./call-
|
|
14
|
+
import "./client-DDqXo-cF.js";
|
|
15
|
+
import "./call-PpGwcPn-.js";
|
|
16
16
|
import "./pairing-token-Dcy37-4s.js";
|
|
17
17
|
import { n as formatTimeAgo } from "./format-relative-D4GQsWlP.js";
|
|
18
18
|
import { c as readExecApprovalsSnapshot, p as saveExecApprovals } from "./exec-approvals-DioSaIeH.js";
|
|
19
19
|
import { t as formatDocsLink } from "./links-CQZxjjCO.js";
|
|
20
20
|
import "./progress-DQTvTiEg.js";
|
|
21
|
-
import { n as callGatewayFromCli } from "./gateway-rpc-
|
|
21
|
+
import { n as callGatewayFromCli } from "./gateway-rpc-DMSsr0Xn.js";
|
|
22
22
|
import "./systemd-Dic80Qni.js";
|
|
23
23
|
import "./service-BF50XyKr.js";
|
|
24
24
|
import { t as renderTable } from "./table-Ds5CZCyv.js";
|
|
25
25
|
import { t as describeUnknownError } from "./shared-BmjlTHYU.js";
|
|
26
|
-
import { i as resolveNodeId, r as nodesCallOpts } from "./rpc-
|
|
26
|
+
import { i as resolveNodeId, r as nodesCallOpts } from "./rpc-KjYXUeLD.js";
|
|
27
27
|
import JSON5 from "json5";
|
|
28
28
|
import fs from "node:fs/promises";
|
|
29
29
|
|
package/dist/extensionAPI.js
CHANGED
|
@@ -6,7 +6,7 @@ import { _ as DEFAULT_PROVIDER, g as DEFAULT_MODEL, p as resolveThinkingDefault
|
|
|
6
6
|
import { a as resolveAgentIdentity } from "./reply-prefix-i-FPYcoQ.js";
|
|
7
7
|
import "./plugins-CZ_mYwXq.js";
|
|
8
8
|
import "./replies-0nzkXt6o.js";
|
|
9
|
-
import { a as resolveAgentTimeoutMs, r as runEmbeddedPiAgent } from "./pi-embedded-
|
|
9
|
+
import { a as resolveAgentTimeoutMs, r as runEmbeddedPiAgent } from "./pi-embedded-BAgVs8XC.js";
|
|
10
10
|
import { $ as loadSessionStore, nt as saveSessionStore } from "./deliver-f3cIWxXT.js";
|
|
11
11
|
import "./diagnostic-BdRnGknC.js";
|
|
12
12
|
import "./diagnostic-session-state-DpxCUzoM.js";
|
|
@@ -23,7 +23,7 @@ import "./errors-BEU7IHU6.js";
|
|
|
23
23
|
import "./tokens-yWO1wD7Z.js";
|
|
24
24
|
import "./thinking-DgjGxdSP.js";
|
|
25
25
|
import { n as resolveSessionFilePath, s as resolveStorePath } from "./paths-BsT3BvfH.js";
|
|
26
|
-
import "./manager
|
|
26
|
+
import "./manager--GmDbwza.js";
|
|
27
27
|
import "./github-copilot-token-dYUr1mDQ.js";
|
|
28
28
|
import "./sqlite-D8iYC_CU.js";
|
|
29
29
|
import "./markdown-tables-jQzXAsf3.js";
|