@rudderhq/server 0.2.2 → 0.2.4-canary.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/bundled-plugins/plugin-linear/dist/worker.js +48 -4
- package/dist/bundled-plugins/plugin-linear/dist/worker.js.map +2 -2
- package/dist/home-paths.d.ts +2 -0
- package/dist/home-paths.d.ts.map +1 -1
- package/dist/home-paths.js +6 -0
- package/dist/home-paths.js.map +1 -1
- package/dist/routes/agents.js +2 -2
- package/dist/routes/agents.js.map +1 -1
- package/dist/services/agent-run-context.d.ts +1 -0
- package/dist/services/agent-run-context.d.ts.map +1 -1
- package/dist/services/agent-run-context.js +1 -0
- package/dist/services/agent-run-context.js.map +1 -1
- package/dist/services/agents.d.ts +1 -0
- package/dist/services/agents.d.ts.map +1 -1
- package/dist/services/agents.js +8 -1
- package/dist/services/agents.js.map +1 -1
- package/dist/services/automations.d.ts +1 -1
- package/dist/services/automations.js +7 -6
- package/dist/services/automations.js.map +1 -1
- package/dist/services/chat-assistant.d.ts.map +1 -1
- package/dist/services/chat-assistant.js +12 -0
- package/dist/services/chat-assistant.js.map +1 -1
- package/dist/services/costs.d.ts.map +1 -1
- package/dist/services/costs.js +47 -48
- package/dist/services/costs.js.map +1 -1
- package/dist/services/issues.d.ts.map +1 -1
- package/dist/services/issues.js +7 -4
- package/dist/services/issues.js.map +1 -1
- package/dist/services/knowledge-portability/organization-portability.js +3 -3
- package/dist/services/knowledge-portability/organization-portability.js.map +1 -1
- package/dist/services/managed-workspace-preflight.d.ts +38 -0
- package/dist/services/managed-workspace-preflight.d.ts.map +1 -0
- package/dist/services/managed-workspace-preflight.js +117 -0
- package/dist/services/managed-workspace-preflight.js.map +1 -0
- package/dist/services/runtime-kernel/heartbeat.d.ts.map +1 -1
- package/dist/services/runtime-kernel/heartbeat.js +69 -22
- package/dist/services/runtime-kernel/heartbeat.js.map +1 -1
- package/package.json +13 -13
- package/ui-dist/assets/{_basePickBy-Ca8xQvHF.js → _basePickBy-DMGHbKj9.js} +1 -1
- package/ui-dist/assets/{_baseUniq-D4k-NSeJ.js → _baseUniq-C6fdh1T9.js} +1 -1
- package/ui-dist/assets/{arc-CYP7BNx6.js → arc-60PBxrqn.js} +1 -1
- package/ui-dist/assets/{architectureDiagram-2XIMDMQ5-CBuKsoWB.js → architectureDiagram-2XIMDMQ5-q54011Bx.js} +1 -1
- package/ui-dist/assets/{blockDiagram-WCTKOSBZ-DHSTbCSo.js → blockDiagram-WCTKOSBZ-C5gZJM7p.js} +1 -1
- package/ui-dist/assets/{c4Diagram-IC4MRINW-CUDRzZRZ.js → c4Diagram-IC4MRINW-CV7YoJJK.js} +1 -1
- package/ui-dist/assets/channel-C67Dpz7Z.js +1 -0
- package/ui-dist/assets/{chunk-4BX2VUAB-DYZAOsnq.js → chunk-4BX2VUAB-Bdpwrhvu.js} +1 -1
- package/ui-dist/assets/{chunk-55IACEB6-Dkgi8_nT.js → chunk-55IACEB6-BfVT6Lgm.js} +1 -1
- package/ui-dist/assets/{chunk-FMBD7UC4-BpXbqs49.js → chunk-FMBD7UC4-BH1ZiSZA.js} +1 -1
- package/ui-dist/assets/{chunk-JSJVCQXG-96W4nQlt.js → chunk-JSJVCQXG-Dc9ch79j.js} +1 -1
- package/ui-dist/assets/{chunk-KX2RTZJC-B2pg6lXH.js → chunk-KX2RTZJC-CqDuBs5i.js} +1 -1
- package/ui-dist/assets/{chunk-NQ4KR5QH-Dx00ver9.js → chunk-NQ4KR5QH-DzNQtBa9.js} +1 -1
- package/ui-dist/assets/{chunk-QZHKN3VN-CUMStlq_.js → chunk-QZHKN3VN-DZjmXvIV.js} +1 -1
- package/ui-dist/assets/{chunk-WL4C6EOR-j-3RDQv3.js → chunk-WL4C6EOR-rd8vVu1f.js} +1 -1
- package/ui-dist/assets/classDiagram-VBA2DB6C-CigzPbmn.js +1 -0
- package/ui-dist/assets/classDiagram-v2-RAHNMMFH-CigzPbmn.js +1 -0
- package/ui-dist/assets/clone-DwwuLb95.js +1 -0
- package/ui-dist/assets/{cose-bilkent-S5V4N54A-DPhjvpOD.js → cose-bilkent-S5V4N54A-DuIWWGMt.js} +1 -1
- package/ui-dist/assets/{dagre-KLK3FWXG-DACA2mJL.js → dagre-KLK3FWXG-D0uZoS4Z.js} +1 -1
- package/ui-dist/assets/{diagram-E7M64L7V-BJGU73jR.js → diagram-E7M64L7V-yqtX3DpC.js} +1 -1
- package/ui-dist/assets/{diagram-IFDJBPK2-DeJL-Fpr.js → diagram-IFDJBPK2-D3NhLFUf.js} +1 -1
- package/ui-dist/assets/{diagram-P4PSJMXO-DAbS7grT.js → diagram-P4PSJMXO-Corv-4AW.js} +1 -1
- package/ui-dist/assets/{erDiagram-INFDFZHY-peqW5D_-.js → erDiagram-INFDFZHY-DwBfDBKj.js} +1 -1
- package/ui-dist/assets/{flowDiagram-PKNHOUZH-0FcDkYBi.js → flowDiagram-PKNHOUZH-CXi7fhUo.js} +1 -1
- package/ui-dist/assets/{ganttDiagram-A5KZAMGK-DX__K3EL.js → ganttDiagram-A5KZAMGK-BBFS8xXu.js} +1 -1
- package/ui-dist/assets/{gitGraphDiagram-K3NZZRJ6-Bb4dikZ6.js → gitGraphDiagram-K3NZZRJ6-PMdIhvZS.js} +1 -1
- package/ui-dist/assets/{graph-B8qk0nQz.js → graph-BEnEZFtP.js} +1 -1
- package/ui-dist/assets/{index-D2uNYIfD.js → index-1OzlQzpe.js} +1 -1
- package/ui-dist/assets/{index-BWiMF7_Y.js → index-7ywUVeso.js} +1 -1
- package/ui-dist/assets/{index-DJLI1bhe.js → index-B6b_8fXW.js} +1 -1
- package/ui-dist/assets/{index-BWHEfa25.js → index-BVCy4tDa.js} +1 -1
- package/ui-dist/assets/{index-yu3EWcIO.js → index-BYoMweWi.js} +1 -1
- package/ui-dist/assets/{index-Bxp123Ex.js → index-BhMSLKpW.js} +1 -1
- package/ui-dist/assets/{index-QkJXdrxk.js → index-C8ha-Zzd.js} +1 -1
- package/ui-dist/assets/{index-VfaJLdI-.js → index-CAL_ZbCE.js} +1 -1
- package/ui-dist/assets/{index-DE8x9eOT.js → index-CK9V7Pdq.js} +1 -1
- package/ui-dist/assets/{index-DGKXdge7.js → index-CWcHWfHt.js} +1 -1
- package/ui-dist/assets/index-CXfTAgY5.css +1 -0
- package/ui-dist/assets/{index-D4UBHdWe.js → index-Caaa-jP6.js} +1 -1
- package/ui-dist/assets/{index-DL7cRXRO.js → index-CdtTGB-F.js} +1 -1
- package/ui-dist/assets/{index-BOMtvTXY.js → index-CqxwGwJW.js} +1 -1
- package/ui-dist/assets/{index-BT2yjBrN.js → index-D0z_hQ8z.js} +1 -1
- package/ui-dist/assets/{index-B8AQVNg1.js → index-DCfsTbUu.js} +1 -1
- package/ui-dist/assets/{index-CnulsnEk.js → index-DGfZY4So.js} +1 -1
- package/ui-dist/assets/{index-Y9-n69Sg.js → index-DK-XzAmF.js} +1 -1
- package/ui-dist/assets/{index-BKxeEuH5.js → index-DrkCPNXt.js} +1 -1
- package/ui-dist/assets/{index-B6eUJLmZ.js → index-Dyp-1l8x.js} +1 -1
- package/ui-dist/assets/{index-BxjzX6sO.js → index-UXj69glS.js} +1 -1
- package/ui-dist/assets/index-cL8JFIEI.js +1497 -0
- package/ui-dist/assets/{index-CS6kejTf.js → index-ooDNqTGY.js} +1 -1
- package/ui-dist/assets/{index-B52_vW7A.js → index-wiio2lmT.js} +1 -1
- package/ui-dist/assets/{infoDiagram-LFFYTUFH-CYQXcJIz.js → infoDiagram-LFFYTUFH-L07c9Wnd.js} +1 -1
- package/ui-dist/assets/{ishikawaDiagram-PHBUUO56-DkWThc2e.js → ishikawaDiagram-PHBUUO56-QT-XqVmf.js} +1 -1
- package/ui-dist/assets/{journeyDiagram-4ABVD52K-Tb3xfoC6.js → journeyDiagram-4ABVD52K-Ck0OQOTf.js} +1 -1
- package/ui-dist/assets/{kanban-definition-K7BYSVSG-CZ2j8_pZ.js → kanban-definition-K7BYSVSG-Cn7rn7b1.js} +1 -1
- package/ui-dist/assets/{layout-CMo-8g5z.js → layout-CYRKCLqw.js} +1 -1
- package/ui-dist/assets/{linear-9SnJEANW.js → linear-dqMgJ8Lm.js} +1 -1
- package/ui-dist/assets/{mermaid.core-DJCExIY7.js → mermaid.core-D62yUl22.js} +4 -4
- package/ui-dist/assets/{mindmap-definition-YRQLILUH-HkkkyxI5.js → mindmap-definition-YRQLILUH-Zuvm9fIf.js} +1 -1
- package/ui-dist/assets/{pieDiagram-SKSYHLDU-CEISqexf.js → pieDiagram-SKSYHLDU-0IR3884j.js} +1 -1
- package/ui-dist/assets/{quadrantDiagram-337W2JSQ-BcJ2MhW2.js → quadrantDiagram-337W2JSQ-R1NmPuLe.js} +1 -1
- package/ui-dist/assets/{requirementDiagram-Z7DCOOCP-BlA3ZRa-.js → requirementDiagram-Z7DCOOCP-DfbJ8HNI.js} +1 -1
- package/ui-dist/assets/{sankeyDiagram-WA2Y5GQK-D_0YgDsB.js → sankeyDiagram-WA2Y5GQK-DIGf9fXZ.js} +1 -1
- package/ui-dist/assets/{sequenceDiagram-2WXFIKYE-CtdyldZe.js → sequenceDiagram-2WXFIKYE-BiTAJ846.js} +1 -1
- package/ui-dist/assets/{stateDiagram-RAJIS63D-LH5q-PTN.js → stateDiagram-RAJIS63D-CxXk4cFf.js} +1 -1
- package/ui-dist/assets/stateDiagram-v2-FVOUBMTO-CVyKw_jX.js +1 -0
- package/ui-dist/assets/{timeline-definition-YZTLITO2-duSQdbgi.js → timeline-definition-YZTLITO2-EUuxDhoK.js} +1 -1
- package/ui-dist/assets/{treemap-KZPCXAKY-5ybZes2U.js → treemap-KZPCXAKY-BsYSNMGI.js} +1 -1
- package/ui-dist/assets/{vennDiagram-LZ73GAT5-BMYsLcc9.js → vennDiagram-LZ73GAT5-BUY1-r8k.js} +1 -1
- package/ui-dist/assets/{xychartDiagram-JWTSCODW-aKKgBTPI.js → xychartDiagram-JWTSCODW-Z1_cCSD1.js} +1 -1
- package/ui-dist/index.html +2 -2
- package/ui-dist/assets/channel-CDRjh_s8.js +0 -1
- package/ui-dist/assets/classDiagram-VBA2DB6C-DoCEjif_.js +0 -1
- package/ui-dist/assets/classDiagram-v2-RAHNMMFH-DoCEjif_.js +0 -1
- package/ui-dist/assets/clone-nhIKdp0i.js +0 -1
- package/ui-dist/assets/index-DDxt2Fzf.js +0 -1485
- package/ui-dist/assets/index-F9VXJ2Ff.css +0 -1
- package/ui-dist/assets/stateDiagram-v2-FVOUBMTO-DI2HrMH8.js +0 -1
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export declare const WORKSPACE_PERMISSION_REPAIR_NEEDED_CODE = "workspace_permission_repair_needed";
|
|
2
|
+
export declare const MANAGED_WORKSPACE_CONFIGURATION_ERROR_CODE = "managed_workspace_configuration_error";
|
|
3
|
+
export type ManagedWorkspacePreflightPathKind = "agent_home" | "instructions" | "memory" | "life" | "skills";
|
|
4
|
+
export interface ManagedWorkspacePreflightPath {
|
|
5
|
+
kind: ManagedWorkspacePreflightPathKind;
|
|
6
|
+
path: string;
|
|
7
|
+
}
|
|
8
|
+
export interface ManagedWorkspacePreflightInput {
|
|
9
|
+
agentHome: string;
|
|
10
|
+
instructionsDir: string;
|
|
11
|
+
memoryDir: string;
|
|
12
|
+
lifeDir: string;
|
|
13
|
+
skillsDir: string;
|
|
14
|
+
}
|
|
15
|
+
export interface ManagedWorkspacePreflightFailure {
|
|
16
|
+
kind: ManagedWorkspacePreflightPathKind;
|
|
17
|
+
path: string;
|
|
18
|
+
operation: "configure" | "mkdir" | "stat" | "write_probe";
|
|
19
|
+
code: string | null;
|
|
20
|
+
message: string;
|
|
21
|
+
}
|
|
22
|
+
export declare class WorkspacePermissionPreflightError extends Error {
|
|
23
|
+
readonly errorCode = "workspace_permission_repair_needed";
|
|
24
|
+
readonly failure: ManagedWorkspacePreflightFailure;
|
|
25
|
+
constructor(failure: ManagedWorkspacePreflightFailure);
|
|
26
|
+
}
|
|
27
|
+
export declare class ManagedWorkspaceConfigurationError extends Error {
|
|
28
|
+
readonly errorCode = "managed_workspace_configuration_error";
|
|
29
|
+
readonly failure: ManagedWorkspacePreflightFailure;
|
|
30
|
+
constructor(failure: ManagedWorkspacePreflightFailure);
|
|
31
|
+
}
|
|
32
|
+
export declare function formatWorkspacePermissionPreflightMessage(failure: ManagedWorkspacePreflightFailure): string;
|
|
33
|
+
export declare function formatManagedWorkspaceConfigurationErrorMessage(failure: ManagedWorkspacePreflightFailure): string;
|
|
34
|
+
export declare function workspacePreflightPaths(input: ManagedWorkspacePreflightInput): ManagedWorkspacePreflightPath[];
|
|
35
|
+
export declare function preflightManagedAgentWorkspace(input: ManagedWorkspacePreflightInput): Promise<ManagedWorkspacePreflightPath[]>;
|
|
36
|
+
export declare function isWorkspacePermissionPreflightError(error: unknown): error is WorkspacePermissionPreflightError;
|
|
37
|
+
export declare function isManagedWorkspaceConfigurationError(error: unknown): error is ManagedWorkspaceConfigurationError;
|
|
38
|
+
//# sourceMappingURL=managed-workspace-preflight.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"managed-workspace-preflight.d.ts","sourceRoot":"","sources":["../../src/services/managed-workspace-preflight.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,uCAAuC,uCAAuC,CAAC;AAC5F,eAAO,MAAM,0CAA0C,0CAA0C,CAAC;AAElG,MAAM,MAAM,iCAAiC,GACzC,YAAY,GACZ,cAAc,GACd,QAAQ,GACR,MAAM,GACN,QAAQ,CAAC;AAEb,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,iCAAiC,CAAC;IACxC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,8BAA8B;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gCAAgC;IAC/C,IAAI,EAAE,iCAAiC,CAAC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,aAAa,CAAC;IAC1D,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,iCAAkC,SAAQ,KAAK;IAC1D,QAAQ,CAAC,SAAS,wCAA2C;IAC7D,QAAQ,CAAC,OAAO,EAAE,gCAAgC,CAAC;gBAEvC,OAAO,EAAE,gCAAgC;CAKtD;AAED,qBAAa,kCAAmC,SAAQ,KAAK;IAC3D,QAAQ,CAAC,SAAS,2CAA8C;IAChE,QAAQ,CAAC,OAAO,EAAE,gCAAgC,CAAC;gBAEvC,OAAO,EAAE,gCAAgC;CAKtD;AAyBD,wBAAgB,yCAAyC,CACvD,OAAO,EAAE,gCAAgC,GACxC,MAAM,CAMR;AAED,wBAAgB,+CAA+C,CAC7D,OAAO,EAAE,gCAAgC,GACxC,MAAM,CAKR;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,8BAA8B,GACpC,6BAA6B,EAAE,CAQjC;AAyCD,wBAAsB,8BAA8B,CAClD,KAAK,EAAE,8BAA8B,GACpC,OAAO,CAAC,6BAA6B,EAAE,CAAC,CAQ1C;AAED,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,iCAAiC,CAE5C;AAED,wBAAgB,oCAAoC,CAClD,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,kCAAkC,CAE7C"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { randomUUID } from "node:crypto";
|
|
4
|
+
export const WORKSPACE_PERMISSION_REPAIR_NEEDED_CODE = "workspace_permission_repair_needed";
|
|
5
|
+
export const MANAGED_WORKSPACE_CONFIGURATION_ERROR_CODE = "managed_workspace_configuration_error";
|
|
6
|
+
export class WorkspacePermissionPreflightError extends Error {
|
|
7
|
+
errorCode = WORKSPACE_PERMISSION_REPAIR_NEEDED_CODE;
|
|
8
|
+
failure;
|
|
9
|
+
constructor(failure) {
|
|
10
|
+
super(formatWorkspacePermissionPreflightMessage(failure));
|
|
11
|
+
this.name = "WorkspacePermissionPreflightError";
|
|
12
|
+
this.failure = failure;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export class ManagedWorkspaceConfigurationError extends Error {
|
|
16
|
+
errorCode = MANAGED_WORKSPACE_CONFIGURATION_ERROR_CODE;
|
|
17
|
+
failure;
|
|
18
|
+
constructor(failure) {
|
|
19
|
+
super(formatManagedWorkspaceConfigurationErrorMessage(failure));
|
|
20
|
+
this.name = "ManagedWorkspaceConfigurationError";
|
|
21
|
+
this.failure = failure;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function errorCode(error) {
|
|
25
|
+
const code = error?.code;
|
|
26
|
+
return typeof code === "string" && code.trim().length > 0 ? code : null;
|
|
27
|
+
}
|
|
28
|
+
function errorMessage(error) {
|
|
29
|
+
return error instanceof Error ? error.message : String(error);
|
|
30
|
+
}
|
|
31
|
+
function toFailure(entry, operation, error) {
|
|
32
|
+
return {
|
|
33
|
+
kind: entry.kind,
|
|
34
|
+
path: entry.path,
|
|
35
|
+
operation,
|
|
36
|
+
code: errorCode(error),
|
|
37
|
+
message: errorMessage(error),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
export function formatWorkspacePermissionPreflightMessage(failure) {
|
|
41
|
+
const codeSuffix = failure.code ? ` (${failure.code})` : "";
|
|
42
|
+
return [
|
|
43
|
+
`Rudder workspace permission repair needed: managed ${failure.kind} path is not writable: ${failure.path}${codeSuffix}.`,
|
|
44
|
+
"Repair the Rudder workspace permissions or move RUDDER_HOME to a writable location before starting the run.",
|
|
45
|
+
].join(" ");
|
|
46
|
+
}
|
|
47
|
+
export function formatManagedWorkspaceConfigurationErrorMessage(failure) {
|
|
48
|
+
return [
|
|
49
|
+
`Rudder runtime configuration error: managed ${failure.kind} path is missing before workspace preflight.`,
|
|
50
|
+
"This is a Rudder runtime bootstrap bug; rebuild the run context before starting the run.",
|
|
51
|
+
].join(" ");
|
|
52
|
+
}
|
|
53
|
+
export function workspacePreflightPaths(input) {
|
|
54
|
+
return [
|
|
55
|
+
{ kind: "agent_home", path: input.agentHome },
|
|
56
|
+
{ kind: "instructions", path: input.instructionsDir },
|
|
57
|
+
{ kind: "memory", path: input.memoryDir },
|
|
58
|
+
{ kind: "life", path: input.lifeDir },
|
|
59
|
+
{ kind: "skills", path: input.skillsDir },
|
|
60
|
+
];
|
|
61
|
+
}
|
|
62
|
+
function validatePreflightPath(entry) {
|
|
63
|
+
if (entry.path.trim().length > 0)
|
|
64
|
+
return;
|
|
65
|
+
throw new ManagedWorkspaceConfigurationError({
|
|
66
|
+
kind: entry.kind,
|
|
67
|
+
path: entry.path,
|
|
68
|
+
operation: "configure",
|
|
69
|
+
code: "MISSING_PATH",
|
|
70
|
+
message: "Managed workspace path is missing.",
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
async function ensureDirectory(entry) {
|
|
74
|
+
try {
|
|
75
|
+
await fs.mkdir(entry.path, { recursive: true });
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
throw new WorkspacePermissionPreflightError(toFailure(entry, "mkdir", error));
|
|
79
|
+
}
|
|
80
|
+
try {
|
|
81
|
+
const stat = await fs.stat(entry.path);
|
|
82
|
+
if (!stat.isDirectory()) {
|
|
83
|
+
throw new Error("Path exists but is not a directory");
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
throw new WorkspacePermissionPreflightError(toFailure(entry, "stat", error));
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
async function probeWritableDirectory(entry) {
|
|
91
|
+
const probePath = path.join(entry.path, `.rudder-write-probe-${process.pid}-${randomUUID()}`);
|
|
92
|
+
try {
|
|
93
|
+
await fs.writeFile(probePath, "ok", { flag: "wx" });
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
throw new WorkspacePermissionPreflightError(toFailure(entry, "write_probe", error));
|
|
97
|
+
}
|
|
98
|
+
finally {
|
|
99
|
+
await fs.rm(probePath, { force: true }).catch(() => undefined);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
export async function preflightManagedAgentWorkspace(input) {
|
|
103
|
+
const entries = workspacePreflightPaths(input);
|
|
104
|
+
for (const entry of entries) {
|
|
105
|
+
validatePreflightPath(entry);
|
|
106
|
+
await ensureDirectory(entry);
|
|
107
|
+
await probeWritableDirectory(entry);
|
|
108
|
+
}
|
|
109
|
+
return entries;
|
|
110
|
+
}
|
|
111
|
+
export function isWorkspacePermissionPreflightError(error) {
|
|
112
|
+
return error instanceof WorkspacePermissionPreflightError;
|
|
113
|
+
}
|
|
114
|
+
export function isManagedWorkspaceConfigurationError(error) {
|
|
115
|
+
return error instanceof ManagedWorkspaceConfigurationError;
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=managed-workspace-preflight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"managed-workspace-preflight.js","sourceRoot":"","sources":["../../src/services/managed-workspace-preflight.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../../../src/services/runtime-kernel/heartbeat.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,KAAK,EACV,mBAAmB,EAKnB,6BAA6B,EAG9B,MAAM,kBAAkB,CAAC;AAO1B,OAAO,EACL,MAAM,
|
|
1
|
+
{"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../../../src/services/runtime-kernel/heartbeat.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import { and, asc, desc, eq, gt, gte, inArray, lte, sql } from "drizzle-orm";
|
|
3
3
|
import { AGENT_RUN_CONCURRENCY_DEFAULT, AGENT_RUN_CONCURRENCY_MAX, AGENT_RUN_CONCURRENCY_MIN, summarizeTokenUsage, } from "@rudderhq/shared";
|
|
4
|
-
import { agents, agentRuntimeState, agentTaskSessions, agentWakeupRequests, activityLog, heartbeatRunEvents, heartbeatRuns, issueComments, issues, organizations, projects, } from "@rudderhq/db";
|
|
4
|
+
import { agents, agentRuntimeState, agentTaskSessions, agentWakeupRequests, activityLog, authUsers, heartbeatRunEvents, heartbeatRuns, issueComments, issues, organizations, projects, } from "@rudderhq/db";
|
|
5
5
|
import { conflict, notFound } from "../../errors.js";
|
|
6
6
|
import { createExecutionScores, observeExecutionEvent, updateExecutionObservation, updateExecutionTraceIO, updateExecutionTraceName, updateExecutionTraceSession, withExecutionObservation, } from "../../langfuse.js";
|
|
7
7
|
import { emitExecutionTranscriptTree } from "../../langfuse-transcript.js";
|
|
@@ -24,6 +24,7 @@ import { buildIssueConvergenceReviewWakeupOptions, buildIssueReviewCloseoutWakeu
|
|
|
24
24
|
import { executionWorkspaceService } from "../execution-workspaces.js";
|
|
25
25
|
import { buildObservedRunLangfuseScores } from "../run-intelligence.js";
|
|
26
26
|
import { workspaceOperationService } from "../workspace-operations.js";
|
|
27
|
+
import { isManagedWorkspaceConfigurationError, isWorkspacePermissionPreflightError, preflightManagedAgentWorkspace, } from "../managed-workspace-preflight.js";
|
|
27
28
|
import { buildExecutionWorkspaceAdapterConfig, issueExecutionWorkspaceModeForPersistedWorkspace, parseIssueExecutionWorkspaceSettings, parseProjectExecutionWorkspacePolicy, resolveExecutionWorkspaceMode, } from "../execution-workspace-policy.js";
|
|
28
29
|
import { instanceSettingsService } from "../instance-settings.js";
|
|
29
30
|
import { logActivity } from "../activity-log.js";
|
|
@@ -775,6 +776,22 @@ function mergeCoalescedContextSnapshot(existingRaw, incoming) {
|
|
|
775
776
|
}
|
|
776
777
|
return merged;
|
|
777
778
|
}
|
|
779
|
+
function issueCommentAuthorKind(comment) {
|
|
780
|
+
if (comment.authorAgentId)
|
|
781
|
+
return "agent";
|
|
782
|
+
if (comment.authorUserId)
|
|
783
|
+
return "user";
|
|
784
|
+
return "system";
|
|
785
|
+
}
|
|
786
|
+
function issueCommentAuthorLabel(comment) {
|
|
787
|
+
if (comment.authorAgentId) {
|
|
788
|
+
return comment.authorAgentName?.trim() || `Agent ${comment.authorAgentId.slice(0, 8)}`;
|
|
789
|
+
}
|
|
790
|
+
if (comment.authorUserId) {
|
|
791
|
+
return comment.authorUserName?.trim() || `User ${comment.authorUserId.slice(0, 8)}`;
|
|
792
|
+
}
|
|
793
|
+
return "System";
|
|
794
|
+
}
|
|
778
795
|
function buildDeferredWakePayload(payload, contextSnapshot, issueId) {
|
|
779
796
|
const deferredPayload = { ...(payload ?? {}) };
|
|
780
797
|
if (issueId && !readNonEmptyString(deferredPayload.issueId)) {
|
|
@@ -811,7 +828,10 @@ async function hydrateWakeContextSnapshot(db, orgId, contextSnapshot) {
|
|
|
811
828
|
const needsProjectId = !!issueId && !readNonEmptyString(contextSnapshot.projectId);
|
|
812
829
|
const needsCommentContext = !!commentId &&
|
|
813
830
|
(!readNonEmptyString(commentContext.id) ||
|
|
814
|
-
!readNonEmptyString(commentContext.body)
|
|
831
|
+
!readNonEmptyString(commentContext.body) ||
|
|
832
|
+
!readNonEmptyString(commentContext.authorKind) ||
|
|
833
|
+
!readNonEmptyString(commentContext.authorLabel) ||
|
|
834
|
+
!readNonEmptyString(commentContext.createdAt));
|
|
815
835
|
if (!needsIssueContext && !needsProjectId && !needsCommentContext)
|
|
816
836
|
return;
|
|
817
837
|
if (issueId && (needsIssueContext || needsProjectId)) {
|
|
@@ -852,8 +872,13 @@ async function hydrateWakeContextSnapshot(db, orgId, contextSnapshot) {
|
|
|
852
872
|
body: issueComments.body,
|
|
853
873
|
authorAgentId: issueComments.authorAgentId,
|
|
854
874
|
authorUserId: issueComments.authorUserId,
|
|
875
|
+
authorAgentName: agents.name,
|
|
876
|
+
authorUserName: authUsers.name,
|
|
877
|
+
createdAt: issueComments.createdAt,
|
|
855
878
|
})
|
|
856
879
|
.from(issueComments)
|
|
880
|
+
.leftJoin(agents, eq(issueComments.authorAgentId, agents.id))
|
|
881
|
+
.leftJoin(authUsers, eq(issueComments.authorUserId, authUsers.id))
|
|
857
882
|
.where(and(...commentConditions))
|
|
858
883
|
.then((rows) => rows[0] ?? null);
|
|
859
884
|
if (commentRow) {
|
|
@@ -863,6 +888,9 @@ async function hydrateWakeContextSnapshot(db, orgId, contextSnapshot) {
|
|
|
863
888
|
body: readNonEmptyString(commentContext.body) ?? commentRow.body,
|
|
864
889
|
authorAgentId: "authorAgentId" in commentContext ? commentContext.authorAgentId : commentRow.authorAgentId,
|
|
865
890
|
authorUserId: "authorUserId" in commentContext ? commentContext.authorUserId : commentRow.authorUserId,
|
|
891
|
+
authorKind: readNonEmptyString(commentContext.authorKind) ?? issueCommentAuthorKind(commentRow),
|
|
892
|
+
authorLabel: readNonEmptyString(commentContext.authorLabel) ?? issueCommentAuthorLabel(commentRow),
|
|
893
|
+
createdAt: readNonEmptyString(commentContext.createdAt) ?? commentRow.createdAt.toISOString(),
|
|
866
894
|
};
|
|
867
895
|
}
|
|
868
896
|
}
|
|
@@ -3015,6 +3043,13 @@ export function heartbeatService(db) {
|
|
|
3015
3043
|
let stdoutExcerpt = "";
|
|
3016
3044
|
let stderrExcerpt = "";
|
|
3017
3045
|
try {
|
|
3046
|
+
await preflightManagedAgentWorkspace({
|
|
3047
|
+
agentHome: readNonEmptyString(runtimeSceneContext.rudderWorkspace.agentHome) ?? "",
|
|
3048
|
+
instructionsDir: readNonEmptyString(runtimeSceneContext.rudderWorkspace.instructionsDir) ?? "",
|
|
3049
|
+
memoryDir: readNonEmptyString(runtimeSceneContext.rudderWorkspace.memoryDir) ?? "",
|
|
3050
|
+
lifeDir: readNonEmptyString(runtimeSceneContext.rudderWorkspace.lifeDir) ?? "",
|
|
3051
|
+
skillsDir: readNonEmptyString(runtimeSceneContext.rudderWorkspace.agentSkillsDir) ?? "",
|
|
3052
|
+
});
|
|
3018
3053
|
const startedAt = run.startedAt ?? new Date();
|
|
3019
3054
|
const runningWithSession = await db
|
|
3020
3055
|
.update(heartbeatRuns)
|
|
@@ -3431,6 +3466,8 @@ export function heartbeatService(db) {
|
|
|
3431
3466
|
await finalizeAgentStatus(agent.id, outcome);
|
|
3432
3467
|
}
|
|
3433
3468
|
catch (err) {
|
|
3469
|
+
const isWorkspacePreflightFailure = isWorkspacePermissionPreflightError(err) ||
|
|
3470
|
+
isManagedWorkspaceConfigurationError(err);
|
|
3434
3471
|
const message = redactCurrentUserText(err instanceof Error ? err.message : "Unknown adapter failure", await getCurrentUserRedactionOptions());
|
|
3435
3472
|
heartbeatObservationContext.status = "failed";
|
|
3436
3473
|
finalObservationStatus = "failed";
|
|
@@ -3453,7 +3490,7 @@ export function heartbeatService(db) {
|
|
|
3453
3490
|
}
|
|
3454
3491
|
const failedRun = await setRunStatus(run.id, "failed", {
|
|
3455
3492
|
error: message,
|
|
3456
|
-
errorCode: "adapter_failed",
|
|
3493
|
+
errorCode: isWorkspacePreflightFailure ? err.errorCode : "adapter_failed",
|
|
3457
3494
|
finishedAt: new Date(),
|
|
3458
3495
|
stdoutExcerpt,
|
|
3459
3496
|
stderrExcerpt,
|
|
@@ -3467,31 +3504,41 @@ export function heartbeatService(db) {
|
|
|
3467
3504
|
});
|
|
3468
3505
|
if (failedRun) {
|
|
3469
3506
|
await appendRunEvent(failedRun, seq++, {
|
|
3470
|
-
eventType: "error",
|
|
3507
|
+
eventType: isWorkspacePreflightFailure ? "runtime.workspace_preflight_failed" : "error",
|
|
3471
3508
|
stream: "system",
|
|
3472
3509
|
level: "error",
|
|
3473
3510
|
message,
|
|
3511
|
+
...(isWorkspacePreflightFailure
|
|
3512
|
+
? {
|
|
3513
|
+
payload: {
|
|
3514
|
+
errorCode: err.errorCode,
|
|
3515
|
+
failure: err.failure,
|
|
3516
|
+
},
|
|
3517
|
+
}
|
|
3518
|
+
: {}),
|
|
3474
3519
|
});
|
|
3475
3520
|
await releaseIssueExecutionAndPromote(failedRun);
|
|
3476
|
-
|
|
3477
|
-
|
|
3478
|
-
|
|
3479
|
-
|
|
3480
|
-
|
|
3481
|
-
|
|
3482
|
-
|
|
3483
|
-
|
|
3484
|
-
if (taskKey && (previousSessionParams || previousSessionDisplayId || taskSession)) {
|
|
3485
|
-
await upsertTaskSession({
|
|
3486
|
-
orgId: agent.orgId,
|
|
3487
|
-
agentId: agent.id,
|
|
3488
|
-
agentRuntimeType: agent.agentRuntimeType,
|
|
3489
|
-
taskKey,
|
|
3490
|
-
sessionParamsJson: previousSessionParams,
|
|
3491
|
-
sessionDisplayId: previousSessionDisplayId,
|
|
3492
|
-
lastRunId: failedRun.id,
|
|
3493
|
-
lastError: message,
|
|
3521
|
+
if (!isWorkspacePreflightFailure) {
|
|
3522
|
+
await updateRuntimeState(agent, failedRun, {
|
|
3523
|
+
exitCode: null,
|
|
3524
|
+
signal: null,
|
|
3525
|
+
timedOut: false,
|
|
3526
|
+
errorMessage: message,
|
|
3527
|
+
}, {
|
|
3528
|
+
legacySessionId: runtimeForAdapter.sessionId,
|
|
3494
3529
|
});
|
|
3530
|
+
if (taskKey && (previousSessionParams || previousSessionDisplayId || taskSession)) {
|
|
3531
|
+
await upsertTaskSession({
|
|
3532
|
+
orgId: agent.orgId,
|
|
3533
|
+
agentId: agent.id,
|
|
3534
|
+
agentRuntimeType: agent.agentRuntimeType,
|
|
3535
|
+
taskKey,
|
|
3536
|
+
sessionParamsJson: previousSessionParams,
|
|
3537
|
+
sessionDisplayId: previousSessionDisplayId,
|
|
3538
|
+
lastRunId: failedRun.id,
|
|
3539
|
+
lastError: message,
|
|
3540
|
+
});
|
|
3541
|
+
}
|
|
3495
3542
|
}
|
|
3496
3543
|
await emitHeartbeatLiveEval(failedRun.id);
|
|
3497
3544
|
}
|