@opengoat/core 2026.2.14 → 2026.2.17
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/core/agents/application/agent.service.d.ts +19 -3
- package/dist/core/agents/application/agent.service.js +170 -45
- package/dist/core/agents/application/agent.service.js.map +1 -1
- package/dist/core/boards/application/board.service.d.ts +2 -0
- package/dist/core/boards/application/board.service.js +36 -2
- package/dist/core/boards/application/board.service.js.map +1 -1
- package/dist/core/bootstrap/application/bootstrap.service.js +17 -1
- package/dist/core/bootstrap/application/bootstrap.service.js.map +1 -1
- package/dist/core/opengoat/application/opengoat.service.d.ts +14 -3
- package/dist/core/opengoat/application/opengoat.service.helpers.d.ts +62 -0
- package/dist/core/opengoat/application/opengoat.service.helpers.js +403 -0
- package/dist/core/opengoat/application/opengoat.service.helpers.js.map +1 -0
- package/dist/core/opengoat/application/opengoat.service.js +653 -371
- package/dist/core/opengoat/application/opengoat.service.js.map +1 -1
- package/dist/core/orchestration/application/orchestration.service.d.ts +2 -0
- package/dist/core/orchestration/application/orchestration.service.js +150 -52
- package/dist/core/orchestration/application/orchestration.service.js.map +1 -1
- package/dist/core/providers/application/provider.service.d.ts +35 -4
- package/dist/core/providers/application/provider.service.js +823 -96
- package/dist/core/providers/application/provider.service.js.map +1 -1
- package/dist/core/providers/index.d.ts +1 -1
- package/dist/core/providers/index.js.map +1 -1
- package/dist/core/providers/loader.js +4 -2
- package/dist/core/providers/loader.js.map +1 -1
- package/dist/core/providers/openclaw-gateway-rpc.d.ts +20 -0
- package/dist/core/providers/openclaw-gateway-rpc.js +629 -0
- package/dist/core/providers/openclaw-gateway-rpc.js.map +1 -0
- package/dist/core/providers/provider-module.d.ts +11 -0
- package/dist/core/providers/provider-module.js +8 -1
- package/dist/core/providers/provider-module.js.map +1 -1
- package/dist/core/providers/providers/claude-code/index.d.ts +4 -0
- package/dist/core/providers/providers/claude-code/index.js +32 -0
- package/dist/core/providers/providers/claude-code/index.js.map +1 -0
- package/dist/core/providers/providers/claude-code/provider.d.ts +13 -0
- package/dist/core/providers/providers/claude-code/provider.js +152 -0
- package/dist/core/providers/providers/claude-code/provider.js.map +1 -0
- package/dist/core/providers/providers/codex/index.d.ts +4 -0
- package/dist/core/providers/providers/codex/index.js +32 -0
- package/dist/core/providers/providers/codex/index.js.map +1 -0
- package/dist/core/providers/providers/codex/provider.d.ts +12 -0
- package/dist/core/providers/providers/codex/provider.js +156 -0
- package/dist/core/providers/providers/codex/provider.js.map +1 -0
- package/dist/core/providers/providers/cursor/index.d.ts +4 -0
- package/dist/core/providers/providers/cursor/index.js +32 -0
- package/dist/core/providers/providers/cursor/index.js.map +1 -0
- package/dist/core/providers/providers/cursor/provider.d.ts +12 -0
- package/dist/core/providers/providers/cursor/provider.js +161 -0
- package/dist/core/providers/providers/cursor/provider.js.map +1 -0
- package/dist/core/providers/providers/gemini-cli/index.d.ts +4 -0
- package/dist/core/providers/providers/gemini-cli/index.js +36 -0
- package/dist/core/providers/providers/gemini-cli/index.js.map +1 -0
- package/dist/core/providers/providers/gemini-cli/provider.d.ts +11 -0
- package/dist/core/providers/providers/gemini-cli/provider.js +122 -0
- package/dist/core/providers/providers/gemini-cli/provider.js.map +1 -0
- package/dist/core/providers/providers/openclaw/index.js +8 -0
- package/dist/core/providers/providers/openclaw/index.js.map +1 -1
- package/dist/core/providers/providers/openclaw/provider.js +1 -0
- package/dist/core/providers/providers/openclaw/provider.js.map +1 -1
- package/dist/core/providers/providers/opencode/index.d.ts +4 -0
- package/dist/core/providers/providers/opencode/index.js +27 -0
- package/dist/core/providers/providers/opencode/index.js.map +1 -0
- package/dist/core/providers/providers/opencode/provider.d.ts +12 -0
- package/dist/core/providers/providers/opencode/provider.js +130 -0
- package/dist/core/providers/providers/opencode/provider.js.map +1 -0
- package/dist/core/providers/providers/registry.d.ts +2 -0
- package/dist/core/providers/providers/registry.js +17 -0
- package/dist/core/providers/providers/registry.js.map +1 -0
- package/dist/core/providers/registry.d.ts +2 -1
- package/dist/core/providers/registry.js +40 -0
- package/dist/core/providers/registry.js.map +1 -1
- package/dist/core/providers/types.d.ts +1 -0
- package/dist/core/scenarios/application/scenario-runner.service.js +2 -1
- package/dist/core/scenarios/application/scenario-runner.service.js.map +1 -1
- package/dist/core/sessions/application/session.service.d.ts +0 -2
- package/dist/core/sessions/application/session.service.js +10 -73
- package/dist/core/sessions/application/session.service.js.map +1 -1
- package/dist/core/sessions/domain/session.d.ts +0 -3
- package/dist/core/sessions/domain/session.js.map +1 -1
- package/dist/core/skills/application/skill.service.js +4 -1
- package/dist/core/skills/application/skill.service.js.map +1 -1
- package/dist/core/templates/assets/ceo/BOOTSTRAP.md +3 -3
- package/dist/core/templates/assets/ceo/ROLE.md +5 -3
- package/dist/core/templates/assets/skills/og-board-individual/SKILL.md +66 -89
- package/dist/core/templates/assets/skills/og-board-manager/SKILL.md +64 -45
- package/dist/core/templates/assets/skills/og-boards/SKILL.md +65 -0
- package/dist/core/templates/default-templates.d.ts +1 -2
- package/dist/core/templates/default-templates.js +22 -10
- package/dist/core/templates/default-templates.js.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1,403 @@
|
|
|
1
|
+
import { homedir } from "node:os";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { DEFAULT_AGENT_ID, normalizeAgentId } from "../../domain/agent-id.js";
|
|
4
|
+
export function containsAlreadyExistsMessage(stdout, stderr) {
|
|
5
|
+
const text = `${stdout}\n${stderr}`.toLowerCase();
|
|
6
|
+
return /\balready exists?\b/.test(text);
|
|
7
|
+
}
|
|
8
|
+
export function containsAgentNotFoundMessage(stdout, stderr) {
|
|
9
|
+
const text = `${stdout}\n${stderr}`.toLowerCase();
|
|
10
|
+
return /\b(not found|does not exist|no such agent|unknown agent|could not find|no agent found|not exist)\b/.test(text);
|
|
11
|
+
}
|
|
12
|
+
export function toErrorMessage(error) {
|
|
13
|
+
if (error instanceof Error) {
|
|
14
|
+
return error.message;
|
|
15
|
+
}
|
|
16
|
+
return String(error);
|
|
17
|
+
}
|
|
18
|
+
export function resolveInactiveMinutes(value) {
|
|
19
|
+
if (typeof value !== "number" || !Number.isFinite(value) || value <= 0) {
|
|
20
|
+
return 30;
|
|
21
|
+
}
|
|
22
|
+
return Math.floor(value);
|
|
23
|
+
}
|
|
24
|
+
const DEFAULT_MAX_PARALLEL_FLOWS = 3;
|
|
25
|
+
const MIN_MAX_PARALLEL_FLOWS = 1;
|
|
26
|
+
const MAX_MAX_PARALLEL_FLOWS = 32;
|
|
27
|
+
export function resolveMaxParallelFlows(value) {
|
|
28
|
+
if (typeof value !== "number" || !Number.isFinite(value)) {
|
|
29
|
+
return DEFAULT_MAX_PARALLEL_FLOWS;
|
|
30
|
+
}
|
|
31
|
+
const normalized = Math.floor(value);
|
|
32
|
+
if (normalized < MIN_MAX_PARALLEL_FLOWS) {
|
|
33
|
+
return MIN_MAX_PARALLEL_FLOWS;
|
|
34
|
+
}
|
|
35
|
+
if (normalized > MAX_MAX_PARALLEL_FLOWS) {
|
|
36
|
+
return MAX_MAX_PARALLEL_FLOWS;
|
|
37
|
+
}
|
|
38
|
+
return normalized;
|
|
39
|
+
}
|
|
40
|
+
export function resolveInactiveAgentNotificationTarget(value) {
|
|
41
|
+
return value === "ceo-only" ? "ceo-only" : "all-managers";
|
|
42
|
+
}
|
|
43
|
+
export function extractManagedSkillsDir(payload) {
|
|
44
|
+
if (!payload || typeof payload !== "object" || Array.isArray(payload)) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
const record = payload;
|
|
48
|
+
if (typeof record.managedSkillsDir !== "string") {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
const managedSkillsDir = record.managedSkillsDir.trim();
|
|
52
|
+
return managedSkillsDir || null;
|
|
53
|
+
}
|
|
54
|
+
export function extractOpenClawAgents(payload) {
|
|
55
|
+
if (!Array.isArray(payload)) {
|
|
56
|
+
return [];
|
|
57
|
+
}
|
|
58
|
+
const entries = [];
|
|
59
|
+
for (const entry of payload) {
|
|
60
|
+
if (!entry || typeof entry !== "object" || Array.isArray(entry)) {
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
const record = entry;
|
|
64
|
+
const id = normalizeAgentId(String(record.id ?? ""));
|
|
65
|
+
if (!id) {
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
entries.push({
|
|
69
|
+
id,
|
|
70
|
+
workspace: typeof record.workspace === "string" ? record.workspace : "",
|
|
71
|
+
agentDir: typeof record.agentDir === "string" ? record.agentDir : "",
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
return entries;
|
|
75
|
+
}
|
|
76
|
+
export function extractOpenClawAgentEntry(payload, agentId) {
|
|
77
|
+
const normalizedAgentId = normalizeAgentId(agentId);
|
|
78
|
+
if (!normalizedAgentId) {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
for (const entry of extractOpenClawAgents(payload)) {
|
|
82
|
+
if (entry.id !== normalizedAgentId) {
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
workspace: entry.workspace,
|
|
87
|
+
agentDir: entry.agentDir,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
export function pathMatches(left, right) {
|
|
93
|
+
const leftNormalized = normalizePathForCompare(left);
|
|
94
|
+
const rightNormalized = normalizePathForCompare(right);
|
|
95
|
+
if (!leftNormalized || !rightNormalized) {
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
return leftNormalized === rightNormalized;
|
|
99
|
+
}
|
|
100
|
+
export function pathIsWithin(containerPath, candidatePath) {
|
|
101
|
+
const normalizedContainer = normalizePathForCompare(containerPath);
|
|
102
|
+
const normalizedCandidate = normalizePathForCompare(candidatePath);
|
|
103
|
+
if (!normalizedContainer || !normalizedCandidate) {
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
const relative = path.relative(normalizedContainer, normalizedCandidate);
|
|
107
|
+
if (!relative) {
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
return !relative.startsWith("..") && !path.isAbsolute(relative);
|
|
111
|
+
}
|
|
112
|
+
function normalizePathForCompare(value) {
|
|
113
|
+
const trimmed = value.trim();
|
|
114
|
+
if (!trimmed) {
|
|
115
|
+
return "";
|
|
116
|
+
}
|
|
117
|
+
const resolved = path.resolve(trimmed);
|
|
118
|
+
if (process.platform === "win32") {
|
|
119
|
+
return resolved.toLowerCase();
|
|
120
|
+
}
|
|
121
|
+
return resolved;
|
|
122
|
+
}
|
|
123
|
+
export function buildTaskSessionRef(agentId, _taskId) {
|
|
124
|
+
return buildNotificationSessionRef(agentId);
|
|
125
|
+
}
|
|
126
|
+
export function buildInactiveSessionRef(managerAgentId, _subjectAgentId) {
|
|
127
|
+
return buildNotificationSessionRef(managerAgentId);
|
|
128
|
+
}
|
|
129
|
+
export function buildNotificationSessionRef(agentId) {
|
|
130
|
+
const normalizedAgentId = normalizeAgentId(agentId) || DEFAULT_AGENT_ID;
|
|
131
|
+
return `agent:${normalizedAgentId}:agent_${normalizedAgentId}_notifications`;
|
|
132
|
+
}
|
|
133
|
+
export function buildTodoTaskMessage(params) {
|
|
134
|
+
const blockers = params.task.blockers.length > 0 ? params.task.blockers.join("; ") : "None";
|
|
135
|
+
const artifacts = params.task.artifacts.length > 0
|
|
136
|
+
? params.task.artifacts
|
|
137
|
+
.map((entry) => `- ${entry.createdAt} @${entry.createdBy}: ${entry.content}`)
|
|
138
|
+
.join("\n")
|
|
139
|
+
: "- None";
|
|
140
|
+
const worklog = params.task.worklog.length > 0
|
|
141
|
+
? params.task.worklog
|
|
142
|
+
.map((entry) => `- ${entry.createdAt} @${entry.createdBy}: ${entry.content}`)
|
|
143
|
+
.join("\n")
|
|
144
|
+
: "- None";
|
|
145
|
+
const notificationTimestamp = resolveNotificationTimestamp(params.notificationTimestamp);
|
|
146
|
+
return [
|
|
147
|
+
`Task #${params.task.taskId} is assigned to you and currently in TODO. Please work on it now.`,
|
|
148
|
+
...(notificationTimestamp
|
|
149
|
+
? [`Notification timestamp: ${notificationTimestamp}`]
|
|
150
|
+
: []),
|
|
151
|
+
"",
|
|
152
|
+
`Task ID: ${params.task.taskId}`,
|
|
153
|
+
`Title: ${params.task.title}`,
|
|
154
|
+
`Description: ${params.task.description}`,
|
|
155
|
+
`Project: ${params.task.project}`,
|
|
156
|
+
`Status: ${params.task.status}`,
|
|
157
|
+
`Owner: @${params.task.owner}`,
|
|
158
|
+
`Assigned to: @${params.task.assignedTo}`,
|
|
159
|
+
`Created at: ${params.task.createdAt}`,
|
|
160
|
+
`Blockers: ${blockers}`,
|
|
161
|
+
"Artifacts:",
|
|
162
|
+
artifacts,
|
|
163
|
+
"Worklog:",
|
|
164
|
+
worklog,
|
|
165
|
+
].join("\n");
|
|
166
|
+
}
|
|
167
|
+
export function buildPendingTaskMessage(params) {
|
|
168
|
+
const blockers = params.task.blockers.length > 0 ? params.task.blockers.join("; ") : "None";
|
|
169
|
+
const artifacts = params.task.artifacts.length > 0
|
|
170
|
+
? params.task.artifacts
|
|
171
|
+
.map((entry) => `- ${entry.createdAt} @${entry.createdBy}: ${entry.content}`)
|
|
172
|
+
.join("\n")
|
|
173
|
+
: "- None";
|
|
174
|
+
const worklog = params.task.worklog.length > 0
|
|
175
|
+
? params.task.worklog
|
|
176
|
+
.map((entry) => `- ${entry.createdAt} @${entry.createdBy}: ${entry.content}`)
|
|
177
|
+
.join("\n")
|
|
178
|
+
: "- None";
|
|
179
|
+
const notificationTimestamp = resolveNotificationTimestamp(params.notificationTimestamp);
|
|
180
|
+
return [
|
|
181
|
+
`Task #${params.task.taskId} is still in PENDING after ${params.pendingMinutes} minutes.`,
|
|
182
|
+
...(notificationTimestamp
|
|
183
|
+
? [`Notification timestamp: ${notificationTimestamp}`]
|
|
184
|
+
: []),
|
|
185
|
+
"Please continue working on it or update the task status if needed.",
|
|
186
|
+
"",
|
|
187
|
+
`Task ID: ${params.task.taskId}`,
|
|
188
|
+
`Title: ${params.task.title}`,
|
|
189
|
+
`Description: ${params.task.description}`,
|
|
190
|
+
`Project: ${params.task.project}`,
|
|
191
|
+
`Status: ${params.task.status}`,
|
|
192
|
+
`Owner: @${params.task.owner}`,
|
|
193
|
+
`Assigned to: @${params.task.assignedTo}`,
|
|
194
|
+
`Created at: ${params.task.createdAt}`,
|
|
195
|
+
`Reason: ${params.task.statusReason ?? "n/a"}`,
|
|
196
|
+
`Blockers: ${blockers}`,
|
|
197
|
+
"Artifacts:",
|
|
198
|
+
artifacts,
|
|
199
|
+
"Worklog:",
|
|
200
|
+
worklog,
|
|
201
|
+
].join("\n");
|
|
202
|
+
}
|
|
203
|
+
export function buildBlockedTaskMessage(params) {
|
|
204
|
+
const blockerReason = params.task.blockers.length > 0
|
|
205
|
+
? params.task.blockers.join("; ")
|
|
206
|
+
: params.task.statusReason?.trim() || "no blocker details were provided";
|
|
207
|
+
const artifacts = params.task.artifacts.length > 0
|
|
208
|
+
? params.task.artifacts
|
|
209
|
+
.map((entry) => `- ${entry.createdAt} @${entry.createdBy}: ${entry.content}`)
|
|
210
|
+
.join("\n")
|
|
211
|
+
: "- None";
|
|
212
|
+
const worklog = params.task.worklog.length > 0
|
|
213
|
+
? params.task.worklog
|
|
214
|
+
.map((entry) => `- ${entry.createdAt} @${entry.createdBy}: ${entry.content}`)
|
|
215
|
+
.join("\n")
|
|
216
|
+
: "- None";
|
|
217
|
+
const notificationTimestamp = resolveNotificationTimestamp(params.notificationTimestamp);
|
|
218
|
+
return [
|
|
219
|
+
`Task #${params.task.taskId}, assigned to your reportee "@${params.task.assignedTo}" is blocked because of ${blockerReason}. Help unblocking it.`,
|
|
220
|
+
...(notificationTimestamp
|
|
221
|
+
? [`Notification timestamp: ${notificationTimestamp}`]
|
|
222
|
+
: []),
|
|
223
|
+
"",
|
|
224
|
+
`Task ID: ${params.task.taskId}`,
|
|
225
|
+
`Title: ${params.task.title}`,
|
|
226
|
+
`Description: ${params.task.description}`,
|
|
227
|
+
`Project: ${params.task.project}`,
|
|
228
|
+
`Status: ${params.task.status}`,
|
|
229
|
+
`Owner: @${params.task.owner}`,
|
|
230
|
+
`Assigned to: @${params.task.assignedTo}`,
|
|
231
|
+
`Created at: ${params.task.createdAt}`,
|
|
232
|
+
"Artifacts:",
|
|
233
|
+
artifacts,
|
|
234
|
+
"Worklog:",
|
|
235
|
+
worklog,
|
|
236
|
+
].join("\n");
|
|
237
|
+
}
|
|
238
|
+
export function buildInactiveAgentMessage(params) {
|
|
239
|
+
const notificationTimestamp = resolveNotificationTimestamp(params.notificationTimestamp);
|
|
240
|
+
const lastAction = typeof params.lastActionTimestamp === "number" &&
|
|
241
|
+
Number.isFinite(params.lastActionTimestamp)
|
|
242
|
+
? new Date(params.lastActionTimestamp).toISOString()
|
|
243
|
+
: null;
|
|
244
|
+
return [
|
|
245
|
+
`Your reportee "@${params.subjectAgentId}" (${params.subjectName}) has no activity in the last ${params.inactiveMinutes} minutes.`,
|
|
246
|
+
...(notificationTimestamp
|
|
247
|
+
? [`Notification timestamp: ${notificationTimestamp}`]
|
|
248
|
+
: []),
|
|
249
|
+
...(params.role ? [`Role: ${params.role}`] : []),
|
|
250
|
+
`${params.subjectName || `@${params.subjectAgentId}`} has ${params.directReporteesCount} direct and ${params.indirectReporteesCount} indirect reportees.`,
|
|
251
|
+
...(lastAction ? [`Last action: ${lastAction}`] : []),
|
|
252
|
+
"Please check in and unblock progress.",
|
|
253
|
+
].join("\n");
|
|
254
|
+
}
|
|
255
|
+
export function buildReporteeStats(manifests) {
|
|
256
|
+
const graph = buildReporteeGraph(manifests);
|
|
257
|
+
const directByManager = new Map();
|
|
258
|
+
for (const [managerAgentId, directReportees] of graph.entries()) {
|
|
259
|
+
directByManager.set(managerAgentId, directReportees.length);
|
|
260
|
+
}
|
|
261
|
+
const totalByManager = buildTotalReporteeCountByManager(graph);
|
|
262
|
+
return {
|
|
263
|
+
directByManager,
|
|
264
|
+
totalByManager,
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
function buildReporteeGraph(manifests) {
|
|
268
|
+
const graph = new Map();
|
|
269
|
+
for (const manifest of manifests) {
|
|
270
|
+
const reportsTo = manifest.metadata.reportsTo;
|
|
271
|
+
if (!reportsTo) {
|
|
272
|
+
continue;
|
|
273
|
+
}
|
|
274
|
+
const reportees = graph.get(reportsTo) ?? [];
|
|
275
|
+
reportees.push(manifest.agentId);
|
|
276
|
+
graph.set(reportsTo, reportees);
|
|
277
|
+
}
|
|
278
|
+
for (const [managerAgentId, reportees] of graph.entries()) {
|
|
279
|
+
graph.set(managerAgentId, [...reportees].sort((left, right) => left.localeCompare(right)));
|
|
280
|
+
}
|
|
281
|
+
return graph;
|
|
282
|
+
}
|
|
283
|
+
function buildTotalReporteeCountByManager(graph) {
|
|
284
|
+
const descendantsByManager = new Map();
|
|
285
|
+
const inProgress = new Set();
|
|
286
|
+
const resolveDescendants = (managerAgentId) => {
|
|
287
|
+
const cached = descendantsByManager.get(managerAgentId);
|
|
288
|
+
if (cached) {
|
|
289
|
+
return cached;
|
|
290
|
+
}
|
|
291
|
+
if (inProgress.has(managerAgentId)) {
|
|
292
|
+
return new Set();
|
|
293
|
+
}
|
|
294
|
+
inProgress.add(managerAgentId);
|
|
295
|
+
const descendants = new Set();
|
|
296
|
+
for (const reporteeAgentId of graph.get(managerAgentId) ?? []) {
|
|
297
|
+
descendants.add(reporteeAgentId);
|
|
298
|
+
const reporteeDescendants = resolveDescendants(reporteeAgentId);
|
|
299
|
+
for (const descendantAgentId of reporteeDescendants) {
|
|
300
|
+
descendants.add(descendantAgentId);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
inProgress.delete(managerAgentId);
|
|
304
|
+
descendantsByManager.set(managerAgentId, descendants);
|
|
305
|
+
return descendants;
|
|
306
|
+
};
|
|
307
|
+
const totalByManager = new Map();
|
|
308
|
+
for (const managerAgentId of graph.keys()) {
|
|
309
|
+
totalByManager.set(managerAgentId, resolveDescendants(managerAgentId).size);
|
|
310
|
+
}
|
|
311
|
+
return totalByManager;
|
|
312
|
+
}
|
|
313
|
+
function resolveNotificationTimestamp(value) {
|
|
314
|
+
if (!value) {
|
|
315
|
+
return undefined;
|
|
316
|
+
}
|
|
317
|
+
const trimmed = value.trim();
|
|
318
|
+
if (!trimmed) {
|
|
319
|
+
return undefined;
|
|
320
|
+
}
|
|
321
|
+
const parsed = new Date(trimmed);
|
|
322
|
+
if (Number.isNaN(parsed.getTime())) {
|
|
323
|
+
return undefined;
|
|
324
|
+
}
|
|
325
|
+
return parsed.toISOString();
|
|
326
|
+
}
|
|
327
|
+
export function assertAgentExists(manifests, agentId) {
|
|
328
|
+
if (manifests.some((manifest) => manifest.agentId === agentId)) {
|
|
329
|
+
return;
|
|
330
|
+
}
|
|
331
|
+
throw new Error(`Agent "${agentId}" does not exist.`);
|
|
332
|
+
}
|
|
333
|
+
export function collectAllReportees(manifests, managerAgentId) {
|
|
334
|
+
const graph = buildReporteeGraph(manifests);
|
|
335
|
+
const visited = new Set();
|
|
336
|
+
const queue = [...(graph.get(managerAgentId) ?? [])];
|
|
337
|
+
while (queue.length > 0) {
|
|
338
|
+
const current = queue.shift();
|
|
339
|
+
if (!current || current === managerAgentId || visited.has(current)) {
|
|
340
|
+
continue;
|
|
341
|
+
}
|
|
342
|
+
visited.add(current);
|
|
343
|
+
queue.push(...(graph.get(current) ?? []));
|
|
344
|
+
}
|
|
345
|
+
return [...visited].sort((left, right) => left.localeCompare(right));
|
|
346
|
+
}
|
|
347
|
+
export function prepareOpenClawCommandEnv(env) {
|
|
348
|
+
const mergedPath = dedupePathEntries([
|
|
349
|
+
...resolvePreferredOpenClawCommandPaths(env),
|
|
350
|
+
...(env.PATH?.split(path.delimiter) ?? []),
|
|
351
|
+
]);
|
|
352
|
+
return {
|
|
353
|
+
...env,
|
|
354
|
+
PATH: mergedPath.join(path.delimiter),
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
function resolvePreferredOpenClawCommandPaths(env) {
|
|
358
|
+
const homeDir = homedir();
|
|
359
|
+
const preferredPaths = [
|
|
360
|
+
path.dirname(process.execPath),
|
|
361
|
+
path.join(homeDir, ".npm-global", "bin"),
|
|
362
|
+
path.join(homeDir, ".npm", "bin"),
|
|
363
|
+
path.join(homeDir, ".local", "bin"),
|
|
364
|
+
path.join(homeDir, ".volta", "bin"),
|
|
365
|
+
path.join(homeDir, ".fnm", "current", "bin"),
|
|
366
|
+
path.join(homeDir, ".asdf", "shims"),
|
|
367
|
+
path.join(homeDir, "bin"),
|
|
368
|
+
];
|
|
369
|
+
const npmPrefixCandidates = dedupePathEntries([
|
|
370
|
+
env.npm_config_prefix ?? "",
|
|
371
|
+
env.NPM_CONFIG_PREFIX ?? "",
|
|
372
|
+
process.env.npm_config_prefix ?? "",
|
|
373
|
+
process.env.NPM_CONFIG_PREFIX ?? "",
|
|
374
|
+
]);
|
|
375
|
+
for (const prefix of npmPrefixCandidates) {
|
|
376
|
+
preferredPaths.push(path.join(prefix, "bin"));
|
|
377
|
+
}
|
|
378
|
+
if (process.platform === "darwin") {
|
|
379
|
+
preferredPaths.push("/opt/homebrew/bin", "/opt/homebrew/opt/node@22/bin", "/usr/local/opt/node@22/bin");
|
|
380
|
+
}
|
|
381
|
+
return preferredPaths;
|
|
382
|
+
}
|
|
383
|
+
function dedupePathEntries(entries) {
|
|
384
|
+
const seen = new Set();
|
|
385
|
+
const deduped = [];
|
|
386
|
+
for (const entry of entries) {
|
|
387
|
+
const trimmed = entry.trim();
|
|
388
|
+
if (!trimmed || seen.has(trimmed)) {
|
|
389
|
+
continue;
|
|
390
|
+
}
|
|
391
|
+
seen.add(trimmed);
|
|
392
|
+
deduped.push(trimmed);
|
|
393
|
+
}
|
|
394
|
+
return deduped;
|
|
395
|
+
}
|
|
396
|
+
export function isSpawnPermissionOrMissing(error) {
|
|
397
|
+
if (!(error instanceof Error)) {
|
|
398
|
+
return false;
|
|
399
|
+
}
|
|
400
|
+
const code = error.code;
|
|
401
|
+
return code === "EACCES" || code === "ENOENT";
|
|
402
|
+
}
|
|
403
|
+
//# sourceMappingURL=opengoat.service.helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opengoat.service.helpers.js","sourceRoot":"","sources":["../../../../src/core/opengoat/application/opengoat.service.helpers.ts"],"names":[],"mappings":"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"}
|