@wular/coder 0.4.7 → 0.4.8

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 (608) hide show
  1. package/README.md +2 -2
  2. package/dist/actions-5TDwmn_z.js +20 -0
  3. package/dist/adapter-B2RXnvqt.js +49845 -0
  4. package/dist/adapter-YCvP9H2n.js +94 -0
  5. package/dist/adapter-sKt1J1Cm.js +1 -0
  6. package/dist/add-BDBCRqKN.js +1 -0
  7. package/dist/{add-DpsjB8Mp.js → add-DcR15CL7.js} +1 -1
  8. package/dist/add-Df1Ezy3y.js +2 -0
  9. package/dist/{add-B3zygDO5.js → add-yIlNqPSu.js} +1 -1
  10. package/dist/agent-B2Ikhp7u.js +1 -0
  11. package/dist/agent-C1HI4JlI.js +3 -0
  12. package/dist/{alias-CZjD1F0F.js → alias-DghaKDbh.js} +1 -1
  13. package/dist/api-qdpx8FD0.js +1 -0
  14. package/dist/{app-CE5j7IDN.js → app-snjvOKJA.js} +1 -1
  15. package/dist/approvals-BziBKWgU.js +2 -0
  16. package/dist/approve-DAuvq9Eq.js +1 -0
  17. package/dist/{approve-D5Dkw1Lo.js → approve-DKrTnZfk.js} +2 -2
  18. package/dist/apps-aj_JtpAm.js +242 -0
  19. package/dist/{archive-RBPoB4cr.js → archive-BhfGdyuC.js} +2 -2
  20. package/dist/{archive-Br2eM_A2.js → archive-DxWYJ7Zi.js} +2 -2
  21. package/dist/archive-sweep-CqTQUafj.js +1 -0
  22. package/dist/args-CxsMr9Un.js +1 -0
  23. package/dist/{ask-zjX8kQz0.js → ask-B_si1yM4.js} +2 -2
  24. package/dist/auth-B3RiDPMI.js +1 -0
  25. package/dist/auth-Cx4ePjWG.js +1 -0
  26. package/dist/build-CmtlB7pX.js +1 -0
  27. package/dist/builtin/coder/agent.json +19 -4
  28. package/dist/chat-Bbzlea60.js +1 -0
  29. package/dist/chat-DLolwsuq.js +13 -0
  30. package/dist/{chat-bridge-18koyS7c.js → chat-bridge-CvspGKBc.js} +1 -1
  31. package/dist/chunk-7WDLOIRP-B_IWkVtZ.js +1 -0
  32. package/dist/cli-D5hyqGq0.js +9 -0
  33. package/dist/cli.js +1 -1
  34. package/dist/config-BdeKsCPh.js +3 -0
  35. package/dist/config-D2FxHWwi.js +14 -0
  36. package/dist/connection-CQPndo-u.js +1 -0
  37. package/dist/connection-wq0CJZKh.js +1 -0
  38. package/dist/core-DwsAMCnL.js +65 -0
  39. package/dist/create-8_XbAnHs.js +1 -0
  40. package/dist/credentials-BOAy2_-6.js +1 -0
  41. package/dist/dash/standalone/server/build-index.json +1 -1
  42. package/dist/dash/standalone/server/manifest.json +2467 -1446
  43. package/dist/dash/standalone/server/modules-server-server-react-server/src/client/{index.b7c6e5f49704993d.js → index.8e150ef2bc6a5f4e.js} +68 -16
  44. package/dist/dash/standalone/server/modules-server-server-react-server/src/core/{defaults.36612942475445c3.js → defaults.e6ce0944639198a2.js} +5 -1
  45. package/dist/dash/standalone/server/modules-server-server-react-server/src/core/{errors.e10960fe4c66b9d8.js → errors.5954bd9bd05e8230.js} +1 -0
  46. package/dist/dash/standalone/server/modules-server-server-react-server/src/core/task/{log-view.58ba9a3d545808d7.js → log-view.871cbff2605b5cfd.js} +3 -2
  47. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/api/{load.35be1b07171553e7.js → load.4f942c7f68b2e273.js} +10 -5
  48. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/connect/{page.72b248cd95237fb6.js → page.a4ec4bce860e3e71.js} +6 -3
  49. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/create/[id]/page.4c818ef18a084013.js +29 -0
  50. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{account/loading.fce966caba9308e4.js → [org]/account/loading.f8373428f20c270b.js} +3 -3
  51. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{account/notify.fc4ba1b51ee26296.js → [org]/account/notify.b0946ff7951ecc11.js} +3 -3
  52. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{account/page.6c8e958aeab2678e.js → [org]/account/page.55eef4b0e71415d9.js} +22 -15
  53. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{account/sign-out.5d3bca9efecd6f70.js → [org]/account/sign-out.1ee9b7f1343376e9.js} +4 -4
  54. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/agent-menu.79e38c6e4139b9de.js +12 -0
  55. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{agents/(list)/agents-grid.0813591f217e9dbb.js → [org]/agents/(list)/agents-grid.3a3c550ff68aeb11.js} +23 -21
  56. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/connect-apps.7a4cfa5c917e5db9.js +35 -0
  57. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/(list)/loading.fd26a5414b0a06db.js +18 -0
  58. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{agents/(list)/page.e0ad2df8b7c9a0af.js → [org]/agents/(list)/page.b2bed855b68a77b2.js} +19 -20
  59. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{agents/[slug]/(tabs)/layout.f2464375e393c96e.js → [org]/agents/[slug]/(tabs)/layout.95b8bf3c438955c2.js} +51 -34
  60. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/loading.39c596735b108f80.js +5 -0
  61. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{agents/[slug]/(tabs)/page.1ba2497fa9116713.js → [org]/agents/[slug]/(tabs)/page.1401a08ea4e27c01.js} +33 -24
  62. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/loading.2d6e75e5923f73f2.js +29 -0
  63. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/page.848ccc3a609385a9.js +348 -0
  64. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/platforms/platform-actions.4b14873a20ebd56c.js +591 -0
  65. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/settings/agent-settings-form.dd8f3cbc00876ebd.js +408 -0
  66. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/settings/loading.80f597fd04fc4a97.js +8 -0
  67. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/settings/page.35d01036ce840ff9.js +46 -0
  68. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{agents/[slug]/(tabs)/tasks/loading.f5c0c1c727da9f57.js → [org]/agents/[slug]/(tabs)/tasks/loading.ff54c7100f781fbc.js} +2 -2
  69. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{agents/[slug]/(tabs)/tasks/page.9324e2d909d55c6f.js → [org]/agents/[slug]/(tabs)/tasks/page.e5a405c518c1d8e6.js} +2 -2
  70. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{agents/[slug]/(tabs)/usage/loading.5e1f922969ab7016.js → [org]/agents/[slug]/(tabs)/usage/loading.55aa8df7712e6820.js} +16 -8
  71. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/[slug]/(tabs)/usage/page.67c3489c62b661da.js +209 -0
  72. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{agents/[slug]/(tabs)/versions-list.e2427d618decaf7a.js → [org]/agents/[slug]/(tabs)/versions-list.0c20e2100b321316.js} +7 -7
  73. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{agents/[slug]/edit/loading.21eb60e655c125c7.js → [org]/agents/[slug]/edit/loading.2fa9e225a5c42496.js} +8 -8
  74. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{agents/[slug]/edit/page.057807354396ea77.js → [org]/agents/[slug]/edit/page.7132b3ef68d33cc4.js} +20 -16
  75. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/agent-pills.19e913c8cb22db21.js +101 -0
  76. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/agent-toggle.ec6d07ccd1f9796e.js +35 -0
  77. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/agent/hero.9de48723967d8546.js +94 -0
  78. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{agents/agent/instructions.2f4229d42e7c99ef.js → [org]/agents/agent/instructions.6558ffd02a59ad53.js} +4 -4
  79. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{agents/editor/connect-repositories.329ac182c8242a67.js → [org]/agents/editor/connect-repositories.258f6c2c5f1b1b17.js} +1 -1
  80. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{agents/editor/editor.d28d4afe11d7ff71.js → [org]/agents/editor/editor.9e1a0945f6880076.js} +162 -120
  81. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{agents/editor/import-picker.5e76549e7934b718.js → [org]/agents/editor/import-picker.e54af9841da11373.js} +41 -46
  82. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/agents/new/loading.38715a27e2d25ebd.js +30 -0
  83. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{agents/new/page.c3396459a9ba5c13.js → [org]/agents/new/page.6c8e9ef5d72b7ef1.js} +13 -12
  84. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{layout.53a8a3b0e4a7917f.js → [org]/layout.c67ccee8b4770821.js} +89 -85
  85. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/operator/operator-apps.3365f9248dfe735d.js +147 -0
  86. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/operator/page.c60ebc5afe4dcdae.js +84 -0
  87. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/page.c720853404d94114.js +11 -0
  88. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/connections-list.544315916300ed07.js +643 -0
  89. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{settings/[tab]/credentials-list.c25242f7f4ef6399.js → [org]/settings/[tab]/credentials-list.41ce6eb622300bb3.js} +158 -156
  90. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/credentials.c1a312e6ec58db83.js +44 -0
  91. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{settings/[tab]/engines-list.6c02a7e6d3c965cc.js → [org]/settings/[tab]/engines-list.75dc69caed34ff8f.js} +8 -10
  92. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{settings/[tab]/list.db2e212e3c8b5d32.js → [org]/settings/[tab]/list.6d6180438e2bd0c8.js} +12 -40
  93. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/loading.9d7c30db2ecccda3.js +6 -0
  94. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{settings/[tab]/models-list.052f3ccc66833937.js → [org]/settings/[tab]/models-list.04eb5a47bca3bd09.js} +37 -32
  95. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/page.dd00f57d398be882.js +133 -0
  96. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{settings/[tab]/runners-list.b5296983ba8007aa.js → [org]/settings/[tab]/runners-list.e644287ae91ea8c3.js} +65 -109
  97. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/[tab]/secrets-list.35fa72bf3f00d1af.js +136 -0
  98. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/layout.3a17085fb262e4ab.js +49 -0
  99. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/settings/page.bac05d6e87953d0e.js +11 -0
  100. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{settings/settings-head.d0f5ac9cbf170a77.js → [org]/settings/settings-head.a14b9796a8af62dc.js} +8 -7
  101. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{settings/tunnel-guide.f6685b045ccccdcd.js → [org]/settings/tunnel-guide.1fd664df1fd0e3c1.js} +5 -3
  102. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/create-link.3acdd50e1cc0c729.js +34 -0
  103. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/outcome-dialog.d730e0bfbe0cf2f8.js +32 -0
  104. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/outcome.cbbc8cd1bbbee01b.js +71 -0
  105. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/setup/page.079600422889e725.js +44 -0
  106. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/activity.ed49ee2686d1ee41.js +318 -0
  107. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{tasks/[id]/loading.d88d1139ea3ff52a.js → [org]/tasks/[id]/loading.0d973b51fee68801.js} +8 -8
  108. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/[id]/page.05dd344bada1d4d8.js +24 -0
  109. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{tasks/[id]/task-actions.ee523c68a38a7975.js → [org]/tasks/[id]/task-actions.ece7ec732352ce70.js} +44 -79
  110. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{tasks/[id]/task-view.1c54f267d127f4e3.js → [org]/tasks/[id]/task-view.8a5908c42647923f.js} +91 -80
  111. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/composer-data.ff108c0ef82a4d7b.js +69 -0
  112. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{tasks/composer.f232cc1bf2d7b08a.js → [org]/tasks/composer.c7ec618e215d63ce.js} +99 -64
  113. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{tasks/list/status.b90b76ffa62e957a.js → [org]/tasks/list/status.16190fdd5fd7daad.js} +2 -2
  114. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{tasks/list/task.465c2af602cce783.js → [org]/tasks/list/task.af5001e51d2f612b.js} +12 -1
  115. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{tasks/list/tasks-list.2a0e1eb5c396be42.js → [org]/tasks/list/tasks-list.0976f1812d6d15f5.js} +114 -110
  116. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{tasks/list/tasks-section.2cbc1550d723661d.js → [org]/tasks/list/tasks-section.fd72404364042b87.js} +14 -13
  117. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/tasks/page.293492d13a9dca2e.js +16 -0
  118. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{usage/custom-range.d85de32fb6ec4fe6.js → [org]/usage/custom-range.471edcb853889c2e.js} +7 -7
  119. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{usage/day-chart.5e716070459d785c.js → [org]/usage/day-chart.d40438efa74b0596.js} +4 -4
  120. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/[org]/usage/loading.5b28c7d8f3a473a3.js +15 -0
  121. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{usage/metric.ca0466e33225f184.js → [org]/usage/metric.ada350d2b7449b39.js} +1 -1
  122. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{usage/page.c2b88b495780b12a.js → [org]/usage/page.69adbf6cde427292.js} +20 -19
  123. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{usage/range-bar.76e3de97583e6eab.js → [org]/usage/range-bar.884e58b044238e98.js} +11 -11
  124. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{usage/stats.4793e81a32ea5e8f.js → [org]/usage/stats.de820599cf126120.js} +2 -2
  125. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{usage/top-agents.b228062d012dc17b.js → [org]/usage/top-agents.b00f571862b5b608.js} +21 -15
  126. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/{layout.c762b39aafb84a1f.js → layout.ab6f86cc5b8b2dab.js} +1 -1
  127. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/login/{page.3ddaa1a675a04c5a.js → page.088b41424cd6cf3c.js} +6 -3
  128. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{drawer.b337ce209ff621e9.js → drawer.0e2e3636f33049f5.js} +5 -3
  129. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/foreign-link.fe46528a6a66c0f4.js +28 -0
  130. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{heads.fa2157b3b36647f3.js → heads.20414ddcb2d08bcd.js} +18 -14
  131. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{loading-card.bf58af8330a78704.js → loading-card.df3717186948c93f.js} +3 -3
  132. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{page-head.a2336c95004aed4b.js → page-head.e5d2185c1cdac740.js} +9 -8
  133. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{stream.77a2ec038d97b2b8.js → stream.2fea238dc4f4f9a4.js} +2 -2
  134. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{task-toasts.10b46a8b8db1791f.js → task-toasts.4282affa47415a36.js} +107 -23
  135. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/frame/{theme-choices.ea23f57dd753683f.js → theme-choices.ef190ef1cd197199.js} +1 -1
  136. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/back-cookie.942c0904e944d8d6.js +12 -0
  137. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/back.af528135d7e33d6d.js +42 -0
  138. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/{current-link.844899810531977f.js → current-link.727b350a40b9ca13.js} +1 -1
  139. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/org.813dc34bd23a336f.js +29 -0
  140. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/{side-toggle.55d3e6c43ca5e1f9.js → side-toggle.bafcb4b273b1c4d0.js} +1 -1
  141. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/nav/{to.0116bedfbe5f1133.js → to.a2c840c09bd4bf4a.js} +2 -0
  142. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/badge.3d9163a51e6f6d6e.js +43 -0
  143. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/card.15f7435f202831c3.css.pnext-asset.js +0 -0
  144. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{card.b0873d38765c9d20.js → card.6227f43fc0ae4bd1.js} +36 -2
  145. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{combo.ca0efacf2ce15578.js → combo.0572dd5730c94112.js} +1 -1
  146. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/confirm.d18497f656702a16.css.pnext-asset.js +0 -0
  147. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/confirm.fe133a074c2743af.js +26 -0
  148. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/copy.991f1efa061e71d6.css.pnext-asset.js +0 -0
  149. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/copy.9be99c94423eb1ca.js +33 -0
  150. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{field.7b2a2075ee8c6e29.js → field.75588c33b72824a7.js} +0 -7
  151. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{filter.f19b6d5ebd6a3c2b.js → filter.4f703a4ce7d2a519.js} +3 -3
  152. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{icons.1777c0350d5d215e.js → icons.868385119bf2de28.js} +3 -0
  153. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{menu.a4dd9fb9f566689a.js → menu.0f064f75822888be.js} +29 -9
  154. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/menu.1d42c8d0493e2221.css.pnext-asset.js +0 -0
  155. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/modal.92432959e3a3e2c0.js +67 -0
  156. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/modal.9db07d368dcf5981.css.pnext-asset.js +0 -0
  157. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/notice.f395f231cbb96445.js +13 -0
  158. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/select.32a95ad31c0436ad.css.pnext-asset.js +0 -0
  159. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{select.f036fdc3fce02b92.js → select.7f481669998074f8.js} +27 -17
  160. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{sentinel.d3d29747fe976f88.js → sentinel.17cffebfc3103b9f.js} +1 -1
  161. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/sentinel.1e3ec9bd6008d811.css.pnext-asset.js +0 -0
  162. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{tabs.d00fc01ad9c1b91e.js → tabs.66b2e54963f6901b.js} +3 -2
  163. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{tail.9377d261fe9e91df.js → tail.30913c92f5ca6102.js} +1 -1
  164. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/{toolbar.b2c59c5fc015d08d.js → toolbar.801bbd3163d3fbb0.js} +3 -3
  165. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/action.568346602027ac74.js +34 -0
  166. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/client.d25e6dcc6704eb60.js +59 -0
  167. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/{paged.7e5713a82abf0211.js → paged.18f5872fc5aebe96.js} +1 -0
  168. package/dist/dash/standalone/static/assets/chunks/action-df9907c7a10bf826.js +1 -0
  169. package/dist/dash/standalone/static/assets/chunks/agent-pills-106a518bef96408e.js +1 -0
  170. package/dist/dash/standalone/static/assets/chunks/agent-settings-form-d1aa82950d30d829.js +1 -0
  171. package/dist/dash/standalone/static/assets/chunks/agent-toggle-44667051d8be2040.js +1 -0
  172. package/dist/dash/standalone/static/assets/chunks/agents-grid-69fabb48962a282a.js +1 -0
  173. package/dist/dash/standalone/static/assets/chunks/back-e02e04679467c05b.js +1 -0
  174. package/dist/dash/standalone/static/assets/chunks/badge-b302b4d707908367.js +1 -0
  175. package/dist/dash/standalone/static/assets/chunks/card-31a2cdcfeda5254f.js +1 -0
  176. package/dist/dash/standalone/static/assets/chunks/{combo-8aa7545cfda42090.js → combo-fd495e7fa91b69ed.js} +1 -1
  177. package/dist/dash/standalone/static/assets/chunks/composer-10f0a825a16e1fc7.js +1 -0
  178. package/dist/dash/standalone/static/assets/chunks/composer-8c1198d45f700738.js +1 -0
  179. package/dist/dash/standalone/static/assets/chunks/confirm-7b6112578a1c4877.js +1 -0
  180. package/dist/dash/standalone/static/assets/chunks/connect-apps-bd95a6cbdc89a438.js +1 -0
  181. package/dist/dash/standalone/static/assets/chunks/{connect-repositories-8864a63f83ffd411.js → connect-repositories-569c181ff81509f4.js} +1 -1
  182. package/dist/dash/standalone/static/assets/chunks/connections-list-5bbf7321d9bfd08f.js +1 -0
  183. package/dist/dash/standalone/static/assets/chunks/copy-f057128db8aefd1b.js +1 -0
  184. package/dist/dash/standalone/static/assets/chunks/create-link-6f6e6b87e46f67c8.js +1 -0
  185. package/dist/dash/standalone/static/assets/chunks/credentials-list-8fc72c0331289ac6.js +2 -0
  186. package/dist/dash/standalone/static/assets/chunks/custom-range-d06cd17fcc05183d.js +1 -0
  187. package/dist/dash/standalone/static/assets/chunks/defaults-dcc0eccad4e8585b.js +1 -0
  188. package/dist/dash/standalone/static/assets/chunks/editor-b5a9659f85edea17.js +7 -0
  189. package/dist/dash/standalone/static/assets/chunks/engines-list-c10ca5e7410b790f.js +1 -0
  190. package/dist/dash/standalone/static/assets/chunks/field-f40df6a5289dfe05.js +1 -0
  191. package/dist/dash/standalone/static/assets/chunks/{filter-02bba5796258deb0.js → filter-966a9aae3b0b6d77.js} +1 -1
  192. package/dist/dash/standalone/static/assets/chunks/{instructions-0b968d5d0a58c716.js → instructions-c9e1097c4e1b352a.js} +1 -1
  193. package/dist/dash/standalone/static/assets/chunks/instructions-e969d4439f6676c9.js +1 -0
  194. package/dist/dash/standalone/static/assets/chunks/list-5db1dd782965a5fc.js +1 -0
  195. package/dist/dash/standalone/static/assets/chunks/model-options-3a57918eaa4a2a82.js +1 -0
  196. package/dist/dash/standalone/static/assets/chunks/models-list-b6237067c9a39f97.js +1 -0
  197. package/dist/dash/standalone/static/assets/chunks/notice-84358e912a9f01cc.js +1 -0
  198. package/dist/dash/standalone/static/assets/chunks/outcome-dialog-c4f75d37645035b8.js +1 -0
  199. package/dist/dash/standalone/static/assets/chunks/paged-c44eccacea100110.js +1 -0
  200. package/dist/dash/standalone/static/assets/chunks/platform-actions-6004e96f54953935.js +1 -0
  201. package/dist/dash/standalone/static/assets/chunks/platform-actions-d8dd016336a3d768.js +1 -0
  202. package/dist/dash/standalone/static/assets/chunks/runners-list-0b288b2b79de8968.js +1 -0
  203. package/dist/dash/standalone/static/assets/chunks/secrets-list-64650cb827e93322.js +1 -0
  204. package/dist/dash/standalone/static/assets/chunks/{segmented-bf5a4c06605249e0.js → segmented-5423dcc766dc7abc.js} +1 -1
  205. package/dist/dash/standalone/static/assets/chunks/select-53722330d2e3f1c6.js +1 -0
  206. package/dist/dash/standalone/static/assets/chunks/shared-init-35a0e9007eeca198.js +2 -0
  207. package/dist/dash/standalone/static/assets/chunks/shared-init-a7f2e71a718bc285.js +5 -0
  208. package/dist/dash/standalone/static/assets/chunks/shared-init-b8184e0e554d5aa4.js +1 -0
  209. package/dist/dash/standalone/static/assets/chunks/shared-init-e0aa7cbf9ac680b5.js +1 -0
  210. package/dist/dash/standalone/static/assets/chunks/side-toggle-34ee3bbe5ac64a60.js +1 -0
  211. package/dist/dash/standalone/static/assets/chunks/{tail-74153aeac1f0baec.js → tail-7dece33a58f72850.js} +1 -1
  212. package/dist/dash/standalone/static/assets/chunks/task-6ae2bb4f1b384140.js +1 -0
  213. package/dist/dash/standalone/static/assets/chunks/task-actions-b36dc5fcd9b2b2c5.js +1 -0
  214. package/dist/dash/standalone/static/assets/chunks/task-view-1696d47594c6dbfa.js +5 -0
  215. package/dist/dash/standalone/static/assets/chunks/tasks-list-7c70210e7121b95a.js +1 -0
  216. package/dist/dash/standalone/static/assets/chunks/versions-list-26475f0d05e2d434.js +1 -0
  217. package/dist/dash/standalone/static/assets/connect-b73a327c12fa5c63.css +1 -0
  218. package/dist/dash/standalone/static/assets/create-param-id-d679f8832eafd7e8.css +1 -0
  219. package/dist/dash/standalone/static/assets/{dash-settings-cf1997cd7f72e518.css → dash-param-org-14abc8f62d04dc4c.css} +1 -1
  220. package/dist/dash/standalone/static/assets/dash-param-org-account-aba6d7e7f99c97cb.css +1 -0
  221. package/dist/dash/standalone/static/assets/dash-param-org-agents-570ddee6de22492e.css +1 -0
  222. package/dist/dash/standalone/static/assets/dash-param-org-agents-new-9fa9b19084b3cd2f.css +1 -0
  223. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-0e7e591f05cbddf5.css +1 -0
  224. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-edit-f16fb90321952887.css +1 -0
  225. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-platforms-5cf30b084239d643.css +1 -0
  226. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-settings-1c84b31df8c64b88.css +1 -0
  227. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-tasks-7da323ffa5be29aa.css +1 -0
  228. package/dist/dash/standalone/static/assets/dash-param-org-agents-param-slug-usage-4900a42b805e90cb.css +1 -0
  229. package/dist/dash/standalone/static/assets/dash-param-org-operator-2f4e497a01a78f29.css +1 -0
  230. package/dist/dash/standalone/static/assets/dash-param-org-settings-0ea983332482dbc6.css +1 -0
  231. package/dist/dash/standalone/static/assets/dash-param-org-settings-param-tab-e1c1f81610bb925f.css +1 -0
  232. package/dist/dash/standalone/static/assets/dash-param-org-setup-6824fce3862dbb43.css +1 -0
  233. package/dist/dash/standalone/static/assets/dash-param-org-tasks-f914c28afa705d66.css +1 -0
  234. package/dist/dash/standalone/static/assets/dash-param-org-tasks-param-id-65c8bb06f94ff868.css +1 -0
  235. package/dist/dash/standalone/static/assets/dash-param-org-usage-5dbb2aa369c46eed.css +1 -0
  236. package/dist/dash/standalone/static/assets/global-eecd2b20d5e4b08d.css +1 -0
  237. package/dist/dash/standalone/static/assets/login-ca4c0cd7d65b3269.css +1 -0
  238. package/dist/dash/standalone/static/assets/pnext-client-0bcd0cbf2549bdf2.js +1 -0
  239. package/dist/dash/standalone/static/assets/pnext-client-22414b6c8a870c92.js +1 -0
  240. package/dist/dash/standalone/static/assets/pnext-client-2a02ab5209cae1ea.js +1 -0
  241. package/dist/dash/standalone/static/assets/pnext-client-46d843cfdabf3e71.js +1 -0
  242. package/dist/dash/standalone/static/assets/pnext-client-5a50a2a4da7e870e.js +1 -0
  243. package/dist/dash/standalone/static/assets/pnext-client-5b6ea850cead1482.js +1 -0
  244. package/dist/dash/standalone/static/assets/pnext-client-5b94497ba23568a8.js +1 -0
  245. package/dist/dash/standalone/static/assets/pnext-client-6686f1714e481293.js +1 -0
  246. package/dist/dash/standalone/static/assets/pnext-client-67155accb837a12a.js +1 -0
  247. package/dist/dash/standalone/static/assets/pnext-client-7db5d810ee904f4b.js +1 -0
  248. package/dist/dash/standalone/static/assets/pnext-client-8d779b89650f4b7a.js +1 -0
  249. package/dist/dash/standalone/static/assets/pnext-client-9d7a7a634c9be6ac.js +1 -0
  250. package/dist/dash/standalone/static/assets/pnext-client-9edebc462604c881.js +1 -0
  251. package/dist/dash/standalone/static/assets/pnext-client-aa5a424e38b430a5.js +1 -0
  252. package/dist/dash/standalone/static/assets/pnext-client-b983cd476c808b15.js +1 -0
  253. package/dist/dash/standalone/static/assets/pnext-client-bdf1cb75a3de35ea.js +1 -0
  254. package/dist/dash/standalone/static/assets/pnext-client-c5177dd613b27b84.js +1 -0
  255. package/dist/dash/standalone/static/assets/{pnext-client-ffab25199333314f.js → pnext-client-d998d7077d159f68.js} +1 -1
  256. package/dist/dash/standalone/static/assets/pnext-client-f01c6d0c6beb582b.js +1 -0
  257. package/dist/dash/standalone/static/assets/pnext-client-fd4c0f3ecbcc461c.js +1 -0
  258. package/dist/{default-B3ValFJp.js → default-CNhVH61w.js} +1 -1
  259. package/dist/default-dQC33jLt.js +1 -0
  260. package/dist/{delete-6T7ujDtY.js → delete-BDOtztW_.js} +2 -2
  261. package/dist/{delete-k7pxp5B6.js → delete-Dbo9goyQ.js} +2 -2
  262. package/dist/{disable-BJXxuJ9s.js → disable-VvU6oDku.js} +1 -1
  263. package/dist/discover-CBP4Uw0N.js +1 -0
  264. package/dist/{discover-CRUU1hdS.js → discover-hpHsnxqU.js} +2 -2
  265. package/dist/dispatch-D3Dqxijf.js +8 -0
  266. package/dist/dist-BTornX7Y.js +101 -0
  267. package/dist/dist-C3wD7GfG.js +4 -0
  268. package/dist/dist-DkATuPBB.js +6 -0
  269. package/dist/dist-node-Bv1kCqyi.js +20 -0
  270. package/dist/docs-3SW1O9iS.js +2 -0
  271. package/dist/{docs-PmFB2aMA.js → docs-CYMICGEv.js} +1 -1
  272. package/dist/{enable-DZ7rw7iL.js → enable-BmvNVDHO.js} +1 -1
  273. package/dist/env-C_DoQYl5.js +1 -0
  274. package/dist/exec-BsXFIdTl.js +11 -0
  275. package/dist/executor-5j-Ewzzb.js +11 -0
  276. package/dist/flow/builtin/review.d.ts +1 -156
  277. package/dist/flow/builtin/review.js +7 -7
  278. package/dist/flow/index.d.ts +1 -1
  279. package/dist/flow/index.js +1 -1
  280. package/dist/{flow-D8T71fyu.js → flow-4Rr-2NUz.js} +1 -1
  281. package/dist/http-BYMXT_p6.js +1 -0
  282. package/dist/{index-Xe8n_t2Z.d.ts → index-CVjkwYeS.d.ts} +103 -1
  283. package/dist/{init-BfXdsU46.js → init-kZdO2PF5.js} +1 -1
  284. package/dist/integrations-35T26qmP.js +1 -0
  285. package/dist/integrations-D3OgJk6Y.js +1 -0
  286. package/dist/lib/broker.js +2 -2
  287. package/dist/{list-DedQA2pn.js → list-CLqNS8_q.js} +2 -2
  288. package/dist/{list-F-PN6ieH.js → list-CbN2giPy.js} +1 -1
  289. package/dist/list-ChFFjT_a.js +2 -0
  290. package/dist/{list-CO8x2rgz.js → list-D0NK3Iqu.js} +1 -1
  291. package/dist/{list-yoGxyIlx.js → list-D2eSpGoo.js} +1 -1
  292. package/dist/list-D3LCULQt.js +1 -0
  293. package/dist/{list-erdHI-w9.js → list-P2Ztf1bQ.js} +2 -2
  294. package/dist/{list-NtMN55g0.js → list-uS9iEE0F.js} +1 -1
  295. package/dist/load-CRmQB1LD.js +2 -0
  296. package/dist/local-XNsjb-UM.js +1 -0
  297. package/dist/log-view-DB4nXHXO.js +3 -0
  298. package/dist/{login-CJjcqCg4.js → login-BoOBMH4y.js} +1 -1
  299. package/dist/login-CCA0uLsW.js +1 -0
  300. package/dist/{logout-B7mHWeWr.js → logout-Cv0cm9F8.js} +1 -1
  301. package/dist/maintenance-B_79IJ_E.js +1 -0
  302. package/dist/match-Kt3vFTl1.js +1 -0
  303. package/dist/mcp-C13n4A3y.js +12 -0
  304. package/dist/mcp-YhyTUMIM.js +11 -0
  305. package/dist/{model-Cti-OOdV.js → model-0sxp5GdI.js} +1 -1
  306. package/dist/models-CdvmuaLv.js +1 -0
  307. package/dist/prompt-C--TI1qn.js +8 -0
  308. package/dist/push-IpLeKMp-.js +1 -0
  309. package/dist/reconnect-CR3RaXX0.js +1 -0
  310. package/dist/refresh-D0YjtXBD.js +1 -0
  311. package/dist/remote-oQs6My_3.js +1 -0
  312. package/dist/remove-B01SXfEq.js +1 -0
  313. package/dist/remove-C9eahMDh.js +1 -0
  314. package/dist/remove-D1UOd48O.js +1 -0
  315. package/dist/remove-D65xtbw5.js +1 -0
  316. package/dist/rename-Qwr_XDxD.js +1 -0
  317. package/dist/result-70jciKDJ.js +5 -0
  318. package/dist/{result-DtVw6XYk.js → result-DXL9N9Ip.js} +7 -7
  319. package/dist/{resume-D7XcEIbu.js → resume-xqhwHn3l.js} +2 -2
  320. package/dist/review-D-U_2KyT.d.ts +157 -0
  321. package/dist/{review-DZGyNO5h.js → review-vlPAshsb.js} +3 -3
  322. package/dist/{rotate-key-pIfcaeCd.js → rotate-key-CfeZ6Rg7.js} +1 -1
  323. package/dist/{run-BlXCPJzq.js → run-CoTg7SkY.js} +2 -2
  324. package/dist/{run-B-2NnW4r.js → run-CvdayZfK.js} +2 -2
  325. package/dist/{run-Co36tfya.js → run-VOuS-hHe.js} +1 -1
  326. package/dist/runner-D0TLZrrO.js +1 -0
  327. package/dist/runner-DME7ohjt.js +1 -0
  328. package/dist/runners-UNKPlmYE.js +36 -0
  329. package/dist/schema-BSlHRFSP.js +8 -0
  330. package/dist/schema.config.d.ts +12 -0
  331. package/dist/schema.config.js +1 -0
  332. package/dist/schema.d.ts +2 -0
  333. package/dist/schema.js +1 -0
  334. package/dist/sdk-4Vjo5Q6R.d.ts +12371 -0
  335. package/dist/sdk.d.ts +5 -1549
  336. package/dist/sdk.js +1 -1
  337. package/dist/serve-BQsv2KZs.js +1 -0
  338. package/dist/serve-BoTW4P2G.js +2 -0
  339. package/dist/serve-ByWMT5Gm.js +1 -0
  340. package/dist/serve-HNXk3HMY.js +9 -0
  341. package/dist/server-B1x8gx33.js +1 -0
  342. package/dist/{setup-host-ON6zJGqS.js → setup-host-DExG-bWZ.js} +1 -1
  343. package/dist/show-BeacgzZ0.js +1 -0
  344. package/dist/{show-jdaVKG0f.js → show-D3OC0c35.js} +1 -1
  345. package/dist/slack-C_RlVDz7.js +3 -0
  346. package/dist/{status-BO1jm6NW.js → status-ZN0HYtLa.js} +1 -1
  347. package/dist/steer-DwSC8AO4.js +4 -0
  348. package/dist/{stop-BS2MB4CQ.js → stop-CEEiI1RA.js} +1 -1
  349. package/dist/{stop-B-dQ2-Gm.js → stop-DTzpTbg1.js} +2 -2
  350. package/dist/task-4gw9OZun.js +1 -0
  351. package/dist/task-CB-j4EO8.js +5 -0
  352. package/dist/task-IoBYe7ok.js +1 -0
  353. package/dist/test-BnGF24Hg.js +1 -0
  354. package/dist/tools-ar-D3jOh.js +1 -0
  355. package/dist/types-B42Oh0zF.js +1 -0
  356. package/dist/types-BktBEKW5.d.ts +1710 -0
  357. package/dist/{unalias-DpkgCs_c.js → unalias-9AwJnbpE.js} +1 -1
  358. package/dist/{update-ChIiUO1Z.js → update-DoJEPBvm.js} +1 -1
  359. package/dist/{upgrade-Cq24oWFZ.js → upgrade-DRPBwDYe.js} +2 -2
  360. package/dist/{usage-CazoINYM.js → usage-CItBLFFE.js} +1 -1
  361. package/dist/views-BhsnL0nr.js +5 -0
  362. package/dist/watch-BMuVZorc.js +9 -0
  363. package/dist/{watch-B3gAEK1N.js → watch-Bl_pCGfq.js} +2 -2
  364. package/dist/wire-B5rc5Av6.js +1 -0
  365. package/dist/worker-BFGETvid.js +1 -0
  366. package/dist/worker-BiJ7jiOr.js +9 -0
  367. package/dist/{workflow-BOPHazbM.js → workflow-CcC-xbfp.js} +1 -1
  368. package/dist/zod-BoqHoRCH.js +1 -0
  369. package/dist/zod.d.ts +3 -0
  370. package/dist/zod.js +1 -0
  371. package/docs/agents/coder.md +9 -2
  372. package/docs/agents/index.md +28 -18
  373. package/docs/cli.md +24 -13
  374. package/docs/config.md +1 -1
  375. package/docs/dash.md +3 -3
  376. package/docs/flows.md +3 -3
  377. package/docs/mcp.md +8 -16
  378. package/docs/sdk.md +4 -4
  379. package/docs/self-host.md +29 -18
  380. package/package.json +22 -14
  381. package/plugins/claude/.claude-plugin/plugin.json +1 -1
  382. package/plugins/cursor/.cursor-plugin/plugin.json +1 -1
  383. package/dist/actions-CmfXOVXQ.js +0 -20
  384. package/dist/adapter-7SEiVsmp.js +0 -1
  385. package/dist/adapter-BLEfUqoQ.js +0 -1
  386. package/dist/adapter-DaiJMOYo.js +0 -1
  387. package/dist/adapter-H4GlcKQz.js +0 -1
  388. package/dist/adapter-PeKziOUg.js +0 -1
  389. package/dist/add-8Z5bNm74.js +0 -1
  390. package/dist/add-DiwLZmjp.js +0 -1
  391. package/dist/add-json-wOUPHwUD.js +0 -1
  392. package/dist/agent-B69nSuTY.js +0 -1
  393. package/dist/agent-D0pQ_ewc.js +0 -3
  394. package/dist/approvals-Gv7x14u3.js +0 -2
  395. package/dist/apps-CaHoLNE7.js +0 -1
  396. package/dist/archive-sweep-jE6TPk2F.js +0 -1
  397. package/dist/args-DEMOfLz2.js +0 -1
  398. package/dist/auth-DSE3SIuI.js +0 -1
  399. package/dist/auth-DsxfkPsx.js +0 -1
  400. package/dist/chat-3Znsevah.js +0 -1
  401. package/dist/chat-cknlIhVh.js +0 -13
  402. package/dist/cli-DtTdpTy3.js +0 -9
  403. package/dist/cli.d.ts +0 -71
  404. package/dist/client-31YzOj-i.js +0 -1
  405. package/dist/config-BAkyRxp-.js +0 -3
  406. package/dist/create-BF6VHUst.js +0 -1
  407. package/dist/credentials-6PHXj8k7.js +0 -1
  408. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/(list)/agent-menu.6d3339a02f02460d.js +0 -12
  409. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/(list)/connect-apps.8d218b96f9939819.js +0 -42
  410. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/(list)/loading.02dd47fe59680cc8.js +0 -18
  411. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/loading.b27b95d8ccf0581e.js +0 -5
  412. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/platforms/loading.572d3404b984b163.js +0 -10
  413. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/platforms/page.9b30598fa84dd0df.js +0 -170
  414. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/platforms/platform-actions.bc640252ecf046c6.js +0 -70
  415. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/settings/agent-settings-form.d3e6dc6bcfcfc928.js +0 -268
  416. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/settings/loading.a55efbdbdd995213.js +0 -8
  417. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/settings/page.44eabcf6cf9fbfbd.js +0 -35
  418. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/[slug]/(tabs)/usage/page.30a31e2464417a08.js +0 -160
  419. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/agent/agent-pills.6a0eea1ec99dffd7.js +0 -67
  420. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/agent/hero.9af8c50df6487ca5.js +0 -62
  421. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/agents/new/loading.02e30b3a7f1ab9f1.js +0 -28
  422. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/page.a4be8e0779589f4e.js +0 -10
  423. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/credentials.a62d1642ca580836.js +0 -34
  424. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/loading.f4024074bf71b11b.js +0 -6
  425. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/mcp-list.0ce34ed7d7e756a7.js +0 -249
  426. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/[tab]/page.3458e42728e30f54.js +0 -86
  427. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/layout.85946d20d7e48767.js +0 -39
  428. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/settings/page.9d2087e0e33d57f8.js +0 -6
  429. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/[id]/activity.4aeb0734da711e10.js +0 -177
  430. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/[id]/page.e5b562dd47e19043.js +0 -24
  431. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/composer-data.5f12d8ef1db38026.js +0 -63
  432. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/tasks/page.107706655a927e59.js +0 -16
  433. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/usage/loading.8aabf89dabaf1c3f.js +0 -15
  434. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/badge.5abdef72e9189fdc.js +0 -31
  435. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/ui/confirm.1328a7ede6c27bb9.js +0 -53
  436. package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/utils/client.a8205c524e63d4a9.js +0 -26
  437. package/dist/dash/standalone/static/assets/chunks/agent-pills-c5d56f60f9e17aea.js +0 -1
  438. package/dist/dash/standalone/static/assets/chunks/agent-settings-form-738f9ac4b9fb67ef.js +0 -1
  439. package/dist/dash/standalone/static/assets/chunks/agents-grid-37e2e7f7a37b7a35.js +0 -1
  440. package/dist/dash/standalone/static/assets/chunks/badge-9984d2fd0e7f995d.js +0 -1
  441. package/dist/dash/standalone/static/assets/chunks/card-818c7a0d580e2e0d.js +0 -1
  442. package/dist/dash/standalone/static/assets/chunks/composer-a969037cf22215c7.js +0 -1
  443. package/dist/dash/standalone/static/assets/chunks/composer-data-6f7608fed13f3dd7.js +0 -1
  444. package/dist/dash/standalone/static/assets/chunks/composer-f433a2e64648633a.js +0 -1
  445. package/dist/dash/standalone/static/assets/chunks/confirm-be929e2de15876a6.js +0 -1
  446. package/dist/dash/standalone/static/assets/chunks/connect-apps-97c10fa6e35ccae6.js +0 -1
  447. package/dist/dash/standalone/static/assets/chunks/credentials-list-08cd5dfe29f42bf2.js +0 -2
  448. package/dist/dash/standalone/static/assets/chunks/custom-range-63f577240e5d5d85.js +0 -1
  449. package/dist/dash/standalone/static/assets/chunks/editor-9752c8ab26ebd328.js +0 -7
  450. package/dist/dash/standalone/static/assets/chunks/engines-list-dab79c4e3e22eefe.js +0 -1
  451. package/dist/dash/standalone/static/assets/chunks/field-43fea54c1c287e30.js +0 -1
  452. package/dist/dash/standalone/static/assets/chunks/heads-8f40675f508ebe33.js +0 -1
  453. package/dist/dash/standalone/static/assets/chunks/instructions-f3ecfb5c50f270c2.js +0 -1
  454. package/dist/dash/standalone/static/assets/chunks/list-591905f0aaa57629.js +0 -1
  455. package/dist/dash/standalone/static/assets/chunks/mcp-list-bae4d2186f67849e.js +0 -1
  456. package/dist/dash/standalone/static/assets/chunks/model-options-15c53331a2f28a4f.js +0 -1
  457. package/dist/dash/standalone/static/assets/chunks/models-list-c758db0c40f5173f.js +0 -1
  458. package/dist/dash/standalone/static/assets/chunks/paged-3ddb6077bef42752.js +0 -1
  459. package/dist/dash/standalone/static/assets/chunks/platform-actions-4454493d02a1c172.js +0 -1
  460. package/dist/dash/standalone/static/assets/chunks/runners-list-9d27c76eed33cb05.js +0 -1
  461. package/dist/dash/standalone/static/assets/chunks/select-adccc9ac86ac833f.js +0 -1
  462. package/dist/dash/standalone/static/assets/chunks/sentinel-b4c91a38a5d79219.js +0 -1
  463. package/dist/dash/standalone/static/assets/chunks/shared-init-17c1fd399ac53851.js +0 -5
  464. package/dist/dash/standalone/static/assets/chunks/shared-init-3a95c0e0cc27e0cb.js +0 -2
  465. package/dist/dash/standalone/static/assets/chunks/shared-init-8f2ac936c95a7f7b.js +0 -1
  466. package/dist/dash/standalone/static/assets/chunks/task-actions-189775b88ef7ada4.js +0 -1
  467. package/dist/dash/standalone/static/assets/chunks/task-ddfddeaf07fb684c.js +0 -1
  468. package/dist/dash/standalone/static/assets/chunks/task-view-0b3d7ea9cc41888b.js +0 -5
  469. package/dist/dash/standalone/static/assets/chunks/tasks-list-1b0195e3fd68714f.js +0 -1
  470. package/dist/dash/standalone/static/assets/chunks/toolbar-035d33d1e7ad11bf.js +0 -1
  471. package/dist/dash/standalone/static/assets/chunks/versions-list-875a9a0ebb3f7d08.js +0 -1
  472. package/dist/dash/standalone/static/assets/connect-382b1729a7ae7808.css +0 -1
  473. package/dist/dash/standalone/static/assets/dash-49ca85b59ac65c20.css +0 -1
  474. package/dist/dash/standalone/static/assets/dash-account-edc56e85dbaaabe0.css +0 -1
  475. package/dist/dash/standalone/static/assets/dash-agents-edba57b67e4005d0.css +0 -1
  476. package/dist/dash/standalone/static/assets/dash-agents-new-fe22253fbada2fbf.css +0 -1
  477. package/dist/dash/standalone/static/assets/dash-agents-param-slug-adf52e9dacb2d825.css +0 -1
  478. package/dist/dash/standalone/static/assets/dash-agents-param-slug-edit-a2937a347689ef29.css +0 -1
  479. package/dist/dash/standalone/static/assets/dash-agents-param-slug-platforms-265ba13db32a460d.css +0 -1
  480. package/dist/dash/standalone/static/assets/dash-agents-param-slug-settings-8afc52eb0372bc4b.css +0 -1
  481. package/dist/dash/standalone/static/assets/dash-agents-param-slug-tasks-6193e646be68dbd2.css +0 -1
  482. package/dist/dash/standalone/static/assets/dash-agents-param-slug-usage-ceadb3a1c911c402.css +0 -1
  483. package/dist/dash/standalone/static/assets/dash-settings-param-tab-b44dac8e79a560e6.css +0 -1
  484. package/dist/dash/standalone/static/assets/dash-tasks-916c7100a8058aa3.css +0 -1
  485. package/dist/dash/standalone/static/assets/dash-tasks-param-id-24265771fd1e3f78.css +0 -1
  486. package/dist/dash/standalone/static/assets/dash-usage-40940b289f85e0b6.css +0 -1
  487. package/dist/dash/standalone/static/assets/global-d2adbf01910d9df5.css +0 -1
  488. package/dist/dash/standalone/static/assets/login-c129b1ce237be260.css +0 -1
  489. package/dist/dash/standalone/static/assets/pnext-client-105d2264e4064f32.js +0 -1
  490. package/dist/dash/standalone/static/assets/pnext-client-140064bc22718639.js +0 -1
  491. package/dist/dash/standalone/static/assets/pnext-client-2825c0ea7bfa1240.js +0 -1
  492. package/dist/dash/standalone/static/assets/pnext-client-39ac7ac446e20cfb.js +0 -1
  493. package/dist/dash/standalone/static/assets/pnext-client-43cbb846cb4c167f.js +0 -1
  494. package/dist/dash/standalone/static/assets/pnext-client-7d88eb36e6e3c301.js +0 -1
  495. package/dist/dash/standalone/static/assets/pnext-client-9172198a969bd1e1.js +0 -1
  496. package/dist/dash/standalone/static/assets/pnext-client-9c9c88e5c2fe31bc.js +0 -1
  497. package/dist/dash/standalone/static/assets/pnext-client-a629391487c4b8e3.js +0 -1
  498. package/dist/dash/standalone/static/assets/pnext-client-aace561f07b06542.js +0 -1
  499. package/dist/dash/standalone/static/assets/pnext-client-b7d6355b1323fff1.js +0 -1
  500. package/dist/dash/standalone/static/assets/pnext-client-c4be2f807668e35c.js +0 -1
  501. package/dist/dash/standalone/static/assets/pnext-client-ce83b85e9562a049.js +0 -1
  502. package/dist/dash/standalone/static/assets/pnext-client-dd2046446844a78b.js +0 -1
  503. package/dist/dash/standalone/static/assets/pnext-client-e62f31aae8ce2c3b.js +0 -1
  504. package/dist/default-DgP-hBmn.js +0 -1
  505. package/dist/discover-CaAtyC0h.js +0 -1
  506. package/dist/dispatch-YW1aqjEg.js +0 -14
  507. package/dist/docs-Byrpar10.js +0 -2
  508. package/dist/env-LsVTi18f.js +0 -1
  509. package/dist/exec-DgI3boHa.js +0 -11
  510. package/dist/executor-HWnIIYUL.js +0 -10
  511. package/dist/github-actions-CvLya8ve.js +0 -24
  512. package/dist/http-DG54kyx4.js +0 -1
  513. package/dist/integrations-B2CavXR1.js +0 -5
  514. package/dist/integrations-DNz6PHFV.js +0 -1
  515. package/dist/lib/broker.d.ts +0 -1
  516. package/dist/list-CJhHYVb2.js +0 -2
  517. package/dist/list-Cr4c8mT6.js +0 -1
  518. package/dist/load-DDZfByUe.js +0 -2
  519. package/dist/local-B0GiaLV0.js +0 -1
  520. package/dist/log-view-DeJstSkw.js +0 -3
  521. package/dist/login-p2VknR9f.js +0 -1
  522. package/dist/maintenance-C02_cNLp.js +0 -1
  523. package/dist/match-DMI54zg4.js +0 -1
  524. package/dist/mcp--MIvjMWZ.js +0 -1
  525. package/dist/mcp-DgMoPoUo.js +0 -1
  526. package/dist/migrate-CSwkAInI.js +0 -2
  527. package/dist/migrate-rwTojdkz.js +0 -1
  528. package/dist/models-DGPrMV51.js +0 -1
  529. package/dist/prompt-K7-bKcTC.js +0 -7
  530. package/dist/push-D3vxfhc_.js +0 -1
  531. package/dist/queue-EvplGOuk.js +0 -117
  532. package/dist/refresh-BFuahSFK.js +0 -1
  533. package/dist/remote-AcWWfKVS.js +0 -1
  534. package/dist/remove-7y1b_gHT.js +0 -1
  535. package/dist/remove-BRj1kPYm.js +0 -1
  536. package/dist/remove-C57QDigT.js +0 -1
  537. package/dist/remove-UVD3W2OE.js +0 -1
  538. package/dist/rename-CCv5pca3.js +0 -1
  539. package/dist/result-BWrYnt0u.js +0 -5
  540. package/dist/rolldown-runtime-DT7IzrpZ.js +0 -1
  541. package/dist/runner-DRgQvMiZ.js +0 -1
  542. package/dist/runner-c-2w6Eoj.js +0 -1
  543. package/dist/schema-DoNO0dPh.js +0 -1
  544. package/dist/serve-CcqX_2qk.js +0 -8
  545. package/dist/serve-Ci0AFWtY.js +0 -2
  546. package/dist/serve-DeX0lpXj.js +0 -12
  547. package/dist/serve-SWjydoBC.js +0 -1
  548. package/dist/serve-xMihn4g-.js +0 -1
  549. package/dist/server-CWbtW4W_.js +0 -1
  550. package/dist/shared-D64pQ0XU.js +0 -1
  551. package/dist/show-U0XPh927.js +0 -1
  552. package/dist/steer-DwSAYYqb.js +0 -4
  553. package/dist/store-B0RLMUR9.js +0 -42
  554. package/dist/store-Cxc2GYyj.js +0 -19
  555. package/dist/task-DEp3GHwH.js +0 -1
  556. package/dist/task-DhZ5vhyY.js +0 -5
  557. package/dist/task-gKnlLOGe.js +0 -1
  558. package/dist/test-TvJAUf4S.js +0 -1
  559. package/dist/tools-BQQfMQB9.js +0 -1
  560. package/dist/types-D0q15RJa.js +0 -1
  561. package/dist/types-DMGBYB_K.d.ts +0 -391
  562. package/dist/usage-Bw7fQeFC.js +0 -1
  563. package/dist/watch-DJATTJw_.js +0 -8
  564. package/dist/wire-DxxfWapP.js +0 -1
  565. package/dist/worker-C3dzIzd3.js +0 -1
  566. package/dist/worker-C4Lo6rLS.js +0 -9
  567. package/migrations/0000_initial.sql +0 -260
  568. package/migrations/meta/0000_snapshot.json +0 -1861
  569. package/migrations/meta/_journal.json +0 -13
  570. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{account/page.78ecdcf250ebe4bd.css.pnext-asset.js → [org]/account/page.061f6006f2685f5e.css.pnext-asset.js} +0 -0
  571. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{agents/(list)/page.c2085e3ab40a8b66.css.pnext-asset.js → [org]/agents/(list)/page.76589c15dee1732d.css.pnext-asset.js} +0 -0
  572. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{agents/[slug]/(tabs)/page.31a5f9731d946f4f.css.pnext-asset.js → [org]/agents/[slug]/(tabs)/page.1a97b8d4b955c464.css.pnext-asset.js} +0 -0
  573. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{agents/[slug]/(tabs)/platforms/page.b036494aace45edf.css.pnext-asset.js → [org]/agents/[slug]/(tabs)/platforms/page.3ffef848a0b0dda3.css.pnext-asset.js} +0 -0
  574. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{agents/[slug]/(tabs)/settings/agent-settings-form.204e3ec0b23d58c7.css.pnext-asset.js → [org]/agents/[slug]/(tabs)/settings/agent-settings-form.2d19ea3a4d380e0d.css.pnext-asset.js} +0 -0
  575. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{agents/[slug]/(tabs)/usage/@/app/dash/usage/range-bar.034280ed1ab2616b.css.pnext-asset.js → [org]/agents/[slug]/(tabs)/usage/@/app/dash/[org]/usage/range-bar.e8f6f0c7ee443262.css.pnext-asset.js} +0 -0
  576. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{agents/[slug]/(tabs)/usage/@/comps/ui/segmented.4db9cac358865634.css.pnext-asset.js → [org]/agents/[slug]/(tabs)/usage/@/comps/ui/segmented.2cb43dc7d1f1588a.css.pnext-asset.js} +0 -0
  577. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{agents/[slug]/(tabs)/usage/page.6bf93d41ec4a1fab.css.pnext-asset.js → [org]/agents/[slug]/(tabs)/usage/page.80adb3d2ea31d080.css.pnext-asset.js} +0 -0
  578. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{agents/agent/agent-pills.1708253f0232e88e.css.pnext-asset.js → [org]/agents/agent/agent-pills.183f03f1e7e5ac9f.css.pnext-asset.js} +0 -0
  579. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{agents/agent/hero.8dd7556828e78b07.css.pnext-asset.js → [org]/agents/agent/hero.13019680f38b0630.css.pnext-asset.js} +0 -0
  580. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{agents/agent/instructions.532dc545ddb11e88.css.pnext-asset.js → [org]/agents/agent/instructions.446bccc375f30eeb.css.pnext-asset.js} +0 -0
  581. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{agents/editor/@/app/dash/agents/(list)/page.1e19c72828fbd611.css.pnext-asset.js → [org]/agents/editor/@/app/dash/[org]/agents/(list)/page.81c825592da30a32.css.pnext-asset.js} +0 -0
  582. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{agents/editor/editor.52403b9719fb5157.css.pnext-asset.js → [org]/agents/editor/editor.d2e3bc878dcb47da.css.pnext-asset.js} +0 -0
  583. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{agents/editor/names.afb112f2a5a6f0f5.js → [org]/agents/editor/names.1ee5bba8d2b6ac41.js} +0 -0
  584. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{layout.4b31e7e60256f6d1.css.pnext-asset.js → [org]/layout.3827c440c6421a06.css.pnext-asset.js} +0 -0
  585. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{settings/[tab]/credentials-list.0953506d95c86a2f.css.pnext-asset.js → [org]/operator/@/app/dash/[org]/agents/[slug]/(tabs)/platforms/page.944b02c09bbf6c22.css.pnext-asset.js} +0 -0
  586. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{settings/[tab]/engines-list.c04c712adfc0ca48.css.pnext-asset.js → [org]/operator/@/app/dash/[org]/settings/[tab]/list.83f35dd8a36acdfd.css.pnext-asset.js} +0 -0
  587. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{settings/[tab]/list.4835150fd34d0c4f.css.pnext-asset.js → [org]/operator/page.9002a449f872a10e.css.pnext-asset.js} +0 -0
  588. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{settings/[tab]/mcp-list.a2b3bf3c7c5fa42e.css.pnext-asset.js → [org]/settings/[tab]/@/app/dash/[org]/setup/outcome.3ad5f7ec67e5238d.css.pnext-asset.js} +0 -0
  589. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{settings/[tab]/runners-list.0e2d8a76197cde60.css.pnext-asset.js → [org]/settings/[tab]/connections-list.f742847e4887f072.css.pnext-asset.js} +0 -0
  590. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{tasks/[id]/task-view.2110bc4a16798cde.css.pnext-asset.js → [org]/settings/[tab]/credentials-list.1236d6680ec02696.css.pnext-asset.js} +0 -0
  591. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{tasks/composer.80a979f079b29681.css.pnext-asset.js → [org]/settings/[tab]/engines-list.9927d602ebe9e7fc.css.pnext-asset.js} +0 -0
  592. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{tasks/list/status.d71a946ed749ca30.css.pnext-asset.js → [org]/settings/[tab]/list.e0ce46919b75ef76.css.pnext-asset.js} +0 -0
  593. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{tasks/list/tasks-list.291e81e56d54513c.css.pnext-asset.js → [org]/settings/[tab]/runners-list.a835c9a264cf8903.css.pnext-asset.js} +0 -0
  594. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{settings/model-options.bccfaced52fc0c00.js → [org]/settings/model-options.2eacf7f8ac0032df.js} +0 -0
  595. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{usage/@/app/dash/usage/range-bar.53967f3261c8387e.css.pnext-asset.js → [org]/setup/outcome.2a3073f895357275.css.pnext-asset.js} +0 -0
  596. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{usage/@/comps/ui/segmented.2ca6fee7dd2830ad.css.pnext-asset.js → [org]/tasks/[id]/task-view.38b1b7ef3976ba71.css.pnext-asset.js} +0 -0
  597. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{usage/day-chart.c566c1a55d15bf58.css.pnext-asset.js → [org]/tasks/composer.360b393e5938c60b.css.pnext-asset.js} +0 -0
  598. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{usage/range-bar.5504dd2c591a3056.css.pnext-asset.js → [org]/tasks/list/status.7e63f2b02469ca40.css.pnext-asset.js} +0 -0
  599. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{usage/stats.cd1d20f46f1347bf.css.pnext-asset.js → [org]/tasks/list/tasks-list.2282a7cef8b15bd8.css.pnext-asset.js} +0 -0
  600. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{usage/top-agents.47aecd65c0c8fa2e.css.pnext-asset.js → [org]/usage/@/app/dash/[org]/usage/range-bar.85d30ec5f022f124.css.pnext-asset.js} +0 -0
  601. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/dash/{usage/usage.0f646568d57d13e8.css.pnext-asset.js → [org]/usage/@/comps/ui/segmented.41728247cda62f82.css.pnext-asset.js} +0 -0
  602. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/app/{globals.e9ce0eb6697f992d.css.pnext-asset.js → dash/[org]/usage/day-chart.4b3dbef8704de0e0.css.pnext-asset.js} +0 -0
  603. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/{comps/frame/page-head.a6e3c4204ca45e94.css.pnext-asset.js → app/dash/[org]/usage/range-bar.1da88d087e3b5302.css.pnext-asset.js} +0 -0
  604. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/{comps/ui/card.146f70c7049b5b31.css.pnext-asset.js → app/dash/[org]/usage/stats.bb7cb568c0174557.css.pnext-asset.js} +0 -0
  605. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/{comps/ui/confirm.fb57a29a70e9df56.css.pnext-asset.js → app/dash/[org]/usage/top-agents.20a1d4451784792b.css.pnext-asset.js} +0 -0
  606. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/{comps/ui/menu.6341c87b5bec4256.css.pnext-asset.js → app/dash/[org]/usage/usage.775df2f43187c487.css.pnext-asset.js} +0 -0
  607. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/{comps/ui/select.03a695573b914d6f.css.pnext-asset.js → app/globals.76731787d2a1aa3b.css.pnext-asset.js} +0 -0
  608. /package/dist/dash/standalone/server/modules-server-server-react-server/src/server/dash/comps/{ui/sentinel.bcff411a9f2355ec.css.pnext-asset.js → frame/page-head.364ec93a8e7857b3.css.pnext-asset.js} +0 -0
package/docs/mcp.md CHANGED
@@ -1,27 +1,19 @@
1
1
  # MCP
2
2
 
3
- Give tasks tools of your own: an MCP server is saved once under `mcp` in `.coder/config.json`, then attached to a task by name. Nothing attaches unless asked, so the default run stays lean. `--mcp all` also loads your engine's own MCP servers and connectors.
3
+ Give tasks tools of your own: an MCP server is a [connection](agents/index.md#connections), or an entry under `mcp` in a config file you edit, attached to a task by name. Nothing from a config file attaches unless asked, so the default run stays lean. `--mcp all` also loads your engine's own MCP servers and connectors.
4
4
 
5
5
  ```sh
6
- coder mcp add docs -- npx -y docs-mcp # stdio server: the command after --
7
- coder mcp add linear --url https://mcp.linear.app/mcp # remote server; OAuth login happens in the engine on first use
8
- coder run --mcp docs,linear "why do uploads fail after a rename?"
6
+ coder connection add docs --access write -- npx -y docs-mcp # stdio server: the command after --
7
+ coder connection add linear --url https://mcp.linear.app/mcp --server # remote server; signs in with OAuth
8
+ coder connection approve docs # approve a repository server locally
9
+ coder run --mcp docs "why do uploads fail after a rename?"
9
10
  ```
10
11
 
11
- ## Adding servers
12
-
13
- | Command | Does |
14
- | ------------------------------------------ | -------------------------------------------------------------------------------------------- |
15
- | `coder mcp add <name> -- <command> [args]` | Stdio server. `--env K=V,...` sets its environment |
16
- | `coder mcp add <name> --url <url>` | Remote server. `--header K=V,...` adds request headers, `--transport sse` for legacy servers |
17
- | `coder mcp add-json <name> '<entry>'` | Paste an entry from any `.mcp.json`, Cursor `mcp.json`, or a vendor README as is |
18
- | `coder mcp list`, `coder mcp rm <name>` | List and remove |
19
-
20
- `add` takes `--tools a,b` to cap what the agent may call; `add-json` accepts a `tools` array in the entry. `add`, `add-json` and `rm` take `--user` to write `~/.coder` instead of the repo. Repo and user maps merge, repo wins on a name.
12
+ For a remote URL, Coder detects OAuth, open access or a required key; OAuth needs `--server`, and a required key is read from stdin or a prompt. `--key` reads a server's key directly; it goes in `--header` (default `Authorization`) or, for a stdio server, `--env`, and `--auth` overrides detection. `--access read` keeps only read-only tools, and a read-only stdio server needs `--tools a,b`.
21
13
 
22
14
  ## Config shape
23
15
 
24
- The entries are the `.mcp.json` convention shared by Claude Code, Cursor, Windsurf and Codex, so anything written for them drops in:
16
+ Entries in `.coder/config.json`, `~/.coder/config.json` and an agent's `agent.json` use the `.mcp.json` convention shared by Claude Code, Cursor, Windsurf and Codex, so anything written for them drops in. Repo and user maps merge, repo wins on a name:
25
17
 
26
18
  ```json
27
19
  {
@@ -47,7 +39,7 @@ The entries are the `.mcp.json` convention shared by Claude Code, Cursor, Windsu
47
39
  | `tools` | Allowlist of tool names; omit for every tool the server offers |
48
40
  | `description` | What the server is for |
49
41
 
50
- `${VAR}` and `${VAR:-default}` in any value expand from the environment when the server starts, so tokens never sit in the file.
42
+ Repository servers need local approval with `coder connection approve <name>`; `coder connection list` shows which are approved. `${VAR}` and `${VAR:-default}` expand from the environment, except in a repository remote entry's URL and headers, where they stay literal; use a connection for credentials.
51
43
 
52
44
  ## Attaching to a task
53
45
 
package/docs/sdk.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # SDK
2
2
 
3
- Everything the CLI does, as a library. The SDK mirrors the CLI exactly: every command group is a namespace, every subcommand a function, with the same names and the same options (`coder --help` is the reference for both).
3
+ Everything the CLI does, as a library. The SDK mirrors the CLI exactly: every command group is a namespace, every subcommand a function, with the same names and the same options (`coder --help` is the reference for both). TypeScript users install `zod` alongside it for the schema types.
4
4
 
5
5
  ```ts
6
6
  import coder from '@wular/coder';
@@ -23,7 +23,7 @@ SDK functions never print and never call `process.exit`; results come back as ty
23
23
 
24
24
  | CLI | SDK |
25
25
  | -------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
26
- | `coder run "<text>"` | `task.run(prompt, opts?)` |
26
+ | `coder run "<text>"` | `task.run(prompt, opts?)`; `connections` narrows the task's connections |
27
27
  | `coder list` | `task.list(opts?)` |
28
28
  | `coder result [id] [--wait] [--tail N] [--turns]` | `task.result(id?, { wait?, tail? })` - returns `turns` (one entry per finished turn) alongside `result` |
29
29
  | `coder task steer <id> "<text>"` | `task.steer(id, text, { model?, effort?, permissions?, wait? })` - live, or resumes a finished or archived task on the same id |
@@ -36,7 +36,7 @@ SDK functions never print and never call `process.exit`; results come back as ty
36
36
  | `coder flow run / list / discover / result / watch / stop / resume / archive / delete` | the matching `flow.*` function; `flow.run(nameOrPath, { args?, concurrency?, maxTasks? })`, `flow.stream(id?)` for `watch` |
37
37
  | `coder model add / update / remove / list / alias / unalias / disable / enable` | the matching `model.*` function |
38
38
  | `coder config get / set` | `config.get(key?)` / `config.set(key, value)` |
39
- | `coder mcp add / add-json / list / rm` | `mcp.add(name, { url?, command?, env?, header?, tools?, user? })` / `mcp.addJson(name, entry, { user? })` / `mcp.list()` / `mcp.remove(name, { user? })` |
39
+ | `coder connection add / list / rm / reconnect / approve` | `connection.add(name, { env?, url?, command?, key?, askKey?, header?, access?, me?, credential?, onAuthorize?, server? })` / `connection.list()` / `connection.remove(name)` / `connection.reconnect(name, { key?, askKey?, onAuthorize? })` / `connection.approve(name, { agent? })`, all with `{ server? }` |
40
40
  | `coder setup-host [hosts...]` | `setupHost(hosts?)` |
41
41
  | `coder upgrade` | `upgrade({ cliOnly?, pluginsOnly? })` |
42
42
  | `coder docs [topic]` | `docs(topic?)` |
@@ -50,7 +50,7 @@ SDK functions never print and never call `process.exit`; results come back as ty
50
50
  | `coder agent run --task <id>` | `agent.runTask(id, options?)` - the runner form, not for application code |
51
51
  | `coder credentials list / add / remove / default` | `credentials.list()` / `.add(label, { engine, env, workspace?, default?, noCheck? })` / `.remove(label, { workspace? })` / `.default(label, { workspace? })`, all with `{ server? }` |
52
52
  | `coder agent usage [--since] [--by]` | `agent.usage({ since?, by?, server?, cwd? })` |
53
- | `coder server serve / migrate / rotate-key` | `server.serve(options?)` / `server.migrate(options?)` / `server.rotateKey(options?)`; `server.handler(env)` for serverless hosts, see [Self-hosting](self-host.md#deploy) |
53
+ | `coder server serve / rotate-key` | `server.serve(options?)` / `server.rotateKey(options?)`; `server.handler(env)` for serverless hosts, see [Self-hosting](self-host.md#deploy) |
54
54
 
55
55
  Options objects take the same names as the CLI flags, camelCased (`--max-tasks` becomes `maxTasks`, `--server` becomes `server`). Every server option accepts `organization`, the `--workspace` flag's slug, which overrides the saved workspace for that call. `server` falls back to `CODER_SERVER`, then the hosted service; authentication comes from `auth.login()`, or from `token` when supplied; `yes: true` acknowledges the first use of a new server origin in non-interactive code.
56
56
 
package/docs/self-host.md CHANGED
@@ -11,7 +11,7 @@ Required variables carry a *.
11
11
  | Variable | Type | Default | Purpose |
12
12
  | ------------------------------------------ | -------------------------------------------------------------------------- | ----------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
13
13
  | `PUBLIC_URL`<sup><b>*</b></sup> | url without a path | | The address platforms and browsers reach the server at. Written into every app as its webhook and callback address, and the only origin sign-in trusts. Inferred on Vercel; `serve` defaults to `http://localhost:<port>` |
14
- | `DATABASE_URL` or `POSTGRES_URL` | url | | Postgres. Everything lives in a `coder` schema, so the database can be shared with other apps; a `coder` schema Coder did not create is refused. Run `coder server migrate` before the first start and after upgrades. Without it `coder server serve` runs the local dashboard; `--memory` selects a throwaway test server. Statements are prepared on each connection, so a query costs one round trip; add `?prepare=false` to the URL for a pooler that cannot keep prepared statements |
14
+ | `DATABASE_URL` or `POSTGRES_URL` | url | | Postgres. Everything lives in a `coder` schema, so the database can be shared with other apps. Run the database setup command below before the first start and after upgrades. Without it `coder server serve` runs the local dashboard; `--memory` selects a throwaway test server. Statements are prepared on each connection, so a query costs one round trip; add `?prepare=false` to the URL for a pooler that cannot keep prepared statements |
15
15
  | `SERVER_ENCRYPTION_KEY`<sup><b>*</b></sup> | base64 32 bytes | | Encrypts app keys, tokens, and engine credentials at rest (`openssl rand -base64 32`), and derives the session cookie key and the sign-in client key with HKDF. Required with Postgres |
16
16
  | `AUTH_WULAR_URL` | url | `https://auth.wular.ai` | Wular Auth OpenID issuer, the only identity provider, including for a self-hosted Wular Auth deployment |
17
17
  | `RUNNER` | `local`\| `local-docker` \| `vercel-sandbox` \| `github-actions` \| `http` | `local`, `vercel-sandbox` on Vercel | Where tasks execute. `local` and `local-docker` run them on the server's own machine and work with the memory store, and are refused on Vercel. The other three run them elsewhere and need Postgres. Members' own machines add to this ([Your own machine](#your-own-machine)) |
@@ -23,6 +23,7 @@ Required variables carry a *.
23
23
  | `CODER_CACHE_HOME` | path | OS cache directory for `wular-coder` | Archived tasks, flows and usage |
24
24
  | `WORK_DIR` | path | `<tmp>/coder` | Where the local runner checks out repositories |
25
25
  | `SERVER_NAME` | string | `Coder` | What the dashboard calls this server, in its sidebar server menu |
26
+ | `ISSUES_URL` | URL | `https://github.com/muzam1l/coder/issues/new` | Where the dashboard sends bug reports from its Report issue button |
26
27
  | `SERVER_LIMITS` | JSON | `{}` | Request rates and task slots ([Limits and monitoring](#limits-and-monitoring)) |
27
28
  | `CLAUDE_SUBSCRIPTIONS` | `1` | off | Offer "Sign in with Claude" for personal credentials |
28
29
  | `CODEX_SUBSCRIPTIONS` | `1` | off | Offer "Sign in with Codex" for personal credentials |
@@ -31,7 +32,8 @@ Required variables carry a *.
31
32
  | `TASK_TIMEOUT` | ms | `1800000` (30 minutes) | Longest a task may run |
32
33
  | `TASK_STALL` | ms | `300000` (5 minutes) | Silence before the runner is asked whether the task is still alive |
33
34
  | `TASK_ATTEMPTS` | number | `2` | Times a runner start is retried |
34
- | `SERVER_INTEGRATIONS` | comma-separated ids | every platform | The platforms this server offers, from `github`, `slack`, `teams`, `gmail` and `linear`. Others get no webhook, catalog entry or app creation. An unknown id stops the server |
35
+ | `SERVER_INTEGRATIONS` | comma-separated ids | every platform | The platforms this server offers, from `github`, `slack` and `linear`. Others get no webhook, catalog entry or app creation. An unknown id stops the server |
36
+ | `SERVER_OPERATORS` | comma-separated Wular Auth user ids | none | Postgres servers. Who may open the operator area. Only this variable grants it |
35
37
 
36
38
  Settings, sign-in, pairings and live tasks live in ~/.coder (CODER_HOME). Archived tasks, flows and usage live in the OS cache directory, ~/Library/Caches/wular-coder on macOS, ~/.cache/wular-coder on Linux (CODER_CACHE_HOME overrides). Nothing is ever pruned.
37
39
 
@@ -68,9 +70,13 @@ Run `await handler.scheduled()` from an hourly scheduled job to sweep expired st
68
70
 
69
71
  Completed tasks, their logs and usage remain until a task is explicitly deleted. Sandbox snapshots remain until replaced or deleted. Expiring deliveries, notes, engine sign-ins and chat state are cleaned by the sweep.
70
72
 
73
+ ### Database setup
74
+
75
+ Before the first start and each upgrade, set `DATABASE_URL` and run `npx --yes --package=drizzle-kit@0.31.11 --package=drizzle-orm@0.45.2 --package=postgres@3.4.9 drizzle-kit push --config=./node_modules/@wular/coder/dist/schema.config.js` from the directory where Coder is installed. Run it as a deploy step for serverless hosts.
76
+
71
77
  ### Your own host
72
78
 
73
- Install Bun and `@wular/coder`, set the variables above, run `coder server migrate`, then `coder server serve`. The command starts the server under Bun, listens on `PORT` (default 8787), and answers `/health`. Keep it alive with whatever supervises processes on that host. It listens on every interface, as containers and load balancers need; behind a proxy on the same machine, `--host 127.0.0.1` keeps it private. From code, `server.serve()`, `server.migrate()` and `server.rotateKey()` do the same.
79
+ Install Bun and `@wular/coder`, set the variables above, set up the database as above, then run `coder server serve`. The command starts the server under Bun, listens on `PORT` (default 8787), and answers `/health`. Keep it alive with whatever supervises processes on that host. It listens on every interface, as containers and load balancers need; behind a proxy on the same machine, `--host 127.0.0.1` keeps it private. From code, `server.serve()` and `server.rotateKey()` do the same.
74
80
 
75
81
  ### After the first start
76
82
 
@@ -78,13 +84,15 @@ Open `PUBLIC_URL` and sign in with Wular Auth. Workspaces and roles come from Wu
78
84
 
79
85
  Add an engine [credential](#credentials), or the first task will only reply with a link asking for one.
80
86
 
81
- Create the built-in agent's apps once per server with `coder server app create github` and `coder server app create slack`, run where the server's `DATABASE_URL` and `PUBLIC_URL` are set. Each opens a one-time page that posts the app's manifest to the platform; `--org <org>` creates the GitHub App under an organization you admin. These apps are public and shared by every workspace, and the app's credentials go straight to the server. Slack apps also need public distribution turned on in their settings on api.slack.com before other Slack workspaces can add them.
87
+ Create the built-in agent's apps once per server with `coder server app create <integration>`, such as `github` or `linear`, run where the server's `DATABASE_URL` and `PUBLIC_URL` are set. Each opens a one-time page that posts the app's manifest to the platform; `--org <org>` creates the GitHub App under an organization you admin. These apps are public and shared by every workspace, and the app's credentials go straight to the server. Linear apps need public distribution turned on before other workspaces can add them.
82
88
 
83
89
  ## Apps and installs
84
90
 
85
- An agent's handle on a platform is its app. The built-in agent `coder` uses the server's shared apps, and it also answers `@coder` and messages that start with `coder` where its app is installed. A custom agent gets its own app from its Platforms tab in the dashboard, under your own GitHub account or an organization whose apps you manage, private to that account.
91
+ An agent's handle on a platform is its app. The built-in agent `coder` uses shared apps on GitHub and Linear; create its Slack app in your workspace from its Platforms tab by pasting a Slack configuration refresh token. A custom agent gets its own app from its Platforms tab in the dashboard, under your own GitHub account or an organization whose apps you manage. Private apps install only on their owner; an app made public on its platform installs on any account.
92
+
93
+ Installs start from the dashboard. "Connect GitHub" adds the shared GitHub app, and the Platforms tab creates or installs an agent's workspace app. The server binds an install to the workspace that started it with a one-time, expiring state. On GitHub it also requires the installer to authorize the app and checks that the installation appears in their own `GET /user/installations`; on Slack it uses "Add to Slack" OAuth keyed by team. An install started on GitHub asks the installer to sign in and binds only if they are a member of the app's workspace. An install belongs to exactly one workspace, and webhooks route by installation. Removing or suspending an install on the platform stops it.
86
94
 
87
- Installs always start from the dashboard. "Connect GitHub" and "Add to Slack" on the dashboard home add the built-in apps, and the Platforms tab installs an agent's own app. The server binds an install to the workspace that started it with a one-time, expiring state. On GitHub it also requires the installer to authorize the app and checks that the installation appears in their own `GET /user/installations`; on Slack it uses "Add to Slack" OAuth keyed by team. An install belongs to exactly one workspace, and webhooks route by installation. Removing or suspending an install on the platform stops it.
95
+ Operators set up the shared apps in the dashboard's Operator area at `/dash/<workspace>/operator`, one per platform, named `SERVER_NAME` or Wular unless they pick a name, and every operator action lands in its audit log. Entering it asks for a fresh Wular Auth sign-in and lasts an hour, or 15 minutes without activity; on local and memory servers the admin token holder is the operator.
88
96
 
89
97
  Each task gets the narrowest platform token: on GitHub an installation token for the event's repository with only the permissions its tools need, on Slack the install's bot token.
90
98
 
@@ -112,7 +120,7 @@ Workspaces come from Wular Auth, where members and roles are managed; the member
112
120
 
113
121
  From a terminal, `coder auth login` signs in with Wular Auth (`--device` shows a code to approve elsewhere) and keeps the session in `~/.coder/session.json`. Its tokens are issued for this server only. `--workspace <slug>` picks a workspace and `--server <url>` another instance. Servers must use HTTPS unless they are loopback, and the CLI confirms a new origin the first time it sees it (`--yes` acknowledges it in scripts).
114
122
 
115
- A platform user who addresses an agent must be linked to a member of the workspace that owns the install. The first time an unknown user asks, the agent answers with a link: on Slack a private one-time link, on GitHub a link that signs them in with the app's own GitHub authorization, so no secret appears in a public comment. Write actions on GitHub also need the person's write access to the repository, checked with GitHub. Installing an app links the installer the same way. A trigger with `"actAs": "requester"` runs its tasks with the requester's own GitHub token, kept encrypted and refreshed.
123
+ A platform user who addresses an agent must be linked to a member of the workspace that owns the install, or trusted by the platform there, such as a GitHub user with write access to the repository; trusted users get the workspace's connections only. Anyone else gets a link the first time they ask: on Slack a private one-time link, on GitHub a link that signs them in with the app's own GitHub authorization, so no secret appears in a public comment. Write actions on GitHub also need the person's write access to the repository, checked with GitHub. Installing an app links the installer the same way. A trigger with `"actAs": "requester"` runs its tasks with the requester's own GitHub token, kept encrypted and refreshed.
116
124
 
117
125
  ## Runners
118
126
 
@@ -121,34 +129,37 @@ A platform user who addresses an agent must be linked to a member of the workspa
121
129
  | Runner | Field | Default | Purpose |
122
130
  | ---------------- | ------------------- | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
123
131
  | `local` | | | none |
124
- | `local-docker` | `image` | `node:22` | Image the task runs in |
132
+ | `local-docker` | `image` | `ghcr.io/muzam1l/coder-runner:latest` | Image the task runs in |
125
133
  | | `memory` | `4g` | `--memory` |
126
134
  | | `cpus` | `2` | `--cpus` |
127
135
  | | `pidsLimit` | `512` | `--pids-limit` |
128
136
  | | `network` | `bridge` | `--network` |
129
- | `vercel-sandbox` | `image` | the SDK's default image | Image the base snapshot starts from |
137
+ | `vercel-sandbox` | `image` | the SDK's default image | Image the task starts from |
130
138
  | | `token` | deployment OIDC | Vercel access token for Sandbox; install `@vercel/sandbox` in the adapter app |
131
139
  | | `team` | `VERCEL_TEAM_ID` | Team ID for access-token authentication |
132
140
  | | `projectId` | `VERCEL_PROJECT_ID` | Project ID for access-token authentication |
133
141
  | | `region` | the database's region | Sandbox region; inferred from an AWS region in the database host, else Vercel's default |
134
- | | `tools` | `[]` | Extra global npm packages in the base snapshot, next to `claude`, `codex` and `coder` |
135
142
  | | `timeoutMs` | `1800000` | Sandbox lifetime |
136
- | | `vcpus` | `2` | Sandbox size |
137
- | `github-actions` | `token` (required) | | GitHub token that may dispatch the workflow and read run logs |
143
+ | | `vcpus` | `1` | Sandbox size |
144
+ | `github-actions` | `token` (required) | | GitHub token that may dispatch the workflow and read its status |
138
145
  | | `repo` | the event's repository | `owner/name` holding the workflow |
139
146
  | | `workflow` | `coder-agent.yml` | Workflow file to dispatch (`coder server workflow` prints it) |
140
147
  | | `ref` | the repository's default branch | Branch to dispatch on |
141
- | `http` | `url` (required) | | Your controller's base URL; it implements `POST /start`, `POST /messages/<handle>`, `GET /status/<handle>`, `GET /logs/<handle>?after`, `POST /stop/<handle>` |
148
+ | `http` | `url` (required) | | Your controller's base URL; it implements `POST /start`, `POST /messages/<handle>`, `GET /status/<handle>`, `POST /stop/<handle>` |
142
149
  | | `secret` (required) | | Shared secret that signs every request over body, timestamp, and nonce |
143
150
  | | `headers` | `{}` | Extra headers sent with every request |
144
151
 
145
- On `vercel-sandbox` every task gets its own microVM. A base snapshot holds `claude`, `codex` and `coder`, and each repository gets its own snapshot with the repository cloned and its dependencies installed. Both are built on first use and kept current. An API key never enters the sandbox: its firewall adds the key to requests to `api.anthropic.com` or `api.openai.com`, and the task sees a placeholder.
152
+ `local-docker` and `github-actions` run in the runner image, which holds the engines and tools. A custom `image` needs `node`, `bun`, `git`, `curl`, `tar`, `claude`, `codex` and `github-mcp-server`.
153
+
154
+ `local-docker`, `vercel-sandbox` and `github-actions` download this server's version of Coder from npm at start, with nothing to install. `tarballUrl` points them at another package, such as an unpublished build.
155
+
156
+ On `vercel-sandbox` each task uses the universal image's engines without their own sandbox, and its machine stops when the task ends. Repository snapshots hold the checkout and its installed dependencies. The default is 1 CPU and 2 GB memory; `vcpus` selects a larger machine.
146
157
 
147
- Access-token authentication needs a token, team ID and project ID. Settings → Runners accepts the IDs directly, or the adapter app can supply `VERCEL_TEAM_ID` and `VERCEL_PROJECT_ID`. A task started before its snapshot is ready installs the same engines and tools in its own sandbox before running.
158
+ Access-token authentication needs a token, team ID and project ID. Settings → Runners accepts the IDs directly, or the adapter app can supply `VERCEL_TEAM_ID` and `VERCEL_PROJECT_ID`. The firewall injects engine API keys into provider requests, and the task sees a placeholder. Below `auto`, a task's machine reaches only this server, npm, its engine, integrations, connections, MCP servers and `allowedNetworkHosts`.
148
159
 
149
- For GitHub Actions, save the output of `coder server workflow` as `.github/workflows/coder-agent.yml` on the workflow repository's default branch. It accepts `task`, `server`, `token` and `mode`, names each run `Coder agent <task ID>`, and calls `coder agent run --task "$TASK"` with the callback URL and attempt token in the environment. The workflow token needs repository Actions read and write; a classic token for a private repository needs `repo`. A result returns through the authenticated task callback. No result artifact is required.
160
+ For GitHub Actions, save the output of `coder server workflow` as `.github/workflows/coder-agent.yml` on the workflow repository's default branch. Save it again after each Coder upgrade. It accepts `task`, `server`, `token`, `mode` and `tarball`, names each run `Coder agent <task ID>`, and runs the task in the runner image with the callback URL and attempt token in the environment. The workflow token needs repository Actions read and write; a classic token for a private repository needs `repo`. A result returns through the authenticated task callback. No result artifact is required.
150
161
 
151
- GitHub job logs become downloadable when the job finishes. The dashboard stream waits for the workflow to finish and copies those archived logs even if the task's result has already arrived. Vercel Sandbox streams stdout and stderr while the command runs.
162
+ Every runner sends the task's log to the server while it runs, and the dashboard shows the stored log.
152
163
 
153
164
  The server stores steer, ask, approval and cancel messages before delivering them. Local workers receive them over a private Unix socket; HTTP controllers use the same signed requests as task starts, Docker uses the daemon's exec channel, and Vercel Sandbox uses `runCommand`. Workers acknowledge the applied sequence and save it across restarts. Unacknowledged messages retry on server events and the sweep, with backoff. A reconnect fetches pending messages once.
154
165
 
@@ -162,7 +173,7 @@ A runner runs only its owner's tasks. An owner or admin can register one with `-
162
173
 
163
174
  ## Security
164
175
 
165
- The server only verifies, dedupes, and dispatches; agents run in the runner with one checkout, one short-lived platform token, and one engine credential. `permissions` is enforced by the engine sandbox, `tools` by the app's permissions and the MCP allowlist. App credentials are encrypted at rest.
176
+ The server only verifies, dedupes, and dispatches; agents run in the runner with one checkout, one short-lived platform token, and one engine credential. `permissions` is enforced by the engine sandbox, on `vercel-sandbox` by the machine and its firewall, `tools` by the app's permissions and the MCP allowlist. App credentials are encrypted at rest.
166
177
 
167
178
  ## Limits and monitoring
168
179
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wular/coder",
3
- "version": "0.4.7",
3
+ "version": "0.4.8",
4
4
  "description": "Delegating coding-agent runtime",
5
5
  "type": "module",
6
6
  "main": "./dist/sdk.js",
@@ -13,6 +13,10 @@
13
13
  "./flow": {
14
14
  "types": "./dist/flow/index.d.ts",
15
15
  "import": "./dist/flow/index.js"
16
+ },
17
+ "./schema": {
18
+ "types": "./dist/schema.d.ts",
19
+ "import": "./dist/schema.js"
16
20
  }
17
21
  },
18
22
  "bin": {
@@ -33,11 +37,12 @@
33
37
  "files": [
34
38
  "bin",
35
39
  "dist",
40
+ "!dist/cli.d.ts",
41
+ "!dist/lib/broker.d.ts",
36
42
  "plugins",
37
43
  ".claude-plugin",
38
44
  "README.md",
39
- "docs",
40
- "migrations"
45
+ "docs"
41
46
  ],
42
47
  "publishConfig": {
43
48
  "access": "public"
@@ -45,31 +50,34 @@
45
50
  "engines": {
46
51
  "node": ">=18"
47
52
  },
48
- "dependencies": {
53
+ "peerDependencies": {
54
+ "zod": "^4.4.3"
55
+ },
56
+ "peerDependenciesMeta": {
57
+ "zod": {
58
+ "optional": true
59
+ }
60
+ },
61
+ "devDependencies": {
49
62
  "@chat-adapter/github": "4.41.1",
50
- "@chat-adapter/gmail": "4.41.1",
51
63
  "@chat-adapter/linear": "4.41.1",
52
64
  "@chat-adapter/slack": "4.41.1",
53
- "@chat-adapter/teams": "4.41.1",
65
+ "@electric-sql/pglite": "0.5.8",
54
66
  "@octokit/auth-app": "8.3.1",
55
67
  "@tanstack/virtual-core": "3.17.1",
68
+ "@types/node": "^26.1.2",
56
69
  "@wular/pnext": "0.1.9",
57
70
  "chat": "4.41.1",
71
+ "drizzle-kit": "0.31.11",
58
72
  "drizzle-orm": "0.45.2",
59
73
  "jose": "6.2.12",
60
74
  "openid-client": "6.8.8",
61
75
  "postgres": "3.4.9",
62
76
  "preact": "10.29.2",
63
77
  "preact-render-to-string": "6.7.0",
64
- "simple-icons": "15.0.0",
65
- "zod": "^4.4.3"
66
- },
67
- "devDependencies": {
68
- "@electric-sql/pglite": "0.5.8",
69
- "@types/node": "^26.1.2",
70
- "drizzle-kit": "0.31.10",
71
78
  "prettier": "^3.6.2",
72
79
  "tsdown": "^0.22.13",
73
- "typescript": "^5.9.3"
80
+ "typescript": "^5.9.3",
81
+ "zod": "4.4.3"
74
82
  }
75
83
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "coder",
3
- "version": "0.4.7",
3
+ "version": "0.4.8",
4
4
  "description": "Delegate coding tasks to supervised Coder subagents running on Codex, Claude, or any OpenAI-compatible model. Your main context stays clean.",
5
5
  "author": {
6
6
  "name": "muzam1l"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "coder",
3
3
  "displayName": "Coder",
4
- "version": "0.4.7",
4
+ "version": "0.4.8",
5
5
  "description": "Delegate coding tasks to supervised Coder subagents running on Codex, Claude, or any OpenAI-compatible model. Your main context stays clean.",
6
6
  "author": {
7
7
  "name": "muzam1l"
@@ -1,20 +0,0 @@
1
- import{t as e}from"./rolldown-runtime-DT7IzrpZ.js";import{A as t,Bt as n,D as r,Dn as i,Dt as a,Et as o,Ht as s,Jt as c,M as l,N as u,Nt as d,O as f,Ot as p,Pt as m,R as h,Sn as g,St as _,Vt as v,Wt as y,Yt as ee,an as b,b as x,bt as S,d as te,dn as C,dt as w,et as T,fn as E,j as ne,ln as D,mn as O,nn as k,on as re,pn as A,pt as ie,tt as ae,xt as oe,zt as se}from"./dispatch-YW1aqjEg.js";import{t as j}from"./chat-bridge-18koyS7c.js";import M from"node:path";import N from"node:process";import P from"node:fs";import{spawn as F}from"node:child_process";import I from"node:os";function L(){let e=process.env.CLAUDE_CONFIG_DIR||M.join(I.homedir(),`.claude`);return M.join(e,`projects`)}function R(e){if(!e)return!1;let t=L(),n=!1;try{for(let r of P.readdirSync(t)){let i=M.join(t,r,`${e}.jsonl`);P.existsSync(i)&&(P.rmSync(i,{force:!0}),n=!0)}}catch{}return n}var z=e({archiveFlagged:()=>ce,askTask:()=>K,claudeAskOptions:()=>G,collectPending:()=>q,collectTasks:()=>Y,deleteTask:()=>$,recentTasks:()=>J,sidecarPrompt:()=>W,spawnArchiveSweep:()=>Q,steerTask:()=>V,stopTask:()=>Z,streamTask:()=>X});async function B(e,t,n,r,i={}){if(t.status!==`running`)return null;let a=t.engine===`claude`?await(i.claude??f)(t.steerEndpoint,n,void 0,r):await(i.codex??l)(e,{endpoint:t.steerEndpoint,threadId:t.threadId,turnId:t.turnId,text:n,command:r});if(a.steered)return o(e,t.id,{kind:`steer`,message:`Steer accepted live:\n${n}`}),{taskId:t.id,steered:`live`};if(!a.retryable)throw o(e,t.id,{kind:`error`,message:`Live steer failed: ${a.detail}`}),Error(`Could not steer running task ${t.id}: ${a.detail}`);let s=v(e,t.id)??t;return E.includes(s.status)?(d(e,s.id,n),o(e,s.id,{kind:`steer`,message:`Steer queued for the next turn:\n${n}`}),{taskId:s.id,steered:`queued`}):null}async function V(e,t,n,r={},i={}){if(!t.threadId)throw new _(`invalid-option`,`Task ${t.id} has no thread to steer yet (status: ${t.status}).`,{hint:`Wait for it to start: coder task watch ${t.id}`});let a=await B(e,t,n,r.command,i);if(a){let n=v(e,t.id)??t;return n.archived&&D(e,n),a}return H(e,t,n,r),{taskId:t.id,steered:`resumed`}}function H(e,t,n,r){t.archived&&D(e,t),C(e,t.id,{status:`queued`,resumedAt:new Date().toISOString(),currentPrompt:n,...r.outputSchema?{outputSchema:r.outputSchema}:{},resumeThreadId:t.threadId,steerEndpoint:null,model:r.model??t.model??null,effort:r.effort??t.effort??null,permissions:r.permissions??t.permissions,error:void 0}),o(e,t.id,{kind:`steer`,message:`Resuming with steer:\n${n}`}),te(t.cwd??e,t.id)}const U=[`Read`,`Glob`,`Grep`];function W(e,t,n){return`You are a read-only sidecar answering a question ABOUT a coder task.
2
- You are not the task. Never continue, redo, or fix its work. Only answer the question. The task never sees this question or your answer.
3
-
4
- Task metadata:
5
- ${[`id: ${e.id}`,...e.name?[`name: ${e.name}`]:[],`status: ${e.status}`,`engine: ${e.engine}${e.model?`/${e.model}`:``}${e.effort?`/${e.effort}`:``}`,...e.cwd?[`workspace: ${e.cwd}`]:[],...e.createdAt?[`created: ${e.createdAt}`]:[],...e.completedAt?[`finished: ${e.completedAt}`]:[]].join(`
6
- `)}
7
-
8
- Task prompt:
9
- ${e.prompt??`(unknown)`}
10
-
11
- Inspect as needed (grep/read selectively; events can be large):
12
- - progress log (jsonl, one event per line): ${M.join(t,`log.jsonl`)}
13
- - final result: ${M.join(t,`result.json`)}
14
- - worker output: ${M.join(t,`worker.log`)}
15
- ${e.cwd?`- the task's workspace (its code and changes): ${e.cwd}`:``}
16
-
17
- Question: ${n}
18
-
19
- Answer the question directly and concisely.`}function G(e,t,n,r){return{prompt:n,model:r.model??e.model,effort:r.effort,permissions:`read-only`,additionalDirectories:[t],taskRoot:t,readOnlyAllowedTools:U}}async function K(e,t,n,i={}){let a=k(e,t.id),o=W(t,a,n)+(i.command?`\n\nCoder command ${h(i.command)}`:``),s=i.command?e=>{let t=M.join(a,`inbox-control`);P.mkdirSync(t,{recursive:!0}),P.appendFileSync(M.join(t,`${h(i.command)}.transcript.jsonl`),JSON.stringify({command:i.command,result:e.finalMessage??e.error?.message??``})+`
20
- `)}:void 0,c=i.effort??t.effort??null;if(t.engine===`claude`)return r(t.cwd??e,{...G(t,a,o,{model:i.model,effort:c}),command:i.command,onResult:s});let l=ae(e),u=i.model??t.model,d=u?l.models?.[u]:void 0,f=d&&T(d)?d:void 0;if(f?.envKey&&!N.env[f.envKey])throw Error(`Missing environment variable: \`${f.envKey}\`.`);let p=f?await j(f,f.wireApi??`chat`):null,m=ie(l,u,p??void 0);try{return await ne(t.cwd??e,{prompt:o,model:m?.model??w(u??null),modelProvider:m?.modelProvider??null,configOverrides:m?.configOverrides??null,effort:c,sandbox:`read-only`,approvalPolicy:`never`,ephemeral:!0,onResult:s})}finally{await p?.close()}}function q(e){return n(e).filter(e=>E.includes(e.status)).flatMap(t=>x(k(e,t.id)).filter(e=>!e.response).map(e=>({taskId:t.id,id:e.id,summary:String(e.summary??``),createdAt:e.createdAt?String(e.createdAt):void 0})))}function J(e){let t=[],r=n(e).filter(n=>!A.includes(n.status)||!a(Date.parse(n.completedAt??n.updatedAt??n.createdAt??``))||(s(e,n,{auto:!0}),t.push(n.id),!1));return Q(e,t),r}function Y(e,t={}){let n=t.limit===`all`?void 0:t.limit,r=e=>A.includes(e.status),i=y(e),a=new Set(i.map(e=>e.id)),o=e=>e.filter(e=>!a.has(e.id)),s=[...o(J(e)),...i.filter(e=>!e.archived)];if(t.archived?s=[...o(se(e)),...i.filter(e=>e.archived)]:t.running?s=s.filter(e=>E.includes(e.status)):t.stopped&&(s=s.filter(r)),t.dir){let e=b(M.resolve(String(t.dir))),n=new Map;s=s.filter(t=>t.cwd?(n.has(t.cwd)||n.set(t.cwd,b(t.cwd)),n.get(t.cwd)===e):!1)}let c=e=>({rank:oe(e.status),createdAt:Date.parse(e.createdAt??``)||0,id:e.id});s=[...s].sort((e,t)=>S(c(e),c(t)));let l=n===void 0?0:Math.max(0,s.length-n);return n!==void 0&&(s=s.slice(0,n)),{tasks:s,clipped:l}}async function*X(e,t,n={}){let r=new Set([`completed`,`failed`,`cancelled`]),a=v(e,t);if(!a)throw Error(`No task found for "${t}".`);let o=n.tail??1,s=i(M.join(k(e,t),`log.jsonl`)),l=!0,u=()=>{let e=s().map(e=>{try{return JSON.parse(e)}catch{return{message:e}}});return l?(l=!1,o===`all`?e:re(e,o)):e};for(yield*u();!r.has(a.status);)await new Promise(e=>setTimeout(e,400)),a=c(e,v(e,t)??a),yield*u();yield*u()}async function Z(e,n,r={}){let i=n.engine===`claude`?{detail:`claude worker terminated`}:await(r.interrupt??t)(e,{endpoint:n.steerEndpoint,threadId:n.threadId,turnId:n.turnId});if(n.engine!==`claude`&&u(n.steerEndpoint),n.pid&&n.status===`running`)try{N.kill(n.pid,`SIGTERM`)}catch{}return C(e,n.id,{status:`cancelled`,steerEndpoint:null,completedAt:new Date().toISOString()}),{taskId:n.id,status:`cancelled`,interrupt:i.detail}}function Q(e,t,n={}){if(t.length)try{F(N.execPath,[g,`task`,`archive-sweep`,`--cwd`,e,...n.flows?[`--flows`]:[],...t],{detached:!0,stdio:`ignore`}).unref()}catch{}}function $(e,t){return t.threadId&&(t.engine===`claude`?R(t.threadId):O(e,t.threadId)),ee(e,t.id)}function ce(e,t){for(let n of t){let t=m(e,n);t&&A.includes(t.status)&&p(e,t,{auto:!0})}}export{$ as a,V as c,Y as i,Z as l,K as n,J as o,q as r,Q as s,z as t,X as u};
@@ -1 +0,0 @@
1
- import{o as e,s as t}from"./integrations-B2CavXR1.js";import{ConsoleLogger as n}from"chat";import{createGitHubAdapter as r}from"@chat-adapter/github";function i(i){let a=i.credentials?.webhookSecret,o=i.installationId,s;return r({userName:i.name,apiUrl:`https://api.github.com`,botUserId:0,installationToken:()=>o?s??=i.token(o,{tools:t.comment}):Promise.reject(Error(`The webhook names no GitHub installation`)),webhookVerifier:(t,n)=>e(n,t.headers.get(`x-hub-signature-256`),a),logger:new n(`error`)})}export{i as githubAdapter};
@@ -1 +0,0 @@
1
- import{u as e}from"./integrations-B2CavXR1.js";import{createHmac as t}from"node:crypto";import{ConsoleLogger as n}from"chat";import{LinearAdapter as r}from"@chat-adapter/linear";function i(n,r,i,a=Date.now()){if(!i||!r)return!1;let o=t(`sha256`,i).update(n).digest();if(!e(Buffer.from(r,`hex`),o))return!1;let s=JSON.parse(n).webhookTimestamp;return typeof s==`number`&&Math.abs(a-s)<=6e4}var a=class extends r{organization;constructor(e,t){super(e),this.organization=t}async initialize(e){this.chat=e}bound(e){return this.requestContext.getStore()?e():this.organization?this.withInstallation(this.organization,e):Promise.reject(Error(`No Linear workspace to post for`))}postMessage(e,t){return this.bound(()=>super.postMessage(e,t))}startTyping(e,t){return this.bound(()=>super.startTyping(e,t))}};function o(e){let t=e.credentials?.webhookSecret,r=e.installationId;return new a({mode:`agent-sessions`,userName:e.name,apiUrl:`https://api.linear.app/graphql`,encryptionKey:``,accessToken:()=>r?e.token(r):Promise.reject(Error(`The webhook names no Linear workspace`)),webhookVerifier:(e,n)=>i(n,e.headers.get(`linear-signature`),t),logger:new n(`error`)},r)}export{o as linearAdapter};
@@ -1 +0,0 @@
1
- import{t as e}from"./chat-3Znsevah.js";import{ConsoleLogger as t}from"chat";import{SlackAdapter as n}from"@chat-adapter/slack";const r=`coder-pending:`;function i(e,t){return async n=>{let i=n.data,a=n.headers.toJSON(),o=typeof i==`string`?new URLSearchParams(i):void 0,s=o?.get(`token`);o&&s?.startsWith(r)&&(o.set(`token`,await t(s.slice(14))),i=o.toString());let c=Object.keys(a).find(e=>e.toLowerCase()===`authorization`);c&&a[c].startsWith(`Bearer ${r}`)&&(a[c]=`Bearer ${await t(a[c].slice(`Bearer ${r}`.length))}`);let l=await e(new URL(n.url??``,n.baseURL),{method:n.method?.toUpperCase()??`POST`,headers:a,body:i});return{data:await l.text(),status:l.status,statusText:l.statusText,headers:Object.fromEntries(l.headers),config:n,request:{}}}}var a=class extends n{outbound;constructor(e,t){super(e),this.outbound=t}async initialize(t){let n=new e,r=t.getState(),i=new Proxy(r,{get(e,t){let r=Reflect.get(e,t);return typeof r==`function`?(...r)=>{let i=typeof r[0]==`string`&&/^slack:(?:user:|user-by-name:|thread-participants:)/.test(r[0])?n:e;return Reflect.apply(Reflect.get(i,t),i,r)}:r}});await super.initialize(new Proxy(t,{get:(e,t,n)=>t===`getState`?()=>i:Reflect.get(e,t,n)}))}markEventDelivered(){}async isDuplicateEventDelivery(){return!1}getToken(){return this.requestContext.getStore()?.token||!this.outbound?super.getToken():this.outbound()}};function o(e){let n=e.credentials?.signingSecret,o=e.installationId,s=new Map,c=t=>(s.has(t)||s.set(t,e.token(t)),s.get(t));return new a({userName:e.name,apiUrl:`https://slack.com/api/`,appToken:``,socketForwardingSecret:``,clientId:``,clientSecret:``,encryptionKey:``,...n?{signingSecret:n,installationProvider:{getInstallation:async t=>({botToken:`${r}${t}`,...e.self?{botUserId:e.self}:{}})}}:{webhookVerifier:()=>!1,botToken:()=>o?e.token(o):Promise.reject(Error(`No Slack workspace to post for`))},webClientOptions:{adapter:i(e.fetch,c)},logger:new t(`error`)},n&&o?()=>c(o):void 0)}export{o as slackAdapter};
@@ -1 +0,0 @@
1
- import"./integrations-B2CavXR1.js";import{ConsoleLogger as e}from"chat";import{createTeamsAdapter as t}from"@chat-adapter/teams";function n(n){let r=n.installationId;if(!r)throw Error(`A Teams adapter requires its bound directory`);if(process.env.CLOUD&&process.env.CLOUD!==`Public`)throw Error(`The Teams SDK cannot override CLOUD; Coder requires the public Bot Framework cloud`);return t({appId:n.appId,appType:`SingleTenant`,appTenantId:r,apiUrl:``,userName:n.name,token:async e=>{if(![e].flat().includes(`https://api.botframework.com/.default`))throw Error(`Coder mints only Bot Framework tokens for Teams`);if(!r)throw Error(`The activity names no Teams directory`);return n.token(r)},...n.credentials?{}:{webhookVerifier:()=>!1},logger:new e(`error`)})}export{n as teamsAdapter};
@@ -1 +0,0 @@
1
- import{ConsoleLogger as e}from"chat";import{GmailAdapter as t}from"@chat-adapter/gmail";import{GmailWebhookError as n,createGmailWebhookVerifier as r}from"@chat-adapter/gmail/webhook";var i=class extends t{isBound;verify;constructor(e,t,n){super(e),this.isBound=n,this.verify=r(t)}async handleWebhook(e,t){let r=await this.verify(e).catch(e=>{if(e instanceof n)return new Response(e.message,{status:e.status});throw e});return r instanceof Response?r:r.emailAddress===this.userName?!this.isBound||!await this.isBound(r.emailAddress)?new Response(`Gmail mailbox is not bound`,{status:403}):(t?.waitUntil?t.waitUntil(this.sync()):await this.sync(),new Response(null,{status:204})):new Response(`Unexpected Gmail mailbox`,{status:403})}};function a(t){let n=t.credentials,r=t.installationId;if(!r)throw Error(`A Gmail adapter serves one bound mailbox`);let a=n?{subscription:n.subscription,audience:n.audience,serviceAccountEmail:n.serviceAccount}:{subscription:`projects/none/subscriptions/none`,webhookVerifier:()=>!1};return new i({mailbox:r,labelId:n?.label??`INBOX`,accessToken:()=>t.token(r),topicName:n?.topic??``,subscription:a.subscription,pubsubAudience:a.audience??``,pubsubServiceAccountEmail:a.serviceAccountEmail??``,...a.webhookVerifier?{webhookVerifier:a.webhookVerifier}:{},replyAll:!1,fetch:t.fetch,logger:new e(`error`)},a,t.isBound)}export{a as gmailAdapter};
@@ -1 +0,0 @@
1
- import{St as e}from"./dispatch-YW1aqjEg.js";import{i as t,t as n}from"./cli-DtTdpTy3.js";import{c as r,s as i}from"./args-DEMOfLz2.js";import{runnerOptions as a}from"./remove-UVD3W2OE.js";import o from"node:process";const s=t({name:`runner add`,globalFlags:{cwd:!1},args:1,help:{usage:`coder runner add <kind> [--name <name>] [--scope <scope>] [--field key=value …] [--server [url]] [--json]`,summary:`Connect a runner. Secret fields read environment variables with key=env:VARIABLE. Adding local prints a pairing command.`,flags:[[`--name <name>`,`runner display name`],[`--scope <scope>`,`personal or workspace`],[`--field key=value`,`repeat for each field, use env:VARIABLE for secrets`],n]},options:{...a,name:i,scope:i,field:r},async run({options:t,args:[n]}){if(!n)throw new e(`invalid-option`,`Missing runner kind.`);let{addRunnerFields:r}=await import(`./runner-c-2w6Eoj.js`).then(e=>e.a);return r(n,t)},print:e=>o.stdout.write(`${`command`in e?e.command:`Added ${e.name} (${e.id}).`}\n`)});export{s as commandRunnerAdd};
@@ -1 +0,0 @@
1
- import{nt as e}from"./dispatch-YW1aqjEg.js";import{i as t}from"./cli-DtTdpTy3.js";import{n,s as r,t as i}from"./args-DEMOfLz2.js";import a from"node:process";const o=({name:e,file:t})=>a.stdout.write(`Added MCP server "${e}" to ${t}. Attach with --mcp ${e}.\n`),s=a=>t({name:`mcp add`,help:{usage:`coder mcp add <name> [--tools a,b] [--user] (--url <url> [--header K=V] [--transport http|sse] | [--env K=V] -- <command> [args...])`,summary:"Save an MCP server under `mcp.<name>`: a remote url, or the command to spawn after `--`.",flags:[[`--url <url>`,`remote server (streamable HTTP by default)`],[`--header <K=V,...>`,"request headers for a remote server; values may hold ${VAR}"],[`--transport <http|sse>`,`remote transport (default: http)`],[`--env <K=V,...>`,"environment for a stdio server; values may hold ${VAR} or ${VAR:-default}"],[`--tools <a,b>`,`tool allowlist (default: every tool the server offers)`],[`--user`,`write ~/.coder config instead of the repo`]],examples:[[`coder mcp add docs -- npx -y docs-mcp`,`then: coder run --mcp docs "..."`]]},options:{...i,env:r,header:r,url:r,transport:r,tools:r,user:n},args:1,run:({options:t,args:[n],cwd:r})=>e(r,n,{...t,command:a}),print:o}),c=Object.assign(e=>{let t=e.indexOf(`--`);return s(t===-1?[]:e.slice(t+1))(t===-1?e:e.slice(0,t))},s([]));export{c as commandMcpAdd,o as printAdded};
@@ -1 +0,0 @@
1
- import{rt as e}from"./dispatch-YW1aqjEg.js";import{i as t}from"./cli-DtTdpTy3.js";import{n,t as r}from"./args-DEMOfLz2.js";import{printAdded as i}from"./add-DiwLZmjp.js";const a=t({name:`mcp add-json`,help:{usage:`coder mcp add-json <name> '<json entry>' [--user]`,summary:`Save an entry pasted from any .mcp.json (command/args/env or url/headers, plus tools).`,flags:[[`--user`,`write ~/.coder config instead of the repo`]]},options:{...r,user:n},args:2,run:({options:t,args:[n,r],cwd:i})=>e(i,n,r,t),print:i});export{a as commandMcpAddJson};
@@ -1 +0,0 @@
1
- import{s as e}from"./cli-DtTdpTy3.js";const t=e(`agent`,{tools:async()=>(await import(`./tools-BQQfMQB9.js`)).commandTools,list:async()=>(await import(`./list-CJhHYVb2.js`)).commandAgentList,ls:async()=>(await import(`./list-CJhHYVb2.js`)).commandAgentList,show:async()=>(await import(`./show-U0XPh927.js`)).commandAgentShow,run:async()=>(await import(`./run-Co36tfya.js`)).commandAgentRun,init:async()=>(await import(`./init-BfXdsU46.js`)).commandAgentInit,push:async()=>(await import(`./push-D3vxfhc_.js`)).commandAgentPush,usage:async()=>(await import(`./usage-CazoINYM.js`)).commandAgentUsage,integrations:async()=>(await import(`./integrations-DNz6PHFV.js`)).commandAgentIntegrations},{menu:[{usage:`list`,blurb:`list local or server-owned agents`},{usage:`show <id>`,blurb:`one agent in full: settings, integrations, triggers, tools`},{usage:`init [id]`,blurb:`scaffold an agent folder in .coder/agents`},{usage:`push [id]`,blurb:`upload workspace agents to a Coder server`},{usage:`integrations <list|show>`,blurb:`the integration catalog: coder agent integrations --help`},{usage:`run <agent> <event.json>`,blurb:`run a recorded event through an agent, offline or on a server`},{usage:`usage`,blurb:`aggregate usage by agent, installation, or engine`}],description:[`Define and run agents from the CLI, the dashboard, or on GitHub, Slack and other platforms.`]},{aliases:{ls:`list`},nested:[`integrations`]});export{t as commandAgent};
@@ -1,3 +0,0 @@
1
- import{t as e}from"./rolldown-runtime-DT7IzrpZ.js";import{St as t}from"./dispatch-YW1aqjEg.js";import{t as n}from"./types-D0q15RJa.js";import{a as r}from"./load-DDZfByUe.js";import{i,n as a}from"./remote-AcWWfKVS.js";import{t as o}from"./integrations-B2CavXR1.js";import{a as s,r as c}from"./exec-DgI3boHa.js";import{c as l,o as u,u as d}from"./task-DhZ5vhyY.js";import{n as f}from"./match-DMI54zg4.js";import p from"node:path";import m from"node:process";import h from"node:fs";import{spawn as g}from"node:child_process";import _ from"node:os";import v from"node:fs/promises";const y=/\x1b\[[0-9;?]*[ -/]*[@-~]|\x1b\][^\x07\x1b]*(?:\x07|\x1b\\)|\x1b[()][A-Z0-9]|\r/g;function b(e,t){if(e===`codex`)return{file:`codex`,args:[`login`,`--device-auth`],env:{CODEX_HOME:t}};let n=`stty cols 4000 rows 50 2>/dev/null; exec claude setup-token`;return{file:`sh`,args:[`-c`,`cat | { ${m.platform===`darwin`?`script -q /dev/null sh -c '${n}'`:`script -qfec '${n}' /dev/null`}; kill 0; }`],env:{CLAUDE_CONFIG_DIR:t,BROWSER:`true`}}}function x(e){try{return JSON.parse(Buffer.from(String(e).split(`.`)[1]??``,`base64url`).toString())}catch{return{}}}function S(e){let t=x(JSON.parse(e).tokens?.id_token),n=t[`https://api.openai.com/auth`];return{...typeof t.email==`string`?{email:t.email}:{},...typeof n?.chatgpt_plan_type==`string`?{plan:n.chatgpt_plan_type}:{}}}function C(e,t){let n=t.replace(y,``),r=/\x1b\]8;[^;]*;(https:\/\/[^\x07\x1b]+)(?:\x07|\x1b\\)/.exec(t)?.[1],i=e===`claude`?r??/https:\/\/\S*(?:oauth|authorize)\S*(?=\s)/.exec(n)?.[0]:/https:\/\/\S+(?=\s)/.exec(n)?.[0],a=e===`codex`?/\b[A-Z0-9]{4,}-[A-Z0-9]{4,}\b/.exec(n)?.[0]:void 0;if(!(!i||e===`codex`&&!a))return{url:i,...a?{code:a}:{}}}async function w(e,t){let{server:n,token:r}=d();delete m.env.CODER_TASK_TOKEN,delete m.env.CODER_LOGIN;let i=new AbortController,a=async(t,a)=>{let o=await fetch(`${n}/logins/${encodeURIComponent(e)}${t}`,{method:a===void 0?`GET`:`POST`,...t?{signal:i.signal}:{},headers:{authorization:`Bearer ${r}`,...a===void 0?{}:{"content-type":`application/json`}},...a===void 0?{}:{body:JSON.stringify(a)}});if(!o.ok)throw Error(`Coder server answered ${o.status}`);return await o.json()},{engine:o}=await a(``),s=await v.mkdtemp(p.join(t,`.login-`)),c=b(o,s),l=g(c.file,c.args,{env:{...m.env,...c.env},stdio:[`pipe`,`pipe`,`pipe`],detached:!0}),u=()=>{try{m.kill(-l.pid,`SIGTERM`)}catch{}},f=``,h=``,_=!1,x=new Promise((e,t)=>{l.once(`error`,t),l.once(`close`,e)}),w=setTimeout(u,6e5),T=async()=>{for(;!i.signal.aborted;){let{code:e}=await a(`/input`);if(e)return void l.stdin.write(`${e}\r`)}},E=e=>{if(f+=e.toString(),h=f.replace(y,``),!_){let e=C(o,f);e&&(_=!0,m.stdout.write(`Sign-in link ready
2
- `),a(``,e).catch(()=>u()),o===`claude`&&T().catch(()=>{i.signal.aborted||u()}))}o===`claude`&&/sk-ant-oat[\w-]+\s/.test(h)&&u()};l.stdout.on(`data`,E),l.stderr.on(`data`,E);try{let e=await x;i.abort();let t=/sk-ant-oat[A-Za-z0-9_-]+/.exec(h)?.[0];if(o===`claude`&&t){let e=/[\w.+-]+@[\w-]+(?:\.[\w-]+)+/.exec(h)?.[0];await a(``,{result:{env:{CLAUDE_CODE_OAUTH_TOKEN:t},...e?{account:{email:e}}:{}}})}else if(o===`codex`&&e===0){let e=await v.readFile(p.join(s,`auth.json`),`utf8`);await a(``,{result:{env:{CODEX_AUTH_JSON:e},account:S(e)}})}else await a(``,{error:_?`Sign-in did not finish. Start again.`:`${o} sign-in could not start.`}).catch(()=>{});m.stdout.write(`Sign-in finished
3
- `)}finally{clearTimeout(w),i.abort(),u(),await v.rm(s,{recursive:!0,force:!0})}}var T=e({agentIdError:()=>k,agents:()=>P,regexError:()=>A});const E=e=>e.cwd?p.resolve(e.cwd):m.cwd(),D=e=>(Array.isArray(e)?e:(e??``).split(`,`)).map(e=>e.trim()).filter(Boolean),O=/^[a-z0-9][a-z0-9_-]*$/;function k(e,t){if(!O.test(t))return`Use lowercase letters, digits, - or _, starting with a letter or digit.`;let n=p.join(e,`.coder`,`agents`,t);if(h.existsSync(n)&&h.readdirSync(n).length>0)return`${p.relative(e,n)} is not empty; clear it to start over, or edit what is there.`}function A(e){try{new RegExp(e);return}catch{return`Not a valid regular expression.`}}function j(e,t){let n=o[e]?.sample;return{integration:e,type:t,appId:`${e}:sample`,installationId:`sample`,deliveryId:`sample-1`,actor:{id:`user-1`,login:`someone`,role:`member`},text:`Replace me with the text a real event would carry.`,...n?{chat:{thread:{_type:`chat:Thread`,adapterName:e,channelId:n.slice(0,n.lastIndexOf(`:`)),id:n,isDM:!1}}}:{}}}async function M(e,r={}){let i=E(r);if(!e&&r.askId&&(e=await r.askId(e=>k(i,e))),!e)throw new t(`invalid-option`,`Missing agent id.`,{hint:`Usage: coder agent init <id>`});let a=k(i,e);if(a)throw new t(`invalid-option`,a.includes(`not empty`)?a:`Agent id "${e}": ${a}`);let s=p.join(i,`.coder`,`agents`,e),c=r.askPicks?await r.askPicks(e):{...r.name?{name:r.name}:{},integrations:D(r.integrations).length?D(r.integrations):[Object.keys(o)[0]],events:{},matches:{},tools:r.tools??`comment`};if(!n.includes(c.tools))throw new t(`invalid-option`,`Unknown preset "${c.tools}"; valid: ${n.join(`, `)}`);let l={},u=D(r.triggers),d=e=>Object.keys(o[e]?.events??{});for(let e of c.integrations)if(!o[e])throw new t(`invalid-option`,`Unknown integration "${e}"; valid: ${Object.keys(o).join(`, `)}`);for(let e of u)if(!c.integrations.some(t=>d(t).includes(e)))throw new t(`invalid-option`,`No chosen integration has event "${e}".`,{hint:`Events per integration: coder agent integrations show <id>`});let f=Object.fromEntries(D(r.match).map(e=>{let n=e.indexOf(`=`);if(n<1)throw new t(`invalid-option`,`Bad --match "${e}"; use event=regex.`);let r=e.slice(n+1);if(A(r))throw new t(`invalid-option`,`Bad --match for ${e.slice(0,n)}: ${A(r)}`);return[e.slice(0,n),r]}));for(let e of c.integrations){let n=d(e),r=c.events[e]??(u.length?u.filter(e=>n.includes(e)):[n.includes(`mention`)?`mention`:n[0]]);for(let i of r)if(!n.includes(i))throw new t(`invalid-option`,`${e} has no event "${i}"; valid: ${n.join(`, `)}`);let i={...f,...c.matches[e]??{}},a=r.filter(e=>i[e]);r.length&&(l[e]={triggers:a.length?Object.fromEntries(r.map(e=>[e,!i[e]||{match:i[e]}])):r,tools:c.tools})}let m={...c.name?{name:c.name}:{},...r.description?{description:r.description}:{},permissions:r.permissions??`read-only`,integrations:l};await v.mkdir(s,{recursive:!0}),await v.writeFile(p.join(s,`agent.json`),`${JSON.stringify(m,null,2)}\n`),await v.writeFile(p.join(s,`system.md`),`You are ${c.name??e}.\n`);let h=p.join(_.tmpdir(),`coder-agent-samples`,e),g=[];for(let[e,t]of Object.entries(l)){let n=(Array.isArray(t.triggers)?t.triggers:Object.keys(t.triggers??{}))[0];await v.mkdir(h,{recursive:!0});let r=p.join(h,`sample-${e}-${n}.json`);await v.writeFile(r,`${JSON.stringify(j(e,n),null,2)}\n`),g.push(r)}return{id:e,dir:s,files:[`agent.json`,`system.md`],samples:g,integrations:Object.keys(l)}}function N(e){if(e===void 0||typeof e==`number`)return e;if(/^\d+$/.test(e))return Number(e);let n=/^(\d+)([dh])$/.exec(e);if(!n)throw new t(`invalid-option`,`Invalid --since value.`,{hint:`Use 7d, 24h, or milliseconds since epoch`});return Date.now()-Number(n[1])*(n[2]===`d`?864e5:36e5)}const P={list:(e={})=>e.server===void 0?r(E(e),o):a(e).agents.list(),async show(e,n={}){if(!e)throw new t(`invalid-option`,`Missing agent id.`,{hint:`Usage: coder agent show <id>`});if(n.server===void 0){let i=(await r(E(n),o)).find(t=>t.id===e);if(!i)throw new t(`invalid-option`,`No agent named "${e}".`,{hint:`List agents: coder agent list`});return i}let i=a(n),s=await i.agents.get(e),c=await i.agents.version(e,s.currentVersion);return{...s,definition:c.definition}},init:M,push:(e,t={})=>i(a(t),E(t),e),async run(e,n,i={}){if(i.wait&&i.server===void 0)throw new t(`invalid-option`,`--wait needs --server.`,{hint:`Offline runs print their reply as they finish`});if(!e||!n)throw new t(`invalid-option`,`Missing agent id or event file.`,{hint:`Usage: coder agent run <agent> <event.json>`});let l=E(i),u=typeof n==`string`?JSON.parse(await v.readFile(p.resolve(l,n),`utf8`)):n;if(i.server!==void 0){let t=a(i),n=await t.tasks.create({agent:e,event:u});if(!i.wait||!n.tasks.length)return n;let r=[];for(let e of n.tasks){let n=await t.tasks.wait(e,{onLog:i.onLog});r.push(n),i.onDone?.(n)}return r}let d=await r(l,o),m=d.find(t=>t.id===e);if(!m)throw new t(`invalid-option`,`No agent named "${e}".`);let h=f(u,d).find(t=>t.agent.id===e),g=i.flow??h?.flow;if(!g)throw new t(`invalid-option`,`Agent "${e}" does not match event "${u.type}".`);return c({cwd:l,agent:e,flow:g,task:{...s(m,g,u),tools:{},...h?.permissions?{permissions:h.permissions}:{}},post:!1})},runTask(e,t={}){let n=E(t);return m.env.CODER_LOGIN?w(e,n):m.env.CODER_PREPARE?u(e,n):l(e,n)},async usage(e={}){if(e.by&&![`agent`,`installation`,`engine`].includes(e.by))throw new t(`invalid-option`,`Invalid --by value.`,{hint:`Use agent, installation, or engine`});let n=e.by;if(e.server!==void 0)return a(e).usage({since:N(e.since),by:n});let[{localUsage:r},{usageSummary:i}]=await Promise.all([import(`./store-Cxc2GYyj.js`).then(e=>e.h),import(`./usage-Bw7fQeFC.js`).then(e=>e.a)]);return i(r(E(e)).map(([,e])=>e),N(e.since)??0,n)},integrations:{list:()=>Object.entries(o).map(([e,t])=>({id:e,description:t.description,events:Object.keys(t.events),tools:t.tools.presets.write})),show(e){if(!e)throw new t(`invalid-option`,`Missing integration id.`,{hint:`Usage: coder agent integrations show <id>`});let n=o[e];if(!n)throw new t(`invalid-option`,`Unknown integration "${e}".`,{hint:`List integrations: coder agent integrations list`});return{id:e,events:Object.fromEntries(Object.entries(n.events).map(([e,t])=>[e,t.description])),tools:n.tools.presets}}}};export{P as n,T as t};
@@ -1,2 +0,0 @@
1
- import{Tt as e}from"./dispatch-YW1aqjEg.js";import{i as t,r as n}from"./cli-DtTdpTy3.js";import{a as r,p as i,s as a}from"./output-BKeyLbvt.js";import{i as o,n as s,s as c,t as l}from"./args-DEMOfLz2.js";import u from"node:process";const d={server:o,workspace:c,yes:s};function f(e,t){let n=i;if(!t.length)return void u.stdout.write(`${n.dim(`No approvals for task ${e}.`)}\n`);for(let e of t){let t=e.answered??`pending`;u.stdout.write(`${n.cyan(e.id)} ${t.padEnd(8)} ${n.dim(String(e.summary??``))}\n`)}let r=t.filter(e=>!e.answered);if(r.length){let e=r.length===1?r[0].id:`<approval-id>`;u.stdout.write(`\n${a([`Answer: coder task approve ${e} [--deny]`],n)}\n`)}}function p(t){let n=i;if(!t.length)return void u.stdout.write(`${n.dim(`No pending approvals.`)}\n\n${a([`Check tasks: coder task list`],n)}\n`);let o={id:Math.max(11,...t.map(e=>e.id.length)),task:Math.max(7,...t.map(e=>e.taskId.length))};u.stdout.write(n.bold(n.light(`${`approval-id`.padEnd(o.id)} ${`task-id`.padEnd(o.task)} age summary\n`)));for(let i of t){let t=i.createdAt?r(e(i.createdAt)):`-`;u.stdout.write(`${n.cyan(i.id.padEnd(o.id))} ${n.cyan(i.taskId.padEnd(o.task))} ${t.padEnd(5)} ${n.light(i.summary)}\n`)}let s=t.length===1?t[0].id:`<approval-id>`;u.stdout.write(`\n${a([`Answer: coder task approve ${s} [--deny]`],n)}\n`)}const m=t({name:`task approvals`,help:{usage:`coder task approvals [task-id] [--server [url]]`,summary:`Without a task id: pending approvals across all tasks. With one: that task's
2
- permission escalations and how each was answered.`,flags:[n]},options:{...l,...d},args:1,run:async({options:e,args:[t]})=>{let{tasks:n}=await import(`./task-DEp3GHwH.js`).then(e=>e.t);return n.approvals(t,{...e,organization:e.workspace})},json:(e,{options:t,args:[n]})=>t.server===void 0&&n?e.map(({taskId:e,...t})=>t):t.server===void 0?e.map(({taskId:e,id:t,summary:n,createdAt:r})=>({taskId:e,id:t,summary:n,createdAt:r})):e,print(e,{options:t,args:[n]}){if(t.server===void 0)return n?f(n,e):p(e);if(!e.length)return void u.stdout.write(`${i.dim(`No pending approvals.`)}\n\n${a([`Check tasks: coder task list`],i)}\n`);for(let t of e)u.stdout.write(`${t.taskId} ${JSON.stringify(t)}\n`)}});export{m as commandApprovals};
@@ -1 +0,0 @@
1
- import{t as e}from"./rolldown-runtime-DT7IzrpZ.js";import{St as t}from"./dispatch-YW1aqjEg.js";import{i as n,t as r}from"./load-DDZfByUe.js";import{n as i}from"./integrations-B2CavXR1.js";import{o as a}from"./local-B0GiaLV0.js";import{$n as o,Gn as s,t as c}from"./store-Cxc2GYyj.js";import{n as l}from"./env-LsVTi18f.js";import u from"node:process";var d=e({serverAppLink:()=>f});async function f(e,d={}){let f=l(d.env??u.env),p=i(f.integrations);if(!p[e])throw new t(`invalid-option`,`Unknown integration "${e}".`,{hint:`Pick one of ${Object.keys(p).join(`, `)}.`});if(!f.databaseUrl||!f.publicUrl)throw new t(`invalid-option`,`Built-in apps need the server database and address.`,{hint:`Set DATABASE_URL and PUBLIC_URL as the server has them.`});let m={...n()[r].json,...d.name?{name:d.name}:{}},h={agent:r,def:a(m),...d.owner?{owner:d.owner}:{},public:!0},g=await c(f);try{let t=g.defaultOrganizationId,n={config:f,organizationId:t,store:g.store(t)},r=await o(n,`create`,`*`,s(e,h)),i=new URLSearchParams({agent:h.agent,def:h.def,...h.owner?{owner:h.owner}:{},public:`1`,tx:r});return{url:`${f.publicUrl.replace(/\/$/,``)}/create/${e}?${i}`}}finally{await g.close()}}export{f as n,d as t};
@@ -1 +0,0 @@
1
- import{i as e}from"./cli-DtTdpTy3.js";import{n as t,s as n}from"./args-DEMOfLz2.js";const r=e({name:`task archive-sweep`,options:{cwd:n,flows:t},args:1/0,run:async({options:e,args:t,cwd:n})=>{let{archiveFlagged:r}=await import(`./actions-CmfXOVXQ.js`).then(e=>e.t),{archiveFlaggedRuns:i}=await import(`./executor-HWnIIYUL.js`).then(e=>e.b);return e.flows?i(t):r(n,t)}});export{r as commandArchiveSweep};
@@ -1 +0,0 @@
1
- import{St as e}from"./dispatch-YW1aqjEg.js";import*as t from"zod/mini";const n=t.optional(t.boolean()),r=t.optional(t.string()),i=t.optional(t.array(t.string())),a=t.optional(t.union([t.string(),t.literal(!0)])),o=t._default(a,!0),s={cwd:r,json:n},c=t.optional(t.union([t.literal(`all`),t.coerce.number().check(t.int(),t.positive())],{error:`expected a positive integer or "all"`})),l=t.optional(t.union([t.literal(`all`),t.coerce.number().check(t.int(),t.nonnegative())],{error:`expected a number or "all"`}));function u(e){let t=e.def;for(;t;){if(t.type===`union`)return t.options.some(e=>e.def.type===`literal`);let e=t.innerType??t.in;t=e?e.def:void 0}return!1}function d(e,t){let n=e.def;for(;n;){if(n.type===t)return!0;let e=n.innerType??n.in;n=e?e.def:void 0}return!1}const f=e=>d(e,`boolean`);function p(t,n,r={}){let i=n.shape,a={},o=[],s=!1,c=(e,t,n,r)=>{let o=i[t],s=r?`-`:`--`;if(!o)throw Error(`Unknown option ${s}${e} (use -- to pass literal text starting with -)`);if(f(o))return a[t]=n===void 0||n!==`false`,0;if(u(o)&&(n===void 0||n.startsWith(`-`)))return a[t]=!0,0;if(n===void 0)throw Error(`Missing value for ${s}${e}`);return a[t]=d(o,`array`)?[...a[t]??[],n]:n,1};for(let e=0;e<t.length;e+=1){let n=t[e];if(s){o.push(n);continue}if(n===`--`){s=!0;continue}if(!n.startsWith(`-`)||n===`-`){o.push(n);continue}if(n.startsWith(`--`)){let[r,a]=n.slice(2).split(`=`,2);a===void 0&&i[r]&&!f(i[r])?e+=c(r,r,t[e+1],!1):c(r,r,a,!1);continue}let r=n.slice(1);i[r]&&!f(i[r])?e+=c(r,r,t[e+1],!0):c(r,r,void 0,!0)}let l=n.safeParse(a);if(!l.success){let e=l.error.issues[0],t=String(e.path[0]??``),n=a[t];throw Error(n===void 0?`Missing required --${t}.`:`Invalid --${t} value ${JSON.stringify(n)}: ${e.message}`)}let p=r.positionals??0;if(o.length>p){let t=o.slice(p);throw new e(`invalid-option`,`Unexpected argument${t.length>1?`s`:``}: ${t.join(` `)}`,r.command?{hint:`Help: coder ${r.command} --help`}:{})}return{options:l.data,positionals:o}}export{p as a,i as c,a as i,l,n,o,c as r,r as s,s as t};
@@ -1 +0,0 @@
1
- import{i as e,l as t}from"./http-DG54kyx4.js";import{Lt as n,fn as r,pn as i}from"./store-Cxc2GYyj.js";import{c as a}from"./schema-DoNO0dPh.js";import{a as o,i as s,o as c}from"./serve-CcqX_2qk.js";import{createECDH as l,hkdfSync as u}from"node:crypto";import*as d from"openid-client";import{and as f,eq as p}from"drizzle-orm";import{EncryptJWT as m,calculateJwkThumbprint as h,createRemoteJWKSet as g,jwtDecrypt as _,jwtVerify as v}from"jose";const y=(e,t)=>new Uint8Array(u(`sha256`,e,``,t,32));async function b(e){let t=y(e,`coder oidc client key`),n=l(`prime256v1`);n.setPrivateKey(t);let r=n.getPublicKey(),i={kty:`EC`,crv:`P-256`,x:Buffer.from(r.subarray(1,33)).toString(`base64url`),y:Buffer.from(r.subarray(33)).toString(`base64url`)},a=await crypto.subtle.importKey(`jwk`,{...i,d:Buffer.from(t).toString(`base64url`)},{name:`ECDSA`,namedCurve:`P-256`},!1,[`sign`]),o=await h(i);return{key:a,kid:o,jwk:{...i,kid:o,alg:`ES256`,use:`sig`}}}async function x(e){let t=[e.encryptionKey,e.previousEncryptionKey].filter(e=>!!e),n=await Promise.all(t.map(b));return{cookie:t.map(e=>y(e,`coder session cookie`)),client:n[0],jwks:{keys:n.map(e=>e.jwk)}}}const S=`${r}.session`,C=`${r}.oidc`,w=3800,T=2592e3,E=()=>Math.floor(Date.now()/1e3);function D(e){let t=new Map;for(let n of(e.get(`cookie`)??``).split(/;\s*/)){let e=n.indexOf(`=`);e>0&&t.set(n.slice(0,e),n.slice(e+1))}return t}function O(e){let t=[];for(;e.has(`${S}.${t.length}`);)t.push(`${S}.${t.length}`);return t}function k(e){let t=D(e);return t.get(S)??(O(t).map(e=>t.get(e)).join(``)||void 0)}function A(e){return Array.isArray(e)?e.flatMap(e=>typeof e?.id==`string`&&typeof e.role==`string`?[{id:e.id,slug:String(e.slug??e.id),name:String(e.name??e.slug??e.id),role:e.role}]:[]):[]}function j(e,t,n){let r=e.get(`x-coder-organization`),i=r?t.organizations.find(e=>e.slug===r||e.id===r):t.organizations.find(e=>e.id===n)??t.organizations[0];return i?{...t,organizationId:i.id,role:i.role}:r?{...t,organizationDenied:!0}:t}async function M(r,l){let u=l.auth.wular.url,h=l.publicUrl,y=new URL(h).origin,b=h.startsWith(`https:`),M=await x(l),N=`${h}${s}`,P=(e,t,n)=>`${e}=${t}; Path=/; HttpOnly; SameSite=Lax; Max-Age=${n}${b?`; Secure`:``}`,F=(e,t)=>new m(e).setProtectedHeader({alg:`dir`,enc:`A256GCM`}).setIssuedAt().setExpirationTime(`${t}s`).encrypt(M.cookie[0]);async function I(e){if(e)for(let t of M.cookie)try{return(await _(e,t)).payload}catch{}}async function L(e,t){let n=await F(t,T),r=O(D(e));if(n.length<=w)return[P(S,n,T),...r.map(e=>P(e,``,0))];let i=n.match(RegExp(`.{1,${w}}`,`g`));return[P(S,``,0),...i.map((e,t)=>P(`${S}.${t}`,e,T)),...r.slice(i.length).map(e=>P(e,``,0))]}let R=e=>[S,...O(D(e))].map(e=>P(e,``,0)),z,B=()=>z??=d.discovery(new URL(u),`${h}${c}`,void 0,d.PrivateKeyJwt(M.client),new URL(u).protocol===`http:`?{execute:[d.allowInsecureRequests]}:void 0).catch(e=>{throw z=void 0,e}),V,H=async()=>V??=g(new URL((await B()).serverMetadata().jwks_uri));function U(e,t){let n=e.claims();if(!n)throw Error(`Wular Auth returned no ID token`);let r=A(n.organizations),i=e=>r.find(t=>t.id===e)?.id;return{sub:n.sub,name:typeof n.name==`string`?n.name:``,email:typeof n.email==`string`?n.email:``,orgs:r,org:i(t?.org)??i(n.org)??r[0]?.id,exp_at:E()+(e.expires_in??600),at:E(),rt:e.refresh_token??t?.rt,idt:e.id_token??t?.idt}}let W=new Map;function G(e){let t=e.rt;if(!t)return Promise.resolve(void 0);let n=W.get(t);return n||(n=B().then(e=>d.refreshTokenGrant(e,t)).then(t=>U(t,e)).catch(e=>(W.delete(t),e instanceof d.ResponseBodyError&&e.error===`invalid_grant`?!1:void 0)),W.set(t,n),setTimeout(()=>W.delete(t),6e4).unref?.()),n}async function K(e,t,n){let r=(await H().then(t=>v(e,t,{issuer:u,audience:y,typ:`at+jwt`})).catch(()=>void 0))?.payload;if(!r?.sub)return;let i={user:{id:r.sub,name:``,email:``},organizations:A(r.organizations)};return n&&E()-(r.iat??0)>60?{...i,stale:!0}:j(t,i,typeof r.org==`string`?r.org:void 0)}async function q(e){let t=await B().catch(()=>void 0);if(!t)return Response.redirect(`${h}/login?error=unavailable`,302);let n={verifier:d.randomPKCECodeVerifier(),state:d.randomState(),nonce:d.randomNonce(),return:i(e.searchParams.get(`return`),y)},r=d.buildAuthorizationUrl(t,{redirect_uri:N,scope:o,code_challenge:await d.calculatePKCECodeChallenge(n.verifier),code_challenge_method:`S256`,state:n.state,nonce:n.nonce});return new Response(null,{status:302,headers:{location:r.href,"set-cookie":P(C,await F(n,600),600)}})}async function J(e,t){let n=e=>{let t=new Headers({location:`/login?error=${encodeURIComponent(e)}`});return t.append(`set-cookie`,P(C,``,0)),new Response(null,{status:302,headers:t})},r=await I(D(e.headers).get(C));if(!r)return n(`expired`);let i=t.searchParams.get(`error`);if(i)return n(i);let a;try{a=U(await d.authorizationCodeGrant(await B(),new URL(`${N}${t.search}`),{pkceCodeVerifier:r.verifier,expectedState:r.state,expectedNonce:r.nonce,idTokenExpected:!0}))}catch{return n(`sign_in_failed`)}let o=new Headers({location:r.return});o.append(`set-cookie`,P(C,``,0));for(let t of await L(e.headers,a))o.append(`set-cookie`,t);return new Response(null,{status:302,headers:o})}async function Y(t){if(!n(t,h))return e();let r=await I(k(t.headers)),i=await B().catch(()=>void 0),a=`${h}/?signed_out=1`,o=i?.serverMetadata().end_session_endpoint&&r?.idt?d.buildEndSessionUrl(i,{id_token_hint:r.idt,post_logout_redirect_uri:a}).href:a,s=Response.json({url:o});for(let e of R(t.headers))s.headers.append(`set-cookie`,e);return s}return{issuer:u,jwks:M.jwks,handler(e){let n=new URL(e.url);return n.pathname===`/api/auth/sign-in`&&e.method===`GET`?q(n):n.pathname===`/api/auth/callback`&&e.method===`GET`?J(e,n):n.pathname===`/api/auth/sign-out`&&e.method===`POST`?Y(e):Promise.resolve(t())},async session(e,t=!1,n=[]){let r=e.get(`authorization`);if(r?.startsWith(`Bearer `))return K(r.slice(7),e,t);let i=await I(k(e));if(i){if(i.exp_at<=E()||t&&E()-i.at>60){let t=await G(i);if(t===!1&&n.push(...R(e)),!t)return;i=t,n.push(...await L(e,i))}return j(e,{user:{id:i.sub,name:i.name,email:i.email},organizations:i.orgs},i.org)}},async setOrganization(e,t){let n=await I(k(e)),r=n?.orgs.find(e=>e.slug===t);if(!(!n||!r))return{...r,cookies:await L(e,{...n,org:r.id})}},async link(e,t,n,i={}){let o={name:e.name,email:e.email,...i.organizations?{organizations:i.organizations}:{},...i.token?{token:i.token}:{}};await r.insert(a).values({platform:t,platformUserId:n,userId:e.id,...o}).onConflictDoUpdate({target:[a.platform,a.platformUserId],set:o,setWhere:p(a.userId,e.id)});let[s]=await r.select({userId:a.userId}).from(a).where(f(p(a.platform,t),p(a.platformUserId,n)));return s?.userId===e.id?`linked`:`taken`},async linkedUser(e,t){let[n]=await r.select({id:a.userId,name:a.name,email:a.email,organizations:a.organizations,token:a.token}).from(a).where(f(p(a.platform,e),p(a.platformUserId,t)));return n&&{id:n.id,name:n.name,email:n.email,...n.organizations?{organizations:n.organizations}:{},...n.token?{token:n.token}:{}}}}}export{M as createAuth};
@@ -1 +0,0 @@
1
- import{s as e}from"./cli-DtTdpTy3.js";const t=e(`auth`,{login:async()=>(await import(`./login-p2VknR9f.js`)).commandLogin,logout:async()=>(await import(`./logout-B7mHWeWr.js`)).commandLogout,status:async()=>(await import(`./status-BO1jm6NW.js`)).commandStatus},{menu:[{usage:`login`,blurb:`sign in through the browser`},{usage:`logout`,blurb:`sign out and forget the saved session`},{usage:`status`,blurb:`show where you are signed in`}],description:[`Sign in to Coder and manage saved server sessions.`],exampleCommand:`auth login`});export{t as commandAuth};
@@ -1 +0,0 @@
1
- import{t as e}from"./rolldown-runtime-DT7IzrpZ.js";import t from"node:path";import n from"node:fs";import{randomUUID as r}from"node:crypto";var i=e({LocalChatState:()=>a,appChatState:()=>l}),a=class{file;now;memory=new Map;constructor(e,t=Date.now){this.file=e,this.now=t}change(e){let r=this.now(),i=this.load(r),a=e(i,r);if(this.file){n.mkdirSync(t.dirname(this.file),{recursive:!0});let e=`${this.file}.${process.pid}.tmp`;n.writeFileSync(e,JSON.stringify(Object.fromEntries(i)),{mode:384}),n.renameSync(e,this.file)}return a}load(e){let t=this.memory;if(this.file)try{t=new Map(Object.entries(JSON.parse(n.readFileSync(this.file,`utf8`))))}catch(e){if(e.code!==`ENOENT`)throw e;t=new Map}for(let[n,r]of t)r.expiresAt!==void 0&&r.expiresAt<=e&&t.delete(n);return t}read(e){return this.load(this.now()).get(e)?.value}async connect(){}async disconnect(){}async get(e){return this.read(`k:${e}`)??null}async set(e,t,n){this.change((r,i)=>r.set(`k:${e}`,o(t,i,n)))}async setIfNotExists(e,t,n){return this.change((r,i)=>!r.has(`k:${e}`)&&(r.set(`k:${e}`,o(t,i,n)),!0))}async delete(e){this.change(t=>t.delete(`k:${e}`))}async appendToList(e,t,n={}){this.change((r,i)=>{let a=[...s(r.get(`k:${e}`)?.value),t],c=n.maxLength?a.slice(-n.maxLength):a;r.set(`k:${e}`,o(c,i,n.ttlMs))})}async getList(e){return s(this.read(`k:${e}`))}async acquireLock(e,t){return this.change((n,i)=>{if(n.has(`l:${e}`))return null;let a={threadId:e,token:r(),expiresAt:i+t};return n.set(`l:${e}`,{value:a.token,expiresAt:a.expiresAt}),a})}async extendLock(e,t){return this.change((n,r)=>n.get(`l:${e.threadId}`)?.value===e.token&&(n.set(`l:${e.threadId}`,{value:e.token,expiresAt:r+t}),!0))}async releaseLock(e){this.change(t=>{t.get(`l:${e.threadId}`)?.value===e.token&&t.delete(`l:${e.threadId}`)})}async forceReleaseLock(e){this.change(t=>t.delete(`l:${e}`))}async enqueue(e,t,n){return this.change((r,i)=>{let a=[...c(r.get(`q:${e}`)?.value,i),t].slice(-n);return r.set(`q:${e}`,{value:a,expiresAt:Math.max(...a.map(e=>e.expiresAt))}),a.length})}async dequeue(e){return this.change((t,n)=>{let r=t.get(`q:${e}`),[i,...a]=c(r?.value,n);return a.length?t.set(`q:${e}`,{...r,value:a}):t.delete(`q:${e}`),i??null})}async queueDepth(e){return c(this.read(`q:${e}`),this.now()).length}async subscribe(e){this.change(t=>t.set(`s:${e}`,{value:!0}))}async unsubscribe(e){this.change(t=>t.delete(`s:${e}`))}async isSubscribed(e){return this.read(`s:${e}`)===!0}};const o=(e,t,n)=>n?{value:e,expiresAt:t+n}:{value:e},s=e=>Array.isArray(e)?e:[],c=(e,t)=>s(e).filter(e=>e.expiresAt>t);function l(e,t){let n=`${encodeURIComponent(t)}/`,r=e=>n+e,i=e=>({...e,threadId:r(e.threadId)}),a=e=>e&&{...e,threadId:e.threadId.slice(n.length)};return{connect:()=>e.connect(),disconnect:()=>e.disconnect(),get:t=>e.get(r(t)),set:(t,n,i)=>e.set(r(t),n,i),setIfNotExists:(t,n,i)=>e.setIfNotExists(r(t),n,i),delete:t=>e.delete(r(t)),appendToList:(t,n,i)=>e.appendToList(r(t),n,i),getList:t=>e.getList(r(t)),acquireLock:async(t,n)=>a(await e.acquireLock(r(t),n)),extendLock:(t,n)=>e.extendLock(i(t),n),releaseLock:t=>e.releaseLock(i(t)),forceReleaseLock:t=>e.forceReleaseLock(r(t)),enqueue:(t,n,i)=>e.enqueue(r(t),n,i),dequeue:t=>e.dequeue(r(t)),queueDepth:t=>e.queueDepth(r(t)),subscribe:t=>e.subscribe(r(t)),unsubscribe:t=>e.unsubscribe(r(t)),isSubscribed:t=>e.isSubscribed(r(t))}}export{l as n,i as r,a as t};
@@ -1,13 +0,0 @@
1
- import{i as e,r as t}from"./schema-DoNO0dPh.js";import{i as n}from"./client-31YzOj-i.js";import{randomUUID as r}from"node:crypto";import{and as i,eq as a,gt as o,isNull as s,lte as c,or as l,sql as u}from"drizzle-orm";var d=class{db;now;constructor(e,t=Date.now){this.db=e,this.now=t}at(e){return e?new Date(this.now()+e):null}stamp(e){return e===void 0?null:new Date(this.now()+e).toISOString()}async rows(e){let t=await this.db.execute(e);return Array.isArray(t)?t:t.rows}live(){return l(s(e.expiresAt),o(e.expiresAt,new Date(this.now())))}expired(){return c(e.expiresAt,new Date(this.now()))}async read(t){let[r]=await n(this.db,()=>this.db.select({value:u`${e.value}`}).from(e).where(i(a(e.key,t),this.live())));return r?.value}async claim(t,n,r){return(await this.db.insert(e).values({key:t,value:n,expiresAt:r}).onConflictDoUpdate({target:e.key,set:{value:n,expiresAt:r},setWhere:this.expired()}).returning({key:e.key})).length>0}async connect(){}async disconnect(){}async get(e){return await this.read(`k:${e}`)??null}async set(t,n,r){let i={value:n,expiresAt:this.at(r)};await this.db.insert(e).values({key:`k:${t}`,...i}).onConflictDoUpdate({target:e.key,set:i})}setIfNotExists(e,t,n){return this.claim(`k:${e}`,t,this.at(n))}async delete(n){await this.db.execute(u`with items as (delete from ${t} where key = ${`k:${n}`}) delete from ${e} where key = ${`k:${n}`}`)}async appendToList(e,n,r={}){let i=`k:${e}`,a=r.maxLength?u`or seq <= coalesce((select seq from ${t} where key = ${i} order by seq desc offset ${r.maxLength-1} limit 1), -1)`:u``;await this.db.execute(u`
2
- with added as (insert into ${t} (key, value, expires_at) values (${i}, ${JSON.stringify(n)}::jsonb, ${this.stamp(r.ttlMs)}::timestamptz))
3
- delete from ${t} where key = ${i} and ((select expires_at from ${t} where key = ${i} order by seq desc limit 1) <= ${this.stamp(0)}::timestamptz ${a})`)}async getList(e){let r=`k:${e}`;return(await n(this.db,()=>this.rows(u`
4
- with newest as (select expires_at from ${t} where key = ${r} order by seq desc limit 1)
5
- select value from ${t}, newest where key = ${r} and (newest.expires_at is null or newest.expires_at > ${this.stamp(0)}::timestamptz) order by seq`))).map(e=>e.value)}async acquireLock(e,t){let n={threadId:e,token:r(),expiresAt:this.now()+t};return await this.claim(`l:${e}`,n.token,new Date(n.expiresAt))?n:null}async extendLock(t,n){return(await this.db.update(e).set({expiresAt:this.at(n)}).where(i(a(e.key,`l:${t.threadId}`),a(e.value,t.token),this.live())).returning({key:e.key})).length>0}async releaseLock(t){await this.db.delete(e).where(i(a(e.key,`l:${t.threadId}`),a(e.value,t.token)))}async forceReleaseLock(t){await this.db.delete(e).where(a(e.key,`l:${t}`))}async enqueue(e,n,r){let i=`q:${e}`,a=this.stamp(0),[o]=await this.rows(u`
6
- with added as (insert into ${t} (key, value, expires_at) values (${i}, ${JSON.stringify(n)}::jsonb, ${new Date(n.expiresAt).toISOString()}::timestamptz)),
7
- dropped as (delete from ${t} where key = ${i} and (expires_at <= ${a}::timestamptz
8
- or seq <= coalesce((select seq from ${t} where key = ${i} and expires_at > ${a}::timestamptz order by seq desc offset ${r-1} limit 1), -1)))
9
- select least((select count(*) from ${t} where key = ${i} and expires_at > ${a}::timestamptz) + 1, ${r})::int as depth`);return Number(o?.depth??0)}async dequeue(e){let n=`q:${e}`,r=this.stamp(0);return(await this.rows(u`
10
- delete from ${t} where key = ${n} and (expires_at <= ${r}::timestamptz
11
- or seq = (select seq from ${t} where key = ${n} and expires_at > ${r}::timestamptz order by seq limit 1 for update skip locked))
12
- returning value, expires_at > ${r}::timestamptz as live`)).find(e=>e.live)?.value??null}async queueDepth(e){let[r]=await n(this.db,()=>this.rows(u`
13
- select count(*)::int as depth from ${t} where key = ${`q:${e}`} and expires_at > ${this.stamp(0)}::timestamptz`));return Number(r?.depth??0)}async subscribe(t){let n={value:!0,expiresAt:null};await this.db.insert(e).values({key:`s:${t}`,...n}).onConflictDoUpdate({target:e.key,set:n})}async unsubscribe(t){await this.db.delete(e).where(a(e.key,`s:${t}`))}async isSubscribed(e){return await this.read(`s:${e}`)===!0}};export{d as PgChatState};