@jmfederico/pi-web 1.202610.4 → 1.202610.6
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 +1 -1
- package/dist/client/assets/classic-CyM97Akm.css +54 -0
- package/dist/client/assets/graphite-DquaqFXU.css +54 -0
- package/dist/client/assets/index-BAYF7oXL.js +4394 -0
- package/dist/client/assets/paper-CB1oLuRr.css +54 -0
- package/dist/client/assets/pi-web-dark-D_KtbM95.css +54 -0
- package/dist/client/assets/pi-web-light-DSNLMIBI.css +54 -0
- package/dist/client/index.html +2 -2
- package/dist/config.js +56 -0
- package/dist/config.js.map +1 -1
- package/dist/pi-packages/captains-log/dist/browser/index.js +13 -17
- package/dist/pi-packages/captains-log/dist/browser/panel.js +7 -11
- package/dist/pi-packages/relays/pi-web-plugin.js +21 -1
- package/dist/pi-packages/relays/relaysPanelElement.js +36 -32
- package/dist/pi-packages/workflows/browser/pi-web-plugin.js +35 -27
- package/dist/pi-packages/workflows/browser/worktreeDialog.js +156 -0
- package/dist/pi-packages/workflows/package.json +1 -0
- package/dist/pi-packages/workflows/prompts/worktree.md +11 -2
- package/dist/pi-packages/workflows/server-plugin.js +579 -0
- package/dist/pi-packages/workflows/vite.config.mjs +17 -0
- package/dist/pi-web-plugins/code-highlight/browser/pi-web-plugin.js +22 -0
- package/dist/pi-web-plugins/code-highlight/package.json +13 -0
- package/dist/pi-web-plugins/files/browser/pi-web-plugin.js +119 -162
- package/dist/pi-web-plugins/git/browser/git-panel.js +61 -46
- package/dist/pi-web-plugins/git/browser/pi-web-plugin.js +25 -3
- package/dist/pi-web-plugins/git/git-backend.js +13 -1
- package/dist/pi-web-plugins/git/server-plugin.js +8 -1
- package/dist/pi-web-plugins/mermaid/browser/pi-web-plugin.js +8 -3
- package/dist/pi-web-plugins/terminal/browser/pi-web-plugin.js +50 -29
- package/dist/pi-web-plugins/updates/pi-web-plugin.js +11 -11
- package/dist/pi-web-plugins/workspace-tasks/pi-web-plugin.js +21 -1
- package/dist/pi-web-plugins/workspace-tasks/tasksPanelElement.js +35 -19
- package/dist/piWebUpdate.js +32 -9
- package/dist/piWebUpdate.js.map +1 -1
- package/dist/plugin-api.d.ts +174 -45
- package/dist/server/browserMessageProjection.js +1 -1
- package/dist/server/browserMessageProjection.js.map +1 -1
- package/dist/server/configRoutes.js +7 -1
- package/dist/server/configRoutes.js.map +1 -1
- package/dist/server/machines/machineProxyRoutes.js +3 -2
- package/dist/server/machines/machineProxyRoutes.js.map +1 -1
- package/dist/server/piWebPluginService.js +7 -1
- package/dist/server/piWebPluginService.js.map +1 -1
- package/dist/server/plugins/pluginBackendChannelProxyAdmission.js +1 -1
- package/dist/server/plugins/pluginBackendChannelProxyAdmission.js.map +1 -1
- package/dist/server/plugins/pluginBackendChannelProxyRoutes.js +31 -38
- package/dist/server/plugins/pluginBackendChannelProxyRoutes.js.map +1 -1
- package/dist/server/plugins/pluginBackendProxyRoutes.js +38 -45
- package/dist/server/plugins/pluginBackendProxyRoutes.js.map +1 -1
- package/dist/server/plugins/pluginBackendRegistry.js +58 -34
- package/dist/server/plugins/pluginBackendRegistry.js.map +1 -1
- package/dist/server/plugins/serverPluginCatalogCapability.js +106 -0
- package/dist/server/plugins/serverPluginCatalogCapability.js.map +1 -0
- package/dist/server/plugins/serverPluginRuntime.js +21 -8
- package/dist/server/plugins/serverPluginRuntime.js.map +1 -1
- package/dist/server/sessiond/pluginBackendChannelRoutes.js +24 -14
- package/dist/server/sessiond/pluginBackendChannelRoutes.js.map +1 -1
- package/dist/server/sessiond/pluginBackendRoutes.js +51 -47
- package/dist/server/sessiond/pluginBackendRoutes.js.map +1 -1
- package/dist/server/sessiond/pluginCatalogRoutes.js +37 -0
- package/dist/server/sessiond/pluginCatalogRoutes.js.map +1 -0
- package/dist/server/sessiond/sessionProxyRoutes.js +17 -0
- package/dist/server/sessiond/sessionProxyRoutes.js.map +1 -1
- package/dist/server/sessiond/sessionServiceDependencies.js +1 -0
- package/dist/server/sessiond/sessionServiceDependencies.js.map +1 -1
- package/dist/server/sessiond.js +24 -4
- package/dist/server/sessiond.js.map +1 -1
- package/dist/server/sessions/authRoutes.js +1 -0
- package/dist/server/sessions/authRoutes.js.map +1 -1
- package/dist/server/sessions/authService.js +13 -0
- package/dist/server/sessions/authService.js.map +1 -1
- package/dist/server/sessions/builtinExtensionFactories.js +15 -1
- package/dist/server/sessions/builtinExtensionFactories.js.map +1 -1
- package/dist/server/sessions/companionBackend.js +286 -0
- package/dist/server/sessions/companionBackend.js.map +1 -0
- package/dist/server/sessions/mcpAuthFlowService.js +237 -0
- package/dist/server/sessions/mcpAuthFlowService.js.map +1 -0
- package/dist/server/sessions/mcpAuthRoutes.js +76 -0
- package/dist/server/sessions/mcpAuthRoutes.js.map +1 -0
- package/dist/server/sessions/messageHistoryTarget.js +18 -1
- package/dist/server/sessions/messageHistoryTarget.js.map +1 -1
- package/dist/server/sessions/piSessionEventConnections.js +5 -2
- package/dist/server/sessions/piSessionEventConnections.js.map +1 -1
- package/dist/server/sessions/piSessionService.js +279 -22
- package/dist/server/sessions/piSessionService.js.map +1 -1
- package/dist/server/sessions/sessionCommandService.js +3 -17
- package/dist/server/sessions/sessionCommandService.js.map +1 -1
- package/dist/server/sessions/sessionNameGenerator.js +4 -4
- package/dist/server/sessions/sessionNameGenerator.js.map +1 -1
- package/dist/server-plugin-api.d.ts +65 -15
- package/dist/server-plugin-api.js +25 -0
- package/dist/server-plugin-api.js.map +1 -1
- package/dist/shared/apiTypes.js.map +1 -1
- package/dist/shared/federatedRoutes.js +17 -5
- package/dist/shared/federatedRoutes.js.map +1 -1
- package/dist/shared/pluginApiTypes.d.ts +53 -0
- package/dist/shared/pluginBackendProtocol.js +56 -1
- package/dist/shared/pluginBackendProtocol.js.map +1 -1
- package/dist/shared/pluginCatalogTypes.d.ts +49 -0
- package/dist/shared/pluginCatalogTypes.js +156 -0
- package/dist/shared/pluginCatalogTypes.js.map +1 -0
- package/docs/config.md +68 -2
- package/docs/plugins.md +382 -20
- package/examples/session-bridge-plugin/src/browser/index.ts +1 -1
- package/package.json +7 -12
- package/dist/client/assets/index-BAl5IbYx.js +0 -4429
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { normalizeRequestCwd } from "../workingDirectory.js";
|
|
2
|
+
export function registerMcpAuthRoutes(app, sessions, prefix = "") {
|
|
3
|
+
app.get(`${prefix}/sessions/:sessionId/mcp/auth/servers`, async (request, reply) => {
|
|
4
|
+
try {
|
|
5
|
+
const query = record(request.query);
|
|
6
|
+
onlyKeys(query, ["cwd"]);
|
|
7
|
+
const cwd = string(query, "cwd");
|
|
8
|
+
if (!cwd)
|
|
9
|
+
throw new Error("cwd must not be empty");
|
|
10
|
+
return await sessions.mcpAuthServers({ id: request.params.sessionId, cwd: normalizeRequestCwd(cwd) });
|
|
11
|
+
}
|
|
12
|
+
catch (error) {
|
|
13
|
+
return reply.code(400).send({ error: message(error) });
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
app.post(`${prefix}/sessions/:sessionId/mcp/auth`, async (request, reply) => {
|
|
17
|
+
try {
|
|
18
|
+
const body = record(request.body);
|
|
19
|
+
onlyKeys(body, ["cwd", "mode", "serverName"]);
|
|
20
|
+
const cwd = string(body, "cwd");
|
|
21
|
+
if (!cwd)
|
|
22
|
+
throw new Error("cwd must not be empty");
|
|
23
|
+
const mode = body["mode"];
|
|
24
|
+
if (mode !== "login" && mode !== "logout")
|
|
25
|
+
throw new Error("mode must be login or logout");
|
|
26
|
+
const serverName = body["serverName"] === undefined ? undefined : string(body, "serverName");
|
|
27
|
+
return await sessions.startMcpAuth({ id: request.params.sessionId, cwd: normalizeRequestCwd(cwd) }, mode, serverName);
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
return reply.code(400).send({ error: message(error) });
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
app.get(`${prefix}/auth/mcp/:flowId`, (request, reply) => {
|
|
34
|
+
try {
|
|
35
|
+
return sessions.mcpAuthFlows.get(request.params.flowId);
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
return reply.code(404).send({ error: message(error) });
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
app.post(`${prefix}/auth/mcp/:flowId/respond`, (request, reply) => {
|
|
42
|
+
try {
|
|
43
|
+
const body = record(request.body);
|
|
44
|
+
onlyKeys(body, ["requestId", "value"]);
|
|
45
|
+
return sessions.mcpAuthFlows.respond(request.params.flowId, string(body, "requestId"), string(body, "value"));
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
return reply.code(400).send({ error: message(error) });
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
app.post(`${prefix}/auth/mcp/:flowId/cancel`, (request, reply) => {
|
|
52
|
+
try {
|
|
53
|
+
return sessions.mcpAuthFlows.cancel(request.params.flowId);
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
return reply.code(400).send({ error: message(error) });
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
function record(value) {
|
|
61
|
+
if (typeof value !== "object" || value === null || Array.isArray(value))
|
|
62
|
+
throw new Error("Expected a request object");
|
|
63
|
+
return Object.fromEntries(Object.entries(value));
|
|
64
|
+
}
|
|
65
|
+
function string(body, key) {
|
|
66
|
+
const value = body[key];
|
|
67
|
+
if (typeof value !== "string" || value.length > 32 * 1024)
|
|
68
|
+
throw new Error(`${key} must be a string of at most 32768 characters`);
|
|
69
|
+
return value;
|
|
70
|
+
}
|
|
71
|
+
function onlyKeys(body, keys) {
|
|
72
|
+
if (Object.keys(body).some((key) => !keys.includes(key)))
|
|
73
|
+
throw new Error("Unexpected MCP authentication field");
|
|
74
|
+
}
|
|
75
|
+
function message(error) { return error instanceof Error ? error.message : String(error); }
|
|
76
|
+
//# sourceMappingURL=mcpAuthRoutes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpAuthRoutes.js","sourceRoot":"","sources":["../../../src/server/sessions/mcpAuthRoutes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Resolve a message shortcut against the current root-to-leaf branch. Non-user
|
|
3
3
|
* checkpoints retain the intervening history up to, but not including, the next
|
|
4
|
-
* distinct user/assistant checkpoint
|
|
4
|
+
* distinct user/assistant checkpoint, or through a question but not its answer.
|
|
5
|
+
* Pi still owns the actual tree mutation.
|
|
5
6
|
* Exact-entry tree operations do not use this resolver.
|
|
6
7
|
*/
|
|
7
8
|
export function messageHistoryTargetId(branch, entryId) {
|
|
@@ -9,6 +10,10 @@ export function messageHistoryTargetId(branch, entryId) {
|
|
|
9
10
|
if (index < 0)
|
|
10
11
|
throw new Error("This message is no longer available on the active session branch.");
|
|
11
12
|
const entry = branch[index];
|
|
13
|
+
// A question is answered from its durable tool result, without retaining any
|
|
14
|
+
// earlier answer (custom messages are otherwise part of a checkpoint's tail).
|
|
15
|
+
if (isQuestionResult(entry))
|
|
16
|
+
return entryId;
|
|
12
17
|
// Pi restores a selected user message to the editor by positioning before it.
|
|
13
18
|
if (isRecord(entry) && entry["type"] === "message" && isRecord(entry["message"])
|
|
14
19
|
&& entry["message"]["role"] === "user")
|
|
@@ -19,9 +24,21 @@ export function messageHistoryTargetId(branch, entryId) {
|
|
|
19
24
|
if (!isRecord(next) || typeof next["id"] !== "string" || isConversationCheckpoint(next))
|
|
20
25
|
break;
|
|
21
26
|
targetId = next["id"];
|
|
27
|
+
// The agent message that produced a question retains the request, not any
|
|
28
|
+
// later answer, just like selecting the question itself.
|
|
29
|
+
if (isQuestionResult(next))
|
|
30
|
+
break;
|
|
22
31
|
}
|
|
23
32
|
return targetId;
|
|
24
33
|
}
|
|
34
|
+
function isQuestionResult(entry) {
|
|
35
|
+
if (!isRecord(entry) || entry["type"] !== "message" || !isRecord(entry["message"]))
|
|
36
|
+
return false;
|
|
37
|
+
const message = entry["message"];
|
|
38
|
+
const details = message["details"];
|
|
39
|
+
return message["role"] === "toolResult" && message["toolName"] === "ask_user" && message["isError"] === false
|
|
40
|
+
&& isRecord(details) && isRecord(details["ask"]);
|
|
41
|
+
}
|
|
25
42
|
/**
|
|
26
43
|
* Boundaries are intrinsic conversation checkpoints, not transient plugin
|
|
27
44
|
* availability (busy/archived/disabled buttons must not change the cutoff).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messageHistoryTarget.js","sourceRoot":"","sources":["../../../src/server/sessions/messageHistoryTarget.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"messageHistoryTarget.js","sourceRoot":"","sources":["../../../src/server/sessions/messageHistoryTarget.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
/** Buses belong to concrete native sessions, never to a cwd or a reusable id. */
|
|
2
2
|
export class PiSessionEventConnections {
|
|
3
|
-
constructor() {
|
|
3
|
+
constructor(bindBackend) {
|
|
4
|
+
this.bindBackend = bindBackend;
|
|
4
5
|
this.sessions = new WeakMap();
|
|
5
6
|
}
|
|
6
7
|
register(session, bus) {
|
|
7
8
|
this.close(session);
|
|
8
|
-
this.
|
|
9
|
+
const detachBackend = this.bindBackend?.(bus);
|
|
10
|
+
this.sessions.set(session, { bus, connections: new Set(), ...(detachBackend === undefined ? {} : { detachBackend }) });
|
|
9
11
|
}
|
|
10
12
|
connect(session, lifetime) {
|
|
11
13
|
lifetime.throwIfAborted();
|
|
@@ -57,6 +59,7 @@ export class PiSessionEventConnections {
|
|
|
57
59
|
const hosted = this.sessions.get(session);
|
|
58
60
|
if (hosted === undefined)
|
|
59
61
|
return;
|
|
62
|
+
hosted.detachBackend?.();
|
|
60
63
|
for (const connection of hosted.connections)
|
|
61
64
|
connection.close();
|
|
62
65
|
this.sessions.delete(session);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"piSessionEventConnections.js","sourceRoot":"","sources":["../../../src/server/sessions/piSessionEventConnections.ts"],"names":[],"mappings":"AAKA,iFAAiF;AACjF,MAAM,OAAO,yBAAyB;
|
|
1
|
+
{"version":3,"file":"piSessionEventConnections.js","sourceRoot":"","sources":["../../../src/server/sessions/piSessionEventConnections.ts"],"names":[],"mappings":"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"}
|