Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions apps/cli/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
"jose": "^6.2.3"
},
"devDependencies": {
"@anthropic-ai/claude-agent-sdk": "^0.3.201",
"@anthropic-ai/claude-agent-sdk": "^0.3.206",
"@anthropic-ai/sdk": "^0.110.0",
"@clack/prompts": "^1.7.0",
"@effect/atom-react": "catalog:",
Expand Down Expand Up @@ -76,7 +76,7 @@
"oxlint-tsgolint": "catalog:",
"pg": "^8.22.0",
"pg-copy-streams": "^7.0.0",
"posthog-node": "^5.39.4",
"posthog-node": "^5.40.0",
"react": "^19.2.7",
"react-devtools-core": "^7.0.1",
"semantic-release": "^25.0.5",
Expand Down
17 changes: 8 additions & 9 deletions apps/cli/src/legacy/commands/bootstrap/bootstrap.retry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,16 +23,15 @@ const MAX_INTERVAL = Duration.seconds(60);
* - `MaxElapsedTime` 15m (intersected via `during`; in practice the 8-retry cap
* always trips first, but reproduced for completeness)
*/
export const legacyBootstrapBackoff: Schedule.Schedule<[Duration.Duration, Duration.Duration]> =
Schedule.exponential("3 seconds", 1.5).pipe(
Schedule.modifyDelay((_, delay) => Effect.succeed(Duration.min(delay, MAX_INTERVAL))),
Schedule.modifyDelay((_, delay) =>
Random.next.pipe(
Effect.map((random) => Duration.millis(Duration.toMillis(delay) * (0.5 + random))),
),
export const legacyBootstrapBackoff = Schedule.exponential("3 seconds", 1.5).pipe(
Schedule.modifyDelay(({ duration }) => Effect.succeed(Duration.min(duration, MAX_INTERVAL))),
Schedule.modifyDelay(({ duration }) =>
Random.next.pipe(
Effect.map((random) => Duration.millis(Duration.toMillis(duration) * (0.5 + random))),
),
Schedule.both(Schedule.during("15 minutes")),
);
),
Schedule.upTo({ duration: "15 minutes" }),
);

/**
* Reproduces Go's `utils.NewErrorCallback` (`internal/utils/retry.go:19-35`): after
Expand Down
2 changes: 1 addition & 1 deletion apps/cli/src/legacy/shared/legacy-storage-url.ts
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ function unescapePath(s: string): string {
pending = [];
}
};
for (let i = 0; i < s.length; ) {
for (let i = 0; i < s.length;) {
if (s.charCodeAt(i) === 0x25 /* % */) {
const h1 = i + 1 < s.length ? s.charCodeAt(i + 1) : -1;
const h2 = i + 2 < s.length ? s.charCodeAt(i + 2) : -1;
Expand Down
6 changes: 5 additions & 1 deletion apps/cli/src/next/docs/markdown-formatter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,11 @@ import { Option } from "effect";
import type { HelpDoc } from "effect/unstable/cli";

function escapeMdxText(value: string): string {
return value.replace(/</g, "&lt;").replace(/>/g, "&gt;");
return value
.replace(/</g, "&lt;")
.replace(/>/g, "&gt;")
.replace(/\{/g, "&#123;")
.replace(/\}/g, "&#125;");
}

function formatTable(headers: string[], rows: string[][]): string {
Expand Down
6 changes: 6 additions & 0 deletions apps/cli/src/next/docs/markdown-formatter.unit.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,12 @@ describe("formatHelpDocAsMarkdown", () => {
const usageIndex = result.indexOf("## Usage");
expect(descIndex).toBeLessThan(usageIndex);
});

it("escapes MDX expression braces in prose", () => {
const doc = makeDoc({ description: "Request /v1/projects/{ref}." });
const result = formatHelpDocAsMarkdown(doc);
expect(result).toContain("Request /v1/projects/&#123;ref&#125;.");
});
});

describe("flags section", () => {
Expand Down
1 change: 1 addition & 0 deletions apps/docs/next-env.d.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
/// <reference types="next" />
/// <reference types="next/image-types/global" />
import "./.next/types/routes.d.ts";
import "./.next/types/root-params.d.ts";

// NOTE: This file should not be edited
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
3 changes: 3 additions & 0 deletions apps/docs/next.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@ import { createMDX } from "fumadocs-mdx/next";
import type { NextConfig } from "next";

const config: NextConfig = {
experimental: {
useTypeScriptCli: true,
},
reactStrictMode: true,
};

Expand Down
10 changes: 5 additions & 5 deletions apps/docs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@
"build": "bun run generate && next build"
},
"dependencies": {
"fumadocs-core": "^16.10.7",
"fumadocs-mdx": "^15.0.13",
"fumadocs-ui": "^16.10.7",
"next": "^16.2.10",
"fumadocs-core": "^16.11.1",
"fumadocs-mdx": "^15.1.0",
"fumadocs-ui": "^16.11.1",
"next": "16.3.0-preview.6",
Comment thread
avallete marked this conversation as resolved.
"react": "^19.2.7",
"react-dom": "^19.2.7"
},
Expand All @@ -20,7 +20,7 @@
"@types/node": "^26.1.0",
"@types/react": "^19.2.17",
"@types/react-dom": "^19.1.6",
"typescript": "^6.0.3"
"typescript": "^7.0.2"
Comment thread
avallete marked this conversation as resolved.
},
"nx": {
"implicitDependencies": [
Expand Down
4 changes: 3 additions & 1 deletion docs/nx-inference-plugins.md
Original file line number Diff line number Diff line change
Expand Up @@ -164,4 +164,6 @@ export const createNodesV2: CreateNodesV2 = [

## How TypeScript plugins are loaded

Nx 22 loads `.ts` plugin files by registering `@swc-node/register` as a CommonJS transpiler before calling `require()` on the plugin path. This workspace has `@swc-node/register` and `@swc/core` installed at the root, along with a minimal `tsconfig.json` at the workspace root — both are required for Nx to find and activate the transpiler. Without either, Nx falls back to Node.js's native TypeScript type-stripping, which returns a non-extensible ES module namespace that Nx cannot annotate.
Nx loads `.ts` plugin files by registering `@swc-node/register` as a CommonJS transpiler before calling `require()` on the plugin path. This workspace has `@swc-node/register` and `@swc/core` installed at the root, along with a minimal `tsconfig.json` at the workspace root — both are required for Nx to find and activate the transpiler. Without either, Nx falls back to Node.js's native TypeScript type-stripping, which returns a non-extensible ES module namespace that Nx cannot annotate.

TypeScript 7 does not yet expose the programmatic compiler API that the Nx transpiler uses. Following the [Nx TypeScript 7 guide](https://nx.dev/docs/technologies/typescript/guides/typescript-7), the root package aliases `typescript` to `@typescript/typescript6` for API consumers and installs TypeScript 7 as `@typescript/native`, which provides the `tsc` executable.
2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,10 @@
"devDependencies": {
"@swc-node/register": "catalog:",
"@swc/core": "catalog:",
"@typescript/native": "npm:typescript@^7.0.2",
"nx": "catalog:",
"pkg-pr-new": "0.0.75",
"typescript": "npm:@typescript/typescript6@^6.0.2",
"verdaccio": "^6.7.4"
}
}
2 changes: 1 addition & 1 deletion packages/api/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
"@effect/platform-bun": "catalog:",
"@effect/platform-node": "catalog:",
"effect": "catalog:",
"undici": "^8.6.0"
"undici": "^8.7.0"
},
"devDependencies": {
"@tsconfig/bun": "catalog:",
Expand Down
2 changes: 1 addition & 1 deletion packages/stack/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
},
"devDependencies": {
"@effect/vitest": "catalog:",
"@supabase/supabase-js": "^2.110.0",
"@supabase/supabase-js": "^2.110.2",
"@tsconfig/bun": "catalog:",
"@types/bun": "catalog:",
"@typescript/native-preview": "catalog:",
Expand Down
2 changes: 1 addition & 1 deletion packages/stack/src/ApiProxy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ function addCorsHeaders(
// does so. Its `/_internal/health` probe answers immediately, so "Healthy"
// status does not mean a function is servable yet. Briefly retry transport
// failures on that route so a user's first call doesn't surface as a 502.
const COLD_START_RETRY_SCHEDULE = Schedule.spaced("250 millis").pipe(Schedule.take(8));
const COLD_START_RETRY_SCHEDULE = Schedule.spaced("250 millis").pipe(Schedule.upTo({ times: 8 }));

interface ProxyHandlerOptions {
readonly backendPort: number;
Expand Down
Loading
Loading