@openagentpack/playground 0.3.0 → 0.3.1-beta-85cd4b6-20260727

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.
@@ -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 dirname3, join as join2 } from "path";
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 OpenAPIHono13 } from "@hono/zod-openapi";
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 createRoute3, OpenAPIHono as OpenAPIHono3 } from "@hono/zod-openapi";
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 z4 } from "@hono/zod-openapi";
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 = z4.object({
2331
- environments: z4.array(CloudEnvironmentSchema)
2332
- });
2333
- var CreateEnvironmentBodySchema = z4.object({
2334
- name: z4.string().min(1),
2335
- description: z4.string().optional(),
2336
- metadata: z4.record(z4.string(), z4.string()).optional()
2337
- });
2338
- var CreateEnvironmentResponseSchema = z4.object({
2339
- environment: z4.object({
2340
- id: z4.string().nullable(),
2341
- type: z4.string(),
2342
- version: z4.number().optional()
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 = z4.object({
2346
- id: z4.string(),
2347
- type: z4.string()
2616
+ var DeleteEnvironmentResponseSchema = z6.object({
2617
+ id: z6.string(),
2618
+ type: z6.string()
2348
2619
  });
2349
- var EnvironmentParamsSchema = z4.object({
2350
- environmentId: z4.string().min(1)
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 OpenAPIHono3();
2355
- var listEnvironmentsRoute = createRoute3({
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 = createRoute3({
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 = createRoute3({
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 createRoute4, OpenAPIHono as OpenAPIHono4 } from "@hono/zod-openapi";
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 z5 } from "@hono/zod-openapi";
2424
- var ProviderFileInfoSchema = z5.object({
2425
- id: z5.string(),
2426
- filename: z5.string(),
2427
- mime_type: z5.string(),
2428
- size_bytes: z5.number(),
2429
- created_at: z5.string(),
2430
- downloadable: z5.boolean().optional(),
2431
- status: z5.string().optional(),
2432
- purpose: z5.string().optional(),
2433
- available: z5.boolean().optional()
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 = z5.object({
2436
- file: z5.instanceof(File).openapi({ type: "string", format: "binary" })
2706
+ var UploadFileFormSchema = z7.object({
2707
+ file: z7.instanceof(File).openapi({ type: "string", format: "binary" })
2437
2708
  });
2438
- var FilesResponseSchema = z5.object({
2439
- files: z5.array(ProviderFileInfoSchema)
2709
+ var FilesResponseSchema = z7.object({
2710
+ files: z7.array(ProviderFileInfoSchema)
2440
2711
  });
2441
- var FileStatusesBodySchema = z5.object({
2442
- fileIds: z5.array(z5.string())
2712
+ var FileStatusesBodySchema = z7.object({
2713
+ fileIds: z7.array(z7.string())
2443
2714
  });
2444
- var FileStatusInfoSchema = z5.object({
2445
- id: z5.string(),
2446
- status: z5.string().optional(),
2447
- available: z5.boolean().optional()
2715
+ var FileStatusInfoSchema = z7.object({
2716
+ id: z7.string(),
2717
+ status: z7.string().optional(),
2718
+ available: z7.boolean().optional()
2448
2719
  });
2449
- var FileStatusesResponseSchema = z5.object({
2450
- files: z5.array(FileStatusInfoSchema)
2720
+ var FileStatusesResponseSchema = z7.object({
2721
+ files: z7.array(FileStatusInfoSchema)
2451
2722
  });
2452
- var FileParamsSchema = z5.object({
2453
- id: z5.string().min(1)
2723
+ var FileParamsSchema = z7.object({
2724
+ id: z7.string().min(1)
2454
2725
  });
2455
- var FileDownloadResponseSchema = z5.object({
2456
- url: z5.string(),
2457
- expires_at: z5.string().optional()
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 OpenAPIHono4();
2781
+ var filesRoute = new OpenAPIHono5();
2511
2782
  var MAX_UPLOAD_BYTES = 100 * 1024 * 1024;
2512
- var uploadFileRoute = createRoute4({
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 = createRoute4({
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 = createRoute4({
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 = createRoute4({
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 = createRoute4({
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 createRoute5, OpenAPIHono as OpenAPIHono5 } from "@hono/zod-openapi";
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 z6 } from "@hono/zod-openapi";
2641
- var ModelOptionSchema = z6.object({
2642
- id: z6.string(),
2643
- display_name: z6.string(),
2644
- is_enabled: z6.boolean().optional(),
2645
- is_new: z6.boolean().optional()
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 = z6.object({
2648
- models: z6.array(ModelOptionSchema)
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 OpenAPIHono5();
2653
- var listModelsRoute = createRoute5({
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 createRoute10, OpenAPIHono as OpenAPIHono10 } from "@hono/zod-openapi";
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 z7 } from "@hono/zod-openapi";
2955
+ import { z as z9 } from "@hono/zod-openapi";
2685
2956
  import { SessionEventSchema, SessionSchema } from "@openagentpack/sdk";
2686
- var SessionListResponseSchema = z7.object({
2687
- data: z7.array(SessionSchema),
2688
- next_page_token: z7.string().nullish()
2957
+ var SessionListResponseSchema = z9.object({
2958
+ data: z9.array(SessionSchema),
2959
+ next_page_token: z9.string().nullish()
2689
2960
  }).openapi("SessionListResponse");
2690
- var SessionDetailResponseSchema = z7.object({
2961
+ var SessionDetailResponseSchema = z9.object({
2691
2962
  session: SessionSchema,
2692
- events: z7.array(SessionEventSchema),
2693
- events_next_page_token: z7.string().nullish()
2963
+ events: z9.array(SessionEventSchema),
2964
+ events_next_page_token: z9.string().nullish()
2694
2965
  }).openapi("SessionDetailResponse");
2695
- var SessionEventsPageResponseSchema = z7.object({
2696
- events: z7.array(SessionEventSchema),
2697
- events_next_page_token: z7.string().nullish()
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 = z7.object({
2700
- session_id: z7.string(),
2701
- deleted: z7.boolean()
2970
+ var SessionDeleteResponseSchema = z9.object({
2971
+ session_id: z9.string(),
2972
+ deleted: z9.boolean()
2702
2973
  }).openapi("SessionDeleteResponse");
2703
- var SessionsQuerySchema = z7.object({
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: z7.preprocess((value) => {
2977
+ limit: z9.preprocess((value) => {
2707
2978
  const parsed = Number(value);
2708
2979
  return Number.isFinite(parsed) ? parsed : void 0;
2709
- }, z7.number().int().optional()),
2710
- agentId: z7.string().optional(),
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: z7.string().optional()
2983
+ pageToken: z9.string().optional()
2713
2984
  });
2714
- var SessionDetailQuerySchema = z7.object({
2715
- agentId: z7.string().optional()
2985
+ var SessionDetailQuerySchema = z9.object({
2986
+ agentId: z9.string().optional()
2716
2987
  });
2717
- var SessionEventsQuerySchema = z7.object({
2718
- agentId: z7.string().optional(),
2719
- pageToken: z7.string().optional(),
2720
- limit: z7.preprocess((value) => {
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
- }, z7.number().int().optional())
2994
+ }, z9.number().int().optional())
2724
2995
  });
2725
- var SessionParamsSchema = z7.object({
2726
- sessionId: z7.string()
2996
+ var SessionParamsSchema = z9.object({
2997
+ sessionId: z9.string()
2727
2998
  });
2728
- var CreateSessionBodySchema = z7.object({
2729
- agentId: z7.string(),
2730
- prompt: z7.string().min(1),
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: z7.string().min(1),
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: z7.array(z7.string()).optional(),
2736
- title: z7.string().optional(),
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: z7.array(z7.object({ fileId: z7.string(), mountPath: z7.string() })).optional(),
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: z7.string().optional()
3013
+ model: z9.string().optional()
2743
3014
  });
2744
- var SendMessageBodySchema = z7.object({
2745
- agentId: z7.string().optional(),
2746
- message: z7.string().min(1)
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 createRoute6, OpenAPIHono as OpenAPIHono6 } from "@hono/zod-openapi";
2758
- var sessionsDetailRoute = new OpenAPIHono6();
2759
- var getSessionRoute = createRoute6({
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 = createRoute6({
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 createRoute7, OpenAPIHono as OpenAPIHono7 } from "@hono/zod-openapi";
2812
- var sessionsEventsRoute = new OpenAPIHono7();
2813
- var listSessionEventsRoute = createRoute7({
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 createRoute8, OpenAPIHono as OpenAPIHono8 } from "@hono/zod-openapi";
2851
- var sessionsMessagesRoute = new OpenAPIHono8();
2852
- var sendMessageRoute = createRoute8({
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 createRoute9, OpenAPIHono as OpenAPIHono9, z as z8 } from "@hono/zod-openapi";
2882
- var sessionsStreamRoute = new OpenAPIHono9();
2883
- var SessionStreamQuerySchema = z8.object({
2884
- after: z8.preprocess((value) => {
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
- }, z8.number().int().optional())
3158
+ }, z10.number().int().optional())
2888
3159
  });
2889
- var streamSessionRoute = createRoute9({
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: z8.string().openapi({
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 OpenAPIHono10();
3012
- var listSessionsRoute = createRoute10({
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 = createRoute10({
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 createRoute11, OpenAPIHono as OpenAPIHono11 } from "@hono/zod-openapi";
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 z9 } from "@hono/zod-openapi";
3084
- var ProviderSkillInfoSchema = z9.object({
3085
- id: z9.string(),
3086
- name: z9.string(),
3087
- description: z9.string().optional(),
3088
- source: z9.enum(["custom", "official"]),
3089
- status: z9.enum(["checking", "active", "rejected", "deleted"]),
3090
- latest_version: z9.string().optional(),
3091
- created_at: z9.string().optional(),
3092
- updated_at: z9.string().optional()
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 = z9.object({
3095
- file: z9.instanceof(File).openapi({ type: "string", format: "binary" })
3365
+ var UploadSkillFileFormSchema = z11.object({
3366
+ file: z11.instanceof(File).openapi({ type: "string", format: "binary" })
3096
3367
  });
3097
- var CreateSkillBodySchema = z9.object({
3098
- fileId: z9.string().min(1)
3368
+ var CreateSkillBodySchema = z11.object({
3369
+ fileId: z11.string().min(1)
3099
3370
  });
3100
- var WarmSkillBodySchema = z9.object({
3101
- name: z9.string().min(1),
3102
- url: z9.string().min(1)
3371
+ var WarmSkillBodySchema = z11.object({
3372
+ name: z11.string().min(1),
3373
+ url: z11.string().min(1)
3103
3374
  });
3104
- var WarmSkillResponseSchema = z9.object({
3105
- ok: z9.literal(true)
3375
+ var WarmSkillResponseSchema = z11.object({
3376
+ ok: z11.literal(true)
3106
3377
  });
3107
- var SkillsQuerySchema = z9.object({
3108
- source: z9.enum(["custom", "official"]).optional()
3378
+ var SkillsQuerySchema = z11.object({
3379
+ source: z11.enum(["custom", "official"]).optional()
3109
3380
  });
3110
- var SkillsResponseSchema = z9.object({
3111
- skills: z9.array(ProviderSkillInfoSchema)
3381
+ var SkillsResponseSchema = z11.object({
3382
+ skills: z11.array(ProviderSkillInfoSchema)
3112
3383
  });
3113
- var SkillStatusesBodySchema = z9.object({
3114
- skillIds: z9.array(z9.string())
3384
+ var SkillStatusesBodySchema = z11.object({
3385
+ skillIds: z11.array(z11.string())
3115
3386
  });
3116
- var SkillStatusInfoSchema = z9.object({
3117
- id: z9.string(),
3118
- status: z9.enum(["checking", "active", "rejected", "deleted"]).optional()
3387
+ var SkillStatusInfoSchema = z11.object({
3388
+ id: z11.string(),
3389
+ status: z11.enum(["checking", "active", "rejected", "deleted"]).optional()
3119
3390
  });
3120
- var SkillStatusesResponseSchema = z9.object({
3121
- skills: z9.array(SkillStatusInfoSchema)
3391
+ var SkillStatusesResponseSchema = z11.object({
3392
+ skills: z11.array(SkillStatusInfoSchema)
3122
3393
  });
3123
- var SkillParamsSchema = z9.object({
3124
- id: z9.string().min(1)
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 OpenAPIHono11();
3496
+ var skillsRoute = new OpenAPIHono12();
3226
3497
  var MAX_UPLOAD_BYTES2 = 100 * 1024 * 1024;
3227
- var uploadSkillFileRoute = createRoute11({
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 = createRoute11({
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 = createRoute11({
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 = createRoute11({
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 = createRoute11({
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 = createRoute11({
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 createRoute12, OpenAPIHono as OpenAPIHono12 } from "@hono/zod-openapi";
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 z10 } from "@hono/zod-openapi";
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 = z10.object({
3404
- vaults: z10.array(CloudVaultSchema)
3674
+ var CloudVaultsResponseSchema = z12.object({
3675
+ vaults: z12.array(CloudVaultSchema)
3405
3676
  });
3406
- var CreateVaultBodySchema = z10.object({
3407
- name: z10.string().min(1),
3408
- metadata: z10.record(z10.string(), z10.string()).optional(),
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: z10.string().min(1).optional()
3682
+ key: z12.string().min(1).optional()
3412
3683
  });
3413
- var CreateVaultResponseSchema = z10.object({
3414
- id: z10.string().nullable(),
3415
- type: z10.string(),
3416
- version: z10.number().optional()
3684
+ var CreateVaultResponseSchema = z12.object({
3685
+ id: z12.string().nullable(),
3686
+ type: z12.string(),
3687
+ version: z12.number().optional()
3417
3688
  });
3418
- var DeleteVaultResponseSchema = z10.object({
3419
- id: z10.string(),
3420
- type: z10.string()
3689
+ var DeleteVaultResponseSchema = z12.object({
3690
+ id: z12.string(),
3691
+ type: z12.string()
3421
3692
  });
3422
- var VaultParamsSchema = z10.object({
3423
- vaultId: z10.string().min(1)
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 OpenAPIHono12();
3428
- var listVaultsRoute = createRoute12({
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 = createRoute12({
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 = createRoute12({
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 OpenAPIHono13();
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 webRoot = join2(dirname3(fileURLToPath(import.meta.url)), "../../web");
3573
- var indexHtml = injectPlaygroundRuntimeMarker(readFileSync(join2(webRoot, "index.html"), "utf8"));
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 }, () => {