@ganglion/xacpx-relay 0.10.2 → 0.10.4
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/cli.js +70 -7
- package/dist/relay-web/assets/{DashboardView-iRsVrnXE.js → DashboardView-Bp6DPuGb.js} +103 -102
- package/dist/relay-web/assets/{InviteView-Ck0MnGhg.js → InviteView-B61O3lGC.js} +1 -1
- package/dist/relay-web/assets/{LoginView-CLa4gEFc.js → LoginView-BD7LIg1Q.js} +1 -1
- package/dist/relay-web/assets/{SettingsView-BgrAILfa.js → SettingsView-1SadoSqF.js} +1 -1
- package/dist/relay-web/assets/{abnfDiagram-VRR7QNED-Br24YyDm.js → abnfDiagram-VRR7QNED-DS9bYs3l.js} +1 -1
- package/dist/relay-web/assets/{arc-DIRRMvFE.js → arc-gjJ2Xh0U.js} +1 -1
- package/dist/relay-web/assets/{architectureDiagram-ZJ3FMSHR-DJHQVNAM.js → architectureDiagram-ZJ3FMSHR-D1uIuPAV.js} +1 -1
- package/dist/relay-web/assets/{blockDiagram-677ZJIJ3-ClwAfPf_.js → blockDiagram-677ZJIJ3-z5Pi_EFI.js} +1 -1
- package/dist/relay-web/assets/{c4Diagram-LMCZKHZV-DZDRr5ZQ.js → c4Diagram-LMCZKHZV-D3Ghoxay.js} +1 -1
- package/dist/relay-web/assets/channel-CuU0LsI6.js +1 -0
- package/dist/relay-web/assets/{chunk-2Q5K7J3B-CeC571Uu.js → chunk-2Q5K7J3B-5_zLDhim.js} +1 -1
- package/dist/relay-web/assets/{chunk-32BRIVSS-MM72e9WP.js → chunk-32BRIVSS-CaJVymbP.js} +1 -1
- package/dist/relay-web/assets/{chunk-5VM5RSS4-C0lvjKpK.js → chunk-5VM5RSS4-DLGRpf1M.js} +1 -1
- package/dist/relay-web/assets/{chunk-EX3LRPZG-DgECA8Lp.js → chunk-EX3LRPZG-C5Gq1xt-.js} +1 -1
- package/dist/relay-web/assets/{chunk-JWPE2WC7-BFtdJWgc.js → chunk-JWPE2WC7-DHNcemtD.js} +1 -1
- package/dist/relay-web/assets/{chunk-MOJQB5TN-DzVQZFml.js → chunk-MOJQB5TN-HSMG_8x1.js} +1 -1
- package/dist/relay-web/assets/{chunk-RYQCIY6F-CG--NxHl.js → chunk-RYQCIY6F-12MZgyWU.js} +1 -1
- package/dist/relay-web/assets/{chunk-V7JOEXUC-BYSY5_n_.js → chunk-V7JOEXUC-DtsMQy3C.js} +1 -1
- package/dist/relay-web/assets/{chunk-VR4S4FIN-DIDH6ODG.js → chunk-VR4S4FIN-DIJP4z_g.js} +1 -1
- package/dist/relay-web/assets/{chunk-XXDRQBXY-B3ZtRxzp.js → chunk-XXDRQBXY-C6ANhi0M.js} +1 -1
- package/dist/relay-web/assets/classDiagram-OUVF2IWQ-CqtgNVNJ.js +1 -0
- package/dist/relay-web/assets/classDiagram-v2-EOCWNBFH-CqtgNVNJ.js +1 -0
- package/dist/relay-web/assets/{cose-bilkent-JH36ORCC-CHSuHZJP.js → cose-bilkent-JH36ORCC-DiiLa-bH.js} +1 -1
- package/dist/relay-web/assets/{cynefin-VYW2F7L2-D3PgyoBA.js → cynefin-VYW2F7L2-CKZJ9fy0.js} +1 -1
- package/dist/relay-web/assets/{cynefinDiagram-TSTJHNR4-CnLpW7oA.js → cynefinDiagram-TSTJHNR4-DFAtLWq0.js} +1 -1
- package/dist/relay-web/assets/{dagre-VKFMJZFB-D70OwtTY.js → dagre-VKFMJZFB-CMG5wWva.js} +1 -1
- package/dist/relay-web/assets/{diagram-FQU43EPY-DhVhK0JY.js → diagram-FQU43EPY-DBaRnmRK.js} +1 -1
- package/dist/relay-web/assets/{diagram-G47NLZAW-CB1GK4Xn.js → diagram-G47NLZAW-DDlvBqvQ.js} +1 -1
- package/dist/relay-web/assets/{diagram-NH7WQ7WH-BvEvMUqj.js → diagram-NH7WQ7WH-CkPXAKDT.js} +1 -1
- package/dist/relay-web/assets/{diagram-OA4YK3LP-BmIXm5D0.js → diagram-OA4YK3LP-pCe72eL_.js} +1 -1
- package/dist/relay-web/assets/{diagram-WEI45ONY-D6-fz9yU.js → diagram-WEI45ONY-BR-td8OS.js} +1 -1
- package/dist/relay-web/assets/{ebnfDiagram-CCIWWBDH-CgEBC9WS.js → ebnfDiagram-CCIWWBDH-BEBifale.js} +1 -1
- package/dist/relay-web/assets/{erDiagram-Q63AITRT-ATnLORgU.js → erDiagram-Q63AITRT-DlhqksS-.js} +1 -1
- package/dist/relay-web/assets/{flowDiagram-23GEKE2U-C1Q00Kgy.js → flowDiagram-23GEKE2U-DP8y_pcv.js} +1 -1
- package/dist/relay-web/assets/{ganttDiagram-NO4QXBWP-BxBHCqFF.js → ganttDiagram-NO4QXBWP-D5dgRMTq.js} +1 -1
- package/dist/relay-web/assets/{ghostty-web-CYUXfFzu.js → ghostty-web-D01Cjsnx.js} +1 -1
- package/dist/relay-web/assets/{gitGraphDiagram-IHSO6WYX-B5UVTBFv.js → gitGraphDiagram-IHSO6WYX-CZ58loEK.js} +1 -1
- package/dist/relay-web/assets/{index-C1RP74GA.js → index-Db1mAnox.js} +2 -2
- package/dist/relay-web/assets/{index-DHiqLPYx.css → index-PdfviQEl.css} +1 -1
- package/dist/relay-web/assets/{infoDiagram-FWYZ7A6U-CCs1X9nt.js → infoDiagram-FWYZ7A6U-_6e2VmD5.js} +1 -1
- package/dist/relay-web/assets/{ishikawaDiagram-FXEZZL3T-BBV39MwJ.js → ishikawaDiagram-FXEZZL3T-jpWD5WXM.js} +1 -1
- package/dist/relay-web/assets/{journeyDiagram-5HDEW3XC-VN3MWJ8o.js → journeyDiagram-5HDEW3XC-BsU5PN8d.js} +1 -1
- package/dist/relay-web/assets/{kanban-definition-HUTT4EX6-D0ndD0oS.js → kanban-definition-HUTT4EX6-DIeXOVEs.js} +1 -1
- package/dist/relay-web/assets/{linear-E_wMGu78.js → linear-mevdEDaE.js} +1 -1
- package/dist/relay-web/assets/{mermaid.core-ebOLt6VE.js → mermaid.core-DdA6Bw3-.js} +4 -4
- package/dist/relay-web/assets/{mindmap-definition-LN4V7U3C-C1aBhaiR.js → mindmap-definition-LN4V7U3C-BaZuxWaq.js} +1 -1
- package/dist/relay-web/assets/{pegDiagram-2B236MQR-BN4n0SLV.js → pegDiagram-2B236MQR-BX92_PMw.js} +1 -1
- package/dist/relay-web/assets/{pieDiagram-ENE6RG2P-BOIScL1G.js → pieDiagram-ENE6RG2P-BKAQcPIq.js} +1 -1
- package/dist/relay-web/assets/{quadrantDiagram-ABIIQ3AL-B436C8UL.js → quadrantDiagram-ABIIQ3AL-DHqqRjwi.js} +1 -1
- package/dist/relay-web/assets/{railroadDiagram-RFXS5EU6-D1rdvyw9.js → railroadDiagram-RFXS5EU6-DzkPRzrA.js} +1 -1
- package/dist/relay-web/assets/{requirementDiagram-TGXJPOKE-DPw3DhwM.js → requirementDiagram-TGXJPOKE-CFyAO1xx.js} +1 -1
- package/dist/relay-web/assets/{sankeyDiagram-HTMAVEWB-r7r8fG1U.js → sankeyDiagram-HTMAVEWB-DM7Zf1HL.js} +1 -1
- package/dist/relay-web/assets/{sequenceDiagram-DBY2YBRQ-qW1u0MxR.js → sequenceDiagram-DBY2YBRQ-CMRJNZib.js} +1 -1
- package/dist/relay-web/assets/{sizeCapture-X5ZJPWSS-hsaziX5X.js → sizeCapture-X5ZJPWSS-NgGCkPKU.js} +1 -1
- package/dist/relay-web/assets/{stateDiagram-2N3HPSRC-De9t_tXu.js → stateDiagram-2N3HPSRC-BUQyGlEc.js} +1 -1
- package/dist/relay-web/assets/stateDiagram-v2-6OUMAXLB-DYxfL5sV.js +1 -0
- package/dist/relay-web/assets/{swimlanes-5IMT3BWC-BypUrAJu.js → swimlanes-5IMT3BWC-BNKN-PEJ.js} +2 -2
- package/dist/relay-web/assets/swimlanesDiagram-G3AALYLV-D9u9FED2.js +8 -0
- package/dist/relay-web/assets/{theme-Bo1ZKGJd.js → theme-Tk52qQy4.js} +1 -1
- package/dist/relay-web/assets/{timeline-definition-FHXFAJF6-Dp7qIpCc.js → timeline-definition-FHXFAJF6-Y1G6Onqx.js} +1 -1
- package/dist/relay-web/assets/{vennDiagram-L72KCM5P-YR-o4U-7.js → vennDiagram-L72KCM5P-KFNhNaAU.js} +1 -1
- package/dist/relay-web/assets/{wardleyDiagram-EHGQE667-C4E3fOCx.js → wardleyDiagram-EHGQE667-CTbni3kb.js} +1 -1
- package/dist/relay-web/assets/{xychartDiagram-FW5EYKEG-OfLeW8ck.js → xychartDiagram-FW5EYKEG-CGJsYVtz.js} +1 -1
- package/dist/relay-web/index.html +2 -2
- package/dist/relay-web/sw.js +1 -1
- package/package.json +1 -1
- package/dist/relay-web/assets/channel-C1zHf7B0.js +0 -1
- package/dist/relay-web/assets/classDiagram-OUVF2IWQ-CYF1EKSs.js +0 -1
- package/dist/relay-web/assets/classDiagram-v2-EOCWNBFH-CYF1EKSs.js +0 -1
- package/dist/relay-web/assets/stateDiagram-v2-6OUMAXLB-CFIBT7ik.js +0 -1
- package/dist/relay-web/assets/swimlanesDiagram-G3AALYLV-Bkhs8WZx.js +0 -8
package/dist/cli.js
CHANGED
|
@@ -1085,14 +1085,17 @@ function boundField(v) {
|
|
|
1085
1085
|
}
|
|
1086
1086
|
function rpcSessionLocks(type, payload) {
|
|
1087
1087
|
const value = payload;
|
|
1088
|
-
if (type === MSG3.prompt
|
|
1089
|
-
return typeof value.sessionAlias === "string" && value.sessionAlias ? { alias: value.sessionAlias, lifecycle: false, turn:
|
|
1088
|
+
if (type === MSG3.prompt) {
|
|
1089
|
+
return typeof value.sessionAlias === "string" && value.sessionAlias ? { alias: value.sessionAlias, lifecycle: false, turn: "shared" } : undefined;
|
|
1090
|
+
}
|
|
1091
|
+
if (type === MSG3.commandExecute) {
|
|
1092
|
+
return typeof value.sessionAlias === "string" && value.sessionAlias ? { alias: value.sessionAlias, lifecycle: false, turn: "exclusive" } : undefined;
|
|
1090
1093
|
}
|
|
1091
1094
|
if (type === MSG3.sessionsRename) {
|
|
1092
|
-
return typeof value.alias === "string" && value.alias ? { alias: value.alias, lifecycle: true, turn:
|
|
1095
|
+
return typeof value.alias === "string" && value.alias ? { alias: value.alias, lifecycle: true, turn: "none" } : undefined;
|
|
1093
1096
|
}
|
|
1094
1097
|
if (type === MSG3.sessionsCreate || type === MSG3.sessionsRemove || type === MSG3.sessionsArchive || type === MSG3.sessionsUnarchive) {
|
|
1095
|
-
return typeof value.alias === "string" && value.alias ? { alias: value.alias, lifecycle: true, turn:
|
|
1098
|
+
return typeof value.alias === "string" && value.alias ? { alias: value.alias, lifecycle: true, turn: "exclusive" } : undefined;
|
|
1096
1099
|
}
|
|
1097
1100
|
return;
|
|
1098
1101
|
}
|
|
@@ -1118,13 +1121,71 @@ function createKeyedRpcLock() {
|
|
|
1118
1121
|
};
|
|
1119
1122
|
};
|
|
1120
1123
|
}
|
|
1124
|
+
function createKeyedRwLock() {
|
|
1125
|
+
const tails = new Map;
|
|
1126
|
+
const openShared = new Map;
|
|
1127
|
+
function setTail(key, tail) {
|
|
1128
|
+
tails.set(key, tail);
|
|
1129
|
+
tail.then(() => {
|
|
1130
|
+
if (tails.get(key) === tail)
|
|
1131
|
+
tails.delete(key);
|
|
1132
|
+
});
|
|
1133
|
+
}
|
|
1134
|
+
return {
|
|
1135
|
+
async acquireExclusive(key) {
|
|
1136
|
+
openShared.delete(key);
|
|
1137
|
+
const previous = tails.get(key) ?? Promise.resolve();
|
|
1138
|
+
let release;
|
|
1139
|
+
const held = new Promise((resolve) => {
|
|
1140
|
+
release = resolve;
|
|
1141
|
+
});
|
|
1142
|
+
setTail(key, previous.then(() => held));
|
|
1143
|
+
await previous;
|
|
1144
|
+
let released = false;
|
|
1145
|
+
return () => {
|
|
1146
|
+
if (released)
|
|
1147
|
+
return;
|
|
1148
|
+
released = true;
|
|
1149
|
+
release();
|
|
1150
|
+
};
|
|
1151
|
+
},
|
|
1152
|
+
async acquireShared(key) {
|
|
1153
|
+
let group = openShared.get(key);
|
|
1154
|
+
if (!group) {
|
|
1155
|
+
const previous = tails.get(key) ?? Promise.resolve();
|
|
1156
|
+
let settle;
|
|
1157
|
+
const settled = new Promise((resolve) => {
|
|
1158
|
+
settle = resolve;
|
|
1159
|
+
});
|
|
1160
|
+
group = { count: 0, settle, start: previous };
|
|
1161
|
+
openShared.set(key, group);
|
|
1162
|
+
setTail(key, previous.then(() => settled));
|
|
1163
|
+
}
|
|
1164
|
+
group.count += 1;
|
|
1165
|
+
const g = group;
|
|
1166
|
+
await g.start;
|
|
1167
|
+
let released = false;
|
|
1168
|
+
return () => {
|
|
1169
|
+
if (released)
|
|
1170
|
+
return;
|
|
1171
|
+
released = true;
|
|
1172
|
+
g.count -= 1;
|
|
1173
|
+
if (g.count === 0) {
|
|
1174
|
+
if (openShared.get(key) === g)
|
|
1175
|
+
openShared.delete(key);
|
|
1176
|
+
g.settle();
|
|
1177
|
+
}
|
|
1178
|
+
};
|
|
1179
|
+
}
|
|
1180
|
+
};
|
|
1181
|
+
}
|
|
1121
1182
|
function createApp(deps) {
|
|
1122
1183
|
const sessionTtlMs = deps.sessionTtlMs ?? 7 * 24 * 60 * 60 * 1000;
|
|
1123
1184
|
const pairingTtlMs = deps.pairingTtlMs ?? 10 * 60 * 1000;
|
|
1124
1185
|
const trustProxy = deps.trustProxy ?? false;
|
|
1125
1186
|
const now = deps.now ?? (() => new Date);
|
|
1126
1187
|
const acquireSessionLifecycleRpcLock = createKeyedRpcLock();
|
|
1127
|
-
const
|
|
1188
|
+
const sessionTurnRpcLock = createKeyedRwLock();
|
|
1128
1189
|
const loginFailures = new Map;
|
|
1129
1190
|
let globalFailures = { count: 0, windowStart: 0 };
|
|
1130
1191
|
function sweepPerIpLoginFailures(nowMs) {
|
|
@@ -1355,8 +1416,10 @@ function createApp(deps) {
|
|
|
1355
1416
|
if (sessionLocks.lifecycle) {
|
|
1356
1417
|
releaseSessionRpcLocks.push(await acquireSessionLifecycleRpcLock(key));
|
|
1357
1418
|
}
|
|
1358
|
-
if (sessionLocks.turn) {
|
|
1359
|
-
releaseSessionRpcLocks.push(await
|
|
1419
|
+
if (sessionLocks.turn === "shared") {
|
|
1420
|
+
releaseSessionRpcLocks.push(await sessionTurnRpcLock.acquireShared(key));
|
|
1421
|
+
} else if (sessionLocks.turn === "exclusive") {
|
|
1422
|
+
releaseSessionRpcLocks.push(await sessionTurnRpcLock.acquireExclusive(key));
|
|
1360
1423
|
}
|
|
1361
1424
|
}
|
|
1362
1425
|
if (body.type === MSG3.prompt || body.type === MSG3.commandExecute) {
|