@openagentpack/playground 0.2.0-beta.0 → 0.3.0-beta-e537ab3-20260722

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
@@ -98,12 +98,12 @@ var bailian_default = [
98
98
  },
99
99
  version: 3,
100
100
  metadata: {
101
- sample_prompt_zh: "\u5E2E\u6211\u628A\u8FD9\u7BC7\u7A3F\u5B50\u6DA6\u8272\u4E00\u4E0B\uFF0C\u53BB\u6389AI\u5473\uFF0C\u8BFB\u8D77\u6765\u66F4\u81EA\u7136\u987A\u7545\u3002\n\n\u7A3F\u4EF6\uFF1A\n\u5728\u5F53\u4ECA\u6570\u5B57\u5316\u5FEB\u901F\u53D1\u5C55\u7684\u65F6\u4EE3\uFF0C\u6570\u636E\u9A71\u52A8\u51B3\u7B56\u5DF2\u7ECF\u6210\u4E3A\u4F01\u4E1A\u4E0D\u53EF\u5FFD\u89C6\u7684\u6838\u5FC3\u80FD\u529B\u3002\u503C\u5F97\u6CE8\u610F\u7684\u662F\uFF0C\u6570\u636E\u4E0D\u4EC5\u4EC5\u662F\u6570\u5B57\u7684\u7B80\u5355\u5806\u780C\uFF0C\u66F4\u662F\u6218\u7565\u89C4\u5212\u7684\u91CD\u8981\u57FA\u77F3\u3002\u9996\u5148\uFF0C\u6570\u636E\u5E2E\u52A9\u4F01\u4E1A\u6D1E\u5BDF\u5E02\u573A\u8D8B\u52BF\uFF1B\u5176\u6B21\uFF0C\u6570\u636E\u4F18\u5316\u8FD0\u8425\u6548\u7387\uFF1B\u6700\u540E\uFF0C\u6570\u636E\u63D0\u5347\u5BA2\u6237\u4F53\u9A8C\u3002\u7EFC\u4E0A\u6240\u8FF0\uFF0C\u6570\u636E\u9A71\u52A8\u7684\u610F\u4E49\u6DF1\u8FDC\u800C\u91CD\u5927\uFF0C\u5FC5\u5C06\u5F71\u54CD\u672A\u6765\u7684\u5546\u4E1A\u683C\u5C40\u3002",
102
101
  template_id: "editor",
103
102
  display_name_en: "Article Polish Editor",
104
- sample_prompt_en: "Please polish this draft to remove AI traces and make it read more naturally.\n\nDraft:\nIn today's era of rapid digital development, data-driven decision-making has become a core capability that enterprises cannot ignore. It is worth noting that data is not just a simple stacking of numbers, but an important cornerstone of strategic planning. First, data helps enterprises gain insights into market trends; second, data optimizes operational efficiency; finally, data improves customer experience. In summary, the significance of data-driven is profound and major, and will surely influence the future business landscape.",
105
103
  display_name_zh: "\u6587\u7AE0\u6DA6\u8272",
106
- avatar_url: "https://img.alicdn.com/imgextra/i1/O1CN01yCOy3D1yuidLMO8jU_!!6000000006639-2-tps-1728-2368.png"
104
+ avatar_url: "https://img.alicdn.com/imgextra/i1/O1CN01yCOy3D1yuidLMO8jU_!!6000000006639-2-tps-1728-2368.png",
105
+ sample_prompt_zh: "\u5E2E\u6211\u628A\u8FD9\u7BC7\u7A3F\u5B50\u6DA6\u8272\u4E00\u4E0B\uFF0C\u53BB\u6389AI\u5473\uFF0C\u8BFB\u8D77\u6765\u66F4\u81EA\u7136\u987A\u7545\u3002",
106
+ sample_prompt_en: "Please polish this draft to remove AI traces and make it read more naturally."
107
107
  },
108
108
  tools: [
109
109
  {
@@ -160,12 +160,12 @@ var bailian_default = [
160
160
  },
161
161
  version: 3,
162
162
  metadata: {
163
- sample_prompt_zh: "\u5E2E\u6211\u4EEC\u505A\u4E00\u4E2A\u4EA7\u54C1\u843D\u5730\u9875\uFF0C\u9ED1\u767D\u7F16\u8F91\u98CE\uFF0C\u5E26\u67D4\u5F69\u53D9\u4E8B\u533A\u5757\u3002\n\n\u4EA7\u54C1\uFF1AOpenAgentPack \u2014\u2014 \u5F00\u6E90\u7684 AI Agent \u7BA1\u7406\u5DE5\u5177\uFF0C\u5E2E\u5F00\u53D1\u8005\u4E00\u952E\u53D1\u5E03\u3001\u7248\u672C\u7BA1\u7406\u548C\u8DE8\u4E91\u8FC1\u79FB Agent \u914D\u7F6E\u3002\n\u6838\u5FC3\u5356\u70B9\uFF1A\u914D\u7F6E\u5373\u4EE3\u7801\u53EF\u7248\u672C\u5316\uFF1B\u652F\u6301\u767E\u70BC/Claude/Qoder \u591A\u4E91\uFF1BCLI \u4E00\u952E\u53D1\u5E03\u96F6\u8FD0\u7EF4\u3002\n\u76EE\u6807\u7528\u6237\uFF1AAI \u5E94\u7528\u5F00\u53D1\u8005\u3002",
164
163
  template_id: "designer",
165
164
  display_name_en: "Brand Web Designer",
166
- sample_prompt_en: "Build a product landing page with editorial black-and-white style and soft color story blocks.\n\nProduct: OpenAgentPack \u2014 an open-source AI agent management tool for developers.\nKey features: config-as-code with versioning; multi-cloud (Bailian/Claude/Qoder); one-command CLI deploy with zero ops overhead.\nTarget users: AI application developers.",
167
165
  display_name_zh: "\u7F51\u9875\u8BBE\u8BA1",
168
- avatar_url: "https://img.alicdn.com/imgextra/i1/O1CN018n83JF1E39za6CWbI_!!6000000000295-2-tps-1728-2368.png"
166
+ avatar_url: "https://img.alicdn.com/imgextra/i1/O1CN018n83JF1E39za6CWbI_!!6000000000295-2-tps-1728-2368.png",
167
+ sample_prompt_zh: "\u5E2E\u6211\u4EEC\u505A\u4E00\u4E2A\u4EA7\u54C1\u843D\u5730\u9875\uFF0C\u9ED1\u767D\u7F16\u8F91\u98CE\uFF0C\u5E26\u67D4\u5F69\u53D9\u4E8B\u533A\u5757\u3002",
168
+ sample_prompt_en: "Build a product landing page with editorial black-and-white style and soft color story blocks."
169
169
  },
170
170
  tools: [
171
171
  {
@@ -222,12 +222,12 @@ var bailian_default = [
222
222
  },
223
223
  version: 3,
224
224
  metadata: {
225
- sample_prompt_zh: "\u5E2E\u6211\u628A\u8FD9\u4E9B\u8BBF\u8C08\u8BB0\u5F55\u548C\u5E02\u573A\u8C03\u7814\u7B14\u8BB0\u6574\u7406\u6210\u4E00\u4EFD\u7ED3\u6784\u6E05\u6670\u7684\u884C\u4E1A\u7814\u7A76\u62A5\u544A\uFF0C\u8981\u6C42\u7ED3\u8BBA\u5148\u884C\u3001\u6570\u636E\u9A71\u52A8\u3002\n\n\u7D20\u6750\uFF1A\n- \u8BBF\u8C08A\uFF08\u67D0\u7535\u5546\u6280\u672F\u603B\u76D1\uFF09\uFF1A\u4ECA\u5E74 Q2 \u6211\u4EEC AI \u5BA2\u670D\u65E5\u5747\u4F1A\u8BDD\u91CF\u4ECE 8000 \u6DA8\u5230 3.2 \u4E07\uFF0C\u4F46\u4EBA\u5DE5\u5750\u5E2D\u53EA\u4ECE 15 \u4EBA\u51CF\u5230 11 \u4EBA\uFF0CROI \u4E0D\u5982\u9884\u671F\u3002\n- \u8C03\u7814\u7B14\u8BB0\uFF1A2024 \u5E74\u56FD\u5185\u667A\u80FD\u5BA2\u670D\u5E02\u573A\u89C4\u6A21\u7EA6 48 \u4EBF\uFF0C\u540C\u6BD4 +23%\uFF1B\u5934\u90E8\u4E09\u5BB6\u5382\u5546\u5E02\u5360\u7387 62%\uFF0C\u96C6\u4E2D\u5EA6\u4E0A\u5347\u3002\n- \u8BBF\u8C08B\uFF08SaaS \u521B\u59CB\u4EBA\uFF09\uFF1A\u5BA2\u6237\u6700\u5728\u610F\u7684\u4E0D\u662F\u591A\u8F6E\u5BF9\u8BDD\u80FD\u529B\uFF0C\u800C\u662F\u5DE5\u5355\u9996\u6B21\u89E3\u51B3\u7387\uFF0C\u6211\u4EEC\u505A\u5230 78% \u540E\u7EED\u7EA6\u7387\u660E\u663E\u4E0B\u964D\u3002\n- \u8BBF\u8C08C\uFF08\u96F6\u552E CIO\uFF09\uFF1A\u4E0A\u4E86\u5927\u6A21\u578B\u5BA2\u670D\u540E\uFF0C\u7B80\u5355\u54A8\u8BE2\u81EA\u52A8\u5316\u7387 65%\uFF0C\u4F46\u590D\u6742\u552E\u540E\u4ECD\u9700\u4EBA\u5DE5\uFF0C\u6574\u4F53\u6EE1\u610F\u5EA6\u4ECE 4.1 \u5347\u5230 4.3\u3002",
226
225
  template_id: "researcher",
227
226
  display_name_en: "Industry Research Advisor",
228
- sample_prompt_en: "Help me organize these interview notes and market research materials into a well-structured industry research report with conclusion-first and data-driven insights.\n\nMaterials:\n- Interview A (e-commerce tech director): Our AI customer service daily conversations grew from 8,000 to 32,000 in Q2, but human agents only dropped from 15 to 11 \u2014 ROI below expectations.\n- Research note: China's smart customer service market reached ~4.8B RMB in 2024, +23% YoY; top 3 vendors hold 62% market share, concentration rising.\n- Interview B (SaaS founder): Customers care less about multi-turn dialogue than first-contact resolution rate; once we hit 78%, renewal rates dropped noticeably.\n- Interview C (retail CIO): After adopting LLM customer service, simple inquiry automation hit 65%, but complex after-sales still need humans; overall satisfaction rose from 4.1 to 4.3.",
229
227
  display_name_zh: "\u7814\u7A76\u62A5\u544A",
230
- avatar_url: "https://img.alicdn.com/imgextra/i2/O1CN01Gl4Bgl29fZIzVntMJ_!!6000000008095-2-tps-1728-2368.png"
228
+ avatar_url: "https://img.alicdn.com/imgextra/i2/O1CN01Gl4Bgl29fZIzVntMJ_!!6000000008095-2-tps-1728-2368.png",
229
+ sample_prompt_zh: "\u5E2E\u6211\u628A\u8FD9\u4E9B\u8BBF\u8C08\u8BB0\u5F55\u548C\u5E02\u573A\u8C03\u7814\u7B14\u8BB0\u6574\u7406\u6210\u4E00\u4EFD\u7ED3\u6784\u6E05\u6670\u7684\u884C\u4E1A\u7814\u7A76\u62A5\u544A\uFF0C\u8981\u6C42\u7ED3\u8BBA\u5148\u884C\u3001\u6570\u636E\u9A71\u52A8\u3002",
230
+ sample_prompt_en: "Help me organize these interview notes and market research materials into a well-structured industry research report with conclusion-first and data-driven insights."
231
231
  },
232
232
  tools: [
233
233
  {
@@ -284,12 +284,12 @@ var bailian_default = [
284
284
  },
285
285
  version: 3,
286
286
  metadata: {
287
- sample_prompt_zh: "\u751F\u6210\u4E00\u5F20\u8D5B\u535A\u670B\u514B\u732B\u54AA\u6D77\u62A5",
288
287
  template_id: "art-designer",
289
288
  display_name_en: "Art Creator",
290
- sample_prompt_en: "Generate a cyberpunk cat poster",
291
289
  display_name_zh: "\u827A\u672F\u521B\u4F5C",
292
- avatar_url: "https://img.alicdn.com/imgextra/i1/O1CN01TNaIjz1xz0jHEADar_!!6000000006513-2-tps-1728-2368.png"
290
+ avatar_url: "https://img.alicdn.com/imgextra/i1/O1CN01TNaIjz1xz0jHEADar_!!6000000006513-2-tps-1728-2368.png",
291
+ sample_prompt_zh: "\u751F\u6210\u4E00\u5F20\u8D5B\u535A\u670B\u514B\u732B\u54AA\u6D77\u62A5",
292
+ sample_prompt_en: "Generate a cyberpunk cat poster"
293
293
  },
294
294
  tools: [
295
295
  {
@@ -350,12 +350,12 @@ var claude_default = [
350
350
  },
351
351
  version: 3,
352
352
  metadata: {
353
- sample_prompt_zh: "\u5E2E\u6211\u628A\u8FD9\u7BC7\u7A3F\u5B50\u6DA6\u8272\u4E00\u4E0B\uFF0C\u53BB\u6389AI\u5473\uFF0C\u8BFB\u8D77\u6765\u66F4\u81EA\u7136\u987A\u7545\u3002\n\n\u7A3F\u4EF6\uFF1A\n\u5728\u5F53\u4ECA\u6570\u5B57\u5316\u5FEB\u901F\u53D1\u5C55\u7684\u65F6\u4EE3\uFF0C\u6570\u636E\u9A71\u52A8\u51B3\u7B56\u5DF2\u7ECF\u6210\u4E3A\u4F01\u4E1A\u4E0D\u53EF\u5FFD\u89C6\u7684\u6838\u5FC3\u80FD\u529B\u3002\u503C\u5F97\u6CE8\u610F\u7684\u662F\uFF0C\u6570\u636E\u4E0D\u4EC5\u4EC5\u662F\u6570\u5B57\u7684\u7B80\u5355\u5806\u780C\uFF0C\u66F4\u662F\u6218\u7565\u89C4\u5212\u7684\u91CD\u8981\u57FA\u77F3\u3002\u9996\u5148\uFF0C\u6570\u636E\u5E2E\u52A9\u4F01\u4E1A\u6D1E\u5BDF\u5E02\u573A\u8D8B\u52BF\uFF1B\u5176\u6B21\uFF0C\u6570\u636E\u4F18\u5316\u8FD0\u8425\u6548\u7387\uFF1B\u6700\u540E\uFF0C\u6570\u636E\u63D0\u5347\u5BA2\u6237\u4F53\u9A8C\u3002\u7EFC\u4E0A\u6240\u8FF0\uFF0C\u6570\u636E\u9A71\u52A8\u7684\u610F\u4E49\u6DF1\u8FDC\u800C\u91CD\u5927\uFF0C\u5FC5\u5C06\u5F71\u54CD\u672A\u6765\u7684\u5546\u4E1A\u683C\u5C40\u3002",
354
353
  template_id: "editor",
355
354
  display_name_en: "Article Polish Editor",
356
- sample_prompt_en: "Please polish this draft to remove AI traces and make it read more naturally.\n\nDraft:\nIn today's era of rapid digital development, data-driven decision-making has become a core capability that enterprises cannot ignore. It is worth noting that data is not just a simple stacking of numbers, but an important cornerstone of strategic planning. First, data helps enterprises gain insights into market trends; second, data optimizes operational efficiency; finally, data improves customer experience. In summary, the significance of data-driven is profound and major, and will surely influence the future business landscape.",
357
355
  display_name_zh: "\u6587\u7AE0\u6DA6\u8272",
358
- avatar_url: "https://img.alicdn.com/imgextra/i1/O1CN01yCOy3D1yuidLMO8jU_!!6000000006639-2-tps-1728-2368.png"
356
+ avatar_url: "https://img.alicdn.com/imgextra/i1/O1CN01yCOy3D1yuidLMO8jU_!!6000000006639-2-tps-1728-2368.png",
357
+ sample_prompt_zh: "\u5E2E\u6211\u628A\u8FD9\u7BC7\u7A3F\u5B50\u6DA6\u8272\u4E00\u4E0B\uFF0C\u53BB\u6389AI\u5473\uFF0C\u8BFB\u8D77\u6765\u66F4\u81EA\u7136\u987A\u7545\u3002",
358
+ sample_prompt_en: "Please polish this draft to remove AI traces and make it read more naturally."
359
359
  },
360
360
  tools: [
361
361
  {
@@ -402,12 +402,12 @@ var claude_default = [
402
402
  },
403
403
  version: 3,
404
404
  metadata: {
405
- sample_prompt_zh: "\u5E2E\u6211\u4EEC\u505A\u4E00\u4E2A\u4EA7\u54C1\u843D\u5730\u9875\uFF0C\u9ED1\u767D\u7F16\u8F91\u98CE\uFF0C\u5E26\u67D4\u5F69\u53D9\u4E8B\u533A\u5757\u3002\n\n\u4EA7\u54C1\uFF1AOpenAgentPack \u2014\u2014 \u5F00\u6E90\u7684 AI Agent \u7BA1\u7406\u5DE5\u5177\uFF0C\u5E2E\u5F00\u53D1\u8005\u4E00\u952E\u53D1\u5E03\u3001\u7248\u672C\u7BA1\u7406\u548C\u8DE8\u4E91\u8FC1\u79FB Agent \u914D\u7F6E\u3002\n\u6838\u5FC3\u5356\u70B9\uFF1A\u914D\u7F6E\u5373\u4EE3\u7801\u53EF\u7248\u672C\u5316\uFF1B\u652F\u6301\u767E\u70BC/Claude/Qoder \u591A\u4E91\uFF1BCLI \u4E00\u952E\u53D1\u5E03\u96F6\u8FD0\u7EF4\u3002\n\u76EE\u6807\u7528\u6237\uFF1AAI \u5E94\u7528\u5F00\u53D1\u8005\u3002",
406
405
  template_id: "designer",
407
406
  display_name_en: "Brand Web Designer",
408
- sample_prompt_en: "Build a product landing page with editorial black-and-white style and soft color story blocks.\n\nProduct: OpenAgentPack \u2014 an open-source AI agent management tool for developers.\nKey features: config-as-code with versioning; multi-cloud (Bailian/Claude/Qoder); one-command CLI deploy with zero ops overhead.\nTarget users: AI application developers.",
409
407
  display_name_zh: "\u7F51\u9875\u8BBE\u8BA1",
410
- avatar_url: "https://img.alicdn.com/imgextra/i1/O1CN018n83JF1E39za6CWbI_!!6000000000295-2-tps-1728-2368.png"
408
+ avatar_url: "https://img.alicdn.com/imgextra/i1/O1CN018n83JF1E39za6CWbI_!!6000000000295-2-tps-1728-2368.png",
409
+ sample_prompt_zh: "\u5E2E\u6211\u4EEC\u505A\u4E00\u4E2A\u4EA7\u54C1\u843D\u5730\u9875\uFF0C\u9ED1\u767D\u7F16\u8F91\u98CE\uFF0C\u5E26\u67D4\u5F69\u53D9\u4E8B\u533A\u5757\u3002",
410
+ sample_prompt_en: "Build a product landing page with editorial black-and-white style and soft color story blocks."
411
411
  },
412
412
  tools: [
413
413
  {
@@ -454,12 +454,12 @@ var claude_default = [
454
454
  },
455
455
  version: 3,
456
456
  metadata: {
457
- sample_prompt_zh: "\u5E2E\u6211\u628A\u8FD9\u4E9B\u8BBF\u8C08\u8BB0\u5F55\u548C\u5E02\u573A\u8C03\u7814\u7B14\u8BB0\u6574\u7406\u6210\u4E00\u4EFD\u7ED3\u6784\u6E05\u6670\u7684\u884C\u4E1A\u7814\u7A76\u62A5\u544A\uFF0C\u8981\u6C42\u7ED3\u8BBA\u5148\u884C\u3001\u6570\u636E\u9A71\u52A8\u3002\n\n\u7D20\u6750\uFF1A\n- \u8BBF\u8C08A\uFF08\u67D0\u7535\u5546\u6280\u672F\u603B\u76D1\uFF09\uFF1A\u4ECA\u5E74 Q2 \u6211\u4EEC AI \u5BA2\u670D\u65E5\u5747\u4F1A\u8BDD\u91CF\u4ECE 8000 \u6DA8\u5230 3.2 \u4E07\uFF0C\u4F46\u4EBA\u5DE5\u5750\u5E2D\u53EA\u4ECE 15 \u4EBA\u51CF\u5230 11 \u4EBA\uFF0CROI \u4E0D\u5982\u9884\u671F\u3002\n- \u8C03\u7814\u7B14\u8BB0\uFF1A2024 \u5E74\u56FD\u5185\u667A\u80FD\u5BA2\u670D\u5E02\u573A\u89C4\u6A21\u7EA6 48 \u4EBF\uFF0C\u540C\u6BD4 +23%\uFF1B\u5934\u90E8\u4E09\u5BB6\u5382\u5546\u5E02\u5360\u7387 62%\uFF0C\u96C6\u4E2D\u5EA6\u4E0A\u5347\u3002\n- \u8BBF\u8C08B\uFF08SaaS \u521B\u59CB\u4EBA\uFF09\uFF1A\u5BA2\u6237\u6700\u5728\u610F\u7684\u4E0D\u662F\u591A\u8F6E\u5BF9\u8BDD\u80FD\u529B\uFF0C\u800C\u662F\u5DE5\u5355\u9996\u6B21\u89E3\u51B3\u7387\uFF0C\u6211\u4EEC\u505A\u5230 78% \u540E\u7EED\u7EA6\u7387\u660E\u663E\u4E0B\u964D\u3002\n- \u8BBF\u8C08C\uFF08\u96F6\u552E CIO\uFF09\uFF1A\u4E0A\u4E86\u5927\u6A21\u578B\u5BA2\u670D\u540E\uFF0C\u7B80\u5355\u54A8\u8BE2\u81EA\u52A8\u5316\u7387 65%\uFF0C\u4F46\u590D\u6742\u552E\u540E\u4ECD\u9700\u4EBA\u5DE5\uFF0C\u6574\u4F53\u6EE1\u610F\u5EA6\u4ECE 4.1 \u5347\u5230 4.3\u3002",
458
457
  template_id: "researcher",
459
458
  display_name_en: "Industry Research Advisor",
460
- sample_prompt_en: "Help me organize these interview notes and market research materials into a well-structured industry research report with conclusion-first and data-driven insights.\n\nMaterials:\n- Interview A (e-commerce tech director): Our AI customer service daily conversations grew from 8,000 to 32,000 in Q2, but human agents only dropped from 15 to 11 \u2014 ROI below expectations.\n- Research note: China's smart customer service market reached ~4.8B RMB in 2024, +23% YoY; top 3 vendors hold 62% market share, concentration rising.\n- Interview B (SaaS founder): Customers care less about multi-turn dialogue than first-contact resolution rate; once we hit 78%, renewal rates dropped noticeably.\n- Interview C (retail CIO): After adopting LLM customer service, simple inquiry automation hit 65%, but complex after-sales still need humans; overall satisfaction rose from 4.1 to 4.3.",
461
459
  display_name_zh: "\u7814\u7A76\u62A5\u544A",
462
- avatar_url: "https://img.alicdn.com/imgextra/i2/O1CN01Gl4Bgl29fZIzVntMJ_!!6000000008095-2-tps-1728-2368.png"
460
+ avatar_url: "https://img.alicdn.com/imgextra/i2/O1CN01Gl4Bgl29fZIzVntMJ_!!6000000008095-2-tps-1728-2368.png",
461
+ sample_prompt_zh: "\u5E2E\u6211\u628A\u8FD9\u4E9B\u8BBF\u8C08\u8BB0\u5F55\u548C\u5E02\u573A\u8C03\u7814\u7B14\u8BB0\u6574\u7406\u6210\u4E00\u4EFD\u7ED3\u6784\u6E05\u6670\u7684\u884C\u4E1A\u7814\u7A76\u62A5\u544A\uFF0C\u8981\u6C42\u7ED3\u8BBA\u5148\u884C\u3001\u6570\u636E\u9A71\u52A8\u3002",
462
+ sample_prompt_en: "Help me organize these interview notes and market research materials into a well-structured industry research report with conclusion-first and data-driven insights."
463
463
  },
464
464
  tools: [
465
465
  {
@@ -510,12 +510,12 @@ var ark_default = [
510
510
  },
511
511
  version: 3,
512
512
  metadata: {
513
- sample_prompt_zh: "\u5E2E\u6211\u628A\u8FD9\u7BC7\u7A3F\u5B50\u6DA6\u8272\u4E00\u4E0B\uFF0C\u53BB\u6389AI\u5473\uFF0C\u8BFB\u8D77\u6765\u66F4\u81EA\u7136\u987A\u7545\u3002\n\n\u7A3F\u4EF6\uFF1A\n\u5728\u5F53\u4ECA\u6570\u5B57\u5316\u5FEB\u901F\u53D1\u5C55\u7684\u65F6\u4EE3\uFF0C\u6570\u636E\u9A71\u52A8\u51B3\u7B56\u5DF2\u7ECF\u6210\u4E3A\u4F01\u4E1A\u4E0D\u53EF\u5FFD\u89C6\u7684\u6838\u5FC3\u80FD\u529B\u3002\u503C\u5F97\u6CE8\u610F\u7684\u662F\uFF0C\u6570\u636E\u4E0D\u4EC5\u4EC5\u662F\u6570\u5B57\u7684\u7B80\u5355\u5806\u780C\uFF0C\u66F4\u662F\u6218\u7565\u89C4\u5212\u7684\u91CD\u8981\u57FA\u77F3\u3002\u9996\u5148\uFF0C\u6570\u636E\u5E2E\u52A9\u4F01\u4E1A\u6D1E\u5BDF\u5E02\u573A\u8D8B\u52BF\uFF1B\u5176\u6B21\uFF0C\u6570\u636E\u4F18\u5316\u8FD0\u8425\u6548\u7387\uFF1B\u6700\u540E\uFF0C\u6570\u636E\u63D0\u5347\u5BA2\u6237\u4F53\u9A8C\u3002\u7EFC\u4E0A\u6240\u8FF0\uFF0C\u6570\u636E\u9A71\u52A8\u7684\u610F\u4E49\u6DF1\u8FDC\u800C\u91CD\u5927\uFF0C\u5FC5\u5C06\u5F71\u54CD\u672A\u6765\u7684\u5546\u4E1A\u683C\u5C40\u3002",
514
513
  template_id: "editor",
515
514
  display_name_en: "Article Polish Editor",
516
- sample_prompt_en: "Please polish this draft to remove AI traces and make it read more naturally.\n\nDraft:\nIn today's era of rapid digital development, data-driven decision-making has become a core capability that enterprises cannot ignore. It is worth noting that data is not just a simple stacking of numbers, but an important cornerstone of strategic planning. First, data helps enterprises gain insights into market trends; second, data optimizes operational efficiency; finally, data improves customer experience. In summary, the significance of data-driven is profound and major, and will surely influence the future business landscape.",
517
515
  display_name_zh: "\u6587\u7AE0\u6DA6\u8272",
518
- avatar_url: "https://img.alicdn.com/imgextra/i1/O1CN01yCOy3D1yuidLMO8jU_!!6000000006639-2-tps-1728-2368.png"
516
+ avatar_url: "https://img.alicdn.com/imgextra/i1/O1CN01yCOy3D1yuidLMO8jU_!!6000000006639-2-tps-1728-2368.png",
517
+ sample_prompt_zh: "\u5E2E\u6211\u628A\u8FD9\u7BC7\u7A3F\u5B50\u6DA6\u8272\u4E00\u4E0B\uFF0C\u53BB\u6389AI\u5473\uFF0C\u8BFB\u8D77\u6765\u66F4\u81EA\u7136\u987A\u7545\u3002",
518
+ sample_prompt_en: "Please polish this draft to remove AI traces and make it read more naturally."
519
519
  },
520
520
  tools: [
521
521
  {
@@ -562,12 +562,12 @@ var ark_default = [
562
562
  },
563
563
  version: 3,
564
564
  metadata: {
565
- sample_prompt_zh: "\u5E2E\u6211\u4EEC\u505A\u4E00\u4E2A\u4EA7\u54C1\u843D\u5730\u9875\uFF0C\u9ED1\u767D\u7F16\u8F91\u98CE\uFF0C\u5E26\u67D4\u5F69\u53D9\u4E8B\u533A\u5757\u3002\n\n\u4EA7\u54C1\uFF1AOpenAgentPack \u2014\u2014 \u5F00\u6E90\u7684 AI Agent \u7BA1\u7406\u5DE5\u5177\uFF0C\u5E2E\u5F00\u53D1\u8005\u4E00\u952E\u53D1\u5E03\u3001\u7248\u672C\u7BA1\u7406\u548C\u8DE8\u4E91\u8FC1\u79FB Agent \u914D\u7F6E\u3002\n\u6838\u5FC3\u5356\u70B9\uFF1A\u914D\u7F6E\u5373\u4EE3\u7801\u53EF\u7248\u672C\u5316\uFF1B\u652F\u6301\u767E\u70BC/Claude/Qoder \u591A\u4E91\uFF1BCLI \u4E00\u952E\u53D1\u5E03\u96F6\u8FD0\u7EF4\u3002\n\u76EE\u6807\u7528\u6237\uFF1AAI \u5E94\u7528\u5F00\u53D1\u8005\u3002",
566
565
  template_id: "designer",
567
566
  display_name_en: "Brand Web Designer",
568
- sample_prompt_en: "Build a product landing page with editorial black-and-white style and soft color story blocks.\n\nProduct: OpenAgentPack \u2014 an open-source AI agent management tool for developers.\nKey features: config-as-code with versioning; multi-cloud (Bailian/Claude/Qoder); one-command CLI deploy with zero ops overhead.\nTarget users: AI application developers.",
569
567
  display_name_zh: "\u7F51\u9875\u8BBE\u8BA1",
570
- avatar_url: "https://img.alicdn.com/imgextra/i1/O1CN018n83JF1E39za6CWbI_!!6000000000295-2-tps-1728-2368.png"
568
+ avatar_url: "https://img.alicdn.com/imgextra/i1/O1CN018n83JF1E39za6CWbI_!!6000000000295-2-tps-1728-2368.png",
569
+ sample_prompt_zh: "\u5E2E\u6211\u4EEC\u505A\u4E00\u4E2A\u4EA7\u54C1\u843D\u5730\u9875\uFF0C\u9ED1\u767D\u7F16\u8F91\u98CE\uFF0C\u5E26\u67D4\u5F69\u53D9\u4E8B\u533A\u5757\u3002",
570
+ sample_prompt_en: "Build a product landing page with editorial black-and-white style and soft color story blocks."
571
571
  },
572
572
  tools: [
573
573
  {
@@ -614,12 +614,12 @@ var ark_default = [
614
614
  },
615
615
  version: 3,
616
616
  metadata: {
617
- sample_prompt_zh: "\u5E2E\u6211\u628A\u8FD9\u4E9B\u8BBF\u8C08\u8BB0\u5F55\u548C\u5E02\u573A\u8C03\u7814\u7B14\u8BB0\u6574\u7406\u6210\u4E00\u4EFD\u7ED3\u6784\u6E05\u6670\u7684\u884C\u4E1A\u7814\u7A76\u62A5\u544A\uFF0C\u8981\u6C42\u7ED3\u8BBA\u5148\u884C\u3001\u6570\u636E\u9A71\u52A8\u3002\n\n\u7D20\u6750\uFF1A\n- \u8BBF\u8C08A\uFF08\u67D0\u7535\u5546\u6280\u672F\u603B\u76D1\uFF09\uFF1A\u4ECA\u5E74 Q2 \u6211\u4EEC AI \u5BA2\u670D\u65E5\u5747\u4F1A\u8BDD\u91CF\u4ECE 8000 \u6DA8\u5230 3.2 \u4E07\uFF0C\u4F46\u4EBA\u5DE5\u5750\u5E2D\u53EA\u4ECE 15 \u4EBA\u51CF\u5230 11 \u4EBA\uFF0CROI \u4E0D\u5982\u9884\u671F\u3002\n- \u8C03\u7814\u7B14\u8BB0\uFF1A2024 \u5E74\u56FD\u5185\u667A\u80FD\u5BA2\u670D\u5E02\u573A\u89C4\u6A21\u7EA6 48 \u4EBF\uFF0C\u540C\u6BD4 +23%\uFF1B\u5934\u90E8\u4E09\u5BB6\u5382\u5546\u5E02\u5360\u7387 62%\uFF0C\u96C6\u4E2D\u5EA6\u4E0A\u5347\u3002\n- \u8BBF\u8C08B\uFF08SaaS \u521B\u59CB\u4EBA\uFF09\uFF1A\u5BA2\u6237\u6700\u5728\u610F\u7684\u4E0D\u662F\u591A\u8F6E\u5BF9\u8BDD\u80FD\u529B\uFF0C\u800C\u662F\u5DE5\u5355\u9996\u6B21\u89E3\u51B3\u7387\uFF0C\u6211\u4EEC\u505A\u5230 78% \u540E\u7EED\u7EA6\u7387\u660E\u663E\u4E0B\u964D\u3002\n- \u8BBF\u8C08C\uFF08\u96F6\u552E CIO\uFF09\uFF1A\u4E0A\u4E86\u5927\u6A21\u578B\u5BA2\u670D\u540E\uFF0C\u7B80\u5355\u54A8\u8BE2\u81EA\u52A8\u5316\u7387 65%\uFF0C\u4F46\u590D\u6742\u552E\u540E\u4ECD\u9700\u4EBA\u5DE5\uFF0C\u6574\u4F53\u6EE1\u610F\u5EA6\u4ECE 4.1 \u5347\u5230 4.3\u3002",
618
617
  template_id: "researcher",
619
618
  display_name_en: "Industry Research Advisor",
620
- sample_prompt_en: "Help me organize these interview notes and market research materials into a well-structured industry research report with conclusion-first and data-driven insights.\n\nMaterials:\n- Interview A (e-commerce tech director): Our AI customer service daily conversations grew from 8,000 to 32,000 in Q2, but human agents only dropped from 15 to 11 \u2014 ROI below expectations.\n- Research note: China's smart customer service market reached ~4.8B RMB in 2024, +23% YoY; top 3 vendors hold 62% market share, concentration rising.\n- Interview B (SaaS founder): Customers care less about multi-turn dialogue than first-contact resolution rate; once we hit 78%, renewal rates dropped noticeably.\n- Interview C (retail CIO): After adopting LLM customer service, simple inquiry automation hit 65%, but complex after-sales still need humans; overall satisfaction rose from 4.1 to 4.3.",
621
619
  display_name_zh: "\u7814\u7A76\u62A5\u544A",
622
- avatar_url: "https://img.alicdn.com/imgextra/i2/O1CN01Gl4Bgl29fZIzVntMJ_!!6000000008095-2-tps-1728-2368.png"
620
+ avatar_url: "https://img.alicdn.com/imgextra/i2/O1CN01Gl4Bgl29fZIzVntMJ_!!6000000008095-2-tps-1728-2368.png",
621
+ sample_prompt_zh: "\u5E2E\u6211\u628A\u8FD9\u4E9B\u8BBF\u8C08\u8BB0\u5F55\u548C\u5E02\u573A\u8C03\u7814\u7B14\u8BB0\u6574\u7406\u6210\u4E00\u4EFD\u7ED3\u6784\u6E05\u6670\u7684\u884C\u4E1A\u7814\u7A76\u62A5\u544A\uFF0C\u8981\u6C42\u7ED3\u8BBA\u5148\u884C\u3001\u6570\u636E\u9A71\u52A8\u3002",
622
+ sample_prompt_en: "Help me organize these interview notes and market research materials into a well-structured industry research report with conclusion-first and data-driven insights."
623
623
  },
624
624
  tools: [
625
625
  {
@@ -670,12 +670,12 @@ var qoder_default = [
670
670
  },
671
671
  version: 3,
672
672
  metadata: {
673
- sample_prompt_zh: "\u5E2E\u6211\u628A\u8FD9\u7BC7\u7A3F\u5B50\u6DA6\u8272\u4E00\u4E0B\uFF0C\u53BB\u6389AI\u5473\uFF0C\u8BFB\u8D77\u6765\u66F4\u81EA\u7136\u987A\u7545\u3002\n\n\u7A3F\u4EF6\uFF1A\n\u5728\u5F53\u4ECA\u6570\u5B57\u5316\u5FEB\u901F\u53D1\u5C55\u7684\u65F6\u4EE3\uFF0C\u6570\u636E\u9A71\u52A8\u51B3\u7B56\u5DF2\u7ECF\u6210\u4E3A\u4F01\u4E1A\u4E0D\u53EF\u5FFD\u89C6\u7684\u6838\u5FC3\u80FD\u529B\u3002\u503C\u5F97\u6CE8\u610F\u7684\u662F\uFF0C\u6570\u636E\u4E0D\u4EC5\u4EC5\u662F\u6570\u5B57\u7684\u7B80\u5355\u5806\u780C\uFF0C\u66F4\u662F\u6218\u7565\u89C4\u5212\u7684\u91CD\u8981\u57FA\u77F3\u3002\u9996\u5148\uFF0C\u6570\u636E\u5E2E\u52A9\u4F01\u4E1A\u6D1E\u5BDF\u5E02\u573A\u8D8B\u52BF\uFF1B\u5176\u6B21\uFF0C\u6570\u636E\u4F18\u5316\u8FD0\u8425\u6548\u7387\uFF1B\u6700\u540E\uFF0C\u6570\u636E\u63D0\u5347\u5BA2\u6237\u4F53\u9A8C\u3002\u7EFC\u4E0A\u6240\u8FF0\uFF0C\u6570\u636E\u9A71\u52A8\u7684\u610F\u4E49\u6DF1\u8FDC\u800C\u91CD\u5927\uFF0C\u5FC5\u5C06\u5F71\u54CD\u672A\u6765\u7684\u5546\u4E1A\u683C\u5C40\u3002",
674
673
  template_id: "editor",
675
674
  display_name_en: "Article Polish Editor",
676
- sample_prompt_en: "Please polish this draft to remove AI traces and make it read more naturally.\n\nDraft:\nIn today's era of rapid digital development, data-driven decision-making has become a core capability that enterprises cannot ignore. It is worth noting that data is not just a simple stacking of numbers, but an important cornerstone of strategic planning. First, data helps enterprises gain insights into market trends; second, data optimizes operational efficiency; finally, data improves customer experience. In summary, the significance of data-driven is profound and major, and will surely influence the future business landscape.",
677
675
  display_name_zh: "\u6587\u7AE0\u6DA6\u8272",
678
- avatar_url: "https://img.alicdn.com/imgextra/i1/O1CN01yCOy3D1yuidLMO8jU_!!6000000006639-2-tps-1728-2368.png"
676
+ avatar_url: "https://img.alicdn.com/imgextra/i1/O1CN01yCOy3D1yuidLMO8jU_!!6000000006639-2-tps-1728-2368.png",
677
+ sample_prompt_zh: "\u5E2E\u6211\u628A\u8FD9\u7BC7\u7A3F\u5B50\u6DA6\u8272\u4E00\u4E0B\uFF0C\u53BB\u6389AI\u5473\uFF0C\u8BFB\u8D77\u6765\u66F4\u81EA\u7136\u987A\u7545\u3002",
678
+ sample_prompt_en: "Please polish this draft to remove AI traces and make it read more naturally."
679
679
  },
680
680
  tools: [
681
681
  {
@@ -726,12 +726,12 @@ var qoder_default = [
726
726
  },
727
727
  version: 3,
728
728
  metadata: {
729
- sample_prompt_zh: "\u5E2E\u6211\u4EEC\u505A\u4E00\u4E2A\u4EA7\u54C1\u843D\u5730\u9875\uFF0C\u9ED1\u767D\u7F16\u8F91\u98CE\uFF0C\u5E26\u67D4\u5F69\u53D9\u4E8B\u533A\u5757\u3002\n\n\u4EA7\u54C1\uFF1AOpenAgentPack \u2014\u2014 \u5F00\u6E90\u7684 AI Agent \u7BA1\u7406\u5DE5\u5177\uFF0C\u5E2E\u5F00\u53D1\u8005\u4E00\u952E\u53D1\u5E03\u3001\u7248\u672C\u7BA1\u7406\u548C\u8DE8\u4E91\u8FC1\u79FB Agent \u914D\u7F6E\u3002\n\u6838\u5FC3\u5356\u70B9\uFF1A\u914D\u7F6E\u5373\u4EE3\u7801\u53EF\u7248\u672C\u5316\uFF1B\u652F\u6301\u767E\u70BC/Claude/Qoder \u591A\u4E91\uFF1BCLI \u4E00\u952E\u53D1\u5E03\u96F6\u8FD0\u7EF4\u3002\n\u76EE\u6807\u7528\u6237\uFF1AAI \u5E94\u7528\u5F00\u53D1\u8005\u3002",
730
729
  template_id: "designer",
731
730
  display_name_en: "Brand Web Designer",
732
- sample_prompt_en: "Build a product landing page with editorial black-and-white style and soft color story blocks.\n\nProduct: OpenAgentPack \u2014 an open-source AI agent management tool for developers.\nKey features: config-as-code with versioning; multi-cloud (Bailian/Claude/Qoder); one-command CLI deploy with zero ops overhead.\nTarget users: AI application developers.",
733
731
  display_name_zh: "\u7F51\u9875\u8BBE\u8BA1",
734
- avatar_url: "https://img.alicdn.com/imgextra/i1/O1CN018n83JF1E39za6CWbI_!!6000000000295-2-tps-1728-2368.png"
732
+ avatar_url: "https://img.alicdn.com/imgextra/i1/O1CN018n83JF1E39za6CWbI_!!6000000000295-2-tps-1728-2368.png",
733
+ sample_prompt_zh: "\u5E2E\u6211\u4EEC\u505A\u4E00\u4E2A\u4EA7\u54C1\u843D\u5730\u9875\uFF0C\u9ED1\u767D\u7F16\u8F91\u98CE\uFF0C\u5E26\u67D4\u5F69\u53D9\u4E8B\u533A\u5757\u3002",
734
+ sample_prompt_en: "Build a product landing page with editorial black-and-white style and soft color story blocks."
735
735
  },
736
736
  tools: [
737
737
  {
@@ -782,12 +782,12 @@ var qoder_default = [
782
782
  },
783
783
  version: 3,
784
784
  metadata: {
785
- sample_prompt_zh: "\u5E2E\u6211\u628A\u8FD9\u4E9B\u8BBF\u8C08\u8BB0\u5F55\u548C\u5E02\u573A\u8C03\u7814\u7B14\u8BB0\u6574\u7406\u6210\u4E00\u4EFD\u7ED3\u6784\u6E05\u6670\u7684\u884C\u4E1A\u7814\u7A76\u62A5\u544A\uFF0C\u8981\u6C42\u7ED3\u8BBA\u5148\u884C\u3001\u6570\u636E\u9A71\u52A8\u3002\n\n\u7D20\u6750\uFF1A\n- \u8BBF\u8C08A\uFF08\u67D0\u7535\u5546\u6280\u672F\u603B\u76D1\uFF09\uFF1A\u4ECA\u5E74 Q2 \u6211\u4EEC AI \u5BA2\u670D\u65E5\u5747\u4F1A\u8BDD\u91CF\u4ECE 8000 \u6DA8\u5230 3.2 \u4E07\uFF0C\u4F46\u4EBA\u5DE5\u5750\u5E2D\u53EA\u4ECE 15 \u4EBA\u51CF\u5230 11 \u4EBA\uFF0CROI \u4E0D\u5982\u9884\u671F\u3002\n- \u8C03\u7814\u7B14\u8BB0\uFF1A2024 \u5E74\u56FD\u5185\u667A\u80FD\u5BA2\u670D\u5E02\u573A\u89C4\u6A21\u7EA6 48 \u4EBF\uFF0C\u540C\u6BD4 +23%\uFF1B\u5934\u90E8\u4E09\u5BB6\u5382\u5546\u5E02\u5360\u7387 62%\uFF0C\u96C6\u4E2D\u5EA6\u4E0A\u5347\u3002\n- \u8BBF\u8C08B\uFF08SaaS \u521B\u59CB\u4EBA\uFF09\uFF1A\u5BA2\u6237\u6700\u5728\u610F\u7684\u4E0D\u662F\u591A\u8F6E\u5BF9\u8BDD\u80FD\u529B\uFF0C\u800C\u662F\u5DE5\u5355\u9996\u6B21\u89E3\u51B3\u7387\uFF0C\u6211\u4EEC\u505A\u5230 78% \u540E\u7EED\u7EA6\u7387\u660E\u663E\u4E0B\u964D\u3002\n- \u8BBF\u8C08C\uFF08\u96F6\u552E CIO\uFF09\uFF1A\u4E0A\u4E86\u5927\u6A21\u578B\u5BA2\u670D\u540E\uFF0C\u7B80\u5355\u54A8\u8BE2\u81EA\u52A8\u5316\u7387 65%\uFF0C\u4F46\u590D\u6742\u552E\u540E\u4ECD\u9700\u4EBA\u5DE5\uFF0C\u6574\u4F53\u6EE1\u610F\u5EA6\u4ECE 4.1 \u5347\u5230 4.3\u3002",
786
785
  template_id: "researcher",
787
786
  display_name_en: "Industry Research Advisor",
788
- sample_prompt_en: "Help me organize these interview notes and market research materials into a well-structured industry research report with conclusion-first and data-driven insights.\n\nMaterials:\n- Interview A (e-commerce tech director): Our AI customer service daily conversations grew from 8,000 to 32,000 in Q2, but human agents only dropped from 15 to 11 \u2014 ROI below expectations.\n- Research note: China's smart customer service market reached ~4.8B RMB in 2024, +23% YoY; top 3 vendors hold 62% market share, concentration rising.\n- Interview B (SaaS founder): Customers care less about multi-turn dialogue than first-contact resolution rate; once we hit 78%, renewal rates dropped noticeably.\n- Interview C (retail CIO): After adopting LLM customer service, simple inquiry automation hit 65%, but complex after-sales still need humans; overall satisfaction rose from 4.1 to 4.3.",
789
787
  display_name_zh: "\u7814\u7A76\u62A5\u544A",
790
- avatar_url: "https://img.alicdn.com/imgextra/i2/O1CN01Gl4Bgl29fZIzVntMJ_!!6000000008095-2-tps-1728-2368.png"
788
+ avatar_url: "https://img.alicdn.com/imgextra/i2/O1CN01Gl4Bgl29fZIzVntMJ_!!6000000008095-2-tps-1728-2368.png",
789
+ sample_prompt_zh: "\u5E2E\u6211\u628A\u8FD9\u4E9B\u8BBF\u8C08\u8BB0\u5F55\u548C\u5E02\u573A\u8C03\u7814\u7B14\u8BB0\u6574\u7406\u6210\u4E00\u4EFD\u7ED3\u6784\u6E05\u6670\u7684\u884C\u4E1A\u7814\u7A76\u62A5\u544A\uFF0C\u8981\u6C42\u7ED3\u8BBA\u5148\u884C\u3001\u6570\u636E\u9A71\u52A8\u3002",
790
+ sample_prompt_en: "Help me organize these interview notes and market research materials into a well-structured industry research report with conclusion-first and data-driven insights."
791
791
  },
792
792
  tools: [
793
793
  {
@@ -838,12 +838,12 @@ var qoder_default = [
838
838
  },
839
839
  version: 3,
840
840
  metadata: {
841
- sample_prompt_zh: "\u751F\u6210\u4E00\u5F20\u8D5B\u535A\u670B\u514B\u732B\u54AA\u6D77\u62A5",
842
841
  template_id: "art-designer",
843
842
  display_name_en: "Art Creator",
844
- sample_prompt_en: "Generate a cyberpunk cat poster",
845
843
  display_name_zh: "\u827A\u672F\u521B\u4F5C",
846
- avatar_url: "https://img.alicdn.com/imgextra/i1/O1CN01TNaIjz1xz0jHEADar_!!6000000006513-2-tps-1728-2368.png"
844
+ avatar_url: "https://img.alicdn.com/imgextra/i1/O1CN01TNaIjz1xz0jHEADar_!!6000000006513-2-tps-1728-2368.png",
845
+ sample_prompt_zh: "\u751F\u6210\u4E00\u5F20\u8D5B\u535A\u670B\u514B\u732B\u54AA\u6D77\u62A5",
846
+ sample_prompt_en: "Generate a cyberpunk cat poster"
847
847
  },
848
848
  tools: [
849
849
  {
@@ -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,8 @@ 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 webRoot = join3(dirname4(fileURLToPath(import.meta.url)), "../../web");
3845
+ var indexHtml = injectPlaygroundRuntimeMarker(readFileSync(join3(webRoot, "index.html"), "utf8"));
3574
3846
  function injectPlaygroundRuntimeMarker(html) {
3575
3847
  if (html.includes('name="agents-runtime"')) return html;
3576
3848
  return html.replace("<head>", '<head>\n <meta name="agents-runtime" content="playground" />');