@getpaseo/server 0.1.97 → 0.1.98
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/server/agent/agent-manager.d.ts +11 -3
- package/dist/server/server/agent/agent-manager.js +94 -22
- package/dist/server/server/agent/agent-prompt.d.ts +1 -1
- package/dist/server/server/agent/agent-prompt.js +3 -10
- package/dist/server/server/agent/agent-sdk-types.d.ts +9 -3
- package/dist/server/server/agent/create-agent/create.d.ts +2 -0
- package/dist/server/server/agent/create-agent/create.js +8 -7
- package/dist/server/server/agent/lifecycle-command.d.ts +15 -1
- package/dist/server/server/agent/lifecycle-command.js +9 -2
- package/dist/server/server/agent/mcp-server.js +254 -115
- package/dist/server/server/agent/provider-notices.d.ts +3 -0
- package/dist/server/server/agent/provider-notices.js +5 -0
- package/dist/server/server/agent/provider-registry.d.ts +2 -0
- package/dist/server/server/agent/provider-registry.js +10 -3
- package/dist/server/server/agent/provider-snapshot-manager.d.ts +3 -0
- package/dist/server/server/agent/provider-snapshot-manager.js +11 -2
- package/dist/server/server/agent/providers/claude/agent.js +257 -143
- package/dist/server/server/agent/providers/claude/models.js +7 -3
- package/dist/server/server/agent/providers/codex-app-server-agent.d.ts +4 -3
- package/dist/server/server/agent/providers/codex-app-server-agent.js +43 -1
- package/dist/server/server/agent/providers/copilot-acp-agent.js +4 -1
- package/dist/server/server/agent/providers/diagnostic-utils.d.ts +9 -0
- package/dist/server/server/agent/providers/diagnostic-utils.js +188 -0
- package/dist/server/server/agent/providers/mock-slow-provider.js +1 -1
- package/dist/server/server/agent/providers/opencode/server-manager.d.ts +29 -2
- package/dist/server/server/agent/providers/opencode/server-manager.js +83 -17
- package/dist/server/server/agent/providers/opencode-agent.d.ts +2 -0
- package/dist/server/server/agent/providers/opencode-agent.js +14 -9
- package/dist/server/server/agent/providers/pi/agent.js +27 -14
- package/dist/server/server/bootstrap.d.ts +2 -0
- package/dist/server/server/bootstrap.js +32 -2
- package/dist/server/server/managed-processes/managed-processes.d.ts +76 -0
- package/dist/server/server/managed-processes/managed-processes.js +326 -0
- package/dist/server/server/resolve-worktree-creation-intent.d.ts +3 -0
- package/dist/server/server/resolve-worktree-creation-intent.js +3 -3
- package/dist/server/server/session.d.ts +12 -1
- package/dist/server/server/session.js +230 -40
- package/dist/server/server/speech/providers/openai/runtime.js +3 -4
- package/dist/server/server/websocket-server.d.ts +1 -0
- package/dist/server/server/websocket-server.js +11 -0
- package/dist/server/server/workspace-archive-service.js +2 -3
- package/dist/server/server/workspace-directory.js +5 -5
- package/dist/server/server/workspace-reconciliation-service.js +2 -2
- package/dist/server/server/worktree-core.d.ts +1 -0
- package/dist/server/server/worktree-core.js +5 -1
- package/dist/server/services/quota-fetcher/manifest.d.ts +4 -0
- package/dist/server/services/quota-fetcher/manifest.js +47 -0
- package/dist/server/services/quota-fetcher/provider.d.ts +17 -0
- package/dist/server/services/quota-fetcher/provider.js +2 -0
- package/dist/server/services/quota-fetcher/providers/claude.d.ts +26 -0
- package/dist/server/services/quota-fetcher/providers/claude.js +217 -0
- package/dist/server/services/quota-fetcher/providers/codex.d.ts +23 -0
- package/dist/server/services/quota-fetcher/providers/codex.js +211 -0
- package/dist/server/services/quota-fetcher/providers/copilot.d.ts +17 -0
- package/dist/server/services/quota-fetcher/providers/copilot.js +75 -0
- package/dist/server/services/quota-fetcher/providers/cursor.d.ts +17 -0
- package/dist/server/services/quota-fetcher/providers/cursor.js +123 -0
- package/dist/server/services/quota-fetcher/providers/grok.d.ts +18 -0
- package/dist/server/services/quota-fetcher/providers/grok.js +89 -0
- package/dist/server/services/quota-fetcher/providers/kimi.d.ts +20 -0
- package/dist/server/services/quota-fetcher/providers/kimi.js +89 -0
- package/dist/server/services/quota-fetcher/providers/zai.d.ts +17 -0
- package/dist/server/services/quota-fetcher/providers/zai.js +58 -0
- package/dist/server/services/quota-fetcher/service.d.ts +28 -0
- package/dist/server/services/quota-fetcher/service.js +58 -0
- package/dist/server/services/quota-fetcher/usage.d.ts +22 -0
- package/dist/server/services/quota-fetcher/usage.js +49 -0
- package/dist/server/utils/directory-suggestions.js +98 -2
- package/package.json +5 -5
|
@@ -24,6 +24,15 @@ const IGNORED_SUGGESTION_DIRECTORY_NAMES = new Set([
|
|
|
24
24
|
"coverage",
|
|
25
25
|
"vendor",
|
|
26
26
|
"__pycache__",
|
|
27
|
+
".git",
|
|
28
|
+
]);
|
|
29
|
+
const TRAVERSABLE_HIDDEN_WORKSPACE_DIRECTORY_NAMES = new Set([
|
|
30
|
+
".agents",
|
|
31
|
+
".claude",
|
|
32
|
+
".codex",
|
|
33
|
+
".github",
|
|
34
|
+
".paseo",
|
|
35
|
+
".vscode",
|
|
27
36
|
]);
|
|
28
37
|
export async function searchHomeDirectories(options) {
|
|
29
38
|
const query = options.query.trim();
|
|
@@ -71,6 +80,17 @@ export async function searchWorkspaceEntries(options) {
|
|
|
71
80
|
return [];
|
|
72
81
|
}
|
|
73
82
|
const matchMode = options.matchMode ?? "fuzzy";
|
|
83
|
+
const exactEntry = queryParts.isPathQuery && matchMode === "suffix"
|
|
84
|
+
? await resolveWorkspaceExactEntry({
|
|
85
|
+
workspaceRoot,
|
|
86
|
+
query: options.query,
|
|
87
|
+
includeDirectories,
|
|
88
|
+
includeFiles,
|
|
89
|
+
})
|
|
90
|
+
: null;
|
|
91
|
+
if (exactEntry && limit <= 1) {
|
|
92
|
+
return [exactEntry];
|
|
93
|
+
}
|
|
74
94
|
if (queryParts.isPathQuery && matchMode !== "suffix") {
|
|
75
95
|
return searchWorkspaceWithinParentDirectory({
|
|
76
96
|
workspaceRoot,
|
|
@@ -84,7 +104,7 @@ export async function searchWorkspaceEntries(options) {
|
|
|
84
104
|
const searchTerm = matchMode === "suffix"
|
|
85
105
|
? [queryParts.parentPart, queryParts.searchTerm].filter(Boolean).join("/")
|
|
86
106
|
: queryParts.searchTerm;
|
|
87
|
-
|
|
107
|
+
const entries = await searchWorkspaceAcrossTree({
|
|
88
108
|
workspaceRoot,
|
|
89
109
|
searchTerm,
|
|
90
110
|
limit,
|
|
@@ -94,6 +114,53 @@ export async function searchWorkspaceEntries(options) {
|
|
|
94
114
|
maxDepth: options.maxDepth ?? DEFAULT_MAX_DEPTH,
|
|
95
115
|
maxEntriesScanned: options.maxEntriesScanned ?? DEFAULT_MAX_DIRECTORIES_SCANNED,
|
|
96
116
|
});
|
|
117
|
+
return exactEntry ? prependWorkspaceEntry(exactEntry, entries).slice(0, limit) : entries;
|
|
118
|
+
}
|
|
119
|
+
async function resolveWorkspaceExactEntry(input) {
|
|
120
|
+
const normalized = input.query
|
|
121
|
+
.trim()
|
|
122
|
+
.replace(/\\/g, "/")
|
|
123
|
+
.replace(/^\.\/+/, "")
|
|
124
|
+
.replace(/\/{2,}/g, "/");
|
|
125
|
+
if (!normalized) {
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
const candidatePath = path.isAbsolute(normalized)
|
|
129
|
+
? path.resolve(normalized)
|
|
130
|
+
: path.resolve(input.workspaceRoot, normalized);
|
|
131
|
+
let resolvedPath;
|
|
132
|
+
try {
|
|
133
|
+
resolvedPath = await realpath(candidatePath);
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
return null;
|
|
137
|
+
}
|
|
138
|
+
if (!isPathInsideRoot(input.workspaceRoot, resolvedPath)) {
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
141
|
+
const stats = await stat(resolvedPath).catch(() => null);
|
|
142
|
+
if (!stats) {
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
145
|
+
if (stats.isFile() && input.includeFiles) {
|
|
146
|
+
return {
|
|
147
|
+
path: normalizeRelativePath(input.workspaceRoot, resolvedPath),
|
|
148
|
+
kind: "file",
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
if (stats.isDirectory() && input.includeDirectories) {
|
|
152
|
+
return {
|
|
153
|
+
path: normalizeRelativePath(input.workspaceRoot, resolvedPath),
|
|
154
|
+
kind: "directory",
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
return null;
|
|
158
|
+
}
|
|
159
|
+
function prependWorkspaceEntry(entry, entries) {
|
|
160
|
+
return [
|
|
161
|
+
entry,
|
|
162
|
+
...entries.filter((candidate) => candidate.kind !== entry.kind || candidate.path !== entry.path),
|
|
163
|
+
];
|
|
97
164
|
}
|
|
98
165
|
function normalizeLimit(limit) {
|
|
99
166
|
const candidate = limit ?? DEFAULT_LIMIT;
|
|
@@ -185,6 +252,9 @@ async function searchWorkspaceWithinParentDirectory(input) {
|
|
|
185
252
|
if (entry.kind === "file" && !input.includeFiles) {
|
|
186
253
|
continue;
|
|
187
254
|
}
|
|
255
|
+
if (isHiddenWorkspaceSuggestion(entry)) {
|
|
256
|
+
continue;
|
|
257
|
+
}
|
|
188
258
|
const rankedEntry = rankWorkspaceEntry({
|
|
189
259
|
absolutePath: entry.absolutePath,
|
|
190
260
|
kind: entry.kind,
|
|
@@ -230,6 +300,10 @@ async function searchWorkspaceAcrossTree(input) {
|
|
|
230
300
|
if (entry.kind === "directory" && !input.includeDirectories) {
|
|
231
301
|
continue;
|
|
232
302
|
}
|
|
303
|
+
// Hidden directories are traversed, but not offered as suggestions.
|
|
304
|
+
if (isHiddenWorkspaceSuggestion(entry)) {
|
|
305
|
+
continue;
|
|
306
|
+
}
|
|
233
307
|
if (entry.kind === "file" && !input.includeFiles) {
|
|
234
308
|
continue;
|
|
235
309
|
}
|
|
@@ -618,7 +692,23 @@ async function listWorkspaceChildEntries(input) {
|
|
|
618
692
|
return cached.entries;
|
|
619
693
|
}
|
|
620
694
|
const dirents = await readdir(input.directory, { withFileTypes: true }).catch(() => []);
|
|
621
|
-
const candidates = dirents.filter((dirent) =>
|
|
695
|
+
const candidates = dirents.filter((dirent) => {
|
|
696
|
+
if (isIgnoredSuggestionDirectoryName(dirent.name)) {
|
|
697
|
+
return false;
|
|
698
|
+
}
|
|
699
|
+
if (isHiddenDirectoryName(dirent.name) &&
|
|
700
|
+
!dirent.isFile() &&
|
|
701
|
+
!isTraversableHiddenWorkspaceDirectoryName(dirent.name)) {
|
|
702
|
+
return false;
|
|
703
|
+
}
|
|
704
|
+
// Allowlisted hidden directories remain traversable so file links like
|
|
705
|
+
// `.claude/settings.local.json` can resolve, but hidden files (e.g.
|
|
706
|
+
// `.DS_Store`) should never be suggested.
|
|
707
|
+
if (dirent.isFile() && isHiddenDirectoryName(dirent.name)) {
|
|
708
|
+
return false;
|
|
709
|
+
}
|
|
710
|
+
return true;
|
|
711
|
+
});
|
|
622
712
|
const resolved = await Promise.all(candidates.map(async (dirent) => {
|
|
623
713
|
const candidatePath = path.join(input.directory, dirent.name);
|
|
624
714
|
const entry = await resolveWorkspaceCandidate({
|
|
@@ -687,9 +777,15 @@ async function resolveWorkspaceCandidate(input) {
|
|
|
687
777
|
function isHiddenDirectoryName(name) {
|
|
688
778
|
return name.startsWith(".");
|
|
689
779
|
}
|
|
780
|
+
function isHiddenWorkspaceSuggestion(entry) {
|
|
781
|
+
return isHiddenDirectoryName(entry.name);
|
|
782
|
+
}
|
|
690
783
|
function isIgnoredSuggestionDirectoryName(name) {
|
|
691
784
|
return IGNORED_SUGGESTION_DIRECTORY_NAMES.has(name);
|
|
692
785
|
}
|
|
786
|
+
function isTraversableHiddenWorkspaceDirectoryName(name) {
|
|
787
|
+
return TRAVERSABLE_HIDDEN_WORKSPACE_DIRECTORY_NAMES.has(name);
|
|
788
|
+
}
|
|
693
789
|
function setDirectoryListCache(cacheKey, entry) {
|
|
694
790
|
directoryListCache.set(cacheKey, entry);
|
|
695
791
|
pruneDirectoryListCache();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@getpaseo/server",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.98",
|
|
4
4
|
"description": "Paseo backend server",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist/server",
|
|
@@ -65,10 +65,10 @@
|
|
|
65
65
|
"@agentclientprotocol/sdk": "^0.17.1",
|
|
66
66
|
"@anthropic-ai/claude-agent-sdk": "^0.3.181",
|
|
67
67
|
"@anthropic-ai/sdk": "^0.104.2",
|
|
68
|
-
"@getpaseo/client": "0.1.
|
|
69
|
-
"@getpaseo/highlight": "0.1.
|
|
70
|
-
"@getpaseo/protocol": "0.1.
|
|
71
|
-
"@getpaseo/relay": "0.1.
|
|
68
|
+
"@getpaseo/client": "0.1.98",
|
|
69
|
+
"@getpaseo/highlight": "0.1.98",
|
|
70
|
+
"@getpaseo/protocol": "0.1.98",
|
|
71
|
+
"@getpaseo/relay": "0.1.98",
|
|
72
72
|
"@isaacs/ttlcache": "^2.1.4",
|
|
73
73
|
"@modelcontextprotocol/sdk": "^1.20.1",
|
|
74
74
|
"@opencode-ai/sdk": "1.14.46",
|