@rudderhq/server 0.1.0-canary.9 → 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/bootstrap/register-api-routes.d.ts.map +1 -1
- package/dist/bootstrap/register-api-routes.js +2 -0
- package/dist/bootstrap/register-api-routes.js.map +1 -1
- package/dist/bundled-plugins/plugin-linear/README.md +22 -0
- package/dist/bundled-plugins/plugin-linear/dist/manifest.js +183 -0
- package/dist/bundled-plugins/plugin-linear/dist/manifest.js.map +7 -0
- package/dist/bundled-plugins/plugin-linear/dist/ui/index.js +1229 -0
- package/dist/bundled-plugins/plugin-linear/dist/ui/index.js.map +7 -0
- package/dist/bundled-plugins/plugin-linear/dist/worker.js +8251 -0
- package/dist/bundled-plugins/plugin-linear/dist/worker.js.map +7 -0
- package/dist/bundled-plugins/plugin-linear/package.json +42 -0
- package/dist/dev-server-status.d.ts +1 -7
- package/dist/dev-server-status.d.ts.map +1 -1
- package/dist/dev-server-status.js +1 -4
- package/dist/dev-server-status.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +77 -1
- package/dist/index.js.map +1 -1
- package/dist/langfuse-transcript.d.ts +1 -0
- package/dist/langfuse-transcript.d.ts.map +1 -1
- package/dist/langfuse-transcript.js +24 -0
- package/dist/langfuse-transcript.js.map +1 -1
- package/dist/onboarding-assets/ceo/MEMORY.md +13 -0
- package/dist/onboarding-assets/ceo/SOUL.md +28 -0
- package/dist/onboarding-assets/ceo/TOOLS.md +1 -1
- package/dist/onboarding-assets/default/MEMORY.md +13 -0
- package/dist/onboarding-assets/default/SOUL.md +29 -0
- package/dist/onboarding-assets/default/TOOLS.md +1 -1
- package/dist/routes/agents.d.ts.map +1 -1
- package/dist/routes/agents.js +4 -3
- package/dist/routes/agents.js.map +1 -1
- package/dist/routes/calendar.d.ts +3 -0
- package/dist/routes/calendar.d.ts.map +1 -0
- package/dist/routes/calendar.js +265 -0
- package/dist/routes/calendar.js.map +1 -0
- package/dist/routes/chats.d.ts.map +1 -1
- package/dist/routes/chats.js +149 -21
- package/dist/routes/chats.js.map +1 -1
- package/dist/routes/dashboard.d.ts.map +1 -1
- package/dist/routes/dashboard.js +24 -0
- package/dist/routes/dashboard.js.map +1 -1
- package/dist/routes/goals.d.ts.map +1 -1
- package/dist/routes/goals.js +10 -0
- package/dist/routes/goals.js.map +1 -1
- package/dist/routes/health.d.ts.map +1 -1
- package/dist/routes/health.js +3 -12
- package/dist/routes/health.js.map +1 -1
- package/dist/routes/index.d.ts +1 -0
- package/dist/routes/index.d.ts.map +1 -1
- package/dist/routes/index.js +1 -0
- package/dist/routes/index.js.map +1 -1
- package/dist/routes/instance-settings.d.ts.map +1 -1
- package/dist/routes/instance-settings.js +1 -26
- package/dist/routes/instance-settings.js.map +1 -1
- package/dist/routes/issues.d.ts.map +1 -1
- package/dist/routes/issues.js +74 -34
- package/dist/routes/issues.js.map +1 -1
- package/dist/routes/orgs.d.ts.map +1 -1
- package/dist/routes/orgs.js +161 -145
- package/dist/routes/orgs.js.map +1 -1
- package/dist/routes/plugins.d.ts.map +1 -1
- package/dist/routes/plugins.js +30 -7
- package/dist/routes/plugins.js.map +1 -1
- package/dist/services/agent-instructions.d.ts.map +1 -1
- package/dist/services/agent-instructions.js +23 -7
- package/dist/services/agent-instructions.js.map +1 -1
- package/dist/services/agent-run-context.d.ts +1 -1
- package/dist/services/agent-run-context.js +1 -1
- package/dist/services/agent-run-context.js.map +1 -1
- package/dist/services/agents.d.ts +13 -13
- package/dist/services/assets.d.ts +2 -2
- package/dist/services/calendar.d.ts +137 -0
- package/dist/services/calendar.d.ts.map +1 -0
- package/dist/services/calendar.js +1279 -0
- package/dist/services/calendar.js.map +1 -0
- package/dist/services/chat-assistant.d.ts.map +1 -1
- package/dist/services/chat-assistant.js +75 -15
- package/dist/services/chat-assistant.js.map +1 -1
- package/dist/services/chat-generation-locks.d.ts +2 -1
- package/dist/services/chat-generation-locks.d.ts.map +1 -1
- package/dist/services/chat-generation-locks.js +12 -3
- package/dist/services/chat-generation-locks.js.map +1 -1
- package/dist/services/chats.d.ts +4 -2
- package/dist/services/chats.d.ts.map +1 -1
- package/dist/services/chats.js +2 -15
- package/dist/services/chats.js.map +1 -1
- package/dist/services/costs.d.ts +2 -2
- package/dist/services/default-agent-instructions.d.ts +2 -2
- package/dist/services/default-agent-instructions.js +2 -2
- package/dist/services/documents.d.ts +23 -0
- package/dist/services/documents.d.ts.map +1 -1
- package/dist/services/documents.js +17 -1
- package/dist/services/documents.js.map +1 -1
- package/dist/services/export-jobs.d.ts +16 -0
- package/dist/services/export-jobs.d.ts.map +1 -0
- package/dist/services/export-jobs.js +147 -0
- package/dist/services/export-jobs.js.map +1 -0
- package/dist/services/finance.d.ts +6 -6
- package/dist/services/goals.d.ts +16 -10
- package/dist/services/goals.d.ts.map +1 -1
- package/dist/services/goals.js +201 -18
- package/dist/services/goals.js.map +1 -1
- package/dist/services/index.d.ts +3 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +3 -0
- package/dist/services/index.js.map +1 -1
- package/dist/services/instance-settings.d.ts +1 -3
- package/dist/services/instance-settings.d.ts.map +1 -1
- package/dist/services/instance-settings.js +1 -38
- package/dist/services/instance-settings.js.map +1 -1
- package/dist/services/issue-approvals.d.ts +1 -1
- package/dist/services/issues.d.ts +12 -0
- package/dist/services/issues.d.ts.map +1 -1
- package/dist/services/issues.js +107 -1
- package/dist/services/issues.js.map +1 -1
- package/dist/services/knowledge-portability/organization-portability.d.ts +12 -2
- package/dist/services/knowledge-portability/organization-portability.d.ts.map +1 -1
- package/dist/services/knowledge-portability/organization-portability.js +77 -4
- package/dist/services/knowledge-portability/organization-portability.js.map +1 -1
- package/dist/services/messenger.d.ts +2 -2
- package/dist/services/messenger.d.ts.map +1 -1
- package/dist/services/messenger.js +67 -27
- package/dist/services/messenger.js.map +1 -1
- package/dist/services/organization-workspace-browser.d.ts.map +1 -1
- package/dist/services/organization-workspace-browser.js +3 -0
- package/dist/services/organization-workspace-browser.js.map +1 -1
- package/dist/services/plugin-registry.d.ts +8 -8
- package/dist/services/runtime-kernel/heartbeat.d.ts +6 -0
- package/dist/services/runtime-kernel/heartbeat.d.ts.map +1 -1
- package/dist/services/runtime-kernel/heartbeat.js +236 -99
- package/dist/services/runtime-kernel/heartbeat.js.map +1 -1
- package/dist/services/runtime-kernel/model-fallback.d.ts +10 -0
- package/dist/services/runtime-kernel/model-fallback.d.ts.map +1 -0
- package/dist/services/runtime-kernel/model-fallback.js +147 -0
- package/dist/services/runtime-kernel/model-fallback.js.map +1 -0
- package/dist/services/secrets.d.ts +1 -3
- package/dist/services/secrets.d.ts.map +1 -1
- package/dist/services/secrets.js +55 -30
- package/dist/services/secrets.js.map +1 -1
- package/dist/services/workspace-backups.d.ts +34 -0
- package/dist/services/workspace-backups.d.ts.map +1 -0
- package/dist/services/workspace-backups.js +519 -0
- package/dist/services/workspace-backups.js.map +1 -0
- package/dist/services/workspace-runtime.d.ts +2 -2
- package/package.json +14 -14
- package/resources/bundled-skills/para-memory-files/SKILL.md +3 -1
- package/resources/bundled-skills/rudder-create-agent/SKILL.md +21 -4
- package/resources/bundled-skills/rudder-create-agent/references/api-reference.md +8 -3
- package/resources/bundled-skills/rudder-create-agent/references/cli-reference.md +8 -2
- package/skills/para-memory-files/SKILL.md +3 -1
- package/skills/rudder-create-agent/SKILL.md +21 -4
- package/skills/rudder-create-agent/references/api-reference.md +8 -3
- package/skills/rudder-create-agent/references/cli-reference.md +8 -2
- package/ui-dist/assets/{_basePickBy-C5FevVGb.js → _basePickBy-9EA6dBFj.js} +1 -1
- package/ui-dist/assets/{_baseUniq-Bp5Cq-Lt.js → _baseUniq-puJRDjRm.js} +1 -1
- package/ui-dist/assets/{arc-DxCinQZQ.js → arc-BuvB_2Wz.js} +1 -1
- package/ui-dist/assets/{architectureDiagram-2XIMDMQ5-Bt4OB6rg.js → architectureDiagram-2XIMDMQ5-DNH3NcPr.js} +1 -1
- package/ui-dist/assets/{blockDiagram-WCTKOSBZ-AfUyCHdW.js → blockDiagram-WCTKOSBZ-CCjA-egI.js} +1 -1
- package/ui-dist/assets/{c4Diagram-IC4MRINW-ZQmapm_f.js → c4Diagram-IC4MRINW-DaAxG30_.js} +1 -1
- package/ui-dist/assets/channel-BHmUwLHY.js +1 -0
- package/ui-dist/assets/{chunk-4BX2VUAB-b-nhg8XG.js → chunk-4BX2VUAB-CuuLnPLx.js} +1 -1
- package/ui-dist/assets/{chunk-55IACEB6-D_mWeaWL.js → chunk-55IACEB6-7KqKHU50.js} +1 -1
- package/ui-dist/assets/{chunk-FMBD7UC4-CvCBPkxY.js → chunk-FMBD7UC4-CquRnk_C.js} +1 -1
- package/ui-dist/assets/{chunk-JSJVCQXG-CyIzde6d.js → chunk-JSJVCQXG-Cub6UI-9.js} +1 -1
- package/ui-dist/assets/{chunk-KX2RTZJC-664uOAt1.js → chunk-KX2RTZJC-D-R4Pk61.js} +1 -1
- package/ui-dist/assets/{chunk-NQ4KR5QH-zC9eKlQL.js → chunk-NQ4KR5QH-YQLRgLCT.js} +1 -1
- package/ui-dist/assets/{chunk-QZHKN3VN-Bso6mrAm.js → chunk-QZHKN3VN-BgxQG6QM.js} +1 -1
- package/ui-dist/assets/{chunk-WL4C6EOR-CGgjDf4Q.js → chunk-WL4C6EOR-CVJNOFb-.js} +1 -1
- package/ui-dist/assets/classDiagram-VBA2DB6C-BykYYXhO.js +1 -0
- package/ui-dist/assets/classDiagram-v2-RAHNMMFH-BykYYXhO.js +1 -0
- package/ui-dist/assets/clone-BjbqkGJk.js +1 -0
- package/ui-dist/assets/{cose-bilkent-S5V4N54A-ChfhiHs0.js → cose-bilkent-S5V4N54A-BGYYdPRC.js} +1 -1
- package/ui-dist/assets/{dagre-KLK3FWXG-BtdGql15.js → dagre-KLK3FWXG-CDgRaJNK.js} +1 -1
- package/ui-dist/assets/{diagram-E7M64L7V-CcQq6lyW.js → diagram-E7M64L7V-CQEBiicN.js} +1 -1
- package/ui-dist/assets/{diagram-IFDJBPK2-C8MRQ8-O.js → diagram-IFDJBPK2-cGKTVrZq.js} +1 -1
- package/ui-dist/assets/{diagram-P4PSJMXO-wDtyafSS.js → diagram-P4PSJMXO-fGAfKBU_.js} +1 -1
- package/ui-dist/assets/{erDiagram-INFDFZHY-DSPOGKs9.js → erDiagram-INFDFZHY-DW5vJI98.js} +1 -1
- package/ui-dist/assets/{flowDiagram-PKNHOUZH-CMRO_o51.js → flowDiagram-PKNHOUZH-CikVuzCR.js} +1 -1
- package/ui-dist/assets/{ganttDiagram-A5KZAMGK-ByVpG5X7.js → ganttDiagram-A5KZAMGK-Ca4perbO.js} +1 -1
- package/ui-dist/assets/{gitGraphDiagram-K3NZZRJ6-C0hZhA2f.js → gitGraphDiagram-K3NZZRJ6-hkDkX0wB.js} +1 -1
- package/ui-dist/assets/{graph-8ZSpiLvu.js → graph-CKVwuNpm.js} +1 -1
- package/ui-dist/assets/{index-Jl3ZTphD.js → index-B24_1Y25.js} +1 -1
- package/ui-dist/assets/{index-Bnqrds93.js → index-BCSq0Y_A.js} +1 -1
- package/ui-dist/assets/{index-LxYtcd2q.js → index-BbX5RwLL.js} +1 -1
- package/ui-dist/assets/{index-BuxAGDe1.js → index-Bj5f8srw.js} +1 -1
- package/ui-dist/assets/{index-CrjKYwlq.js → index-Bm5RRuGQ.js} +1 -1
- package/ui-dist/assets/{index-Byt3a14a.js → index-BzHEDVXA.js} +1 -1
- package/ui-dist/assets/{index-C96r3ncF.js → index-C5IbLmrM.js} +1 -1
- package/ui-dist/assets/{index-DSa_Y_jA.js → index-CBuiHrHJ.js} +1 -1
- package/ui-dist/assets/{index-CsgWTWOx.js → index-CGtsmbZm.js} +1 -1
- package/ui-dist/assets/{index-Dolr9Kee.js → index-CIlRDiw5.js} +1 -1
- package/ui-dist/assets/{index-tGztn4Is.js → index-CT8eqX9W.js} +1 -1
- package/ui-dist/assets/{index-CeJdOYIF.js → index-CjD2xZdW.js} +1 -1
- package/ui-dist/assets/{index-C7DEZ3Ju.js → index-DFeHRm34.js} +1 -1
- package/ui-dist/assets/{index-ChJl_hqp.js → index-DI-FLO2Z.js} +1 -1
- package/ui-dist/assets/{index-D083o6by.js → index-DJ84yjUf.js} +1 -1
- package/ui-dist/assets/index-DTw34fFZ.js +1398 -0
- package/ui-dist/assets/{index--8IW0gQi.js → index-DZ6kUIBM.js} +1 -1
- package/ui-dist/assets/{index-D5fB3OrO.js → index-DdFp0EEO.js} +1 -1
- package/ui-dist/assets/{index-BYlbpnGO.js → index-Dm4kNTCW.js} +1 -1
- package/ui-dist/assets/{index-DIlroFT7.js → index-aK5eezHP.js} +1 -1
- package/ui-dist/assets/{index-DoCNo7J9.js → index-dd4k0fyq.js} +1 -1
- package/ui-dist/assets/index-jnv9Ql_2.css +1 -0
- package/ui-dist/assets/{index-Do2QEU2O.js → index-kGMjx6qb.js} +1 -1
- package/ui-dist/assets/{index-DGliz_Zl.js → index-qEEWalog.js} +1 -1
- package/ui-dist/assets/{infoDiagram-LFFYTUFH-CRObxa1Q.js → infoDiagram-LFFYTUFH-aDNdkSKW.js} +1 -1
- package/ui-dist/assets/{ishikawaDiagram-PHBUUO56-ksXzVP6h.js → ishikawaDiagram-PHBUUO56-CmclzHhC.js} +1 -1
- package/ui-dist/assets/{journeyDiagram-4ABVD52K-DhLhkeS3.js → journeyDiagram-4ABVD52K-BFnBxKuG.js} +1 -1
- package/ui-dist/assets/{kanban-definition-K7BYSVSG-CJPHwSur.js → kanban-definition-K7BYSVSG-eJfOZg7R.js} +1 -1
- package/ui-dist/assets/{layout-CbB6lAw2.js → layout-CLRiNHgA.js} +1 -1
- package/ui-dist/assets/{linear-HPte01nq.js → linear-B-J9sUer.js} +1 -1
- package/ui-dist/assets/{mermaid.core-CaHTquLw.js → mermaid.core-C1MjBOIN.js} +4 -4
- package/ui-dist/assets/{mindmap-definition-YRQLILUH-CeZ9z-BE.js → mindmap-definition-YRQLILUH-BdvCmP6e.js} +1 -1
- package/ui-dist/assets/{pieDiagram-SKSYHLDU-YB621clF.js → pieDiagram-SKSYHLDU-BAITPD_t.js} +1 -1
- package/ui-dist/assets/{quadrantDiagram-337W2JSQ-KPDGBXfE.js → quadrantDiagram-337W2JSQ-BFnjyhzq.js} +1 -1
- package/ui-dist/assets/{requirementDiagram-Z7DCOOCP-CnMP-_Rj.js → requirementDiagram-Z7DCOOCP-Bxg6tlLh.js} +1 -1
- package/ui-dist/assets/{sankeyDiagram-WA2Y5GQK-rWDbj38-.js → sankeyDiagram-WA2Y5GQK-LPpklLQK.js} +1 -1
- package/ui-dist/assets/{sequenceDiagram-2WXFIKYE-D5IlEfYm.js → sequenceDiagram-2WXFIKYE-D-W6lss0.js} +1 -1
- package/ui-dist/assets/{stateDiagram-RAJIS63D-CI6m7yMI.js → stateDiagram-RAJIS63D-Bzo5M8P7.js} +1 -1
- package/ui-dist/assets/stateDiagram-v2-FVOUBMTO-DJ1MxF2S.js +1 -0
- package/ui-dist/assets/{timeline-definition-YZTLITO2-Bl1-YzON.js → timeline-definition-YZTLITO2-luuVqyTW.js} +1 -1
- package/ui-dist/assets/{treemap-KZPCXAKY-CcFSGzuM.js → treemap-KZPCXAKY-ChGqzx5u.js} +1 -1
- package/ui-dist/assets/{vennDiagram-LZ73GAT5-DpgfFxeZ.js → vennDiagram-LZ73GAT5-BCEjZinK.js} +1 -1
- package/ui-dist/assets/{xychartDiagram-JWTSCODW-Bas4tWGP.js → xychartDiagram-JWTSCODW-mAsE6hMg.js} +1 -1
- package/ui-dist/index.html +2 -2
- package/dist/onboarding-assets/ceo/AGENTS.md +0 -33
- package/dist/onboarding-assets/default/AGENTS.md +0 -9
- package/ui-dist/assets/channel-B-3UKZ6E.js +0 -1
- package/ui-dist/assets/classDiagram-VBA2DB6C-DJbF61vn.js +0 -1
- package/ui-dist/assets/classDiagram-v2-RAHNMMFH-DJbF61vn.js +0 -1
- package/ui-dist/assets/clone-B7Z_Fd8l.js +0 -1
- package/ui-dist/assets/index-B4jXCLTd.js +0 -1358
- package/ui-dist/assets/index-C187WwUh.css +0 -1
- package/ui-dist/assets/stateDiagram-v2-FVOUBMTO-DMNsLapT.js +0 -1
|
@@ -68,6 +68,7 @@ const DEFAULT_INCLUDE = {
|
|
|
68
68
|
skills: false,
|
|
69
69
|
};
|
|
70
70
|
const DEFAULT_COLLISION_STRATEGY = "rename";
|
|
71
|
+
const PORTABLE_AGENT_ENTRY_FILE = "AGENTS.md";
|
|
71
72
|
const execFileAsync = promisify(execFile);
|
|
72
73
|
let bundledSkillsCommitPromise = null;
|
|
73
74
|
function resolveImportMode(options) {
|
|
@@ -1908,6 +1909,24 @@ function readAgentSkillRefs(frontmatter) {
|
|
|
1908
1909
|
.map((entry) => normalizeSkillKey(entry) ?? entry.trim())
|
|
1909
1910
|
.filter(Boolean)));
|
|
1910
1911
|
}
|
|
1912
|
+
function isPortableAgentEntryPath(relativePath) {
|
|
1913
|
+
return path.posix.basename(normalizePortablePath(relativePath)) === PORTABLE_AGENT_ENTRY_FILE;
|
|
1914
|
+
}
|
|
1915
|
+
function ensurePortableAgentEntryFile(exportedFiles, exportedEntryFile, fallbackBody) {
|
|
1916
|
+
const files = { ...exportedFiles };
|
|
1917
|
+
const normalizedEntryFile = normalizePortablePath(exportedEntryFile);
|
|
1918
|
+
if (isPortableAgentEntryPath(normalizedEntryFile) && typeof files[normalizedEntryFile] === "string") {
|
|
1919
|
+
return { files, entryFile: normalizedEntryFile };
|
|
1920
|
+
}
|
|
1921
|
+
const existingPortableEntry = Object.keys(files)
|
|
1922
|
+
.map((entry) => normalizePortablePath(entry))
|
|
1923
|
+
.find((entry) => isPortableAgentEntryPath(entry));
|
|
1924
|
+
if (existingPortableEntry) {
|
|
1925
|
+
return { files, entryFile: existingPortableEntry };
|
|
1926
|
+
}
|
|
1927
|
+
files[PORTABLE_AGENT_ENTRY_FILE] = fallbackBody || "_No AGENTS instructions were resolved from current agent config._";
|
|
1928
|
+
return { files, entryFile: PORTABLE_AGENT_ENTRY_FILE };
|
|
1929
|
+
}
|
|
1911
1930
|
function buildManifestFromPackageFiles(files, opts) {
|
|
1912
1931
|
const normalizedFiles = normalizeFileMap(files);
|
|
1913
1932
|
const companyPath = typeof normalizedFiles["ORGANIZATION.md"] === "string"
|
|
@@ -2366,7 +2385,24 @@ export function organizationPortabilityService(db, storage) {
|
|
|
2366
2385
|
resolved.warnings.unshift(...warnings);
|
|
2367
2386
|
return resolved;
|
|
2368
2387
|
}
|
|
2369
|
-
async function exportBundle(orgId, input) {
|
|
2388
|
+
async function exportBundle(orgId, input, options = {}) {
|
|
2389
|
+
const totalProgressSteps = 8;
|
|
2390
|
+
const assertNotAborted = () => {
|
|
2391
|
+
if (options.signal?.aborted) {
|
|
2392
|
+
throw new Error("Export build canceled");
|
|
2393
|
+
}
|
|
2394
|
+
};
|
|
2395
|
+
const reportProgress = (stage, message, completed, fileCount) => {
|
|
2396
|
+
options.onProgress?.({
|
|
2397
|
+
stage,
|
|
2398
|
+
message,
|
|
2399
|
+
completed,
|
|
2400
|
+
total: totalProgressSteps,
|
|
2401
|
+
fileCount: fileCount ?? null,
|
|
2402
|
+
});
|
|
2403
|
+
};
|
|
2404
|
+
assertNotAborted();
|
|
2405
|
+
reportProgress("collecting", "Collecting organization data.", 1);
|
|
2370
2406
|
const include = normalizeInclude({
|
|
2371
2407
|
...input.include,
|
|
2372
2408
|
agents: input.agents && input.agents.length > 0 ? true : input.include?.agents,
|
|
@@ -2377,6 +2413,7 @@ export function organizationPortabilityService(db, storage) {
|
|
|
2377
2413
|
skills: input.skills && input.skills.length > 0 ? true : input.include?.skills,
|
|
2378
2414
|
});
|
|
2379
2415
|
const organization = await organizations.getById(orgId);
|
|
2416
|
+
assertNotAborted();
|
|
2380
2417
|
if (!organization)
|
|
2381
2418
|
throw notFound("Organization not found");
|
|
2382
2419
|
const files = {};
|
|
@@ -2386,8 +2423,10 @@ export function organizationPortabilityService(db, storage) {
|
|
|
2386
2423
|
const rootPath = normalizeAgentUrlKey(organization.name) ?? "organization-package";
|
|
2387
2424
|
let companyLogoPath = null;
|
|
2388
2425
|
const allAgentRows = include.agents ? await agents.list(orgId, { includeTerminated: true }) : [];
|
|
2426
|
+
assertNotAborted();
|
|
2389
2427
|
const liveAgentRows = allAgentRows.filter((agent) => agent.status !== "terminated");
|
|
2390
2428
|
const organizationSkillRows = include.skills || include.agents ? await organizationSkills.listFull(orgId) : [];
|
|
2429
|
+
assertNotAborted();
|
|
2391
2430
|
if (include.agents) {
|
|
2392
2431
|
const skipped = allAgentRows.length - liveAgentRows.length;
|
|
2393
2432
|
if (skipped > 0) {
|
|
@@ -2434,8 +2473,10 @@ export function organizationPortabilityService(db, storage) {
|
|
|
2434
2473
|
const issuesSvc = issueService(db);
|
|
2435
2474
|
const automationsSvc = automationService(db);
|
|
2436
2475
|
const allProjectsRaw = include.projects || include.issues ? await projectsSvc.list(orgId) : [];
|
|
2476
|
+
assertNotAborted();
|
|
2437
2477
|
const allProjects = allProjectsRaw.filter((project) => !project.archivedAt);
|
|
2438
2478
|
const allAutomations = include.issues ? await automationsSvc.list(orgId) : [];
|
|
2479
|
+
assertNotAborted();
|
|
2439
2480
|
const projectById = new Map(allProjects.map((project) => [project.id, project]));
|
|
2440
2481
|
const projectByReference = new Map();
|
|
2441
2482
|
for (const project of allProjects) {
|
|
@@ -2494,6 +2535,7 @@ export function organizationPortabilityService(db, storage) {
|
|
|
2494
2535
|
}
|
|
2495
2536
|
selectedProjects.set(match.id, match);
|
|
2496
2537
|
const projectIssues = await issuesSvc.list(orgId, { projectId: match.id });
|
|
2538
|
+
assertNotAborted();
|
|
2497
2539
|
for (const issue of projectIssues) {
|
|
2498
2540
|
selectedIssues.set(issue.id, issue);
|
|
2499
2541
|
}
|
|
@@ -2508,6 +2550,7 @@ export function organizationPortabilityService(db, storage) {
|
|
|
2508
2550
|
}
|
|
2509
2551
|
if (include.issues && selectedIssues.size === 0) {
|
|
2510
2552
|
const allIssues = await issuesSvc.list(orgId);
|
|
2553
|
+
assertNotAborted();
|
|
2511
2554
|
for (const issue of allIssues) {
|
|
2512
2555
|
selectedIssues.set(issue.id, issue);
|
|
2513
2556
|
if (issue.projectId) {
|
|
@@ -2535,6 +2578,8 @@ export function organizationPortabilityService(db, storage) {
|
|
|
2535
2578
|
const selectedAutomationSummaries = Array.from(selectedAutomations.values())
|
|
2536
2579
|
.sort((left, right) => left.title.localeCompare(right.title));
|
|
2537
2580
|
const selectedAutomationRows = (await Promise.all(selectedAutomationSummaries.map((automation) => automationsSvc.getDetail(automation.id)))).filter((automation) => automation !== null);
|
|
2581
|
+
assertNotAborted();
|
|
2582
|
+
reportProgress("resolving_selection", `Resolved ${selectedAgents.size} agents, ${selectedProjects.size} projects, and ${selectedIssues.size + selectedAutomations.size} tasks.`, 2, Object.keys(files).length);
|
|
2538
2583
|
const taskSlugByIssueId = new Map();
|
|
2539
2584
|
const taskSlugByAutomationId = new Map();
|
|
2540
2585
|
const usedTaskSlugs = new Set();
|
|
@@ -2623,13 +2668,19 @@ export function organizationPortabilityService(db, storage) {
|
|
|
2623
2668
|
const selectedSkillRows = Array.from(selectedSkills.values())
|
|
2624
2669
|
.sort((left, right) => left.key.localeCompare(right.key));
|
|
2625
2670
|
const skillExportDirs = buildSkillExportDirMap(selectedSkillRows, organization.issuePrefix);
|
|
2671
|
+
if (selectedSkillRows.length > 0) {
|
|
2672
|
+
reportProgress("rendering_skills", `Rendering ${selectedSkillRows.length} skill files.`, 3, Object.keys(files).length);
|
|
2673
|
+
}
|
|
2626
2674
|
for (const skill of selectedSkillRows) {
|
|
2675
|
+
assertNotAborted();
|
|
2627
2676
|
const packageDir = skillExportDirs.get(skill.key) ?? `skills/${normalizeSkillSlug(skill.slug) ?? "skill"}`;
|
|
2628
2677
|
if (shouldReferenceSkillOnExport(skill, Boolean(input.expandReferencedSkills))) {
|
|
2629
2678
|
files[`${packageDir}/SKILL.md`] = await buildReferencedSkillMarkdown(skill);
|
|
2679
|
+
assertNotAborted();
|
|
2630
2680
|
continue;
|
|
2631
2681
|
}
|
|
2632
2682
|
for (const inventoryEntry of skill.fileInventory) {
|
|
2683
|
+
assertNotAborted();
|
|
2633
2684
|
const fileDetail = await organizationSkills.readFile(orgId, skill.id, inventoryEntry.path).catch(() => null);
|
|
2634
2685
|
if (!fileDetail)
|
|
2635
2686
|
continue;
|
|
@@ -2640,10 +2691,14 @@ export function organizationPortabilityService(db, storage) {
|
|
|
2640
2691
|
}
|
|
2641
2692
|
}
|
|
2642
2693
|
if (include.agents) {
|
|
2694
|
+
reportProgress("rendering_agents", `Rendering ${agentRows.length} agent files.`, 4, Object.keys(files).length);
|
|
2643
2695
|
for (const agent of agentRows) {
|
|
2696
|
+
assertNotAborted();
|
|
2644
2697
|
const slug = idToSlug.get(agent.id);
|
|
2645
2698
|
const exportedInstructions = await instructions.exportFiles(agent);
|
|
2699
|
+
assertNotAborted();
|
|
2646
2700
|
warnings.push(...exportedInstructions.warnings);
|
|
2701
|
+
const portableInstructions = ensurePortableAgentEntryFile(exportedInstructions.files, exportedInstructions.entryFile, asString(agent.agentRuntimeConfig.promptTemplate) ?? "");
|
|
2647
2702
|
const envInputsStart = envInputs.length;
|
|
2648
2703
|
const exportedEnvInputs = extractPortableEnvInputs(slug, agent.agentRuntimeConfig.env, warnings);
|
|
2649
2704
|
envInputs.push(...exportedEnvInputs);
|
|
@@ -2662,14 +2717,15 @@ export function organizationPortabilityService(db, storage) {
|
|
|
2662
2717
|
.filter((inputValue) => inputValue.agentSlug === slug));
|
|
2663
2718
|
const reportsToSlug = agent.reportsTo ? (idToSlug.get(agent.reportsTo) ?? null) : null;
|
|
2664
2719
|
const desiredSkills = await organizationSkills.getEnabledSkillKeysForAgent(agent.orgId, agent);
|
|
2720
|
+
assertNotAborted();
|
|
2665
2721
|
const commandValue = asString(portableAdapterConfig.command);
|
|
2666
2722
|
if (commandValue && isAbsoluteCommand(commandValue)) {
|
|
2667
2723
|
warnings.push(`Agent ${slug} command ${commandValue} was omitted from export because it is system-dependent.`);
|
|
2668
2724
|
delete portableAdapterConfig.command;
|
|
2669
2725
|
}
|
|
2670
|
-
for (const [relativePath, content] of Object.entries(
|
|
2726
|
+
for (const [relativePath, content] of Object.entries(portableInstructions.files)) {
|
|
2671
2727
|
const targetPath = `agents/${slug}/${relativePath}`;
|
|
2672
|
-
if (relativePath ===
|
|
2728
|
+
if (relativePath === portableInstructions.entryFile) {
|
|
2673
2729
|
files[targetPath] = buildMarkdown(stripEmptyValues({
|
|
2674
2730
|
name: agent.name,
|
|
2675
2731
|
title: agent.title ?? null,
|
|
@@ -2702,7 +2758,11 @@ export function organizationPortabilityService(db, storage) {
|
|
|
2702
2758
|
rudderAgentsOut[slug] = isPlainRecord(extension) ? extension : {};
|
|
2703
2759
|
}
|
|
2704
2760
|
}
|
|
2761
|
+
if (selectedProjectRows.length > 0) {
|
|
2762
|
+
reportProgress("rendering_projects", `Rendering ${selectedProjectRows.length} project files.`, 5, Object.keys(files).length);
|
|
2763
|
+
}
|
|
2705
2764
|
for (const project of selectedProjectRows) {
|
|
2765
|
+
assertNotAborted();
|
|
2706
2766
|
const slug = projectSlugById.get(project.id);
|
|
2707
2767
|
const projectPath = `projects/${slug}/PROJECT.md`;
|
|
2708
2768
|
const portableWorkspaces = await buildPortableProjectWorkspaces(slug, project.workspaces, warnings);
|
|
@@ -2722,7 +2782,11 @@ export function organizationPortabilityService(db, storage) {
|
|
|
2722
2782
|
});
|
|
2723
2783
|
rudderProjectsOut[slug] = isPlainRecord(extension) ? extension : {};
|
|
2724
2784
|
}
|
|
2785
|
+
if (selectedIssueRows.length > 0 || selectedAutomationRows.length > 0) {
|
|
2786
|
+
reportProgress("rendering_tasks", `Rendering ${selectedIssueRows.length + selectedAutomationRows.length} task files.`, 6, Object.keys(files).length);
|
|
2787
|
+
}
|
|
2725
2788
|
for (const issue of selectedIssueRows) {
|
|
2789
|
+
assertNotAborted();
|
|
2726
2790
|
const taskSlug = taskSlugByIssueId.get(issue.id);
|
|
2727
2791
|
const projectSlug = issue.projectId ? (projectSlugById.get(issue.projectId) ?? null) : null;
|
|
2728
2792
|
// All tasks go in top-level tasks/ folder, never nested under projects/
|
|
@@ -2770,6 +2834,7 @@ export function organizationPortabilityService(db, storage) {
|
|
|
2770
2834
|
warnings.push(`Tasks ${preview}${remainder} reference workspace ${workspaceId}, but that workspace could not be exported portably.`);
|
|
2771
2835
|
}
|
|
2772
2836
|
for (const automation of selectedAutomationRows) {
|
|
2837
|
+
assertNotAborted();
|
|
2773
2838
|
const taskSlug = taskSlugByAutomationId.get(automation.id);
|
|
2774
2839
|
const projectSlug = projectSlugById.get(automation.projectId) ?? null;
|
|
2775
2840
|
const taskPath = `tasks/${taskSlug}/TASK.md`;
|
|
@@ -2836,14 +2901,20 @@ export function organizationPortabilityService(db, storage) {
|
|
|
2836
2901
|
// Generate org chart PNG from manifest agents
|
|
2837
2902
|
if (resolved.manifest.agents.length > 0) {
|
|
2838
2903
|
try {
|
|
2904
|
+
assertNotAborted();
|
|
2905
|
+
reportProgress("generating_assets", "Generating organization chart image.", 7, Object.keys(finalFiles).length);
|
|
2839
2906
|
const orgNodes = buildOrgTreeFromManifest(resolved.manifest.agents);
|
|
2840
2907
|
const pngBuffer = await renderOrgChartPng(orgNodes);
|
|
2908
|
+
assertNotAborted();
|
|
2841
2909
|
finalFiles["images/org-chart.png"] = bufferToPortableBinaryFile(pngBuffer, "image/png");
|
|
2842
2910
|
}
|
|
2843
|
-
catch {
|
|
2911
|
+
catch (err) {
|
|
2912
|
+
if (options.signal?.aborted)
|
|
2913
|
+
throw err;
|
|
2844
2914
|
// Non-fatal: export still works without the org chart image
|
|
2845
2915
|
}
|
|
2846
2916
|
}
|
|
2917
|
+
reportProgress("finalizing", "Finalizing export manifest and README.", 7, Object.keys(finalFiles).length);
|
|
2847
2918
|
if (!input.selectedFiles || input.selectedFiles.some((entry) => normalizePortablePath(entry) === "README.md")) {
|
|
2848
2919
|
finalFiles["README.md"] = generateReadme(resolved.manifest, {
|
|
2849
2920
|
organizationName: organization.name,
|
|
@@ -2865,6 +2936,8 @@ export function organizationPortabilityService(db, storage) {
|
|
|
2865
2936
|
};
|
|
2866
2937
|
resolved.manifest.envInputs = dedupeEnvInputs(envInputs);
|
|
2867
2938
|
resolved.warnings.unshift(...warnings);
|
|
2939
|
+
assertNotAborted();
|
|
2940
|
+
reportProgress("ready", "Export package is ready.", 8, Object.keys(finalFiles).length);
|
|
2868
2941
|
return {
|
|
2869
2942
|
rootPath,
|
|
2870
2943
|
manifest: resolved.manifest,
|