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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion COMMERCIAL.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
`@cacheplane/stream-resource` is source-available software dual-licensed under:

- **PolyForm Noncommercial 1.0.0** — free for noncommercial use (see [`LICENSE`](./LICENSE))
- **StreamResource Commercial License** — required for commercial use (see [`LICENSE-COMMERCIAL`](./LICENSE-COMMERCIAL))
- **Angular Stream Resource Commercial License** — required for commercial use (see [`LICENSE-COMMERCIAL`](./LICENSE-COMMERCIAL))

## What requires a commercial license?

Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<p align="center">
<img
src="https://stream-resource.dev/assets/hero.svg"
alt="stream-resource — The Enterprise Streaming Resource for LangChain and Angular"
alt="Angular Stream Resource — The Enterprise Streaming Resource for LangChain and Angular"
width="100%"
/>
</p>
Expand Down Expand Up @@ -111,7 +111,7 @@ That's it. `chat.messages()` is an Angular Signal. Bind it directly in your temp
<p align="center">
<img
src="https://stream-resource.dev/assets/arch-diagram.svg"
alt="stream-resource architecture: Angular Component → streamResource() → StreamManager Bridge → LangGraph Platform, with signals returned reactively"
alt="Angular Stream Resource architecture: Angular Component → streamResource() → StreamManager Bridge → LangGraph Platform, with signals returned reactively"
width="100%"
/>
</p>
Expand Down Expand Up @@ -148,6 +148,6 @@ That's it. `chat.messages()` is an Angular Signal. Bind it directly in your temp
`@cacheplane/stream-resource` is source-available software dual-licensed:

- **PolyForm Noncommercial 1.0.0** — free for noncommercial use (personal projects, academic, research, non-profit internal tooling). See [`LICENSE`](./LICENSE).
- **StreamResource Commercial License** — required for any for-profit or revenue-generating use. See [`LICENSE-COMMERCIAL`](./LICENSE-COMMERCIAL) and [`COMMERCIAL.md`](./COMMERCIAL.md).
- **Angular Stream Resource Commercial License** — required for any for-profit or revenue-generating use. See [`LICENSE-COMMERCIAL`](./LICENSE-COMMERCIAL) and [`COMMERCIAL.md`](./COMMERCIAL.md).

This is **not** an open-source license. Commercial use — including use in a for-profit product, service, or organization — requires a paid commercial license. See [pricing](https://stream-resource.dev/pricing).
2 changes: 1 addition & 1 deletion apps/website/public/AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# stream-resource v0.0.1
# Angular Stream Resource v0.0.1

Angular streaming library for LangChain/LangGraph. Provides `streamResource()` — full parity with React's `useStream()`.

Expand Down
2 changes: 1 addition & 1 deletion apps/website/public/CLAUDE.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# stream-resource v0.0.1
# Angular Stream Resource v0.0.1

Angular streaming library for LangChain/LangGraph. Provides `streamResource()` — full parity with React's `useStream()`.

Expand Down
4 changes: 2 additions & 2 deletions apps/website/scripts/generate-narrative-docs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ const API_DOCS = 'apps/website/public/api-docs.json';
const TOPICS = [
{
slug: 'introduction',
prompt: 'Write an introduction to the StreamResource Angular library. Explain what it does, who it is for, and why it exists. Include a minimal getting-started example.',
prompt: 'Write an introduction to the Angular Stream Resource library. Explain what it does, who it is for, and why it exists. Include a minimal getting-started example.',
},
{
slug: 'streaming',
Expand All @@ -36,7 +36,7 @@ async function generateDoc(slug: string, prompt: string, apiDocsJson: string): P
max_tokens: 2048,
messages: [{
role: 'user',
content: `You are writing documentation for the StreamResource Angular library.
content: `You are writing documentation for the Angular Stream Resource library.
Here is the TypeDoc API reference JSON:\n\n${apiDocsJson}\n\n${prompt}

Write clean, developer-friendly MDX documentation. Use precise, no-fluff prose. Include code examples. Start with a single # heading.`,
Expand Down
2 changes: 1 addition & 1 deletion apps/website/src/app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ const mono = JetBrains_Mono({
});

export const metadata: Metadata = {
title: 'StreamResource — LangChain Streaming for Angular',
title: 'Angular Stream Resource — LangChain Streaming for Angular',
description: 'The Enterprise Streaming Resource for LangChain and Angular. streamResource() brings full parity with React useStream() to Angular 20+.',
};

Expand Down
2 changes: 1 addition & 1 deletion apps/website/src/app/llms-full.txt/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ function loadAllPrompts(): string {

export async function GET() {
const sections = [
'# stream-resource — Full Reference\n\nSee /llms.txt for a compact summary.\n',
'# Angular Stream Resource — Full Reference\n\nSee /llms.txt for a compact summary.\n',
'## API Reference (TypeDoc)\n\n' + loadApiDocs(),
'## Prompt Recipes\n\n' + loadAllPrompts(),
[
Expand Down
4 changes: 2 additions & 2 deletions apps/website/src/app/llms.txt/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ function buildLlmsTxt(): string {
// Inline version — updated by publish workflow
const version = '0.1.0';
return [
`# stream-resource v${version}`,
`# Angular Stream Resource v${version}`,
'',
"Angular streaming library for LangChain/LangGraph. Provides streamResource() — full parity with React's useStream() hook, built on Angular Signals.",
"Angular Stream Resource — the enterprise streaming library for LangChain/LangGraph. Provides streamResource() — full parity with React's useStream() hook, built on Angular Signals.",
'',
'## Install',
'npm install @cacheplane/stream-resource',
Expand Down
2 changes: 1 addition & 1 deletion apps/website/src/components/landing/GenerativeUIFrame.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ export function GenerativeUIFrame() {
<div
ref={frameRef}
role="img"
aria-label="Animated demo of stream-resource orchestrating a multi-step agent UI"
aria-label="Animated demo of Angular Stream Resource orchestrating a multi-step agent UI"
className="rounded-xl overflow-hidden"
style={{
border: `1px solid ${tokens.glass.border}`,
Expand Down
2 changes: 1 addition & 1 deletion apps/website/src/components/landing/ProblemSection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,7 @@ export function ProblemSection() {
transition: 'opacity 0.4s, transform 0.4s',
}}>
<span style={{ width: 6, height: 6, borderRadius: '50%', background: tokens.colors.accent, display: 'inline-block', animation: 'sr-pulse 1.2s ease-in-out infinite' }} />
StreamResource closes the gap
Angular Stream Resource closes the gap
</div>
<span style={{
fontFamily: 'var(--font-mono,"JetBrains Mono",monospace)', fontSize: '0.78rem', fontWeight: 700,
Expand Down
4 changes: 2 additions & 2 deletions apps/website/src/components/shared/Footer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ export function Footer() {
<div className="grid grid-cols-1 md:grid-cols-4 gap-10 md:gap-8">
{/* Brand */}
<div className="md:col-span-2">
<p className="font-garamond text-xl font-bold mb-2" style={{ color: tokens.colors.textPrimary }}>StreamResource</p>
<p className="font-garamond text-xl font-bold mb-2" style={{ color: tokens.colors.textPrimary }}>Angular Stream Resource</p>
<p className="text-sm mb-4" style={{ color: tokens.colors.textMuted, maxWidth: '36ch', lineHeight: 1.6 }}>
The enterprise streaming resource for LangChain and Angular. Full parity with React useStream(), built natively for Angular 20+.
</p>
Expand Down Expand Up @@ -127,7 +127,7 @@ export function Footer() {
{/* Bottom bar */}
<div className="mt-12 pt-8 flex flex-col sm:flex-row items-start sm:items-center justify-between gap-2 text-xs"
style={{ borderTop: `1px solid ${tokens.glass.border}`, color: tokens.colors.textMuted }}>
<span>&copy; {new Date().getFullYear()} StreamResource. All rights reserved.</span>
<span>&copy; {new Date().getFullYear()} Angular Stream Resource. All rights reserved.</span>
<span>PolyForm Noncommercial 1.0.0 &middot; <Link href="/pricing" className="transition-colors"
onMouseEnter={(e) => (e.currentTarget.style.color = tokens.colors.accent)}
onMouseLeave={(e) => (e.currentTarget.style.color = tokens.colors.textMuted)}>Commercial License</Link></span>
Expand Down
2 changes: 1 addition & 1 deletion apps/website/src/components/shared/Nav.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ export function Nav() {
{/* Top bar */}
<div className="flex items-center justify-between px-6 py-4 md:px-8 md:py-5">
<Link href="/" className="font-garamond text-xl font-bold" style={{ color: tokens.colors.textPrimary }}>
StreamResource
Angular Stream Resource
</Link>

{/* Desktop links */}
Expand Down
2 changes: 1 addition & 1 deletion apps/website/src/lib/docs.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ describe('website docs bindings', () => {
const doc = getDocBySlug('getting-started', 'introduction');
expect(doc).not.toBeNull();
expect(doc?.title).toBe('Introduction');
expect(doc?.content).toContain('StreamResource');
expect(doc?.content).toContain('Angular Stream Resource');
});

it('returns null for non-existent doc', () => {
Expand Down
2 changes: 1 addition & 1 deletion docs/limitations.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# StreamResource — Angular Limitations vs React useStream()
# Angular Stream Resource — Limitations vs React useStream()

Features that are technically impossible or behaviorally degraded when
porting LangGraph's React `useStream()` hook to Angular.
Expand Down
12 changes: 6 additions & 6 deletions docs/superpowers/plans/2026-03-17-angular-library.md
Original file line number Diff line number Diff line change
Expand Up @@ -1384,7 +1384,7 @@ git commit -m "feat(stream-resource): finalize public API barrel exports"
Create `docs/limitations.md`:

```markdown
# StreamResource — Angular Limitations vs React useStream()
# Angular Stream Resource — Angular Limitations vs React useStream()

Features that are technically impossible or behaviorally degraded when
porting LangGraph's React `useStream()` hook to Angular.
Expand Down Expand Up @@ -1611,7 +1611,7 @@ Create `LICENSE`:
```
MIT License (Non-Commercial Use Only)

Copyright (c) 2025 StreamResource Contributors
Copyright (c) 2025 Angular Stream Resource Contributors

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down Expand Up @@ -1642,11 +1642,11 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
Create `LICENSE-COMMERCIAL`:

```
StreamResource Commercial License
Angular Stream Resource Commercial License

Copyright (c) 2025 StreamResource Contributors
Copyright (c) 2025 Angular Stream Resource Contributors

Commercial use of StreamResource requires a paid license.
Commercial use of Angular Stream Resource requires a paid license.

DEVELOPER SEAT LICENSE: $500 per developer seat per year
- Grants commercial use rights for one developer
Expand All @@ -1656,7 +1656,7 @@ DEVELOPER SEAT LICENSE: $500 per developer seat per year

APPLICATION DEPLOYMENT LICENSE: $2,000 per application
- Required for each production application or service that uses
StreamResource commercially
Angular Stream Resource commercially
- Covers all environments (development, staging, production)
- One-time purchase per application

Expand Down
10 changes: 5 additions & 5 deletions docs/superpowers/plans/2026-03-17-readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ apps/website/public/assets/
**Visual specification:**
- Background: `#080705` (near-black)
- Text color: `#d4aa6a` (gold)
- Wordmark: "stream-resource" in EB Garamond-style serif paths
- Wordmark: "Angular Stream Resource" in EB Garamond-style serif paths
- Subtitle: "The Enterprise Streaming Resource for LangChain and Angular" in lighter gold
- Dimensions: 1200 × 300 (standard GitHub README banner ratio)
- No JavaScript, no `<foreignObject>`, no web fonts (paths only — renders everywhere)
Expand All @@ -57,7 +57,7 @@ apps/website/public/assets/
<!-- Decorative left rule -->
<line x1="60" y1="80" x2="60" y2="220" stroke="#d4aa6a" stroke-width="1" stroke-opacity="0.3"/>

<!-- Wordmark: "stream-resource" -->
<!-- Wordmark: "Angular Stream Resource" -->
<!-- Rendered as text with system serif fallback — GitHub SVG renderer supports embedded text -->
<text
x="88"
Expand All @@ -67,7 +67,7 @@ apps/website/public/assets/
font-weight="700"
letter-spacing="-2"
fill="#d4aa6a"
>stream-resource</text>
>Angular Stream Resource</text>

<!-- Tagline -->
<text
Expand Down Expand Up @@ -244,7 +244,7 @@ apps/website/public/assets/
<p align="center">
<img
src="https://stream-resource.vercel.app/assets/hero.svg"
alt="stream-resource — The Enterprise Streaming Resource for LangChain and Angular"
alt="Angular Stream Resource — The Enterprise Streaming Resource for LangChain and Angular"
width="100%"
/>
</p>
Expand Down Expand Up @@ -353,7 +353,7 @@ That's it. `chat.messages()` is an Angular Signal. Bind it directly in your temp
<p align="center">
<img
src="https://stream-resource.vercel.app/assets/arch-diagram.svg"
alt="stream-resource architecture: Angular Component → streamResource() → StreamManager Bridge → LangGraph Platform, with signals returned reactively"
alt="Angular Stream Resource architecture: Angular Component → streamResource() → StreamManager Bridge → LangGraph Platform, with signals returned reactively"
width="100%"
/>
</p>
Expand Down
14 changes: 7 additions & 7 deletions docs/superpowers/plans/2026-03-17-website.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

> **For agentic workers:** REQUIRED: Use superpowers:subagent-driven-development (if subagents available) or superpowers:executing-plans to implement this plan. Steps use checkbox (`- [ ]`) syntax for tracking.

**Goal:** Build the StreamResource marketing website — landing page, pricing, docs, and live demo — deployed to Vercel.
**Goal:** Build the Angular Stream Resource marketing website — landing page, pricing, docs, and live demo — deployed to Vercel.

**Architecture:** Next.js 15 App Router with Tailwind CSS dark luxury design system, Framer Motion scroll-triggered animations, SVG architecture diagram with `animateMotion`, MDX docs with Claude-generated narrative content, and an embedded Angular Elements live demo.

Expand Down Expand Up @@ -283,7 +283,7 @@ export function Footer() {
<a href="https://github.com/your-org/stream-resource" className="hover:text-text-secondary transition-colors">GitHub</a>
</div>
<p className="text-xs text-text-muted">
© {new Date().getFullYear()} StreamResource.{' '}
© {new Date().getFullYear()} Angular Stream Resource.{' '}
<Link href="/pricing" className="hover:text-text-secondary">Commercial use requires a license.</Link>
</p>
</div>
Expand Down Expand Up @@ -580,7 +580,7 @@ export function ArchDiagram() {
ref={ref}
viewBox="0 0 900 200"
className="w-full"
aria-label="StreamResource architecture diagram"
aria-label="Angular Stream Resource architecture diagram"
>
<defs>
<marker id="arrowhead" markerWidth="8" markerHeight="8" refX="8" refY="4" orient="auto">
Expand Down Expand Up @@ -1305,9 +1305,9 @@ export default async function DocsPage({ params }: Props) {
Create `apps/website/content/docs/index.mdx`:

```mdx
# StreamResource Documentation
# Angular Stream Resource Documentation

Welcome to the StreamResource documentation. Run `npm run generate-docs` to
Welcome to the Angular Stream Resource documentation. Run `npm run generate-docs` to
generate the full narrative documentation from the library source.

## Quick Start
Expand Down Expand Up @@ -1815,7 +1815,7 @@ test.describe('Landing page', () => {

test('renders architecture diagram SVG', async ({ page }) => {
await page.goto('/');
await expect(page.locator('svg[aria-label="StreamResource architecture diagram"]')).toBeVisible();
await expect(page.locator('svg[aria-label="Angular Stream Resource architecture diagram"]')).toBeVisible();
});

test('renders install command', async ({ page }) => {
Expand Down Expand Up @@ -1888,7 +1888,7 @@ import { test, expect } from '@playwright/test';
test.describe('Docs page', () => {
test('renders docs index', async ({ page }) => {
await page.goto('/docs');
await expect(page.getByText('StreamResource Documentation')).toBeVisible();
await expect(page.getByText('Angular Stream Resource Documentation')).toBeVisible();
});

test('API reference renders signal table', async ({ page }) => {
Expand Down
8 changes: 4 additions & 4 deletions docs/superpowers/plans/2026-03-18-agentic-additions.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# StreamResource — Agentic Additions Implementation Plan
# Angular Stream Resource — Agentic Additions Implementation Plan

> **For agentic workers:** REQUIRED: Use superpowers:subagent-driven-development (if subagents available) or superpowers:executing-plans to implement this plan. Steps use checkbox (`- [ ]`) syntax for tracking. Set up an isolated workspace first using superpowers:using-git-worktrees.

Expand Down Expand Up @@ -729,7 +729,7 @@ import path from 'path';
import pkg from '../../../package.json';

function buildLlmsTxt(): string {
return `# stream-resource v${pkg.version}
return `# Angular Stream Resource v${pkg.version}

Angular streaming library for LangChain/LangGraph. Provides streamResource() — full parity with React's useStream() hook, built on Angular Signals.

Expand Down Expand Up @@ -798,7 +798,7 @@ function loadAllPrompts(): string {

export async function GET() {
const sections = [
'# stream-resource — Full Reference\n\nSee /llms.txt for a compact summary.\n',
'# Angular Stream Resource — Full Reference\n\nSee /llms.txt for a compact summary.\n',
'## API Reference (TypeDoc)\n\n' + loadApiDocs(),
'## Prompt Recipes\n\n' + loadAllPrompts(),
'## Common Gotchas\n\nstreamResource() MUST be called inside an Angular injection context.\nDo not call it in ngOnInit — use constructor or field initializer.\nDo not mock streamResource() in tests — use MockStreamTransport.\nRxJS is an internal implementation detail — do not import rxjs in consumer code.',
Expand Down Expand Up @@ -844,7 +844,7 @@ These files are generated at build time and served as static downloads from the
Create `apps/website/content/CLAUDE.md.template`:

```
# stream-resource v@VERSION@
# Angular Stream Resource v@VERSION@

Angular streaming library for LangChain/LangGraph. Provides `streamResource()` — full parity with React's `useStream()`.

Expand Down
Loading