@sapienx/agentos 0.1.4 → 0.1.6

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 (116) hide show
  1. package/README.md +4 -0
  2. package/bin/agentos.js +289 -7
  3. package/bundle/.next/BUILD_ID +1 -1
  4. package/bundle/.next/app-path-routes-manifest.json +10 -10
  5. package/bundle/.next/build-manifest.json +3 -3
  6. package/bundle/.next/required-server-files.json +3 -3
  7. package/bundle/.next/server/app/_global-error/page.js +3 -3
  8. package/bundle/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  9. package/bundle/.next/server/app/_global-error.html +2 -2
  10. package/bundle/.next/server/app/_global-error.rsc +1 -1
  11. package/bundle/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  12. package/bundle/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  13. package/bundle/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  14. package/bundle/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  15. package/bundle/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  16. package/bundle/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  17. package/bundle/.next/server/app/_not-found/page.js +2 -2
  18. package/bundle/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  19. package/bundle/.next/server/app/_not-found.html +1 -1
  20. package/bundle/.next/server/app/_not-found.rsc +3 -3
  21. package/bundle/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  22. package/bundle/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  23. package/bundle/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  24. package/bundle/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  25. package/bundle/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  26. package/bundle/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  27. package/bundle/.next/server/app/api/agents/route.js +1 -1
  28. package/bundle/.next/server/app/api/agents/route.js.nft.json +1 -1
  29. package/bundle/.next/server/app/api/agents/route_client-reference-manifest.js +1 -1
  30. package/bundle/.next/server/app/api/diagnostics/route.js +1 -1
  31. package/bundle/.next/server/app/api/diagnostics/route.js.nft.json +1 -1
  32. package/bundle/.next/server/app/api/diagnostics/route_client-reference-manifest.js +1 -1
  33. package/bundle/.next/server/app/api/files/reveal/route.js +1 -1
  34. package/bundle/.next/server/app/api/files/reveal/route_client-reference-manifest.js +1 -1
  35. package/bundle/.next/server/app/api/gateway/control/route.js +1 -1
  36. package/bundle/.next/server/app/api/gateway/control/route.js.nft.json +1 -1
  37. package/bundle/.next/server/app/api/gateway/control/route_client-reference-manifest.js +1 -1
  38. package/bundle/.next/server/app/api/mission/route.js +1 -1
  39. package/bundle/.next/server/app/api/mission/route.js.nft.json +1 -1
  40. package/bundle/.next/server/app/api/mission/route_client-reference-manifest.js +1 -1
  41. package/bundle/.next/server/app/api/onboarding/models/route.js +7 -5
  42. package/bundle/.next/server/app/api/onboarding/models/route.js.nft.json +1 -1
  43. package/bundle/.next/server/app/api/onboarding/models/route_client-reference-manifest.js +1 -1
  44. package/bundle/.next/server/app/api/onboarding/route.js +7 -5
  45. package/bundle/.next/server/app/api/onboarding/route.js.nft.json +1 -1
  46. package/bundle/.next/server/app/api/onboarding/route_client-reference-manifest.js +1 -1
  47. package/bundle/.next/server/app/api/planner/[planId]/deploy/route.js +2 -2
  48. package/bundle/.next/server/app/api/planner/[planId]/deploy/route.js.nft.json +1 -1
  49. package/bundle/.next/server/app/api/planner/[planId]/deploy/route_client-reference-manifest.js +1 -1
  50. package/bundle/.next/server/app/api/planner/[planId]/route.js +1 -1
  51. package/bundle/.next/server/app/api/planner/[planId]/route.js.nft.json +1 -1
  52. package/bundle/.next/server/app/api/planner/[planId]/route_client-reference-manifest.js +1 -1
  53. package/bundle/.next/server/app/api/planner/[planId]/simulate/route.js +1 -1
  54. package/bundle/.next/server/app/api/planner/[planId]/simulate/route.js.nft.json +1 -1
  55. package/bundle/.next/server/app/api/planner/[planId]/simulate/route_client-reference-manifest.js +1 -1
  56. package/bundle/.next/server/app/api/planner/[planId]/turn/route.js +1 -1
  57. package/bundle/.next/server/app/api/planner/[planId]/turn/route.js.nft.json +1 -1
  58. package/bundle/.next/server/app/api/planner/[planId]/turn/route_client-reference-manifest.js +1 -1
  59. package/bundle/.next/server/app/api/planner/route.js +1 -1
  60. package/bundle/.next/server/app/api/planner/route.js.nft.json +1 -1
  61. package/bundle/.next/server/app/api/planner/route_client-reference-manifest.js +1 -1
  62. package/bundle/.next/server/app/api/reset/route.js +2 -2
  63. package/bundle/.next/server/app/api/reset/route.js.nft.json +1 -1
  64. package/bundle/.next/server/app/api/reset/route_client-reference-manifest.js +1 -1
  65. package/bundle/.next/server/app/api/runtimes/[runtimeId]/route.js +1 -1
  66. package/bundle/.next/server/app/api/runtimes/[runtimeId]/route.js.nft.json +1 -1
  67. package/bundle/.next/server/app/api/runtimes/[runtimeId]/route_client-reference-manifest.js +1 -1
  68. package/bundle/.next/server/app/api/settings/gateway/route.js +1 -1
  69. package/bundle/.next/server/app/api/settings/gateway/route.js.nft.json +1 -1
  70. package/bundle/.next/server/app/api/settings/gateway/route_client-reference-manifest.js +1 -1
  71. package/bundle/.next/server/app/api/settings/workspace-root/route.js +1 -1
  72. package/bundle/.next/server/app/api/settings/workspace-root/route.js.nft.json +1 -1
  73. package/bundle/.next/server/app/api/settings/workspace-root/route_client-reference-manifest.js +1 -1
  74. package/bundle/.next/server/app/api/snapshot/route.js +1 -1
  75. package/bundle/.next/server/app/api/snapshot/route.js.nft.json +1 -1
  76. package/bundle/.next/server/app/api/snapshot/route_client-reference-manifest.js +1 -1
  77. package/bundle/.next/server/app/api/stream/route.js +2 -2
  78. package/bundle/.next/server/app/api/stream/route.js.nft.json +1 -1
  79. package/bundle/.next/server/app/api/stream/route_client-reference-manifest.js +1 -1
  80. package/bundle/.next/server/app/api/system/open-terminal/route.js +1 -1
  81. package/bundle/.next/server/app/api/system/open-terminal/route_client-reference-manifest.js +1 -1
  82. package/bundle/.next/server/app/api/update/route.js +2 -2
  83. package/bundle/.next/server/app/api/update/route.js.nft.json +1 -1
  84. package/bundle/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  85. package/bundle/.next/server/app/api/workspaces/route.js +2 -2
  86. package/bundle/.next/server/app/api/workspaces/route.js.nft.json +1 -1
  87. package/bundle/.next/server/app/api/workspaces/route_client-reference-manifest.js +1 -1
  88. package/bundle/.next/server/app/page.js +8 -8
  89. package/bundle/.next/server/app/page.js.nft.json +1 -1
  90. package/bundle/.next/server/app/page_client-reference-manifest.js +1 -1
  91. package/bundle/.next/server/app-paths-manifest.json +10 -10
  92. package/bundle/.next/server/chunks/463.js +2 -2
  93. package/bundle/.next/server/chunks/603.js +1 -1
  94. package/bundle/.next/server/chunks/907.js +28 -27
  95. package/bundle/.next/server/middleware-build-manifest.js +1 -1
  96. package/bundle/.next/server/pages/404.html +1 -1
  97. package/bundle/.next/server/pages/500.html +2 -2
  98. package/bundle/.next/static/chunks/4a846800-817e4d43c6c4047f.js +1 -0
  99. package/bundle/.next/static/chunks/632-680acc061529597b.js +13 -0
  100. package/bundle/.next/static/chunks/app/layout-6c2c9cd9b518452f.js +1 -0
  101. package/bundle/.next/static/chunks/app/page-a410ba4980548bfd.js +14 -0
  102. package/bundle/.next/static/chunks/{main-app-9229332086036e25.js → main-app-245e6e74e3ad1df9.js} +1 -1
  103. package/bundle/.next/static/chunks/next/dist/client/components/builtin/global-error-62eeb2b37b76f847.js +1 -0
  104. package/bundle/public/readme/create.webp +0 -0
  105. package/bundle/public/readme/setup.webp +0 -0
  106. package/bundle/public/readme/wizzard.webp +0 -0
  107. package/bundle/scripts/openclaw-mission-dispatch-runner.mjs +234 -0
  108. package/bundle/server.js +1 -1
  109. package/package.json +2 -2
  110. package/bundle/.next/static/chunks/4a846800-ac18ff898328f8a0.js +0 -1
  111. package/bundle/.next/static/chunks/632-05d72f27d1a1075e.js +0 -13
  112. package/bundle/.next/static/chunks/app/layout-f29ac7241aef5824.js +0 -1
  113. package/bundle/.next/static/chunks/app/page-2cb34a431e05ffbc.js +0 -14
  114. package/bundle/.next/static/chunks/next/dist/client/components/builtin/global-error-382f4d4fed37de4d.js +0 -1
  115. /package/bundle/.next/static/{vVu-6A-oCIV07uAZGrTop → 4ThNPJp9bEISWCDFyw3Jd}/_buildManifest.js +0 -0
  116. /package/bundle/.next/static/{vVu-6A-oCIV07uAZGrTop → 4ThNPJp9bEISWCDFyw3Jd}/_ssgManifest.js +0 -0
@@ -88,4 +88,4 @@ Pressure-test assumptions, missing info, hidden blockers, and design regressions
88
88
  `,"utf8"),await (0,d.writeFile)(f().join(g,"workflows.md"),`# Workflows
89
89
 
90
90
  ${h}
91
- `,"utf8")}async function aA(a,b={}){let c=[],d=[],e=a.filter(a=>a.enabled&&"internal"!==a.type);for(let[a,f]of(0===e.length&&await b.onProgress?.({message:"No enabled external channels. Skipping channel provisioning.",percent:100,status:"done"}),e.entries())){let h=Object.fromEntries(f.credentials.map(a=>[a.key,a.value.trim()])),i=function(a,b){switch(a.type){case"telegram":return b.token?["channels","add","--channel","telegram","--token",b.token,"--name",a.name]:null;case"discord":return b.token?["channels","add","--channel","discord","--token",b.token,"--name",a.name]:null;case"slack":return b.botToken?["channels","add","--channel","slack","--bot-token",b.botToken,"--name",a.name]:null;case"googlechat":return b.webhookUrl?["channels","add","--channel","googlechat","--webhook-url",b.webhookUrl,"--name",a.name]:null;default:return null}}(f,h),j=Math.round(a/e.length*100);if(await b.onProgress?.({message:`Provisioning channel ${a+1} of ${e.length}: ${f.name}.`,percent:j,status:"active"}),!i){d.push(`Channel "${f.name}" uses an unsupported provisioning shape.`),await b.onProgress?.({message:`Skipped ${f.name}. Mission Control does not know how to provision this channel shape yet.`,percent:Math.round((a+1)/e.length*100),status:"error"});continue}try{await (0,g.zB)(i,{timeoutMs:6e4}),c.push(f.name),await b.onProgress?.({message:`Provisioned ${f.name}.`,percent:Math.round((a+1)/e.length*100),status:"done"})}catch(c){d.push(`Channel "${f.name}" could not be provisioned: ${c instanceof Error?c.message:"unknown error"}`),await b.onProgress?.({message:`Channel ${f.name} could not be provisioned: ${c instanceof Error?c.message:"unknown error"}`,percent:Math.round((a+1)/e.length*100),status:"error"})}}return{provisioned:c,warnings:d}}async function aB(a,b,c,d={}){let e=[],f=[],h=a.operations.automations.filter(a=>a.enabled);for(let[b,i]of(0===h.length&&await d.onProgress?.({message:"No enabled automations. Skipping automation provisioning.",percent:100,status:"done"}),h.entries())){let j=function(a,b,c){let d=b.agentId?c[b.agentId]:void 0;if(!d)return null;let e=["cron","add","--name",b.name,"--description",b.description||b.name,"--agent",d,"--message",b.mission,"--thinking",b.thinking,"--timeout-seconds","120","--json"];if("every"===b.scheduleKind?e.push("--every",b.scheduleValue):e.push("--cron",b.scheduleValue),b.announce&&b.channelId){let c=a.operations.channels.find(a=>a.id===b.channelId);c&&"internal"!==c.type&&(e.push("--announce","--channel",c.type),c.target&&e.push("--to",c.target))}return e}(a,i,c),k=Math.round(b/h.length*100);if(await d.onProgress?.({message:`Provisioning automation ${b+1} of ${h.length}: ${i.name}.`,percent:k,status:"active"}),!j){f.push(`Automation "${i.name}" could not be mapped to a live agent.`),await d.onProgress?.({message:`Skipped ${i.name}. It could not be mapped to a live agent.`,percent:Math.round((b+1)/h.length*100),status:"error"});continue}try{await (0,g.zB)(j,{timeoutMs:6e4}),e.push(i.name),await d.onProgress?.({message:`Provisioned automation ${i.name}.`,percent:Math.round((b+1)/h.length*100),status:"done"})}catch(a){f.push(`Automation "${i.name}" failed to provision: ${a instanceof Error?a.message:"unknown error"}`),await d.onProgress?.({message:`Automation ${i.name} failed: ${a instanceof Error?a.message:"unknown error"}`,percent:Math.round((b+1)/h.length*100),status:"error"})}}return(await (0,$.GM)({force:!0})).workspaces.some(a=>a.id===b)||(f.push("Workspace snapshot did not refresh immediately after deploy."),await d.onProgress?.({message:"Workspace snapshot did not refresh immediately after deploy.",percent:100,status:"error"})),{provisioned:e,warnings:f}}async function aC(a,b,c,d={}){let e=[{agentId:c[a.team.persistentAgents.find(a=>a.enabled&&a.isPrimary)?.id??""],mission:a.deploy.firstMissions[0]},{agentId:c[a.team.persistentAgents.find(a=>a.enabled&&/review/i.test(a.role))?.id??""],mission:a.deploy.firstMissions[1]},{agentId:c[a.team.persistentAgents.find(a=>a.enabled&&/learn/i.test(a.role))?.id??""],mission:a.deploy.firstMissions[2]}].filter(a=>a.agentId&&a.mission),f=[];for(let[a,c]of(0===e.length&&await d.onProgress?.({message:"No planner kickoff missions. Finalizing deploy.",percent:100,status:"done"}),e.entries())){let g=Math.round(a/e.length*100);await d.onProgress?.({message:`Dispatching kickoff ${a+1} of ${e.length} to ${c.agentId}.`,percent:g,status:"active"});try{let g=await (0,$.xE)({agentId:c.agentId,workspaceId:b,mission:c.mission,thinking:"medium"});f.push(g.runId),await d.onProgress?.({message:`Kickoff mission started for ${c.agentId}. Run ${g.runId}.`,percent:Math.round((a+1)/e.length*100),status:"done"})}catch{await d.onProgress?.({message:`Kickoff mission could not be started for ${c.agentId}.`,percent:Math.round((a+1)/e.length*100),status:"error"});continue}}return f}async function aD(a){var b;let c,d,e,f,g,h,i=Array.from(new Set([...(b=a).match(/https?:\/\/[^\s)]+/g)??[],...b.match(/\b(?:www\.)?[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)+(?:\/[^\s)]*)?/gi)??[]].map(a=>(function(a){if(a.includes("@"))return null;let b=a.replace(/[),.;!?]+$/g,""),c=/^https?:\/\//i.test(b)?b:`https://${b}`;try{let a=new URL(c);return a.hostname.includes(".")?a.toString():null}catch{return null}})(a)).filter(a=>!!a))),j=[],k=[],l=[],m=[],n=[];for(let a of i){if(function(a){try{let b=new URL(a),c=b.hostname.toLowerCase(),d=b.pathname.toLowerCase();return"github.com"===c||"gitlab.com"===c||"bitbucket.org"===c||d.endsWith(".git")}catch{return!1}}(a)){k.push(q({kind:"repo",label:aH(a),url:a,summary:"Repository candidate detected from the prompt.",details:["The architect will treat this link as a repository source."]}));continue}n.push(a)}for(let a of(await Promise.all(n.map(a=>aE(a)))))k.push(a.source),a.inferenceText&&l.push(a.inferenceText),!c&&a.companyName&&(c=a.companyName),!d&&a.mission&&(d=a.mission),!e&&a.offer&&(e=a.offer),!f&&a.targetCustomer&&(f=a.targetCustomer),!g&&a.revenueModel&&(g=a.revenueModel),m.push(...a.successSignals??[]),!h&&a.template&&(h=a.template),j.push(...a.confirmations);return{sources:k,confirmations:aO(j),inferenceText:[a.trim(),...l].filter(Boolean).join("\n"),companyName:c,mission:d,offer:e,targetCustomer:f,successSignals:aO(m).slice(0,3),revenueModel:g,template:h}}async function aE(a){let b=aH(a);try{var c,d,e,f,g;let h,i,j,k,l=await aF(a);if(!l.ok)throw Error(`HTTP ${l.status}`);let m=await l.text(),n=aI(m,["og:title","twitter:title"])??aJ(m,"title"),o=aI(m,["og:description","twitter:description","description"])??(c=m,aK(c)[0]),p=aJ(m,"h1"),r=aO([p??"",(d=m,aK(d)[0]),(e=m,aK(e)[1])]).filter(Boolean),s=[n??"",o??"",...r].filter(Boolean).join(" "),t=function(a){if(!a)return;let b=a.split(/[|:-]/)[0]?.trim();return b&&b.length>=2?b:void 0}(n),u=o||p,v=o||p,w=(h=`${n??""} ${o??""} ${p??""}`.toLowerCase(),/\b(telegram|discord|community|topluluk|content|newsletter|growth|seo)\b/.test(h)?"content":/\b(api|backend|service|infrastructure)\b/.test(h)?"backend":/\b(app|platform|software|product|dashboard)\b/.test(h)?"software":void 0),x=function(a){let b=a.replace(/\s+/g," ").trim(),c=b.toLowerCase();for(let a of[/\b(?:for|serving|built for|designed for|helps?|empowers?|supports?)\s+([^.?!:\n]+)/i,/\b(?:users?|customers?|audience|members?)\s*[:\-]\s*([^.?!\n]+)/i]){let c=b.match(a),d=(c?.[1]??"").replace(/\s+/g," ").replace(/^[\s:,-]+|[\s:,-]+$/g,"").trim();if(function(a){let b=a.toLowerCase();return!(!b||b.split(/\s+/).length>12||/\b(create|operate|grow|power|launch|build|manage|automate|using|with|through)\b/.test(b))&&/\b(user|users|customer|customers|audience|founder|founders|startup|startups|developer|developers|operator|operators|teams?|community|communities|members?|holders?|dao|nft|brand|brands|creator|creators|business|businesses)\b/.test(b)}(d))return d}let d=/\bweb3|onchain|crypto|blockchain|token\b/.test(c),e=/\bstartup|startups|founder|founders|business(?:es)?\b/.test(c),f=/\bcommunity|communities|member|members|holder|holders|nft|dao|governance\b/.test(c),g=/\bdeveloper|developers|builder|builders|engineer|engineers\b/.test(c),h=/\boperator|operators|moderator|moderators|admin|admins|ops\b/.test(c),i=/\bbrand|brands|creator|creators|marketing|marketers|growth teams?\b/.test(c);return e&&f?d?"Web3 startups and token-led communities":"Startups and their communities":e?d?"Web3 startups and founders":"Startups and founders":f?d?"DAO, NFT, and Web3 communities":"Community leads and members":g&&h?"Developers and internal operators":g?"Developers and technical teams":i?"Brands and growth teams":h?"Internal operators and moderators":void 0}(s),y=(f=s,g=w,i=f.toLowerCase(),j=[],("content"===g||/\bcommunity|telegram|discord|dao|governance|holder|member|members\b/.test(i))&&j.push("Higher weekly active participation from the target community"),/\bautonom|automate|automation|operate|agents?\b/.test(i)&&j.push("More work completed autonomously with less manual operator time"),/\bgrow|growth|startup|startups|business(?:es)?\b/.test(i)&&j.push("More active teams or ventures operating through the workspace"),aO(j).slice(0,3)),z=(k=s.toLowerCase(),/\bsubscription|pricing|plan\b/.test(k)?"Subscription software":/\bprofit share|share in company profits|revenue share\b/.test(k)?"Revenue share or profit participation":/\bnft holders?\b|\btoken holders?\b|\btoken-gated\b/.test(k)?"Token or membership-gated participation":void 0),A=[];return o||A.push(`I read ${b} but still need a concise mission sentence.`),p||x||A.push(`I inspected ${b}, but the target customer is still not obvious from the page alone.`),{source:q({kind:"website",label:t||b,url:a,summary:o||p||"Website context captured from the linked page.",details:r}),confirmations:A,inferenceText:[t?`Company name: ${t}`:"",u?`Mission: ${u}`:"",v?`Offer: ${v}`:"",x?`Target customer: ${x}`:"",z?`Revenue model: ${z}`:"",y.length>0?`Success signals: ${y.join(" | ")}`:"",r.length>0?`Website notes: ${r.join(" | ")}`:""].filter(Boolean).join("\n"),companyName:t,mission:u,offer:v,targetCustomer:x,successSignals:y,revenueModel:z,template:w}}catch(c){return{source:q({kind:"website",label:b,url:a,summary:"Website could not be inspected automatically.",details:[],status:"error",error:c instanceof Error?c.message:"Unknown website inspection error."}),confirmations:[`I could not inspect ${b}. Confirm the company context manually if this link matters.`],inferenceText:""}}}async function aF(a){let b,c=new AbortController;try{let d=new Promise((a,d)=>{b=setTimeout(()=>{c.abort(),d(Error(`Website inspection timed out after ${Math.ceil(3.5)} seconds.`))},3500)});return await Promise.race([fetch(a,{redirect:"follow",signal:c.signal,headers:{"User-Agent":"OpenClaw Mission Control Planner/0.1"},cache:"no-store"}),d])}finally{b&&clearTimeout(b)}}function aG(a,b){let c,d=structuredClone(a);return b.template&&"software"===d.workspace.template&&b.template!==d.workspace.template&&(d=F(d,b.template)),!d.company.name&&b.companyName&&(d.company.name=b.companyName),(!d.workspace.name||(c=d.workspace.name.toLowerCase(),/\b(yapal[ıi]m|ekleyelim|başlatal[ıi]m|kural[ıi]m|olsun|diyelim|verelim|koyal[ıi]m)\b/.test(c)))&&b.companyName&&(d.workspace.name=b.companyName),!d.company.mission&&b.mission&&(d.company.mission=b.mission),!d.product.offer&&b.offer&&(d.product.offer=b.offer),!d.company.targetCustomer&&b.targetCustomer&&(d.company.targetCustomer=b.targetCustomer),!d.product.revenueModel&&b.revenueModel&&(d.product.revenueModel=b.revenueModel),b.successSignals?.length&&(d.company.successSignals=aO([...d.company.successSignals,...b.successSignals]).slice(0,3)),d}function aH(a){try{return new URL(a).hostname.replace(/^www\./,"")}catch{return a}}function aI(a,b){for(let c of b){let b=function(a,b){for(let c of[RegExp(`<meta[^>]+property=["']${aM(b)}["'][^>]+content=["']([^"']+)["'][^>]*>`,"i"),RegExp(`<meta[^>]+content=["']([^"']+)["'][^>]+property=["']${aM(b)}["'][^>]*>`,"i"),RegExp(`<meta[^>]+name=["']${aM(b)}["'][^>]+content=["']([^"']+)["'][^>]*>`,"i"),RegExp(`<meta[^>]+content=["']([^"']+)["'][^>]+name=["']${aM(b)}["'][^>]*>`,"i")]){let b=a.match(c);if(b?.[1])return aL(b[1])}}(a,c);if(b)return b}}function aJ(a,b){let c=a.match(RegExp(`<${b}[^>]*>([\\s\\S]*?)<\\/${b}>`,"i"));return c?.[1]?aL(c[1]):void 0}function aK(a){return Array.from(a.matchAll(/<p[^>]*>([\s\S]*?)<\/p>/gi)).map(a=>aL(a[1])).filter(a=>a.length>=40).slice(0,3)}function aL(a){return a.replace(/<[^>]+>/g," ").replace(/\s+/g," ").trim().replace(/&amp;/g,"&").replace(/&quot;/g,'"').replace(/&#39;/g,"'").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&nbsp;/g," ")}function aM(a){return a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function aN(a){return a.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function aO(a){return Array.from(new Set(a.filter(Boolean)))}}};
91
+ `,"utf8")}async function aA(a,b={}){let c=[],d=[],e=a.filter(a=>a.enabled&&"internal"!==a.type);for(let[a,f]of(0===e.length&&await b.onProgress?.({message:"No enabled external channels. Skipping channel provisioning.",percent:100,status:"done"}),e.entries())){let h=Object.fromEntries(f.credentials.map(a=>[a.key,a.value.trim()])),i=function(a,b){switch(a.type){case"telegram":return b.token?["channels","add","--channel","telegram","--token",b.token,"--name",a.name]:null;case"discord":return b.token?["channels","add","--channel","discord","--token",b.token,"--name",a.name]:null;case"slack":return b.botToken?["channels","add","--channel","slack","--bot-token",b.botToken,"--name",a.name]:null;case"googlechat":return b.webhookUrl?["channels","add","--channel","googlechat","--webhook-url",b.webhookUrl,"--name",a.name]:null;default:return null}}(f,h),j=Math.round(a/e.length*100);if(await b.onProgress?.({message:`Provisioning channel ${a+1} of ${e.length}: ${f.name}.`,percent:j,status:"active"}),!i){d.push(`Channel "${f.name}" uses an unsupported provisioning shape.`),await b.onProgress?.({message:`Skipped ${f.name}. Mission Control does not know how to provision this channel shape yet.`,percent:Math.round((a+1)/e.length*100),status:"error"});continue}try{await (0,g.zB)(i,{timeoutMs:6e4}),c.push(f.name),await b.onProgress?.({message:`Provisioned ${f.name}.`,percent:Math.round((a+1)/e.length*100),status:"done"})}catch(c){d.push(`Channel "${f.name}" could not be provisioned: ${c instanceof Error?c.message:"unknown error"}`),await b.onProgress?.({message:`Channel ${f.name} could not be provisioned: ${c instanceof Error?c.message:"unknown error"}`,percent:Math.round((a+1)/e.length*100),status:"error"})}}return{provisioned:c,warnings:d}}async function aB(a,b,c,d={}){let e=[],f=[],h=a.operations.automations.filter(a=>a.enabled);for(let[b,i]of(0===h.length&&await d.onProgress?.({message:"No enabled automations. Skipping automation provisioning.",percent:100,status:"done"}),h.entries())){let j=function(a,b,c){let d=b.agentId?c[b.agentId]:void 0;if(!d)return null;let e=["cron","add","--name",b.name,"--description",b.description||b.name,"--agent",d,"--message",b.mission,"--thinking",b.thinking,"--timeout-seconds","120","--json"];if("every"===b.scheduleKind?e.push("--every",b.scheduleValue):e.push("--cron",b.scheduleValue),b.announce&&b.channelId){let c=a.operations.channels.find(a=>a.id===b.channelId);c&&"internal"!==c.type&&(e.push("--announce","--channel",c.type),c.target&&e.push("--to",c.target))}return e}(a,i,c),k=Math.round(b/h.length*100);if(await d.onProgress?.({message:`Provisioning automation ${b+1} of ${h.length}: ${i.name}.`,percent:k,status:"active"}),!j){f.push(`Automation "${i.name}" could not be mapped to a live agent.`),await d.onProgress?.({message:`Skipped ${i.name}. It could not be mapped to a live agent.`,percent:Math.round((b+1)/h.length*100),status:"error"});continue}try{await (0,g.zB)(j,{timeoutMs:6e4}),e.push(i.name),await d.onProgress?.({message:`Provisioned automation ${i.name}.`,percent:Math.round((b+1)/h.length*100),status:"done"})}catch(a){f.push(`Automation "${i.name}" failed to provision: ${a instanceof Error?a.message:"unknown error"}`),await d.onProgress?.({message:`Automation ${i.name} failed: ${a instanceof Error?a.message:"unknown error"}`,percent:Math.round((b+1)/h.length*100),status:"error"})}}return(await (0,$.GM)({force:!0})).workspaces.some(a=>a.id===b)||(f.push("Workspace snapshot did not refresh immediately after deploy."),await d.onProgress?.({message:"Workspace snapshot did not refresh immediately after deploy.",percent:100,status:"error"})),{provisioned:e,warnings:f}}async function aC(a,b,c,d={}){let e=[{agentId:c[a.team.persistentAgents.find(a=>a.enabled&&a.isPrimary)?.id??""],mission:a.deploy.firstMissions[0]},{agentId:c[a.team.persistentAgents.find(a=>a.enabled&&/review/i.test(a.role))?.id??""],mission:a.deploy.firstMissions[1]},{agentId:c[a.team.persistentAgents.find(a=>a.enabled&&/learn/i.test(a.role))?.id??""],mission:a.deploy.firstMissions[2]}].filter(a=>a.agentId&&a.mission),f=[];for(let[a,c]of(0===e.length&&await d.onProgress?.({message:"No planner kickoff missions. Finalizing deploy.",percent:100,status:"done"}),e.entries())){let g=Math.round(a/e.length*100);await d.onProgress?.({message:`Dispatching kickoff ${a+1} of ${e.length} to ${c.agentId}.`,percent:g,status:"active"});try{let g=await (0,$.xE)({agentId:c.agentId,workspaceId:b,mission:c.mission,thinking:"medium"});f.push(g.runId||g.dispatchId||c.agentId),await d.onProgress?.({message:`Kickoff mission queued for ${c.agentId}. ${g.runId?`Run ${g.runId}.`:`Dispatch ${g.dispatchId??"pending"}.`}`,percent:Math.round((a+1)/e.length*100),status:"done"})}catch{await d.onProgress?.({message:`Kickoff mission could not be started for ${c.agentId}.`,percent:Math.round((a+1)/e.length*100),status:"error"});continue}}return f}async function aD(a){var b;let c,d,e,f,g,h,i=Array.from(new Set([...(b=a).match(/https?:\/\/[^\s)]+/g)??[],...b.match(/\b(?:www\.)?[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)+(?:\/[^\s)]*)?/gi)??[]].map(a=>(function(a){if(a.includes("@"))return null;let b=a.replace(/[),.;!?]+$/g,""),c=/^https?:\/\//i.test(b)?b:`https://${b}`;try{let a=new URL(c);return a.hostname.includes(".")?a.toString():null}catch{return null}})(a)).filter(a=>!!a))),j=[],k=[],l=[],m=[],n=[];for(let a of i){if(function(a){try{let b=new URL(a),c=b.hostname.toLowerCase(),d=b.pathname.toLowerCase();return"github.com"===c||"gitlab.com"===c||"bitbucket.org"===c||d.endsWith(".git")}catch{return!1}}(a)){k.push(q({kind:"repo",label:aH(a),url:a,summary:"Repository candidate detected from the prompt.",details:["The architect will treat this link as a repository source."]}));continue}n.push(a)}for(let a of(await Promise.all(n.map(a=>aE(a)))))k.push(a.source),a.inferenceText&&l.push(a.inferenceText),!c&&a.companyName&&(c=a.companyName),!d&&a.mission&&(d=a.mission),!e&&a.offer&&(e=a.offer),!f&&a.targetCustomer&&(f=a.targetCustomer),!g&&a.revenueModel&&(g=a.revenueModel),m.push(...a.successSignals??[]),!h&&a.template&&(h=a.template),j.push(...a.confirmations);return{sources:k,confirmations:aO(j),inferenceText:[a.trim(),...l].filter(Boolean).join("\n"),companyName:c,mission:d,offer:e,targetCustomer:f,successSignals:aO(m).slice(0,3),revenueModel:g,template:h}}async function aE(a){let b=aH(a);try{var c,d,e,f,g;let h,i,j,k,l=await aF(a);if(!l.ok)throw Error(`HTTP ${l.status}`);let m=await l.text(),n=aI(m,["og:title","twitter:title"])??aJ(m,"title"),o=aI(m,["og:description","twitter:description","description"])??(c=m,aK(c)[0]),p=aJ(m,"h1"),r=aO([p??"",(d=m,aK(d)[0]),(e=m,aK(e)[1])]).filter(Boolean),s=[n??"",o??"",...r].filter(Boolean).join(" "),t=function(a){if(!a)return;let b=a.split(/[|:-]/)[0]?.trim();return b&&b.length>=2?b:void 0}(n),u=o||p,v=o||p,w=(h=`${n??""} ${o??""} ${p??""}`.toLowerCase(),/\b(telegram|discord|community|topluluk|content|newsletter|growth|seo)\b/.test(h)?"content":/\b(api|backend|service|infrastructure)\b/.test(h)?"backend":/\b(app|platform|software|product|dashboard)\b/.test(h)?"software":void 0),x=function(a){let b=a.replace(/\s+/g," ").trim(),c=b.toLowerCase();for(let a of[/\b(?:for|serving|built for|designed for|helps?|empowers?|supports?)\s+([^.?!:\n]+)/i,/\b(?:users?|customers?|audience|members?)\s*[:\-]\s*([^.?!\n]+)/i]){let c=b.match(a),d=(c?.[1]??"").replace(/\s+/g," ").replace(/^[\s:,-]+|[\s:,-]+$/g,"").trim();if(function(a){let b=a.toLowerCase();return!(!b||b.split(/\s+/).length>12||/\b(create|operate|grow|power|launch|build|manage|automate|using|with|through)\b/.test(b))&&/\b(user|users|customer|customers|audience|founder|founders|startup|startups|developer|developers|operator|operators|teams?|community|communities|members?|holders?|dao|nft|brand|brands|creator|creators|business|businesses)\b/.test(b)}(d))return d}let d=/\bweb3|onchain|crypto|blockchain|token\b/.test(c),e=/\bstartup|startups|founder|founders|business(?:es)?\b/.test(c),f=/\bcommunity|communities|member|members|holder|holders|nft|dao|governance\b/.test(c),g=/\bdeveloper|developers|builder|builders|engineer|engineers\b/.test(c),h=/\boperator|operators|moderator|moderators|admin|admins|ops\b/.test(c),i=/\bbrand|brands|creator|creators|marketing|marketers|growth teams?\b/.test(c);return e&&f?d?"Web3 startups and token-led communities":"Startups and their communities":e?d?"Web3 startups and founders":"Startups and founders":f?d?"DAO, NFT, and Web3 communities":"Community leads and members":g&&h?"Developers and internal operators":g?"Developers and technical teams":i?"Brands and growth teams":h?"Internal operators and moderators":void 0}(s),y=(f=s,g=w,i=f.toLowerCase(),j=[],("content"===g||/\bcommunity|telegram|discord|dao|governance|holder|member|members\b/.test(i))&&j.push("Higher weekly active participation from the target community"),/\bautonom|automate|automation|operate|agents?\b/.test(i)&&j.push("More work completed autonomously with less manual operator time"),/\bgrow|growth|startup|startups|business(?:es)?\b/.test(i)&&j.push("More active teams or ventures operating through the workspace"),aO(j).slice(0,3)),z=(k=s.toLowerCase(),/\bsubscription|pricing|plan\b/.test(k)?"Subscription software":/\bprofit share|share in company profits|revenue share\b/.test(k)?"Revenue share or profit participation":/\bnft holders?\b|\btoken holders?\b|\btoken-gated\b/.test(k)?"Token or membership-gated participation":void 0),A=[];return o||A.push(`I read ${b} but still need a concise mission sentence.`),p||x||A.push(`I inspected ${b}, but the target customer is still not obvious from the page alone.`),{source:q({kind:"website",label:t||b,url:a,summary:o||p||"Website context captured from the linked page.",details:r}),confirmations:A,inferenceText:[t?`Company name: ${t}`:"",u?`Mission: ${u}`:"",v?`Offer: ${v}`:"",x?`Target customer: ${x}`:"",z?`Revenue model: ${z}`:"",y.length>0?`Success signals: ${y.join(" | ")}`:"",r.length>0?`Website notes: ${r.join(" | ")}`:""].filter(Boolean).join("\n"),companyName:t,mission:u,offer:v,targetCustomer:x,successSignals:y,revenueModel:z,template:w}}catch(c){return{source:q({kind:"website",label:b,url:a,summary:"Website could not be inspected automatically.",details:[],status:"error",error:c instanceof Error?c.message:"Unknown website inspection error."}),confirmations:[`I could not inspect ${b}. Confirm the company context manually if this link matters.`],inferenceText:""}}}async function aF(a){let b,c=new AbortController;try{let d=new Promise((a,d)=>{b=setTimeout(()=>{c.abort(),d(Error(`Website inspection timed out after ${Math.ceil(3.5)} seconds.`))},3500)});return await Promise.race([fetch(a,{redirect:"follow",signal:c.signal,headers:{"User-Agent":"OpenClaw Mission Control Planner/0.1"},cache:"no-store"}),d])}finally{b&&clearTimeout(b)}}function aG(a,b){let c,d=structuredClone(a);return b.template&&"software"===d.workspace.template&&b.template!==d.workspace.template&&(d=F(d,b.template)),!d.company.name&&b.companyName&&(d.company.name=b.companyName),(!d.workspace.name||(c=d.workspace.name.toLowerCase(),/\b(yapal[ıi]m|ekleyelim|başlatal[ıi]m|kural[ıi]m|olsun|diyelim|verelim|koyal[ıi]m)\b/.test(c)))&&b.companyName&&(d.workspace.name=b.companyName),!d.company.mission&&b.mission&&(d.company.mission=b.mission),!d.product.offer&&b.offer&&(d.product.offer=b.offer),!d.company.targetCustomer&&b.targetCustomer&&(d.company.targetCustomer=b.targetCustomer),!d.product.revenueModel&&b.revenueModel&&(d.product.revenueModel=b.revenueModel),b.successSignals?.length&&(d.company.successSignals=aO([...d.company.successSignals,...b.successSignals]).slice(0,3)),d}function aH(a){try{return new URL(a).hostname.replace(/^www\./,"")}catch{return a}}function aI(a,b){for(let c of b){let b=function(a,b){for(let c of[RegExp(`<meta[^>]+property=["']${aM(b)}["'][^>]+content=["']([^"']+)["'][^>]*>`,"i"),RegExp(`<meta[^>]+content=["']([^"']+)["'][^>]+property=["']${aM(b)}["'][^>]*>`,"i"),RegExp(`<meta[^>]+name=["']${aM(b)}["'][^>]+content=["']([^"']+)["'][^>]*>`,"i"),RegExp(`<meta[^>]+content=["']([^"']+)["'][^>]+name=["']${aM(b)}["'][^>]*>`,"i")]){let b=a.match(c);if(b?.[1])return aL(b[1])}}(a,c);if(b)return b}}function aJ(a,b){let c=a.match(RegExp(`<${b}[^>]*>([\\s\\S]*?)<\\/${b}>`,"i"));return c?.[1]?aL(c[1]):void 0}function aK(a){return Array.from(a.matchAll(/<p[^>]*>([\s\S]*?)<\/p>/gi)).map(a=>aL(a[1])).filter(a=>a.length>=40).slice(0,3)}function aL(a){return a.replace(/<[^>]+>/g," ").replace(/\s+/g," ").trim().replace(/&amp;/g,"&").replace(/&quot;/g,'"').replace(/&#39;/g,"'").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&nbsp;/g," ")}function aM(a){return a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function aN(a){return a.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function aO(a){return Array.from(new Set(a.filter(Boolean)))}}};