@stigmer/react 0.0.91 → 0.0.93

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 (328) hide show
  1. package/README.md +57 -12
  2. package/agent/AgentDetailView.js +7 -7
  3. package/agent/AgentDetailView.js.map +1 -1
  4. package/agent/AgentPicker.js +3 -3
  5. package/agent/AgentPicker.js.map +1 -1
  6. package/api-key/ApiKeyCreatedAlert.js +1 -1
  7. package/api-key/ApiKeyCreatedAlert.js.map +1 -1
  8. package/api-key/ApiKeyListPanel.js +4 -4
  9. package/api-key/ApiKeyListPanel.js.map +1 -1
  10. package/api-key/CreateApiKeyForm.js +1 -1
  11. package/api-key/CreateApiKeyForm.js.map +1 -1
  12. package/attachment/AttachmentChipList.js +2 -2
  13. package/attachment/AttachmentChipList.js.map +1 -1
  14. package/color-mode.d.ts +48 -0
  15. package/color-mode.d.ts.map +1 -0
  16. package/color-mode.js +53 -0
  17. package/color-mode.js.map +1 -0
  18. package/composer/ComposerToolbar.d.ts +6 -2
  19. package/composer/ComposerToolbar.d.ts.map +1 -1
  20. package/composer/ComposerToolbar.js +5 -3
  21. package/composer/ComposerToolbar.js.map +1 -1
  22. package/composer/ConfigureMenu.js +3 -3
  23. package/composer/ConfigureMenu.js.map +1 -1
  24. package/composer/ContextChip.js +1 -1
  25. package/composer/ContextChip.js.map +1 -1
  26. package/composer/ContextPopover.js +1 -1
  27. package/composer/ContextPopover.js.map +1 -1
  28. package/composer/SessionComposer.d.ts +24 -3
  29. package/composer/SessionComposer.d.ts.map +1 -1
  30. package/composer/SessionComposer.js +5 -4
  31. package/composer/SessionComposer.js.map +1 -1
  32. package/environment/CreateEnvironmentForm.js +1 -1
  33. package/environment/CreateEnvironmentForm.js.map +1 -1
  34. package/environment/EnvVarForm.js +2 -2
  35. package/environment/EnvVarForm.js.map +1 -1
  36. package/environment/EnvironmentListPanel.js +2 -2
  37. package/environment/EnvironmentListPanel.js.map +1 -1
  38. package/environment/EnvironmentVariableEditor.js +6 -6
  39. package/environment/EnvironmentVariableEditor.js.map +1 -1
  40. package/error/ErrorMessage.js +1 -1
  41. package/error/ErrorMessage.js.map +1 -1
  42. package/execution/ApprovalCard.js +4 -4
  43. package/execution/ApprovalCard.js.map +1 -1
  44. package/execution/ArtifactCard.js +1 -1
  45. package/execution/ArtifactCard.js.map +1 -1
  46. package/execution/ArtifactPreviewModal.js +4 -4
  47. package/execution/ArtifactPreviewModal.js.map +1 -1
  48. package/execution/FollowUpInput.js +1 -1
  49. package/execution/FollowUpInput.js.map +1 -1
  50. package/execution/McpToolDetail.js +4 -4
  51. package/execution/McpToolDetail.js.map +1 -1
  52. package/execution/MessageEntry.js +1 -1
  53. package/execution/MessageEntry.js.map +1 -1
  54. package/execution/MessageThread.js +1 -1
  55. package/execution/MessageThread.js.map +1 -1
  56. package/execution/SessionVariablesInput.js +4 -4
  57. package/execution/SessionVariablesInput.js.map +1 -1
  58. package/execution/SubAgentSection.js +2 -2
  59. package/execution/SubAgentSection.js.map +1 -1
  60. package/execution/ToolCallDetail.js +2 -2
  61. package/execution/ToolCallDetail.js.map +1 -1
  62. package/execution/ToolCallGroup.js +1 -1
  63. package/execution/ToolCallGroup.js.map +1 -1
  64. package/execution/ToolCallItem.js +2 -2
  65. package/execution/ToolCallItem.js.map +1 -1
  66. package/execution/WriteBackCard.js +3 -3
  67. package/execution/WriteBackCard.js.map +1 -1
  68. package/execution/tool-rendering-primitives.js +3 -3
  69. package/execution/tool-rendering-primitives.js.map +1 -1
  70. package/github/GitHubRepoPicker.js +5 -5
  71. package/github/GitHubRepoPicker.js.map +1 -1
  72. package/iam-policy/GrantAccessForm.js +1 -1
  73. package/iam-policy/GrantAccessForm.js.map +1 -1
  74. package/iam-policy/OrgMembersPanel.js +5 -5
  75. package/iam-policy/OrgMembersPanel.js.map +1 -1
  76. package/identity-provider/CreateIdentityProviderForm.js +3 -3
  77. package/identity-provider/CreateIdentityProviderForm.js.map +1 -1
  78. package/identity-provider/IdentityProviderDetailPanel.js +5 -5
  79. package/identity-provider/IdentityProviderDetailPanel.js.map +1 -1
  80. package/identity-provider/IdentityProviderListPanel.js +3 -3
  81. package/identity-provider/IdentityProviderListPanel.js.map +1 -1
  82. package/identity-provider/IdentityProviderWizard.js +7 -7
  83. package/identity-provider/IdentityProviderWizard.js.map +1 -1
  84. package/identity-provider/ProviderPicker.js +2 -2
  85. package/identity-provider/ProviderPicker.js.map +1 -1
  86. package/index.d.ts +8 -4
  87. package/index.d.ts.map +1 -1
  88. package/index.js +7 -3
  89. package/index.js.map +1 -1
  90. package/internal/CloudFeatureNotice.js +1 -1
  91. package/internal/CloudFeatureNotice.js.map +1 -1
  92. package/internal/Tabs.js +1 -1
  93. package/internal/Tabs.js.map +1 -1
  94. package/internal/markdown-components.js +2 -2
  95. package/internal/markdown-components.js.map +1 -1
  96. package/invitation/InvitationCreatedAlert.js +1 -1
  97. package/invitation/InvitationCreatedAlert.js.map +1 -1
  98. package/invitation/InvitationManager.js +5 -5
  99. package/invitation/InvitationManager.js.map +1 -1
  100. package/invitation/InvitationRedemption.js +4 -4
  101. package/invitation/InvitationRedemption.js.map +1 -1
  102. package/library/ResourceCountCard.js +1 -1
  103. package/library/ResourceCountCard.js.map +1 -1
  104. package/library/ResourceListView.js +5 -5
  105. package/library/ResourceListView.js.map +1 -1
  106. package/mcp-server/McpServerConfigPanel.js +5 -5
  107. package/mcp-server/McpServerConfigPanel.js.map +1 -1
  108. package/mcp-server/McpServerConnectDialog.js +4 -4
  109. package/mcp-server/McpServerConnectDialog.js.map +1 -1
  110. package/mcp-server/McpServerDetailView.js +14 -14
  111. package/mcp-server/McpServerDetailView.js.map +1 -1
  112. package/mcp-server/McpServerPicker.js +4 -4
  113. package/mcp-server/McpServerPicker.js.map +1 -1
  114. package/mcp-server/McpToolSelector.js +3 -3
  115. package/mcp-server/McpToolSelector.js.map +1 -1
  116. package/mcp-server/OAuthAppForm.js +1 -1
  117. package/mcp-server/OAuthAppForm.js.map +1 -1
  118. package/models/ModelSelector.js +1 -1
  119. package/models/ModelSelector.js.map +1 -1
  120. package/oauth-app/CreateOAuthAppForm.js +1 -1
  121. package/oauth-app/CreateOAuthAppForm.js.map +1 -1
  122. package/oauth-app/OAuthAppDetailPanel.js +3 -3
  123. package/oauth-app/OAuthAppDetailPanel.js.map +1 -1
  124. package/oauth-app/OAuthAppListPanel.js +2 -2
  125. package/oauth-app/OAuthAppListPanel.js.map +1 -1
  126. package/organization/CreateOrganizationForm.js +1 -1
  127. package/organization/CreateOrganizationForm.js.map +1 -1
  128. package/organization/OrgProfilePanel.js +3 -3
  129. package/organization/OrgProfilePanel.js.map +1 -1
  130. package/package.json +4 -4
  131. package/platform-client/CreatePlatformClientForm.js +2 -2
  132. package/platform-client/CreatePlatformClientForm.js.map +1 -1
  133. package/platform-client/PlatformClientDetailPanel.js +4 -4
  134. package/platform-client/PlatformClientDetailPanel.js.map +1 -1
  135. package/platform-client/PlatformClientListPanel.js +3 -3
  136. package/platform-client/PlatformClientListPanel.js.map +1 -1
  137. package/platform-client/PlatformClientSecretAlert.js +2 -2
  138. package/platform-client/PlatformClientSecretAlert.js.map +1 -1
  139. package/provider.d.ts +39 -2
  140. package/provider.d.ts.map +1 -1
  141. package/provider.js +11 -3
  142. package/provider.js.map +1 -1
  143. package/runner/RunnerListPanel.d.ts +65 -0
  144. package/runner/RunnerListPanel.d.ts.map +1 -0
  145. package/runner/RunnerListPanel.js +237 -0
  146. package/runner/RunnerListPanel.js.map +1 -0
  147. package/runner/RunnerPicker.d.ts +54 -0
  148. package/runner/RunnerPicker.d.ts.map +1 -0
  149. package/runner/RunnerPicker.js +133 -0
  150. package/runner/RunnerPicker.js.map +1 -0
  151. package/runner/__tests__/useDeleteRunner.test.d.ts +2 -0
  152. package/runner/__tests__/useDeleteRunner.test.d.ts.map +1 -0
  153. package/runner/__tests__/useDeleteRunner.test.js +108 -0
  154. package/runner/__tests__/useDeleteRunner.test.js.map +1 -0
  155. package/runner/__tests__/useLaunchLocalRunner.test.d.ts +2 -0
  156. package/runner/__tests__/useLaunchLocalRunner.test.d.ts.map +1 -0
  157. package/runner/__tests__/useLaunchLocalRunner.test.js +143 -0
  158. package/runner/__tests__/useLaunchLocalRunner.test.js.map +1 -0
  159. package/runner/__tests__/useStopRunner.test.d.ts +2 -0
  160. package/runner/__tests__/useStopRunner.test.d.ts.map +1 -0
  161. package/runner/__tests__/useStopRunner.test.js +114 -0
  162. package/runner/__tests__/useStopRunner.test.js.map +1 -0
  163. package/runner/index.d.ts +14 -0
  164. package/runner/index.d.ts.map +1 -0
  165. package/runner/index.js +8 -0
  166. package/runner/index.js.map +1 -0
  167. package/runner/phase.d.ts +30 -0
  168. package/runner/phase.d.ts.map +1 -0
  169. package/runner/phase.js +58 -0
  170. package/runner/phase.js.map +1 -0
  171. package/runner/useDeleteRunner.d.ts +36 -0
  172. package/runner/useDeleteRunner.d.ts.map +1 -0
  173. package/runner/useDeleteRunner.js +42 -0
  174. package/runner/useDeleteRunner.js.map +1 -0
  175. package/runner/useLaunchLocalRunner.d.ts +84 -0
  176. package/runner/useLaunchLocalRunner.d.ts.map +1 -0
  177. package/runner/useLaunchLocalRunner.js +75 -0
  178. package/runner/useLaunchLocalRunner.js.map +1 -0
  179. package/runner/useRunnerList.d.ts +49 -0
  180. package/runner/useRunnerList.d.ts.map +1 -0
  181. package/runner/useRunnerList.js +70 -0
  182. package/runner/useRunnerList.js.map +1 -0
  183. package/runner/useStopRunner.d.ts +53 -0
  184. package/runner/useStopRunner.d.ts.map +1 -0
  185. package/runner/useStopRunner.js +50 -0
  186. package/runner/useStopRunner.js.map +1 -0
  187. package/session/draft.d.ts +53 -0
  188. package/session/draft.d.ts.map +1 -0
  189. package/session/draft.js +45 -0
  190. package/session/draft.js.map +1 -0
  191. package/session/index.d.ts +10 -0
  192. package/session/index.d.ts.map +1 -1
  193. package/session/index.js +5 -0
  194. package/session/index.js.map +1 -1
  195. package/session/useCreateSession.d.ts +8 -0
  196. package/session/useCreateSession.d.ts.map +1 -1
  197. package/session/useCreateSession.js +1 -0
  198. package/session/useCreateSession.js.map +1 -1
  199. package/session/useEditSessionPrep.d.ts +26 -0
  200. package/session/useEditSessionPrep.d.ts.map +1 -0
  201. package/session/useEditSessionPrep.js +83 -0
  202. package/session/useEditSessionPrep.js.map +1 -0
  203. package/session/useNewSessionFlow.d.ts +110 -0
  204. package/session/useNewSessionFlow.d.ts.map +1 -0
  205. package/session/useNewSessionFlow.js +184 -0
  206. package/session/useNewSessionFlow.js.map +1 -0
  207. package/session/usePersistedModel.d.ts +18 -0
  208. package/session/usePersistedModel.d.ts.map +1 -0
  209. package/session/usePersistedModel.js +31 -0
  210. package/session/usePersistedModel.js.map +1 -0
  211. package/session/useSessionPageFlow.d.ts +104 -0
  212. package/session/useSessionPageFlow.d.ts.map +1 -0
  213. package/session/useSessionPageFlow.js +172 -0
  214. package/session/useSessionPageFlow.js.map +1 -0
  215. package/skill/SkillDetailView.js +3 -3
  216. package/skill/SkillDetailView.js.map +1 -1
  217. package/skill/SkillPicker.js +3 -3
  218. package/skill/SkillPicker.js.map +1 -1
  219. package/src/agent/AgentDetailView.tsx +8 -8
  220. package/src/agent/AgentPicker.tsx +3 -3
  221. package/src/api-key/ApiKeyCreatedAlert.tsx +2 -2
  222. package/src/api-key/ApiKeyListPanel.tsx +6 -6
  223. package/src/api-key/CreateApiKeyForm.tsx +2 -2
  224. package/src/attachment/AttachmentChipList.tsx +3 -3
  225. package/src/color-mode.ts +75 -0
  226. package/src/composer/ComposerToolbar.tsx +29 -7
  227. package/src/composer/ConfigureMenu.tsx +6 -6
  228. package/src/composer/ContextChip.tsx +1 -1
  229. package/src/composer/ContextPopover.tsx +2 -2
  230. package/src/composer/SessionComposer.tsx +34 -5
  231. package/src/environment/CreateEnvironmentForm.tsx +3 -3
  232. package/src/environment/EnvVarForm.tsx +6 -6
  233. package/src/environment/EnvironmentListPanel.tsx +3 -3
  234. package/src/environment/EnvironmentVariableEditor.tsx +7 -7
  235. package/src/error/ErrorMessage.tsx +5 -5
  236. package/src/execution/ApprovalCard.tsx +5 -5
  237. package/src/execution/ArtifactCard.tsx +2 -2
  238. package/src/execution/ArtifactPreviewModal.tsx +4 -4
  239. package/src/execution/FollowUpInput.tsx +2 -2
  240. package/src/execution/McpToolDetail.tsx +4 -4
  241. package/src/execution/MessageEntry.tsx +1 -1
  242. package/src/execution/MessageThread.tsx +1 -1
  243. package/src/execution/SessionVariablesInput.tsx +7 -7
  244. package/src/execution/SubAgentSection.tsx +5 -5
  245. package/src/execution/ToolCallDetail.tsx +2 -2
  246. package/src/execution/ToolCallGroup.tsx +3 -3
  247. package/src/execution/ToolCallItem.tsx +4 -4
  248. package/src/execution/WriteBackCard.tsx +5 -5
  249. package/src/execution/tool-rendering-primitives.tsx +5 -5
  250. package/src/github/GitHubRepoPicker.tsx +5 -5
  251. package/src/iam-policy/GrantAccessForm.tsx +2 -2
  252. package/src/iam-policy/OrgMembersPanel.tsx +11 -11
  253. package/src/identity-provider/CreateIdentityProviderForm.tsx +4 -4
  254. package/src/identity-provider/IdentityProviderDetailPanel.tsx +7 -7
  255. package/src/identity-provider/IdentityProviderListPanel.tsx +7 -7
  256. package/src/identity-provider/IdentityProviderWizard.tsx +8 -8
  257. package/src/identity-provider/ProviderPicker.tsx +2 -2
  258. package/src/index.ts +46 -7
  259. package/src/internal/CloudFeatureNotice.tsx +1 -1
  260. package/src/internal/Tabs.tsx +1 -1
  261. package/src/internal/markdown-components.tsx +2 -2
  262. package/src/invitation/InvitationCreatedAlert.tsx +2 -2
  263. package/src/invitation/InvitationManager.tsx +9 -9
  264. package/src/invitation/InvitationRedemption.tsx +11 -11
  265. package/src/library/ResourceCountCard.tsx +1 -1
  266. package/src/library/ResourceListView.tsx +7 -7
  267. package/src/mcp-server/McpServerConfigPanel.tsx +7 -7
  268. package/src/mcp-server/McpServerConnectDialog.tsx +5 -5
  269. package/src/mcp-server/McpServerDetailView.tsx +19 -19
  270. package/src/mcp-server/McpServerPicker.tsx +6 -6
  271. package/src/mcp-server/McpToolSelector.tsx +4 -4
  272. package/src/mcp-server/OAuthAppForm.tsx +3 -3
  273. package/src/models/ModelSelector.tsx +1 -1
  274. package/src/oauth-app/CreateOAuthAppForm.tsx +3 -3
  275. package/src/oauth-app/OAuthAppDetailPanel.tsx +7 -7
  276. package/src/oauth-app/OAuthAppListPanel.tsx +3 -3
  277. package/src/organization/CreateOrganizationForm.tsx +3 -3
  278. package/src/organization/OrgProfilePanel.tsx +4 -5
  279. package/src/platform-client/CreatePlatformClientForm.tsx +6 -6
  280. package/src/platform-client/PlatformClientDetailPanel.tsx +19 -19
  281. package/src/platform-client/PlatformClientListPanel.tsx +7 -7
  282. package/src/platform-client/PlatformClientSecretAlert.tsx +2 -2
  283. package/src/provider.tsx +52 -2
  284. package/src/runner/RunnerListPanel.tsx +725 -0
  285. package/src/runner/RunnerPicker.tsx +319 -0
  286. package/src/runner/__tests__/useDeleteRunner.test.tsx +150 -0
  287. package/src/runner/__tests__/useLaunchLocalRunner.test.tsx +223 -0
  288. package/src/runner/__tests__/useStopRunner.test.tsx +154 -0
  289. package/src/runner/index.ts +34 -0
  290. package/src/runner/phase.ts +62 -0
  291. package/src/runner/useDeleteRunner.ts +67 -0
  292. package/src/runner/useLaunchLocalRunner.ts +139 -0
  293. package/src/runner/useRunnerList.ts +114 -0
  294. package/src/runner/useStopRunner.ts +92 -0
  295. package/src/session/draft.ts +82 -0
  296. package/src/session/index.ts +28 -0
  297. package/src/session/useCreateSession.ts +9 -0
  298. package/src/session/useEditSessionPrep.ts +111 -0
  299. package/src/session/useNewSessionFlow.ts +283 -0
  300. package/src/session/usePersistedModel.ts +41 -0
  301. package/src/session/useSessionPageFlow.ts +280 -0
  302. package/src/skill/SkillDetailView.tsx +5 -5
  303. package/src/skill/SkillPicker.tsx +3 -3
  304. package/src/styles.css +25 -1
  305. package/src/usage/OrgUsagePanel.tsx +4 -4
  306. package/src/workspace/WorkspaceEditor.tsx +78 -66
  307. package/src/workspace/index.ts +0 -8
  308. package/styles.css +1 -1
  309. package/usage/OrgUsagePanel.js +2 -2
  310. package/usage/OrgUsagePanel.js.map +1 -1
  311. package/workspace/WorkspaceEditor.d.ts +28 -3
  312. package/workspace/WorkspaceEditor.d.ts.map +1 -1
  313. package/workspace/WorkspaceEditor.js +24 -25
  314. package/workspace/WorkspaceEditor.js.map +1 -1
  315. package/workspace/index.d.ts +0 -4
  316. package/workspace/index.d.ts.map +1 -1
  317. package/workspace/index.js +0 -2
  318. package/workspace/index.js.map +1 -1
  319. package/src/workspace/FolderBrowser.tsx +0 -579
  320. package/src/workspace/useFolderListing.ts +0 -164
  321. package/workspace/FolderBrowser.d.ts +0 -37
  322. package/workspace/FolderBrowser.d.ts.map +0 -1
  323. package/workspace/FolderBrowser.js +0 -188
  324. package/workspace/FolderBrowser.js.map +0 -1
  325. package/workspace/useFolderListing.d.ts +0 -73
  326. package/workspace/useFolderListing.d.ts.map +0 -1
  327. package/workspace/useFolderListing.js +0 -110
  328. package/workspace/useFolderListing.js.map +0 -1
@@ -68,7 +68,7 @@ export function WriteBackCard({ writeBack, className }: WriteBackCardProps) {
68
68
  <div className="mt-0.5 truncate font-mono text-xs text-muted-foreground">
69
69
  {writeBack.branchName}
70
70
  {writeBack.baseBranch && (
71
- <span className="text-muted-foreground/60">
71
+ <span className="text-muted-foreground-subtle">
72
72
  {" \u2190 "}
73
73
  {writeBack.baseBranch}
74
74
  </span>
@@ -87,7 +87,7 @@ export function WriteBackCard({ writeBack, className }: WriteBackCardProps) {
87
87
 
88
88
  {/* Error message */}
89
89
  {isFailed && writeBack.error && (
90
- <div className="mt-1.5 rounded bg-destructive/10 px-2 py-1 text-xs text-destructive">
90
+ <div className="mt-1.5 rounded bg-destructive-subtle px-2 py-1 text-xs text-destructive">
91
91
  {writeBack.error}
92
92
  </div>
93
93
  )}
@@ -100,7 +100,7 @@ export function WriteBackCard({ writeBack, className }: WriteBackCardProps) {
100
100
  target="_blank"
101
101
  rel="noopener noreferrer"
102
102
  className={cn(
103
- "inline-flex items-center gap-1 text-xs font-medium text-primary transition-colors hover:text-primary/80",
103
+ "inline-flex items-center gap-1 text-xs font-medium text-primary transition-colors hover:text-primary-muted",
104
104
  FOCUS_RING_CLASSES,
105
105
  )}
106
106
  >
@@ -131,11 +131,11 @@ const PHASE_CONFIG: Record<
131
131
  },
132
132
  [WorkspaceWriteBackPhase.WORKSPACE_WRITE_BACK_PR_CREATED]: {
133
133
  label: "PR Created",
134
- className: "bg-primary/10 text-primary",
134
+ className: "bg-primary-subtle text-primary",
135
135
  },
136
136
  [WorkspaceWriteBackPhase.WORKSPACE_WRITE_BACK_FAILED]: {
137
137
  label: "Failed",
138
- className: "bg-destructive/10 text-destructive",
138
+ className: "bg-destructive-subtle text-destructive",
139
139
  },
140
140
  };
141
141
 
@@ -44,14 +44,14 @@ export function CollapsibleCode({ label, content, className }: CollapsibleCodePr
44
44
  return (
45
45
  <div className={cn("space-y-1", className)}>
46
46
  <span className="font-medium text-muted-foreground">{label}</span>
47
- <pre className="max-h-80 overflow-auto whitespace-pre-wrap break-words rounded-md border border-border bg-muted/40 p-2 font-mono text-foreground">
47
+ <pre className="max-h-80 overflow-auto whitespace-pre-wrap break-words rounded-md border border-border bg-muted-subtle p-2 font-mono text-foreground">
48
48
  {displayContent}
49
49
  </pre>
50
50
  {needsTruncation && (
51
51
  <button
52
52
  type="button"
53
53
  onClick={() => setIsExpanded((v) => !v)}
54
- className="text-xs font-medium text-primary transition-colors hover:text-primary/80"
54
+ className="text-xs font-medium text-primary transition-colors hover:text-primary-muted"
55
55
  >
56
56
  {isExpanded ? "Show less" : `Show all ${lines.length} lines`}
57
57
  </button>
@@ -100,7 +100,7 @@ export function CollapsiblePre({ content, className }: CollapsiblePreProps) {
100
100
  <button
101
101
  type="button"
102
102
  onClick={() => setIsExpanded((v) => !v)}
103
- className="mt-1 text-xs font-medium text-primary transition-colors hover:text-primary/80"
103
+ className="mt-1 text-xs font-medium text-primary transition-colors hover:text-primary-muted"
104
104
  >
105
105
  {isExpanded ? "Show less" : `Show all ${lines.length} lines`}
106
106
  </button>
@@ -157,13 +157,13 @@ export function CollapsibleJsonBlock({ label, content }: CollapsibleJsonBlockPro
157
157
  </svg>
158
158
  {label}
159
159
  {!isExpanded && isLong && (
160
- <span className="font-normal text-muted-foreground/60">
160
+ <span className="font-normal text-muted-foreground-subtle">
161
161
  ({lines.length} lines)
162
162
  </span>
163
163
  )}
164
164
  </button>
165
165
  {isExpanded && (
166
- <pre className="max-h-80 overflow-auto whitespace-pre-wrap break-words rounded-md border border-border bg-muted/40 p-2 font-mono text-foreground">
166
+ <pre className="max-h-80 overflow-auto whitespace-pre-wrap break-words rounded-md border border-border bg-muted-subtle p-2 font-mono text-foreground">
167
167
  {content}
168
168
  </pre>
169
169
  )}
@@ -428,7 +428,7 @@ export function GitHubRepoPicker({
428
428
  type="button"
429
429
  onClick={handleAdd}
430
430
  disabled={!selectedBranch}
431
- className="rounded-md bg-primary px-2.5 py-1 text-xs text-primary-foreground hover:bg-primary/90 transition-colors disabled:opacity-40"
431
+ className="rounded-md bg-primary px-2.5 py-1 text-xs text-primary-foreground hover:bg-primary-hover transition-colors disabled:opacity-40"
432
432
  >
433
433
  Add
434
434
  </button>
@@ -479,7 +479,7 @@ export function GitHubRepoPicker({
479
479
  type="button"
480
480
  onClick={handleManualAdd}
481
481
  disabled={!manualUrl.trim()}
482
- className="rounded-md bg-primary px-2.5 py-1 text-xs text-primary-foreground hover:bg-primary/90 transition-colors disabled:opacity-40"
482
+ className="rounded-md bg-primary px-2.5 py-1 text-xs text-primary-foreground hover:bg-primary-hover transition-colors disabled:opacity-40"
483
483
  >
484
484
  Add
485
485
  </button>
@@ -502,7 +502,7 @@ export function GitHubRepoPicker({
502
502
  className={["space-y-1.5", className].filter(Boolean).join(" ")}
503
503
  >
504
504
  {/* Mode toggle */}
505
- <div className="flex rounded-md border border-border bg-muted/30 p-0.5">
505
+ <div className="flex rounded-md border border-border bg-muted-faint p-0.5">
506
506
  <button
507
507
  type="button"
508
508
  onClick={() => handleModeSwitch("my-repos")}
@@ -672,7 +672,7 @@ function MyReposList({
672
672
  <>
673
673
  {groups.map((group, gi) => (
674
674
  <div key={group.key}>
675
- <div className="sticky top-0 z-[1] bg-card/95 px-2 py-1 text-[0.65rem] font-medium text-muted-foreground backdrop-blur-sm">
675
+ <div className="sticky top-0 z-[1] bg-card px-2 py-1 text-[0.65rem] font-medium text-muted-foreground backdrop-blur-sm">
676
676
  {group.label}
677
677
  {!group.isRecent && (
678
678
  <span className="ml-1 opacity-50">
@@ -818,7 +818,7 @@ function RepoRow({
818
818
  "flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-xs transition-colors",
819
819
  flatIdx === focusIndex
820
820
  ? "bg-accent text-foreground"
821
- : "text-foreground hover:bg-accent/50",
821
+ : "text-foreground hover:bg-accent-hover",
822
822
  ].join(" ")}
823
823
  role="option"
824
824
  aria-selected={flatIdx === focusIndex}
@@ -152,7 +152,7 @@ export function GrantAccessForm({
152
152
  disabled={!canSubmit}
153
153
  className={cn(
154
154
  "inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs font-medium",
155
- "bg-primary text-primary-foreground hover:bg-primary/90",
155
+ "bg-primary text-primary-foreground hover:bg-primary-hover",
156
156
  "disabled:pointer-events-none disabled:opacity-40",
157
157
  )}
158
158
  >
@@ -167,7 +167,7 @@ export function GrantAccessForm({
167
167
  disabled={isCreating}
168
168
  className={cn(
169
169
  "rounded-md px-3 py-1.5 text-xs",
170
- "text-muted-foreground hover:text-foreground hover:bg-accent/50",
170
+ "text-muted-foreground hover:text-foreground hover:bg-accent-hover",
171
171
  "disabled:pointer-events-none disabled:opacity-50",
172
172
  )}
173
173
  >
@@ -86,7 +86,7 @@ export function OrgMembersPanel({
86
86
  {Array.from({ length: 3 }, (_, i) => (
87
87
  <div
88
88
  key={i}
89
- className="bg-muted/40 h-14 animate-pulse rounded-lg"
89
+ className="bg-muted-subtle h-14 animate-pulse rounded-lg"
90
90
  />
91
91
  ))}
92
92
  </div>
@@ -215,7 +215,7 @@ function MemberRow({
215
215
  return (
216
216
  <div
217
217
  role="listitem"
218
- className="flex items-center gap-3 rounded-lg border border-border/60 px-3 py-2.5 hover:border-border transition-colors"
218
+ className="flex items-center gap-3 rounded-lg border border-border-muted px-3 py-2.5 hover:border-border transition-colors"
219
219
  >
220
220
  {/* Avatar */}
221
221
  <div className="flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-xs font-medium text-muted-foreground">
@@ -255,7 +255,7 @@ function MemberRow({
255
255
  type="button"
256
256
  onClick={() => startAction("change-role")}
257
257
  aria-label={`Change role for ${name}`}
258
- className="shrink-0 rounded p-1 text-muted-foreground hover:text-foreground hover:bg-accent/50 transition-colors"
258
+ className="shrink-0 rounded p-1 text-muted-foreground hover:text-foreground hover:bg-accent-hover transition-colors"
259
259
  >
260
260
  <EditIcon />
261
261
  </button>
@@ -263,7 +263,7 @@ function MemberRow({
263
263
  type="button"
264
264
  onClick={() => startAction("remove")}
265
265
  aria-label={`Remove ${name}`}
266
- className="shrink-0 rounded p-1 text-muted-foreground hover:text-destructive hover:bg-destructive/10 transition-colors"
266
+ className="shrink-0 rounded p-1 text-muted-foreground hover:text-destructive hover:bg-destructive-subtle transition-colors"
267
267
  >
268
268
  <TrashIcon />
269
269
  </button>
@@ -284,7 +284,7 @@ function RoleBadge({ grant }: { grant: RoleGrant }) {
284
284
  className={cn(
285
285
  "inline-flex items-center rounded-md border px-2 py-0.5 text-[0.65rem] font-medium",
286
286
  grant.isInherited
287
- ? "border-border/50 text-muted-foreground bg-muted/50 italic"
287
+ ? "border-border-muted text-muted-foreground bg-muted-subtle italic"
288
288
  : "border-border bg-muted text-foreground",
289
289
  )}
290
290
  title={
@@ -334,7 +334,7 @@ function RemoveConfirmation({
334
334
  return (
335
335
  <div
336
336
  role="listitem"
337
- className="flex items-center justify-between rounded-lg border border-destructive/30 bg-destructive/5 px-3 py-2.5"
337
+ className="flex items-center justify-between rounded-lg border border-destructive/30 bg-destructive-subtle px-3 py-2.5"
338
338
  >
339
339
  <div className="min-w-0 flex-1">
340
340
  <p className="text-xs text-foreground">
@@ -355,7 +355,7 @@ function RemoveConfirmation({
355
355
  disabled={isRevoking}
356
356
  className={cn(
357
357
  "inline-flex items-center gap-1 rounded-md px-2.5 py-1 text-xs font-medium",
358
- "bg-destructive text-destructive-foreground hover:bg-destructive/90",
358
+ "bg-destructive text-destructive-foreground hover:bg-destructive-hover",
359
359
  "disabled:pointer-events-none disabled:opacity-50",
360
360
  )}
361
361
  >
@@ -368,7 +368,7 @@ function RemoveConfirmation({
368
368
  disabled={isRevoking}
369
369
  className={cn(
370
370
  "rounded-md px-2.5 py-1 text-xs",
371
- "text-muted-foreground hover:text-foreground hover:bg-accent/50",
371
+ "text-muted-foreground hover:text-foreground hover:bg-accent-hover",
372
372
  "disabled:pointer-events-none disabled:opacity-50",
373
373
  )}
374
374
  >
@@ -460,7 +460,7 @@ function ChangeRoleRow({
460
460
  return (
461
461
  <div
462
462
  role="listitem"
463
- className="rounded-lg border border-primary/30 bg-primary/5 px-3 py-2.5 space-y-2"
463
+ className="rounded-lg border border-primary/30 bg-primary-subtle px-3 py-2.5 space-y-2"
464
464
  >
465
465
  <p className="text-xs text-foreground">
466
466
  Change role for <span className="font-medium">{memberName}</span>
@@ -486,7 +486,7 @@ function ChangeRoleRow({
486
486
  disabled={!canConfirm}
487
487
  className={cn(
488
488
  "inline-flex items-center gap-1 rounded-md px-2.5 py-1 text-xs font-medium",
489
- "bg-primary text-primary-foreground hover:bg-primary/90",
489
+ "bg-primary text-primary-foreground hover:bg-primary-hover",
490
490
  "disabled:pointer-events-none disabled:opacity-40",
491
491
  )}
492
492
  >
@@ -499,7 +499,7 @@ function ChangeRoleRow({
499
499
  disabled={isWorking}
500
500
  className={cn(
501
501
  "rounded-md px-2.5 py-1 text-xs",
502
- "text-muted-foreground hover:text-foreground hover:bg-accent/50",
502
+ "text-muted-foreground hover:text-foreground hover:bg-accent-hover",
503
503
  "disabled:pointer-events-none disabled:opacity-50",
504
504
  )}
505
505
  >
@@ -261,7 +261,7 @@ export function CreateIdentityProviderForm({
261
261
  disabled={!canSubmit}
262
262
  className={cn(
263
263
  "inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs font-medium",
264
- "bg-primary text-primary-foreground hover:bg-primary/90",
264
+ "bg-primary text-primary-foreground hover:bg-primary-hover",
265
265
  "disabled:pointer-events-none disabled:opacity-40",
266
266
  )}
267
267
  >
@@ -276,7 +276,7 @@ export function CreateIdentityProviderForm({
276
276
  disabled={isCreating}
277
277
  className={cn(
278
278
  "rounded-md px-3 py-1.5 text-xs",
279
- "text-muted-foreground hover:text-foreground hover:bg-accent/50",
279
+ "text-muted-foreground hover:text-foreground hover:bg-accent-hover",
280
280
  "disabled:pointer-events-none disabled:opacity-50",
281
281
  )}
282
282
  >
@@ -374,7 +374,7 @@ function JitSection({
374
374
  }) {
375
375
  if (isSso) {
376
376
  return (
377
- <div className="rounded-md border border-border/60 bg-muted/30 px-3 py-2">
377
+ <div className="rounded-md border border-border-muted bg-muted-faint px-3 py-2">
378
378
  <p className="text-[0.65rem] text-muted-foreground">
379
379
  SSO providers automatically provision accounts and grant the{" "}
380
380
  <span className="font-medium text-foreground">viewer</span> role on
@@ -386,7 +386,7 @@ function JitSection({
386
386
 
387
387
  return (
388
388
  <fieldset className="space-y-2.5" disabled={disabled}>
389
- <hr className="border-border/40" />
389
+ <hr className="border-border-muted" />
390
390
  <legend className="text-xs font-medium text-foreground">
391
391
  JIT provisioning
392
392
  </legend>
@@ -210,7 +210,7 @@ export function IdentityProviderDetailPanel({
210
210
  onClick={enterEdit}
211
211
  className={cn(
212
212
  "shrink-0 rounded-md px-2.5 py-1.5 text-xs font-medium",
213
- "text-muted-foreground hover:text-foreground hover:bg-accent/50",
213
+ "text-muted-foreground hover:text-foreground hover:bg-accent-hover",
214
214
  "transition-colors",
215
215
  )}
216
216
  >
@@ -341,7 +341,7 @@ export function IdentityProviderDetailPanel({
341
341
  disabled={!canSave}
342
342
  className={cn(
343
343
  "inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs font-medium",
344
- "bg-primary text-primary-foreground hover:bg-primary/90",
344
+ "bg-primary text-primary-foreground hover:bg-primary-hover",
345
345
  "disabled:pointer-events-none disabled:opacity-40",
346
346
  )}
347
347
  >
@@ -354,7 +354,7 @@ export function IdentityProviderDetailPanel({
354
354
  disabled={isUpdating}
355
355
  className={cn(
356
356
  "rounded-md px-2.5 py-1.5 text-xs",
357
- "text-muted-foreground hover:text-foreground hover:bg-accent/50",
357
+ "text-muted-foreground hover:text-foreground hover:bg-accent-hover",
358
358
  "disabled:pointer-events-none disabled:opacity-50",
359
359
  )}
360
360
  >
@@ -414,7 +414,7 @@ function ViewMode({
414
414
  {/* JIT provisioning fields */}
415
415
  {!spec?.isSsoProvider && spec?.autoProvisionAccounts && (
416
416
  <>
417
- <hr className="border-border/40" />
417
+ <hr className="border-border-muted" />
418
418
  <Field
419
419
  label="Auto-provision accounts"
420
420
  value={spec.autoProvisionAccounts ? "Enabled" : "Disabled"}
@@ -537,7 +537,7 @@ function CopyableField({
537
537
  onClick={handleCopy}
538
538
  className={cn(
539
539
  "shrink-0 rounded px-1.5 py-0.5 text-[0.6rem]",
540
- "text-muted-foreground hover:text-foreground hover:bg-accent/50",
540
+ "text-muted-foreground hover:text-foreground hover:bg-accent-hover",
541
541
  "transition-colors",
542
542
  )}
543
543
  aria-label={`Copy ${label}`}
@@ -671,7 +671,7 @@ function JitEditSection({
671
671
  }) {
672
672
  if (isSso) {
673
673
  return (
674
- <div className="rounded-md border border-border/60 bg-muted/30 px-3 py-2">
674
+ <div className="rounded-md border border-border-muted bg-muted-faint px-3 py-2">
675
675
  <p className="text-[0.65rem] text-muted-foreground">
676
676
  SSO providers automatically provision accounts and grant the{" "}
677
677
  <span className="font-medium text-foreground">viewer</span> role on
@@ -683,7 +683,7 @@ function JitEditSection({
683
683
 
684
684
  return (
685
685
  <fieldset className="space-y-2.5" disabled={disabled}>
686
- <hr className="border-border/40" />
686
+ <hr className="border-border-muted" />
687
687
  <legend className="text-xs font-medium text-foreground">
688
688
  JIT provisioning
689
689
  </legend>
@@ -71,7 +71,7 @@ export function IdentityProviderListPanel({
71
71
  {Array.from({ length: 2 }, (_, i) => (
72
72
  <div
73
73
  key={i}
74
- className="bg-muted/40 h-14 animate-pulse rounded-lg"
74
+ className="bg-muted-subtle h-14 animate-pulse rounded-lg"
75
75
  />
76
76
  ))}
77
77
  </div>
@@ -172,7 +172,7 @@ function IdpRow({
172
172
  return (
173
173
  <div
174
174
  role="listitem"
175
- className="flex items-center justify-between rounded-lg border border-destructive/30 bg-destructive/5 px-3 py-2.5"
175
+ className="flex items-center justify-between rounded-lg border border-destructive/30 bg-destructive-subtle px-3 py-2.5"
176
176
  >
177
177
  <div className="min-w-0 flex-1">
178
178
  <p className="text-xs text-foreground">
@@ -192,7 +192,7 @@ function IdpRow({
192
192
  disabled={isDeleting}
193
193
  className={cn(
194
194
  "inline-flex items-center gap-1 rounded-md px-2.5 py-1 text-xs font-medium",
195
- "bg-destructive text-destructive-foreground hover:bg-destructive/90",
195
+ "bg-destructive text-destructive-foreground hover:bg-destructive-hover",
196
196
  "disabled:pointer-events-none disabled:opacity-50",
197
197
  )}
198
198
  >
@@ -205,7 +205,7 @@ function IdpRow({
205
205
  disabled={isDeleting}
206
206
  className={cn(
207
207
  "rounded-md px-2.5 py-1 text-xs",
208
- "text-muted-foreground hover:text-foreground hover:bg-accent/50",
208
+ "text-muted-foreground hover:text-foreground hover:bg-accent-hover",
209
209
  "disabled:pointer-events-none disabled:opacity-50",
210
210
  )}
211
211
  >
@@ -219,7 +219,7 @@ function IdpRow({
219
219
  return (
220
220
  <div
221
221
  role="listitem"
222
- className="flex items-center gap-3 rounded-lg border border-border/60 px-3 py-2.5 hover:border-border transition-colors"
222
+ className="flex items-center gap-3 rounded-lg border border-border-muted px-3 py-2.5 hover:border-border transition-colors"
223
223
  >
224
224
  <ShieldIcon />
225
225
 
@@ -260,7 +260,7 @@ function IdpRow({
260
260
  aria-label={`Edit ${name}`}
261
261
  className={cn(
262
262
  "shrink-0 rounded p-1",
263
- "text-muted-foreground hover:text-foreground hover:bg-accent/50",
263
+ "text-muted-foreground hover:text-foreground hover:bg-accent-hover",
264
264
  "transition-colors",
265
265
  )}
266
266
  >
@@ -273,7 +273,7 @@ function IdpRow({
273
273
  aria-label={`Delete ${name}`}
274
274
  className={cn(
275
275
  "shrink-0 rounded p-1",
276
- "text-muted-foreground hover:text-destructive hover:bg-destructive/10",
276
+ "text-muted-foreground hover:text-destructive hover:bg-destructive-subtle",
277
277
  "transition-colors",
278
278
  )}
279
279
  >
@@ -294,7 +294,7 @@ function StepIndicator({ current }: { current: WizardStep }) {
294
294
  <span
295
295
  className={cn(
296
296
  "h-px w-4",
297
- state === "upcoming" ? "bg-border" : "bg-primary/40",
297
+ state === "upcoming" ? "bg-border" : "bg-primary-subtle",
298
298
  )}
299
299
  />
300
300
  )}
@@ -305,7 +305,7 @@ function StepIndicator({ current }: { current: WizardStep }) {
305
305
  ? "text-primary"
306
306
  : state === "done"
307
307
  ? "text-muted-foreground"
308
- : "text-muted-foreground/50",
308
+ : "text-muted-foreground-faint",
309
309
  )}
310
310
  >
311
311
  {s.label}
@@ -381,7 +381,7 @@ function ConfigureStep({
381
381
  />
382
382
  ))}
383
383
 
384
- <hr className="border-border/40" />
384
+ <hr className="border-border-muted" />
385
385
 
386
386
  {/* Common fields */}
387
387
  <FieldInput
@@ -417,7 +417,7 @@ function ConfigureStep({
417
417
  disabled={!canContinue}
418
418
  className={cn(
419
419
  "inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs font-medium",
420
- "bg-primary text-primary-foreground hover:bg-primary/90",
420
+ "bg-primary text-primary-foreground hover:bg-primary-hover",
421
421
  "disabled:pointer-events-none disabled:opacity-40",
422
422
  )}
423
423
  >
@@ -590,7 +590,7 @@ function ReviewStep({
590
590
  disabled={!canSubmit}
591
591
  className={cn(
592
592
  "inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs font-medium",
593
- "bg-primary text-primary-foreground hover:bg-primary/90",
593
+ "bg-primary text-primary-foreground hover:bg-primary-hover",
594
594
  "disabled:pointer-events-none disabled:opacity-40",
595
595
  )}
596
596
  >
@@ -718,7 +718,7 @@ function JitProvisioningSection({
718
718
  }) {
719
719
  if (isSso) {
720
720
  return (
721
- <div className="rounded-md border border-border/60 bg-muted/30 px-3 py-2">
721
+ <div className="rounded-md border border-border-muted bg-muted-faint px-3 py-2">
722
722
  <p className="text-[0.65rem] text-muted-foreground">
723
723
  SSO providers automatically provision accounts and grant the{" "}
724
724
  <span className="font-medium text-foreground">viewer</span> role on
@@ -730,7 +730,7 @@ function JitProvisioningSection({
730
730
 
731
731
  return (
732
732
  <fieldset className="space-y-2.5" disabled={disabled}>
733
- <hr className="border-border/40" />
733
+ <hr className="border-border-muted" />
734
734
  <legend className="text-xs font-medium text-foreground">
735
735
  JIT provisioning
736
736
  </legend>
@@ -848,7 +848,7 @@ function TextButton({
848
848
  disabled={disabled}
849
849
  className={cn(
850
850
  "rounded-md px-2.5 py-1.5 text-xs",
851
- "text-muted-foreground hover:text-foreground hover:bg-accent/50",
851
+ "text-muted-foreground hover:text-foreground hover:bg-accent-hover",
852
852
  "disabled:pointer-events-none disabled:opacity-50",
853
853
  )}
854
854
  >
@@ -45,11 +45,11 @@ export function ProviderPicker({ onSelect, className }: ProviderPickerProps) {
45
45
  onClick={() => onSelect(preset)}
46
46
  className={cn(
47
47
  "flex flex-col items-start gap-2 rounded-lg px-3 py-3 text-left transition-colors",
48
- "border hover:border-primary/60 hover:bg-accent/30",
48
+ "border hover:border-primary/60 hover:bg-accent-hover",
49
49
  "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
50
50
  preset.id === "custom"
51
51
  ? "border-dashed border-border"
52
- : "border-border/60",
52
+ : "border-border-muted",
53
53
  )}
54
54
  >
55
55
  <ProviderIcon presetId={preset.id} />
package/src/index.ts CHANGED
@@ -5,6 +5,10 @@ export { StigmerContext } from "./context";
5
5
  // Hooks
6
6
  export { useStigmer } from "./hooks";
7
7
 
8
+ // Color mode
9
+ export { ColorModeContext, useColorMode } from "./color-mode";
10
+ export type { ColorMode, ResolvedColorMode } from "./color-mode";
11
+
8
12
  // Deployment mode and resource availability
9
13
  export {
10
14
  DeploymentModeContext,
@@ -29,22 +33,16 @@ export type {
29
33
  ModelSelectorProps,
30
34
  } from "./models";
31
35
 
32
- // Workspace — behavior hooks, data hook, and styled components
36
+ // Workspace — behavior hooks and styled components
33
37
  export {
34
38
  useWorkspaceEntries,
35
39
  WorkspaceEditor,
36
- useFolderListing,
37
- FolderBrowser,
38
40
  WorkspaceSummary,
39
41
  } from "./workspace";
40
42
  export type {
41
43
  WorkspaceEntry,
42
44
  UseWorkspaceEntriesReturn,
43
45
  WorkspaceEditorProps,
44
- FolderEntry,
45
- FolderListing,
46
- UseFolderListingReturn,
47
- FolderBrowserProps,
48
46
  WorkspaceSummaryProps,
49
47
  } from "./workspace";
50
48
 
@@ -60,6 +58,13 @@ export {
60
58
  useSessionWriteBacks,
61
59
  useSessionUsage,
62
60
  useAgentRefFromSession,
61
+ useNewSessionFlow,
62
+ useSessionPageFlow,
63
+ usePersistedModel,
64
+ useEditSessionPrep,
65
+ CREATOR_AGENTS,
66
+ parseDraftType,
67
+ parseDraftParams,
63
68
  groupSessionsByTime,
64
69
  PENDING_SUBJECT,
65
70
  resolvedSubject,
@@ -83,6 +88,14 @@ export type {
83
88
  ModelCostEntry,
84
89
  UseSessionUsageReturn,
85
90
  UseAgentRefFromSessionReturn,
91
+ UseNewSessionFlowOptions,
92
+ UseNewSessionFlowReturn,
93
+ UseSessionPageFlowOptions,
94
+ UseSessionPageFlowReturn,
95
+ UsePersistedModelReturn,
96
+ UseEditSessionPrepReturn,
97
+ DraftResourceType,
98
+ DraftParams,
86
99
  SessionGroup,
87
100
  } from "./session";
88
101
 
@@ -633,3 +646,29 @@ export type {
633
646
  UsePersonalAgentInstanceReturn,
634
647
  UseCreateAgentInstanceReturn,
635
648
  } from "./agent-instance";
649
+
650
+ // Runner — data hooks, action hooks, styled picker, admin list panel, and phase utilities
651
+ export {
652
+ useRunnerList,
653
+ useLaunchLocalRunner,
654
+ useStopRunner,
655
+ useDeleteRunner,
656
+ RunnerPicker,
657
+ RunnerListPanel,
658
+ phaseLabel,
659
+ phaseDotColor,
660
+ isActivePhase,
661
+ PHASE_SORT_ORDER,
662
+ } from "./runner";
663
+ export type {
664
+ UseRunnerListOptions,
665
+ UseRunnerListReturn,
666
+ UseLaunchLocalRunnerOptions,
667
+ UseLaunchLocalRunnerReturn,
668
+ LaunchLocalRunnerResult,
669
+ StopRunnerInput,
670
+ UseStopRunnerReturn,
671
+ UseDeleteRunnerReturn,
672
+ RunnerPickerProps,
673
+ RunnerListPanelProps,
674
+ } from "./runner";
@@ -42,7 +42,7 @@ export function CloudFeatureNotice({
42
42
  <div
43
43
  role="status"
44
44
  className={cn(
45
- "bg-muted/50 text-muted-foreground flex items-start gap-2.5 rounded-lg border border-transparent px-4 py-3",
45
+ "bg-muted-subtle text-muted-foreground flex items-start gap-2.5 rounded-lg border border-transparent px-4 py-3",
46
46
  className,
47
47
  )}
48
48
  >
@@ -134,7 +134,7 @@ export function Tabs({
134
134
  className={cn(
135
135
  "inline-flex min-w-[1.25rem] items-center justify-center rounded-full px-1 py-px text-[10px] font-medium leading-none",
136
136
  isActive
137
- ? "bg-primary/10 text-primary"
137
+ ? "bg-primary-subtle text-primary"
138
138
  : "bg-muted text-muted-foreground",
139
139
  )}
140
140
  >
@@ -48,7 +48,7 @@ export const MARKDOWN_COMPONENTS: Components = {
48
48
  return (
49
49
  <a
50
50
  href={href}
51
- className="text-primary underline underline-offset-2 hover:text-primary/80"
51
+ className="text-primary underline underline-offset-2 hover:text-primary-muted"
52
52
  target="_blank"
53
53
  rel="noopener noreferrer"
54
54
  {...props}
@@ -174,7 +174,7 @@ export const MARKDOWN_COMPONENTS: Components = {
174
174
  th({ children, ...props }: MdProps<"th">) {
175
175
  return (
176
176
  <th
177
- className="border border-border px-3 py-1.5 text-left font-medium text-foreground bg-muted/50"
177
+ className="border border-border px-3 py-1.5 text-left font-medium text-foreground bg-muted-subtle"
178
178
  {...props}
179
179
  >
180
180
  {children}
@@ -89,7 +89,7 @@ export function InvitationCreatedAlert({
89
89
  aria-label="Dismiss"
90
90
  className={cn(
91
91
  "shrink-0 rounded p-1",
92
- "text-muted-foreground hover:text-foreground hover:bg-accent/50",
92
+ "text-muted-foreground hover:text-foreground hover:bg-accent-hover",
93
93
  "transition-colors",
94
94
  )}
95
95
  >
@@ -114,7 +114,7 @@ export function InvitationCreatedAlert({
114
114
  onClick={handleCopy}
115
115
  className={cn(
116
116
  "inline-flex shrink-0 items-center gap-1.5 rounded-md px-3 py-1.5 text-xs font-medium",
117
- "bg-primary text-primary-foreground hover:bg-primary/90",
117
+ "bg-primary text-primary-foreground hover:bg-primary-hover",
118
118
  "transition-colors",
119
119
  )}
120
120
  >