@seawork/server 1.0.20 → 1.0.21-rc.2
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/server/client/daemon-client.d.ts +7 -1
- package/dist/server/client/daemon-client.d.ts.map +1 -1
- package/dist/server/client/daemon-client.js +26 -0
- package/dist/server/client/daemon-client.js.map +1 -1
- package/dist/server/server/agent/providers/codex-app-server-agent.d.ts +9 -3
- package/dist/server/server/agent/providers/codex-app-server-agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/codex-app-server-agent.js +83 -5
- package/dist/server/server/agent/providers/codex-app-server-agent.js.map +1 -1
- package/dist/server/server/bootstrap.d.ts.map +1 -1
- package/dist/server/server/bootstrap.js +4 -0
- package/dist/server/server/bootstrap.js.map +1 -1
- package/dist/server/server/pr-review-watcher.d.ts +24 -0
- package/dist/server/server/pr-review-watcher.d.ts.map +1 -0
- package/dist/server/server/pr-review-watcher.js +281 -0
- package/dist/server/server/pr-review-watcher.js.map +1 -0
- package/dist/server/server/session.d.ts +4 -0
- package/dist/server/server/session.d.ts.map +1 -1
- package/dist/server/server/session.js +117 -1
- package/dist/server/server/session.js.map +1 -1
- package/dist/server/server/workspace-ignore/store.d.ts +17 -0
- package/dist/server/server/workspace-ignore/store.d.ts.map +1 -0
- package/dist/server/server/workspace-ignore/store.js +92 -0
- package/dist/server/server/workspace-ignore/store.js.map +1 -0
- package/dist/server/shared/messages.d.ts +584 -0
- package/dist/server/shared/messages.d.ts.map +1 -1
- package/dist/server/shared/messages.js +49 -0
- package/dist/server/shared/messages.js.map +1 -1
- package/dist/server/utils/directory-suggestions.d.ts +2 -0
- package/dist/server/utils/directory-suggestions.d.ts.map +1 -1
- package/dist/server/utils/directory-suggestions.js +81 -11
- package/dist/server/utils/directory-suggestions.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-workspace file-explorer ignore rules. Each entry is a .gitignore-syntax
|
|
3
|
+
* pattern. `respectGitignore` toggles whether the client should layer the
|
|
4
|
+
* workspace's own `.gitignore` on top of these patterns; daemon stores it but
|
|
5
|
+
* does not enforce it (filtering is client-side for PR1).
|
|
6
|
+
*/
|
|
7
|
+
export interface WorkspaceIgnoreEntry {
|
|
8
|
+
patterns: string[];
|
|
9
|
+
respectGitignore?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare class WorkspaceIgnoreStore {
|
|
12
|
+
private readonly dir;
|
|
13
|
+
constructor(seaworkHome: string);
|
|
14
|
+
get(cwd: string): Promise<WorkspaceIgnoreEntry>;
|
|
15
|
+
set(cwd: string, entry: WorkspaceIgnoreEntry): Promise<WorkspaceIgnoreEntry>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../src/server/workspace-ignore/store.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAyCD,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;gBAEjB,WAAW,EAAE,MAAM;IAIzB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA0B/C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAenF"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { promises as fs } from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
const StoredSchema = z
|
|
6
|
+
.object({
|
|
7
|
+
patterns: z.array(z.string()).default([]),
|
|
8
|
+
respectGitignore: z.boolean().optional(),
|
|
9
|
+
})
|
|
10
|
+
.passthrough();
|
|
11
|
+
function sanitize(patterns) {
|
|
12
|
+
const seen = new Set();
|
|
13
|
+
const out = [];
|
|
14
|
+
for (const raw of patterns) {
|
|
15
|
+
if (typeof raw !== "string")
|
|
16
|
+
continue;
|
|
17
|
+
const trimmed = raw.trim();
|
|
18
|
+
if (!trimmed || trimmed.startsWith("#"))
|
|
19
|
+
continue;
|
|
20
|
+
if (seen.has(trimmed))
|
|
21
|
+
continue;
|
|
22
|
+
seen.add(trimmed);
|
|
23
|
+
out.push(trimmed);
|
|
24
|
+
}
|
|
25
|
+
return out;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Hash the cwd so the storage filename is a short, filesystem-safe token
|
|
29
|
+
* (a long absolute path with `/` would otherwise blow up nested directories).
|
|
30
|
+
* Resolves symlinks where possible so two paths that share a realpath share
|
|
31
|
+
* config; falls back to the raw absolute path when realpath fails (cwd may
|
|
32
|
+
* not exist yet, e.g. on a stale entry).
|
|
33
|
+
*/
|
|
34
|
+
async function keyForCwd(cwd) {
|
|
35
|
+
const absolute = path.resolve(cwd);
|
|
36
|
+
let canonical = absolute;
|
|
37
|
+
try {
|
|
38
|
+
canonical = await fs.realpath(absolute);
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
// ignore — directory may have been removed/renamed
|
|
42
|
+
}
|
|
43
|
+
return createHash("sha1").update(canonical).digest("hex");
|
|
44
|
+
}
|
|
45
|
+
export class WorkspaceIgnoreStore {
|
|
46
|
+
constructor(seaworkHome) {
|
|
47
|
+
this.dir = path.join(seaworkHome, "workspace-ignore");
|
|
48
|
+
}
|
|
49
|
+
async get(cwd) {
|
|
50
|
+
const file = path.join(this.dir, `${await keyForCwd(cwd)}.json`);
|
|
51
|
+
let raw;
|
|
52
|
+
try {
|
|
53
|
+
raw = await fs.readFile(file, "utf-8");
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
if (error.code === "ENOENT") {
|
|
57
|
+
return { patterns: [] };
|
|
58
|
+
}
|
|
59
|
+
throw error;
|
|
60
|
+
}
|
|
61
|
+
try {
|
|
62
|
+
const parsed = StoredSchema.safeParse(JSON.parse(raw));
|
|
63
|
+
if (!parsed.success) {
|
|
64
|
+
return { patterns: [] };
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
patterns: sanitize(parsed.data.patterns),
|
|
68
|
+
respectGitignore: parsed.data.respectGitignore,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
// Corrupt JSON on disk — treat as missing config.
|
|
73
|
+
return { patterns: [] };
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
async set(cwd, entry) {
|
|
77
|
+
const next = {
|
|
78
|
+
patterns: sanitize(entry.patterns),
|
|
79
|
+
respectGitignore: entry.respectGitignore,
|
|
80
|
+
};
|
|
81
|
+
const key = await keyForCwd(cwd);
|
|
82
|
+
const file = path.join(this.dir, `${key}.json`);
|
|
83
|
+
await fs.mkdir(this.dir, { recursive: true });
|
|
84
|
+
// Tag the file with the cwd it represents so an operator scrolling the
|
|
85
|
+
// directory can tell what each hash maps to. The daemon ignores the field
|
|
86
|
+
// on read (schema is passthrough).
|
|
87
|
+
const payload = JSON.stringify({ cwd: path.resolve(cwd), ...next }, null, 2);
|
|
88
|
+
await fs.writeFile(file, `${payload}\n`, "utf-8");
|
|
89
|
+
return next;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../../src/server/workspace-ignore/store.ts"],"names":[],"mappings":"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"}
|