@bytespell/shella 0.1.15 → 0.1.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/bin/cli.js +49 -37
- package/dist/bin/cli.js.map +1 -1
- package/dist/index.js +49 -37
- package/dist/index.js.map +1 -1
- package/dist/public/assets/{_baseUniq-rFeuIcJP.js → _baseUniq-f4tIwaKc.js} +1 -1
- package/{public/assets/arc-Ciq1-gt2.js → dist/public/assets/arc-D1iSSrpp.js} +1 -1
- package/{public/assets/architectureDiagram-VXUJARFQ-DQOTLTYJ.js → dist/public/assets/architectureDiagram-VXUJARFQ-CHdfmBcb.js} +1 -1
- package/{public/assets/blockDiagram-VD42YOAC-DrkXLslH.js → dist/public/assets/blockDiagram-VD42YOAC-CDILmMuo.js} +1 -1
- package/dist/public/assets/{c4Diagram-YG6GDRKO-CGep4UQM.js → c4Diagram-YG6GDRKO-Dydypk5A.js} +1 -1
- package/dist/public/assets/channel-D1aQ_UAD.js +1 -0
- package/dist/public/assets/{chunk-4BX2VUAB-DXU1pWcl.js → chunk-4BX2VUAB-pytRVvgb.js} +1 -1
- package/dist/public/assets/{chunk-55IACEB6-Bx-cpVYk.js → chunk-55IACEB6-mTx67dww.js} +1 -1
- package/{public/assets/chunk-B4BG7PRW-DN5-a04I.js → dist/public/assets/chunk-B4BG7PRW-DIs9ZsPT.js} +1 -1
- package/{public/assets/chunk-DI55MBZ5-CO01g9LM.js → dist/public/assets/chunk-DI55MBZ5-CwCAlT8Y.js} +1 -1
- package/dist/public/assets/{chunk-FMBD7UC4-B2M8wU-E.js → chunk-FMBD7UC4-fw4fjyOD.js} +1 -1
- package/dist/public/assets/{chunk-QN33PNHL-ZWjnlJD9.js → chunk-QN33PNHL-ekuWea8u.js} +1 -1
- package/dist/public/assets/{chunk-QZHKN3VN-CB-E8xvs.js → chunk-QZHKN3VN-BSGUw7ld.js} +1 -1
- package/dist/public/assets/{chunk-TZMSLE5B-C7K7-xdt.js → chunk-TZMSLE5B-50g1JKhR.js} +1 -1
- package/dist/public/assets/classDiagram-2ON5EDUG-BMkQAOMr.js +1 -0
- package/dist/public/assets/classDiagram-v2-WZHVMYZB-BMkQAOMr.js +1 -0
- package/dist/public/assets/clone-Bx37Q1vf.js +1 -0
- package/dist/public/assets/{code-block-IT6T5CEO-oEJfzIXW.js → code-block-IT6T5CEO-EDiF0GqI.js} +1 -1
- package/dist/public/assets/{cose-bilkent-S5V4N54A-Byu8718_.js → cose-bilkent-S5V4N54A-CvgE8W2M.js} +1 -1
- package/dist/public/assets/{dagre-6UL2VRFP-C2C-oI3k.js → dagre-6UL2VRFP-DvyJ7HR7.js} +1 -1
- package/dist/public/assets/{diagram-PSM6KHXK-Bc_wpePT.js → diagram-PSM6KHXK-Cc83AcOz.js} +1 -1
- package/dist/public/assets/{diagram-QEK2KX5R-R_dh2lcc.js → diagram-QEK2KX5R-CU46ARD8.js} +1 -1
- package/dist/public/assets/{diagram-S2PKOQOG-CtO72gsq.js → diagram-S2PKOQOG-efhSiP_M.js} +1 -1
- package/{public/assets/erDiagram-Q2GNP2WA-NyJ20Tcw.js → dist/public/assets/erDiagram-Q2GNP2WA-B58mIFpU.js} +1 -1
- package/{public/assets/flowDiagram-NV44I4VS-Cd0USqQr.js → dist/public/assets/flowDiagram-NV44I4VS-1v9cp2YJ.js} +1 -1
- package/dist/public/assets/{ganttDiagram-JELNMOA3-CAanRDED.js → ganttDiagram-JELNMOA3-BcTkV6Gr.js} +1 -1
- package/dist/public/assets/{gitGraphDiagram-NY62KEGX-Cfsu6ghS.js → gitGraphDiagram-NY62KEGX-93GAGqcU.js} +1 -1
- package/dist/public/assets/{graph-QKFq9c4B.js → graph-6Tw3vSP1.js} +1 -1
- package/dist/public/assets/{index-CnzhCX95.js → index-DCoOU4Bo.js} +136 -136
- package/dist/public/assets/index-DX0UZrUM.css +1 -0
- package/dist/public/assets/index-N3b5RkIr.js +23 -0
- package/dist/public/assets/{infoDiagram-WHAUD3N6-Dj8jXmxi.js → infoDiagram-WHAUD3N6-C63G3GM1.js} +1 -1
- package/dist/public/assets/{journeyDiagram-XKPGCS4Q-CPgbzNru.js → journeyDiagram-XKPGCS4Q-COsqyKDn.js} +1 -1
- package/{public/assets/kanban-definition-3W4ZIXB7-WJ4DpsDz.js → dist/public/assets/kanban-definition-3W4ZIXB7-D8vQWdGC.js} +1 -1
- package/dist/public/assets/{layout-CYzA-TWJ.js → layout-DRyEo8lq.js} +1 -1
- package/dist/public/assets/{linear--TKGjpXE.js → linear-z45OTqjs.js} +1 -1
- package/dist/public/assets/{mermaid.core-Cf8Vm-zi.js → mermaid.core-BNfYzVuV.js} +5 -5
- package/dist/public/assets/{min-TcvkLLDD.js → min-CmiDBzIz.js} +1 -1
- package/dist/public/assets/{mindmap-definition-VGOIOE7T-Cn1Dyi7A.js → mindmap-definition-VGOIOE7T-DYRthb2s.js} +1 -1
- package/dist/public/assets/{pieDiagram-ADFJNKIX-D62bbfWm.js → pieDiagram-ADFJNKIX-Si1xn4yd.js} +1 -1
- package/{public/assets/quadrantDiagram-AYHSOK5B-8_KQ7LcH.js → dist/public/assets/quadrantDiagram-AYHSOK5B-BNniOxQC.js} +1 -1
- package/dist/public/assets/{requirementDiagram-UZGBJVZJ-Cux_-KLZ.js → requirementDiagram-UZGBJVZJ-BhnRM_zJ.js} +1 -1
- package/{public/assets/sankeyDiagram-TZEHDZUN-SGGXtbp5.js → dist/public/assets/sankeyDiagram-TZEHDZUN-DUUi1FUF.js} +1 -1
- package/{public/assets/sequenceDiagram-WL72ISMW-BmSoaDsd.js → dist/public/assets/sequenceDiagram-WL72ISMW-ntc5_wIp.js} +1 -1
- package/{public/assets/stateDiagram-FKZM4ZOC-laPJWPGD.js → dist/public/assets/stateDiagram-FKZM4ZOC-BFkPTNKj.js} +1 -1
- package/dist/public/assets/stateDiagram-v2-4FDKWEC3-D4GG1k4J.js +1 -0
- package/{public/assets/timeline-definition-IT6M3QCI-DnEEd3PS.js → dist/public/assets/timeline-definition-IT6M3QCI-B3ytx-Fa.js} +1 -1
- package/dist/public/assets/{treemap-KMMF4GRG-CEr_nAYt.js → treemap-KMMF4GRG-BO2CInCE.js} +1 -1
- package/{public/assets/xychartDiagram-PRI3JC2R-BA6uWNes.js → dist/public/assets/xychartDiagram-PRI3JC2R-CZhdEbYY.js} +1 -1
- package/dist/public/index.html +2 -2
- package/package.json +1 -1
- package/public/assets/{_baseUniq-rFeuIcJP.js → _baseUniq-f4tIwaKc.js} +1 -1
- package/{dist/public/assets/arc-Ciq1-gt2.js → public/assets/arc-D1iSSrpp.js} +1 -1
- package/{dist/public/assets/architectureDiagram-VXUJARFQ-DQOTLTYJ.js → public/assets/architectureDiagram-VXUJARFQ-CHdfmBcb.js} +1 -1
- package/{dist/public/assets/blockDiagram-VD42YOAC-DrkXLslH.js → public/assets/blockDiagram-VD42YOAC-CDILmMuo.js} +1 -1
- package/public/assets/{c4Diagram-YG6GDRKO-CGep4UQM.js → c4Diagram-YG6GDRKO-Dydypk5A.js} +1 -1
- package/public/assets/channel-D1aQ_UAD.js +1 -0
- package/public/assets/{chunk-4BX2VUAB-DXU1pWcl.js → chunk-4BX2VUAB-pytRVvgb.js} +1 -1
- package/public/assets/{chunk-55IACEB6-Bx-cpVYk.js → chunk-55IACEB6-mTx67dww.js} +1 -1
- package/{dist/public/assets/chunk-B4BG7PRW-DN5-a04I.js → public/assets/chunk-B4BG7PRW-DIs9ZsPT.js} +1 -1
- package/{dist/public/assets/chunk-DI55MBZ5-CO01g9LM.js → public/assets/chunk-DI55MBZ5-CwCAlT8Y.js} +1 -1
- package/public/assets/{chunk-FMBD7UC4-B2M8wU-E.js → chunk-FMBD7UC4-fw4fjyOD.js} +1 -1
- package/public/assets/{chunk-QN33PNHL-ZWjnlJD9.js → chunk-QN33PNHL-ekuWea8u.js} +1 -1
- package/public/assets/{chunk-QZHKN3VN-CB-E8xvs.js → chunk-QZHKN3VN-BSGUw7ld.js} +1 -1
- package/public/assets/{chunk-TZMSLE5B-C7K7-xdt.js → chunk-TZMSLE5B-50g1JKhR.js} +1 -1
- package/public/assets/classDiagram-2ON5EDUG-BMkQAOMr.js +1 -0
- package/public/assets/classDiagram-v2-WZHVMYZB-BMkQAOMr.js +1 -0
- package/public/assets/clone-Bx37Q1vf.js +1 -0
- package/public/assets/{code-block-IT6T5CEO-oEJfzIXW.js → code-block-IT6T5CEO-EDiF0GqI.js} +1 -1
- package/public/assets/{cose-bilkent-S5V4N54A-Byu8718_.js → cose-bilkent-S5V4N54A-CvgE8W2M.js} +1 -1
- package/public/assets/{dagre-6UL2VRFP-C2C-oI3k.js → dagre-6UL2VRFP-DvyJ7HR7.js} +1 -1
- package/public/assets/{diagram-PSM6KHXK-Bc_wpePT.js → diagram-PSM6KHXK-Cc83AcOz.js} +1 -1
- package/public/assets/{diagram-QEK2KX5R-R_dh2lcc.js → diagram-QEK2KX5R-CU46ARD8.js} +1 -1
- package/public/assets/{diagram-S2PKOQOG-CtO72gsq.js → diagram-S2PKOQOG-efhSiP_M.js} +1 -1
- package/{dist/public/assets/erDiagram-Q2GNP2WA-NyJ20Tcw.js → public/assets/erDiagram-Q2GNP2WA-B58mIFpU.js} +1 -1
- package/{dist/public/assets/flowDiagram-NV44I4VS-Cd0USqQr.js → public/assets/flowDiagram-NV44I4VS-1v9cp2YJ.js} +1 -1
- package/public/assets/{ganttDiagram-JELNMOA3-CAanRDED.js → ganttDiagram-JELNMOA3-BcTkV6Gr.js} +1 -1
- package/public/assets/{gitGraphDiagram-NY62KEGX-Cfsu6ghS.js → gitGraphDiagram-NY62KEGX-93GAGqcU.js} +1 -1
- package/public/assets/{graph-QKFq9c4B.js → graph-6Tw3vSP1.js} +1 -1
- package/public/assets/{index-CnzhCX95.js → index-DCoOU4Bo.js} +136 -136
- package/public/assets/index-DX0UZrUM.css +1 -0
- package/public/assets/index-N3b5RkIr.js +23 -0
- package/public/assets/{infoDiagram-WHAUD3N6-Dj8jXmxi.js → infoDiagram-WHAUD3N6-C63G3GM1.js} +1 -1
- package/public/assets/{journeyDiagram-XKPGCS4Q-CPgbzNru.js → journeyDiagram-XKPGCS4Q-COsqyKDn.js} +1 -1
- package/{dist/public/assets/kanban-definition-3W4ZIXB7-WJ4DpsDz.js → public/assets/kanban-definition-3W4ZIXB7-D8vQWdGC.js} +1 -1
- package/public/assets/{layout-CYzA-TWJ.js → layout-DRyEo8lq.js} +1 -1
- package/public/assets/{linear--TKGjpXE.js → linear-z45OTqjs.js} +1 -1
- package/public/assets/{mermaid.core-Cf8Vm-zi.js → mermaid.core-BNfYzVuV.js} +5 -5
- package/public/assets/{min-TcvkLLDD.js → min-CmiDBzIz.js} +1 -1
- package/public/assets/{mindmap-definition-VGOIOE7T-Cn1Dyi7A.js → mindmap-definition-VGOIOE7T-DYRthb2s.js} +1 -1
- package/public/assets/{pieDiagram-ADFJNKIX-D62bbfWm.js → pieDiagram-ADFJNKIX-Si1xn4yd.js} +1 -1
- package/{dist/public/assets/quadrantDiagram-AYHSOK5B-8_KQ7LcH.js → public/assets/quadrantDiagram-AYHSOK5B-BNniOxQC.js} +1 -1
- package/public/assets/{requirementDiagram-UZGBJVZJ-Cux_-KLZ.js → requirementDiagram-UZGBJVZJ-BhnRM_zJ.js} +1 -1
- package/{dist/public/assets/sankeyDiagram-TZEHDZUN-SGGXtbp5.js → public/assets/sankeyDiagram-TZEHDZUN-DUUi1FUF.js} +1 -1
- package/{dist/public/assets/sequenceDiagram-WL72ISMW-BmSoaDsd.js → public/assets/sequenceDiagram-WL72ISMW-ntc5_wIp.js} +1 -1
- package/{dist/public/assets/stateDiagram-FKZM4ZOC-laPJWPGD.js → public/assets/stateDiagram-FKZM4ZOC-BFkPTNKj.js} +1 -1
- package/public/assets/stateDiagram-v2-4FDKWEC3-D4GG1k4J.js +1 -0
- package/{dist/public/assets/timeline-definition-IT6M3QCI-DnEEd3PS.js → public/assets/timeline-definition-IT6M3QCI-B3ytx-Fa.js} +1 -1
- package/public/assets/{treemap-KMMF4GRG-CEr_nAYt.js → treemap-KMMF4GRG-BO2CInCE.js} +1 -1
- package/{dist/public/assets/xychartDiagram-PRI3JC2R-BA6uWNes.js → public/assets/xychartDiagram-PRI3JC2R-CZhdEbYY.js} +1 -1
- package/public/index.html +2 -2
- package/dist/public/assets/channel-EWtlBi79.js +0 -1
- package/dist/public/assets/classDiagram-2ON5EDUG-Bhl8gu7O.js +0 -1
- package/dist/public/assets/classDiagram-v2-WZHVMYZB-Bhl8gu7O.js +0 -1
- package/dist/public/assets/clone-DGIXUqRz.js +0 -1
- package/dist/public/assets/index-BVgUdnkK.js +0 -23
- package/dist/public/assets/index-DAuITrPV.css +0 -1
- package/dist/public/assets/stateDiagram-v2-4FDKWEC3-uyrwe5Bi.js +0 -1
- package/public/assets/channel-EWtlBi79.js +0 -1
- package/public/assets/classDiagram-2ON5EDUG-Bhl8gu7O.js +0 -1
- package/public/assets/classDiagram-v2-WZHVMYZB-Bhl8gu7O.js +0 -1
- package/public/assets/clone-DGIXUqRz.js +0 -1
- package/public/assets/index-BVgUdnkK.js +0 -23
- package/public/assets/index-DAuITrPV.css +0 -1
- package/public/assets/stateDiagram-v2-4FDKWEC3-uyrwe5Bi.js +0 -1
package/dist/bin/cli.js
CHANGED
|
@@ -112,6 +112,8 @@ var panes = sqliteTable("panes", {
|
|
|
112
112
|
eventStream: text("event_stream", { mode: "json" }).$type(),
|
|
113
113
|
/** Renderer ID (e.g., 'builtin:terminal', 'project:custom-viewer'). Null = use default. */
|
|
114
114
|
rendererId: text("renderer_id"),
|
|
115
|
+
/** Pane state - initialized from initOptions, can be updated by renderers. */
|
|
116
|
+
state: text("state", { mode: "json" }).$type(),
|
|
115
117
|
createdAt: integer("created_at", { mode: "timestamp_ms" }).notNull().default(sql`(unixepoch() * 1000)`)
|
|
116
118
|
});
|
|
117
119
|
var uiState = sqliteTable("ui_state", {
|
|
@@ -166,6 +168,7 @@ sqlite.exec(`
|
|
|
166
168
|
content TEXT,
|
|
167
169
|
event_stream TEXT,
|
|
168
170
|
renderer_id TEXT,
|
|
171
|
+
state TEXT,
|
|
169
172
|
created_at INTEGER NOT NULL DEFAULT (unixepoch() * 1000)
|
|
170
173
|
);
|
|
171
174
|
|
|
@@ -208,6 +211,16 @@ try {
|
|
|
208
211
|
}
|
|
209
212
|
} catch (e) {
|
|
210
213
|
}
|
|
214
|
+
try {
|
|
215
|
+
const tableInfo = sqlite.prepare(`PRAGMA table_info(panes)`).all();
|
|
216
|
+
const hasStateColumn = tableInfo.some((col) => col.name === "state");
|
|
217
|
+
if (!hasStateColumn) {
|
|
218
|
+
console.log("[db] Adding state column to panes...");
|
|
219
|
+
sqlite.exec(`ALTER TABLE panes ADD COLUMN state TEXT`);
|
|
220
|
+
console.log("[db] state column migration complete");
|
|
221
|
+
}
|
|
222
|
+
} catch (e) {
|
|
223
|
+
}
|
|
211
224
|
|
|
212
225
|
// src/lib/configDiscovery.ts
|
|
213
226
|
import { execSync } from "child_process";
|
|
@@ -678,18 +691,9 @@ async function listFilesFuzzy(workingDir, query, limit) {
|
|
|
678
691
|
|
|
679
692
|
// src/amuxBridge.ts
|
|
680
693
|
import { muxManager as muxManager2 } from "@bytespell/amux/streams/manager";
|
|
681
|
-
import { isAcpEvent } from "@bytespell/amux/types";
|
|
682
694
|
function getStreamStorageDir(streamId) {
|
|
683
695
|
return path5.join(getDataDir(), "streams", streamId);
|
|
684
696
|
}
|
|
685
|
-
function generateTitleFromMessage(message) {
|
|
686
|
-
const cleaned = message.replace(/@[\w./~-]+/g, "").replace(/\s+/g, " ").trim();
|
|
687
|
-
const firstLine = cleaned.split("\n")[0] || cleaned;
|
|
688
|
-
if (firstLine.length <= 50) return firstLine;
|
|
689
|
-
const truncated = firstLine.slice(0, 50);
|
|
690
|
-
const lastSpace = truncated.lastIndexOf(" ");
|
|
691
|
-
return lastSpace > 20 ? truncated.slice(0, lastSpace) + "..." : truncated + "...";
|
|
692
|
-
}
|
|
693
697
|
function createAmuxBridge() {
|
|
694
698
|
const bridge = {
|
|
695
699
|
async getStreams(ids) {
|
|
@@ -720,15 +724,15 @@ function createAmuxBridge() {
|
|
|
720
724
|
const id = params.id ?? randomUUID2();
|
|
721
725
|
const now = /* @__PURE__ */ new Date();
|
|
722
726
|
const config = db.select().from(streamConfigs).where(eq2(streamConfigs.id, configId)).get();
|
|
723
|
-
const
|
|
724
|
-
const
|
|
727
|
+
const driver = config ? muxManager2.getDriver(config.driverType) : null;
|
|
728
|
+
const streamType = driver?.streamType ?? config?.driverType ?? "acp";
|
|
725
729
|
db.insert(streams).values({
|
|
726
730
|
id,
|
|
727
731
|
directory: params.directory,
|
|
728
732
|
streamConfigId: configId,
|
|
729
733
|
streamType,
|
|
730
734
|
driverState: null,
|
|
731
|
-
title:
|
|
735
|
+
title: null,
|
|
732
736
|
model: null,
|
|
733
737
|
mode: null,
|
|
734
738
|
createdAt: now
|
|
@@ -747,7 +751,14 @@ function createAmuxBridge() {
|
|
|
747
751
|
db.delete(streams).where(eq2(streams.id, id)).run();
|
|
748
752
|
},
|
|
749
753
|
async getStreamConfigs() {
|
|
750
|
-
|
|
754
|
+
const configs = db.select().from(streamConfigs).all();
|
|
755
|
+
return configs.map((config) => {
|
|
756
|
+
const driver = muxManager2.getDriver(config.driverType);
|
|
757
|
+
return {
|
|
758
|
+
...config,
|
|
759
|
+
streamType: driver?.streamType ?? config.driverType
|
|
760
|
+
};
|
|
761
|
+
});
|
|
751
762
|
},
|
|
752
763
|
async startStream(streamId) {
|
|
753
764
|
const dbStream = db.select().from(streams).where(eq2(streams.id, streamId)).get();
|
|
@@ -755,13 +766,7 @@ function createAmuxBridge() {
|
|
|
755
766
|
const dbConfig = db.select().from(streamConfigs).where(eq2(streamConfigs.id, dbStream.streamConfigId)).get();
|
|
756
767
|
if (!dbConfig) throw new Error(`Stream config ${dbStream.streamConfigId} not found`);
|
|
757
768
|
const storageDir = getStreamStorageDir(streamId);
|
|
758
|
-
const emit = (
|
|
759
|
-
if (isAcpEvent(event) && event.sessionUpdate === "session_info_update") {
|
|
760
|
-
const title = event.title;
|
|
761
|
-
if (title !== void 0) {
|
|
762
|
-
db.update(streams).set({ title }).where(eq2(streams.id, streamId)).run();
|
|
763
|
-
}
|
|
764
|
-
}
|
|
769
|
+
const emit = (_event) => {
|
|
765
770
|
};
|
|
766
771
|
const handle = await muxManager2.startStream({
|
|
767
772
|
streamId,
|
|
@@ -801,14 +806,6 @@ function createAmuxBridge() {
|
|
|
801
806
|
await muxManager2.stopForStream(streamId);
|
|
802
807
|
},
|
|
803
808
|
async input(streamId, message) {
|
|
804
|
-
const stream = db.select().from(streams).where(eq2(streams.id, streamId)).get();
|
|
805
|
-
if (!stream) throw new Error(`Stream ${streamId} not found`);
|
|
806
|
-
if (!stream.title) {
|
|
807
|
-
const title = generateTitleFromMessage(message);
|
|
808
|
-
if (title) {
|
|
809
|
-
db.update(streams).set({ title }).where(eq2(streams.id, streamId)).run();
|
|
810
|
-
}
|
|
811
|
-
}
|
|
812
809
|
await muxManager2.input(streamId, message);
|
|
813
810
|
},
|
|
814
811
|
async cancel(streamId) {
|
|
@@ -981,12 +978,11 @@ var amux;
|
|
|
981
978
|
function setAmuxBridge(bridge) {
|
|
982
979
|
amux = bridge;
|
|
983
980
|
}
|
|
984
|
-
function
|
|
985
|
-
const
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
return `Window ${existingCount + 1}`;
|
|
981
|
+
function getNextWindowNumber() {
|
|
982
|
+
const row = db.select().from(uiState).where(eq3(uiState.key, "window_counter")).get();
|
|
983
|
+
const next = (row ? parseInt(row.value, 10) : 0) + 1;
|
|
984
|
+
db.insert(uiState).values({ key: "window_counter", value: String(next) }).onConflictDoUpdate({ target: uiState.key, set: { value: String(next) } }).run();
|
|
985
|
+
return next;
|
|
990
986
|
}
|
|
991
987
|
var windowsRouter = router({
|
|
992
988
|
/**
|
|
@@ -1060,11 +1056,10 @@ var windowsRouter = router({
|
|
|
1060
1056
|
}
|
|
1061
1057
|
const windowId = input.id ?? randomUUID3();
|
|
1062
1058
|
const paneId = randomUUID3();
|
|
1063
|
-
const existingCount = db.select().from(windows).all().length;
|
|
1064
1059
|
const layout = createLeaf(paneId);
|
|
1065
1060
|
db.insert(windows).values({
|
|
1066
1061
|
id: windowId,
|
|
1067
|
-
title: input.title ||
|
|
1062
|
+
title: input.title || String(getNextWindowNumber()),
|
|
1068
1063
|
hasCustomTitle: !!input.title,
|
|
1069
1064
|
layout,
|
|
1070
1065
|
activePaneId: paneId
|
|
@@ -1331,6 +1326,8 @@ var layoutRouter = router({
|
|
|
1331
1326
|
streamConfigId: z2.string(),
|
|
1332
1327
|
directory: z2.string().optional(),
|
|
1333
1328
|
rendererId: z2.string().optional(),
|
|
1329
|
+
/** All initOptions from the form - stored as pane state */
|
|
1330
|
+
initOptions: z2.record(z2.string()).optional(),
|
|
1334
1331
|
// Legacy alias
|
|
1335
1332
|
agentConfigId: z2.string().optional()
|
|
1336
1333
|
})).mutation(async ({ input }) => {
|
|
@@ -1350,7 +1347,8 @@ var layoutRouter = router({
|
|
|
1350
1347
|
const eventStream = { type: stream.streamType, streamId: stream.id };
|
|
1351
1348
|
db.update(panes).set({
|
|
1352
1349
|
eventStream,
|
|
1353
|
-
rendererId: input.rendererId ?? null
|
|
1350
|
+
rendererId: input.rendererId ?? null,
|
|
1351
|
+
state: input.initOptions ?? null
|
|
1354
1352
|
}).where(eq4(panes.id, input.paneId)).run();
|
|
1355
1353
|
await amux2.startStream(stream.id);
|
|
1356
1354
|
return {
|
|
@@ -1377,6 +1375,20 @@ var layoutRouter = router({
|
|
|
1377
1375
|
createdAt: stream.createdAt.toISOString()
|
|
1378
1376
|
}
|
|
1379
1377
|
};
|
|
1378
|
+
}),
|
|
1379
|
+
/**
|
|
1380
|
+
* Update pane state. Renderers can call this to update state during the pane lifecycle.
|
|
1381
|
+
*/
|
|
1382
|
+
updatePaneState: publicProcedure.input(z2.object({
|
|
1383
|
+
paneId: z2.string(),
|
|
1384
|
+
state: z2.record(z2.string())
|
|
1385
|
+
})).mutation(async ({ input }) => {
|
|
1386
|
+
const pane = db.select().from(panes).where(eq4(panes.id, input.paneId)).get();
|
|
1387
|
+
if (!pane) {
|
|
1388
|
+
throw new Error(`Pane ${input.paneId} not found`);
|
|
1389
|
+
}
|
|
1390
|
+
db.update(panes).set({ state: input.state }).where(eq4(panes.id, input.paneId)).run();
|
|
1391
|
+
return { ok: true };
|
|
1380
1392
|
})
|
|
1381
1393
|
});
|
|
1382
1394
|
|