History

rename

Rhys Sullivan committed 9 months ago

Commit d407eb71 parent af4f361107 files · +497 −176Browse files

Unified · Split

107 files
  1. executor/README.md +5 −1
  2. executor/apps/web/src/components/approvals/approvals-view.tsx +0 −0
  3. executor/apps/web/src/components/dashboard/pending-approvals-card.tsx +0 −0
  4. executor/apps/web/src/components/dashboard/recent-tasks-card.tsx +0 −0
  5. executor/apps/web/src/components/dashboard/setup-card.tsx +0 −0
  6. executor/apps/web/src/components/dashboard/stat-card.tsx +0 −0
  7. executor/apps/web/src/components/dashboard/tools-summary-card.tsx +1 −1
  8. executor/apps/web/src/components/dashboard/view-helpers.ts +0 −0
  9. executor/apps/web/src/components/dashboard/view.tsx +6 −6
  10. executor/apps/web/src/components/organization/billing-view.tsx +0 −0
  11. executor/apps/web/src/components/organization/members-view.tsx +0 −0
  12. executor/apps/web/src/components/organization/onboarding-view.tsx +0 −0
  13. executor/apps/web/src/components/organization/organization-settings-view.tsx +2 −2
  14. executor/apps/web/src/components/tasks/code-editor-monaco.ts +0 −0
  15. executor/apps/web/src/components/tasks/code-editor-types.ts +0 −0
  16. executor/apps/web/src/components/tasks/code-editor.tsx +0 −0
  17. executor/apps/web/src/components/tasks/task-composer.tsx +1 −1
  18. executor/apps/web/src/components/tasks/task-detail.tsx +0 −0
  19. executor/apps/web/src/components/tasks/task-list-item.tsx +0 −0
  20. executor/apps/web/src/components/tasks/tasks-view.tsx +3 −3
  21. executor/apps/web/src/components/tools-view-sources.tsx +0 −2
  22. executor/apps/web/src/components/tools/add-source-dialog-helpers.ts +0 −0
  23. executor/apps/web/src/components/tools/add-source-dialog-sections.tsx +1 −1
  24. executor/apps/web/src/components/tools/add-source-dialog.tsx +2 −2
  25. executor/apps/web/src/components/tools/connection-auth-fields.tsx +1 −1
  26. executor/apps/web/src/components/tools/connection-form-dialog-form.ts +1 −1
  27. executor/apps/web/src/components/tools/connection-form-dialog-state.ts +0 −0
  28. executor/apps/web/src/components/tools/connection-form-dialog.tsx +4 −4
  29. executor/apps/web/src/components/tools/connection-form-save.ts +0 −0
  30. executor/apps/web/src/components/tools/credentials.tsx +1 −1
  31. executor/apps/web/src/components/tools/explorer-copy-button.tsx +0 −0
  32. executor/apps/web/src/components/tools/explorer-derived.ts +1 −1
  33. executor/apps/web/src/components/tools/explorer-groups.tsx +1 −1
  34. executor/apps/web/src/components/tools/explorer-helpers.ts +0 −0
  35. executor/apps/web/src/components/tools/explorer-loading.tsx +0 −0
  36. executor/apps/web/src/components/tools/explorer-rows.tsx +2 −2
  37. executor/apps/web/src/components/tools/explorer-tool-detail.tsx +1 −1
  38. executor/apps/web/src/components/tools/explorer-toolbar.tsx +0 −0
  39. executor/apps/web/src/components/tools/explorer-type-signature.tsx +0 −0
  40. executor/apps/web/src/components/tools/explorer.tsx +6 −6
  41. executor/apps/web/src/components/tools/install-configs.ts +0 −0
  42. executor/apps/web/src/components/tools/setup-card.tsx +1 −1
  43. executor/apps/web/src/components/tools/source-auth-dialog.tsx +0 −0
  44. executor/apps/web/src/components/tools/source-card.tsx +2 −2
  45. executor/apps/web/src/components/tools/source-quality-details.tsx +0 −0
  46. executor/apps/web/src/components/tools/sources.tsx +2 −0
  47. executor/apps/web/src/components/tools/view.tsx +4 −4
  48. executor/apps/web/src/frontend/app.tsx +6 −6
  49. executor/package.json +5 −5
  50. executor/packages/convex/_generated/api.d.ts +314 −0
  51. executor/packages/convex/auth.ts +2 −2
  52. executor/packages/convex/auth/accounts.ts +2 −2
  53. executor/packages/convex/auth/bootstrap.ts +7 −7
  54. executor/packages/convex/auth/db_queries.ts +2 −2
  55. executor/packages/convex/auth/event_handlers.ts +6 −6
  56. executor/packages/convex/auth/identity.ts +2 −2
  57. executor/packages/convex/auth/memberships.ts +2 −2
  58. executor/packages/convex/auth/naming.ts +3 −3
  59. executor/packages/convex/auth/personal_workspace.ts +4 −4
  60. executor/packages/convex/auth/types.ts +2 −2
  61. executor/packages/convex/database.ts +9 −9
  62. executor/packages/convex/database/anonymous.ts +4 −4
  63. executor/packages/convex/database/anonymous_session.ts +3 −3
  64. executor/packages/convex/database/approvals.ts +5 −5
  65. executor/packages/convex/database/credentials.ts +5 −5
  66. executor/packages/convex/database/mappers.ts +3 −3
  67. executor/packages/convex/database/oauth.ts +1 −1
  68. executor/packages/convex/database/policies.ts +3 −3
  69. executor/packages/convex/database/readers.ts +4 −4
  70. executor/packages/convex/database/task_events.ts +3 −3
  71. executor/packages/convex/database/tasks.ts +7 −7
  72. executor/packages/convex/database/tool_calls.ts +4 −4
  73. executor/packages/convex/database/tool_sources.ts +4 −4
  74. executor/packages/convex/database/validators.ts +0 −0
  75. executor/packages/convex/executor.ts +4 −4
  76. executor/packages/convex/executorNode.ts +4 −4
  77. executor/packages/convex/invites.ts +1 −1
  78. executor/packages/convex/invites/workos.ts +0 −0
  79. executor/packages/convex/runtime/actor_auth.ts +0 −0
  80. executor/packages/convex/runtime/events.ts +1 −1
  81. executor/packages/convex/runtime/external_tool_call.ts +0 −0
  82. executor/packages/convex/runtime/policy.ts +0 −0
  83. executor/packages/convex/runtime/task_runner.ts +2 −2
  84. executor/packages/convex/runtime/tool_call_credentials.ts +2 −0
  85. executor/packages/convex/runtime/tool_call_lifecycle.ts +0 −0
  86. executor/packages/convex/runtime/tool_call_resolution.ts +2 −0
  87. executor/packages/convex/runtime/tool_descriptors.ts +0 −0
  88. executor/packages/convex/runtime/tool_invocation.ts +0 −0
  89. executor/packages/convex/runtime/tool_paths.test.ts +0 −0
  90. executor/packages/convex/runtime/tool_paths.ts +0 −0
  91. executor/packages/convex/runtime/tool_source_loading.ts +0 −0
  92. executor/packages/convex/runtime/workspace_tools.ts +0 −0
  93. executor/packages/convex/task/constants.ts +0 −0
  94. executor/packages/convex/task/events.ts +1 −1
  95. executor/packages/convex/task/finish.ts +3 −3
  96. executor/packages/convex/task/status.ts +1 −1
  97. executor/scripts/dev/vscode-elicitation-server.ts +0 −0
  98. executor/scripts/dev/wipe-convex-db.ts +0 −0
  99. executor/scripts/prod/deploy-prod.test.ts +0 −0
  100. executor/scripts/prod/deploy-prod.ts +9 −9
  101. executor/scripts/prod/doctor-prod.test.ts +0 −0
  102. executor/scripts/prod/doctor-prod.ts +1 −1
  103. executor/scripts/prod/setup-prod-cloudflare.ts +2 −2
  104. executor/scripts/prod/setup-prod-env.ts +1 −1
  105. executor/scripts/release/build-release.ts +1 −1
  106. executor/tsconfig.json +1 −2
  107. package.json +1 −1
executor/README.md+5−1
@@ -183,10 +183,14 @@ bun run typecheck:executor · 182 unmodified lines
183183 ```text
184184 executor/
185185 |- apps/web/ # Next.js operator UI
186+| `- src/components/{approvals,dashboard,organization,tasks,tools,ui}
186187 |- packages/convex/ # Convex functions, schema, auth, HTTP routes
188+| `- runtime/ # task execution/runtime internals
187189 |- packages/runner-sandbox-host/ # Cloudflare worker sandbox runtime
188190 |- packages/core/src/ # shared executor runtime/tooling core package code
189−|- scripts/build-release.ts # release artifact builder
191+|- scripts/dev/ # local/dev-only helpers
192+|- scripts/prod/ # production setup and deploy scripts
193+|- scripts/release/ # release artifact builder
190194 |- executor.ts # CLI entrypoint (compiled into binary)
191195 |- install # curl install script
192196 `- uninstall # uninstall script
executor/apps/web/src/components/approvals/approvals-view.tsxrenamed from executor/apps/web/src/components/approvals-view.tsx+0−0

File renamed without changes.

executor/apps/web/src/components/dashboard/pending-approvals-card.tsxrenamed from executor/apps/web/src/components/dashboard-pending-approvals-card.tsx+0−0

File renamed without changes.

executor/apps/web/src/components/dashboard/recent-tasks-card.tsxrenamed from executor/apps/web/src/components/dashboard-recent-tasks-card.tsx+0−0

File renamed without changes.

executor/apps/web/src/components/dashboard/setup-card.tsxrenamed from executor/apps/web/src/components/dashboard-setup-card.tsx+0−0

File renamed without changes.

executor/apps/web/src/components/dashboard/stat-card.tsxrenamed from executor/apps/web/src/components/dashboard-stat-card.tsx+0−0

File renamed without changes.

executor/apps/web/src/components/dashboard/tools-summary-card.tsxrenamed from executor/apps/web/src/components/dashboard-tools-summary-card.tsx+1−1
@@ -4,7 +4,7 @@ import { ArrowRight, ChevronRight, Globe, Server, Wrench } from "lucide-react"; · 3 unmodified lines
44 import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
55 import { Button } from "@/components/ui/button";
66 import type { ToolDescriptor } from "@/lib/types";
7−import { groupToolsBySource } from "@/components/dashboard-view-helpers";
7+import { groupToolsBySource } from "@/components/dashboard/view-helpers";
88
99 export function DashboardToolsSummaryCard({ tools }: { tools: ToolDescriptor[] }) {
1010 const navigate = useNavigate();
executor/apps/web/src/components/dashboard/view-helpers.tsrenamed from executor/apps/web/src/components/dashboard-view-helpers.ts+0−0

File renamed without changes.

executor/apps/web/src/components/dashboard/view.tsxrenamed from executor/apps/web/src/components/dashboard-view.tsx+6−6
@@ -3,11 +3,11 @@ · 2 unmodified lines
33 import { CheckCircle2, Play, ShieldCheck, XCircle } from "lucide-react";
44 import { Skeleton } from "@/components/ui/skeleton";
55 import { PageHeader } from "@/components/page-header";
6−import { DashboardSetupCard } from "@/components/dashboard-setup-card";
7−import { DashboardStatCard } from "@/components/dashboard-stat-card";
8−import { DashboardPendingApprovalsCard } from "@/components/dashboard-pending-approvals-card";
9−import { DashboardRecentTasksCard } from "@/components/dashboard-recent-tasks-card";
10−import { DashboardToolsSummaryCard } from "@/components/dashboard-tools-summary-card";
6+import { DashboardSetupCard } from "@/components/dashboard/setup-card";
7+import { DashboardStatCard } from "@/components/dashboard/stat-card";
8+import { DashboardPendingApprovalsCard } from "@/components/dashboard/pending-approvals-card";
9+import { DashboardRecentTasksCard } from "@/components/dashboard/recent-tasks-card";
10+import { DashboardToolsSummaryCard } from "@/components/dashboard/tools-summary-card";
1111 import { useSession } from "@/lib/session-context";
1212 import { useWorkspaceTools } from "@/hooks/use-workspace-tools";
1313 import { useQuery } from "convex/react";
@@ -17,7 +17,7 @@ import { · 3 unmodified lines
1717 getRecentTasks,
1818 getSetupSteps,
1919 getTaskStats,
20−} from "@/components/dashboard-view-helpers";
20+} from "@/components/dashboard/view-helpers";
2121 import { workspaceQueryArgs } from "@/lib/workspace-query-args";
2222
2323 export function DashboardView() {
executor/apps/web/src/components/organization/billing-view.tsxrenamed from executor/apps/web/src/components/billing-view.tsx+0−0

File renamed without changes.

executor/apps/web/src/components/organization/members-view.tsxrenamed from executor/apps/web/src/components/members-view.tsx+0−0

File renamed without changes.

executor/apps/web/src/components/organization/onboarding-view.tsxrenamed from executor/apps/web/src/components/onboarding-view.tsx+0−0

File renamed without changes.

executor/apps/web/src/components/organization/organization-settings-view.tsxrenamed from executor/apps/web/src/components/organization-settings-view.tsx+2−2
@@ -3,8 +3,8 @@ · 2 unmodified lines
33 import { useMemo } from "react";
44 import { useLocation, useNavigate, useSearchParams } from "react-router";
55 import { CreditCard, Users } from "lucide-react";
6−import { BillingView } from "@/components/billing-view";
7−import { MembersView } from "@/components/members-view";
6+import { BillingView } from "@/components/organization/billing-view";
7+import { MembersView } from "@/components/organization/members-view";
88 import { PageHeader } from "@/components/page-header";
99 import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
1010
executor/apps/web/src/components/tasks/code-editor-monaco.tsrenamed from executor/apps/web/src/components/code-editor-monaco.ts+0−0

File renamed without changes.

executor/apps/web/src/components/tasks/code-editor-types.tsrenamed from executor/apps/web/src/components/code-editor-types.ts+0−0

File renamed without changes.

executor/apps/web/src/components/tasks/code-editor.tsxrenamed from executor/apps/web/src/components/code-editor.tsx+0−0

File renamed without changes.

executor/apps/web/src/components/tasks/task-composer.tsxrenamed from executor/apps/web/src/components/task-composer.tsx+1−1
@@ -15,7 +15,7 @@ import { · 14 unmodified lines
1515 SelectTrigger,
1616 SelectValue,
1717 } from "@/components/ui/select";
18−import { CodeEditor } from "@/components/code-editor";
18+import { CodeEditor } from "@/components/tasks/code-editor";
1919 import { convexApi } from "@/lib/convex-api";
2020 import { useSession } from "@/lib/session-context";
2121 import type { RuntimeTargetDescriptor } from "@/lib/types";
executor/apps/web/src/components/tasks/task-detail.tsxrenamed from executor/apps/web/src/components/task-detail.tsx+0−0

File renamed without changes.

executor/apps/web/src/components/tasks/task-list-item.tsxrenamed from executor/apps/web/src/components/task-list-item.tsx+0−0

File renamed without changes.

executor/apps/web/src/components/tasks/tasks-view.tsxrenamed from executor/apps/web/src/components/tasks-view.tsx+3−3
@@ -8,9 +8,9 @@ import { Button } from "@/components/ui/button"; · 7 unmodified lines
88 import { Skeleton } from "@/components/ui/skeleton";
99 import { PageHeader } from "@/components/page-header";
1010 import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
11−import { TaskDetail } from "@/components/task-detail";
12−import { TaskComposer } from "@/components/task-composer";
13−import { TaskListItem } from "@/components/task-list-item";
11+import { TaskDetail } from "@/components/tasks/task-detail";
12+import { TaskComposer } from "@/components/tasks/task-composer";
13+import { TaskListItem } from "@/components/tasks/task-list-item";
1414 import { useSession } from "@/lib/session-context";
1515 import { useQuery } from "convex/react";
1616 import { convexApi } from "@/lib/convex-api";
executor/apps/web/src/components/tools-view-sources.tsx+0−2
@@ -1,2 +0,0 @@
1−export { AddSourceDialog } from "./tools-view-add-source-dialog";
2−export { SourceCard } from "./tools-view-source-card";
executor/apps/web/src/components/tools/add-source-dialog-helpers.tsrenamed from executor/apps/web/src/components/tools-view-add-source-dialog-helpers.ts+0−0

File renamed without changes.

executor/apps/web/src/components/tools/add-source-dialog-sections.tsxrenamed from executor/apps/web/src/components/tools-view-add-source-dialog-sections.tsx+1−1
@@ -18,7 +18,7 @@ import { · 17 unmodified lines
1818 endpointPlaceholderForType,
1919 type SourceCatalogSort,
2020 type SourceType,
21−} from "./tools-view-add-source-dialog-helpers";
21+} from "./add-source-dialog-helpers";
2222
2323 export function CatalogViewSection({
2424 catalogQuery,
executor/apps/web/src/components/tools/add-source-dialog.tsxrenamed from executor/apps/web/src/components/tools-view-add-source-dialog.tsx+2−2
@@ -29,11 +29,11 @@ import { · 28 unmodified lines
2929 getVisibleCatalogItems,
3030 type SourceCatalogSort,
3131 type SourceType,
32−} from "./tools-view-add-source-dialog-helpers";
32+} from "./add-source-dialog-helpers";
3333 import {
3434 CatalogViewSection,
3535 CustomViewSection,
36−} from "./tools-view-add-source-dialog-sections";
36+} from "./add-source-dialog-sections";
3737
3838 export function AddSourceDialog({
3939 existingSourceNames,
executor/apps/web/src/components/tools/connection-auth-fields.tsxrenamed from executor/apps/web/src/components/tools-view-connection-auth-fields.tsx+1−1
@@ -3,7 +3,7 @@ · 2 unmodified lines
33 import { Input } from "@/components/ui/input";
44 import { Label } from "@/components/ui/label";
55 import type { SourceAuthType } from "@/lib/types";
6−import type { ConnectionMode } from "./tools-view-connection-form-dialog-state";
6+import type { ConnectionMode } from "./connection-form-dialog-state";
77
88 type SelectedAuth = {
99 type: SourceAuthType;
executor/apps/web/src/components/tools/connection-form-dialog-form.tsrenamed from executor/apps/web/src/components/tools-view-connection-form-dialog-form.ts+1−1
@@ -15,7 +15,7 @@ import { · 14 unmodified lines
1515 compatibleConnections,
1616 selectedAuthBadge,
1717 type ConnectionMode,
18−} from "./tools-view-connection-form-dialog-state";
18+} from "./connection-form-dialog-state";
1919
2020 type UseConnectionFormDialogFormParams = {
2121 open: boolean;
executor/apps/web/src/components/tools/connection-form-dialog-state.tsrenamed from executor/apps/web/src/components/tools-view-connection-form-dialog-state.ts+0−0

File renamed without changes.

executor/apps/web/src/components/tools/connection-form-dialog.tsxrenamed from executor/apps/web/src/components/tools-view-connection-form-dialog.tsx+4−4
@@ -33,14 +33,14 @@ import { · 32 unmodified lines
3333 connectionDisplayName,
3434 parseHeaderOverrides,
3535 } from "@/lib/credentials-source-helpers";
36−import { ConnectionAuthFields } from "./tools-view-connection-auth-fields";
37−import { type ConnectionMode } from "./tools-view-connection-form-dialog-state";
38−import { useConnectionFormDialogForm } from "./tools-view-connection-form-dialog-form";
36+import { ConnectionAuthFields } from "./connection-auth-fields";
37+import { type ConnectionMode } from "./connection-form-dialog-state";
38+import { useConnectionFormDialogForm } from "./connection-form-dialog-form";
3939 import {
4040 buildSecretJson,
4141 connectionSubmitCopy,
4242 connectionSuccessCopy,
43−} from "./tools-view-connection-form-save";
43+} from "./connection-form-save";
4444
4545 export function ConnectionFormDialog({
4646 open,
executor/apps/web/src/components/tools/connection-form-save.tsrenamed from executor/apps/web/src/components/tools-view-connection-form-save.ts+0−0

File renamed without changes.

executor/apps/web/src/components/tools/credentials.tsxrenamed from executor/apps/web/src/components/tools-view-credentials.tsx+1−1
@@ -22,7 +22,7 @@ import { · 21 unmodified lines
2222 getSourceFavicon,
2323 sourceForCredentialKey,
2424 } from "@/lib/tools-source-helpers";
25−import { ConnectionFormDialog } from "@/components/tools-view-connection-form-dialog";
25+import { ConnectionFormDialog } from "@/components/tools/connection-form-dialog";
2626
2727 export function CredentialsPanel({
2828 sources,
executor/apps/web/src/components/tools/explorer-copy-button.tsxrenamed from executor/apps/web/src/components/tool-explorer-copy-button.tsx+0−0

File renamed without changes.

executor/apps/web/src/components/tools/explorer-derived.tsrenamed from executor/apps/web/src/components/tool-explorer-derived.ts+1−1
@@ -7,7 +7,7 @@ import { · 6 unmodified lines
77 } from "@/lib/tool-explorer-grouping";
88 import { sourceLabel } from "@/lib/tool-source-utils";
99 import type { ToolDescriptor } from "@/lib/types";
10−import type { GroupBy, ViewMode } from "./tool-explorer-toolbar";
10+import type { GroupBy, ViewMode } from "./explorer-toolbar";
1111
1212 export type FilterApproval = "all" | "required" | "auto";
1313
executor/apps/web/src/components/tools/explorer-groups.tsxrenamed from executor/apps/web/src/components/tool-explorer-groups.tsx+1−1
@@ -19,7 +19,7 @@ import { cn } from "@/lib/utils"; · 18 unmodified lines
1919 import { sourceLabel, sourceType } from "@/lib/tool-source-utils";
2020 import { toolOperation, type ToolGroup } from "@/lib/tool-explorer-grouping";
2121 import type { ToolDescriptor } from "@/lib/types";
22−import { SelectableToolRow } from "./tool-explorer-rows";
22+import { SelectableToolRow } from "./explorer-rows";
2323
2424 export function GroupNode({
2525 group,
executor/apps/web/src/components/tools/explorer-helpers.tsrenamed from executor/apps/web/src/components/tool-explorer-helpers.ts+0−0

File renamed without changes.

executor/apps/web/src/components/tools/explorer-loading.tsxrenamed from executor/apps/web/src/components/tool-explorer-loading.tsx+0−0

File renamed without changes.

executor/apps/web/src/components/tools/explorer-rows.tsxrenamed from executor/apps/web/src/components/tool-explorer-rows.tsx+2−2
@@ -12,8 +12,8 @@ import { · 11 unmodified lines
1212 import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "@/components/ui/collapsible";
1313 import { cn } from "@/lib/utils";
1414 import type { ToolDescriptor } from "@/lib/types";
15−import { CopyButton } from "./tool-explorer-copy-button";
16−import { ToolDetail } from "./tool-explorer-tool-detail";
15+import { CopyButton } from "./explorer-copy-button";
16+import { ToolDetail } from "./explorer-tool-detail";
1717
1818 const ToolRow = memo(function ToolRow({
1919 tool,
executor/apps/web/src/components/tools/explorer-tool-detail.tsxrenamed from executor/apps/web/src/components/tool-explorer-tool-detail.tsx+1−1
@@ -3,7 +3,7 @@ · 2 unmodified lines
33 import { Streamdown } from "streamdown";
44 import { createCodePlugin } from "@streamdown/code";
55 import type { ToolDescriptor } from "@/lib/types";
6−import { TypeSignature } from "./tool-explorer-type-signature";
6+import { TypeSignature } from "./explorer-type-signature";
77
88 const codePlugin = createCodePlugin({
99 themes: ["github-light", "github-dark"],
executor/apps/web/src/components/tools/explorer-toolbar.tsxrenamed from executor/apps/web/src/components/tool-explorer-toolbar.tsx+0−0

File renamed without changes.

executor/apps/web/src/components/tools/explorer-type-signature.tsxrenamed from executor/apps/web/src/components/tool-explorer-type-signature.tsx+0−0

File renamed without changes.

executor/apps/web/src/components/tools/explorer.tsxrenamed from executor/apps/web/src/components/tool-explorer.tsx+6−6
@@ -6,7 +6,7 @@ import { · 5 unmodified lines
66 collectGroupKeys,
77 } from "@/lib/tool-explorer-grouping";
88 import type { ToolDescriptor, ToolSourceRecord } from "@/lib/types";
9−import { findToolsInGroupByKey } from "./tool-explorer-helpers";
9+import { findToolsInGroupByKey } from "./explorer-helpers";
1010 import {
1111 autoExpandedKeysForSearch,
1212 countSelectedTools,
@@ -17,18 +17,18 @@ import { · 4 unmodified lines
1717 sourceOptionsFromTools,
1818 treeGroupsForView,
1919 type FilterApproval,
20−} from "./tool-explorer-derived";
21−import { ToolExplorerLoading } from "./tool-explorer-loading";
20+} from "./explorer-derived";
21+import { ToolExplorerLoading } from "./explorer-loading";
2222 import {
2323 EmptyState,
2424 VirtualFlatList,
25−} from "./tool-explorer-rows";
26−import { GroupNode, SourceSidebar } from "./tool-explorer-groups";
25+} from "./explorer-rows";
26+import { GroupNode, SourceSidebar } from "./explorer-groups";
2727 import {
2828 ToolExplorerToolbar,
2929 type GroupBy,
3030 type ViewMode,
31−} from "./tool-explorer-toolbar";
31+} from "./explorer-toolbar";
3232
3333 // ── Main Explorer ──
3434
executor/apps/web/src/components/tools/install-configs.tsrenamed from executor/apps/web/src/components/mcp-install-configs.ts+0−0

File renamed without changes.

executor/apps/web/src/components/tools/setup-card.tsxrenamed from executor/apps/web/src/components/mcp-setup-card.tsx+1−1
@@ -13,7 +13,7 @@ import { · 12 unmodified lines
1313 SelectTrigger,
1414 SelectValue,
1515 } from "@/components/ui/select";
16−import { MCP_PROVIDERS } from "@/components/mcp-install-configs";
16+import { MCP_PROVIDERS } from "@/components/tools/install-configs";
1717
1818 function inferServerName(workspaceId?: string): string {
1919 if (!workspaceId) return "executor";
executor/apps/web/src/components/tools/source-auth-dialog.tsxrenamed from executor/apps/web/src/components/tools-view-source-auth-dialog.tsx+0−0

File renamed without changes.

executor/apps/web/src/components/tools/source-card.tsxrenamed from executor/apps/web/src/components/tools-view-source-card.tsx+2−2
@@ -24,11 +24,11 @@ import { · 23 unmodified lines
2424 sourceEndpointLabel,
2525 sourceKeyForSource,
2626 } from "@/lib/tools-source-helpers";
27−import { ConfigureSourceAuthDialog } from "./tools-view-source-auth-dialog";
27+import { ConfigureSourceAuthDialog } from "./source-auth-dialog";
2828 import {
2929 OpenApiQualityDetails,
3030 SourceQualitySummary,
31−} from "./tools-view-source-quality-details";
31+} from "./source-quality-details";
3232
3333 export function SourceCard({
3434 source,
executor/apps/web/src/components/tools/source-quality-details.tsxrenamed from executor/apps/web/src/components/tools-view-source-quality-details.tsx+0−0

File renamed without changes.

executor/apps/web/src/components/tools/sources.tsx+2−0
@@ -0,0 +1,2 @@
1+export { AddSourceDialog } from "./add-source-dialog";
2+export { SourceCard } from "./source-card";
executor/apps/web/src/components/tools/view.tsxrenamed from executor/apps/web/src/components/tools-view.tsx+4−4
@@ -10,10 +10,10 @@ import { Button } from "@/components/ui/button"; · 9 unmodified lines
1010 import { Skeleton } from "@/components/ui/skeleton";
1111 import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
1212 import { PageHeader } from "@/components/page-header";
13−import { McpSetupCard } from "@/components/mcp-setup-card";
14−import { ToolExplorer } from "@/components/tool-explorer";
15−import { AddSourceDialog, SourceCard } from "@/components/tools-view-sources";
16−import { CredentialsPanel } from "@/components/tools-view-credentials";
13+import { McpSetupCard } from "@/components/tools/setup-card";
14+import { ToolExplorer } from "@/components/tools/explorer";
15+import { AddSourceDialog, SourceCard } from "@/components/tools/sources";
16+import { CredentialsPanel } from "@/components/tools/credentials";
1717 import { useSession } from "@/lib/session-context";
1818 import { useWorkspaceTools } from "@/hooks/use-workspace-tools";
1919 import { useQuery } from "convex/react";
executor/apps/web/src/frontend/app.tsx+6−6
@@ -2,12 +2,12 @@ · 1 unmodified line
22
33 import { Navigate, Outlet, Route, Routes, BrowserRouter, useSearchParams } from "react-router";
44 import { AppShell } from "@/components/app-shell";
5−import { ApprovalsView } from "@/components/approvals-view";
6−import { DashboardView } from "@/components/dashboard-view";
7−import { OnboardingView } from "@/components/onboarding-view";
8−import { OrganizationSettingsView } from "@/components/organization-settings-view";
9−import { TasksView } from "@/components/tasks-view";
10−import { ToolsView } from "@/components/tools-view";
5+import { ApprovalsView } from "@/components/approvals/approvals-view";
6+import { DashboardView } from "@/components/dashboard/view";
7+import { OnboardingView } from "@/components/organization/onboarding-view";
8+import { OrganizationSettingsView } from "@/components/organization/organization-settings-view";
9+import { TasksView } from "@/components/tasks/tasks-view";
10+import { ToolsView } from "@/components/tools/view";
1111
1212 function ToolsRoute() {
1313 const [searchParams] = useSearchParams();
executor/package.json+5−5
@@ -9,10 +9,10 @@ · 8 unmodified lines
99 "private": true,
1010 "scripts": {
1111 "doctor": "bun run executor.ts doctor",
12− "doctor:prod": "bun run scripts/doctor-prod.ts",
13− "deploy:prod": "bun run scripts/deploy-prod.ts",
14− "setup:prod:env": "bun run scripts/setup-prod-env.ts --from-env",
15− "setup:prod:cloudflare": "bun run scripts/setup-prod-cloudflare.ts",
12+ "doctor:prod": "bun run scripts/prod/doctor-prod.ts",
13+ "deploy:prod": "bun run scripts/prod/deploy-prod.ts",
14+ "setup:prod:env": "bun run scripts/prod/setup-prod-env.ts --from-env",
15+ "setup:prod:cloudflare": "bun run scripts/prod/setup-prod-cloudflare.ts",
1616 "setup:prod:all": "bun run setup:prod:cloudflare --deploy && bun run setup:prod:env && bun run doctor:prod",
1717 "iac:install": "bun install --cwd infra",
1818 "iac:deploy": "bun run --cwd infra deploy",
@@ -25,7 +25,7 @@ · 6 unmodified lines
2525 "deploy": "bunx convex deploy",
2626 "codegen": "bunx convex codegen",
2727 "build:binary": "bun build executor.ts --compile --outfile dist/executor",
28− "build:release": "bun run scripts/build-release.ts"
28+ "build:release": "bun run scripts/release/build-release.ts"
2929 },
3030 "type": "module"
3131 }
executor/packages/convex/_generated/api.d.ts+314−0
@@ -854,6 +854,320 @@ export declare const internal: { · 853 unmodified lines
854854 any
855855 >;
856856 };
857+ database_anonymous_session: {
858+ bootstrapAnonymousSession: FunctionReference<
859+ "mutation",
860+ "internal",
861+ { sessionId?: string },
862+ any
863+ >;
864+ };
865+ database_approvals: {
866+ createApproval: FunctionReference<
867+ "mutation",
868+ "internal",
869+ { id: string; input?: any; taskId: string; toolPath: string },
870+ any
871+ >;
872+ getApproval: FunctionReference<
873+ "query",
874+ "internal",
875+ { approvalId: string },
876+ any
877+ >;
878+ getApprovalInWorkspace: FunctionReference<
879+ "query",
880+ "internal",
881+ { approvalId: string; workspaceId: Id<"workspaces"> },
882+ any
883+ >;
884+ listApprovals: FunctionReference<
885+ "query",
886+ "internal",
887+ {
888+ status?: "pending" | "approved" | "denied";
889+ workspaceId: Id<"workspaces">;
890+ },
891+ any
892+ >;
893+ listPendingApprovals: FunctionReference<
894+ "query",
895+ "internal",
896+ { workspaceId: Id<"workspaces"> },
897+ any
898+ >;
899+ resolveApproval: FunctionReference<
900+ "mutation",
901+ "internal",
902+ {
903+ approvalId: string;
904+ decision: "approved" | "denied";
905+ reason?: string;
906+ reviewerId?: string;
907+ },
908+ any
909+ >;
910+ };
911+ database_credentials: {
912+ listCredentialProviders: FunctionReference<"query", "internal", {}, any>;
913+ listCredentials: FunctionReference<
914+ "query",
915+ "internal",
916+ { workspaceId: Id<"workspaces"> },
917+ any
918+ >;
919+ resolveCredential: FunctionReference<
920+ "query",
921+ "internal",
922+ {
923+ actorId?: string;
924+ scope: "workspace" | "actor";
925+ sourceKey: string;
926+ workspaceId: Id<"workspaces">;
927+ },
928+ any
929+ >;
930+ upsertCredential: FunctionReference<
931+ "mutation",
932+ "internal",
933+ {
934+ actorId?: string;
935+ id?: string;
936+ overridesJson?: any;
937+ provider?: "local-convex" | "workos-vault";
938+ scope: "workspace" | "actor";
939+ secretJson: any;
940+ sourceKey: string;
941+ workspaceId: Id<"workspaces">;
942+ },
943+ any
944+ >;
945+ };
946+ database_oauth: {
947+ consumeAnonymousOauthAuthorizationCode: FunctionReference<
948+ "mutation",
949+ "internal",
950+ { code: string },
951+ any
952+ >;
953+ countAnonymousOauthAuthorizationCodes: FunctionReference<
954+ "query",
955+ "internal",
956+ {},
957+ any
958+ >;
959+ getActiveAnonymousOauthSigningKey: FunctionReference<
960+ "query",
961+ "internal",
962+ {},
963+ any
964+ >;
965+ getAnonymousOauthClient: FunctionReference<
966+ "query",
967+ "internal",
968+ { clientId: string },
969+ any
970+ >;
971+ purgeExpiredAnonymousOauthAuthorizationCodes: FunctionReference<
972+ "mutation",
973+ "internal",
974+ { now: number },
975+ any
976+ >;
977+ registerAnonymousOauthClient: FunctionReference<
978+ "mutation",
979+ "internal",
980+ { clientId: string; clientName?: string; redirectUris: Array<string> },
981+ any
982+ >;
983+ storeAnonymousOauthAuthorizationCode: FunctionReference<
984+ "mutation",
985+ "internal",
986+ {
987+ actorId: string;
988+ clientId: string;
989+ code: string;
990+ codeChallenge: string;
991+ codeChallengeMethod: string;
992+ createdAt: number;
993+ expiresAt: number;
994+ redirectUri: string;
995+ tokenClaims?: any;
996+ },
997+ any
998+ >;
999+ storeAnonymousOauthSigningKey: FunctionReference<
1000+ "mutation",
1001+ "internal",
1002+ {
1003+ algorithm: string;
1004+ keyId: string;
1005+ privateKeyJwk: any;
1006+ publicKeyJwk: any;
1007+ },
1008+ any
1009+ >;
1010+ };
1011+ database_policies: {
1012+ listAccessPolicies: FunctionReference<
1013+ "query",
1014+ "internal",
1015+ { workspaceId: Id<"workspaces"> },
1016+ any
1017+ >;
1018+ listRuntimeTargets: FunctionReference<"query", "internal", {}, any>;
1019+ upsertAccessPolicy: FunctionReference<
1020+ "mutation",
1021+ "internal",
1022+ {
1023+ actorId?: string;
1024+ clientId?: string;
1025+ decision: "allow" | "require_approval" | "deny";
1026+ id?: string;
1027+ priority?: number;
1028+ toolPathPattern: string;
1029+ workspaceId: Id<"workspaces">;
1030+ },
1031+ any
1032+ >;
1033+ };
1034+ database_task_events: {
1035+ createTaskEvent: FunctionReference<
1036+ "mutation",
1037+ "internal",
1038+ { eventName: string; payload: any; taskId: string; type: string },
1039+ any
1040+ >;
1041+ listTaskEvents: FunctionReference<
1042+ "query",
1043+ "internal",
1044+ { taskId: string },
1045+ any
1046+ >;
1047+ };
1048+ database_tasks: {
1049+ createTask: FunctionReference<
1050+ "mutation",
1051+ "internal",
1052+ {
1053+ actorId: string;
1054+ clientId?: string;
1055+ code: string;
1056+ id: string;
1057+ metadata?: any;
1058+ runtimeId: string;
1059+ timeoutMs?: number;
1060+ workspaceId: Id<"workspaces">;
1061+ },
1062+ any
1063+ >;
1064+ getTask: FunctionReference<"query", "internal", { taskId: string }, any>;
1065+ getTaskInWorkspace: FunctionReference<
1066+ "query",
1067+ "internal",
1068+ { taskId: string; workspaceId: Id<"workspaces"> },
1069+ any
1070+ >;
1071+ listQueuedTaskIds: FunctionReference<
1072+ "query",
1073+ "internal",
1074+ { limit?: number },
1075+ any
1076+ >;
1077+ listTasks: FunctionReference<
1078+ "query",
1079+ "internal",
1080+ { workspaceId: Id<"workspaces"> },
1081+ any
1082+ >;
1083+ markTaskFinished: FunctionReference<
1084+ "mutation",
1085+ "internal",
1086+ {
1087+ error?: string;
1088+ exitCode?: number;
1089+ result?: any;
1090+ status: "completed" | "failed" | "timed_out" | "denied";
1091+ taskId: string;
1092+ },
1093+ any
1094+ >;
1095+ markTaskRunning: FunctionReference<
1096+ "mutation",
1097+ "internal",
1098+ { taskId: string },
1099+ any
1100+ >;
1101+ };
1102+ database_tool_calls: {
1103+ finishToolCall: FunctionReference<
1104+ "mutation",
1105+ "internal",
1106+ {
1107+ callId: string;
1108+ error?: string;
1109+ status: "completed" | "failed" | "denied";
1110+ taskId: string;
1111+ },
1112+ any
1113+ >;
1114+ getToolCall: FunctionReference<
1115+ "query",
1116+ "internal",
1117+ { callId: string; taskId: string },
1118+ any
1119+ >;
1120+ listToolCalls: FunctionReference<
1121+ "query",
1122+ "internal",
1123+ { taskId: string },
1124+ any
1125+ >;
1126+ setToolCallPendingApproval: FunctionReference<
1127+ "mutation",
1128+ "internal",
1129+ { approvalId: string; callId: string; taskId: string },
1130+ any
1131+ >;
1132+ upsertToolCallRequested: FunctionReference<
1133+ "mutation",
1134+ "internal",
1135+ {
1136+ callId: string;
1137+ taskId: string;
1138+ toolPath: string;
1139+ workspaceId: Id<"workspaces">;
1140+ },
1141+ any
1142+ >;
1143+ };
1144+ database_tool_sources: {
1145+ deleteToolSource: FunctionReference<
1146+ "mutation",
1147+ "internal",
1148+ { sourceId: string; workspaceId: Id<"workspaces"> },
1149+ any
1150+ >;
1151+ listToolSources: FunctionReference<
1152+ "query",
1153+ "internal",
1154+ { workspaceId: Id<"workspaces"> },
1155+ any
1156+ >;
1157+ upsertToolSource: FunctionReference<
1158+ "mutation",
1159+ "internal",
1160+ {
1161+ config: any;
1162+ enabled?: boolean;
1163+ id?: string;
1164+ name: string;
1165+ type: "mcp" | "openapi" | "graphql";
1166+ workspaceId: Id<"workspaces">;
1167+ },
1168+ any
1169+ >;
1170+ };
8571171 executor: {
8581172 completeRuntimeRun: FunctionReference<
8591173 "mutation",
executor/packages/convex/auth.ts+2−2
@@ -2,8 +2,8 @@ import { AuthKit, type AuthFunctions } from "@convex-dev/workos-authkit"; · 1 unmodified line
22 import { components, internal } from "./_generated/api";
33 import type { DataModel } from "./_generated/dataModel";
44 import { internalMutation, mutation } from "./_generated/server";
5−import { bootstrapCurrentWorkosAccountImpl } from "./auth-bootstrap";
6−import { workosEventHandlers } from "./auth-event-handlers";
5+import { bootstrapCurrentWorkosAccountImpl } from "./auth/bootstrap";
6+import { workosEventHandlers } from "./auth/event_handlers";
77
88 const workosEnabled = Boolean(
99 process.env.WORKOS_CLIENT_ID && process.env.WORKOS_API_KEY && process.env.WORKOS_WEBHOOK_SECRET,
executor/packages/convex/auth/accounts.tsrenamed from executor/packages/convex/auth-accounts.ts+2−2
@@ -1,5 +1,5 @@
1−import { getAccountByWorkosId } from "./auth-db-queries";
2−import type { DbCtx } from "./auth-types";
1+import { getAccountByWorkosId } from "./db_queries";
2+import type { DbCtx } from "./types";
33
44 type UpsertWorkosAccountArgs = {
55 workosUserId: string;
executor/packages/convex/auth/bootstrap.tsrenamed from executor/packages/convex/auth-bootstrap.ts+7−7
@@ -1,15 +1,15 @@
1−import type { MutationCtx } from "./_generated/server";
2−import { upsertWorkosAccount } from "./auth-accounts";
3−import { getOrganizationByWorkosOrgId } from "./auth-db-queries";
4−import { getAuthKitUserProfile, resolveIdentityProfile } from "./auth-identity";
1+import type { MutationCtx } from "../_generated/server";
2+import { upsertWorkosAccount } from "./accounts";
3+import { getOrganizationByWorkosOrgId } from "./db_queries";
4+import { getAuthKitUserProfile, resolveIdentityProfile } from "./identity";
55 import {
66 ensureWorkspaceMembership,
77 mapOrganizationRoleToWorkspaceRole,
88 markPendingInvitesAcceptedByEmail,
99 upsertOrganizationMembership,
10−} from "./auth-memberships";
11−import { ensurePersonalWorkspace, refreshGeneratedPersonalWorkspaceNames } from "./auth-personal-workspace";
12−import type { AccountId } from "./auth-types";
10+} from "./memberships";
11+import { ensurePersonalWorkspace, refreshGeneratedPersonalWorkspaceNames } from "./personal_workspace";
12+import type { AccountId } from "./types";
1313
1414 async function seedHintedOrganizationMembership(
1515 ctx: MutationCtx,
executor/packages/convex/auth/db_queries.tsrenamed from executor/packages/convex/auth-db-queries.ts+2−2
@@ -1,5 +1,5 @@
1−import type { Doc } from "./_generated/dataModel";
2−import type { AccountId, DbCtx, OrganizationId } from "./auth-types";
1+import type { Doc } from "../_generated/dataModel";
2+import type { AccountId, DbCtx, OrganizationId } from "./types";
33
44 export async function getAccountByWorkosId(ctx: DbCtx, workosUserId: string) {
55 return await ctx.db
executor/packages/convex/auth/event_handlers.tsrenamed from executor/packages/convex/auth-event-handlers.ts+6−6
@@ -1,20 +1,20 @@
11 import { type AuthKit } from "@convex-dev/workos-authkit";
2−import type { DataModel, Doc } from "./_generated/dataModel";
3−import type { MutationCtx } from "./_generated/server";
4−import { upsertWorkosAccount } from "./auth-accounts";
2+import type { DataModel, Doc } from "../_generated/dataModel";
3+import type { MutationCtx } from "../_generated/server";
4+import { upsertWorkosAccount } from "./accounts";
55 import {
66 getAccountByWorkosId,
77 getFirstWorkspaceByOrganizationId,
88 getOrganizationByWorkosOrgId,
99 getWorkspaceByWorkosOrgId,
10−} from "./auth-db-queries";
10+} from "./db_queries";
1111 import {
1212 deriveOrganizationMembershipState,
1313 deriveWorkspaceMembershipRole,
1414 markPendingInvitesAcceptedByEmail,
1515 upsertOrganizationMembership,
16−} from "./auth-memberships";
17−import { ensureUniqueOrganizationSlug } from "./auth-naming";
16+} from "./memberships";
17+import { ensureUniqueOrganizationSlug } from "./naming";
1818
1919 type WorkosMembershipEventData = {
2020 id: string;
executor/packages/convex/auth/identity.tsrenamed from executor/packages/convex/auth-identity.ts+2−2
@@ -1,5 +1,5 @@
1−import { components } from "./_generated/api";
2−import type { RunQueryCtx } from "./auth-types";
1+import { components } from "../_generated/api";
2+import type { RunQueryCtx } from "./types";
33
44 type WorkosProfile = {
55 email?: string;
executor/packages/convex/auth/memberships.tsrenamed from executor/packages/convex/auth-memberships.ts+2−2
@@ -1,4 +1,4 @@
1−import type { Doc } from "./_generated/dataModel";
1+import type { Doc } from "../_generated/dataModel";
22 import type {
33 AccountId,
44 DbCtx,
@@ -7,7 +7,7 @@ import type { · 2 unmodified lines
77 OrganizationRole,
88 WorkspaceId,
99 WorkspaceMemberRole,
10−} from "./auth-types";
10+} from "./types";
1111
1212 export function mapOrganizationRoleToWorkspaceRole(role: OrganizationRole): WorkspaceMemberRole {
1313 if (role === "owner") {
executor/packages/convex/auth/naming.tsrenamed from executor/packages/convex/auth-naming.ts+3−3
@@ -1,6 +1,6 @@
1−import { slugify } from "../core/src/identity";
2−import { ensureUniqueSlug } from "../core/src/slug";
3−import type { DbCtx } from "./auth-types";
1+import { slugify } from "../../core/src/identity";
2+import { ensureUniqueSlug } from "../../core/src/slug";
3+import type { DbCtx } from "./types";
44
55 function titleCaseWords(input: string): string {
66 return input
executor/packages/convex/auth/personal_workspace.tsrenamed from executor/packages/convex/auth-personal-workspace.ts+4−4
@@ -1,13 +1,13 @@
1−import type { Id } from "./_generated/dataModel";
2−import { upsertOrganizationMembership } from "./auth-memberships";
1+import type { Id } from "../_generated/dataModel";
2+import { upsertOrganizationMembership } from "./memberships";
33 import {
44 buildPersonalWorkspaceSlugSeed,
55 derivePersonalNames,
66 ensureUniqueOrganizationSlug,
77 isGeneratedPersonalOrganizationName,
88 isGeneratedPersonalWorkspaceName,
9−} from "./auth-naming";
10−import type { AccountId, DbCtx } from "./auth-types";
9+} from "./naming";
10+import type { AccountId, DbCtx } from "./types";
1111
1212 type PersonalWorkspaceOptions = {
1313 email: string;
executor/packages/convex/auth/types.tsrenamed from executor/packages/convex/auth-types.ts+2−2
@@ -1,5 +1,5 @@
1−import type { Doc, Id } from "./_generated/dataModel";
2−import type { MutationCtx } from "./_generated/server";
1+import type { Doc, Id } from "../_generated/dataModel";
2+import type { MutationCtx } from "../_generated/server";
33
44 export type DbCtx = Pick<MutationCtx, "db">;
55 export type RunQueryCtx = Pick<MutationCtx, "runQuery">;
executor/packages/convex/database.ts+9−9
@@ -6,7 +6,7 @@ export { · 5 unmodified lines
66 getTaskInWorkspace,
77 markTaskRunning,
88 markTaskFinished,
9−} from "./database-tasks";
9+} from "./database/tasks";
1010 export {
1111 createApproval,
1212 getApproval,
@@ -14,32 +14,32 @@ export { · 1 unmodified line
1414 listPendingApprovals,
1515 resolveApproval,
1616 getApprovalInWorkspace,
17−} from "./database-approvals";
17+} from "./database/approvals";
1818 export {
1919 upsertToolCallRequested,
2020 getToolCall,
2121 setToolCallPendingApproval,
2222 finishToolCall,
2323 listToolCalls,
24−} from "./database-tool-calls";
25−export { bootstrapAnonymousSession } from "./database-anonymous-session";
24+} from "./database/tool_calls";
25+export { bootstrapAnonymousSession } from "./database/anonymous_session";
2626 export {
2727 listRuntimeTargets,
2828 upsertAccessPolicy,
2929 listAccessPolicies,
30−} from "./database-policies";
30+} from "./database/policies";
3131 export {
3232 upsertCredential,
3333 listCredentials,
3434 listCredentialProviders,
3535 resolveCredential,
36−} from "./database-credentials";
36+} from "./database/credentials";
3737 export {
3838 upsertToolSource,
3939 listToolSources,
4040 deleteToolSource,
41−} from "./database-tool-sources";
42−export { createTaskEvent, listTaskEvents } from "./database-task-events";
41+} from "./database/tool_sources";
42+export { createTaskEvent, listTaskEvents } from "./database/task_events";
4343 export {
4444 getActiveAnonymousOauthSigningKey,
4545 storeAnonymousOauthSigningKey,
@@ -49,4 +49,4 @@ export { · 3 unmodified lines
4949 consumeAnonymousOauthAuthorizationCode,
5050 purgeExpiredAnonymousOauthAuthorizationCodes,
5151 countAnonymousOauthAuthorizationCodes,
52−} from "./database-oauth";
52+} from "./database/oauth";
executor/packages/convex/database/anonymous.tsrenamed from executor/packages/convex/database-anonymous.ts+4−4
@@ -1,7 +1,7 @@
1−import type { Doc } from "./_generated/dataModel";
2−import type { MutationCtx } from "./_generated/server";
3−import { slugify } from "../core/src/identity";
4−import { ensureUniqueSlug } from "../core/src/slug";
1+import type { Doc } from "../_generated/dataModel";
2+import type { MutationCtx } from "../_generated/server";
3+import { slugify } from "../../core/src/identity";
4+import { ensureUniqueSlug } from "../../core/src/slug";
55
66 type OrganizationRole = "owner" | "admin" | "member" | "billing_admin";
77 type OrganizationMemberStatus = "active" | "pending" | "removed";
executor/packages/convex/database/anonymous_session.tsrenamed from executor/packages/convex/database-anonymous-session.ts+3−3
@@ -1,7 +1,7 @@
11 import { v } from "convex/values";
2−import { internalMutation } from "./_generated/server";
3−import { ensureAnonymousIdentity } from "./database-anonymous";
4−import { mapAnonymousContext } from "./database-readers";
2+import { internalMutation } from "../_generated/server";
3+import { ensureAnonymousIdentity } from "./anonymous";
4+import { mapAnonymousContext } from "./readers";
55
66 export const bootstrapAnonymousSession = internalMutation({
77 args: { sessionId: v.optional(v.string()) },
executor/packages/convex/database/approvals.tsrenamed from executor/packages/convex/database-approvals.ts+5−5
@@ -1,9 +1,9 @@
11 import { v } from "convex/values";
2−import { internalMutation, internalQuery } from "./_generated/server";
3−import { mapApproval } from "./database-mappers";
4−import { getApprovalDoc, getTaskDoc } from "./database-readers";
5−import { approvalStatusValidator } from "./database-validators";
6−import type { TaskStatus } from "../core/src/types";
2+import { internalMutation, internalQuery } from "../_generated/server";
3+import { mapApproval } from "./mappers";
4+import { getApprovalDoc, getTaskDoc } from "./readers";
5+import { approvalStatusValidator } from "./validators";
6+import type { TaskStatus } from "../../core/src/types";
77
88 export const createApproval = internalMutation({
99 args: {
executor/packages/convex/database/credentials.tsrenamed from executor/packages/convex/database-credentials.ts+5−5
@@ -1,12 +1,12 @@
11 import { v } from "convex/values";
2−import { internalMutation, internalQuery } from "./_generated/server";
3−import { mapCredential } from "./database-mappers";
4−import { computeBoundAuthFingerprint } from "./database-readers";
2+import { internalMutation, internalQuery } from "../_generated/server";
3+import { mapCredential } from "./mappers";
4+import { computeBoundAuthFingerprint } from "./readers";
55 import {
66 credentialProviderValidator,
77 credentialScopeValidator,
8−} from "./database-validators";
9−import { asRecord } from "./lib/object";
8+} from "./validators";
9+import { asRecord } from "../lib/object";
1010
1111 export const upsertCredential = internalMutation({
1212 args: {
executor/packages/convex/database/mappers.tsrenamed from executor/packages/convex/database-mappers.ts+3−3
@@ -1,6 +1,6 @@
1−import type { Doc } from "./_generated/dataModel";
2−import { asRecord } from "./lib/object";
3−import { DEFAULT_TASK_TIMEOUT_MS } from "./task-constants";
1+import type { Doc } from "../_generated/dataModel";
2+import { asRecord } from "../lib/object";
3+import { DEFAULT_TASK_TIMEOUT_MS } from "../task/constants";
44
55 export function stableStringify(value: unknown): string {
66 if (Array.isArray(value)) {
executor/packages/convex/database/oauth.tsrenamed from executor/packages/convex/database-oauth.ts+1−1
@@ -1,5 +1,5 @@
11 import { v } from "convex/values";
2−import { internalMutation, internalQuery } from "./_generated/server";
2+import { internalMutation, internalQuery } from "../_generated/server";
33
44 export const getActiveAnonymousOauthSigningKey = internalQuery({
55 args: {},
executor/packages/convex/database/policies.tsrenamed from executor/packages/convex/database-policies.ts+3−3
@@ -1,7 +1,7 @@
11 import { v } from "convex/values";
2−import { internalMutation, internalQuery } from "./_generated/server";
3−import { mapPolicy } from "./database-mappers";
4−import { policyDecisionValidator } from "./database-validators";
2+import { internalMutation, internalQuery } from "../_generated/server";
3+import { mapPolicy } from "./mappers";
4+import { policyDecisionValidator } from "./validators";
55
66 export const listRuntimeTargets = internalQuery({
77 args: {},
executor/packages/convex/database/readers.tsrenamed from executor/packages/convex/database-readers.ts+4−4
@@ -1,7 +1,7 @@
1−import type { Doc } from "./_generated/dataModel";
2−import type { QueryCtx } from "./_generated/server";
3−import { normalizeSourceAuthFingerprint } from "./database-mappers";
4−import { asRecord } from "./lib/object";
1+import type { Doc } from "../_generated/dataModel";
2+import type { QueryCtx } from "../_generated/server";
3+import { normalizeSourceAuthFingerprint } from "./mappers";
4+import { asRecord } from "../lib/object";
55
66 export function mapAnonymousContext(doc: Doc<"anonymousSessions">) {
77 return {
executor/packages/convex/database/task_events.tsrenamed from executor/packages/convex/database-task-events.ts+3−3
@@ -1,7 +1,7 @@
11 import { v } from "convex/values";
2−import { internalMutation, internalQuery } from "./_generated/server";
3−import { getTaskDoc, mapTaskEvent } from "./database-readers";
4−import { asRecord } from "./lib/object";
2+import { internalMutation, internalQuery } from "../_generated/server";
3+import { getTaskDoc, mapTaskEvent } from "./readers";
4+import { asRecord } from "../lib/object";
55
66 export const createTaskEvent = internalMutation({
77 args: {
executor/packages/convex/database/tasks.tsrenamed from executor/packages/convex/database-tasks.ts+7−7
@@ -1,11 +1,11 @@
11 import { v } from "convex/values";
2−import { internalMutation, internalQuery } from "./_generated/server";
3−import { mapTask } from "./database-mappers";
4−import { getTaskDoc } from "./database-readers";
5−import { completedTaskStatusValidator } from "./database-validators";
6−import { asRecord } from "./lib/object";
7−import { DEFAULT_TASK_TIMEOUT_MS } from "./task-constants";
8−import { isTerminalTaskStatus } from "./task-status";
2+import { internalMutation, internalQuery } from "../_generated/server";
3+import { mapTask } from "./mappers";
4+import { getTaskDoc } from "./readers";
5+import { completedTaskStatusValidator } from "./validators";
6+import { asRecord } from "../lib/object";
7+import { DEFAULT_TASK_TIMEOUT_MS } from "../task/constants";
8+import { isTerminalTaskStatus } from "../task/status";
99
1010 export const createTask = internalMutation({
1111 args: {
executor/packages/convex/database/tool_calls.tsrenamed from executor/packages/convex/database-tool-calls.ts+4−4
@@ -1,8 +1,8 @@
11 import { v } from "convex/values";
2−import { internalMutation, internalQuery } from "./_generated/server";
3−import { mapToolCall } from "./database-mappers";
4−import { getToolCallDoc } from "./database-readers";
5−import { terminalToolCallStatusValidator } from "./database-validators";
2+import { internalMutation, internalQuery } from "../_generated/server";
3+import { mapToolCall } from "./mappers";
4+import { getToolCallDoc } from "./readers";
5+import { terminalToolCallStatusValidator } from "./validators";
66
77 export const upsertToolCallRequested = internalMutation({
88 args: {
executor/packages/convex/database/tool_sources.tsrenamed from executor/packages/convex/database-tool-sources.ts+4−4
@@ -1,12 +1,12 @@
11 import { v } from "convex/values";
2−import { internalMutation, internalQuery } from "./_generated/server";
2+import { internalMutation, internalQuery } from "../_generated/server";
33 import {
44 computeSourceSpecHash,
55 mapSource,
66 normalizeSourceAuthFingerprint,
7−} from "./database-mappers";
8−import { toolSourceTypeValidator } from "./database-validators";
9−import { asRecord } from "./lib/object";
7+} from "./mappers";
8+import { toolSourceTypeValidator } from "./validators";
9+import { asRecord } from "../lib/object";
1010
1111 export const upsertToolSource = internalMutation({
1212 args: {
executor/packages/convex/database/validators.tsrenamed from executor/packages/convex/database-validators.ts+0−0

File renamed without changes.

executor/packages/convex/executor.ts+4−4
@@ -7,10 +7,10 @@ import { workspaceMutation } from "../core/src/function-builders"; · 6 unmodified lines
77 import { actorIdForAccount } from "../core/src/identity";
88 import { isKnownRuntimeId } from "../core/src/runtimes/runtime-catalog";
99 import type { ApprovalRecord, TaskRecord } from "../core/src/types";
10−import { isTerminalTaskStatus, taskTerminalEventType } from "./task-status";
11−import { DEFAULT_TASK_TIMEOUT_MS } from "./task-constants";
12−import { createTaskEvent } from "./task-events";
13−import { markTaskFinished } from "./task-finish";
10+import { isTerminalTaskStatus, taskTerminalEventType } from "./task/status";
11+import { DEFAULT_TASK_TIMEOUT_MS } from "./task/constants";
12+import { createTaskEvent } from "./task/events";
13+import { markTaskFinished } from "./task/finish";
1414
1515 async function createTaskRecord(
1616 ctx: MutationCtx,
executor/packages/convex/executorNode.ts+4−4
@@ -8,15 +8,15 @@ import type { · 7 unmodified lines
88 OpenApiSourceQuality,
99 SourceAuthProfile,
1010 } from "../core/src/types";
11−import { requireCanonicalActor } from "./executor_node/actor_auth";
11+import { requireCanonicalActor } from "./runtime/actor_auth";
1212 import {
1313 listToolsForContext,
1414 listToolsWithWarningsForContext,
1515 loadDtsUrls,
1616 loadWorkspaceDtsStorageIds,
17−} from "./executor_node/workspace_tools";
18−import { runQueuedTask } from "./executor_node/task_runner";
19−import { handleExternalToolCallRequest } from "./executor_node/external_tool_call";
17+} from "./runtime/workspace_tools";
18+import { runQueuedTask } from "./runtime/task_runner";
19+import { handleExternalToolCallRequest } from "./runtime/external_tool_call";
2020
2121 export const listToolsWithWarnings = action({
2222 args: {
executor/packages/convex/invites.ts+1−1
@@ -10,7 +10,7 @@ import { · 9 unmodified lines
1010 sendWorkosInvitation,
1111 updateWorkosOrganizationName,
1212 workosEnabled,
13−} from "./invites-workos";
13+} from "./invites/workos";
1414
1515 const organizationRoleValidator = v.union(
1616 v.literal("owner"),
executor/packages/convex/invites/workos.tsrenamed from executor/packages/convex/invites-workos.ts+0−0

File renamed without changes.

executor/packages/convex/runtime/actor_auth.tsrenamed from executor/packages/convex/executor_node/actor_auth.ts+0−0

File renamed without changes.

executor/packages/convex/runtime/events.tsrenamed from executor/packages/convex/executor_node/events.ts+1−1
@@ -1,7 +1,7 @@
11 "use node";
22
33 import type { ActionCtx } from "../_generated/server";
4−import { createTaskEvent, type TaskEventName } from "../task-events";
4+import { createTaskEvent, type TaskEventName } from "../task/events";
55
66 export async function publishTaskEvent(
77 ctx: ActionCtx,
executor/packages/convex/runtime/external_tool_call.tsrenamed from executor/packages/convex/executor_node/external_tool_call.ts+0−0

File renamed without changes.

executor/packages/convex/runtime/policy.tsrenamed from executor/packages/convex/executor_node/policy.ts+0−0

File renamed without changes.

executor/packages/convex/runtime/task_runner.tsrenamed from executor/packages/convex/executor_node/task_runner.ts+2−2
@@ -14,8 +14,8 @@ import { runCodeWithAdapter } from "../../core/src/runtimes/runtime-core"; · 13 unmodified lines
1414 import type { TaskRecord } from "../../core/src/types";
1515 import { describeError } from "../../core/src/utils";
1616 import { publishTaskEvent } from "./events";
17−import { taskTerminalEventType } from "../task-status";
18−import { markTaskFinished } from "../task-finish";
17+import { taskTerminalEventType } from "../task/status";
18+import { markTaskFinished } from "../task/finish";
1919 import { invokeTool } from "./tool_invocation";
2020
2121 async function markTaskFailedAndPublish(
executor/packages/convex/runtime/tool_call_credentials.tsrenamed from executor/packages/convex/executor_node/tool_call_credentials.ts+2−0
@@ -1,3 +1,5 @@
1+"use node";
2+
13 import type { ActionCtx } from "../_generated/server";
24 import { internal } from "../_generated/api";
35 import { resolveCredentialPayload } from "../../core/src/credential-providers";
executor/packages/convex/runtime/tool_call_lifecycle.tsrenamed from executor/packages/convex/executor_node/tool_call_lifecycle.ts+0−0

File renamed without changes.

executor/packages/convex/runtime/tool_call_resolution.tsrenamed from executor/packages/convex/executor_node/tool_call_resolution.ts+2−0
@@ -1,3 +1,5 @@
1+"use node";
2+
13 import type { ActionCtx } from "../_generated/server";
24 import { parseGraphqlOperationPaths } from "../../core/src/graphql-operation-paths";
35 import type { AccessPolicyRecord, PolicyDecision, TaskRecord, ToolDefinition } from "../../core/src/types";
executor/packages/convex/runtime/tool_descriptors.tsrenamed from executor/packages/convex/executor_node/tool_descriptors.ts+0−0

File renamed without changes.

executor/packages/convex/runtime/tool_invocation.tsrenamed from executor/packages/convex/executor_node/tool_invocation.ts+0−0

File renamed without changes.

executor/packages/convex/runtime/tool_paths.test.tsrenamed from executor/packages/convex/executor_node/tool_paths.test.ts+0−0

File renamed without changes.

executor/packages/convex/runtime/tool_paths.tsrenamed from executor/packages/convex/executor_node/tool_paths.ts+0−0

File renamed without changes.

executor/packages/convex/runtime/tool_source_loading.tsrenamed from executor/packages/convex/executor_node/tool_source_loading.ts+0−0

File renamed without changes.

executor/packages/convex/runtime/workspace_tools.tsrenamed from executor/packages/convex/executor_node/workspace_tools.ts+0−0

File renamed without changes.

executor/packages/convex/task/constants.tsrenamed from executor/packages/convex/task-constants.ts+0−0

File renamed without changes.

executor/packages/convex/task/events.tsrenamed from executor/packages/convex/task-events.ts+1−1
@@ -1,4 +1,4 @@
1−import { internal } from "./_generated/api";
1+import { internal } from "../_generated/api";
22
33 export type TaskEventName = "task" | "approval";
44
executor/packages/convex/task/finish.tsrenamed from executor/packages/convex/task-finish.ts+3−3
@@ -1,6 +1,6 @@
1−import { internal } from "./_generated/api";
2−import type { ActionCtx, MutationCtx } from "./_generated/server";
3−import type { TaskRecord, TaskStatus } from "../core/src/types";
1+import { internal } from "../_generated/api";
2+import type { ActionCtx, MutationCtx } from "../_generated/server";
3+import type { TaskRecord, TaskStatus } from "../../core/src/types";
44
55 type TerminalTaskStatus = Extract<TaskStatus, "completed" | "failed" | "timed_out" | "denied">;
66 type TaskFinishContext = Pick<ActionCtx, "runMutation"> | Pick<MutationCtx, "runMutation">;
executor/packages/convex/task/status.tsrenamed from executor/packages/convex/task-status.ts+1−1
@@ -1,4 +1,4 @@
1−import type { TaskStatus } from "../core/src/types";
1+import type { TaskStatus } from "../../core/src/types";
22
33 export type TerminalTaskStatus = Extract<TaskStatus, "completed" | "failed" | "timed_out" | "denied">;
44
executor/scripts/dev/vscode-elicitation-server.tsrenamed from executor/vscode-elicitation-server.ts+0−0

File renamed without changes.

executor/scripts/dev/wipe-convex-db.tsrenamed from executor/wipe-convex-db.ts+0−0

File renamed without changes.

executor/scripts/prod/deploy-prod.test.tsrenamed from executor/scripts/deploy-prod.test.ts+0−0

File renamed without changes.

executor/scripts/prod/deploy-prod.tsrenamed from executor/scripts/deploy-prod.ts+9−9
@@ -33,7 +33,7 @@ interface DeployStep { · 32 unmodified lines
3333 cwd?: string;
3434 }
3535
36−const EXECUTOR_ROOT = path.resolve(import.meta.dir, "..");
36+const EXECUTOR_ROOT = path.resolve(import.meta.dir, "..", "..");
3737 const RUNNER_HOST_DIR = path.join(EXECUTOR_ROOT, "packages", "runner-sandbox-host");
3838
3939 const ALL_STEPS: StepId[] = ["cloudflare", "env", "convex", "doctor"];
@@ -52,7 +52,7 @@ function printHelp(): void { · 12 unmodified lines
5252 console.log(`Guided production deploy for executor
5353
5454 Usage:
55− bun run scripts/deploy-prod.ts [options]
55+ bun run scripts/prod/deploy-prod.ts [options]
5656
5757 Options:
5858 --apply Execute steps (default is plan only)
@@ -69,10 +69,10 @@ Steps: · 10 unmodified lines
6969 doctor Verify prod setup and print remediation
7070
7171 Examples:
72− bun run scripts/deploy-prod.ts
73− bun run scripts/deploy-prod.ts --apply
74− bun run scripts/deploy-prod.ts --apply --only cloudflare,doctor
75− bun run scripts/deploy-prod.ts --apply --skip convex --yes
72+ bun run scripts/prod/deploy-prod.ts
73+ bun run scripts/prod/deploy-prod.ts --apply
74+ bun run scripts/prod/deploy-prod.ts --apply --only cloudflare,doctor
75+ bun run scripts/prod/deploy-prod.ts --apply --skip convex --yes
7676 `);
7777 }
7878
@@ -174,13 +174,13 @@ function buildSteps(selected: StepId[]): DeployStep[] { · 95 unmodified lines
174174 cloudflare: {
175175 id: "cloudflare",
176176 name: "Cloudflare Runtime",
177− command: ["bun", "run", "scripts/setup-prod-cloudflare.ts", "--deploy", "--no-doctor"],
177+ command: ["bun", "run", "scripts/prod/setup-prod-cloudflare.ts", "--deploy", "--no-doctor"],
178178 cwd: EXECUTOR_ROOT,
179179 },
180180 env: {
181181 id: "env",
182182 name: "Convex Env Sync",
183− command: ["bun", "run", "scripts/setup-prod-env.ts", "--from-env", "--strict"],
183+ command: ["bun", "run", "scripts/prod/setup-prod-env.ts", "--from-env", "--strict"],
184184 cwd: EXECUTOR_ROOT,
185185 },
186186 convex: {
@@ -192,7 +192,7 @@ function buildSteps(selected: StepId[]): DeployStep[] { · 5 unmodified lines
192192 doctor: {
193193 id: "doctor",
194194 name: "Production Doctor",
195− command: ["bun", "run", "scripts/doctor-prod.ts"],
195+ command: ["bun", "run", "scripts/prod/doctor-prod.ts"],
196196 cwd: EXECUTOR_ROOT,
197197 },
198198 };
executor/scripts/prod/doctor-prod.test.tsrenamed from executor/scripts/doctor-prod.test.ts+0−0

File renamed without changes.

executor/scripts/prod/doctor-prod.tsrenamed from executor/scripts/doctor-prod.ts+1−1
@@ -49,7 +49,7 @@ const AUTH_SERVER_ENV_KEYS = [ · 48 unmodified lines
4949 "WORKOS_AUTHKIT_DOMAIN",
5050 ] as const;
5151
52−const EXECUTOR_ROOT = path.resolve(import.meta.dir, "..");
52+const EXECUTOR_ROOT = path.resolve(import.meta.dir, "..", "..");
5353
5454 function addCheck(report: ProductionDoctorReport, name: string, ok: boolean, detail: string): void {
5555 report.checks.push({ name, ok, detail });
executor/scripts/prod/setup-prod-cloudflare.tsrenamed from executor/scripts/setup-prod-cloudflare.ts+2−2
@@ -18,14 +18,14 @@ interface CommandResult { · 17 unmodified lines
1818 stderr: string;
1919 }
2020
21−const EXECUTOR_ROOT = path.resolve(import.meta.dir, "..");
21+const EXECUTOR_ROOT = path.resolve(import.meta.dir, "..", "..");
2222 const SANDBOX_HOST_DIR = path.join(EXECUTOR_ROOT, "packages", "runner-sandbox-host");
2323
2424 function printHelp(): void {
2525 console.log(`Setup Cloudflare runtime for production
2626
2727 Usage:
28− bun run scripts/setup-prod-cloudflare.ts [options]
28+ bun run scripts/prod/setup-prod-cloudflare.ts [options]
2929
3030 Options:
3131 --run-url <url> Explicit sandbox run URL (e.g. https://.../v1/runs)
executor/scripts/prod/setup-prod-env.tsrenamed from executor/scripts/setup-prod-env.ts+1−1
@@ -30,7 +30,7 @@ function printHelp(): void { · 29 unmodified lines
3030 console.log(`Setup production Convex app env vars
3131
3232 Usage:
33− bun run scripts/setup-prod-env.ts --from-env [--strict]
33+ bun run scripts/prod/setup-prod-env.ts --from-env [--strict]
3434
3535 Options:
3636 --from-env Read values from current shell env and push to Convex prod
executor/scripts/release/build-release.tsrenamed from executor/scripts/build-release.ts+1−1
@@ -115,7 +115,7 @@ async function buildWebArtifact(rootDir: string, releaseDir: string, checksums: · 114 unmodified lines
115115 }
116116
117117 async function main(): Promise<void> {
118− const rootDir = path.resolve(import.meta.dir, "..");
118+ const rootDir = path.resolve(import.meta.dir, "..", "..");
119119 const releaseDir = path.join(rootDir, "dist", "release");
120120
121121 await fs.rm(releaseDir, { recursive: true, force: true });
executor/tsconfig.json+1−2
@@ -20,7 +20,6 @@ · 19 unmodified lines
2020 "packages/runner-node/**/*.ts",
2121 "packages/core/src/**/*.ts",
2222 "scripts/**/*.ts",
23− "executor.ts",
24− "vscode-elicitation-server.ts"
23+ "executor.ts"
2524 ]
2625 }
package.json+1−1
@@ -28,7 +28,7 @@ · 27 unmodified lines
2828 "typecheck": "bun run typecheck:executor && bun run typecheck:assistant",
2929 "typecheck:executor": "bunx tsc --noEmit -p executor/tsconfig.json",
3030 "typecheck:assistant": "bunx tsc --noEmit -p assistant/packages/server/tsconfig.json && bunx tsc --noEmit -p assistant/packages/bot/tsconfig.json",
31− "db:clear:executor": "bun with-env bun run executor/wipe-convex-db.ts",
31+ "db:clear:executor": "bun with-env bun run executor/scripts/dev/wipe-convex-db.ts",
3232 "convex:codegen": "bunx --cwd executor convex codegen"
3333 },
3434 "dependencies": {