@chainingintention/pi-web-cn 1.202607.2 → 1.202607.3-beta.0

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.
Files changed (30) hide show
  1. package/dist/client/assets/{CodeViewer-Cyy3_LEk.js → CodeViewer-B9FasHbW.js} +1 -1
  2. package/dist/client/assets/{TerminalPanel-CNsIQZbo.js → TerminalPanel-BSE17h19.js} +1 -1
  3. package/dist/client/assets/{UnifiedDiffViewer-BprnYHmM.js → UnifiedDiffViewer-ChTX4eDR.js} +1 -1
  4. package/dist/client/assets/{index-DB_vEZT7.js → index-sP1tZcYI.js} +194 -194
  5. package/dist/client/index.html +1 -1
  6. package/dist/server/activity/workspaceActivityRoutes.js +7 -1
  7. package/dist/server/activity/workspaceActivityRoutes.js.map +1 -1
  8. package/dist/server/activity/workspaceActivityService.js +70 -46
  9. package/dist/server/activity/workspaceActivityService.js.map +1 -1
  10. package/dist/server/realtime/sessionEventHub.js +24 -13
  11. package/dist/server/realtime/sessionEventHub.js.map +1 -1
  12. package/dist/server/realtime/sessionEventScope.js +41 -0
  13. package/dist/server/realtime/sessionEventScope.js.map +1 -0
  14. package/dist/server/sessiond.js +12 -4
  15. package/dist/server/sessiond.js.map +1 -1
  16. package/dist/server/sessions/authRoutes.js +15 -7
  17. package/dist/server/sessions/authRoutes.js.map +1 -1
  18. package/dist/server/sessions/authService.js +2 -1
  19. package/dist/server/sessions/authService.js.map +1 -1
  20. package/dist/server/sessions/piSessionService.js +162 -118
  21. package/dist/server/sessions/piSessionService.js.map +1 -1
  22. package/dist/server/sessions/sessionCommandService.js +27 -27
  23. package/dist/server/sessions/sessionCommandService.js.map +1 -1
  24. package/dist/server/sessions/sessionRoutes.js +22 -18
  25. package/dist/server/sessions/sessionRoutes.js.map +1 -1
  26. package/dist/server/terminals/terminalRoutes.js +3 -3
  27. package/dist/server/terminals/terminalRoutes.js.map +1 -1
  28. package/dist/server/terminals/terminalService.js +26 -13
  29. package/dist/server/terminals/terminalService.js.map +1 -1
  30. package/package.json +1 -1
@@ -53,7 +53,7 @@
53
53
  html, body { margin: 0; height: 100%; overflow: hidden; background: var(--pi-bg); color: var(--pi-text); }
54
54
  body { min-height: 100dvh; }
55
55
  </style>
56
- <script type="module" crossorigin src="/assets/index-DB_vEZT7.js"></script>
56
+ <script type="module" crossorigin src="/assets/index-sP1tZcYI.js"></script>
57
57
  <link rel="modulepreload" crossorigin href="/assets/vendor-editor-core-C7aWiQy0.js">
58
58
  <link rel="modulepreload" crossorigin href="/assets/vendor-editor-languages-EW34FfVy.js">
59
59
  </head>
@@ -1,4 +1,10 @@
1
+ import { decodeManagementContext, MANAGEMENT_EMBED_CONTEXT_HEADER } from "../managementEmbed.js";
2
+ import { eventScopeFromManagementContext } from "../realtime/sessionEventScope.js";
1
3
  export function registerWorkspaceActivityRoutes(app, activity, prefix = "") {
2
- app.get(`${prefix}/activity`, () => activity.snapshot());
4
+ app.get(`${prefix}/activity`, (request) => activity.snapshot(eventScopeFromHeaders(request.headers)));
5
+ }
6
+ function eventScopeFromHeaders(headers) {
7
+ const raw = headers[MANAGEMENT_EMBED_CONTEXT_HEADER];
8
+ return eventScopeFromManagementContext(decodeManagementContext(Array.isArray(raw) ? raw[0] : raw));
3
9
  }
4
10
  //# sourceMappingURL=workspaceActivityRoutes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspaceActivityRoutes.js","sourceRoot":"","sources":["../../../src/server/activity/workspaceActivityRoutes.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,+BAA+B,CAAC,GAAoB,EAAE,QAAuC,EAAE,MAAM,GAAG,EAAE;IACxH,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,WAAW,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3D,CAAC"}
1
+ {"version":3,"file":"workspaceActivityRoutes.js","sourceRoot":"","sources":["../../../src/server/activity/workspaceActivityRoutes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AACjG,OAAO,EAAE,+BAA+B,EAA0B,MAAM,kCAAkC,CAAC;AAM3G,MAAM,UAAU,+BAA+B,CAAC,GAAoB,EAAE,QAAuC,EAAE,MAAM,GAAG,EAAE;IACxH,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACxG,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAsD;IACnF,MAAM,GAAG,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAC;IACrD,OAAO,+BAA+B,CAAC,uBAAuB,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACrG,CAAC"}
@@ -1,98 +1,122 @@
1
1
  import { isSessionActive, isWorkspaceActivityActive } from "../../shared/activity.js";
2
+ import { NORMAL_SESSION_EVENT_SCOPE } from "../realtime/sessionEventScope.js";
2
3
  export class WorkspaceActivityService {
3
4
  constructor(publisher) {
4
5
  this.publisher = publisher;
5
6
  this.sessions = new Map();
6
7
  this.terminals = new Map();
7
8
  }
8
- applySessionStatus(cwd, status) {
9
- const previousCwd = this.sessions.get(status.sessionId)?.cwd;
10
- const record = this.sessions.get(status.sessionId) ?? { cwd };
9
+ applySessionStatus(cwd, status, scope = NORMAL_SESSION_EVENT_SCOPE) {
10
+ const key = scopedKey(status.sessionId, scope);
11
+ const previousCwd = this.sessions.get(key)?.cwd;
12
+ const record = this.sessions.get(key) ?? { cwd };
11
13
  record.cwd = cwd;
12
14
  record.status = status;
13
15
  if (!isSessionActive(status) && record.activity?.phase === "active")
14
16
  delete record.activity;
15
- this.sessions.set(status.sessionId, record);
16
- this.pruneIdleSession(status.sessionId);
17
- this.publishChangedCwds(previousCwd, cwd);
17
+ this.sessions.set(key, record);
18
+ this.pruneIdleSession(status.sessionId, scope);
19
+ this.publishChangedCwds(previousCwd, cwd, scope);
18
20
  }
19
- applySessionActivity(cwd, activity) {
20
- const previousCwd = this.sessions.get(activity.sessionId)?.cwd;
21
- const record = this.sessions.get(activity.sessionId) ?? { cwd };
21
+ applySessionActivity(cwd, activity, scope = NORMAL_SESSION_EVENT_SCOPE) {
22
+ const key = scopedKey(activity.sessionId, scope);
23
+ const previousCwd = this.sessions.get(key)?.cwd;
24
+ const record = this.sessions.get(key) ?? { cwd };
22
25
  record.cwd = cwd;
23
26
  record.activity = activity;
24
- this.sessions.set(activity.sessionId, record);
25
- this.pruneIdleSession(activity.sessionId);
26
- this.publishChangedCwds(previousCwd, cwd);
27
+ this.sessions.set(key, record);
28
+ this.pruneIdleSession(activity.sessionId, scope);
29
+ this.publishChangedCwds(previousCwd, cwd, scope);
27
30
  }
28
- removeSession(sessionId, cwd) {
29
- const previousCwd = this.sessions.get(sessionId)?.cwd ?? cwd;
30
- this.sessions.delete(sessionId);
31
- this.publishCwd(previousCwd);
31
+ removeSession(sessionId, cwd, scope = NORMAL_SESSION_EVENT_SCOPE) {
32
+ const key = scopedKey(sessionId, scope);
33
+ const previousCwd = this.sessions.get(key)?.cwd ?? cwd;
34
+ this.sessions.delete(key);
35
+ this.publishCwd(previousCwd, scope);
32
36
  }
33
- reconcileSessionActivity(cwd, sessionIds) {
37
+ reconcileSessionActivity(cwd, sessionIds, scope = NORMAL_SESSION_EVENT_SCOPE) {
34
38
  const knownSessionIds = new Set(sessionIds);
35
39
  let changed = false;
36
- for (const [sessionId, record] of this.sessions.entries()) {
40
+ for (const [key, record] of this.sessions.entries()) {
41
+ const { id, scope: recordScope } = unscopedKey(key);
42
+ if (recordScope !== scope)
43
+ continue;
44
+ const sessionId = id;
37
45
  if (record.cwd !== cwd || knownSessionIds.has(sessionId))
38
46
  continue;
39
- this.sessions.delete(sessionId);
47
+ this.sessions.delete(key);
40
48
  changed = true;
41
49
  }
42
50
  if (changed)
43
- this.publishCwd(cwd);
51
+ this.publishCwd(cwd, scope);
44
52
  }
45
- updateTerminal(terminal) {
46
- const previousCwd = this.terminals.get(terminal.id)?.cwd;
53
+ updateTerminal(terminal, scope = NORMAL_SESSION_EVENT_SCOPE) {
54
+ const key = scopedKey(terminal.id, scope);
55
+ const previousCwd = this.terminals.get(key)?.cwd;
47
56
  if (terminal.exited)
48
- this.terminals.delete(terminal.id);
57
+ this.terminals.delete(key);
49
58
  else
50
- this.terminals.set(terminal.id, { cwd: terminal.cwd });
51
- this.publishChangedCwds(previousCwd, terminal.cwd);
59
+ this.terminals.set(key, { cwd: terminal.cwd });
60
+ this.publishChangedCwds(previousCwd, terminal.cwd, scope);
52
61
  }
53
- removeTerminal(terminalId, cwd) {
54
- const previousCwd = this.terminals.get(terminalId)?.cwd ?? cwd;
55
- this.terminals.delete(terminalId);
56
- this.publishCwd(previousCwd);
62
+ removeTerminal(terminalId, cwd, scope = NORMAL_SESSION_EVENT_SCOPE) {
63
+ const key = scopedKey(terminalId, scope);
64
+ const previousCwd = this.terminals.get(key)?.cwd ?? cwd;
65
+ this.terminals.delete(key);
66
+ this.publishCwd(previousCwd, scope);
57
67
  }
58
- snapshot() {
68
+ snapshot(scope = NORMAL_SESSION_EVENT_SCOPE) {
59
69
  return {
60
- workspaces: this.activeCwds().map((cwd) => this.summaryForCwd(cwd)).filter(isWorkspaceActivityActive),
70
+ workspaces: this.activeCwds(scope).map((cwd) => this.summaryForCwd(cwd, scope)).filter(isWorkspaceActivityActive),
61
71
  generatedAt: new Date().toISOString(),
62
72
  };
63
73
  }
64
- pruneIdleSession(sessionId) {
65
- const record = this.sessions.get(sessionId);
74
+ pruneIdleSession(sessionId, scope) {
75
+ const key = scopedKey(sessionId, scope);
76
+ const record = this.sessions.get(key);
66
77
  if (record !== undefined && !isSessionActive(record.status, record.activity))
67
- this.sessions.delete(sessionId);
78
+ this.sessions.delete(key);
68
79
  }
69
- publishChangedCwds(previousCwd, cwd) {
70
- this.publishCwd(previousCwd);
80
+ publishChangedCwds(previousCwd, cwd, scope) {
81
+ this.publishCwd(previousCwd, scope);
71
82
  if (previousCwd !== cwd)
72
- this.publishCwd(cwd);
83
+ this.publishCwd(cwd, scope);
73
84
  }
74
- publishCwd(cwd) {
85
+ publishCwd(cwd, scope) {
75
86
  if (cwd === undefined || cwd === "")
76
87
  return;
77
- this.publisher?.publishRealtime({ type: "workspace.activity", activity: this.summaryForCwd(cwd) });
88
+ this.publisher?.publishRealtime({ type: "workspace.activity", activity: this.summaryForCwd(cwd, scope) }, scope);
78
89
  }
79
- activeCwds() {
90
+ activeCwds(scope) {
80
91
  const cwds = new Set();
81
- for (const record of this.sessions.values()) {
92
+ for (const [key, record] of this.sessions.entries()) {
93
+ if (unscopedKey(key).scope !== scope)
94
+ continue;
82
95
  if (isSessionActive(record.status, record.activity))
83
96
  cwds.add(record.cwd);
84
97
  }
85
- for (const record of this.terminals.values())
86
- cwds.add(record.cwd);
98
+ for (const [key, record] of this.terminals.entries()) {
99
+ if (unscopedKey(key).scope === scope)
100
+ cwds.add(record.cwd);
101
+ }
87
102
  return [...cwds].sort((a, b) => a.localeCompare(b));
88
103
  }
89
- summaryForCwd(cwd) {
104
+ summaryForCwd(cwd, scope) {
90
105
  return {
91
106
  cwd,
92
- hasSessionActivity: [...this.sessions.values()].some((record) => record.cwd === cwd && isSessionActive(record.status, record.activity)),
93
- hasTerminalActivity: [...this.terminals.values()].some((terminal) => terminal.cwd === cwd),
107
+ hasSessionActivity: [...this.sessions.entries()].some(([key, record]) => unscopedKey(key).scope === scope && record.cwd === cwd && isSessionActive(record.status, record.activity)),
108
+ hasTerminalActivity: [...this.terminals.entries()].some(([key, terminal]) => unscopedKey(key).scope === scope && terminal.cwd === cwd),
94
109
  updatedAt: new Date().toISOString(),
95
110
  };
96
111
  }
97
112
  }
113
+ function scopedKey(id, scope) {
114
+ return `${scope}\0${id}`;
115
+ }
116
+ function unscopedKey(key) {
117
+ const separator = key.indexOf("\0");
118
+ if (separator === -1)
119
+ return { scope: NORMAL_SESSION_EVENT_SCOPE, id: key };
120
+ return { scope: key.slice(0, separator), id: key.slice(separator + 1) };
121
+ }
98
122
  //# sourceMappingURL=workspaceActivityService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspaceActivityService.js","sourceRoot":"","sources":["../../../src/server/activity/workspaceActivityService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspaceActivityService.js","sourceRoot":"","sources":["../../../src/server/activity/workspaceActivityService.ts"],"names":[],"mappings":"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"}
@@ -1,39 +1,50 @@
1
+ import { NORMAL_SESSION_EVENT_SCOPE } from "./sessionEventScope.js";
2
+ export { NORMAL_SESSION_EVENT_SCOPE } from "./sessionEventScope.js";
1
3
  export class SessionEventHub {
2
4
  constructor() {
3
5
  this.socketsBySession = new Map();
4
- this.globalSockets = new Set();
6
+ this.globalSocketsByScope = new Map();
5
7
  }
6
- add(sessionId, socket) {
7
- let sockets = this.socketsBySession.get(sessionId);
8
+ add(sessionId, socket, scope = NORMAL_SESSION_EVENT_SCOPE) {
9
+ const key = sessionScopeKey(sessionId, scope);
10
+ let sockets = this.socketsBySession.get(key);
8
11
  if (!sockets) {
9
12
  sockets = new Set();
10
- this.socketsBySession.set(sessionId, sockets);
13
+ this.socketsBySession.set(key, sockets);
11
14
  }
12
15
  sockets.add(socket);
13
16
  socket.on("close", () => {
14
17
  sockets.delete(socket);
15
18
  });
16
19
  }
17
- addGlobal(socket) {
18
- this.globalSockets.add(socket);
19
- socket.on("close", () => this.globalSockets.delete(socket));
20
+ addGlobal(socket, scope = NORMAL_SESSION_EVENT_SCOPE) {
21
+ let sockets = this.globalSocketsByScope.get(scope);
22
+ if (!sockets) {
23
+ sockets = new Set();
24
+ this.globalSocketsByScope.set(scope, sockets);
25
+ }
26
+ sockets.add(socket);
27
+ socket.on("close", () => sockets.delete(socket));
20
28
  }
21
- publish(sessionId, event) {
29
+ publish(sessionId, event, scope = NORMAL_SESSION_EVENT_SCOPE) {
22
30
  const payload = JSON.stringify(event);
23
- for (const socket of this.socketsBySession.get(sessionId) ?? []) {
31
+ for (const socket of this.socketsBySession.get(sessionScopeKey(sessionId, scope)) ?? []) {
24
32
  if (socket.readyState === socket.OPEN)
25
33
  socket.send(payload);
26
34
  }
27
35
  }
28
- publishGlobal(event) {
29
- this.publishRealtime(event);
36
+ publishGlobal(event, scope = NORMAL_SESSION_EVENT_SCOPE) {
37
+ this.publishRealtime(event, scope);
30
38
  }
31
- publishRealtime(event) {
39
+ publishRealtime(event, scope = NORMAL_SESSION_EVENT_SCOPE) {
32
40
  const payload = JSON.stringify(event);
33
- for (const socket of this.globalSockets) {
41
+ for (const socket of this.globalSocketsByScope.get(scope) ?? []) {
34
42
  if (socket.readyState === socket.OPEN)
35
43
  socket.send(payload);
36
44
  }
37
45
  }
38
46
  }
47
+ function sessionScopeKey(sessionId, scope) {
48
+ return `${scope}\0${sessionId}`;
49
+ }
39
50
  //# sourceMappingURL=sessionEventHub.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sessionEventHub.js","sourceRoot":"","sources":["../../../src/server/realtime/sessionEventHub.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,eAAe;IAA5B;QACmB,qBAAgB,GAAG,IAAI,GAAG,EAA+B,CAAC;QAC1D,kBAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IAoC7D,CAAC;IAlCC,GAAG,CAAC,SAAiB,EAAE,MAAsB;QAC3C,IAAI,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACtB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,CAAC,MAAsB;QAC9B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC/B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,CAAC,SAAiB,EAAE,KAAqB;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACtC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;YAChE,IAAI,MAAM,CAAC,UAAU,KAAK,MAAM,CAAC,IAAI;gBAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,aAAa,CAAC,KAAyB;QACrC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,eAAe,CAAC,KAAoB;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACtC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACxC,IAAI,MAAM,CAAC,UAAU,KAAK,MAAM,CAAC,IAAI;gBAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"sessionEventHub.js","sourceRoot":"","sources":["../../../src/server/realtime/sessionEventHub.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAA0B,MAAM,wBAAwB,CAAC;AAC5F,OAAO,EAAE,0BAA0B,EAA0B,MAAM,wBAAwB,CAAC;AAS5F,MAAM,OAAO,eAAe;IAA5B;QACmB,qBAAgB,GAAG,IAAI,GAAG,EAA+B,CAAC;QAC1D,yBAAoB,GAAG,IAAI,GAAG,EAA0C,CAAC;IA0C5F,CAAC;IAxCC,GAAG,CAAC,SAAiB,EAAE,MAAsB,EAAE,QAA2B,0BAA0B;QAClG,MAAM,GAAG,GAAG,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC9C,IAAI,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACtB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,CAAC,MAAsB,EAAE,QAA2B,0BAA0B;QACrF,IAAI,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,CAAC,SAAiB,EAAE,KAAqB,EAAE,QAA2B,0BAA0B;QACrG,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACtC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YACxF,IAAI,MAAM,CAAC,UAAU,KAAK,MAAM,CAAC,IAAI;gBAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,aAAa,CAAC,KAAyB,EAAE,QAA2B,0BAA0B;QAC5F,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,eAAe,CAAC,KAAoB,EAAE,QAA2B,0BAA0B;QACzF,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACtC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAChE,IAAI,MAAM,CAAC,UAAU,KAAK,MAAM,CAAC,IAAI;gBAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;CACF;AAED,SAAS,eAAe,CAAC,SAAiB,EAAE,KAAwB;IAClE,OAAO,GAAG,KAAK,KAAK,SAAS,EAAE,CAAC;AAClC,CAAC"}
@@ -0,0 +1,41 @@
1
+ export const NORMAL_SESSION_EVENT_SCOPE = "normal";
2
+ export function managementContextKey(context) {
3
+ if (context === undefined)
4
+ return undefined;
5
+ return JSON.stringify({
6
+ user: {
7
+ id: context.user.id,
8
+ rootUserId: context.user.rootUserId,
9
+ roles: sortedStrings(context.user.roles),
10
+ permissions: sortedStrings(context.user.permissions),
11
+ },
12
+ projects: context.projects
13
+ .map((project) => ({ id: project.id, role: project.role, root: project.root }))
14
+ .sort((left, right) => left.id.localeCompare(right.id)),
15
+ tools: context.tools === undefined ? undefined : {
16
+ allow: sortedStrings(context.tools.allow),
17
+ deny: sortedStrings(context.tools.deny),
18
+ permissions: sortedRecord(context.tools.permissions),
19
+ },
20
+ sandbox: context.sandbox === undefined ? undefined : {
21
+ pythonExecutable: context.sandbox.pythonExecutable,
22
+ env: sortedRecord(context.sandbox.env),
23
+ },
24
+ });
25
+ }
26
+ export function eventScopeFromManagementContext(context) {
27
+ const key = managementContextKey(context);
28
+ return key === undefined ? NORMAL_SESSION_EVENT_SCOPE : `management:${key}`;
29
+ }
30
+ export function authScopeFromEventScope(scope) {
31
+ return scope === NORMAL_SESSION_EVENT_SCOPE ? "normal" : "management";
32
+ }
33
+ function sortedStrings(values) {
34
+ return values === undefined ? undefined : [...values].sort();
35
+ }
36
+ function sortedRecord(values) {
37
+ if (values === undefined)
38
+ return undefined;
39
+ return Object.fromEntries(Object.entries(values).sort(([left], [right]) => left.localeCompare(right)));
40
+ }
41
+ //# sourceMappingURL=sessionEventScope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionEventScope.js","sourceRoot":"","sources":["../../../src/server/realtime/sessionEventScope.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,0BAA0B,GAAG,QAAQ,CAAC;AAEnD,MAAM,UAAU,oBAAoB,CAAC,OAA2C;IAC9E,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC5C,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,IAAI,EAAE;YACJ,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE;YACnB,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU;YACnC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YACxC,WAAW,EAAE,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;SACrD;QACD,QAAQ,EAAE,OAAO,CAAC,QAAQ;aACvB,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;aAC9E,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzD,KAAK,EAAE,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YAC/C,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;YACzC,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;YACvC,WAAW,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC;SACrD;QACD,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YACnD,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC,gBAAgB;YAClD,GAAG,EAAE,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;SACvC;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,OAA2C;IACzF,MAAM,GAAG,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC1C,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,cAAc,GAAG,EAAE,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAwB;IAC9D,OAAO,KAAK,KAAK,0BAA0B,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC;AACxE,CAAC;AAED,SAAS,aAAa,CAAC,MAAqC;IAC1D,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AAC/D,CAAC;AAED,SAAS,YAAY,CAAC,MAAoD;IACxE,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC3C,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACzG,CAAC"}
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { mkdir, rm } from "node:fs/promises";
3
- import { dirname } from "node:path";
3
+ import { dirname, join } from "node:path";
4
+ import { AuthStorage, ModelRegistry } from "@earendil-works/pi-coding-agent";
4
5
  import Fastify from "fastify";
5
6
  import fastifyWebsocket from "@fastify/websocket";
6
7
  import { WorkspaceActivityService } from "./activity/workspaceActivityService.js";
@@ -19,27 +20,33 @@ import { TerminalService } from "./terminals/terminalService.js";
19
20
  import { registerTerminalRoutes } from "./terminals/terminalRoutes.js";
20
21
  import { getPiWebRuntimeComponent } from "./piWebStatus.js";
21
22
  import { SESSIOND_RUNTIME_CAPABILITIES } from "../shared/capabilities.js";
22
- import { effectivePiWebConfig, maxUploadBytes, spawnSessionsEnabled, subsessionsEnabled } from "../config.js";
23
+ import { effectivePiWebConfig, maxUploadBytes, piWebDataDir, spawnSessionsEnabled, subsessionsEnabled } from "../config.js";
23
24
  const { config } = effectivePiWebConfig();
24
25
  const app = Fastify({ logger: true, bodyLimit: maxUploadBytes(process.env, config) });
25
26
  await app.register(fastifyWebsocket);
26
27
  const eventHub = new SessionEventHub();
27
28
  const workspaceActivity = new WorkspaceActivityService(eventHub);
28
- const auth = new AuthService();
29
+ const auth = new AuthService({ scope: "normal" });
30
+ const managementAuth = new AuthService({
31
+ scope: "management",
32
+ modelRegistry: ModelRegistry.create(AuthStorage.create(join(piWebDataDir(), "management-embed", "auth.json"))),
33
+ });
29
34
  const spawnTargets = spawnSessionsEnabled(process.env, config)
30
35
  ? new ProjectScopedSpawnTargetResolver({ projects: new ProjectService(new ProjectStore()), workspaces: new WorkspaceService() })
31
36
  : undefined;
32
37
  const sessions = new PiSessionService(eventHub, {
33
38
  modelRegistry: auth.modelRegistry,
39
+ managementModelRegistry: managementAuth.modelRegistry,
34
40
  workspaceActivity,
35
41
  logger: app.log,
36
42
  ...(spawnTargets === undefined ? {} : { spawnTargets }),
37
43
  subsessionsEnabled: spawnTargets !== undefined && subsessionsEnabled(process.env, config),
38
44
  });
39
45
  auth.subscribe((change) => { sessions.applyAuthChange(change); });
46
+ managementAuth.subscribe((change) => { sessions.applyAuthChange(change); });
40
47
  const terminals = new TerminalService(eventHub, workspaceActivity);
41
48
  registerWorkspaceActivityRoutes(app, workspaceActivity);
42
- registerAuthRoutes(app, auth);
49
+ registerAuthRoutes(app, { normal: auth, management: managementAuth });
43
50
  registerSessionRoutes(app, sessions, eventHub);
44
51
  registerTerminalRoutes(app, terminals);
45
52
  app.get("/health", () => {
@@ -66,6 +73,7 @@ async function shutdown(signal) {
66
73
  app.log.info({ signal }, "shutting down session daemon");
67
74
  terminals.dispose();
68
75
  auth.dispose();
76
+ managementAuth.dispose();
69
77
  await sessions.dispose();
70
78
  await app.close();
71
79
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sessiond.js","sourceRoot":"","sources":["../../src/server/sessiond.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sessiond.js","sourceRoot":"","sources":["../../src/server/sessiond.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
+ import { decodeManagementContext, MANAGEMENT_EMBED_CONTEXT_HEADER } from "../managementEmbed.js";
1
2
  export function registerAuthRoutes(app, auth, prefix = "") {
2
3
  app.get(`${prefix}/auth/providers`, async (request, reply) => {
3
4
  try {
4
- return auth.authProviders(request.query.mode ?? "login", request.query.authType);
5
+ return authForRequest(auth, request.headers).authProviders(request.query.mode ?? "login", request.query.authType);
5
6
  }
6
7
  catch (error) {
7
8
  return reply.code(404).send({ error: error instanceof Error ? error.message : String(error) });
@@ -9,7 +10,7 @@ export function registerAuthRoutes(app, auth, prefix = "") {
9
10
  });
10
11
  app.post(`${prefix}/auth/api-key`, async (request, reply) => {
11
12
  try {
12
- return auth.saveApiKey(request.body.providerId, request.body.key);
13
+ return authForRequest(auth, request.headers).saveApiKey(request.body.providerId, request.body.key);
13
14
  }
14
15
  catch (error) {
15
16
  return reply.code(400).send({ error: error instanceof Error ? error.message : String(error) });
@@ -17,7 +18,7 @@ export function registerAuthRoutes(app, auth, prefix = "") {
17
18
  });
18
19
  app.post(`${prefix}/auth/logout`, async (request, reply) => {
19
20
  try {
20
- return auth.logoutProvider(request.body.providerId);
21
+ return authForRequest(auth, request.headers).logoutProvider(request.body.providerId);
21
22
  }
22
23
  catch (error) {
23
24
  return reply.code(400).send({ error: error instanceof Error ? error.message : String(error) });
@@ -25,7 +26,7 @@ export function registerAuthRoutes(app, auth, prefix = "") {
25
26
  });
26
27
  app.post(`${prefix}/auth/oauth`, async (request, reply) => {
27
28
  try {
28
- return auth.startOAuthLogin(request.body.providerId);
29
+ return authForRequest(auth, request.headers).startOAuthLogin(request.body.providerId);
29
30
  }
30
31
  catch (error) {
31
32
  return reply.code(400).send({ error: error instanceof Error ? error.message : String(error) });
@@ -33,7 +34,7 @@ export function registerAuthRoutes(app, auth, prefix = "") {
33
34
  });
34
35
  app.get(`${prefix}/auth/oauth/:flowId`, async (request, reply) => {
35
36
  try {
36
- return auth.oauthFlow(request.params.flowId);
37
+ return authForRequest(auth, request.headers).oauthFlow(request.params.flowId);
37
38
  }
38
39
  catch (error) {
39
40
  return reply.code(404).send({ error: error instanceof Error ? error.message : String(error) });
@@ -41,7 +42,7 @@ export function registerAuthRoutes(app, auth, prefix = "") {
41
42
  });
42
43
  app.post(`${prefix}/auth/oauth/:flowId/respond`, async (request, reply) => {
43
44
  try {
44
- return auth.respondToOAuthFlow(request.params.flowId, request.body.requestId, request.body.value);
45
+ return authForRequest(auth, request.headers).respondToOAuthFlow(request.params.flowId, request.body.requestId, request.body.value);
45
46
  }
46
47
  catch (error) {
47
48
  return reply.code(400).send({ error: error instanceof Error ? error.message : String(error) });
@@ -49,11 +50,18 @@ export function registerAuthRoutes(app, auth, prefix = "") {
49
50
  });
50
51
  app.post(`${prefix}/auth/oauth/:flowId/cancel`, async (request, reply) => {
51
52
  try {
52
- return auth.cancelOAuthFlow(request.params.flowId);
53
+ return authForRequest(auth, request.headers).cancelOAuthFlow(request.params.flowId);
53
54
  }
54
55
  catch (error) {
55
56
  return reply.code(400).send({ error: error instanceof Error ? error.message : String(error) });
56
57
  }
57
58
  });
58
59
  }
60
+ function authForRequest(auth, headers) {
61
+ if (!("normal" in auth))
62
+ return auth;
63
+ const raw = headers[MANAGEMENT_EMBED_CONTEXT_HEADER];
64
+ const context = decodeManagementContext(Array.isArray(raw) ? raw[0] : raw);
65
+ return context === undefined ? auth.normal : auth.management;
66
+ }
59
67
  //# sourceMappingURL=authRoutes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"authRoutes.js","sourceRoot":"","sources":["../../../src/server/sessions/authRoutes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authRoutes.js","sourceRoot":"","sources":["../../../src/server/sessions/authRoutes.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { OAuthLoginFlowService } from "./oauthLoginFlowService.js";
4
4
  export class AuthService {
5
5
  constructor(deps = {}) {
6
6
  this.listeners = new Set();
7
+ this.scope = deps.scope ?? "normal";
7
8
  this.modelRegistry = deps.modelRegistry ?? ModelRegistry.create(AuthStorage.create());
8
9
  this.authFlows = deps.authFlows ?? new OAuthLoginFlowService();
9
10
  }
@@ -57,7 +58,7 @@ export class AuthService {
57
58
  refreshAuthState(change = {}) {
58
59
  this.modelRegistry.authStorage.reload();
59
60
  this.modelRegistry.refresh();
60
- this.emit(change);
61
+ this.emit({ scope: this.scope, ...change });
61
62
  }
62
63
  emit(change) {
63
64
  for (const listener of this.listeners)
@@ -1 +1 @@
1
- {"version":3,"file":"authService.js","sourceRoot":"","sources":["../../../src/server/sessions/authService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authService.js","sourceRoot":"","sources":["../../../src/server/sessions/authService.ts"],"names":[],"mappings":"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"}