@profoundlogic/coderflow-server 0.2.8 → 0.2.9

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 (143) hide show
  1. package/dist/coder-server.js +1 -1
  2. package/dist/config/cli-models.json +1 -0
  3. package/dist/config.js +1 -1
  4. package/dist/lib/agent-keepalive.js +1 -1
  5. package/dist/lib/api-keys.js +1 -1
  6. package/dist/lib/apiKeys.js +1 -1
  7. package/dist/lib/app-server-ports.js +1 -1
  8. package/dist/lib/auto-judge.js +1 -1
  9. package/dist/lib/basic-auth.js +1 -1
  10. package/dist/lib/build-history.js +1 -1
  11. package/dist/lib/build-output-service.js +1 -1
  12. package/dist/lib/build-scheduler.js +1 -1
  13. package/dist/lib/build-service.js +1 -1
  14. package/dist/lib/ca-certificates.js +1 -1
  15. package/dist/lib/claude-oauth-refresh.js +1 -1
  16. package/dist/lib/cli/build.js +1 -1
  17. package/dist/lib/cli/config-command.js +1 -1
  18. package/dist/lib/cli/config.js +1 -1
  19. package/dist/lib/cli/create-user.js +1 -1
  20. package/dist/lib/cli/init.js +1 -1
  21. package/dist/lib/cli/jira.js +1 -1
  22. package/dist/lib/cli/license.js +1 -1
  23. package/dist/lib/cli/server-manager.js +1 -1
  24. package/dist/lib/container-tokens.js +1 -1
  25. package/dist/lib/data-dir.js +1 -1
  26. package/dist/lib/deployment-history.js +1 -1
  27. package/dist/lib/deployment-service.js +1 -1
  28. package/dist/lib/docker-utils.js +1 -1
  29. package/dist/lib/email.js +1 -1
  30. package/dist/lib/emailTemplates.js +1 -1
  31. package/dist/lib/entitlement.js +1 -1
  32. package/dist/lib/fetch-utils.js +1 -1
  33. package/dist/lib/git-commit-details-route.js +1 -1
  34. package/dist/lib/git-history-diff-guardrails.js +1 -1
  35. package/dist/lib/git-provider-service.js +1 -1
  36. package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
  37. package/dist/lib/git-provider-setup/index.js +1 -1
  38. package/dist/lib/git-provider-setup/setup-factory.js +1 -1
  39. package/dist/lib/git-provider-setup/setup-interface.js +1 -1
  40. package/dist/lib/git-providers/azure-devops-provider.js +1 -1
  41. package/dist/lib/git-providers/github-app-provider.js +1 -1
  42. package/dist/lib/git-providers/index.js +1 -1
  43. package/dist/lib/git-providers/provider-factory.js +1 -1
  44. package/dist/lib/git-providers/provider-interface.js +1 -1
  45. package/dist/lib/github-urls.js +1 -1
  46. package/dist/lib/group-objective-linking.js +1 -1
  47. package/dist/lib/jira-client.js +1 -1
  48. package/dist/lib/judge-blinding.js +1 -1
  49. package/dist/lib/logger.js +1 -1
  50. package/dist/lib/model-fetcher.js +1 -1
  51. package/dist/lib/notifications.js +1 -1
  52. package/dist/lib/oidc-auth.js +1 -1
  53. package/dist/lib/oidc-device-flow.js +1 -1
  54. package/dist/lib/passwordTokens.js +1 -1
  55. package/dist/lib/pin-cascade.js +1 -1
  56. package/dist/lib/provider-accounts.js +1 -1
  57. package/dist/lib/provider-oauth.js +1 -1
  58. package/dist/lib/provider-profile.js +1 -1
  59. package/dist/lib/provider-token-refresh.js +1 -1
  60. package/dist/lib/request-url.js +1 -1
  61. package/dist/lib/rewind.js +1 -1
  62. package/dist/lib/roles.js +1 -1
  63. package/dist/lib/secrets.js +1 -1
  64. package/dist/lib/setup-repo-git-auth.js +1 -1
  65. package/dist/lib/state-capture.js +1 -1
  66. package/dist/lib/static-files.js +1 -1
  67. package/dist/lib/task-name-generator.js +1 -1
  68. package/dist/lib/user-git-oauth.js +1 -1
  69. package/dist/lib/user-git-tokens.js +1 -1
  70. package/dist/lib/users.js +1 -1
  71. package/dist/middleware/requireAuth.js +1 -1
  72. package/dist/middleware/requireInit.js +1 -1
  73. package/dist/middleware/requirePermission.js +1 -1
  74. package/dist/package.json +1 -1
  75. package/dist/routes/apiKeys.js +1 -1
  76. package/dist/routes/auth-oidc.js +1 -1
  77. package/dist/routes/auth.js +1 -1
  78. package/dist/routes/build.js +1 -1
  79. package/dist/routes/containers.js +1 -1
  80. package/dist/routes/deploy-task.js +1 -1
  81. package/dist/routes/environment-management.js +1 -1
  82. package/dist/routes/environments.js +1 -1
  83. package/dist/routes/external-skills.js +1 -1
  84. package/dist/routes/git-credentials.js +1 -1
  85. package/dist/routes/git-oauth.js +1 -1
  86. package/dist/routes/git-provider-setup.js +1 -1
  87. package/dist/routes/health.js +1 -1
  88. package/dist/routes/jira.js +1 -1
  89. package/dist/routes/objective-management.js +1 -1
  90. package/dist/routes/password.js +1 -1
  91. package/dist/routes/prompt.js +1 -1
  92. package/dist/routes/provider-auth.js +1 -1
  93. package/dist/routes/qa.js +1 -1
  94. package/dist/routes/settings.js +1 -1
  95. package/dist/routes/skill-management.js +1 -1
  96. package/dist/routes/skills.js +1 -1
  97. package/dist/routes/tasks.js +1 -1
  98. package/dist/routes/templates.js +1 -1
  99. package/dist/routes/test-task.js +1 -1
  100. package/dist/routes/test.js +1 -1
  101. package/dist/routes/users.js +1 -1
  102. package/dist/routes/visualizations.js +1 -1
  103. package/dist/scripts/create-user.js +1 -1
  104. package/dist/shipped-skills/skill-editor/SKILL.md +124 -231
  105. package/dist/start.js +1 -1
  106. package/dist/web-ui/public/activity-detail-modal.js +1 -1
  107. package/dist/web-ui/public/activity-feed.js +1 -1
  108. package/dist/web-ui/public/activity-formatters.js +1 -1
  109. package/dist/web-ui/public/agent-event-parser.js +1 -1
  110. package/dist/web-ui/public/app.js +1 -1
  111. package/dist/web-ui/public/approve-dialog.js +1 -1
  112. package/dist/web-ui/public/comments-widget.js +1 -1
  113. package/dist/web-ui/public/diff-utils.js +1 -1
  114. package/dist/web-ui/public/environments.css +81 -1
  115. package/dist/web-ui/public/environments.html +8 -3
  116. package/dist/web-ui/public/environments.js +1 -1
  117. package/dist/web-ui/public/feedback-widget.js +1 -1
  118. package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
  119. package/dist/web-ui/public/git-history.html +1 -1
  120. package/dist/web-ui/public/git-history.js +1 -1
  121. package/dist/web-ui/public/git-status.js +1 -1
  122. package/dist/web-ui/public/index.js +1 -1
  123. package/dist/web-ui/public/login.js +1 -1
  124. package/dist/web-ui/public/markdown-editor.js +1 -1
  125. package/dist/web-ui/public/markdown-file-editor.js +1 -1
  126. package/dist/web-ui/public/modal-maximize.js +1 -1
  127. package/dist/web-ui/public/notifications.js +1 -1
  128. package/dist/web-ui/public/server-health.js +1 -1
  129. package/dist/web-ui/public/settings.js +1 -1
  130. package/dist/web-ui/public/setup-password.js +1 -1
  131. package/dist/web-ui/public/skills.css +110 -3
  132. package/dist/web-ui/public/skills.html +7 -4
  133. package/dist/web-ui/public/skills.js +1 -1
  134. package/dist/web-ui/public/sse-client.js +1 -1
  135. package/dist/web-ui/public/sse-shared-worker.js +1 -1
  136. package/dist/web-ui/public/styles.css +128 -1
  137. package/dist/web-ui/public/task.html +22 -1
  138. package/dist/web-ui/public/task.js +1 -1
  139. package/dist/web-ui/public/terminal.js +1 -1
  140. package/dist/web-ui/public/theme.js +1 -1
  141. package/dist/web-ui/public/users.js +1 -1
  142. package/dist/web-ui/public/variant-grouping.js +1 -1
  143. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- (function(_0x4a0035,_0x5216bc){const _0x46c982={_0x42775d:0x17e,_0x5daa3e:0x154,_0x589791:0x14f,_0x3c9ce6:0x1a7,_0x3c8437:0x1ae,_0x1e55a0:0x1af,_0x1af222:0x1e3,_0x55e697:0x244,_0x24db4b:0x157,_0x1483d7:0x1a4,_0x38f6d4:0x228,_0x48a47e:0x202,_0x4dd41e:0x218,_0x3a5bcc:0x222,_0x385ec2:0x25a,_0x1ae6c0:0x211,_0x5b8d9c:0x22d,_0x4c255f:0x193},_0x4a4093={_0x351b2f:0x2a};function _0x2f7e71(_0xf4226e,_0x13ebbb,_0x47fa53,_0x501226){return _0x3815(_0x13ebbb- -0x3b6,_0xf4226e);}function _0x315acd(_0x297742,_0x538bd5,_0x3b2f06,_0x368cab){return _0x3815(_0x368cab-_0x4a4093._0x351b2f,_0x297742);}const _0x3bc14a=_0x4a0035();while(!![]){try{const _0x317537=parseInt(_0x2f7e71(-0x19c,-_0x46c982._0x42775d,-_0x46c982._0x5daa3e,-_0x46c982._0x589791))/(0xda+-0x1a76+0x199d)+parseInt(_0x2f7e71(-_0x46c982._0x3c9ce6,-_0x46c982._0x3c8437,-_0x46c982._0x1e55a0,-_0x46c982._0x1af222))/(-0x229d*-0x1+-0x97*-0x39+0x6*-0xb5f)*(parseInt(_0x315acd(0x1f9,_0x46c982._0x55e697,0x237,0x21c))/(-0x6b9*-0x1+-0xd1d*-0x2+-0x20f0))+parseInt(_0x2f7e71(-0x161,-0x18b,-_0x46c982._0x24db4b,-_0x46c982._0x1483d7))/(0x3cd*-0x1+-0x2329+0x1*0x26fa)+-parseInt(_0x315acd(0x269,_0x46c982._0x38f6d4,0x23c,0x24f))/(-0x1ada+-0x470+-0x479*-0x7)+parseInt(_0x315acd(0x24e,_0x46c982._0x48a47e,_0x46c982._0x4dd41e,_0x46c982._0x3a5bcc))/(-0xa51+0x2505*0x1+-0x1aae)+parseInt(_0x315acd(_0x46c982._0x385ec2,0x21b,_0x46c982._0x1ae6c0,_0x46c982._0x5b8d9c))/(-0x207c+-0x15c5*-0x1+-0xa*-0x113)+-parseInt(_0x2f7e71(-0x1a1,-_0x46c982._0x4c255f,-0x17c,-0x192))/(0x2571+-0xf*-0x1eb+-0x56*0xc5);if(_0x317537===_0x5216bc)break;else _0x3bc14a['push'](_0x3bc14a['shift']());}catch(_0x59297b){_0x3bc14a['push'](_0x3bc14a['shift']());}}}(_0x3058,0xfe3b+0x90ac1*-0x3+0x1*0x28fe91));function _0x3815(_0x51d102,_0x4b1189){_0x51d102=_0x51d102-(0x1*-0x15e1+-0x19b*0x5+0x1fc0);const _0x39feee=_0x3058();let _0x37ab45=_0x39feee[_0x51d102];if(_0x3815['XMFLAf']===undefined){var _0x4c8abc=function(_0x21aee4){const _0x185e55='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3d8a67='',_0x32be29='';for(let _0x5c9013=-0x257f*0x1+-0xd85+0x3304,_0x4aaa84,_0x1f77a3,_0x59261c=-0x1d*-0x1d+-0x2451*0x1+0x2108;_0x1f77a3=_0x21aee4['charAt'](_0x59261c++);~_0x1f77a3&&(_0x4aaa84=_0x5c9013%(0x706*0x5+-0x215*-0x2+-0x2744)?_0x4aaa84*(0x1*0xf14+0xd9a+-0x1c6e)+_0x1f77a3:_0x1f77a3,_0x5c9013++%(-0x9*-0x158+0x18bd+-0x24d1))?_0x3d8a67+=String['fromCharCode'](-0x26f*-0xb+-0x207c+0x6b6&_0x4aaa84>>(-(-0x10*0x16a+0x3f7*-0x2+0x1e90)*_0x5c9013&-0x912+0x1*-0x1549+0x1e61)):0x1ddf+-0x2*0xaa3+-0x899){_0x1f77a3=_0x185e55['indexOf'](_0x1f77a3);}for(let _0x5d2ab4=0x2f2+-0x21*-0xd2+0xe2*-0x22,_0x3bd3b2=_0x3d8a67['length'];_0x5d2ab4<_0x3bd3b2;_0x5d2ab4++){_0x32be29+='%'+('00'+_0x3d8a67['charCodeAt'](_0x5d2ab4)['toString'](-0x2*-0x2d9+0x10e7*0x1+0x1689*-0x1))['slice'](-(0x8*0x2d7+0x8*-0x2c5+-0x47*0x2));}return decodeURIComponent(_0x32be29);};_0x3815['NonFHJ']=_0x4c8abc,_0x3815['RVRMia']={},_0x3815['XMFLAf']=!![];}const _0x4cad55=_0x39feee[0x39*-0x1d+-0x1*0x1d1b+-0x11c8*-0x2],_0x573a6b=_0x51d102+_0x4cad55,_0x2ece48=_0x3815['RVRMia'][_0x573a6b];return!_0x2ece48?(_0x37ab45=_0x3815['NonFHJ'](_0x37ab45),_0x3815['RVRMia'][_0x573a6b]=_0x37ab45):_0x37ab45=_0x2ece48,_0x37ab45;}import{createUser,findUserByUsername}from'../lib/users.js';import{logger}from'../lib/logger.js';async function main(){const _0x2d8a19={_0x32bc0c:0x182,_0x9d6be4:0x169,_0x400af2:0x191,_0x275235:0x1aa,_0x1d7eab:0x1ff,_0x39939a:0x185,_0x5c2fbe:0x175,_0x38874e:0x12d,_0x2c978c:0x12a,_0x134f43:0x14e,_0x3dc762:0x184,_0x4572f3:0x179,_0x4e71fb:0x107,_0x356b0a:0x154,_0x582547:0x15d,_0x3ebcf5:0x1db,_0x50bea9:0x1d3,_0x1cf4bf:0x19f,_0x274161:0x18d,_0x4a30d7:0x1a7,_0x44cc9a:0x1b1,_0x13806f:0x1bf,_0x309bf9:0x12b,_0x1c4e9a:0x137,_0x5e97aa:0x1cd,_0x122360:0x18b,_0x4f1aa3:0x1b7,_0x6a8e4f:0x1b7,_0x55b358:0x11f,_0x307632:0x15c,_0x37bfb4:0x17a,_0x1c7df2:0x178,_0x597111:0xfa,_0x4fe3ab:0x12f,_0x1d0bfc:0x1ab,_0x317039:0x1c8,_0x3770da:0x1d7,_0x25b463:0x120,_0x294901:0x11c,_0x279920:0x196,_0x12a979:0x171,_0x1c794b:0x195,_0x44e6e3:0x1ca,_0x35d5cc:0x12c,_0x1c3a69:0x11a,_0x28fe5d:0x1cf,_0x1ee021:0x1da,_0x23a395:0x192,_0x5bcb67:0x14f,_0x2bf185:0x1b6,_0x4b5ef8:0x18a,_0x1cc569:0x190,_0x1d1d36:0x176,_0x225845:0x14f,_0x4cccab:0x173,_0x3013a6:0x18f,_0x5e43e0:0x105,_0x17fbee:0x168,_0x5a9d83:0x18c,_0xc0ccb2:0x162,_0x172cdf:0x1b8,_0x51704a:0x18f,_0x6851d6:0x1bf,_0x154c53:0x165,_0xed0a9f:0x159,_0x180f70:0x1c4,_0x269dc3:0x1c6,_0x5d7c7a:0xfe,_0x355806:0x151,_0x507ed:0x120,_0x56943b:0x116,_0x5d3f21:0x138,_0x37dfc5:0x107,_0x1f980a:0x134,_0x2a5236:0x150,_0x2b973a:0x140,_0x4932cf:0x199,_0x4c8277:0x197,_0x34c2fb:0x19c,_0x49b734:0x1a6,_0x1f9c22:0x1c0,_0x33630a:0x188,_0xd047e8:0x16f,_0x4b46f4:0x160,_0x463946:0x180,_0x2d06a8:0x1e7,_0x269be5:0x142,_0x55de2e:0x136,_0x1c0b83:0x14c,_0x14ef36:0x167,_0x59b128:0x1c3,_0x583a6b:0x1de,_0x3fde7e:0x19b,_0x1e05ff:0x127,_0x12eae3:0x144,_0x1b5ed9:0x13d,_0xafb8a2:0x13e,_0x29948b:0x155,_0x3bb205:0x124,_0x46f839:0x142,_0xf9e643:0x13c,_0x32e48e:0x164,_0x257c82:0x166,_0x317b75:0x15b,_0x3b4228:0x146,_0x1c31ad:0x13c,_0x5d5bb2:0xfd,_0x56d823:0x119,_0x3b8aba:0x15e,_0x340fdd:0x15f,_0x3facb4:0xf3,_0x2a58f2:0x16b,_0x2bd6b7:0x1a4,_0x188d78:0x182,_0x1e70c4:0x1ac,_0x1fd00a:0x170,_0x4978f6:0x176,_0x4b4b87:0x185,_0x40f58f:0x1be,_0x4163a1:0x198,_0x24baab:0x187,_0x5f243c:0x10f,_0x3d1d9c:0x1a2,_0x420167:0x172,_0x5e54f3:0x141,_0x319383:0x19f,_0x12713a:0x142,_0x3e8e3c:0x138,_0x462396:0x161,_0x3465bd:0x179,_0x1c4368:0xd8,_0x4920af:0x126,_0x2674de:0x16a,_0x4a2a98:0x180,_0x3b853d:0x1d8,_0x4f11a3:0x1c2,_0x1cc80f:0x199,_0x34a46c:0x14c,_0x348ba7:0x12d,_0x49637e:0x132,_0xba305d:0x13b,_0x4bda5e:0x152,_0x1861b9:0x17f,_0x2ba355:0x1a4,_0x46cd02:0x10d,_0x5b9f73:0x132,_0x3ffc26:0x115,_0x15d26b:0x138,_0x2df728:0x17d,_0x5127ba:0x1a0,_0x16152d:0x161,_0x13b00c:0x1a6,_0x13fd9c:0x18d,_0x387e0d:0x192,_0x10b50c:0x18f,_0x555616:0x133,_0x178c47:0x12c,_0x9f1c2b:0x193,_0x41ca04:0x17d,_0x27fd1a:0x1f8,_0x410813:0x15a,_0x32e026:0x15d,_0x423282:0x16c,_0x294605:0x110,_0x5089d4:0x117,_0x1d72e9:0x101,_0x311e16:0xe3,_0x318169:0x113,_0x2fecab:0x16f,_0x4e9a0f:0x187,_0x141063:0x1d0,_0x4e6926:0x1fc,_0x4b263f:0x13d,_0x37d380:0x177,_0x3d2474:0x157,_0x1e8054:0x163,_0x2f430e:0x14d,_0x45f04c:0x13c,_0x129ada:0x130,_0x48af8d:0x1a7,_0x4b7cb2:0x17c,_0x13bb9e:0x158,_0x28b94c:0x1a8,_0x4fe299:0x1af,_0x5c3af0:0x1d1,_0x53570e:0x1c7,_0xdfb335:0x1c3,_0x4ac396:0x1aa,_0x881586:0x179,_0x5c860d:0x1a3,_0x402411:0x17b,_0x32fc0c:0x1a8,_0x2b09b5:0x1a5,_0x853440:0xea,_0x310501:0x123,_0x4db0b8:0x186,_0x24761f:0x15e,_0x4e2629:0x1a6,_0x30d1dd:0x1c7,_0x3b377d:0x1d2,_0x5635e0:0x1a1,_0x33901a:0x1c0,_0x48c2e7:0x153,_0x1eeb6e:0x142,_0x47c147:0x134,_0x2ee86c:0x11e,_0x16af73:0x150,_0x598147:0x15a,_0x2eea6d:0x14c,_0x22cb93:0xf8,_0x5b711b:0x124,_0x5e6f4f:0xf3,_0x5a1c72:0x145,_0x140544:0x159,_0x3d8650:0x109,_0x448422:0x18f,_0x5cd259:0x1b2},_0x6e8e3b={_0xa56ddc:0xd3};function _0x17c935(_0x33ebee,_0x3c608f,_0x5ee1da,_0x43358a){return _0x3815(_0x5ee1da- -_0x6e8e3b._0xa56ddc,_0x3c608f);}const _0x2ac125={'RxoQo':function(_0x597277,_0x521962){return _0x597277<_0x521962;},'iKevd':_0x578273(_0x2d8a19._0x32bc0c,_0x2d8a19._0x9d6be4,_0x2d8a19._0x400af2,0x140)+_0x578273(0x1f4,0x1d2,_0x2d8a19._0x275235,_0x2d8a19._0x1d7eab)+_0x578273(0x1a0,_0x2d8a19._0x39939a,_0x2d8a19._0x5c2fbe,0x1b8),'PkOFm':_0x17c935(0x138,0x172,0x13f,0x15c),'AdVgR':_0x17c935(_0x2d8a19._0x38874e,0x11d,0x148,_0x2d8a19._0x2c978c)+_0x17c935(_0x2d8a19._0x134f43,_0x2d8a19._0x3dc762,0x15c,_0x2d8a19._0x4572f3)+_0x17c935(_0x2d8a19._0x4e71fb,0x149,0x122,_0x2d8a19._0x356b0a)+_0x578273(_0x2d8a19._0x582547,0x182,0x15c,0x17e)+_0x578273(_0x2d8a19._0x3ebcf5,0x1c5,_0x2d8a19._0x50bea9,0x1a1)+'com\x20\x22Admin'+_0x578273(_0x2d8a19._0x1cf4bf,0x1b0,_0x2d8a19._0x274161,_0x2d8a19._0x4a30d7)+_0x578273(_0x2d8a19._0x44cc9a,0x1ca,0x1f8,_0x2d8a19._0x13806f)+_0x17c935(_0x2d8a19._0x309bf9,0x12e,0x126,_0x2d8a19._0x1c4e9a),'duYoz':'\x20\x20username'+'\x20\x20-\x20Unique'+'\x20username\x20'+'for\x20login','iMChK':_0x578273(0x1e6,0x1ce,_0x2d8a19._0x5e97aa,0x1b1)+_0x578273(0x1a3,_0x2d8a19._0x122360,_0x2d8a19._0x4f1aa3,_0x2d8a19._0x6a8e4f)+_0x17c935(0x165,0x158,0x14a,0x134)+_0x578273(_0x2d8a19._0x275235,0x1a0,0x1d4,_0x2d8a19._0x5c2fbe)+_0x17c935(_0x2d8a19._0x55b358,_0x2d8a19._0x38874e,0x144,0x127),'pKnVD':_0x578273(_0x2d8a19._0x307632,_0x2d8a19._0x37bfb4,0x19a,_0x2d8a19._0x1c7df2)+_0x17c935(0x106,_0x2d8a19._0x597111,_0x2d8a19._0x4fe3ab,0x10c)+_0x578273(_0x2d8a19._0x4572f3,_0x2d8a19._0x1d0bfc,_0x2d8a19._0x317039,_0x2d8a19._0x3770da)+'r.js\x20<user'+_0x578273(0x16f,0x18d,0x182,0x17a)+_0x17c935(0x11d,_0x2d8a19._0x25b463,_0x2d8a19._0x294901,0x118)+'\x20<password'+_0x578273(_0x2d8a19._0x279920,_0x2d8a19._0x12a979,0x18a,0x1a1),'XwREL':'\x20\x20name\x20\x20\x20\x20'+_0x578273(0x163,_0x2d8a19._0x1c794b,_0x2d8a19._0x44e6e3,0x1bd)+_0x17c935(_0x2d8a19._0x35d5cc,0xf2,_0x2d8a19._0x1c3a69,0x11b)+_0x578273(0x1b3,0x1c8,_0x2d8a19._0x28fe5d,_0x2d8a19._0x1ee021),'eiukB':_0x17c935(0x15d,_0x2d8a19._0x23a395,0x169,_0x2d8a19._0x5bcb67)+_0x578273(0x19f,0x19e,0x18a,0x1be)+_0x578273(0x1c0,0x1ba,0x1c5,_0x2d8a19._0x2bf185)+'n\x22\x20or\x20\x22use'+_0x578273(_0x2d8a19._0x4b5ef8,0x170,_0x2d8a19._0x1cc569,0x160)+_0x578273(0x1a8,_0x2d8a19._0x1d1d36,0x184,0x179),'XEnDO':function(_0x1d8a40,_0x5e9674){return _0x1d8a40!==_0x5e9674;},'fncPr':_0x578273(_0x2d8a19._0x225845,_0x2d8a19._0x4cccab,0x19e,_0x2d8a19._0x3013a6),'PuOdC':'user','MmZBf':_0x17c935(0x15e,_0x2d8a19._0x5e43e0,0x137,0x151)+_0x578273(_0x2d8a19._0x17fbee,_0x2d8a19._0x5a9d83,0x181,0x163)+_0x578273(0x14c,0x175,0x182,_0x2d8a19._0xc0ccb2)+_0x578273(_0x2d8a19._0x172cdf,0x19a,0x1b4,0x191)+_0x578273(_0x2d8a19._0x51704a,_0x2d8a19._0x279920,0x17c,_0x2d8a19._0x6851d6)+'.','vuljm':function(_0x32704d,_0x36ecfd){return _0x32704d(_0x36ecfd);},'dOtYO':_0x17c935(0x127,_0x2d8a19._0x154c53,_0x2d8a19._0xed0a9f,0x145)+'ls:','JvvoU':_0x578273(_0x2d8a19._0x180f70,_0x2d8a19._0x269dc3,0x1e0,0x1c4)+_0x17c935(_0x2d8a19._0x5d7c7a,_0x2d8a19._0x355806,_0x2d8a19._0x507ed,0xfa)+'r'},_0x3bd3d8=process[_0x17c935(_0x2d8a19._0x56943b,_0x2d8a19._0x2c978c,_0x2d8a19._0x5d3f21,0x114)][_0x17c935(0xde,0xea,_0x2d8a19._0x37dfc5,0x12a)](0x120b*0x1+-0x1045+-0x1c4);if(_0x2ac125['RxoQo'](_0x3bd3d8[_0x17c935(_0x2d8a19._0x1f980a,_0x2d8a19._0x2a5236,_0x2d8a19._0x2b973a,0x15a)],0x1*-0x641+-0x269*0x7+0x1724*0x1)){const _0x3599b6=_0x2ac125['iKevd'][_0x578273(_0x2d8a19._0x4932cf,0x1b9,_0x2d8a19._0x4c8277,0x18b)]('|');let _0x1c1e80=-0x14*-0x153+0x8*0x342+-0x348c;while(!![]){switch(_0x3599b6[_0x1c1e80++]){case'0':console[_0x578273(_0x2d8a19._0x34c2fb,_0x2d8a19._0x49b734,_0x2d8a19._0x1f9c22,_0x2d8a19._0x180f70)](_0x2ac125[_0x17c935(_0x2d8a19._0x33630a,_0x2d8a19._0xd047e8,_0x2d8a19._0x4b46f4,0x13f)]);continue;case'1':console['error'](_0x2ac125[_0x578273(_0x2d8a19._0x463946,0x1b2,_0x2d8a19._0x2d06a8,0x18f)]);continue;case'2':console[_0x17c935(0x13c,0x12f,_0x2d8a19._0x269be5,_0x2d8a19._0x55de2e)](_0x17c935(0x160,0x11d,0x12c,0x11b)+'\x20\x20-\x20User\x20e'+_0x17c935(0x161,_0x2d8a19._0x1c0b83,_0x2d8a19._0x14ef36,0x137)+'ss');continue;case'3':console['error'](_0x2ac125[_0x578273(0x1db,_0x2d8a19._0x59b128,_0x2d8a19._0x583a6b,0x1aa)]);continue;case'4':console[_0x578273(_0x2d8a19._0x3fde7e,0x1a6,0x180,0x19b)](_0x2ac125[_0x17c935(0x12d,_0x2d8a19._0x1e05ff,0x12a,_0x2d8a19._0x12eae3)]);continue;case'5':console['error'](_0x2ac125[_0x17c935(_0x2d8a19._0x1f980a,_0x2d8a19._0x1b5ed9,_0x2d8a19._0xafb8a2,_0x2d8a19._0x29948b)]);continue;case'6':console[_0x578273(0x1cf,0x1a6,0x19a,_0x2d8a19._0x4a30d7)]('Arguments:');continue;case'7':console[_0x17c935(_0x2d8a19._0x3bb205,0x164,_0x2d8a19._0x46f839,_0x2d8a19._0xf9e643)]('');continue;case'8':console[_0x17c935(0x119,0x16a,0x142,0x166)](_0x2ac125['XwREL']);continue;case'9':console[_0x17c935(_0x2d8a19._0x32e48e,_0x2d8a19._0x257c82,0x142,_0x2d8a19._0x317b75)](_0x2ac125[_0x17c935(_0x2d8a19._0x3b4228,0x10f,0x139,_0x2d8a19._0x1c31ad)]);continue;case'10':process[_0x17c935(0x10c,_0x2d8a19._0x5d5bb2,_0x2d8a19._0x56d823,0x117)](0xf73+0x1555+0x541*-0x7);continue;case'11':console['error']('');continue;}break;}}function _0x578273(_0x4f7752,_0x2e0cb3,_0x231e74,_0x28e0b5){return _0x3815(_0x2e0cb3- -0x6f,_0x28e0b5);}const [_0x15e289,_0x1fa3ff,_0x47040b,_0x38a998,_0x8e023c=_0x17c935(_0x2d8a19._0x3b8aba,0x113,0x141,_0x2d8a19._0x340fdd)]=_0x3bd3d8;_0x2ac125[_0x17c935(_0x2d8a19._0x3facb4,0x103,0x10a,0x136)](_0x8e023c,_0x2ac125[_0x17c935(0x176,0x183,_0x2d8a19._0x2a58f2,0x14e)])&&_0x2ac125['XEnDO'](_0x8e023c,_0x2ac125[_0x578273(0x1b1,0x1b3,0x1a9,_0x2d8a19._0x2bd6b7)])&&(console[_0x578273(_0x2d8a19._0x188d78,_0x2d8a19._0x49b734,_0x2d8a19._0x59b128,0x181)](_0x578273(0x18d,0x1be,_0x2d8a19._0x1e70c4,0x1bf)+'alid\x20role\x20'+'\x22'+_0x8e023c+(_0x17c935(0x170,_0x2d8a19._0x1fd00a,0x157,_0x2d8a19._0x4978f6)+'\x20\x22admin\x22\x20o'+_0x578273(_0x2d8a19._0x4b4b87,0x1b5,0x1e3,0x1a5))),process['exit'](0x1976+-0x265+-0x1710));const _0x5c6007=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;!_0x5c6007['test'](_0x1fa3ff)&&(console['error'](_0x578273(0x19a,_0x2d8a19._0x40f58f,0x1d8,_0x2d8a19._0x4163a1)+'alid\x20email'+_0x578273(0x18a,_0x2d8a19._0x24baab,0x154,0x176)+_0x1fa3ff+'\x22.'),process[_0x17c935(_0x2d8a19._0x5f243c,0xf8,_0x2d8a19._0x56d823,0x14d)](-0x1610+-0x4*-0x2da+0xaa9*0x1));const _0x4b10ac=/^[a-zA-Z0-9_-]+$/;!_0x4b10ac[_0x578273(_0x2d8a19._0x3d1d9c,_0x2d8a19._0x420167,_0x2d8a19._0x5e54f3,_0x2d8a19._0x319383)](_0x15e289)&&(console[_0x17c935(0x132,0x13b,_0x2d8a19._0x12713a,0x13b)](_0x17c935(0x136,_0x2d8a19._0x3e8e3c,0x15a,0x13f)+_0x17c935(_0x2d8a19._0x462396,_0x2d8a19._0x3465bd,0x14b,_0x2d8a19._0x2c978c)+_0x17c935(0x134,_0x2d8a19._0x1c4368,0x108,_0x2d8a19._0x4920af)+_0x15e289+(_0x578273(0x13f,_0x2d8a19._0x2674de,_0x2d8a19._0x4a2a98,0x149)+_0x578273(_0x2d8a19._0x3b853d,_0x2d8a19._0x4f11a3,0x1d3,_0x2d8a19._0x1cc80f)+_0x17c935(0x160,_0x2d8a19._0x34a46c,_0x2d8a19._0x348ba7,0x151)+_0x17c935(_0x2d8a19._0x49637e,0x136,_0x2d8a19._0xba305d,0x10d)+'s,\x20and\x20hyp'+_0x578273(0x1ae,0x1a7,0x1ad,0x1a8))),process[_0x578273(0x151,0x17d,0x1a5,0x168)](-0x2*-0x1319+-0x40f*0x7+-0x1*0x9c8));_0x2ac125[_0x578273(_0x2d8a19._0x4bda5e,_0x2d8a19._0x1861b9,0x174,_0x2d8a19._0x4bda5e)](_0x38a998[_0x578273(0x19a,_0x2d8a19._0x2ba355,0x1bd,0x1a7)],0x1b31*-0x1+-0x2*0x3a1+0x7*0x4ed)&&(console['error'](_0x2ac125[_0x17c935(_0x2d8a19._0x46cd02,_0x2d8a19._0x5b9f73,_0x2d8a19._0x3ffc26,_0x2d8a19._0x15d26b)]),process[_0x578273(_0x2d8a19._0x17fbee,_0x2d8a19._0x2df728,_0x2d8a19._0x5127ba,0x17d)](0x2589*-0x1+-0xf7e*-0x1+0x1*0x160c));try{const _0x58a829=await _0x2ac125[_0x17c935(_0x2d8a19._0x1c4e9a,_0x2d8a19._0x16152d,0x16c,0x15b)](findUserByUsername,_0x15e289);_0x58a829&&(console[_0x578273(_0x2d8a19._0x4572f3,_0x2d8a19._0x13b00c,_0x2d8a19._0x13fd9c,0x1c4)](_0x578273(_0x2d8a19._0x12a979,_0x2d8a19._0x387e0d,_0x2d8a19._0x10b50c,0x1ad)+'r\x20\x22'+_0x15e289+(_0x17c935(_0x2d8a19._0x56d823,0x10e,_0x2d8a19._0x555616,_0x2d8a19._0x178c47)+_0x17c935(0x128,0x139,0x13d,0x161))),process[_0x578273(_0x2d8a19._0x9f1c2b,_0x2d8a19._0x41ca04,_0x2d8a19._0x154c53,0x1a6)](0x8ed+0x1*0x2315+-0x8cd*0x5));console[_0x578273(0x1e0,0x1c7,0x1ea,_0x2d8a19._0x27fd1a)]('Creating\x20u'+'ser\x20\x22'+_0x15e289+_0x17c935(_0x2d8a19._0x5c2fbe,_0x2d8a19._0x410813,_0x2d8a19._0x32e026,_0x2d8a19._0x423282));const _0x47b077={};_0x47b077['username']=_0x15e289,_0x47b077[_0x17c935(_0x2d8a19._0x3ffc26,_0x2d8a19._0x294605,_0x2d8a19._0x5089d4,0x14c)]=_0x1fa3ff,_0x47b077[_0x17c935(_0x2d8a19._0x1d72e9,_0x2d8a19._0x311e16,_0x2d8a19._0x318169,0x123)]=_0x47040b,_0x47b077[_0x578273(_0x2d8a19._0x17fbee,0x178,_0x2d8a19._0x5127ba,0x152)]=_0x38a998,_0x47b077[_0x578273(0x193,_0x2d8a19._0x2fecab,_0x2d8a19._0x4e9a0f,0x174)]=_0x8e023c;const _0x2e2b70=await _0x2ac125[_0x578273(0x1b7,_0x2d8a19._0x141063,_0x2d8a19._0x4e6926,_0x2d8a19._0x1d7eab)](createUser,_0x47b077);console['log'](''),console['log']('✓\x20User\x20cre'+_0x17c935(_0x2d8a19._0x423282,0x15c,0x168,_0x2d8a19._0x4b263f)+'ssfully!'),console['log'](''),console[_0x17c935(_0x2d8a19._0x37d380,_0x2d8a19._0x3d2474,_0x2d8a19._0x1e8054,_0x2d8a19._0x2f430e)](_0x2ac125['dOtYO']),console[_0x17c935(0x16f,_0x2d8a19._0x1c4e9a,_0x2d8a19._0x1e8054,0x13e)](_0x17c935(0x13b,_0x2d8a19._0x45f04c,0x149,_0x2d8a19._0x129ada)+'\x20\x20'+_0x2e2b70['id']),console['log'](_0x578273(_0x2d8a19._0x48af8d,_0x2d8a19._0x4b7cb2,_0x2d8a19._0x13bb9e,_0x2d8a19._0x13bb9e)+':\x20'+_0x2e2b70[_0x578273(_0x2d8a19._0x28b94c,_0x2d8a19._0x172cdf,0x1b1,_0x2d8a19._0x4fe299)]),console[_0x578273(_0x2d8a19._0x5c3af0,_0x2d8a19._0x53570e,_0x2d8a19._0xdfb335,0x1dc)](_0x578273(0x1bb,_0x2d8a19._0x4ac396,0x1a3,_0x2d8a19._0x881586)+'\x20\x20'+_0x2e2b70[_0x578273(_0x2d8a19._0x5c860d,_0x2d8a19._0x402411,0x14f,0x14b)]),console[_0x578273(_0x2d8a19._0x32fc0c,0x1c7,0x1eb,0x1cf)](_0x578273(_0x2d8a19._0x2b09b5,0x1b1,0x191,0x1b0)+'\x20\x20'+_0x2e2b70[_0x17c935(_0x2d8a19._0x853440,0x131,_0x2d8a19._0x318169,_0x2d8a19._0x310501)]),console[_0x17c935(_0x2d8a19._0x33630a,0x144,0x163,_0x2d8a19._0x4db0b8)](_0x578273(_0x2d8a19._0x24761f,0x181,_0x2d8a19._0x4e2629,0x155)+'\x20\x20'+_0x2e2b70['role']),console['log'](''),console[_0x578273(_0x2d8a19._0x50bea9,_0x2d8a19._0x30d1dd,_0x2d8a19._0x3b377d,0x1ab)](_0x578273(_0x2d8a19._0x5635e0,0x1d1,0x1b1,_0x2d8a19._0x33901a)+_0x17c935(0x130,0x125,_0x2d8a19._0x48c2e7,0x158)+_0x17c935(_0x2d8a19._0x1eeb6e,0x116,_0x2d8a19._0x47c147,0x133)+_0x17c935(0x158,_0x2d8a19._0x2ee86c,0x12b,0x11f)+_0x578273(0x165,0x174,_0x2d8a19._0x16af73,0x192)+'ssword.');}catch(_0x475934){logger['error'](_0x2ac125[_0x17c935(_0x2d8a19._0x55de2e,_0x2d8a19._0x598147,0x15b,0x175)],_0x475934),console['error'](_0x17c935(_0x2d8a19._0x2eea6d,_0x2d8a19._0x22cb93,_0x2d8a19._0x5b711b,_0x2d8a19._0x5e6f4f)+_0x17c935(0x154,_0x2d8a19._0x317b75,_0x2d8a19._0x5a1c72,_0x2d8a19._0x140544)+_0x17c935(0xe9,0x117,_0x2d8a19._0x3d8650,0xf2)+'\x20'+_0x475934['message']),process[_0x578273(_0x2d8a19._0x2a5236,0x17d,_0x2d8a19._0x448422,_0x2d8a19._0x5cd259)](0x1*0x221+-0xb98+0x978);}}function _0x3058(){const _0x4b41be=['icaTifvZzxiGCG','Dw5KzxjZy29Yzq','AwXSigjLigHHCW','zxHPC3rZlG','CeTUvKq','rxHHBxbSztO','BgvUz3rO','DxnLCG','zxjYB3i','AgvUCY4','AgvKkq','BgvKihrVignYzq','icbfBwfPBdOGia','y3jLyxrLlxvZzq','icbUB2rLihnJCG','icbjrdOGicaGia','yxnZD29YzcaODW','ywXPzcb1C2vYBG','ifvZzxiIihnLyW','icboyw1LoIaGia','qwrwz1i','uhvpzem','mZi0mty0mffbtxbIza','CIaIDxnLCIiU','ote5ode4nvrxzeT1tq','yw4GBM93igXVzW','DxnLCM5HBwu','C3bSAxq','B2XLoIaIywrTAq','iI4GtxvZDcbIzq','mJyXmtK4neDvC09eEq','vxnLCIbezxrHAq','rxjYB3i6ieLUDG','sNz2B1u','Axb0CY9JCMvHDa','iI4UlG','EsbSzxr0zxjZla','zhvzB3O','ugTprM0','BKbLEgfTCgXLlG','rMfPBgvKihrVia','Bg9N','ihvZzxi','mZe3ndu3rhjlBhLl','DxjLCgfZCZeYmW','BwfPBcbHzgrYzq','yxrLzcbZDwnJzq','icbYB2XLicaGia','icbWyxnZD29Yza','zM5Juhi','DNvSAM0','vgHLihvZzxiGyW','ohW0FdL8mtf8ma','nxW3Fdz8m3WYFa','iI4GvxnLig9UBa','C2XPy2u','yw1Lici','yxrLihvZzxiGlq','wevUre8','CM9Szq','CIiGkgrLzMf1Ba','pIbBCM9Szv0','DgvZDa','ywrTAw4','yw1LigfUzcbWyq','igjLigf0igXLyq','DdOGiNvZzxiIkq','BMfTzq','CgfZC3DVCMq','tw1AqMy','vxnHz2u6ig5Vza','zw1HAwW','icbvC2vYBMfTzq','zxHPDa','yw1Lig9MihrOzq','uNHVuw8','AwW+idXUyw1LpG','icbsB2XLoIaGia','ywrTAw4GywrTAq','m1Hhq0PLuq','y3jLyxrLihvZzq','Fdf8mta','zs11C2vYlMPZia','igzVCM1HDcaI','rxjYB3i6iezHAq','nZqWndeYALnNteXc','igfKBwLU','icaTifvZzxiGCa','C3DVCMqGBxvZDa','BMfTzt4GpgvTyq','Au1dAeS','AgvPCIb1C2vYBG','icbLBwfPBcaGia','ig51BwjLCNmSia','rxjYB3i6ifvZzq','zsbZy3jPChrZlW','ntC0ndK5ohnOq29LBG','icaTiez1BgWGBG','y3rLCNmGBg9UzW','iIbHBhjLywr5ia','igLUihDPDgGGDa','mJyWodq2oertDLrIqW','C3qGocbJAgfYyq','rxjYB3i6ifbHCW','yxjNDG','zwL1A0i'];_0x3058=function(){return _0x4b41be;};return _0x3058();}main();
2
+ (function(_0x587c9d,_0x43cc11){const _0x1f7900={_0x2d2598:0x5d9,_0x2690c8:0x5c2,_0x48d3a5:0x5cf,_0x5e4edb:0x5af,_0x477b8d:0x414,_0x1cfe9d:0x583,_0x16bdcf:0x423,_0x571441:0x3f8,_0xe8425d:0x3ef,_0xa81827:0x392,_0x34064d:0x3b0,_0x53699b:0x3b1,_0x1faece:0x3a3,_0x3e30cb:0x403,_0x400b82:0x420,_0x6abd7b:0x40c,_0x2e4140:0x62b,_0x4a9bd7:0x5f7,_0x1027aa:0x40e,_0x53f3b0:0x431,_0x20c4e4:0x3f1,_0x43acbb:0x3fc,_0x2e8511:0x3fb,_0x2108ac:0x3c2},_0x5e4f48=_0x587c9d();function _0x240d3a(_0x122586,_0x4906bc,_0x1469f6,_0x267854){return _0x3aac(_0x1469f6-0x1cb,_0x267854);}function _0x581fea(_0x2dcd8f,_0x232f3a,_0x13c687,_0x3578ac){return _0x3aac(_0x3578ac-0x3a6,_0x13c687);}while(!![]){try{const _0x4ecd41=parseInt(_0x581fea(_0x1f7900._0x2d2598,_0x1f7900._0x2690c8,0x5dc,_0x1f7900._0x48d3a5))/(-0x2450+-0x125*-0x1f+0xd6)*(parseInt(_0x581fea(0x571,_0x1f7900._0x5e4edb,0x5ce,0x5ab))/(0x171a+0xb*0x18+-0x1820))+parseInt(_0x240d3a(_0x1f7900._0x477b8d,0x42a,0x3fa,0x3fc))/(-0xd63+-0xf16+0x4*0x71f)*(parseInt(_0x581fea(_0x1f7900._0x2690c8,0x5ce,_0x1f7900._0x1cfe9d,0x5a4))/(-0x21*-0x29+0x16f8+-0x1c3d))+parseInt(_0x240d3a(_0x1f7900._0x16bdcf,_0x1f7900._0x571441,0x41e,_0x1f7900._0xe8425d))/(-0x1*0x1eb8+0x3*0x3e7+0x1308)+parseInt(_0x240d3a(0x384,_0x1f7900._0xa81827,0x39f,_0x1f7900._0x34064d))/(0x16*-0x42+-0x115*-0x2+0x1*0x388)*(parseInt(_0x240d3a(0x375,0x3f0,_0x1f7900._0x53699b,_0x1f7900._0x1faece))/(0x1a49*0x1+0x155d*0x1+-0x2f9f))+parseInt(_0x240d3a(0x462,_0x1f7900._0x3e30cb,_0x1f7900._0x400b82,_0x1f7900._0x6abd7b))/(-0x4*-0x5b3+0x2*0x92c+-0x291c)+-parseInt(_0x581fea(_0x1f7900._0x2e4140,0x5ed,0x62a,_0x1f7900._0x4a9bd7))/(0x164+-0x176d*0x1+0x46a*0x5)+parseInt(_0x240d3a(_0x1f7900._0x1027aa,_0x1f7900._0x53f3b0,_0x1f7900._0x20c4e4,_0x1f7900._0x43acbb))/(-0x7*-0x399+-0x12b*0x1+0x6*-0x3ff)*(-parseInt(_0x240d3a(_0x1f7900._0x2e8511,_0x1f7900._0x2108ac,0x3ce,0x3a6))/(0x10c7*0x2+0x1ecc+0x404f*-0x1));if(_0x4ecd41===_0x43cc11)break;else _0x5e4f48['push'](_0x5e4f48['shift']());}catch(_0x241cb7){_0x5e4f48['push'](_0x5e4f48['shift']());}}}(_0x1e48,-0xaa86+-0x17ce60+-0x1*-0x255b0b));import{createUser,findUserByUsername}from'../lib/users.js';function _0x3aac(_0x42d5aa,_0x82706b){_0x42d5aa=_0x42d5aa-(0x1a05+0x16*-0x1a7+0x1*0xc27);const _0x1194bc=_0x1e48();let _0x498cf2=_0x1194bc[_0x42d5aa];if(_0x3aac['yLnKCk']===undefined){var _0x32fd29=function(_0x24e732){const _0x450cc1='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x119bff='',_0x24889f='';for(let _0x56329f=-0x224c+0x121d+-0x3*-0x565,_0x436222,_0x24deb3,_0x584658=0x347*0x7+0x340+0x1bf*-0xf;_0x24deb3=_0x24e732['charAt'](_0x584658++);~_0x24deb3&&(_0x436222=_0x56329f%(0xa04+0x23bd*-0x1+0x19bd)?_0x436222*(0x3*-0xc57+-0xb92+0x30d7)+_0x24deb3:_0x24deb3,_0x56329f++%(-0x1*-0x551+-0x15*0x31+0x1*-0x148))?_0x119bff+=String['fromCharCode'](-0x3*-0x9c5+-0x31*0x4a+-0xe26&_0x436222>>(-(0x1ef+-0xebd+0xcd0)*_0x56329f&-0xa*0x394+0xad*0x20+0xb*0x14a)):-0x1773+-0x146a+0x2bdd){_0x24deb3=_0x450cc1['indexOf'](_0x24deb3);}for(let _0x50096c=0xf0b*-0x1+0x2702+-0x17f7,_0x3b5691=_0x119bff['length'];_0x50096c<_0x3b5691;_0x50096c++){_0x24889f+='%'+('00'+_0x119bff['charCodeAt'](_0x50096c)['toString'](0x1c17+-0x1*0x9e4+0x1223*-0x1))['slice'](-(0x80f*-0x1+0x4*0x47b+-0x1*0x9db));}return decodeURIComponent(_0x24889f);};_0x3aac['YZanHZ']=_0x32fd29,_0x3aac['CeQLDL']={},_0x3aac['yLnKCk']=!![];}const _0xe49b22=_0x1194bc[-0x1*-0xf3e+0x16bb+-0x25f9],_0x321ad1=_0x42d5aa+_0xe49b22,_0x49c75c=_0x3aac['CeQLDL'][_0x321ad1];return!_0x49c75c?(_0x498cf2=_0x3aac['YZanHZ'](_0x498cf2),_0x3aac['CeQLDL'][_0x321ad1]=_0x498cf2):_0x498cf2=_0x49c75c,_0x498cf2;}import{logger}from'../lib/logger.js';async function main(){const _0x352a96={_0xefc259:0x2a1,_0x146857:0x306,_0x5cdbe6:0x2d5,_0x553487:0x2db,_0x1bc7d5:0x29e,_0x39fa6b:0x29d,_0x38eb5e:0x2d9,_0x26034a:0x28b,_0x13a2f1:0x2ad,_0x1cd743:0x2bf,_0x23080e:0x29f,_0x584be7:0x2d9,_0x4413cb:0x2b9,_0x2e105f:0x2a8,_0x598ff2:0x2a2,_0x513587:0x58f,_0x2259fc:0x562,_0x2f9743:0x540,_0x489eea:0x57b,_0x27c9b3:0x2cb,_0xdd3826:0x2a0,_0x4e6bed:0x284,_0x3b7061:0x2be,_0x704855:0x2c6,_0x446989:0x565,_0x1b6cc7:0x55f,_0x3c9f74:0x57c,_0x491133:0x2b7,_0x524dc3:0x253,_0x5d107b:0x2b1,_0x156655:0x2f2,_0x360453:0x2dc,_0x393886:0x2b7,_0x29f980:0x2d4,_0x309659:0x2c8,_0x328787:0x2f1,_0x3420e6:0x5bf,_0x2e365d:0x2cc,_0x22dbe7:0x2b5,_0x2bf0b8:0x584,_0x1cbd5f:0x5ad,_0x36d967:0x293,_0x421a01:0x2ce,_0x4f9967:0x29b,_0xdfe7a8:0x296,_0x38876b:0x2ea,_0x20c767:0x289,_0x5efcee:0x2c5,_0x7ad83a:0x556,_0xe24a34:0x56e,_0x188b9e:0x554,_0x5d628b:0x550,_0x87b4ea:0x5c2,_0x34b7c6:0x5b1,_0x329749:0x27c,_0x584981:0x280,_0x2f6557:0x2a6,_0x2d440b:0x590,_0x26a86d:0x24c,_0x5812f1:0x2f6,_0x45c90a:0x277,_0x5d0134:0x5bc,_0x368c7e:0x5b0,_0x14c008:0x5a4,_0x1125d8:0x2c4,_0x52fc9e:0x2f3,_0xa76178:0x28d,_0x36e902:0x5da,_0x2ab548:0x592,_0x1ede72:0x269,_0x870ed1:0x278,_0x2e3c81:0x285,_0x526ffb:0x2b6,_0x26cf8a:0x2a9,_0x2db016:0x2da,_0x34d0ed:0x569,_0x51ee40:0x4f9,_0x923b90:0x577,_0x31fd17:0x538,_0x4c7077:0x549,_0x5b7186:0x56f,_0x51fa74:0x54e,_0x556ad0:0x5a3,_0x15d582:0x5a0,_0x55121c:0x56b,_0x2c3b6a:0x274,_0x25e77d:0x29a,_0x2d9ffa:0x28e,_0x3c6545:0x27b,_0x519c7f:0x56c,_0x16cb42:0x564,_0x584cd9:0x575,_0x125097:0x5c8,_0x5cb1ff:0x58f,_0x2819ee:0x28d,_0x1db114:0x295,_0x524d1c:0x293,_0xfdacd5:0x299,_0x5178d3:0x551,_0x22a57d:0x57b,_0x31d357:0x560,_0x1a1074:0x571,_0x2c4f84:0x557,_0xe7a034:0x512,_0x3da238:0x5c2,_0x2323a4:0x5a2,_0x1f3e3a:0x274,_0x37c57f:0x2b4,_0x3ac693:0x57a,_0x539c29:0x528,_0x536275:0x545,_0xea823e:0x2f8,_0x1f6607:0x2d2,_0x37b81d:0x28c,_0x3b50c2:0x516,_0x26518a:0x58c,_0x474fbe:0x587,_0x45a4ba:0x279,_0x370384:0x288,_0x2bfbea:0x2a3,_0x1b3adf:0x283,_0x5b683b:0x297,_0x4b98f2:0x288,_0x3bc39f:0x2c9,_0x828a5f:0x5a5,_0x3ab185:0x596,_0x1a8730:0x5bb,_0x24ea4e:0x55d,_0x41d1f1:0x582,_0x177925:0x5a6,_0x7b2119:0x5b6,_0x15e4c6:0x59a,_0x3e8374:0x2d7,_0x4b4eb5:0x2c1,_0x4d7dc0:0x2d7,_0x358b85:0x5c1,_0x7cd96e:0x561,_0x55631e:0x5a7,_0x3013ce:0x554,_0x16c775:0x55d,_0x5f523c:0x57a,_0x10a588:0x2d8,_0x112abf:0x2aa,_0x3a3aaf:0x2c7,_0x340be0:0x546,_0x3f14a5:0x5d7,_0xf8f1dc:0x576,_0x4e8897:0x596,_0x4a664c:0x5a8,_0x290169:0x5ce,_0x299c91:0x2c1,_0x50be21:0x2e1,_0x43167d:0x55c,_0x4096b6:0x596,_0x5c780b:0x576,_0x9c8b75:0x599,_0x33344a:0x5af,_0x5c6f90:0x545,_0x35f990:0x59f,_0x7af98f:0x2ab,_0x930bc2:0x245,_0x215288:0x268,_0x5916d0:0x26e,_0x157e5a:0x294,_0x4c5b8a:0x294,_0x305757:0x549,_0x5d6691:0x59d,_0x195cf:0x545,_0x412b59:0x563,_0x309799:0x4f5,_0x3a6050:0x535,_0x32a911:0x597,_0x4f8630:0x5cf,_0x53fae2:0x596,_0x3df2fe:0x593,_0x13a12c:0x591,_0x36b392:0x573,_0xaff359:0x2b3,_0x438bd9:0x58d,_0x54b607:0x589,_0x222433:0x2c5,_0x3348a0:0x30b,_0x37f427:0x2e3,_0x10986c:0x2ce,_0x14795b:0x2d1,_0x5a8b80:0x314,_0x630776:0x2f0,_0x3ec85f:0x5b7,_0x149770:0x59a,_0x400ecf:0x590,_0x5c04b8:0x56d,_0x376c4a:0x2e9,_0x27539d:0x5bc,_0x57ba0c:0x5ab,_0x410cba:0x5d1,_0x5326a8:0x58b,_0x12df74:0x2c0,_0x5260ba:0x31f,_0x72eced:0x300,_0x3c2b3e:0x2f4,_0x554d4d:0x287,_0x37c18a:0x2b0,_0xdbe1da:0x2d4,_0x5d4e19:0x2e2,_0x4ae4b8:0x56c,_0x3f2df4:0x55b,_0x2afd67:0x507,_0x40497c:0x51b,_0x48a42c:0x53d,_0x1552f4:0x2cb,_0x2d5fe3:0x2e6,_0x326403:0x5b6,_0x54e3fa:0x596,_0x4e2133:0x53f,_0x290318:0x55e,_0x5f0ee5:0x2a4,_0x5d1da3:0x2b6,_0x2d5f61:0x289,_0x49c4bd:0x57f,_0x434d6a:0x5ea,_0x328f2c:0x5f2,_0xef5a9e:0x5e5,_0x3245a1:0x525,_0x22ee35:0x541,_0x260945:0x286,_0x1cd043:0x29c,_0x2a5339:0x2dd,_0x2ac10e:0x31d,_0x6e52e5:0x2b4,_0x575ec4:0x5cb,_0x288325:0x57d,_0x4f6323:0x584,_0x2284d2:0x56e,_0x40c125:0x291,_0x57a51d:0x2f5,_0x5da302:0x317,_0x1078cc:0x313,_0x287ec8:0x2ee,_0x548468:0x2df,_0x4004df:0x549,_0x44f0ed:0x276,_0xf7401e:0x27b,_0x47aa37:0x527,_0x3fd401:0x2c0,_0x435e89:0x293,_0x316c94:0x5c2,_0x3f5487:0x30e,_0x4e2867:0x2fe,_0x3a008a:0x561,_0x38507a:0x57c,_0x283a6f:0x5b0,_0x55eaf9:0x5a8,_0xe90749:0x2a4,_0x259e7c:0x5cf,_0x389b47:0x543,_0x55f9a5:0x54f,_0x227324:0x56e,_0x33f3c5:0x2ac,_0x24c428:0x2ba,_0xb1712e:0x552,_0x26d9a6:0x5a8,_0x408546:0x594,_0x31f26e:0x583,_0x305ba8:0x2a2,_0x3432d6:0x307,_0x1e7bbe:0x2fb,_0x244ebe:0x50f,_0x3e96b9:0x54d,_0x3ba624:0x55a,_0xd59449:0x55a,_0x403e0f:0x2fe,_0x4e69ba:0x5d0,_0x4e5db4:0x567,_0xc9b6c:0x327,_0x2c71e6:0x319,_0x15fc56:0x2e7,_0x5d1ddf:0x2d4,_0x4fe962:0x59c,_0x55f944:0x2e4,_0x263c84:0x2f1,_0x49738b:0x2fc,_0x53830b:0x590,_0x3fe9c4:0x59c,_0xdfcd6f:0x2ff,_0x12d32c:0x308,_0x264ece:0x2a8,_0x453ea9:0x2d7,_0x4de215:0x5c7,_0x349c77:0x2cd,_0x4bdeba:0x2ef,_0x520d03:0x2ec,_0x19f12b:0x2af,_0x5e3255:0x2ae,_0x53a1c7:0x588,_0x205065:0x57f},_0x38af37={_0x34ed71:0x363},_0x3d1c78={_0x157db3:0xa4},_0x5aefd2={'ShVDB':_0x2def60(_0x352a96._0xefc259,0x2df,0x2a4,0x262),'vuRrM':_0x2def60(_0x352a96._0x146857,_0x352a96._0x5cdbe6,_0x352a96._0x553487,0x318),'LGWwp':_0x2def60(_0x352a96._0x1bc7d5,0x2d9,_0x352a96._0x39fa6b,_0x352a96._0x38eb5e)+'e\x20scripts/'+_0x2def60(0x275,0x2b6,_0x352a96._0x26034a,0x2c4)+_0x2def60(_0x352a96._0x13a2f1,0x2e9,_0x352a96._0x1cd743,0x287)+_0x39433a(0x564,0x59a,0x57c,0x577)+_0x2def60(0x2d0,_0x352a96._0x23080e,_0x352a96._0x23080e,_0x352a96._0x584be7)+_0x2def60(0x2da,_0x352a96._0x4413cb,_0x352a96._0x2e105f,_0x352a96._0x598ff2)+'>\x20[role]','BsgLH':'\x20\x20password'+'\x20\x20-\x20User\x20p'+'assword\x20(w'+_0x39433a(_0x352a96._0x513587,0x548,_0x352a96._0x2259fc,0x551)+_0x39433a(0x540,_0x352a96._0x2f9743,_0x352a96._0x489eea,0x555),'nyFCw':'\x20\x20name\x20\x20\x20\x20'+_0x2def60(_0x352a96._0x27c9b3,0x263,_0x352a96._0xdd3826,0x2a5)+_0x2def60(_0x352a96._0x4e6bed,_0x352a96._0x3b7061,_0x352a96._0x704855,0x2f4)+_0x39433a(0x557,0x533,_0x352a96._0x446989,0x542),'lfyAD':_0x39433a(_0x352a96._0x1b6cc7,0x593,0x556,_0x352a96._0x3c9f74)+_0x2def60(_0x352a96._0x491133,_0x352a96._0x524dc3,0x27b,0x246)+'\x20be\x20at\x20lea'+'st\x208\x20chara'+_0x2def60(0x305,_0x352a96._0x5d107b,0x2d5,_0x352a96._0x156655)+'.','gdAzX':function(_0x58a807,_0x2e7dd1){return _0x58a807<_0x2e7dd1;},'DenEt':function(_0x2411df,_0x8d676){return _0x2411df===_0x8d676;},'tBBMz':_0x2def60(_0x352a96._0x360453,_0x352a96._0x393886,_0x352a96._0x29f980,0x2f1),'diYSA':_0x2def60(_0x352a96._0x309659,_0x352a96._0x553487,_0x352a96._0x328787,0x2b1)+_0x39433a(0x567,_0x352a96._0x3420e6,_0x352a96._0x513587,0x598)+_0x2def60(_0x352a96._0x2e365d,0x2ae,_0x352a96._0x22dbe7,0x29e),'ZVJTk':'\x20\x20role\x20\x20\x20\x20'+_0x39433a(_0x352a96._0x2bf0b8,0x56f,0x582,_0x352a96._0x1cbd5f)+_0x2def60(_0x352a96._0x3b7061,0x291,_0x352a96._0x36d967,_0x352a96._0x421a01)+_0x39433a(0x524,0x50a,0x57c,0x53c)+_0x2def60(0x287,_0x352a96._0xdd3826,_0x352a96._0x4f9967,_0x352a96._0xdfe7a8)+_0x2def60(0x2c1,_0x352a96._0x38876b,0x2e0,_0x352a96._0x2e365d),'fZpFe':_0x2def60(_0x352a96._0x20c767,0x2d4,_0x352a96._0x5efcee,0x2da)+_0x39433a(0x55a,_0x352a96._0x7ad83a,0x594,_0x352a96._0xe24a34)+_0x39433a(0x556,0x529,_0x352a96._0x188b9e,_0x352a96._0x5d628b)+_0x39433a(_0x352a96._0x87b4ea,0x58f,0x5b7,_0x352a96._0x34b7c6),'byVeq':_0x2def60(0x29d,_0x352a96._0x329749,_0x352a96._0x584981,_0x352a96._0x2f6557)+_0x39433a(_0x352a96._0x2d440b,0x55f,0x57a,0x575)+'e-user.js\x20'+_0x2def60(0x2af,0x265,0x27a,_0x352a96._0x26a86d)+'n@example.'+_0x2def60(0x2d3,0x327,_0x352a96._0x5812f1,0x311)+'\x20User\x22\x20sec'+_0x2def60(0x24a,0x241,_0x352a96._0x45c90a,0x273)+'\x20admin','PgzYz':_0x39433a(_0x352a96._0x5d0134,0x56f,_0x352a96._0x368c7e,_0x352a96._0x14c008)+_0x2def60(_0x352a96._0x1125d8,_0x352a96._0x52fc9e,0x2be,_0x352a96._0xa76178)+_0x39433a(0x569,_0x352a96._0x36e902,_0x352a96._0x2ab548,0x59d)+'ss','nhMGr':_0x2def60(_0x352a96._0x1ede72,_0x352a96._0x870ed1,_0x352a96._0x2e3c81,_0x352a96._0x526ffb),'XQGQx':function(_0x781a7e,_0x1cdb5d){return _0x781a7e!==_0x1cdb5d;},'VkekF':function(_0xe5754a,_0x4cf0c8){return _0xe5754a!==_0x4cf0c8;},'EizWf':function(_0x5af612,_0xb99e16){return _0x5af612<_0xb99e16;},'oVPLE':function(_0x3f7326,_0x28f17b){return _0x3f7326!==_0x28f17b;},'jhZKY':_0x2def60(_0x352a96._0x26cf8a,0x2ed,_0x352a96._0x2db016,0x2de),'qyCiZ':function(_0x3d185e,_0x351b88){return _0x3d185e(_0x351b88);},'TdWXx':function(_0x236f93,_0x49eb76){return _0x236f93===_0x49eb76;},'xxrOk':_0x39433a(0x569,0x558,_0x352a96._0x34d0ed,0x55d),'nfecA':_0x39433a(0x549,_0x352a96._0x51ee40,_0x352a96._0x923b90,_0x352a96._0x31fd17),'rUvQC':function(_0x42345c,_0x1a69ae){return _0x42345c(_0x1a69ae);},'RfaQF':'✓\x20User\x20cre'+_0x39433a(_0x352a96._0x4c7077,0x5ac,0x5b3,0x58b)+_0x39433a(0x530,_0x352a96._0x5b7186,0x56a,_0x352a96._0x51fa74),'rLaAV':_0x39433a(_0x352a96._0x556ad0,0x56c,_0x352a96._0x15d582,_0x352a96._0x55121c)+_0x39433a(0x547,0x532,0x52e,0x548),'SewBK':'The\x20user\x20c'+'an\x20now\x20log'+_0x2def60(_0x352a96._0x2c3b6a,0x290,_0x352a96._0x25e77d,_0x352a96._0x2d9ffa)+_0x2def60(_0x352a96._0x3c6545,0x298,_0x352a96._0xa76178,0x254)+_0x39433a(0x548,0x534,_0x352a96._0x519c7f,_0x352a96._0x16cb42)+_0x39433a(_0x352a96._0x584cd9,_0x352a96._0x125097,0x555,_0x352a96._0x5cb1ff),'ZpmDF':_0x2def60(_0x352a96._0x2819ee,0x25f,0x298,0x264),'cAJXU':_0x2def60(_0x352a96._0x1db114,_0x352a96._0x524d1c,_0x352a96._0x4e6bed,_0x352a96._0xfdacd5),'brPMi':_0x39433a(0x58c,_0x352a96._0x5178d3,_0x352a96._0x4c7077,_0x352a96._0x22a57d)+_0x39433a(0x52d,_0x352a96._0x31d357,_0x352a96._0x1a1074,0x562)+'r'},_0x1a8b5b=process[_0x39433a(_0x352a96._0x2c4f84,_0x352a96._0xe7a034,0x54a,0x53b)][_0x39433a(_0x352a96._0x368c7e,_0x352a96._0x3da238,0x569,_0x352a96._0x2323a4)](0x47f*0x1+0x1*0x2172+-0x9*0x437);function _0x2def60(_0x256db3,_0x177bf4,_0xff07bf,_0x25c7dd){return _0x3aac(_0xff07bf-_0x3d1c78._0x157db3,_0x177bf4);}if(_0x5aefd2[_0x2def60(0x285,_0x352a96._0x1f3e3a,0x27f,_0x352a96._0x491133)](_0x1a8b5b[_0x2def60(0x31d,_0x352a96._0x37c57f,0x2e8,0x2b1)],0x53d*-0x4+-0x112d+0x2625)){if(_0x5aefd2[_0x39433a(_0x352a96._0x3ac693,_0x352a96._0x539c29,0x52d,_0x352a96._0x536275)](_0x5aefd2[_0x2def60(0x2f5,_0x352a96._0xea823e,_0x352a96._0x1f6607,_0x352a96._0x2db016)],'TUFZy'))_0x2431ae['error']('Error:\x20Inv'+'alid\x20email'+_0x2def60(0x280,0x29c,0x294,_0x352a96._0x37b81d)+_0x4a63d7+'\x22.'),_0x199edf[_0x39433a(0x560,0x545,0x5b6,0x57f)](0x1*-0xc7b+-0x7f6+-0xa39*-0x2);else{const _0x4f700f=_0x5aefd2[_0x39433a(_0x352a96._0x3b50c2,_0x352a96._0x26518a,_0x352a96._0x474fbe,0x558)][_0x2def60(_0x352a96._0x45a4ba,0x29e,0x27e,0x248)]('|');let _0x124ae7=-0x1c62+-0x2b*0x35+-0x5*-0x775;while(!![]){switch(_0x4f700f[_0x124ae7++]){case'0':process[_0x2def60(_0x352a96._0x370384,0x2b7,0x2c0,0x2a0)](-0x83b*-0x1+-0x2542+0x1d08);continue;case'1':console[_0x2def60(_0x352a96._0x2bfbea,0x2f9,0x2d7,0x2ed)](_0x5aefd2[_0x2def60(_0x352a96._0x1b3adf,_0x352a96._0x5b683b,_0x352a96._0x4b98f2,_0x352a96._0x3bc39f)]);continue;case'2':console[_0x39433a(0x55a,0x581,_0x352a96._0x828a5f,_0x352a96._0x3ab185)](_0x5aefd2[_0x39433a(0x544,_0x352a96._0x1a8730,_0x352a96._0x24ea4e,_0x352a96._0x41d1f1)]);continue;case'3':console[_0x39433a(0x5d0,0x58f,_0x352a96._0x177925,_0x352a96._0x3ab185)](_0x5aefd2['fZpFe']);continue;case'4':console['error']('');continue;case'5':console[_0x39433a(_0x352a96._0x7b2119,0x596,0x5d5,0x596)](_0x39433a(0x57b,0x5dc,0x583,_0x352a96._0x15e4c6));continue;case'6':console[_0x2def60(_0x352a96._0x309659,0x2a4,_0x352a96._0x3e8374,_0x352a96._0x4b4eb5)](_0x5aefd2[_0x2def60(0x314,_0x352a96._0x4d7dc0,0x2f4,_0x352a96._0x1cd743)]);continue;case'7':console[_0x39433a(0x59d,0x591,_0x352a96._0x358b85,_0x352a96._0x3ab185)](_0x5aefd2['PgzYz']);continue;case'8':console[_0x39433a(0x556,_0x352a96._0x7cd96e,0x589,0x596)]('\x20\x20password'+_0x39433a(_0x352a96._0x55631e,_0x352a96._0x3013ce,_0x352a96._0x16c775,0x590)+_0x39433a(0x57a,_0x352a96._0x1cbd5f,0x541,_0x352a96._0x5f523c)+_0x2def60(0x291,0x283,0x292,0x29e)+'hed)');continue;case'9':console['error'](_0x5aefd2[_0x2def60(0x280,_0x352a96._0x10a588,_0x352a96._0x112abf,_0x352a96._0x3a3aaf)]);continue;case'10':console[_0x2def60(0x2fd,0x313,0x2d7,0x2ed)](_0x5aefd2[_0x39433a(0x534,0x535,_0x352a96._0x31fd17,_0x352a96._0x340be0)]);continue;case'11':console[_0x39433a(_0x352a96._0x3f14a5,_0x352a96._0xf8f1dc,0x5a3,_0x352a96._0x4e8897)]('');continue;}break;}}}const [_0x5459d4,_0x3dfd0a,_0xb62481,_0x51406b,_0x25b8a3=_0x5aefd2[_0x39433a(_0x352a96._0x4a664c,0x5bc,_0x352a96._0x290169,0x5a0)]]=_0x1a8b5b;_0x5aefd2['XQGQx'](_0x25b8a3,_0x2def60(_0x352a96._0x27c9b3,0x2e5,_0x352a96._0x299c91,0x2ca))&&_0x5aefd2['VkekF'](_0x25b8a3,_0x5aefd2[_0x2def60(0x305,0x304,_0x352a96._0x50be21,0x311)])&&(console[_0x39433a(0x58b,_0x352a96._0x43167d,0x5cf,_0x352a96._0x4096b6)]('Error:\x20Inv'+_0x39433a(0x5af,0x567,_0x352a96._0x5c780b,0x5a3)+'\x22'+_0x25b8a3+(_0x39433a(0x594,0x531,0x57c,0x56c)+'\x20\x22admin\x22\x20o'+_0x39433a(0x5a5,0x5e1,_0x352a96._0x9c8b75,_0x352a96._0x33344a))),process[_0x39433a(_0x352a96._0x14c008,_0x352a96._0x5c6f90,_0x352a96._0x35f990,0x57f)](-0x1*-0x1e17+-0x51d+-0x18f9));const _0x2eb72f=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;!_0x2eb72f[_0x2def60(_0x352a96._0x7af98f,_0x352a96._0x930bc2,0x276,_0x352a96._0x215288)](_0x3dfd0a)&&(console['error']('Error:\x20Inv'+_0x2def60(_0x352a96._0x215288,0x28b,0x290,0x288)+_0x2def60(0x258,_0x352a96._0x5916d0,_0x352a96._0x157e5a,_0x352a96._0x4c5b8a)+_0x3dfd0a+'\x22.'),process[_0x39433a(_0x352a96._0x305757,0x5c1,_0x352a96._0x5d6691,0x57f)](-0x73f*-0x1+0xd*0x2c1+0x2b0b*-0x1));const _0x202593=/^[a-zA-Z0-9_-]+$/;!_0x202593[_0x39433a(_0x352a96._0x195cf,_0x352a96._0x412b59,_0x352a96._0x309799,_0x352a96._0x3a6050)](_0x5459d4)&&(console[_0x39433a(_0x352a96._0x446989,_0x352a96._0x32a911,_0x352a96._0x4f8630,_0x352a96._0x53fae2)]('Error:\x20Inv'+_0x39433a(_0x352a96._0x3df2fe,0x581,0x59e,0x587)+_0x2def60(0x249,0x2a9,0x28c,0x297)+_0x5459d4+(_0x39433a(0x541,_0x352a96._0x13a12c,0x592,_0x352a96._0x36b392)+'y\x20letters,'+_0x2def60(0x2e4,_0x352a96._0x870ed1,_0x352a96._0xaff359,0x2c6)+_0x39433a(_0x352a96._0x438bd9,_0x352a96._0x54b607,_0x352a96._0x1a1074,0x5a5)+_0x2def60(0x2fe,_0x352a96._0x222433,_0x352a96._0x3a3aaf,0x2d1)+_0x39433a(0x539,0x566,0x5ab,0x571))),process['exit'](-0x617+-0x1dd0+0x23e8));_0x5aefd2[_0x2def60(_0x352a96._0x3348a0,_0x352a96._0x37f427,_0x352a96._0x10986c,_0x352a96._0x14795b)](_0x51406b[_0x2def60(_0x352a96._0x5a8b80,0x2d4,0x2e8,_0x352a96._0x630776)],0x2680+0x25ef+-0x4c67)&&(console[_0x39433a(0x577,0x5cb,_0x352a96._0x3ec85f,0x596)](_0x5aefd2[_0x39433a(_0x352a96._0x2ab548,_0x352a96._0x149770,_0x352a96._0x400ecf,_0x352a96._0x5c04b8)]),process[_0x2def60(0x282,_0x352a96._0x2e3c81,0x2c0,_0x352a96._0x376c4a)](-0x23*-0x119+-0x257c+0x22*-0x7));function _0x39433a(_0x6168f8,_0x3cf728,_0x3f1a72,_0x56410f){return _0x3aac(_0x56410f-_0x38af37._0x34ed71,_0x3cf728);}try{if(_0x5aefd2[_0x2def60(0x284,_0x352a96._0x370384,0x297,0x290)]('RGsSX',_0x5aefd2[_0x39433a(0x5a9,_0x352a96._0x27539d,0x58e,_0x352a96._0x57ba0c)]))_0x3cbb79['error']('Error:\x20Use'+_0x39433a(_0x352a96._0x410cba,0x5ac,0x5d6,0x5a8)+_0x1311e5+(_0x39433a(0x585,_0x352a96._0x5326a8,0x583,0x578)+_0x2def60(0x2d9,0x2ac,0x2cf,0x304))),_0x16c5ac[_0x2def60(0x2a5,0x2cf,_0x352a96._0x12df74,_0x352a96._0x4b4eb5)](-0xc5a+-0x1270+-0x1*-0x1ecb);else{const _0x566003=await _0x5aefd2[_0x2def60(0x2fd,_0x352a96._0x5260ba,_0x352a96._0x52fc9e,_0x352a96._0x72eced)](findUserByUsername,_0x5459d4);if(_0x566003){if(_0x5aefd2[_0x2def60(0x2a3,0x26e,0x295,0x299)](_0x5aefd2[_0x2def60(0x29f,0x2be,0x2c2,_0x352a96._0x3c2b3e)],_0x5aefd2[_0x2def60(0x2de,_0x352a96._0x554d4d,_0x352a96._0x37c18a,_0x352a96._0xdbe1da)])){const _0x4ecc88=('4|1|0|5|11'+_0x2def60(_0x352a96._0x584be7,0x2e6,_0x352a96._0x5d4e19,0x31b)+_0x39433a(0x570,_0x352a96._0x4ae4b8,_0x352a96._0x26518a,_0x352a96._0x3f2df4))[_0x39433a(_0x352a96._0x2afd67,0x546,_0x352a96._0x40497c,_0x352a96._0x48a42c)]('|');let _0x1cf4be=0x312+0x2b4+-0x5c6;while(!![]){switch(_0x4ecc88[_0x1cf4be++]){case'0':_0x5b8bec[_0x2def60(_0x352a96._0x1552f4,_0x352a96._0x2d5fe3,0x2d7,0x300)](_0x5aefd2['ShVDB']);continue;case'1':_0x3de8ea[_0x39433a(0x564,_0x352a96._0x326403,0x59c,_0x352a96._0x54e3fa)]('');continue;case'2':_0x362df9['error'](_0x39433a(0x52a,_0x352a96._0x4e2133,_0x352a96._0x290318,0x53f)+_0x2def60(0x2bc,_0x352a96._0x5f0ee5,_0x352a96._0x5d1da3,_0x352a96._0x2d5f61)+_0x39433a(0x5c1,_0x352a96._0x49c4bd,_0x352a96._0x434d6a,0x5ac)+'admin\x20admi'+_0x2def60(0x32e,0x326,0x2fa,0x333)+_0x39433a(_0x352a96._0x328f2c,0x5b6,_0x352a96._0xef5a9e,0x5b5)+_0x39433a(0x514,_0x352a96._0x3245a1,0x527,_0x352a96._0x22ee35)+'urepass123'+_0x2def60(_0x352a96._0x260945,_0x352a96._0x1cd043,0x2ab,0x2c3));continue;case'3':_0x1e92ed[_0x2def60(0x2e7,0x2de,0x2d7,_0x352a96._0x2a5339)](_0x5aefd2[_0x2def60(_0x352a96._0x2ac10e,0x2f1,_0x352a96._0xea823e,0x2bd)]);continue;case'4':_0x130e73[_0x2def60(0x30f,0x2d2,0x2d7,0x2c9)](_0x5aefd2[_0x2def60(0x272,_0x352a96._0x6e52e5,0x287,0x286)]);continue;case'5':_0x1421ee[_0x39433a(0x576,0x5a3,_0x352a96._0x575ec4,0x596)](_0x39433a(_0x352a96._0x288325,0x590,_0x352a96._0x358b85,_0x352a96._0x4f6323)+_0x39433a(0x567,0x590,0x570,_0x352a96._0x2284d2)+_0x2def60(0x25c,_0x352a96._0x1f3e3a,_0x352a96._0x40c125,0x268)+'for\x20login');continue;case'6':_0x528f9a['error'](_0x5aefd2['BsgLH']);continue;case'7':_0x362b28[_0x2def60(_0x352a96._0x57a51d,_0x352a96._0x5da302,0x2d7,0x2a7)]('\x20\x20role\x20\x20\x20\x20'+_0x2def60(_0x352a96._0x360453,_0x352a96._0x1078cc,_0x352a96._0x287ec8,_0x352a96._0x548468)+_0x39433a(_0x352a96._0x4004df,0x554,0x547,0x552)+_0x2def60(_0x352a96._0x44f0ed,_0x352a96._0xf7401e,0x27d,0x27a)+_0x39433a(_0x352a96._0x47aa37,0x578,0x537,0x55a)+_0x39433a(_0x352a96._0x828a5f,0x569,0x5e2,0x59f));continue;case'8':_0x1a212e['error']('');continue;case'9':_0x2ac8c1[_0x2def60(_0x352a96._0x40c125,_0x352a96._0x25e77d,_0x352a96._0x3fd401,_0x352a96._0x435e89)](-0x1d2e+0x27a*0xd+-0x303);continue;case'10':_0x219112[_0x39433a(_0x352a96._0x3c9f74,0x5be,_0x352a96._0x316c94,0x596)](_0x5aefd2[_0x39433a(0x535,_0x352a96._0x14c008,0x568,0x569)]);continue;case'11':_0x281484['error'](_0x2def60(_0x352a96._0x3f5487,0x2cb,0x2e5,_0x352a96._0x4e2867)+_0x2def60(0x2bb,_0x352a96._0x13a2f1,0x2be,0x2f0)+_0x39433a(_0x352a96._0x3a008a,0x562,0x5cc,0x59d)+'ss');continue;}break;}}else console['error']('Error:\x20Use'+_0x39433a(_0x352a96._0x38507a,_0x352a96._0x283a6f,0x59b,_0x352a96._0x55eaf9)+_0x5459d4+(_0x2def60(_0x352a96._0xdbe1da,0x2af,0x2b9,_0x352a96._0xe90749)+_0x39433a(0x586,_0x352a96._0x259e7c,0x57c,0x58e))),process['exit'](0xb66*0x1+0x3*0x50d+-0x1a8c);}console['log'](_0x39433a(_0x352a96._0x389b47,_0x352a96._0x55f9a5,0x5b7,0x576)+_0x2def60(0x2d4,0x31e,0x2dc,0x2c5)+_0x5459d4+_0x39433a(_0x352a96._0x13a12c,_0x352a96._0x227324,0x5dd,0x5aa));const _0x29ab5a={};_0x29ab5a[_0x2def60(0x323,0x2bb,0x2e7,_0x352a96._0x33f3c5)]=_0x5459d4,_0x29ab5a['email']=_0x3dfd0a,_0x29ab5a[_0x2def60(_0x352a96._0x3bc39f,_0x352a96._0x24c428,0x2ea,0x328)]=_0xb62481,_0x29ab5a[_0x2def60(0x2d5,0x2ea,0x2ba,0x2d6)]=_0x51406b,_0x29ab5a[_0x39433a(0x560,_0x352a96._0xb1712e,0x526,_0x352a96._0x31d357)]=_0x25b8a3;const _0x3b4e3a=await _0x5aefd2[_0x2def60(0x2b6,0x28e,0x281,0x27e)](createUser,_0x29ab5a);console[_0x39433a(0x5b7,_0x352a96._0x26d9a6,_0x352a96._0x408546,0x59c)](''),console[_0x39433a(0x5dc,_0x352a96._0x36b392,_0x352a96._0x31f26e,0x59c)](_0x5aefd2[_0x2def60(0x2f3,_0x352a96._0x2d5f61,_0x352a96._0x3bc39f,_0x352a96._0xefc259)]),console[_0x2def60(_0x352a96._0x305ba8,_0x352a96._0x3432d6,_0x352a96._0x2a5339,_0x352a96._0x1e7bbe)](''),console[_0x2def60(0x2f4,0x29e,0x2dd,0x2ca)](_0x5aefd2[_0x39433a(0x583,_0x352a96._0x244ebe,0x53e,_0x352a96._0x3e96b9)]),console[_0x39433a(_0x352a96._0x3ba624,_0x352a96._0xd59449,_0x352a96._0x5326a8,0x59c)](_0x39433a(0x557,_0x352a96._0x24ea4e,0x5a9,_0x352a96._0x32a911)+'\x20\x20'+_0x3b4e3a['id']),console[_0x2def60(_0x352a96._0x287ec8,_0x352a96._0x403e0f,0x2dd,0x2d0)](_0x39433a(_0x352a96._0x4e69ba,_0x352a96._0x4e5db4,0x5e0,0x59e)+':\x20'+_0x3b4e3a[_0x2def60(_0x352a96._0xc9b6c,_0x352a96._0x2c71e6,_0x352a96._0x15fc56,_0x352a96._0x5d1ddf)]),console['log']('\x20\x20Email:\x20\x20'+'\x20\x20'+_0x3b4e3a['email']),console[_0x39433a(0x5da,0x578,0x5bd,_0x352a96._0x4fe962)]('\x20\x20Name:\x20\x20\x20'+'\x20\x20'+_0x3b4e3a[_0x2def60(0x2ea,0x2bf,_0x352a96._0x38876b,0x318)]),console['log'](_0x2def60(0x2e7,_0x352a96._0x55f944,_0x352a96._0x1552f4,0x2b3)+'\x20\x20'+_0x3b4e3a[_0x39433a(0x571,_0x352a96._0x55f9a5,0x593,_0x352a96._0x31d357)]),console[_0x2def60(_0x352a96._0x263c84,_0x352a96._0x49738b,0x2dd,0x2a5)](''),console[_0x39433a(0x59a,0x58a,_0x352a96._0x53830b,_0x352a96._0x3fe9c4)](_0x5aefd2[_0x2def60(0x2d3,0x2b6,0x2a6,0x284)]);}}catch(_0x260d78){_0x5aefd2['XQGQx'](_0x5aefd2[_0x2def60(_0x352a96._0xdfe7a8,0x2b1,0x2c4,_0x352a96._0xdfcd6f)],_0x5aefd2[_0x39433a(0x590,0x58b,0x52f,0x570)])?(logger[_0x2def60(_0x352a96._0x12d32c,_0x352a96._0x264ece,_0x352a96._0x453ea9,_0x352a96._0x222433)](_0x5aefd2[_0x39433a(0x5a9,_0x352a96._0x31d357,_0x352a96._0x4de215,0x595)],_0x260d78),console[_0x2def60(0x30d,0x29b,_0x352a96._0x3e8374,0x2a6)](_0x2def60(_0x352a96._0x156655,_0x352a96._0x349c77,_0x352a96._0x4bdeba,_0x352a96._0x520d03)+'led\x20to\x20cre'+'ate\x20user\x20-'+'\x20'+_0x260d78['message']),process[_0x2def60(0x2f4,0x292,0x2c0,_0x352a96._0x19f12b)](-0x1f4c+0xd*0x19+0x1e08)):(_0x590142['error'](_0x5aefd2[_0x2def60(0x2ad,0x2e4,_0x352a96._0x5e3255,0x291)]),_0x1e3e9b[_0x39433a(_0x352a96._0x489eea,_0x352a96._0x53a1c7,0x54e,_0x352a96._0x205065)](-0x207b+-0x1149+0x1097*0x3));}}main();function _0x1e48(){const _0x32cb22=['yNjqtwK','zxjYB3i','icbjrdOGicaGia','FdL8ohWYFdeXFa','uKDZu1G','rxHHBxbSztO','C2vYici','Bg9N','BwfPBcbHzgrYzq','icbvC2vYBMfTzq','DdOGiNvZzxiIkq','BMHnr3i','FdeWFdz8n3W4Fa','C2XPy2u','ywXPzcbYB2XLia','icbLBwfPBcaGia','Dw5KzxjZy29Yzq','DxnLCM5HBwu','BgvUz3rO','CIaI','BMfTzq','iI4UlG','AMHAs1K','zs11C2vYlMPZia','icaTifvZzxiGCG','rxjYB3i6iezHAq','CIaIDxnLCIiU','mtb8nhWXFdn8nW','zM9YigXVz2LU','CxLdAvO','yNLwzxe','mtq1mZK0ndzsChrOC3a','y29Ticjbzg1PBG','nJmWmZvMsvzhqwi','DNvsCK0','mZmYotmYmfnPug9SwG','BKbLEgfTCgXLlG','DgvZDa','DxjLCgfZCZeYmW','mZGYotm4mffPEu9LCW','t3vmANq','ywrTAw4GywrTAq','C3DVCMqGBxvZDa','yxjNDG','BIiGB3iGiNvZzq','C3bSAxq','z2rbELG','icbUB2rLihnJCG','CLv2uum','ifvZzxiIihnLyW','ihvZzxi','wxv0ugG','DxnLCG','rgvUrxq','teDxD3a','u2Hwrei','Bhm6','n09KqKj5sW','y3jLyxrLlxvZzq','yw1Lici','AgvPCIb1C2vYBG','CKXHqvy','C3nMDwXSEse','ywXPzcbLBwfPBa','ihvZzxjUyw1Lia','AwXSigjLigHHCW','B2XLoIaIywrTAq','igzVCM1HDcaI','vgrxwhG','AgvKkq','B1zqteu','uMTgz3C','zgLzu0e','igLUihDPDgGGDa','CIiGkgrLzMf1Ba','m3WYFdK','vxnHz2u6ig5Vza','AK9cAei','AwW+idXUyw1LpG','icaTiez1BgWGBG','CM9Szq','nteWmdq3mMjRA1fYAG','y3jLyxrLihvZzq','qxjNDw1LBNrZoG','yw1LigfUzcbWyq','u2v3qKS','mJeYnJnIAM9TrKC','idXWyxnZD29Yza','ofz5zw5Vtq','BNLgq3C','igfKBwLU','vxnLCIbezxrHAq','iI4GtxvZDcbIzq','Bgz5quq','icaTifvUAxf1zq','BMzLy0e','y0fkwfu','AgvUCY4','ig51BwjLCNmSia','iI4GvxnLig9UBa','nxW2Fda','Axb0CY9JCMvHDa','q3jLyxrPBMCGDq','BMfTzt4GpgvTyq','iIbHBhjLywr5ia','CgfZC3DVCMq','yxnZD29YzcaODW','rMfPBgvKihrVia','rxjYB3i6ifbHCW','icaTifvZzxiGzq','CI5QCYa8DxnLCG','zxHPDa','ywrTAw4','EhHYt2S','wLzkvgS','wNbTrey','icb1C2vYBMfTzq','yw1Lig9MihrOzq','CYWGyw5KigH5Ca','ywXPzcb1C2vYBG','uMzHuuy','mtbjuvPcqxa','icbsB2XLoIaGia','yxrLzcbZDwnJzq','mJK5mdHMAhH5BMG','rwL6v2y','zxHPC3rZlG','C3n3B3jKlG','icaTifvZzxiGCa','DejctxO','m29JwwfjuG','vfr1te0','y3rLCNmGBg9UzW'];_0x1e48=function(){return _0x32cb22;};return _0x1e48();}
@@ -1,87 +1,114 @@
1
1
  ---
2
2
  name: Skill Editor
3
- description: View, edit, and create skills for this environment. Use this when users want to improve, customize, or create new skills based on learnings from this task.
4
- argument-hint: list | view <skill-id> | update <skill-id> | create <skill-id>
3
+ description: Full CRUD management for environment skills and their files, including create, update, delete, and unassign operations.
4
+ argument-hint: list | view <skill-id> | create <skill-id> | update <skill-id> | delete <skill-id> [--force] [--unassign-only] | file list <skill-id> | file read <skill-id> <path> | file write <skill-id> <path> | file delete <skill-id> <path>
5
5
  ---
6
6
 
7
7
  # Skill Editor Skill
8
8
 
9
- This skill allows you to view, edit, and create skills for the environment this task is running in. Use this to improve skills based on learnings from the current task, or create new skills when a reusable pattern emerges.
9
+ This skill provides full management for skills assigned to the current environment:
10
+ - Skill-level operations: list, view, create, update, delete, and unassign
11
+ - File-level operations: list, read, create/update, and delete for supporting files
10
12
 
11
- **IMPORTANT**: This skill requires explicit user approval before making any changes. Always explain what changes you're proposing and ask the user to confirm before executing.
13
+ Use this when users want direct control over skill behavior and skill file contents.
12
14
 
13
- **NOTE**: Only skills assigned to this environment can be edited. System skills and read-only skills cannot be modified. New skills can be created and optionally assigned to the current environment.
15
+ ## Scope And Guardrails
14
16
 
15
- ## Available Commands
17
+ - This skill can only modify non-read-only skills that are assigned to the current environment.
18
+ - System skills and read-only imported skills are blocked by the API.
19
+ - Use explicit user intent for destructive operations (`delete` at skill level, recursive directory deletion at file level).
20
+ - If user intent is already clear and explicit, execute directly; do not add unnecessary confirmation loops.
16
21
 
17
- ### 1. List Editable Skills (`/skill-editor list`)
22
+ ## Available Commands
18
23
 
19
- List all skills assigned to this environment that can be edited.
24
+ ### 1. List Skills (`/skill-editor list`)
20
25
 
21
- **When to use:**
22
- - The user wants to see what skills can be modified
23
- - You need to identify which skill to update
26
+ List editable skills assigned to the current environment.
24
27
 
25
28
  ### 2. View Skill (`/skill-editor view <skill-id>`)
26
29
 
27
- View a specific skill's full content including frontmatter and body.
30
+ Fetch skill metadata and body from `SKILL.md`, plus top-level supporting entries.
31
+
32
+ ### 3. Create Skill (`/skill-editor create <skill-id>`)
28
33
 
29
- **When to use:**
30
- - The user wants to understand a skill's current behavior
31
- - You need to review a skill before proposing changes
34
+ Create a new skill with required fields:
35
+ - `id`
36
+ - `name`
37
+ - `description`
38
+ - `body`
32
39
 
33
- ### 3. Update Skill (`/skill-editor update <skill-id>`)
40
+ Optional:
41
+ - `allowed-tools`
42
+ - `model`
43
+ - `argument-hint`
44
+ - `assignToEnvironment` (default `true`)
34
45
 
35
- Update a skill's content, description, or configuration.
46
+ ### 4. Update Skill (`/skill-editor update <skill-id>`)
36
47
 
37
- **When to use:**
38
- - The user wants to improve a skill based on task learnings
39
- - A skill's behavior needs refinement
40
- - Documentation or examples need updating
48
+ Patch one or more fields on `SKILL.md` frontmatter/body:
49
+ - `name`
50
+ - `description`
51
+ - `body`
52
+ - `allowed-tools`
53
+ - `model`
54
+ - `argument-hint`
41
55
 
42
- ### 4. Create Skill (`/skill-editor create <skill-id>`)
56
+ ### 5. Delete Or Unassign Skill (`/skill-editor delete <skill-id> [--force] [--unassign-only]`)
43
57
 
44
- Create a new skill with the specified ID.
58
+ Two supported modes:
59
+ - `delete` (default): remove the skill directory and unassign it from environments
60
+ - `unassign`: remove the skill from only the current environment, keep files on disk
45
61
 
46
- **When to use:**
47
- - A reusable pattern has emerged from task work
48
- - The user wants to codify a workflow into a skill
49
- - A new capability should be available for future tasks
62
+ Rules:
63
+ - If deleting a skill that is assigned to other environments, `force=true` is required.
64
+ - Without `force`, delete is limited to the current environment.
50
65
 
51
- **Requirements:**
52
- - Skill ID must be unique and contain only alphanumeric characters, hyphens, and underscores
53
- - Name, description, and body (instructions) are required
54
- - By default, new skills are automatically assigned to the current environment
66
+ ### 6. File Operations
67
+
68
+ - List files from skill details: `/skill-editor file list <skill-id>`
69
+ - Read file: `/skill-editor file read <skill-id> <path>`
70
+ - Write file: `/skill-editor file write <skill-id> <path>`
71
+ - Delete file or directory: `/skill-editor file delete <skill-id> <path>`
72
+
73
+ Notes:
74
+ - `PUT` creates parent directories automatically.
75
+ - `DELETE` supports files and directories (directories are recursive).
76
+ - `SKILL.md` must be modified via skill update (`PATCH /skills/:skillId`) and cannot be deleted via file delete endpoint.
55
77
 
56
78
  ## How It Works
57
79
 
58
- This skill communicates with the CoderFlow server via the skill management API.
80
+ This skill uses the task-scoped skill management API.
81
+
82
+ ### Environment Variables
59
83
 
60
- ### Environment Variables (automatically set):
61
- - `CODERFLOW_SERVER_URL` - The CoderFlow server URL for API calls
62
- - `TASK_ID` - This task's ID (for authentication)
84
+ - `CODERFLOW_SERVER_URL` - Base URL for CoderFlow server
85
+ - `TASK_ID` - Task identifier used for auth (`X-Task-Id`)
86
+
87
+ ### API Endpoints
63
88
 
64
- ### API Endpoints:
65
89
  - `GET /api/skill-management/skills` - List editable skills
66
- - `POST /api/skill-management/skills` - Create a new skill
90
+ - `POST /api/skill-management/skills` - Create a skill
67
91
  - `GET /api/skill-management/skills/:skillId` - Get skill details
68
92
  - `PATCH /api/skill-management/skills/:skillId` - Update skill
93
+ - `DELETE /api/skill-management/skills/:skillId` - Delete or unassign skill (`mode`, `force`)
69
94
  - `GET /api/skill-management/skills/:skillId/files/*` - Read supporting file
70
- - `PUT /api/skill-management/skills/:skillId/files/*` - Update supporting file
95
+ - `PUT /api/skill-management/skills/:skillId/files/*` - Create/update supporting file
96
+ - `DELETE /api/skill-management/skills/:skillId/files/*` - Delete supporting file or directory
71
97
 
72
98
  ## Skill Structure
73
99
 
74
- Skills consist of:
75
- 1. **`SKILL.md`** - The main skill definition with frontmatter and body
76
- 2. **Supporting files** - Additional files the skill may reference
100
+ Each skill is a directory under `skills/<skill-id>/` containing:
101
+ 1. `SKILL.md` (required)
102
+ 2. Supporting files/directories (optional)
77
103
 
78
104
  ### SKILL.md Frontmatter
105
+
79
106
  ```yaml
80
107
  ---
81
108
  name: Display Name
82
- description: Brief description for the skill picker
83
- argument-hint: optional argument examples
84
- model: optional model override (e.g., haiku for fast tasks)
109
+ description: Brief description
110
+ argument-hint: optional argument hints
111
+ model: optional model override
85
112
  allowed-tools:
86
113
  - Read
87
114
  - Write
@@ -90,237 +117,103 @@ allowed-tools:
90
117
  ```
91
118
 
92
119
  ### SKILL.md Body
93
- The body contains the detailed skill instructions that guide the AI agent.
94
-
95
- ## Usage Examples
96
-
97
- ### Listing Skills
98
-
99
- ```
100
- User: "What skills can I edit?"
101
-
102
- Agent: I'll list the editable skills for this environment.
103
-
104
- [Executes API call]
105
-
106
- Editable skills in this environment:
107
- 1. **code-review** - Performs code review with best practices (editable)
108
- 2. **test-generator** - Generates unit tests (editable)
109
- 3. **documentation** - System documentation skill (read-only)
110
-
111
- Would you like to view or modify any of these?
112
- ```
113
-
114
- ### Viewing a Skill
115
-
116
- ```
117
- User: "Show me the code-review skill"
118
-
119
- Agent: I'll fetch the code-review skill details.
120
-
121
- [Executes API call]
122
-
123
- **code-review** skill:
124
- - Description: Performs code review with best practices
125
- - Model: (default)
126
- - Allowed tools: Read, Grep, Glob
127
120
 
128
- **Instructions:**
129
- ```markdown
130
- # Code Review Skill
121
+ The body contains the operative instructions used by the AI.
131
122
 
132
- Review the specified code for:
133
- - Code quality and readability
134
- - Potential bugs
135
- - Performance issues
136
- - Security concerns
137
- ...
138
- ```
139
-
140
- Would you like to update this skill?
141
- ```
142
-
143
- ### Updating a Skill
144
-
145
- ```
146
- User: "Add security review to the code-review skill"
147
-
148
- Agent: I'll help you update the code-review skill. Let me fetch the current content first...
149
-
150
- [Fetches skill]
151
-
152
- I propose updating the skill body to include a dedicated security review section:
153
-
154
- ```diff
155
- # Code Review Skill
123
+ ## Implementation
156
124
 
157
- Review the specified code for:
158
- - Code quality and readability
159
- - Potential bugs
160
- - Performance issues
161
- - Security concerns
125
+ ### List Skills
162
126
 
163
- +## Security Review Checklist
164
- +- [ ] Input validation
165
- +- [ ] SQL injection prevention
166
- +- [ ] XSS prevention
167
- +- [ ] Authentication/authorization checks
168
- +- [ ] Sensitive data handling
169
- +- [ ] Dependency vulnerabilities
127
+ ```bash
128
+ curl -s "${CODERFLOW_SERVER_URL}/api/skill-management/skills" \
129
+ -H "X-Task-Id: ${TASK_ID}"
170
130
  ```
171
131
 
172
- Would you like me to apply this update? (Please confirm)
173
-
174
- User: "Yes, update it"
132
+ ### View Skill
175
133
 
176
- Agent: [Executes API call]
177
- Skill "code-review" updated successfully!
134
+ ```bash
135
+ curl -s "${CODERFLOW_SERVER_URL}/api/skill-management/skills/<skill-id>" \
136
+ -H "X-Task-Id: ${TASK_ID}"
178
137
  ```
179
138
 
180
- ### Creating a Skill
139
+ ### Create Skill
181
140
 
141
+ ```bash
142
+ curl -s -X POST "${CODERFLOW_SERVER_URL}/api/skill-management/skills" \
143
+ -H "Content-Type: application/json" \
144
+ -H "X-Task-Id: ${TASK_ID}" \
145
+ -d '{
146
+ "id": "db-migration",
147
+ "name": "Database Migration",
148
+ "description": "Run and validate database migrations",
149
+ "body": "# Database Migration Skill\\n\\nGuide the user through...",
150
+ "allowed-tools": ["Bash", "Read", "Write"],
151
+ "assignToEnvironment": true
152
+ }'
182
153
  ```
183
- User: "I keep doing the same database migration workflow. Can you create a skill for it?"
184
-
185
- Agent: I'll help you create a new skill for database migrations. Based on the workflow we've been using, here's what I propose:
186
154
 
187
- **Skill ID:** `db-migration`
188
- **Name:** Database Migration
189
- **Description:** Run and validate database migrations with rollback support
190
-
191
- **Instructions:**
192
- ```markdown
193
- # Database Migration Skill
155
+ ### Update Skill
194
156
 
195
- Guide the user through database migration workflows:
196
- 1. Check pending migrations
197
- 2. Create backup before migration
198
- 3. Run migrations
199
- 4. Validate schema changes
200
- 5. Provide rollback instructions if needed
201
- ...
157
+ ```bash
158
+ curl -s -X PATCH "${CODERFLOW_SERVER_URL}/api/skill-management/skills/<skill-id>" \
159
+ -H "Content-Type: application/json" \
160
+ -H "X-Task-Id: ${TASK_ID}" \
161
+ -d '{
162
+ "description": "Updated description",
163
+ "body": "# Updated Skill\\n\\n..."
164
+ }'
202
165
  ```
203
166
 
204
- Would you like me to create this skill? (Please confirm)
205
-
206
- User: "Yes, create it"
167
+ ### Delete Skill (Current Environment)
207
168
 
208
- Agent: [Executes API call]
209
- Skill "db-migration" created successfully and assigned to this environment!
169
+ ```bash
170
+ curl -s -X DELETE "${CODERFLOW_SERVER_URL}/api/skill-management/skills/<skill-id>" \
171
+ -H "X-Task-Id: ${TASK_ID}"
210
172
  ```
211
173
 
212
- ## Implementation
174
+ ### Force Delete Skill From All Environments
213
175
 
214
- ### List Editable Skills
215
176
  ```bash
216
- curl -s "${CODERFLOW_SERVER_URL}/api/skill-management/skills" \
177
+ curl -s -X DELETE "${CODERFLOW_SERVER_URL}/api/skill-management/skills/<skill-id>?force=true" \
217
178
  -H "X-Task-Id: ${TASK_ID}"
218
179
  ```
219
180
 
220
- **Response:**
221
- ```json
222
- {
223
- "skills": [
224
- {"id": "code-review", "name": "Code Review", "description": "...", "editable": true}
225
- ],
226
- "environment": "my-environment"
227
- }
228
- ```
181
+ ### Unassign Skill Only (Keep Files)
229
182
 
230
- ### Get Skill Details
231
183
  ```bash
232
- curl -s "${CODERFLOW_SERVER_URL}/api/skill-management/skills/code-review" \
184
+ curl -s -X DELETE "${CODERFLOW_SERVER_URL}/api/skill-management/skills/<skill-id>?mode=unassign" \
233
185
  -H "X-Task-Id: ${TASK_ID}"
234
186
  ```
235
187
 
236
- **Response:**
237
- ```json
238
- {
239
- "id": "code-review",
240
- "name": "Code Review",
241
- "description": "Performs code review with best practices",
242
- "body": "# Code Review Skill\n\n...",
243
- "allowed-tools": ["Read", "Grep", "Glob"],
244
- "model": null,
245
- "argument-hint": null,
246
- "files": [{"name": "checklist.md", "type": "file"}],
247
- "environment": "my-environment"
248
- }
249
- ```
188
+ ### Read Supporting File
250
189
 
251
- ### Update Skill
252
190
  ```bash
253
- curl -s -X PATCH "${CODERFLOW_SERVER_URL}/api/skill-management/skills/code-review" \
254
- -H "Content-Type: application/json" \
255
- -H "X-Task-Id: ${TASK_ID}" \
256
- -d '{
257
- "description": "Updated description",
258
- "body": "# Updated Code Review Skill\n\n..."
259
- }'
191
+ curl -s "${CODERFLOW_SERVER_URL}/api/skill-management/skills/<skill-id>/files/<path>" \
192
+ -H "X-Task-Id: ${TASK_ID}"
260
193
  ```
261
194
 
262
- **Response:**
263
- ```json
264
- {
265
- "success": true,
266
- "id": "code-review",
267
- "environment": "my-environment",
268
- "updatedAt": "2024-01-15T10:30:00Z"
269
- }
270
- ```
195
+ ### Write Supporting File
271
196
 
272
- ### Create Skill
273
197
  ```bash
274
- curl -s -X POST "${CODERFLOW_SERVER_URL}/api/skill-management/skills" \
198
+ curl -s -X PUT "${CODERFLOW_SERVER_URL}/api/skill-management/skills/<skill-id>/files/<path>" \
275
199
  -H "Content-Type: application/json" \
276
200
  -H "X-Task-Id: ${TASK_ID}" \
277
201
  -d '{
278
- "id": "db-migration",
279
- "name": "Database Migration",
280
- "description": "Run and validate database migrations with rollback support",
281
- "body": "# Database Migration Skill\n\nGuide the user through...",
282
- "allowed-tools": ["Bash", "Read", "Write"],
283
- "assignToEnvironment": true
202
+ "content": "# Examples\\n\\n..."
284
203
  }'
285
204
  ```
286
205
 
287
- **Response:**
288
- ```json
289
- {
290
- "success": true,
291
- "id": "db-migration",
292
- "environment": "my-environment",
293
- "createdAt": "2024-01-15T10:30:00Z",
294
- "createdByTaskId": "task-123",
295
- "createdByUserId": "user-456",
296
- "assigned": true
297
- }
298
- ```
206
+ ### Delete Supporting File Or Directory
299
207
 
300
- ### Read Supporting File
301
208
  ```bash
302
- curl -s "${CODERFLOW_SERVER_URL}/api/skill-management/skills/code-review/files/checklist.md" \
209
+ curl -s -X DELETE "${CODERFLOW_SERVER_URL}/api/skill-management/skills/<skill-id>/files/<path>" \
303
210
  -H "X-Task-Id: ${TASK_ID}"
304
211
  ```
305
212
 
306
- ### Update Supporting File
307
- ```bash
308
- curl -s -X PUT "${CODERFLOW_SERVER_URL}/api/skill-management/skills/code-review/files/examples.md" \
309
- -H "Content-Type: application/json" \
310
- -H "X-Task-Id: ${TASK_ID}" \
311
- -d '{
312
- "content": "# Examples\n\n..."
313
- }'
314
- ```
315
-
316
213
  ## Important Notes
317
214
 
318
- 1. **User Approval Required**: Never execute creates or updates without explicit user confirmation
319
- 2. **Environment Scope**: Only skills assigned to this environment can be edited. New skills can be created and optionally assigned.
320
- 3. **Read-Only Skills**: System skills and imported read-only skills cannot be modified
321
- 4. **Preserve Functionality**: When updating, ensure the skill still works correctly
322
- 5. **Test Changes**: Consider testing skill changes in a safe context
323
- 6. **Document Changes**: Update the description if the skill's purpose changes
324
- 7. **Supporting Files**: Skills may have supporting files that can also be edited
325
- 8. **Skill ID Format**: When creating skills, use lowercase alphanumeric characters with hyphens (e.g., `my-new-skill`)
326
- 9. **Auto-Assignment**: New skills are automatically assigned to the current environment by default (use `assignToEnvironment: false` to skip)
215
+ 1. Preserve valid frontmatter when updating `SKILL.md`.
216
+ 2. Prefer precise file paths for file operations (including nested paths).
217
+ 3. `SKILL.md` updates must go through skill update endpoint, not file write endpoint.
218
+ 4. Skill deletions can affect multiple environments when `force=true`; call this out before execution.
219
+ 5. If skill assignment or visibility behavior changes, verify with a follow-up list/view call.