History

Normalize hyphenated filenames into nested folders

This migrates tracked files away from multi-hyphen basenames and updates imports and script paths so references stay consistent after renames.

Rhys Sullivan committed 9 months ago

Commit ab185fe1 parent a5df1d8153 files · +277 −251Browse files

Unified · Split

153 files
  1. executor/apps/web/src/app/[[...dashboard]]/page.tsx +1 −1
  2. executor/apps/web/src/app/mcp/oauth/callback/route.ts +3 −3
  3. executor/apps/web/src/app/mcp/oauth/detect/route.ts +1 −1
  4. executor/apps/web/src/app/mcp/oauth/result/route.ts +1 −1
  5. executor/apps/web/src/app/mcp/oauth/start/route.ts +3 −3
  6. executor/apps/web/src/components/app-shell.tsx +1 −1
  7. executor/apps/web/src/components/approval-notifier.tsx +1 −1
  8. executor/apps/web/src/components/approvals/approvals-view.tsx +3 −3
  9. executor/apps/web/src/components/dashboard/pending/approvals-card.tsx +0 −0
  10. executor/apps/web/src/components/dashboard/view.tsx +2 −2
  11. executor/apps/web/src/components/formatted/code-block.tsx +0 −0
  12. executor/apps/web/src/components/menubar/mvp-view.tsx +1 −1
  13. executor/apps/web/src/components/no/organization-modal.tsx +0 −0
  14. executor/apps/web/src/components/organization/organization/settings-view.tsx +0 −0
  15. executor/apps/web/src/components/static/app-shell.tsx +0 −0
  16. executor/apps/web/src/components/tasks/code-editor.tsx +2 −2
  17. executor/apps/web/src/components/tasks/code/editor-monaco.ts +0 −0
  18. executor/apps/web/src/components/tasks/code/editor-types.ts +1 −1
  19. executor/apps/web/src/components/tasks/task-composer.tsx +1 −1
  20. executor/apps/web/src/components/tasks/task-detail.tsx +2 −2
  21. executor/apps/web/src/components/tasks/task/list-item.tsx +0 −0
  22. executor/apps/web/src/components/tasks/tasks-view.tsx +2 −2
  23. executor/apps/web/src/components/tools/add/source-dialog.tsx +6 −6
  24. executor/apps/web/src/components/tools/add/source-submit.ts +3 −3
  25. executor/apps/web/src/components/tools/add/source/auth-panel.tsx +2 −2
  26. executor/apps/web/src/components/tools/add/source/dialog-helpers.ts +0 −0
  27. executor/apps/web/src/components/tools/add/source/dialog-sections.tsx +1 −1
  28. executor/apps/web/src/components/tools/add/source/form-utils.ts +3 −3
  29. executor/apps/web/src/components/tools/connection/auth-fields.tsx +1 −1
  30. executor/apps/web/src/components/tools/connection/form-dialog.tsx +6 −6
  31. executor/apps/web/src/components/tools/connection/form-save.ts +0 −0
  32. executor/apps/web/src/components/tools/connection/form/dialog-form.ts +2 −2
  33. executor/apps/web/src/components/tools/connection/form/dialog-state.ts +2 −2
  34. executor/apps/web/src/components/tools/credentials.tsx +2 −2
  35. executor/apps/web/src/components/tools/explorer-derived.ts +2 −2
  36. executor/apps/web/src/components/tools/explorer-groups.tsx +32 −1
  37. executor/apps/web/src/components/tools/explorer-helpers.ts +1 −1
  38. executor/apps/web/src/components/tools/explorer-rows.tsx +2 −2
  39. executor/apps/web/src/components/tools/explorer.tsx +2 −2
  40. executor/apps/web/src/components/tools/explorer/copy-button.tsx +0 −0
  41. executor/apps/web/src/components/tools/explorer/tool-detail.tsx +1 −1
  42. executor/apps/web/src/components/tools/explorer/type-signature.tsx +0 −0
  43. executor/apps/web/src/components/tools/source-card.tsx +4 −4
  44. executor/apps/web/src/components/tools/source/quality-details.tsx +1 −1
  45. executor/apps/web/src/components/tools/sources.tsx +1 −1
  46. executor/apps/web/src/components/tools/use/add/source/form-state.ts +6 −6
  47. executor/apps/web/src/components/tools/view.tsx +7 −12
  48. executor/apps/web/src/frontend/app.tsx +1 −1
  49. executor/apps/web/src/hooks/use/workspace-tools.ts +0 −0
  50. executor/apps/web/src/lib/approval/input-format.ts +0 −0
  51. executor/apps/web/src/lib/credentials/source-helpers.ts +2 −2
  52. executor/apps/web/src/lib/mcp/oauth-popup.ts +0 −0
  53. executor/apps/web/src/lib/mcp/oauth-provider.ts +0 −0
  54. executor/apps/web/src/lib/mcp/oauth-request.ts +0 −0
  55. executor/apps/web/src/lib/mcp/oauth-url.ts +0 −0
  56. executor/apps/web/src/lib/openapi/spec-inspector.ts +0 −0
  57. executor/apps/web/src/lib/session-context.tsx +1 −1
  58. executor/apps/web/src/lib/session/context-derivation.ts +0 −0
  59. executor/apps/web/src/lib/tool/explorer-grouping.ts +1 −1
  60. executor/apps/web/src/lib/tool/source-utils.ts +0 −0
  61. executor/apps/web/src/lib/tools/source-helpers.ts +0 −0
  62. executor/apps/web/src/lib/workspace/query-args.ts +0 −0
  63. executor/executor.ts +1 −1
  64. executor/package.json +2 −2
  65. executor/packages/convex/access-controls.test.ts +1 −1
  66. executor/packages/convex/accounts.ts +1 −1
  67. executor/packages/convex/auth.ts +1 −1
  68. executor/packages/convex/auth/event_handlers.ts +1 −1
  69. executor/packages/convex/auth/memberships.ts +1 −1
  70. executor/packages/convex/auth/personal_workspace.ts +1 −1
  71. executor/packages/convex/auth/types.ts +1 −1
  72. executor/packages/convex/billing.ts +1 −1
  73. executor/packages/convex/billingInternal.ts +1 −1
  74. executor/packages/convex/database.test.ts +1 −1
  75. executor/packages/convex/database/anonymous.ts +1 −1
  76. executor/packages/convex/database/mappers.ts +1 −1
  77. executor/packages/convex/database/readers.ts +1 −1
  78. executor/packages/convex/executor-mcp.e2e.test.ts +1 −1
  79. executor/packages/convex/executor.ts +1 −1
  80. executor/packages/convex/http/mcp_auth.ts +1 −1
  81. executor/packages/convex/http/mcp_service.ts +1 −1
  82. executor/packages/convex/mcp/run/code-oom.e2e.test.ts +11 −11
  83. executor/packages/convex/migrations.ts +2 −2
  84. executor/packages/convex/organizations.ts +1 −1
  85. executor/packages/convex/runtime/actor_auth.ts +1 −1
  86. executor/packages/convex/runtime/task_runner.ts +2 −2
  87. executor/packages/convex/runtime/tool_call_resolution.ts +1 −1
  88. executor/packages/convex/runtime/tool_source_loading.ts +3 −3
  89. executor/packages/convex/runtime/workspace_tools.ts +2 −2
  90. executor/packages/convex/workspaces.ts +1 −1
  91. executor/packages/core/package.json +1 −1
  92. executor/packages/core/src/adapters/in/process/execution-adapter.test.ts +2 −2
  93. executor/packages/core/src/adapters/in/process/execution-adapter.ts +3 −3
  94. executor/packages/core/src/graphql/field-tools.ts +1 −1
  95. executor/packages/core/src/graphql/operation-paths.ts +1 −1
  96. executor/packages/core/src/identity.ts +1 −1
  97. executor/packages/core/src/managed-runtime.ts +4 −4
  98. executor/packages/core/src/managed/runtime-archives.ts +1 −1
  99. executor/packages/core/src/managed/runtime-bootstrap.ts +4 −4
  100. executor/packages/core/src/managed/runtime-info.ts +1 −1
  101. executor/packages/core/src/managed/runtime-installation.ts +4 −4
  102. executor/packages/core/src/managed/runtime-process.ts +0 −0
  103. executor/packages/core/src/mcp-server.test.ts +1 −1
  104. executor/packages/core/src/mcp-server.ts +5 −5
  105. executor/packages/core/src/mcp/server-approval.ts +4 −4
  106. executor/packages/core/src/mcp/server-contracts.ts +3 −3
  107. executor/packages/core/src/mcp/server-formatting.ts +2 −2
  108. executor/packages/core/src/mcp/server-utils.ts +0 −0
  109. executor/packages/core/src/openapi-auth.ts +1 −1
  110. executor/packages/core/src/openapi-compaction.ts +1 −1
  111. executor/packages/core/src/openapi-prepare.ts +2 −2
  112. executor/packages/core/src/openapi/helper-types.ts +0 −0
  113. executor/packages/core/src/openapi/real-specs.test.ts +1 −1
  114. executor/packages/core/src/openapi/schema-hints.ts +1 −1
  115. executor/packages/core/src/openapi/tool-builder.ts +9 −9
  116. executor/packages/core/src/openapi/tool-path.ts +1 −1
  117. executor/packages/core/src/postman-runtime.ts +1 −1
  118. executor/packages/core/src/postman/collection-utils.ts +2 −2
  119. executor/packages/core/src/runtimes/cloudflare/worker/loader-runtime.test.ts +6 −6
  120. executor/packages/core/src/runtimes/cloudflare/worker/loader-runtime.ts +3 −3
  121. executor/packages/core/src/runtimes/runtime-core.test.ts +1 −1
  122. executor/packages/core/src/tool-discovery.test.ts +1 −1
  123. executor/packages/core/src/tool-source-loaders/graphql-loader.ts +5 −5
  124. executor/packages/core/src/tool-source-loaders/mcp-loader.ts +6 −6
  125. executor/packages/core/src/tool-source-loaders/openapi-loader.ts +5 −5
  126. executor/packages/core/src/tool-sources.test.ts +1 −1
  127. executor/packages/core/src/tool-sources.ts +7 −7
  128. executor/packages/core/src/tool/path-utils.ts +0 −0
  129. executor/packages/core/src/tool/source-auth.ts +2 −2
  130. executor/packages/core/src/tool/source-execution.ts +1 −1
  131. executor/packages/core/src/tool/source-serialization.ts +6 −6
  132. executor/packages/core/src/tool/source-types.ts +1 −1
  133. executor/packages/core/src/types.ts +1 −1
  134. executor/packages/core/src/workspace/tool-cache.test.ts +7 −7
  135. executor/packages/runner-sandbox-host/src/isolate/text-modules.d.ts +0 −0
  136. executor/scripts/dev/vscode/elicitation-server.ts +0 −0
  137. executor/scripts/dev/wipe/convex-db.ts +0 −0
  138. executor/scripts/prod/deploy-prod.ts +2 −2
  139. executor/scripts/prod/setup/prod-cloudflare.ts +2 −2
  140. executor/scripts/prod/setup/prod-env.ts +1 −1
  141. package.json +1 −1
  142. sources/data/openapi/github-discovery.csv +0 −0
  143. sources/data/openapi/github-discovery.json +0 −0
  144. sources/data/openapi/github/discovery-all.csv +0 −0
  145. sources/data/openapi/github/discovery-all.json +0 −0
  146. sources/data/openapi/github/discovery-huge.csv +0 −0
  147. sources/data/openapi/github/discovery-huge.json +0 −0
  148. sources/data/openapi/github/discovery/huge-enriched.csv +0 −0
  149. sources/data/openapi/github/discovery/huge-enriched.json +0 −0
  150. sources/data/openapi/github/discovery/huge/enriched-min10.csv +0 −0
  151. sources/data/openapi/github/discovery/huge/enriched-min10.json +0 −0
  152. sources/data/openapi/github/discovery/huge/enriched-min50.csv +0 −0
  153. sources/data/openapi/github/discovery/huge/enriched-min50.json +0 −0
executor/apps/web/src/app/[[...dashboard]]/page.tsx+1−1
@@ -1,4 +1,4 @@
1−import { StaticAppShell } from "@/components/static-app-shell";
1+import { StaticAppShell } from "@/components/static/app-shell";
22
33 export default function DashboardRoutesPage() {
44 return <StaticAppShell />;
executor/apps/web/src/app/mcp/oauth/callback/route.ts+3−3
@@ -2,8 +2,8 @@ import type { NextRequest } from "next/server"; · 1 unmodified line
22 import { NextResponse } from "next/server";
33 import { Result } from "better-result";
44 import { auth } from "@modelcontextprotocol/sdk/client/auth.js";
5−import { getExternalOrigin, isExternalHttps } from "@/lib/mcp-oauth-request";
6−import { parseMcpSourceUrl } from "@/lib/mcp-oauth-url";
5+import { getExternalOrigin, isExternalHttps } from "@/lib/mcp/oauth-request";
6+import { parseMcpSourceUrl } from "@/lib/mcp/oauth-url";
77 import {
88 buildPendingCookieName,
99 decodePendingCookieValue,
@@ -11,7 +11,7 @@ import { · 1 unmodified line
1111 MCP_OAUTH_RESULT_COOKIE,
1212 McpPopupOAuthProvider,
1313 type McpOAuthPopupResult,
14−} from "@/lib/mcp-oauth-provider";
14+} from "@/lib/mcp/oauth-provider";
1515
1616 function popupResultRedirect(
1717 request: NextRequest,
executor/apps/web/src/app/mcp/oauth/detect/route.ts+1−1
@@ -2,7 +2,7 @@ import type { NextRequest } from "next/server"; · 1 unmodified line
22 import { NextResponse } from "next/server";
33 import { Result } from "better-result";
44 import { discoverOAuthProtectedResourceMetadata } from "@modelcontextprotocol/sdk/client/auth.js";
5−import { parseMcpSourceUrl } from "@/lib/mcp-oauth-url";
5+import { parseMcpSourceUrl } from "@/lib/mcp/oauth-url";
66
77 type DetectResponse = {
88 oauth: boolean;
executor/apps/web/src/app/mcp/oauth/result/route.ts+1−1
@@ -4,7 +4,7 @@ import { · 3 unmodified lines
44 decodePopupResultCookieValue,
55 MCP_OAUTH_RESULT_COOKIE,
66 type McpOAuthPopupResult,
7−} from "@/lib/mcp-oauth-provider";
7+} from "@/lib/mcp/oauth-provider";
88
99 type PopupMessage =
1010 | {
executor/apps/web/src/app/mcp/oauth/start/route.ts+3−3
@@ -2,8 +2,8 @@ import type { NextRequest } from "next/server"; · 1 unmodified line
22 import { NextResponse } from "next/server";
33 import { Result } from "better-result";
44 import { auth } from "@modelcontextprotocol/sdk/client/auth.js";
5−import { getExternalOrigin, isExternalHttps } from "@/lib/mcp-oauth-request";
6−import { parseMcpSourceUrl } from "@/lib/mcp-oauth-url";
5+import { getExternalOrigin, isExternalHttps } from "@/lib/mcp/oauth-request";
6+import { parseMcpSourceUrl } from "@/lib/mcp/oauth-url";
77 import {
88 buildPendingCookieName,
99 createOAuthState,
@@ -12,7 +12,7 @@ import { · 2 unmodified lines
1212 MCP_OAUTH_RESULT_COOKIE,
1313 McpPopupOAuthProvider,
1414 type McpOAuthPopupResult,
15−} from "@/lib/mcp-oauth-provider";
15+} from "@/lib/mcp/oauth-provider";
1616
1717 function popupResultRedirect(request: NextRequest, payload: McpOAuthPopupResult): NextResponse {
1818 const externalOrigin = getExternalOrigin(request);
executor/apps/web/src/components/app-shell.tsx+1−1
@@ -10,7 +10,7 @@ import { ApprovalNotifier } from "@/components/approval-notifier"; · 9 unmodified lines
1010 import { ThemeSwitcher } from "@/components/theme-switcher";
1111 import { WorkspaceSelector } from "@/components/workspace-selector";
1212 import { SessionInfo } from "@/components/session-info";
13−import { NoOrganizationModal } from "@/components/no-organization-modal";
13+import { NoOrganizationModal } from "@/components/no/organization-modal";
1414 import { cn } from "@/lib/utils";
1515
1616 const NAV_ITEMS = [
executor/apps/web/src/components/approval-notifier.tsx+1−1
@@ -7,7 +7,7 @@ import { toast } from "sonner"; · 6 unmodified lines
77 import { useSession } from "@/lib/session-context";
88 import { convexApi } from "@/lib/convex-api";
99 import type { PendingApprovalRecord } from "@/lib/types";
10−import { workspaceQueryArgs } from "@/lib/workspace-query-args";
10+import { workspaceQueryArgs } from "@/lib/workspace/query-args";
1111
1212 export function ApprovalNotifier() {
1313 const navigate = useNavigate();
executor/apps/web/src/components/approvals/approvals-view.tsx+3−3
@@ -20,9 +20,9 @@ import { useMutation, useQuery } from "convex/react"; · 19 unmodified lines
2020 import type { PendingApprovalRecord } from "@/lib/types";
2121 import { toast } from "sonner";
2222 import { formatTimeAgo } from "@/lib/format";
23−import { FormattedCodeBlock } from "@/components/formatted-code-block";
24−import { formatApprovalInput } from "@/lib/approval-input-format";
25−import { workspaceQueryArgs } from "@/lib/workspace-query-args";
23+import { FormattedCodeBlock } from "@/components/formatted/code-block";
24+import { formatApprovalInput } from "@/lib/approval/input-format";
25+import { workspaceQueryArgs } from "@/lib/workspace/query-args";
2626
2727 function ApprovalCard({
2828 approval,
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/view.tsx+2−2
@@ -5,11 +5,11 @@ import { useQuery } from "convex/react"; · 4 unmodified lines
55 import { Skeleton } from "@/components/ui/skeleton";
66 import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
77 import { PageHeader } from "@/components/page-header";
8−import { DashboardPendingApprovalsCard } from "@/components/dashboard/pending-approvals-card";
8+import { DashboardPendingApprovalsCard } from "@/components/dashboard/pending/approvals-card";
99 import { McpSetupCard } from "@/components/tools/setup-card";
1010 import { useSession } from "@/lib/session-context";
1111 import { convexApi } from "@/lib/convex-api";
12−import { workspaceQueryArgs } from "@/lib/workspace-query-args";
12+import { workspaceQueryArgs } from "@/lib/workspace/query-args";
1313
1414 export function DashboardView() {
1515 const { context, loading: sessionLoading } = useSession();
executor/apps/web/src/components/formatted/code-block.tsxrenamed from executor/apps/web/src/components/formatted-code-block.tsx+0−0

File renamed without changes.

executor/apps/web/src/components/menubar/mvp-view.tsx+1−1
@@ -9,7 +9,7 @@ import { Button } from "@/components/ui/button"; · 8 unmodified lines
99 import { convexApi } from "@/lib/convex-api";
1010 import { useSession } from "@/lib/session-context";
1111 import type { TaskRecord } from "@/lib/types";
12−import { workspaceQueryArgs } from "@/lib/workspace-query-args";
12+import { workspaceQueryArgs } from "@/lib/workspace/query-args";
1313 import { getTaskRuntimeLabel } from "@/lib/runtime-display";
1414
1515 export function MenubarMvpView() {
executor/apps/web/src/components/no/organization-modal.tsxrenamed from executor/apps/web/src/components/no-organization-modal.tsx+0−0

File renamed without changes.

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

File renamed without changes.

executor/apps/web/src/components/static/app-shell.tsxrenamed from executor/apps/web/src/components/static-app-shell.tsx+0−0

File renamed without changes.

executor/apps/web/src/components/tasks/code-editor.tsx+2−2
@@ -10,13 +10,13 @@ import { · 9 unmodified lines
1010 BASE_ENVIRONMENT_DTS,
1111 OPENAPI_HELPER_TYPES,
1212 generateToolsDts,
13−} from "./code-editor-types";
13+} from "./code/editor-types";
1414 import {
1515 CODE_EDITOR_OPTIONS,
1616 configureJavascriptDefaults,
1717 defineExecutorThemes,
1818 setDiagnosticsOptions,
19−} from "./code-editor-monaco";
19+} from "./code/editor-monaco";
2020
2121 interface CodeEditorProps {
2222 value: string;
executor/apps/web/src/components/tasks/code/editor-monaco.tsrenamed from executor/apps/web/src/components/tasks/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/tasks/code-editor-types.ts+1−1
@@ -1,5 +1,5 @@
11 import type { ToolDescriptor } from "@/lib/types";
2−export { OPENAPI_HELPER_TYPES } from "@executor/core/openapi-helper-types";
2+export { OPENAPI_HELPER_TYPES } from "@executor/core/openapi/helper-types";
33
44 interface NamespaceNode {
55 children: Map<string, NamespaceNode>;
executor/apps/web/src/components/tasks/task-composer.tsx+1−1
@@ -19,7 +19,7 @@ import { CodeEditor } from "@/components/tasks/code-editor"; · 18 unmodified lines
1919 import { convexApi } from "@/lib/convex-api";
2020 import { useSession } from "@/lib/session-context";
2121 import type { RuntimeTargetDescriptor } from "@/lib/types";
22−import { useWorkspaceTools } from "@/hooks/use-workspace-tools";
22+import { useWorkspaceTools } from "@/hooks/use/workspace-tools";
2323
2424 const DEFAULT_CODE = `// Example: discover tools and return matching tool names
2525 const found = await tools.discover({
executor/apps/web/src/components/tasks/task-detail.tsx+2−2
@@ -9,9 +9,9 @@ import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; · 8 unmodified lines
99 import { Button } from "@/components/ui/button";
1010 import { Separator } from "@/components/ui/separator";
1111 import { TaskStatusBadge } from "@/components/status-badge";
12−import { FormattedCodeBlock } from "@/components/formatted-code-block";
12+import { FormattedCodeBlock } from "@/components/formatted/code-block";
1313 import { convexApi } from "@/lib/convex-api";
14−import { formatApprovalInput } from "@/lib/approval-input-format";
14+import { formatApprovalInput } from "@/lib/approval/input-format";
1515 import { cn } from "@/lib/utils";
1616 import type { TaskRecord, PendingApprovalRecord } from "@/lib/types";
1717
executor/apps/web/src/components/tasks/task/list-item.tsxrenamed from executor/apps/web/src/components/tasks/task-list-item.tsx+0−0

File renamed without changes.

executor/apps/web/src/components/tasks/tasks-view.tsx+2−2
@@ -10,11 +10,11 @@ import { PageHeader } from "@/components/page-header"; · 9 unmodified lines
1010 import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
1111 import { TaskDetail } from "@/components/tasks/task-detail";
1212 import { TaskComposer } from "@/components/tasks/task-composer";
13−import { TaskListItem } from "@/components/tasks/task-list-item";
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";
17−import { workspaceQueryArgs } from "@/lib/workspace-query-args";
17+import { workspaceQueryArgs } from "@/lib/workspace/query-args";
1818 import type {
1919 TaskRecord,
2020 PendingApprovalRecord,
executor/apps/web/src/components/tools/add/source-dialog.tsxrenamed from executor/apps/web/src/components/tools/add-source-dialog.tsx+6−6
@@ -16,18 +16,18 @@ import { · 15 unmodified lines
1616 import { useSession } from "@/lib/session-context";
1717 import { convexApi } from "@/lib/convex-api";
1818 import type { CredentialRecord, ToolSourceRecord } from "@/lib/types";
19−import { workspaceQueryArgs } from "@/lib/workspace-query-args";
19+import { workspaceQueryArgs } from "@/lib/workspace/query-args";
2020 import type { CatalogCollectionItem } from "@/lib/catalog-collections";
21−import { startMcpOAuthPopup } from "@/lib/mcp-oauth-popup";
21+import { startMcpOAuthPopup } from "@/lib/mcp/oauth-popup";
2222 import {
2323 CatalogViewSection,
2424 CustomViewSection,
25−} from "./add-source-dialog-sections";
26−import { SourceAuthPanel } from "./add-source-auth-panel";
25+} from "./source/dialog-sections";
26+import { SourceAuthPanel } from "./source/auth-panel";
2727 import {
2828 useAddSourceFormState,
29−} from "./use-add-source-form-state";
30−import { saveSourceWithCredentials } from "./add-source-submit";
29+} from "../use/add/source/form-state";
30+import { saveSourceWithCredentials } from "./source-submit";
3131
3232 function resultErrorMessage(error: unknown, fallback: string): string {
3333 const cause = typeof error === "object" && error && "cause" in error
executor/apps/web/src/components/tools/add/source-submit.tsrenamed from executor/apps/web/src/components/tools/add-source-submit.ts+3−3
@@ -1,4 +1,4 @@
1−import { sourceKeyForSource } from "@/lib/tools-source-helpers";
1+import { sourceKeyForSource } from "@/lib/tools/source-helpers";
22 import type {
33 AnonymousContext,
44 CredentialRecord,
@@ -6,8 +6,8 @@ import type { · 1 unmodified line
66 SourceAuthType,
77 ToolSourceRecord,
88 } from "@/lib/types";
9−import { createCustomSourceConfig, type SourceType } from "./add-source-dialog-helpers";
10−import { existingCredentialMatchesAuthType } from "./add-source-form-utils";
9+import { createCustomSourceConfig, type SourceType } from "./source/dialog-helpers";
10+import { existingCredentialMatchesAuthType } from "./source/form-utils";
1111
1212 type UpsertToolSourceFn = (args: {
1313 id?: ToolSourceRecord["id"];
executor/apps/web/src/components/tools/add/source/auth-panel.tsxrenamed from executor/apps/web/src/components/tools/add-source-auth-panel.tsx+2−2
@@ -10,9 +10,9 @@ import { · 9 unmodified lines
1010 SelectTrigger,
1111 SelectValue,
1212 } from "@/components/ui/select";
13−import type { InferredSpecAuth } from "@/lib/openapi-spec-inspector";
13+import type { InferredSpecAuth } from "@/lib/openapi/spec-inspector";
1414 import type { CredentialScope, SourceAuthType } from "@/lib/types";
15−import type { SourceType } from "./add-source-dialog-helpers";
15+import type { SourceType } from "./dialog-helpers";
1616
1717 export type SourceAuthPanelEditableField =
1818 | "apiKeyHeader"
executor/apps/web/src/components/tools/add/source/dialog-helpers.tsrenamed from executor/apps/web/src/components/tools/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/add-source-dialog-sections.tsx+1−1
@@ -19,7 +19,7 @@ import { · 18 unmodified lines
1919 endpointPlaceholderForType,
2020 type SourceCatalogSort,
2121 type SourceType,
22−} from "./add-source-dialog-helpers";
22+} from "./dialog-helpers";
2323
2424 export function CatalogViewSection({
2525 catalogQuery,
executor/apps/web/src/components/tools/add/source/form-utils.tsrenamed from executor/apps/web/src/components/tools/add-source-form-utils.ts+3−3
@@ -1,7 +1,7 @@
1−import type { InferredSpecAuth } from "@/lib/openapi-spec-inspector";
2−import { readSourceAuth } from "@/lib/tools-source-helpers";
1+import type { InferredSpecAuth } from "@/lib/openapi/spec-inspector";
2+import { readSourceAuth } from "@/lib/tools/source-helpers";
33 import type { CredentialRecord, CredentialScope, SourceAuthType, ToolSourceRecord } from "@/lib/types";
4−import type { SourceCatalogSort, SourceType } from "./add-source-dialog-helpers";
4+import type { SourceCatalogSort, SourceType } from "./dialog-helpers";
55
66 export type SourceDialogView = "catalog" | "custom";
77
executor/apps/web/src/components/tools/connection/auth-fields.tsxrenamed from executor/apps/web/src/components/tools/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 "./connection-form-dialog-state";
6+import type { ConnectionMode } from "./form/dialog-state";
77
88 type SelectedAuth = {
99 type: SourceAuthType;
executor/apps/web/src/components/tools/connection/form-dialog.tsxrenamed from executor/apps/web/src/components/tools/connection-form-dialog.tsx+6−6
@@ -32,16 +32,16 @@ import type { · 31 unmodified lines
3232 import {
3333 connectionDisplayName,
3434 parseHeaderOverrides,
35−} from "@/lib/credentials-source-helpers";
36−import { sourceForCredentialKey } from "@/lib/tools-source-helpers";
37−import { ConnectionAuthFields } from "./connection-auth-fields";
38−import { type ConnectionMode } from "./connection-form-dialog-state";
39−import { useConnectionFormDialogForm } from "./connection-form-dialog-form";
35+} from "@/lib/credentials/source-helpers";
36+import { sourceForCredentialKey } from "@/lib/tools/source-helpers";
37+import { ConnectionAuthFields } from "./auth-fields";
38+import { type ConnectionMode } from "./form/dialog-state";
39+import { useConnectionFormDialogForm } from "./form/dialog-form";
4040 import {
4141 buildSecretJson,
4242 connectionSubmitCopy,
4343 connectionSuccessCopy,
44−} from "./connection-form-save";
44+} from "./form-save";
4545
4646 export function ConnectionFormDialog({
4747 open,
executor/apps/web/src/components/tools/connection/form-save.tsrenamed from executor/apps/web/src/components/tools/connection-form-save.ts+0−0

File renamed without changes.

executor/apps/web/src/components/tools/connection/form/dialog-form.tsrenamed from executor/apps/web/src/components/tools/connection-form-dialog-form.ts+2−2
@@ -8,14 +8,14 @@ import type { · 7 unmodified lines
88 import {
99 formatHeaderOverrides,
1010 sourceAuthForKey,
11−} from "@/lib/credentials-source-helpers";
11+} from "@/lib/credentials/source-helpers";
1212 import {
1313 buildConnectionOptions,
1414 buildSourceOptions,
1515 compatibleConnections,
1616 selectedAuthBadge,
1717 type ConnectionMode,
18−} from "./connection-form-dialog-state";
18+} from "./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/connection-form-dialog-state.ts+2−2
@@ -7,8 +7,8 @@ import type { · 6 unmodified lines
77 import {
88 sourceOptionLabel,
99 type SourceOption,
10−} from "@/lib/credentials-source-helpers";
11−import { sourceKeyForSource } from "@/lib/tools-source-helpers";
10+} from "@/lib/credentials/source-helpers";
11+import { sourceKeyForSource } from "@/lib/tools/source-helpers";
1212
1313 export type ConnectionMode = "new" | "existing";
1414
executor/apps/web/src/components/tools/credentials.tsx+2−2
@@ -16,11 +16,11 @@ import type { · 15 unmodified lines
1616 import {
1717 connectionDisplayName,
1818 providerLabel,
19−} from "@/lib/credentials-source-helpers";
19+} from "@/lib/credentials/source-helpers";
2020 import {
2121 getSourceFavicon,
2222 sourceForCredentialKey,
23−} from "@/lib/tools-source-helpers";
23+} from "@/lib/tools/source-helpers";
2424
2525 export function CredentialsPanel({
2626 sources,
executor/apps/web/src/components/tools/explorer-derived.ts+2−2
@@ -4,8 +4,8 @@ import { · 3 unmodified lines
44 buildSourceTree,
55 toolNamespace,
66 type ToolGroup,
7−} from "@/lib/tool-explorer-grouping";
8−import { sourceLabel } from "@/lib/tool-source-utils";
7+} from "@/lib/tool/explorer-grouping";
8+import { sourceLabel } from "@/lib/tool/source-utils";
99 import type { ToolDescriptor } from "@/lib/types";
1010 import type { ToolSourceRecord } from "@/lib/types";
1111 import type { GroupBy, ViewMode } from "./explorer-toolbar";
executor/apps/web/src/components/tools/explorer-groups.tsx+32−1
@@ -19,7 +19,7 @@ import { · 18 unmodified lines
1919 } from "@/components/ui/collapsible";
2020 import { Skeleton } from "@/components/ui/skeleton";
2121 import { cn } from "@/lib/utils";
22−import { toolOperation, type ToolGroup } from "@/lib/tool-explorer-grouping";
22+import { toolOperation, type ToolGroup } from "@/lib/tool/explorer-grouping";
2323 import type { ToolDescriptor, ToolSourceRecord } from "@/lib/types";
2424 import { SelectableToolRow, ToolLoadingRows } from "./explorer-rows";
2525
@@ -224,10 +224,26 @@ export function SourceSidebar({ · 198 unmodified lines
224224 }
225225 return counts;
226226 }, [warnings]);
227+ const warningMessagesBySource = useMemo(() => {
228+ const messages: Record<string, string[]> = {};
229+ for (const warning of warnings) {
230+ const source = warning.match(/source '([^']+)'/i)?.[1];
231+ if (!source) {
232+ continue;
233+ }
234+ messages[source] ??= [];
235+ messages[source].push(warning);
236+ }
237+ return messages;
238+ }, [warnings]);
227239 const totalSourceWarningCount = useMemo(
228240 () => Object.values(warningCountsBySource).reduce((sum, count) => sum + count, 0),
229241 [warningCountsBySource],
230242 );
243+ const activeSourceWarnings = useMemo(
244+ () => (activeSource ? warningMessagesBySource[activeSource] ?? [] : []),
245+ [activeSource, warningMessagesBySource],
246+ );
231247
232248 const groups = useMemo(() => {
233249 const map = new Map<
@@ -336,6 +352,21 @@ export function SourceSidebar({ · 102 unmodified lines
336352 </button>
337353 );
338354 })}
355+
356+ {activeSource && activeSourceWarnings.length > 0 ? (
357+ <div className="mt-2 rounded-md border border-terminal-amber/30 bg-terminal-amber/5 px-2 py-2">
358+ <p className="text-[10px] font-mono text-terminal-amber/90">
359+ {activeSourceWarnings.length} warning{activeSourceWarnings.length !== 1 ? "s" : ""}
360+ </p>
361+ <div className="mt-1.5 space-y-1">
362+ {activeSourceWarnings.map((warning, index) => (
363+ <p key={`${activeSource}-${index}`} className="text-[10px] leading-4 text-muted-foreground">
364+ {warning}
365+ </p>
366+ ))}
367+ </div>
368+ </div>
369+ ) : null}
339370 </div>
340371 </div>
341372 );
executor/apps/web/src/components/tools/explorer-helpers.ts+1−1
@@ -1,5 +1,5 @@
11 import type { ToolDescriptor } from "@/lib/types";
2−import type { ToolGroup } from "@/lib/tool-explorer-grouping";
2+import type { ToolGroup } from "@/lib/tool/explorer-grouping";
33
44 export function findToolsInGroupByKey(
55 groups: ToolGroup[],
executor/apps/web/src/components/tools/explorer-rows.tsx+2−2
@@ -13,8 +13,8 @@ import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "@/component · 12 unmodified lines
1313 import { Skeleton } from "@/components/ui/skeleton";
1414 import { cn } from "@/lib/utils";
1515 import type { ToolDescriptor } from "@/lib/types";
16−import { CopyButton } from "./explorer-copy-button";
17−import { ToolDetail } from "./explorer-tool-detail";
16+import { CopyButton } from "./explorer/copy-button";
17+import { ToolDetail } from "./explorer/tool-detail";
1818
1919 const ToolRow = memo(function ToolRow({
2020 tool,
executor/apps/web/src/components/tools/explorer.tsx+2−2
@@ -4,7 +4,7 @@ import { useState, useMemo, useCallback, useRef, useDeferredValue, useEffect } f · 3 unmodified lines
44 import { cn } from "@/lib/utils";
55 import {
66 collectGroupKeys,
7−} from "@/lib/tool-explorer-grouping";
7+} from "@/lib/tool/explorer-grouping";
88 import type { ToolDescriptor, ToolSourceRecord } from "@/lib/types";
99 import { findToolsInGroupByKey } from "./explorer-helpers";
1010 import {
@@ -18,7 +18,7 @@ import { · 7 unmodified lines
1818 treeGroupsForView,
1919 type FilterApproval,
2020 } from "./explorer-derived";
21−import { sourceLabel } from "@/lib/tool-source-utils";
21+import { sourceLabel } from "@/lib/tool/source-utils";
2222 import {
2323 EmptyState,
2424 LoadingState,
executor/apps/web/src/components/tools/explorer/copy-button.tsxrenamed from executor/apps/web/src/components/tools/explorer-copy-button.tsx+0−0

File renamed without changes.

executor/apps/web/src/components/tools/explorer/tool-detail.tsxrenamed from executor/apps/web/src/components/tools/explorer-tool-detail.tsx+1−1
@@ -4,7 +4,7 @@ import { Streamdown } from "streamdown"; · 3 unmodified lines
44 import { createCodePlugin } from "@streamdown/code";
55 import type { ToolDescriptor } from "@/lib/types";
66 import { Skeleton } from "@/components/ui/skeleton";
7−import { TypeSignature } from "./explorer-type-signature";
7+import { TypeSignature } from "./type-signature";
88
99 const codePlugin = createCodePlugin({
1010 themes: ["github-light", "github-dark"],
executor/apps/web/src/components/tools/explorer/type-signature.tsxrenamed from executor/apps/web/src/components/tools/explorer-type-signature.tsx+0−0

File renamed without changes.

executor/apps/web/src/components/tools/source-card.tsx+4−4
@@ -15,7 +15,7 @@ import type { · 14 unmodified lines
1515 ToolSourceRecord,
1616 } from "@/lib/types";
1717 import { cn } from "@/lib/utils";
18−import { displaySourceName } from "@/lib/tool-source-utils";
18+import { displaySourceName } from "@/lib/tool/source-utils";
1919 import {
2020 compactEndpointLabel,
2121 formatSourceAuthBadge,
@@ -23,12 +23,12 @@ import { · 1 unmodified line
2323 readSourceAuth,
2424 sourceAuthProfileForSource,
2525 sourceEndpointLabel,
26−} from "@/lib/tools-source-helpers";
27−import { AddSourceDialog } from "./add-source-dialog";
26+} from "@/lib/tools/source-helpers";
27+import { AddSourceDialog } from "./add/source-dialog";
2828 import {
2929 OpenApiQualityDetails,
3030 SourceQualitySummary,
31−} from "./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/source-quality-details.tsx+1−1
@@ -15,7 +15,7 @@ import { · 14 unmodified lines
1515 formatQualityPercent,
1616 qualitySummaryLabel,
1717 qualityToneClass,
18−} from "@/lib/tools-source-helpers";
18+} from "@/lib/tools/source-helpers";
1919
2020 export function SourceQualitySummary({
2121 quality,
executor/apps/web/src/components/tools/sources.tsx+1−1
@@ -1,2 +1,2 @@
1−export { AddSourceDialog } from "./add-source-dialog";
1+export { AddSourceDialog } from "./add/source-dialog";
22 export { SourceCard } from "./source-card";
executor/apps/web/src/components/tools/use/add/source/form-state.tsrenamed from executor/apps/web/src/components/tools/use-add-source-form-state.ts+6−6
@@ -1,12 +1,12 @@
11 import { useDeferredValue, useEffect, useMemo, useState, type Dispatch, type SetStateAction } from "react";
22 import { useQuery as useTanstackQuery } from "@tanstack/react-query";
33 import { useForm, useWatch } from "react-hook-form";
4−import { fetchAndInspectOpenApiSpec, type InferredSpecAuth } from "@/lib/openapi-spec-inspector";
4+import { fetchAndInspectOpenApiSpec, type InferredSpecAuth } from "@/lib/openapi/spec-inspector";
55 import type { CatalogCollectionItem } from "@/lib/catalog-collections";
6−import { catalogSourceName, inferNameFromUrl, sourceKeyForSource, withUniqueSourceName } from "@/lib/tools-source-helpers";
6+import { catalogSourceName, inferNameFromUrl, sourceKeyForSource, withUniqueSourceName } from "@/lib/tools/source-helpers";
77 import type { CredentialRecord, CredentialScope, SourceAuthType, ToolSourceRecord } from "@/lib/types";
8−import { getVisibleCatalogItems, type SourceCatalogSort, type SourceType } from "./add-source-dialog-helpers";
9−import type { SourceAuthPanelEditableField } from "./add-source-auth-panel";
8+import { getVisibleCatalogItems, type SourceCatalogSort, type SourceType } from "../../../add/source/dialog-helpers";
9+import type { SourceAuthPanelEditableField } from "../../../add/source/auth-panel";
1010 import {
1111 buildAuthConfig,
1212 buildSecretJson,
@@ -24,9 +24,9 @@ import { · 11 unmodified lines
2424 type AddSourceUiState,
2525 type SourceDialogView,
2626 type SourceFormValues,
27−} from "./add-source-form-utils";
27+} from "../../../add/source/form-utils";
2828
29−export { existingCredentialMatchesAuthType } from "./add-source-form-utils";
29+export { existingCredentialMatchesAuthType } from "../../../add/source/form-utils";
3030
3131 function normalizeEndpointForOAuth(value: string): string {
3232 const trimmed = value.trim();
executor/apps/web/src/components/tools/view.tsx+7−12
@@ -13,9 +13,9 @@ import { ToolExplorer } from "@/components/tools/explorer"; · 12 unmodified lines
1313 import { TaskComposer } from "@/components/tasks/task-composer";
1414 import { AddSourceDialog, SourceCard } from "@/components/tools/sources";
1515 import { CredentialsPanel } from "@/components/tools/credentials";
16−import { ConnectionFormDialog } from "@/components/tools/connection-form-dialog";
16+import { ConnectionFormDialog } from "@/components/tools/connection/form-dialog";
1717 import { useSession } from "@/lib/session-context";
18−import { useWorkspaceTools } from "@/hooks/use-workspace-tools";
18+import { useWorkspaceTools } from "@/hooks/use/workspace-tools";
1919 import { useQuery } from "convex/react";
2020 import { convexApi } from "@/lib/convex-api";
2121 import type {
@@ -25,9 +25,9 @@ import type { · 3 unmodified lines
2525 import {
2626 credentialStatsForSource,
2727 toolSourceLabelForSource,
28−} from "@/lib/tools-source-helpers";
29−import { sourceLabel } from "@/lib/tool-source-utils";
30−import { workspaceQueryArgs } from "@/lib/workspace-query-args";
28+} from "@/lib/tools/source-helpers";
29+import { sourceLabel } from "@/lib/tool/source-utils";
30+import { workspaceQueryArgs } from "@/lib/workspace/query-args";
3131
3232 type ToolsTab = "catalog" | "credentials" | "editor";
3333
@@ -123,7 +123,7 @@ export function ToolsView({ · 89 unmodified lines
123123 }
124124
125125 return (
126− <div className="flex h-full min-h-0 flex-col gap-6">
126+ <div className="flex h-full min-h-0 flex-col">
127127 <PageHeader
128128 title="Tools"
129129 description="Run tasks, manage sources, auth, connections, and available tools"
@@ -164,7 +164,7 @@ export function ToolsView({ · 34 unmodified lines
164164 <div className="flex items-center justify-between gap-3">
165165 <CardTitle className="text-sm font-medium flex items-center gap-2">
166166 <Globe className="h-4 w-4 text-muted-foreground" />
167− Tools + Sources
167+ Tools
168168 <span className="text-[10px] font-mono bg-muted text-muted-foreground px-1.5 py-0.5 rounded">
169169 {loadingTools ? "..." : tools.length}
170170 </span>
@@ -180,11 +180,6 @@ export function ToolsView({ · 9 unmodified lines
180180 />
181181 </div>
182182 </div>
183− <p className="text-[11px] text-muted-foreground">
184− {activeSource
185− ? `Filtering and managing ${activeSource}.`
186− : "Source management and tool inventory are unified here."}
187− </p>
188183 </CardHeader>
189184 <CardContent className="pt-0 min-h-0 flex-1 flex flex-col gap-3">
190185 {sourcesLoading ? (
executor/apps/web/src/frontend/app.tsx+1−1
@@ -6,7 +6,7 @@ import { ApprovalsView } from "@/components/approvals/approvals-view"; · 5 unmodified lines
66 import { DashboardView } from "@/components/dashboard/view";
77 import { MenubarMvpView } from "@/components/menubar/mvp-view";
88 import { OnboardingView } from "@/components/organization/onboarding-view";
9−import { OrganizationSettingsView } from "@/components/organization/organization-settings-view";
9+import { OrganizationSettingsView } from "@/components/organization/organization/settings-view";
1010 import { TasksView } from "@/components/tasks/tasks-view";
1111 import { ToolsView } from "@/components/tools/view";
1212
executor/apps/web/src/hooks/use/workspace-tools.tsrenamed from executor/apps/web/src/hooks/use-workspace-tools.ts+0−0

File renamed without changes.

executor/apps/web/src/lib/approval/input-format.tsrenamed from executor/apps/web/src/lib/approval-input-format.ts+0−0

File renamed without changes.

executor/apps/web/src/lib/credentials/source-helpers.tsrenamed from executor/apps/web/src/lib/credentials-source-helpers.ts+2−2
@@ -1,11 +1,11 @@
1−import { displaySourceName } from "@/lib/tool-source-utils";
1+import { displaySourceName } from "@/lib/tool/source-utils";
22 import {
33 readSourceAuth,
44 sourceForCredentialKey,
55 toolSourceLabelForSource,
66 type SourceAuthMode,
77 type SourceAuthType,
8−} from "@/lib/tools-source-helpers";
8+} from "@/lib/tools/source-helpers";
99 import type { CredentialScope, SourceAuthProfile, ToolSourceRecord } from "@/lib/types";
1010
1111 export type SourceOption = { source: ToolSourceRecord; key: string; label: string };
executor/apps/web/src/lib/mcp/oauth-popup.tsrenamed from executor/apps/web/src/lib/mcp-oauth-popup.ts+0−0

File renamed without changes.

executor/apps/web/src/lib/mcp/oauth-provider.tsrenamed from executor/apps/web/src/lib/mcp-oauth-provider.ts+0−0

File renamed without changes.

executor/apps/web/src/lib/mcp/oauth-request.tsrenamed from executor/apps/web/src/lib/mcp-oauth-request.ts+0−0

File renamed without changes.

executor/apps/web/src/lib/mcp/oauth-url.tsrenamed from executor/apps/web/src/lib/mcp-oauth-url.ts+0−0

File renamed without changes.

executor/apps/web/src/lib/openapi/spec-inspector.tsrenamed from executor/apps/web/src/lib/openapi-spec-inspector.ts+0−0

File renamed without changes.

executor/apps/web/src/lib/session-context.tsx+1−1
@@ -20,7 +20,7 @@ import { · 19 unmodified lines
2020 resolveActiveWorkspaceId,
2121 type WorkosAccount,
2222 type WorkspaceListItem,
23−} from "@/lib/session-context-derivation";
23+} from "@/lib/session/context-derivation";
2424 import {
2525 clearSessionStorage,
2626 persistActiveWorkspaceId,
executor/apps/web/src/lib/session/context-derivation.tsrenamed from executor/apps/web/src/lib/session-context-derivation.ts+0−0

File renamed without changes.

executor/apps/web/src/lib/tool/explorer-grouping.tsrenamed from executor/apps/web/src/lib/tool-explorer-grouping.ts+1−1
@@ -1,4 +1,4 @@
1−import { sourceLabel, sourceType } from "@/lib/tool-source-utils";
1+import { sourceLabel, sourceType } from "@/lib/tool/source-utils";
22 import type { ToolDescriptor } from "@/lib/types";
33
44 export interface ToolGroup {
executor/apps/web/src/lib/tool/source-utils.tsrenamed from executor/apps/web/src/lib/tool-source-utils.ts+0−0

File renamed without changes.

executor/apps/web/src/lib/tools/source-helpers.tsrenamed from executor/apps/web/src/lib/tools-source-helpers.ts+0−0

File renamed without changes.

executor/apps/web/src/lib/workspace/query-args.tsrenamed from executor/apps/web/src/lib/workspace-query-args.ts+0−0

File renamed without changes.

executor/executor.ts+1−1
@@ -3,7 +3,7 @@ · 2 unmodified lines
33 import fs from "node:fs/promises";
44 import os from "node:os";
55 import path from "node:path";
6−import { checkBootstrapHealth } from "./packages/core/src/managed-runtime-bootstrap";
6+import { checkBootstrapHealth } from "./packages/core/src/managed/runtime-bootstrap";
77 import { managedRuntimeDiagnostics, runManagedBackend, runManagedWeb } from "./packages/core/src/managed-runtime";
88
99 interface InstallPaths {
executor/package.json+2−2
@@ -11,8 +11,8 @@ · 10 unmodified lines
1111 "doctor": "bun run executor.ts doctor",
1212 "doctor:prod": "bun run scripts/prod/doctor-prod.ts",
1313 "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",
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",
executor/packages/convex/access-controls.test.ts+1−1
@@ -1,7 +1,7 @@
11 import { describe, expect, test } from "bun:test";
22 import { convexTest } from "convex-test";
33 import { api } from "./_generated/api";
4−import type { Id } from "./_generated/dataModel";
4+import type { Id } from "./_generated/dataModel.d.ts";
55 import schema from "./schema";
66
77 // ---------------------------------------------------------------------------
executor/packages/convex/accounts.ts+1−1
@@ -1,4 +1,4 @@
1−import type { Id } from "./_generated/dataModel";
1+import type { Id } from "./_generated/dataModel.d.ts";
22 import type { MutationCtx } from "./_generated/server";
33 import { authedMutation } from "../core/src/function-builders";
44
executor/packages/convex/auth.ts+1−1
@@ -1,6 +1,6 @@
11 import { AuthKit, type AuthFunctions } from "@convex-dev/workos-authkit";
22 import { components, internal } from "./_generated/api";
3−import type { DataModel } from "./_generated/dataModel";
3+import type { DataModel } from "./_generated/dataModel.d.ts";
44 import { internalMutation, mutation } from "./_generated/server";
55 import { bootstrapCurrentWorkosAccountImpl } from "./auth/bootstrap";
66 import { workosEventHandlers } from "./auth/event_handlers";
executor/packages/convex/auth/event_handlers.ts+1−1
@@ -1,5 +1,5 @@
11 import { type AuthKit } from "@convex-dev/workos-authkit";
2−import type { DataModel, Doc } from "../_generated/dataModel";
2+import type { DataModel, Doc } from "../_generated/dataModel.d.ts";
33 import type { MutationCtx } from "../_generated/server";
44 import { upsertWorkosAccount } from "./accounts";
55 import {
executor/packages/convex/auth/memberships.ts+1−1
@@ -1,4 +1,4 @@
1−import type { Doc } from "../_generated/dataModel";
1+import type { Doc } from "../_generated/dataModel.d.ts";
22 import type {
33 AccountId,
44 DbCtx,
executor/packages/convex/auth/personal_workspace.ts+1−1
@@ -1,4 +1,4 @@
1−import type { Id } from "../_generated/dataModel";
1+import type { Id } from "../_generated/dataModel.d.ts";
22 import { upsertOrganizationMembership } from "./memberships";
33 import {
44 buildPersonalWorkspaceSlugSeed,
executor/packages/convex/auth/types.ts+1−1
@@ -1,4 +1,4 @@
1−import type { Doc, Id } from "../_generated/dataModel";
1+import type { Doc, Id } from "../_generated/dataModel.d.ts";
22 import type { MutationCtx } from "../_generated/server";
33
44 export type DbCtx = Pick<MutationCtx, "db">;
executor/packages/convex/billing.ts+1−1
@@ -1,6 +1,6 @@
11 import { StripeSubscriptions } from "@convex-dev/stripe";
22 import { v } from "convex/values";
3−import type { Id } from "./_generated/dataModel";
3+import type { Id } from "./_generated/dataModel.d.ts";
44 import { components, internal } from "./_generated/api";
55 import type { MutationCtx, QueryCtx } from "./_generated/server";
66 import { action } from "./_generated/server";
executor/packages/convex/billingInternal.ts+1−1
@@ -1,5 +1,5 @@
11 import { v } from "convex/values";
2−import type { Doc, Id } from "./_generated/dataModel";
2+import type { Doc, Id } from "./_generated/dataModel.d.ts";
33 import type { MutationCtx, QueryCtx } from "./_generated/server";
44 import { internalMutation, internalQuery } from "./_generated/server";
55 import { internalOrganizationQuery } from "../core/src/function-builders";
executor/packages/convex/database.test.ts+1−1
@@ -1,7 +1,7 @@
11 import { expect, test } from "bun:test";
22 import { convexTest } from "convex-test";
33 import { internal } from "./_generated/api";
4−import type { Id } from "./_generated/dataModel";
4+import type { Id } from "./_generated/dataModel.d.ts";
55 import schema from "./schema";
66
77 function setup() {
executor/packages/convex/database/anonymous.ts+1−1
@@ -1,4 +1,4 @@
1−import type { Doc } from "../_generated/dataModel";
1+import type { Doc } from "../_generated/dataModel.d.ts";
22 import type { MutationCtx } from "../_generated/server";
33 import { slugify } from "../../core/src/identity";
44 import { ensureUniqueSlug } from "../../core/src/slug";
executor/packages/convex/database/mappers.ts+1−1
@@ -1,4 +1,4 @@
1−import type { Doc } from "../_generated/dataModel";
1+import type { Doc } from "../_generated/dataModel.d.ts";
22 import { asRecord } from "../lib/object";
33 import { DEFAULT_TASK_TIMEOUT_MS } from "../task/constants";
44
executor/packages/convex/database/readers.ts+1−1
@@ -1,4 +1,4 @@
1−import type { Doc } from "../_generated/dataModel";
1+import type { Doc } from "../_generated/dataModel.d.ts";
22 import type { QueryCtx } from "../_generated/server";
33 import { normalizeSourceAuthFingerprint } from "./mappers";
44 import { asRecord } from "../lib/object";
executor/packages/convex/executor-mcp.e2e.test.ts+1−1
@@ -4,7 +4,7 @@ import { Client } from "@modelcontextprotocol/sdk/client/index.js"; · 3 unmodified lines
44 import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
55 import { ElicitRequestSchema } from "@modelcontextprotocol/sdk/types.js";
66 import { internal } from "./_generated/api";
7−import type { Id } from "./_generated/dataModel";
7+import type { Id } from "./_generated/dataModel.d.ts";
88 import schema from "./schema";
99
1010 function setup() {
executor/packages/convex/executor.ts+1−1
@@ -1,6 +1,6 @@
11 import { v } from "convex/values";
22 import { internal } from "./_generated/api";
3−import type { Id } from "./_generated/dataModel";
3+import type { Id } from "./_generated/dataModel.d.ts";
44 import type { MutationCtx } from "./_generated/server";
55 import { internalMutation } from "./_generated/server";
66 import { workspaceMutation } from "../core/src/function-builders";
executor/packages/convex/http/mcp_auth.ts+1−1
@@ -1,5 +1,5 @@
11 import { createRemoteJWKSet, jwtVerify } from "jose";
2−import type { Id } from "../_generated/dataModel";
2+import type { Id } from "../_generated/dataModel.d.ts";
33 import type { ActionCtx } from "../_generated/server";
44
55 export const MCP_PATH = "/mcp";
executor/packages/convex/http/mcp_service.ts+1−1
@@ -1,6 +1,6 @@
11 import type { ActionCtx } from "../_generated/server";
22 import { internal } from "../_generated/api";
3−import type { Id } from "../_generated/dataModel";
3+import type { Id } from "../_generated/dataModel.d.ts";
44 import type {
55 AnonymousContext,
66 PendingApprovalRecord,
executor/packages/convex/mcp/run/code-oom.e2e.test.tsrenamed from executor/packages/convex/mcp-run-code-oom.e2e.test.ts+11−11
@@ -2,22 +2,22 @@ import { expect, test } from "bun:test"; · 1 unmodified line
22 import { convexTest } from "convex-test";
33 import { Client } from "@modelcontextprotocol/sdk/client/index.js";
44 import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
5−import { internal } from "./_generated/api";
6−import schema from "./schema";
5+import { internal } from "../../_generated/api";
6+import schema from "../../schema";
77
88 const OOM_MESSAGE = "JavaScript execution ran out of memory (maximum memory usage: 64 MB): request stream size was 0 bytes";
99
1010 function setup() {
1111 return convexTest(schema, {
12− "./database.ts": () => import("./database"),
13− "./executor.ts": () => import("./executor"),
14− "./executorNode.ts": () => import("./test-fixtures/executorNode.oomFixture"),
15− "./http.ts": () => import("./http"),
16− "./auth.ts": () => import("./auth"),
17− "./workspaceAuthInternal.ts": () => import("./workspaceAuthInternal"),
18− "./workspaceToolCache.ts": () => import("./workspaceToolCache"),
19− "./openApiSpecCache.ts": () => import("./openApiSpecCache"),
20− "./_generated/api.js": () => import("./_generated/api.js"),
12+ "../../database.ts": () => import("../../database"),
13+ "../../executor.ts": () => import("../../executor"),
14+ "../../executorNode.ts": () => import("../../test-fixtures/executorNode.oomFixture"),
15+ "../../http.ts": () => import("../../http"),
16+ "../../auth.ts": () => import("../../auth"),
17+ "../../workspaceAuthInternal.ts": () => import("../../workspaceAuthInternal"),
18+ "../../workspaceToolCache.ts": () => import("../../workspaceToolCache"),
19+ "../../openApiSpecCache.ts": () => import("../../openApiSpecCache"),
20+ "../../_generated/api.js": () => import("../../_generated/api.js"),
2121 });
2222 }
2323
executor/packages/convex/migrations.ts+2−2
@@ -1,6 +1,6 @@
11 import { Migrations } from "@convex-dev/migrations";
2−import type { Id } from "./_generated/dataModel";
3−import type { DataModel } from "./_generated/dataModel";
2+import type { Id } from "./_generated/dataModel.d.ts";
3+import type { DataModel } from "./_generated/dataModel.d.ts";
44 import { components } from "./_generated/api";
55
66 const migrations = new Migrations<DataModel>(components.migrations);
executor/packages/convex/organizations.ts+1−1
@@ -1,5 +1,5 @@
11 import { v } from "convex/values";
2−import type { Doc, Id } from "./_generated/dataModel";
2+import type { Doc, Id } from "./_generated/dataModel.d.ts";
33 import type { MutationCtx, QueryCtx } from "./_generated/server";
44 import { optionalAccountQuery, authedMutation } from "../core/src/function-builders";
55 import { getOrganizationMembership, slugify } from "../core/src/identity";
executor/packages/convex/runtime/actor_auth.ts+1−1
@@ -1,7 +1,7 @@
11 "use node";
22
33 import type { ActionCtx } from "../_generated/server";
4−import type { Id } from "../_generated/dataModel";
4+import type { Id } from "../_generated/dataModel.d.ts";
55 import { internal } from "../_generated/api";
66 import { actorIdForAccount } from "../../core/src/identity";
77
executor/packages/convex/runtime/task_runner.ts+2−2
@@ -2,9 +2,9 @@ · 1 unmodified line
22
33 import type { ActionCtx } from "../_generated/server";
44 import { internal } from "../_generated/api";
5−import { InProcessExecutionAdapter } from "../../core/src/adapters/in-process-execution-adapter";
5+import { InProcessExecutionAdapter } from "../../core/src/adapters/in/process/execution-adapter";
66 import { APPROVAL_DENIED_PREFIX } from "../../core/src/execution-constants";
7−import { dispatchCodeWithCloudflareWorkerLoader } from "../../core/src/runtimes/cloudflare-worker-loader-runtime";
7+import { dispatchCodeWithCloudflareWorkerLoader } from "../../core/src/runtimes/cloudflare/worker/loader-runtime";
88 import {
99 CLOUDFLARE_WORKER_LOADER_RUNTIME_ID,
1010 isCloudflareWorkerLoaderConfigured,
executor/packages/convex/runtime/tool_call_resolution.ts+1−1
@@ -1,7 +1,7 @@
11 "use node";
22
33 import type { ActionCtx } from "../_generated/server";
4−import { parseGraphqlOperationPaths } from "../../core/src/graphql-operation-paths";
4+import { parseGraphqlOperationPaths } from "../../core/src/graphql/operation-paths";
55 import type { AccessPolicyRecord, PolicyDecision, TaskRecord, ToolDefinition } from "../../core/src/types";
66 import { getDecisionForContext, getToolDecision } from "./policy";
77 import { resolveAliasedToolPath, resolveClosestToolPath, suggestToolPaths, toPreferredToolPath } from "./tool_paths";
executor/packages/convex/runtime/tool_source_loading.ts+3−3
@@ -2,7 +2,7 @@ · 1 unmodified line
22
33 import type { ActionCtx } from "../_generated/server";
44 import { internal } from "../_generated/api";
5−import type { Id } from "../_generated/dataModel";
5+import type { Id } from "../_generated/dataModel.d.ts";
66 import {
77 compileExternalToolSource,
88 compileOpenApiToolSourceFromPrepared,
@@ -10,7 +10,7 @@ import { · 1 unmodified line
1010 type CompiledToolSourceArtifact,
1111 } from "../../core/src/tool-sources";
1212 import { resolveCredentialPayload } from "../../core/src/credential-providers";
13−import { buildStaticAuthHeaders } from "../../core/src/tool-source-auth";
13+import { buildStaticAuthHeaders } from "../../core/src/tool/source-auth";
1414 import type {
1515 ExternalToolSourceConfig,
1616 GraphqlToolSourceConfig,
@@ -18,7 +18,7 @@ import type { · 1 unmodified line
1818 OpenApiAuth,
1919 OpenApiToolSourceConfig,
2020 PreparedOpenApiSpec,
21−} from "../../core/src/tool-source-types";
21+} from "../../core/src/tool/source-types";
2222 import type { ToolSourceRecord } from "../../core/src/types";
2323 import { asPayload } from "../lib/object";
2424
executor/packages/convex/runtime/workspace_tools.ts+2−2
@@ -2,7 +2,7 @@ · 1 unmodified line
22
33 import type { ActionCtx } from "../_generated/server";
44 import { internal } from "../_generated/api";
5−import type { Id } from "../_generated/dataModel";
5+import type { Id } from "../_generated/dataModel.d.ts";
66 import { createCatalogTools, createDiscoverTool } from "../../core/src/tool-discovery";
77 import {
88 materializeCompiledToolSource,
@@ -10,7 +10,7 @@ import { · 1 unmodified line
1010 type CompiledToolSourceArtifact,
1111 type WorkspaceToolSnapshot,
1212 } from "../../core/src/tool-sources";
13−import type { ExternalToolSourceConfig } from "../../core/src/tool-source-types";
13+import type { ExternalToolSourceConfig } from "../../core/src/tool/source-types";
1414 import type {
1515 AccessPolicyRecord,
1616 OpenApiSourceQuality,
executor/packages/convex/workspaces.ts+1−1
@@ -1,5 +1,5 @@
11 import { v } from "convex/values";
2−import type { Doc, Id } from "./_generated/dataModel";
2+import type { Doc, Id } from "./_generated/dataModel.d.ts";
33 import type { MutationCtx, QueryCtx } from "./_generated/server";
44 import { optionalAccountQuery, authedMutation } from "../core/src/function-builders";
55 import { getOrganizationMembership, slugify } from "../core/src/identity";
executor/packages/core/package.json+1−1
@@ -4,7 +4,7 @@ · 3 unmodified lines
44 "private": true,
55 "type": "module",
66 "exports": {
7− "./openapi-helper-types": "./src/openapi-helper-types.ts"
7+ "./openapi-helper-types": "./src/openapi/helper-types.ts"
88 },
99 "scripts": {
1010 "typecheck": "tsc --noEmit"
executor/packages/core/src/adapters/in/process/execution-adapter.test.tsrenamed from executor/packages/core/src/adapters/in-process-execution-adapter.test.ts+2−2
@@ -1,6 +1,6 @@
11 import { expect, test } from "bun:test";
2−import { APPROVAL_DENIED_PREFIX } from "../execution-constants";
3−import { InProcessExecutionAdapter } from "./in-process-execution-adapter";
2+import { APPROVAL_DENIED_PREFIX } from "../../../execution-constants";
3+import { InProcessExecutionAdapter } from "./execution-adapter";
44
55 test("returns run mismatch without invoking tool", async () => {
66 let called = 0;
executor/packages/core/src/adapters/in/process/execution-adapter.tsrenamed from executor/packages/core/src/adapters/in-process-execution-adapter.ts+3−3
@@ -1,10 +1,10 @@
1−import { APPROVAL_DENIED_PREFIX, APPROVAL_PENDING_PREFIX } from "../execution-constants";
1+import { APPROVAL_DENIED_PREFIX, APPROVAL_PENDING_PREFIX } from "../../../execution-constants";
22 import type {
33 ExecutionAdapter,
44 ToolCallRequest,
55 ToolCallResult,
6−} from "../types";
7−import { describeError } from "../utils";
6+} from "../../../types";
7+import { describeError } from "../../../utils";
88
99 interface InProcessExecutionAdapterOptions {
1010 runId: string;
executor/packages/core/src/graphql/field-tools.tsrenamed from executor/packages/core/src/graphql-field-tools.ts+1−1
@@ -1,4 +1,4 @@
1−import type { GraphqlExecutionEnvelope } from "./tool-source-execution";
1+import type { GraphqlExecutionEnvelope } from "../tool/source-execution";
22
33 interface GqlTypeRef {
44 kind: string;
executor/packages/core/src/graphql/operation-paths.tsrenamed from executor/packages/core/src/graphql-operation-paths.ts+1−1
@@ -1,5 +1,5 @@
11 import { Kind, parse, type FragmentDefinitionNode, type SelectionSetNode } from "graphql";
2−import { sanitizeSegment } from "./tool-path-utils";
2+import { sanitizeSegment } from "../tool/path-utils";
33
44 /**
55 * Parse a GraphQL query string to extract the operation type and root field names.
executor/packages/core/src/identity.ts+1−1
@@ -1,4 +1,4 @@
1−import type { Doc, Id } from "../../convex/_generated/dataModel";
1+import type { Doc, Id } from "../../convex/_generated/dataModel.d.ts";
22 import type { MutationCtx, QueryCtx } from "../../convex/_generated/server";
33
44 type IdentityCtx = Pick<QueryCtx, "auth" | "db"> | Pick<MutationCtx, "auth" | "db">;
executor/packages/core/src/managed-runtime.ts+4−4
@@ -1,10 +1,10 @@
11 import fs from "node:fs/promises";
22 import path from "node:path";
33
4−import { ensureProjectBootstrapped, waitForBackendReady } from "./managed-runtime-bootstrap";
5−import { backendArgs, ensureConfig, runtimeInfo } from "./managed-runtime-info";
6−import { ensureBackendBinary, ensureNodeRuntime, ensureWebBundle } from "./managed-runtime-installation";
7−import { runProcess } from "./managed-runtime-process";
4+import { ensureProjectBootstrapped, waitForBackendReady } from "./managed/runtime-bootstrap";
5+import { backendArgs, ensureConfig, runtimeInfo } from "./managed/runtime-info";
6+import { ensureBackendBinary, ensureNodeRuntime, ensureWebBundle } from "./managed/runtime-installation";
7+import { runProcess } from "./managed/runtime-process";
88
99 export interface ManagedRuntimeConfig {
1010 instanceName: string;
executor/packages/core/src/managed/runtime-archives.tsrenamed from executor/packages/core/src/managed-runtime-archives.ts+1−1
@@ -1,6 +1,6 @@
11 import fs from "node:fs/promises";
22
3−import { runProcess } from "./managed-runtime-process";
3+import { runProcess } from "./runtime-process";
44
55 async function downloadWithFetch(url: string, destinationPath: string): Promise<void> {
66 const response = await fetch(url);
executor/packages/core/src/managed/runtime-bootstrap.tsrenamed from executor/packages/core/src/managed-runtime-bootstrap.ts+4−4
@@ -2,10 +2,10 @@ import fs from "node:fs/promises"; · 1 unmodified line
22 import os from "node:os";
33 import path from "node:path";
44
5−import type { ManagedRuntimeInfo } from "./managed-runtime";
6−import { managedRuntimeVersions, pathExists } from "./managed-runtime-info";
7−import { ensureConvexCliRuntime } from "./managed-runtime-installation";
8−import { runProcess } from "./managed-runtime-process";
5+import type { ManagedRuntimeInfo } from "../managed-runtime";
6+import { managedRuntimeVersions, pathExists } from "./runtime-info";
7+import { ensureConvexCliRuntime } from "./runtime-installation";
8+import { runProcess } from "./runtime-process";
99
1010 const BOOTSTRAP_REQUIRED_DEPENDENCIES = [
1111 "convex",
executor/packages/core/src/managed/runtime-info.tsrenamed from executor/packages/core/src/managed-runtime-info.ts+1−1
@@ -2,7 +2,7 @@ import fs from "node:fs/promises"; · 1 unmodified line
22 import os from "node:os";
33 import path from "node:path";
44
5−import type { ManagedRuntimeConfig, ManagedRuntimeInfo } from "./managed-runtime";
5+import type { ManagedRuntimeConfig, ManagedRuntimeInfo } from "../managed-runtime";
66
77 const CONVEX_BACKEND_REPO = "get-convex/convex-backend";
88 const EXECUTOR_RELEASE_REPO = Bun.env.EXECUTOR_REPO ?? "RhysSullivan/executor";
executor/packages/core/src/managed/runtime-installation.tsrenamed from executor/packages/core/src/managed-runtime-installation.ts+4−4
@@ -2,10 +2,10 @@ import fs from "node:fs/promises"; · 1 unmodified line
22 import os from "node:os";
33 import path from "node:path";
44
5−import type { ManagedRuntimeInfo } from "./managed-runtime";
6−import { downloadArchive, extractTarArchive, extractZipArchive } from "./managed-runtime-archives";
7−import { managedRuntimeVersions, nodeArchiveName, pathExists } from "./managed-runtime-info";
8−import { runProcess } from "./managed-runtime-process";
5+import type { ManagedRuntimeInfo } from "../managed-runtime";
6+import { downloadArchive, extractTarArchive, extractZipArchive } from "./runtime-archives";
7+import { managedRuntimeVersions, nodeArchiveName, pathExists } from "./runtime-info";
8+import { runProcess } from "./runtime-process";
99
1010 export async function ensureBackendBinary(info: ManagedRuntimeInfo): Promise<void> {
1111 if (await pathExists(info.backendBinary)) {
executor/packages/core/src/managed/runtime-process.tsrenamed from executor/packages/core/src/managed-runtime-process.ts+0−0

File renamed without changes.

executor/packages/core/src/mcp-server.test.ts+1−1
@@ -3,7 +3,7 @@ import { Client } from "@modelcontextprotocol/sdk/client/index.js"; · 2 unmodified lines
33 import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
44 import { handleMcpRequest } from "./mcp-server";
55 import type { LiveTaskEvent } from "./events";
6−import type { Id } from "../../convex/_generated/dataModel";
6+import type { Id } from "../../convex/_generated/dataModel.d.ts";
77 import type { AnonymousContext, CreateTaskInput, TaskRecord, ToolDescriptor } from "./types";
88
99 class FakeMcpService {
executor/packages/core/src/mcp-server.ts+5−5
@@ -2,11 +2,11 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; · 1 unmodified line
22 import { WebStandardStreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js";
33 import type { AnySchema } from "@modelcontextprotocol/sdk/server/zod-compat.js";
44 import { z } from "zod";
5−import type { McpExecutorService, ApprovalPrompt } from "./mcp-server-contracts";
6−import type { Id } from "../../convex/_generated/dataModel";
7−import { waitForTerminalTask, createMcpApprovalPrompt } from "./mcp-server-approval";
8−import { buildRunCodeDescription, summarizeTask } from "./mcp-server-formatting";
9−import { getTaskTerminalState, textContent } from "./mcp-server-utils";
5+import type { McpExecutorService, ApprovalPrompt } from "./mcp/server-contracts";
6+import type { Id } from "../../convex/_generated/dataModel.d.ts";
7+import { waitForTerminalTask, createMcpApprovalPrompt } from "./mcp/server-approval";
8+import { buildRunCodeDescription, summarizeTask } from "./mcp/server-formatting";
9+import { getTaskTerminalState, textContent } from "./mcp/server-utils";
1010
1111 // ---------------------------------------------------------------------------
1212 // Workspace context (optional, from query params)
executor/packages/core/src/mcp/server-approval.tsrenamed from executor/packages/core/src/mcp-server-approval.ts+4−4
@@ -1,13 +1,13 @@
11 import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2−import type { PendingApprovalRecord, TaskRecord } from "./types";
3−import type { Id } from "../../convex/_generated/dataModel";
2+import type { PendingApprovalRecord, TaskRecord } from "../types";
3+import type { Id } from "../../../convex/_generated/dataModel";
44 import type {
55 ApprovalPrompt,
66 ApprovalPromptContext,
77 ApprovalPromptDecision,
88 McpExecutorService,
9−} from "./mcp-server-contracts";
10−import { getTaskTerminalState } from "./mcp-server-utils";
9+} from "./server-contracts";
10+import { getTaskTerminalState } from "./server-utils";
1111
1212 function formatApprovalInput(input: unknown, maxLength = 2000): string {
1313 let serialized: string;
executor/packages/core/src/mcp/server-contracts.tsrenamed from executor/packages/core/src/mcp-server-contracts.ts+3−3
@@ -1,4 +1,4 @@
1−import type { LiveTaskEvent } from "./events";
1+import type { LiveTaskEvent } from "../events";
22 import type {
33 AnonymousContext,
44 CreateTaskInput,
@@ -6,8 +6,8 @@ import type { · 1 unmodified line
66 TaskExecutionOutcome,
77 TaskRecord,
88 ToolDescriptor,
9−} from "./types";
10−import type { Id } from "../../convex/_generated/dataModel";
9+} from "../types";
10+import type { Id } from "../../../convex/_generated/dataModel";
1111
1212 export interface McpExecutorService {
1313 createTask(input: CreateTaskInput): Promise<{ task: TaskRecord }>;
executor/packages/core/src/mcp/server-formatting.tsrenamed from executor/packages/core/src/mcp-server-formatting.ts+2−2
@@ -1,6 +1,6 @@
11 import { Result } from "better-result";
2−import { generateToolInventory } from "./declaration-generation";
3−import type { TaskRecord, ToolDescriptor } from "./types";
2+import { generateToolInventory } from "../declaration-generation";
3+import type { TaskRecord, ToolDescriptor } from "../types";
44
55 function asCodeBlock(language: string, value: string): string {
66 return `\n\n\`\`\`${language}\n${value}\n\`\`\``;
executor/packages/core/src/mcp/server-utils.tsrenamed from executor/packages/core/src/mcp-server-utils.ts+0−0

File renamed without changes.

executor/packages/core/src/openapi-auth.ts+1−1
@@ -1,4 +1,4 @@
1−import type { OpenApiAuth } from "./tool-source-types";
1+import type { OpenApiAuth } from "./tool/source-types";
22 import { asRecord } from "./utils";
33
44 export function inferOpenApiAuth(spec: Record<string, unknown>): OpenApiAuth | undefined {
executor/packages/core/src/openapi-compaction.ts+1−1
@@ -10,7 +10,7 @@ import { · 9 unmodified lines
1010 resolveSchemaRef,
1111 responseTypeHintFromSchema,
1212 type OpenApiParameterHint,
13−} from "./openapi-schema-hints";
13+} from "./openapi/schema-hints";
1414 import { asRecord } from "./utils";
1515
1616 export interface CompactOpenApiPathsOptions {
executor/packages/core/src/openapi-prepare.ts+2−2
@@ -2,8 +2,8 @@ import SwaggerParser from "@apidevtools/swagger-parser"; · 1 unmodified line
22 import openapiTS, { astToString } from "openapi-typescript";
33 import { inferOpenApiAuth } from "./openapi-auth";
44 import { compactOpenApiPaths } from "./openapi-compaction";
5−import { extractOperationIdsFromDts } from "./openapi-schema-hints";
6−import type { PreparedOpenApiSpec } from "./tool-source-types";
5+import { extractOperationIdsFromDts } from "./openapi/schema-hints";
6+import type { PreparedOpenApiSpec } from "./tool/source-types";
77 import { asRecord } from "./utils";
88
99 interface SwaggerParserAdapter {
executor/packages/core/src/openapi/helper-types.tsrenamed from executor/packages/core/src/openapi-helper-types.ts+0−0

File renamed without changes.

executor/packages/core/src/openapi/real-specs.test.tsrenamed from executor/packages/core/src/openapi-real-specs.test.ts+1−1
@@ -7,7 +7,7 @@ · 6 unmodified lines
77 * Specs are fetched live so these tests require network access and are slower (~5-60s each).
88 */
99 import { test, expect, describe } from "bun:test";
10−import { prepareOpenApiSpec, buildOpenApiToolsFromPrepared } from "./tool-sources";
10+import { prepareOpenApiSpec, buildOpenApiToolsFromPrepared } from "../tool-sources";
1111
1212 interface SpecFixture {
1313 name: string;
executor/packages/core/src/openapi/schema-hints.tsrenamed from executor/packages/core/src/openapi-schema-hints.ts+1−1
@@ -1,4 +1,4 @@
1−import { asRecord } from "./utils";
1+import { asRecord } from "../utils";
22
33 type JsonSchema = Record<string, unknown>;
44 const COMPONENT_REF_INLINE_DEPTH = 2;
executor/packages/core/src/openapi/tool-builder.tsrenamed from executor/packages/core/src/openapi-tool-builder.ts+9−9
@@ -5,15 +5,15 @@ import { · 4 unmodified lines
55 getPreferredResponseSchema,
66 jsonSchemaTypeHintFallback,
77 responseTypeHintFromSchema,
8−} from "./openapi-schema-hints";
9−import { buildOpenApiToolPath } from "./openapi-tool-path";
10−import { buildCredentialSpec, buildStaticAuthHeaders, getCredentialSourceKey } from "./tool-source-auth";
11−import { executeOpenApiRequest } from "./tool-source-execution";
12−import { compactArgDisplayHint, compactReturnTypeHint } from "./type-hints";
13−import type { OpenApiToolSourceConfig, PreparedOpenApiSpec } from "./tool-source-types";
14−import type { ToolDefinition } from "./types";
15−import { asRecord } from "./utils";
16−import type { SerializedTool } from "./tool-source-serialization";
8+} from "./schema-hints";
9+import { buildOpenApiToolPath } from "./tool-path";
10+import { buildCredentialSpec, buildStaticAuthHeaders, getCredentialSourceKey } from "../tool/source-auth";
11+import { executeOpenApiRequest } from "../tool/source-execution";
12+import { compactArgDisplayHint, compactReturnTypeHint } from "../type-hints";
13+import type { OpenApiToolSourceConfig, PreparedOpenApiSpec } from "../tool/source-types";
14+import type { ToolDefinition } from "../types";
15+import { asRecord } from "../utils";
16+import type { SerializedTool } from "../tool/source-serialization";
1717
1818 type OpenApiOperationParameter = {
1919 name: string;
executor/packages/core/src/openapi/tool-path.tsrenamed from executor/packages/core/src/openapi-tool-path.ts+1−1
@@ -1,4 +1,4 @@
1−import { sanitizeSegment, sanitizeSnakeSegment } from "./tool-path-utils";
1+import { sanitizeSegment, sanitizeSnakeSegment } from "../tool/path-utils";
22
33 function normalizeOpenApiTag(tagRaw: string): string {
44 let tag = sanitizeSnakeSegment(tagRaw);
executor/packages/core/src/postman-runtime.ts+1−1
@@ -1,6 +1,6 @@
11 import { asStringRecord, detectJsonContentType, findUnresolvedPostmanTemplateKeys, interpolatePostmanTemplate, stringifyTemplateValue } from "./postman-utils";
22 import { asRecord } from "./utils";
3−import type { PostmanRequestBody } from "./postman-collection-utils";
3+import type { PostmanRequestBody } from "./postman/collection-utils";
44
55 export interface PostmanSerializedRunSpec {
66 kind: "postman";
executor/packages/core/src/postman/collection-utils.tsrenamed from executor/packages/core/src/postman-collection-utils.ts+2−2
@@ -1,5 +1,5 @@
1−import { sanitizeSegment, sanitizeSnakeSegment } from "./tool-path-utils";
2−import { stringifyTemplateValue } from "./postman-utils";
1+import { sanitizeSegment, sanitizeSnakeSegment } from "../tool/path-utils";
2+import { stringifyTemplateValue } from "../postman-utils";
33
44 export type PostmanRequestBody =
55 | { kind: "urlencoded"; entries: Array<{ key: string; value: string }> }
executor/packages/core/src/runtimes/cloudflare/worker/loader-runtime.test.tsrenamed from executor/packages/core/src/runtimes/cloudflare-worker-loader-runtime.test.ts+6−6
@@ -1,5 +1,5 @@
11 import { afterAll, beforeAll, describe, expect, test } from "bun:test";
2−import { dispatchCodeWithCloudflareWorkerLoader } from "./cloudflare-worker-loader-runtime";
2+import { dispatchCodeWithCloudflareWorkerLoader } from "./loader-runtime";
33
44 let fakeHostServer: ReturnType<typeof Bun.serve>;
55 let fakeCallbackServer: ReturnType<typeof Bun.serve>;
@@ -141,7 +141,7 @@ describe("runtime catalog", () => { · 135 unmodified lines
141141 isKnownRuntimeId,
142142 LOCAL_BUN_RUNTIME_ID,
143143 CLOUDFLARE_WORKER_LOADER_RUNTIME_ID,
144− } = await import("./runtime-catalog");
144+ } = await import("../../runtime-catalog");
145145
146146 expect(isKnownRuntimeId(LOCAL_BUN_RUNTIME_ID)).toBe(true);
147147 expect(isKnownRuntimeId(CLOUDFLARE_WORKER_LOADER_RUNTIME_ID)).toBe(true);
@@ -149,7 +149,7 @@ describe("runtime catalog", () => { · 1 unmodified line
149149 });
150150
151151 test("isCloudflareWorkerLoaderConfigured checks env vars", async () => {
152− const { isCloudflareWorkerLoaderConfigured } = await import("./runtime-catalog");
152+ const { isCloudflareWorkerLoaderConfigured } = await import("../../runtime-catalog");
153153 expect(isCloudflareWorkerLoaderConfigured()).toBe(true);
154154 });
155155
@@ -161,7 +161,7 @@ describe("runtime catalog", () => { · 5 unmodified lines
161161 defaultRuntimeId,
162162 isRuntimeEnabled,
163163 listRuntimeTargets,
164− } = await import("./runtime-catalog");
164+ } = await import("../../runtime-catalog");
165165
166166 const previous = process.env[CLOUDFLARE_DYNAMIC_WORKER_ONLY_ENV_KEY];
167167 try {
@@ -183,7 +183,7 @@ describe("runtime catalog", () => { · 15 unmodified lines
183183 });
184184
185185 test("getCloudflareWorkerLoaderConfig reads env vars", async () => {
186− const { getCloudflareWorkerLoaderConfig } = await import("./runtime-catalog");
186+ const { getCloudflareWorkerLoaderConfig } = await import("../../runtime-catalog");
187187 const config = getCloudflareWorkerLoaderConfig();
188188
189189 expect(config.runUrl).toContain("/v1/runs");
@@ -194,7 +194,7 @@ describe("runtime catalog", () => { · 4 unmodified lines
194194 });
195195
196196 test("prefers CONVEX_URL over CONVEX_SITE_URL for callback RPC", async () => {
197− const { getCloudflareWorkerLoaderConfig } = await import("./runtime-catalog");
197+ const { getCloudflareWorkerLoaderConfig } = await import("../../runtime-catalog");
198198 const previousConvexUrl = process.env.CONVEX_URL;
199199 const previousSiteUrl = process.env.CONVEX_SITE_URL;
200200 try {
executor/packages/core/src/runtimes/cloudflare/worker/loader-runtime.tsrenamed from executor/packages/core/src/runtimes/cloudflare-worker-loader-runtime.ts+3−3
@@ -1,9 +1,9 @@
11 "use node";
22
33 import { Result } from "better-result";
4−import type { SandboxExecutionRequest } from "../types";
5−import { getCloudflareWorkerLoaderConfig } from "./runtime-catalog";
6−import { transpileForRuntime } from "./transpile";
4+import type { SandboxExecutionRequest } from "../../../types";
5+import { getCloudflareWorkerLoaderConfig } from "../../runtime-catalog";
6+import { transpileForRuntime } from "../../transpile";
77
88 /**
99 * Run agent-generated code via a Cloudflare Worker that uses the Dynamic
executor/packages/core/src/runtimes/runtime-core.test.ts+1−1
@@ -1,7 +1,7 @@
11 import { expect, test } from "bun:test";
22 import { runCodeWithAdapter } from "./runtime-core";
33 import { loadExternalTools } from "../tool-sources";
4−import type { Id } from "../../../convex/_generated/dataModel";
4+import type { Id } from "../../../convex/_generated/dataModel.d.ts";
55 import type {
66 ExecutionAdapter,
77 SandboxExecutionRequest,
executor/packages/core/src/tool-discovery.test.ts+1−1
@@ -1,5 +1,5 @@
11 import { expect, test } from "bun:test";
2−import type { Id } from "../../convex/_generated/dataModel";
2+import type { Id } from "../../convex/_generated/dataModel.d.ts";
33 import { createCatalogTools, createDiscoverTool } from "./tool-discovery";
44 import type { ToolDefinition } from "./types";
55
executor/packages/core/src/tool-source-loaders/graphql-loader.ts+5−5
@@ -8,14 +8,14 @@ import { · 7 unmodified lines
88 selectGraphqlFieldEnvelope,
99 type GqlSchema,
1010 type GqlType,
11−} from "../graphql-field-tools";
11+} from "../graphql/field-tools";
1212 import {
1313 executeGraphqlRequest,
1414 type GraphqlExecutionEnvelope,
15−} from "../tool-source-execution";
16−import { buildCredentialSpec, buildStaticAuthHeaders, getCredentialSourceKey } from "../tool-source-auth";
17−import { sanitizeSegment } from "../tool-path-utils";
18−import type { GraphqlToolSourceConfig } from "../tool-source-types";
15+} from "../tool/source-execution";
16+import { buildCredentialSpec, buildStaticAuthHeaders, getCredentialSourceKey } from "../tool/source-auth";
17+import { sanitizeSegment } from "../tool/path-utils";
18+import type { GraphqlToolSourceConfig } from "../tool/source-types";
1919 import { compactArgTypeHint } from "../type-hints";
2020 import type { ToolDefinition } from "../types";
2121 import { asRecord } from "../utils";
executor/packages/core/src/tool-source-loaders/mcp-loader.ts+6−6
@@ -1,15 +1,15 @@
11 "use node";
22
33 import { connectMcp, extractMcpResult } from "../mcp-runtime";
4−import { jsonSchemaTypeHintFallback } from "../openapi-schema-hints";
5−import { buildCredentialSpec, buildStaticAuthHeaders, getCredentialSourceKey } from "../tool-source-auth";
6−import { callMcpToolWithReconnect } from "../tool-source-execution";
7−import { sanitizeSegment } from "../tool-path-utils";
8−import type { McpToolSourceConfig } from "../tool-source-types";
4+import { jsonSchemaTypeHintFallback } from "../openapi/schema-hints";
5+import { buildCredentialSpec, buildStaticAuthHeaders, getCredentialSourceKey } from "../tool/source-auth";
6+import { callMcpToolWithReconnect } from "../tool/source-execution";
7+import { sanitizeSegment } from "../tool/path-utils";
8+import type { McpToolSourceConfig } from "../tool/source-types";
99 import { compactArgTypeHint, compactReturnTypeHint } from "../type-hints";
1010 import type { ToolDefinition } from "../types";
1111 import { asRecord } from "../utils";
12−import type { SerializedTool } from "../tool-source-serialization";
12+import type { SerializedTool } from "../tool/source-serialization";
1313
1414 export async function loadMcpTools(config: McpToolSourceConfig): Promise<ToolDefinition[]> {
1515 const queryParams = config.queryParams
executor/packages/core/src/tool-source-loaders/openapi-loader.ts+5−5
@@ -1,7 +1,7 @@
11 "use node";
22
3−import { buildOpenApiToolsFromPrepared } from "../openapi-tool-builder";
4−import { buildCredentialSpec, buildStaticAuthHeaders, getCredentialSourceKey } from "../tool-source-auth";
3+import { buildOpenApiToolsFromPrepared } from "../openapi/tool-builder";
4+import { buildCredentialSpec, buildStaticAuthHeaders, getCredentialSourceKey } from "../tool/source-auth";
55 import {
66 buildPostmanToolPath,
77 extractPostmanBody,
@@ -9,14 +9,14 @@ import { · 1 unmodified line
99 extractPostmanQueryEntries,
1010 extractPostmanVariableMap,
1111 resolvePostmanFolderPath,
12−} from "../postman-collection-utils";
12+} from "../postman/collection-utils";
1313 import { executePostmanRequest, type PostmanSerializedRunSpec } from "../postman-runtime";
1414 import { prepareOpenApiSpec } from "../openapi-prepare";
15−import type { OpenApiToolSourceConfig } from "../tool-source-types";
15+import type { OpenApiToolSourceConfig } from "../tool/source-types";
1616 import { compactArgTypeHint, compactReturnTypeHint } from "../type-hints";
1717 import type { ToolDefinition } from "../types";
1818 import { asRecord } from "../utils";
19−import type { SerializedTool } from "../tool-source-serialization";
19+import type { SerializedTool } from "../tool/source-serialization";
2020
2121 const POSTMAN_SPEC_PREFIX = "postman:";
2222 const DEFAULT_POSTMAN_PROXY_URL = "https://www.postman.com/_api/ws/proxy";
executor/packages/core/src/tool-sources.test.ts+1−1
@@ -1,5 +1,5 @@
11 import { expect, test } from "bun:test";
2−import type { Id } from "../../convex/_generated/dataModel";
2+import type { Id } from "../../convex/_generated/dataModel.d.ts";
33 import {
44 compileExternalToolSource,
55 loadExternalTools,
executor/packages/core/src/tool-sources.ts+7−7
@@ -3,13 +3,13 @@ · 2 unmodified lines
33 import { loadGraphqlTools } from "./tool-source-loaders/graphql-loader";
44 import { loadMcpTools } from "./tool-source-loaders/mcp-loader";
55 import { loadOpenApiTools } from "./tool-source-loaders/openapi-loader";
6−import { buildOpenApiToolsFromPrepared } from "./openapi-tool-builder";
7−import { rehydrateTools, serializeTools, type SerializedTool } from "./tool-source-serialization";
6+import { buildOpenApiToolsFromPrepared } from "./openapi/tool-builder";
7+import { rehydrateTools, serializeTools, type SerializedTool } from "./tool/source-serialization";
88 import type {
99 ExternalToolSourceConfig,
1010 OpenApiToolSourceConfig,
1111 PreparedOpenApiSpec,
12−} from "./tool-source-types";
12+} from "./tool/source-types";
1313 import type { ToolDefinition } from "./types";
1414
1515 export type {
@@ -19,11 +19,11 @@ export type { · 3 unmodified lines
1919 OpenApiAuth,
2020 OpenApiToolSourceConfig,
2121 PreparedOpenApiSpec,
22−} from "./tool-source-types";
22+} from "./tool/source-types";
2323 export { prepareOpenApiSpec } from "./openapi-prepare";
24−export { parseGraphqlOperationPaths } from "./graphql-operation-paths";
25−export { rehydrateTools, serializeTools, type SerializedTool } from "./tool-source-serialization";
26−export { buildOpenApiToolsFromPrepared } from "./openapi-tool-builder";
24+export { parseGraphqlOperationPaths } from "./graphql/operation-paths";
25+export { rehydrateTools, serializeTools, type SerializedTool } from "./tool/source-serialization";
26+export { buildOpenApiToolsFromPrepared } from "./openapi/tool-builder";
2727
2828 export interface CompiledToolSourceArtifact {
2929 version: "v1";
executor/packages/core/src/tool/path-utils.tsrenamed from executor/packages/core/src/tool-path-utils.ts+0−0

File renamed without changes.

executor/packages/core/src/tool/source-auth.tsrenamed from executor/packages/core/src/tool-source-auth.ts+2−2
@@ -1,5 +1,5 @@
1−import type { OpenApiAuth } from "./tool-source-types";
2−import type { ToolCredentialSpec } from "./types";
1+import type { OpenApiAuth } from "./source-types";
2+import type { ToolCredentialSpec } from "../types";
33
44 export function buildStaticAuthHeaders(auth?: OpenApiAuth): Record<string, string> {
55 if (!auth || auth.type === "none") return {};
executor/packages/core/src/tool/source-execution.tsrenamed from executor/packages/core/src/tool-source-execution.ts+1−1
@@ -1,4 +1,4 @@
1−import { asRecord } from "./utils";
1+import { asRecord } from "../utils";
22
33 export interface OpenApiRequestRunSpec {
44 baseUrl: string;
executor/packages/core/src/tool/source-serialization.tsrenamed from executor/packages/core/src/tool-source-serialization.ts+6−6
@@ -1,9 +1,9 @@
1−import { connectMcp, extractMcpResult } from "./mcp-runtime";
2−import { executePostmanRequest, type PostmanSerializedRunSpec } from "./postman-runtime";
3−import { normalizeGraphqlFieldVariables, selectGraphqlFieldEnvelope } from "./graphql-field-tools";
4−import { callMcpToolWithReconnect, executeGraphqlRequest, executeOpenApiRequest } from "./tool-source-execution";
5−import type { ToolApprovalMode, ToolCredentialSpec, ToolDefinition, ToolTypeMetadata } from "./types";
6−import { asRecord } from "./utils";
1+import { connectMcp, extractMcpResult } from "../mcp-runtime";
2+import { executePostmanRequest, type PostmanSerializedRunSpec } from "../postman-runtime";
3+import { normalizeGraphqlFieldVariables, selectGraphqlFieldEnvelope } from "../graphql/field-tools";
4+import { callMcpToolWithReconnect, executeGraphqlRequest, executeOpenApiRequest } from "./source-execution";
5+import type { ToolApprovalMode, ToolCredentialSpec, ToolDefinition, ToolTypeMetadata } from "../types";
6+import { asRecord } from "../utils";
77
88 export interface SerializedTool {
99 path: string;
executor/packages/core/src/tool/source-types.tsrenamed from executor/packages/core/src/tool-source-types.ts+1−1
@@ -1,4 +1,4 @@
1−import type { ToolApprovalMode } from "./types";
1+import type { ToolApprovalMode } from "../types";
22
33 export interface McpToolSourceConfig {
44 type: "mcp";
executor/packages/core/src/types.ts+1−1
@@ -1,6 +1,6 @@
11 // ── Shared types (inlined from @executor/contracts) ──────────────────────────
22
3−import type { Id } from "../../convex/_generated/dataModel";
3+import type { Id } from "../../convex/_generated/dataModel.d.ts";
44
55 export type TaskStatus = "queued" | "running" | "completed" | "failed" | "timed_out" | "denied";
66 export type ApprovalStatus = "pending" | "approved" | "denied";
executor/packages/core/src/workspace/tool-cache.test.tsrenamed from executor/packages/core/src/workspace-tool-cache.test.ts+7−7
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 * round-trip with functional `run` methods.
66 */
77 import { test, expect, describe } from "bun:test";
8−import type { Id } from "../../convex/_generated/dataModel";
8+import type { Id } from "../../../convex/_generated/dataModel";
99 import {
1010 prepareOpenApiSpec,
1111 buildOpenApiToolsFromPrepared,
@@ -15,8 +15,8 @@ import { · 3 unmodified lines
1515 type CompiledToolSourceArtifact,
1616 type SerializedTool,
1717 type WorkspaceToolSnapshot,
18−} from "./tool-sources";
19−import type { ToolDefinition } from "./types";
18+} from "../tool-sources";
19+import type { ToolDefinition } from "../types";
2020
2121 const TEST_WORKSPACE_ID = "w" as Id<"workspaces">;
2222
@@ -479,12 +479,12 @@ describe("serializeTools + rehydrateTools round-trip", () => { · 456 unmodified lines
479479 describe("workspace tool cache table", () => {
480480 async function setupCacheTest() {
481481 const { convexTest } = await import("convex-test");
482− const { internal } = await import("../../convex/_generated/api");
483− const schema = (await import("../../convex/schema")).default;
482+ const { internal } = await import("../../../convex/_generated/api");
483+ const schema = (await import("../../../convex/schema")).default;
484484
485485 const t = convexTest(schema, {
486− "./workspaceToolCache.ts": () => import("../../convex/workspaceToolCache"),
487− "./_generated/api.js": () => import("../../convex/_generated/api.js"),
486+ "./workspaceToolCache.ts": () => import("../../../convex/workspaceToolCache"),
487+ "./_generated/api.js": () => import("../../../convex/_generated/api.js"),
488488 });
489489
490490 const wsId = await t.run(async (ctx) => {
executor/packages/runner-sandbox-host/src/isolate/text-modules.d.tsrenamed from executor/packages/runner-sandbox-host/src/isolate-text-modules.d.ts+0−0

File renamed without changes.

executor/scripts/dev/vscode/elicitation-server.tsrenamed from executor/scripts/dev/vscode-elicitation-server.ts+0−0

File renamed without changes.

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

File renamed without changes.

executor/scripts/prod/deploy-prod.ts+2−2
@@ -174,13 +174,13 @@ function buildSteps(selected: StepId[]): DeployStep[] { · 173 unmodified lines
174174 cloudflare: {
175175 id: "cloudflare",
176176 name: "Cloudflare Runtime",
177− command: ["bun", "run", "scripts/prod/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/prod/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: {
executor/scripts/prod/setup/prod-cloudflare.tsrenamed from executor/scripts/prod/setup-prod-cloudflare.ts+2−2
@@ -1,7 +1,7 @@
11 import crypto from "node:crypto";
22 import fs from "node:fs/promises";
33 import path from "node:path";
4−import { parseConvexEnvList } from "./doctor-prod";
4+import { parseConvexEnvList } from "../doctor-prod";
55
66 interface Options {
77 runUrl?: string;
@@ -25,7 +25,7 @@ function printHelp(): void { · 17 unmodified lines
2525 console.log(`Setup Cloudflare runtime for production
2626
2727 Usage:
28− bun run scripts/prod/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/prod/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/prod/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
package.json+1−1
@@ -30,7 +30,7 @@ · 29 unmodified lines
3030 "typecheck:executor": "bunx tsc --noEmit -p executor/tsconfig.json",
3131 "typecheck:assistant": "bunx tsc --noEmit -p assistant/packages/server/tsconfig.json && bunx tsc --noEmit -p assistant/packages/bot/tsconfig.json",
3232 "knip": "bunx knip --config knip.json",
33− "db:clear:executor": "bun with-env bun run executor/scripts/dev/wipe-convex-db.ts",
33+ "db:clear:executor": "bun with-env bun run executor/scripts/dev/wipe/convex-db.ts",
3434 "convex:codegen": "bunx --cwd executor convex codegen"
3535 },
3636 "dependencies": {
sources/data/openapi/github-discovery.csvrenamed from sources/data/openapi-github-discovery.csv+0−0

File renamed without changes.

sources/data/openapi/github-discovery.jsonrenamed from sources/data/openapi-github-discovery.json+0−0

File renamed without changes.

sources/data/openapi/github/discovery-all.csvrenamed from sources/data/openapi-github-discovery-all.csv+0−0

File renamed without changes.

sources/data/openapi/github/discovery-all.jsonrenamed from sources/data/openapi-github-discovery-all.json+0−0

File renamed without changes.

sources/data/openapi/github/discovery-huge.csvrenamed from sources/data/openapi-github-discovery-huge.csv+0−0

File renamed without changes.

sources/data/openapi/github/discovery-huge.jsonrenamed from sources/data/openapi-github-discovery-huge.json+0−0

File renamed without changes.

sources/data/openapi/github/discovery/huge-enriched.csvrenamed from sources/data/openapi-github-discovery-huge-enriched.csv+0−0

File renamed without changes.

sources/data/openapi/github/discovery/huge-enriched.jsonrenamed from sources/data/openapi-github-discovery-huge-enriched.json+0−0

File renamed without changes.

sources/data/openapi/github/discovery/huge/enriched-min10.csvrenamed from sources/data/openapi-github-discovery-huge-enriched-min10.csv+0−0

File renamed without changes.

sources/data/openapi/github/discovery/huge/enriched-min10.jsonrenamed from sources/data/openapi-github-discovery-huge-enriched-min10.json+0−0

File renamed without changes.

sources/data/openapi/github/discovery/huge/enriched-min50.csvrenamed from sources/data/openapi-github-discovery-huge-enriched-min50.csv+0−0

File renamed without changes.

sources/data/openapi/github/discovery/huge/enriched-min50.jsonrenamed from sources/data/openapi-github-discovery-huge-enriched-min50.json+0−0

File renamed without changes.