diff --git a/.oxlintrc.json b/.oxlintrc.json
index a2b1ca2e33..064637fe5e 100644
--- a/.oxlintrc.json
+++ b/.oxlintrc.json
@@ -61,17 +61,7 @@
"paths": [
{
"name": "lucide-react",
- "message": "lucide-react is retired — import from @/lib/icons instead."
- },
- {
- "name": "@phosphor-icons/react",
- "message": "Import icons from @/lib/icons, not @phosphor-icons/react directly."
- }
- ],
- "patterns": [
- {
- "group": ["@phosphor-icons/react/*"],
- "message": "Import icons from @/lib/icons, not @phosphor-icons/react directly."
+ "message": "Import icons from @/lib/icons, not lucide-react directly."
}
]
}
diff --git a/apps/web/package.json b/apps/web/package.json
index ebe8031a9e..8178130da8 100644
--- a/apps/web/package.json
+++ b/apps/web/package.json
@@ -27,13 +27,13 @@
"@corbits/workflows": "workspace:*",
"@intx/types": "workspace:*",
"@isomorphic-git/lightning-fs": "4.7.0",
- "@phosphor-icons/react": "^2.1.10",
"@radix-ui/react-dialog": "^1.1.15",
"@radix-ui/react-slot": "^1.2.3",
"@tanstack/react-query": "catalog:",
"arktype": "catalog:",
"buffer": "^6.0.3",
"isomorphic-git": "catalog:",
+ "lucide-react": "^1.49.0",
"react": "^19.2.0",
"react-dom": "^19.2.0",
"react-joyride": "^2.9.3"
diff --git a/apps/web/src/lib/icons/index.test.tsx b/apps/web/src/lib/icons/index.test.tsx
deleted file mode 100644
index ca1ed374c7..0000000000
--- a/apps/web/src/lib/icons/index.test.tsx
+++ /dev/null
@@ -1,24 +0,0 @@
-import { describe, expect, test } from "bun:test";
-
-import * as icons from "./index";
-
-describe("@/lib/icons", () => {
- test("never exports a Sparkle glyph", () => {
- const names = Object.keys(icons);
- const sparkleNames = names.filter((name) => /sparkle/i.test(name));
- expect(sparkleNames).toEqual([]);
- });
-
- test("re-exports the bold icon provider and icon type", () => {
- expect(typeof icons.BoldIconProvider).toBe("function");
- });
-
- // Regression: a bare `{ weight: "bold" }` silently drops Phosphor's own
- // `size` default, since the context value is replaced, not merged.
- test("BoldIconProvider preserves Phosphor's size default alongside bold weight", () => {
- expect(icons.boldIconContextValue).toEqual({
- size: "1em",
- weight: "bold",
- });
- });
-});
diff --git a/apps/web/src/lib/icons/index.tsx b/apps/web/src/lib/icons/index.tsx
index e1389589c2..bcbe7983ff 100644
--- a/apps/web/src/lib/icons/index.tsx
+++ b/apps/web/src/lib/icons/index.tsx
@@ -1,88 +1,85 @@
// Sparkle/Sparkles is banned outright — it read as a generic "AI" cliché.
// A curated re-export, not a full pass-through, so a stray import can't
-// reach for an off-list icon or tiptoe around the bold-weight rule.
-import { IconContext, type Icon, type IconProps } from "@phosphor-icons/react";
+// reach for an off-list icon or tiptoe around the stroke-width rule.
+import { LucideProvider, type LucideIcon, type LucideProps } from "lucide-react";
import type { ReactNode } from "react";
-export type { Icon, IconProps };
+export type Icon = LucideIcon;
+export type IconProps = LucideProps;
export {
Archive,
- ArrowBendUpLeft,
- ArrowClockwise,
ArrowDown,
ArrowLeft,
- ArrowsDownUp,
- ArrowsIn,
- ArrowsOut,
- ArrowSquareOut,
+ ArrowRight,
ArrowUp,
+ ArrowUpDown as ArrowsDownUp,
Bell,
- BookBookmark,
- CaretDown,
- CaretLeft,
- CaretRight,
- ChartBar,
- ChatCircle,
- ChatCircleDots,
+ BookMarked as BookBookmark,
+ Bot as Robot,
Check,
- CircleNotch,
+ ChartColumn as ChartBar,
+ ChevronDown as CaretDown,
+ ChevronLeft as CaretLeft,
+ ChevronRight as CaretRight,
+ CircleAlert as WarningCircle,
+ CircleUser as UserCircle,
+ CirclePlay as PlayCircle,
Clock,
Compass,
+ CornerUpLeft as ArrowBendUpLeft,
Copy,
Cpu,
- DotsThree,
- FileDashed,
+ Diff as GitDiff,
+ Ellipsis as DotsThree,
FileText,
- FlowArrow,
+ FileQuestionMark as FileDashed,
FolderOpen,
GitBranch,
- GitDiff,
GitPullRequest,
Hash,
Key,
- Lightning,
- LinkSimple,
- ListBullets,
+ Layers as Stack,
+ LayoutGrid as SquaresFour,
+ Link as LinkSimple,
+ List as ListBullets,
+ LoaderCircle as CircleNotch,
Lock,
- MagnifyingGlass,
- Microphone,
- MoonStars,
- PaperPlaneRight,
+ LogOut as SignOut,
+ Maximize2 as ArrowsOut,
+ MessageCircle as ChatCircle,
+ MessageCircleMore as ChatCircleDots,
+ Mic as Microphone,
+ Minimize2 as ArrowsIn,
+ MoonStar as MoonStars,
Paperclip,
- PencilSimple,
- PlayCircle,
+ Pencil as PencilSimple,
+ Pin as PushPin,
+ PinOff as PushPinSlash,
+ Plug as Plugs,
Plus,
- Plugs,
- PushPin,
- PushPinSlash,
Repeat,
- Robot,
+ RotateCw as ArrowClockwise,
+ Search as MagnifyingGlass,
+ Send as PaperPlaneRight,
Shield,
- SignOut,
SlidersHorizontal,
- Smiley,
- Stack,
+ Smile as Smiley,
+ Square as Stop,
+ SquareArrowOutUpRight as ArrowSquareOut,
Star,
- Stop,
- SquaresFour,
+ TriangleAlert as Warning,
User,
- UserCircle,
UserPlus,
Users,
- Warning,
- WarningCircle,
+ Workflow as FlowArrow,
X,
-} from "@phosphor-icons/react";
+ Zap as Lightning,
+} from "lucide-react";
-// `IconContext.Provider` replaces Phosphor's whole context value rather
-// than merging it, so every library default (`size`) must be restated
-// alongside the override — dropping it silently un-sizes bare glyphs.
-export const boldIconContextValue = { size: "1em", weight: "bold" } as const;
-
-/** Wraps a subtree so every Phosphor icon under it defaults to bold weight
- * without repeating `weight="bold"` at each call site. Mounted once at each
- * app's root (see `apps/web/src/app.tsx`). */
+/** Wraps a subtree so every icon under it defaults to a 2px stroke without
+ * repeating it at each call site (the `1em` default size is `tailwind.css`).
+ * Mounted once at each app's root (see `apps/web/src/app.tsx`). */
export function BoldIconProvider({ children }: { children: ReactNode }) {
- return {children};
+ return {children};
}
diff --git a/apps/web/src/pages/diff-view.tsx b/apps/web/src/pages/diff-view.tsx
index d407824ebf..9d27f1dfe8 100644
--- a/apps/web/src/pages/diff-view.tsx
+++ b/apps/web/src/pages/diff-view.tsx
@@ -4,13 +4,14 @@
import { Badge, Table, TableBody, TableCell, TableRow } from "@corbits/react-ui";
import { diffText } from "@/lib/text-diff";
import type { DiffLine } from "@/lib/text-diff";
-import { useMemo } from "react";
+import { ArrowRight, DotsThree } from "@/lib/icons";
+import { useMemo, type ReactNode } from "react";
-const MARKER: Record = {
+const MARKER: Record = {
context: " ",
added: "+",
removed: "-",
- skipped: "⋯",
+ skipped: ,
};
const ROW_CLASS: Record = {
@@ -104,9 +105,7 @@ export function DiffHeading({
return (
{beforeLabel}
-
- →
-
+
{afterLabel}
);
diff --git a/apps/web/src/pages/insights-page.tsx b/apps/web/src/pages/insights-page.tsx
index 99479ff40d..6efb0092cf 100644
--- a/apps/web/src/pages/insights-page.tsx
+++ b/apps/web/src/pages/insights-page.tsx
@@ -20,7 +20,7 @@ import {
type BadgeTone,
type RunStatus,
} from "@corbits/react-ui";
-import { ChartBar } from "@/lib/icons";
+import { ArrowRight, ChartBar } from "@/lib/icons";
import { runOutcomeStatus, runStatusLabel, withListingAbandoned } from "@corbits/workflows/client";
import type * as React from "react";
import { useEffect, useState } from "react";
@@ -274,7 +274,10 @@ function RecentRunRows({
))}
- All runs →
+
+ All runs
+
+
diff --git a/apps/web/src/pages/new-workbench-picker.tsx b/apps/web/src/pages/new-workbench-picker.tsx
index 3c1163b083..5a70f3e4f8 100644
--- a/apps/web/src/pages/new-workbench-picker.tsx
+++ b/apps/web/src/pages/new-workbench-picker.tsx
@@ -4,7 +4,7 @@
import { Button, toast } from "@corbits/react-ui";
import { useDismissablePopover } from "@corbits/react-ui/hooks/use-dismissable-popover";
-import { PaperPlaneRight } from "@/lib/icons";
+import { Check, PaperPlaneRight, X } from "@/lib/icons";
import { CHAT_STRINGS, WorkbenchLoadingState } from "@/chat";
import { isMyraAgent, listChatAgents } from "@/chat/threads-api";
import { useMemo, useRef, useState } from "react";
@@ -228,7 +228,7 @@ export function NewWorkbenchPickerRoute() {
aria-label={`Remove ${agent.name}`}
onClick={() => toggleAgent(agent.id)}
>
- ×
+
))}
@@ -326,7 +326,7 @@ export function NewWorkbenchPickerRoute() {
{agent.name}
- {selected ? ✓ : null}
+ {selected ? : null}
);
})}
diff --git a/apps/web/src/tailwind.css b/apps/web/src/tailwind.css
index 7bef695c89..6b922818b9 100644
--- a/apps/web/src/tailwind.css
+++ b/apps/web/src/tailwind.css
@@ -36,6 +36,13 @@
--font-mono: "Space Mono", "Fira Code", Monaco, Consolas, monospace;
}
+/* Icons default to the surrounding text size; `:where` keeps zero specificity
+ so a size-* utility on the icon still wins. */
+:where(svg.lucide) {
+ width: 1em;
+ height: 1em;
+}
+
/* Workspace UI packages are source-only (no build step): their .tsx files
carry className utilities and artifact-ui's kind-color.ts returns palette
class strings. Tailwind v4's auto-detection stays inside apps/web, so each
diff --git a/apps/web/vite.config.ts b/apps/web/vite.config.ts
index 89f2865c1a..1f6e0c6948 100644
--- a/apps/web/vite.config.ts
+++ b/apps/web/vite.config.ts
@@ -35,7 +35,7 @@ function manualChunks(id: string): string | undefined {
if (id.includes("@corbits+react-ui") || id.includes("@corbits/react-ui")) {
return "react-ui";
}
- if (id.includes("@phosphor-icons/react")) return "icons";
+ if (id.includes("lucide-react")) return "icons";
if (id.includes("@tanstack")) return "query-vendor";
return undefined;
}
diff --git a/bun.lock b/bun.lock
index b93f5d64ba..8331296e63 100644
--- a/bun.lock
+++ b/bun.lock
@@ -146,13 +146,13 @@
"@corbits/workflows": "workspace:*",
"@intx/types": "workspace:*",
"@isomorphic-git/lightning-fs": "4.7.0",
- "@phosphor-icons/react": "^2.1.10",
"@radix-ui/react-dialog": "^1.1.15",
"@radix-ui/react-slot": "^1.2.3",
"@tanstack/react-query": "catalog:",
"arktype": "catalog:",
"buffer": "^6.0.3",
"isomorphic-git": "catalog:",
+ "lucide-react": "^1.49.0",
"react": "^19.2.0",
"react-dom": "^19.2.0",
"react-joyride": "^2.9.3",
@@ -905,8 +905,6 @@
"@oxlint/binding-win32-x64-msvc": ["@oxlint/binding-win32-x64-msvc@1.83.0", "", { "os": "win32", "cpu": "x64" }, "sha512-LZRubd7ph13QmAg4fFecTYVZkiYbROR2Htaxh/ufWRkDhPOm2wrwaEYR89e0YpPFD3dqBrPoxS7myBw5hmYA7Q=="],
- "@phosphor-icons/react": ["@phosphor-icons/react@2.1.10", "", { "peerDependencies": { "react": ">= 16.8", "react-dom": ">= 16.8" } }, "sha512-vt8Tvq8GLjheAZZYa+YG/pW7HDbov8El/MANW8pOAz4eGxrwhnbfrQZq0Cp4q8zBEu8NIhHdnr+r8thnfRSNYA=="],
-
"@puppeteer/browsers": ["@puppeteer/browsers@3.2.2", "", { "dependencies": { "modern-tar": "^0.8.4", "yargs": "^18.0.0" }, "peerDependencies": { "proxy-agent": ">=8.0.1", "yauzl": "^2.10.0 || ^3.4.0" }, "optionalPeers": ["proxy-agent", "yauzl"], "bin": { "browsers": "lib/main-cli.js" } }, "sha512-q2BU4YfO9h/Wt7IcWPcggpOOqLk2Tbs1hDwolvKZrweRjy751OJBKMN9zO5bfD0pzU7X/tvKw/exQds4pM/LOg=="],
"@radix-ui/primitive": ["@radix-ui/primitive@1.1.7", "", {}, "sha512-rqWnm76nYT8HoNNqEjpgJ7Pw/DrBj5iBTrmEPo6HTX5+VJyBNOqTdv4g89G63HuR5g0AaENoAcH7Is5fF2kZ8Q=="],
@@ -1445,7 +1443,7 @@
"lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="],
- "lucide-react": ["lucide-react@1.47.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-o8C23aXpNQypRY73W7fW02EyvWJinEMXgKeGjFoKym0zj3Q73hD97A1IQps1g8C14HTGsOpZL0Am+xjfgFZAbg=="],
+ "lucide-react": ["lucide-react@1.49.0", "", { "peerDependencies": { "@types/react": "*", "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-ApfaNM4/7jBrVopqLJ84Jz8TMQ1Q1JeZ1PmKh25aeS3E1FTVcMkSh1bEQB7dfzdIrwXRP8p3z4AJjTIHHb5IIA=="],
"magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="],
@@ -1855,11 +1853,11 @@
"@babel/helper-compilation-targets/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="],
- "@corbits/codex-provider/@corbits/oauth-core": ["@corbits/oauth-core@github:corbitsdev/corbits-oauth-core#3028f86", { "dependencies": { "@intx/db": "^0.3.0", "@intx/hub-api": "^0.3.0", "@intx/hub-common": "^0.3.0", "@intx/types": "^0.3.0", "arktype": "2.2.3", "drizzle-orm": "^0.45.2", "hono": "^4.11.9" } }, "corbitsdev-corbits-oauth-core-3028f86", "sha512-KMxRZgEi7S99tqoWhXqAAm5Bv4ef5tn3eYFcfbiHHX/E+GPnbedF44/ISbGs2gedoR2U9EtA1gnmh+q+Qfg00w=="],
-
"@corbits/mailbox/hono-openapi": ["hono-openapi@1.3.1", "", { "peerDependencies": { "@hono/standard-validator": "^0.2.0", "@standard-community/standard-json": "^0.3.5", "@standard-community/standard-openapi": "^0.2.9", "@types/json-schema": "^7.0.15", "hono": "^4.11.2", "openapi-types": "^12.1.3" }, "optionalPeers": ["@hono/standard-validator", "hono"] }, "sha512-NLVeVkhKZ3drmQNEIPac8HX8Y54uf1hJAgIM/7MfDsaeVVmB+QILWQxx5x3R3NvRHgedcbEbOCGY2uR7WQYyMw=="],
- "@corbits/xai-provider/@corbits/oauth-core": ["@corbits/oauth-core@github:corbitsdev/corbits-oauth-core#3028f86", { "dependencies": { "@intx/db": "^0.3.0", "@intx/hub-api": "^0.3.0", "@intx/hub-common": "^0.3.0", "@intx/types": "^0.3.0", "arktype": "2.2.3", "drizzle-orm": "^0.45.2", "hono": "^4.11.9" } }, "corbitsdev-corbits-oauth-core-3028f86", "sha512-KMxRZgEi7S99tqoWhXqAAm5Bv4ef5tn3eYFcfbiHHX/E+GPnbedF44/ISbGs2gedoR2U9EtA1gnmh+q+Qfg00w=="],
+ "@corbits/mcp/@corbits/credential-mcp": ["@corbits/credential-mcp@github:corbitsdev/corbits-credential-mcp#fb9ec3a", { "peerDependencies": { "@intx/harness": ">=0.3.0", "@intx/types": ">=0.3.0" } }, "corbitsdev-corbits-credential-mcp-fb9ec3a", "sha512-Co4jR+L3pfBbVYY7I6jRftoHeSb5+LCxzEEaAhVLYA3aY2PrPHZV37+DWxj3fcK/KdzboqbT3XSnqU8DyHRU9Q=="],
+
+ "@corbits/myra/@corbits/artifacts": ["@corbits/artifacts@github:corbitsdev/corbits-artifacts#4a2a3c2", { "dependencies": { "@hono/standard-validator": "^0.2.3" }, "peerDependencies": { "@intx/agent": "^0.3.0", "@intx/hub-api": "^0.3.0", "@intx/types": "^0.3.0", "arktype": "^2.1.29", "drizzle-orm": "^0.45.2", "hono": "^4.12.32", "hono-openapi": "^1.2.0", "postgres": "^3.4.9" } }, "corbitsdev-corbits-artifacts-4a2a3c2", "sha512-UY5nkQ31kGmYgqgIOSlbigwvm7c/s2kpqEbF6Oqo0rzoS1RejpPp+w/Yim6h2MRpYCl5CXgAET1MhkDboHuWBA=="],
"@esbuild-kit/core-utils/esbuild": ["esbuild@0.18.20", "", { "optionalDependencies": { "@esbuild/android-arm": "0.18.20", "@esbuild/android-arm64": "0.18.20", "@esbuild/android-x64": "0.18.20", "@esbuild/darwin-arm64": "0.18.20", "@esbuild/darwin-x64": "0.18.20", "@esbuild/freebsd-arm64": "0.18.20", "@esbuild/freebsd-x64": "0.18.20", "@esbuild/linux-arm": "0.18.20", "@esbuild/linux-arm64": "0.18.20", "@esbuild/linux-ia32": "0.18.20", "@esbuild/linux-loong64": "0.18.20", "@esbuild/linux-mips64el": "0.18.20", "@esbuild/linux-ppc64": "0.18.20", "@esbuild/linux-riscv64": "0.18.20", "@esbuild/linux-s390x": "0.18.20", "@esbuild/linux-x64": "0.18.20", "@esbuild/netbsd-x64": "0.18.20", "@esbuild/openbsd-x64": "0.18.20", "@esbuild/sunos-x64": "0.18.20", "@esbuild/win32-arm64": "0.18.20", "@esbuild/win32-ia32": "0.18.20", "@esbuild/win32-x64": "0.18.20" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA=="],
@@ -1877,17 +1875,11 @@
"@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
- "@workbench/hub/@corbits/artifacts": ["@corbits/artifacts@github:corbitsdev/corbits-artifacts#4a2a3c2", { "dependencies": { "@hono/standard-validator": "^0.2.3" }, "peerDependencies": { "@intx/agent": "^0.3.0", "@intx/hub-api": "^0.3.0", "@intx/types": "^0.3.0", "arktype": "^2.1.29", "drizzle-orm": "^0.45.2", "hono": "^4.12.32", "hono-openapi": "^1.2.0", "postgres": "^3.4.9" } }, "corbitsdev-corbits-artifacts-4a2a3c2", "sha512-UY5nkQ31kGmYgqgIOSlbigwvm7c/s2kpqEbF6Oqo0rzoS1RejpPp+w/Yim6h2MRpYCl5CXgAET1MhkDboHuWBA=="],
-
- "@workbench/hub/@corbits/codex-provider": ["@corbits/codex-provider@github:corbitsdev/corbits-codex-provider#a1f475f", { "dependencies": { "@corbits/oauth-core": "github:corbitsdev/corbits-oauth-core", "@corbits/openai-responses": "github:corbitsdev/corbits-openai-responses", "arktype": "2.2.3" }, "peerDependencies": { "@intx/inference": ">=0.3.0", "@intx/types": ">=0.3.0" } }, "corbitsdev-corbits-codex-provider-a1f475f", "sha512-D6d0lblWx/4KudfLwQoQGrLB8GKRLP/HVp1cx08L2/hOGZAgH6txLPpeEtBqjl+R520qXSSPfM0kDC+3XNaAfw=="],
-
- "@workbench/hub/@corbits/mailbox": ["@corbits/mailbox@github:corbitsdev/corbits-mailbox#65590a8", { "dependencies": { "@hono/standard-validator": "0.2.3", "@intx/crypto": "0.3.0", "@standard-community/standard-json": "0.3.5", "@standard-community/standard-openapi": "0.2.9", "arktype": "2.1.29", "hono-openapi": "1.3.1" }, "peerDependencies": { "@intx/log": "^0.2.2", "drizzle-orm": "^0.45.2", "hono": "^4.12.0", "postgres": "^3.4.0" } }, "corbitsdev-corbits-mailbox-65590a8", "sha512-tK7xXcL780iX3I+5R68gmyqgEA0uwYO1qdTDNn/LF6tOiFIm0lt2szjspJ8JMKMTzKC6SSai03p723rEGM1jOg=="],
-
"@workbench/hub/@corbits/mcp": ["@corbits/mcp@github:corbitsdev/corbits-mcp#9df1ab8", { "dependencies": { "@corbits/credential-mcp": "github:corbitsdev/corbits-credential-mcp#fb9ec3a6754348cd33c388c70c0830b8844c83de", "@intx/db": "^0.3.0", "@intx/hub-api": "^0.3.0", "@intx/types": "^0.3.0", "arktype": "2.1.20", "drizzle-orm": "^0.45.2", "hono": "^4.11.9" }, "peerDependencies": { "@intx/agent": ">=0.3.0" } }, "corbitsdev-corbits-mcp-9df1ab8", "sha512-5ILvgNI4J/U2kWitFKZmIJO1qybCdIkKZ73ZELu6PWrbw6tARxO8/ffaGoK0nIMrT4EcBZaMd6YkR0vLdPOWnw=="],
"@workbench/hub/@corbits/memory": ["@corbits/memory@github:corbitsdev/corbits-memory#8be608b", { "dependencies": { "@intx/agent": "0.2.2", "@intx/authz": "0.2.2", "@intx/hub-api": "0.2.2", "@intx/log": "0.2.2", "@intx/types": "^0.3.0", "@intx/workflow": "0.2.2", "arktype": "^2.1.29", "drizzle-orm": "^0.45.1", "hono": "^4.9.0", "hono-openapi": "^1.3.1", "postgres": "^3.4.7" } }, "corbitsdev-corbits-memory-8be608b", "sha512-7NcVcz3IHFTfx6ICQT+4gjX1PBNLqjlCqoEOPDFVW7wc4e2+Ueg9wOZQ+0MVttpQCaDg6MObl4kie410UQm/sQ=="],
- "@workbench/hub/@corbits/xai-provider": ["@corbits/xai-provider@github:corbitsdev/corbits-xai-provider#9f2d4ba", { "dependencies": { "@corbits/oauth-core": "github:corbitsdev/corbits-oauth-core", "@corbits/openai-responses": "github:corbitsdev/corbits-openai-responses", "arktype": "2.2.3" }, "peerDependencies": { "@intx/inference": ">=0.3.0", "@intx/types": ">=0.3.0" } }, "corbitsdev-corbits-xai-provider-9f2d4ba", "sha512-ZjvKxGcp+QzCh8zeXHg7kNbtkpR/itZkmQAcdG1aOAOjHaNwfGVpkPc/c/XtwPNsQyaDjF8W9CHb4rH1xI2uCA=="],
+ "@workbench/web/@corbits/credential-mcp": ["@corbits/credential-mcp@github:corbitsdev/corbits-credential-mcp#fb9ec3a", { "peerDependencies": { "@intx/harness": ">=0.3.0", "@intx/types": ">=0.3.0" } }, "corbitsdev-corbits-credential-mcp-fb9ec3a", "sha512-Co4jR+L3pfBbVYY7I6jRftoHeSb5+LCxzEEaAhVLYA3aY2PrPHZV37+DWxj3fcK/KdzboqbT3XSnqU8DyHRU9Q=="],
"better-call/@better-auth/utils": ["@better-auth/utils@0.5.0", "", { "dependencies": { "@noble/hashes": "^2.0.1" } }, "sha512-BL8W4EfIZFwlu0r54m3v1ztjDhu6dDe/amLTm0xybmbZaNgYUqhD3SjpAsnq0q8YD6/ki4iwIgxJNLP/N3TxiA=="],
@@ -1983,18 +1975,6 @@
"@esbuild-kit/core-utils/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.18.20", "", { "os": "win32", "cpu": "x64" }, "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ=="],
- "@workbench/hub/@corbits/codex-provider/@corbits/oauth-core": ["@corbits/oauth-core@github:corbitsdev/corbits-oauth-core#3028f86", { "dependencies": { "@intx/db": "^0.3.0", "@intx/hub-api": "^0.3.0", "@intx/hub-common": "^0.3.0", "@intx/types": "^0.3.0", "arktype": "2.2.3", "drizzle-orm": "^0.45.2", "hono": "^4.11.9" } }, "corbitsdev-corbits-oauth-core-3028f86", "sha512-KMxRZgEi7S99tqoWhXqAAm5Bv4ef5tn3eYFcfbiHHX/E+GPnbedF44/ISbGs2gedoR2U9EtA1gnmh+q+Qfg00w=="],
-
- "@workbench/hub/@corbits/codex-provider/@corbits/openai-responses": ["@corbits/openai-responses@github:corbitsdev/corbits-openai-responses#7efe000", { "dependencies": { "arktype": "2.2.3" }, "peerDependencies": { "@intx/inference": ">=0.3.0", "@intx/types": ">=0.3.0" } }, "corbitsdev-corbits-openai-responses-7efe000", "sha512-pH6C8T1WDJjqM+YbnQpofd7HgP5krEj48JCCQK16KI98a6kaz+gffpgdOdQpU3aNVZnFlyADXod1Z4tqUG/3ww=="],
-
- "@workbench/hub/@corbits/mailbox/hono-openapi": ["hono-openapi@1.3.1", "", { "peerDependencies": { "@hono/standard-validator": "^0.2.0", "@standard-community/standard-json": "^0.3.5", "@standard-community/standard-openapi": "^0.2.9", "@types/json-schema": "^7.0.15", "hono": "^4.11.2", "openapi-types": "^12.1.3" }, "optionalPeers": ["@hono/standard-validator", "hono"] }, "sha512-NLVeVkhKZ3drmQNEIPac8HX8Y54uf1hJAgIM/7MfDsaeVVmB+QILWQxx5x3R3NvRHgedcbEbOCGY2uR7WQYyMw=="],
-
- "@workbench/hub/@corbits/mcp/@corbits/credential-mcp": ["@corbits/credential-mcp@github:corbitsdev/corbits-credential-mcp#fb9ec3a", { "peerDependencies": { "@intx/harness": ">=0.3.0", "@intx/types": ">=0.3.0" } }, "corbitsdev-corbits-credential-mcp-fb9ec3a", "sha512-Co4jR+L3pfBbVYY7I6jRftoHeSb5+LCxzEEaAhVLYA3aY2PrPHZV37+DWxj3fcK/KdzboqbT3XSnqU8DyHRU9Q=="],
-
- "@workbench/hub/@corbits/xai-provider/@corbits/oauth-core": ["@corbits/oauth-core@github:corbitsdev/corbits-oauth-core#3028f86", { "dependencies": { "@intx/db": "^0.3.0", "@intx/hub-api": "^0.3.0", "@intx/hub-common": "^0.3.0", "@intx/types": "^0.3.0", "arktype": "2.2.3", "drizzle-orm": "^0.45.2", "hono": "^4.11.9" } }, "corbitsdev-corbits-oauth-core-3028f86", "sha512-KMxRZgEi7S99tqoWhXqAAm5Bv4ef5tn3eYFcfbiHHX/E+GPnbedF44/ISbGs2gedoR2U9EtA1gnmh+q+Qfg00w=="],
-
- "@workbench/hub/@corbits/xai-provider/@corbits/openai-responses": ["@corbits/openai-responses@github:corbitsdev/corbits-openai-responses#7efe000", { "dependencies": { "arktype": "2.2.3" }, "peerDependencies": { "@intx/inference": ">=0.3.0", "@intx/types": ">=0.3.0" } }, "corbitsdev-corbits-openai-responses-7efe000", "sha512-pH6C8T1WDJjqM+YbnQpofd7HgP5krEj48JCCQK16KI98a6kaz+gffpgdOdQpU3aNVZnFlyADXod1Z4tqUG/3ww=="],
-
"cross-spawn/which/isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="],
"minipass-flush/minipass/yallist": ["yallist@4.0.0", "", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="],