@pi-harness/pi-harness 0.1.91 → 0.1.92
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/apps/web/dist/assets/{index-Dg7qqI2I.js → index-9WIYl98Q.js} +1 -1
- package/apps/web/dist/index.html +1 -1
- package/apps/web/package.json +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/index.d.ts.map +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/index.js +11 -0
- package/node_modules/@pi-harness/api-gateway/dist/index.js.map +1 -1
- package/node_modules/@pi-harness/api-gateway/package.json +1 -1
- package/node_modules/@pi-harness/cli/package.json +1 -1
- package/node_modules/@pi-harness/host-webserver/package.json +1 -1
- package/node_modules/@pi-harness/web-app/package.json +1 -1
- package/package.json +6 -6
- package/packages/api-gateway/dist/index.d.ts.map +1 -1
- package/packages/api-gateway/dist/index.js +11 -0
- package/packages/api-gateway/dist/index.js.map +1 -1
- package/packages/api-gateway/package.json +1 -1
- package/packages/api-gateway/src/index.ts +9 -0
- package/packages/api-gateway/test/index.test.ts +45 -0
- package/packages/bundle-web-app/package.json +1 -1
- package/packages/cli/package.json +1 -1
- package/packages/host-webserver/package.json +1 -1
|
@@ -2093,6 +2093,51 @@ describe("API gateway plugin", () => {
|
|
|
2093
2093
|
expect(sessionPayload.items).toEqual(expect.arrayContaining([expect.objectContaining({ sessionId: fork.sessionId, forked: true })]));
|
|
2094
2094
|
});
|
|
2095
2095
|
|
|
2096
|
+
test("forks an empty active session before its JSONL file is created", async () => {
|
|
2097
|
+
const context = new Context();
|
|
2098
|
+
contexts.push(context);
|
|
2099
|
+
await context.plugin(webServerPlugin, { host: "127.0.0.1", port: 0 });
|
|
2100
|
+
const directory = await mkdtemp(join(tmpdir(), "pi-harness-api-active-empty-fork-"));
|
|
2101
|
+
temporaryDirectories.push(directory);
|
|
2102
|
+
const launchCwd = join(directory, "launch");
|
|
2103
|
+
const activeCwd = join(directory, "active");
|
|
2104
|
+
const manager = SessionManager.create(activeCwd, directory);
|
|
2105
|
+
const sourcePath = manager.getSessionFile();
|
|
2106
|
+
expect(sourcePath).toBeDefined();
|
|
2107
|
+
const session = {
|
|
2108
|
+
get sessionId() {
|
|
2109
|
+
return manager.getSessionId();
|
|
2110
|
+
},
|
|
2111
|
+
get sessionFile() {
|
|
2112
|
+
return manager.getSessionFile();
|
|
2113
|
+
},
|
|
2114
|
+
get messages() {
|
|
2115
|
+
return manager.buildSessionContext().messages;
|
|
2116
|
+
},
|
|
2117
|
+
isStreaming: false,
|
|
2118
|
+
sessionManager: manager,
|
|
2119
|
+
subscribe: () => () => {},
|
|
2120
|
+
};
|
|
2121
|
+
context.provide("piRuntime", { session, sessionRuntime: { cwd: activeCwd }, prompt: () => Promise.resolve() } as never);
|
|
2122
|
+
context.provide("piModels", { model: { provider: "test", id: "model" } } as never);
|
|
2123
|
+
context.provide("piHarnessLaunch", { cwd: launchCwd, agentDir: directory, args: [], requestExit() {} });
|
|
2124
|
+
await context.plugin(apiPlugin);
|
|
2125
|
+
|
|
2126
|
+
const response = await fetch(context.webServer.url + "/api/session/fork", {
|
|
2127
|
+
method: "POST",
|
|
2128
|
+
headers: { "content-type": "application/json" },
|
|
2129
|
+
body: JSON.stringify({ path: sourcePath }),
|
|
2130
|
+
});
|
|
2131
|
+
|
|
2132
|
+
expect(response.status).toBe(200);
|
|
2133
|
+
const fork = (await response.json()) as { sessionId: string; sessionFile?: string; cwd: string };
|
|
2134
|
+
expect(fork).toMatchObject({ cwd: activeCwd });
|
|
2135
|
+
expect(fork.sessionFile).toBeDefined();
|
|
2136
|
+
expect(fork.sessionFile).not.toBe(sourcePath);
|
|
2137
|
+
const sourceContent = await readFile(sourcePath ?? "", "utf8");
|
|
2138
|
+
expect(sourceContent).toContain('"type":"session"');
|
|
2139
|
+
});
|
|
2140
|
+
|
|
2096
2141
|
test("opens a forked persisted session from the session list and exposes its relationship", async () => {
|
|
2097
2142
|
const context = new Context();
|
|
2098
2143
|
contexts.push(context);
|