@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
|
@@ -38,6 +38,7 @@ import { redactGitForgeTokens, rehydratePatchTokens } from "./git-forge/token-ma
|
|
|
38
38
|
import { DictationStreamManager, } from "./dictation/dictation-stream-manager.js";
|
|
39
39
|
import { listAvailableEditorTargets, openInEditorTarget } from "./editor-targets.js";
|
|
40
40
|
import { getDownloadableFileInfo, listDirectoryEntries, readExplorerFile, } from "./file-explorer/service.js";
|
|
41
|
+
import { WorkspaceIgnoreStore } from "./workspace-ignore/store.js";
|
|
41
42
|
import { handleGetPublicIssue, handleListIssueComments, handleListPublicIssues, handlePostIssueComment, handleToggleIssueReaction, } from "./forum-handler.js";
|
|
42
43
|
import { handleListMyIssues } from "./list-my-issues-handler.js";
|
|
43
44
|
import { isLegacyEditorTargetId, serializeAgentStreamEvent, } from "./messages.js";
|
|
@@ -238,6 +239,7 @@ function toAgentPersistenceHandle(logger, handle) {
|
|
|
238
239
|
*/
|
|
239
240
|
export class Session {
|
|
240
241
|
constructor(options) {
|
|
242
|
+
this.workspaceIgnoreStore = null;
|
|
241
243
|
this.processingPhase = "idle";
|
|
242
244
|
// Voice mode state
|
|
243
245
|
this.isVoiceMode = false;
|
|
@@ -1316,6 +1318,12 @@ export class Session {
|
|
|
1316
1318
|
case "file_explorer_request":
|
|
1317
1319
|
await this.handleFileExplorerRequest(msg);
|
|
1318
1320
|
break;
|
|
1321
|
+
case "workspace_ignore_get_request":
|
|
1322
|
+
await this.handleWorkspaceIgnoreGetRequest(msg);
|
|
1323
|
+
break;
|
|
1324
|
+
case "workspace_ignore_set_request":
|
|
1325
|
+
await this.handleWorkspaceIgnoreSetRequest(msg);
|
|
1326
|
+
break;
|
|
1319
1327
|
case "project_icon_request":
|
|
1320
1328
|
await this.handleProjectIconRequest(msg);
|
|
1321
1329
|
break;
|
|
@@ -3371,7 +3379,7 @@ export class Session {
|
|
|
3371
3379
|
}
|
|
3372
3380
|
}
|
|
3373
3381
|
async handleDirectorySuggestionsRequest(msg) {
|
|
3374
|
-
const { query, limit, requestId, cwd, includeFiles, includeDirectories } = msg;
|
|
3382
|
+
const { query, limit, requestId, cwd, includeFiles, includeDirectories, respectGitignore, userIgnorePatterns, } = msg;
|
|
3375
3383
|
try {
|
|
3376
3384
|
const workspaceCwd = cwd?.trim();
|
|
3377
3385
|
const entries = workspaceCwd
|
|
@@ -3381,6 +3389,8 @@ export class Session {
|
|
|
3381
3389
|
limit,
|
|
3382
3390
|
includeFiles,
|
|
3383
3391
|
includeDirectories,
|
|
3392
|
+
respectGitignore,
|
|
3393
|
+
userIgnorePatterns,
|
|
3384
3394
|
})
|
|
3385
3395
|
: (await searchHomeDirectories({
|
|
3386
3396
|
homeDir: process.env.HOME ?? homedir(),
|
|
@@ -3937,6 +3947,112 @@ export class Session {
|
|
|
3937
3947
|
});
|
|
3938
3948
|
}
|
|
3939
3949
|
}
|
|
3950
|
+
getWorkspaceIgnoreStore() {
|
|
3951
|
+
if (!this.workspaceIgnoreStore) {
|
|
3952
|
+
this.workspaceIgnoreStore = new WorkspaceIgnoreStore(this.seaworkHome);
|
|
3953
|
+
}
|
|
3954
|
+
return this.workspaceIgnoreStore;
|
|
3955
|
+
}
|
|
3956
|
+
async handleWorkspaceIgnoreGetRequest(request) {
|
|
3957
|
+
const { cwd: workspaceCwd, requestId } = request;
|
|
3958
|
+
const cwd = workspaceCwd.trim();
|
|
3959
|
+
if (!cwd) {
|
|
3960
|
+
this.emit({
|
|
3961
|
+
type: "workspace_ignore_get_response",
|
|
3962
|
+
payload: {
|
|
3963
|
+
cwd: workspaceCwd,
|
|
3964
|
+
patterns: [],
|
|
3965
|
+
respectGitignore: undefined,
|
|
3966
|
+
error: "cwd is required",
|
|
3967
|
+
requestId,
|
|
3968
|
+
},
|
|
3969
|
+
});
|
|
3970
|
+
return;
|
|
3971
|
+
}
|
|
3972
|
+
try {
|
|
3973
|
+
const entry = await this.getWorkspaceIgnoreStore().get(cwd);
|
|
3974
|
+
this.emit({
|
|
3975
|
+
type: "workspace_ignore_get_response",
|
|
3976
|
+
payload: {
|
|
3977
|
+
cwd,
|
|
3978
|
+
patterns: entry.patterns,
|
|
3979
|
+
respectGitignore: entry.respectGitignore,
|
|
3980
|
+
error: null,
|
|
3981
|
+
requestId,
|
|
3982
|
+
},
|
|
3983
|
+
});
|
|
3984
|
+
}
|
|
3985
|
+
catch (error) {
|
|
3986
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
3987
|
+
this.sessionLogger.error({ err: error, cwd }, `Failed to read workspace ignore for ${cwd}`);
|
|
3988
|
+
this.emit({
|
|
3989
|
+
type: "workspace_ignore_get_response",
|
|
3990
|
+
payload: {
|
|
3991
|
+
cwd,
|
|
3992
|
+
patterns: [],
|
|
3993
|
+
respectGitignore: undefined,
|
|
3994
|
+
error: message,
|
|
3995
|
+
requestId,
|
|
3996
|
+
},
|
|
3997
|
+
});
|
|
3998
|
+
}
|
|
3999
|
+
}
|
|
4000
|
+
async handleWorkspaceIgnoreSetRequest(request) {
|
|
4001
|
+
const { cwd: workspaceCwd, patterns, respectGitignore, requestId } = request;
|
|
4002
|
+
const cwd = workspaceCwd.trim();
|
|
4003
|
+
if (!cwd) {
|
|
4004
|
+
this.emit({
|
|
4005
|
+
type: "workspace_ignore_set_response",
|
|
4006
|
+
payload: {
|
|
4007
|
+
cwd: workspaceCwd,
|
|
4008
|
+
patterns: [],
|
|
4009
|
+
respectGitignore: undefined,
|
|
4010
|
+
error: "cwd is required",
|
|
4011
|
+
requestId,
|
|
4012
|
+
},
|
|
4013
|
+
});
|
|
4014
|
+
return;
|
|
4015
|
+
}
|
|
4016
|
+
try {
|
|
4017
|
+
const store = this.getWorkspaceIgnoreStore();
|
|
4018
|
+
// Preserve respectGitignore when the client omits it (PR2 client sends it,
|
|
4019
|
+
// older clients won't). Read-then-write isn't atomic but the daemon owns
|
|
4020
|
+
// a pid lock so there's only one writer.
|
|
4021
|
+
let nextRespectGitignore = respectGitignore;
|
|
4022
|
+
if (nextRespectGitignore === undefined) {
|
|
4023
|
+
const existing = await store.get(cwd);
|
|
4024
|
+
nextRespectGitignore = existing.respectGitignore;
|
|
4025
|
+
}
|
|
4026
|
+
const written = await store.set(cwd, {
|
|
4027
|
+
patterns,
|
|
4028
|
+
respectGitignore: nextRespectGitignore,
|
|
4029
|
+
});
|
|
4030
|
+
this.emit({
|
|
4031
|
+
type: "workspace_ignore_set_response",
|
|
4032
|
+
payload: {
|
|
4033
|
+
cwd,
|
|
4034
|
+
patterns: written.patterns,
|
|
4035
|
+
respectGitignore: written.respectGitignore,
|
|
4036
|
+
error: null,
|
|
4037
|
+
requestId,
|
|
4038
|
+
},
|
|
4039
|
+
});
|
|
4040
|
+
}
|
|
4041
|
+
catch (error) {
|
|
4042
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
4043
|
+
this.sessionLogger.error({ err: error, cwd }, `Failed to write workspace ignore for ${cwd}`);
|
|
4044
|
+
this.emit({
|
|
4045
|
+
type: "workspace_ignore_set_response",
|
|
4046
|
+
payload: {
|
|
4047
|
+
cwd,
|
|
4048
|
+
patterns: [],
|
|
4049
|
+
respectGitignore: undefined,
|
|
4050
|
+
error: message,
|
|
4051
|
+
requestId,
|
|
4052
|
+
},
|
|
4053
|
+
});
|
|
4054
|
+
}
|
|
4055
|
+
}
|
|
3940
4056
|
/**
|
|
3941
4057
|
* Handle project icon request for a given cwd
|
|
3942
4058
|
*/
|