From e17c61c62da39bce1e87f6d7175f12f7b42f69e0 Mon Sep 17 00:00:00 2001 From: Brian Love Date: Sat, 16 May 2026 12:14:17 -0700 Subject: [PATCH] docs: audit api coverage and responsive layout --- .../content/docs/a2ui/api/api-docs.json | 1073 +++++++++++++++++ .../core-capabilities/debug/python/build.mdx | 3 - .../core-capabilities/debug/python/code.mdx | 3 - .../debug/python/overview.mdx | 5 - .../debug/python/prompts.mdx | 3 - .../debug/python/testing.mdx | 3 - .../generative-ui/python/build.mdx | 3 - .../generative-ui/python/code.mdx | 3 - .../generative-ui/python/overview.mdx | 5 - .../generative-ui/python/prompts.mdx | 3 - .../generative-ui/python/testing.mdx | 3 - .../core-capabilities/input/python/build.mdx | 3 - .../core-capabilities/input/python/code.mdx | 3 - .../input/python/overview.mdx | 5 - .../input/python/prompts.mdx | 3 - .../input/python/testing.mdx | 3 - .../interrupts/python/build.mdx | 3 - .../interrupts/python/code.mdx | 3 - .../interrupts/python/overview.mdx | 5 - .../interrupts/python/prompts.mdx | 3 - .../interrupts/python/testing.mdx | 3 - .../messages/python/build.mdx | 3 - .../messages/python/code.mdx | 3 - .../messages/python/overview.mdx | 5 - .../messages/python/prompts.mdx | 3 - .../messages/python/testing.mdx | 3 - .../subagents/python/build.mdx | 3 - .../subagents/python/code.mdx | 3 - .../subagents/python/overview.mdx | 5 - .../subagents/python/prompts.mdx | 3 - .../subagents/python/testing.mdx | 3 - .../theming/python/build.mdx | 3 - .../core-capabilities/theming/python/code.mdx | 3 - .../theming/python/overview.mdx | 5 - .../theming/python/prompts.mdx | 3 - .../theming/python/testing.mdx | 3 - .../threads/python/build.mdx | 3 - .../core-capabilities/threads/python/code.mdx | 3 - .../threads/python/overview.mdx | 5 - .../threads/python/prompts.mdx | 3 - .../threads/python/testing.mdx | 3 - .../timeline/python/build.mdx | 3 - .../timeline/python/code.mdx | 3 - .../timeline/python/overview.mdx | 5 - .../timeline/python/prompts.mdx | 3 - .../timeline/python/testing.mdx | 3 - .../tool-calls/python/build.mdx | 3 - .../tool-calls/python/code.mdx | 3 - .../tool-calls/python/overview.mdx | 5 - .../tool-calls/python/prompts.mdx | 3 - .../tool-calls/python/testing.mdx | 3 - .../overview/python/overview.mdx | 5 - .../filesystem/python/build.mdx | 3 - .../filesystem/python/code.mdx | 3 - .../filesystem/python/overview.mdx | 5 - .../filesystem/python/prompts.mdx | 3 - .../filesystem/python/testing.mdx | 3 - .../core-capabilities/memory/python/build.mdx | 3 - .../core-capabilities/memory/python/code.mdx | 3 - .../memory/python/overview.mdx | 5 - .../memory/python/prompts.mdx | 3 - .../memory/python/testing.mdx | 3 - .../planning/python/build.mdx | 5 - .../planning/python/code.mdx | 5 - .../planning/python/overview.mdx | 5 - .../planning/python/prompts.mdx | 5 - .../planning/python/testing.mdx | 5 - .../sandboxes/python/build.mdx | 3 - .../sandboxes/python/code.mdx | 3 - .../sandboxes/python/overview.mdx | 5 - .../sandboxes/python/prompts.mdx | 3 - .../sandboxes/python/testing.mdx | 3 - .../core-capabilities/skills/python/build.mdx | 3 - .../core-capabilities/skills/python/code.mdx | 3 - .../skills/python/overview.mdx | 5 - .../skills/python/prompts.mdx | 3 - .../skills/python/testing.mdx | 3 - .../subagents/python/build.mdx | 3 - .../subagents/python/code.mdx | 3 - .../subagents/python/overview.mdx | 5 - .../subagents/python/prompts.mdx | 3 - .../subagents/python/testing.mdx | 3 - .../overview/python/overview.mdx | 5 - apps/website/content/docs/getting-started.mdx | 50 - apps/website/content/docs/introduction.mdx | 49 - .../deployment-runtime/python/build.mdx | 3 - .../deployment-runtime/python/code.mdx | 3 - .../deployment-runtime/python/overview.mdx | 3 - .../deployment-runtime/python/prompts.mdx | 3 - .../deployment-runtime/python/testing.mdx | 3 - .../durable-execution/python/build.mdx | 3 - .../durable-execution/python/code.mdx | 3 - .../durable-execution/python/overview.mdx | 3 - .../durable-execution/python/prompts.mdx | 3 - .../durable-execution/python/testing.mdx | 3 - .../interrupts/python/build.mdx | 3 - .../interrupts/python/code.mdx | 3 - .../interrupts/python/overview.mdx | 3 - .../interrupts/python/prompts.mdx | 3 - .../interrupts/python/testing.mdx | 3 - .../core-capabilities/memory/python/build.mdx | 3 - .../core-capabilities/memory/python/code.mdx | 3 - .../memory/python/overview.mdx | 3 - .../memory/python/prompts.mdx | 3 - .../memory/python/testing.mdx | 3 - .../persistence/python/build.mdx | 3 - .../persistence/python/code.mdx | 3 - .../persistence/python/overview.mdx | 3 - .../persistence/python/prompts.mdx | 3 - .../persistence/python/testing.mdx | 3 - .../streaming/python/build.mdx | 5 - .../streaming/python/code.mdx | 5 - .../streaming/python/overview.mdx | 5 - .../streaming/python/prompts.mdx | 5 - .../streaming/python/testing.mdx | 5 - .../subgraphs/python/build.mdx | 3 - .../subgraphs/python/code.mdx | 3 - .../subgraphs/python/overview.mdx | 3 - .../subgraphs/python/prompts.mdx | 3 - .../subgraphs/python/testing.mdx | 3 - .../time-travel/python/build.mdx | 3 - .../time-travel/python/code.mdx | 3 - .../time-travel/python/overview.mdx | 3 - .../time-travel/python/prompts.mdx | 3 - .../time-travel/python/testing.mdx | 3 - .../overview/python/overview.mdx | 5 - .../content/docs/licensing/api/api-docs.json | 309 +++++ .../computed-functions/python/build.mdx | 3 - .../computed-functions/python/code.mdx | 3 - .../computed-functions/python/overview.mdx | 5 - .../computed-functions/python/prompts.mdx | 3 - .../computed-functions/python/testing.mdx | 3 - .../element-rendering/python/build.mdx | 3 - .../element-rendering/python/code.mdx | 3 - .../element-rendering/python/overview.mdx | 5 - .../element-rendering/python/prompts.mdx | 3 - .../element-rendering/python/testing.mdx | 3 - .../registry/python/build.mdx | 3 - .../registry/python/code.mdx | 3 - .../registry/python/overview.mdx | 5 - .../registry/python/prompts.mdx | 3 - .../registry/python/testing.mdx | 3 - .../repeat-loops/python/build.mdx | 3 - .../repeat-loops/python/code.mdx | 3 - .../repeat-loops/python/overview.mdx | 5 - .../repeat-loops/python/prompts.mdx | 3 - .../repeat-loops/python/testing.mdx | 3 - .../spec-rendering/python/build.mdx | 3 - .../spec-rendering/python/code.mdx | 3 - .../spec-rendering/python/overview.mdx | 5 - .../spec-rendering/python/prompts.mdx | 3 - .../spec-rendering/python/testing.mdx | 3 - .../state-management/python/build.mdx | 3 - .../state-management/python/code.mdx | 3 - .../state-management/python/overview.mdx | 5 - .../state-management/python/prompts.mdx | 3 - .../state-management/python/testing.mdx | 3 - apps/website/content/docs/render/events.mdx | 109 -- .../overview/python/overview.mdx | 5 - .../content/docs/telemetry/api/api-docs.json | 453 +++++++ apps/website/e2e/website.spec.ts | 33 + apps/website/scripts/generate-api-docs.ts | 46 +- apps/website/src/app/llms-full.txt/route.ts | 6 + apps/website/src/app/llms.txt/route.ts | 7 +- apps/website/src/components/shared/Footer.tsx | 4 +- apps/website/src/components/shared/Nav.tsx | 6 +- apps/website/src/lib/docs-config.ts | 7 + apps/website/src/lib/docs.spec.ts | 76 ++ 168 files changed, 1997 insertions(+), 763 deletions(-) create mode 100644 apps/website/content/docs/a2ui/api/api-docs.json delete mode 100644 apps/website/content/docs/chat/core-capabilities/debug/python/build.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/debug/python/code.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/debug/python/overview.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/debug/python/prompts.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/debug/python/testing.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/generative-ui/python/build.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/generative-ui/python/code.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/generative-ui/python/overview.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/generative-ui/python/prompts.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/generative-ui/python/testing.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/input/python/build.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/input/python/code.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/input/python/overview.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/input/python/prompts.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/input/python/testing.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/interrupts/python/build.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/interrupts/python/code.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/interrupts/python/overview.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/interrupts/python/prompts.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/interrupts/python/testing.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/messages/python/build.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/messages/python/code.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/messages/python/overview.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/messages/python/prompts.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/messages/python/testing.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/subagents/python/build.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/subagents/python/code.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/subagents/python/overview.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/subagents/python/prompts.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/subagents/python/testing.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/theming/python/build.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/theming/python/code.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/theming/python/overview.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/theming/python/prompts.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/theming/python/testing.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/threads/python/build.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/threads/python/code.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/threads/python/overview.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/threads/python/prompts.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/threads/python/testing.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/timeline/python/build.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/timeline/python/code.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/timeline/python/overview.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/timeline/python/prompts.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/timeline/python/testing.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/tool-calls/python/build.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/tool-calls/python/code.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/tool-calls/python/overview.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/tool-calls/python/prompts.mdx delete mode 100644 apps/website/content/docs/chat/core-capabilities/tool-calls/python/testing.mdx delete mode 100644 apps/website/content/docs/chat/getting-started/overview/python/overview.mdx delete mode 100644 apps/website/content/docs/deep-agents/core-capabilities/filesystem/python/build.mdx delete mode 100644 apps/website/content/docs/deep-agents/core-capabilities/filesystem/python/code.mdx delete mode 100644 apps/website/content/docs/deep-agents/core-capabilities/filesystem/python/overview.mdx delete mode 100644 apps/website/content/docs/deep-agents/core-capabilities/filesystem/python/prompts.mdx delete mode 100644 apps/website/content/docs/deep-agents/core-capabilities/filesystem/python/testing.mdx delete mode 100644 apps/website/content/docs/deep-agents/core-capabilities/memory/python/build.mdx delete mode 100644 apps/website/content/docs/deep-agents/core-capabilities/memory/python/code.mdx delete mode 100644 apps/website/content/docs/deep-agents/core-capabilities/memory/python/overview.mdx delete mode 100644 apps/website/content/docs/deep-agents/core-capabilities/memory/python/prompts.mdx delete mode 100644 apps/website/content/docs/deep-agents/core-capabilities/memory/python/testing.mdx delete mode 100644 apps/website/content/docs/deep-agents/core-capabilities/planning/python/build.mdx delete mode 100644 apps/website/content/docs/deep-agents/core-capabilities/planning/python/code.mdx delete mode 100644 apps/website/content/docs/deep-agents/core-capabilities/planning/python/overview.mdx delete mode 100644 apps/website/content/docs/deep-agents/core-capabilities/planning/python/prompts.mdx delete mode 100644 apps/website/content/docs/deep-agents/core-capabilities/planning/python/testing.mdx delete mode 100644 apps/website/content/docs/deep-agents/core-capabilities/sandboxes/python/build.mdx delete mode 100644 apps/website/content/docs/deep-agents/core-capabilities/sandboxes/python/code.mdx delete mode 100644 apps/website/content/docs/deep-agents/core-capabilities/sandboxes/python/overview.mdx delete mode 100644 apps/website/content/docs/deep-agents/core-capabilities/sandboxes/python/prompts.mdx delete mode 100644 apps/website/content/docs/deep-agents/core-capabilities/sandboxes/python/testing.mdx delete mode 100644 apps/website/content/docs/deep-agents/core-capabilities/skills/python/build.mdx delete mode 100644 apps/website/content/docs/deep-agents/core-capabilities/skills/python/code.mdx delete mode 100644 apps/website/content/docs/deep-agents/core-capabilities/skills/python/overview.mdx delete mode 100644 apps/website/content/docs/deep-agents/core-capabilities/skills/python/prompts.mdx delete mode 100644 apps/website/content/docs/deep-agents/core-capabilities/skills/python/testing.mdx delete mode 100644 apps/website/content/docs/deep-agents/core-capabilities/subagents/python/build.mdx delete mode 100644 apps/website/content/docs/deep-agents/core-capabilities/subagents/python/code.mdx delete mode 100644 apps/website/content/docs/deep-agents/core-capabilities/subagents/python/overview.mdx delete mode 100644 apps/website/content/docs/deep-agents/core-capabilities/subagents/python/prompts.mdx delete mode 100644 apps/website/content/docs/deep-agents/core-capabilities/subagents/python/testing.mdx delete mode 100644 apps/website/content/docs/deep-agents/getting-started/overview/python/overview.mdx delete mode 100644 apps/website/content/docs/getting-started.mdx delete mode 100644 apps/website/content/docs/introduction.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/deployment-runtime/python/build.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/deployment-runtime/python/code.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/deployment-runtime/python/overview.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/deployment-runtime/python/prompts.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/deployment-runtime/python/testing.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/durable-execution/python/build.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/durable-execution/python/code.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/durable-execution/python/overview.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/durable-execution/python/prompts.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/durable-execution/python/testing.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/interrupts/python/build.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/interrupts/python/code.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/interrupts/python/overview.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/interrupts/python/prompts.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/interrupts/python/testing.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/memory/python/build.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/memory/python/code.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/memory/python/overview.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/memory/python/prompts.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/memory/python/testing.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/persistence/python/build.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/persistence/python/code.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/persistence/python/overview.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/persistence/python/prompts.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/persistence/python/testing.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/streaming/python/build.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/streaming/python/code.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/streaming/python/overview.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/streaming/python/prompts.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/streaming/python/testing.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/subgraphs/python/build.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/subgraphs/python/code.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/subgraphs/python/overview.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/subgraphs/python/prompts.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/subgraphs/python/testing.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/time-travel/python/build.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/time-travel/python/code.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/time-travel/python/overview.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/time-travel/python/prompts.mdx delete mode 100644 apps/website/content/docs/langgraph/core-capabilities/time-travel/python/testing.mdx delete mode 100644 apps/website/content/docs/langgraph/getting-started/overview/python/overview.mdx create mode 100644 apps/website/content/docs/licensing/api/api-docs.json delete mode 100644 apps/website/content/docs/render/core-capabilities/computed-functions/python/build.mdx delete mode 100644 apps/website/content/docs/render/core-capabilities/computed-functions/python/code.mdx delete mode 100644 apps/website/content/docs/render/core-capabilities/computed-functions/python/overview.mdx delete mode 100644 apps/website/content/docs/render/core-capabilities/computed-functions/python/prompts.mdx delete mode 100644 apps/website/content/docs/render/core-capabilities/computed-functions/python/testing.mdx delete mode 100644 apps/website/content/docs/render/core-capabilities/element-rendering/python/build.mdx delete mode 100644 apps/website/content/docs/render/core-capabilities/element-rendering/python/code.mdx delete mode 100644 apps/website/content/docs/render/core-capabilities/element-rendering/python/overview.mdx delete mode 100644 apps/website/content/docs/render/core-capabilities/element-rendering/python/prompts.mdx delete mode 100644 apps/website/content/docs/render/core-capabilities/element-rendering/python/testing.mdx delete mode 100644 apps/website/content/docs/render/core-capabilities/registry/python/build.mdx delete mode 100644 apps/website/content/docs/render/core-capabilities/registry/python/code.mdx delete mode 100644 apps/website/content/docs/render/core-capabilities/registry/python/overview.mdx delete mode 100644 apps/website/content/docs/render/core-capabilities/registry/python/prompts.mdx delete mode 100644 apps/website/content/docs/render/core-capabilities/registry/python/testing.mdx delete mode 100644 apps/website/content/docs/render/core-capabilities/repeat-loops/python/build.mdx delete mode 100644 apps/website/content/docs/render/core-capabilities/repeat-loops/python/code.mdx delete mode 100644 apps/website/content/docs/render/core-capabilities/repeat-loops/python/overview.mdx delete mode 100644 apps/website/content/docs/render/core-capabilities/repeat-loops/python/prompts.mdx delete mode 100644 apps/website/content/docs/render/core-capabilities/repeat-loops/python/testing.mdx delete mode 100644 apps/website/content/docs/render/core-capabilities/spec-rendering/python/build.mdx delete mode 100644 apps/website/content/docs/render/core-capabilities/spec-rendering/python/code.mdx delete mode 100644 apps/website/content/docs/render/core-capabilities/spec-rendering/python/overview.mdx delete mode 100644 apps/website/content/docs/render/core-capabilities/spec-rendering/python/prompts.mdx delete mode 100644 apps/website/content/docs/render/core-capabilities/spec-rendering/python/testing.mdx delete mode 100644 apps/website/content/docs/render/core-capabilities/state-management/python/build.mdx delete mode 100644 apps/website/content/docs/render/core-capabilities/state-management/python/code.mdx delete mode 100644 apps/website/content/docs/render/core-capabilities/state-management/python/overview.mdx delete mode 100644 apps/website/content/docs/render/core-capabilities/state-management/python/prompts.mdx delete mode 100644 apps/website/content/docs/render/core-capabilities/state-management/python/testing.mdx delete mode 100644 apps/website/content/docs/render/events.mdx delete mode 100644 apps/website/content/docs/render/getting-started/overview/python/overview.mdx create mode 100644 apps/website/content/docs/telemetry/api/api-docs.json diff --git a/apps/website/content/docs/a2ui/api/api-docs.json b/apps/website/content/docs/a2ui/api/api-docs.json new file mode 100644 index 000000000..024ff4df4 --- /dev/null +++ b/apps/website/content/docs/a2ui/api/api-docs.json @@ -0,0 +1,1073 @@ +[ + { + "name": "A2uiAction", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "context", + "type": "A2uiActionContextEntry[]", + "description": "", + "optional": true + }, + { + "name": "name", + "type": "string", + "description": "", + "optional": false + } + ], + "examples": [] + }, + { + "name": "A2uiActionContextEntry", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "key", + "type": "string", + "description": "", + "optional": false + }, + { + "name": "value", + "type": "DynamicString | DynamicNumber | DynamicBoolean", + "description": "", + "optional": false + } + ], + "examples": [] + }, + { + "name": "A2uiActionMessage", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "action", + "type": "object", + "description": "", + "optional": false + }, + { + "name": "metadata", + "type": "object", + "description": "", + "optional": true + }, + { + "name": "version", + "type": "\"v0.9\"", + "description": "", + "optional": false + } + ], + "examples": [] + }, + { + "name": "A2uiAudioPlayer", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "autoPlay", + "type": "boolean", + "description": "", + "optional": true + }, + { + "name": "controls", + "type": "boolean", + "description": "", + "optional": true + }, + { + "name": "url", + "type": "DynamicString", + "description": "", + "optional": false + } + ], + "examples": [] + }, + { + "name": "A2uiBeginRendering", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "root", + "type": "string", + "description": "", + "optional": false + }, + { + "name": "styles", + "type": "object", + "description": "", + "optional": true + }, + { + "name": "surfaceId", + "type": "string", + "description": "", + "optional": false + } + ], + "examples": [] + }, + { + "name": "A2uiButton", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "action", + "type": "A2uiAction", + "description": "", + "optional": false + }, + { + "name": "child", + "type": "string", + "description": "", + "optional": false + }, + { + "name": "primary", + "type": "boolean", + "description": "", + "optional": true + } + ], + "examples": [] + }, + { + "name": "A2uiCard", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "child", + "type": "string", + "description": "", + "optional": false + } + ], + "examples": [] + }, + { + "name": "A2uiCheckBox", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "action", + "type": "A2uiAction", + "description": "", + "optional": true + }, + { + "name": "checked", + "type": "DynamicBoolean", + "description": "", + "optional": false + }, + { + "name": "label", + "type": "DynamicString", + "description": "", + "optional": false + } + ], + "examples": [] + }, + { + "name": "A2uiClientDataModel", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "surfaces", + "type": "Record>", + "description": "", + "optional": false + }, + { + "name": "version", + "type": "\"v0.9\"", + "description": "", + "optional": false + } + ], + "examples": [] + }, + { + "name": "A2uiColumn", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "alignment", + "type": "\"start\" | \"center\" | \"end\" | \"stretch\"", + "description": "", + "optional": true + }, + { + "name": "children", + "type": "A2uiChildren", + "description": "", + "optional": false + }, + { + "name": "gap", + "type": "number", + "description": "", + "optional": true + } + ], + "examples": [] + }, + { + "name": "A2uiComponent", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "component", + "type": "A2uiComponentDef", + "description": "", + "optional": false + }, + { + "name": "id", + "type": "string", + "description": "", + "optional": false + }, + { + "name": "weight", + "type": "number", + "description": "", + "optional": true + } + ], + "examples": [] + }, + { + "name": "A2uiDataModelEntry", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "key", + "type": "string", + "description": "", + "optional": false + }, + { + "name": "valueBoolean", + "type": "boolean", + "description": "", + "optional": true + }, + { + "name": "valueMap", + "type": "A2uiDataModelEntry[]", + "description": "", + "optional": true + }, + { + "name": "valueNumber", + "type": "number", + "description": "", + "optional": true + }, + { + "name": "valueString", + "type": "string", + "description": "", + "optional": true + } + ], + "examples": [] + }, + { + "name": "A2uiDataModelUpdate", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "contents", + "type": "A2uiDataModelEntry[]", + "description": "", + "optional": false + }, + { + "name": "path", + "type": "string", + "description": "", + "optional": true + }, + { + "name": "surfaceId", + "type": "string", + "description": "", + "optional": false + } + ], + "examples": [] + }, + { + "name": "A2uiDateTimeInput", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "enableDate", + "type": "boolean", + "description": "", + "optional": true + }, + { + "name": "enableTime", + "type": "boolean", + "description": "", + "optional": true + }, + { + "name": "label", + "type": "DynamicString", + "description": "", + "optional": false + }, + { + "name": "value", + "type": "DynamicString", + "description": "", + "optional": true + } + ], + "examples": [] + }, + { + "name": "A2uiDeleteSurface", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "surfaceId", + "type": "string", + "description": "", + "optional": false + } + ], + "examples": [] + }, + { + "name": "A2uiDivider", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "direction", + "type": "\"vertical\" | \"horizontal\"", + "description": "", + "optional": true + } + ], + "examples": [] + }, + { + "name": "A2uiIcon", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "icon", + "type": "DynamicString", + "description": "", + "optional": false + }, + { + "name": "size", + "type": "number", + "description": "", + "optional": true + } + ], + "examples": [] + }, + { + "name": "A2uiImage", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "alt", + "type": "DynamicString", + "description": "", + "optional": true + }, + { + "name": "height", + "type": "number", + "description": "", + "optional": true + }, + { + "name": "url", + "type": "DynamicString", + "description": "", + "optional": false + }, + { + "name": "width", + "type": "number", + "description": "", + "optional": true + } + ], + "examples": [] + }, + { + "name": "A2uiList", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "children", + "type": "A2uiChildren", + "description": "", + "optional": false + }, + { + "name": "direction", + "type": "\"vertical\" | \"horizontal\"", + "description": "", + "optional": true + } + ], + "examples": [] + }, + { + "name": "A2uiMessageParser", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "push", + "type": "unknown", + "description": "", + "optional": false + } + ], + "examples": [] + }, + { + "name": "A2uiModal", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "contentChild", + "type": "string", + "description": "", + "optional": false + }, + { + "name": "entryPointChild", + "type": "string", + "description": "", + "optional": false + }, + { + "name": "title", + "type": "DynamicString", + "description": "", + "optional": true + } + ], + "examples": [] + }, + { + "name": "A2uiMultipleChoice", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "label", + "type": "DynamicString", + "description": "", + "optional": true + }, + { + "name": "maxAllowedSelections", + "type": "number", + "description": "", + "optional": true + }, + { + "name": "options", + "type": "object[]", + "description": "", + "optional": false + }, + { + "name": "selections", + "type": "DynamicStringList", + "description": "", + "optional": false + } + ], + "examples": [] + }, + { + "name": "A2uiRow", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "alignment", + "type": "\"start\" | \"center\" | \"end\" | \"stretch\"", + "description": "", + "optional": true + }, + { + "name": "children", + "type": "A2uiChildren", + "description": "", + "optional": false + }, + { + "name": "distribution", + "type": "\"start\" | \"center\" | \"end\" | \"space-between\" | \"space-around\"", + "description": "", + "optional": true + }, + { + "name": "gap", + "type": "number", + "description": "", + "optional": true + } + ], + "examples": [] + }, + { + "name": "A2uiScope", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "basePath", + "type": "string", + "description": "", + "optional": false + }, + { + "name": "item", + "type": "unknown", + "description": "", + "optional": false + } + ], + "examples": [] + }, + { + "name": "A2uiSlider", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "label", + "type": "DynamicString", + "description": "", + "optional": true + }, + { + "name": "maxValue", + "type": "number", + "description": "", + "optional": true + }, + { + "name": "minValue", + "type": "number", + "description": "", + "optional": true + }, + { + "name": "step", + "type": "number", + "description": "", + "optional": true + }, + { + "name": "value", + "type": "DynamicNumber", + "description": "", + "optional": false + } + ], + "examples": [] + }, + { + "name": "A2uiSurface", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "catalogId", + "type": "string", + "description": "", + "optional": false + }, + { + "name": "components", + "type": "Map", + "description": "", + "optional": false + }, + { + "name": "dataModel", + "type": "Record", + "description": "", + "optional": false + }, + { + "name": "sendDataModel", + "type": "boolean", + "description": "", + "optional": true + }, + { + "name": "styles", + "type": "object", + "description": "Styles set by the agent via `beginRendering.styles`. The\ncanonical v1 spec defines exactly two fields: `font` (primary\nfont for the UI) and `primaryColor` (hex `#RRGGBB`). The renderer\napplies these as CSS custom properties on the surface root,\noverriding any consumer-set defaults for the duration of the\nsurface's life. Anything richer (typography scale, spacing,\nelevation, etc.) is the renderer's private vocabulary and not\ncommunicated through this field.", + "optional": true + }, + { + "name": "surfaceId", + "type": "string", + "description": "", + "optional": false + }, + { + "name": "theme", + "type": "A2uiTheme", + "description": "", + "optional": true + } + ], + "examples": [] + }, + { + "name": "A2uiSurfaceUpdate", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "components", + "type": "A2uiComponent[]", + "description": "", + "optional": false + }, + { + "name": "surfaceId", + "type": "string", + "description": "", + "optional": false + } + ], + "examples": [] + }, + { + "name": "A2uiTabItem", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "child", + "type": "string", + "description": "", + "optional": false + }, + { + "name": "title", + "type": "DynamicString", + "description": "", + "optional": false + } + ], + "examples": [] + }, + { + "name": "A2uiTabs", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "tabItems", + "type": "A2uiTabItem[]", + "description": "", + "optional": false + } + ], + "examples": [] + }, + { + "name": "A2uiText", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "text", + "type": "DynamicString", + "description": "", + "optional": false + }, + { + "name": "usageHint", + "type": "\"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"caption\" | \"body\"", + "description": "", + "optional": true + } + ], + "examples": [] + }, + { + "name": "A2uiTextField", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "label", + "type": "DynamicString", + "description": "", + "optional": false + }, + { + "name": "text", + "type": "DynamicString", + "description": "", + "optional": true + }, + { + "name": "textFieldType", + "type": "\"number\" | \"date\" | \"longText\" | \"shortText\" | \"obscured\"", + "description": "", + "optional": true + }, + { + "name": "validationRegexp", + "type": "string", + "description": "", + "optional": true + } + ], + "examples": [] + }, + { + "name": "A2uiTheme", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "agentDisplayName", + "type": "string", + "description": "", + "optional": true + }, + { + "name": "iconUrl", + "type": "string", + "description": "", + "optional": true + }, + { + "name": "primaryColor", + "type": "string", + "description": "", + "optional": true + } + ], + "examples": [] + }, + { + "name": "A2uiVideo", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "autoPlay", + "type": "boolean", + "description": "", + "optional": true + }, + { + "name": "controls", + "type": "boolean", + "description": "", + "optional": true + }, + { + "name": "url", + "type": "DynamicString", + "description": "", + "optional": false + } + ], + "examples": [] + }, + { + "name": "A2uiChildren", + "kind": "type", + "description": "", + "signature": "object | object", + "examples": [] + }, + { + "name": "A2uiComponentDef", + "kind": "type", + "description": "", + "signature": "object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object", + "examples": [] + }, + { + "name": "A2uiMessage", + "kind": "type", + "description": "", + "signature": "object | object | object | object", + "examples": [] + }, + { + "name": "DynamicBoolean", + "kind": "type", + "description": "", + "signature": "object | object", + "examples": [] + }, + { + "name": "DynamicNumber", + "kind": "type", + "description": "", + "signature": "object | object", + "examples": [] + }, + { + "name": "DynamicString", + "kind": "type", + "description": "", + "signature": "object | object", + "examples": [] + }, + { + "name": "DynamicStringList", + "kind": "type", + "description": "", + "signature": "object | object", + "examples": [] + }, + { + "name": "createA2uiMessageParser", + "kind": "function", + "description": "", + "signature": "createA2uiMessageParser(): A2uiMessageParser", + "params": [], + "returns": { + "type": "A2uiMessageParser", + "description": "" + }, + "examples": [] + }, + { + "name": "deleteByPointer", + "kind": "function", + "description": "", + "signature": "deleteByPointer(model: Record, pointer: string): Record", + "params": [ + { + "name": "model", + "type": "Record", + "description": "", + "optional": false + }, + { + "name": "pointer", + "type": "string", + "description": "", + "optional": false + } + ], + "returns": { + "type": "Record", + "description": "" + }, + "examples": [] + }, + { + "name": "getByPointer", + "kind": "function", + "description": "", + "signature": "getByPointer(model: Record, pointer: string): unknown", + "params": [ + { + "name": "model", + "type": "Record", + "description": "", + "optional": false + }, + { + "name": "pointer", + "type": "string", + "description": "", + "optional": false + } + ], + "returns": { + "type": "unknown", + "description": "" + }, + "examples": [] + }, + { + "name": "isLiteralBoolean", + "kind": "function", + "description": "", + "signature": "isLiteralBoolean(value: unknown): value is { literalBoolean: boolean }", + "params": [ + { + "name": "value", + "type": "unknown", + "description": "", + "optional": false + } + ], + "returns": { + "type": "value is { literalBoolean: boolean }", + "description": "" + }, + "examples": [] + }, + { + "name": "isLiteralNumber", + "kind": "function", + "description": "", + "signature": "isLiteralNumber(value: unknown): value is { literalNumber: number }", + "params": [ + { + "name": "value", + "type": "unknown", + "description": "", + "optional": false + } + ], + "returns": { + "type": "value is { literalNumber: number }", + "description": "" + }, + "examples": [] + }, + { + "name": "isLiteralString", + "kind": "function", + "description": "", + "signature": "isLiteralString(value: unknown): value is { literalString: string }", + "params": [ + { + "name": "value", + "type": "unknown", + "description": "", + "optional": false + } + ], + "returns": { + "type": "value is { literalString: string }", + "description": "" + }, + "examples": [] + }, + { + "name": "isPathRef", + "kind": "function", + "description": "", + "signature": "isPathRef(value: unknown): value is { path: string }", + "params": [ + { + "name": "value", + "type": "unknown", + "description": "", + "optional": false + } + ], + "returns": { + "type": "value is { path: string }", + "description": "" + }, + "examples": [] + }, + { + "name": "resolveDynamic", + "kind": "function", + "description": "", + "signature": "resolveDynamic(value: unknown, model: Record, scope: A2uiScope): unknown", + "params": [ + { + "name": "value", + "type": "unknown", + "description": "", + "optional": false + }, + { + "name": "model", + "type": "Record", + "description": "", + "optional": false + }, + { + "name": "scope", + "type": "A2uiScope", + "description": "", + "optional": true + } + ], + "returns": { + "type": "unknown", + "description": "" + }, + "examples": [] + }, + { + "name": "setByPointer", + "kind": "function", + "description": "", + "signature": "setByPointer(model: Record, pointer: string, value: unknown): Record", + "params": [ + { + "name": "model", + "type": "Record", + "description": "", + "optional": false + }, + { + "name": "pointer", + "type": "string", + "description": "", + "optional": false + }, + { + "name": "value", + "type": "unknown", + "description": "", + "optional": false + } + ], + "returns": { + "type": "Record", + "description": "" + }, + "examples": [] + } +] \ No newline at end of file diff --git a/apps/website/content/docs/chat/core-capabilities/debug/python/build.mdx b/apps/website/content/docs/chat/core-capabilities/debug/python/build.mdx deleted file mode 100644 index 29c663c3d..000000000 --- a/apps/website/content/docs/chat/core-capabilities/debug/python/build.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Build Debug Workflows - -Design debug workflows around event logging and inspector panels that surface stream events, state changes, and rendering decisions. diff --git a/apps/website/content/docs/chat/core-capabilities/debug/python/code.mdx b/apps/website/content/docs/chat/core-capabilities/debug/python/code.mdx deleted file mode 100644 index 4acf906b8..000000000 --- a/apps/website/content/docs/chat/core-capabilities/debug/python/code.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Debug Code - -Code examples for debug tools show how to enable event logging, attach inspector panels, and filter debug output by event type. diff --git a/apps/website/content/docs/chat/core-capabilities/debug/python/overview.mdx b/apps/website/content/docs/chat/core-capabilities/debug/python/overview.mdx deleted file mode 100644 index b5c1af3c8..000000000 --- a/apps/website/content/docs/chat/core-capabilities/debug/python/overview.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Debug Overview - -Debug tools provide visibility into message flow, stream events, tool call execution, and component rendering during development. - -Use this page when you need to diagnose issues in the chat pipeline or inspect runtime behavior. diff --git a/apps/website/content/docs/chat/core-capabilities/debug/python/prompts.mdx b/apps/website/content/docs/chat/core-capabilities/debug/python/prompts.mdx deleted file mode 100644 index 1e7898270..000000000 --- a/apps/website/content/docs/chat/core-capabilities/debug/python/prompts.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Debug Prompts - -Prompts for debug configuration should specify which event types to log, the verbosity level, and where debug output should appear. diff --git a/apps/website/content/docs/chat/core-capabilities/debug/python/testing.mdx b/apps/website/content/docs/chat/core-capabilities/debug/python/testing.mdx deleted file mode 100644 index c770320cd..000000000 --- a/apps/website/content/docs/chat/core-capabilities/debug/python/testing.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Debug Testing - -Test debug tooling by triggering known events and verifying that the logger captures them with the correct type, payload, and timestamp. diff --git a/apps/website/content/docs/chat/core-capabilities/generative-ui/python/build.mdx b/apps/website/content/docs/chat/core-capabilities/generative-ui/python/build.mdx deleted file mode 100644 index 66c685433..000000000 --- a/apps/website/content/docs/chat/core-capabilities/generative-ui/python/build.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Build Generative UI Workflows - -Design generative UI workflows around a component registry that maps response data types to Angular components rendered inline. diff --git a/apps/website/content/docs/chat/core-capabilities/generative-ui/python/code.mdx b/apps/website/content/docs/chat/core-capabilities/generative-ui/python/code.mdx deleted file mode 100644 index 3add8914c..000000000 --- a/apps/website/content/docs/chat/core-capabilities/generative-ui/python/code.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Generative UI Code - -Code examples for generative UI show how to register inline components, parse structured response data, and render widgets within messages. diff --git a/apps/website/content/docs/chat/core-capabilities/generative-ui/python/overview.mdx b/apps/website/content/docs/chat/core-capabilities/generative-ui/python/overview.mdx deleted file mode 100644 index f1d2add42..000000000 --- a/apps/website/content/docs/chat/core-capabilities/generative-ui/python/overview.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Generative UI Overview - -Generative UI renders dynamic Angular components inline within assistant messages based on structured data from the response stream. - -Use this page when you need to embed interactive widgets, charts, or forms directly in chat responses. diff --git a/apps/website/content/docs/chat/core-capabilities/generative-ui/python/prompts.mdx b/apps/website/content/docs/chat/core-capabilities/generative-ui/python/prompts.mdx deleted file mode 100644 index 2c6408383..000000000 --- a/apps/website/content/docs/chat/core-capabilities/generative-ui/python/prompts.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Generative UI Prompts - -Prompts for generative UI should define the data shapes that trigger component rendering and the expected visual output for each type. diff --git a/apps/website/content/docs/chat/core-capabilities/generative-ui/python/testing.mdx b/apps/website/content/docs/chat/core-capabilities/generative-ui/python/testing.mdx deleted file mode 100644 index cfa571e71..000000000 --- a/apps/website/content/docs/chat/core-capabilities/generative-ui/python/testing.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Generative UI Testing - -Test generative UI by sending structured response data and verifying that the correct inline component renders with the expected inputs. diff --git a/apps/website/content/docs/chat/core-capabilities/input/python/build.mdx b/apps/website/content/docs/chat/core-capabilities/input/python/build.mdx deleted file mode 100644 index 66a31d77c..000000000 --- a/apps/website/content/docs/chat/core-capabilities/input/python/build.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Build Input Workflows - -Design input workflows around a single input component that handles text capture, validation, and submission events. diff --git a/apps/website/content/docs/chat/core-capabilities/input/python/code.mdx b/apps/website/content/docs/chat/core-capabilities/input/python/code.mdx deleted file mode 100644 index f0b93dc3b..000000000 --- a/apps/website/content/docs/chat/core-capabilities/input/python/code.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Input Code - -Code examples for input show how to configure the input component, handle submission events, and manage loading states. diff --git a/apps/website/content/docs/chat/core-capabilities/input/python/overview.mdx b/apps/website/content/docs/chat/core-capabilities/input/python/overview.mdx deleted file mode 100644 index 2866b2728..000000000 --- a/apps/website/content/docs/chat/core-capabilities/input/python/overview.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Input Overview - -The input system captures user text, handles submission, and manages input state like loading indicators and disabled states. - -Use this page when you need to customize input behavior or add features like file attachments or command detection. diff --git a/apps/website/content/docs/chat/core-capabilities/input/python/prompts.mdx b/apps/website/content/docs/chat/core-capabilities/input/python/prompts.mdx deleted file mode 100644 index 2525327a8..000000000 --- a/apps/website/content/docs/chat/core-capabilities/input/python/prompts.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Input Prompts - -Prompts for input configuration should specify placeholder text, validation rules, and any pre-processing before submission. diff --git a/apps/website/content/docs/chat/core-capabilities/input/python/testing.mdx b/apps/website/content/docs/chat/core-capabilities/input/python/testing.mdx deleted file mode 100644 index 2a97d31e4..000000000 --- a/apps/website/content/docs/chat/core-capabilities/input/python/testing.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Input Testing - -Test input handling by simulating user keystrokes and submissions, then verifying the emitted message content and input state transitions. diff --git a/apps/website/content/docs/chat/core-capabilities/interrupts/python/build.mdx b/apps/website/content/docs/chat/core-capabilities/interrupts/python/build.mdx deleted file mode 100644 index 7ced051de..000000000 --- a/apps/website/content/docs/chat/core-capabilities/interrupts/python/build.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Build Interrupt Workflows - -Design interrupt workflows around explicit pause points that present the user with a clear action and resume the stream on response. diff --git a/apps/website/content/docs/chat/core-capabilities/interrupts/python/code.mdx b/apps/website/content/docs/chat/core-capabilities/interrupts/python/code.mdx deleted file mode 100644 index 0a486e1cb..000000000 --- a/apps/website/content/docs/chat/core-capabilities/interrupts/python/code.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Interrupts Code - -Code examples for interrupts show how to emit an interrupt event, render a confirmation UI, and resume the response stream. diff --git a/apps/website/content/docs/chat/core-capabilities/interrupts/python/overview.mdx b/apps/website/content/docs/chat/core-capabilities/interrupts/python/overview.mdx deleted file mode 100644 index a27649cac..000000000 --- a/apps/website/content/docs/chat/core-capabilities/interrupts/python/overview.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Interrupts Overview - -Interrupts pause the assistant response stream to collect user confirmation or additional input before continuing. - -Use this page when you need to add human-in-the-loop checkpoints to your chat workflows. diff --git a/apps/website/content/docs/chat/core-capabilities/interrupts/python/prompts.mdx b/apps/website/content/docs/chat/core-capabilities/interrupts/python/prompts.mdx deleted file mode 100644 index 8eda4fe43..000000000 --- a/apps/website/content/docs/chat/core-capabilities/interrupts/python/prompts.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Interrupts Prompts - -Prompts for interrupts should describe the pause condition, the user-facing question, and the expected response format. diff --git a/apps/website/content/docs/chat/core-capabilities/interrupts/python/testing.mdx b/apps/website/content/docs/chat/core-capabilities/interrupts/python/testing.mdx deleted file mode 100644 index 663bea01e..000000000 --- a/apps/website/content/docs/chat/core-capabilities/interrupts/python/testing.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Interrupts Testing - -Test interrupts by triggering a pause condition and verifying that the stream stops, the prompt renders, and resumption produces the correct continuation. diff --git a/apps/website/content/docs/chat/core-capabilities/messages/python/build.mdx b/apps/website/content/docs/chat/core-capabilities/messages/python/build.mdx deleted file mode 100644 index 2c2da917d..000000000 --- a/apps/website/content/docs/chat/core-capabilities/messages/python/build.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Build Message Workflows - -Design message workflows around a clear message type hierarchy and consistent serialization for transport and storage. diff --git a/apps/website/content/docs/chat/core-capabilities/messages/python/code.mdx b/apps/website/content/docs/chat/core-capabilities/messages/python/code.mdx deleted file mode 100644 index 92fc3ca80..000000000 --- a/apps/website/content/docs/chat/core-capabilities/messages/python/code.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Messages Code - -Code examples for messages show how to create, send, receive, and render message objects in the chat component. diff --git a/apps/website/content/docs/chat/core-capabilities/messages/python/overview.mdx b/apps/website/content/docs/chat/core-capabilities/messages/python/overview.mdx deleted file mode 100644 index db48b7198..000000000 --- a/apps/website/content/docs/chat/core-capabilities/messages/python/overview.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Messages Overview - -Messages are the core data unit in Chat, representing user inputs, assistant responses, and system instructions in a conversation. - -Use this page when you need to understand how messages flow through the chat pipeline and how they are stored and displayed. diff --git a/apps/website/content/docs/chat/core-capabilities/messages/python/prompts.mdx b/apps/website/content/docs/chat/core-capabilities/messages/python/prompts.mdx deleted file mode 100644 index f6f31733c..000000000 --- a/apps/website/content/docs/chat/core-capabilities/messages/python/prompts.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Messages Prompts - -Prompts for message handling should define the expected message roles, content formats, and any metadata attached to each message. diff --git a/apps/website/content/docs/chat/core-capabilities/messages/python/testing.mdx b/apps/website/content/docs/chat/core-capabilities/messages/python/testing.mdx deleted file mode 100644 index 660f9bbd0..000000000 --- a/apps/website/content/docs/chat/core-capabilities/messages/python/testing.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Messages Testing - -Test message handling by verifying that sent messages appear in the conversation thread with the correct role, content, and ordering. diff --git a/apps/website/content/docs/chat/core-capabilities/subagents/python/build.mdx b/apps/website/content/docs/chat/core-capabilities/subagents/python/build.mdx deleted file mode 100644 index b2c73a0c4..000000000 --- a/apps/website/content/docs/chat/core-capabilities/subagents/python/build.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Build Subagent Workflows - -Design subagent workflows around clear delegation boundaries where the parent agent routes to a child and merges the result. diff --git a/apps/website/content/docs/chat/core-capabilities/subagents/python/code.mdx b/apps/website/content/docs/chat/core-capabilities/subagents/python/code.mdx deleted file mode 100644 index 48f02f8f9..000000000 --- a/apps/website/content/docs/chat/core-capabilities/subagents/python/code.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Subagent Code - -Code examples for subagents show how to register child agents, route messages to them, and merge their responses into the main thread. diff --git a/apps/website/content/docs/chat/core-capabilities/subagents/python/overview.mdx b/apps/website/content/docs/chat/core-capabilities/subagents/python/overview.mdx deleted file mode 100644 index b13e78b99..000000000 --- a/apps/website/content/docs/chat/core-capabilities/subagents/python/overview.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Subagents Overview - -Subagents delegate parts of a conversation to specialized agents that handle domain-specific tasks and return results to the main thread. - -Use this page when you need to compose multiple agents within a single chat experience. diff --git a/apps/website/content/docs/chat/core-capabilities/subagents/python/prompts.mdx b/apps/website/content/docs/chat/core-capabilities/subagents/python/prompts.mdx deleted file mode 100644 index 08c8efd74..000000000 --- a/apps/website/content/docs/chat/core-capabilities/subagents/python/prompts.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Subagent Prompts - -Prompts for subagents should define the delegation trigger, the child agent's role, and how its response integrates into the parent conversation. diff --git a/apps/website/content/docs/chat/core-capabilities/subagents/python/testing.mdx b/apps/website/content/docs/chat/core-capabilities/subagents/python/testing.mdx deleted file mode 100644 index 03dbc210e..000000000 --- a/apps/website/content/docs/chat/core-capabilities/subagents/python/testing.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Subagent Testing - -Test subagent delegation by triggering a routing condition and verifying that the child agent handles the task and returns the expected result. diff --git a/apps/website/content/docs/chat/core-capabilities/theming/python/build.mdx b/apps/website/content/docs/chat/core-capabilities/theming/python/build.mdx deleted file mode 100644 index ae3054c9d..000000000 --- a/apps/website/content/docs/chat/core-capabilities/theming/python/build.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Build Theming Workflows - -Design theming workflows around a set of CSS custom properties that cascade through all chat components for consistent styling. diff --git a/apps/website/content/docs/chat/core-capabilities/theming/python/code.mdx b/apps/website/content/docs/chat/core-capabilities/theming/python/code.mdx deleted file mode 100644 index 96aae2651..000000000 --- a/apps/website/content/docs/chat/core-capabilities/theming/python/code.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Theming Code - -Code examples for theming show how to set CSS custom properties, override component styles, and switch between light and dark modes. diff --git a/apps/website/content/docs/chat/core-capabilities/theming/python/overview.mdx b/apps/website/content/docs/chat/core-capabilities/theming/python/overview.mdx deleted file mode 100644 index cdd44356d..000000000 --- a/apps/website/content/docs/chat/core-capabilities/theming/python/overview.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Theming Overview - -Theming controls the visual appearance of the chat interface through CSS custom properties and component-level style overrides. - -Use this page when you need to match the chat UI to your application's design system or brand. diff --git a/apps/website/content/docs/chat/core-capabilities/theming/python/prompts.mdx b/apps/website/content/docs/chat/core-capabilities/theming/python/prompts.mdx deleted file mode 100644 index 10bede6bb..000000000 --- a/apps/website/content/docs/chat/core-capabilities/theming/python/prompts.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Theming Prompts - -Prompts for theming should specify the design tokens, color palette, typography scale, and spacing values used across the chat UI. diff --git a/apps/website/content/docs/chat/core-capabilities/theming/python/testing.mdx b/apps/website/content/docs/chat/core-capabilities/theming/python/testing.mdx deleted file mode 100644 index ce4731bfa..000000000 --- a/apps/website/content/docs/chat/core-capabilities/theming/python/testing.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Theming Testing - -Test theming by applying a custom theme and verifying that CSS custom property values propagate correctly to all chat components. diff --git a/apps/website/content/docs/chat/core-capabilities/threads/python/build.mdx b/apps/website/content/docs/chat/core-capabilities/threads/python/build.mdx deleted file mode 100644 index e2a239e72..000000000 --- a/apps/website/content/docs/chat/core-capabilities/threads/python/build.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Build Thread Workflows - -Design thread workflows around a thread store that persists messages and supports operations like resume, branch, and delete. diff --git a/apps/website/content/docs/chat/core-capabilities/threads/python/code.mdx b/apps/website/content/docs/chat/core-capabilities/threads/python/code.mdx deleted file mode 100644 index c81cda64c..000000000 --- a/apps/website/content/docs/chat/core-capabilities/threads/python/code.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Thread Code - -Code examples for threads show how to create, load, resume, and branch conversation threads using the thread store API. diff --git a/apps/website/content/docs/chat/core-capabilities/threads/python/overview.mdx b/apps/website/content/docs/chat/core-capabilities/threads/python/overview.mdx deleted file mode 100644 index 59d114293..000000000 --- a/apps/website/content/docs/chat/core-capabilities/threads/python/overview.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Threads Overview - -Threads organize conversations into persistent sessions that can be resumed, branched, or archived. - -Use this page when you need to manage conversation history and multi-session continuity. diff --git a/apps/website/content/docs/chat/core-capabilities/threads/python/prompts.mdx b/apps/website/content/docs/chat/core-capabilities/threads/python/prompts.mdx deleted file mode 100644 index 1a400c1be..000000000 --- a/apps/website/content/docs/chat/core-capabilities/threads/python/prompts.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Thread Prompts - -Prompts for thread management should specify how threads are created, resumed, and how context is carried across sessions. diff --git a/apps/website/content/docs/chat/core-capabilities/threads/python/testing.mdx b/apps/website/content/docs/chat/core-capabilities/threads/python/testing.mdx deleted file mode 100644 index abb10a8c7..000000000 --- a/apps/website/content/docs/chat/core-capabilities/threads/python/testing.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Thread Testing - -Test thread management by creating threads, adding messages, resuming sessions, and verifying that conversation history is preserved correctly. diff --git a/apps/website/content/docs/chat/core-capabilities/timeline/python/build.mdx b/apps/website/content/docs/chat/core-capabilities/timeline/python/build.mdx deleted file mode 100644 index 547c3a45b..000000000 --- a/apps/website/content/docs/chat/core-capabilities/timeline/python/build.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Build Timeline Workflows - -Design timeline workflows around a virtualized message list that handles large histories and smooth auto-scrolling during streaming. diff --git a/apps/website/content/docs/chat/core-capabilities/timeline/python/code.mdx b/apps/website/content/docs/chat/core-capabilities/timeline/python/code.mdx deleted file mode 100644 index f6fdc59df..000000000 --- a/apps/website/content/docs/chat/core-capabilities/timeline/python/code.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Timeline Code - -Code examples for the timeline show how to configure the message list, add custom message templates, and control scroll behavior. diff --git a/apps/website/content/docs/chat/core-capabilities/timeline/python/overview.mdx b/apps/website/content/docs/chat/core-capabilities/timeline/python/overview.mdx deleted file mode 100644 index ede17ff4c..000000000 --- a/apps/website/content/docs/chat/core-capabilities/timeline/python/overview.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Timeline Overview - -The timeline renders the conversation as a scrollable sequence of message bubbles with automatic scroll-to-bottom and streaming indicators. - -Use this page when you need to customize how messages are displayed or add features like timestamps and read receipts. diff --git a/apps/website/content/docs/chat/core-capabilities/timeline/python/prompts.mdx b/apps/website/content/docs/chat/core-capabilities/timeline/python/prompts.mdx deleted file mode 100644 index 86db8de0a..000000000 --- a/apps/website/content/docs/chat/core-capabilities/timeline/python/prompts.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Timeline Prompts - -Prompts for timeline configuration should describe the desired message layout, grouping rules, and any custom rendering for specific message types. diff --git a/apps/website/content/docs/chat/core-capabilities/timeline/python/testing.mdx b/apps/website/content/docs/chat/core-capabilities/timeline/python/testing.mdx deleted file mode 100644 index 5b798d211..000000000 --- a/apps/website/content/docs/chat/core-capabilities/timeline/python/testing.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Timeline Testing - -Test the timeline by rendering a message sequence and verifying scroll position, message ordering, and streaming indicator behavior. diff --git a/apps/website/content/docs/chat/core-capabilities/tool-calls/python/build.mdx b/apps/website/content/docs/chat/core-capabilities/tool-calls/python/build.mdx deleted file mode 100644 index efcdb65be..000000000 --- a/apps/website/content/docs/chat/core-capabilities/tool-calls/python/build.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Build Tool Call Workflows - -Design tool call workflows around a registry of available tools, each with a clear schema and a handler that returns structured results. diff --git a/apps/website/content/docs/chat/core-capabilities/tool-calls/python/code.mdx b/apps/website/content/docs/chat/core-capabilities/tool-calls/python/code.mdx deleted file mode 100644 index 9b6a4f193..000000000 --- a/apps/website/content/docs/chat/core-capabilities/tool-calls/python/code.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Tool Call Code - -Code examples for tool calls show how to register tools, handle invocation events, execute functions, and return results to the stream. diff --git a/apps/website/content/docs/chat/core-capabilities/tool-calls/python/overview.mdx b/apps/website/content/docs/chat/core-capabilities/tool-calls/python/overview.mdx deleted file mode 100644 index ee522ad9b..000000000 --- a/apps/website/content/docs/chat/core-capabilities/tool-calls/python/overview.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Tool Calls Overview - -Tool calls let the assistant invoke external functions during a conversation and incorporate the results into its response. - -Use this page when you need to understand how tool call requests and results flow through the chat pipeline. diff --git a/apps/website/content/docs/chat/core-capabilities/tool-calls/python/prompts.mdx b/apps/website/content/docs/chat/core-capabilities/tool-calls/python/prompts.mdx deleted file mode 100644 index 42d9689d2..000000000 --- a/apps/website/content/docs/chat/core-capabilities/tool-calls/python/prompts.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Tool Call Prompts - -Prompts for tool calls should list the available tools, their parameter schemas, and guidelines for when the assistant should invoke them. diff --git a/apps/website/content/docs/chat/core-capabilities/tool-calls/python/testing.mdx b/apps/website/content/docs/chat/core-capabilities/tool-calls/python/testing.mdx deleted file mode 100644 index 87938d8b4..000000000 --- a/apps/website/content/docs/chat/core-capabilities/tool-calls/python/testing.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Tool Call Testing - -Test tool calls by providing a tool registry, triggering an invocation, and verifying the result is incorporated into the assistant response. diff --git a/apps/website/content/docs/chat/getting-started/overview/python/overview.mdx b/apps/website/content/docs/chat/getting-started/overview/python/overview.mdx deleted file mode 100644 index cd46bcdaa..000000000 --- a/apps/website/content/docs/chat/getting-started/overview/python/overview.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Chat Overview - -Chat provides a full-featured Angular chat interface for conversational AI applications with streaming, tool calls, and generative UI. - -Start here when you want the fastest path to a working Chat app in Angular. The product-first guides focus on the core workflow, then connect you to messages, threads, interrupts, and testing as you grow. diff --git a/apps/website/content/docs/deep-agents/core-capabilities/filesystem/python/build.mdx b/apps/website/content/docs/deep-agents/core-capabilities/filesystem/python/build.mdx deleted file mode 100644 index 4dd3d964d..000000000 --- a/apps/website/content/docs/deep-agents/core-capabilities/filesystem/python/build.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Build Filesystem Workflows - -Design filesystem steps around the smallest useful operation and keep side effects visible. diff --git a/apps/website/content/docs/deep-agents/core-capabilities/filesystem/python/code.mdx b/apps/website/content/docs/deep-agents/core-capabilities/filesystem/python/code.mdx deleted file mode 100644 index be4ee4567..000000000 --- a/apps/website/content/docs/deep-agents/core-capabilities/filesystem/python/code.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Filesystem Code - -Code examples for filesystem behavior should show explicit reads and writes instead of implicit assumptions. diff --git a/apps/website/content/docs/deep-agents/core-capabilities/filesystem/python/overview.mdx b/apps/website/content/docs/deep-agents/core-capabilities/filesystem/python/overview.mdx deleted file mode 100644 index b1f76a73e..000000000 --- a/apps/website/content/docs/deep-agents/core-capabilities/filesystem/python/overview.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Filesystem Overview - -Filesystem work in Deep Agents keeps file access explicit, scoped, and easy to reason about. - -Use this page when you need the agent to inspect or update files without losing control of the workspace. diff --git a/apps/website/content/docs/deep-agents/core-capabilities/filesystem/python/prompts.mdx b/apps/website/content/docs/deep-agents/core-capabilities/filesystem/python/prompts.mdx deleted file mode 100644 index 0dc607edd..000000000 --- a/apps/website/content/docs/deep-agents/core-capabilities/filesystem/python/prompts.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Filesystem Prompts - -Prompts for filesystem tasks should name the target files, the permitted scope, and the expected result. diff --git a/apps/website/content/docs/deep-agents/core-capabilities/filesystem/python/testing.mdx b/apps/website/content/docs/deep-agents/core-capabilities/filesystem/python/testing.mdx deleted file mode 100644 index ca1becf84..000000000 --- a/apps/website/content/docs/deep-agents/core-capabilities/filesystem/python/testing.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Filesystem Testing - -Test filesystem flows by checking the exact paths touched and the resulting file content. diff --git a/apps/website/content/docs/deep-agents/core-capabilities/memory/python/build.mdx b/apps/website/content/docs/deep-agents/core-capabilities/memory/python/build.mdx deleted file mode 100644 index c44a912fd..000000000 --- a/apps/website/content/docs/deep-agents/core-capabilities/memory/python/build.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Build Memory Workflows - -Build memory around stable facts, deliberate updates, and easy-to-audit checkpoints. diff --git a/apps/website/content/docs/deep-agents/core-capabilities/memory/python/code.mdx b/apps/website/content/docs/deep-agents/core-capabilities/memory/python/code.mdx deleted file mode 100644 index fa33cc2ab..000000000 --- a/apps/website/content/docs/deep-agents/core-capabilities/memory/python/code.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Memory Code - -Code samples should show explicit storage and retrieval rather than hidden caching behavior. diff --git a/apps/website/content/docs/deep-agents/core-capabilities/memory/python/overview.mdx b/apps/website/content/docs/deep-agents/core-capabilities/memory/python/overview.mdx deleted file mode 100644 index b870ae1fc..000000000 --- a/apps/website/content/docs/deep-agents/core-capabilities/memory/python/overview.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Memory Overview - -Memory keeps useful context available across steps without forcing the agent to repeat itself. - -Use this page when a Deep Agents workflow needs stateful continuity with clear retention rules. diff --git a/apps/website/content/docs/deep-agents/core-capabilities/memory/python/prompts.mdx b/apps/website/content/docs/deep-agents/core-capabilities/memory/python/prompts.mdx deleted file mode 100644 index 9df518f6c..000000000 --- a/apps/website/content/docs/deep-agents/core-capabilities/memory/python/prompts.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Memory Prompts - -Prompts for memory tasks should say what should persist, what should be discarded, and why. diff --git a/apps/website/content/docs/deep-agents/core-capabilities/memory/python/testing.mdx b/apps/website/content/docs/deep-agents/core-capabilities/memory/python/testing.mdx deleted file mode 100644 index d160675c6..000000000 --- a/apps/website/content/docs/deep-agents/core-capabilities/memory/python/testing.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Memory Testing - -Test memory by checking both the retained state and the parts that are intentionally forgotten. diff --git a/apps/website/content/docs/deep-agents/core-capabilities/planning/python/build.mdx b/apps/website/content/docs/deep-agents/core-capabilities/planning/python/build.mdx deleted file mode 100644 index 8842ca344..000000000 --- a/apps/website/content/docs/deep-agents/core-capabilities/planning/python/build.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Build Planning Workflows - -Build planning flows by defining the task shape, the available tools, and the decision points that control execution. - -Keep the first version narrow: one goal, a small tool set, and clear fallbacks for when the plan cannot continue. diff --git a/apps/website/content/docs/deep-agents/core-capabilities/planning/python/code.mdx b/apps/website/content/docs/deep-agents/core-capabilities/planning/python/code.mdx deleted file mode 100644 index 68fa61779..000000000 --- a/apps/website/content/docs/deep-agents/core-capabilities/planning/python/code.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Planning Code - -The code path for planning usually combines a structured prompt, a planning model call, and a runner that executes the resulting steps. - -Keep the orchestration small enough that you can inspect the plan, trace the execution, and swap in better tools later. diff --git a/apps/website/content/docs/deep-agents/core-capabilities/planning/python/overview.mdx b/apps/website/content/docs/deep-agents/core-capabilities/planning/python/overview.mdx deleted file mode 100644 index b9f2cad88..000000000 --- a/apps/website/content/docs/deep-agents/core-capabilities/planning/python/overview.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Planning Overview - -Planning is the part of Deep Agents that turns a user goal into an ordered sequence of actions. - -Use this guide to understand how the agent chooses next steps, where planning fits in the request lifecycle, and what you should provide to keep plans grounded. diff --git a/apps/website/content/docs/deep-agents/core-capabilities/planning/python/prompts.mdx b/apps/website/content/docs/deep-agents/core-capabilities/planning/python/prompts.mdx deleted file mode 100644 index a6401d02a..000000000 --- a/apps/website/content/docs/deep-agents/core-capabilities/planning/python/prompts.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Planning Prompts - -Prompt design for planning should make the agent explicit about constraints, intermediate steps, and completion criteria. - -Write prompts that describe the target outcome, the allowed actions, and the conditions for stopping or asking for help. diff --git a/apps/website/content/docs/deep-agents/core-capabilities/planning/python/testing.mdx b/apps/website/content/docs/deep-agents/core-capabilities/planning/python/testing.mdx deleted file mode 100644 index 48637f7f0..000000000 --- a/apps/website/content/docs/deep-agents/core-capabilities/planning/python/testing.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Planning Testing - -Test planning by checking both the plan itself and the behavior that follows from it. - -Include cases for incomplete inputs, tool failures, and plans that should stop early instead of overreaching. diff --git a/apps/website/content/docs/deep-agents/core-capabilities/sandboxes/python/build.mdx b/apps/website/content/docs/deep-agents/core-capabilities/sandboxes/python/build.mdx deleted file mode 100644 index 278de5c23..000000000 --- a/apps/website/content/docs/deep-agents/core-capabilities/sandboxes/python/build.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Build Sandboxes Workflows - -Build sandbox flows with an explicit boundary, a clear reset path, and observable effects. diff --git a/apps/website/content/docs/deep-agents/core-capabilities/sandboxes/python/code.mdx b/apps/website/content/docs/deep-agents/core-capabilities/sandboxes/python/code.mdx deleted file mode 100644 index 91b03b22d..000000000 --- a/apps/website/content/docs/deep-agents/core-capabilities/sandboxes/python/code.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Sandboxes Code - -Code should show the sandbox boundary directly so the reader can see the constraints. diff --git a/apps/website/content/docs/deep-agents/core-capabilities/sandboxes/python/overview.mdx b/apps/website/content/docs/deep-agents/core-capabilities/sandboxes/python/overview.mdx deleted file mode 100644 index b74a952f1..000000000 --- a/apps/website/content/docs/deep-agents/core-capabilities/sandboxes/python/overview.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Sandboxes Overview - -Sandboxes keep risky or isolated operations contained so they can be evaluated safely. - -Use this page when a Deep Agents workflow needs a constrained execution boundary. diff --git a/apps/website/content/docs/deep-agents/core-capabilities/sandboxes/python/prompts.mdx b/apps/website/content/docs/deep-agents/core-capabilities/sandboxes/python/prompts.mdx deleted file mode 100644 index 121cd4233..000000000 --- a/apps/website/content/docs/deep-agents/core-capabilities/sandboxes/python/prompts.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Sandboxes Prompts - -Prompts for sandbox work should define what is isolated and what remains outside the boundary. diff --git a/apps/website/content/docs/deep-agents/core-capabilities/sandboxes/python/testing.mdx b/apps/website/content/docs/deep-agents/core-capabilities/sandboxes/python/testing.mdx deleted file mode 100644 index b4adf0fca..000000000 --- a/apps/website/content/docs/deep-agents/core-capabilities/sandboxes/python/testing.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Sandboxes Testing - -Test sandbox behavior by checking isolation, allowed actions, and cleanup behavior. diff --git a/apps/website/content/docs/deep-agents/core-capabilities/skills/python/build.mdx b/apps/website/content/docs/deep-agents/core-capabilities/skills/python/build.mdx deleted file mode 100644 index 0c324a29c..000000000 --- a/apps/website/content/docs/deep-agents/core-capabilities/skills/python/build.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Build Skills Workflows - -Build skills as explicit, narrow tools that have one job and one expected result. diff --git a/apps/website/content/docs/deep-agents/core-capabilities/skills/python/code.mdx b/apps/website/content/docs/deep-agents/core-capabilities/skills/python/code.mdx deleted file mode 100644 index c6fabeba2..000000000 --- a/apps/website/content/docs/deep-agents/core-capabilities/skills/python/code.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Skills Code - -Code examples should map the skill definition to a concrete, reusable workflow. diff --git a/apps/website/content/docs/deep-agents/core-capabilities/skills/python/overview.mdx b/apps/website/content/docs/deep-agents/core-capabilities/skills/python/overview.mdx deleted file mode 100644 index 5f0eecbfb..000000000 --- a/apps/website/content/docs/deep-agents/core-capabilities/skills/python/overview.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Skills Overview - -Skills package repeatable behavior into focused, reusable instructions. - -Use this page when the agent should follow a narrow operational playbook instead of improvising. diff --git a/apps/website/content/docs/deep-agents/core-capabilities/skills/python/prompts.mdx b/apps/website/content/docs/deep-agents/core-capabilities/skills/python/prompts.mdx deleted file mode 100644 index 700496a11..000000000 --- a/apps/website/content/docs/deep-agents/core-capabilities/skills/python/prompts.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Skills Prompts - -Prompts for skills should state the exact procedure the agent is expected to follow. diff --git a/apps/website/content/docs/deep-agents/core-capabilities/skills/python/testing.mdx b/apps/website/content/docs/deep-agents/core-capabilities/skills/python/testing.mdx deleted file mode 100644 index c9ca11229..000000000 --- a/apps/website/content/docs/deep-agents/core-capabilities/skills/python/testing.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Skills Testing - -Test skills by asserting the instruction shape and the observable output they are meant to produce. diff --git a/apps/website/content/docs/deep-agents/core-capabilities/subagents/python/build.mdx b/apps/website/content/docs/deep-agents/core-capabilities/subagents/python/build.mdx deleted file mode 100644 index 9bfae79b6..000000000 --- a/apps/website/content/docs/deep-agents/core-capabilities/subagents/python/build.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Build Subagent Workflows - -Structure subagent work so each worker can complete its slice without depending on hidden state. diff --git a/apps/website/content/docs/deep-agents/core-capabilities/subagents/python/code.mdx b/apps/website/content/docs/deep-agents/core-capabilities/subagents/python/code.mdx deleted file mode 100644 index 73dad6668..000000000 --- a/apps/website/content/docs/deep-agents/core-capabilities/subagents/python/code.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Subagents Code - -Code should make delegation and handoff points obvious so the main flow stays readable. diff --git a/apps/website/content/docs/deep-agents/core-capabilities/subagents/python/overview.mdx b/apps/website/content/docs/deep-agents/core-capabilities/subagents/python/overview.mdx deleted file mode 100644 index 7a10627a6..000000000 --- a/apps/website/content/docs/deep-agents/core-capabilities/subagents/python/overview.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Subagents Overview - -Subagents split a larger task into focused pieces with explicit ownership and verification boundaries. - -Use this page when a Deep Agents workflow benefits from separate workers instead of a single broad plan. diff --git a/apps/website/content/docs/deep-agents/core-capabilities/subagents/python/prompts.mdx b/apps/website/content/docs/deep-agents/core-capabilities/subagents/python/prompts.mdx deleted file mode 100644 index 911f3031f..000000000 --- a/apps/website/content/docs/deep-agents/core-capabilities/subagents/python/prompts.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Subagents Prompts - -Prompts for subagents should define the ownership boundary, inputs, and the exact return shape. diff --git a/apps/website/content/docs/deep-agents/core-capabilities/subagents/python/testing.mdx b/apps/website/content/docs/deep-agents/core-capabilities/subagents/python/testing.mdx deleted file mode 100644 index 24e3e3a17..000000000 --- a/apps/website/content/docs/deep-agents/core-capabilities/subagents/python/testing.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Subagents Testing - -Test subagent flows by asserting the split between parent coordination and worker output. diff --git a/apps/website/content/docs/deep-agents/getting-started/overview/python/overview.mdx b/apps/website/content/docs/deep-agents/getting-started/overview/python/overview.mdx deleted file mode 100644 index e7ed40005..000000000 --- a/apps/website/content/docs/deep-agents/getting-started/overview/python/overview.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Deep Agents Overview - -Deep Agents helps you build multi-step agent workflows that can plan, execute, and recover with less orchestration code. - -Start here when you want the fastest path to a working Deep Agents app in Python. The product-first guides focus on the core workflow, then connect you to planning, prompts, code, and testing as you grow. diff --git a/apps/website/content/docs/getting-started.mdx b/apps/website/content/docs/getting-started.mdx deleted file mode 100644 index 28a6a5c4f..000000000 --- a/apps/website/content/docs/getting-started.mdx +++ /dev/null @@ -1,50 +0,0 @@ -# Getting Started - -Add Angular Agent Framework to an Angular 20+ application with a LangGraph Platform endpoint. - -## Installation - -```bash -npm install @ngaf/langgraph @ngaf/chat -``` - -`@ngaf/langgraph` provides `agent()` and `provideAgent()`. `@ngaf/chat` provides the ready-to-use `` composition and lower-level primitives. - -## Setup - -In `app.config.ts`, add `provideAgent()` to your providers: - -```typescript -import type { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@ngaf/langgraph'; - -export const appConfig: ApplicationConfig = { - providers: [ - provideAgent({ apiUrl: 'http://localhost:2024' }), - ], -}; -``` - -## Your first component - -```typescript -import { Component, signal } from '@angular/core'; -import { agent } from '@ngaf/langgraph'; -import { ChatComponent as NgafChatComponent } from '@ngaf/chat'; - -@Component({ - selector: 'app-chat', - standalone: true, - imports: [NgafChatComponent], - template: ``, -}) -export class ChatComponent { - chat = agent({ - assistantId: 'chat_agent', - threadId: signal(localStorage.getItem('threadId')), - onThreadId: (id) => localStorage.setItem('threadId', id), - }); -} -``` - -`agent()` must be called in an Angular injection context. Use a component field initializer or constructor; do not create it in `ngOnInit` or an async callback. diff --git a/apps/website/content/docs/introduction.mdx b/apps/website/content/docs/introduction.mdx deleted file mode 100644 index 3c6f37a37..000000000 --- a/apps/website/content/docs/introduction.mdx +++ /dev/null @@ -1,49 +0,0 @@ -# Introduction - -Angular Agent Framework provides Angular-native agent UI primitives, LangGraph streaming adapters, and runtime-neutral contracts for building agent experiences in Angular apps. - -The core packages are: - -- `@ngaf/langgraph` for `agent()`, `provideAgent()`, and LangGraph Platform streaming. -- `@ngaf/chat` for chat compositions, primitives, markdown rendering, tool calls, interrupts, thread UI, and generative UI surfaces. -- `@ngaf/render` for rendering JSON Render specs with Angular components. -- `@ngaf/ag-ui` for adapting AG-UI agents into the same runtime-neutral chat contract. - -## Install - -```bash -npm install @ngaf/langgraph @ngaf/chat -``` - -## Minimal usage - -```typescript -import type { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@ngaf/langgraph'; - -export const appConfig: ApplicationConfig = { - providers: [provideAgent({ apiUrl: 'http://localhost:2024' })], -}; -``` - -```typescript -import { Component, signal } from '@angular/core'; -import { agent } from '@ngaf/langgraph'; -import { ChatComponent as NgafChatComponent } from '@ngaf/chat'; - -@Component({ - selector: 'app-chat', - standalone: true, - imports: [NgafChatComponent], - template: ``, -}) -export class ChatComponent { - chat = agent({ - assistantId: 'chat_agent', - threadId: signal(localStorage.getItem('threadId')), - onThreadId: (id) => localStorage.setItem('threadId', id), - }); -} -``` - -`agent()` must run in an Angular injection context, such as a component field initializer or constructor. diff --git a/apps/website/content/docs/langgraph/core-capabilities/deployment-runtime/python/build.mdx b/apps/website/content/docs/langgraph/core-capabilities/deployment-runtime/python/build.mdx deleted file mode 100644 index c7ecda9e6..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/deployment-runtime/python/build.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Build Deployment Runtime - -Define the deployment boundaries, entrypoints, and runtime dependencies up front. diff --git a/apps/website/content/docs/langgraph/core-capabilities/deployment-runtime/python/code.mdx b/apps/website/content/docs/langgraph/core-capabilities/deployment-runtime/python/code.mdx deleted file mode 100644 index 20f376166..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/deployment-runtime/python/code.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Deployment Runtime Code - -Show the module wiring that survives packaging and deployment unchanged. diff --git a/apps/website/content/docs/langgraph/core-capabilities/deployment-runtime/python/overview.mdx b/apps/website/content/docs/langgraph/core-capabilities/deployment-runtime/python/overview.mdx deleted file mode 100644 index 2a519d33f..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/deployment-runtime/python/overview.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Deployment Runtime Overview - -Deployment runtime covers how a LangGraph behaves once it is running in production. diff --git a/apps/website/content/docs/langgraph/core-capabilities/deployment-runtime/python/prompts.mdx b/apps/website/content/docs/langgraph/core-capabilities/deployment-runtime/python/prompts.mdx deleted file mode 100644 index 4b5e2a315..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/deployment-runtime/python/prompts.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Deployment Runtime Prompts - -Describe the production hosting assumptions and the runtime behavior they imply. diff --git a/apps/website/content/docs/langgraph/core-capabilities/deployment-runtime/python/testing.mdx b/apps/website/content/docs/langgraph/core-capabilities/deployment-runtime/python/testing.mdx deleted file mode 100644 index 660218f69..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/deployment-runtime/python/testing.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Deployment Runtime Testing - -Check that the deployment-ready graph still behaves correctly under its packaged entrypoint. diff --git a/apps/website/content/docs/langgraph/core-capabilities/durable-execution/python/build.mdx b/apps/website/content/docs/langgraph/core-capabilities/durable-execution/python/build.mdx deleted file mode 100644 index 16966c176..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/durable-execution/python/build.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Build Durable Execution - -Structure the graph so checkpoints, retries, and resumptions preserve the intended flow. diff --git a/apps/website/content/docs/langgraph/core-capabilities/durable-execution/python/code.mdx b/apps/website/content/docs/langgraph/core-capabilities/durable-execution/python/code.mdx deleted file mode 100644 index 826d1622b..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/durable-execution/python/code.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Durable Execution Code - -Show a graph shape that can stop and later continue from the same checkpointed state. diff --git a/apps/website/content/docs/langgraph/core-capabilities/durable-execution/python/overview.mdx b/apps/website/content/docs/langgraph/core-capabilities/durable-execution/python/overview.mdx deleted file mode 100644 index ab653f218..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/durable-execution/python/overview.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Durable Execution Overview - -Durable execution keeps a LangGraph run recoverable even when a process stops or an interrupt occurs. diff --git a/apps/website/content/docs/langgraph/core-capabilities/durable-execution/python/prompts.mdx b/apps/website/content/docs/langgraph/core-capabilities/durable-execution/python/prompts.mdx deleted file mode 100644 index 62100752f..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/durable-execution/python/prompts.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Durable Execution Prompts - -Describe durable execution in terms of progress, continuation, and recoverable side effects. diff --git a/apps/website/content/docs/langgraph/core-capabilities/durable-execution/python/testing.mdx b/apps/website/content/docs/langgraph/core-capabilities/durable-execution/python/testing.mdx deleted file mode 100644 index ab9844930..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/durable-execution/python/testing.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Durable Execution Testing - -Verify a resumed run produces the same outcome as a fresh run with the same inputs. diff --git a/apps/website/content/docs/langgraph/core-capabilities/interrupts/python/build.mdx b/apps/website/content/docs/langgraph/core-capabilities/interrupts/python/build.mdx deleted file mode 100644 index 1b3f97f3e..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/interrupts/python/build.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Build Interrupt Workflows - -Place interrupts where human input or external approval is part of the graph contract. diff --git a/apps/website/content/docs/langgraph/core-capabilities/interrupts/python/code.mdx b/apps/website/content/docs/langgraph/core-capabilities/interrupts/python/code.mdx deleted file mode 100644 index 1496ae5d7..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/interrupts/python/code.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Interrupts Code - -Demonstrate a pause point and the continuation data needed to resume safely. diff --git a/apps/website/content/docs/langgraph/core-capabilities/interrupts/python/overview.mdx b/apps/website/content/docs/langgraph/core-capabilities/interrupts/python/overview.mdx deleted file mode 100644 index eed280ec5..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/interrupts/python/overview.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Interrupts Overview - -Interrupts let a LangGraph run pause for an external decision and resume without losing context. diff --git a/apps/website/content/docs/langgraph/core-capabilities/interrupts/python/prompts.mdx b/apps/website/content/docs/langgraph/core-capabilities/interrupts/python/prompts.mdx deleted file mode 100644 index d3185b4bd..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/interrupts/python/prompts.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Interrupts Prompts - -Explain why the graph stops, what the operator sees, and what resumes the run. diff --git a/apps/website/content/docs/langgraph/core-capabilities/interrupts/python/testing.mdx b/apps/website/content/docs/langgraph/core-capabilities/interrupts/python/testing.mdx deleted file mode 100644 index 786999017..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/interrupts/python/testing.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Interrupts Testing - -Assert that a paused run can be resumed and that the final state stays consistent. diff --git a/apps/website/content/docs/langgraph/core-capabilities/memory/python/build.mdx b/apps/website/content/docs/langgraph/core-capabilities/memory/python/build.mdx deleted file mode 100644 index ee03415ac..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/memory/python/build.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Build Memory Workflows - -Decide which state should be persisted and which state should stay local to a run. diff --git a/apps/website/content/docs/langgraph/core-capabilities/memory/python/code.mdx b/apps/website/content/docs/langgraph/core-capabilities/memory/python/code.mdx deleted file mode 100644 index 2cc327894..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/memory/python/code.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Memory Code - -Show how memory is read, updated, and reused across graph steps. diff --git a/apps/website/content/docs/langgraph/core-capabilities/memory/python/overview.mdx b/apps/website/content/docs/langgraph/core-capabilities/memory/python/overview.mdx deleted file mode 100644 index 14e888815..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/memory/python/overview.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Memory Overview - -Memory in LangGraph preserves useful context that later steps can read back. diff --git a/apps/website/content/docs/langgraph/core-capabilities/memory/python/prompts.mdx b/apps/website/content/docs/langgraph/core-capabilities/memory/python/prompts.mdx deleted file mode 100644 index 9cdfdb7ce..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/memory/python/prompts.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Memory Prompts - -Describe the memory contract so readers know what is retained and when it changes. diff --git a/apps/website/content/docs/langgraph/core-capabilities/memory/python/testing.mdx b/apps/website/content/docs/langgraph/core-capabilities/memory/python/testing.mdx deleted file mode 100644 index 3143300a5..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/memory/python/testing.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Memory Testing - -Verify that memory is preserved where expected and reset where required. diff --git a/apps/website/content/docs/langgraph/core-capabilities/persistence/python/build.mdx b/apps/website/content/docs/langgraph/core-capabilities/persistence/python/build.mdx deleted file mode 100644 index 784ed7d3c..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/persistence/python/build.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Build Persistence Workflows - -Model the state you want to keep, then checkpoint only the pieces that matter for recovery. diff --git a/apps/website/content/docs/langgraph/core-capabilities/persistence/python/code.mdx b/apps/website/content/docs/langgraph/core-capabilities/persistence/python/code.mdx deleted file mode 100644 index 3ad62c67d..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/persistence/python/code.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Persistence Code - -Show the minimal checkpointing pattern that makes a graph resumable in practice. diff --git a/apps/website/content/docs/langgraph/core-capabilities/persistence/python/overview.mdx b/apps/website/content/docs/langgraph/core-capabilities/persistence/python/overview.mdx deleted file mode 100644 index 5629799f7..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/persistence/python/overview.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Persistence Overview - -LangGraph persistence keeps execution state available across retries and resumptions. diff --git a/apps/website/content/docs/langgraph/core-capabilities/persistence/python/prompts.mdx b/apps/website/content/docs/langgraph/core-capabilities/persistence/python/prompts.mdx deleted file mode 100644 index 5366ee9fe..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/persistence/python/prompts.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Persistence Prompts - -Prompts should explain what state is durable and what can be reconstructed after a resume. diff --git a/apps/website/content/docs/langgraph/core-capabilities/persistence/python/testing.mdx b/apps/website/content/docs/langgraph/core-capabilities/persistence/python/testing.mdx deleted file mode 100644 index d4f96555b..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/persistence/python/testing.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Persistence Testing - -Test that resumed runs reuse prior state and that retries do not duplicate durable work. diff --git a/apps/website/content/docs/langgraph/core-capabilities/streaming/python/build.mdx b/apps/website/content/docs/langgraph/core-capabilities/streaming/python/build.mdx deleted file mode 100644 index e27e25d00..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/streaming/python/build.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Build Streaming Apps - -Build streaming apps by deciding which events matter to the user and which events should stay internal. - -Start with a small graph, stream only the outputs that improve the experience, and add more detail once the baseline flow is stable. diff --git a/apps/website/content/docs/langgraph/core-capabilities/streaming/python/code.mdx b/apps/website/content/docs/langgraph/core-capabilities/streaming/python/code.mdx deleted file mode 100644 index ddf65d133..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/streaming/python/code.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Streaming Code - -The code for streaming usually wires the graph runtime to an event handler or UI layer that can consume incremental updates. - -Keep the stream adapter small and explicit so you can reason about event order, buffering, and final output separately. diff --git a/apps/website/content/docs/langgraph/core-capabilities/streaming/python/overview.mdx b/apps/website/content/docs/langgraph/core-capabilities/streaming/python/overview.mdx deleted file mode 100644 index d597dc213..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/streaming/python/overview.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Streaming Overview - -Streaming in LangGraph lets your app surface intermediate progress while the graph is still running. - -This guide covers the user-facing behavior of streamed updates and how they fit into a graph that can branch, retry, or pause. diff --git a/apps/website/content/docs/langgraph/core-capabilities/streaming/python/prompts.mdx b/apps/website/content/docs/langgraph/core-capabilities/streaming/python/prompts.mdx deleted file mode 100644 index 72853978e..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/streaming/python/prompts.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Streaming Prompts - -Streaming prompts should encourage concise progress updates and avoid exposing noisy internal reasoning. - -Use the prompt to shape what gets surfaced, when the graph should update the UI, and how to handle partial results. diff --git a/apps/website/content/docs/langgraph/core-capabilities/streaming/python/testing.mdx b/apps/website/content/docs/langgraph/core-capabilities/streaming/python/testing.mdx deleted file mode 100644 index e42a540ea..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/streaming/python/testing.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Streaming Testing - -Test streaming by validating event order, final state, and the behavior when a stream is interrupted. - -Cover the cases where the user sees partial output, the graph retries, and the final response differs from the first draft. diff --git a/apps/website/content/docs/langgraph/core-capabilities/subgraphs/python/build.mdx b/apps/website/content/docs/langgraph/core-capabilities/subgraphs/python/build.mdx deleted file mode 100644 index 7f813cb58..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/subgraphs/python/build.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Build Subgraphs - -Use subgraphs when you want a smaller graph to own a focused part of the overall workflow. diff --git a/apps/website/content/docs/langgraph/core-capabilities/subgraphs/python/code.mdx b/apps/website/content/docs/langgraph/core-capabilities/subgraphs/python/code.mdx deleted file mode 100644 index 56dba14c9..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/subgraphs/python/code.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Subgraphs Code - -Show a parent graph invoking a smaller graph with clear inputs and outputs. diff --git a/apps/website/content/docs/langgraph/core-capabilities/subgraphs/python/overview.mdx b/apps/website/content/docs/langgraph/core-capabilities/subgraphs/python/overview.mdx deleted file mode 100644 index 48d8e1365..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/subgraphs/python/overview.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Subgraphs Overview - -Subgraphs split a larger LangGraph into smaller units that can be reused and reasoned about independently. diff --git a/apps/website/content/docs/langgraph/core-capabilities/subgraphs/python/prompts.mdx b/apps/website/content/docs/langgraph/core-capabilities/subgraphs/python/prompts.mdx deleted file mode 100644 index 8e882cfef..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/subgraphs/python/prompts.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Subgraphs Prompts - -Explain the boundary between the parent graph and the reusable subgraph. diff --git a/apps/website/content/docs/langgraph/core-capabilities/subgraphs/python/testing.mdx b/apps/website/content/docs/langgraph/core-capabilities/subgraphs/python/testing.mdx deleted file mode 100644 index 48c9e4bf2..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/subgraphs/python/testing.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Subgraphs Testing - -Check that the parent graph and subgraph agree on state handoff and return values. diff --git a/apps/website/content/docs/langgraph/core-capabilities/time-travel/python/build.mdx b/apps/website/content/docs/langgraph/core-capabilities/time-travel/python/build.mdx deleted file mode 100644 index d48824433..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/time-travel/python/build.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Build Time Travel - -Keep enough execution history to replay or inspect previous states without guesswork. diff --git a/apps/website/content/docs/langgraph/core-capabilities/time-travel/python/code.mdx b/apps/website/content/docs/langgraph/core-capabilities/time-travel/python/code.mdx deleted file mode 100644 index 77b1843bf..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/time-travel/python/code.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Time Travel Code - -Demonstrate the snapshot points that make historical inspection practical. diff --git a/apps/website/content/docs/langgraph/core-capabilities/time-travel/python/overview.mdx b/apps/website/content/docs/langgraph/core-capabilities/time-travel/python/overview.mdx deleted file mode 100644 index 5d0e743fc..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/time-travel/python/overview.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Time Travel Overview - -Time travel helps you inspect earlier states and understand how a run evolved. diff --git a/apps/website/content/docs/langgraph/core-capabilities/time-travel/python/prompts.mdx b/apps/website/content/docs/langgraph/core-capabilities/time-travel/python/prompts.mdx deleted file mode 100644 index 3ad9df861..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/time-travel/python/prompts.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Time Travel Prompts - -State explicitly what a developer can rewind, inspect, or compare across runs. diff --git a/apps/website/content/docs/langgraph/core-capabilities/time-travel/python/testing.mdx b/apps/website/content/docs/langgraph/core-capabilities/time-travel/python/testing.mdx deleted file mode 100644 index f98fbc674..000000000 --- a/apps/website/content/docs/langgraph/core-capabilities/time-travel/python/testing.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Time Travel Testing - -Verify that historical snapshots expose the execution state you expect. diff --git a/apps/website/content/docs/langgraph/getting-started/overview/python/overview.mdx b/apps/website/content/docs/langgraph/getting-started/overview/python/overview.mdx deleted file mode 100644 index fcc8d395f..000000000 --- a/apps/website/content/docs/langgraph/getting-started/overview/python/overview.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# LangGraph Overview - -LangGraph is the product-first path for building stateful LLM applications with explicit control over flow, state, and streaming. - -Use this overview when you want to move from a basic graph to a production-ready app with clear transitions and predictable behavior. diff --git a/apps/website/content/docs/licensing/api/api-docs.json b/apps/website/content/docs/licensing/api/api-docs.json new file mode 100644 index 000000000..c72b757ce --- /dev/null +++ b/apps/website/content/docs/licensing/api/api-docs.json @@ -0,0 +1,309 @@ +[ + { + "name": "EmitNagOptions", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "package", + "type": "string", + "description": "Fully-qualified npm package name, e.g. \"@ngaf/langgraph\".", + "optional": false + }, + { + "name": "warn", + "type": "object", + "description": "Injected warn channel; defaults to `console.warn`.", + "optional": true + } + ], + "examples": [] + }, + { + "name": "EvaluateOptions", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "graceSec", + "type": "number", + "description": "Grace window in seconds after `exp`. Defaults to 14 days.", + "optional": true + }, + { + "name": "isNoncommercial", + "type": "boolean", + "description": "If true, missing token resolves to `noncommercial` instead of `missing`.", + "optional": true + }, + { + "name": "nowSec", + "type": "number", + "description": "Current time in epoch seconds. Injected for testability.", + "optional": false + } + ], + "examples": [] + }, + { + "name": "EvaluateResult", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "claims", + "type": "LicenseClaims", + "description": "Populated when the token was valid (licensed / grace / expired).", + "optional": true + }, + { + "name": "status", + "type": "LicenseStatus", + "description": "", + "optional": false + } + ], + "examples": [] + }, + { + "name": "LicenseClaims", + "kind": "interface", + "description": "Claims carried inside a signed license token.", + "properties": [ + { + "name": "exp", + "type": "number", + "description": "Expires-at, epoch seconds.", + "optional": false + }, + { + "name": "iat", + "type": "number", + "description": "Issued-at, epoch seconds.", + "optional": false + }, + { + "name": "seats", + "type": "number", + "description": "Seat count (>=1).", + "optional": false + }, + { + "name": "sub", + "type": "string", + "description": "Customer id (Stripe customer).", + "optional": false + }, + { + "name": "tier", + "type": "LicenseTier", + "description": "Tier the license grants.", + "optional": false + } + ], + "examples": [] + }, + { + "name": "RunLicenseCheckOptions", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "isNoncommercial", + "type": "boolean", + "description": "Hint that the environment is noncommercial (e.g. NODE_ENV !== 'production').", + "optional": true + }, + { + "name": "nowSec", + "type": "number", + "description": "Current time in epoch seconds. Defaults to now. Injected for testability.", + "optional": true + }, + { + "name": "package", + "type": "string", + "description": "Fully-qualified host package name.", + "optional": false + }, + { + "name": "publicKey", + "type": "Uint8Array<>", + "description": "Ed25519 public key to verify against.", + "optional": false + }, + { + "name": "token", + "type": "string", + "description": "User-supplied license token, or undefined.", + "optional": true + }, + { + "name": "warn", + "type": "object", + "description": "Injected warn channel, defaults to console.warn.", + "optional": true + } + ], + "examples": [] + }, + { + "name": "LicenseStatus", + "kind": "type", + "description": "", + "signature": "\"licensed\" | \"grace\" | \"expired\" | \"missing\" | \"tampered\" | \"noncommercial\"", + "examples": [] + }, + { + "name": "LicenseTier", + "kind": "type", + "description": "The tier a license grants.", + "signature": "\"developer-seat\" | \"app-deployment\" | \"enterprise\"", + "examples": [] + }, + { + "name": "VerifyReason", + "kind": "type", + "description": "", + "signature": "\"malformed\" | \"tampered\"", + "examples": [] + }, + { + "name": "VerifyResult", + "kind": "type", + "description": "", + "signature": "object | object", + "examples": [] + }, + { + "name": "emitNag", + "kind": "function", + "description": "", + "signature": "emitNag(result: Pick, options: EmitNagOptions): void", + "params": [ + { + "name": "result", + "type": "Pick", + "description": "", + "optional": false + }, + { + "name": "options", + "type": "EmitNagOptions", + "description": "", + "optional": false + } + ], + "returns": { + "type": "void", + "description": "" + }, + "examples": [] + }, + { + "name": "evaluateLicense", + "kind": "function", + "description": "", + "signature": "evaluateLicense(verifyResult: VerifyResult | undefined, options: EvaluateOptions): EvaluateResult", + "params": [ + { + "name": "verifyResult", + "type": "VerifyResult | undefined", + "description": "", + "optional": false + }, + { + "name": "options", + "type": "EvaluateOptions", + "description": "", + "optional": false + } + ], + "returns": { + "type": "EvaluateResult", + "description": "" + }, + "examples": [] + }, + { + "name": "inferNoncommercial", + "kind": "function", + "description": "Heuristic default for the `isNoncommercial` flag in `runLicenseCheck`.\n\nReturns `true` when `process.env.NODE_ENV` is anything other than\n`\"production\"` — treating dev/test/CI builds as noncommercial so the\nlicense nag stays quiet. Returns `false` when there is no `process`\nglobal (browser-like environments without a dev shim), which is the\nsafe default for production bundles.\n\nCallers can always override via the `isNoncommercial` option on\n`runLicenseCheck`; this is only the fallback.", + "signature": "inferNoncommercial(): boolean", + "params": [], + "returns": { + "type": "boolean", + "description": "" + }, + "examples": [] + }, + { + "name": "runLicenseCheck", + "kind": "function", + "description": "", + "signature": "runLicenseCheck(options: RunLicenseCheckOptions): Promise", + "params": [ + { + "name": "options", + "type": "RunLicenseCheckOptions", + "description": "", + "optional": false + } + ], + "returns": { + "type": "Promise", + "description": "" + }, + "examples": [] + }, + { + "name": "signLicense", + "kind": "function", + "description": "Sign license claims with an Ed25519 private key.\nReturns a compact token of the form `.`,\ncompatible with parseLicenseToken and verifyLicense.", + "signature": "signLicense(claims: LicenseClaims, privateKey: Uint8Array<>): Promise", + "params": [ + { + "name": "claims", + "type": "LicenseClaims", + "description": "", + "optional": false + }, + { + "name": "privateKey", + "type": "Uint8Array<>", + "description": "", + "optional": false + } + ], + "returns": { + "type": "Promise", + "description": "" + }, + "examples": [] + }, + { + "name": "verifyLicense", + "kind": "function", + "description": "Offline-verify a license token against a raw Ed25519 public key.\nNo network calls, no time-based checks — see evaluateLicense\nfor grace-period / expiry logic.", + "signature": "verifyLicense(token: string, publicKey: Uint8Array<>): Promise", + "params": [ + { + "name": "token", + "type": "string", + "description": "", + "optional": false + }, + { + "name": "publicKey", + "type": "Uint8Array<>", + "description": "", + "optional": false + } + ], + "returns": { + "type": "Promise", + "description": "" + }, + "examples": [] + } +] \ No newline at end of file diff --git a/apps/website/content/docs/render/core-capabilities/computed-functions/python/build.mdx b/apps/website/content/docs/render/core-capabilities/computed-functions/python/build.mdx deleted file mode 100644 index e744f56c4..000000000 --- a/apps/website/content/docs/render/core-capabilities/computed-functions/python/build.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Build Computed Function Workflows - -Design computed functions as pure derivations that take store values as inputs and return a single result for spec binding. diff --git a/apps/website/content/docs/render/core-capabilities/computed-functions/python/code.mdx b/apps/website/content/docs/render/core-capabilities/computed-functions/python/code.mdx deleted file mode 100644 index 7084ae288..000000000 --- a/apps/website/content/docs/render/core-capabilities/computed-functions/python/code.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Computed Function Code - -Code examples for computed functions show how to register derivations that combine or transform store values for use in spec bindings. diff --git a/apps/website/content/docs/render/core-capabilities/computed-functions/python/overview.mdx b/apps/website/content/docs/render/core-capabilities/computed-functions/python/overview.mdx deleted file mode 100644 index c40be5d97..000000000 --- a/apps/website/content/docs/render/core-capabilities/computed-functions/python/overview.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Computed Functions Overview - -Computed functions derive new values from store state so specs can bind to calculated results instead of raw data. - -Use this page when you need to transform or combine state values before they reach a component. diff --git a/apps/website/content/docs/render/core-capabilities/computed-functions/python/prompts.mdx b/apps/website/content/docs/render/core-capabilities/computed-functions/python/prompts.mdx deleted file mode 100644 index b9590eb78..000000000 --- a/apps/website/content/docs/render/core-capabilities/computed-functions/python/prompts.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Computed Function Prompts - -Prompts for computed functions should name the input store keys, the transformation logic, and the expected output type. diff --git a/apps/website/content/docs/render/core-capabilities/computed-functions/python/testing.mdx b/apps/website/content/docs/render/core-capabilities/computed-functions/python/testing.mdx deleted file mode 100644 index 65d4bbddf..000000000 --- a/apps/website/content/docs/render/core-capabilities/computed-functions/python/testing.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Computed Function Testing - -Test computed functions by setting input store values and verifying that the derived output matches the expected result. diff --git a/apps/website/content/docs/render/core-capabilities/element-rendering/python/build.mdx b/apps/website/content/docs/render/core-capabilities/element-rendering/python/build.mdx deleted file mode 100644 index 7a648942f..000000000 --- a/apps/website/content/docs/render/core-capabilities/element-rendering/python/build.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Build Element Rendering Workflows - -Design element rendering steps around clear input bindings and predictable output events for each component. diff --git a/apps/website/content/docs/render/core-capabilities/element-rendering/python/code.mdx b/apps/website/content/docs/render/core-capabilities/element-rendering/python/code.mdx deleted file mode 100644 index 8cc45c963..000000000 --- a/apps/website/content/docs/render/core-capabilities/element-rendering/python/code.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Element Rendering Code - -Code examples for element rendering show how individual spec nodes resolve to Angular components with bound inputs and outputs. diff --git a/apps/website/content/docs/render/core-capabilities/element-rendering/python/overview.mdx b/apps/website/content/docs/render/core-capabilities/element-rendering/python/overview.mdx deleted file mode 100644 index 32c8fb73c..000000000 --- a/apps/website/content/docs/render/core-capabilities/element-rendering/python/overview.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Element Rendering Overview - -Element rendering resolves individual spec nodes into their matching Angular components and binds inputs and outputs. - -Use this page when you need to understand how a single spec element becomes a rendered component instance. diff --git a/apps/website/content/docs/render/core-capabilities/element-rendering/python/prompts.mdx b/apps/website/content/docs/render/core-capabilities/element-rendering/python/prompts.mdx deleted file mode 100644 index 97c61e81b..000000000 --- a/apps/website/content/docs/render/core-capabilities/element-rendering/python/prompts.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Element Rendering Prompts - -Prompts for element rendering should specify the component type, expected inputs, and any output event handlers. diff --git a/apps/website/content/docs/render/core-capabilities/element-rendering/python/testing.mdx b/apps/website/content/docs/render/core-capabilities/element-rendering/python/testing.mdx deleted file mode 100644 index 7a7b742b2..000000000 --- a/apps/website/content/docs/render/core-capabilities/element-rendering/python/testing.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Element Rendering Testing - -Test element rendering by asserting that each spec node produces the correct component with the expected input values and event bindings. diff --git a/apps/website/content/docs/render/core-capabilities/registry/python/build.mdx b/apps/website/content/docs/render/core-capabilities/registry/python/build.mdx deleted file mode 100644 index fa0d90d06..000000000 --- a/apps/website/content/docs/render/core-capabilities/registry/python/build.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Build Registry Workflows - -Design registry workflows around a single registration step at bootstrap that maps every spec type to its component class. diff --git a/apps/website/content/docs/render/core-capabilities/registry/python/code.mdx b/apps/website/content/docs/render/core-capabilities/registry/python/code.mdx deleted file mode 100644 index d8e99db78..000000000 --- a/apps/website/content/docs/render/core-capabilities/registry/python/code.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Registry Code - -Code examples for the registry show how to register components, override defaults, and look up types at runtime. diff --git a/apps/website/content/docs/render/core-capabilities/registry/python/overview.mdx b/apps/website/content/docs/render/core-capabilities/registry/python/overview.mdx deleted file mode 100644 index f9a787e5d..000000000 --- a/apps/website/content/docs/render/core-capabilities/registry/python/overview.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Registry Overview - -The component registry maps spec type strings to Angular component classes so the renderer knows which component to instantiate. - -Use this page when you need to register custom components or understand how type resolution works. diff --git a/apps/website/content/docs/render/core-capabilities/registry/python/prompts.mdx b/apps/website/content/docs/render/core-capabilities/registry/python/prompts.mdx deleted file mode 100644 index 1a6ff5ad7..000000000 --- a/apps/website/content/docs/render/core-capabilities/registry/python/prompts.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Registry Prompts - -Prompts for registry configuration should list the spec type strings and the Angular components they resolve to. diff --git a/apps/website/content/docs/render/core-capabilities/registry/python/testing.mdx b/apps/website/content/docs/render/core-capabilities/registry/python/testing.mdx deleted file mode 100644 index 5e0b1302f..000000000 --- a/apps/website/content/docs/render/core-capabilities/registry/python/testing.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Registry Testing - -Test registry configuration by verifying that each registered type string resolves to the correct Angular component class. diff --git a/apps/website/content/docs/render/core-capabilities/repeat-loops/python/build.mdx b/apps/website/content/docs/render/core-capabilities/repeat-loops/python/build.mdx deleted file mode 100644 index 0df1d509b..000000000 --- a/apps/website/content/docs/render/core-capabilities/repeat-loops/python/build.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Build Repeat Loop Workflows - -Design repeat loops around a clear data source key and a template spec that defines how each item renders. diff --git a/apps/website/content/docs/render/core-capabilities/repeat-loops/python/code.mdx b/apps/website/content/docs/render/core-capabilities/repeat-loops/python/code.mdx deleted file mode 100644 index 5c376a7a7..000000000 --- a/apps/website/content/docs/render/core-capabilities/repeat-loops/python/code.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Repeat Loop Code - -Code examples for repeat loops show how to bind an array state key to a template spec and render one component per item. diff --git a/apps/website/content/docs/render/core-capabilities/repeat-loops/python/overview.mdx b/apps/website/content/docs/render/core-capabilities/repeat-loops/python/overview.mdx deleted file mode 100644 index ffd52a4a6..000000000 --- a/apps/website/content/docs/render/core-capabilities/repeat-loops/python/overview.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Repeat Loops Overview - -Repeat loops let a single spec node expand into multiple rendered elements by iterating over an array in the state store. - -Use this page when you need to render lists or collections driven by dynamic data. diff --git a/apps/website/content/docs/render/core-capabilities/repeat-loops/python/prompts.mdx b/apps/website/content/docs/render/core-capabilities/repeat-loops/python/prompts.mdx deleted file mode 100644 index 4ba3e9388..000000000 --- a/apps/website/content/docs/render/core-capabilities/repeat-loops/python/prompts.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Repeat Loop Prompts - -Prompts for repeat loops should specify the array key, the item template spec, and any index or tracking behavior. diff --git a/apps/website/content/docs/render/core-capabilities/repeat-loops/python/testing.mdx b/apps/website/content/docs/render/core-capabilities/repeat-loops/python/testing.mdx deleted file mode 100644 index 404d9d116..000000000 --- a/apps/website/content/docs/render/core-capabilities/repeat-loops/python/testing.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Repeat Loop Testing - -Test repeat loops by setting an array value in the store and verifying that the correct number of child components render with the right data. diff --git a/apps/website/content/docs/render/core-capabilities/spec-rendering/python/build.mdx b/apps/website/content/docs/render/core-capabilities/spec-rendering/python/build.mdx deleted file mode 100644 index 8ccdf6661..000000000 --- a/apps/website/content/docs/render/core-capabilities/spec-rendering/python/build.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Build Spec Rendering Workflows - -Design spec rendering around small, composable spec objects that each describe one visual unit. diff --git a/apps/website/content/docs/render/core-capabilities/spec-rendering/python/code.mdx b/apps/website/content/docs/render/core-capabilities/spec-rendering/python/code.mdx deleted file mode 100644 index eab4678ce..000000000 --- a/apps/website/content/docs/render/core-capabilities/spec-rendering/python/code.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Spec Rendering Code - -Code examples for spec rendering show how to construct spec objects and pass them to RenderSpecComponent for dynamic rendering. diff --git a/apps/website/content/docs/render/core-capabilities/spec-rendering/python/overview.mdx b/apps/website/content/docs/render/core-capabilities/spec-rendering/python/overview.mdx deleted file mode 100644 index 5ff7f5882..000000000 --- a/apps/website/content/docs/render/core-capabilities/spec-rendering/python/overview.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Spec Rendering Overview - -Spec rendering converts JSON specification objects into live Angular component trees at runtime. - -Use this page when you need to understand how render specs map to components and how the rendering pipeline processes them. diff --git a/apps/website/content/docs/render/core-capabilities/spec-rendering/python/prompts.mdx b/apps/website/content/docs/render/core-capabilities/spec-rendering/python/prompts.mdx deleted file mode 100644 index 1774c87fa..000000000 --- a/apps/website/content/docs/render/core-capabilities/spec-rendering/python/prompts.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Spec Rendering Prompts - -Prompts for spec rendering should describe the desired component tree shape, the spec types involved, and the expected visual outcome. diff --git a/apps/website/content/docs/render/core-capabilities/spec-rendering/python/testing.mdx b/apps/website/content/docs/render/core-capabilities/spec-rendering/python/testing.mdx deleted file mode 100644 index 90fcffb34..000000000 --- a/apps/website/content/docs/render/core-capabilities/spec-rendering/python/testing.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Spec Rendering Testing - -Test spec rendering by verifying that a given spec object produces the correct component tree and DOM output. diff --git a/apps/website/content/docs/render/core-capabilities/state-management/python/build.mdx b/apps/website/content/docs/render/core-capabilities/state-management/python/build.mdx deleted file mode 100644 index 96ae2c13e..000000000 --- a/apps/website/content/docs/render/core-capabilities/state-management/python/build.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Build State Management Workflows - -Design state management around a flat signal store where each key maps to a single reactive value consumed by specs. diff --git a/apps/website/content/docs/render/core-capabilities/state-management/python/code.mdx b/apps/website/content/docs/render/core-capabilities/state-management/python/code.mdx deleted file mode 100644 index bf794824c..000000000 --- a/apps/website/content/docs/render/core-capabilities/state-management/python/code.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# State Management Code - -Code examples for state management show how to define store keys, update values through signals, and bind them to spec properties. diff --git a/apps/website/content/docs/render/core-capabilities/state-management/python/overview.mdx b/apps/website/content/docs/render/core-capabilities/state-management/python/overview.mdx deleted file mode 100644 index 04836c706..000000000 --- a/apps/website/content/docs/render/core-capabilities/state-management/python/overview.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# State Management Overview - -State management in Render uses a signal-based store that feeds reactive values into spec bindings at runtime. - -Use this page when you need to understand how state flows from the store into rendered components. diff --git a/apps/website/content/docs/render/core-capabilities/state-management/python/prompts.mdx b/apps/website/content/docs/render/core-capabilities/state-management/python/prompts.mdx deleted file mode 100644 index c181f2aae..000000000 --- a/apps/website/content/docs/render/core-capabilities/state-management/python/prompts.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# State Management Prompts - -Prompts for state management should name the store keys, their types, and how spec bindings reference them. diff --git a/apps/website/content/docs/render/core-capabilities/state-management/python/testing.mdx b/apps/website/content/docs/render/core-capabilities/state-management/python/testing.mdx deleted file mode 100644 index 28dc2978c..000000000 --- a/apps/website/content/docs/render/core-capabilities/state-management/python/testing.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# State Management Testing - -Test state management by updating store values and verifying that bound component inputs reflect the new state. diff --git a/apps/website/content/docs/render/events.mdx b/apps/website/content/docs/render/events.mdx deleted file mode 100644 index 1613c5234..000000000 --- a/apps/website/content/docs/render/events.mdx +++ /dev/null @@ -1,109 +0,0 @@ ---- -title: Events -description: Generalized event system for render-spec — handler events, state changes, and lifecycle signals. ---- - -# Render Events - -`RenderSpecComponent` emits a stream of typed events via its `events` output. This provides visibility into handler execution, state mutations, and component lifecycle without coupling to any specific transport. - -## Event Types - -All events are discriminated by the `type` field: - -```typescript -type RenderEvent = - | RenderHandlerEvent - | RenderStateChangeEvent - | RenderLifecycleEvent; -``` - -### RenderHandlerEvent - -Emitted when a handler executes in response to a component event (e.g., button click). - -| Field | Type | Description | -|-------|------|-------------| -| `type` | `'handler'` | Discriminant | -| `action` | `string` | Handler name from the `on` binding | -| `params` | `Record` | Resolved parameters | -| `result` | `unknown` | Return value (if sync or awaited) | - -### RenderStateChangeEvent - -Emitted when the `StateStore` is mutated via `set()` or `update()`. - -| Field | Type | Description | -|-------|------|-------------| -| `type` | `'stateChange'` | Discriminant | -| `path` | `string` | JSON Pointer path that changed | -| `value` | `unknown` | New value | -| `snapshot` | `Record` | Full state after change | - -### RenderLifecycleEvent - -Emitted on component mount/destroy at spec or element level. - -| Field | Type | Description | -|-------|------|-------------| -| `type` | `'lifecycle'` | Discriminant | -| `event` | `'mounted' \| 'destroyed'` | Lifecycle phase | -| `scope` | `'spec' \| 'element'` | Granularity | -| `elementKey` | `string?` | Element key (element scope only) | -| `elementType` | `string?` | Component type (element scope only) | - -## Usage - -```html - -``` - -```typescript -onEvent(event: RenderEvent) { - switch (event.type) { - case 'handler': - console.log(`Handler ${event.action} called with`, event.params); - break; - case 'stateChange': - console.log(`State changed at ${event.path}:`, event.value); - break; - case 'lifecycle': - console.log(`${event.scope} ${event.event}`, event.elementKey ?? ''); - break; - } -} -``` - -## Handlers + Events Together - -Input handlers execute locally. The `events` output notifies the consumer after execution: - -```typescript -const handlers = { - saveForm: (params) => api.save(params), -}; - -// Consumer also sees: { type: 'handler', action: 'saveForm', params: {...}, result: {...} } -``` - -Handlers handle, events notify. Use handlers for local side effects, events for routing to external systems. - -## Element Lifecycle (Opt-In) - -By default, only spec-level lifecycle events are emitted. To enable element-level lifecycle for a specific element, set `lifecycle: true` on the element in the spec: - -```json -{ - "root": "main", - "elements": { - "main": { "type": "Card", "props": {}, "lifecycle": true } - } -} -``` - -This emits `mounted` and `destroyed` events for that element, including `elementKey` and `elementType`. diff --git a/apps/website/content/docs/render/getting-started/overview/python/overview.mdx b/apps/website/content/docs/render/getting-started/overview/python/overview.mdx deleted file mode 100644 index 105364458..000000000 --- a/apps/website/content/docs/render/getting-started/overview/python/overview.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Render Overview - -Render lets you drive Angular component trees from JSON specifications, so layouts and content can change without redeploying code. - -Start here when you want the fastest path to a working Render app in Angular. The product-first guides focus on the core workflow, then connect you to specs, registries, state, and testing as you grow. diff --git a/apps/website/content/docs/telemetry/api/api-docs.json b/apps/website/content/docs/telemetry/api/api-docs.json new file mode 100644 index 000000000..cf7df9074 --- /dev/null +++ b/apps/website/content/docs/telemetry/api/api-docs.json @@ -0,0 +1,453 @@ +[ + { + "name": "NgafBrowserEvent", + "kind": "type", + "description": "", + "signature": "\"ngaf:browser_provided\" | \"ngaf:browser_chat_init\"", + "examples": [] + }, + { + "name": "NgafEvent", + "kind": "type", + "description": "", + "signature": "NgafNodeEvent | NgafBrowserEvent", + "examples": [] + }, + { + "name": "NgafNodeEvent", + "kind": "type", + "description": "", + "signature": "\"ngaf:postinstall\" | \"ngaf:runtime_instance_created\" | \"ngaf:runtime_request_created\" | \"ngaf:stream_started\" | \"ngaf:stream_ended\" | \"ngaf:stream_errored\"", + "examples": [] + }, + { + "name": "getAnonId", + "kind": "function", + "description": "", + "signature": "getAnonId(): string", + "params": [], + "returns": { + "type": "string", + "description": "" + }, + "examples": [] + }, + { + "name": "getDisableReason", + "kind": "function", + "description": "", + "signature": "getDisableReason(env: ProcessEnv<>): DisableReason", + "params": [ + { + "name": "env", + "type": "ProcessEnv<>", + "description": "", + "optional": false + } + ], + "returns": { + "type": "DisableReason", + "description": "" + }, + "examples": [] + }, + { + "name": "isTelemetryDisabled", + "kind": "function", + "description": "", + "signature": "isTelemetryDisabled(env: ProcessEnv<>): boolean", + "params": [ + { + "name": "env", + "type": "ProcessEnv<>", + "description": "", + "optional": false + } + ], + "returns": { + "type": "boolean", + "description": "" + }, + "examples": [] + }, + { + "name": "sha256", + "kind": "function", + "description": "", + "signature": "sha256(input: string): Promise", + "params": [ + { + "name": "input", + "type": "string", + "description": "", + "optional": false + } + ], + "returns": { + "type": "Promise", + "description": "" + }, + "examples": [] + }, + { + "name": "shouldSample", + "kind": "function", + "description": "", + "signature": "shouldSample(rate: number, anonId: string): boolean", + "params": [ + { + "name": "rate", + "type": "number", + "description": "", + "optional": false + }, + { + "name": "anonId", + "type": "string", + "description": "", + "optional": false + } + ], + "returns": { + "type": "boolean", + "description": "" + }, + "examples": [] + }, + { + "name": "RuntimeInstanceTelemetry", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "angularVersion", + "type": "string", + "description": "", + "optional": true + }, + { + "name": "apiKey", + "type": "string", + "description": "", + "optional": true + }, + { + "name": "model", + "type": "string", + "description": "", + "optional": true + }, + { + "name": "provider", + "type": "string", + "description": "", + "optional": true + }, + { + "name": "transport", + "type": "string", + "description": "", + "optional": false + } + ], + "examples": [] + }, + { + "name": "RuntimeRequestTelemetry", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "model", + "type": "string", + "description": "", + "optional": true + }, + { + "name": "provider", + "type": "string", + "description": "", + "optional": true + }, + { + "name": "requestType", + "type": "string", + "description": "", + "optional": false + }, + { + "name": "transport", + "type": "string", + "description": "", + "optional": false + } + ], + "examples": [] + }, + { + "name": "StreamTelemetry", + "kind": "interface", + "description": "", + "properties": [ + { + "name": "durationMs", + "type": "number", + "description": "", + "optional": true + }, + { + "name": "model", + "type": "string", + "description": "", + "optional": false + }, + { + "name": "provider", + "type": "string", + "description": "", + "optional": false + } + ], + "examples": [] + }, + { + "name": "CaptureResult", + "kind": "type", + "description": "", + "signature": "object | object", + "examples": [] + }, + { + "name": "captureEvent", + "kind": "function", + "description": "", + "signature": "captureEvent(event: NgafNodeEvent, properties: Record): Promise", + "params": [ + { + "name": "event", + "type": "NgafNodeEvent", + "description": "", + "optional": false + }, + { + "name": "properties", + "type": "Record", + "description": "", + "optional": false + } + ], + "returns": { + "type": "Promise", + "description": "" + }, + "examples": [] + }, + { + "name": "capturePostinstall", + "kind": "function", + "description": "", + "signature": "capturePostinstall(input: PostinstallInput): Promise", + "params": [ + { + "name": "input", + "type": "PostinstallInput", + "description": "", + "optional": false + } + ], + "returns": { + "type": "Promise", + "description": "" + }, + "examples": [] + }, + { + "name": "captureRuntimeInstanceCreated", + "kind": "function", + "description": "", + "signature": "captureRuntimeInstanceCreated(input: RuntimeInstanceTelemetry): Promise", + "params": [ + { + "name": "input", + "type": "RuntimeInstanceTelemetry", + "description": "", + "optional": false + } + ], + "returns": { + "type": "Promise", + "description": "" + }, + "examples": [] + }, + { + "name": "captureRuntimeRequestCreated", + "kind": "function", + "description": "", + "signature": "captureRuntimeRequestCreated(input: RuntimeRequestTelemetry): Promise", + "params": [ + { + "name": "input", + "type": "RuntimeRequestTelemetry", + "description": "", + "optional": false + } + ], + "returns": { + "type": "Promise", + "description": "" + }, + "examples": [] + }, + { + "name": "captureStreamEnded", + "kind": "function", + "description": "", + "signature": "captureStreamEnded(input: StreamTelemetry): Promise", + "params": [ + { + "name": "input", + "type": "StreamTelemetry", + "description": "", + "optional": false + } + ], + "returns": { + "type": "Promise", + "description": "" + }, + "examples": [] + }, + { + "name": "captureStreamErrored", + "kind": "function", + "description": "", + "signature": "captureStreamErrored(input: StreamTelemetry & { error: unknown }): Promise", + "params": [ + { + "name": "input", + "type": "StreamTelemetry & { error: unknown }", + "description": "", + "optional": false + } + ], + "returns": { + "type": "Promise", + "description": "" + }, + "examples": [] + }, + { + "name": "captureStreamStarted", + "kind": "function", + "description": "", + "signature": "captureStreamStarted(input: StreamTelemetry): Promise", + "params": [ + { + "name": "input", + "type": "StreamTelemetry", + "description": "", + "optional": false + } + ], + "returns": { + "type": "Promise", + "description": "" + }, + "examples": [] + }, + { + "name": "disableTelemetry", + "kind": "function", + "description": "", + "signature": "disableTelemetry(): void", + "params": [], + "returns": { + "type": "void", + "description": "" + }, + "examples": [] + }, + { + "name": "getEmailDomain", + "kind": "function", + "description": "", + "signature": "getEmailDomain(email: unknown): string | null", + "params": [ + { + "name": "email", + "type": "unknown", + "description": "", + "optional": false + } + ], + "returns": { + "type": "string | null", + "description": "" + }, + "examples": [] + }, + { + "name": "getSourcePage", + "kind": "function", + "description": "", + "signature": "getSourcePage(value: unknown): string", + "params": [ + { + "name": "value", + "type": "unknown", + "description": "", + "optional": false + } + ], + "returns": { + "type": "string", + "description": "" + }, + "examples": [] + }, + { + "name": "normalizePostHogHost", + "kind": "function", + "description": "", + "signature": "normalizePostHogHost(host: unknown): string", + "params": [ + { + "name": "host", + "type": "unknown", + "description": "", + "optional": false + } + ], + "returns": { + "type": "string", + "description": "" + }, + "examples": [] + }, + { + "name": "toSafeAnalyticsString", + "kind": "function", + "description": "", + "signature": "toSafeAnalyticsString(value: unknown, maxLength: number): string | undefined", + "params": [ + { + "name": "value", + "type": "unknown", + "description": "", + "optional": false + }, + { + "name": "maxLength", + "type": "number", + "description": "", + "optional": false + } + ], + "returns": { + "type": "string | undefined", + "description": "" + }, + "examples": [] + } +] \ No newline at end of file diff --git a/apps/website/e2e/website.spec.ts b/apps/website/e2e/website.spec.ts index bd2ee6604..c028bfc9b 100644 --- a/apps/website/e2e/website.spec.ts +++ b/apps/website/e2e/website.spec.ts @@ -66,6 +66,11 @@ test('mobile viewport renders nav', async ({ page }) => { test('/llms.txt returns plain text', async ({ page }) => { const response = await page.goto('/llms.txt'); expect(response?.headers()['content-type']).toContain('text/plain'); + const body = await page.locator('body').textContent(); + expect(body).toContain('@ngaf/a2ui'); + expect(body).toContain('@ngaf/telemetry'); + expect(body).toContain('ChatMessageListComponent'); + expect(body).not.toContain('ChatMessagesComponent'); }); test('/llms-full.txt includes generated API reference content', async ({ request }) => { @@ -75,8 +80,11 @@ test('/llms-full.txt includes generated API reference content', async ({ request const body = await response.text(); expect(body).toContain('## API Reference (TypeDoc)'); + expect(body).toContain('### a2ui'); expect(body).toContain('### agent'); expect(body).toContain('### chat'); + expect(body).toContain('### licensing'); + expect(body).toContain('### telemetry'); expect(body).not.toContain('API reference not yet generated'); }); @@ -121,6 +129,31 @@ test('docs pages render canonical and social metadata', async ({ page }) => { ); }); +test('representative docs pages do not create page-level horizontal overflow', async ({ page }) => { + const routes = [ + '/docs', + '/docs/agent/getting-started/introduction', + '/docs/agent/api/agent', + '/docs/chat/components/chat-tool-calls', + '/docs/render/a2ui/overview', + '/docs/telemetry/guides/browser', + ]; + const widths = [320, 375, 768, 1280]; + + for (const width of widths) { + await page.setViewportSize({ width, height: 900 }); + + for (const route of routes) { + await page.goto(route); + const overflow = await page.evaluate(() => ( + document.documentElement.scrollWidth - document.documentElement.clientWidth + )); + + expect(overflow, `${route} at ${width}px`).toBeLessThanOrEqual(1); + } + } +}); + test('marketing pages link to downloadable whitepaper PDFs', async ({ page }) => { const expectedDownloads: Record = { '/': '/whitepaper.pdf', diff --git a/apps/website/scripts/generate-api-docs.ts b/apps/website/scripts/generate-api-docs.ts index 2a4be552e..574685f64 100644 --- a/apps/website/scripts/generate-api-docs.ts +++ b/apps/website/scripts/generate-api-docs.ts @@ -119,36 +119,56 @@ function reflectionToEntry(ref: any): ApiDocEntry | null { return null; } +function collectApiEntries(reflections: any[]): ApiDocEntry[] { + return reflections.flatMap((ref) => { + const entry = reflectionToEntry(ref); + if (entry) return [entry]; + return collectApiEntries(ref.children ?? []); + }); +} + interface LibraryEntryConfig { /** Doc-site library slug (e.g. 'agent', 'chat') — used as the output folder under apps/website/content/docs/. */ docSlug: string; - /** TypeDoc entry point — usually libs//src/public-api.ts. */ - entryPoint: string; + /** TypeDoc entry points — usually libs//src/public-api.ts. */ + entryPoints: string[]; } const LIBRARIES: LibraryEntryConfig[] = [ - { docSlug: 'agent', entryPoint: 'libs/langgraph/src/public-api.ts' }, - { docSlug: 'chat', entryPoint: 'libs/chat/src/public-api.ts' }, - { docSlug: 'render', entryPoint: 'libs/render/src/public-api.ts' }, - { docSlug: 'ag-ui', entryPoint: 'libs/ag-ui/src/public-api.ts' }, + { docSlug: 'agent', entryPoints: ['libs/langgraph/src/public-api.ts'] }, + { docSlug: 'chat', entryPoints: ['libs/chat/src/public-api.ts', 'libs/chat/testing/public-api.ts'] }, + { docSlug: 'render', entryPoints: ['libs/render/src/public-api.ts'] }, + { docSlug: 'ag-ui', entryPoints: ['libs/ag-ui/src/public-api.ts'] }, + { docSlug: 'a2ui', entryPoints: ['libs/a2ui/src/index.ts'] }, + { docSlug: 'licensing', entryPoints: ['libs/licensing/src/index.ts'] }, + { + docSlug: 'telemetry', + entryPoints: [ + 'libs/telemetry/src/index.ts', + 'libs/telemetry/src/browser/public-api.ts', + 'libs/telemetry/src/node/index.ts', + 'libs/telemetry/src/shared/public-api.ts', + ], + }, ]; async function generateForLibrary(cfg: LibraryEntryConfig): Promise { const outDir = `apps/website/content/docs/${cfg.docSlug}/api`; - if (!fs.existsSync(cfg.entryPoint)) { - console.warn(`Entry point not found for ${cfg.docSlug}: ${cfg.entryPoint} — writing empty api-docs.json`); + const missingEntryPoints = cfg.entryPoints.filter((entryPoint) => !fs.existsSync(entryPoint)); + if (missingEntryPoints.length > 0) { + console.warn(`Entry point not found for ${cfg.docSlug}: ${missingEntryPoints.join(', ')} — writing empty api-docs.json`); fs.mkdirSync(outDir, { recursive: true }); fs.writeFileSync(path.join(outDir, 'api-docs.json'), JSON.stringify([], null, 2)); return; } - const libDir = path.dirname(path.dirname(cfg.entryPoint)); + const libDir = path.dirname(path.dirname(cfg.entryPoints[0])); const libTsconfig = fs.existsSync(path.join(libDir, 'tsconfig.lib.json')) ? path.join(libDir, 'tsconfig.lib.json') : undefined; const app = await Application.bootstrapWithPlugins({ - entryPoints: [cfg.entryPoint], + entryPoints: cfg.entryPoints, skipErrorChecking: true, ...(libTsconfig ? { tsconfig: libTsconfig } : {}), }); @@ -156,11 +176,7 @@ async function generateForLibrary(cfg: LibraryEntryConfig): Promise { const project = await app.convert(); if (!project) throw new Error(`TypeDoc failed to convert ${cfg.docSlug}`); - const entries: ApiDocEntry[] = []; - for (const child of project.children ?? []) { - const entry = reflectionToEntry(child); - if (entry) entries.push(entry); - } + const entries = collectApiEntries(project.children ?? []); fs.mkdirSync(outDir, { recursive: true }); fs.writeFileSync(path.join(outDir, 'api-docs.json'), JSON.stringify(entries, null, 2)); diff --git a/apps/website/src/app/llms-full.txt/route.ts b/apps/website/src/app/llms-full.txt/route.ts index 8cb7751f1..5031170c3 100644 --- a/apps/website/src/app/llms-full.txt/route.ts +++ b/apps/website/src/app/llms-full.txt/route.ts @@ -1,16 +1,22 @@ import { NextResponse } from 'next/server'; import fs from 'fs'; import path from 'path'; +import a2uiApiDocs from '../../../content/docs/a2ui/api/api-docs.json'; import agentApiDocs from '../../../content/docs/agent/api/api-docs.json'; import agUiApiDocs from '../../../content/docs/ag-ui/api/api-docs.json'; import chatApiDocs from '../../../content/docs/chat/api/api-docs.json'; +import licensingApiDocs from '../../../content/docs/licensing/api/api-docs.json'; import renderApiDocs from '../../../content/docs/render/api/api-docs.json'; +import telemetryApiDocs from '../../../content/docs/telemetry/api/api-docs.json'; const API_DOCS: Record = { + a2ui: a2uiApiDocs, 'ag-ui': agUiApiDocs, agent: agentApiDocs, chat: chatApiDocs, + licensing: licensingApiDocs, render: renderApiDocs, + telemetry: telemetryApiDocs, }; function loadApiDocs(): string { diff --git a/apps/website/src/app/llms.txt/route.ts b/apps/website/src/app/llms.txt/route.ts index 82f6f0fd6..acb3c6cb6 100644 --- a/apps/website/src/app/llms.txt/route.ts +++ b/apps/website/src/app/llms.txt/route.ts @@ -25,8 +25,9 @@ function buildLlmsTxt(): string { '- @ngaf/langgraph — adapter for LangGraph / LangGraph Platform', '- @ngaf/ag-ui — adapter for any AG-UI-compatible backend (CrewAI, Mastra, Microsoft AF, AG2, Pydantic AI, AWS Strands, CopilotKit runtime)', '- @ngaf/render — generative UI runtime (Vercel json-render + Google A2UI)', - '- @ngaf/a2ui — A2UI catalog components', - '- @ngaf/licensing — license verification client', + '- @ngaf/a2ui — protocol types, JSONL parser, dynamic value resolver, and pointer helpers for A2UI streams', + '- @ngaf/licensing — offline license verification and non-blocking package check helpers', + '- @ngaf/telemetry — browser, Node, and shared telemetry helpers with privacy controls', '', '## Install', '# LangGraph backend:', @@ -37,7 +38,7 @@ function buildLlmsTxt(): string { '## Key API', '- LangGraphAgent — unified type returned by agent(); exposes messages/status/isLoading/error/toolCalls/history signals + submit/stop methods', '- agent({ apiUrl, assistantId }) — single call that creates and returns a LangGraphAgent; no toAgent() step needed', - '- ChatComponent, ChatMessagesComponent, ChatInputComponent — composable Angular components consuming the runtime-neutral Agent contract', + '- ChatComponent, ChatMessageListComponent, ChatInputComponent — composable Angular components consuming the runtime-neutral Agent contract', '- mockLangGraphAgent — testing utility with a writable signal-backed LangGraphAgent', '- runAgentConformance / runAgentWithHistoryConformance — conformance suites for adapter authors', '', diff --git a/apps/website/src/components/shared/Footer.tsx b/apps/website/src/components/shared/Footer.tsx index d9c6d8dd4..9f8050da4 100644 --- a/apps/website/src/components/shared/Footer.tsx +++ b/apps/website/src/components/shared/Footer.tsx @@ -64,7 +64,7 @@ function NewsletterForm() { } return ( -
+ setEmail(e.target.value)} required disabled={state === 'submitting'} - className="text-sm rounded-lg px-3 py-2 flex-1" + className="text-sm rounded-lg px-3 py-2 flex-1 min-w-0" style={{ background: tokens.surfaces.surface, border: `1px solid ${tokens.surfaces.border}`, diff --git a/apps/website/src/components/shared/Nav.tsx b/apps/website/src/components/shared/Nav.tsx index b0cec7c2a..69946ef09 100644 --- a/apps/website/src/components/shared/Nav.tsx +++ b/apps/website/src/components/shared/Nav.tsx @@ -119,7 +119,7 @@ export function Nav() { {/* Desktop links */} -
+
{links.map((l) => l.external ? ( { setOpen(!open); if (!open) setMobileTab(isDocsPage ? 'docs' : 'site'); }} aria-label={open ? 'Close menu' : 'Open menu'} style={{ color: tokens.colors.textPrimary }}> @@ -185,7 +185,7 @@ export function Nav() { {/* Mobile full-screen overlay — rendered outside nav to avoid stacking context issues */} {open && ( -
Boolean(href)); } +const contentRoot = path.join(process.cwd(), 'apps', 'website', 'content', 'docs'); + +function walkMdxFiles(dir: string): string[] { + return fs.readdirSync(dir).flatMap((entry) => { + const fullPath = path.join(dir, entry); + const stat = fs.statSync(fullPath); + if (stat.isDirectory()) return walkMdxFiles(fullPath); + return entry.endsWith('.mdx') ? [fullPath] : []; + }); +} + +function getConfiguredDocPath({ library, section, slug }: { library: string; section: string; slug: string }): string { + return path.join(contentRoot, library, section, `${slug}.mdx`); +} + +function findPackageImports(content: string): string[] { + const imports = Array.from(content.matchAll(/from\s+['"](?@ngaf\/[^'"]+)['"]/g), (match) => match.groups?.pkg); + const dynamicImports = Array.from(content.matchAll(/import\(\s*['"](?@ngaf\/[^'"]+)['"]\s*\)/g), (match) => match.groups?.pkg); + return [...imports, ...dynamicImports].filter((pkg): pkg is string => Boolean(pkg)); +} + describe('website docs bindings', () => { it('lists all doc slugs from config', () => { const slugs = getAllDocSlugs(); @@ -30,6 +53,15 @@ describe('website docs bindings', () => { } }); + it('does not leave tracked MDX docs outside the configured docs inventory', () => { + const configuredPaths = new Set(getAllDocSlugs().map((slug) => getConfiguredDocPath(slug))); + const unconfigured = walkMdxFiles(contentRoot) + .filter((filePath) => !configuredPaths.has(filePath)) + .map((filePath) => path.relative(contentRoot, filePath)); + + expect(unconfigured).toEqual([]); + }); + it('loads a doc by library, section and slug', () => { const doc = getDocBySlug('agent', 'getting-started', 'introduction'); expect(doc).not.toBeNull(); @@ -98,6 +130,50 @@ describe('website docs bindings', () => { expect(brokenLinks).toEqual([]); }); + it('uses package imports that match published package entry points', () => { + const validPackages = new Set([ + '@ngaf/a2ui', + '@ngaf/ag-ui', + '@ngaf/chat', + '@ngaf/chat/testing', + '@ngaf/langgraph', + '@ngaf/licensing', + '@ngaf/render', + '@ngaf/telemetry', + '@ngaf/telemetry/browser', + '@ngaf/telemetry/node', + '@ngaf/telemetry/shared', + ]); + + const invalidImports: string[] = []; + + for (const { library, section, slug } of getAllDocSlugs()) { + const doc = getDocBySlug(library, section, slug); + if (!doc) continue; + + for (const pkg of findPackageImports(doc.content)) { + if (!validPackages.has(pkg)) { + invalidImports.push(`${library}/${section}/${slug} -> ${pkg}`); + } + } + } + + expect(invalidImports).toEqual([]); + }); + + it('has generated API docs for every documented package surface', () => { + const librariesWithApiDocs = ['agent', 'chat', 'render', 'ag-ui', 'a2ui', 'licensing', 'telemetry']; + const missingApiDocs = librariesWithApiDocs.filter((library) => { + const apiDocsPath = path.join(contentRoot, library, 'api', 'api-docs.json'); + if (!fs.existsSync(apiDocsPath)) return true; + + const entries = JSON.parse(fs.readFileSync(apiDocsPath, 'utf8')) as unknown[]; + return entries.length === 0; + }); + + expect(missingApiDocs).toEqual([]); + }); + it('returns null for non-existent doc', () => { expect(getDocBySlug('agent', 'guides', 'nonexistent')).toBeNull(); });