diff --git a/.github/workflows/db-migration-backwards-compatibility.yaml b/.github/workflows/db-migration-backwards-compatibility.yaml index 122e5d6638..829abf7ae3 100644 --- a/.github/workflows/db-migration-backwards-compatibility.yaml +++ b/.github/workflows/db-migration-backwards-compatibility.yaml @@ -138,6 +138,9 @@ jobs: - name: Create .env.test.local file for examples/convex run: cp examples/convex/.env.development examples/convex/.env.test.local + - name: Create .env.test.local file for apps/internal-tool + run: cp apps/internal-tool/.env.development apps/internal-tool/.env.test.local + - name: Build run: pnpm build @@ -332,6 +335,9 @@ jobs: - name: Create .env.test.local file for examples/convex run: cp examples/convex/.env.development examples/convex/.env.test.local + - name: Create .env.test.local file for apps/internal-tool + run: cp apps/internal-tool/.env.development apps/internal-tool/.env.test.local + - name: Build run: pnpm build diff --git a/.github/workflows/e2e-api-tests-local-emulator.yaml b/.github/workflows/e2e-api-tests-local-emulator.yaml index 0b1ab5e433..3ebed27862 100644 --- a/.github/workflows/e2e-api-tests-local-emulator.yaml +++ b/.github/workflows/e2e-api-tests-local-emulator.yaml @@ -86,6 +86,9 @@ jobs: - name: Create .env.test.local file for examples/convex run: cp examples/convex/.env.development examples/convex/.env.test.local + - name: Create .env.test.local file for apps/internal-tool + run: cp apps/internal-tool/.env.development apps/internal-tool/.env.test.local + - name: Build run: pnpm build diff --git a/.github/workflows/e2e-api-tests.yaml b/.github/workflows/e2e-api-tests.yaml index d949d129ac..d3d58d132c 100644 --- a/.github/workflows/e2e-api-tests.yaml +++ b/.github/workflows/e2e-api-tests.yaml @@ -92,6 +92,9 @@ jobs: - name: Create .env.test.local file for examples/convex run: cp examples/convex/.env.development examples/convex/.env.test.local + - name: Create .env.test.local file for apps/internal-tool + run: cp apps/internal-tool/.env.development apps/internal-tool/.env.test.local + - name: Build run: pnpm build diff --git a/.github/workflows/e2e-custom-base-port-api-tests.yaml b/.github/workflows/e2e-custom-base-port-api-tests.yaml index dc0a7f4c85..95b7f680d3 100644 --- a/.github/workflows/e2e-custom-base-port-api-tests.yaml +++ b/.github/workflows/e2e-custom-base-port-api-tests.yaml @@ -85,6 +85,9 @@ jobs: - name: Create .env.test.local file for examples/convex run: cp examples/convex/.env.development examples/convex/.env.test.local + - name: Create .env.test.local file for apps/internal-tool + run: cp apps/internal-tool/.env.development apps/internal-tool/.env.test.local + - name: Build run: pnpm build diff --git a/.github/workflows/e2e-fallback-tests.yaml b/.github/workflows/e2e-fallback-tests.yaml index d5b0a5fdca..93d51e5f43 100644 --- a/.github/workflows/e2e-fallback-tests.yaml +++ b/.github/workflows/e2e-fallback-tests.yaml @@ -68,6 +68,7 @@ jobs: cp examples/middleware/.env.development examples/middleware/.env.test.local cp examples/supabase/.env.development examples/supabase/.env.test.local cp examples/convex/.env.development examples/convex/.env.test.local + cp apps/internal-tool/.env.development apps/internal-tool/.env.test.local - name: Build run: pnpm build diff --git a/.github/workflows/lint-and-build.yaml b/.github/workflows/lint-and-build.yaml index 7b70deff4b..fe32a5e2f3 100644 --- a/.github/workflows/lint-and-build.yaml +++ b/.github/workflows/lint-and-build.yaml @@ -66,6 +66,9 @@ jobs: - name: Create .env.production.local file for examples/convex run: cp examples/convex/.env.development examples/convex/.env.production.local + - name: Create .env.production.local file for apps/internal-tool + run: cp apps/internal-tool/.env.development apps/internal-tool/.env.production.local + - name: Build run: pnpm build diff --git a/README.md b/README.md index 33388ae06b..705993615a 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ [](https://stack-auth.com) +[](https://deepwiki.com/stack-auth/stack-auth) +
+ Sign in to the{" "} + + Stack Dashboard + + {" "}first, then reload this page. +
+ ++ You are signed in as {user.displayName ?? user.primaryEmail}, but your account is not approved. +
+Loading...
+Loading...
+Failed to connect to database.
++ Curated questions and answers about Stack Auth, reviewed by humans. +
+ + {publishedQa.length === 0 ? ( +No published Q&A yet.
+ ) : ( +No QA reviews yet
+ ) : ( +No flags raised
+ ) : ( +No calls yet
+ ) : ( +{label}
+{value}
+ {subtitle && ( +{subtitle}
+ )} +{row.userPrompt}
+{row.reason}
+ + {/* Question */} +{row.question}
+Args:
+{JSON.stringify(call.args, null, 2)}
+ Result:
+{JSON.stringify(call.result, null, 2)}
+ Error: {row.qaErrorMessage}
+{flag.explanation}
+{row.qaImprovementSuggestions}
+by {row.qaReviewModelId}
+ )} ++ Step {step.step} — Verification +
+{step.text}
+Args
+{JSON.stringify(pair.args, null, 2)}
+ {resultStr}
+ )}
+ + Step {step.step} — Conclusion +
++ {expanded ? text : truncated} +
+ {text.length > 150 && ( + + )} +NEXT_PUBLIC_SPACETIMEDB_HOST and{" "}
+ NEXT_PUBLIC_SPACETIMEDB_DB_NAME are set correctly.
+ No calls match the current filters
+ ) : ( + <> +No MCP calls logged yet
+
+ Make sure STACK_MCP_LOG_TOKEN is set
+ in the backend and the SpacetimeDB module is published.
+
| Reason | +Question | +||||||
|---|---|---|---|---|---|---|---|
| + {formatDistanceToNow(toDate(row.createdAt), { addSuffix: true })} + | ++ + {row.toolName} + + | ++ {truncate(row.reason, 60)} + | ++ {truncate(row.question, 80)} + | +{row.stepCount} | ++ {Number(row.durationMs).toLocaleString()}ms + | ++ + {row.qaErrorMessage ? ( + + err + + ) : row.qaOverallScore != null ? ( + = 80 && "bg-green-100 text-green-800", + row.qaOverallScore >= 50 && row.qaOverallScore < 80 && "bg-yellow-100 text-yellow-800", + row.qaOverallScore < 50 && "bg-red-100 text-red-800" + )}> + {row.qaOverallScore} + {row.qaNeedsHumanReview && !row.humanReviewedAt && " !"} + + ) : ( + -- + )} + {row.humanReviewedAt && ( + ✓ + )} + + | ++ {row.errorMessage ? ( + + error + + ) : ( + + ok + + )} + | +
+ {JSON.stringify(call.args, null, 2)}
+
+
+ {typeof call.result === "string" ? call.result.slice(0, 500) : JSON.stringify(call.result, null, 2).slice(0, 500)}
+
+ {text}
+{content.slice(0, 300)}{content.length > 300 ? "..." : ""}
+{r.userPrompt}
+{currentRow.userPrompt}
+No Q&A entries yet
+Add one with the "+ Add Q&A" button above
+{question}
+{answer}
+
+
+ {text}
+
+ {showCopy && }
+
+ );
+});
+
+const CodeBlock = memo(function CodeBlock({ children, className }: { children?: React.ReactNode; className?: string }) {
+ const text = String(children || "").replace(/\n$/, "");
+ const language = className?.replace("language-", "").toUpperCase() ?? "";
+
+ return (
+
+ {children}
+
+ {children}
+ ), + ul: ({ children }: { children?: React.ReactNode }) => ( +{children}+ ), + hr: () =>