@openagentpack/playground 0.3.0 → 0.3.1
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/playground.js +488 -201
- package/package.json +4 -4
- package/web/assets/index.js +48 -45
- package/web/assets/style.css +1 -1
package/dist/bin/playground.js
CHANGED
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
// src/server.ts
|
|
4
4
|
import "@hono/zod-openapi";
|
|
5
5
|
import { readFileSync } from "fs";
|
|
6
|
-
import { dirname as
|
|
6
|
+
import { dirname as dirname4, join as join3 } from "path";
|
|
7
7
|
import { fileURLToPath } from "url";
|
|
8
8
|
import { serve } from "@hono/node-server";
|
|
9
9
|
import { serveStatic } from "@hono/node-server/serve-static";
|
|
10
10
|
import { bootstrapRuntimeCredentials as bootstrapRuntimeCredentials2 } from "@openagentpack/sdk";
|
|
11
11
|
|
|
12
12
|
// ../../apps/server/src/app.ts
|
|
13
|
-
import { OpenAPIHono as
|
|
13
|
+
import { OpenAPIHono as OpenAPIHono14 } from "@hono/zod-openapi";
|
|
14
14
|
import { cors } from "hono/cors";
|
|
15
15
|
|
|
16
16
|
// ../../apps/server/src/lib/http-error.ts
|
|
@@ -1360,8 +1360,8 @@ var RUNTIME_PROJECT_NAME = "bailian-cli";
|
|
|
1360
1360
|
function resolveRuntimeProvider() {
|
|
1361
1361
|
return process.env.AGENTS_PROVIDER?.trim() || "bailian";
|
|
1362
1362
|
}
|
|
1363
|
-
async function buildRuntimeConfig() {
|
|
1364
|
-
const provider = resolveRuntimeProvider();
|
|
1363
|
+
async function buildRuntimeConfig(providerOverride) {
|
|
1364
|
+
const provider = providerOverride?.trim() || resolveRuntimeProvider();
|
|
1365
1365
|
const providerConfig = resolveProviderConfigFromEnv(provider);
|
|
1366
1366
|
const environment = getEnvironmentProfile(provider);
|
|
1367
1367
|
const vault = getVaultProfile(provider);
|
|
@@ -1458,8 +1458,8 @@ function createWebUiStateBackend(input = {}) {
|
|
|
1458
1458
|
}
|
|
1459
1459
|
|
|
1460
1460
|
// ../../apps/server/src/services/runtime-factory.ts
|
|
1461
|
-
async function loadServerRuntimeConfig() {
|
|
1462
|
-
const { configPath, projectName, config } = await buildRuntimeConfig();
|
|
1461
|
+
async function loadServerRuntimeConfig(providerOverride) {
|
|
1462
|
+
const { configPath, projectName, config } = await buildRuntimeConfig(providerOverride);
|
|
1463
1463
|
const stateScope = deriveWebUiStateScope();
|
|
1464
1464
|
const stateBackend = createWebUiStateBackend();
|
|
1465
1465
|
const statePath = stateBackend.getStatePath(stateScope);
|
|
@@ -1473,8 +1473,8 @@ async function loadServerRuntimeConfig() {
|
|
|
1473
1473
|
statePath
|
|
1474
1474
|
};
|
|
1475
1475
|
}
|
|
1476
|
-
async function loadAgentRuntimeInput(agentId, modelOverride) {
|
|
1477
|
-
const base = await loadServerRuntimeConfig();
|
|
1476
|
+
async function loadAgentRuntimeInput(agentId, modelOverride, providerOverride) {
|
|
1477
|
+
const base = await loadServerRuntimeConfig(providerOverride);
|
|
1478
1478
|
const compiled = compileAgentRuntime(agentId, base.config, modelOverride);
|
|
1479
1479
|
return {
|
|
1480
1480
|
...base,
|
|
@@ -1484,6 +1484,9 @@ async function loadAgentRuntimeInput(agentId, modelOverride) {
|
|
|
1484
1484
|
compiled
|
|
1485
1485
|
};
|
|
1486
1486
|
}
|
|
1487
|
+
async function loadCompiledRuntimeInput(agentId, provider) {
|
|
1488
|
+
return loadAgentRuntimeInput(agentId, void 0, provider);
|
|
1489
|
+
}
|
|
1487
1490
|
async function withAgentRuntime(agentId, fn) {
|
|
1488
1491
|
const input = await loadAgentRuntimeInput(agentId);
|
|
1489
1492
|
return readProjectRuntime(input, (ctx) => fn(ctx, input.compiled));
|
|
@@ -2319,40 +2322,308 @@ configRoute.openapi(saveConfigRoute, async (c) => {
|
|
|
2319
2322
|
return c.json(config, 200);
|
|
2320
2323
|
});
|
|
2321
2324
|
|
|
2325
|
+
// ../../apps/server/src/routes/deployments.ts
|
|
2326
|
+
import { createRoute as createRoute3, OpenAPIHono as OpenAPIHono3, z as z5 } from "@hono/zod-openapi";
|
|
2327
|
+
|
|
2328
|
+
// ../../apps/server/src/schemas/deployments.ts
|
|
2329
|
+
import { z as z4 } from "@hono/zod-openapi";
|
|
2330
|
+
var DeploymentStatusSchema = z4.object({
|
|
2331
|
+
id: z4.string(),
|
|
2332
|
+
name: z4.string(),
|
|
2333
|
+
playbookId: z4.string(),
|
|
2334
|
+
provider: z4.string(),
|
|
2335
|
+
prompt: z4.string(),
|
|
2336
|
+
schedule: z4.object({ expression: z4.string(), timezone: z4.string() }),
|
|
2337
|
+
status: z4.string(),
|
|
2338
|
+
remoteId: z4.string().nullable()
|
|
2339
|
+
});
|
|
2340
|
+
var DeploymentListSchema = z4.object({ deployments: z4.array(DeploymentStatusSchema) });
|
|
2341
|
+
var CreateDeploymentBodySchema = z4.object({
|
|
2342
|
+
name: z4.string().min(1),
|
|
2343
|
+
playbookId: z4.string().min(1),
|
|
2344
|
+
prompt: z4.string().min(1),
|
|
2345
|
+
expression: z4.string().min(1),
|
|
2346
|
+
timezone: z4.string().min(1).default("Asia/Shanghai")
|
|
2347
|
+
});
|
|
2348
|
+
var SetDeploymentPausedBodySchema = z4.object({ paused: z4.boolean() });
|
|
2349
|
+
var DeploymentRunSchema = z4.object({
|
|
2350
|
+
name: z4.string(),
|
|
2351
|
+
provider: z4.string(),
|
|
2352
|
+
result: z4.object({
|
|
2353
|
+
run_id: z4.string().optional(),
|
|
2354
|
+
session_id: z4.string().nullable(),
|
|
2355
|
+
error: z4.object({ type: z4.string(), message: z4.string() }).optional()
|
|
2356
|
+
})
|
|
2357
|
+
});
|
|
2358
|
+
var DeleteDeploymentSchema = z4.object({ deleted: z4.boolean() });
|
|
2359
|
+
|
|
2360
|
+
// ../../apps/server/src/services/deployments/manage.ts
|
|
2361
|
+
import { mkdir as mkdir2, readFile as readFile2, rename, writeFile as writeFile2 } from "fs/promises";
|
|
2362
|
+
import { homedir as homedir2 } from "os";
|
|
2363
|
+
import { dirname as dirname3, join as join2 } from "path";
|
|
2364
|
+
import {
|
|
2365
|
+
executePlannedProject,
|
|
2366
|
+
getDeploymentDetailsForContext,
|
|
2367
|
+
pauseDeploymentForContext,
|
|
2368
|
+
planProjectContext,
|
|
2369
|
+
runDeploymentForContext,
|
|
2370
|
+
syncAgentResourcesWithStateBackend as syncAgentResourcesWithStateBackend3,
|
|
2371
|
+
UserError as UserError3,
|
|
2372
|
+
writeProjectRuntime as writeProjectRuntime2
|
|
2373
|
+
} from "@openagentpack/sdk";
|
|
2374
|
+
var storePath = () => process.env.AGENTS_DEPLOYMENTS_PATH?.trim() || join2(homedir2(), ".agents", "playground.deployments.json");
|
|
2375
|
+
async function readStore() {
|
|
2376
|
+
try {
|
|
2377
|
+
const parsed = JSON.parse(await readFile2(storePath(), "utf8"));
|
|
2378
|
+
return Array.isArray(parsed.deployments) ? parsed.deployments.map((item) => ({
|
|
2379
|
+
...item,
|
|
2380
|
+
// Legacy records predate provider ownership. The active provider is the only
|
|
2381
|
+
// recoverable source for those records; every new record persists it explicitly.
|
|
2382
|
+
provider: item.provider ?? process.env.AGENTS_PROVIDER
|
|
2383
|
+
})) : [];
|
|
2384
|
+
} catch (error) {
|
|
2385
|
+
if (error.code === "ENOENT") return [];
|
|
2386
|
+
throw error;
|
|
2387
|
+
}
|
|
2388
|
+
}
|
|
2389
|
+
async function writeStore(deployments) {
|
|
2390
|
+
const path = storePath();
|
|
2391
|
+
await mkdir2(dirname3(path), { recursive: true });
|
|
2392
|
+
const temp = `${path}.${process.pid}.${crypto.randomUUID()}.tmp`;
|
|
2393
|
+
await writeFile2(temp, `${JSON.stringify({ deployments }, null, 2)}
|
|
2394
|
+
`, { mode: 384 });
|
|
2395
|
+
await rename(temp, path);
|
|
2396
|
+
}
|
|
2397
|
+
function attachDeployment(input, item) {
|
|
2398
|
+
const config = JSON.parse(JSON.stringify(input.config));
|
|
2399
|
+
config.deployments = {
|
|
2400
|
+
...config.deployments ?? {},
|
|
2401
|
+
[item.id]: {
|
|
2402
|
+
agent: input.compiled.agentId,
|
|
2403
|
+
environment: Object.keys(config.environments ?? {})[0],
|
|
2404
|
+
initial_events: [{ type: "user.message", content: item.prompt }],
|
|
2405
|
+
schedule: { expression: item.expression, timezone: item.timezone },
|
|
2406
|
+
description: item.name,
|
|
2407
|
+
provider: config.defaults?.provider,
|
|
2408
|
+
metadata: { "openagentpack.webui": "schedule", "openagentpack.title": item.name }
|
|
2409
|
+
}
|
|
2410
|
+
};
|
|
2411
|
+
return { ...input, config, providers: config.providers };
|
|
2412
|
+
}
|
|
2413
|
+
async function runtimeFor(item) {
|
|
2414
|
+
return attachDeployment(await loadCompiledRuntimeInput(item.playbookId, item.provider), item);
|
|
2415
|
+
}
|
|
2416
|
+
function assertNativeProvider(provider) {
|
|
2417
|
+
if (provider !== "qoder" && provider !== "claude") {
|
|
2418
|
+
throw new UserError3(
|
|
2419
|
+
`WebUI schedules require a native deployment provider (qoder or claude), got '${provider ?? "unknown"}'.`
|
|
2420
|
+
);
|
|
2421
|
+
}
|
|
2422
|
+
}
|
|
2423
|
+
async function executeOnlyDeployment(input, id, deleting = false) {
|
|
2424
|
+
return writeProjectRuntime2(input, async (ctx) => {
|
|
2425
|
+
const planned = await planProjectContext(ctx, { provider: input.config.defaults?.provider, quiet: true });
|
|
2426
|
+
const actions = planned.plan.actions.filter(
|
|
2427
|
+
(action) => action.address.type === "deployment" && action.address.name === id && (!deleting || action.action === "delete")
|
|
2428
|
+
);
|
|
2429
|
+
if (actions.length === 0)
|
|
2430
|
+
throw new UserError3(`Deployment '${id}' produced no ${deleting ? "delete" : "apply"} action.`);
|
|
2431
|
+
const execution = await executePlannedProject(
|
|
2432
|
+
{
|
|
2433
|
+
...planned,
|
|
2434
|
+
plan: { ...planned.plan, actions },
|
|
2435
|
+
destructiveActions: actions.filter((a) => a.action === "delete")
|
|
2436
|
+
},
|
|
2437
|
+
{ policy: deleting ? "force" : "block" }
|
|
2438
|
+
);
|
|
2439
|
+
const failed = execution.results.find((result) => result.status !== "success");
|
|
2440
|
+
if (failed) {
|
|
2441
|
+
throw new UserError3(failed.error ?? `Deployment '${id}' ${failed.status}.`);
|
|
2442
|
+
}
|
|
2443
|
+
return execution;
|
|
2444
|
+
});
|
|
2445
|
+
}
|
|
2446
|
+
var storeMutationQueue = Promise.resolve();
|
|
2447
|
+
function serializeStoreMutation(mutation) {
|
|
2448
|
+
const result = storeMutationQueue.then(mutation, mutation);
|
|
2449
|
+
storeMutationQueue = result.then(
|
|
2450
|
+
() => void 0,
|
|
2451
|
+
() => void 0
|
|
2452
|
+
);
|
|
2453
|
+
return result;
|
|
2454
|
+
}
|
|
2455
|
+
async function listManagedDeployments() {
|
|
2456
|
+
const records = await readStore();
|
|
2457
|
+
return Promise.all(
|
|
2458
|
+
records.map(async (item) => {
|
|
2459
|
+
try {
|
|
2460
|
+
const input = await runtimeFor(item);
|
|
2461
|
+
assertNativeProvider(input.config.defaults?.provider);
|
|
2462
|
+
return await writeProjectRuntime2(input, async (ctx) => {
|
|
2463
|
+
const detail = await getDeploymentDetailsForContext(ctx, item.id);
|
|
2464
|
+
return {
|
|
2465
|
+
...item,
|
|
2466
|
+
provider: detail.provider,
|
|
2467
|
+
schedule: { expression: item.expression, timezone: item.timezone },
|
|
2468
|
+
status: detail.info.status,
|
|
2469
|
+
remoteId: detail.info.id
|
|
2470
|
+
};
|
|
2471
|
+
});
|
|
2472
|
+
} catch {
|
|
2473
|
+
return {
|
|
2474
|
+
...item,
|
|
2475
|
+
schedule: { expression: item.expression, timezone: item.timezone },
|
|
2476
|
+
status: "unavailable",
|
|
2477
|
+
remoteId: null
|
|
2478
|
+
};
|
|
2479
|
+
}
|
|
2480
|
+
})
|
|
2481
|
+
);
|
|
2482
|
+
}
|
|
2483
|
+
async function createManagedDeployment(input) {
|
|
2484
|
+
return serializeStoreMutation(async () => {
|
|
2485
|
+
const records = await readStore();
|
|
2486
|
+
const id = `schedule-${crypto.randomUUID()}`;
|
|
2487
|
+
const base = await loadCompiledRuntimeInput(input.playbookId);
|
|
2488
|
+
assertNativeProvider(base.config.defaults?.provider);
|
|
2489
|
+
const item = { ...input, id, provider: base.config.defaults.provider };
|
|
2490
|
+
const runtime = attachDeployment(base, item);
|
|
2491
|
+
const agentRun = await syncAgentResourcesWithStateBackend3(runtime, runtime.compiled.agentId);
|
|
2492
|
+
if (agentRun.status !== "completed") throw new UserError3(agentRun.error ?? "Failed to provision schedule agent.");
|
|
2493
|
+
await executeOnlyDeployment(runtime, id);
|
|
2494
|
+
await writeStore([...records, item]);
|
|
2495
|
+
return (await listManagedDeployments()).find((deployment) => deployment.id === id);
|
|
2496
|
+
});
|
|
2497
|
+
}
|
|
2498
|
+
async function requireStored(id) {
|
|
2499
|
+
const records = await readStore();
|
|
2500
|
+
const item = records.find((record) => record.id === id);
|
|
2501
|
+
if (!item) throw new UserError3(`Deployment '${id}' not found.`);
|
|
2502
|
+
return { item, records };
|
|
2503
|
+
}
|
|
2504
|
+
async function setManagedDeploymentPaused(id, paused) {
|
|
2505
|
+
const { item } = await requireStored(id);
|
|
2506
|
+
const input = await runtimeFor(item);
|
|
2507
|
+
return writeProjectRuntime2(input, (ctx) => pauseDeploymentForContext(ctx, id, paused));
|
|
2508
|
+
}
|
|
2509
|
+
async function runManagedDeployment(id) {
|
|
2510
|
+
const { item } = await requireStored(id);
|
|
2511
|
+
const input = await runtimeFor(item);
|
|
2512
|
+
const run = await writeProjectRuntime2(input, (ctx) => runDeploymentForContext(ctx, id));
|
|
2513
|
+
if (run.result.error) {
|
|
2514
|
+
throw new UserError3(`Deployment run failed: ${run.result.error.type} - ${run.result.error.message}`);
|
|
2515
|
+
}
|
|
2516
|
+
return run;
|
|
2517
|
+
}
|
|
2518
|
+
async function deleteManagedDeployment(id) {
|
|
2519
|
+
return serializeStoreMutation(async () => {
|
|
2520
|
+
const { item, records } = await requireStored(id);
|
|
2521
|
+
const input = await runtimeFor(item);
|
|
2522
|
+
input.config.deployments = {};
|
|
2523
|
+
await executeOnlyDeployment(input, id, true);
|
|
2524
|
+
await writeStore(records.filter((record) => record.id !== id));
|
|
2525
|
+
return { deleted: true };
|
|
2526
|
+
});
|
|
2527
|
+
}
|
|
2528
|
+
|
|
2529
|
+
// ../../apps/server/src/routes/deployments.ts
|
|
2530
|
+
var deploymentsRoute = new OpenAPIHono3();
|
|
2531
|
+
var idParam = z5.object({ id: z5.string().min(1) });
|
|
2532
|
+
var listRoute = createRoute3({
|
|
2533
|
+
method: "get",
|
|
2534
|
+
path: "/deployments",
|
|
2535
|
+
responses: {
|
|
2536
|
+
200: { description: "List managed deployments", content: { "application/json": { schema: DeploymentListSchema } } },
|
|
2537
|
+
...errorResponses
|
|
2538
|
+
}
|
|
2539
|
+
});
|
|
2540
|
+
deploymentsRoute.openapi(listRoute, async (c) => c.json({ deployments: await listManagedDeployments() }, 200));
|
|
2541
|
+
var createRouteDef = createRoute3({
|
|
2542
|
+
method: "post",
|
|
2543
|
+
path: "/deployments",
|
|
2544
|
+
request: { body: { content: { "application/json": { schema: CreateDeploymentBodySchema } } } },
|
|
2545
|
+
responses: {
|
|
2546
|
+
201: {
|
|
2547
|
+
description: "Create a native deployment",
|
|
2548
|
+
content: { "application/json": { schema: DeploymentStatusSchema } }
|
|
2549
|
+
},
|
|
2550
|
+
...errorResponses
|
|
2551
|
+
}
|
|
2552
|
+
});
|
|
2553
|
+
deploymentsRoute.openapi(createRouteDef, async (c) => c.json(await createManagedDeployment(c.req.valid("json")), 201));
|
|
2554
|
+
var pauseRoute = createRoute3({
|
|
2555
|
+
method: "put",
|
|
2556
|
+
path: "/deployments/{id}/paused",
|
|
2557
|
+
request: { params: idParam, body: { content: { "application/json": { schema: SetDeploymentPausedBodySchema } } } },
|
|
2558
|
+
responses: {
|
|
2559
|
+
200: {
|
|
2560
|
+
description: "Pause or resume a deployment",
|
|
2561
|
+
content: {
|
|
2562
|
+
"application/json": { schema: z5.object({ id: z5.string().nullable(), status: z5.string() }).passthrough() }
|
|
2563
|
+
}
|
|
2564
|
+
},
|
|
2565
|
+
...errorResponses
|
|
2566
|
+
}
|
|
2567
|
+
});
|
|
2568
|
+
deploymentsRoute.openapi(
|
|
2569
|
+
pauseRoute,
|
|
2570
|
+
async (c) => c.json(await setManagedDeploymentPaused(c.req.valid("param").id, c.req.valid("json").paused), 200)
|
|
2571
|
+
);
|
|
2572
|
+
var runRoute = createRoute3({
|
|
2573
|
+
method: "post",
|
|
2574
|
+
path: "/deployments/{id}/runs",
|
|
2575
|
+
request: { params: idParam },
|
|
2576
|
+
responses: {
|
|
2577
|
+
201: { description: "Trigger a deployment run", content: { "application/json": { schema: DeploymentRunSchema } } },
|
|
2578
|
+
...errorResponses
|
|
2579
|
+
}
|
|
2580
|
+
});
|
|
2581
|
+
deploymentsRoute.openapi(runRoute, async (c) => c.json(await runManagedDeployment(c.req.valid("param").id), 201));
|
|
2582
|
+
var deleteRoute = createRoute3({
|
|
2583
|
+
method: "delete",
|
|
2584
|
+
path: "/deployments/{id}",
|
|
2585
|
+
request: { params: idParam },
|
|
2586
|
+
responses: {
|
|
2587
|
+
200: { description: "Delete a deployment", content: { "application/json": { schema: DeleteDeploymentSchema } } },
|
|
2588
|
+
...errorResponses
|
|
2589
|
+
}
|
|
2590
|
+
});
|
|
2591
|
+
deploymentsRoute.openapi(deleteRoute, async (c) => c.json(await deleteManagedDeployment(c.req.valid("param").id), 200));
|
|
2592
|
+
|
|
2322
2593
|
// ../../apps/server/src/routes/environments.ts
|
|
2323
|
-
import { createRoute as
|
|
2594
|
+
import { createRoute as createRoute4, OpenAPIHono as OpenAPIHono4 } from "@hono/zod-openapi";
|
|
2324
2595
|
import { createCloudEnvironment, deleteCloudEnvironment, listCloudEnvironments } from "@openagentpack/sdk";
|
|
2325
2596
|
|
|
2326
2597
|
// ../../apps/server/src/schemas/environments.ts
|
|
2327
|
-
import { z as
|
|
2598
|
+
import { z as z6 } from "@hono/zod-openapi";
|
|
2328
2599
|
import { CloudEnvironmentSchema } from "@openagentpack/sdk";
|
|
2329
2600
|
import { CloudEnvironmentSchema as CloudEnvironmentSchema2 } from "@openagentpack/sdk";
|
|
2330
|
-
var CloudEnvironmentsResponseSchema =
|
|
2331
|
-
environments:
|
|
2332
|
-
});
|
|
2333
|
-
var CreateEnvironmentBodySchema =
|
|
2334
|
-
name:
|
|
2335
|
-
description:
|
|
2336
|
-
metadata:
|
|
2337
|
-
});
|
|
2338
|
-
var CreateEnvironmentResponseSchema =
|
|
2339
|
-
environment:
|
|
2340
|
-
id:
|
|
2341
|
-
type:
|
|
2342
|
-
version:
|
|
2601
|
+
var CloudEnvironmentsResponseSchema = z6.object({
|
|
2602
|
+
environments: z6.array(CloudEnvironmentSchema)
|
|
2603
|
+
});
|
|
2604
|
+
var CreateEnvironmentBodySchema = z6.object({
|
|
2605
|
+
name: z6.string().min(1),
|
|
2606
|
+
description: z6.string().optional(),
|
|
2607
|
+
metadata: z6.record(z6.string(), z6.string()).optional()
|
|
2608
|
+
});
|
|
2609
|
+
var CreateEnvironmentResponseSchema = z6.object({
|
|
2610
|
+
environment: z6.object({
|
|
2611
|
+
id: z6.string().nullable(),
|
|
2612
|
+
type: z6.string(),
|
|
2613
|
+
version: z6.number().optional()
|
|
2343
2614
|
})
|
|
2344
2615
|
});
|
|
2345
|
-
var DeleteEnvironmentResponseSchema =
|
|
2346
|
-
id:
|
|
2347
|
-
type:
|
|
2616
|
+
var DeleteEnvironmentResponseSchema = z6.object({
|
|
2617
|
+
id: z6.string(),
|
|
2618
|
+
type: z6.string()
|
|
2348
2619
|
});
|
|
2349
|
-
var EnvironmentParamsSchema =
|
|
2350
|
-
environmentId:
|
|
2620
|
+
var EnvironmentParamsSchema = z6.object({
|
|
2621
|
+
environmentId: z6.string().min(1)
|
|
2351
2622
|
});
|
|
2352
2623
|
|
|
2353
2624
|
// ../../apps/server/src/routes/environments.ts
|
|
2354
|
-
var environmentsRoute = new
|
|
2355
|
-
var listEnvironmentsRoute =
|
|
2625
|
+
var environmentsRoute = new OpenAPIHono4();
|
|
2626
|
+
var listEnvironmentsRoute = createRoute4({
|
|
2356
2627
|
method: "get",
|
|
2357
2628
|
path: "/environments",
|
|
2358
2629
|
responses: {
|
|
@@ -2367,7 +2638,7 @@ environmentsRoute.openapi(listEnvironmentsRoute, async (c) => {
|
|
|
2367
2638
|
const environments = await withAgentRuntime(DEFAULT_AGENT_ID, (ctx) => listCloudEnvironments(ctx));
|
|
2368
2639
|
return c.json({ environments }, 200);
|
|
2369
2640
|
});
|
|
2370
|
-
var createEnvironmentRoute =
|
|
2641
|
+
var createEnvironmentRoute = createRoute4({
|
|
2371
2642
|
method: "post",
|
|
2372
2643
|
path: "/environments",
|
|
2373
2644
|
request: {
|
|
@@ -2396,7 +2667,7 @@ environmentsRoute.openapi(createEnvironmentRoute, async (c) => {
|
|
|
2396
2667
|
);
|
|
2397
2668
|
return c.json({ environment }, 200);
|
|
2398
2669
|
});
|
|
2399
|
-
var deleteEnvironmentRoute =
|
|
2670
|
+
var deleteEnvironmentRoute = createRoute4({
|
|
2400
2671
|
method: "delete",
|
|
2401
2672
|
path: "/environments/{environmentId}",
|
|
2402
2673
|
request: {
|
|
@@ -2417,44 +2688,44 @@ environmentsRoute.openapi(deleteEnvironmentRoute, async (c) => {
|
|
|
2417
2688
|
});
|
|
2418
2689
|
|
|
2419
2690
|
// ../../apps/server/src/routes/files.ts
|
|
2420
|
-
import { createRoute as
|
|
2691
|
+
import { createRoute as createRoute5, OpenAPIHono as OpenAPIHono5 } from "@hono/zod-openapi";
|
|
2421
2692
|
|
|
2422
2693
|
// ../../apps/server/src/schemas/files.ts
|
|
2423
|
-
import { z as
|
|
2424
|
-
var ProviderFileInfoSchema =
|
|
2425
|
-
id:
|
|
2426
|
-
filename:
|
|
2427
|
-
mime_type:
|
|
2428
|
-
size_bytes:
|
|
2429
|
-
created_at:
|
|
2430
|
-
downloadable:
|
|
2431
|
-
status:
|
|
2432
|
-
purpose:
|
|
2433
|
-
available:
|
|
2694
|
+
import { z as z7 } from "@hono/zod-openapi";
|
|
2695
|
+
var ProviderFileInfoSchema = z7.object({
|
|
2696
|
+
id: z7.string(),
|
|
2697
|
+
filename: z7.string(),
|
|
2698
|
+
mime_type: z7.string(),
|
|
2699
|
+
size_bytes: z7.number(),
|
|
2700
|
+
created_at: z7.string(),
|
|
2701
|
+
downloadable: z7.boolean().optional(),
|
|
2702
|
+
status: z7.string().optional(),
|
|
2703
|
+
purpose: z7.string().optional(),
|
|
2704
|
+
available: z7.boolean().optional()
|
|
2434
2705
|
}).openapi("ProviderFileInfo");
|
|
2435
|
-
var UploadFileFormSchema =
|
|
2436
|
-
file:
|
|
2706
|
+
var UploadFileFormSchema = z7.object({
|
|
2707
|
+
file: z7.instanceof(File).openapi({ type: "string", format: "binary" })
|
|
2437
2708
|
});
|
|
2438
|
-
var FilesResponseSchema =
|
|
2439
|
-
files:
|
|
2709
|
+
var FilesResponseSchema = z7.object({
|
|
2710
|
+
files: z7.array(ProviderFileInfoSchema)
|
|
2440
2711
|
});
|
|
2441
|
-
var FileStatusesBodySchema =
|
|
2442
|
-
fileIds:
|
|
2712
|
+
var FileStatusesBodySchema = z7.object({
|
|
2713
|
+
fileIds: z7.array(z7.string())
|
|
2443
2714
|
});
|
|
2444
|
-
var FileStatusInfoSchema =
|
|
2445
|
-
id:
|
|
2446
|
-
status:
|
|
2447
|
-
available:
|
|
2715
|
+
var FileStatusInfoSchema = z7.object({
|
|
2716
|
+
id: z7.string(),
|
|
2717
|
+
status: z7.string().optional(),
|
|
2718
|
+
available: z7.boolean().optional()
|
|
2448
2719
|
});
|
|
2449
|
-
var FileStatusesResponseSchema =
|
|
2450
|
-
files:
|
|
2720
|
+
var FileStatusesResponseSchema = z7.object({
|
|
2721
|
+
files: z7.array(FileStatusInfoSchema)
|
|
2451
2722
|
});
|
|
2452
|
-
var FileParamsSchema =
|
|
2453
|
-
id:
|
|
2723
|
+
var FileParamsSchema = z7.object({
|
|
2724
|
+
id: z7.string().min(1)
|
|
2454
2725
|
});
|
|
2455
|
-
var FileDownloadResponseSchema =
|
|
2456
|
-
url:
|
|
2457
|
-
expires_at:
|
|
2726
|
+
var FileDownloadResponseSchema = z7.object({
|
|
2727
|
+
url: z7.string(),
|
|
2728
|
+
expires_at: z7.string().optional()
|
|
2458
2729
|
});
|
|
2459
2730
|
|
|
2460
2731
|
// ../../apps/server/src/services/files/upload.ts
|
|
@@ -2507,9 +2778,9 @@ async function getUserFileStatuses(fileIds) {
|
|
|
2507
2778
|
}
|
|
2508
2779
|
|
|
2509
2780
|
// ../../apps/server/src/routes/files.ts
|
|
2510
|
-
var filesRoute = new
|
|
2781
|
+
var filesRoute = new OpenAPIHono5();
|
|
2511
2782
|
var MAX_UPLOAD_BYTES = 100 * 1024 * 1024;
|
|
2512
|
-
var uploadFileRoute =
|
|
2783
|
+
var uploadFileRoute = createRoute5({
|
|
2513
2784
|
method: "post",
|
|
2514
2785
|
path: "/files",
|
|
2515
2786
|
operationId: "uploadFile",
|
|
@@ -2553,7 +2824,7 @@ filesRoute.openapi(
|
|
|
2553
2824
|
if (!result.success) return c.json({ error: { message: "file is required" } }, 400);
|
|
2554
2825
|
}
|
|
2555
2826
|
);
|
|
2556
|
-
var listFilesRoute =
|
|
2827
|
+
var listFilesRoute = createRoute5({
|
|
2557
2828
|
method: "get",
|
|
2558
2829
|
path: "/files",
|
|
2559
2830
|
operationId: "listFiles",
|
|
@@ -2569,7 +2840,7 @@ filesRoute.openapi(listFilesRoute, async (c) => {
|
|
|
2569
2840
|
const files = await listUserFiles();
|
|
2570
2841
|
return c.json({ files }, 200);
|
|
2571
2842
|
});
|
|
2572
|
-
var getFileStatusesRoute =
|
|
2843
|
+
var getFileStatusesRoute = createRoute5({
|
|
2573
2844
|
method: "post",
|
|
2574
2845
|
path: "/files/status",
|
|
2575
2846
|
operationId: "getFileStatuses",
|
|
@@ -2598,7 +2869,7 @@ filesRoute.openapi(
|
|
|
2598
2869
|
if (!result.success) return c.json({ error: { message: "fileIds (string[]) is required" } }, 400);
|
|
2599
2870
|
}
|
|
2600
2871
|
);
|
|
2601
|
-
var downloadFileRoute =
|
|
2872
|
+
var downloadFileRoute = createRoute5({
|
|
2602
2873
|
method: "get",
|
|
2603
2874
|
path: "/files/{id}/download",
|
|
2604
2875
|
operationId: "downloadFile",
|
|
@@ -2616,7 +2887,7 @@ filesRoute.openapi(downloadFileRoute, async (c) => {
|
|
|
2616
2887
|
const result = await getUserFileDownloadUrl(id);
|
|
2617
2888
|
return c.json(result, 200);
|
|
2618
2889
|
});
|
|
2619
|
-
var deleteFileRoute =
|
|
2890
|
+
var deleteFileRoute = createRoute5({
|
|
2620
2891
|
method: "delete",
|
|
2621
2892
|
path: "/files/{id}",
|
|
2622
2893
|
operationId: "deleteFile",
|
|
@@ -2633,24 +2904,24 @@ filesRoute.openapi(deleteFileRoute, async (c) => {
|
|
|
2633
2904
|
});
|
|
2634
2905
|
|
|
2635
2906
|
// ../../apps/server/src/routes/models.ts
|
|
2636
|
-
import { createRoute as
|
|
2907
|
+
import { createRoute as createRoute6, OpenAPIHono as OpenAPIHono6 } from "@hono/zod-openapi";
|
|
2637
2908
|
import { listProviderModelsForContext } from "@openagentpack/sdk";
|
|
2638
2909
|
|
|
2639
2910
|
// ../../apps/server/src/schemas/models.ts
|
|
2640
|
-
import { z as
|
|
2641
|
-
var ModelOptionSchema =
|
|
2642
|
-
id:
|
|
2643
|
-
display_name:
|
|
2644
|
-
is_enabled:
|
|
2645
|
-
is_new:
|
|
2911
|
+
import { z as z8 } from "@hono/zod-openapi";
|
|
2912
|
+
var ModelOptionSchema = z8.object({
|
|
2913
|
+
id: z8.string(),
|
|
2914
|
+
display_name: z8.string(),
|
|
2915
|
+
is_enabled: z8.boolean().optional(),
|
|
2916
|
+
is_new: z8.boolean().optional()
|
|
2646
2917
|
});
|
|
2647
|
-
var ModelsResponseSchema =
|
|
2648
|
-
models:
|
|
2918
|
+
var ModelsResponseSchema = z8.object({
|
|
2919
|
+
models: z8.array(ModelOptionSchema)
|
|
2649
2920
|
});
|
|
2650
2921
|
|
|
2651
2922
|
// ../../apps/server/src/routes/models.ts
|
|
2652
|
-
var modelsRoute = new
|
|
2653
|
-
var listModelsRoute =
|
|
2923
|
+
var modelsRoute = new OpenAPIHono6();
|
|
2924
|
+
var listModelsRoute = createRoute6({
|
|
2654
2925
|
method: "get",
|
|
2655
2926
|
path: "/models",
|
|
2656
2927
|
responses: {
|
|
@@ -2678,72 +2949,72 @@ modelsRoute.openapi(listModelsRoute, async (c) => {
|
|
|
2678
2949
|
});
|
|
2679
2950
|
|
|
2680
2951
|
// ../../apps/server/src/routes/sessions/index.ts
|
|
2681
|
-
import { createRoute as
|
|
2952
|
+
import { createRoute as createRoute11, OpenAPIHono as OpenAPIHono11 } from "@hono/zod-openapi";
|
|
2682
2953
|
|
|
2683
2954
|
// ../../apps/server/src/schemas/sessions.ts
|
|
2684
|
-
import { z as
|
|
2955
|
+
import { z as z9 } from "@hono/zod-openapi";
|
|
2685
2956
|
import { SessionEventSchema, SessionSchema } from "@openagentpack/sdk";
|
|
2686
|
-
var SessionListResponseSchema =
|
|
2687
|
-
data:
|
|
2688
|
-
next_page_token:
|
|
2957
|
+
var SessionListResponseSchema = z9.object({
|
|
2958
|
+
data: z9.array(SessionSchema),
|
|
2959
|
+
next_page_token: z9.string().nullish()
|
|
2689
2960
|
}).openapi("SessionListResponse");
|
|
2690
|
-
var SessionDetailResponseSchema =
|
|
2961
|
+
var SessionDetailResponseSchema = z9.object({
|
|
2691
2962
|
session: SessionSchema,
|
|
2692
|
-
events:
|
|
2693
|
-
events_next_page_token:
|
|
2963
|
+
events: z9.array(SessionEventSchema),
|
|
2964
|
+
events_next_page_token: z9.string().nullish()
|
|
2694
2965
|
}).openapi("SessionDetailResponse");
|
|
2695
|
-
var SessionEventsPageResponseSchema =
|
|
2696
|
-
events:
|
|
2697
|
-
events_next_page_token:
|
|
2966
|
+
var SessionEventsPageResponseSchema = z9.object({
|
|
2967
|
+
events: z9.array(SessionEventSchema),
|
|
2968
|
+
events_next_page_token: z9.string().nullish()
|
|
2698
2969
|
}).openapi("SessionEventsPageResponse");
|
|
2699
|
-
var SessionDeleteResponseSchema =
|
|
2700
|
-
session_id:
|
|
2701
|
-
deleted:
|
|
2970
|
+
var SessionDeleteResponseSchema = z9.object({
|
|
2971
|
+
session_id: z9.string(),
|
|
2972
|
+
deleted: z9.boolean()
|
|
2702
2973
|
}).openapi("SessionDeleteResponse");
|
|
2703
|
-
var SessionsQuerySchema =
|
|
2974
|
+
var SessionsQuerySchema = z9.object({
|
|
2704
2975
|
// Non-numeric values resolve to `undefined` so the handler clamps to a
|
|
2705
2976
|
// default instead of the request being rejected with a 400.
|
|
2706
|
-
limit:
|
|
2977
|
+
limit: z9.preprocess((value) => {
|
|
2707
2978
|
const parsed = Number(value);
|
|
2708
2979
|
return Number.isFinite(parsed) ? parsed : void 0;
|
|
2709
|
-
},
|
|
2710
|
-
agentId:
|
|
2980
|
+
}, z9.number().int().optional()),
|
|
2981
|
+
agentId: z9.string().optional(),
|
|
2711
2982
|
// Opaque cursor for the next page (provider's next_page / next_page_token, passed through verbatim).
|
|
2712
|
-
pageToken:
|
|
2983
|
+
pageToken: z9.string().optional()
|
|
2713
2984
|
});
|
|
2714
|
-
var SessionDetailQuerySchema =
|
|
2715
|
-
agentId:
|
|
2985
|
+
var SessionDetailQuerySchema = z9.object({
|
|
2986
|
+
agentId: z9.string().optional()
|
|
2716
2987
|
});
|
|
2717
|
-
var SessionEventsQuerySchema =
|
|
2718
|
-
agentId:
|
|
2719
|
-
pageToken:
|
|
2720
|
-
limit:
|
|
2988
|
+
var SessionEventsQuerySchema = z9.object({
|
|
2989
|
+
agentId: z9.string().optional(),
|
|
2990
|
+
pageToken: z9.string().optional(),
|
|
2991
|
+
limit: z9.preprocess((value) => {
|
|
2721
2992
|
const parsed = Number(value);
|
|
2722
2993
|
return Number.isFinite(parsed) ? parsed : void 0;
|
|
2723
|
-
},
|
|
2994
|
+
}, z9.number().int().optional())
|
|
2724
2995
|
});
|
|
2725
|
-
var SessionParamsSchema =
|
|
2726
|
-
sessionId:
|
|
2996
|
+
var SessionParamsSchema = z9.object({
|
|
2997
|
+
sessionId: z9.string()
|
|
2727
2998
|
});
|
|
2728
|
-
var CreateSessionBodySchema =
|
|
2729
|
-
agentId:
|
|
2730
|
-
prompt:
|
|
2999
|
+
var CreateSessionBodySchema = z9.object({
|
|
3000
|
+
agentId: z9.string(),
|
|
3001
|
+
prompt: z9.string().min(1),
|
|
2731
3002
|
// Required: a session must be pinned to a cloud environment (sandbox).
|
|
2732
|
-
environmentId:
|
|
3003
|
+
environmentId: z9.string().min(1),
|
|
2733
3004
|
// Optional: cloud vault ids to bind a user-supplied credential so the sandbox receives it.
|
|
2734
3005
|
// Top-level binding shape matches the console createSession.
|
|
2735
|
-
vaultIds:
|
|
2736
|
-
title:
|
|
3006
|
+
vaultIds: z9.array(z9.string()).optional(),
|
|
3007
|
+
title: z9.string().optional(),
|
|
2737
3008
|
// Uploaded files to mount as session resources so the task can read the user's files.
|
|
2738
3009
|
// Each file needs a mount_path (provider rejects a file resource without one).
|
|
2739
|
-
files:
|
|
3010
|
+
files: z9.array(z9.object({ fileId: z9.string(), mountPath: z9.string() })).optional(),
|
|
2740
3011
|
// Model the agent should run for this session. If present, createSession applies it
|
|
2741
3012
|
// to the agent config immediately before starting the run.
|
|
2742
|
-
model:
|
|
3013
|
+
model: z9.string().optional()
|
|
2743
3014
|
});
|
|
2744
|
-
var SendMessageBodySchema =
|
|
2745
|
-
agentId:
|
|
2746
|
-
message:
|
|
3015
|
+
var SendMessageBodySchema = z9.object({
|
|
3016
|
+
agentId: z9.string().optional(),
|
|
3017
|
+
message: z9.string().min(1)
|
|
2747
3018
|
});
|
|
2748
3019
|
|
|
2749
3020
|
// ../../apps/server/src/services/sessions/event-sanitizer.ts
|
|
@@ -2754,9 +3025,9 @@ function shouldIncludeDebugRaw(request) {
|
|
|
2754
3025
|
}
|
|
2755
3026
|
|
|
2756
3027
|
// ../../apps/server/src/routes/sessions/detail.ts
|
|
2757
|
-
import { createRoute as
|
|
2758
|
-
var sessionsDetailRoute = new
|
|
2759
|
-
var getSessionRoute =
|
|
3028
|
+
import { createRoute as createRoute7, OpenAPIHono as OpenAPIHono7 } from "@hono/zod-openapi";
|
|
3029
|
+
var sessionsDetailRoute = new OpenAPIHono7();
|
|
3030
|
+
var getSessionRoute = createRoute7({
|
|
2760
3031
|
method: "get",
|
|
2761
3032
|
path: "/sessions/{sessionId}",
|
|
2762
3033
|
request: {
|
|
@@ -2785,7 +3056,7 @@ sessionsDetailRoute.openapi(getSessionRoute, async (c) => {
|
|
|
2785
3056
|
200
|
|
2786
3057
|
);
|
|
2787
3058
|
});
|
|
2788
|
-
var deleteSessionRoute =
|
|
3059
|
+
var deleteSessionRoute = createRoute7({
|
|
2789
3060
|
method: "delete",
|
|
2790
3061
|
path: "/sessions/{sessionId}",
|
|
2791
3062
|
request: {
|
|
@@ -2808,9 +3079,9 @@ sessionsDetailRoute.openapi(deleteSessionRoute, async (c) => {
|
|
|
2808
3079
|
});
|
|
2809
3080
|
|
|
2810
3081
|
// ../../apps/server/src/routes/sessions/events.ts
|
|
2811
|
-
import { createRoute as
|
|
2812
|
-
var sessionsEventsRoute = new
|
|
2813
|
-
var listSessionEventsRoute =
|
|
3082
|
+
import { createRoute as createRoute8, OpenAPIHono as OpenAPIHono8 } from "@hono/zod-openapi";
|
|
3083
|
+
var sessionsEventsRoute = new OpenAPIHono8();
|
|
3084
|
+
var listSessionEventsRoute = createRoute8({
|
|
2814
3085
|
method: "get",
|
|
2815
3086
|
path: "/sessions/{sessionId}/events",
|
|
2816
3087
|
request: {
|
|
@@ -2847,9 +3118,9 @@ sessionsEventsRoute.openapi(listSessionEventsRoute, async (c) => {
|
|
|
2847
3118
|
});
|
|
2848
3119
|
|
|
2849
3120
|
// ../../apps/server/src/routes/sessions/messages.ts
|
|
2850
|
-
import { createRoute as
|
|
2851
|
-
var sessionsMessagesRoute = new
|
|
2852
|
-
var sendMessageRoute =
|
|
3121
|
+
import { createRoute as createRoute9, OpenAPIHono as OpenAPIHono9 } from "@hono/zod-openapi";
|
|
3122
|
+
var sessionsMessagesRoute = new OpenAPIHono9();
|
|
3123
|
+
var sendMessageRoute = createRoute9({
|
|
2853
3124
|
method: "post",
|
|
2854
3125
|
path: "/sessions/{sessionId}/messages",
|
|
2855
3126
|
request: {
|
|
@@ -2878,15 +3149,15 @@ sessionsMessagesRoute.openapi(sendMessageRoute, async (c) => {
|
|
|
2878
3149
|
});
|
|
2879
3150
|
|
|
2880
3151
|
// ../../apps/server/src/routes/sessions/stream.ts
|
|
2881
|
-
import { createRoute as
|
|
2882
|
-
var sessionsStreamRoute = new
|
|
2883
|
-
var SessionStreamQuerySchema =
|
|
2884
|
-
after:
|
|
3152
|
+
import { createRoute as createRoute10, OpenAPIHono as OpenAPIHono10, z as z10 } from "@hono/zod-openapi";
|
|
3153
|
+
var sessionsStreamRoute = new OpenAPIHono10();
|
|
3154
|
+
var SessionStreamQuerySchema = z10.object({
|
|
3155
|
+
after: z10.preprocess((value) => {
|
|
2885
3156
|
const parsed = Number(value);
|
|
2886
3157
|
return Number.isFinite(parsed) ? parsed : void 0;
|
|
2887
|
-
},
|
|
3158
|
+
}, z10.number().int().optional())
|
|
2888
3159
|
});
|
|
2889
|
-
var streamSessionRoute =
|
|
3160
|
+
var streamSessionRoute = createRoute10({
|
|
2890
3161
|
method: "get",
|
|
2891
3162
|
path: "/sessions/{sessionId}/stream",
|
|
2892
3163
|
request: {
|
|
@@ -2898,7 +3169,7 @@ var streamSessionRoute = createRoute9({
|
|
|
2898
3169
|
description: "Stream session events as Server-Sent Events",
|
|
2899
3170
|
content: {
|
|
2900
3171
|
"text/event-stream": {
|
|
2901
|
-
schema:
|
|
3172
|
+
schema: z10.string().openapi({
|
|
2902
3173
|
description: 'SSE frames with event types "event", "done", and "ping".'
|
|
2903
3174
|
})
|
|
2904
3175
|
}
|
|
@@ -3008,8 +3279,8 @@ data: ${data}
|
|
|
3008
3279
|
}
|
|
3009
3280
|
|
|
3010
3281
|
// ../../apps/server/src/routes/sessions/index.ts
|
|
3011
|
-
var sessionsRoute = new
|
|
3012
|
-
var listSessionsRoute =
|
|
3282
|
+
var sessionsRoute = new OpenAPIHono11();
|
|
3283
|
+
var listSessionsRoute = createRoute11({
|
|
3013
3284
|
method: "get",
|
|
3014
3285
|
path: "/sessions",
|
|
3015
3286
|
request: {
|
|
@@ -3035,7 +3306,7 @@ sessionsRoute.openapi(listSessionsRoute, async (c) => {
|
|
|
3035
3306
|
});
|
|
3036
3307
|
return c.json({ data: sessions, next_page_token: nextPageToken ?? null }, 200);
|
|
3037
3308
|
});
|
|
3038
|
-
var createSessionRoute =
|
|
3309
|
+
var createSessionRoute = createRoute11({
|
|
3039
3310
|
method: "post",
|
|
3040
3311
|
path: "/sessions",
|
|
3041
3312
|
request: {
|
|
@@ -3077,51 +3348,51 @@ sessionsRoute.route("/", sessionsMessagesRoute);
|
|
|
3077
3348
|
sessionsRoute.route("/", sessionsStreamRoute);
|
|
3078
3349
|
|
|
3079
3350
|
// ../../apps/server/src/routes/skills.ts
|
|
3080
|
-
import { createRoute as
|
|
3351
|
+
import { createRoute as createRoute12, OpenAPIHono as OpenAPIHono12 } from "@hono/zod-openapi";
|
|
3081
3352
|
|
|
3082
3353
|
// ../../apps/server/src/schemas/skills.ts
|
|
3083
|
-
import { z as
|
|
3084
|
-
var ProviderSkillInfoSchema =
|
|
3085
|
-
id:
|
|
3086
|
-
name:
|
|
3087
|
-
description:
|
|
3088
|
-
source:
|
|
3089
|
-
status:
|
|
3090
|
-
latest_version:
|
|
3091
|
-
created_at:
|
|
3092
|
-
updated_at:
|
|
3354
|
+
import { z as z11 } from "@hono/zod-openapi";
|
|
3355
|
+
var ProviderSkillInfoSchema = z11.object({
|
|
3356
|
+
id: z11.string(),
|
|
3357
|
+
name: z11.string(),
|
|
3358
|
+
description: z11.string().optional(),
|
|
3359
|
+
source: z11.enum(["custom", "official"]),
|
|
3360
|
+
status: z11.enum(["checking", "active", "rejected", "deleted"]),
|
|
3361
|
+
latest_version: z11.string().optional(),
|
|
3362
|
+
created_at: z11.string().optional(),
|
|
3363
|
+
updated_at: z11.string().optional()
|
|
3093
3364
|
}).openapi("ProviderSkillInfo");
|
|
3094
|
-
var UploadSkillFileFormSchema =
|
|
3095
|
-
file:
|
|
3365
|
+
var UploadSkillFileFormSchema = z11.object({
|
|
3366
|
+
file: z11.instanceof(File).openapi({ type: "string", format: "binary" })
|
|
3096
3367
|
});
|
|
3097
|
-
var CreateSkillBodySchema =
|
|
3098
|
-
fileId:
|
|
3368
|
+
var CreateSkillBodySchema = z11.object({
|
|
3369
|
+
fileId: z11.string().min(1)
|
|
3099
3370
|
});
|
|
3100
|
-
var WarmSkillBodySchema =
|
|
3101
|
-
name:
|
|
3102
|
-
url:
|
|
3371
|
+
var WarmSkillBodySchema = z11.object({
|
|
3372
|
+
name: z11.string().min(1),
|
|
3373
|
+
url: z11.string().min(1)
|
|
3103
3374
|
});
|
|
3104
|
-
var WarmSkillResponseSchema =
|
|
3105
|
-
ok:
|
|
3375
|
+
var WarmSkillResponseSchema = z11.object({
|
|
3376
|
+
ok: z11.literal(true)
|
|
3106
3377
|
});
|
|
3107
|
-
var SkillsQuerySchema =
|
|
3108
|
-
source:
|
|
3378
|
+
var SkillsQuerySchema = z11.object({
|
|
3379
|
+
source: z11.enum(["custom", "official"]).optional()
|
|
3109
3380
|
});
|
|
3110
|
-
var SkillsResponseSchema =
|
|
3111
|
-
skills:
|
|
3381
|
+
var SkillsResponseSchema = z11.object({
|
|
3382
|
+
skills: z11.array(ProviderSkillInfoSchema)
|
|
3112
3383
|
});
|
|
3113
|
-
var SkillStatusesBodySchema =
|
|
3114
|
-
skillIds:
|
|
3384
|
+
var SkillStatusesBodySchema = z11.object({
|
|
3385
|
+
skillIds: z11.array(z11.string())
|
|
3115
3386
|
});
|
|
3116
|
-
var SkillStatusInfoSchema =
|
|
3117
|
-
id:
|
|
3118
|
-
status:
|
|
3387
|
+
var SkillStatusInfoSchema = z11.object({
|
|
3388
|
+
id: z11.string(),
|
|
3389
|
+
status: z11.enum(["checking", "active", "rejected", "deleted"]).optional()
|
|
3119
3390
|
});
|
|
3120
|
-
var SkillStatusesResponseSchema =
|
|
3121
|
-
skills:
|
|
3391
|
+
var SkillStatusesResponseSchema = z11.object({
|
|
3392
|
+
skills: z11.array(SkillStatusInfoSchema)
|
|
3122
3393
|
});
|
|
3123
|
-
var SkillParamsSchema =
|
|
3124
|
-
id:
|
|
3394
|
+
var SkillParamsSchema = z11.object({
|
|
3395
|
+
id: z11.string().min(1)
|
|
3125
3396
|
});
|
|
3126
3397
|
|
|
3127
3398
|
// ../../apps/server/src/services/skills/manage.ts
|
|
@@ -3222,9 +3493,9 @@ async function warmSkillByUrl(name, url) {
|
|
|
3222
3493
|
}
|
|
3223
3494
|
|
|
3224
3495
|
// ../../apps/server/src/routes/skills.ts
|
|
3225
|
-
var skillsRoute = new
|
|
3496
|
+
var skillsRoute = new OpenAPIHono12();
|
|
3226
3497
|
var MAX_UPLOAD_BYTES2 = 100 * 1024 * 1024;
|
|
3227
|
-
var uploadSkillFileRoute =
|
|
3498
|
+
var uploadSkillFileRoute = createRoute12({
|
|
3228
3499
|
method: "post",
|
|
3229
3500
|
path: "/skills/upload-file",
|
|
3230
3501
|
operationId: "uploadSkillFile",
|
|
@@ -3263,7 +3534,7 @@ skillsRoute.openapi(
|
|
|
3263
3534
|
if (!result.success) return c.json({ error: { message: "file is required" } }, 400);
|
|
3264
3535
|
}
|
|
3265
3536
|
);
|
|
3266
|
-
var createSkillRoute =
|
|
3537
|
+
var createSkillRoute = createRoute12({
|
|
3267
3538
|
method: "post",
|
|
3268
3539
|
path: "/skills",
|
|
3269
3540
|
operationId: "createSkill",
|
|
@@ -3292,7 +3563,7 @@ skillsRoute.openapi(
|
|
|
3292
3563
|
if (!result.success) return c.json({ error: { message: "fileId is required" } }, 400);
|
|
3293
3564
|
}
|
|
3294
3565
|
);
|
|
3295
|
-
var warmSkillRoute =
|
|
3566
|
+
var warmSkillRoute = createRoute12({
|
|
3296
3567
|
method: "post",
|
|
3297
3568
|
path: "/skills/warm",
|
|
3298
3569
|
operationId: "warmSkill",
|
|
@@ -3321,7 +3592,7 @@ skillsRoute.openapi(
|
|
|
3321
3592
|
if (!result.success) return c.json({ error: { message: "name and url are required" } }, 400);
|
|
3322
3593
|
}
|
|
3323
3594
|
);
|
|
3324
|
-
var listSkillsRoute =
|
|
3595
|
+
var listSkillsRoute = createRoute12({
|
|
3325
3596
|
method: "get",
|
|
3326
3597
|
path: "/skills",
|
|
3327
3598
|
operationId: "listSkills",
|
|
@@ -3347,7 +3618,7 @@ skillsRoute.openapi(
|
|
|
3347
3618
|
}
|
|
3348
3619
|
}
|
|
3349
3620
|
);
|
|
3350
|
-
var getSkillStatusesRoute =
|
|
3621
|
+
var getSkillStatusesRoute = createRoute12({
|
|
3351
3622
|
method: "post",
|
|
3352
3623
|
path: "/skills/status",
|
|
3353
3624
|
operationId: "getSkillStatuses",
|
|
@@ -3376,7 +3647,7 @@ skillsRoute.openapi(
|
|
|
3376
3647
|
if (!result.success) return c.json({ error: { message: "skillIds (string[]) is required" } }, 400);
|
|
3377
3648
|
}
|
|
3378
3649
|
);
|
|
3379
|
-
var deleteSkillRoute =
|
|
3650
|
+
var deleteSkillRoute = createRoute12({
|
|
3380
3651
|
method: "delete",
|
|
3381
3652
|
path: "/skills/{id}",
|
|
3382
3653
|
operationId: "deleteSkill",
|
|
@@ -3393,39 +3664,39 @@ skillsRoute.openapi(deleteSkillRoute, async (c) => {
|
|
|
3393
3664
|
});
|
|
3394
3665
|
|
|
3395
3666
|
// ../../apps/server/src/routes/vaults.ts
|
|
3396
|
-
import { createRoute as
|
|
3667
|
+
import { createRoute as createRoute13, OpenAPIHono as OpenAPIHono13 } from "@hono/zod-openapi";
|
|
3397
3668
|
import { createCloudVault, deleteCloudVault, listCloudVaults } from "@openagentpack/sdk";
|
|
3398
3669
|
|
|
3399
3670
|
// ../../apps/server/src/schemas/vaults.ts
|
|
3400
|
-
import { z as
|
|
3671
|
+
import { z as z12 } from "@hono/zod-openapi";
|
|
3401
3672
|
import { CloudVaultSchema } from "@openagentpack/sdk";
|
|
3402
3673
|
import { CloudVaultSchema as CloudVaultSchema2 } from "@openagentpack/sdk";
|
|
3403
|
-
var CloudVaultsResponseSchema =
|
|
3404
|
-
vaults:
|
|
3674
|
+
var CloudVaultsResponseSchema = z12.object({
|
|
3675
|
+
vaults: z12.array(CloudVaultSchema)
|
|
3405
3676
|
});
|
|
3406
|
-
var CreateVaultBodySchema =
|
|
3407
|
-
name:
|
|
3408
|
-
metadata:
|
|
3677
|
+
var CreateVaultBodySchema = z12.object({
|
|
3678
|
+
name: z12.string().min(1),
|
|
3679
|
+
metadata: z12.record(z12.string(), z12.string()).optional(),
|
|
3409
3680
|
// The DASHSCOPE_API_KEY stored as the vault's credential secret value. Optional:
|
|
3410
3681
|
// when omitted the server injects it from its own DASHSCOPE_API_KEY env.
|
|
3411
|
-
key:
|
|
3682
|
+
key: z12.string().min(1).optional()
|
|
3412
3683
|
});
|
|
3413
|
-
var CreateVaultResponseSchema =
|
|
3414
|
-
id:
|
|
3415
|
-
type:
|
|
3416
|
-
version:
|
|
3684
|
+
var CreateVaultResponseSchema = z12.object({
|
|
3685
|
+
id: z12.string().nullable(),
|
|
3686
|
+
type: z12.string(),
|
|
3687
|
+
version: z12.number().optional()
|
|
3417
3688
|
});
|
|
3418
|
-
var DeleteVaultResponseSchema =
|
|
3419
|
-
id:
|
|
3420
|
-
type:
|
|
3689
|
+
var DeleteVaultResponseSchema = z12.object({
|
|
3690
|
+
id: z12.string(),
|
|
3691
|
+
type: z12.string()
|
|
3421
3692
|
});
|
|
3422
|
-
var VaultParamsSchema =
|
|
3423
|
-
vaultId:
|
|
3693
|
+
var VaultParamsSchema = z12.object({
|
|
3694
|
+
vaultId: z12.string().min(1)
|
|
3424
3695
|
});
|
|
3425
3696
|
|
|
3426
3697
|
// ../../apps/server/src/routes/vaults.ts
|
|
3427
|
-
var vaultsRoute = new
|
|
3428
|
-
var listVaultsRoute =
|
|
3698
|
+
var vaultsRoute = new OpenAPIHono13();
|
|
3699
|
+
var listVaultsRoute = createRoute13({
|
|
3429
3700
|
method: "get",
|
|
3430
3701
|
path: "/vaults",
|
|
3431
3702
|
responses: {
|
|
@@ -3440,7 +3711,7 @@ vaultsRoute.openapi(listVaultsRoute, async (c) => {
|
|
|
3440
3711
|
const vaults = await withAgentRuntime(DEFAULT_AGENT_ID, (ctx) => listCloudVaults(ctx));
|
|
3441
3712
|
return c.json({ vaults }, 200);
|
|
3442
3713
|
});
|
|
3443
|
-
var createVaultRoute =
|
|
3714
|
+
var createVaultRoute = createRoute13({
|
|
3444
3715
|
method: "post",
|
|
3445
3716
|
path: "/vaults",
|
|
3446
3717
|
request: {
|
|
@@ -3483,7 +3754,7 @@ vaultsRoute.openapi(createVaultRoute, async (c) => {
|
|
|
3483
3754
|
);
|
|
3484
3755
|
return c.json(vault, 200);
|
|
3485
3756
|
});
|
|
3486
|
-
var deleteVaultRoute =
|
|
3757
|
+
var deleteVaultRoute = createRoute13({
|
|
3487
3758
|
method: "delete",
|
|
3488
3759
|
path: "/vaults/{vaultId}",
|
|
3489
3760
|
request: {
|
|
@@ -3511,7 +3782,7 @@ function requireEnv2(name) {
|
|
|
3511
3782
|
}
|
|
3512
3783
|
|
|
3513
3784
|
// ../../apps/server/src/app.ts
|
|
3514
|
-
var app = new
|
|
3785
|
+
var app = new OpenAPIHono14();
|
|
3515
3786
|
app.use(
|
|
3516
3787
|
"/*",
|
|
3517
3788
|
cors({
|
|
@@ -3522,6 +3793,7 @@ app.use(
|
|
|
3522
3793
|
})
|
|
3523
3794
|
);
|
|
3524
3795
|
app.route("/api", configRoute);
|
|
3796
|
+
app.route("/api", deploymentsRoute);
|
|
3525
3797
|
app.route("/api", agentsRoute);
|
|
3526
3798
|
app.route("/api", environmentsRoute);
|
|
3527
3799
|
app.route("/api", vaultsRoute);
|
|
@@ -3569,8 +3841,18 @@ async function resolveListenPort(preferred, maxAttempts = MAX_PORT_ATTEMPTS) {
|
|
|
3569
3841
|
|
|
3570
3842
|
// src/server.ts
|
|
3571
3843
|
var DEFAULT_PLAYGROUND_PORT = 4848;
|
|
3572
|
-
var
|
|
3573
|
-
var
|
|
3844
|
+
var pkgRoot = join3(dirname4(fileURLToPath(import.meta.url)), "../..");
|
|
3845
|
+
var webRoot = join3(pkgRoot, "web");
|
|
3846
|
+
var indexHtml = injectPlaygroundRuntimeMarker(readFileSync(join3(webRoot, "index.html"), "utf8"));
|
|
3847
|
+
function readPlaygroundVersion() {
|
|
3848
|
+
try {
|
|
3849
|
+
const manifest = JSON.parse(readFileSync(join3(pkgRoot, "package.json"), "utf8"));
|
|
3850
|
+
return manifest.version ?? "unknown";
|
|
3851
|
+
} catch {
|
|
3852
|
+
return "unknown";
|
|
3853
|
+
}
|
|
3854
|
+
}
|
|
3855
|
+
var playgroundVersion = readPlaygroundVersion();
|
|
3574
3856
|
function injectPlaygroundRuntimeMarker(html) {
|
|
3575
3857
|
if (html.includes('name="agents-runtime"')) return html;
|
|
3576
3858
|
return html.replace("<head>", '<head>\n <meta name="agents-runtime" content="playground" />');
|
|
@@ -3587,9 +3869,14 @@ async function startServer() {
|
|
|
3587
3869
|
console.log(`Port ${preferred} is in use, using ${port} instead.`);
|
|
3588
3870
|
}
|
|
3589
3871
|
const root = new Hono();
|
|
3872
|
+
root.get("/health", (c) => c.json({ status: "ok", playground: { version: playgroundVersion, pid: process.pid } }));
|
|
3590
3873
|
root.route("/", app);
|
|
3591
3874
|
root.get("/", (c) => c.html(indexHtml));
|
|
3592
3875
|
root.get("/index.html", (c) => c.html(indexHtml));
|
|
3876
|
+
root.use("/assets/*", async (c, next) => {
|
|
3877
|
+
await next();
|
|
3878
|
+
c.header("Cache-Control", "no-cache");
|
|
3879
|
+
});
|
|
3593
3880
|
root.use("/assets/*", serveStatic({ root: webRoot }));
|
|
3594
3881
|
root.get("*", (c) => c.html(indexHtml));
|
|
3595
3882
|
serve({ fetch: root.fetch, port }, () => {
|