@agents-tower/core 0.1.0
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/adapters/claude.d.ts +2 -0
- package/dist/adapters/claude.js +43 -0
- package/dist/adapters/claude.js.map +1 -0
- package/dist/adapters/codex-cloud.d.ts +4 -0
- package/dist/adapters/codex-cloud.js +80 -0
- package/dist/adapters/codex-cloud.js.map +1 -0
- package/dist/adapters/codex-local.d.ts +17 -0
- package/dist/adapters/codex-local.js +180 -0
- package/dist/adapters/codex-local.js.map +1 -0
- package/dist/adapters/cursor-cloud.d.ts +2 -0
- package/dist/adapters/cursor-cloud.js +54 -0
- package/dist/adapters/cursor-cloud.js.map +1 -0
- package/dist/adapters/cursor-local.d.ts +2 -0
- package/dist/adapters/cursor-local.js +37 -0
- package/dist/adapters/cursor-local.js.map +1 -0
- package/dist/adapters/helpers.d.ts +15 -0
- package/dist/adapters/helpers.js +33 -0
- package/dist/adapters/helpers.js.map +1 -0
- package/dist/adapters/hermes.d.ts +2 -0
- package/dist/adapters/hermes.js +41 -0
- package/dist/adapters/hermes.js.map +1 -0
- package/dist/adapters/index.d.ts +2 -0
- package/dist/adapters/index.js +37 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/openclaw.d.ts +2 -0
- package/dist/adapters/openclaw.js +41 -0
- package/dist/adapters/openclaw.js.map +1 -0
- package/dist/adapters/presence.d.ts +2 -0
- package/dist/adapters/presence.js +36 -0
- package/dist/adapters/presence.js.map +1 -0
- package/dist/adapters/static-source.d.ts +15 -0
- package/dist/adapters/static-source.js +41 -0
- package/dist/adapters/static-source.js.map +1 -0
- package/dist/adapters/types.d.ts +44 -0
- package/dist/adapters/types.js +3 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/app-server.d.ts +94 -0
- package/dist/app-server.js +382 -0
- package/dist/app-server.js.map +1 -0
- package/dist/app-settings.d.ts +52 -0
- package/dist/app-settings.js +268 -0
- package/dist/app-settings.js.map +1 -0
- package/dist/appearance.d.ts +6 -0
- package/dist/appearance.js +84 -0
- package/dist/appearance.js.map +1 -0
- package/dist/aseprite.d.ts +4 -0
- package/dist/aseprite.js +42 -0
- package/dist/aseprite.js.map +1 -0
- package/dist/claude-agent-sdk.d.ts +44 -0
- package/dist/claude-agent-sdk.js +347 -0
- package/dist/claude-agent-sdk.js.map +1 -0
- package/dist/claude-home-cache.d.ts +61 -0
- package/dist/claude-home-cache.js +438 -0
- package/dist/claude-home-cache.js.map +1 -0
- package/dist/claude.d.ts +154 -0
- package/dist/claude.js +3495 -0
- package/dist/claude.js.map +1 -0
- package/dist/cloud.d.ts +2 -0
- package/dist/cloud.js +25 -0
- package/dist/cloud.js.map +1 -0
- package/dist/codex-command.d.ts +25 -0
- package/dist/codex-command.js +235 -0
- package/dist/codex-command.js.map +1 -0
- package/dist/codex-session-files.d.ts +8 -0
- package/dist/codex-session-files.js +509 -0
- package/dist/codex-session-files.js.map +1 -0
- package/dist/codex-thread-query.d.ts +14 -0
- package/dist/codex-thread-query.js +82 -0
- package/dist/codex-thread-query.js.map +1 -0
- package/dist/cursor-cloud-data.d.ts +34 -0
- package/dist/cursor-cloud-data.js +344 -0
- package/dist/cursor-cloud-data.js.map +1 -0
- package/dist/cursor-lib/local-discovery.d.ts +17 -0
- package/dist/cursor-lib/local-discovery.js +251 -0
- package/dist/cursor-lib/local-discovery.js.map +1 -0
- package/dist/cursor-lib/shared.d.ts +5 -0
- package/dist/cursor-lib/shared.js +88 -0
- package/dist/cursor-lib/shared.js.map +1 -0
- package/dist/cursor.d.ts +8 -0
- package/dist/cursor.js +1584 -0
- package/dist/cursor.js.map +1 -0
- package/dist/domain/codex-turn-semantics.d.ts +4 -0
- package/dist/domain/codex-turn-semantics.js +49 -0
- package/dist/domain/codex-turn-semantics.js.map +1 -0
- package/dist/domain/workload-policy.d.ts +8 -0
- package/dist/domain/workload-policy.js +268 -0
- package/dist/domain/workload-policy.js.map +1 -0
- package/dist/domain/workspace-activity.d.ts +10 -0
- package/dist/domain/workspace-activity.js +372 -0
- package/dist/domain/workspace-activity.js.map +1 -0
- package/dist/goal.d.ts +11 -0
- package/dist/goal.js +76 -0
- package/dist/goal.js.map +1 -0
- package/dist/hermes-hook-install.d.ts +12 -0
- package/dist/hermes-hook-install.js +335 -0
- package/dist/hermes-hook-install.js.map +1 -0
- package/dist/hermes.d.ts +97 -0
- package/dist/hermes.js +2446 -0
- package/dist/hermes.js.map +1 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.js +47 -0
- package/dist/index.js.map +1 -0
- package/dist/live-monitor-lib/events.d.ts +43 -0
- package/dist/live-monitor-lib/events.js +1463 -0
- package/dist/live-monitor-lib/events.js.map +1 -0
- package/dist/live-monitor-lib/rollout-hooks.d.ts +13 -0
- package/dist/live-monitor-lib/rollout-hooks.js +253 -0
- package/dist/live-monitor-lib/rollout-hooks.js.map +1 -0
- package/dist/live-monitor.d.ts +102 -0
- package/dist/live-monitor.js +1461 -0
- package/dist/live-monitor.js.map +1 -0
- package/dist/local-thread-selection.d.ts +2 -0
- package/dist/local-thread-selection.js +58 -0
- package/dist/local-thread-selection.js.map +1 -0
- package/dist/openclaw.d.ts +41 -0
- package/dist/openclaw.js +715 -0
- package/dist/openclaw.js.map +1 -0
- package/dist/presence.d.ts +9 -0
- package/dist/presence.js +108 -0
- package/dist/presence.js.map +1 -0
- package/dist/project-identity.d.ts +7 -0
- package/dist/project-identity.js +162 -0
- package/dist/project-identity.js.map +1 -0
- package/dist/project-paths.d.ts +23 -0
- package/dist/project-paths.js +394 -0
- package/dist/project-paths.js.map +1 -0
- package/dist/project-storage.d.ts +7 -0
- package/dist/project-storage.js +79 -0
- package/dist/project-storage.js.map +1 -0
- package/dist/room-config.d.ts +21 -0
- package/dist/room-config.js +230 -0
- package/dist/room-config.js.map +1 -0
- package/dist/services/project-discovery.d.ts +1 -0
- package/dist/services/project-discovery.js +16 -0
- package/dist/services/project-discovery.js.map +1 -0
- package/dist/services/project-live-monitor.d.ts +1 -0
- package/dist/services/project-live-monitor.js +6 -0
- package/dist/services/project-live-monitor.js.map +1 -0
- package/dist/services/project-snapshot-coordinator.d.ts +49 -0
- package/dist/services/project-snapshot-coordinator.js +152 -0
- package/dist/services/project-snapshot-coordinator.js.map +1 -0
- package/dist/services/refresh-scheduler.d.ts +8 -0
- package/dist/services/refresh-scheduler.js +44 -0
- package/dist/services/refresh-scheduler.js.map +1 -0
- package/dist/services/snapshot-assembler.d.ts +8 -0
- package/dist/services/snapshot-assembler.js +167 -0
- package/dist/services/snapshot-assembler.js.map +1 -0
- package/dist/services/thread-store.d.ts +4 -0
- package/dist/services/thread-store.js +8 -0
- package/dist/services/thread-store.js.map +1 -0
- package/dist/snapshot-lib/activity-summary.d.ts +3 -0
- package/dist/snapshot-lib/activity-summary.js +220 -0
- package/dist/snapshot-lib/activity-summary.js.map +1 -0
- package/dist/snapshot-lib/dashboard-builder.d.ts +21 -0
- package/dist/snapshot-lib/dashboard-builder.js +146 -0
- package/dist/snapshot-lib/dashboard-builder.js.map +1 -0
- package/dist/snapshot-lib/thread-summary.d.ts +27 -0
- package/dist/snapshot-lib/thread-summary.js +953 -0
- package/dist/snapshot-lib/thread-summary.js.map +1 -0
- package/dist/snapshot.d.ts +2 -0
- package/dist/snapshot.js +21 -0
- package/dist/snapshot.js.map +1 -0
- package/dist/types.d.ts +368 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/json.d.ts +4 -0
- package/dist/utils/json.js +29 -0
- package/dist/utils/json.js.map +1 -0
- package/dist/utils/text.d.ts +3 -0
- package/dist/utils/text.js +26 -0
- package/dist/utils/text.js.map +1 -0
- package/dist/web-search.d.ts +1 -0
- package/dist/web-search.js +52 -0
- package/dist/web-search.js.map +1 -0
- package/dist/workload.d.ts +1 -0
- package/dist/workload.js +12 -0
- package/dist/workload.js.map +1 -0
- package/package.json +19 -0
|
@@ -0,0 +1,394 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.isCodexChatProjectRoot = isCodexChatProjectRoot;
|
|
37
|
+
exports.canonicalizeProjectPath = canonicalizeProjectPath;
|
|
38
|
+
exports.projectPathIdentityKey = projectPathIdentityKey;
|
|
39
|
+
exports.projectLabelFromRoot = projectLabelFromRoot;
|
|
40
|
+
exports.humanizeProjectLabel = humanizeProjectLabel;
|
|
41
|
+
exports.extractCodexConfiguredProjectRoots = extractCodexConfiguredProjectRoots;
|
|
42
|
+
exports.sameProjectPath = sameProjectPath;
|
|
43
|
+
exports.filterThreadsForProject = filterThreadsForProject;
|
|
44
|
+
exports.codexProjectDiscoveryThreadLimit = codexProjectDiscoveryThreadLimit;
|
|
45
|
+
exports.normalizeDiscoveredProjectUpdatedAt = normalizeDiscoveredProjectUpdatedAt;
|
|
46
|
+
exports.mergeDiscoveredProjectLists = mergeDiscoveredProjectLists;
|
|
47
|
+
exports.discoverCodexConfiguredProjects = discoverCodexConfiguredProjects;
|
|
48
|
+
exports.discoverCodexProjects = discoverCodexProjects;
|
|
49
|
+
exports.discoverProjects = discoverProjects;
|
|
50
|
+
const promises_1 = require("node:fs/promises");
|
|
51
|
+
const node_os_1 = require("node:os");
|
|
52
|
+
const node_path_1 = require("node:path");
|
|
53
|
+
const node_process_1 = require("node:process");
|
|
54
|
+
const app_server_1 = require("./app-server");
|
|
55
|
+
const DISCOVERED_PROJECT_EPOCH_MILLISECONDS_THRESHOLD = 100_000_000_000;
|
|
56
|
+
const CODEX_CONFIG_PATH = (0, node_path_1.join)((0, node_os_1.homedir)(), ".codex", "config.toml");
|
|
57
|
+
const MIN_CODEX_PROJECT_DISCOVERY_THREAD_LIMIT = 100;
|
|
58
|
+
const MAX_CODEX_PROJECT_DISCOVERY_THREAD_LIMIT = 400;
|
|
59
|
+
const CODEX_PROJECT_DISCOVERY_THREAD_MULTIPLIER = 20;
|
|
60
|
+
const PROJECT_DISCOVERY_SOURCE_TIMEOUT_MS = 5000;
|
|
61
|
+
const TRANSIENT_PROJECT_ROOTS = new Set(["/tmp", "/var/tmp", "/dev/shm"]);
|
|
62
|
+
const CODEX_CHAT_DATE_SEGMENT = /^\d{4}-\d{2}-\d{2}$/;
|
|
63
|
+
const CODEX_CHAT_PROJECT_LABEL = "Chat";
|
|
64
|
+
async function projectDiscoveryUpdatedAt(root, fallbackUpdatedAt) {
|
|
65
|
+
const filesystemRoot = filesystemPathForProjectRoot(root);
|
|
66
|
+
const candidatePaths = [
|
|
67
|
+
filesystemRoot,
|
|
68
|
+
(0, node_path_1.join)(filesystemRoot, ".git"),
|
|
69
|
+
(0, node_path_1.join)(filesystemRoot, ".git", "index"),
|
|
70
|
+
(0, node_path_1.join)(filesystemRoot, ".git", "HEAD"),
|
|
71
|
+
(0, node_path_1.join)(filesystemRoot, ".git", "logs", "HEAD"),
|
|
72
|
+
(0, node_path_1.join)(filesystemRoot, ".codex-agents"),
|
|
73
|
+
(0, node_path_1.join)(filesystemRoot, ".codex-agents", "rooms.xml")
|
|
74
|
+
];
|
|
75
|
+
const candidateUpdatedAt = await Promise.all(candidatePaths.map(async (path) => {
|
|
76
|
+
try {
|
|
77
|
+
const entry = await (0, promises_1.stat)(path);
|
|
78
|
+
return Math.floor(entry.mtimeMs / 1000);
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
return 0;
|
|
82
|
+
}
|
|
83
|
+
}));
|
|
84
|
+
return Math.max(fallbackUpdatedAt, ...candidateUpdatedAt);
|
|
85
|
+
}
|
|
86
|
+
function trimTrailingSlash(value) {
|
|
87
|
+
return value.replace(/[\\/]+$/, "");
|
|
88
|
+
}
|
|
89
|
+
function normalizeProjectPath(value) {
|
|
90
|
+
return collapseCodexChatProjectPath(trimTrailingSlash((0, node_path_1.normalize)(value).replace(/\\/g, "/")));
|
|
91
|
+
}
|
|
92
|
+
function codexChatProjectRootForCanonicalPath(value) {
|
|
93
|
+
const segments = value.split("/");
|
|
94
|
+
for (let index = 0; index < segments.length - 1; index += 1) {
|
|
95
|
+
if (segments[index]?.toLowerCase() !== "documents"
|
|
96
|
+
|| segments[index + 1]?.toLowerCase() !== "codex") {
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
const codexIndex = index + 1;
|
|
100
|
+
const trailingSegments = segments.slice(codexIndex + 1);
|
|
101
|
+
const root = segments.slice(0, codexIndex + 1).join("/") || "/";
|
|
102
|
+
if (trailingSegments.length === 0) {
|
|
103
|
+
return root;
|
|
104
|
+
}
|
|
105
|
+
if (trailingSegments.length >= 2 && CODEX_CHAT_DATE_SEGMENT.test(trailingSegments[0] ?? "")) {
|
|
106
|
+
return root;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
function collapseCodexChatProjectPath(value) {
|
|
112
|
+
return codexChatProjectRootForCanonicalPath(value) ?? value;
|
|
113
|
+
}
|
|
114
|
+
function isCodexChatProjectRoot(input) {
|
|
115
|
+
const canonical = canonicalizeProjectPath(input);
|
|
116
|
+
return Boolean(canonical && codexChatProjectRootForCanonicalPath(canonical) === canonical);
|
|
117
|
+
}
|
|
118
|
+
function isWindowsBackedWslPath(value) {
|
|
119
|
+
return /^\/mnt\/[a-z]\//i.test(value);
|
|
120
|
+
}
|
|
121
|
+
function filesystemPathForProjectRoot(root) {
|
|
122
|
+
const match = root.match(/^\/mnt\/([a-zA-Z])\/(.*)$/);
|
|
123
|
+
if (node_process_1.platform !== "win32" || !match) {
|
|
124
|
+
return root;
|
|
125
|
+
}
|
|
126
|
+
const drive = match[1].toUpperCase();
|
|
127
|
+
const rest = match[2].replace(/\//g, "\\");
|
|
128
|
+
return `${drive}:\\${rest}`;
|
|
129
|
+
}
|
|
130
|
+
function unwrapCodexDesktopProjectPath(raw) {
|
|
131
|
+
const normalized = raw.replace(/\\/g, "/");
|
|
132
|
+
const embeddedWindowsDriveMatch = normalized.match(/(?:^|\/)([a-zA-Z]:\/.*)$/);
|
|
133
|
+
if (embeddedWindowsDriveMatch) {
|
|
134
|
+
return embeddedWindowsDriveMatch[1];
|
|
135
|
+
}
|
|
136
|
+
const embeddedWslMatches = normalized.match(/\/mnt\/[a-z]\/[^?]*/ig);
|
|
137
|
+
if (embeddedWslMatches && embeddedWslMatches.length > 0) {
|
|
138
|
+
return embeddedWslMatches[embeddedWslMatches.length - 1];
|
|
139
|
+
}
|
|
140
|
+
return raw;
|
|
141
|
+
}
|
|
142
|
+
function canonicalizeProjectPath(input) {
|
|
143
|
+
if (typeof input !== "string") {
|
|
144
|
+
return null;
|
|
145
|
+
}
|
|
146
|
+
const raw = unwrapCodexDesktopProjectPath(input.trim());
|
|
147
|
+
if (!raw) {
|
|
148
|
+
return null;
|
|
149
|
+
}
|
|
150
|
+
const extendedWindowsRaw = raw.replace(/^[/\\]+\?[/\\]/, "");
|
|
151
|
+
const nestedWindowsMountMatch = extendedWindowsRaw.match(/^[a-zA-Z]:[\\/]+mnt[\\/]+([a-zA-Z])[\\/](.*)$/);
|
|
152
|
+
if (nestedWindowsMountMatch) {
|
|
153
|
+
const drive = nestedWindowsMountMatch[1].toLowerCase();
|
|
154
|
+
const rest = nestedWindowsMountMatch[2].replace(/\\/g, "/");
|
|
155
|
+
return normalizeProjectPath(`/mnt/${drive}/${rest}`);
|
|
156
|
+
}
|
|
157
|
+
const rawWithoutExtendedPrefix = extendedWindowsRaw;
|
|
158
|
+
const windowsBackedAbsoluteWslMatch = rawWithoutExtendedPrefix.match(/^[\\/]+mnt[\\/]+([a-zA-Z])[\\/](.*)$/);
|
|
159
|
+
if (windowsBackedAbsoluteWslMatch) {
|
|
160
|
+
const drive = windowsBackedAbsoluteWslMatch[1].toLowerCase();
|
|
161
|
+
const rest = windowsBackedAbsoluteWslMatch[2].replace(/\\/g, "/");
|
|
162
|
+
return normalizeProjectPath(`/mnt/${drive}/${rest}`);
|
|
163
|
+
}
|
|
164
|
+
const windowsDriveMatch = rawWithoutExtendedPrefix.match(/^([a-zA-Z]):[\\/](.*)$/);
|
|
165
|
+
if (windowsDriveMatch) {
|
|
166
|
+
const drive = windowsDriveMatch[1].toLowerCase();
|
|
167
|
+
const rest = windowsDriveMatch[2].replace(/\\/g, "/");
|
|
168
|
+
return normalizeProjectPath(`/mnt/${drive}/${rest}`);
|
|
169
|
+
}
|
|
170
|
+
if (rawWithoutExtendedPrefix.startsWith("/")) {
|
|
171
|
+
return normalizeProjectPath(rawWithoutExtendedPrefix.replace(/\\/g, "/"));
|
|
172
|
+
}
|
|
173
|
+
return collapseCodexChatProjectPath(trimTrailingSlash(rawWithoutExtendedPrefix.replace(/\\/g, "/")));
|
|
174
|
+
}
|
|
175
|
+
function isTransientProjectRoot(root) {
|
|
176
|
+
return TRANSIENT_PROJECT_ROOTS.has(root.replace(/\\/g, "/").toLowerCase());
|
|
177
|
+
}
|
|
178
|
+
function projectPathIdentityKey(input) {
|
|
179
|
+
const canonical = canonicalizeProjectPath(input);
|
|
180
|
+
if (!canonical) {
|
|
181
|
+
return null;
|
|
182
|
+
}
|
|
183
|
+
return isWindowsBackedWslPath(canonical)
|
|
184
|
+
? canonical.toLowerCase()
|
|
185
|
+
: canonical;
|
|
186
|
+
}
|
|
187
|
+
function projectLabelFromRoot(projectRoot) {
|
|
188
|
+
if (isCodexChatProjectRoot(projectRoot)) {
|
|
189
|
+
return CODEX_CHAT_PROJECT_LABEL;
|
|
190
|
+
}
|
|
191
|
+
return humanizeProjectLabel((0, node_path_1.basename)(projectRoot) || projectRoot);
|
|
192
|
+
}
|
|
193
|
+
function humanizeProjectLabel(label) {
|
|
194
|
+
const normalized = String(label || "").trim();
|
|
195
|
+
if (!normalized) {
|
|
196
|
+
return "";
|
|
197
|
+
}
|
|
198
|
+
return normalized
|
|
199
|
+
.replace(/([A-Z]+)([A-Z][a-z])/g, "$1 $2")
|
|
200
|
+
.replace(/([a-z0-9])([A-Z])/g, "$1 $2");
|
|
201
|
+
}
|
|
202
|
+
function decodeTomlBasicString(input) {
|
|
203
|
+
return input.replace(/\\(["\\btnfr])/g, (_match, escape) => {
|
|
204
|
+
switch (escape) {
|
|
205
|
+
case "b":
|
|
206
|
+
return "\b";
|
|
207
|
+
case "t":
|
|
208
|
+
return "\t";
|
|
209
|
+
case "n":
|
|
210
|
+
return "\n";
|
|
211
|
+
case "f":
|
|
212
|
+
return "\f";
|
|
213
|
+
case "r":
|
|
214
|
+
return "\r";
|
|
215
|
+
default:
|
|
216
|
+
return escape;
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
function extractCodexConfiguredProjectRoots(configText) {
|
|
221
|
+
const roots = [];
|
|
222
|
+
const seenRoots = new Set();
|
|
223
|
+
const matcher = /^\[projects\."((?:[^"\\]|\\.)+)"\]\s*$/gm;
|
|
224
|
+
for (const match of configText.matchAll(matcher)) {
|
|
225
|
+
const decodedRoot = decodeTomlBasicString(match[1] ?? "");
|
|
226
|
+
const root = canonicalizeProjectPath(decodedRoot);
|
|
227
|
+
const identityKey = projectPathIdentityKey(root);
|
|
228
|
+
if (!root || !identityKey || seenRoots.has(identityKey)) {
|
|
229
|
+
continue;
|
|
230
|
+
}
|
|
231
|
+
seenRoots.add(identityKey);
|
|
232
|
+
roots.push(root);
|
|
233
|
+
}
|
|
234
|
+
return roots;
|
|
235
|
+
}
|
|
236
|
+
function sameProjectPath(left, right) {
|
|
237
|
+
const leftKey = projectPathIdentityKey(left);
|
|
238
|
+
const rightKey = projectPathIdentityKey(right);
|
|
239
|
+
return Boolean(leftKey && rightKey && leftKey === rightKey);
|
|
240
|
+
}
|
|
241
|
+
function filterThreadsForProject(projectRoot, threads) {
|
|
242
|
+
const canonicalRoot = canonicalizeProjectPath(projectRoot);
|
|
243
|
+
if (!canonicalRoot) {
|
|
244
|
+
return [];
|
|
245
|
+
}
|
|
246
|
+
return threads.filter((thread) => sameProjectPath(thread.cwd, canonicalRoot));
|
|
247
|
+
}
|
|
248
|
+
function codexProjectDiscoveryThreadLimit(projectLimit) {
|
|
249
|
+
const normalizedLimit = Number.isFinite(projectLimit)
|
|
250
|
+
? Math.max(1, Math.floor(projectLimit))
|
|
251
|
+
: 20;
|
|
252
|
+
return Math.max(normalizedLimit, Math.min(MAX_CODEX_PROJECT_DISCOVERY_THREAD_LIMIT, Math.max(MIN_CODEX_PROJECT_DISCOVERY_THREAD_LIMIT, normalizedLimit * CODEX_PROJECT_DISCOVERY_THREAD_MULTIPLIER)));
|
|
253
|
+
}
|
|
254
|
+
function normalizeDiscoveredProjectUpdatedAt(value) {
|
|
255
|
+
if (!Number.isFinite(value) || value <= 0) {
|
|
256
|
+
return 0;
|
|
257
|
+
}
|
|
258
|
+
return Math.floor(value >= DISCOVERED_PROJECT_EPOCH_MILLISECONDS_THRESHOLD
|
|
259
|
+
? value / 1000
|
|
260
|
+
: value);
|
|
261
|
+
}
|
|
262
|
+
function discoveredProjectSourceKinds(project) {
|
|
263
|
+
const kinds = [
|
|
264
|
+
...(Array.isArray(project.sourceKinds) ? project.sourceKinds : []),
|
|
265
|
+
project.sourceKind
|
|
266
|
+
].filter((kind) => typeof kind === "string" && kind.trim().length > 0);
|
|
267
|
+
return Array.from(new Set(kinds.length > 0 ? kinds : ["unknown"]));
|
|
268
|
+
}
|
|
269
|
+
function mergeDiscoveredProjectLists(discoveredProjectLists, limit) {
|
|
270
|
+
const merged = new Map();
|
|
271
|
+
for (const rawProject of discoveredProjectLists.flat()) {
|
|
272
|
+
const identityKey = projectPathIdentityKey(rawProject.root);
|
|
273
|
+
if (!identityKey || isTransientProjectRoot(rawProject.root)) {
|
|
274
|
+
continue;
|
|
275
|
+
}
|
|
276
|
+
const project = {
|
|
277
|
+
...rawProject,
|
|
278
|
+
updatedAt: normalizeDiscoveredProjectUpdatedAt(rawProject.updatedAt)
|
|
279
|
+
};
|
|
280
|
+
const existing = merged.get(identityKey);
|
|
281
|
+
if (existing) {
|
|
282
|
+
if (project.count > 0) {
|
|
283
|
+
existing.updatedAt = existing.count > 0
|
|
284
|
+
? Math.max(existing.updatedAt, project.updatedAt)
|
|
285
|
+
: project.updatedAt;
|
|
286
|
+
}
|
|
287
|
+
else if (existing.count === 0) {
|
|
288
|
+
existing.updatedAt = Math.max(existing.updatedAt, project.updatedAt);
|
|
289
|
+
}
|
|
290
|
+
existing.count += project.count;
|
|
291
|
+
existing.sourceKinds = Array.from(new Set([
|
|
292
|
+
...discoveredProjectSourceKinds(existing),
|
|
293
|
+
...discoveredProjectSourceKinds(project)
|
|
294
|
+
]));
|
|
295
|
+
existing.sourceKind = existing.sourceKinds[0];
|
|
296
|
+
continue;
|
|
297
|
+
}
|
|
298
|
+
const sourceKinds = discoveredProjectSourceKinds(project);
|
|
299
|
+
merged.set(identityKey, { ...project, sourceKind: sourceKinds[0], sourceKinds });
|
|
300
|
+
}
|
|
301
|
+
return [...merged.values()]
|
|
302
|
+
.sort((left, right) => {
|
|
303
|
+
const activityTier = Number(right.count > 0) - Number(left.count > 0);
|
|
304
|
+
return activityTier !== 0 ? activityTier : right.updatedAt - left.updatedAt;
|
|
305
|
+
})
|
|
306
|
+
.slice(0, limit);
|
|
307
|
+
}
|
|
308
|
+
async function discoverCodexConfiguredProjects(limit = 200, configPath = CODEX_CONFIG_PATH) {
|
|
309
|
+
let configText = "";
|
|
310
|
+
let configUpdatedAt = 0;
|
|
311
|
+
try {
|
|
312
|
+
const [rawConfig, stats] = await Promise.all([
|
|
313
|
+
(0, promises_1.readFile)(configPath, "utf8"),
|
|
314
|
+
(0, promises_1.stat)(configPath)
|
|
315
|
+
]);
|
|
316
|
+
configText = rawConfig;
|
|
317
|
+
configUpdatedAt = Math.floor(stats.mtimeMs / 1000);
|
|
318
|
+
}
|
|
319
|
+
catch {
|
|
320
|
+
return [];
|
|
321
|
+
}
|
|
322
|
+
const configuredRoots = extractCodexConfiguredProjectRoots(configText);
|
|
323
|
+
const existingProjects = (await Promise.all(configuredRoots.map(async (root) => {
|
|
324
|
+
try {
|
|
325
|
+
const entry = await (0, promises_1.stat)(filesystemPathForProjectRoot(root));
|
|
326
|
+
if (!entry.isDirectory()) {
|
|
327
|
+
return null;
|
|
328
|
+
}
|
|
329
|
+
return {
|
|
330
|
+
root,
|
|
331
|
+
updatedAt: await projectDiscoveryUpdatedAt(root, configUpdatedAt)
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
catch {
|
|
335
|
+
return null;
|
|
336
|
+
}
|
|
337
|
+
}))).filter((project) => Boolean(project));
|
|
338
|
+
return existingProjects
|
|
339
|
+
.slice(0, Math.max(0, limit))
|
|
340
|
+
.map(({ root, updatedAt }) => ({
|
|
341
|
+
root,
|
|
342
|
+
label: projectLabelFromRoot(root),
|
|
343
|
+
updatedAt,
|
|
344
|
+
count: 0
|
|
345
|
+
}));
|
|
346
|
+
}
|
|
347
|
+
async function discoverCodexProjects(limit = 20) {
|
|
348
|
+
const projects = new Map();
|
|
349
|
+
const threadLimit = codexProjectDiscoveryThreadLimit(limit);
|
|
350
|
+
await (0, app_server_1.withAppServerClient)(async (client) => {
|
|
351
|
+
const threads = await client.listThreads({ limit: threadLimit });
|
|
352
|
+
for (const thread of threads) {
|
|
353
|
+
const root = canonicalizeProjectPath(thread.cwd);
|
|
354
|
+
if (!root) {
|
|
355
|
+
continue;
|
|
356
|
+
}
|
|
357
|
+
const identityKey = projectPathIdentityKey(root);
|
|
358
|
+
if (!identityKey) {
|
|
359
|
+
continue;
|
|
360
|
+
}
|
|
361
|
+
const existing = projects.get(identityKey);
|
|
362
|
+
if (existing) {
|
|
363
|
+
existing.updatedAt = Math.max(existing.updatedAt, thread.updatedAt);
|
|
364
|
+
existing.count += 1;
|
|
365
|
+
continue;
|
|
366
|
+
}
|
|
367
|
+
projects.set(identityKey, {
|
|
368
|
+
root,
|
|
369
|
+
label: projectLabelFromRoot(root),
|
|
370
|
+
updatedAt: thread.updatedAt,
|
|
371
|
+
count: 1
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
});
|
|
375
|
+
return [...projects.values()].sort((left, right) => right.updatedAt - left.updatedAt);
|
|
376
|
+
}
|
|
377
|
+
async function discoverProjects(limit = 20) {
|
|
378
|
+
const { PROJECT_ADAPTERS } = await Promise.resolve().then(() => __importStar(require("./adapters")));
|
|
379
|
+
const withDiscoveryTimeout = (promise) => Promise.race([
|
|
380
|
+
promise,
|
|
381
|
+
new Promise((resolve) => {
|
|
382
|
+
setTimeout(() => resolve([]), PROJECT_DISCOVERY_SOURCE_TIMEOUT_MS).unref();
|
|
383
|
+
})
|
|
384
|
+
]).catch(() => []);
|
|
385
|
+
const discoveredProjectLists = await Promise.all([
|
|
386
|
+
withDiscoveryTimeout(discoverCodexConfiguredProjects(limit)),
|
|
387
|
+
withDiscoveryTimeout(discoverCodexProjects(limit)),
|
|
388
|
+
...PROJECT_ADAPTERS
|
|
389
|
+
.filter((adapter) => typeof adapter.discoverProjects === "function")
|
|
390
|
+
.map((adapter) => withDiscoveryTimeout(adapter.discoverProjects(limit)))
|
|
391
|
+
]);
|
|
392
|
+
return mergeDiscoveredProjectLists(discoveredProjectLists, limit);
|
|
393
|
+
}
|
|
394
|
+
//# sourceMappingURL=project-paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-paths.js","sourceRoot":"","sources":["../src/project-paths.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const LEGACY_PROJECT_STORAGE_DIRECTORY = ".codex-agents";
|
|
2
|
+
export declare function getProjectStorageDir(projectRoot: string): string;
|
|
3
|
+
export declare function getLegacyProjectStorageDir(projectRoot: string): string;
|
|
4
|
+
export declare function getProjectStoragePath(projectRoot: string, ...segments: string[]): string;
|
|
5
|
+
export declare function getLegacyProjectStoragePath(projectRoot: string, ...segments: string[]): string;
|
|
6
|
+
export declare function resolveReadableProjectStoragePath(projectRoot: string, ...segments: string[]): Promise<string>;
|
|
7
|
+
export declare function listExistingProjectStoragePaths(projectRoot: string, ...segments: string[]): Promise<string[]>;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LEGACY_PROJECT_STORAGE_DIRECTORY = void 0;
|
|
4
|
+
exports.getProjectStorageDir = getProjectStorageDir;
|
|
5
|
+
exports.getLegacyProjectStorageDir = getLegacyProjectStorageDir;
|
|
6
|
+
exports.getProjectStoragePath = getProjectStoragePath;
|
|
7
|
+
exports.getLegacyProjectStoragePath = getLegacyProjectStoragePath;
|
|
8
|
+
exports.resolveReadableProjectStoragePath = resolveReadableProjectStoragePath;
|
|
9
|
+
exports.listExistingProjectStoragePaths = listExistingProjectStoragePaths;
|
|
10
|
+
const node_crypto_1 = require("node:crypto");
|
|
11
|
+
const promises_1 = require("node:fs/promises");
|
|
12
|
+
const node_path_1 = require("node:path");
|
|
13
|
+
const app_settings_1 = require("./app-settings");
|
|
14
|
+
const project_paths_1 = require("./project-paths");
|
|
15
|
+
exports.LEGACY_PROJECT_STORAGE_DIRECTORY = ".codex-agents";
|
|
16
|
+
function slugifyProjectLabel(projectRoot) {
|
|
17
|
+
const canonicalRoot = (0, project_paths_1.canonicalizeProjectPath)(projectRoot) ?? projectRoot;
|
|
18
|
+
const label = (0, node_path_1.basename)(canonicalRoot).trim().toLowerCase();
|
|
19
|
+
const slug = label
|
|
20
|
+
.replace(/[^a-z0-9]+/g, "-")
|
|
21
|
+
.replace(/^-+/g, "")
|
|
22
|
+
.replace(/-+$/g, "");
|
|
23
|
+
return slug || "project";
|
|
24
|
+
}
|
|
25
|
+
function projectStorageKey(projectRoot) {
|
|
26
|
+
const canonicalRoot = (0, project_paths_1.canonicalizeProjectPath)(projectRoot) ?? projectRoot;
|
|
27
|
+
const identityKey = (0, project_paths_1.projectPathIdentityKey)(canonicalRoot) ?? canonicalRoot;
|
|
28
|
+
const hash = (0, node_crypto_1.createHash)("sha256").update(identityKey).digest("hex").slice(0, 12);
|
|
29
|
+
return `${slugifyProjectLabel(canonicalRoot)}-${hash}`;
|
|
30
|
+
}
|
|
31
|
+
async function pathExists(path) {
|
|
32
|
+
try {
|
|
33
|
+
await (0, promises_1.stat)(path);
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function getProjectStorageDir(projectRoot) {
|
|
41
|
+
return (0, node_path_1.join)((0, app_settings_1.getAppDataDirectory)(), "projects", projectStorageKey(projectRoot));
|
|
42
|
+
}
|
|
43
|
+
function getLegacyProjectStorageDir(projectRoot) {
|
|
44
|
+
return (0, node_path_1.join)(projectRoot, exports.LEGACY_PROJECT_STORAGE_DIRECTORY);
|
|
45
|
+
}
|
|
46
|
+
function getProjectStoragePath(projectRoot, ...segments) {
|
|
47
|
+
return (0, node_path_1.join)(getProjectStorageDir(projectRoot), ...segments);
|
|
48
|
+
}
|
|
49
|
+
function getLegacyProjectStoragePath(projectRoot, ...segments) {
|
|
50
|
+
return (0, node_path_1.join)(getLegacyProjectStorageDir(projectRoot), ...segments);
|
|
51
|
+
}
|
|
52
|
+
async function resolveReadableProjectStoragePath(projectRoot, ...segments) {
|
|
53
|
+
const storedPath = getProjectStoragePath(projectRoot, ...segments);
|
|
54
|
+
if (await pathExists(storedPath)) {
|
|
55
|
+
return storedPath;
|
|
56
|
+
}
|
|
57
|
+
const legacyPath = getLegacyProjectStoragePath(projectRoot, ...segments);
|
|
58
|
+
if (await pathExists(legacyPath)) {
|
|
59
|
+
return legacyPath;
|
|
60
|
+
}
|
|
61
|
+
return storedPath;
|
|
62
|
+
}
|
|
63
|
+
async function listExistingProjectStoragePaths(projectRoot, ...segments) {
|
|
64
|
+
const candidates = [
|
|
65
|
+
getProjectStoragePath(projectRoot, ...segments),
|
|
66
|
+
getLegacyProjectStoragePath(projectRoot, ...segments)
|
|
67
|
+
];
|
|
68
|
+
const existing = [];
|
|
69
|
+
for (const candidate of candidates) {
|
|
70
|
+
if (existing.includes(candidate)) {
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
if (await pathExists(candidate)) {
|
|
74
|
+
existing.push(candidate);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return existing;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=project-storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-storage.js","sourceRoot":"","sources":["../src/project-storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { RoomConfig, RoomDefinition } from "./types";
|
|
2
|
+
export declare const CONFIG_DIRECTORY = ".codex-agents";
|
|
3
|
+
export declare const ROOMS_FILE_NAME = "rooms.xml";
|
|
4
|
+
export declare const ROSTER_FILE_NAME = "agents.json";
|
|
5
|
+
export declare const PRESENCE_FILE_NAME = "presence.json";
|
|
6
|
+
export declare function getConfigDir(projectRoot: string): string;
|
|
7
|
+
export declare function getLegacyConfigDir(projectRoot: string): string;
|
|
8
|
+
export declare function getRoomsFilePath(projectRoot: string): string;
|
|
9
|
+
export declare function resolveReadableRoomsFilePath(projectRoot: string): Promise<string>;
|
|
10
|
+
export declare function getLegacyRoomsFilePath(projectRoot: string): string;
|
|
11
|
+
export declare function getRosterFilePath(projectRoot: string): string;
|
|
12
|
+
export declare function resolveReadableRosterFilePath(projectRoot: string): Promise<string>;
|
|
13
|
+
export declare function getLegacyRosterFilePath(projectRoot: string): string;
|
|
14
|
+
export declare function getPresenceFilePath(projectRoot: string): string;
|
|
15
|
+
export declare function resolveReadablePresenceFilePath(projectRoot: string): Promise<string>;
|
|
16
|
+
export declare function getLegacyPresenceFilePath(projectRoot: string): string;
|
|
17
|
+
export declare function loadRoomConfig(projectRoot: string): Promise<RoomConfig>;
|
|
18
|
+
export declare function validateRoomFile(filePath: string): Promise<RoomConfig>;
|
|
19
|
+
export declare function scaffoldRoomsFile(projectRoot: string): Promise<string>;
|
|
20
|
+
export declare function flattenRooms(roomConfig: RoomConfig): RoomDefinition[];
|
|
21
|
+
export declare function findRoomForPaths(roomConfig: RoomConfig, projectRoot: string, candidatePaths: string[]): string | null;
|