bazilion 0.13.0 → 0.14.1

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 (166) hide show
  1. package/README.md +16 -5
  2. package/dist/cli.js +285 -86
  3. package/dist/cli.js.map +1 -1
  4. package/dist/daemon.js +539 -81
  5. package/dist/daemon.js.map +1 -1
  6. package/dist/web/client/assets/AgentTabs-BcmmwYJc.js +1 -0
  7. package/dist/web/client/assets/ConfigPage-BCLp-FUC.js +1 -0
  8. package/dist/web/client/assets/ConfirmDialog-BAiyYC8w.js +1 -0
  9. package/dist/web/client/assets/FieldRow-DsWhqiIQ.js +1 -0
  10. package/dist/web/client/assets/Page-NV96O47A.js +1 -0
  11. package/dist/web/client/assets/ProductionTeamPolicyEditor-CHBKZMpY.js +7 -0
  12. package/dist/web/client/assets/{ProfileCommunicationEditor-BcSf2Hao.js → ProfileCommunicationEditor-DZ8yTQvV.js} +1 -1
  13. package/dist/web/client/assets/SectionTabs-4kCQXuFY.js +1 -0
  14. package/dist/web/client/assets/TeamTabs-BfC1pfQe.js +1 -0
  15. package/dist/web/client/assets/{TemplatesTabs-CyDVzrOl.js → TemplatesTabs-BwsLjN0Q.js} +1 -1
  16. package/dist/web/client/assets/UnsavedChangesGuard-C7U9rsPw.js +1 -0
  17. package/dist/web/client/assets/{_id-DWTMH7Eb.js → _id-CG9YM1tY.js} +1 -1
  18. package/dist/web/client/assets/_id-DfzTSFBA.js +1 -0
  19. package/dist/web/client/assets/_id-DtHL-U-0.js +1 -0
  20. package/dist/web/client/assets/_id-J0kM-98d.js +1 -0
  21. package/dist/web/client/assets/activity-CBQGMwWo.js +1 -0
  22. package/dist/web/client/assets/agents-BWGBjF2Y.js +1 -0
  23. package/dist/web/client/assets/agents-DTY5RXgO.js +1 -0
  24. package/dist/web/client/assets/approvals-DwMk9S4Z.js +1 -0
  25. package/dist/web/client/assets/attention-7qYFtwOW.js +1 -0
  26. package/dist/web/client/assets/chevron-right-DK703skW.js +1 -0
  27. package/dist/web/client/assets/config-D59MT3Y5.js +3 -0
  28. package/dist/web/client/assets/{inbox-D2NypLee.js → inbox-CpKuNfOj.js} +1 -1
  29. package/dist/web/client/assets/index-BVfpuiby.js +52 -0
  30. package/dist/web/client/assets/learning-631_q6a9.js +1 -0
  31. package/dist/web/client/assets/login-JjfTCGIb.js +1 -0
  32. package/dist/web/client/assets/mcp-DHgUOUPG.js +1 -0
  33. package/dist/web/client/assets/members-CLCUdo-h.js +1 -0
  34. package/dist/web/client/assets/memory-paAiM6ix.js +1 -0
  35. package/dist/web/client/assets/{policy-CHM95pMU.js → policy-Fy_Wnq6p.js} +1 -1
  36. package/dist/web/client/assets/{preload-helper-mNuBjNXU.js → preload-helper-bztXdkDj.js} +1 -1
  37. package/dist/web/client/assets/routes-DciiC6QA.js +1 -0
  38. package/dist/web/client/assets/services-i_RmJYAO.js +1 -0
  39. package/dist/web/client/assets/skills-BX42OGpp.js +1 -0
  40. package/dist/web/client/assets/styles-B5vcgXln.css +2 -0
  41. package/dist/web/client/assets/{teams-Dm_huGxn.js → teams-4ySkP31k.js} +1 -1
  42. package/dist/web/client/assets/teams-D6nIPyC0.js +1 -0
  43. package/dist/web/client/assets/telegram-CphoIRWP.js +1 -0
  44. package/dist/web/client/assets/tokens-2j3NQudt.js +1 -0
  45. package/dist/web/client/assets/triggers-sDA075Nu.js +1 -0
  46. package/dist/web/client/assets/utils-B6KiDbIe.js +1 -0
  47. package/dist/web/client/assets/welcome-Do427w4M.js +1 -0
  48. package/dist/web/client/assets/wire-constants-B7b2CQp1.js +74 -0
  49. package/dist/web/client/assets/x-CbAF-3_T.js +1 -0
  50. package/dist/web/server/assets/{AgentTabs-aXdsiiMp.js → AgentTabs-Dq8hDM2Q.js} +9 -2
  51. package/dist/web/server/assets/{ChatPane-Ba5wTsVk.js → ChatPane-CgSe7tsy.js} +81 -43
  52. package/dist/web/server/assets/{ConfigPage-BKlh5vOU.js → ConfigPage-CiQ-gxmJ.js} +3 -2
  53. package/dist/web/server/assets/ConfirmDialog-C-MPYYSU.js +99 -0
  54. package/dist/web/server/assets/FieldRow-DCOF07kl.js +160 -0
  55. package/dist/web/server/assets/{Page-LENulSXY.js → Page-Bz-ydB8j.js} +4 -10
  56. package/dist/web/server/assets/{ProductionTeamPolicyEditor-Y4mzFFvR.js → ProductionTeamPolicyEditor-DQSdP7Yx.js} +140 -123
  57. package/dist/web/server/assets/{SectionTabs-BJTPr5nU.js → SectionTabs-B2Yw81XN.js} +2 -2
  58. package/dist/web/server/assets/{Sidebar-DsRVCszF.js → Sidebar-DKyk7oIo.js} +563 -283
  59. package/dist/web/server/assets/{TeamTabs-zZzbP1t_.js → TeamTabs-Co3n2exj.js} +2 -6
  60. package/dist/web/server/assets/{TemplatesTabs-CcRxZhJe.js → TemplatesTabs-B0fA361R.js} +1 -1
  61. package/dist/web/server/assets/UnsavedChangesGuard-CiStXyBI.js +40 -0
  62. package/dist/web/server/assets/{_id-xTD_6ApX.js → _id-BAA9KJBU.js} +1 -1
  63. package/dist/web/server/assets/{_id-BQ2zoMiR.js → _id-BM5m2FLT.js} +4 -4
  64. package/dist/web/server/assets/{_id-BENqNBfK.js → _id-BYKpT2Tu.js} +1 -2
  65. package/dist/web/server/assets/{_id-BreRHYV2.js → _id-BeKhPKw3.js} +350 -185
  66. package/dist/web/server/assets/{_id-CPIXIqyO.js → _id-BqWTB8Wl.js} +188 -86
  67. package/dist/web/server/assets/{_id-DkrNqqTw.js → _id-BwvCtzlD.js} +1 -1
  68. package/dist/web/server/assets/{_id-BZWunvy7.js → _id-DYU6uIBx.js} +0 -1
  69. package/dist/web/server/assets/{_id-BFELaMIN.js → _id-ndxFHx0t.js} +75 -71
  70. package/dist/web/server/assets/{_id-CvYqVJPU.js → _id-sNu5aXZt.js} +2 -1
  71. package/dist/web/server/assets/{_tanstack-start-manifest_v-COkJjXt_.js → _tanstack-start-manifest_v-DR7wyKcH.js} +113 -90
  72. package/dist/web/server/assets/{activity-B6N1T_5N.js → activity-BWv1goK6.js} +3 -3
  73. package/dist/web/server/assets/{activity-BazZNfvf.js → activity-LjpblbDL.js} +1 -1
  74. package/dist/web/server/assets/{agents-BpSeOA30.js → agents-BDFGrU3o.js} +1 -1
  75. package/dist/web/server/assets/{agents-DY630p6x.js → agents-CJk4pxKu.js} +1 -1
  76. package/dist/web/server/assets/{agents-wSYNPuyK.js → agents-CYw1xHoY.js} +138 -16
  77. package/dist/web/server/assets/{agents-DfoLnTyD.js → agents-DfNKc_Q7.js} +52 -8
  78. package/dist/web/server/assets/{approvals-BkUGmYU9.js → approvals-7JOoBchn.js} +1 -1
  79. package/dist/web/server/assets/{approvals-BYajNOdE.js → approvals-Bz123liE.js} +59 -21
  80. package/dist/web/server/assets/{attention-Bw_wiiqI.js → attention-B35JvhOL.js} +1 -1
  81. package/dist/web/server/assets/{attention-Z3bGuxOD.js → attention-C1pPWSXw.js} +3 -3
  82. package/dist/web/server/assets/{config-wYtIhkRm.js → config-DQ8n0AwF.js} +1 -1
  83. package/dist/web/server/assets/config-XSTLuRaT.js +980 -0
  84. package/dist/web/server/assets/{inbox-DTTfSuGU.js → inbox-RweGCV3D.js} +3 -3
  85. package/dist/web/server/assets/{inbox-0iiSg-Y1.js → inbox-cu3jLzNP.js} +1 -1
  86. package/dist/web/server/assets/{learning-DpyLNVe8.js → learning-BaKM6qaw.js} +1 -1
  87. package/dist/web/server/assets/{learning-fG8316uc.js → learning-CbtNlqYo.js} +76 -23
  88. package/dist/web/server/assets/{login-D_GDeTrB.js → login-BNj3U6ok.js} +21 -11
  89. package/dist/web/server/assets/{login-CrFVVUaE.js → login-Be8eP4Jp.js} +2 -2
  90. package/dist/web/server/assets/{mcp-BQtp2T87.js → mcp-B0goWO8Q.js} +1 -1
  91. package/dist/web/server/assets/mcp-CiBs8unU.js +332 -0
  92. package/dist/web/server/assets/members-DHYTVgwb.js +100 -0
  93. package/dist/web/server/assets/{members-DXu2oAS_.js → members-DiYtr-zm.js} +1 -1
  94. package/dist/web/server/assets/{memory-C6fX_FKI.js → memory-CkXUgf5s.js} +150 -48
  95. package/dist/web/server/assets/{memory-Iq2M0-Yc.js → memory-DTFEmfF3.js} +1 -1
  96. package/dist/web/server/assets/{policy-D7kj3Cy7.js → policy-BddK4xom.js} +1 -1
  97. package/dist/web/server/assets/{policy-Bg6u-rTq.js → policy-Bvvav8fh.js} +4 -4
  98. package/dist/web/server/assets/{router-D-6TzLRZ.js → router-M0lutIDA.js} +347 -173
  99. package/dist/web/server/assets/{routes-CiPfEldd.js → routes-BgHisAxH.js} +22 -5
  100. package/dist/web/server/assets/{routes-CNRzy79H.js → routes-COtkyZG1.js} +1 -1
  101. package/dist/web/server/assets/{routes-D933ngZS.js → routes-DAU2g7Uz.js} +1 -1
  102. package/dist/web/server/assets/services-ClyGBU7W.js +83 -0
  103. package/dist/web/server/assets/{services-OB4LAr2A.js → services-DgoU1udp.js} +1 -1
  104. package/dist/web/server/assets/{skills-Babb9jsQ.js → skills-CYih9TJw.js} +47 -6
  105. package/dist/web/server/assets/{skills-D5DQL8bM.js → skills-Dw3cI3si.js} +1 -1
  106. package/dist/web/server/assets/{start-uKQNK6if.js → start-D4Wq9iTa.js} +1 -1
  107. package/dist/web/server/assets/{teams-Dz6ZEMRo.js → teams-BJuoNOTB.js} +1 -1
  108. package/dist/web/server/assets/{teams-Bk6ZT0MD.js → teams-DF3RViAg.js} +3 -3
  109. package/dist/web/server/assets/{teams-DqC4wZxu.js → teams-DFnuc660.js} +1 -1
  110. package/dist/web/server/assets/{teams-Cc2Czynq.js → teams-TV6nbEN_.js} +101 -10
  111. package/dist/web/server/assets/{telegram-J4T0XhwQ.js → telegram-DbOFpTFm.js} +1 -1
  112. package/dist/web/server/assets/{telegram-DUbDIVGX.js → telegram-Dj4Wwhd6.js} +147 -47
  113. package/dist/web/server/assets/{tokens-CJM_0NDa.js → tokens-DDwtO15P.js} +88 -19
  114. package/dist/web/server/assets/{tokens-DO5BzNOn.js → tokens-_2hptHP6.js} +1 -1
  115. package/dist/web/server/assets/{triggers-BdBx-HwR.js → triggers-BvjYNmmY.js} +1 -1
  116. package/dist/web/server/assets/triggers-CHk9O3rU.js +367 -0
  117. package/dist/web/server/assets/utils-C_uf36nf.js +8 -0
  118. package/dist/web/server/assets/{welcome-DDB11L5j.js → welcome-B8nchXdF.js} +9 -8
  119. package/dist/web/server/server.js +5 -9
  120. package/dist/worker.js +64 -19
  121. package/dist/worker.js.map +1 -1
  122. package/package.json +3 -3
  123. package/dist/web/client/assets/AgentTabs-R6gSjIj3.js +0 -1
  124. package/dist/web/client/assets/ConfigPage-BCwfgyjD.js +0 -1
  125. package/dist/web/client/assets/FieldRow-avAFLgYW.js +0 -1
  126. package/dist/web/client/assets/Page-CwNuDhWz.js +0 -1
  127. package/dist/web/client/assets/ProductionTeamPolicyEditor-DdpYInwV.js +0 -7
  128. package/dist/web/client/assets/SectionTabs-DZzy01az.js +0 -1
  129. package/dist/web/client/assets/TeamTabs-Bk89JfN7.js +0 -1
  130. package/dist/web/client/assets/_id-CAJTTnee.js +0 -1
  131. package/dist/web/client/assets/_id-CN6jPaBu.js +0 -1
  132. package/dist/web/client/assets/_id-DGwJqqDc.js +0 -1
  133. package/dist/web/client/assets/activity-DK_M0-bn.js +0 -1
  134. package/dist/web/client/assets/agents-B-i5pASm.js +0 -1
  135. package/dist/web/client/assets/agents-n8U7qNxw.js +0 -1
  136. package/dist/web/client/assets/approvals-CmVxCy0Z.js +0 -1
  137. package/dist/web/client/assets/attention-F0lUQCWE.js +0 -1
  138. package/dist/web/client/assets/chevron-down-OndG7r1U.js +0 -1
  139. package/dist/web/client/assets/config-DuApZ9xS.js +0 -3
  140. package/dist/web/client/assets/context-C1sMnW6K.js +0 -1
  141. package/dist/web/client/assets/index-B3vdrEEg.js +0 -12
  142. package/dist/web/client/assets/learning-zYDCfVxT.js +0 -1
  143. package/dist/web/client/assets/login-B1Un51Zx.js +0 -1
  144. package/dist/web/client/assets/mcp-DSVmJBdv.js +0 -1
  145. package/dist/web/client/assets/members-Pl7hXJcN.js +0 -1
  146. package/dist/web/client/assets/memory-Co3BEaAq.js +0 -1
  147. package/dist/web/client/assets/plus-Dor-_wmL.js +0 -1
  148. package/dist/web/client/assets/routes-D29qjwG0.js +0 -1
  149. package/dist/web/client/assets/services-CCQ_6YWQ.js +0 -1
  150. package/dist/web/client/assets/skills-3xAIvzvP.js +0 -1
  151. package/dist/web/client/assets/styles-D6RPN7RK.css +0 -2
  152. package/dist/web/client/assets/teams-UGLyjHYj.js +0 -1
  153. package/dist/web/client/assets/telegram-3KvrJVO6.js +0 -1
  154. package/dist/web/client/assets/tokens-DUSFmV5_.js +0 -1
  155. package/dist/web/client/assets/triggers-DlQ2KF1h.js +0 -1
  156. package/dist/web/client/assets/welcome-DkP8qzK1.js +0 -1
  157. package/dist/web/client/assets/wire-constants-BhVKOCQa.js +0 -74
  158. package/dist/web/server/assets/FieldRow-B4eTegH9.js +0 -94
  159. package/dist/web/server/assets/config-DGzM28F_.js +0 -554
  160. package/dist/web/server/assets/context-BkDDwbby.js +0 -12
  161. package/dist/web/server/assets/context-DMc0KyHh.js +0 -12
  162. package/dist/web/server/assets/context-poimKI7w.js +0 -47
  163. package/dist/web/server/assets/mcp-DlgXUcAS.js +0 -261
  164. package/dist/web/server/assets/members-CteHKPSF.js +0 -46
  165. package/dist/web/server/assets/services-DJRA1A0-.js +0 -79
  166. package/dist/web/server/assets/triggers-B87fycBl.js +0 -216
@@ -1,554 +0,0 @@
1
- import { t as Route } from "./config-wYtIhkRm.js";
2
- import { t as ConfigPage } from "./ConfigPage-BKlh5vOU.js";
3
- import { t as FieldRow } from "./FieldRow-B4eTegH9.js";
4
- import { useState } from "react";
5
- import { useRouter } from "@tanstack/react-router";
6
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
- //#region src/components/ExecutionSecurityCard.tsx
8
- function ExecutionSecurityCard({ status }) {
9
- const configured = status.configuredOperatorHttp;
10
- const protectedTurns = status.protectedUnattendedTurns;
11
- return /* @__PURE__ */ jsxs("section", {
12
- className: "overflow-hidden rounded-lg border bg-card",
13
- children: [/* @__PURE__ */ jsxs("header", {
14
- className: "border-b px-4 py-3",
15
- children: [/* @__PURE__ */ jsx("h2", {
16
- className: "font-semibold",
17
- children: "Execution security"
18
- }), /* @__PURE__ */ jsx("p", {
19
- className: "mt-1 text-xs text-muted-foreground",
20
- children: "Operator HTTP requests keep their configured compatibility behavior. Unattended sources use a separate mandatory protected baseline."
21
- })]
22
- }), /* @__PURE__ */ jsxs("div", {
23
- className: "grid gap-4 p-4 lg:grid-cols-2",
24
- children: [/* @__PURE__ */ jsxs("section", {
25
- className: "rounded-md border bg-muted/20 p-3",
26
- children: [
27
- /* @__PURE__ */ jsxs("div", {
28
- className: "mb-3 flex flex-wrap items-center justify-between gap-2",
29
- children: [/* @__PURE__ */ jsx("h3", {
30
- className: "font-semibold",
31
- children: "Configured operator HTTP"
32
- }), /* @__PURE__ */ jsx(StatusBadge, {
33
- ok: false,
34
- children: "legacy · unprotected"
35
- })]
36
- }),
37
- /* @__PURE__ */ jsxs("dl", {
38
- className: "space-y-2 text-sm",
39
- children: [
40
- /* @__PURE__ */ jsx(StatusRow, {
41
- label: "Coding surface",
42
- value: codingSurfaceLabel(configured.codingSurface)
43
- }),
44
- /* @__PURE__ */ jsx(StatusRow, {
45
- label: "Docker image",
46
- value: configured.dockerImage,
47
- mono: true
48
- }),
49
- /* @__PURE__ */ jsx(StatusRow, {
50
- label: "Browser",
51
- value: configured.browser
52
- }),
53
- /* @__PURE__ */ jsx(StatusRow, {
54
- label: "MCP",
55
- value: configured.mcp
56
- })
57
- ]
58
- }),
59
- /* @__PURE__ */ jsx("p", {
60
- className: "mt-3 text-xs text-muted-foreground",
61
- children: "This compatibility branch is for operator requests; Telegram and unattended delivery never select it."
62
- })
63
- ]
64
- }), /* @__PURE__ */ jsxs("section", {
65
- className: `rounded-md border p-3 ${protectedTurns.baseRuntimeReady ? "border-success/25 bg-success/5" : "border-warning/25 bg-warning/10"}`,
66
- children: [
67
- /* @__PURE__ */ jsxs("div", {
68
- className: "mb-3 flex flex-wrap items-center justify-between gap-2",
69
- children: [/* @__PURE__ */ jsx("h3", {
70
- className: "font-semibold",
71
- children: "Protected unattended turns"
72
- }), /* @__PURE__ */ jsx(StatusBadge, {
73
- ok: protectedTurns.baseRuntimeReady,
74
- children: protectedTurns.baseRuntimeReady ? "base runtime ready" : "base runtime unavailable"
75
- })]
76
- }),
77
- /* @__PURE__ */ jsx("p", {
78
- className: "mb-3 text-xs text-muted-foreground",
79
- children: "Telegram, schedules, inbox wake-ups, and approval delivery cannot select the legacy surface."
80
- }),
81
- /* @__PURE__ */ jsxs("dl", {
82
- className: "space-y-2 text-sm",
83
- children: [
84
- /* @__PURE__ */ jsx(StatusRow, {
85
- label: "Coding surface",
86
- value: "Docker only"
87
- }),
88
- /* @__PURE__ */ jsx(StatusRow, {
89
- label: "Docker",
90
- value: protectedTurns.docker.ready ? "ready" : "unavailable",
91
- ok: protectedTurns.docker.ready
92
- }),
93
- /* @__PURE__ */ jsx(StatusRow, {
94
- label: "Docker image",
95
- value: protectedTurns.docker.image,
96
- mono: true
97
- }),
98
- protectedTurns.docker.reason && /* @__PURE__ */ jsx(StatusRow, {
99
- label: "Docker reason",
100
- value: protectedTurns.docker.reason
101
- }),
102
- /* @__PURE__ */ jsx(StatusRow, {
103
- label: "OpenAI Codex enabled",
104
- value: yesNo(protectedTurns.openaiCodex.enabled),
105
- ok: protectedTurns.openaiCodex.enabled
106
- }),
107
- /* @__PURE__ */ jsx(StatusRow, {
108
- label: "ChatGPT connected",
109
- value: yesNo(protectedTurns.openaiCodex.connected),
110
- ok: protectedTurns.openaiCodex.connected
111
- }),
112
- /* @__PURE__ */ jsx(StatusRow, {
113
- label: "OpenAI access",
114
- value: openAIAccessLabel(protectedTurns.openaiCodex),
115
- ok: protectedTurns.openaiCodex.accessCurrent || protectedTurns.openaiCodex.refreshOnNextTurn
116
- }),
117
- /* @__PURE__ */ jsx(StatusRow, {
118
- label: "OpenAI Codex baseline eligible",
119
- value: yesNo(protectedTurns.openaiCodex.baselineEligible),
120
- ok: protectedTurns.openaiCodex.baselineEligible
121
- }),
122
- /* @__PURE__ */ jsx(StatusRow, {
123
- label: "Browser",
124
- value: protectedTurns.browser,
125
- ok: true
126
- }),
127
- /* @__PURE__ */ jsx(StatusRow, {
128
- label: "MCP",
129
- value: protectedTurns.mcp,
130
- ok: true
131
- })
132
- ]
133
- }),
134
- protectedTurns.remediation && /* @__PURE__ */ jsxs("p", {
135
- className: "mt-3 rounded-md border border-warning/25 bg-background/60 px-3 py-2 text-xs text-warning",
136
- children: [
137
- /* @__PURE__ */ jsx("strong", { children: "Remediation:" }),
138
- " ",
139
- protectedTurns.remediation
140
- ]
141
- }),
142
- /* @__PURE__ */ jsx("p", {
143
- className: "mt-3 text-xs text-muted-foreground",
144
- children: "Every turn separately validates its selected normal/review model, bound OAuth refresh, and Team/input/memory/skill mounts and paths before execution."
145
- })
146
- ]
147
- })]
148
- })]
149
- });
150
- }
151
- function StatusBadge({ ok, children }) {
152
- return /* @__PURE__ */ jsx("span", {
153
- className: `rounded-full px-2 py-0.5 text-xs font-semibold uppercase ${ok ? "bg-success/10 text-success" : "bg-warning/10 text-warning"}`,
154
- children
155
- });
156
- }
157
- function StatusRow({ label, value, ok, mono = false }) {
158
- return /* @__PURE__ */ jsxs("div", {
159
- className: "flex items-start justify-between gap-3",
160
- children: [/* @__PURE__ */ jsx("dt", {
161
- className: "text-muted-foreground",
162
- children: label
163
- }), /* @__PURE__ */ jsx("dd", {
164
- className: `${mono ? "font-mono" : "font-medium"} text-right ${ok === void 0 ? "" : ok ? "text-success" : "text-warning"}`,
165
- children: value
166
- })]
167
- });
168
- }
169
- function codingSurfaceLabel(surface) {
170
- if (surface === "host") return "Host tools";
171
- if (surface === "docker") return "Docker only";
172
- return "Unavailable";
173
- }
174
- function yesNo(value) {
175
- return value ? "yes" : "no";
176
- }
177
- function openAIAccessLabel(status) {
178
- if (status.accessCurrent) return "current";
179
- if (status.refreshOnNextTurn) return "refresh on next turn";
180
- return "unavailable";
181
- }
182
- //#endregion
183
- //#region src/routes/config/index.tsx?tsr-split=component
184
- function ProvidersPage() {
185
- const { providers, openaiCodex, executionSecurity } = Route.useLoaderData();
186
- const setupComplete = providers.some((p) => p.enabled && p.curated.length > 0);
187
- return /* @__PURE__ */ jsxs(ConfigPage, {
188
- active: "providers",
189
- title: "Providers",
190
- description: /* @__PURE__ */ jsx(Fragment, { children: "Configure credentials, endpoints, and the curated model lists used by agent templates and running agents. Secrets are encrypted; URLs and IDs remain inspectable configuration." }),
191
- children: [
192
- /* @__PURE__ */ jsx(ExecutionSecurityCard, { status: executionSecurity }),
193
- !setupComplete && /* @__PURE__ */ jsx(SetupBlockerBanner, {
194
- providers,
195
- openaiCodex
196
- }),
197
- /* @__PURE__ */ jsx("div", {
198
- className: "space-y-3",
199
- children: providers.map((p) => /* @__PURE__ */ jsx(ProviderCard, {
200
- p,
201
- openaiCodexStatus: p.id === "openai-codex" ? openaiCodex : void 0
202
- }, p.id))
203
- })
204
- ]
205
- });
206
- }
207
- function SetupBlockerBanner({ providers, openaiCodex }) {
208
- const issues = [];
209
- for (const p of providers) {
210
- if (!p.enabled) continue;
211
- if (p.id === "openai-codex" && !openaiCodex.connected) issues.push(`${p.id}: enabled but ChatGPT is not connected — click "Connect ChatGPT" below`);
212
- if (p.curated.length === 0) issues.push(`${p.id}: enabled but no curated models — add at least one name in the "curated models" box below and save`);
213
- }
214
- const enabledCount = providers.filter((p) => p.enabled).length;
215
- return /* @__PURE__ */ jsxs("div", {
216
- className: "rounded-md border-2 border-warning/25 bg-warning/10 px-4 py-3 text-sm",
217
- children: [
218
- /* @__PURE__ */ jsx("div", {
219
- className: "font-semibold text-warning mb-1",
220
- children: "First-run setup is not complete"
221
- }),
222
- /* @__PURE__ */ jsxs("p", {
223
- className: "text-warning mb-2",
224
- children: [
225
- "The rest of the app stays on the Welcome screen until at least one provider is",
226
- " ",
227
- /* @__PURE__ */ jsx("strong", { children: "enabled" }),
228
- " and has ",
229
- /* @__PURE__ */ jsx("strong", { children: "at least one curated model" }),
230
- ". Use a catalog chip when one is available, or paste the exact model id from your local/server provider."
231
- ]
232
- }),
233
- issues.length > 0 ? /* @__PURE__ */ jsx("ul", {
234
- className: "list-disc pl-5 text-warning space-y-0.5",
235
- children: issues.map((i) => /* @__PURE__ */ jsx("li", { children: i }, i))
236
- }) : enabledCount === 0 ? /* @__PURE__ */ jsx("p", {
237
- className: "text-warning",
238
- children: "No providers are enabled yet — pick one below, flip the toggle on, set credentials, and save at least one model name."
239
- }) : null
240
- ]
241
- });
242
- }
243
- function ProviderCard({ p, openaiCodexStatus }) {
244
- const router = useRouter();
245
- const [enabled, setEnabled] = useState(p.enabled);
246
- const [models, setModels] = useState(p.curated.join("\n"));
247
- const [savingModels, setSavingModels] = useState(false);
248
- const [modelStatus, setModelStatus] = useState(null);
249
- async function toggle(next) {
250
- setEnabled(next);
251
- try {
252
- await fetch(`/api/config/providers/${encodeURIComponent(p.id)}/enabled`, {
253
- method: "PUT",
254
- headers: { "content-type": "application/json" },
255
- body: JSON.stringify({ enabled: next })
256
- });
257
- await router.invalidate();
258
- } catch {
259
- setEnabled(!next);
260
- }
261
- }
262
- async function saveModels(e) {
263
- e.preventDefault();
264
- setSavingModels(true);
265
- setModelStatus(null);
266
- try {
267
- const list = models.split(/\r?\n/).map((s) => s.trim()).filter(Boolean);
268
- const res = await fetch(`/api/config/providers/${encodeURIComponent(p.id)}/models`, {
269
- method: "PUT",
270
- headers: { "content-type": "application/json" },
271
- body: JSON.stringify({ models: list })
272
- });
273
- if (!res.ok) {
274
- const j = await res.json().catch(() => ({}));
275
- throw new Error(j.error ?? `${res.status} ${res.statusText}`);
276
- }
277
- setModelStatus("saved ✓");
278
- await router.invalidate();
279
- } catch (e) {
280
- setModelStatus(`error: ${e.message}`);
281
- } finally {
282
- setSavingModels(false);
283
- }
284
- }
285
- return /* @__PURE__ */ jsxs("section", {
286
- className: "overflow-hidden rounded-lg border bg-card",
287
- children: [/* @__PURE__ */ jsxs("header", {
288
- className: "flex flex-wrap items-center gap-3 px-4 py-3",
289
- children: [
290
- /* @__PURE__ */ jsx("span", {
291
- className: "font-mono font-semibold",
292
- children: p.id
293
- }),
294
- /* @__PURE__ */ jsxs("span", {
295
- className: "text-muted-foreground text-sm",
296
- children: ["· ", p.displayName]
297
- }),
298
- /* @__PURE__ */ jsxs("label", {
299
- className: "flex items-center gap-1.5 text-xs uppercase tracking-wide font-semibold cursor-pointer",
300
- children: [/* @__PURE__ */ jsx("input", {
301
- type: "checkbox",
302
- checked: enabled,
303
- onChange: (e) => toggle(e.target.checked),
304
- className: "size-4"
305
- }), /* @__PURE__ */ jsx("span", {
306
- className: enabled ? "text-success" : "text-muted-foreground",
307
- children: enabled ? "enabled" : "disabled"
308
- })]
309
- }),
310
- /* @__PURE__ */ jsxs("span", {
311
- className: "w-full text-xs text-muted-foreground sm:ml-auto sm:w-auto",
312
- children: [
313
- p.curated.length > 0 && /* @__PURE__ */ jsxs("span", { children: [p.curated.length, " curated"] }),
314
- p.catalog.length > 0 && /* @__PURE__ */ jsxs("span", { children: [
315
- " · ",
316
- p.catalog.length,
317
- " catalog"
318
- ] }),
319
- p.live && !p.live.error && /* @__PURE__ */ jsxs("span", { children: [
320
- " · ",
321
- p.live.models.length,
322
- " live"
323
- ] })
324
- ]
325
- })
326
- ]
327
- }), enabled && /* @__PURE__ */ jsxs("div", {
328
- className: "border-t border-dashed px-4 py-3",
329
- children: [
330
- p.hint && /* @__PURE__ */ jsx("p", {
331
- className: "text-xs text-muted-foreground mb-2",
332
- children: p.hint
333
- }),
334
- p.id === "openai-codex" && openaiCodexStatus && /* @__PURE__ */ jsx(OpenAICodexCard, { status: openaiCodexStatus }),
335
- p.fields.length === 0 && p.envHint && p.id !== "openai-codex" && /* @__PURE__ */ jsxs("p", {
336
- className: "text-xs text-muted-foreground",
337
- children: ["Credentials come from the process env: ", /* @__PURE__ */ jsx("code", {
338
- className: "font-mono",
339
- children: p.envHint
340
- })]
341
- }),
342
- p.fields.map((f) => /* @__PURE__ */ jsx(FieldRow, { field: f }, f.envVar)),
343
- /* @__PURE__ */ jsx("h4", {
344
- className: "mt-4 mb-1 text-xs uppercase tracking-wide text-muted-foreground",
345
- children: "curated models (one per line)"
346
- }),
347
- p.curated.length === 0 && /* @__PURE__ */ jsxs("p", {
348
- className: "mb-2 text-xs font-medium text-warning",
349
- children: [
350
- "First-run setup needs at least one model name here — type one (e.g.",
351
- " ",
352
- /* @__PURE__ */ jsx("code", {
353
- className: "font-mono",
354
- children: exampleModelFor(p.id)
355
- }),
356
- ") and click",
357
- " ",
358
- /* @__PURE__ */ jsx("em", { children: "save models" }),
359
- ". Catalog chips below are the safest source when available."
360
- ]
361
- }),
362
- /* @__PURE__ */ jsxs("form", {
363
- onSubmit: saveModels,
364
- children: [/* @__PURE__ */ jsx("textarea", {
365
- value: models,
366
- onChange: (e) => setModels(e.target.value),
367
- rows: Math.max(3, Math.min(8, models.split("\n").length)),
368
- className: "w-full rounded-md border bg-background px-2 py-1.5 font-mono text-sm outline-none focus:ring-2 focus:ring-ring/30",
369
- placeholder: p.catalog.length === 0 && !p.live ? "Type model names one per line, e.g. qwen3-coder-30b" : "Click catalog chips below, or type names one per line"
370
- }), /* @__PURE__ */ jsxs("div", {
371
- className: "flex items-center gap-3 mt-2",
372
- children: [/* @__PURE__ */ jsx("button", {
373
- type: "submit",
374
- disabled: savingModels,
375
- className: "rounded-md bg-primary px-3 py-1.5 text-sm font-medium text-primary-foreground disabled:opacity-50",
376
- children: "save models"
377
- }), modelStatus && /* @__PURE__ */ jsx("span", {
378
- className: "text-xs text-muted-foreground",
379
- children: modelStatus
380
- })]
381
- })]
382
- }),
383
- p.catalog.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("h4", {
384
- className: "mt-4 mb-1 text-xs uppercase tracking-wide text-muted-foreground",
385
- children: "catalog"
386
- }), /* @__PURE__ */ jsx(ChipList, {
387
- items: p.catalog,
388
- onPick: (name) => setModels((m) => m.includes(name) ? m : `${m}\n${name}`.trim())
389
- })] }),
390
- p.live && !p.live.error && p.live.models.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("h4", {
391
- className: "mt-4 mb-1 text-xs uppercase tracking-wide text-muted-foreground",
392
- children: "live"
393
- }), /* @__PURE__ */ jsx(ChipList, {
394
- items: p.live.models,
395
- onPick: (name) => setModels((m) => m.includes(name) ? m : `${m}\n${name}`.trim())
396
- })] }),
397
- p.live?.error && /* @__PURE__ */ jsxs("p", {
398
- className: "text-xs text-danger mt-2",
399
- children: ["could not fetch: ", p.live.error]
400
- })
401
- ]
402
- })]
403
- });
404
- }
405
- function exampleModelFor(providerId) {
406
- switch (providerId) {
407
- case "openai-codex": return "gpt-5.6-luna";
408
- case "openai": return "gpt-5.6-luna";
409
- case "anthropic": return "claude-opus-5";
410
- case "google": return "gemini-3.6-flash";
411
- case "google-vertex": return "gemini-3.6-flash";
412
- case "xai": return "grok-4.5";
413
- case "groq": return "llama-3.3-70b-versatile";
414
- case "cerebras": return "gpt-oss-120b";
415
- case "mistral": return "mistral-large-latest";
416
- case "zai": return "glm-5.2";
417
- case "huggingface": return "Qwen/Qwen3.5-397B-A17B";
418
- case "openrouter": return "anthropic/claude-opus-5";
419
- case "vercel-ai-gateway": return "anthropic/claude-opus-5";
420
- case "deepseek": return "deepseek-v4-pro";
421
- case "fireworks": return "accounts/fireworks/models/kimi-k3";
422
- case "together": return "moonshotai/Kimi-K3";
423
- case "baseten": return "moonshotai/Kimi-K3";
424
- case "moonshotai": return "kimi-k3";
425
- case "moonshotai-cn": return "kimi-k3";
426
- case "kimi-coding": return "kimi-for-coding";
427
- case "minimax": return "MiniMax-M2.7";
428
- case "minimax-cn": return "MiniMax-M3";
429
- case "qwen-token-plan": return "qwen3.8-max";
430
- case "qwen-token-plan-cn":
431
- case "qwen-token-plan-individual": return "qwen3.8-max";
432
- case "ant-ling": return "Ling-2.6-1T";
433
- case "nvidia": return "nvidia/nemotron-3-super-120b-a12b";
434
- case "cloudflare-workers-ai": return "@cf/moonshotai/kimi-k2.6";
435
- case "cloudflare-ai-gateway": return "claude-opus-5";
436
- case "github-copilot": return "claude-opus-5";
437
- case "xiaomi": return "mimo-v2.5";
438
- case "xiaomi-token-plan-ams":
439
- case "xiaomi-token-plan-cn":
440
- case "xiaomi-token-plan-sgp": return "mimo-v2.5-pro";
441
- case "opencode": return "claude-opus-5";
442
- case "opencode-go": return "kimi-k2.7-code";
443
- case "zai-coding-cn": return "glm-5.2";
444
- case "azure-openai": return "gpt-5.6-luna";
445
- case "bedrock": return "global.anthropic.claude-opus-5";
446
- case "ollama": return "llama3.3";
447
- case "lmstudio": return "qwen3-coder-30b";
448
- case "llamacpp": return "unsloth/Qwen3.6-35B-A3B-MTP-GGUF:MXFP4_MOE";
449
- default: return "model-name";
450
- }
451
- }
452
- function ChipList({ items, onPick }) {
453
- return /* @__PURE__ */ jsx("div", {
454
- className: "flex flex-wrap gap-1.5 max-h-40 overflow-y-auto rounded-md border bg-background p-1.5",
455
- children: items.map((m) => /* @__PURE__ */ jsx("button", {
456
- type: "button",
457
- onClick: () => onPick(m),
458
- className: "rounded border bg-card px-2 py-0.5 font-mono text-xs hover:border-primary hover:bg-accent",
459
- children: m
460
- }, m))
461
- });
462
- }
463
- function OpenAICodexCard({ status }) {
464
- const router = useRouter();
465
- const [busy, setBusy] = useState(false);
466
- const [err, setErr] = useState(null);
467
- async function connect() {
468
- setBusy(true);
469
- setErr(null);
470
- try {
471
- const res = await fetch("/api/auth/openai/login", { method: "POST" });
472
- if (!res.ok) {
473
- const j = await res.json().catch(() => ({}));
474
- throw new Error(j.error ?? `${res.status} ${res.statusText}`);
475
- }
476
- await router.invalidate();
477
- } catch (e) {
478
- setErr(e.message);
479
- } finally {
480
- setBusy(false);
481
- }
482
- }
483
- async function disconnect() {
484
- setBusy(true);
485
- setErr(null);
486
- try {
487
- await fetch("/api/auth/openai", { method: "DELETE" });
488
- await router.invalidate();
489
- } catch (e) {
490
- setErr(e.message);
491
- } finally {
492
- setBusy(false);
493
- }
494
- }
495
- return /* @__PURE__ */ jsxs("div", {
496
- className: "rounded-md border bg-muted/30 p-3 mb-3",
497
- children: [status.connected ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs("div", {
498
- className: "flex flex-wrap gap-2 items-center mb-2",
499
- children: [
500
- /* @__PURE__ */ jsx("span", {
501
- className: "rounded-full bg-success/10 text-success px-2 py-0.5 text-xs font-semibold uppercase",
502
- children: "connected"
503
- }),
504
- status.accountId && /* @__PURE__ */ jsxs("span", {
505
- className: "text-xs text-muted-foreground",
506
- children: ["account ", /* @__PURE__ */ jsx("code", {
507
- className: "font-mono",
508
- children: status.accountId
509
- })]
510
- }),
511
- status.expiresAt && /* @__PURE__ */ jsxs("span", {
512
- className: "text-xs text-muted-foreground",
513
- children: [
514
- "token expires",
515
- " ",
516
- new Date(status.expiresAt).toISOString().replace(/\.\d+Z$/, "Z")
517
- ]
518
- })
519
- ]
520
- }), /* @__PURE__ */ jsx("button", {
521
- type: "button",
522
- onClick: disconnect,
523
- disabled: busy,
524
- className: "rounded-md border px-3 py-1.5 text-sm text-danger hover:bg-danger/10 disabled:opacity-50",
525
- children: "disconnect"
526
- })] }) : /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs("p", {
527
- className: "text-xs text-muted-foreground mb-2",
528
- children: [
529
- "Sign in with your ChatGPT account — the OAuth flow opens a new browser tab. The loopback callback at ",
530
- /* @__PURE__ */ jsx("code", {
531
- className: "font-mono",
532
- children: "localhost:1455"
533
- }),
534
- " only works when you're using the web UI on the same machine as the daemon. For remote setups, run ",
535
- /* @__PURE__ */ jsx("code", {
536
- className: "font-mono",
537
- children: "bazilion auth openai login"
538
- }),
539
- " on the client."
540
- ]
541
- }), /* @__PURE__ */ jsx("button", {
542
- type: "button",
543
- onClick: connect,
544
- disabled: busy,
545
- className: "rounded-md bg-primary px-3 py-1.5 text-sm font-medium text-primary-foreground disabled:opacity-50",
546
- children: busy ? "opening browser…" : "Connect ChatGPT →"
547
- })] }), err && /* @__PURE__ */ jsx("p", {
548
- className: "text-sm text-danger mt-2",
549
- children: err
550
- })]
551
- });
552
- }
553
- //#endregion
554
- export { ProvidersPage as component };
@@ -1,12 +0,0 @@
1
- import { n as createServerFn } from "../server.js";
2
- import { t as createSsrRpc } from "./createSsrRpc-6LHNEsSK.js";
3
- import { createFileRoute, lazyRouteComponent } from "@tanstack/react-router";
4
- //#region src/routes/teams/$id/context.tsx
5
- var $$splitComponentImporter = () => import("./context-poimKI7w.js");
6
- var fetchContext = createServerFn({ method: "POST" }).validator((data) => data).handler(createSsrRpc("b859e1340a80871c50b0d3e60bd3f3b48fe3c66b083f8ff9d5b2981720d36a81"));
7
- var Route = createFileRoute("/teams/$id/context")({
8
- loader: ({ params }) => fetchContext({ data: params }),
9
- component: lazyRouteComponent($$splitComponentImporter, "component")
10
- });
11
- //#endregion
12
- export { Route as t };
@@ -1,12 +0,0 @@
1
- import { n as createServerFn } from "../server.js";
2
- import { t as createServerRpc } from "./createServerRpc-B7Yr1K8i.js";
3
- import { n as daemonClient } from "./daemon-client-CI5NHwNC.js";
4
- //#region src/routes/teams/$id/context.tsx?tss-serverfn-split
5
- var fetchContext_createServerFn_handler = createServerRpc({
6
- id: "b859e1340a80871c50b0d3e60bd3f3b48fe3c66b083f8ff9d5b2981720d36a81",
7
- name: "fetchContext",
8
- filename: "src/routes/teams/$id/context.tsx"
9
- }, (opts) => fetchContext.__executeServer(opts));
10
- var fetchContext = createServerFn({ method: "POST" }).validator((data) => data).handler(fetchContext_createServerFn_handler, ({ data }) => daemonClient().get(`/api/teams/${encodeURIComponent(data.id)}`));
11
- //#endregion
12
- export { fetchContext_createServerFn_handler };
@@ -1,47 +0,0 @@
1
- import { t as Route } from "./context-BkDDwbby.js";
2
- import { r as PageShell } from "./Page-LENulSXY.js";
3
- import { t as TeamTabs } from "./TeamTabs-zZzbP1t_.js";
4
- import { jsx, jsxs } from "react/jsx-runtime";
5
- //#region src/routes/teams/$id/context.tsx?tsr-split=component
6
- function ContextPage() {
7
- const team = Route.useLoaderData();
8
- return /* @__PURE__ */ jsxs(PageShell, { children: [
9
- /* @__PURE__ */ jsx("h1", { children: "Team context" }),
10
- /* @__PURE__ */ jsx("p", {
11
- className: "muted",
12
- children: "Workspace, operator context, and integrations owned by this Team."
13
- }),
14
- /* @__PURE__ */ jsx(TeamTabs, { teamId: team.id }),
15
- /* @__PURE__ */ jsxs("section", {
16
- className: "card",
17
- children: [/* @__PURE__ */ jsxs("dl", {
18
- className: "grid gap-4 sm:grid-cols-2",
19
- children: [
20
- /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("dt", {
21
- className: "muted",
22
- children: "workspace path"
23
- }), /* @__PURE__ */ jsx("dd", { children: /* @__PURE__ */ jsx("code", { children: team.path }) })] }),
24
- /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("dt", {
25
- className: "muted",
26
- children: "Telegram topic format"
27
- }), /* @__PURE__ */ jsx("dd", { children: /* @__PURE__ */ jsx("code", { children: team.telegramTopicNameFormat ?? "built-in naming" }) })] }),
28
- /* @__PURE__ */ jsxs("div", {
29
- className: "sm:col-span-2",
30
- children: [/* @__PURE__ */ jsx("dt", {
31
- className: "muted",
32
- children: "USER.md"
33
- }), /* @__PURE__ */ jsx("dd", {
34
- className: "mt-2 whitespace-pre-wrap rounded-md border border-frost bg-ivory p-3 text-sm",
35
- children: team.userMd || "No operator context configured."
36
- })]
37
- })
38
- ]
39
- }), /* @__PURE__ */ jsx("p", {
40
- className: "mt-4 text-sm text-mocha",
41
- children: "Edit USER.md and Telegram naming from Overview during this transition. This route is the canonical context projection."
42
- })]
43
- })
44
- ] });
45
- }
46
- //#endregion
47
- export { ContextPage as component };