@rudderhq/server 0.7.24-canary.23 → 0.7.24-canary.24
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/bootstrap/register-api-routes.js +4 -4
- package/dist/bootstrap/register-api-routes.js.map +1 -1
- package/dist/routes/agents.management-routes.d.ts.map +1 -1
- package/dist/routes/agents.management-routes.js +80 -142
- package/dist/routes/agents.management-routes.js.map +1 -1
- package/dist/routes/calendar.d.ts +2 -1
- package/dist/routes/calendar.d.ts.map +1 -1
- package/dist/routes/calendar.js +34 -148
- package/dist/routes/calendar.js.map +1 -1
- package/dist/routes/costs.d.ts +2 -1
- package/dist/routes/costs.d.ts.map +1 -1
- package/dist/routes/costs.js +41 -25
- package/dist/routes/costs.js.map +1 -1
- package/dist/routes/goals.d.ts +2 -1
- package/dist/routes/goals.d.ts.map +1 -1
- package/dist/routes/goals.js +52 -106
- package/dist/routes/goals.js.map +1 -1
- package/dist/routes/messenger.d.ts +2 -1
- package/dist/routes/messenger.d.ts.map +1 -1
- package/dist/routes/messenger.js +28 -36
- package/dist/routes/messenger.js.map +1 -1
- package/dist/services/calendar-native-bridge.d.ts +9 -0
- package/dist/services/calendar-native-bridge.d.ts.map +1 -0
- package/dist/services/calendar-native-bridge.js +10 -0
- package/dist/services/calendar-native-bridge.js.map +1 -0
- package/dist/services/chat-organization-branding-rust-idempotency.test.js +2 -0
- package/dist/services/chat-organization-branding-rust-idempotency.test.js.map +1 -1
- package/dist/services/heartbeat-run-reference.d.ts +1 -0
- package/dist/services/heartbeat-run-reference.d.ts.map +1 -1
- package/dist/services/heartbeat-run-reference.js +6 -4
- package/dist/services/heartbeat-run-reference.js.map +1 -1
- package/dist/services/messenger-saved-views.js +2 -2
- package/dist/services/messenger-saved-views.js.map +1 -1
- package/dist/services/messenger-state-bridge.d.ts +60 -0
- package/dist/services/messenger-state-bridge.d.ts.map +1 -0
- package/dist/services/messenger-state-bridge.js +36 -0
- package/dist/services/messenger-state-bridge.js.map +1 -0
- package/dist/services/messenger-state-bridge.test.d.ts +2 -0
- package/dist/services/messenger-state-bridge.test.d.ts.map +1 -0
- package/dist/services/messenger-state-bridge.test.js +21 -0
- package/dist/services/messenger-state-bridge.test.js.map +1 -0
- package/dist/services/run-read-bridge.d.ts +57 -0
- package/dist/services/run-read-bridge.d.ts.map +1 -0
- package/dist/services/run-read-bridge.js +51 -0
- package/dist/services/run-read-bridge.js.map +1 -0
- package/dist/services/run-read-bridge.test.d.ts +2 -0
- package/dist/services/run-read-bridge.test.d.ts.map +1 -0
- package/dist/services/run-read-bridge.test.js +99 -0
- package/dist/services/run-read-bridge.test.js.map +1 -0
- package/dist/services/run-reference-visibility.d.ts +2 -0
- package/dist/services/run-reference-visibility.d.ts.map +1 -0
- package/dist/services/run-reference-visibility.js +52 -0
- package/dist/services/run-reference-visibility.js.map +1 -0
- package/dist/services/rust-foundation-bridge.d.ts +28 -0
- package/dist/services/rust-foundation-bridge.d.ts.map +1 -1
- package/dist/services/rust-foundation-bridge.js +191 -0
- package/dist/services/rust-foundation-bridge.js.map +1 -1
- package/dist/services/rust-foundation-bridge.test.js +41 -2
- package/dist/services/rust-foundation-bridge.test.js.map +1 -1
- package/package.json +13 -13
- package/resources/native/aarch64-apple-darwin/rudder-server-foundation +0 -0
- package/resources/native/aarch64-pc-windows-msvc/migration-preflight.exe +0 -0
- package/resources/native/aarch64-pc-windows-msvc/rudder-server-foundation.exe +0 -0
- package/resources/native/aarch64-unknown-linux-gnu/rudder-server-foundation +0 -0
- package/resources/native/x86_64-apple-darwin/rudder-server-foundation +0 -0
- package/resources/native/x86_64-pc-windows-msvc/migration-preflight.exe +0 -0
- package/resources/native/x86_64-pc-windows-msvc/rudder-server-foundation.exe +0 -0
- package/resources/native/x86_64-unknown-linux-gnu/rudder-server-foundation +0 -0
|
@@ -79,10 +79,10 @@ export function registerApiRoutes(db, opts, workspacePreview, chatBackgroundRunt
|
|
|
79
79
|
api.use(onboardingRoutes(db, rustFoundationBridge));
|
|
80
80
|
api.use(productAnalyticsRoutes(db));
|
|
81
81
|
api.use(issueRoutes(db, opts.storageService));
|
|
82
|
-
api.use(messengerRoutes(db));
|
|
82
|
+
api.use(messengerRoutes(db, rustFoundationBridge));
|
|
83
83
|
api.use(chatRoutes(db, opts.storageService, chatBackgroundRuntime, opts.registerNetworkWaitingRunHandler, rustFoundationBridge));
|
|
84
84
|
api.use(automationRoutes(db));
|
|
85
|
-
api.use(calendarRoutes(db));
|
|
85
|
+
api.use(calendarRoutes(db, rustFoundationBridge));
|
|
86
86
|
api.use(runWorkspaceRoutes(db));
|
|
87
87
|
api.use(integrationRoutes(db));
|
|
88
88
|
api.use(managedMcpConnectionRoutes(db, {
|
|
@@ -97,11 +97,11 @@ export function registerApiRoutes(db, opts, workspacePreview, chatBackgroundRunt
|
|
|
97
97
|
},
|
|
98
98
|
hostEnv: opts.mcpHostEnv ?? process.env,
|
|
99
99
|
}));
|
|
100
|
-
api.use(goalRoutes(db));
|
|
100
|
+
api.use(goalRoutes(db, rustFoundationBridge));
|
|
101
101
|
api.use(approvalRoutes(db, rustFoundationBridge));
|
|
102
102
|
api.use(requestRoutes(db));
|
|
103
103
|
api.use(secretRoutes(db));
|
|
104
|
-
api.use(costRoutes(db));
|
|
104
|
+
api.use(costRoutes(db, rustFoundationBridge));
|
|
105
105
|
api.use(activityRoutes(db));
|
|
106
106
|
api.use(runIntelligenceRoutes(db));
|
|
107
107
|
api.use(dashboardRoutes(db));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-api-routes.js","sourceRoot":"","sources":["../../src/bootstrap/register-api-routes.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"register-api-routes.js","sourceRoot":"","sources":["../../src/bootstrap/register-api-routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.management-routes.d.ts","sourceRoot":"","sources":["../../src/routes/agents.management-routes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"agents.management-routes.d.ts","sourceRoot":"","sources":["../../src/routes/agents.management-routes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAiBvC,OAAO,EAAE,MAAM,EAAqC,MAAM,SAAS,CAAC;AAkBpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAG1D,KAAK,2BAA2B,GAAG;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,EAAE,CAAC;IACP,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAOF,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,2BAA2B,QAo9C7E"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { runClaudeLogin } from "@rudderhq/agent-runtime-claude-local/server";
|
|
2
|
-
import { agents as agentsTable, organizations } from "@rudderhq/db";
|
|
3
|
-
import { createAgentHireSchema, createAgentKeySchema, createAgentSchema, createDelegationRunSchema, toAgentRun,
|
|
2
|
+
import { agents as agentsTable, heartbeatRuns, organizations } from "@rudderhq/db";
|
|
3
|
+
import { createAgentHireSchema, createAgentKeySchema, createAgentSchema, createDelegationRunSchema, toAgentRun, toHeartbeatRun, updateAgentInstructionsBundleSchema, updateAgentInstructionsPathSchema, updateAgentPermissionsSchema, updateAgentSchema, upsertAgentInstructionsFileSchema, wakeAgentSchema } from "@rudderhq/shared";
|
|
4
4
|
import { asc, eq } from "drizzle-orm";
|
|
5
5
|
import multer from "multer";
|
|
6
6
|
import { randomUUID } from "node:crypto";
|
|
@@ -14,9 +14,10 @@ import { delegationRunService } from "../services/delegation-runs.js";
|
|
|
14
14
|
import { resolveHeartbeatRunIdReference } from "../services/heartbeat-run-reference.js";
|
|
15
15
|
import { issueService, logActivity, syncInstructionsBundleConfigFromFilePath } from "../services/index.js";
|
|
16
16
|
import { sendLiveRunRead } from "../services/live-run-read-bridge.js";
|
|
17
|
+
import { requireRunReadAccess, runReadRedaction, sendRunRead } from "../services/run-read-bridge.js";
|
|
17
18
|
import { assertBoard, assertCompanyAccess, getActorInfo, getAuthorizedOrgScope } from "./authz.js";
|
|
18
19
|
export function registerAgentManagementRoutes(ctx) {
|
|
19
|
-
const { router, db, storage, rustFoundationBridge, svc, assets, access, approvalsSvc, budgets, heartbeat, issueApprovalsSvc, secretsSvc, instructions, organizationSkills, intelligenceProfiles, intelligenceRuntimeChain, workspaceOperations, instanceSettings, avatarUpload, strictSecretsMode, persistReconciledInstructionsBundle, getCurrentUserRedactionOptions, canCreateAgents, buildAgentAccessState, assertCanCreateAgentsForCompany, parseSourceIssueIds, applyCreateDefaultsByAdapterType, resolveDesiredSkillAssignment, assertAdapterConfigConstraints, assertAgentAvatarAssetBelongsToOrg, materializeDefaultInstructionsBundleForNewAgent, applyDefaultAgentTaskAssignGrant, buildAgentDetail, assertCanUpdateAgent, runSingleFileUpload, AGENT_AVATAR_CONTENT_TYPES, compressAgentAvatar, assertCanManageInstructionsPath, asRecord, asNonEmptyString, resolveInstructionsFilePath, assertCanReadAgent, preserveInstructionsBundleConfig, summarizeAgentUpdateDetails, redactAgentConfiguration, redactAgentForResponse, stripPersistedSkillSyncConfig, withRuntimeSkillEntries, DEFAULT_INSTRUCTIONS_PATH_KEYS, DEFAULT_MANAGED_INSTRUCTIONS_ADAPTER_TYPES, KNOWN_INSTRUCTIONS_PATH_KEYS, KNOWN_INSTRUCTIONS_BUNDLE_KEYS, } = ctx;
|
|
20
|
+
const { router, db, storage, rustFoundationBridge, svc, assets, access, approvalsSvc, budgets, heartbeat, issueApprovalsSvc, secretsSvc, instructions, organizationSkills, intelligenceProfiles, intelligenceRuntimeChain, workspaceOperations, instanceSettings, avatarUpload, strictSecretsMode, persistReconciledInstructionsBundle, getCurrentUserRedactionOptions, getRunReadEnvironment = runReadRedaction, canCreateAgents, buildAgentAccessState, assertCanCreateAgentsForCompany, parseSourceIssueIds, applyCreateDefaultsByAdapterType, resolveDesiredSkillAssignment, assertAdapterConfigConstraints, assertAgentAvatarAssetBelongsToOrg, materializeDefaultInstructionsBundleForNewAgent, applyDefaultAgentTaskAssignGrant, buildAgentDetail, assertCanUpdateAgent, runSingleFileUpload, AGENT_AVATAR_CONTENT_TYPES, compressAgentAvatar, assertCanManageInstructionsPath, asRecord, asNonEmptyString, resolveInstructionsFilePath, assertCanReadAgent, preserveInstructionsBundleConfig, summarizeAgentUpdateDetails, redactAgentConfiguration, redactAgentForResponse, stripPersistedSkillSyncConfig, withRuntimeSkillEntries, DEFAULT_INSTRUCTIONS_PATH_KEYS, DEFAULT_MANAGED_INSTRUCTIONS_ADAPTER_TYPES, KNOWN_INSTRUCTIONS_PATH_KEYS, KNOWN_INSTRUCTIONS_BUNDLE_KEYS, } = ctx;
|
|
20
21
|
const delegation = delegationRunService(db, { heartbeat, access });
|
|
21
22
|
async function ensureFirstAgentIntelligenceDefaults(orgId, agent) {
|
|
22
23
|
const [firstAgent] = await db
|
|
@@ -911,48 +912,31 @@ export function registerAgentManagementRoutes(ctx) {
|
|
|
911
912
|
});
|
|
912
913
|
res.json(result);
|
|
913
914
|
});
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
915
|
+
function listRunsForRequest(surface) {
|
|
916
|
+
return async (req, res) => {
|
|
917
|
+
const orgId = req.params.orgId;
|
|
918
|
+
assertCompanyAccess(req, orgId);
|
|
919
|
+
const start = req.query.startDate ? new Date(req.query.startDate) : null;
|
|
920
|
+
const end = req.query.endDate ? new Date(req.query.endDate) : null;
|
|
921
|
+
const startDate = start && Number.isFinite(start.getTime()) ? start.toISOString() : null;
|
|
922
|
+
const endDate = end && Number.isFinite(end.getTime()) ? end.toISOString() : null;
|
|
923
|
+
const limitParam = req.query.limit;
|
|
924
|
+
await sendRunRead(res, rustFoundationBridge, req.actor, orgId, {
|
|
925
|
+
operation: "list", surface,
|
|
926
|
+
agentId: req.query.agentId || null,
|
|
927
|
+
goalId: typeof req.query.goalId === "string" && /^[0-9a-f-]{36}$/i.test(req.query.goalId) ? req.query.goalId : null,
|
|
928
|
+
startDate, endDate,
|
|
929
|
+
limit: limitParam ? Math.max(1, Math.min(1000, parseInt(limitParam, 10) || 100)) : startDate || endDate ? null : 100,
|
|
930
|
+
});
|
|
931
|
+
};
|
|
932
|
+
}
|
|
933
|
+
router.get("/orgs/:orgId/heartbeat-runs", listRunsForRequest("heartbeat"));
|
|
934
|
+
router.get("/orgs/:orgId/agent-runs", listRunsForRequest("agent"));
|
|
926
935
|
router.get("/orgs/:orgId/agent-runs/overview", async (req, res) => {
|
|
927
936
|
const orgId = req.params.orgId;
|
|
928
937
|
assertCompanyAccess(req, orgId);
|
|
929
|
-
|
|
930
|
-
res.json({
|
|
931
|
-
latestByAgent: toAgentRuns(overview.latestByAgent),
|
|
932
|
-
recent: toAgentRuns(overview.recent),
|
|
933
|
-
});
|
|
938
|
+
await sendRunRead(res, rustFoundationBridge, req.actor, orgId, { operation: "overview" });
|
|
934
939
|
});
|
|
935
|
-
async function listRunsForRequest(req, orgId) {
|
|
936
|
-
const agentId = req.query.agentId;
|
|
937
|
-
const limitParam = req.query.limit;
|
|
938
|
-
const startDateParam = req.query.startDate;
|
|
939
|
-
const endDateParam = req.query.endDate;
|
|
940
|
-
const goalIdParam = req.query.goalId;
|
|
941
|
-
const startDate = startDateParam ? new Date(startDateParam) : undefined;
|
|
942
|
-
const endDate = endDateParam ? new Date(endDateParam) : undefined;
|
|
943
|
-
const filters = {
|
|
944
|
-
startDate: startDate && Number.isFinite(startDate.getTime()) ? startDate : undefined,
|
|
945
|
-
endDate: endDate && Number.isFinite(endDate.getTime()) ? endDate : undefined,
|
|
946
|
-
goalId: goalIdParam && /^[0-9a-f-]{36}$/i.test(goalIdParam) ? goalIdParam : undefined,
|
|
947
|
-
};
|
|
948
|
-
const hasDateRange = Boolean(filters.startDate || filters.endDate);
|
|
949
|
-
const limit = limitParam
|
|
950
|
-
? Math.max(1, Math.min(1000, parseInt(limitParam, 10) || 100))
|
|
951
|
-
: hasDateRange
|
|
952
|
-
? undefined
|
|
953
|
-
: 100;
|
|
954
|
-
return heartbeat.list(orgId, agentId, limit, filters);
|
|
955
|
-
}
|
|
956
940
|
router.get("/orgs/:orgId/live-runs", async (req, res) => {
|
|
957
941
|
const orgId = req.params.orgId;
|
|
958
942
|
assertCompanyAccess(req, orgId);
|
|
@@ -967,24 +951,28 @@ export function registerAgentManagementRoutes(ctx) {
|
|
|
967
951
|
minCount,
|
|
968
952
|
});
|
|
969
953
|
});
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
954
|
+
function detailForRequest(surface, notFoundMessage) {
|
|
955
|
+
return async (req, res) => {
|
|
956
|
+
const run = await getAuthorizedRunReference(req, res, notFoundMessage);
|
|
957
|
+
if (!run)
|
|
958
|
+
return;
|
|
959
|
+
await sendRunRead(res, rustFoundationBridge, req.actor, run.orgId, {
|
|
960
|
+
operation: "detail", surface, runId: run.id,
|
|
961
|
+
redaction: getRunReadEnvironment(),
|
|
962
|
+
});
|
|
963
|
+
};
|
|
964
|
+
}
|
|
965
|
+
router.get("/heartbeat-runs/:runId", detailForRequest("heartbeat", "Heartbeat run not found"));
|
|
966
|
+
router.get("/agent-runs/:runId", detailForRequest("agent", "Agent run not found"));
|
|
967
|
+
async function getAuthorizedRunReference(req, res, notFoundMessage) {
|
|
983
968
|
const runId = await resolveHeartbeatRunIdReference(db, req.params.runId, {
|
|
984
|
-
|
|
985
|
-
notFoundMessage,
|
|
969
|
+
sideChatOwnerId: req.actor.type === "board" ? (req.actor.userId ?? "local-board") : null,
|
|
970
|
+
orgIds: getAuthorizedOrgScope(req), notFoundMessage,
|
|
986
971
|
});
|
|
987
|
-
|
|
972
|
+
// Only identity is read here for the existing access check. Native code
|
|
973
|
+
// rereads the org-scoped row and owns every public payload field.
|
|
974
|
+
const [run] = await db.select({ id: heartbeatRuns.id, orgId: heartbeatRuns.orgId })
|
|
975
|
+
.from(heartbeatRuns).where(eq(heartbeatRuns.id, runId)).limit(1);
|
|
988
976
|
if (!run) {
|
|
989
977
|
res.status(404).json({ error: notFoundMessage });
|
|
990
978
|
return null;
|
|
@@ -1002,6 +990,7 @@ export function registerAgentManagementRoutes(ctx) {
|
|
|
1002
990
|
});
|
|
1003
991
|
async function cancelRunForRequest(req, notFoundMessage) {
|
|
1004
992
|
const runId = await resolveHeartbeatRunIdReference(db, req.params.runId, {
|
|
993
|
+
sideChatOwnerId: req.actor.type === "board" ? (req.actor.userId ?? "local-board") : null,
|
|
1005
994
|
orgIds: getAuthorizedOrgScope(req),
|
|
1006
995
|
notFoundMessage,
|
|
1007
996
|
});
|
|
@@ -1039,6 +1028,7 @@ export function registerAgentManagementRoutes(ctx) {
|
|
|
1039
1028
|
});
|
|
1040
1029
|
async function retryRunForRequest(req, res, notFoundMessage) {
|
|
1041
1030
|
const runId = await resolveHeartbeatRunIdReference(db, req.params.runId, {
|
|
1031
|
+
sideChatOwnerId: req.actor.type === "board" ? (req.actor.userId ?? "local-board") : null,
|
|
1042
1032
|
orgIds: getAuthorizedOrgScope(req),
|
|
1043
1033
|
notFoundMessage,
|
|
1044
1034
|
});
|
|
@@ -1068,39 +1058,23 @@ export function registerAgentManagementRoutes(ctx) {
|
|
|
1068
1058
|
});
|
|
1069
1059
|
return run;
|
|
1070
1060
|
}
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
orgIds: getAuthorizedOrgScope(req),
|
|
1086
|
-
notFoundMessage,
|
|
1087
|
-
});
|
|
1088
|
-
const run = await heartbeat.getRun(runId);
|
|
1089
|
-
if (!run) {
|
|
1090
|
-
res.status(404).json({ error: notFoundMessage });
|
|
1091
|
-
return null;
|
|
1092
|
-
}
|
|
1093
|
-
assertCompanyAccess(req, run.orgId);
|
|
1094
|
-
const afterSeq = Number(req.query.afterSeq ?? 0);
|
|
1095
|
-
const limit = Number(req.query.limit ?? 200);
|
|
1096
|
-
const events = await heartbeat.listEvents(runId, Number.isFinite(afterSeq) ? afterSeq : 0, Number.isFinite(limit) ? limit : 200);
|
|
1097
|
-
const currentUserRedactionOptions = await getCurrentUserRedactionOptions();
|
|
1098
|
-
const redactedEvents = events.map((event) => redactCurrentUserValue({
|
|
1099
|
-
...event,
|
|
1100
|
-
payload: redactEventPayload(event.payload),
|
|
1101
|
-
}, currentUserRedactionOptions));
|
|
1102
|
-
return redactedEvents;
|
|
1061
|
+
function eventsForRequest(notFoundMessage) {
|
|
1062
|
+
return async (req, res) => {
|
|
1063
|
+
const run = await getAuthorizedRunReference(req, res, notFoundMessage);
|
|
1064
|
+
if (!run)
|
|
1065
|
+
return;
|
|
1066
|
+
const afterSeq = Number(req.query.afterSeq ?? 0);
|
|
1067
|
+
const limit = Number(req.query.limit ?? 200);
|
|
1068
|
+
await sendRunRead(res, rustFoundationBridge, req.actor, run.orgId, {
|
|
1069
|
+
operation: "events", runId: run.id,
|
|
1070
|
+
afterSeq: Number.isFinite(afterSeq) ? afterSeq : 0,
|
|
1071
|
+
limit: Number.isFinite(limit) ? limit : 200,
|
|
1072
|
+
redaction: getRunReadEnvironment(),
|
|
1073
|
+
});
|
|
1074
|
+
};
|
|
1103
1075
|
}
|
|
1076
|
+
router.get("/heartbeat-runs/:runId/events", eventsForRequest("Heartbeat run not found"));
|
|
1077
|
+
router.get("/agent-runs/:runId/events", eventsForRequest("Agent run not found"));
|
|
1104
1078
|
router.get("/heartbeat-runs/:runId/log", async (req, res) => {
|
|
1105
1079
|
const result = await readRunLogForRequest(req, res, "Heartbeat run not found");
|
|
1106
1080
|
if (!result)
|
|
@@ -1117,6 +1091,7 @@ export function registerAgentManagementRoutes(ctx) {
|
|
|
1117
1091
|
});
|
|
1118
1092
|
async function readRunLogForRequest(req, res, notFoundMessage) {
|
|
1119
1093
|
const runId = await resolveHeartbeatRunIdReference(db, req.params.runId, {
|
|
1094
|
+
sideChatOwnerId: req.actor.type === "board" ? (req.actor.userId ?? "local-board") : null,
|
|
1120
1095
|
orgIds: getAuthorizedOrgScope(req),
|
|
1121
1096
|
notFoundMessage,
|
|
1122
1097
|
});
|
|
@@ -1134,34 +1109,19 @@ export function registerAgentManagementRoutes(ctx) {
|
|
|
1134
1109
|
});
|
|
1135
1110
|
return result;
|
|
1136
1111
|
}
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
res.json(operations);
|
|
1148
|
-
});
|
|
1149
|
-
async function listRunWorkspaceOperationsForRequest(req, res, notFoundMessage) {
|
|
1150
|
-
const runId = await resolveHeartbeatRunIdReference(db, req.params.runId, {
|
|
1151
|
-
orgIds: getAuthorizedOrgScope(req),
|
|
1152
|
-
notFoundMessage,
|
|
1153
|
-
});
|
|
1154
|
-
const run = await heartbeat.getRun(runId);
|
|
1155
|
-
if (!run) {
|
|
1156
|
-
res.status(404).json({ error: notFoundMessage });
|
|
1157
|
-
return null;
|
|
1158
|
-
}
|
|
1159
|
-
assertCompanyAccess(req, run.orgId);
|
|
1160
|
-
const context = asRecord(run.contextSnapshot);
|
|
1161
|
-
const executionWorkspaceId = asNonEmptyString(context?.executionWorkspaceId);
|
|
1162
|
-
const operations = await workspaceOperations.listForRun(runId, executionWorkspaceId);
|
|
1163
|
-
return redactCurrentUserValue(operations, await getCurrentUserRedactionOptions());
|
|
1112
|
+
function workspaceOperationsForRequest(notFoundMessage) {
|
|
1113
|
+
return async (req, res) => {
|
|
1114
|
+
const run = await getAuthorizedRunReference(req, res, notFoundMessage);
|
|
1115
|
+
if (!run)
|
|
1116
|
+
return;
|
|
1117
|
+
await sendRunRead(res, rustFoundationBridge, req.actor, run.orgId, {
|
|
1118
|
+
operation: "workspaceOperations", runId: run.id,
|
|
1119
|
+
redaction: getRunReadEnvironment(),
|
|
1120
|
+
});
|
|
1121
|
+
};
|
|
1164
1122
|
}
|
|
1123
|
+
router.get("/heartbeat-runs/:runId/workspace-operations", workspaceOperationsForRequest("Heartbeat run not found"));
|
|
1124
|
+
router.get("/agent-runs/:runId/workspace-operations", workspaceOperationsForRequest("Agent run not found"));
|
|
1165
1125
|
router.get("/workspace-operations/:operationId/log", async (req, res) => {
|
|
1166
1126
|
const operationId = req.params.operationId;
|
|
1167
1127
|
const operation = await workspaceOperations.getById(operationId);
|
|
@@ -1170,6 +1130,7 @@ export function registerAgentManagementRoutes(ctx) {
|
|
|
1170
1130
|
return;
|
|
1171
1131
|
}
|
|
1172
1132
|
assertCompanyAccess(req, operation.orgId);
|
|
1133
|
+
await requireRunReadAccess(rustFoundationBridge, req.actor, operation.orgId, { operation: "workspaceOperationAccess", operationId }, "Workspace operation not found");
|
|
1173
1134
|
const offset = Number(req.query.offset ?? 0);
|
|
1174
1135
|
const limitBytes = Number(req.query.limitBytes ?? 256000);
|
|
1175
1136
|
const result = await workspaceOperations.readLog(operationId, {
|
|
@@ -1207,32 +1168,9 @@ export function registerAgentManagementRoutes(ctx) {
|
|
|
1207
1168
|
return;
|
|
1208
1169
|
}
|
|
1209
1170
|
assertCompanyAccess(req, issue.orgId);
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
}
|
|
1214
|
-
if (!run && issue.assigneeAgentId && issue.status === "in_progress") {
|
|
1215
|
-
const candidateRun = await heartbeat.getActiveRunForAgent(issue.assigneeAgentId);
|
|
1216
|
-
const candidateContext = asRecord(candidateRun?.contextSnapshot);
|
|
1217
|
-
const candidateIssueId = asNonEmptyString(candidateContext?.issueId);
|
|
1218
|
-
if (candidateRun && candidateIssueId === issue.id) {
|
|
1219
|
-
run = candidateRun;
|
|
1220
|
-
}
|
|
1221
|
-
}
|
|
1222
|
-
if (!run) {
|
|
1223
|
-
res.json(null);
|
|
1224
|
-
return;
|
|
1225
|
-
}
|
|
1226
|
-
const agent = await svc.getById(run.agentId);
|
|
1227
|
-
if (!agent) {
|
|
1228
|
-
res.json(null);
|
|
1229
|
-
return;
|
|
1230
|
-
}
|
|
1231
|
-
res.json({
|
|
1232
|
-
...redactCurrentUserValue(toHeartbeatRun(run), await getCurrentUserRedactionOptions()),
|
|
1233
|
-
agentId: agent.id,
|
|
1234
|
-
agentName: agent.name,
|
|
1235
|
-
agentRuntimeType: agent.agentRuntimeType,
|
|
1171
|
+
await sendRunRead(res, rustFoundationBridge, req.actor, issue.orgId, {
|
|
1172
|
+
operation: "active", issueId: issue.id,
|
|
1173
|
+
redaction: getRunReadEnvironment(),
|
|
1236
1174
|
});
|
|
1237
1175
|
});
|
|
1238
1176
|
}
|