dorkos 0.32.0 → 0.33.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/bin/cli.js +22 -14
- package/dist/client/assets/{TopologyGraph-BvCWa6bR.js → TopologyGraph-CcPsezRc.js} +1 -1
- package/dist/client/assets/{highlighted-body-OFNGDK62-DCY9VaVL.js → highlighted-body-OFNGDK62-D7oYf2hk.js} +1 -1
- package/dist/client/assets/{index-BDIKcnHS.js → index-BihWaFja.js} +1 -1
- package/dist/client/assets/index-CEFjTlQX.css +1 -0
- package/dist/client/assets/{index-GX0kJI82.js → index-CHbFiiOd.js} +1 -1
- package/dist/client/assets/index-DyrjYQ0i.js +1113 -0
- package/dist/client/index.html +2 -2
- package/dist/server/index.js +265 -167
- package/dist/server/index.js.map +4 -4
- package/package.json +2 -2
- package/dist/client/assets/index-BKQDXBuS.css +0 -1
- package/dist/client/assets/index-C7JPFoZp.js +0 -1098
package/dist/server/index.js
CHANGED
|
@@ -21843,6 +21843,47 @@ var init_scenario_store = __esm({
|
|
|
21843
21843
|
}
|
|
21844
21844
|
});
|
|
21845
21845
|
|
|
21846
|
+
// ../../apps/server/src/services/runtimes/claude-code/check-dependency.ts
|
|
21847
|
+
var check_dependency_exports = {};
|
|
21848
|
+
__export(check_dependency_exports, {
|
|
21849
|
+
checkClaudeDependency: () => checkClaudeDependency
|
|
21850
|
+
});
|
|
21851
|
+
import { execFileSync as execFileSync2 } from "child_process";
|
|
21852
|
+
function getInstallHint() {
|
|
21853
|
+
if (process.platform === "win32") {
|
|
21854
|
+
return "irm https://claude.ai/install.ps1 | iex";
|
|
21855
|
+
}
|
|
21856
|
+
return "curl -fsSL https://claude.ai/install.sh | bash";
|
|
21857
|
+
}
|
|
21858
|
+
function checkClaudeDependency() {
|
|
21859
|
+
try {
|
|
21860
|
+
const version2 = execFileSync2("claude", ["--version"], {
|
|
21861
|
+
encoding: "utf-8",
|
|
21862
|
+
timeout: 5e3,
|
|
21863
|
+
stdio: ["pipe", "pipe", "pipe"]
|
|
21864
|
+
}).trim();
|
|
21865
|
+
return {
|
|
21866
|
+
name: "Claude Code CLI",
|
|
21867
|
+
description: "The Claude Code CLI powers agent sessions in DorkOS.",
|
|
21868
|
+
status: "satisfied",
|
|
21869
|
+
version: version2
|
|
21870
|
+
};
|
|
21871
|
+
} catch {
|
|
21872
|
+
return {
|
|
21873
|
+
name: "Claude Code CLI",
|
|
21874
|
+
description: "The Claude Code CLI powers agent sessions in DorkOS.",
|
|
21875
|
+
status: "missing",
|
|
21876
|
+
installHint: getInstallHint(),
|
|
21877
|
+
infoUrl: "https://docs.anthropic.com/en/docs/claude-code"
|
|
21878
|
+
};
|
|
21879
|
+
}
|
|
21880
|
+
}
|
|
21881
|
+
var init_check_dependency = __esm({
|
|
21882
|
+
"../../apps/server/src/services/runtimes/claude-code/check-dependency.ts"() {
|
|
21883
|
+
"use strict";
|
|
21884
|
+
}
|
|
21885
|
+
});
|
|
21886
|
+
|
|
21846
21887
|
// ../../node_modules/.pnpm/giget@3.2.0/node_modules/giget/dist/_chunks/rolldown-runtime.mjs
|
|
21847
21888
|
var __defProp2, __exportAll;
|
|
21848
21889
|
var init_rolldown_runtime = __esm({
|
|
@@ -29932,10 +29973,10 @@ var require_composer = __commonJS({
|
|
|
29932
29973
|
* @param routeHandlers Handlers for every route
|
|
29933
29974
|
* @param fallback Optional fallback middleware if no route matches
|
|
29934
29975
|
*/
|
|
29935
|
-
route(
|
|
29976
|
+
route(router16, routeHandlers, fallback = pass) {
|
|
29936
29977
|
return this.lazy(async (ctx) => {
|
|
29937
29978
|
var _a2;
|
|
29938
|
-
const route = await
|
|
29979
|
+
const route = await router16(ctx);
|
|
29939
29980
|
return (_a2 = route === void 0 || !routeHandlers[route] ? fallback : routeHandlers[route]) !== null && _a2 !== void 0 ? _a2 : [];
|
|
29940
29981
|
});
|
|
29941
29982
|
}
|
|
@@ -71128,7 +71169,7 @@ var require_ExpressReceiver = __commonJS({
|
|
|
71128
71169
|
processEventErrorHandler;
|
|
71129
71170
|
unhandledRequestHandler;
|
|
71130
71171
|
unhandledRequestTimeoutMillis;
|
|
71131
|
-
constructor({ signingSecret = "", logger: logger3 = void 0, logLevel = logger_1.LogLevel.INFO, endpoints = { events: "/slack/events" }, processBeforeResponse = false, signatureVerification = true, clientId = void 0, clientSecret = void 0, stateSecret = void 0, redirectUri = void 0, installationStore = void 0, scopes = void 0, installerOptions = {}, app = void 0, router:
|
|
71172
|
+
constructor({ signingSecret = "", logger: logger3 = void 0, logLevel = logger_1.LogLevel.INFO, endpoints = { events: "/slack/events" }, processBeforeResponse = false, signatureVerification = true, clientId = void 0, clientSecret = void 0, stateSecret = void 0, redirectUri = void 0, installationStore = void 0, scopes = void 0, installerOptions = {}, app = void 0, router: router16 = void 0, customPropertiesExtractor = (_req) => ({}), dispatchErrorHandler = httpFunc.defaultAsyncDispatchErrorHandler, processEventErrorHandler = httpFunc.defaultProcessEventErrorHandler, unhandledRequestHandler = httpFunc.defaultUnhandledRequestHandler, unhandledRequestTimeoutMillis = 3001 }) {
|
|
71132
71173
|
this.app = app !== void 0 ? app : (0, express_1.default)();
|
|
71133
71174
|
if (typeof logger3 !== "undefined") {
|
|
71134
71175
|
this.logger = logger3;
|
|
@@ -71146,7 +71187,7 @@ var require_ExpressReceiver = __commonJS({
|
|
|
71146
71187
|
];
|
|
71147
71188
|
this.processBeforeResponse = processBeforeResponse;
|
|
71148
71189
|
const endpointList = typeof endpoints === "string" ? [endpoints] : Object.values(endpoints);
|
|
71149
|
-
this.router =
|
|
71190
|
+
this.router = router16 !== void 0 ? router16 : (0, express_1.Router)();
|
|
71150
71191
|
for (const endpoint of endpointList) {
|
|
71151
71192
|
this.router.post(endpoint, ...expressMiddleware);
|
|
71152
71193
|
}
|
|
@@ -81287,6 +81328,15 @@ var init_test_mode_runtime = __esm({
|
|
|
81287
81328
|
async getCommands(_forceRefresh, _cwd) {
|
|
81288
81329
|
return { commands: [], lastScanned: "" };
|
|
81289
81330
|
}
|
|
81331
|
+
async checkDependencies() {
|
|
81332
|
+
return [
|
|
81333
|
+
{
|
|
81334
|
+
name: "Test Mode Runtime",
|
|
81335
|
+
description: "No external dependencies required.",
|
|
81336
|
+
status: "satisfied"
|
|
81337
|
+
}
|
|
81338
|
+
];
|
|
81339
|
+
}
|
|
81290
81340
|
checkSessionHealth() {
|
|
81291
81341
|
}
|
|
81292
81342
|
approveTool(_id, _toolCallId, _approved) {
|
|
@@ -81986,7 +82036,20 @@ var ServerConfigSchema = z.object({
|
|
|
81986
82036
|
relay: z.object({
|
|
81987
82037
|
enabled: z.boolean().openapi({ description: "Whether the Relay message bus is enabled" })
|
|
81988
82038
|
}).optional().openapi({ description: "Relay message bus feature state" }),
|
|
82039
|
+
scheduler: z.object({
|
|
82040
|
+
maxConcurrentRuns: z.number().int().openapi({ description: "Maximum concurrent task runs (1-10)" }),
|
|
82041
|
+
timezone: z.string().nullable().openapi({
|
|
82042
|
+
description: "IANA timezone for cron expressions, or null for system default"
|
|
82043
|
+
}),
|
|
82044
|
+
retentionCount: z.number().int().openapi({ description: "Number of task run history records to retain" })
|
|
82045
|
+
}).optional().openapi({ description: "Task scheduler configuration" }),
|
|
82046
|
+
logging: z.object({
|
|
82047
|
+
level: z.string().openapi({ description: "Log verbosity level (fatal, error, warn, info, debug, trace)" }),
|
|
82048
|
+
maxLogSizeKb: z.number().int().openapi({ description: "Maximum log file size in KB before rotation" }),
|
|
82049
|
+
maxLogFiles: z.number().int().openapi({ description: "Number of rotated log files to retain" })
|
|
82050
|
+
}).optional().openapi({ description: "Logging configuration" }),
|
|
81989
82051
|
boundary: z.string().openapi({ description: "Server boundary path (home directory or configured boundary)" }),
|
|
82052
|
+
dorkHome: z.string().openapi({ description: "Data directory path (~/.dork or configured DORK_HOME)" }),
|
|
81990
82053
|
mesh: z.object({
|
|
81991
82054
|
enabled: z.boolean().openapi({ description: "Whether the Mesh agent discovery subsystem is enabled" }),
|
|
81992
82055
|
scanRoots: z.array(z.string()).optional().openapi({ description: "User-configured scan roots for agent discovery" })
|
|
@@ -82000,7 +82063,8 @@ var ServerConfigSchema = z.object({
|
|
|
82000
82063
|
agentContext: z.object({
|
|
82001
82064
|
relayTools: z.boolean().openapi({ description: "Whether relay tool context is injected into agent prompts" }),
|
|
82002
82065
|
meshTools: z.boolean().openapi({ description: "Whether mesh tool context is injected into agent prompts" }),
|
|
82003
|
-
adapterTools: z.boolean().openapi({ description: "Whether adapter tool context is injected into agent prompts" })
|
|
82066
|
+
adapterTools: z.boolean().openapi({ description: "Whether adapter tool context is injected into agent prompts" }),
|
|
82067
|
+
tasksTools: z.boolean().openapi({ description: "Whether tasks tool context is injected into agent prompts" })
|
|
82004
82068
|
}).optional().openapi({ description: "Agent tool context injection toggles" }),
|
|
82005
82069
|
agents: z.object({
|
|
82006
82070
|
defaultDirectory: z.string().openapi({ description: "Default directory for agent workspaces" }),
|
|
@@ -83124,7 +83188,7 @@ var SERVER_VERSION = resolveVersion();
|
|
|
83124
83188
|
var IS_DEV_BUILD = checkDevBuild(SERVER_VERSION);
|
|
83125
83189
|
function resolveVersion() {
|
|
83126
83190
|
if (env.DORKOS_VERSION_OVERRIDE) return env.DORKOS_VERSION_OVERRIDE;
|
|
83127
|
-
if (true) return "0.
|
|
83191
|
+
if (true) return "0.33.0";
|
|
83128
83192
|
const pkgPath = path5.join(path5.dirname(fileURLToPath2(import.meta.url)), "../../package.json");
|
|
83129
83193
|
return JSON.parse(readFileSync(pkgPath, "utf-8")).version;
|
|
83130
83194
|
}
|
|
@@ -83388,6 +83452,8 @@ router5.get("/", async (_req, res) => {
|
|
|
83388
83452
|
uptime: process.uptime(),
|
|
83389
83453
|
workingDirectory: process.cwd(),
|
|
83390
83454
|
boundary: getBoundary(),
|
|
83455
|
+
// Set by index.ts at startup before routes are registered — always present at request time
|
|
83456
|
+
dorkHome: process.env.DORK_HOME,
|
|
83391
83457
|
nodeVersion: process.version,
|
|
83392
83458
|
claudeCliPath,
|
|
83393
83459
|
tunnel: {
|
|
@@ -83403,6 +83469,16 @@ router5.get("/", async (_req, res) => {
|
|
|
83403
83469
|
enabled: isRelayEnabled(),
|
|
83404
83470
|
...getRelayInitError() && { initError: getRelayInitError() }
|
|
83405
83471
|
},
|
|
83472
|
+
scheduler: configManager.get("scheduler") ?? {
|
|
83473
|
+
maxConcurrentRuns: 1,
|
|
83474
|
+
timezone: null,
|
|
83475
|
+
retentionCount: 100
|
|
83476
|
+
},
|
|
83477
|
+
logging: configManager.get("logging") ?? {
|
|
83478
|
+
level: "info",
|
|
83479
|
+
maxLogSizeKb: 500,
|
|
83480
|
+
maxLogFiles: 14
|
|
83481
|
+
},
|
|
83406
83482
|
mesh: {
|
|
83407
83483
|
enabled: true,
|
|
83408
83484
|
scanRoots: configManager.get("mesh")?.scanRoots ?? [],
|
|
@@ -84799,10 +84875,26 @@ router11.get("/", (_req, res) => {
|
|
|
84799
84875
|
});
|
|
84800
84876
|
var capabilities_default = router11;
|
|
84801
84877
|
|
|
84878
|
+
// ../../apps/server/src/routes/system.ts
|
|
84879
|
+
import { Router as Router12 } from "express";
|
|
84880
|
+
var router12 = Router12();
|
|
84881
|
+
router12.get("/requirements", async (_req, res) => {
|
|
84882
|
+
const runtimes = {};
|
|
84883
|
+
for (const runtime of runtimeRegistry.listRuntimes()) {
|
|
84884
|
+
const dependencies = await runtime.checkDependencies();
|
|
84885
|
+
runtimes[runtime.type] = { dependencies };
|
|
84886
|
+
}
|
|
84887
|
+
const allSatisfied = Object.values(runtimes).every(
|
|
84888
|
+
(r5) => r5.dependencies.every((d5) => d5.status === "satisfied")
|
|
84889
|
+
);
|
|
84890
|
+
res.json({ runtimes, allSatisfied });
|
|
84891
|
+
});
|
|
84892
|
+
var system_default = router12;
|
|
84893
|
+
|
|
84802
84894
|
// ../../apps/server/src/routes/uploads.ts
|
|
84803
84895
|
var import_multer2 = __toESM(require_multer(), 1);
|
|
84804
84896
|
import path9 from "path";
|
|
84805
|
-
import { Router as
|
|
84897
|
+
import { Router as Router13 } from "express";
|
|
84806
84898
|
|
|
84807
84899
|
// ../../apps/server/src/services/core/upload-handler.ts
|
|
84808
84900
|
var import_multer = __toESM(require_multer(), 1);
|
|
@@ -84857,8 +84949,8 @@ var UploadHandler = class {
|
|
|
84857
84949
|
var uploadHandler = new UploadHandler();
|
|
84858
84950
|
|
|
84859
84951
|
// ../../apps/server/src/routes/uploads.ts
|
|
84860
|
-
var
|
|
84861
|
-
|
|
84952
|
+
var router13 = Router13();
|
|
84953
|
+
router13.post("/", async (req, res) => {
|
|
84862
84954
|
try {
|
|
84863
84955
|
const cwd = req.query.cwd;
|
|
84864
84956
|
if (!cwd || typeof cwd !== "string") {
|
|
@@ -84896,7 +84988,7 @@ router12.post("/", async (req, res) => {
|
|
|
84896
84988
|
throw err;
|
|
84897
84989
|
}
|
|
84898
84990
|
});
|
|
84899
|
-
|
|
84991
|
+
router13.get("/:filename", async (req, res) => {
|
|
84900
84992
|
try {
|
|
84901
84993
|
const cwd = req.query.cwd;
|
|
84902
84994
|
if (!cwd || typeof cwd !== "string") {
|
|
@@ -84923,18 +85015,18 @@ router12.get("/:filename", async (req, res) => {
|
|
|
84923
85015
|
throw err;
|
|
84924
85016
|
}
|
|
84925
85017
|
});
|
|
84926
|
-
var uploads_default =
|
|
85018
|
+
var uploads_default = router13;
|
|
84927
85019
|
|
|
84928
85020
|
// ../../apps/server/src/routes/mcp-config.ts
|
|
84929
|
-
import { Router as
|
|
85021
|
+
import { Router as Router14 } from "express";
|
|
84930
85022
|
import { readFile } from "fs/promises";
|
|
84931
85023
|
import path10 from "path";
|
|
84932
85024
|
import { z as z9 } from "zod";
|
|
84933
|
-
var
|
|
85025
|
+
var router14 = Router14();
|
|
84934
85026
|
var QuerySchema = z9.object({
|
|
84935
85027
|
path: z9.string().min(1)
|
|
84936
85028
|
});
|
|
84937
|
-
|
|
85029
|
+
router14.get("/", async (req, res) => {
|
|
84938
85030
|
const parsed = QuerySchema.safeParse(req.query);
|
|
84939
85031
|
if (!parsed.success) {
|
|
84940
85032
|
return res.status(400).json({ error: "Missing required query param: path" });
|
|
@@ -84967,10 +85059,10 @@ router13.get("/", async (req, res) => {
|
|
|
84967
85059
|
throw err;
|
|
84968
85060
|
}
|
|
84969
85061
|
});
|
|
84970
|
-
var mcp_config_default =
|
|
85062
|
+
var mcp_config_default = router14;
|
|
84971
85063
|
|
|
84972
85064
|
// ../../apps/server/src/routes/events.ts
|
|
84973
|
-
import { Router as
|
|
85065
|
+
import { Router as Router15 } from "express";
|
|
84974
85066
|
|
|
84975
85067
|
// ../../apps/server/src/services/core/event-fan-out.ts
|
|
84976
85068
|
init_logger();
|
|
@@ -85019,8 +85111,8 @@ data: ${JSON.stringify(data)}
|
|
|
85019
85111
|
var eventFanOut = new EventFanOut();
|
|
85020
85112
|
|
|
85021
85113
|
// ../../apps/server/src/routes/events.ts
|
|
85022
|
-
var
|
|
85023
|
-
|
|
85114
|
+
var router15 = Router15();
|
|
85115
|
+
router15.get("/", (req, res) => {
|
|
85024
85116
|
const unsubscribe = eventFanOut.addClient(res);
|
|
85025
85117
|
if (res.writableEnded) return;
|
|
85026
85118
|
initSSEStream(res);
|
|
@@ -85046,7 +85138,7 @@ data: ${JSON.stringify({ connectedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
|
85046
85138
|
unsubscribe();
|
|
85047
85139
|
});
|
|
85048
85140
|
});
|
|
85049
|
-
var events_default =
|
|
85141
|
+
var events_default = router15;
|
|
85050
85142
|
|
|
85051
85143
|
// ../../apps/server/src/services/core/openapi-registry.ts
|
|
85052
85144
|
init_env();
|
|
@@ -86685,7 +86777,7 @@ function tunnelPasscodeAuth(req, res, next) {
|
|
|
86685
86777
|
}
|
|
86686
86778
|
|
|
86687
86779
|
// ../../apps/server/src/routes/test-control.ts
|
|
86688
|
-
import { Router as
|
|
86780
|
+
import { Router as Router16 } from "express";
|
|
86689
86781
|
import os2 from "os";
|
|
86690
86782
|
import path12 from "path";
|
|
86691
86783
|
import { z as z16 } from "zod";
|
|
@@ -86992,7 +87084,7 @@ async function removeManifest(projectPath) {
|
|
|
86992
87084
|
|
|
86993
87085
|
// ../../apps/server/src/routes/test-control.ts
|
|
86994
87086
|
init_scenario_store();
|
|
86995
|
-
var testControlRouter =
|
|
87087
|
+
var testControlRouter = Router16();
|
|
86996
87088
|
var scenarioSchema = z16.object({
|
|
86997
87089
|
name: z16.string().min(1),
|
|
86998
87090
|
sessionId: z16.string().uuid().optional()
|
|
@@ -87099,6 +87191,7 @@ function createApp() {
|
|
|
87099
87191
|
app.use("/api/models", models_default);
|
|
87100
87192
|
app.use("/api/subagents", subagents_default);
|
|
87101
87193
|
app.use("/api/capabilities", capabilities_default);
|
|
87194
|
+
app.use("/api/system", system_default);
|
|
87102
87195
|
app.use("/api/uploads", uploads_default);
|
|
87103
87196
|
app.use("/api/mcp-config", mcp_config_default);
|
|
87104
87197
|
app.use("/api/events", events_default);
|
|
@@ -92302,6 +92395,11 @@ var ClaudeCodeRuntime = class _ClaudeCodeRuntime {
|
|
|
92302
92395
|
getCapabilities() {
|
|
92303
92396
|
return CLAUDE_CODE_CAPABILITIES;
|
|
92304
92397
|
}
|
|
92398
|
+
/** Check whether the Claude Code CLI binary is available. */
|
|
92399
|
+
async checkDependencies() {
|
|
92400
|
+
const { checkClaudeDependency: checkClaudeDependency2 } = await Promise.resolve().then(() => (init_check_dependency(), check_dependency_exports));
|
|
92401
|
+
return [checkClaudeDependency2()];
|
|
92402
|
+
}
|
|
92305
92403
|
// ---------------------------------------------------------------------------
|
|
92306
92404
|
// Dependency injection
|
|
92307
92405
|
// ---------------------------------------------------------------------------
|
|
@@ -94066,7 +94164,7 @@ import { z as z31 } from "zod";
|
|
|
94066
94164
|
|
|
94067
94165
|
// ../../apps/server/src/routes/extensions.ts
|
|
94068
94166
|
init_logger();
|
|
94069
|
-
import { Router as
|
|
94167
|
+
import { Router as Router17 } from "express";
|
|
94070
94168
|
import fs11 from "fs/promises";
|
|
94071
94169
|
import path18 from "path";
|
|
94072
94170
|
import { z as z30 } from "zod";
|
|
@@ -94267,8 +94365,8 @@ var SetSettingBodySchema = z30.object({
|
|
|
94267
94365
|
});
|
|
94268
94366
|
var SAFE_EXT_ID = /^[a-z0-9][a-z0-9-]*$/;
|
|
94269
94367
|
function createExtensionsRouter(extensionManager2, dorkHome, getCwd) {
|
|
94270
|
-
const
|
|
94271
|
-
|
|
94368
|
+
const router16 = Router17();
|
|
94369
|
+
router16.get("/events", (_req, res) => {
|
|
94272
94370
|
logger.warn("[DEPRECATED] GET /api/extensions/events \u2014 use GET /api/events instead");
|
|
94273
94371
|
res.set({
|
|
94274
94372
|
"Content-Type": "text/event-stream",
|
|
@@ -94282,7 +94380,7 @@ function createExtensionsRouter(extensionManager2, dorkHome, getCwd) {
|
|
|
94282
94380
|
sseClients.delete(res);
|
|
94283
94381
|
});
|
|
94284
94382
|
});
|
|
94285
|
-
|
|
94383
|
+
router16.get("/", async (_req, res) => {
|
|
94286
94384
|
try {
|
|
94287
94385
|
const extensions = extensionManager2.listPublic();
|
|
94288
94386
|
res.json(extensions);
|
|
@@ -94291,7 +94389,7 @@ function createExtensionsRouter(extensionManager2, dorkHome, getCwd) {
|
|
|
94291
94389
|
res.status(500).json({ error: "Failed to list extensions" });
|
|
94292
94390
|
}
|
|
94293
94391
|
});
|
|
94294
|
-
|
|
94392
|
+
router16.post("/:id/enable", async (req, res) => {
|
|
94295
94393
|
try {
|
|
94296
94394
|
const { id } = req.params;
|
|
94297
94395
|
if (!SAFE_EXT_ID.test(id)) return res.status(400).json({ error: "Invalid extension ID" });
|
|
@@ -94318,7 +94416,7 @@ function createExtensionsRouter(extensionManager2, dorkHome, getCwd) {
|
|
|
94318
94416
|
res.status(500).json({ error: "Failed to enable extension" });
|
|
94319
94417
|
}
|
|
94320
94418
|
});
|
|
94321
|
-
|
|
94419
|
+
router16.post("/:id/disable", async (req, res) => {
|
|
94322
94420
|
try {
|
|
94323
94421
|
const { id } = req.params;
|
|
94324
94422
|
if (!SAFE_EXT_ID.test(id)) return res.status(400).json({ error: "Invalid extension ID" });
|
|
@@ -94345,7 +94443,7 @@ function createExtensionsRouter(extensionManager2, dorkHome, getCwd) {
|
|
|
94345
94443
|
res.status(500).json({ error: "Failed to disable extension" });
|
|
94346
94444
|
}
|
|
94347
94445
|
});
|
|
94348
|
-
|
|
94446
|
+
router16.post("/:id/init-server", async (req, res) => {
|
|
94349
94447
|
try {
|
|
94350
94448
|
const { id } = req.params;
|
|
94351
94449
|
if (!SAFE_EXT_ID.test(id)) return res.status(400).json({ error: "Invalid extension ID" });
|
|
@@ -94359,7 +94457,7 @@ function createExtensionsRouter(extensionManager2, dorkHome, getCwd) {
|
|
|
94359
94457
|
res.status(500).json({ error: "Failed to initialize server extension" });
|
|
94360
94458
|
}
|
|
94361
94459
|
});
|
|
94362
|
-
|
|
94460
|
+
router16.post("/reload", async (_req, res) => {
|
|
94363
94461
|
try {
|
|
94364
94462
|
const extensions = await extensionManager2.reload();
|
|
94365
94463
|
res.json(extensions);
|
|
@@ -94368,7 +94466,7 @@ function createExtensionsRouter(extensionManager2, dorkHome, getCwd) {
|
|
|
94368
94466
|
res.status(500).json({ error: "Failed to reload extensions" });
|
|
94369
94467
|
}
|
|
94370
94468
|
});
|
|
94371
|
-
|
|
94469
|
+
router16.post("/cwd-changed", async (req, res) => {
|
|
94372
94470
|
try {
|
|
94373
94471
|
const parsed = CwdChangedBodySchema.safeParse(req.body);
|
|
94374
94472
|
if (!parsed.success) {
|
|
@@ -94388,7 +94486,7 @@ function createExtensionsRouter(extensionManager2, dorkHome, getCwd) {
|
|
|
94388
94486
|
res.status(500).json({ error: "Failed to handle CWD change" });
|
|
94389
94487
|
}
|
|
94390
94488
|
});
|
|
94391
|
-
|
|
94489
|
+
router16.get("/:id/bundle", async (req, res) => {
|
|
94392
94490
|
try {
|
|
94393
94491
|
const { id } = req.params;
|
|
94394
94492
|
if (!SAFE_EXT_ID.test(id)) return res.status(400).json({ error: "Invalid extension ID" });
|
|
@@ -94404,7 +94502,7 @@ function createExtensionsRouter(extensionManager2, dorkHome, getCwd) {
|
|
|
94404
94502
|
res.status(500).json({ error: "Failed to serve bundle" });
|
|
94405
94503
|
}
|
|
94406
94504
|
});
|
|
94407
|
-
|
|
94505
|
+
router16.get("/:id/data", async (req, res) => {
|
|
94408
94506
|
try {
|
|
94409
94507
|
const { id } = req.params;
|
|
94410
94508
|
if (!SAFE_EXT_ID.test(id)) return res.status(400).json({ error: "Invalid extension ID" });
|
|
@@ -94423,7 +94521,7 @@ function createExtensionsRouter(extensionManager2, dorkHome, getCwd) {
|
|
|
94423
94521
|
res.status(500).json({ error: "Failed to read extension data" });
|
|
94424
94522
|
}
|
|
94425
94523
|
});
|
|
94426
|
-
|
|
94524
|
+
router16.put("/:id/data", async (req, res) => {
|
|
94427
94525
|
try {
|
|
94428
94526
|
const { id } = req.params;
|
|
94429
94527
|
if (!SAFE_EXT_ID.test(id)) return res.status(400).json({ error: "Invalid extension ID" });
|
|
@@ -94441,7 +94539,7 @@ function createExtensionsRouter(extensionManager2, dorkHome, getCwd) {
|
|
|
94441
94539
|
res.status(500).json({ error: "Failed to write extension data" });
|
|
94442
94540
|
}
|
|
94443
94541
|
});
|
|
94444
|
-
|
|
94542
|
+
router16.get("/:id/secrets", async (req, res) => {
|
|
94445
94543
|
try {
|
|
94446
94544
|
const { id } = req.params;
|
|
94447
94545
|
if (!SAFE_EXT_ID.test(id)) return res.status(400).json({ error: "Invalid extension ID" });
|
|
@@ -94466,7 +94564,7 @@ function createExtensionsRouter(extensionManager2, dorkHome, getCwd) {
|
|
|
94466
94564
|
res.status(500).json({ error: "Failed to list secrets" });
|
|
94467
94565
|
}
|
|
94468
94566
|
});
|
|
94469
|
-
|
|
94567
|
+
router16.put("/:id/secrets/:key", async (req, res) => {
|
|
94470
94568
|
try {
|
|
94471
94569
|
const { id, key } = req.params;
|
|
94472
94570
|
if (!SAFE_EXT_ID.test(id)) return res.status(400).json({ error: "Invalid extension ID" });
|
|
@@ -94503,7 +94601,7 @@ function createExtensionsRouter(extensionManager2, dorkHome, getCwd) {
|
|
|
94503
94601
|
res.status(500).json({ error: "Failed to set secret" });
|
|
94504
94602
|
}
|
|
94505
94603
|
});
|
|
94506
|
-
|
|
94604
|
+
router16.delete("/:id/secrets/:key", async (req, res) => {
|
|
94507
94605
|
try {
|
|
94508
94606
|
const { id, key } = req.params;
|
|
94509
94607
|
if (!SAFE_EXT_ID.test(id)) return res.status(400).json({ error: "Invalid extension ID" });
|
|
@@ -94519,7 +94617,7 @@ function createExtensionsRouter(extensionManager2, dorkHome, getCwd) {
|
|
|
94519
94617
|
res.status(500).json({ error: "Failed to delete secret" });
|
|
94520
94618
|
}
|
|
94521
94619
|
});
|
|
94522
|
-
|
|
94620
|
+
router16.get("/:id/settings", async (req, res) => {
|
|
94523
94621
|
try {
|
|
94524
94622
|
const { id } = req.params;
|
|
94525
94623
|
if (!SAFE_EXT_ID.test(id)) return res.status(400).json({ error: "Invalid extension ID" });
|
|
@@ -94552,7 +94650,7 @@ function createExtensionsRouter(extensionManager2, dorkHome, getCwd) {
|
|
|
94552
94650
|
res.status(500).json({ error: "Failed to list settings" });
|
|
94553
94651
|
}
|
|
94554
94652
|
});
|
|
94555
|
-
|
|
94653
|
+
router16.put("/:id/settings/:key", async (req, res) => {
|
|
94556
94654
|
try {
|
|
94557
94655
|
const { id, key } = req.params;
|
|
94558
94656
|
if (!SAFE_EXT_ID.test(id)) return res.status(400).json({ error: "Invalid extension ID" });
|
|
@@ -94589,7 +94687,7 @@ function createExtensionsRouter(extensionManager2, dorkHome, getCwd) {
|
|
|
94589
94687
|
res.status(500).json({ error: "Failed to set setting" });
|
|
94590
94688
|
}
|
|
94591
94689
|
});
|
|
94592
|
-
|
|
94690
|
+
router16.delete("/:id/settings/:key", async (req, res) => {
|
|
94593
94691
|
try {
|
|
94594
94692
|
const { id, key } = req.params;
|
|
94595
94693
|
if (!SAFE_EXT_ID.test(id)) return res.status(400).json({ error: "Invalid extension ID" });
|
|
@@ -94605,7 +94703,7 @@ function createExtensionsRouter(extensionManager2, dorkHome, getCwd) {
|
|
|
94605
94703
|
res.status(500).json({ error: "Failed to delete setting" });
|
|
94606
94704
|
}
|
|
94607
94705
|
});
|
|
94608
|
-
return
|
|
94706
|
+
return router16;
|
|
94609
94707
|
}
|
|
94610
94708
|
function resolveDataPath(id, manager, dorkHome, getCwd) {
|
|
94611
94709
|
const record2 = manager.get(id);
|
|
@@ -102110,7 +102208,7 @@ async function loadTemplates(dorkHome) {
|
|
|
102110
102208
|
|
|
102111
102209
|
// ../../apps/server/src/routes/tasks.ts
|
|
102112
102210
|
import path26 from "node:path";
|
|
102113
|
-
import { Router as
|
|
102211
|
+
import { Router as Router18 } from "express";
|
|
102114
102212
|
|
|
102115
102213
|
// ../skills/dist/slug.js
|
|
102116
102214
|
function slugify(displayName) {
|
|
@@ -102120,19 +102218,19 @@ function slugify(displayName) {
|
|
|
102120
102218
|
// ../../apps/server/src/routes/tasks.ts
|
|
102121
102219
|
import fs15 from "node:fs/promises";
|
|
102122
102220
|
function createTasksRouter(store, scheduler, dorkHome, meshCore2, activityService) {
|
|
102123
|
-
const
|
|
102124
|
-
|
|
102221
|
+
const router16 = Router18();
|
|
102222
|
+
router16.get("/templates", async (_req, res) => {
|
|
102125
102223
|
const templates = await loadTemplates(dorkHome);
|
|
102126
102224
|
return res.json(templates);
|
|
102127
102225
|
});
|
|
102128
|
-
|
|
102226
|
+
router16.get("/", (_req, res) => {
|
|
102129
102227
|
const schedules = store.getTasks().map((s5) => ({
|
|
102130
102228
|
...s5,
|
|
102131
102229
|
nextRun: scheduler.getNextRun(s5.id)?.toISOString() ?? null
|
|
102132
102230
|
}));
|
|
102133
102231
|
res.json(schedules);
|
|
102134
102232
|
});
|
|
102135
|
-
|
|
102233
|
+
router16.post("/", async (req, res) => {
|
|
102136
102234
|
const data = parseBody(CreateTaskRequestSchema, req.body, res);
|
|
102137
102235
|
if (!data) return;
|
|
102138
102236
|
const slug = slugify(data.name);
|
|
@@ -102206,7 +102304,7 @@ function createTasksRouter(store, scheduler, dorkHome, meshCore2, activityServic
|
|
|
102206
102304
|
});
|
|
102207
102305
|
return res.status(201).json(schedule);
|
|
102208
102306
|
});
|
|
102209
|
-
|
|
102307
|
+
router16.patch("/:id", async (req, res) => {
|
|
102210
102308
|
const data = parseBody(UpdateTaskRequestSchema, req.body, res);
|
|
102211
102309
|
if (!data) return;
|
|
102212
102310
|
const existing = store.getTask(req.params.id);
|
|
@@ -102266,7 +102364,7 @@ function createTasksRouter(store, scheduler, dorkHome, meshCore2, activityServic
|
|
|
102266
102364
|
}
|
|
102267
102365
|
return res.json(updated);
|
|
102268
102366
|
});
|
|
102269
|
-
|
|
102367
|
+
router16.delete("/:id", async (_req, res) => {
|
|
102270
102368
|
const { id } = _req.params;
|
|
102271
102369
|
const schedule = store.getTask(id);
|
|
102272
102370
|
if (!schedule) {
|
|
@@ -102295,14 +102393,14 @@ function createTasksRouter(store, scheduler, dorkHome, meshCore2, activityServic
|
|
|
102295
102393
|
});
|
|
102296
102394
|
return res.json({ success: true });
|
|
102297
102395
|
});
|
|
102298
|
-
|
|
102396
|
+
router16.post("/:id/trigger", async (_req, res) => {
|
|
102299
102397
|
const run = await scheduler.triggerManualRun(_req.params.id);
|
|
102300
102398
|
if (!run) {
|
|
102301
102399
|
return res.status(404).json({ error: "Schedule not found" });
|
|
102302
102400
|
}
|
|
102303
102401
|
return res.status(201).json({ runId: run.id });
|
|
102304
102402
|
});
|
|
102305
|
-
|
|
102403
|
+
router16.get("/runs", (req, res) => {
|
|
102306
102404
|
const data = parseBody(ListTaskRunsQuerySchema, req.query, res);
|
|
102307
102405
|
if (!data) return;
|
|
102308
102406
|
const runs = store.listRuns({
|
|
@@ -102313,14 +102411,14 @@ function createTasksRouter(store, scheduler, dorkHome, meshCore2, activityServic
|
|
|
102313
102411
|
});
|
|
102314
102412
|
return res.json(runs);
|
|
102315
102413
|
});
|
|
102316
|
-
|
|
102414
|
+
router16.get("/runs/:id", (req, res) => {
|
|
102317
102415
|
const run = store.getRun(req.params.id);
|
|
102318
102416
|
if (!run) {
|
|
102319
102417
|
return res.status(404).json({ error: "Run not found" });
|
|
102320
102418
|
}
|
|
102321
102419
|
res.json(run);
|
|
102322
102420
|
});
|
|
102323
|
-
|
|
102421
|
+
router16.post("/runs/:id/cancel", (req, res) => {
|
|
102324
102422
|
const run = store.getRun(req.params.id);
|
|
102325
102423
|
const cancelled = scheduler.cancelRun(req.params.id);
|
|
102326
102424
|
if (!cancelled) {
|
|
@@ -102342,7 +102440,7 @@ function createTasksRouter(store, scheduler, dorkHome, meshCore2, activityServic
|
|
|
102342
102440
|
}
|
|
102343
102441
|
return res.json({ success: true });
|
|
102344
102442
|
});
|
|
102345
|
-
return
|
|
102443
|
+
return router16;
|
|
102346
102444
|
}
|
|
102347
102445
|
|
|
102348
102446
|
// ../relay/dist/relay-core.js
|
|
@@ -128336,7 +128434,7 @@ function validateAdapterShape(obj, id) {
|
|
|
128336
128434
|
}
|
|
128337
128435
|
|
|
128338
128436
|
// ../../apps/server/src/routes/relay.ts
|
|
128339
|
-
import { Router as
|
|
128437
|
+
import { Router as Router20 } from "express";
|
|
128340
128438
|
|
|
128341
128439
|
// ../../apps/server/src/services/relay/subject-resolver.ts
|
|
128342
128440
|
var SESSION_ID_PREVIEW_LENGTH = 7;
|
|
@@ -128378,7 +128476,7 @@ async function resolveSubjectLabels(subjects, deps) {
|
|
|
128378
128476
|
}
|
|
128379
128477
|
|
|
128380
128478
|
// ../../apps/server/src/routes/relay-adapters.ts
|
|
128381
|
-
import { Router as
|
|
128479
|
+
import { Router as Router19 } from "express";
|
|
128382
128480
|
import express2 from "express";
|
|
128383
128481
|
import { z as z36 } from "zod";
|
|
128384
128482
|
|
|
@@ -129856,8 +129954,8 @@ function resolveAdapterName(adapterManager2, adapterId) {
|
|
|
129856
129954
|
return info?.config.label || info?.config.id || adapterId;
|
|
129857
129955
|
}
|
|
129858
129956
|
function createAdapterRouter(adapterManager2, traceStore2) {
|
|
129859
|
-
const
|
|
129860
|
-
|
|
129957
|
+
const router16 = Router19();
|
|
129958
|
+
router16.get("/adapters/catalog", (_req, res) => {
|
|
129861
129959
|
try {
|
|
129862
129960
|
res.json(adapterManager2.getCatalog());
|
|
129863
129961
|
} catch (err) {
|
|
@@ -129865,7 +129963,7 @@ function createAdapterRouter(adapterManager2, traceStore2) {
|
|
|
129865
129963
|
res.status(500).json({ error: message });
|
|
129866
129964
|
}
|
|
129867
129965
|
});
|
|
129868
|
-
|
|
129966
|
+
router16.post("/adapters/reload", async (_req, res) => {
|
|
129869
129967
|
try {
|
|
129870
129968
|
await adapterManager2.reload();
|
|
129871
129969
|
return res.json({ ok: true });
|
|
@@ -129874,13 +129972,13 @@ function createAdapterRouter(adapterManager2, traceStore2) {
|
|
|
129874
129972
|
return res.status(500).json({ error: message });
|
|
129875
129973
|
}
|
|
129876
129974
|
});
|
|
129877
|
-
|
|
129878
|
-
|
|
129975
|
+
router16.get("/adapters", (_req, res) => res.json(adapterManager2.listAdapters()));
|
|
129976
|
+
router16.get("/adapters/:id", (req, res) => {
|
|
129879
129977
|
const adapter = adapterManager2.getAdapter(req.params.id);
|
|
129880
129978
|
if (!adapter) return res.status(404).json({ error: "Adapter not found" });
|
|
129881
129979
|
return res.json(adapter);
|
|
129882
129980
|
});
|
|
129883
|
-
|
|
129981
|
+
router16.post("/adapters/test", async (req, res) => {
|
|
129884
129982
|
const result2 = AdapterTestRequestSchema.safeParse(req.body);
|
|
129885
129983
|
if (!result2.success) {
|
|
129886
129984
|
return res.status(400).json({ error: "Validation failed", details: result2.error.flatten() });
|
|
@@ -129893,7 +129991,7 @@ function createAdapterRouter(adapterManager2, traceStore2) {
|
|
|
129893
129991
|
return res.status(500).json({ error: message });
|
|
129894
129992
|
}
|
|
129895
129993
|
});
|
|
129896
|
-
|
|
129994
|
+
router16.post("/adapters", async (req, res) => {
|
|
129897
129995
|
const result2 = AdapterCreateRequestSchema.safeParse(req.body);
|
|
129898
129996
|
if (!result2.success) {
|
|
129899
129997
|
return res.status(400).json({ error: "Validation failed", details: result2.error.flatten() });
|
|
@@ -129924,7 +130022,7 @@ function createAdapterRouter(adapterManager2, traceStore2) {
|
|
|
129924
130022
|
return res.status(500).json({ error: message });
|
|
129925
130023
|
}
|
|
129926
130024
|
});
|
|
129927
|
-
|
|
130025
|
+
router16.delete("/adapters/:id", async (req, res) => {
|
|
129928
130026
|
try {
|
|
129929
130027
|
const adapterName = adapterManager2.resolveAdapterName(req.params.id);
|
|
129930
130028
|
await adapterManager2.removeAdapter(req.params.id);
|
|
@@ -129948,7 +130046,7 @@ function createAdapterRouter(adapterManager2, traceStore2) {
|
|
|
129948
130046
|
return res.status(500).json({ error: message });
|
|
129949
130047
|
}
|
|
129950
130048
|
});
|
|
129951
|
-
|
|
130049
|
+
router16.patch("/adapters/:id/config", async (req, res) => {
|
|
129952
130050
|
const result2 = AdapterConfigUpdateSchema.safeParse(req.body);
|
|
129953
130051
|
if (!result2.success) {
|
|
129954
130052
|
return res.status(400).json({ error: "Validation failed", details: result2.error.flatten() });
|
|
@@ -129962,7 +130060,7 @@ function createAdapterRouter(adapterManager2, traceStore2) {
|
|
|
129962
130060
|
return res.status(500).json({ error: message });
|
|
129963
130061
|
}
|
|
129964
130062
|
});
|
|
129965
|
-
|
|
130063
|
+
router16.post("/adapters/:id/enable", async (req, res) => {
|
|
129966
130064
|
try {
|
|
129967
130065
|
await adapterManager2.enable(req.params.id);
|
|
129968
130066
|
return res.json({ ok: true });
|
|
@@ -129970,7 +130068,7 @@ function createAdapterRouter(adapterManager2, traceStore2) {
|
|
|
129970
130068
|
return res.status(400).json({ error: err instanceof Error ? err.message : "Enable failed" });
|
|
129971
130069
|
}
|
|
129972
130070
|
});
|
|
129973
|
-
|
|
130071
|
+
router16.post("/adapters/:id/disable", async (req, res) => {
|
|
129974
130072
|
try {
|
|
129975
130073
|
await adapterManager2.disable(req.params.id);
|
|
129976
130074
|
return res.json({ ok: true });
|
|
@@ -129978,7 +130076,7 @@ function createAdapterRouter(adapterManager2, traceStore2) {
|
|
|
129978
130076
|
return res.status(400).json({ error: err instanceof Error ? err.message : "Disable failed" });
|
|
129979
130077
|
}
|
|
129980
130078
|
});
|
|
129981
|
-
|
|
130079
|
+
router16.get("/adapters/:id/events", (_req, res) => {
|
|
129982
130080
|
if (!traceStore2) return res.status(404).json({ error: "Tracing not available" });
|
|
129983
130081
|
const { id } = _req.params;
|
|
129984
130082
|
const limitParam = parseInt(_req.query.limit);
|
|
@@ -129986,7 +130084,7 @@ function createAdapterRouter(adapterManager2, traceStore2) {
|
|
|
129986
130084
|
const events = traceStore2.getAdapterEvents(id, limit);
|
|
129987
130085
|
return res.json({ events });
|
|
129988
130086
|
});
|
|
129989
|
-
|
|
130087
|
+
router16.get("/adapters/:id/chats", (_req, res) => {
|
|
129990
130088
|
if (!traceStore2) return res.status(404).json({ error: "Tracing not available" });
|
|
129991
130089
|
const { id } = _req.params;
|
|
129992
130090
|
const limitParam = parseInt(_req.query.limit);
|
|
@@ -129994,19 +130092,19 @@ function createAdapterRouter(adapterManager2, traceStore2) {
|
|
|
129994
130092
|
const chats = traceStore2.getObservedChats(id, limit);
|
|
129995
130093
|
return res.json({ chats });
|
|
129996
130094
|
});
|
|
129997
|
-
|
|
130095
|
+
router16.get("/bindings", (_req, res) => {
|
|
129998
130096
|
const bindingStore = adapterManager2.getBindingStore();
|
|
129999
130097
|
if (!bindingStore) return res.status(503).json({ error: "Binding subsystem not available" });
|
|
130000
130098
|
return res.json({ bindings: bindingStore.getAll() });
|
|
130001
130099
|
});
|
|
130002
|
-
|
|
130100
|
+
router16.get("/bindings/:id", (req, res) => {
|
|
130003
130101
|
const bindingStore = adapterManager2.getBindingStore();
|
|
130004
130102
|
if (!bindingStore) return res.status(503).json({ error: "Binding subsystem not available" });
|
|
130005
130103
|
const binding = bindingStore.getById(req.params.id);
|
|
130006
130104
|
if (!binding) return res.status(404).json({ error: "Binding not found" });
|
|
130007
130105
|
return res.json({ binding });
|
|
130008
130106
|
});
|
|
130009
|
-
|
|
130107
|
+
router16.post("/bindings", async (req, res) => {
|
|
130010
130108
|
const bindingStore = adapterManager2.getBindingStore();
|
|
130011
130109
|
if (!bindingStore) return res.status(503).json({ error: "Binding subsystem not available" });
|
|
130012
130110
|
const result2 = CreateBindingRequestSchema.safeParse(req.body);
|
|
@@ -130051,7 +130149,7 @@ function createAdapterRouter(adapterManager2, traceStore2) {
|
|
|
130051
130149
|
return res.status(500).json({ error: message });
|
|
130052
130150
|
}
|
|
130053
130151
|
});
|
|
130054
|
-
|
|
130152
|
+
router16.patch("/bindings/:id", async (req, res) => {
|
|
130055
130153
|
const bindingStore = adapterManager2.getBindingStore();
|
|
130056
130154
|
if (!bindingStore) {
|
|
130057
130155
|
return res.status(503).json({ error: "Binding subsystem not available" });
|
|
@@ -130097,7 +130195,7 @@ function createAdapterRouter(adapterManager2, traceStore2) {
|
|
|
130097
130195
|
}
|
|
130098
130196
|
return res.json({ binding: updated });
|
|
130099
130197
|
});
|
|
130100
|
-
|
|
130198
|
+
router16.delete("/bindings/:id", async (req, res) => {
|
|
130101
130199
|
const bindingStore = adapterManager2.getBindingStore();
|
|
130102
130200
|
if (!bindingStore) return res.status(503).json({ error: "Binding subsystem not available" });
|
|
130103
130201
|
const binding = bindingStore.getById(req.params.id);
|
|
@@ -130123,7 +130221,7 @@ function createAdapterRouter(adapterManager2, traceStore2) {
|
|
|
130123
130221
|
}
|
|
130124
130222
|
return res.json({ ok: true });
|
|
130125
130223
|
});
|
|
130126
|
-
|
|
130224
|
+
router16.post("/webhooks/:adapterId", express2.raw({ type: "*/*" }), async (req, res) => {
|
|
130127
130225
|
const adapterInfo = adapterManager2.getAdapter(req.params.adapterId);
|
|
130128
130226
|
if (!adapterInfo || adapterInfo.config.type !== "webhook") {
|
|
130129
130227
|
return res.status(404).json({ error: "Webhook adapter not found" });
|
|
@@ -130142,7 +130240,7 @@ function createAdapterRouter(adapterManager2, traceStore2) {
|
|
|
130142
130240
|
if (result2.ok) return res.status(200).json({ ok: true });
|
|
130143
130241
|
return res.status(401).json({ error: result2.error });
|
|
130144
130242
|
});
|
|
130145
|
-
return
|
|
130243
|
+
return router16;
|
|
130146
130244
|
}
|
|
130147
130245
|
|
|
130148
130246
|
// ../../apps/server/src/routes/relay.ts
|
|
@@ -130213,8 +130311,8 @@ function buildConversations(messages, deadLetters, labelMap) {
|
|
|
130213
130311
|
});
|
|
130214
130312
|
}
|
|
130215
130313
|
function createRelayRouter(relayCore2, adapterManager2, traceStore2) {
|
|
130216
|
-
const
|
|
130217
|
-
|
|
130314
|
+
const router16 = Router20();
|
|
130315
|
+
router16.post("/messages", async (req, res) => {
|
|
130218
130316
|
const result2 = SendMessageRequestSchema2.safeParse(req.body);
|
|
130219
130317
|
if (!result2.success) {
|
|
130220
130318
|
return res.status(400).json({ error: "Validation failed", details: result2.error.flatten() });
|
|
@@ -130272,7 +130370,7 @@ function createRelayRouter(relayCore2, adapterManager2, traceStore2) {
|
|
|
130272
130370
|
});
|
|
130273
130371
|
}
|
|
130274
130372
|
});
|
|
130275
|
-
|
|
130373
|
+
router16.get("/messages", (_req, res) => {
|
|
130276
130374
|
const result2 = MessageListQuerySchema.safeParse(_req.query);
|
|
130277
130375
|
if (!result2.success) {
|
|
130278
130376
|
return res.status(400).json({ error: "Validation failed", details: result2.error.flatten() });
|
|
@@ -130280,7 +130378,7 @@ function createRelayRouter(relayCore2, adapterManager2, traceStore2) {
|
|
|
130280
130378
|
const messages = relayCore2.listMessages(result2.data);
|
|
130281
130379
|
return res.json(messages);
|
|
130282
130380
|
});
|
|
130283
|
-
|
|
130381
|
+
router16.get("/conversations", async (_req, res) => {
|
|
130284
130382
|
try {
|
|
130285
130383
|
const messages = relayCore2.listMessages({});
|
|
130286
130384
|
const deadLetters = await relayCore2.getDeadLetters();
|
|
@@ -130301,15 +130399,15 @@ function createRelayRouter(relayCore2, adapterManager2, traceStore2) {
|
|
|
130301
130399
|
return res.status(500).json({ error: message });
|
|
130302
130400
|
}
|
|
130303
130401
|
});
|
|
130304
|
-
|
|
130402
|
+
router16.get("/messages/:id", (_req, res) => {
|
|
130305
130403
|
const message = relayCore2.getMessage(_req.params.id);
|
|
130306
130404
|
if (!message) return res.status(404).json({ error: "Message not found" });
|
|
130307
130405
|
return res.json(message);
|
|
130308
130406
|
});
|
|
130309
|
-
|
|
130407
|
+
router16.get("/endpoints", (_req, res) => {
|
|
130310
130408
|
return res.json(relayCore2.listEndpoints());
|
|
130311
130409
|
});
|
|
130312
|
-
|
|
130410
|
+
router16.post("/endpoints", async (req, res) => {
|
|
130313
130411
|
const result2 = EndpointRegistrationSchema.safeParse(req.body);
|
|
130314
130412
|
if (!result2.success) {
|
|
130315
130413
|
return res.status(400).json({ error: "Validation failed", details: result2.error.flatten() });
|
|
@@ -130322,12 +130420,12 @@ function createRelayRouter(relayCore2, adapterManager2, traceStore2) {
|
|
|
130322
130420
|
return res.status(422).json({ error: message });
|
|
130323
130421
|
}
|
|
130324
130422
|
});
|
|
130325
|
-
|
|
130423
|
+
router16.delete(/^\/endpoints\/(.+)$/, async (req, res) => {
|
|
130326
130424
|
const removed = await relayCore2.unregisterEndpoint(req.params[0]);
|
|
130327
130425
|
if (!removed) return res.status(404).json({ error: "Endpoint not found" });
|
|
130328
130426
|
return res.json({ success: true });
|
|
130329
130427
|
});
|
|
130330
|
-
|
|
130428
|
+
router16.get(/^\/endpoints\/(.+)\/inbox$/, (_req, res) => {
|
|
130331
130429
|
const result2 = InboxQuerySchema.safeParse(_req.query);
|
|
130332
130430
|
if (!result2.success) {
|
|
130333
130431
|
return res.status(400).json({ error: "Validation failed", details: result2.error.flatten() });
|
|
@@ -130342,12 +130440,12 @@ function createRelayRouter(relayCore2, adapterManager2, traceStore2) {
|
|
|
130342
130440
|
throw err;
|
|
130343
130441
|
}
|
|
130344
130442
|
});
|
|
130345
|
-
|
|
130443
|
+
router16.get("/dead-letters", async (_req, res) => {
|
|
130346
130444
|
const endpointHash = _req.query.endpointHash;
|
|
130347
130445
|
const deadLetters = await relayCore2.getDeadLetters(endpointHash ? { endpointHash } : void 0);
|
|
130348
130446
|
return res.json(deadLetters);
|
|
130349
130447
|
});
|
|
130350
|
-
|
|
130448
|
+
router16.get("/dead-letters/aggregated", async (_req, res) => {
|
|
130351
130449
|
const deadLetters = await relayCore2.getDeadLetters();
|
|
130352
130450
|
const groups = /* @__PURE__ */ new Map();
|
|
130353
130451
|
for (const dl of deadLetters) {
|
|
@@ -130371,7 +130469,7 @@ function createRelayRouter(relayCore2, adapterManager2, traceStore2) {
|
|
|
130371
130469
|
}
|
|
130372
130470
|
return res.json({ groups: [...groups.values()] });
|
|
130373
130471
|
});
|
|
130374
|
-
|
|
130472
|
+
router16.delete("/dead-letters", async (req, res) => {
|
|
130375
130473
|
const { source, reason } = req.body;
|
|
130376
130474
|
if (!source || !reason) {
|
|
130377
130475
|
return res.status(400).json({ error: "source and reason are required" });
|
|
@@ -130385,19 +130483,19 @@ function createRelayRouter(relayCore2, adapterManager2, traceStore2) {
|
|
|
130385
130483
|
}
|
|
130386
130484
|
return res.json({ removed: toRemove.length });
|
|
130387
130485
|
});
|
|
130388
|
-
|
|
130389
|
-
|
|
130486
|
+
router16.get("/metrics", (_req, res) => res.json(relayCore2.getMetrics()));
|
|
130487
|
+
router16.get("/messages/:id/trace", (_req, res) => {
|
|
130390
130488
|
if (!traceStore2) return res.status(404).json({ error: "Tracing not available" });
|
|
130391
130489
|
const span = traceStore2.getSpanByMessageId(_req.params.id);
|
|
130392
130490
|
if (!span) return res.status(404).json({ error: "Trace not found" });
|
|
130393
130491
|
const spans = traceStore2.getTrace(span.traceId);
|
|
130394
130492
|
return res.json({ traceId: span.traceId, spans });
|
|
130395
130493
|
});
|
|
130396
|
-
|
|
130494
|
+
router16.get("/trace/metrics", (_req, res) => {
|
|
130397
130495
|
if (!traceStore2) return res.status(404).json({ error: "Tracing not available" });
|
|
130398
130496
|
return res.json(traceStore2.getMetrics());
|
|
130399
130497
|
});
|
|
130400
|
-
|
|
130498
|
+
router16.get("/stream", (req, res) => {
|
|
130401
130499
|
logger.warn("[DEPRECATED] GET /api/relay/stream \u2014 use GET /api/events instead");
|
|
130402
130500
|
const pattern = req.query.subject || "relay.human.console.>";
|
|
130403
130501
|
if (!validateSubscriptionPattern(pattern)) {
|
|
@@ -130467,9 +130565,9 @@ function createRelayRouter(relayCore2, adapterManager2, traceStore2) {
|
|
|
130467
130565
|
});
|
|
130468
130566
|
});
|
|
130469
130567
|
if (adapterManager2) {
|
|
130470
|
-
|
|
130568
|
+
router16.use("/", createAdapterRouter(adapterManager2, traceStore2));
|
|
130471
130569
|
}
|
|
130472
|
-
return
|
|
130570
|
+
return router16;
|
|
130473
130571
|
}
|
|
130474
130572
|
|
|
130475
130573
|
// ../../apps/server/src/services/relay/trace-store.ts
|
|
@@ -132214,7 +132312,7 @@ var MeshCore = class {
|
|
|
132214
132312
|
};
|
|
132215
132313
|
|
|
132216
132314
|
// ../../apps/server/src/routes/mesh.ts
|
|
132217
|
-
import { Router as
|
|
132315
|
+
import { Router as Router21 } from "express";
|
|
132218
132316
|
function enrichTopology(topology, deps) {
|
|
132219
132317
|
const scheduleCounts = /* @__PURE__ */ new Map();
|
|
132220
132318
|
if (deps.taskStore) {
|
|
@@ -132297,8 +132395,8 @@ function enrichAgent(agent, namespace, deps, scheduleCounts, relayEndpoints) {
|
|
|
132297
132395
|
function createMeshRouter(deps) {
|
|
132298
132396
|
const resolvedDeps = "meshCore" in deps ? deps : { meshCore: deps };
|
|
132299
132397
|
const meshCore2 = resolvedDeps.meshCore;
|
|
132300
|
-
const
|
|
132301
|
-
|
|
132398
|
+
const router16 = Router21();
|
|
132399
|
+
router16.post("/discover", async (req, res) => {
|
|
132302
132400
|
const result2 = DiscoverRequestSchema.safeParse(req.body);
|
|
132303
132401
|
if (!result2.success) {
|
|
132304
132402
|
return res.status(400).json({ error: "Validation failed", details: result2.error.flatten() });
|
|
@@ -132329,7 +132427,7 @@ function createMeshRouter(deps) {
|
|
|
132329
132427
|
return res.status(500).json({ error: message });
|
|
132330
132428
|
}
|
|
132331
132429
|
});
|
|
132332
|
-
|
|
132430
|
+
router16.post("/agents", async (req, res) => {
|
|
132333
132431
|
const result2 = RegisterAgentRequestSchema.safeParse(req.body);
|
|
132334
132432
|
if (!result2.success) {
|
|
132335
132433
|
return res.status(400).json({ error: "Validation failed", details: result2.error.flatten() });
|
|
@@ -132374,13 +132472,13 @@ function createMeshRouter(deps) {
|
|
|
132374
132472
|
return res.status(422).json({ error: message });
|
|
132375
132473
|
}
|
|
132376
132474
|
});
|
|
132377
|
-
|
|
132475
|
+
router16.get("/topology", (req, res) => {
|
|
132378
132476
|
const namespace = req.query.namespace ?? "*";
|
|
132379
132477
|
const topology = meshCore2.getTopology(namespace);
|
|
132380
132478
|
const enriched = enrichTopology(topology, resolvedDeps);
|
|
132381
132479
|
return res.json(enriched);
|
|
132382
132480
|
});
|
|
132383
|
-
|
|
132481
|
+
router16.put("/topology/access", (req, res) => {
|
|
132384
132482
|
const result2 = UpdateAccessRuleRequestSchema.safeParse(req.body);
|
|
132385
132483
|
if (!result2.success) {
|
|
132386
132484
|
return res.status(400).json({ error: "Validation failed", details: result2.error.flatten() });
|
|
@@ -132393,15 +132491,15 @@ function createMeshRouter(deps) {
|
|
|
132393
132491
|
}
|
|
132394
132492
|
return res.json({ sourceNamespace, targetNamespace, action });
|
|
132395
132493
|
});
|
|
132396
|
-
|
|
132494
|
+
router16.get("/status", (_req, res) => {
|
|
132397
132495
|
const status = meshCore2.getStatus();
|
|
132398
132496
|
res.json(status);
|
|
132399
132497
|
});
|
|
132400
|
-
|
|
132498
|
+
router16.get("/agents/paths", (_req, res) => {
|
|
132401
132499
|
const agents2 = meshCore2.listWithPaths();
|
|
132402
132500
|
return res.json({ agents: agents2 });
|
|
132403
132501
|
});
|
|
132404
|
-
|
|
132502
|
+
router16.get("/agents", (req, res) => {
|
|
132405
132503
|
const result2 = AgentListQuerySchema.safeParse(req.query);
|
|
132406
132504
|
if (!result2.success) {
|
|
132407
132505
|
return res.status(400).json({ error: "Validation failed", details: result2.error.flatten() });
|
|
@@ -132410,17 +132508,17 @@ function createMeshRouter(deps) {
|
|
|
132410
132508
|
const agents2 = callerNamespace ? meshCore2.list({ ...filters, callerNamespace }) : meshCore2.listWithHealth(filters);
|
|
132411
132509
|
return res.json({ agents: agents2 });
|
|
132412
132510
|
});
|
|
132413
|
-
|
|
132511
|
+
router16.get("/agents/:id/access", (req, res) => {
|
|
132414
132512
|
const agents2 = meshCore2.getAgentAccess(req.params.id);
|
|
132415
132513
|
if (!agents2) return res.status(404).json({ error: "Agent not found" });
|
|
132416
132514
|
return res.json({ agents: agents2 });
|
|
132417
132515
|
});
|
|
132418
|
-
|
|
132516
|
+
router16.get("/agents/:id/health", (req, res) => {
|
|
132419
132517
|
const health = meshCore2.getAgentHealth(req.params.id);
|
|
132420
132518
|
if (!health) return res.status(404).json({ error: "Agent not found" });
|
|
132421
132519
|
return res.json(health);
|
|
132422
132520
|
});
|
|
132423
|
-
|
|
132521
|
+
router16.post("/agents/:id/heartbeat", async (req, res) => {
|
|
132424
132522
|
const parsed = HeartbeatRequestSchema.safeParse(req.body ?? {});
|
|
132425
132523
|
const event = parsed.success ? parsed.data.event ?? "heartbeat" : "heartbeat";
|
|
132426
132524
|
const healthBefore = meshCore2.getAgentHealth(req.params.id);
|
|
@@ -132446,14 +132544,14 @@ function createMeshRouter(deps) {
|
|
|
132446
132544
|
}
|
|
132447
132545
|
return res.json({ success: true });
|
|
132448
132546
|
});
|
|
132449
|
-
|
|
132547
|
+
router16.get("/agents/:id", (req, res) => {
|
|
132450
132548
|
const agent = meshCore2.get(req.params.id);
|
|
132451
132549
|
if (!agent) {
|
|
132452
132550
|
return res.status(404).json({ error: "Agent not found" });
|
|
132453
132551
|
}
|
|
132454
132552
|
return res.json(agent);
|
|
132455
132553
|
});
|
|
132456
|
-
|
|
132554
|
+
router16.patch("/agents/:id", async (req, res) => {
|
|
132457
132555
|
const result2 = UpdateAgentRequestSchema.safeParse(req.body);
|
|
132458
132556
|
if (!result2.success) {
|
|
132459
132557
|
return res.status(400).json({ error: "Validation failed", details: result2.error.flatten() });
|
|
@@ -132477,7 +132575,7 @@ function createMeshRouter(deps) {
|
|
|
132477
132575
|
}
|
|
132478
132576
|
return res.json(updated);
|
|
132479
132577
|
});
|
|
132480
|
-
|
|
132578
|
+
router16.delete("/agents/:id", async (req, res) => {
|
|
132481
132579
|
const agent = meshCore2.get(req.params.id);
|
|
132482
132580
|
if (!agent) {
|
|
132483
132581
|
return res.status(404).json({ error: "Agent not found" });
|
|
@@ -132501,7 +132599,7 @@ function createMeshRouter(deps) {
|
|
|
132501
132599
|
}
|
|
132502
132600
|
return res.json({ success: true });
|
|
132503
132601
|
});
|
|
132504
|
-
|
|
132602
|
+
router16.post("/deny", async (req, res) => {
|
|
132505
132603
|
const result2 = DenyRequestSchema.safeParse(req.body);
|
|
132506
132604
|
if (!result2.success) {
|
|
132507
132605
|
return res.status(400).json({ error: "Validation failed", details: result2.error.flatten() });
|
|
@@ -132520,11 +132618,11 @@ function createMeshRouter(deps) {
|
|
|
132520
132618
|
return res.status(422).json({ error: message });
|
|
132521
132619
|
}
|
|
132522
132620
|
});
|
|
132523
|
-
|
|
132621
|
+
router16.get("/denied", (_req, res) => {
|
|
132524
132622
|
const denied = meshCore2.listDenied();
|
|
132525
132623
|
return res.json({ denied });
|
|
132526
132624
|
});
|
|
132527
|
-
|
|
132625
|
+
router16.delete("/denied/:encodedPath", async (req, res) => {
|
|
132528
132626
|
const filePath = decodeURIComponent(req.params.encodedPath);
|
|
132529
132627
|
if (filePath.includes("..") || filePath.includes("\0")) {
|
|
132530
132628
|
return res.status(400).json({ error: "Invalid path" });
|
|
@@ -132538,7 +132636,7 @@ function createMeshRouter(deps) {
|
|
|
132538
132636
|
await meshCore2.undeny(resolvedPath);
|
|
132539
132637
|
return res.json({ success: true });
|
|
132540
132638
|
});
|
|
132541
|
-
return
|
|
132639
|
+
return router16;
|
|
132542
132640
|
}
|
|
132543
132641
|
|
|
132544
132642
|
// ../../apps/server/src/services/mesh/ensure-dorkbot.ts
|
|
@@ -132593,7 +132691,7 @@ async function ensureDorkBot(meshCore2, dorkHome) {
|
|
|
132593
132691
|
}
|
|
132594
132692
|
|
|
132595
132693
|
// ../../apps/server/src/routes/a2a.ts
|
|
132596
|
-
import { Router as
|
|
132694
|
+
import { Router as Router22 } from "express";
|
|
132597
132695
|
|
|
132598
132696
|
// ../a2a-gateway/dist/agent-card-generator.js
|
|
132599
132697
|
var DEFAULT_INPUT_MODES = ["text/plain"];
|
|
@@ -134226,9 +134324,9 @@ import express22 from "express";
|
|
|
134226
134324
|
import express42 from "express";
|
|
134227
134325
|
function jsonRpcHandler(options) {
|
|
134228
134326
|
const jsonRpcTransportHandler = new JsonRpcTransportHandler(options.requestHandler);
|
|
134229
|
-
const
|
|
134230
|
-
|
|
134231
|
-
|
|
134327
|
+
const router16 = express4.Router();
|
|
134328
|
+
router16.use(express4.json(), jsonErrorHandler);
|
|
134329
|
+
router16.post("/", async (req, res) => {
|
|
134232
134330
|
try {
|
|
134233
134331
|
const user = await options.userBuilder(req);
|
|
134234
134332
|
const context = new ServerCallContext(
|
|
@@ -134294,7 +134392,7 @@ function jsonRpcHandler(options) {
|
|
|
134294
134392
|
}
|
|
134295
134393
|
}
|
|
134296
134394
|
});
|
|
134297
|
-
return
|
|
134395
|
+
return router16;
|
|
134298
134396
|
}
|
|
134299
134397
|
var jsonErrorHandler = (err, _req, res, next) => {
|
|
134300
134398
|
if (err instanceof SyntaxError && "body" in err) {
|
|
@@ -134347,7 +134445,7 @@ function createA2aHandlers(deps) {
|
|
|
134347
134445
|
|
|
134348
134446
|
// ../../apps/server/src/routes/a2a.ts
|
|
134349
134447
|
function createA2aRouter(deps) {
|
|
134350
|
-
const
|
|
134448
|
+
const router16 = Router22();
|
|
134351
134449
|
const config = { baseUrl: deps.baseUrl, version: deps.version };
|
|
134352
134450
|
const handlers = createA2aHandlers({
|
|
134353
134451
|
agentRegistry: deps.meshCore,
|
|
@@ -134355,18 +134453,18 @@ function createA2aRouter(deps) {
|
|
|
134355
134453
|
db: deps.db,
|
|
134356
134454
|
config
|
|
134357
134455
|
});
|
|
134358
|
-
|
|
134359
|
-
|
|
134360
|
-
return { router:
|
|
134456
|
+
router16.get("/agents/:id/card", handlers.agentCard);
|
|
134457
|
+
router16.post("/", handlers.jsonRpc);
|
|
134458
|
+
return { router: router16, fleetCardHandler: handlers.fleetCard };
|
|
134361
134459
|
}
|
|
134362
134460
|
|
|
134363
134461
|
// ../../apps/server/src/routes/agents.ts
|
|
134364
|
-
import { Router as
|
|
134462
|
+
import { Router as Router23 } from "express";
|
|
134365
134463
|
import path41 from "path";
|
|
134366
134464
|
init_logger();
|
|
134367
134465
|
function createAgentsRouter(meshCore2) {
|
|
134368
|
-
const
|
|
134369
|
-
|
|
134466
|
+
const router16 = Router23();
|
|
134467
|
+
router16.get("/current", async (req, res) => {
|
|
134370
134468
|
try {
|
|
134371
134469
|
const rawPath = req.query.path;
|
|
134372
134470
|
if (!rawPath) {
|
|
@@ -134388,7 +134486,7 @@ function createAgentsRouter(meshCore2) {
|
|
|
134388
134486
|
return res.status(500).json({ error: "Internal server error" });
|
|
134389
134487
|
}
|
|
134390
134488
|
});
|
|
134391
|
-
|
|
134489
|
+
router16.post("/resolve", async (req, res) => {
|
|
134392
134490
|
try {
|
|
134393
134491
|
const result2 = ResolveAgentsRequestSchema.safeParse(req.body);
|
|
134394
134492
|
if (!result2.success) {
|
|
@@ -134411,7 +134509,7 @@ function createAgentsRouter(meshCore2) {
|
|
|
134411
134509
|
return res.status(500).json({ error: "Internal server error" });
|
|
134412
134510
|
}
|
|
134413
134511
|
});
|
|
134414
|
-
|
|
134512
|
+
router16.post("/", async (req, res) => {
|
|
134415
134513
|
try {
|
|
134416
134514
|
const result2 = CreateAgentRequestSchema.safeParse(req.body);
|
|
134417
134515
|
if (!result2.success) {
|
|
@@ -134470,7 +134568,7 @@ function createAgentsRouter(meshCore2) {
|
|
|
134470
134568
|
return res.status(500).json({ error: "Internal server error" });
|
|
134471
134569
|
}
|
|
134472
134570
|
});
|
|
134473
|
-
|
|
134571
|
+
router16.post("/create", async (req, res) => {
|
|
134474
134572
|
try {
|
|
134475
134573
|
const result2 = await createAgentWorkspace(req.body, meshCore2);
|
|
134476
134574
|
const activityService = req.app.locals.activityService;
|
|
@@ -134505,7 +134603,7 @@ function createAgentsRouter(meshCore2) {
|
|
|
134505
134603
|
return res.status(500).json({ error: "Internal server error" });
|
|
134506
134604
|
}
|
|
134507
134605
|
});
|
|
134508
|
-
|
|
134606
|
+
router16.patch("/current", async (req, res) => {
|
|
134509
134607
|
try {
|
|
134510
134608
|
const rawPath = req.query.path;
|
|
134511
134609
|
if (!rawPath) {
|
|
@@ -134552,7 +134650,7 @@ function createAgentsRouter(meshCore2) {
|
|
|
134552
134650
|
return res.status(500).json({ error: "Internal server error" });
|
|
134553
134651
|
}
|
|
134554
134652
|
});
|
|
134555
|
-
|
|
134653
|
+
router16.post("/current/migrate-persona", async (req, res) => {
|
|
134556
134654
|
try {
|
|
134557
134655
|
const rawPath = req.query.path;
|
|
134558
134656
|
if (!rawPath) {
|
|
@@ -134588,11 +134686,11 @@ function createAgentsRouter(meshCore2) {
|
|
|
134588
134686
|
return res.status(500).json({ error: "Internal server error" });
|
|
134589
134687
|
}
|
|
134590
134688
|
});
|
|
134591
|
-
return
|
|
134689
|
+
return router16;
|
|
134592
134690
|
}
|
|
134593
134691
|
|
|
134594
134692
|
// ../../apps/server/src/routes/discovery.ts
|
|
134595
|
-
import { Router as
|
|
134693
|
+
import { Router as Router24 } from "express";
|
|
134596
134694
|
import { z as z37 } from "zod";
|
|
134597
134695
|
init_logger();
|
|
134598
134696
|
var ScanRequestSchema = z37.object({
|
|
@@ -134602,8 +134700,8 @@ var ScanRequestSchema = z37.object({
|
|
|
134602
134700
|
timeout: z37.number().int().min(1e3).max(12e4).optional()
|
|
134603
134701
|
});
|
|
134604
134702
|
function createDiscoveryRouter(meshCore2) {
|
|
134605
|
-
const
|
|
134606
|
-
|
|
134703
|
+
const router16 = Router24();
|
|
134704
|
+
router16.post("/scan", async (req, res) => {
|
|
134607
134705
|
const data = parseBody(ScanRequestSchema, req.body, res);
|
|
134608
134706
|
if (!data) return;
|
|
134609
134707
|
const roots = data.roots && data.roots.length > 0 ? data.roots : data.root ? [data.root] : [getBoundary()];
|
|
@@ -134690,11 +134788,11 @@ function createDiscoveryRouter(meshCore2) {
|
|
|
134690
134788
|
}
|
|
134691
134789
|
}
|
|
134692
134790
|
});
|
|
134693
|
-
return
|
|
134791
|
+
return router16;
|
|
134694
134792
|
}
|
|
134695
134793
|
|
|
134696
134794
|
// ../../apps/server/src/routes/templates.ts
|
|
134697
|
-
import { Router as
|
|
134795
|
+
import { Router as Router25 } from "express";
|
|
134698
134796
|
import fs25 from "fs/promises";
|
|
134699
134797
|
import path42 from "path";
|
|
134700
134798
|
|
|
@@ -134821,9 +134919,9 @@ async function writeUserTemplates(catalogPath, templates) {
|
|
|
134821
134919
|
await fs25.writeFile(catalogPath, JSON.stringify(catalog, null, 2), "utf-8");
|
|
134822
134920
|
}
|
|
134823
134921
|
function createTemplateRouter(dorkHome) {
|
|
134824
|
-
const
|
|
134922
|
+
const router16 = Router25();
|
|
134825
134923
|
const catalogPath = path42.join(dorkHome, USER_CATALOG_FILENAME);
|
|
134826
|
-
|
|
134924
|
+
router16.get("/", async (_req, res) => {
|
|
134827
134925
|
try {
|
|
134828
134926
|
const userTemplates = await readUserTemplates(catalogPath);
|
|
134829
134927
|
const templates = [...DEFAULT_TEMPLATES2, ...userTemplates];
|
|
@@ -134833,7 +134931,7 @@ function createTemplateRouter(dorkHome) {
|
|
|
134833
134931
|
return res.status(500).json({ error: "Internal server error" });
|
|
134834
134932
|
}
|
|
134835
134933
|
});
|
|
134836
|
-
|
|
134934
|
+
router16.post("/", async (req, res) => {
|
|
134837
134935
|
try {
|
|
134838
134936
|
const result2 = TemplateEntrySchema.safeParse({ ...req.body, builtin: false });
|
|
134839
134937
|
if (!result2.success) {
|
|
@@ -134857,7 +134955,7 @@ function createTemplateRouter(dorkHome) {
|
|
|
134857
134955
|
return res.status(500).json({ error: "Internal server error" });
|
|
134858
134956
|
}
|
|
134859
134957
|
});
|
|
134860
|
-
|
|
134958
|
+
router16.delete("/:id", async (req, res) => {
|
|
134861
134959
|
try {
|
|
134862
134960
|
const { id } = req.params;
|
|
134863
134961
|
const isBuiltin = DEFAULT_TEMPLATES2.some((t4) => t4.id === id);
|
|
@@ -134877,11 +134975,11 @@ function createTemplateRouter(dorkHome) {
|
|
|
134877
134975
|
return res.status(500).json({ error: "Internal server error" });
|
|
134878
134976
|
}
|
|
134879
134977
|
});
|
|
134880
|
-
return
|
|
134978
|
+
return router16;
|
|
134881
134979
|
}
|
|
134882
134980
|
|
|
134883
134981
|
// ../../apps/server/src/routes/admin.ts
|
|
134884
|
-
import { Router as
|
|
134982
|
+
import { Router as Router26 } from "express";
|
|
134885
134983
|
import { spawn as spawn3 } from "child_process";
|
|
134886
134984
|
import fs26 from "fs/promises";
|
|
134887
134985
|
init_env();
|
|
@@ -134900,15 +134998,15 @@ function triggerRestart() {
|
|
|
134900
134998
|
}
|
|
134901
134999
|
}
|
|
134902
135000
|
function createAdminRouter(deps) {
|
|
134903
|
-
const
|
|
135001
|
+
const router16 = Router26();
|
|
134904
135002
|
const adminLimiter = rate_limit_default({
|
|
134905
135003
|
windowMs: 5 * 60 * 1e3,
|
|
134906
135004
|
// 5 minutes
|
|
134907
135005
|
max: 3,
|
|
134908
135006
|
message: { error: "Too many admin requests. Try again later." }
|
|
134909
135007
|
});
|
|
134910
|
-
|
|
134911
|
-
|
|
135008
|
+
router16.use(adminLimiter);
|
|
135009
|
+
router16.post("/reset", (req, res) => {
|
|
134912
135010
|
const { confirm } = req.body ?? {};
|
|
134913
135011
|
if (confirm !== "reset") {
|
|
134914
135012
|
res.status(400).json({
|
|
@@ -134927,7 +135025,7 @@ function createAdminRouter(deps) {
|
|
|
134927
135025
|
triggerRestart();
|
|
134928
135026
|
});
|
|
134929
135027
|
});
|
|
134930
|
-
|
|
135028
|
+
router16.post("/restart", (_req, res) => {
|
|
134931
135029
|
res.status(200).json({ message: "Restart initiated." });
|
|
134932
135030
|
setImmediate(async () => {
|
|
134933
135031
|
try {
|
|
@@ -134937,7 +135035,7 @@ function createAdminRouter(deps) {
|
|
|
134937
135035
|
triggerRestart();
|
|
134938
135036
|
});
|
|
134939
135037
|
});
|
|
134940
|
-
return
|
|
135038
|
+
return router16;
|
|
134941
135039
|
}
|
|
134942
135040
|
|
|
134943
135041
|
// ../../apps/server/src/services/extensions/extension-discovery.ts
|
|
@@ -135515,10 +135613,10 @@ var ExtensionCompiler = class {
|
|
|
135515
135613
|
import fs30 from "fs/promises";
|
|
135516
135614
|
import path46 from "path";
|
|
135517
135615
|
import { createRequire as createRequire2 } from "node:module";
|
|
135518
|
-
import { Router as
|
|
135616
|
+
import { Router as Router28 } from "express";
|
|
135519
135617
|
|
|
135520
135618
|
// ../../apps/server/src/services/extensions/extension-proxy.ts
|
|
135521
|
-
import { Router as
|
|
135619
|
+
import { Router as Router27 } from "express";
|
|
135522
135620
|
init_logger();
|
|
135523
135621
|
var STRIPPED_HEADERS = /* @__PURE__ */ new Set([
|
|
135524
135622
|
"host",
|
|
@@ -135542,9 +135640,9 @@ function formatAuthValue(authType, secret) {
|
|
|
135542
135640
|
return authType === "Custom" ? secret : `${authType} ${secret}`;
|
|
135543
135641
|
}
|
|
135544
135642
|
function createProxyRouter(extensionId, config, dorkHome) {
|
|
135545
|
-
const
|
|
135643
|
+
const router16 = Router27();
|
|
135546
135644
|
const secrets = new ExtensionSecretStore(extensionId, dorkHome);
|
|
135547
|
-
|
|
135645
|
+
router16.all("/proxy/*", async (req, res) => {
|
|
135548
135646
|
const targetPath = req.params[0] || "";
|
|
135549
135647
|
let targetUrl = `${config.baseUrl.replace(/\/+$/, "")}/${targetPath}`;
|
|
135550
135648
|
if (config.pathRewrite) {
|
|
@@ -135588,7 +135686,7 @@ function createProxyRouter(extensionId, config, dorkHome) {
|
|
|
135588
135686
|
});
|
|
135589
135687
|
}
|
|
135590
135688
|
});
|
|
135591
|
-
return
|
|
135689
|
+
return router16;
|
|
135592
135690
|
}
|
|
135593
135691
|
|
|
135594
135692
|
// ../../apps/server/src/services/extensions/extension-server-api-factory.ts
|
|
@@ -135698,21 +135796,21 @@ var ExtensionServerLifecycle = class {
|
|
|
135698
135796
|
if (typeof registerFn !== "function") {
|
|
135699
135797
|
return { ok: false, error: "Server entry does not export a register function" };
|
|
135700
135798
|
}
|
|
135701
|
-
const
|
|
135799
|
+
const router16 = Router28();
|
|
135702
135800
|
const { ctx, getScheduledCleanups } = createDataProviderContext({
|
|
135703
135801
|
extensionId: id,
|
|
135704
135802
|
extensionDir: record2.path,
|
|
135705
135803
|
dorkHome: this.dorkHome
|
|
135706
135804
|
});
|
|
135707
|
-
const result2 = await registerFn(
|
|
135805
|
+
const result2 = await registerFn(router16, ctx);
|
|
135708
135806
|
const cleanup = typeof result2 === "function" ? result2 : null;
|
|
135709
135807
|
if (record2.hasDataProxy && record2.manifest.dataProxy) {
|
|
135710
135808
|
const proxyRouter = createProxyRouter(id, record2.manifest.dataProxy, this.dorkHome);
|
|
135711
|
-
|
|
135809
|
+
router16.use(proxyRouter);
|
|
135712
135810
|
}
|
|
135713
135811
|
this.serverExtensions.set(id, {
|
|
135714
135812
|
extensionId: id,
|
|
135715
|
-
router:
|
|
135813
|
+
router: router16,
|
|
135716
135814
|
cleanup,
|
|
135717
135815
|
scheduledCleanups: getScheduledCleanups()
|
|
135718
135816
|
});
|
|
@@ -136609,7 +136707,7 @@ var ActivityService = class {
|
|
|
136609
136707
|
};
|
|
136610
136708
|
|
|
136611
136709
|
// ../../apps/server/src/routes/activity.ts
|
|
136612
|
-
import { Router as
|
|
136710
|
+
import { Router as Router29 } from "express";
|
|
136613
136711
|
|
|
136614
136712
|
// ../shared/dist/activity-schemas.js
|
|
136615
136713
|
import { z as z40 } from "zod";
|
|
@@ -136650,8 +136748,8 @@ var ListActivityResponseSchema = z40.object({
|
|
|
136650
136748
|
|
|
136651
136749
|
// ../../apps/server/src/routes/activity.ts
|
|
136652
136750
|
function createActivityRouter(activityService) {
|
|
136653
|
-
const
|
|
136654
|
-
|
|
136751
|
+
const router16 = Router29();
|
|
136752
|
+
router16.get("/", async (req, res) => {
|
|
136655
136753
|
const query2 = parseBody(ListActivityQuerySchema, req.query, res);
|
|
136656
136754
|
if (!query2) return;
|
|
136657
136755
|
try {
|
|
@@ -136661,7 +136759,7 @@ function createActivityRouter(activityService) {
|
|
|
136661
136759
|
return res.status(500).json({ error: "Failed to fetch activity events" });
|
|
136662
136760
|
}
|
|
136663
136761
|
});
|
|
136664
|
-
return
|
|
136762
|
+
return router16;
|
|
136665
136763
|
}
|
|
136666
136764
|
|
|
136667
136765
|
// ../../apps/server/src/middleware/extension-routes.ts
|
|
@@ -136672,12 +136770,12 @@ function createExtensionRoutesMiddleware(extensionManager2) {
|
|
|
136672
136770
|
res.status(400).json({ error: "Missing extension ID" });
|
|
136673
136771
|
return;
|
|
136674
136772
|
}
|
|
136675
|
-
const
|
|
136676
|
-
if (!
|
|
136773
|
+
const router16 = extensionManager2.getServerRouter(id);
|
|
136774
|
+
if (!router16) {
|
|
136677
136775
|
res.status(404).json({ error: `Extension '${id}' has no server routes` });
|
|
136678
136776
|
return;
|
|
136679
136777
|
}
|
|
136680
|
-
|
|
136778
|
+
router16(req, res, next);
|
|
136681
136779
|
};
|
|
136682
136780
|
}
|
|
136683
136781
|
|
|
@@ -142606,7 +142704,7 @@ function createExternalMcpServer(deps) {
|
|
|
142606
142704
|
}
|
|
142607
142705
|
|
|
142608
142706
|
// ../../apps/server/src/routes/mcp.ts
|
|
142609
|
-
import { Router as
|
|
142707
|
+
import { Router as Router30 } from "express";
|
|
142610
142708
|
|
|
142611
142709
|
// ../../node_modules/.pnpm/@hono+node-server@1.19.12_hono@4.12.9/node_modules/@hono/node-server/dist/index.mjs
|
|
142612
142710
|
import { Http2ServerRequest as Http2ServerRequest2, constants as h2constants } from "http2";
|
|
@@ -143914,8 +144012,8 @@ var StreamableHTTPServerTransport = class {
|
|
|
143914
144012
|
// ../../apps/server/src/routes/mcp.ts
|
|
143915
144013
|
init_logger();
|
|
143916
144014
|
function createMcpRouter(serverFactory) {
|
|
143917
|
-
const
|
|
143918
|
-
|
|
144015
|
+
const router16 = Router30();
|
|
144016
|
+
router16.post("/", async (req, res) => {
|
|
143919
144017
|
try {
|
|
143920
144018
|
const server = serverFactory();
|
|
143921
144019
|
const transport = new StreamableHTTPServerTransport({
|
|
@@ -143941,7 +144039,7 @@ function createMcpRouter(serverFactory) {
|
|
|
143941
144039
|
}
|
|
143942
144040
|
}
|
|
143943
144041
|
});
|
|
143944
|
-
|
|
144042
|
+
router16.get("/", (_req, res) => {
|
|
143945
144043
|
res.status(405).json({
|
|
143946
144044
|
jsonrpc: "2.0",
|
|
143947
144045
|
error: {
|
|
@@ -143951,7 +144049,7 @@ function createMcpRouter(serverFactory) {
|
|
|
143951
144049
|
id: null
|
|
143952
144050
|
});
|
|
143953
144051
|
});
|
|
143954
|
-
|
|
144052
|
+
router16.delete("/", (_req, res) => {
|
|
143955
144053
|
res.status(405).json({
|
|
143956
144054
|
jsonrpc: "2.0",
|
|
143957
144055
|
error: {
|
|
@@ -143961,7 +144059,7 @@ function createMcpRouter(serverFactory) {
|
|
|
143961
144059
|
id: null
|
|
143962
144060
|
});
|
|
143963
144061
|
});
|
|
143964
|
-
return
|
|
144062
|
+
return router16;
|
|
143965
144063
|
}
|
|
143966
144064
|
|
|
143967
144065
|
// ../../apps/server/src/middleware/mcp-auth.ts
|