@xrkseek/harness 0.2.2 → 0.2.3

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 (73) hide show
  1. package/node_modules/@xrkseek/preset-server/dist/tsconfig.tsbuildinfo +1 -1
  2. package/node_modules/@xrkseek/server-host/dist/index.d.ts.map +1 -1
  3. package/node_modules/@xrkseek/server-host/dist/index.js +10 -2
  4. package/node_modules/@xrkseek/server-host/dist/index.js.map +1 -1
  5. package/node_modules/@xrkseek/server-host/dist/sidebar-face-bridge.d.ts.map +1 -1
  6. package/node_modules/@xrkseek/server-host/dist/sidebar-face-bridge.js +4 -111
  7. package/node_modules/@xrkseek/server-host/dist/sidebar-face-bridge.js.map +1 -1
  8. package/node_modules/@xrkseek/server-host/dist/sidebar-live-line.d.ts +9 -0
  9. package/node_modules/@xrkseek/server-host/dist/sidebar-live-line.d.ts.map +1 -0
  10. package/node_modules/@xrkseek/server-host/dist/sidebar-live-line.js +43 -0
  11. package/node_modules/@xrkseek/server-host/dist/sidebar-live-line.js.map +1 -0
  12. package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapter-providers.d.ts.map +1 -1
  13. package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapter-providers.js +0 -21
  14. package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapter-providers.js.map +1 -1
  15. package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapter-types.d.ts +3 -2
  16. package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapter-types.d.ts.map +1 -1
  17. package/node_modules/@xrkseek/server-http/dist/dsh-compat/bundle-chunk-stub.d.ts +1 -1
  18. package/node_modules/@xrkseek/server-http/dist/dsh-compat/bundle-chunk-stub.d.ts.map +1 -1
  19. package/node_modules/@xrkseek/server-http/dist/dsh-compat/bundle-chunk-stub.js +7 -5
  20. package/node_modules/@xrkseek/server-http/dist/dsh-compat/bundle-chunk-stub.js.map +1 -1
  21. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-compat-matrix.js +3 -3
  22. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-compat-matrix.js.map +1 -1
  23. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-path-capabilities.d.ts.map +1 -1
  24. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-path-capabilities.js +0 -1
  25. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-path-capabilities.js.map +1 -1
  26. package/node_modules/@xrkseek/server-http/dist/dsh-compat/index.d.ts +2 -1
  27. package/node_modules/@xrkseek/server-http/dist/dsh-compat/index.d.ts.map +1 -1
  28. package/node_modules/@xrkseek/server-http/dist/dsh-compat/index.js +1 -0
  29. package/node_modules/@xrkseek/server-http/dist/dsh-compat/index.js.map +1 -1
  30. package/node_modules/@xrkseek/server-http/dist/dsh-compat/sidebar-face-bridge.d.ts +18 -7
  31. package/node_modules/@xrkseek/server-http/dist/dsh-compat/sidebar-face-bridge.d.ts.map +1 -1
  32. package/node_modules/@xrkseek/server-http/dist/dsh-compat/turn-rewind-workspace.js +1 -1
  33. package/node_modules/@xrkseek/server-http/dist/dsh-compat/turn-rewind-workspace.js.map +1 -1
  34. package/node_modules/@xrkseek/server-http/dist/dsh-compat/turn-rewind.d.ts +1 -1
  35. package/node_modules/@xrkseek/server-http/dist/dsh-compat/turn-rewind.d.ts.map +1 -1
  36. package/node_modules/@xrkseek/server-http/dist/index.d.ts +2 -1
  37. package/node_modules/@xrkseek/server-http/dist/index.d.ts.map +1 -1
  38. package/node_modules/@xrkseek/server-http/dist/index.js +1 -0
  39. package/node_modules/@xrkseek/server-http/dist/index.js.map +1 -1
  40. package/node_modules/@xrkseek/server-http/dist/sidebar/bundle-chunk-stub.d.ts +21 -0
  41. package/node_modules/@xrkseek/server-http/dist/sidebar/bundle-chunk-stub.d.ts.map +1 -0
  42. package/node_modules/@xrkseek/server-http/dist/sidebar/bundle-chunk-stub.js +123 -0
  43. package/node_modules/@xrkseek/server-http/dist/sidebar/bundle-chunk-stub.js.map +1 -0
  44. package/node_modules/@xrkseek/server-http/dist/sidebar/index.d.ts +13 -0
  45. package/node_modules/@xrkseek/server-http/dist/sidebar/index.d.ts.map +1 -0
  46. package/node_modules/@xrkseek/server-http/dist/sidebar/index.js +27 -0
  47. package/node_modules/@xrkseek/server-http/dist/sidebar/index.js.map +1 -0
  48. package/node_modules/@xrkseek/server-http/dist/sidebar/sidebar-adapter.d.ts +19 -0
  49. package/node_modules/@xrkseek/server-http/dist/sidebar/sidebar-adapter.d.ts.map +1 -0
  50. package/node_modules/@xrkseek/server-http/dist/sidebar/sidebar-adapter.js +495 -0
  51. package/node_modules/@xrkseek/server-http/dist/sidebar/sidebar-adapter.js.map +1 -0
  52. package/node_modules/@xrkseek/server-http/dist/sidebar/sidebar-browser.d.ts +3 -0
  53. package/node_modules/@xrkseek/server-http/dist/sidebar/sidebar-browser.d.ts.map +1 -0
  54. package/node_modules/@xrkseek/server-http/dist/sidebar/sidebar-browser.js +82 -0
  55. package/node_modules/@xrkseek/server-http/dist/sidebar/sidebar-browser.js.map +1 -0
  56. package/node_modules/@xrkseek/server-http/dist/sidebar/sidebar-face-bridge.d.ts +41 -0
  57. package/node_modules/@xrkseek/server-http/dist/sidebar/sidebar-face-bridge.d.ts.map +1 -0
  58. package/node_modules/@xrkseek/server-http/dist/sidebar/sidebar-face-bridge.js +2 -0
  59. package/node_modules/@xrkseek/server-http/dist/sidebar/sidebar-face-bridge.js.map +1 -0
  60. package/node_modules/@xrkseek/server-http/dist/sidebar/sidebar-git.d.ts +59 -0
  61. package/node_modules/@xrkseek/server-http/dist/sidebar/sidebar-git.d.ts.map +1 -0
  62. package/node_modules/@xrkseek/server-http/dist/sidebar/sidebar-git.js +197 -0
  63. package/node_modules/@xrkseek/server-http/dist/sidebar/sidebar-git.js.map +1 -0
  64. package/node_modules/@xrkseek/server-http/dist/sidebar/sidebar-html.d.ts +20 -0
  65. package/node_modules/@xrkseek/server-http/dist/sidebar/sidebar-html.d.ts.map +1 -0
  66. package/node_modules/@xrkseek/server-http/dist/sidebar/sidebar-html.js +135 -0
  67. package/node_modules/@xrkseek/server-http/dist/sidebar/sidebar-html.js.map +1 -0
  68. package/node_modules/@xrkseek/server-http/dist/sidebar/sidebar-prefs-store.d.ts +9 -0
  69. package/node_modules/@xrkseek/server-http/dist/sidebar/sidebar-prefs-store.d.ts.map +1 -0
  70. package/node_modules/@xrkseek/server-http/dist/sidebar/sidebar-prefs-store.js +57 -0
  71. package/node_modules/@xrkseek/server-http/dist/sidebar/sidebar-prefs-store.js.map +1 -0
  72. package/node_modules/@xrkseek/server-http/package.json +5 -0
  73. package/package.json +1 -1
@@ -0,0 +1,13 @@
1
+ import type { PublicRouteHandlerFn } from "../public-routes.js";
2
+ import { type SidebarHostOptions } from "./sidebar-adapter.js";
3
+ export type { SidebarFaceBridge, SidebarSubagentLiveActivity, } from "./sidebar-face-bridge.js";
4
+ export type { SidebarHostOptions, SidebarCompatOptions } from "./sidebar-adapter.js";
5
+ export { handleSidebarHost, handleSidebarCompat, } from "./sidebar-adapter.js";
6
+ export { decodeSidebarHtmlPath } from "./sidebar-html.js";
7
+ export { gitStatus } from "./sidebar-git.js";
8
+ export { handleBundleChunkStub, DEFAULT_SIDEBAR_EXPORTS, } from "./bundle-chunk-stub.js";
9
+ /**
10
+ * Claim `/sidebar/*` before SPA static and before dsh-compat catch-alls.
11
+ */
12
+ export declare function createSidebarPublicHandler(options?: SidebarHostOptions): PublicRouteHandlerFn;
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sidebar/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAKhE,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EACV,iBAAiB,EACjB,2BAA2B,GAC5B,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EACL,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAEhC;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,GAAE,kBAAuB,GAC/B,oBAAoB,CAiBtB"}
@@ -0,0 +1,27 @@
1
+ import { handleBundleChunkStub, DEFAULT_SIDEBAR_EXPORTS, } from "./bundle-chunk-stub.js";
2
+ import { handleSidebarHost, } from "./sidebar-adapter.js";
3
+ export { handleSidebarHost, handleSidebarCompat, } from "./sidebar-adapter.js";
4
+ export { decodeSidebarHtmlPath } from "./sidebar-html.js";
5
+ export { gitStatus } from "./sidebar-git.js";
6
+ export { handleBundleChunkStub, DEFAULT_SIDEBAR_EXPORTS, } from "./bundle-chunk-stub.js";
7
+ /**
8
+ * Claim `/sidebar/*` before SPA static and before dsh-compat catch-alls.
9
+ */
10
+ export function createSidebarPublicHandler(options = {}) {
11
+ return async (req, res) => {
12
+ const url = new URL(req.url ?? "/", "http://127.0.0.1");
13
+ const pathname = url.pathname;
14
+ if (!pathname.startsWith("/sidebar/"))
15
+ return false;
16
+ if (pathname.startsWith("/sidebar/bundle/")) {
17
+ return handleBundleChunkStub(req, res, pathname, {
18
+ urlPrefix: "/sidebar/bundle",
19
+ exportsByChunk: DEFAULT_SIDEBAR_EXPORTS,
20
+ registryGlobal: "__xrkhChunks__",
21
+ ...(options.pluginsDir ? { pluginsDir: options.pluginsDir } : {}),
22
+ });
23
+ }
24
+ return handleSidebarHost(req, res, pathname, options);
25
+ };
26
+ }
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sidebar/index.ts"],"names":[],"mappings":"AASA,OAAO,EACL,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,iBAAiB,GAElB,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EACL,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAEhC;;GAEG;AACH,MAAM,UAAU,0BAA0B,CACxC,UAA8B,EAAE;IAEhC,OAAO,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACxB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,kBAAkB,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC;YAAE,OAAO,KAAK,CAAC;QAEpD,IAAI,QAAQ,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC5C,OAAO,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE;gBAC/C,SAAS,EAAE,iBAAiB;gBAC5B,cAAc,EAAE,uBAAuB;gBACvC,cAAc,EAAE,gBAAgB;gBAChC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAClE,CAAC,CAAC;QACL,CAAC;QAED,OAAO,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { IncomingMessage, ServerResponse } from "node:http";
2
+ import type { SidebarFaceBridge } from "./sidebar-face-bridge.js";
3
+ export interface SidebarHostOptions {
4
+ /** Resolve session workspace cwd (Face). */
5
+ readonly resolveSessionCwd?: (sessionId: string) => string | undefined;
6
+ /** Fallback when session unknown. */
7
+ readonly defaultCwd?: string;
8
+ readonly xrkHome?: string;
9
+ /** Face inject: open.external · jobs · subagents.live · rewind. */
10
+ readonly sidebarFace?: SidebarFaceBridge;
11
+ /** Installed client plugins dir (chunk staging for `/sidebar/bundle`). */
12
+ readonly pluginsDir?: string;
13
+ }
14
+ /** @deprecated Use {@link SidebarHostOptions}. */
15
+ export type SidebarCompatOptions = SidebarHostOptions;
16
+ export declare function handleSidebarHost(req: IncomingMessage, res: ServerResponse, pathname: string, options: SidebarHostOptions): Promise<boolean>;
17
+ /** @deprecated Prefer {@link handleSidebarHost}. */
18
+ export declare const handleSidebarCompat: typeof handleSidebarHost;
19
+ //# sourceMappingURL=sidebar-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar-adapter.d.ts","sourceRoot":"","sources":["../../src/sidebar/sidebar-adapter.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAwBjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE,MAAM,WAAW,kBAAkB;IACjC,4CAA4C;IAC5C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACvE,qCAAqC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,mEAAmE;IACnE,QAAQ,CAAC,WAAW,CAAC,EAAE,iBAAiB,CAAC;IACzC,0EAA0E;IAC1E,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,kDAAkD;AAClD,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AAoYtD,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,OAAO,CAAC,CAkIlB;AAED,oDAAoD;AACpD,eAAO,MAAM,mBAAmB,0BAAoB,CAAC"}
@@ -0,0 +1,495 @@
1
+ /**
2
+ * Native Host sidebar HTTP surface (`/sidebar/*`).
3
+ * Product client: `xrkh-better-sidebar` (kind: client). Not a dsh-compat path.
4
+ */
5
+ import { createReadStream, existsSync, statSync } from "node:fs";
6
+ import { mkdir, opendir, readFile, unlink, writeFile } from "node:fs/promises";
7
+ import path from "node:path";
8
+ import { readBody, sendJson } from "../http-json.js";
9
+ import { gitBranches, gitCherryPick, gitCheckout, gitCommit, gitCommitDiff, gitDiff, gitDiscard, gitLog, gitRevert, gitStage, gitStatus, gitUnstage, } from "./sidebar-git.js";
10
+ import { loadSidebarPrefs, saveSidebarPrefs, } from "./sidebar-prefs-store.js";
11
+ import { probeBrowserUrl } from "./sidebar-browser.js";
12
+ import { handleSidebarHtml } from "./sidebar-html.js";
13
+ import { attachmentContentDisposition } from "../content-disposition.js";
14
+ /** NUL / high ratio of non-text bytes → treat as binary for editor routing. */
15
+ function looksBinary(buf) {
16
+ const n = Math.min(buf.byteLength, 8000);
17
+ if (n === 0)
18
+ return false;
19
+ let weird = 0;
20
+ for (let i = 0; i < n; i += 1) {
21
+ const b = buf[i];
22
+ if (b === 0)
23
+ return true;
24
+ if (b < 7 || (b > 13 && b < 32))
25
+ weird += 1;
26
+ }
27
+ return weird / n > 0.3;
28
+ }
29
+ function ok(value) {
30
+ return { ok: true, value };
31
+ }
32
+ function fail(code, message) {
33
+ return { ok: false, error: { code, message } };
34
+ }
35
+ function resolveCwd(options, sessionId, override) {
36
+ if (typeof override === "string" && override.trim()) {
37
+ return path.resolve(override.trim());
38
+ }
39
+ if (sessionId && options.resolveSessionCwd) {
40
+ const mapped = options.resolveSessionCwd(sessionId);
41
+ if (mapped)
42
+ return path.resolve(mapped);
43
+ }
44
+ return path.resolve(options.defaultCwd ?? process.cwd());
45
+ }
46
+ function safeJoin(root, rel) {
47
+ const target = path.resolve(root, rel);
48
+ const rootResolved = path.resolve(root);
49
+ if (target !== rootResolved &&
50
+ !target.startsWith(rootResolved + path.sep)) {
51
+ return undefined;
52
+ }
53
+ return target;
54
+ }
55
+ async function listTree(absDir) {
56
+ const entries = [];
57
+ if (!existsSync(absDir))
58
+ return { entries };
59
+ const dir = await opendir(absDir);
60
+ for await (const dent of dir) {
61
+ const full = path.join(absDir, dent.name);
62
+ let isDir = dent.isDirectory();
63
+ let isSymlink = dent.isSymbolicLink();
64
+ let broken = false;
65
+ try {
66
+ const st = statSync(full);
67
+ isDir = st.isDirectory();
68
+ isSymlink = st.isSymbolicLink();
69
+ }
70
+ catch {
71
+ broken = true;
72
+ }
73
+ entries.push({
74
+ name: dent.name,
75
+ path: full,
76
+ isDir,
77
+ ...(isSymlink ? { isSymlink: true } : {}),
78
+ ...(dent.name.startsWith(".") ? { hidden: true } : {}),
79
+ ...(broken ? { broken: true } : {}),
80
+ });
81
+ }
82
+ entries.sort((a, b) => {
83
+ if (Boolean(a.isDir) !== Boolean(b.isDir))
84
+ return a.isDir ? -1 : 1;
85
+ return String(a.name).localeCompare(String(b.name));
86
+ });
87
+ return { entries };
88
+ }
89
+ async function searchFiles(root, query, limit = 200) {
90
+ const needle = query.trim().toLowerCase();
91
+ if (!needle || !existsSync(root)) {
92
+ return { matches: [], truncated: false };
93
+ }
94
+ const rootResolved = path.resolve(root);
95
+ const matches = [];
96
+ const queue = [rootResolved];
97
+ let truncated = false;
98
+ while (queue.length > 0 && matches.length < limit) {
99
+ const dir = queue.shift();
100
+ let handle;
101
+ try {
102
+ handle = await opendir(dir);
103
+ }
104
+ catch {
105
+ continue;
106
+ }
107
+ for await (const dent of handle) {
108
+ if (matches.length >= limit) {
109
+ truncated = true;
110
+ break;
111
+ }
112
+ const full = path.join(dir, dent.name);
113
+ if (dent.name.toLowerCase().includes(needle)) {
114
+ const rel = path.relative(rootResolved, full).replace(/\\/g, "/");
115
+ matches.push(rel.startsWith("/") ? rel.slice(1) : rel);
116
+ }
117
+ if (dent.isDirectory())
118
+ queue.push(full);
119
+ }
120
+ }
121
+ if (queue.length > 0)
122
+ truncated = true;
123
+ return { matches, truncated };
124
+ }
125
+ async function dispatchMethod(method, payload, options) {
126
+ const sessionId = typeof payload.sessionId === "string" ? payload.sessionId : undefined;
127
+ const cwdOverride = typeof payload.cwd === "string" ? payload.cwd : undefined;
128
+ const cwd = resolveCwd(options, sessionId, cwdOverride);
129
+ switch (method) {
130
+ case "session.cwd":
131
+ return ok({ cwd });
132
+ case "fs.tree": {
133
+ const rel = typeof payload.path === "string" && payload.path.trim()
134
+ ? payload.path.trim()
135
+ : cwd;
136
+ const abs = path.isAbsolute(rel) ? path.resolve(rel) : safeJoin(cwd, rel);
137
+ if (!abs)
138
+ return fail("path", "path escapes workspace");
139
+ return ok(await listTree(abs));
140
+ }
141
+ case "fs.search": {
142
+ const query = typeof payload.query === "string" ? payload.query : "";
143
+ const rel = typeof payload.path === "string" && payload.path.trim()
144
+ ? payload.path.trim()
145
+ : cwd;
146
+ const abs = path.isAbsolute(rel) ? path.resolve(rel) : safeJoin(cwd, rel);
147
+ if (!abs)
148
+ return fail("path", "path escapes workspace");
149
+ const limit = typeof payload.limit === "number" && payload.limit > 0
150
+ ? Math.min(payload.limit, 500)
151
+ : 200;
152
+ return ok(await searchFiles(abs, query, limit));
153
+ }
154
+ case "fs.read": {
155
+ const rel = typeof payload.path === "string" ? payload.path : "";
156
+ const abs = path.isAbsolute(rel) ? path.resolve(rel) : safeJoin(cwd, rel);
157
+ if (!abs || !existsSync(abs))
158
+ return fail("not-found", "file missing");
159
+ // better-sidebar TextEditor expects `{ kind: "text"|"binary", content?, head?, truncated }`.
160
+ // Returning only `{ content }` leaves `kind !== "text"` → empty editor pane.
161
+ const buf = await readFile(abs);
162
+ const truncated = buf.byteLength > 2_000_000;
163
+ const slice = truncated ? buf.subarray(0, 2_000_000) : buf;
164
+ if (looksBinary(slice)) {
165
+ return ok({
166
+ kind: "binary",
167
+ truncated,
168
+ head: slice.subarray(0, Math.min(512, slice.byteLength)).toString("base64"),
169
+ });
170
+ }
171
+ return ok({
172
+ kind: "text",
173
+ content: slice.toString("utf8"),
174
+ truncated,
175
+ });
176
+ }
177
+ case "fs.write": {
178
+ const rel = typeof payload.path === "string" ? payload.path : "";
179
+ const abs = path.isAbsolute(rel) ? path.resolve(rel) : safeJoin(cwd, rel);
180
+ if (!abs)
181
+ return fail("path", "path escapes workspace");
182
+ const content = typeof payload.content === "string" ? payload.content : "";
183
+ await writeFile(abs, content, "utf8");
184
+ return ok({ written: true });
185
+ }
186
+ case "fs.mkdir": {
187
+ const rel = typeof payload.path === "string" ? payload.path : "";
188
+ const abs = path.isAbsolute(rel) ? path.resolve(rel) : safeJoin(cwd, rel);
189
+ if (!abs)
190
+ return fail("path", "path escapes workspace");
191
+ await mkdir(abs, { recursive: payload.recursive !== false });
192
+ return ok({ created: true, path: abs });
193
+ }
194
+ case "fs.delete": {
195
+ const rel = typeof payload.path === "string" ? payload.path : "";
196
+ const abs = path.isAbsolute(rel) ? path.resolve(rel) : safeJoin(cwd, rel);
197
+ if (!abs || !existsSync(abs))
198
+ return fail("not-found", "path missing");
199
+ await unlink(abs);
200
+ return ok({ deleted: true });
201
+ }
202
+ case "fs.stat": {
203
+ const rel = typeof payload.path === "string" ? payload.path : "";
204
+ const abs = path.isAbsolute(rel) ? path.resolve(rel) : safeJoin(cwd, rel);
205
+ if (!abs || !existsSync(abs))
206
+ return fail("not-found", "path missing");
207
+ const st = statSync(abs);
208
+ return ok({
209
+ path: abs,
210
+ isDir: st.isDirectory(),
211
+ isFile: st.isFile(),
212
+ size: st.size,
213
+ mtimeMs: st.mtimeMs,
214
+ });
215
+ }
216
+ case "ping":
217
+ return ok({ pong: true, adapter: "xrk-dsh-compat" });
218
+ case "settings.get": {
219
+ const row = loadSidebarPrefs(options.xrkHome);
220
+ return ok({
221
+ value: row.value,
222
+ revision: row.revision,
223
+ externalDisable: false,
224
+ });
225
+ }
226
+ case "settings.update": {
227
+ const row = loadSidebarPrefs(options.xrkHome);
228
+ const patch = payload.patch && typeof payload.patch === "object"
229
+ ? payload.patch
230
+ : {};
231
+ const value = { ...row.value, ...patch };
232
+ const revision = row.revision + 1;
233
+ saveSidebarPrefs(options.xrkHome, value, revision);
234
+ return ok({ value, revision });
235
+ }
236
+ case "shell.get":
237
+ return ok({
238
+ shell: process.env.ComSpec || process.env.SHELL || "cmd.exe",
239
+ displayName: "system",
240
+ });
241
+ case "git.status":
242
+ return ok(gitStatus(cwd));
243
+ case "git.branch":
244
+ return ok(gitBranches(cwd));
245
+ case "git.log": {
246
+ const limit = typeof payload.limit === "number" && payload.limit > 0
247
+ ? payload.limit
248
+ : typeof payload.count === "number" && payload.count > 0
249
+ ? payload.count
250
+ : 20;
251
+ const skip = typeof payload.skip === "number" && payload.skip > 0
252
+ ? payload.skip
253
+ : 0;
254
+ // Client expects a bare array.
255
+ return ok(gitLog(cwd, limit, skip));
256
+ }
257
+ case "git.diff": {
258
+ const filePath = typeof payload.path === "string" ? payload.path : undefined;
259
+ return ok(gitDiff(cwd, filePath, payload.staged === true));
260
+ }
261
+ case "git.commit-diff": {
262
+ const hash = typeof payload.hash === "string" ? payload.hash : "";
263
+ return ok(gitCommitDiff(cwd, hash));
264
+ }
265
+ case "git.stage": {
266
+ const filePath = typeof payload.path === "string" ? payload.path : undefined;
267
+ return ok(gitStage(cwd, filePath));
268
+ }
269
+ case "git.unstage": {
270
+ const filePath = typeof payload.path === "string" ? payload.path : undefined;
271
+ return ok(gitUnstage(cwd, filePath));
272
+ }
273
+ case "git.commit": {
274
+ const message = typeof payload.message === "string" ? payload.message : "";
275
+ return ok(gitCommit(cwd, message));
276
+ }
277
+ case "git.checkout": {
278
+ const branch = typeof payload.branch === "string" ? payload.branch : "";
279
+ return ok(gitCheckout(cwd, branch));
280
+ }
281
+ case "git.discard": {
282
+ const filePath = typeof payload.path === "string" ? payload.path : "";
283
+ return ok(gitDiscard(cwd, filePath));
284
+ }
285
+ case "git.revert": {
286
+ const hash = typeof payload.hash === "string" ? payload.hash : "";
287
+ return ok(gitRevert(cwd, hash));
288
+ }
289
+ case "git.cherry-pick": {
290
+ const hash = typeof payload.hash === "string" ? payload.hash : "";
291
+ return ok(gitCherryPick(cwd, hash));
292
+ }
293
+ case "terminal.deps":
294
+ // Repair panel reads command/profile/note when WS closes with pty-deps-missing.
295
+ return ok({
296
+ ready: true,
297
+ ok: true,
298
+ adapter: "xrk-host-pty",
299
+ platform: process.platform,
300
+ profile: null,
301
+ command: "pnpm add -D node-pty@1.2.0-beta.15",
302
+ note: "XRK Host serves /sidebar/ws/terminal via node-pty when the package is installable.",
303
+ });
304
+ case "jobs.output": {
305
+ const bridge = options.sidebarFace;
306
+ const jobId = typeof payload.jobId === "string"
307
+ ? payload.jobId
308
+ : typeof payload.id === "string"
309
+ ? payload.id
310
+ : "";
311
+ if (!bridge?.readJobOutput || !jobId) {
312
+ return ok({ text: "", truncated: false });
313
+ }
314
+ return ok(bridge.readJobOutput(jobId));
315
+ }
316
+ case "jobs.kill": {
317
+ const bridge = options.sidebarFace;
318
+ const jobId = typeof payload.jobId === "string"
319
+ ? payload.jobId
320
+ : typeof payload.id === "string"
321
+ ? payload.id
322
+ : "";
323
+ const reason = typeof payload.reason === "string" ? payload.reason : undefined;
324
+ if (!bridge?.killJob || !jobId) {
325
+ return ok({ ok: false, killed: false, reason: "no-background-job-host" });
326
+ }
327
+ return ok(await bridge.killJob(jobId, reason));
328
+ }
329
+ case "subagents.live": {
330
+ const bridge = options.sidebarFace;
331
+ const rootSessionId = typeof payload.rootSessionId === "string"
332
+ ? payload.rootSessionId.trim()
333
+ : "";
334
+ if (!bridge?.listSubagentsLive || !rootSessionId) {
335
+ return ok({ live: {} });
336
+ }
337
+ return ok(await bridge.listSubagentsLive(rootSessionId));
338
+ }
339
+ case "browser.probe": {
340
+ const rawUrl = typeof payload.url === "string"
341
+ ? payload.url
342
+ : typeof payload.href === "string"
343
+ ? payload.href
344
+ : "";
345
+ return ok(await probeBrowserUrl(rawUrl));
346
+ }
347
+ case "pty.close":
348
+ case "agent-pty.close":
349
+ // PTY lifecycle is WS-driven; explicit close is best-effort ack.
350
+ return ok({ closed: true });
351
+ case "open.external": {
352
+ const bridge = options.sidebarFace;
353
+ if (!bridge) {
354
+ return fail("unavailable", "open.external requires XRK Host Face bridge");
355
+ }
356
+ const action = payload.action === "url" ? "url" : "reveal";
357
+ const pathValue = typeof payload.path === "string" ? payload.path : undefined;
358
+ const urlValue = typeof payload.url === "string" ? payload.url : undefined;
359
+ await bridge.openExternal({
360
+ action,
361
+ ...(pathValue ? { path: pathValue } : {}),
362
+ ...(urlValue ? { url: urlValue } : {}),
363
+ });
364
+ return ok({ opened: true });
365
+ }
366
+ default:
367
+ return fail("unsupported", `sidebar method "${method}" is not implemented on XRK`);
368
+ }
369
+ }
370
+ export async function handleSidebarHost(req, res, pathname, options) {
371
+ if (await handleSidebarHtml(req, res, pathname, options)) {
372
+ return true;
373
+ }
374
+ if (pathname.startsWith("/sidebar/api/")) {
375
+ if ((req.method ?? "GET").toUpperCase() !== "POST") {
376
+ sendJson(res, 405, fail("method", "POST required"));
377
+ return true;
378
+ }
379
+ const method = decodeURIComponent(pathname.slice("/sidebar/api/".length));
380
+ const raw = await readBody(req);
381
+ let payload;
382
+ try {
383
+ payload = JSON.parse(raw || "{}");
384
+ }
385
+ catch {
386
+ sendJson(res, 400, fail("bad-request", "invalid JSON"));
387
+ return true;
388
+ }
389
+ try {
390
+ const result = await dispatchMethod(method, payload, options);
391
+ sendJson(res, 200, result);
392
+ }
393
+ catch (err) {
394
+ sendJson(res, 200, fail("http", err instanceof Error ? err.message : String(err)));
395
+ }
396
+ return true;
397
+ }
398
+ if (pathname === "/sidebar/file") {
399
+ const url = new URL(req.url ?? "/", "http://127.0.0.1");
400
+ const sessionId = url.searchParams.get("sessionId") ?? undefined;
401
+ const filePath = url.searchParams.get("path") ?? "";
402
+ const cwdOverride = url.searchParams.get("cwd") ?? undefined;
403
+ const cwd = resolveCwd(options, sessionId, cwdOverride ?? undefined);
404
+ const abs = path.isAbsolute(filePath)
405
+ ? path.resolve(filePath)
406
+ : safeJoin(cwd, filePath);
407
+ if (!abs || !existsSync(abs)) {
408
+ sendJson(res, 404, fail("not-found", "file missing"));
409
+ return true;
410
+ }
411
+ const download = url.searchParams.get("download") === "1";
412
+ const st = statSync(abs);
413
+ if (!st.isFile()) {
414
+ sendJson(res, 400, fail("not-file", "not a file"));
415
+ return true;
416
+ }
417
+ res.writeHead(200, {
418
+ "content-type": "application/octet-stream",
419
+ "content-length": st.size,
420
+ ...(download
421
+ ? {
422
+ "content-disposition": attachmentContentDisposition(path.basename(abs)),
423
+ }
424
+ : {}),
425
+ });
426
+ createReadStream(abs).pipe(res);
427
+ return true;
428
+ }
429
+ if (pathname === "/sidebar/upload") {
430
+ if ((req.method ?? "GET").toUpperCase() !== "POST") {
431
+ sendJson(res, 405, fail("method", "POST required"));
432
+ return true;
433
+ }
434
+ const url = new URL(req.url ?? "/", "http://127.0.0.1");
435
+ const contentType = (req.headers["content-type"] ?? "").split(";")[0]?.trim();
436
+ if (contentType === "application/octet-stream") {
437
+ const sessionId = url.searchParams.get("sessionId") ?? undefined;
438
+ const cwdOverride = url.searchParams.get("cwd") ?? undefined;
439
+ const dir = url.searchParams.get("dir") ?? "";
440
+ const relativePath = url.searchParams.get("relativePath") ?? "";
441
+ const cwd = resolveCwd(options, sessionId, cwdOverride ?? undefined);
442
+ const baseDir = path.isAbsolute(dir) ? path.resolve(dir) : safeJoin(cwd, dir);
443
+ if (!baseDir) {
444
+ sendJson(res, 200, fail("path", "dir escapes workspace"));
445
+ return true;
446
+ }
447
+ const rel = relativePath.replace(/^[/\\]+/, "");
448
+ const abs = safeJoin(baseDir, rel);
449
+ if (!abs) {
450
+ sendJson(res, 200, fail("path", "relativePath escapes workspace"));
451
+ return true;
452
+ }
453
+ await mkdir(path.dirname(abs), { recursive: true });
454
+ const chunks = [];
455
+ await new Promise((resolve, reject) => {
456
+ req.on("data", (c) => chunks.push(Buffer.from(c)));
457
+ req.on("end", () => resolve());
458
+ req.on("error", reject);
459
+ });
460
+ await writeFile(abs, Buffer.concat(chunks));
461
+ sendJson(res, 200, ok({ uploaded: true, path: abs }));
462
+ return true;
463
+ }
464
+ const raw = await readBody(req);
465
+ let payload;
466
+ try {
467
+ payload = JSON.parse(raw || "{}");
468
+ }
469
+ catch {
470
+ sendJson(res, 400, fail("bad-request", "invalid JSON"));
471
+ return true;
472
+ }
473
+ const sessionId = typeof payload.sessionId === "string" ? payload.sessionId : undefined;
474
+ const cwdOverride = typeof payload.cwd === "string" ? payload.cwd : undefined;
475
+ const cwd = resolveCwd(options, sessionId, cwdOverride);
476
+ const rel = typeof payload.path === "string" ? payload.path : "";
477
+ const abs = path.isAbsolute(rel) ? path.resolve(rel) : safeJoin(cwd, rel);
478
+ if (!abs) {
479
+ sendJson(res, 200, fail("path", "path escapes workspace"));
480
+ return true;
481
+ }
482
+ const content = typeof payload.content === "string"
483
+ ? payload.content
484
+ : typeof payload.data === "string"
485
+ ? Buffer.from(payload.data, "base64").toString("utf8")
486
+ : "";
487
+ await writeFile(abs, content, "utf8");
488
+ sendJson(res, 200, ok({ uploaded: true, path: abs }));
489
+ return true;
490
+ }
491
+ return false;
492
+ }
493
+ /** @deprecated Prefer {@link handleSidebarHost}. */
494
+ export const handleSidebarCompat = handleSidebarHost;
495
+ //# sourceMappingURL=sidebar-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar-adapter.js","sourceRoot":"","sources":["../../src/sidebar/sidebar-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /** Probe embeddability headers for better-sidebar browser tabs. */
2
+ export declare function probeBrowserUrl(rawUrl: string): Promise<Record<string, unknown>>;
3
+ //# sourceMappingURL=sidebar-browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar-browser.d.ts","sourceRoot":"","sources":["../../src/sidebar/sidebar-browser.ts"],"names":[],"mappings":"AAwDA,mEAAmE;AACnE,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA8ClC"}