pilotswarm 0.5.58 → 0.5.59
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/mcp/dist/src/context.d.ts +2 -0
- package/mcp/dist/src/context.d.ts.map +1 -1
- package/mcp/dist/src/context.js +3 -1
- package/mcp/dist/src/context.js.map +1 -1
- package/mcp/dist/src/tools/agent-packages.js +1 -1
- package/mcp/dist/src/tools/agent-packages.js.map +1 -1
- package/mcp/dist/src/tools/capabilities.d.ts +4 -0
- package/mcp/dist/src/tools/capabilities.d.ts.map +1 -1
- package/mcp/dist/src/tools/capabilities.js +4 -0
- package/mcp/dist/src/tools/capabilities.js.map +1 -1
- package/package.json +2 -2
- package/ui/core/src/controller.js +19 -7
- package/ui/core/src/formatting.js +18 -9
- package/ui/core/src/history.js +66 -24
- package/ui/core/src/reducer.js +32 -5
- package/ui/core/src/selectors.js +41 -52
- package/ui/core/src/session-errors.js +16 -11
- package/ui/react/src/components.js +1 -0
- package/ui/react/src/web-app.js +134 -127
- package/web/api/router.js +1 -1
- package/web/api/ws.js +43 -3
- package/web/authz.js +6 -1
- package/web/dist/assets/{abnfDiagram-VRR7QNED-CCTGbkH5.js → abnfDiagram-VRR7QNED-D9Rv2VpV.js} +1 -1
- package/web/dist/assets/{arc-w8Hl2ORd.js → arc-BATiucnq.js} +1 -1
- package/web/dist/assets/{architectureDiagram-ZJ3FMSHR-DAFM73jL.js → architectureDiagram-ZJ3FMSHR-CSTMt0si.js} +1 -1
- package/web/dist/assets/{blockDiagram-677ZJIJ3-BYfTQFe7.js → blockDiagram-677ZJIJ3-C_RGqfeY.js} +1 -1
- package/web/dist/assets/{c4Diagram-LMCZKHZV-bNF2gRsg.js → c4Diagram-LMCZKHZV-DH__s__0.js} +1 -1
- package/web/dist/assets/channel-CqgY9oZh.js +1 -0
- package/web/dist/assets/{chunk-2Q5K7J3B-DhqJnJ4W.js → chunk-2Q5K7J3B-C197fD3B.js} +1 -1
- package/web/dist/assets/{chunk-32BRIVSS-Jg1a6n_3.js → chunk-32BRIVSS-BjpuBroU.js} +1 -1
- package/web/dist/assets/{chunk-5VM5RSS4-y7NKpClZ.js → chunk-5VM5RSS4-W_jL8euj.js} +1 -1
- package/web/dist/assets/{chunk-EX3LRPZG-Lks3EhVc.js → chunk-EX3LRPZG-a9h0dtlp.js} +1 -1
- package/web/dist/assets/{chunk-JWPE2WC7-BjcSkfk2.js → chunk-JWPE2WC7-CQN0qE7F.js} +1 -1
- package/web/dist/assets/{chunk-MOJQB5TN-USDZsR-1.js → chunk-MOJQB5TN-D-Y6KQ7t.js} +1 -1
- package/web/dist/assets/{chunk-RYQCIY6F--HnsBTqS.js → chunk-RYQCIY6F-jPwseC5f.js} +1 -1
- package/web/dist/assets/{chunk-V7JOEXUC-CUql3Oy3.js → chunk-V7JOEXUC-DRNCEcQh.js} +1 -1
- package/web/dist/assets/{chunk-VR4S4FIN-CpS-l3FG.js → chunk-VR4S4FIN-DzhUcoZ7.js} +1 -1
- package/web/dist/assets/{chunk-XXDRQBXY-Bjb7ifTV.js → chunk-XXDRQBXY-ldJfyPXK.js} +1 -1
- package/web/dist/assets/classDiagram-OUVF2IWQ-Uz4DYZs2.js +1 -0
- package/web/dist/assets/classDiagram-v2-EOCWNBFH-Uz4DYZs2.js +1 -0
- package/web/dist/assets/{cose-bilkent-JH36ORCC-CmY3-Xrd.js → cose-bilkent-JH36ORCC-BBVo21wR.js} +1 -1
- package/web/dist/assets/{cynefin-VYW2F7L2-DVtcyDi5.js → cynefin-VYW2F7L2-CgRQfdW1.js} +1 -1
- package/web/dist/assets/{cynefinDiagram-TSTJHNR4-BPqkLecJ.js → cynefinDiagram-TSTJHNR4-Ckz2X0t3.js} +1 -1
- package/web/dist/assets/{dagre-VKFMJZFB-B73fSRpn.js → dagre-VKFMJZFB-C1SanJiY.js} +1 -1
- package/web/dist/assets/{diagram-FQU43EPY-uRCPZyuW.js → diagram-FQU43EPY-dBdEifVy.js} +1 -1
- package/web/dist/assets/{diagram-G47NLZAW-CHs_l9pw.js → diagram-G47NLZAW-Byqc1VCB.js} +1 -1
- package/web/dist/assets/{diagram-NH7WQ7WH-BDs35ueJ.js → diagram-NH7WQ7WH-9aeTaCsX.js} +1 -1
- package/web/dist/assets/{diagram-OA4YK3LP-Dsv48zWW.js → diagram-OA4YK3LP-CL0a0o0k.js} +1 -1
- package/web/dist/assets/{diagram-WEI45ONY-Bty-lxLj.js → diagram-WEI45ONY-YlMQOJfY.js} +1 -1
- package/web/dist/assets/{ebnfDiagram-CCIWWBDH-DgaxsuDg.js → ebnfDiagram-CCIWWBDH-qMZQEnws.js} +1 -1
- package/web/dist/assets/{erDiagram-Q63AITRT-CR6l4OsK.js → erDiagram-Q63AITRT-C3CWBCtq.js} +1 -1
- package/web/dist/assets/{flowDiagram-23GEKE2U-4y1ts4PX.js → flowDiagram-23GEKE2U-BN79sybL.js} +1 -1
- package/web/dist/assets/{ganttDiagram-NO4QXBWP-CyKdJ2e9.js → ganttDiagram-NO4QXBWP-BOWhiAgB.js} +1 -1
- package/web/dist/assets/{gitGraphDiagram-IHSO6WYX-Ct5ShF3i.js → gitGraphDiagram-IHSO6WYX-CKX9OACp.js} +1 -1
- package/web/dist/assets/{index-aFRNNWe9.js → index-B4s2lTsK.js} +5 -5
- package/web/dist/assets/index-DhGdE2Nd.css +1 -0
- package/web/dist/assets/{infoDiagram-FWYZ7A6U-uWoTXOM3.js → infoDiagram-FWYZ7A6U-QQEunPNs.js} +1 -1
- package/web/dist/assets/{ishikawaDiagram-FXEZZL3T-BTlDV_pc.js → ishikawaDiagram-FXEZZL3T-CvMwrnLQ.js} +1 -1
- package/web/dist/assets/{journeyDiagram-5HDEW3XC-_R-XB78s.js → journeyDiagram-5HDEW3XC-giNpEVpj.js} +1 -1
- package/web/dist/assets/{kanban-definition-HUTT4EX6-D7iwBjoS.js → kanban-definition-HUTT4EX6-CUPPpo27.js} +1 -1
- package/web/dist/assets/{linear-BugN16AP.js → linear-AXqadfOR.js} +1 -1
- package/web/dist/assets/{mermaid.core-De_KIbl-.js → mermaid.core-C78wdk8Y.js} +4 -4
- package/web/dist/assets/{mindmap-definition-LN4V7U3C-B72NDgcU.js → mindmap-definition-LN4V7U3C-BGUmh9bK.js} +1 -1
- package/web/dist/assets/{papaparse.min-BsD41u4P.js → papaparse.min-Bh8RLCk_.js} +1 -1
- package/web/dist/assets/{pegDiagram-2B236MQR-C6oifn4x.js → pegDiagram-2B236MQR-BHsKXKhK.js} +1 -1
- package/web/dist/assets/{pieDiagram-ENE6RG2P-Cpn0_Hp6.js → pieDiagram-ENE6RG2P-D3EvWTdH.js} +1 -1
- package/web/dist/assets/pilotswarm-UV6T1_QI.js +98 -0
- package/web/dist/assets/{quadrantDiagram-ABIIQ3AL-CJT4OoDA.js → quadrantDiagram-ABIIQ3AL-CbkxfLkV.js} +1 -1
- package/web/dist/assets/{railroadDiagram-RFXS5EU6-BKtBN8XC.js → railroadDiagram-RFXS5EU6-H4M6JSDW.js} +1 -1
- package/web/dist/assets/{requirementDiagram-TGXJPOKE-Dw7BCEzo.js → requirementDiagram-TGXJPOKE-BJo7JW1v.js} +1 -1
- package/web/dist/assets/{sankeyDiagram-HTMAVEWB-Avmr1rvJ.js → sankeyDiagram-HTMAVEWB-DL19MeOP.js} +1 -1
- package/web/dist/assets/{sequenceDiagram-DBY2YBRQ-BRNnslq1.js → sequenceDiagram-DBY2YBRQ-DyVFc5pQ.js} +1 -1
- package/web/dist/assets/{sizeCapture-X5ZJPWSS-BNmM8zTz.js → sizeCapture-X5ZJPWSS-CKbcKIEQ.js} +1 -1
- package/web/dist/assets/{stateDiagram-2N3HPSRC-CKXaP1Y6.js → stateDiagram-2N3HPSRC-BSukSXzS.js} +1 -1
- package/web/dist/assets/stateDiagram-v2-6OUMAXLB-BhKG3pJB.js +1 -0
- package/web/dist/assets/{swimlanes-5IMT3BWC-Dkeka0gO.js → swimlanes-5IMT3BWC-BUd7UhsF.js} +2 -2
- package/web/dist/assets/swimlanesDiagram-G3AALYLV-CgoFkXJE.js +8 -0
- package/web/dist/assets/{timeline-definition-FHXFAJF6-5hTTq-SL.js → timeline-definition-FHXFAJF6-Dt1gludn.js} +1 -1
- package/web/dist/assets/{vennDiagram-L72KCM5P-DL8MolqK.js → vennDiagram-L72KCM5P-BHxt00GV.js} +1 -1
- package/web/dist/assets/{wardleyDiagram-EHGQE667-CwGhy6eW.js → wardleyDiagram-EHGQE667-BT3fIDbe.js} +1 -1
- package/web/dist/assets/{xychartDiagram-FW5EYKEG-Dn4T-3Dx.js → xychartDiagram-FW5EYKEG-ChoYDS2b.js} +1 -1
- package/web/dist/index.html +3 -3
- package/web/runtime.js +81 -44
- package/web/server.js +1 -0
- package/web/dist/assets/channel-s4nVWOVf.js +0 -1
- package/web/dist/assets/classDiagram-OUVF2IWQ-tj8tRjww.js +0 -1
- package/web/dist/assets/classDiagram-v2-EOCWNBFH-tj8tRjww.js +0 -1
- package/web/dist/assets/index-DaRnh5NC.css +0 -1
- package/web/dist/assets/pilotswarm-9Szh1sEC.js +0 -99
- package/web/dist/assets/stateDiagram-v2-6OUMAXLB-Dr0juUsm.js +0 -1
- package/web/dist/assets/swimlanesDiagram-G3AALYLV-q-jLf0ZX.js +0 -8
|
@@ -73,6 +73,8 @@ interface ServerContextBase {
|
|
|
73
73
|
ownershipEnforced: boolean;
|
|
74
74
|
defaultVisibility: string;
|
|
75
75
|
systemVisibility: string;
|
|
76
|
+
adminScope?: string;
|
|
77
|
+
policyVersion?: number;
|
|
76
78
|
};
|
|
77
79
|
/** True when running over the Web API (`--api-url`); false in direct mode. */
|
|
78
80
|
webMode: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,gBAAgB,EAEhB,6BAA6B,EAS7B,qBAAqB,EAErB,cAAc,EACd,KAAK,uBAAuB,EAC5B,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,UAAU,EAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D;;;;;;;;GAQG;AACH,KAAK,UAAU,GACT;IACE;;;OAGG;IACH,GAAG,EAAE,SAAS,CAAC;IACf;;;;;OAKG;IACH,GAAG,EAAE,6BAA6B,CAAC;CACtC,GACC;IAAE,GAAG,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,IAAI,CAAA;CAAE,CAAC;AAE/B,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAAG,UAAU,CAAC;AAE3D,UAAU,iBAAiB;IACvB,MAAM,EAAE,gBAAgB,CAAC;IACzB;;;;OAIG;IACH,IAAI,EAAE,uBAAuB,CAAC;IAC9B,KAAK,EAAE,SAAS,CAAC;IACjB;;;;;OAKG;IACH,aAAa,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACxC;;;;;OAKG;IACH,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IACzB;;;;;;OAMG;IACH,KAAK,EAAE,OAAO,CAAC;IACf,oEAAoE;IACpE,SAAS,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IACnC;;;;;;OAMG;IACH,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE;QAAE,iBAAiB,EAAE,OAAO,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,gBAAgB,EAEhB,6BAA6B,EAS7B,qBAAqB,EAErB,cAAc,EACd,KAAK,uBAAuB,EAC5B,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,UAAU,EAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D;;;;;;;;GAQG;AACH,KAAK,UAAU,GACT;IACE;;;OAGG;IACH,GAAG,EAAE,SAAS,CAAC;IACf;;;;;OAKG;IACH,GAAG,EAAE,6BAA6B,CAAC;CACtC,GACC;IAAE,GAAG,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,IAAI,CAAA;CAAE,CAAC;AAE/B,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAAG,UAAU,CAAC;AAE3D,UAAU,iBAAiB;IACvB,MAAM,EAAE,gBAAgB,CAAC;IACzB;;;;OAIG;IACH,IAAI,EAAE,uBAAuB,CAAC;IAC9B,KAAK,EAAE,SAAS,CAAC;IACjB;;;;;OAKG;IACH,aAAa,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACxC;;;;;OAKG;IACH,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IACzB;;;;;;OAMG;IACH,KAAK,EAAE,OAAO,CAAC;IACf,oEAAoE;IACpE,SAAS,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IACnC;;;;;;OAMG;IACH,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE;QAAE,iBAAiB,EAAE,OAAO,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxI,8EAA8E;IAC9E,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACrC,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrE;;;;;;OAMG;IACH,gBAAgB,EAAE,WAAW,EAAE,CAAC;IAChC;;;;;OAKG;IACH,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B;;;;;OAKG;IACH,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,oBAAoB;IACjC,wFAAwF;IACxF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB;;;;OAIG;IACH,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;CACvC;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,aAAa,CAAC,CAmNtF"}
|
package/mcp/dist/src/context.js
CHANGED
|
@@ -10,7 +10,7 @@ export async function createContext(opts) {
|
|
|
10
10
|
let graph = null;
|
|
11
11
|
let admin = false;
|
|
12
12
|
let ctxRole = null;
|
|
13
|
-
let ctxAuthz = { ownershipEnforced: false, defaultVisibility: "private", systemVisibility: "read" };
|
|
13
|
+
let ctxAuthz = { ownershipEnforced: false, defaultVisibility: "private", systemVisibility: "read", adminScope: "unrestricted", policyVersion: 0 };
|
|
14
14
|
let webAgents = null;
|
|
15
15
|
if (opts.apiUrl) {
|
|
16
16
|
// Web API mode (supported): no database credentials in this process.
|
|
@@ -55,6 +55,8 @@ export async function createContext(opts) {
|
|
|
55
55
|
ownershipEnforced: Boolean(boot.authz.ownershipEnforced),
|
|
56
56
|
defaultVisibility: String(boot.authz.defaultVisibility || "private"),
|
|
57
57
|
systemVisibility: String(boot.authz.systemVisibility || "read"),
|
|
58
|
+
adminScope: String(boot.authz.adminScope || "unrestricted"),
|
|
59
|
+
policyVersion: Number(boot.authz.policyVersion) || 0,
|
|
58
60
|
};
|
|
59
61
|
}
|
|
60
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,gBAAgB,EAChB,0BAA0B,EAE1B,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAElB,UAAU,EACV,cAAc,GAKjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAqHnD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAA0B;IAC1D,IAAI,MAAwB,CAAC;IAC7B,IAAI,IAA6B,CAAC;IAClC,gEAAgE;IAChE,IAAI,OAAO,GAAe,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IACnD,IAAI,KAAgB,CAAC;IACrB,IAAI,KAAK,GAAsB,IAAI,CAAC;IACpC,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,OAAO,GAAkB,IAAI,CAAC;IAClC,IAAI,QAAQ,GAAG,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,7 @@ export function registerAgentPackageTools(server, ctx) {
|
|
|
18
18
|
server.registerTool("list_agent_packages", {
|
|
19
19
|
title: "List Agent Packages",
|
|
20
20
|
description: "List registry agent packages visible to this credential: shared packages plus your own "
|
|
21
|
-
+ "user-scope ones (admins see all). Each row carries the active version (semver, sha, size) "
|
|
21
|
+
+ "user-scope ones (unrestricted admins see all; cluster-scoped admins use ordinary access). Each row carries the active version (semver, sha, size) "
|
|
22
22
|
+ "and its manifest (agents/skills/tools).",
|
|
23
23
|
inputSchema: {},
|
|
24
24
|
}, withToolErrors(async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-packages.js","sourceRoot":"","sources":["../../../src/tools/agent-packages.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE7E;;;;;;;;;GASG;AACH,MAAM,UAAU,yBAAyB,CAAC,MAAiB,EAAE,GAAkB;IAC3E,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;IACpB,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,KAAK,KAAK;QAAE,OAAO;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC;IAEnB,MAAM,CAAC,YAAY,CACf,qBAAqB,EACrB;QACI,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EACP,yFAAyF;cACvF,
|
|
1
|
+
{"version":3,"file":"agent-packages.js","sourceRoot":"","sources":["../../../src/tools/agent-packages.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE7E;;;;;;;;;GASG;AACH,MAAM,UAAU,yBAAyB,CAAC,MAAiB,EAAE,GAAkB;IAC3E,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;IACpB,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,KAAK,KAAK;QAAE,OAAO;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC;IAEnB,MAAM,CAAC,YAAY,CACf,qBAAqB,EACrB;QACI,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EACP,yFAAyF;cACvF,oJAAoJ;cACpJ,yCAAyC;QAC/C,WAAW,EAAE,EAAE;KAClB,EACD,cAAc,CAAC,KAAK,IAAI,EAAE;QACtB,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QACpE,OAAO,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1F,CAAC,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,YAAY,CACf,mBAAmB,EACnB;QACI,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,oGAAoG;QACjH,WAAW,EAAE;YACT,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;YAChD,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4DAA4D,CAAC;YAC3G,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;YAChF,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+EAA+E,CAAC;SACzI;KACJ,EACD,cAAc,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;QAC3D,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC3E,IAAI,CAAC,MAAM;YAAE,OAAO,WAAW,CAAC,YAAY,IAAI,mCAAmC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/F,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;QACpC,IAAI,MAAM;YAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACxC,IAAI,KAAK;YAAE,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,MAAM,MAAM,GAA4B;YACpC,OAAO,EAAE,MAAM;YACf,YAAY,EAAE,0BAA0B,kBAAkB,CAAC,IAAI,CAAC,YAAY,MAAM,EAAE;SACvF,CAAC;QACF,IAAI,YAAY,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,IAAI,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAClG,CAAC;QACD,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,YAAY,CACf,wBAAwB,EACxB;QACI,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EAAE,oIAAoI;QACjJ,WAAW,EAAE;YACT,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;YAChD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,6DAA6D,CAAC;YACpG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;YACnE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;SACnG;KACJ,EACD,cAAc,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;QACxD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAC3C,IAAI,EAAE,MAAM,IAAI,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAC9E,CAAC;QACF,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC,CACL,CAAC;IAEF,IAAI,GAAG,CAAC,SAAS,KAAK,MAAM;QAAE,OAAO;IAErC,MAAM,CAAC,YAAY,CACf,oBAAoB,EACpB;QACI,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EACP,yFAAyF;cACvF,4FAA4F;cAC5F,yFAAyF;cACzF,yFAAyF;cACzF,mDAAmD;QACzD,WAAW,EAAE;YACT,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;gBACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;aAC7B,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,mDAAmD,CAAC;YACxE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;SACrF;KACJ,EACD,cAAc,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;QACtC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAC7C,KAAK,CAAC,GAAG,CAAC,CAAC,CAA2C,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,EAC/G,KAAK,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CACpC,CAAC;QACF,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,YAAY,CACf,yBAAyB,EACzB;QACI,KAAK,EAAE,gCAAgC;QACvC,WAAW,EAAE,4HAA4H;QACzI,WAAW,EAAE;YACT,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACvB,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;SACpC;KACJ,EACD,cAAc,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;QACrC,MAAM,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QACnE,OAAO,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACjD,CAAC,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,YAAY,CACf,iCAAiC,EACjC;QACI,KAAK,EAAE,+CAA+C;QACtD,WAAW,EACP,4FAA4F;cAC1F,6FAA6F;cAC7F,yEAAyE;QAC/E,WAAW,EAAE;YACT,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACvB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4DAA4D,CAAC;YACpG,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,4EAA4E,CAAC;YAC/H,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;YACpG,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;SACrG;KACJ,EACD,cAAc,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,EAAE,EAAE;QACnF,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,4BAA4B,CACvD,IAAI,EAAE,MAAM,IAAI,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE;YAClD,QAAQ,EAAE,cAAc,IAAI,aAAa;gBACrC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE;gBACjE,CAAC,CAAC,IAAI;SACb,CACJ,CAAC;QACF,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,YAAY,CACf,2BAA2B,EAC3B;QACI,KAAK,EAAE,2BAA2B;QAClC,WAAW,EAAE,iIAAiI;QAC9I,WAAW,EAAE;YACT,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACvB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACzB,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sFAAsF,CAAC;SAChJ;KACJ,EACD,cAAc,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;QAC7C,MAAM,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAChG,OAAO,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACvF,CAAC,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,YAAY,CACf,2BAA2B,EAC3B;QACI,KAAK,EAAE,gCAAgC;QACvC,WAAW,EAAE,+JAA+J;QAC5K,WAAW,EAAE;YACT,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACvB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;YACpB,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+EAA+E,CAAC;SACzI;KACJ,EACD,cAAc,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;QAC9C,MAAM,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACjG,OAAO,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAChF,CAAC,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,YAAY,CACf,sBAAsB,EACtB;QACI,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EAAE,gKAAgK;QAC7K,WAAW,EAAE;YACT,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACvB,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,uDAAuD,CAAC;YAC1F,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iGAAiG,CAAC;SAC3J;KACJ,EACD,cAAc,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;QACrC,MAAM,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACpF,OAAO,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAChF,CAAC,CAAC,CACL,CAAC;IAEF,sEAAsE;IACtE,MAAM,UAAU,GAAG;QACf,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oDAAoD,CAAC;QAC1F,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,6CAA6C,CAAC;KACrF,CAAC;IAEF,MAAM,CAAC,YAAY,CACf,4BAA4B,EAC5B;QACI,KAAK,EAAE,4BAA4B;QACnC,WAAW,EACP,8FAA8F;cAC5F,6FAA6F;cAC7F,kFAAkF;cAClF,sCAAsC;QAC5C,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,EAAE;KAC1D,EACD,cAAc,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QACjD,MAAM,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QACtF,OAAO,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;IACzE,CAAC,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,YAAY,CACf,6BAA6B,EAC7B;QACI,KAAK,EAAE,6BAA6B;QACpC,WAAW,EAAE,+EAA+E;QAC5F,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,EAAE;KAC1D,EACD,cAAc,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QACjD,MAAM,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QACvF,OAAO,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;IAC1E,CAAC,CAAC,CACL,CAAC;IAEF,MAAM,CAAC,YAAY,CACf,4BAA4B,EAC5B;QACI,KAAK,EAAE,4BAA4B;QACnC,WAAW,EAAE,qFAAqF;QAClG,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;KAC3C,EACD,cAAc,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QAC9B,OAAO,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvF,CAAC,CAAC,CACL,CAAC;AACN,CAAC"}
|
|
@@ -14,6 +14,10 @@ export declare function buildCapabilities(ctx: ServerContext): {
|
|
|
14
14
|
admin: boolean;
|
|
15
15
|
role: string | null;
|
|
16
16
|
ownership_enforced: boolean;
|
|
17
|
+
admin_scope: string;
|
|
18
|
+
authz_policy_version: number;
|
|
19
|
+
user_resource_bypass: boolean;
|
|
20
|
+
system_session_admin: boolean;
|
|
17
21
|
default_visibility: string;
|
|
18
22
|
viewerScopedGroups: boolean;
|
|
19
23
|
facts: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../../src/tools/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGnD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,aAAa
|
|
1
|
+
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../../src/tools/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGnD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,aAAa;;;;;;;;;;;;;;;;;;;;;;;;EAsCnD;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,QA0C5E"}
|
|
@@ -19,6 +19,10 @@ export function buildCapabilities(ctx) {
|
|
|
19
19
|
// refused with the reason in the error.
|
|
20
20
|
role: ctx.role ?? null,
|
|
21
21
|
ownership_enforced: ctx.authz?.ownershipEnforced ?? false,
|
|
22
|
+
admin_scope: ctx.authz?.adminScope ?? "unrestricted",
|
|
23
|
+
authz_policy_version: ctx.authz?.policyVersion ?? 0,
|
|
24
|
+
user_resource_bypass: ctx.admin && ctx.authz?.adminScope !== "cluster",
|
|
25
|
+
system_session_admin: ctx.admin,
|
|
22
26
|
default_visibility: ctx.authz?.defaultVisibility ?? "private",
|
|
23
27
|
// Session groups are private per-user organization: list_session_groups
|
|
24
28
|
// returns only the caller's groups, session views carry viewer_group_id
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../../src/tools/capabilities.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../../src/tools/capabilities.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pilotswarm",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.59",
|
|
4
4
|
"description": "PilotSwarm application package: terminal UI, browser portal + Web API server, and MCP server — one install, three bins.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"ink": "^6.8.0",
|
|
82
82
|
"jose": "^6.2.2",
|
|
83
83
|
"mermaid": "^11.16.0",
|
|
84
|
-
"pilotswarm-sdk": "0.5.
|
|
84
|
+
"pilotswarm-sdk": "0.5.59",
|
|
85
85
|
"react": "^19.2.4",
|
|
86
86
|
"react-dom": "^19.2.4",
|
|
87
87
|
"ws": "^8.18.2"
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
} from "./history.js";
|
|
15
15
|
import { applySessionUsageEvent, cloneContextUsageSnapshot } from "./context-usage.js";
|
|
16
16
|
import { validateCanvasAction, formatCanvasActionPrompt, createCanvasActionLimiter } from "./canvas-actions.js";
|
|
17
|
-
import {
|
|
17
|
+
import { shouldKeepSessionWarning } from "./session-errors.js";
|
|
18
18
|
import {
|
|
19
19
|
computeLegacyLayout,
|
|
20
20
|
getBaseSessionPaneHeight,
|
|
@@ -164,12 +164,12 @@ function classifyNavigationLoadError(error) {
|
|
|
164
164
|
}
|
|
165
165
|
|
|
166
166
|
// A 404/NOT_FOUND on a per-session data loop is TERMINAL: the session was
|
|
167
|
-
// deleted
|
|
168
|
-
//
|
|
167
|
+
// deleted or no longer accessible. A permission denial must clear retained
|
|
168
|
+
// content; network/server failures remain retryable.
|
|
169
169
|
function isSessionGoneError(error) {
|
|
170
170
|
const status = Number(error?.status);
|
|
171
171
|
const code = String(error?.code || "").toUpperCase();
|
|
172
|
-
return status === 404 || code === "NOT_FOUND";
|
|
172
|
+
return status === 404 || status === 403 || code === "NOT_FOUND" || code === "FORBIDDEN";
|
|
173
173
|
}
|
|
174
174
|
|
|
175
175
|
async function loadSessionCatalogPageWindow(transport) {
|
|
@@ -423,7 +423,7 @@ function buildSessionMergePatch(previousSession, nextSession) {
|
|
|
423
423
|
patch.waitReason = null;
|
|
424
424
|
changed = true;
|
|
425
425
|
}
|
|
426
|
-
if (
|
|
426
|
+
if (shouldKeepSessionWarning(previousSession, nextSession)) {
|
|
427
427
|
if (patch.error !== previousSession.error) {
|
|
428
428
|
patch.error = previousSession.error;
|
|
429
429
|
changed = true;
|
|
@@ -2550,6 +2550,8 @@ export class PilotSwarmUiController {
|
|
|
2550
2550
|
// A folder row can never be "gone" from the session catalog: it is not
|
|
2551
2551
|
// a session. Only sessions/groupsLoaded may remove one.
|
|
2552
2552
|
if (isSessionGroupRowId(sessionId)) return;
|
|
2553
|
+
// An older in-flight catalog read must not undo an access revocation.
|
|
2554
|
+
this.sessionRefreshSeq = (this.sessionRefreshSeq || 0) + 1;
|
|
2553
2555
|
if (this.activeSessionSubscriptionId === sessionId) {
|
|
2554
2556
|
this.detachActiveSession();
|
|
2555
2557
|
}
|
|
@@ -5745,6 +5747,10 @@ export class PilotSwarmUiController {
|
|
|
5745
5747
|
|
|
5746
5748
|
mergeSessionEvent(sessionId, event) {
|
|
5747
5749
|
if (!sessionId || !event) return false;
|
|
5750
|
+
if (event.eventType === "session.access_revoked") {
|
|
5751
|
+
this.handleSessionGone(sessionId);
|
|
5752
|
+
return true;
|
|
5753
|
+
}
|
|
5748
5754
|
// Plane-synthesized canvas events are TRANSIENT: they update canvas
|
|
5749
5755
|
// state and nothing else. They carry no seq — letting them into
|
|
5750
5756
|
// history would corrupt the replay cursor — and they must never
|
|
@@ -9649,10 +9655,16 @@ export class PilotSwarmUiController {
|
|
|
9649
9655
|
...(olderHistory.events || []),
|
|
9650
9656
|
...(history?.events || []),
|
|
9651
9657
|
];
|
|
9658
|
+
// A page can split an assistant message from its turn
|
|
9659
|
+
// boundary. Reclassify the combined durable window while
|
|
9660
|
+
// retaining this visit's preview identity and reasoning.
|
|
9661
|
+
const existingChatById = new Map((history?.chat || []).map((item) => [item.id, item]));
|
|
9662
|
+
const combinedHistory = buildHistoryModel(combinedEvents, { requestedLimit: combinedEvents.length });
|
|
9652
9663
|
history = {
|
|
9664
|
+
...history,
|
|
9653
9665
|
chat: dedupeChatMessages([
|
|
9654
|
-
...
|
|
9655
|
-
...(history?.chat || []),
|
|
9666
|
+
...combinedHistory.chat.map((item) => ({ ...existingChatById.get(item.id), ...item })),
|
|
9667
|
+
...(history?.chat || []).filter((item) => item.liveTurn || item.optimistic),
|
|
9656
9668
|
]),
|
|
9657
9669
|
activity: [
|
|
9658
9670
|
...(olderHistory.activity || []),
|
|
@@ -617,7 +617,9 @@ export function extractHttpLinks(source = "") {
|
|
|
617
617
|
.filter((token) => token.href);
|
|
618
618
|
}
|
|
619
619
|
|
|
620
|
-
function parseInlineMarkdownRuns(source) {
|
|
620
|
+
function parseInlineMarkdownRuns(source, depth = 0) {
|
|
621
|
+
// Keep pathological model output from exhausting the JS call stack.
|
|
622
|
+
if (depth >= 32) return [{ text: String(source || ""), color: null, bold: false, underline: false }];
|
|
621
623
|
const tokens = tokenizeInlineMarkdown(source);
|
|
622
624
|
const runs = [];
|
|
623
625
|
|
|
@@ -626,12 +628,16 @@ function parseInlineMarkdownRuns(source) {
|
|
|
626
628
|
pushTextRun(runs, token.text, { color: "cyan" });
|
|
627
629
|
continue;
|
|
628
630
|
}
|
|
629
|
-
if (token.type === "strong") {
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
631
|
+
if (token.type === "strong" || token.type === "em") {
|
|
632
|
+
// Emphasis may contain links (e.g. **[Download](artifact://...)**).
|
|
633
|
+
// Preserve their href so the portal can render its artifact card;
|
|
634
|
+
// flattening token.text here leaves raw Markdown in the transcript.
|
|
635
|
+
for (const run of parseInlineMarkdownRuns(token.text, depth + 1)) {
|
|
636
|
+
pushTextRun(runs, run.text, {
|
|
637
|
+
...run,
|
|
638
|
+
...(token.type === "strong" ? { bold: true } : { underline: true }),
|
|
639
|
+
});
|
|
640
|
+
}
|
|
635
641
|
continue;
|
|
636
642
|
}
|
|
637
643
|
if (token.type === "link") {
|
|
@@ -1050,7 +1056,9 @@ export function parseMarkdownLines(input, options = {}) {
|
|
|
1050
1056
|
|
|
1051
1057
|
const headingMatch = /^(#{1,6})\s+(.*)$/.exec(rawLine);
|
|
1052
1058
|
if (headingMatch) {
|
|
1053
|
-
lines.push(
|
|
1059
|
+
lines.push(parseInlineMarkdownRuns(headingMatch[2]).map((run) => ({
|
|
1060
|
+
...run, color: run.color || "white", bold: true,
|
|
1061
|
+
})));
|
|
1054
1062
|
continue;
|
|
1055
1063
|
}
|
|
1056
1064
|
|
|
@@ -1106,6 +1114,7 @@ export function buildMessageCardLines({
|
|
|
1106
1114
|
bodyColor = null,
|
|
1107
1115
|
fitToContent = false,
|
|
1108
1116
|
tableMode = null,
|
|
1117
|
+
cardKey = null,
|
|
1109
1118
|
} = {}) {
|
|
1110
1119
|
const maxWidth = Math.max(fitToContent ? 12 : 20, Number(width) || (fitToContent ? 12 : 20));
|
|
1111
1120
|
const maxContentWidth = Math.max(1, maxWidth - 4);
|
|
@@ -1130,7 +1139,7 @@ export function buildMessageCardLines({
|
|
|
1130
1139
|
: lineRuns))
|
|
1131
1140
|
: sentinelBodyLines;
|
|
1132
1141
|
return [
|
|
1133
|
-
{ kind: "cardStart", runs: titleRuns, borderColor },
|
|
1142
|
+
{ kind: "cardStart", runs: titleRuns, borderColor, ...(cardKey ? { cardKey } : {}) },
|
|
1134
1143
|
...sentinelTinted,
|
|
1135
1144
|
{ kind: "cardEnd" },
|
|
1136
1145
|
[{ text: "", color: null }],
|
package/ui/core/src/history.js
CHANGED
|
@@ -18,6 +18,10 @@ export const HISTORY_EVENT_LIMIT_STEPS = [
|
|
|
18
18
|
export const CHAT_HISTORY_EVENT_TYPES = [
|
|
19
19
|
"user.message",
|
|
20
20
|
"assistant.message",
|
|
21
|
+
// Needed to distinguish interim assistant output from the final answer
|
|
22
|
+
// when an older transcript page is loaded.
|
|
23
|
+
"session.turn_completed",
|
|
24
|
+
"session.turn_stopped",
|
|
21
25
|
"system.message",
|
|
22
26
|
// Session regeneration boundary — rendered as an inline epoch divider in
|
|
23
27
|
// the transcript, so it must survive backward chat-history paging.
|
|
@@ -246,14 +250,18 @@ function comparableMessageText(message) {
|
|
|
246
250
|
export function parseAskedAndAnsweredExchange(text) {
|
|
247
251
|
const source = String(text || "").replace(/\r\n/g, "\n").trim();
|
|
248
252
|
const prefix = 'The user was asked: "';
|
|
249
|
-
const marker = '"\nThe user responded: "';
|
|
250
|
-
|
|
251
253
|
if (!source.startsWith(prefix) || !source.endsWith('"')) return null;
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
const
|
|
254
|
+
// Multi-writer sessions include the answering participant in the runtime
|
|
255
|
+
// wrapper. This is still an agent question followed by a human answer,
|
|
256
|
+
// not a human-authored copy of the entire question. Identity comes from
|
|
257
|
+
// the event's sender metadata, never from this display-only wrapper.
|
|
258
|
+
const marker = /"\nThe user responded(?: \(answered by [^\r\n]+?\))?: "/g;
|
|
259
|
+
marker.lastIndex = prefix.length;
|
|
260
|
+
const match = marker.exec(source);
|
|
261
|
+
if (!match) return null;
|
|
262
|
+
|
|
263
|
+
const question = source.slice(prefix.length, match.index);
|
|
264
|
+
const answer = source.slice(marker.lastIndex, -1);
|
|
257
265
|
if (!question.trim() || !answer.trim()) return null;
|
|
258
266
|
return { question, answer };
|
|
259
267
|
}
|
|
@@ -395,6 +403,11 @@ function sharesClientMessageId(left, right) {
|
|
|
395
403
|
function areMessagesEquivalent(left, right) {
|
|
396
404
|
if (!left || !right) return false;
|
|
397
405
|
if (left.role !== right.role) return false;
|
|
406
|
+
// Identical text in separate model messages still represents separate
|
|
407
|
+
// preview slots (and one may later become the final answer).
|
|
408
|
+
if (left.role === "assistant" && left.messageId && right.messageId) {
|
|
409
|
+
return left.messageId === right.messageId;
|
|
410
|
+
}
|
|
398
411
|
// Canvas revision lines are platform-minted, exactly-once (one durable
|
|
399
412
|
// event per rev), and share identical text by design (the artifact://
|
|
400
413
|
// link) — the redelivery time-window below would eat rev N-1 on every
|
|
@@ -533,9 +546,10 @@ function buildChatMessage(event, role) {
|
|
|
533
546
|
const messageId = typeof event?.data?.messageId === "string" && event.data.messageId
|
|
534
547
|
? event.data.messageId
|
|
535
548
|
: null;
|
|
549
|
+
const chatRole = deriveChatRole(event, role, text);
|
|
536
550
|
return {
|
|
537
551
|
id: `${event.sessionId}:${event.seq}`,
|
|
538
|
-
role:
|
|
552
|
+
role: chatRole,
|
|
539
553
|
text,
|
|
540
554
|
time: formatTimestamp(event.createdAt),
|
|
541
555
|
createdAt: event.createdAt instanceof Date ? event.createdAt.getTime() : new Date(event.createdAt).getTime(),
|
|
@@ -543,9 +557,38 @@ function buildChatMessage(event, role) {
|
|
|
543
557
|
...(sender ? { sender } : {}),
|
|
544
558
|
...(attachments.length > 0 ? { attachments } : {}),
|
|
545
559
|
...(messageId ? { messageId } : {}),
|
|
560
|
+
...(chatRole === "assistant" ? {
|
|
561
|
+
assistantPreview: true,
|
|
562
|
+
responsePending: true,
|
|
563
|
+
responseFinal: false,
|
|
564
|
+
responseCanFinalize: !event?.data?.parentToolCallId && !event?.data?.toolRequests?.length,
|
|
565
|
+
...(typeof event?.data?.reasoningText === "string" && event.data.reasoningText
|
|
566
|
+
? { liveReasoningText: event.data.reasoningText } : {}),
|
|
567
|
+
} : {}),
|
|
546
568
|
};
|
|
547
569
|
}
|
|
548
570
|
|
|
571
|
+
// A saved assistant.message is not necessarily the answer: a single runTurn
|
|
572
|
+
// can contain many tool-loop utterances. Only its successful durable boundary
|
|
573
|
+
// promotes the last eligible message. Use the same rule for replay and append.
|
|
574
|
+
function settleAssistantResponses(chat, event) {
|
|
575
|
+
const resultType = event?.data?.resultType || event?.data?.result;
|
|
576
|
+
const successful = event?.eventType === "session.turn_completed"
|
|
577
|
+
&& (!resultType || resultType === "completed");
|
|
578
|
+
let finalIndex = -1;
|
|
579
|
+
for (let index = chat.length - 1; index >= 0; index -= 1) {
|
|
580
|
+
if (chat[index]?.responsePending) {
|
|
581
|
+
if (successful && chat[index].responseCanFinalize) finalIndex = index;
|
|
582
|
+
break;
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
for (let index = 0; index < chat.length; index += 1) {
|
|
586
|
+
if (chat[index]?.responsePending) chat[index] = {
|
|
587
|
+
...chat[index], responsePending: false, responseFinal: index === finalIndex,
|
|
588
|
+
};
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
|
|
549
592
|
/** Apply one transient `turn` topic snapshot without touching durable events/seq. */
|
|
550
593
|
export function applyLiveTurnToHistory(history, payload, meta = {}) {
|
|
551
594
|
if (!payload) return history;
|
|
@@ -1168,6 +1211,9 @@ export function buildHistoryModel(events = [], options = {}) {
|
|
|
1168
1211
|
|
|
1169
1212
|
for (const event of events) {
|
|
1170
1213
|
storedEvents.push(event);
|
|
1214
|
+
if (["user.message", "session.turn_completed", "session.turn_stopped", "session.epoch_committed"].includes(event.eventType)) {
|
|
1215
|
+
settleAssistantResponses(chat, event);
|
|
1216
|
+
}
|
|
1171
1217
|
if (event.eventType === "user.message") {
|
|
1172
1218
|
activity.push(...buildEmbeddedSystemNoticeActivityItems(event, "user"));
|
|
1173
1219
|
const message = buildChatMessage(event, "user");
|
|
@@ -1262,6 +1308,10 @@ export function appendEventToHistory(history, event) {
|
|
|
1262
1308
|
stoppedMessageIds: Array.isArray(history?.stoppedMessageIds) ? history.stoppedMessageIds : [],
|
|
1263
1309
|
};
|
|
1264
1310
|
|
|
1311
|
+
if (["user.message", "session.turn_completed", "session.turn_stopped", "session.epoch_committed"].includes(event.eventType)) {
|
|
1312
|
+
settleAssistantResponses(next.chat, event);
|
|
1313
|
+
}
|
|
1314
|
+
|
|
1265
1315
|
// A stopped turn leaves a durable session.turn_stopped carrying the
|
|
1266
1316
|
// interrupted prompt's clientMessageIds. Record them and retroactively
|
|
1267
1317
|
// flag any matching transcript message (the user.message usually lands
|
|
@@ -1331,22 +1381,14 @@ export function appendEventToHistory(history, event) {
|
|
|
1331
1381
|
if (liveIndex >= 0) {
|
|
1332
1382
|
const settledAt = Date.now();
|
|
1333
1383
|
const liveStartedAt = Number(liveItem?.liveStartedAt || liveItem?.createdAt) || settledAt;
|
|
1334
|
-
|
|
1335
|
-
//
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
streamSettling: true,
|
|
1343
|
-
liveKey: liveItem?.liveKey || message.messageId,
|
|
1344
|
-
liveStartedAt,
|
|
1345
|
-
liveReasoningText: liveItem?.reasoningText || "",
|
|
1346
|
-
streamSettleDelayMs,
|
|
1347
|
-
streamSettleAt: settledAt + streamSettleDelayMs + 180,
|
|
1348
|
-
});
|
|
1349
|
-
}
|
|
1384
|
+
// Keep the disclosure identity even for short streams. Committing
|
|
1385
|
+
// an interim message must not reset expansion or its scroll box.
|
|
1386
|
+
Object.assign(message, {
|
|
1387
|
+
streamSettling: true,
|
|
1388
|
+
liveKey: liveItem?.liveKey || message.messageId,
|
|
1389
|
+
liveStartedAt,
|
|
1390
|
+
liveReasoningText: message.liveReasoningText || liveItem?.reasoningText || "",
|
|
1391
|
+
});
|
|
1350
1392
|
next.chat.splice(Math.min(liveIndex, next.chat.length), 0, message);
|
|
1351
1393
|
}
|
|
1352
1394
|
else next.chat.push(message);
|
package/ui/core/src/reducer.js
CHANGED
|
@@ -817,6 +817,9 @@ function normalizePromptAttachments(prompt, attachments) {
|
|
|
817
817
|
}
|
|
818
818
|
|
|
819
819
|
export function appReducer(state, action) {
|
|
820
|
+
const sessionId = action.sessionId ?? action.session?.sessionId;
|
|
821
|
+
const contentUpdate = /^(history|files|canvas|orchestration|executionHistory|sessionStats|outbox)\//.test(action.type) || action.type === "sessions/merged";
|
|
822
|
+
if (sessionId && contentUpdate && state.sessions?.goneIds?.includes(sessionId)) return state;
|
|
820
823
|
const next = baseReducer(state, action);
|
|
821
824
|
if (next === state) return next;
|
|
822
825
|
return reconcileSessionView(state, next, action);
|
|
@@ -1567,7 +1570,10 @@ function baseReducer(state, action) {
|
|
|
1567
1570
|
if (!goneId) return state;
|
|
1568
1571
|
const hadRow = Boolean(state.sessions.byId[goneId]);
|
|
1569
1572
|
const wasActive = state.sessions.activeSessionId === goneId;
|
|
1570
|
-
|
|
1573
|
+
const hadContent = state.history.bySessionId.has(goneId)
|
|
1574
|
+
|| [state.files, state.canvas, state.orchestration, state.executionHistory, state.outbox, state.sessionStats]
|
|
1575
|
+
.some((slice) => Object.hasOwn(slice?.bySessionId || {}, goneId));
|
|
1576
|
+
if (!hadRow && !wasActive && !hadContent) return state;
|
|
1571
1577
|
const evictedById = { ...state.sessions.byId };
|
|
1572
1578
|
delete evictedById[goneId];
|
|
1573
1579
|
// Re-derive: the evicted row may have been the running CHILD that
|
|
@@ -1578,13 +1584,29 @@ function baseReducer(state, action) {
|
|
|
1578
1584
|
const selectedIds = Array.isArray(state.sessions.selectedIds)
|
|
1579
1585
|
? state.sessions.selectedIds.filter((id) => id !== goneId)
|
|
1580
1586
|
: state.sessions.selectedIds;
|
|
1581
|
-
|
|
1582
|
-
|
|
1587
|
+
const history = new Map(state.history.bySessionId);
|
|
1588
|
+
history.delete(goneId);
|
|
1589
|
+
const discard = (slice) => {
|
|
1590
|
+
if (!slice?.bySessionId) return slice;
|
|
1591
|
+
const bySessionId = { ...slice.bySessionId };
|
|
1592
|
+
delete bySessionId[goneId];
|
|
1593
|
+
return { ...slice, bySessionId };
|
|
1594
|
+
};
|
|
1595
|
+
return {
|
|
1596
|
+
...state,
|
|
1597
|
+
history: { ...state.history, bySessionId: history },
|
|
1598
|
+
files: discard(state.files),
|
|
1599
|
+
orchestration: discard(state.orchestration),
|
|
1600
|
+
executionHistory: discard(state.executionHistory),
|
|
1601
|
+
canvas: discard(state.canvas),
|
|
1602
|
+
outbox: discard(state.outbox),
|
|
1603
|
+
sessionStats: discard(state.sessionStats),
|
|
1583
1604
|
sessions: {
|
|
1584
1605
|
...state.sessions,
|
|
1585
1606
|
byId,
|
|
1586
1607
|
selectedIds,
|
|
1587
1608
|
activeSessionId: wasActive ? null : state.sessions.activeSessionId,
|
|
1609
|
+
goneIds: [...new Set([...(state.sessions.goneIds || []), goneId])].slice(-1000),
|
|
1588
1610
|
},
|
|
1589
1611
|
};
|
|
1590
1612
|
}
|
|
@@ -1681,6 +1703,7 @@ function baseReducer(state, action) {
|
|
|
1681
1703
|
const nextSessions = {
|
|
1682
1704
|
...state.sessions,
|
|
1683
1705
|
byId: rowStatusById,
|
|
1706
|
+
goneIds: (state.sessions.goneIds || []).filter((id) => !action.sessions.some((row) => row.sessionId === id)),
|
|
1684
1707
|
collapsedIds,
|
|
1685
1708
|
collapsedIdsExplicit: previousCollapsedIdsExplicit,
|
|
1686
1709
|
listingSeen: true,
|
|
@@ -2940,7 +2963,10 @@ function baseReducer(state, action) {
|
|
|
2940
2963
|
const list = Array.isArray(action.list) ? action.list : [];
|
|
2941
2964
|
// Keep the selection when the package still exists; otherwise clear
|
|
2942
2965
|
// the dependent detail/workspace state with it.
|
|
2943
|
-
const
|
|
2966
|
+
const selector = previous.selectedSelector;
|
|
2967
|
+
const stillThere = previous.selectedName && list.some((p) => p.name === previous.selectedName
|
|
2968
|
+
&& (!selector?.scope || p.scope === selector.scope)
|
|
2969
|
+
&& (!selector?.owner || (p.owner?.provider === selector.owner.provider && p.owner?.subject === selector.owner.subject)));
|
|
2944
2970
|
return {
|
|
2945
2971
|
...state,
|
|
2946
2972
|
admin: {
|
|
@@ -2954,7 +2980,8 @@ function baseReducer(state, action) {
|
|
|
2954
2980
|
fetchedAt: Date.now(),
|
|
2955
2981
|
selectedName: stillThere ? previous.selectedName : null,
|
|
2956
2982
|
selectedSelector: stillThere ? (previous.selectedSelector ?? null) : null,
|
|
2957
|
-
...(stillThere ? {} : {
|
|
2983
|
+
...(stillThere ? {} : { selectionSeq: (previous.selectionSeq ?? 0) + 1, detail: null, changelog: null,
|
|
2984
|
+
workspace: { ...previous.workspace, tree: null, selectedPath: null, file: null } }),
|
|
2958
2985
|
},
|
|
2959
2986
|
},
|
|
2960
2987
|
};
|