bazilion 0.9.0 → 0.11.0

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 (189) hide show
  1. package/dist/cli.js +1257 -150
  2. package/dist/cli.js.map +1 -1
  3. package/dist/daemon.js +3049 -471
  4. package/dist/daemon.js.map +1 -1
  5. package/dist/migrations/0001_init.sql +20 -0
  6. package/dist/web/client/assets/AgentTabs-B3hq5a3e.js +1 -0
  7. package/dist/web/client/assets/ConfigPage-BCwfgyjD.js +1 -0
  8. package/dist/web/client/assets/FieldRow-avAFLgYW.js +1 -0
  9. package/dist/web/client/assets/Page-CwNuDhWz.js +1 -0
  10. package/dist/web/client/assets/ProductionTeamPolicyEditor-B6dbpuYy.js +7 -0
  11. package/dist/web/client/assets/{ProfileCommunicationEditor-D1OZ8WE5.js → ProfileCommunicationEditor-Bf8UvmZT.js} +1 -1
  12. package/dist/web/client/assets/SectionTabs-DZzy01az.js +1 -0
  13. package/dist/web/client/assets/TeamTabs-sQBHChtd.js +1 -0
  14. package/dist/web/client/assets/TemplatesTabs-DPsuwsWB.js +1 -0
  15. package/dist/web/client/assets/_id-C9rkCclz.js +1 -0
  16. package/dist/web/client/assets/_id-D65IzC8H.js +1 -0
  17. package/dist/web/client/assets/_id-DE4IY5bL.js +1 -0
  18. package/dist/web/client/assets/_id-DYASsGQ8.js +1 -0
  19. package/dist/web/client/assets/activity-C7o6-xHg.js +1 -0
  20. package/dist/web/client/assets/agents-UroO4d25.js +1 -0
  21. package/dist/web/client/assets/agents-h8yWXQ2H.js +1 -0
  22. package/dist/web/client/assets/approvals-DKhF0YLC.js +1 -0
  23. package/dist/web/client/assets/chevron-down-BK6NPMMP.js +1 -0
  24. package/dist/web/client/assets/config-q8JDresK.js +3 -0
  25. package/dist/web/client/assets/context-CBucAoi6.js +1 -0
  26. package/dist/web/client/assets/inbox-BwoRikj1.js +1 -0
  27. package/dist/web/client/assets/index-DUXAevpZ.js +12 -0
  28. package/dist/web/client/assets/login-CNAV9Wer.js +1 -0
  29. package/dist/web/client/assets/mcp-BKdEFwHO.js +1 -0
  30. package/dist/web/client/assets/members-BDqZQh26.js +1 -0
  31. package/dist/web/client/assets/memory-DVdEVr6L.js +1 -0
  32. package/dist/web/client/assets/plus-b4yFXP0O.js +1 -0
  33. package/dist/web/client/assets/policy-DdDctqvg.js +1 -0
  34. package/dist/web/client/assets/preload-helper-mNuBjNXU.js +1 -0
  35. package/dist/web/client/assets/react-3W8R1pOO.js +1 -0
  36. package/dist/web/client/assets/routes-BEfALSZv.js +1 -0
  37. package/dist/web/client/assets/services-DZP2ybzb.js +1 -0
  38. package/dist/web/client/assets/skills-DoeIjITs.js +1 -0
  39. package/dist/web/client/assets/styles-BYM0UGdF.css +2 -0
  40. package/dist/web/client/assets/team-policy-D0jpnn2b.js +1 -0
  41. package/dist/web/client/assets/teams-DlHRnrQw.js +1 -0
  42. package/dist/web/client/assets/teams-W3j-UoJ9.js +1 -0
  43. package/dist/web/client/assets/telegram-2OdeGv4E.js +1 -0
  44. package/dist/web/client/assets/tokens-MuBfmgue.js +1 -0
  45. package/dist/web/client/assets/triggers-CX7RMQFQ.js +1 -0
  46. package/dist/web/client/assets/welcome-CvNr5IMi.js +1 -0
  47. package/dist/web/client/assets/wire-constants-BhVKOCQa.js +74 -0
  48. package/dist/web/server/assets/{AgentTabs-BOjTN7QF.js → AgentTabs-DoMDJBXH.js} +10 -7
  49. package/dist/web/server/assets/{ChatPane-Dh3qxzdb.js → ChatPane-Ba5wTsVk.js} +340 -44
  50. package/dist/web/server/assets/ConfigPage-BKlh5vOU.js +68 -0
  51. package/dist/web/server/assets/{FieldRow-DwyqycWI.js → FieldRow-B4eTegH9.js} +5 -5
  52. package/dist/web/server/assets/Page-LENulSXY.js +111 -0
  53. package/dist/web/server/assets/{ProductionTeamPolicyEditor-Bke5doyl.js → ProductionTeamPolicyEditor-Y4mzFFvR.js} +4 -4
  54. package/dist/web/server/assets/SectionTabs-BJTPr5nU.js +8 -0
  55. package/dist/web/server/assets/{Sidebar-CGmtCnYU.js → Sidebar-DsRVCszF.js} +229 -118
  56. package/dist/web/server/assets/{TeamTabs-BPxDBfqy.js → TeamTabs-zZzbP1t_.js} +9 -8
  57. package/dist/web/server/assets/{TemplatesTabs-zf4YhStd.js → TemplatesTabs-CcRxZhJe.js} +5 -4
  58. package/dist/web/server/assets/{_id-fpFQ9_Ya.js → _id-BhOB8Umi.js} +1 -1
  59. package/dist/web/server/assets/{_id-CCHA0gdR.js → _id-C3HY4lWg.js} +7 -10
  60. package/dist/web/server/assets/{_id-B6g9wmPR.js → _id-Cg7x6q3g.js} +22 -28
  61. package/dist/web/server/assets/{_id-B04VaQlh.js → _id-CwyGjJeP.js} +2 -2
  62. package/dist/web/server/assets/{_id-_nFwi9gD.js → _id-D27T85mU.js} +1 -1
  63. package/dist/web/server/assets/{_id-5lLzLwcv.js → _id-D3Ap7zZA.js} +142 -144
  64. package/dist/web/server/assets/{_id-ButXHnRH.js → _id-DinTp_7X.js} +2 -2
  65. package/dist/web/server/assets/{_id-DdC9wpNN.js → _id-Dj1yZ3zJ.js} +2 -2
  66. package/dist/web/server/assets/{_id-DkFgCIb-.js → _id-DqON-59C.js} +2 -2
  67. package/dist/web/server/assets/{_id-CUWgTqMS.js → _id-IzadFZV9.js} +1 -1
  68. package/dist/web/server/assets/{_id-C4AOhstq.js → _id-LrvXU4Nr.js} +6 -5
  69. package/dist/web/server/assets/{_id-DJkzwHjM.js → _id-tB47Vsfp.js} +1 -1
  70. package/dist/web/server/assets/{_tanstack-start-manifest_v-Div-TukY.js → _tanstack-start-manifest_v-BXauUXg6.js} +96 -51
  71. package/dist/web/server/assets/{activity-C2ZKg1Q9.js → activity-BCI4mfNS.js} +28 -30
  72. package/dist/web/server/assets/{activity-DedraoFj.js → activity-D9SMqBhy.js} +2 -2
  73. package/dist/web/server/assets/{activity-GPx8NCeB.js → activity-DohitgwW.js} +1 -1
  74. package/dist/web/server/assets/{agents-BR2qXlXF.js → agents-BPKOshR5.js} +1 -1
  75. package/dist/web/server/assets/{agents-LHowEI6S.js → agents-BY74v7fM.js} +1 -1
  76. package/dist/web/server/assets/{agents-B8kinIPW.js → agents-BvttypqB.js} +2 -2
  77. package/dist/web/server/assets/{agents-Bp1nsVs2.js → agents-C9xlWK0Z.js} +2 -2
  78. package/dist/web/server/assets/agents-CgZMHj80.js +265 -0
  79. package/dist/web/server/assets/{agents-CUQmWhTp.js → agents-DZuFEj0D.js} +59 -77
  80. package/dist/web/server/assets/{approvals-VPc0YpLN.js → approvals-BGU-XGIO.js} +1 -1
  81. package/dist/web/server/assets/{approvals-Dw2LJoSA.js → approvals-CWcFHlor.js} +2 -2
  82. package/dist/web/server/assets/{approvals-DHgARzd8.js → approvals-DCaVw1Mz.js} +116 -78
  83. package/dist/web/server/assets/{auth-l-Vf8wlu.js → auth-byfSx6Ja.js} +1 -1
  84. package/dist/web/server/assets/{config-CHaCv89D.js → config-BDCJdtj2.js} +1 -1
  85. package/dist/web/server/assets/{config-BvKctDOX.js → config-D2LAsud2.js} +28 -49
  86. package/dist/web/server/assets/{config-QvHaxGlP.js → config-TeIoyYYc.js} +2 -2
  87. package/dist/web/server/assets/{context-5lrf2ame.js → context-B-XDf6Ym.js} +1 -1
  88. package/dist/web/server/assets/{context-D3Egm-vY.js → context-BXGo5Vfi.js} +2 -2
  89. package/dist/web/server/assets/context-DrkrIWun.js +47 -0
  90. package/dist/web/server/assets/{createServerRpc-CeKECg65.js → createServerRpc-pU-IQV2Y.js} +1 -1
  91. package/dist/web/server/assets/{createSsrRpc-ZBGxhl8t.js → createSsrRpc-DFsIAfFd.js} +1 -1
  92. package/dist/web/server/assets/{empty-plugin-adapters-DKUlnwwl.js → empty-plugin-adapters-Cq4--YW-.js} +1 -1
  93. package/dist/web/server/assets/{inbox-CkiSvD14.js → inbox-B3-TRsNI.js} +1 -1
  94. package/dist/web/server/assets/{inbox-Bxb3W04M.js → inbox-BardsGyy.js} +2 -2
  95. package/dist/web/server/assets/inbox-CUIyf9MT.js +131 -0
  96. package/dist/web/server/assets/login-Bx5LEyGP.js +118 -0
  97. package/dist/web/server/assets/login-CmWvxfTK.js +136 -0
  98. package/dist/web/server/assets/{mcp-BsFKEoXt.js → mcp-2pwT9HU8.js} +1 -1
  99. package/dist/web/server/assets/{mcp-BU_kKENi.js → mcp-BJjLIdP0.js} +105 -112
  100. package/dist/web/server/assets/{mcp-CKqwG4mt.js → mcp-DIWTogHM.js} +2 -2
  101. package/dist/web/server/assets/members-CCv17cjQ.js +46 -0
  102. package/dist/web/server/assets/{members-DlGBKZNl.js → members-CW5aBe81.js} +1 -1
  103. package/dist/web/server/assets/{members-ksELRsyk.js → members-VdPwD6CE.js} +2 -2
  104. package/dist/web/server/assets/{memory-CO0jKGzJ.js → memory-Dngc13Nw.js} +1 -1
  105. package/dist/web/server/assets/memory-a8Kz57Kh.js +287 -0
  106. package/dist/web/server/assets/{memory-B5moRnnp.js → memory-pZ4pZT7p.js} +2 -2
  107. package/dist/web/server/assets/{policy-Dxs78_GO.js → policy-Bb-vEgqg.js} +1 -1
  108. package/dist/web/server/assets/{policy-Dr55y-Mh.js → policy-BcGELcc9.js} +16 -22
  109. package/dist/web/server/assets/{policy-DNcGZLOB.js → policy-C30AeFIb.js} +2 -2
  110. package/dist/web/server/assets/{router-_izWQUeG.js → router-C5_NjTsP.js} +100 -111
  111. package/dist/web/server/assets/{routes-BSSKp3Rv.js → routes-B6cMLIPk.js} +16 -13
  112. package/dist/web/server/assets/{routes-BrTOoeth.js → routes-BrA-U_Hm.js} +2 -2
  113. package/dist/web/server/assets/{routes-DOj6ljcm.js → routes-C19CMLZt.js} +2 -2
  114. package/dist/web/server/assets/services-B9yBWDX0.js +79 -0
  115. package/dist/web/server/assets/{services-Pv_V88VA.js → services-C4szdhPx.js} +2 -2
  116. package/dist/web/server/assets/{services-DhRiNeq0.js → services-wG8I06oS.js} +1 -1
  117. package/dist/web/server/assets/skills-BZdqiDig.js +358 -0
  118. package/dist/web/server/assets/{skills-l2cyQ3zS.js → skills-C-UgkuCW.js} +2 -2
  119. package/dist/web/server/assets/{skills-CFIWVg32.js → skills-a9VSWHWq.js} +1 -1
  120. package/dist/web/server/assets/{start-DlHq0RaQ.js → start-WH8WzTL_.js} +1 -1
  121. package/dist/web/server/assets/{team-policy-Csvc5EDd.js → team-policy-vPG01onj.js} +3 -3
  122. package/dist/web/server/assets/{teams-B9O-WDH5.js → teams-CpQ0YgWf.js} +38 -34
  123. package/dist/web/server/assets/{teams-35Oprf6e.js → teams-DEpQR2QA.js} +2 -2
  124. package/dist/web/server/assets/{teams-DFkN7ic7.js → teams-DqfrEoH6.js} +1 -1
  125. package/dist/web/server/assets/{teams-B5IF65p2.js → teams-MjqgsmC3.js} +1 -1
  126. package/dist/web/server/assets/{teams-DH1CvWmT.js → teams-OIkHuxy1.js} +2 -2
  127. package/dist/web/server/assets/teams-jBtvnk59.js +193 -0
  128. package/dist/web/server/assets/{telegram-C9sQFwWj.js → telegram-CBF8SJzB.js} +36 -71
  129. package/dist/web/server/assets/{telegram-BdaUIjvs.js → telegram-DNgCWebD.js} +1 -1
  130. package/dist/web/server/assets/{telegram-mTnJCOmn.js → telegram-XwyKSEtj.js} +2 -2
  131. package/dist/web/server/assets/{tokens-DdpnfV_Y.js → tokens-BnwFbV7T.js} +2 -2
  132. package/dist/web/server/assets/{tokens-BCz3PSoT.js → tokens-DPDMSN5O.js} +1 -1
  133. package/dist/web/server/assets/tokens-yyTSfBSN.js +186 -0
  134. package/dist/web/server/assets/{triggers-BcTTwMfy.js → triggers-CBl4yMyw.js} +2 -2
  135. package/dist/web/server/assets/{triggers-BcH_6PW1.js → triggers-D79NoSXk.js} +4 -3
  136. package/dist/web/server/assets/{triggers-BzJG1nN5.js → triggers-_3rdhwSN.js} +31 -6
  137. package/dist/web/server/assets/{welcome-CDGE2Sdk.js → welcome-IYHGurWx.js} +21 -13
  138. package/dist/web/server/server.js +82 -73
  139. package/dist/worker.js +1614 -153
  140. package/dist/worker.js.map +1 -1
  141. package/package.json +5 -3
  142. package/dist/web/client/assets/AgentTabs-DioGqUVR.js +0 -1
  143. package/dist/web/client/assets/ConfigTabs-pY-V0Rie.js +0 -1
  144. package/dist/web/client/assets/FieldRow-DmwAFfbF.js +0 -1
  145. package/dist/web/client/assets/ProductionTeamPolicyEditor-1a5jQqUB.js +0 -7
  146. package/dist/web/client/assets/TeamTabs-BViZ4sti.js +0 -1
  147. package/dist/web/client/assets/TemplatesTabs-DVcY9pMD.js +0 -1
  148. package/dist/web/client/assets/_id-8P7brhGy.js +0 -1
  149. package/dist/web/client/assets/_id-C3o3MHq8.js +0 -1
  150. package/dist/web/client/assets/_id-DGRrSF1e.js +0 -1
  151. package/dist/web/client/assets/_id-KnJe-aW9.js +0 -1
  152. package/dist/web/client/assets/activity-WWvJSo4t.js +0 -1
  153. package/dist/web/client/assets/agents-C32T1voV.js +0 -1
  154. package/dist/web/client/assets/agents-nH4m4gZ1.js +0 -1
  155. package/dist/web/client/assets/approvals-l8jIZjqz.js +0 -1
  156. package/dist/web/client/assets/config-C7wvi1nR.js +0 -3
  157. package/dist/web/client/assets/context-BEGWE3RC.js +0 -1
  158. package/dist/web/client/assets/inbox--4aBaAgG.js +0 -1
  159. package/dist/web/client/assets/index-BCXoh1c8.js +0 -12
  160. package/dist/web/client/assets/login-Bk2wwIHQ.js +0 -1
  161. package/dist/web/client/assets/mcp-vM7xgh9e.js +0 -1
  162. package/dist/web/client/assets/members-cPKfnrSL.js +0 -1
  163. package/dist/web/client/assets/memory-BOcsaemD.js +0 -1
  164. package/dist/web/client/assets/policy-BGLCJYvS.js +0 -1
  165. package/dist/web/client/assets/preload-helper-eOOCz1Fu.js +0 -1
  166. package/dist/web/client/assets/routes-DnrP3dwv.js +0 -1
  167. package/dist/web/client/assets/services-C2_O3ifw.js +0 -1
  168. package/dist/web/client/assets/skills-B__fLZjx.js +0 -1
  169. package/dist/web/client/assets/styles-Dn24-ZvP.css +0 -2
  170. package/dist/web/client/assets/team-policy-BdX340m4.js +0 -1
  171. package/dist/web/client/assets/teams-DZMB4_iw.js +0 -1
  172. package/dist/web/client/assets/teams-rpaYKNIb.js +0 -1
  173. package/dist/web/client/assets/telegram-B1O4Ko0V.js +0 -1
  174. package/dist/web/client/assets/tokens-D7FH9VgA.js +0 -1
  175. package/dist/web/client/assets/triggers-3PLy2_Fo.js +0 -1
  176. package/dist/web/client/assets/welcome-B-QQobzq.js +0 -1
  177. package/dist/web/client/assets/wire-constants-BY9Q9Z7d.js +0 -74
  178. package/dist/web/server/assets/ConfigTabs-CyuxzesF.js +0 -41
  179. package/dist/web/server/assets/agents-DU9Hqs58.js +0 -249
  180. package/dist/web/server/assets/context-CEr4-xiA.js +0 -49
  181. package/dist/web/server/assets/inbox-DU27iHv_.js +0 -133
  182. package/dist/web/server/assets/login-CNznncgA.js +0 -58
  183. package/dist/web/server/assets/login-CQybKk7Y.js +0 -74
  184. package/dist/web/server/assets/members-40DxRdVj.js +0 -48
  185. package/dist/web/server/assets/memory-CiTl4cN9.js +0 -289
  186. package/dist/web/server/assets/services-CHe4ihJk.js +0 -94
  187. package/dist/web/server/assets/skills-D89ND2kR.js +0 -321
  188. package/dist/web/server/assets/teams-zcm9XaQU.js +0 -174
  189. package/dist/web/server/assets/tokens-CkKqrtk-.js +0 -193
@@ -0,0 +1,186 @@
1
+ import { t as Route } from "./tokens-BnwFbV7T.js";
2
+ import { t as ConfigPage } from "./ConfigPage-BKlh5vOU.js";
3
+ import { useState } from "react";
4
+ import { useRouter } from "@tanstack/react-router";
5
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
+ //#region src/routes/config/tokens.tsx?tsr-split=component
7
+ function fmtTs(ts) {
8
+ return new Date(ts).toISOString().slice(0, 16).replace("T", " ");
9
+ }
10
+ function TokensPage() {
11
+ const { tokens } = Route.useLoaderData();
12
+ const { all } = Route.useSearch();
13
+ const includeRevoked = all === "1";
14
+ const router = useRouter();
15
+ const [label, setLabel] = useState("");
16
+ const [created, setCreated] = useState(null);
17
+ const [err, setErr] = useState(null);
18
+ const [busy, setBusy] = useState(false);
19
+ async function mint(e) {
20
+ e.preventDefault();
21
+ setErr(null);
22
+ setBusy(true);
23
+ try {
24
+ const res = await fetch("/api/tokens", {
25
+ method: "POST",
26
+ headers: { "content-type": "application/json" },
27
+ body: JSON.stringify({ label })
28
+ });
29
+ if (!res.ok) {
30
+ const j = await res.json().catch(() => ({}));
31
+ throw new Error(j.error ?? `${res.status} ${res.statusText}`);
32
+ }
33
+ setCreated((await res.json()).token);
34
+ setLabel("");
35
+ await router.invalidate();
36
+ } catch (e) {
37
+ setErr(e.message);
38
+ } finally {
39
+ setBusy(false);
40
+ }
41
+ }
42
+ async function revoke(id) {
43
+ await fetch(`/api/tokens/${id}`, { method: "DELETE" });
44
+ await router.invalidate();
45
+ }
46
+ return /* @__PURE__ */ jsxs(ConfigPage, {
47
+ active: "tokens",
48
+ title: "API tokens",
49
+ description: /* @__PURE__ */ jsxs(Fragment, { children: [
50
+ "Manage per-client credentials for the HTTP API and CLI. The",
51
+ " ",
52
+ /* @__PURE__ */ jsx("code", {
53
+ className: "font-mono",
54
+ children: "bootstrap"
55
+ }),
56
+ " token from",
57
+ " ",
58
+ /* @__PURE__ */ jsx("code", {
59
+ className: "font-mono",
60
+ children: "~/.bazilion/auth.json"
61
+ }),
62
+ " remains protected; mint separate credentials for mobile, LAN, and remote clients."
63
+ ] }),
64
+ children: [
65
+ /* @__PURE__ */ jsxs("section", {
66
+ className: "rounded-lg border bg-card p-5",
67
+ children: [
68
+ /* @__PURE__ */ jsx("h3", {
69
+ className: "font-serif text-xl mb-3",
70
+ children: "Mint a new token"
71
+ }),
72
+ /* @__PURE__ */ jsxs("form", {
73
+ onSubmit: mint,
74
+ className: "mb-3 flex flex-col items-stretch gap-2 sm:flex-row sm:items-end",
75
+ children: [/* @__PURE__ */ jsxs("label", {
76
+ className: "w-full text-sm sm:w-auto",
77
+ children: ["Label", /* @__PURE__ */ jsx("input", {
78
+ type: "text",
79
+ value: label,
80
+ onChange: (e) => setLabel(e.target.value),
81
+ required: true,
82
+ placeholder: "e.g. laptop-tailscale",
83
+ autoComplete: "off",
84
+ className: "mt-1 block w-full rounded-md border bg-background px-3 py-2 text-sm sm:w-72"
85
+ })]
86
+ }), /* @__PURE__ */ jsx("button", {
87
+ type: "submit",
88
+ disabled: busy,
89
+ className: "rounded-md bg-primary px-3 py-2 text-sm font-medium text-primary-foreground disabled:opacity-50",
90
+ children: busy ? "creating…" : "create"
91
+ })]
92
+ }),
93
+ created && /* @__PURE__ */ jsxs("div", {
94
+ className: "rounded-md border border-warning/25 bg-warning/10 p-3",
95
+ children: [/* @__PURE__ */ jsx("p", {
96
+ className: "text-xs text-warning mb-1",
97
+ children: "copy this token now — it is not recoverable later."
98
+ }), /* @__PURE__ */ jsx("pre", {
99
+ className: "font-mono text-xs whitespace-pre-wrap break-all",
100
+ children: created
101
+ })]
102
+ }),
103
+ err && /* @__PURE__ */ jsx("p", {
104
+ className: "text-sm text-danger",
105
+ children: err
106
+ })
107
+ ]
108
+ }),
109
+ /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs("label", {
110
+ className: "text-sm flex items-center gap-2",
111
+ children: [/* @__PURE__ */ jsx("input", {
112
+ type: "checkbox",
113
+ checked: includeRevoked,
114
+ onChange: (e) => {
115
+ window.location.assign(e.target.checked ? "/config/tokens?all=1" : "/config/tokens");
116
+ }
117
+ }), "show revoked"]
118
+ }) }),
119
+ /* @__PURE__ */ jsx("div", {
120
+ className: "overflow-x-auto",
121
+ children: /* @__PURE__ */ jsxs("table", {
122
+ className: "w-full min-w-[720px] text-sm",
123
+ children: [/* @__PURE__ */ jsx("thead", {
124
+ className: "text-left text-muted-foreground border-b",
125
+ children: /* @__PURE__ */ jsxs("tr", { children: [
126
+ /* @__PURE__ */ jsx("th", {
127
+ className: "py-2",
128
+ children: "label"
129
+ }),
130
+ /* @__PURE__ */ jsx("th", { children: "id" }),
131
+ /* @__PURE__ */ jsx("th", { children: "state" }),
132
+ /* @__PURE__ */ jsx("th", { children: "created" }),
133
+ /* @__PURE__ */ jsx("th", { children: "last used" }),
134
+ /* @__PURE__ */ jsx("th", {})
135
+ ] })
136
+ }), /* @__PURE__ */ jsxs("tbody", { children: [tokens.length === 0 && /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx("td", {
137
+ colSpan: 6,
138
+ className: "py-6 text-center text-muted-foreground italic",
139
+ children: "no tokens yet — mint one above"
140
+ }) }), tokens.map((t) => {
141
+ const isBootstrap = t.label === "bootstrap";
142
+ return /* @__PURE__ */ jsxs("tr", {
143
+ className: "border-b last:border-0 hover:bg-accent/30",
144
+ children: [
145
+ /* @__PURE__ */ jsxs("td", {
146
+ className: "py-2",
147
+ children: [t.label, isBootstrap && /* @__PURE__ */ jsx("span", {
148
+ className: "ml-2 text-[0.7em] uppercase tracking-wide text-muted-foreground",
149
+ children: "auth.json"
150
+ })]
151
+ }),
152
+ /* @__PURE__ */ jsx("td", { children: /* @__PURE__ */ jsx("code", {
153
+ className: "font-mono text-xs",
154
+ children: t.id
155
+ }) }),
156
+ /* @__PURE__ */ jsx("td", { children: t.revokedAt ? /* @__PURE__ */ jsx("span", {
157
+ className: "text-muted-foreground",
158
+ children: "revoked"
159
+ }) : /* @__PURE__ */ jsx("span", {
160
+ className: "text-success",
161
+ children: "active"
162
+ }) }),
163
+ /* @__PURE__ */ jsx("td", {
164
+ className: "text-muted-foreground text-xs",
165
+ children: fmtTs(t.createdAt)
166
+ }),
167
+ /* @__PURE__ */ jsx("td", {
168
+ className: "text-muted-foreground text-xs",
169
+ children: t.lastUsedAt ? fmtTs(t.lastUsedAt) : "(never)"
170
+ }),
171
+ /* @__PURE__ */ jsx("td", { children: !t.revokedAt && !isBootstrap && /* @__PURE__ */ jsx("button", {
172
+ type: "button",
173
+ onClick: () => revoke(t.id),
174
+ className: "rounded-md border px-2 py-1 text-xs text-danger hover:bg-danger/10",
175
+ children: "revoke"
176
+ }) })
177
+ ]
178
+ }, t.id);
179
+ })] })]
180
+ })
181
+ })
182
+ ]
183
+ });
184
+ }
185
+ //#endregion
186
+ export { TokensPage as component };
@@ -1,8 +1,8 @@
1
1
  import { t as createServerFn } from "../server.js";
2
- import { t as createSsrRpc } from "./createSsrRpc-ZBGxhl8t.js";
2
+ import { t as createSsrRpc } from "./createSsrRpc-DFsIAfFd.js";
3
3
  import { createFileRoute, lazyRouteComponent, redirect } from "@tanstack/react-router";
4
4
  //#region src/routes/agents/$id/triggers.tsx
5
- var $$splitComponentImporter = () => import("./triggers-BzJG1nN5.js");
5
+ var $$splitComponentImporter = () => import("./triggers-_3rdhwSN.js");
6
6
  var fetchTriggers = createServerFn({ method: "POST" }).inputValidator((d) => d).handler(createSsrRpc("57ebf437fdb3fcfc63b176e796a55f04bdfec0b230059673196e98d413d15c4d"));
7
7
  var Route = createFileRoute("/agents/$id/triggers")({
8
8
  loader: async ({ params }) => {
@@ -1,5 +1,5 @@
1
1
  import { t as createServerFn } from "../server.js";
2
- import { t as createServerRpc } from "./createServerRpc-CeKECg65.js";
2
+ import { t as createServerRpc } from "./createServerRpc-pU-IQV2Y.js";
3
3
  import { n as daemonClient, r as ApiClientError } from "./daemon-client-2NRMzlTr.js";
4
4
  //#region src/routes/agents/$id/triggers.tsx?tss-serverfn-split
5
5
  var fetchTriggers_createServerFn_handler = createServerRpc({
@@ -16,10 +16,11 @@ var fetchTriggers = createServerFn({ method: "POST" }).inputValidator((d) => d).
16
16
  if (err instanceof ApiClientError && err.status === 404) return null;
17
17
  throw err;
18
18
  }
19
- const { triggers } = await c.get(`/api/agents/${encodeURIComponent(resolved.agent.id)}/triggers`);
19
+ const { triggers, dispatches } = await c.get(`/api/agents/${encodeURIComponent(resolved.agent.id)}/triggers`);
20
20
  return {
21
21
  resolved,
22
- triggers
22
+ triggers,
23
+ dispatches
23
24
  };
24
25
  });
25
26
  //#endregion
@@ -1,11 +1,12 @@
1
- import { t as Route } from "./triggers-BcTTwMfy.js";
2
- import { t as AgentTabs } from "./AgentTabs-BOjTN7QF.js";
1
+ import { t as Route } from "./triggers-CBl4yMyw.js";
2
+ import { r as PageShell } from "./Page-LENulSXY.js";
3
+ import { t as AgentTabs } from "./AgentTabs-DoMDJBXH.js";
3
4
  import { useState } from "react";
4
5
  import { useRouter } from "@tanstack/react-router";
5
6
  import { jsx, jsxs } from "react/jsx-runtime";
6
7
  //#region src/routes/agents/$id/triggers.tsx?tsr-split=component
7
8
  function TriggersPage() {
8
- const { resolved, triggers } = Route.useLoaderData();
9
+ const { resolved, triggers, dispatches } = Route.useLoaderData();
9
10
  const router = useRouter();
10
11
  async function toggle(t) {
11
12
  await fetch(`/api/triggers/${t.id}`, {
@@ -20,7 +21,7 @@ function TriggersPage() {
20
21
  await fetch(`/api/triggers/${id}`, { method: "DELETE" });
21
22
  await router.invalidate();
22
23
  }
23
- return /* @__PURE__ */ jsxs("div", { children: [
24
+ return /* @__PURE__ */ jsxs(PageShell, { children: [
24
25
  /* @__PURE__ */ jsx("header", {
25
26
  className: "mb-6",
26
27
  children: /* @__PURE__ */ jsx("h1", { children: resolved.agent.name })
@@ -81,7 +82,31 @@ function TriggersPage() {
81
82
  }) })
82
83
  ]
83
84
  }, t.id);
84
- }) })] })
85
+ }) })] }),
86
+ /* @__PURE__ */ jsx("h3", {
87
+ className: "mb-3 mt-8 font-body text-[0.85em] font-semibold uppercase tracking-wider text-mocha-light",
88
+ children: "Recent dispatches"
89
+ }),
90
+ dispatches.length === 0 ? /* @__PURE__ */ jsx("p", {
91
+ className: "muted",
92
+ children: "no scheduled occurrences yet."
93
+ }) : /* @__PURE__ */ jsxs("table", { children: [/* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { children: [
94
+ /* @__PURE__ */ jsx("th", { children: "scheduled" }),
95
+ /* @__PURE__ */ jsx("th", { children: "status" }),
96
+ /* @__PURE__ */ jsx("th", { children: "attempts" }),
97
+ /* @__PURE__ */ jsx("th", { children: "error" })
98
+ ] }) }), /* @__PURE__ */ jsx("tbody", { children: dispatches.map((dispatch) => /* @__PURE__ */ jsxs("tr", { children: [
99
+ /* @__PURE__ */ jsx("td", {
100
+ className: "text-[0.82em]",
101
+ children: new Date(dispatch.scheduledAt).toLocaleString()
102
+ }),
103
+ /* @__PURE__ */ jsx("td", { children: /* @__PURE__ */ jsx("code", { children: dispatch.status }) }),
104
+ /* @__PURE__ */ jsx("td", { children: dispatch.attemptCount }),
105
+ /* @__PURE__ */ jsx("td", {
106
+ className: "text-[0.82em] text-mocha-light",
107
+ children: dispatch.lastError ?? "—"
108
+ })
109
+ ] }, dispatch.id)) })] })
85
110
  ] });
86
111
  }
87
112
  function AddTriggerForm({ agentId, onAdded }) {
@@ -180,7 +205,7 @@ function AddTriggerForm({ agentId, onAdded }) {
180
205
  disabled: submitting,
181
206
  children: submitting ? "adding…" : "add"
182
207
  }), err && /* @__PURE__ */ jsx("span", {
183
- className: "text-[0.85em] text-[#9B3D3D]",
208
+ className: "text-[0.85em] text-danger",
184
209
  children: err
185
210
  })]
186
211
  })
@@ -1,18 +1,23 @@
1
+ import { i as SectionCard, n as PageHeader, r as PageShell } from "./Page-LENulSXY.js";
1
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { ArrowRight } from "lucide-react";
2
4
  //#region src/routes/welcome.tsx?tsr-split=component
3
5
  function WelcomePage() {
4
- return /* @__PURE__ */ jsx("div", {
5
- className: "mx-auto max-w-2xl",
6
- children: /* @__PURE__ */ jsxs("div", {
7
- className: "card",
6
+ return /* @__PURE__ */ jsxs(PageShell, {
7
+ size: "narrow",
8
+ children: [/* @__PURE__ */ jsx(PageHeader, {
9
+ eyebrow: "First run",
10
+ title: "Welcome to bazilion",
11
+ description: "Connect one model provider, then Bazilion will prepare your default Agent template and Team."
12
+ }), /* @__PURE__ */ jsxs(SectionCard, {
13
+ title: "Three steps to your first conversation",
8
14
  children: [
9
- /* @__PURE__ */ jsx("h1", { children: "Welcome to bazilion" }),
10
15
  /* @__PURE__ */ jsxs("p", {
11
- className: "muted my-3",
16
+ className: "text-sm leading-6 text-muted-foreground",
12
17
  children: [
13
18
  "Before you can spawn agents, enable a provider and save at least one concrete model id. Once you do, a ",
14
19
  /* @__PURE__ */ jsx("code", { children: "default" }),
15
- " profile (and a ",
20
+ " Agent template (and a ",
16
21
  /* @__PURE__ */ jsx("code", { children: "default" }),
17
22
  " team directory) are created automatically and the rest of the app unlocks."
18
23
  ]
@@ -53,20 +58,23 @@ function WelcomePage() {
53
58
  n: 3,
54
59
  children: [
55
60
  /* @__PURE__ */ jsx("strong", { children: "Start chatting." }),
56
- " You'll be redirected to the home page automatically, where a ",
61
+ " You'll be redirected to the home page automatically, where the ",
57
62
  /* @__PURE__ */ jsx("code", { children: "default" }),
58
- " profile is waiting for a first spawn."
63
+ " Agent template is ready for your first spawn."
59
64
  ]
60
65
  })
61
66
  ]
62
67
  }),
63
- /* @__PURE__ */ jsx("a", {
68
+ /* @__PURE__ */ jsxs("a", {
64
69
  href: "/config",
65
- className: "inline-flex items-center gap-2 rounded-md bg-sapphire px-4 py-2 text-[0.92em] font-semibold text-snow no-underline transition-colors hover:bg-sapphire-deep",
66
- children: "Go to config →"
70
+ className: "btn-primary no-underline",
71
+ children: ["Configure providers ", /* @__PURE__ */ jsx(ArrowRight, {
72
+ className: "h-4 w-4",
73
+ "aria-hidden": "true"
74
+ })]
67
75
  })
68
76
  ]
69
- })
77
+ })]
70
78
  });
71
79
  }
72
80
  function Step({ n, children }) {