Skip to content

Commit e8c0fbe

Browse files
authored
Merge branch 'main' into consolidate-env-config-reference
2 parents ca40216 + 97197e4 commit e8c0fbe

10 files changed

Lines changed: 159 additions & 135 deletions

File tree

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ test-results
1414
temp/
1515
.claude/*
1616

17+
# Personal, per-developer pre-commit hook (opt-in, see .husky/pre-commit)
18+
.husky/pre-commit.local
19+
1720
# Misc
1821
.DS_Store
1922
.idea

.husky/pre-commit

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,9 @@
1-
# yarn run lint && yarn run fix-vale
1+
# yarn run lint && yarn run fix-vale
2+
3+
# Optional per-developer hook. Runs .husky/pre-commit.local if it exists.
4+
# The local file is untracked (see .git/info/exclude), so this is a no-op
5+
# for anyone who hasn't created one. Uses `if` (not `&&`) so an absent file
6+
# still exits 0 and never blocks commits.
7+
if [ -f .husky/pre-commit.local ]; then
8+
. ./.husky/pre-commit.local
9+
fi

docs/cloud/nexus/limits.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ Nexus limits are documented in [Temporal Cloud limits](/cloud/limits):
2323

2424
- [Nexus rate limits](/cloud/limits#nexus-rate-limits) - Nexus requests count toward the Namespace RPS limit.
2525
- [Nexus Endpoint limits](/cloud/limits#nexus-endpoints-limits) - 100 Endpoints per Account (default).
26-
- [Nexus caller Namespace limits](/cloud/limits#nexus-endpoint-access-policy-limits) - 1,000 caller Namespaces per Endpoint.
26+
- [Nexus caller Namespace limits](/cloud/limits#nexus-endpoint-access-policy-limits) - 1,000 caller Namespaces per Endpoint (default).
2727
- [Per-Workflow Nexus Operation limits](/cloud/limits#per-workflow-nexus-operation-limits) - 30 in-flight Operations per Workflow.
2828
- [Nexus Operation request timeout](/cloud/limits#nexus-operation-request-timeout) - Less than 10 seconds for a handler to process a start or cancel request.
2929
- [Nexus Operation duration limits](/cloud/limits#nexus-operation-duration-limits) - 60-day maximum ScheduleToClose duration.

docs/design-patterns/index.mdx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ title: "Temporal Design Patterns"
44
sidebar_label: "Overview"
55
description: "A catalog of common, reusable, and proven design patterns for Temporal Workflows, organized by problem domain."
66
slug: /design-patterns
7-
displayed_sidebar: designPatterns
87
---
98

109
import PatternCards from '@site/src/components/PatternCards';

docs/evaluate/temporal-cloud/limits.mdx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,8 @@ You can request further increases beyond the initial 100 Endpoint limit by [open
216216

217217
### Nexus caller Namespace limits {/* #nexus-endpoint-access-policy-limits */}
218218

219-
A single Nexus Endpoint can have a maximum of 1,000 caller Namespaces in its [Access Policy](/nexus/security#runtime-access-controls), the allowlist of Namespaces permitted to use the Endpoint.
219+
By default, a single Nexus Endpoint can have a maximum of 1,000 caller Namespaces in its [Access Policy](/nexus/security#runtime-access-controls), the allowlist of Namespaces permitted to use the Endpoint.
220+
You can request further increases beyond the initial 1,000 caller Namespace limit by [opening a support ticket](/cloud/support#support-ticket).
220221

221222
## Programming model level
222223

plugins/cookbook-index/index.js

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,7 @@ const matter = require('gray-matter');
44
const { renderCard } = require('../og-image/render');
55
const { DEFAULT_FOOTER_TEXT } = require('../og-image/constants');
66
const { AI_COOKBOOK_OG_IMAGE_PATH } = require('../../src/constants/aiCookbookOgImage');
7-
8-
// Mirrors the hero blurb in src/components/Cookbook/Home/CookbookHome.tsx —
9-
// duplicated (not imported) because that file is a .tsx React component and
10-
// this is a plain build-time script. Keep these in sync if the copy changes.
11-
const HERO_BLURB =
12-
'Step-by-step solutions that show you how to build reliable, production-ready AI systems with Temporal. Learn practical paradigms for prompts, tools, retries, and Workflow design.';
7+
const { AI_COOKBOOK_BLURB } = require('../../src/constants/aiCookbookBlurb');
138

149
const HOME_TITLE = 'AI Cookbook';
1510
// Deliberately the site default (not the 'AI COOKBOOK' footer the individual
@@ -126,7 +121,7 @@ console.log('[cookbook-index] init with docsDir:', options.docsDir);
126121
const lines = [
127122
'# AI Cookbook',
128123
'',
129-
`> ${HERO_BLURB}`,
124+
`> ${AI_COOKBOOK_BLURB}`,
130125
'',
131126
...sorted.map((item) => `- [${item.title}](${item.permalink}): ${item.description}`),
132127
'',
@@ -137,7 +132,11 @@ console.log('[cookbook-index] init with docsDir:', options.docsDir);
137132

138133
// Same reasoning as the .md file above: this page is invisible to
139134
// plugins/og-image's docsDir walk, so nothing else renders it a card.
140-
const cardBuffer = await renderCard({ title: HOME_TITLE, description: HERO_BLURB, footerText: HOME_FOOTER_TEXT });
135+
const cardBuffer = await renderCard({
136+
title: HOME_TITLE,
137+
description: AI_COOKBOOK_BLURB,
138+
footerText: HOME_FOOTER_TEXT,
139+
});
141140
const cardOutPath = path.join(outDir, AI_COOKBOOK_OG_IMAGE_PATH);
142141
fs.mkdirSync(path.dirname(cardOutPath), { recursive: true });
143142
fs.writeFileSync(cardOutPath, cardBuffer);

sidebars.js

Lines changed: 123 additions & 118 deletions
Original file line numberDiff line numberDiff line change
@@ -1484,6 +1484,129 @@ module.exports = {
14841484
},
14851485
],
14861486
},
1487+
{
1488+
type: 'category',
1489+
label: 'Design Patterns',
1490+
collapsed: true,
1491+
link: { type: 'doc', id: 'design-patterns/index' },
1492+
items: [
1493+
{
1494+
type: 'category',
1495+
label: "Task Orchestration",
1496+
collapsed: true,
1497+
link: { type: 'doc', id: 'design-patterns/task-orchestration-patterns' },
1498+
items: [
1499+
'design-patterns/child-workflows',
1500+
'design-patterns/parallel-execution',
1501+
'design-patterns/pick-first',
1502+
],
1503+
},
1504+
{
1505+
type: 'category',
1506+
label: "Workflow Messaging",
1507+
collapsed: true,
1508+
link: { type: 'doc', id: 'design-patterns/workflow-messaging-patterns' },
1509+
items: [
1510+
'design-patterns/signal-with-start',
1511+
'design-patterns/request-response-via-updates',
1512+
'design-patterns/event-accumulator',
1513+
],
1514+
},
1515+
{
1516+
type: 'category',
1517+
label: "Entity & Lifecycle",
1518+
collapsed: true,
1519+
link: { type: 'doc', id: 'design-patterns/entity-lifecycle-patterns' },
1520+
items: [
1521+
'design-patterns/entity-workflow',
1522+
'design-patterns/continue-as-new',
1523+
'design-patterns/updatable-timer',
1524+
],
1525+
},
1526+
{
1527+
type: 'category',
1528+
label: "External Interaction",
1529+
collapsed: true,
1530+
link: { type: 'doc', id: 'design-patterns/external-interaction-patterns' },
1531+
items: [
1532+
'design-patterns/polling',
1533+
'design-patterns/long-running-activity',
1534+
'design-patterns/delayed-start',
1535+
'design-patterns/delayed-callback',
1536+
'design-patterns/approval',
1537+
],
1538+
},
1539+
{
1540+
type: 'category',
1541+
label: "Distributed Transaction",
1542+
collapsed: true,
1543+
link: { type: 'doc', id: 'design-patterns/distributed-transaction-patterns' },
1544+
items: [
1545+
'design-patterns/saga-pattern',
1546+
'design-patterns/early-return',
1547+
],
1548+
},
1549+
{
1550+
type: 'category',
1551+
label: "Error Handling & Retry",
1552+
collapsed: true,
1553+
link: { type: 'doc', id: 'design-patterns/error-handling-patterns' },
1554+
items: [
1555+
'design-patterns/fixed-count-retries',
1556+
'design-patterns/fixed-wall-time-retries',
1557+
'design-patterns/non-retryable-errors',
1558+
'design-patterns/delayed-retry',
1559+
'design-patterns/fast-slow-retries',
1560+
'design-patterns/retry-metrics',
1561+
'design-patterns/resumable-activity',
1562+
],
1563+
},
1564+
{
1565+
type: 'category',
1566+
label: "Batch Processing",
1567+
collapsed: true,
1568+
link: { type: 'doc', id: 'design-patterns/batch-processing-patterns' },
1569+
items: [
1570+
'design-patterns/fanout-child-workflows',
1571+
'design-patterns/batch-iterator',
1572+
'design-patterns/sliding-window',
1573+
'design-patterns/mapreduce-tree',
1574+
],
1575+
},
1576+
{
1577+
type: 'category',
1578+
label: "QoS & Throughput",
1579+
collapsed: true,
1580+
link: { type: 'doc', id: 'design-patterns/qos-throughput-patterns' },
1581+
items: [
1582+
'design-patterns/downstream-rate-limiting',
1583+
'design-patterns/priority-task-queues',
1584+
'design-patterns/fairness',
1585+
],
1586+
},
1587+
{
1588+
type: 'category',
1589+
label: "Performance & Latency",
1590+
collapsed: true,
1591+
link: { type: 'doc', id: 'design-patterns/performance-latency-patterns' },
1592+
items: [
1593+
'design-patterns/local-activities',
1594+
'design-patterns/early-return-local-activities',
1595+
'design-patterns/eager-workflow-start',
1596+
],
1597+
},
1598+
{
1599+
type: 'category',
1600+
label: "Worker Configuration",
1601+
collapsed: true,
1602+
link: { type: 'doc', id: 'design-patterns/worker-configuration-patterns' },
1603+
items: [
1604+
'design-patterns/worker-specific-taskqueue',
1605+
'design-patterns/activity-dependency-injection',
1606+
],
1607+
},
1608+
],
1609+
},
14871610
{
14881611
type: 'category',
14891612
label: 'References',
@@ -1826,124 +1949,6 @@ module.exports = {
18261949
// dirName: "./dev-guide", // '.' means the current docs folder
18271950
// },
18281951
],
1829-
designPatterns: [
1830-
'design-patterns/index',
1831-
{
1832-
type: 'category',
1833-
label: "Task Orchestration Patterns",
1834-
collapsed: true,
1835-
link: { type: 'doc', id: 'design-patterns/task-orchestration-patterns' },
1836-
items: [
1837-
'design-patterns/child-workflows',
1838-
'design-patterns/parallel-execution',
1839-
'design-patterns/pick-first',
1840-
],
1841-
},
1842-
{
1843-
type: 'category',
1844-
label: "Workflow Messaging Patterns",
1845-
collapsed: true,
1846-
link: { type: 'doc', id: 'design-patterns/workflow-messaging-patterns' },
1847-
items: [
1848-
'design-patterns/signal-with-start',
1849-
'design-patterns/request-response-via-updates',
1850-
'design-patterns/event-accumulator',
1851-
],
1852-
},
1853-
{
1854-
type: 'category',
1855-
label: "Entity & Lifecycle Patterns",
1856-
collapsed: true,
1857-
link: { type: 'doc', id: 'design-patterns/entity-lifecycle-patterns' },
1858-
items: [
1859-
'design-patterns/entity-workflow',
1860-
'design-patterns/continue-as-new',
1861-
'design-patterns/updatable-timer',
1862-
],
1863-
},
1864-
{
1865-
type: 'category',
1866-
label: "External Interaction Patterns",
1867-
collapsed: true,
1868-
link: { type: 'doc', id: 'design-patterns/external-interaction-patterns' },
1869-
items: [
1870-
'design-patterns/polling',
1871-
'design-patterns/long-running-activity',
1872-
'design-patterns/delayed-start',
1873-
'design-patterns/delayed-callback',
1874-
'design-patterns/approval',
1875-
],
1876-
},
1877-
{
1878-
type: 'category',
1879-
label: "Distributed Transaction Patterns",
1880-
collapsed: true,
1881-
link: { type: 'doc', id: 'design-patterns/distributed-transaction-patterns' },
1882-
items: [
1883-
'design-patterns/saga-pattern',
1884-
'design-patterns/early-return',
1885-
],
1886-
},
1887-
{
1888-
type: 'category',
1889-
label: "Error Handling & Retry Patterns",
1890-
collapsed: true,
1891-
link: { type: 'doc', id: 'design-patterns/error-handling-patterns' },
1892-
items: [
1893-
'design-patterns/fixed-count-retries',
1894-
'design-patterns/fixed-wall-time-retries',
1895-
'design-patterns/non-retryable-errors',
1896-
'design-patterns/delayed-retry',
1897-
'design-patterns/fast-slow-retries',
1898-
'design-patterns/retry-metrics',
1899-
'design-patterns/resumable-activity',
1900-
],
1901-
},
1902-
{
1903-
type: 'category',
1904-
label: "Batch Processing Patterns",
1905-
collapsed: true,
1906-
link: { type: 'doc', id: 'design-patterns/batch-processing-patterns' },
1907-
items: [
1908-
'design-patterns/fanout-child-workflows',
1909-
'design-patterns/batch-iterator',
1910-
'design-patterns/sliding-window',
1911-
'design-patterns/mapreduce-tree',
1912-
],
1913-
},
1914-
{
1915-
type: 'category',
1916-
label: "QoS & Throughput Patterns",
1917-
collapsed: true,
1918-
link: { type: 'doc', id: 'design-patterns/qos-throughput-patterns' },
1919-
items: [
1920-
'design-patterns/downstream-rate-limiting',
1921-
'design-patterns/priority-task-queues',
1922-
'design-patterns/fairness',
1923-
],
1924-
},
1925-
{
1926-
type: 'category',
1927-
label: "Performance & Latency Patterns",
1928-
collapsed: true,
1929-
link: { type: 'doc', id: 'design-patterns/performance-latency-patterns' },
1930-
items: [
1931-
'design-patterns/local-activities',
1932-
'design-patterns/early-return-local-activities',
1933-
'design-patterns/eager-workflow-start',
1934-
],
1935-
},
1936-
{
1937-
type: 'category',
1938-
label: "Worker Configuration Patterns",
1939-
collapsed: true,
1940-
link: { type: 'doc', id: 'design-patterns/worker-configuration-patterns' },
1941-
items: [
1942-
'design-patterns/worker-specific-taskqueue',
1943-
'design-patterns/activity-dependency-injection',
1944-
],
1945-
},
1946-
],
19471952
tctl: [
19481953
'tctl-v1/index',
19491954
'tctl-v1/activity',

src/components/Cookbook/Home/CookbookHome.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import styles from './CookbookHome.module.css';
44
import useGlobalData, { usePluginData } from '@docusaurus/useGlobalData';
55
import clsx from 'clsx';
66
import Tile from '../../elements/Tile/Tile';
7+
import { AI_COOKBOOK_BLURB } from '@site/src/constants/aiCookbookBlurb';
78

89
type CookbookItem = {
910
id: string;
@@ -186,10 +187,7 @@ export default function CookbookHome() {
186187
<div className={styles.inner}>
187188
<header data-testid="cookbook-hero" className={styles.hero} aria-label="Cookbook overview">
188189
<h1 className={styles.heroTitle}>AI Cookbook</h1>
189-
<p className={styles.heroBlurb}>
190-
Step-by-step solutions that show you how to build reliable, production-ready AI systems with Temporal. Learn
191-
practical paradigms for prompts, tools, retries, and Workflow design.
192-
</p>
190+
<p className={styles.heroBlurb}>{AI_COOKBOOK_BLURB}</p>
193191
</header>
194192
<div className={styles.grid}>
195193
{sortedItems.map((it) => (

src/constants/aiCookbookBlurb.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
// Single source of the /ai-cookbook landing page blurb. Shared by
2+
// src/components/Cookbook/Home/CookbookHome.tsx (visible hero paragraph),
3+
// src/pages/ai-cookbook.tsx (meta description and og:description), and
4+
// plugins/cookbook-index/index.js (the generated ai-cookbook.md blockquote and
5+
// the og:image card). Plain CommonJS because the plugin is a build-time script
6+
// that can't import a .tsx module — same convention as aiCookbookOgImage.js.
7+
module.exports = {
8+
AI_COOKBOOK_BLURB:
9+
'Step-by-step recipes for building reliable AI systems with Temporal, covering LLM integrations, agentic loops, tool calling, and production patterns.',
10+
};

src/pages/ai-cookbook.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@ import Layout from '@theme/Layout';
44
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
55
import { CookbookHome } from '@site/src/components';
66
import { AI_COOKBOOK_OG_IMAGE_PATH } from '@site/src/constants/aiCookbookOgImage';
7+
import { AI_COOKBOOK_BLURB } from '@site/src/constants/aiCookbookBlurb';
78

89
export default function CookbookLanding() {
910
const { siteConfig } = useDocusaurusContext();
1011
const ogImageUrl = `${siteConfig.url}${AI_COOKBOOK_OG_IMAGE_PATH}`;
1112

1213
return (
13-
<Layout title="AI Cookbook" description="AI Cookbook">
14+
<Layout title="AI Cookbook" description={AI_COOKBOOK_BLURB}>
1415
{/* Markdown + og:image both generated by plugins/cookbook-index's
1516
postBuild hook — see MARKDOWN_PIPELINE.md. This page is a plain
1617
React page, not an MDX doc, so it's outside the automatic per-doc

0 commit comments

Comments
 (0)