@auto-ai/agent 2.1.160 → 2.1.165

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.
Files changed (135) hide show
  1. package/dist/404/index.html +1 -1
  2. package/dist/404.html +1 -1
  3. package/dist/_next/static/chunks/06b383e8ee499be7.js +1 -0
  4. package/dist/_next/static/chunks/0ce6504fc10ce408.js +1 -0
  5. package/dist/_next/static/chunks/0fa3b1f693a23b15.js +1 -0
  6. package/dist/_next/static/chunks/{b99d7c931432a00e.js → 106955e3cc6a6843.js} +1 -1
  7. package/dist/_next/static/chunks/1c9321874fea5f0d.js +1 -0
  8. package/dist/_next/static/chunks/1cb7453376657ffb.css +1 -0
  9. package/dist/_next/static/chunks/2014b101125849fd.js +1 -0
  10. package/dist/_next/static/chunks/{c5af60c028e52cf8.js → 270d7571d2eea071.js} +1 -1
  11. package/dist/_next/static/chunks/2df3e464b6247e75.js +1 -0
  12. package/dist/_next/static/chunks/32b9bdd82a961878.js +1 -0
  13. package/dist/_next/static/chunks/371449b804c846f7.js +1 -0
  14. package/dist/_next/static/chunks/38b035f49fa68570.js +1 -0
  15. package/dist/_next/static/chunks/{9aea16dd9db3a8bd.js → 3dcb1dcf23e7ab9c.js} +1 -1
  16. package/dist/_next/static/chunks/3ddf56f78e79b076.js +1 -0
  17. package/dist/_next/static/chunks/46b326fcd7b2e8ab.js +1 -0
  18. package/dist/_next/static/chunks/489266ff75dbd7fd.js +1 -0
  19. package/dist/_next/static/chunks/4b1cbde821e7ad65.js +1 -0
  20. package/dist/_next/static/chunks/{59baceab6698f9f7.js → 4d129d4e15c8c424.js} +1 -1
  21. package/dist/_next/static/chunks/{91adb7bdb9870c6a.js → 522518d740397639.js} +1 -1
  22. package/dist/_next/static/chunks/5853f68e75f5f7ab.js +1 -0
  23. package/dist/_next/static/chunks/5bad5163b6e015f5.js +1 -0
  24. package/dist/_next/static/chunks/{6c49d19eb7e88b9c.js → 5d79b7f202080232.js} +1 -1
  25. package/dist/_next/static/chunks/5f6769a92729c6c3.js +1 -0
  26. package/dist/_next/static/chunks/{cbb200599eb3e6d0.js → 63ec034afca4b5d6.js} +1 -1
  27. package/dist/_next/static/chunks/65efa67b7efe0f72.js +1 -0
  28. package/dist/_next/static/chunks/6e61f670898cb297.css +1 -0
  29. package/dist/_next/static/chunks/6f4460bd0b8a57af.js +1 -0
  30. package/dist/_next/static/chunks/73930967cfa80238.js +1 -0
  31. package/dist/_next/static/chunks/73e518d4b3543b8f.js +1 -0
  32. package/dist/_next/static/chunks/799f92e88bfeb469.js +1 -0
  33. package/dist/_next/static/chunks/{fa361913d47fdc14.css → 7bdf0e5b41aeb209.css} +0 -3
  34. package/dist/_next/static/chunks/7f52fbd725b13904.js +1 -0
  35. package/dist/_next/static/chunks/{314d4f64173e0e4f.js → 87e12ecbe9521f9b.js} +1 -1
  36. package/dist/_next/static/chunks/{93102efda2769ba5.js → 8f5be275907dd98c.js} +1 -1
  37. package/dist/_next/static/chunks/{83e39d76d6f07968.js → 94029062f236cadc.js} +1 -1
  38. package/dist/_next/static/chunks/{76a71d344cc15a9f.js → 9ccf7a8bca1730bf.js} +1 -1
  39. package/dist/_next/static/chunks/a6737fc58619eae5.js +1 -0
  40. package/dist/_next/static/chunks/a7d1ae46740fe1db.js +1 -0
  41. package/dist/_next/static/chunks/{b929fc868619ccb9.js → b30f1da4e57f459a.js} +1 -1
  42. package/dist/_next/static/chunks/b896987ddf6315c9.js +1 -0
  43. package/dist/_next/static/chunks/bbcf9daa108b22fb.js +1 -0
  44. package/dist/_next/static/chunks/bf2c1c402dbcccdf.js +1 -0
  45. package/dist/_next/static/chunks/bfc6ee42cec583d5.js +1 -0
  46. package/dist/_next/static/chunks/c79da9dd69089e4f.js +1 -0
  47. package/dist/_next/static/chunks/c933951b3113492f.js +1 -0
  48. package/dist/_next/static/chunks/{aadf128359998a2d.js → cd5eec7d305aa041.js} +1 -1
  49. package/dist/_next/static/chunks/d2d432a9facf4278.js +1 -0
  50. package/dist/_next/static/chunks/d4fd1b2f761be57f.css +7 -0
  51. package/dist/_next/static/chunks/d5e3d29f769997cc.js +1 -0
  52. package/dist/_next/static/chunks/da89e354de542422.js +1 -0
  53. package/dist/_next/static/chunks/e7bcbeb465fa49cf.js +1 -0
  54. package/dist/_next/static/chunks/ecaea9e9321ec538.js +1 -0
  55. package/dist/_next/static/chunks/{turbopack-030a42d60560a927.js → turbopack-63952675b1d69124.js} +1 -1
  56. package/dist/_next/static/media/data-loading.be8d921a.png +0 -0
  57. package/dist/_next/static/media/no-data.48c973b9.png +0 -0
  58. package/dist/agent-office.html +155 -226
  59. package/dist/index.html +2 -2
  60. package/dist/index.txt +21 -21
  61. package/dist/manage/about/index.html +2 -2
  62. package/dist/manage/about/index.txt +23 -22
  63. package/dist/manage/env/index.html +2 -2
  64. package/dist/manage/env/index.txt +25 -24
  65. package/dist/manage/general/index.html +2 -2
  66. package/dist/manage/general/index.txt +23 -22
  67. package/dist/manage/index.html +2 -2
  68. package/dist/manage/index.txt +20 -19
  69. package/dist/manage/mcp/index.html +2 -2
  70. package/dist/manage/mcp/index.txt +22 -21
  71. package/dist/manage/permissions/index.html +2 -2
  72. package/dist/manage/permissions/index.txt +23 -22
  73. package/dist/manage/skills/index.html +2 -2
  74. package/dist/manage/skills/index.txt +22 -21
  75. package/dist/manage/task/index.html +2 -2
  76. package/dist/manage/task/index.txt +22 -21
  77. package/dist/manage/teams/index.html +2 -2
  78. package/dist/manage/teams/index.txt +22 -21
  79. package/dist/manage/tools/index.html +2 -2
  80. package/dist/manage/tools/index.txt +22 -21
  81. package/dist/ws-test.html +9740 -77
  82. package/package.json +6 -6
  83. package/skills-runtime/deploy-test-env/SKILL.md +1 -1
  84. package/skills-runtime/dev-task-flow/SKILL.md +4 -4
  85. package/skills-runtime/self-test-flow/SKILL.md +2 -2
  86. package/skills-runtime/workflow-hub/SKILL.md +1 -1
  87. package/.env.example +0 -7
  88. package/dist/_next/static/chunks/0bb72b120dc81a85.js +0 -1
  89. package/dist/_next/static/chunks/0eeaf05fe8e92617.js +0 -1
  90. package/dist/_next/static/chunks/14114800ef3e692e.js +0 -1
  91. package/dist/_next/static/chunks/1d51ed7830318474.js +0 -1
  92. package/dist/_next/static/chunks/1ffb3acecdbda566.js +0 -1
  93. package/dist/_next/static/chunks/22d483db0dece6fa.js +0 -1
  94. package/dist/_next/static/chunks/289e2d5005a099d3.js +0 -1
  95. package/dist/_next/static/chunks/292d0b687a419387.js +0 -1
  96. package/dist/_next/static/chunks/2bbdc3c6bbaac93f.js +0 -1
  97. package/dist/_next/static/chunks/376aaeae24164c1a.js +0 -1
  98. package/dist/_next/static/chunks/39fed6244d398269.js +0 -1
  99. package/dist/_next/static/chunks/48bc54794d1c3561.js +0 -1
  100. package/dist/_next/static/chunks/5534f66638e5a2e8.js +0 -1
  101. package/dist/_next/static/chunks/5817c66b26ce8538.css +0 -1
  102. package/dist/_next/static/chunks/5d5fe2c255f43fec.js +0 -1
  103. package/dist/_next/static/chunks/61676890ad8fe194.js +0 -1
  104. package/dist/_next/static/chunks/67bb401596b3c723.js +0 -1
  105. package/dist/_next/static/chunks/7de1ab3b78f48430.js +0 -1
  106. package/dist/_next/static/chunks/950875832bab2141.js +0 -1
  107. package/dist/_next/static/chunks/98a41a7efbe71682.js +0 -1
  108. package/dist/_next/static/chunks/9e2cffe3c17fd0e7.js +0 -1
  109. package/dist/_next/static/chunks/a79654d570ac30eb.js +0 -1
  110. package/dist/_next/static/chunks/a8e06ee8243e3389.js +0 -1
  111. package/dist/_next/static/chunks/ad419be63e291696.js +0 -1
  112. package/dist/_next/static/chunks/bcefc2c679f3ada6.js +0 -1
  113. package/dist/_next/static/chunks/c1cfc60c17638a73.js +0 -1
  114. package/dist/_next/static/chunks/c26f95ab8ad3dcf0.js +0 -1
  115. package/dist/_next/static/chunks/cb4dec27441d471a.js +0 -1
  116. package/dist/_next/static/chunks/d3af8988bf25a7de.js +0 -1
  117. package/dist/_next/static/chunks/d3ccfb3dcef5974f.js +0 -1
  118. package/dist/_next/static/chunks/d504c4e2ebc5319a.js +0 -1
  119. package/dist/_next/static/chunks/e2833182a81cd867.js +0 -1
  120. package/dist/_next/static/chunks/e520aa06a5014225.js +0 -1
  121. package/dist/_next/static/chunks/e7bd145455a541af.css +0 -4
  122. package/dist/_next/static/chunks/eae304701469d3a8.js +0 -1
  123. package/dist/_next/static/chunks/eba0719a42605421.js +0 -1
  124. package/dist/_next/static/chunks/f2a87f0c7c1ec9f4.js +0 -1
  125. package/dist/_next/static/chunks/faaf4e0c2d5cffda.js +0 -1
  126. package/dist/_next/static/chunks/fc4be3bcf72559a0.js +0 -1
  127. package/dist/manage/add-account/basic/index.html +0 -2
  128. package/dist/manage/add-account/basic/index.txt +0 -38
  129. package/dist/manage/add-account/index.html +0 -2
  130. package/dist/manage/add-account/index.txt +0 -36
  131. package/dist/ws-test.css +0 -2880
  132. package/dist/ws-test.js +0 -7442
  133. /package/dist/_next/static/{WYrSrJ9dye9qgdGCYVOpA → vwMrLQGLViMpdiC9eEa7U}/_buildManifest.js +0 -0
  134. /package/dist/_next/static/{WYrSrJ9dye9qgdGCYVOpA → vwMrLQGLViMpdiC9eEa7U}/_clientMiddlewareManifest.json +0 -0
  135. /package/dist/_next/static/{WYrSrJ9dye9qgdGCYVOpA → vwMrLQGLViMpdiC9eEa7U}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,{otherChunks:["static/chunks/76a71d344cc15a9f.js","static/chunks/91adb7bdb9870c6a.js","static/chunks/40268f8e3ff0314e.js","static/chunks/32b4d63e10d31351.js","static/chunks/66b30159915524db.js"],runtimeModuleIds:[94553]}]),(()=>{let e;if(!Array.isArray(globalThis.TURBOPACK))return;let t="/app/_next/",r=new WeakMap;function n(e,t){this.m=e,this.e=t}let o=n.prototype,i=Object.prototype.hasOwnProperty,l="undefined"!=typeof Symbol&&Symbol.toStringTag;function s(e,t,r){i.call(e,t)||Object.defineProperty(e,t,r)}function u(e,t){let r=e[t];return r||(r=a(t),e[t]=r),r}function a(e){return{exports:{},error:void 0,id:e,namespaceObject:void 0}}function c(e,t){s(e,"__esModule",{value:!0}),l&&s(e,l,{value:"Module"});let r=0;for(;r<t.length;){let n=t[r++],o=t[r++];"function"==typeof t[r]?s(e,n,{get:o,set:t[r++],enumerable:!0}):s(e,n,{get:o,enumerable:!0})}Object.seal(e)}o.s=function(e,t){let r,n;null!=t?n=(r=u(this.c,t)).exports:(r=this.m,n=this.e),r.namespaceObject=n,c(n,e)},o.j=function(e,t){var n,o;let l,s,a;null!=t?s=(l=u(this.c,t)).exports:(l=this.m,s=this.e);let c=(n=l,o=s,(a=r.get(n))||(r.set(n,a=[]),n.exports=n.namespaceObject=new Proxy(o,{get(e,t){if(i.call(e,t)||"default"===t||"__esModule"===t)return Reflect.get(e,t);for(let e of a){let r=Reflect.get(e,t);if(void 0!==r)return r}},ownKeys(e){let t=Reflect.ownKeys(e);for(let e of a)for(let r of Reflect.ownKeys(e))"default"===r||t.includes(r)||t.push(r);return t}})),a);"object"==typeof e&&null!==e&&c.push(e)},o.v=function(e,t){(null!=t?u(this.c,t):this.m).exports=e},o.n=function(e,t){let r;(r=null!=t?u(this.c,t):this.m).exports=r.namespaceObject=e};let f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,p=[null,f({}),f([]),f(f)];function h(e,t,r){let n=[],o=-1;for(let t=e;("object"==typeof t||"function"==typeof t)&&!p.includes(t);t=f(t))for(let r of Object.getOwnPropertyNames(t))n.push(r,function(e,t){return()=>e[t]}(e,r)),-1===o&&"default"===r&&(o=n.length-1);return r&&o>=0||(o>=0?n[o]=()=>e:n.push("default",()=>e)),c(t,n),t}function d(){let e,t;return{promise:new Promise((r,n)=>{t=n,e=r}),resolve:e,reject:t}}o.i=function(e){let t=M(e,this.m);if(t.namespaceObject)return t.namespaceObject;let r=t.exports;return t.namespaceObject=h(r,"function"==typeof r?function(...e){return r.apply(this,e)}:Object.create(null),r&&r.__esModule)},o.A=function(e){return this.r(e)(this.i.bind(this))},o.t="function"==typeof require?require:function(){throw Error("Unexpected use of runtime require")},o.r=function(e){return M(e,this.m).exports},o.f=function(e){function t(t){if(i.call(e,t))return e[t].module();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r}return t.keys=()=>Object.keys(e),t.resolve=t=>{if(i.call(e,t))return e[t].id();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r},t.import=async e=>await t(e),t};let m=Symbol("turbopack queues"),b=Symbol("turbopack exports"),y=Symbol("turbopack error");function O(e){e&&1!==e.status&&(e.status=1,e.forEach(e=>e.queueCount--),e.forEach(e=>e.queueCount--?e.queueCount++:e()))}o.a=function(e,t){let r=this.m,n=t?Object.assign([],{status:-1}):void 0,o=new Set,{resolve:i,reject:l,promise:s}=d(),u=Object.assign(s,{[b]:r.exports,[m]:e=>{n&&e(n),o.forEach(e),u.catch(()=>{})}}),a={get:()=>u,set(e){e!==u&&(u[b]=e)}};Object.defineProperty(r,"exports",a),Object.defineProperty(r,"namespaceObject",a),e(function(e){let t=e.map(e=>{if(null!==e&&"object"==typeof e){if(m in e)return e;if(null!=e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then){let t=Object.assign([],{status:0}),r={[b]:{},[m]:e=>e(t)};return e.then(e=>{r[b]=e,O(t)},e=>{r[y]=e,O(t)}),r}}return{[b]:e,[m]:()=>{}}}),r=()=>t.map(e=>{if(e[y])throw e[y];return e[b]}),{promise:i,resolve:l}=d(),s=Object.assign(()=>l(r),{queueCount:0});function u(e){e!==n&&!o.has(e)&&(o.add(e),e&&0===e.status&&(s.queueCount++,e.push(s)))}return t.map(e=>e[m](u)),s.queueCount?i:r()},function(e){e?l(u[y]=e):i(u[b]),O(n)}),n&&-1===n.status&&(n.status=0)};let g=function(e){let t=new URL(e,"x:/"),r={};for(let e in t)r[e]=t[e];for(let t in r.href=e,r.pathname=e.replace(/[?#].*/,""),r.origin=r.protocol="",r.toString=r.toJSON=(...t)=>e,r)Object.defineProperty(this,t,{enumerable:!0,configurable:!0,value:r[t]})};function w(e,t){throw Error(`Invariant: ${t(e)}`)}g.prototype=URL.prototype,o.U=g,o.z=function(e){throw Error("dynamic usage of require is not supported")},o.g=globalThis;let j=n.prototype;var R=function(e){return e[e.Runtime=0]="Runtime",e[e.Parent=1]="Parent",e[e.Update=2]="Update",e}(R||{});let C=new Map;o.M=C;let _=new Map,U=new Map;async function k(e,t,r){let n;if("string"==typeof r)return $(e,t,T(r));let o=r.included||[],i=o.map(e=>!!C.has(e)||_.get(e));if(i.length>0&&i.every(e=>e))return void await Promise.all(i);let l=r.moduleChunks||[],s=l.map(e=>U.get(e)).filter(e=>e);if(s.length>0){if(s.length===l.length)return void await Promise.all(s);let r=new Set;for(let e of l)U.has(e)||r.add(e);for(let n of r){let r=$(e,t,T(n));U.set(n,r),s.push(r)}n=Promise.all(s)}else{for(let o of(n=$(e,t,T(r.path)),l))U.has(o)||U.set(o,n)}for(let e of o)_.has(e)||_.set(e,n);await n}j.l=function(e){return k(1,this.m.id,e)};let v=Promise.resolve(void 0),P=new WeakMap;function $(t,r,n){let o=e.loadChunkCached(t,n),i=P.get(o);if(void 0===i){let e=P.set.bind(P,o,v);i=o.then(e).catch(e=>{let o;switch(t){case 0:o=`as a runtime dependency of chunk ${r}`;break;case 1:o=`from module ${r}`;break;case 2:o="from an HMR update";break;default:w(t,e=>`Unknown source type: ${e}`)}throw Error(`Failed to load chunk ${n} ${o}${e?`: ${e}`:""}`,e?{cause:e}:void 0)}),P.set(o,i)}return i}function T(e){return`${t}${e.split("/").map(e=>encodeURIComponent(e)).join("/")}`}j.L=function(e){return $(1,this.m.id,e)},j.R=function(e){let t=this.r(e);return t?.default??t},j.P=function(e){return`/ROOT/${e??""}`},j.b=function(e){let t=new Blob([`self.TURBOPACK_WORKER_LOCATION = ${JSON.stringify(location.origin)};
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,{otherChunks:["static/chunks/9ccf7a8bca1730bf.js","static/chunks/522518d740397639.js","static/chunks/40268f8e3ff0314e.js","static/chunks/32b4d63e10d31351.js","static/chunks/66b30159915524db.js"],runtimeModuleIds:[94553]}]),(()=>{let e;if(!Array.isArray(globalThis.TURBOPACK))return;let t="/app/_next/",r=new WeakMap;function n(e,t){this.m=e,this.e=t}let o=n.prototype,i=Object.prototype.hasOwnProperty,l="undefined"!=typeof Symbol&&Symbol.toStringTag;function s(e,t,r){i.call(e,t)||Object.defineProperty(e,t,r)}function u(e,t){let r=e[t];return r||(r=a(t),e[t]=r),r}function a(e){return{exports:{},error:void 0,id:e,namespaceObject:void 0}}function c(e,t){s(e,"__esModule",{value:!0}),l&&s(e,l,{value:"Module"});let r=0;for(;r<t.length;){let n=t[r++],o=t[r++];"function"==typeof t[r]?s(e,n,{get:o,set:t[r++],enumerable:!0}):s(e,n,{get:o,enumerable:!0})}Object.seal(e)}o.s=function(e,t){let r,n;null!=t?n=(r=u(this.c,t)).exports:(r=this.m,n=this.e),r.namespaceObject=n,c(n,e)},o.j=function(e,t){var n,o;let l,s,a;null!=t?s=(l=u(this.c,t)).exports:(l=this.m,s=this.e);let c=(n=l,o=s,(a=r.get(n))||(r.set(n,a=[]),n.exports=n.namespaceObject=new Proxy(o,{get(e,t){if(i.call(e,t)||"default"===t||"__esModule"===t)return Reflect.get(e,t);for(let e of a){let r=Reflect.get(e,t);if(void 0!==r)return r}},ownKeys(e){let t=Reflect.ownKeys(e);for(let e of a)for(let r of Reflect.ownKeys(e))"default"===r||t.includes(r)||t.push(r);return t}})),a);"object"==typeof e&&null!==e&&c.push(e)},o.v=function(e,t){(null!=t?u(this.c,t):this.m).exports=e},o.n=function(e,t){let r;(r=null!=t?u(this.c,t):this.m).exports=r.namespaceObject=e};let f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,p=[null,f({}),f([]),f(f)];function h(e,t,r){let n=[],o=-1;for(let t=e;("object"==typeof t||"function"==typeof t)&&!p.includes(t);t=f(t))for(let r of Object.getOwnPropertyNames(t))n.push(r,function(e,t){return()=>e[t]}(e,r)),-1===o&&"default"===r&&(o=n.length-1);return r&&o>=0||(o>=0?n[o]=()=>e:n.push("default",()=>e)),c(t,n),t}function d(){let e,t;return{promise:new Promise((r,n)=>{t=n,e=r}),resolve:e,reject:t}}o.i=function(e){let t=M(e,this.m);if(t.namespaceObject)return t.namespaceObject;let r=t.exports;return t.namespaceObject=h(r,"function"==typeof r?function(...e){return r.apply(this,e)}:Object.create(null),r&&r.__esModule)},o.A=function(e){return this.r(e)(this.i.bind(this))},o.t="function"==typeof require?require:function(){throw Error("Unexpected use of runtime require")},o.r=function(e){return M(e,this.m).exports},o.f=function(e){function t(t){if(i.call(e,t))return e[t].module();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r}return t.keys=()=>Object.keys(e),t.resolve=t=>{if(i.call(e,t))return e[t].id();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r},t.import=async e=>await t(e),t};let m=Symbol("turbopack queues"),b=Symbol("turbopack exports"),y=Symbol("turbopack error");function O(e){e&&1!==e.status&&(e.status=1,e.forEach(e=>e.queueCount--),e.forEach(e=>e.queueCount--?e.queueCount++:e()))}o.a=function(e,t){let r=this.m,n=t?Object.assign([],{status:-1}):void 0,o=new Set,{resolve:i,reject:l,promise:s}=d(),u=Object.assign(s,{[b]:r.exports,[m]:e=>{n&&e(n),o.forEach(e),u.catch(()=>{})}}),a={get:()=>u,set(e){e!==u&&(u[b]=e)}};Object.defineProperty(r,"exports",a),Object.defineProperty(r,"namespaceObject",a),e(function(e){let t=e.map(e=>{if(null!==e&&"object"==typeof e){if(m in e)return e;if(null!=e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then){let t=Object.assign([],{status:0}),r={[b]:{},[m]:e=>e(t)};return e.then(e=>{r[b]=e,O(t)},e=>{r[y]=e,O(t)}),r}}return{[b]:e,[m]:()=>{}}}),r=()=>t.map(e=>{if(e[y])throw e[y];return e[b]}),{promise:i,resolve:l}=d(),s=Object.assign(()=>l(r),{queueCount:0});function u(e){e!==n&&!o.has(e)&&(o.add(e),e&&0===e.status&&(s.queueCount++,e.push(s)))}return t.map(e=>e[m](u)),s.queueCount?i:r()},function(e){e?l(u[y]=e):i(u[b]),O(n)}),n&&-1===n.status&&(n.status=0)};let g=function(e){let t=new URL(e,"x:/"),r={};for(let e in t)r[e]=t[e];for(let t in r.href=e,r.pathname=e.replace(/[?#].*/,""),r.origin=r.protocol="",r.toString=r.toJSON=(...t)=>e,r)Object.defineProperty(this,t,{enumerable:!0,configurable:!0,value:r[t]})};function w(e,t){throw Error(`Invariant: ${t(e)}`)}g.prototype=URL.prototype,o.U=g,o.z=function(e){throw Error("dynamic usage of require is not supported")},o.g=globalThis;let j=n.prototype;var R=function(e){return e[e.Runtime=0]="Runtime",e[e.Parent=1]="Parent",e[e.Update=2]="Update",e}(R||{});let C=new Map;o.M=C;let _=new Map,U=new Map;async function k(e,t,r){let n;if("string"==typeof r)return $(e,t,T(r));let o=r.included||[],i=o.map(e=>!!C.has(e)||_.get(e));if(i.length>0&&i.every(e=>e))return void await Promise.all(i);let l=r.moduleChunks||[],s=l.map(e=>U.get(e)).filter(e=>e);if(s.length>0){if(s.length===l.length)return void await Promise.all(s);let r=new Set;for(let e of l)U.has(e)||r.add(e);for(let n of r){let r=$(e,t,T(n));U.set(n,r),s.push(r)}n=Promise.all(s)}else{for(let o of(n=$(e,t,T(r.path)),l))U.has(o)||U.set(o,n)}for(let e of o)_.has(e)||_.set(e,n);await n}j.l=function(e){return k(1,this.m.id,e)};let v=Promise.resolve(void 0),P=new WeakMap;function $(t,r,n){let o=e.loadChunkCached(t,n),i=P.get(o);if(void 0===i){let e=P.set.bind(P,o,v);i=o.then(e).catch(e=>{let o;switch(t){case 0:o=`as a runtime dependency of chunk ${r}`;break;case 1:o=`from module ${r}`;break;case 2:o="from an HMR update";break;default:w(t,e=>`Unknown source type: ${e}`)}throw Error(`Failed to load chunk ${n} ${o}${e?`: ${e}`:""}`,e?{cause:e}:void 0)}),P.set(o,i)}return i}function T(e){return`${t}${e.split("/").map(e=>encodeURIComponent(e)).join("/")}`}j.L=function(e){return $(1,this.m.id,e)},j.R=function(e){let t=this.r(e);return t?.default??t},j.P=function(e){return`/ROOT/${e??""}`},j.b=function(e){let t=new Blob([`self.TURBOPACK_WORKER_LOCATION = ${JSON.stringify(location.origin)};
2
2
  self.TURBOPACK_NEXT_CHUNK_URLS = ${JSON.stringify(e.reverse().map(T),null,2)};
3
3
  importScripts(...self.TURBOPACK_NEXT_CHUNK_URLS.map(c => self.TURBOPACK_WORKER_LOCATION + c).reverse());`],{type:"text/javascript"});return URL.createObjectURL(t)};let A=/\.js(?:\?[^#]*)?(?:#.*)?$/,S=/\.css(?:\?[^#]*)?(?:#.*)?$/;function E(e){return S.test(e)}o.w=function(t,r,n){return e.loadWebAssembly(1,this.m.id,t,r,n)},o.u=function(t,r){return e.loadWebAssemblyModule(1,this.m.id,t,r)};let K={};o.c=K;let M=(e,t)=>{let r=K[e];if(r){if(r.error)throw r.error;return r}return x(e,R.Parent,t.id)};function x(e,t,r){let o=C.get(e);"function"!=typeof o&&function(e,t,r){let n;switch(t){case 0:n=`as a runtime entry of chunk ${r}`;break;case 1:n=`because it was required from module ${r}`;break;case 2:n="because of an HMR update";break;default:w(t,e=>`Unknown source type: ${e}`)}throw Error(`Module ${e} was instantiated ${n}, but the module factory is not available. It might have been deleted in an HMR update.`)}(e,t,r);let i=a(e),l=i.exports;K[e]=i;let s=new n(i,l);try{o(s,i,l)}catch(e){throw i.error=e,e}return i.namespaceObject&&i.exports!==i.namespaceObject&&h(i.exports,i.namespaceObject),i}function N(r){let n,o=function(e){if("string"==typeof e)return e;let r=decodeURIComponent(("undefined"!=typeof TURBOPACK_NEXT_CHUNK_URLS?TURBOPACK_NEXT_CHUNK_URLS.pop():e.getAttribute("src")).replace(/[?#].*$/,""));return r.startsWith(t)?r.slice(t.length):r}(r[0]);return 2===r.length?n=r[1]:(n=void 0,!function(e,t,r,n){let o=1;for(;o<e.length;){let t=e[o],n=o+1;for(;n<e.length&&"function"!=typeof e[n];)n++;if(n===e.length)throw Error("malformed chunk format, expected a factory function");if(!r.has(t)){let i=e[n];for(Object.defineProperty(i,"name",{value:"__TURBOPACK__module__evaluation__"});o<n;o++)t=e[o],r.set(t,i)}o=n+1}}(r,0,C)),e.registerChunk(o,n)}let L=new Map;(()=>{function t(e){let t=L.get(e);if(!t){let r,n;t={resolved:!1,loadingStarted:!1,promise:new Promise((e,t)=>{r=e,n=t}),resolve:()=>{t.resolved=!0,r()},reject:n},L.set(e,t)}return t}e={async registerChunk(e,r){if(t(T(e)).resolve(),null!=r){for(let e of r.otherChunks)t(T("string"==typeof e?e:e.path));if(await Promise.all(r.otherChunks.map(t=>k(0,e,t))),r.runtimeModuleIds.length>0)for(let t of r.runtimeModuleIds)!function(e,t){let r=K[t];if(r){if(r.error)throw r.error;return}x(t,R.Runtime,e)}(e,t)}},loadChunkCached:(e,r)=>(function(e,r){let n=t(r);if(n.loadingStarted)return n.promise;if(e===R.Runtime)return n.loadingStarted=!0,E(r)&&n.resolve(),n.promise;if("function"==typeof importScripts)if(E(r));else if(A.test(r))self.TURBOPACK_NEXT_CHUNK_URLS.push(r),importScripts(TURBOPACK_WORKER_LOCATION+r);else throw Error(`can't infer type of chunk from URL ${r} in worker`);else{let e=decodeURI(r);if(E(r))if(document.querySelectorAll(`link[rel=stylesheet][href="${r}"],link[rel=stylesheet][href^="${r}?"],link[rel=stylesheet][href="${e}"],link[rel=stylesheet][href^="${e}?"]`).length>0)n.resolve();else{let e=document.createElement("link");e.rel="stylesheet",e.href=r,e.onerror=()=>{n.reject()},e.onload=()=>{n.resolve()},document.head.appendChild(e)}else if(A.test(r)){let t=document.querySelectorAll(`script[src="${r}"],script[src^="${r}?"],script[src="${e}"],script[src^="${e}?"]`);if(t.length>0)for(let e of Array.from(t))e.addEventListener("error",()=>{n.reject()});else{let e=document.createElement("script");e.src=r,e.onerror=()=>{n.reject()},document.head.appendChild(e)}}else throw Error(`can't infer type of chunk from URL ${r}`)}return n.loadingStarted=!0,n.promise})(e,r),async loadWebAssembly(e,t,r,n,o){let i=fetch(T(r)),{instance:l}=await WebAssembly.instantiateStreaming(i,o);return l.exports},async loadWebAssemblyModule(e,t,r,n){let o=fetch(T(r));return await WebAssembly.compileStreaming(o)}}})();let B=globalThis.TURBOPACK;globalThis.TURBOPACK={push:N},B.forEach(N)})();
@@ -3,157 +3,136 @@
3
3
  <head>
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1" />
6
- <title>办公室</title>
7
- <link rel="stylesheet" href="/ws-test.css" />
6
+ <title>Agent 列表</title>
8
7
  <style>
8
+ :root {
9
+ color-scheme: light;
10
+ --ds-page: #f2f2f7;
11
+ --ds-bg: #ffffff;
12
+ --ds-border: #e5e5ea;
13
+ --ds-text: #1c1c1e;
14
+ --ds-muted: #8e8e93;
15
+ --ds-accent: #0a84ff;
16
+ --ds-accent-hover: #0070e0;
17
+ --ds-danger: #ff3b30;
18
+ }
19
+ * { box-sizing: border-box; }
20
+ html, body { height: 100%; margin: 0; }
9
21
  body {
22
+ font-family: 'PingFang SC', 'Microsoft YaHei', ui-sans-serif, system-ui, sans-serif;
23
+ background: var(--ds-page);
24
+ color: var(--ds-text);
10
25
  overflow: hidden;
11
- -webkit-font-smoothing: antialiased;
12
26
  }
13
- .office-app {
27
+ #officeApp {
14
28
  display: flex;
15
29
  flex-direction: column;
16
30
  width: 100%;
17
31
  height: 100%;
18
- background: var(--ds-bg);
19
32
  }
20
- .office-header {
33
+ .office-topbar {
21
34
  flex-shrink: 0;
22
35
  display: flex;
23
36
  align-items: center;
24
37
  justify-content: space-between;
25
- gap: 16px;
26
- min-height: 52px;
27
- padding: 0 20px;
28
- border-bottom: 1px solid var(--ds-border);
38
+ padding: 14px 20px;
29
39
  background: var(--ds-bg);
40
+ border-bottom: 1px solid var(--ds-border);
30
41
  }
31
- .office-header-main {
32
- min-width: 0;
33
- flex: 1;
34
- }
35
- .office-header-title {
42
+ .office-brand h1 {
36
43
  margin: 0;
37
- font-size: 16px;
44
+ font-size: 1.15rem;
38
45
  font-weight: 600;
39
- line-height: 1.3;
40
- color: var(--ds-text);
41
46
  }
42
- .office-header-sub {
43
- margin: 2px 0 0;
44
- font-size: 12px;
47
+ .office-brand p {
48
+ margin: 0.2rem 0 0;
49
+ font-size: 0.82rem;
45
50
  color: var(--ds-muted);
46
- line-height: 1.4;
47
51
  }
48
- .btn-office-new {
49
- flex-shrink: 0;
50
- display: inline-flex;
51
- align-items: center;
52
- gap: 6px;
53
- padding: 8px 14px;
54
- border: none;
55
- border-radius: 999px;
56
- background: var(--ds-accent);
57
- color: #fff;
58
- font-size: 14px;
59
- font-weight: 500;
60
- font-family: inherit;
61
- cursor: pointer;
62
- transition: background 120ms ease;
63
- }
64
- .btn-office-new:hover {
65
- background: var(--ds-accent-hover);
66
- }
67
- .btn-office-new svg {
68
- flex-shrink: 0;
52
+ .office-top-actions {
53
+ display: flex;
54
+ gap: 8px;
69
55
  }
70
56
  .office-main {
71
57
  flex: 1;
72
58
  display: flex;
73
59
  min-height: 0;
74
60
  overflow: hidden;
75
- background: var(--ds-bg);
76
61
  }
77
- .office-list-root {
62
+ #agentListRoot {
78
63
  flex: 1;
79
64
  overflow: auto;
80
- padding: 20px;
65
+ padding: 16px 20px 24px;
81
66
  min-width: 0;
82
67
  }
83
68
  .agent-list {
84
69
  list-style: none;
85
- margin: 0 auto;
70
+ margin: 0;
86
71
  padding: 0;
87
72
  display: flex;
88
73
  flex-direction: column;
89
- gap: 2px;
90
- max-width: 640px;
74
+ gap: 10px;
75
+ max-width: 720px;
91
76
  }
92
77
  .agent-list-empty {
93
78
  color: var(--ds-muted);
94
- font-size: 14px;
95
- padding: 64px 16px;
79
+ font-size: 0.9rem;
80
+ padding: 48px 16px;
96
81
  text-align: center;
97
- max-width: 640px;
98
- margin: 0 auto;
99
82
  }
100
83
  .agent-list-item {
101
- display: block;
84
+ display: flex;
85
+ align-items: center;
86
+ gap: 14px;
102
87
  width: 100%;
103
- padding: 12px 14px;
104
- border: none;
105
- border-radius: 10px;
106
- background: transparent;
88
+ padding: 14px 16px;
89
+ border: 1px solid var(--ds-border);
90
+ border-radius: 12px;
91
+ background: var(--ds-bg);
107
92
  cursor: pointer;
108
93
  text-align: left;
109
94
  font: inherit;
110
95
  color: inherit;
111
- transition: background 120ms ease;
96
+ transition: border-color 0.15s, box-shadow 0.15s;
112
97
  }
113
98
  .agent-list-item:hover {
114
- background: var(--ds-item-hover);
99
+ border-color: rgba(10, 132, 255, 0.35);
100
+ box-shadow: 0 2px 12px rgba(0, 0, 0, 0.06);
115
101
  }
116
102
  .agent-list-item.is-selected {
117
- background: var(--ds-item-active);
103
+ border-color: var(--ds-accent);
104
+ box-shadow: 0 0 0 1px var(--ds-accent);
105
+ }
106
+ .agent-list-accent {
107
+ flex-shrink: 0;
108
+ width: 4px;
109
+ height: 40px;
110
+ border-radius: 2px;
118
111
  }
119
112
  .agent-list-body {
113
+ flex: 1;
114
+ min-width: 0;
120
115
  display: flex;
121
116
  flex-direction: column;
122
- gap: 3px;
123
- min-width: 0;
117
+ gap: 4px;
124
118
  }
125
- .agent-list-name {
126
- font-size: 15px;
119
+ .agent-list-id {
120
+ font-size: 1rem;
127
121
  font-weight: 600;
128
- line-height: 1.35;
129
- color: var(--ds-text);
130
- overflow: hidden;
131
- text-overflow: ellipsis;
132
- white-space: nowrap;
133
122
  }
134
- .agent-list-id-sub {
135
- font-size: 12px;
136
- font-family: ui-monospace, Menlo, monospace;
123
+ .agent-list-desc {
124
+ font-size: 0.82rem;
137
125
  color: var(--ds-muted);
138
- overflow: hidden;
139
- text-overflow: ellipsis;
140
126
  white-space: nowrap;
141
- }
142
- .agent-list-desc {
143
- font-size: 13px;
144
- color: var(--ds-secondary);
145
- line-height: 1.45;
146
- display: -webkit-box;
147
- -webkit-box-orient: vertical;
148
- -webkit-line-clamp: 2;
149
127
  overflow: hidden;
128
+ text-overflow: ellipsis;
150
129
  }
151
130
  .agent-list-team {
152
- font-size: 12px;
153
- color: var(--ds-muted);
131
+ font-size: 0.78rem;
132
+ color: var(--ds-accent);
133
+ white-space: nowrap;
154
134
  overflow: hidden;
155
135
  text-overflow: ellipsis;
156
- white-space: nowrap;
157
136
  }
158
137
  .office-team-section {
159
138
  margin-bottom: 1rem;
@@ -176,11 +155,11 @@
176
155
  display: inline-flex;
177
156
  align-items: center;
178
157
  gap: 4px;
179
- padding: 4px 10px;
158
+ padding: 0.2rem 0.45rem 0.2rem 0.55rem;
180
159
  border-radius: 999px;
181
- background: var(--ds-item-hover);
182
- border: 1px solid var(--ds-border);
183
- font-size: 12px;
160
+ background: rgba(10, 132, 255, 0.1);
161
+ border: 1px solid rgba(10, 132, 255, 0.25);
162
+ font-size: 0.78rem;
184
163
  }
185
164
  .office-team-chip button {
186
165
  border: none;
@@ -210,18 +189,22 @@
210
189
  padding: 0.45rem 0.55rem;
211
190
  font: inherit;
212
191
  }
192
+ .agent-list-arrow {
193
+ flex-shrink: 0;
194
+ color: var(--ds-muted);
195
+ font-size: 1.2rem;
196
+ line-height: 1;
197
+ }
213
198
  .office-btn {
214
199
  border: 1px solid var(--ds-border);
215
200
  background: var(--ds-bg);
216
201
  color: var(--ds-text);
217
- border-radius: var(--ds-radius-sm);
218
- padding: 8px 14px;
219
- font-size: 13px;
220
- font-family: inherit;
202
+ border-radius: 10px;
203
+ padding: 0.45rem 0.85rem;
204
+ font-size: 0.85rem;
221
205
  cursor: pointer;
222
- transition: background 120ms ease, border-color 120ms ease;
223
206
  }
224
- .office-btn:hover { background: var(--ds-item-hover); }
207
+ .office-btn:hover { background: #fafafa; }
225
208
  .office-btn-primary {
226
209
  background: var(--ds-accent);
227
210
  border-color: var(--ds-accent);
@@ -230,121 +213,86 @@
230
213
  .office-btn-primary:hover { background: var(--ds-accent-hover); }
231
214
  .office-btn-danger {
232
215
  color: var(--ds-danger);
233
- border-color: rgba(220, 38, 38, 0.25);
234
- background: #fff;
216
+ border-color: rgba(255, 59, 48, 0.35);
235
217
  }
236
- .office-btn-danger:hover {
237
- background: #fef2f2;
238
- border-color: var(--ds-danger);
239
- }
240
- .office-panel {
218
+ #officePanel {
241
219
  flex-shrink: 0;
242
- width: min(400px, 44vw);
220
+ width: min(380px, 42vw);
243
221
  background: var(--ds-bg);
244
222
  border-left: 1px solid var(--ds-border);
245
223
  display: none;
246
224
  flex-direction: column;
247
225
  min-height: 0;
248
226
  }
249
- .office-panel.is-open {
227
+ #officePanel.is-open {
250
228
  display: flex;
251
229
  }
252
230
  .office-panel-head {
253
231
  display: flex;
254
232
  align-items: center;
255
233
  justify-content: space-between;
256
- gap: 12px;
257
- padding: 14px 16px;
234
+ padding: 1rem 1rem 0.5rem;
258
235
  border-bottom: 1px solid var(--ds-border);
259
- flex-shrink: 0;
260
236
  }
261
237
  .office-panel-head h2 {
262
238
  margin: 0;
263
- font-size: 15px;
264
- font-weight: 600;
265
- line-height: 1.3;
266
- overflow: hidden;
267
- text-overflow: ellipsis;
268
- white-space: nowrap;
269
- min-width: 0;
239
+ font-size: 1rem;
270
240
  }
271
241
  .office-panel-close {
272
- flex-shrink: 0;
273
- width: 28px;
274
- height: 28px;
275
242
  border: none;
276
- border-radius: 6px;
277
243
  background: transparent;
278
- font-size: 18px;
244
+ font-size: 1.4rem;
279
245
  line-height: 1;
280
246
  cursor: pointer;
281
247
  color: var(--ds-muted);
282
248
  }
283
- .office-panel-close:hover {
284
- background: var(--ds-item-hover);
285
- color: var(--ds-text);
286
- }
287
249
  .office-panel-body {
288
- padding: 16px;
250
+ padding: 1rem;
289
251
  overflow: auto;
290
252
  flex: 1;
291
253
  min-height: 0;
292
254
  }
293
255
  .office-panel-meta {
294
- margin: 0 0 14px;
295
- font-size: 12px;
256
+ margin: 0 0 0.75rem;
257
+ font-size: 0.8rem;
296
258
  color: var(--ds-muted);
297
- line-height: 1.45;
298
259
  }
299
260
  .office-form-row {
300
261
  display: flex;
301
262
  flex-direction: column;
302
- gap: 6px;
303
- margin-bottom: 14px;
263
+ gap: 0.35rem;
264
+ margin-bottom: 0.85rem;
304
265
  }
305
266
  .office-form-row label {
306
- font-size: 12px;
307
- font-weight: 500;
267
+ font-size: 0.82rem;
308
268
  color: var(--ds-muted);
309
269
  }
310
270
  .office-form-row input,
311
- .office-form-row textarea,
312
- .office-team-add select {
271
+ .office-form-row textarea {
313
272
  width: 100%;
314
273
  border: 1px solid var(--ds-border);
315
- border-radius: var(--ds-radius-sm);
316
- padding: 9px 11px;
274
+ border-radius: 10px;
275
+ padding: 0.55rem 0.65rem;
317
276
  font: inherit;
318
- font-size: 14px;
319
277
  resize: vertical;
320
- background: var(--ds-bg);
321
- color: var(--ds-text);
322
278
  }
323
- .office-form-row input:focus,
324
- .office-form-row textarea:focus,
325
- .office-team-add select:focus {
326
- outline: none;
327
- border-color: var(--ds-accent);
328
- box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.12);
329
- }
330
- .office-form-row textarea { min-height: 80px; line-height: 1.5; }
279
+ .office-form-row textarea { min-height: 72px; }
331
280
  .office-form-actions {
332
281
  display: flex;
333
282
  flex-wrap: wrap;
334
283
  gap: 8px;
335
- margin-top: 8px;
336
- padding-top: 4px;
284
+ margin-top: 0.5rem;
337
285
  }
338
286
  #officeToast {
339
287
  position: fixed;
340
288
  left: 50%;
341
289
  bottom: 28px;
342
290
  transform: translateX(-50%) translateY(12px);
343
- background: var(--ds-text);
291
+ background: rgba(28, 28, 30, 0.92);
344
292
  color: #fff;
345
- padding: 10px 16px;
346
- border-radius: var(--ds-radius);
347
- font-size: 13px;
293
+ padding: 0.65rem 1rem;
294
+ border-radius: 10px;
295
+ font-size: 0.85rem;
348
296
  opacity: 0;
349
297
  pointer-events: none;
350
298
  transition: opacity 0.2s, transform 0.2s;
@@ -356,19 +304,10 @@
356
304
  opacity: 1;
357
305
  transform: translateX(-50%) translateY(0);
358
306
  }
359
- #officeToast.is-error { background: var(--ds-danger); }
360
- .office-list-root::-webkit-scrollbar,
361
- .office-panel-body::-webkit-scrollbar {
362
- width: 5px;
363
- }
364
- .office-list-root::-webkit-scrollbar-thumb,
365
- .office-panel-body::-webkit-scrollbar-thumb {
366
- background: rgba(0, 0, 0, 0.15);
367
- border-radius: 999px;
368
- }
307
+ #officeToast.is-error { background: rgba(192, 57, 43, 0.95); }
369
308
  @media (max-width: 768px) {
370
309
  .office-main { flex-direction: column; }
371
- .office-panel {
310
+ #officePanel {
372
311
  width: 100%;
373
312
  border-left: none;
374
313
  border-top: 1px solid var(--ds-border);
@@ -378,24 +317,21 @@
378
317
  </style>
379
318
  </head>
380
319
  <body>
381
- <div id="officeApp" class="office-app">
382
- <header class="office-header">
383
- <div class="office-header-main">
384
- <h1 class="office-header-title">办公室</h1>
385
- <p class="office-header-sub" id="officeSubtitle">加载中…</p>
320
+ <div id="officeApp">
321
+ <header class="office-topbar">
322
+ <div class="office-brand">
323
+ <h1>Agent 列表</h1>
324
+ <p id="officeSubtitle">加载中…</p>
325
+ </div>
326
+ <div class="office-top-actions">
327
+ <button type="button" class="office-btn office-btn-primary" id="btnOfficeNewAgent">新建 Agent</button>
386
328
  </div>
387
- <button type="button" class="btn-office-new" id="btnOfficeNewAgent">
388
- <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true">
389
- <path d="M12 5v14M5 12h14"/>
390
- </svg>
391
- <span>新建 Agent</span>
392
- </button>
393
329
  </header>
394
330
 
395
331
  <div class="office-main">
396
- <div id="agentListRoot" class="office-list-root" aria-label="Agent 列表"></div>
332
+ <div id="agentListRoot" aria-label="Agent 列表"></div>
397
333
 
398
- <aside id="officePanel" class="office-panel" aria-label="Agent 管理面板">
334
+ <aside id="officePanel" aria-label="Agent 管理面板">
399
335
  <div class="office-panel-head">
400
336
  <h2 id="officePanelTitle">Agent</h2>
401
337
  <button type="button" class="office-panel-close" id="btnOfficePanelClose" aria-label="关闭">&times;</button>
@@ -662,21 +598,31 @@
662
598
  return id
663
599
  }
664
600
 
665
- /** 列表主标题:优先 displayName,否则用 id */
666
- function agentListTitle(row) {
667
- const id = String(row.id || '').trim()
668
- const dn =
669
- row && typeof row.displayName === 'string' && row.displayName.trim()
670
- ? row.displayName.trim()
671
- : ''
672
- return dn || id
601
+ const AGENT_ACCENT_COLORS = [
602
+ '#22d3c5',
603
+ '#4da3ff',
604
+ '#8b5cf6',
605
+ '#e84855',
606
+ '#f5c518',
607
+ '#c5e84c',
608
+ ]
609
+
610
+ const KNOWN_ACCENTS = {
611
+ dev: '#22d3c5',
612
+ edr: '#4da3ff',
613
+ qihoo: '#8b5cf6',
673
614
  }
674
615
 
675
- /** 列表副 id:displayName id 不同时展示 id */
676
- function agentListSubId(row) {
677
- const id = String(row.id || '').trim()
678
- const title = agentListTitle(row)
679
- return title !== id ? id : ''
616
+ /** 根据 agent id 分配列表左侧色带 */
617
+ function accentColorForId(id) {
618
+ const key = String(id || '').trim().toLowerCase()
619
+ if (KNOWN_ACCENTS[key]) return KNOWN_ACCENTS[key]
620
+ const s = String(id || 'a')
621
+ let h = 0
622
+ for (let i = 0; i < s.length; i++) {
623
+ h = (h + s.charCodeAt(i) * 17) % AGENT_ACCENT_COLORS.length
624
+ }
625
+ return AGENT_ACCENT_COLORS[h]
680
626
  }
681
627
 
682
628
  /** 列表页选中状态:仅维护当前 agent id */
@@ -726,7 +672,7 @@
726
672
  if (!agents.length) {
727
673
  const empty = document.createElement('div')
728
674
  empty.className = 'agent-list-empty'
729
- empty.textContent = '暂无 Agent,点击「新建 Agent」创建'
675
+ empty.textContent = '暂无 Agent,点击右上角「新建 Agent」创建'
730
676
  this.container.appendChild(empty)
731
677
  return
732
678
  }
@@ -747,26 +693,22 @@
747
693
  'agent-list-item' + (selectedId === id ? ' is-selected' : '')
748
694
  btn.setAttribute('aria-pressed', selectedId === id ? 'true' : 'false')
749
695
 
696
+ const accent = document.createElement('span')
697
+ accent.className = 'agent-list-accent'
698
+ accent.style.background = accentColorForId(id)
699
+
750
700
  const body = document.createElement('span')
751
701
  body.className = 'agent-list-body'
752
702
 
753
703
  const title = document.createElement('span')
754
- title.className = 'agent-list-name'
755
- title.textContent = agentListTitle(row)
756
-
757
- body.appendChild(title)
758
-
759
- const subId = agentListSubId(row)
760
- if (subId) {
761
- const idEl = document.createElement('span')
762
- idEl.className = 'agent-list-id-sub'
763
- idEl.textContent = subId
764
- body.appendChild(idEl)
765
- }
704
+ title.className = 'agent-list-id'
705
+ title.textContent = id
766
706
 
767
707
  const desc = document.createElement('span')
768
708
  desc.className = 'agent-list-desc'
769
- desc.textContent = truncateListDesc(row.whentouse, 120)
709
+ desc.textContent = truncateListDesc(row.whentouse, 80)
710
+
711
+ body.appendChild(title)
770
712
  body.appendChild(desc)
771
713
 
772
714
  const teamLine = formatAgentTeamLine(row)
@@ -777,7 +719,13 @@
777
719
  body.appendChild(team)
778
720
  }
779
721
 
722
+ const arrow = document.createElement('span')
723
+ arrow.className = 'agent-list-arrow'
724
+ arrow.textContent = '›'
725
+
726
+ btn.appendChild(accent)
780
727
  btn.appendChild(body)
728
+ btn.appendChild(arrow)
781
729
 
782
730
  btn.addEventListener('click', () => {
783
731
  if (this.onPick) this.onPick(id)
@@ -1054,12 +1002,7 @@
1054
1002
  if (!agentId) return
1055
1003
  this.mode = 'edit'
1056
1004
  this.editingId = agentId
1057
- const cached = this.agents.find(function (a) {
1058
- return String(a.id || '').trim() === agentId
1059
- })
1060
- if (this.panelTitleEl) {
1061
- this.panelTitleEl.textContent = cached ? agentListTitle(cached) : agentId
1062
- }
1005
+ if (this.panelTitleEl) this.panelTitleEl.textContent = 'Agent · ' + agentId
1063
1006
  if (this.panelMetaEl) this.panelMetaEl.textContent = '加载中…'
1064
1007
  if (this.btnDelete) {
1065
1008
  this.btnDelete.disabled = false
@@ -1084,15 +1027,6 @@
1084
1027
  this.promptInput.value =
1085
1028
  typeof agent.prompt === 'string' ? agent.prompt : ''
1086
1029
  }
1087
- if (this.panelTitleEl) {
1088
- const dn =
1089
- typeof agent.displayName === 'string' && agent.displayName.trim()
1090
- ? agent.displayName.trim()
1091
- : cached
1092
- ? agentListTitle(cached)
1093
- : agentId
1094
- this.panelTitleEl.textContent = dn
1095
- }
1096
1030
  const members = Array.isArray(agent.agentTeamMembers)
1097
1031
  ? agent.agentTeamMembers
1098
1032
  : []
@@ -1164,12 +1098,7 @@
1164
1098
  this.btnDelete.disabled = false
1165
1099
  }
1166
1100
  if (this.btnWorkbench) this.btnWorkbench.disabled = false
1167
- const savedRow = this.agents.find(function (a) {
1168
- return String(a.id || '').trim() === id
1169
- })
1170
- if (this.panelTitleEl) {
1171
- this.panelTitleEl.textContent = savedRow ? agentListTitle(savedRow) : id
1172
- }
1101
+ if (this.panelTitleEl) this.panelTitleEl.textContent = 'Agent · ' + id
1173
1102
  this.controller.selectAgent(id)
1174
1103
  this.syncUrlAgentParam(id)
1175
1104
  if (isEdit) {
@@ -1268,7 +1197,7 @@
1268
1197
  const subtitle = document.getElementById('officeSubtitle')
1269
1198
  if (subtitle) {
1270
1199
  subtitle.textContent =
1271
- String(agents.length) + ' 个 Agent'
1200
+ String(agents.length) + ' 个 Agent · 点击列表项管理'
1272
1201
  }
1273
1202
  list.render(agents, controller.selectedId)
1274
1203
  },