diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 528a7fb40..aa1113a2e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -102,7 +102,7 @@ jobs: node-version: 22 cache: npm - run: npm ci - - run: npx tsx apps/cockpit/scripts/deploy-smoke.ts --url https://cockpit.stream-resource.dev --dry-run + - run: npx tsx apps/cockpit/scripts/deploy-smoke.ts --url https://cockpit.cacheplane.ai --dry-run mcp: name: MCP — build / smoke @@ -239,7 +239,7 @@ jobs: if: steps.affected.outputs.website == 'true' run: npx nx e2e website --skip-nx-cache env: - BASE_URL: https://stream-resource.dev + BASE_URL: https://cacheplane.ai - name: Prepare cockpit Vercel project if: steps.affected.outputs.cockpit == 'true' run: | @@ -259,7 +259,7 @@ jobs: - name: Verify deployed cockpit if: steps.affected.outputs.cockpit == 'true' run: | - npx tsx apps/cockpit/scripts/deploy-smoke.ts --url https://cockpit.stream-resource.dev --retries 20 --retry-delay-ms 5000 + npx tsx apps/cockpit/scripts/deploy-smoke.ts --url https://cockpit.cacheplane.ai --retries 20 --retry-delay-ms 5000 # ── Angular examples deploy ────────────────────────────────────────── - name: Check if examples changed @@ -314,6 +314,6 @@ jobs: - name: Run production smoke tests run: npx playwright test apps/cockpit/e2e/production-smoke.spec.ts --reporter=list env: - BASE_URL: https://cockpit.stream-resource.dev - EXAMPLES_URL: https://examples.stream-resource.dev + BASE_URL: https://cockpit.cacheplane.ai + EXAMPLES_URL: https://examples.cacheplane.ai OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} diff --git a/COMMERCIAL.md b/COMMERCIAL.md index 7fe244ca5..8ab6900dd 100644 --- a/COMMERCIAL.md +++ b/COMMERCIAL.md @@ -23,7 +23,7 @@ Any use in a for-profit product, service, or organization requires a paid commer ## Purchase or inquire -- Website: https://stream-resource.dev/pricing +- Website: https://cacheplane.ai/pricing - Email: hello@cacheplane.ai See [`LICENSE-COMMERCIAL`](./LICENSE-COMMERCIAL) for the full commercial license terms. diff --git a/README.md b/README.md index 1ef81f2df..0452fc388 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@

Angular Agent Framework — The Enterprise Streaming Resource for LangChain and Angular @@ -17,7 +17,7 @@ License: PolyForm Noncommercial + Commercial - + Angular 20+ @@ -110,7 +110,7 @@ That's it. `chat.messages()` is an Angular Signal. Bind it directly in your temp

Angular Agent Framework architecture: Angular Component → agent() → StreamManager Bridge → LangGraph Platform, with signals returned reactively @@ -129,17 +129,17 @@ That's it. `chat.messages()` is an Angular Signal. Bind it directly in your temp | **Application Deployment** | $2,000 / app | One-time per application — covers dev, staging, and prod | | **Enterprise** | Custom | Volume licensing, priority support, custom contract | -[Full pricing details and license terms →](https://stream-resource.dev/pricing) +[Full pricing details and license terms →](https://cacheplane.ai/pricing) --- ## Documentation -- [Getting Started](https://stream-resource.dev/docs/getting-started) -- [API Reference](https://stream-resource.dev/api-reference) -- [Testing with MockAgentTransport](https://stream-resource.dev/docs/testing) -- [Human-in-the-Loop / Interrupts](https://stream-resource.dev/docs/interrupts) -- [Subagent Streaming](https://stream-resource.dev/docs/subagents) +- [Getting Started](https://cacheplane.ai/docs/getting-started) +- [API Reference](https://cacheplane.ai/api-reference) +- [Testing with MockAgentTransport](https://cacheplane.ai/docs/testing) +- [Human-in-the-Loop / Interrupts](https://cacheplane.ai/docs/interrupts) +- [Subagent Streaming](https://cacheplane.ai/docs/subagents) --- @@ -150,4 +150,4 @@ That's it. `chat.messages()` is an Angular Signal. Bind it directly in your temp - **PolyForm Noncommercial 1.0.0** — free for noncommercial use (personal projects, academic, research, non-profit internal tooling). See [`LICENSE`](./LICENSE). - **Angular Agent Framework 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). +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://cacheplane.ai/pricing). diff --git a/apps/cockpit/e2e/production-smoke.spec.ts b/apps/cockpit/e2e/production-smoke.spec.ts index 7f00dbad9..fd78774e3 100644 --- a/apps/cockpit/e2e/production-smoke.spec.ts +++ b/apps/cockpit/e2e/production-smoke.spec.ts @@ -4,16 +4,16 @@ import { expect, test } from '@playwright/test'; * Production smoke test — verifies the deployed stack works end-to-end. * * Requires: - * EXAMPLES_URL - e.g., https://examples.stream-resource.dev + * EXAMPLES_URL - e.g., https://examples.cacheplane.ai * OPENAI_API_KEY - for send/receive tests (optional) * * Run: - * BASE_URL=https://cockpit.stream-resource.dev \ - * EXAMPLES_URL=https://examples.stream-resource.dev \ + * BASE_URL=https://cockpit.cacheplane.ai \ + * EXAMPLES_URL=https://examples.cacheplane.ai \ * npx playwright test apps/cockpit/e2e/production-smoke.spec.ts */ -const EXAMPLES_URL = process.env['EXAMPLES_URL'] ?? 'https://examples.stream-resource.dev'; +const EXAMPLES_URL = process.env['EXAMPLES_URL'] ?? 'https://examples.cacheplane.ai'; const CAPABILITIES = [ 'langgraph/streaming', diff --git a/apps/cockpit/scripts/deploy-smoke.spec.ts b/apps/cockpit/scripts/deploy-smoke.spec.ts index b00c951a8..9c1720157 100644 --- a/apps/cockpit/scripts/deploy-smoke.spec.ts +++ b/apps/cockpit/scripts/deploy-smoke.spec.ts @@ -6,7 +6,7 @@ describe('deploy smoke helper', () => { expect( parseDeploySmokeArgs([ '--url', - 'https://cockpit.stream-resource.dev', + 'https://cockpit.cacheplane.ai', '--dry-run', '--retries', '5', @@ -14,7 +14,7 @@ describe('deploy smoke helper', () => { '1000', ]) ).toEqual({ - url: 'https://cockpit.stream-resource.dev', + url: 'https://cockpit.cacheplane.ai', expectedTitle: 'Cockpit', dryRun: true, retries: 5, @@ -25,11 +25,11 @@ describe('deploy smoke helper', () => { it('formats dry-run output without performing a network request', async () => { await expect( runDeploySmoke({ - url: 'https://cockpit.stream-resource.dev', + url: 'https://cockpit.cacheplane.ai', expectedTitle: 'Cockpit', dryRun: true, }) - ).resolves.toBe('dry-run:https://cockpit.stream-resource.dev:Cockpit'); + ).resolves.toBe('dry-run:https://cockpit.cacheplane.ai:Cockpit'); }); it('retries until the deployment responds with the expected title', async () => { @@ -46,13 +46,13 @@ describe('deploy smoke helper', () => { await expect( runDeploySmoke({ - url: 'https://cockpit.stream-resource.dev', + url: 'https://cockpit.cacheplane.ai', retries: 1, retryDelayMs: 1, fetchImpl, sleep, }) - ).resolves.toBe('pass:https://cockpit.stream-resource.dev:Cockpit'); + ).resolves.toBe('pass:https://cockpit.cacheplane.ai:Cockpit'); expect(fetchImpl).toHaveBeenCalledTimes(2); expect(sleep).toHaveBeenCalledTimes(1); diff --git a/apps/cockpit/src/lib/content-bundle.spec.ts b/apps/cockpit/src/lib/content-bundle.spec.ts index 6de2f442f..1e61d58a9 100644 --- a/apps/cockpit/src/lib/content-bundle.spec.ts +++ b/apps/cockpit/src/lib/content-bundle.spec.ts @@ -28,10 +28,10 @@ describe('resolveRuntimeUrl', () => { }); it('uses NEXT_PUBLIC_COCKPIT_RUNTIME_BASE_URL when set', () => { - vi.stubEnv('NEXT_PUBLIC_COCKPIT_RUNTIME_BASE_URL', 'https://examples.stream-resource.dev'); + vi.stubEnv('NEXT_PUBLIC_COCKPIT_RUNTIME_BASE_URL', 'https://examples.cacheplane.ai'); expect( resolveRuntimeUrl({ runtimeUrl: 'langgraph/streaming', devPort: 4300 }) - ).toBe('https://examples.stream-resource.dev/langgraph/streaming'); + ).toBe('https://examples.cacheplane.ai/langgraph/streaming'); }); it('falls back to localhost with devPort when no env var is set', () => { @@ -49,7 +49,7 @@ describe('resolveRuntimeUrl', () => { }); it('returns null when runtimeUrl is undefined even with env var set', () => { - vi.stubEnv('NEXT_PUBLIC_COCKPIT_RUNTIME_BASE_URL', 'https://examples.stream-resource.dev'); + vi.stubEnv('NEXT_PUBLIC_COCKPIT_RUNTIME_BASE_URL', 'https://examples.cacheplane.ai'); expect( resolveRuntimeUrl({ runtimeUrl: undefined, devPort: undefined }) ).toBeNull(); diff --git a/apps/website/emails/drip-whitepaper-followup.ts b/apps/website/emails/drip-whitepaper-followup.ts index dc45d4e91..da4b05e57 100644 --- a/apps/website/emails/drip-whitepaper-followup.ts +++ b/apps/website/emails/drip-whitepaper-followup.ts @@ -9,7 +9,7 @@ export function dripWhitepaperFollowupHtml(day: number): { subject: string; html

Whitepaper Follow-up

Did you get a chance to read Chapter 3?

Chapter 3 covers tool-call rendering — how to surface agent actions as real UI instead of raw JSON. It's the chapter most teams bookmark first.

-
Read the Guide → + Read the Guide → `, showUnsubscribe: true, }), @@ -24,7 +24,7 @@ export function dripWhitepaperFollowupHtml(day: number): { subject: string; html

Production Readiness

The gap between demo and production

Half of GenAI projects die after proof of concept. The gap isn't the model — it's the frontend production path: streaming state, thread persistence, human approval flows, and deterministic testing.

- See How It Works → + See How It Works → `, showUnsubscribe: true, }), @@ -44,7 +44,7 @@ export function dripWhitepaperFollowupHtml(day: number): { subject: string; html

Month 1 · First agent in staging

Month 3 · Production deployment

- Learn About the Pilot → + Learn About the Pilot → `, showUnsubscribe: true, }), diff --git a/apps/website/emails/email-wrapper.ts b/apps/website/emails/email-wrapper.ts index 77bb9d1eb..b12324734 100644 --- a/apps/website/emails/email-wrapper.ts +++ b/apps/website/emails/email-wrapper.ts @@ -16,7 +16,7 @@ export function wrapEmail(opts: { ${opts.body}

Angular Agent Framework — Signal-native streaming for LangGraph.

- ${opts.showUnsubscribe ? '

Unsubscribe

' : ''} + ${opts.showUnsubscribe ? '

Unsubscribe

' : ''}
diff --git a/apps/website/emails/newsletter-welcome.ts b/apps/website/emails/newsletter-welcome.ts index f8701ba05..08c7624ac 100644 --- a/apps/website/emails/newsletter-welcome.ts +++ b/apps/website/emails/newsletter-welcome.ts @@ -5,7 +5,7 @@ export function newsletterWelcomeHtml(): string { body: `

Welcome to Angular Agent Framework updates

You'll receive updates on new capabilities, production patterns, and Angular agent best practices. We keep it focused and infrequent — no spam.

- Explore the Docs + Explore the Docs `, }); } diff --git a/apps/website/emails/whitepaper-download.ts b/apps/website/emails/whitepaper-download.ts index 4c0141b40..5a1978fe9 100644 --- a/apps/website/emails/whitepaper-download.ts +++ b/apps/website/emails/whitepaper-download.ts @@ -1,6 +1,6 @@ import { wrapEmail, esc } from './email-wrapper'; -const DOWNLOAD_URL = 'https://stream-resource.dev/whitepaper.pdf'; +const DOWNLOAD_URL = 'https://cacheplane.ai/whitepaper.pdf'; export function whitepaperDownloadHtml(name?: string): string { return wrapEmail({ diff --git a/apps/website/public/AGENTS.md b/apps/website/public/AGENTS.md index 7e9ff976a..1ed806f13 100644 --- a/apps/website/public/AGENTS.md +++ b/apps/website/public/AGENTS.md @@ -41,4 +41,4 @@ Add to ~/.claude/settings.json: {"mcpServers":{"angular":{"command":"npx","args":["@angular/mcp"]}}} ## Version check -If this file is stale, fetch the latest: https://stream-resource.dev/llms-full.txt +If this file is stale, fetch the latest: https://cacheplane.ai/llms-full.txt diff --git a/apps/website/public/CLAUDE.md b/apps/website/public/CLAUDE.md index 7e9ff976a..1ed806f13 100644 --- a/apps/website/public/CLAUDE.md +++ b/apps/website/public/CLAUDE.md @@ -41,4 +41,4 @@ Add to ~/.claude/settings.json: {"mcpServers":{"angular":{"command":"npx","args":["@angular/mcp"]}}} ## Version check -If this file is stale, fetch the latest: https://stream-resource.dev/llms-full.txt +If this file is stale, fetch the latest: https://cacheplane.ai/llms-full.txt diff --git a/apps/website/src/app/llms.txt/route.ts b/apps/website/src/app/llms.txt/route.ts index de348aac3..6068ea8ef 100644 --- a/apps/website/src/app/llms.txt/route.ts +++ b/apps/website/src/app/llms.txt/route.ts @@ -31,7 +31,7 @@ function buildLlmsTxt(): string { 'npx @cacheplane/angular-mcp', '', '## Full reference', - 'https://stream-resource.dev/llms-full.txt', + 'https://cacheplane.ai/llms-full.txt', ].join('\n'); } diff --git a/apps/website/src/components/shared/Footer.tsx b/apps/website/src/components/shared/Footer.tsx index 8e051eace..d26c3646a 100644 --- a/apps/website/src/components/shared/Footer.tsx +++ b/apps/website/src/components/shared/Footer.tsx @@ -146,7 +146,7 @@ export function Footer() { onMouseLeave={(e) => (e.currentTarget.style.color = tokens.colors.textSecondary)}> API Reference - (e.currentTarget.style.color = tokens.colors.accent)} onMouseLeave={(e) => (e.currentTarget.style.color = tokens.colors.textSecondary)}> Examples diff --git a/apps/website/src/components/shared/Nav.tsx b/apps/website/src/components/shared/Nav.tsx index fe44fbe19..813e8cd1e 100644 --- a/apps/website/src/components/shared/Nav.tsx +++ b/apps/website/src/components/shared/Nav.tsx @@ -7,7 +7,7 @@ const links = [ { label: 'Pilot to Prod', href: '/pilot-to-prod', external: false }, { label: 'Docs', href: '/docs', external: false }, { label: 'API', href: '/docs/agent/api/agent', external: false }, - { label: 'Examples', href: 'https://cockpit.stream-resource.dev', external: true }, + { label: 'Examples', href: 'https://cockpit.cacheplane.ai', external: true }, { label: 'Pricing', href: '/pricing', external: false }, ]; diff --git a/docs/superpowers/plans/2026-03-17-angular-library.md b/docs/superpowers/plans/2026-03-17-angular-library.md index 183c3f458..746a05c0f 100644 --- a/docs/superpowers/plans/2026-03-17-angular-library.md +++ b/docs/superpowers/plans/2026-03-17-angular-library.md @@ -1627,7 +1627,7 @@ NON-COMMERCIAL USE is defined as: - Internal tooling at non-profit organizations COMMERCIAL USE requires a separate commercial license. See LICENSE-COMMERCIAL -or visit https://stream-resource.dev/pricing for details. +or visit https://cacheplane.ai/pricing for details. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. @@ -1664,9 +1664,9 @@ ENTERPRISE LICENSE: Custom pricing - Volume seat discounts (10+ developers) - Unlimited deployment licenses - Dedicated support and SLA agreements -- Contact: enterprise@stream-resource.dev +- Contact: enterprise@cacheplane.ai -To purchase a license, visit: https://stream-resource.dev/pricing +To purchase a license, visit: https://cacheplane.ai/pricing Unauthorized commercial use is a violation of this license. ``` diff --git a/docs/superpowers/plans/2026-03-17-readme.md b/docs/superpowers/plans/2026-03-17-readme.md index 76fbf7ceb..4022e94be 100644 --- a/docs/superpowers/plans/2026-03-17-readme.md +++ b/docs/superpowers/plans/2026-03-17-readme.md @@ -260,7 +260,7 @@ apps/website/public/assets/ License: MIT (non-commercial) - + Angular 20+ diff --git a/docs/superpowers/plans/2026-03-18-agentic-additions.md b/docs/superpowers/plans/2026-03-18-agentic-additions.md index 5e300bb8e..8fb6d5351 100644 --- a/docs/superpowers/plans/2026-03-18-agentic-additions.md +++ b/docs/superpowers/plans/2026-03-18-agentic-additions.md @@ -74,7 +74,7 @@ Download Angular logo SVG into the project: ```bash mkdir -p apps/website/public/logos curl -o apps/website/public/logos/angular.svg \ - "https://stream-resource.dev/assets/icons/logo.svg" 2>/dev/null || \ + "https://cacheplane.ai/assets/icons/logo.svg" 2>/dev/null || \ echo '', ``` @@ -755,7 +755,7 @@ const chat = agent({ assistantId: 'chat_agent', apiUrl: 'http://localhost:2024' npx @angular/mcp ## Full reference -https://stream-resource.dev/llms-full.txt +https://cacheplane.ai/llms-full.txt `.trim(); } @@ -887,7 +887,7 @@ Add to ~/.claude/settings.json: {"mcpServers":{"angular":{"command":"npx","args":["@angular/mcp"]}}} ## Version check -If this file is stale, fetch the latest: https://stream-resource.dev/llms-full.txt +If this file is stale, fetch the latest: https://cacheplane.ai/llms-full.txt ``` Create `apps/website/content/AGENTS.md.template` with identical content (same file, different name). diff --git a/docs/superpowers/plans/2026-03-19-langsmith-deployment.md b/docs/superpowers/plans/2026-03-19-langsmith-deployment.md index ac41beb66..74ddf2d74 100644 --- a/docs/superpowers/plans/2026-03-19-langsmith-deployment.md +++ b/docs/superpowers/plans/2026-03-19-langsmith-deployment.md @@ -165,7 +165,7 @@ Either push a commit or manually trigger a redeploy from the Vercel dashboard. ### Step 3: Verify live demo works -Visit https://stream-resource.dev and confirm the `` web component connects and streams responses. +Visit https://cacheplane.ai and confirm the `` web component connects and streams responses. --- diff --git a/docs/superpowers/plans/2026-03-19-next-steps.md b/docs/superpowers/plans/2026-03-19-next-steps.md index 7fd94a833..768c8afb6 100644 --- a/docs/superpowers/plans/2026-03-19-next-steps.md +++ b/docs/superpowers/plans/2026-03-19-next-steps.md @@ -69,7 +69,7 @@ 2. Add `NEXT_PUBLIC_LANGGRAPH_URL` = `https://` 3. Set for: Production + Preview + Development 4. Trigger a redeploy -5. Verify live demo at https://stream-resource.dev streams real responses +5. Verify live demo at https://cacheplane.ai streams real responses --- diff --git a/docs/superpowers/plans/2026-03-19-roadmap.md b/docs/superpowers/plans/2026-03-19-roadmap.md index 5dadcd24d..0446df984 100644 --- a/docs/superpowers/plans/2026-03-19-roadmap.md +++ b/docs/superpowers/plans/2026-03-19-roadmap.md @@ -69,7 +69,7 @@ After 1.3 completes: - Vercel Dashboard → cacheplane / angular → Settings → Environment Variables - Add `NEXT_PUBLIC_LANGGRAPH_URL` for all environments - Trigger redeploy -- Verify live demo at stream-resource.dev +- Verify live demo at cacheplane.ai --- @@ -78,7 +78,7 @@ After 1.3 completes: **Status:** Complete **Effort:** Trivial -Completed in-session by updating the README asset and docs links from `angular.vercel.app` to `stream-resource.dev`. +Completed in-session by updating the README asset and docs links from `angular.vercel.app` to `cacheplane.ai`. --- @@ -171,7 +171,7 @@ These are logical continuations of the project's direction. They're not explicit ### 2.6 SEO and Analytics -**Why:** The site is live at stream-resource.dev but has no analytics, no structured metadata beyond the basic `` and `<description>`, and no sitemap. +**Why:** The site is live at cacheplane.ai but has no analytics, no structured metadata beyond the basic `<title>` and `<description>`, and no sitemap. **What to add:** - **Vercel Analytics** — one-line integration, free tier, no cookies diff --git a/docs/superpowers/plans/2026-03-19-vercel-deployment-notes.md b/docs/superpowers/plans/2026-03-19-vercel-deployment-notes.md index cbc573600..4fa1c1e15 100644 --- a/docs/superpowers/plans/2026-03-19-vercel-deployment-notes.md +++ b/docs/superpowers/plans/2026-03-19-vercel-deployment-notes.md @@ -115,5 +115,5 @@ In production, `NEXT_PUBLIC_LANGGRAPH_URL` must be set to the LangGraph Cloud de ## 6. Domain -**Production URL:** https://stream-resource.dev +**Production URL:** https://cacheplane.ai **Vercel project:** https://vercel.com/cacheplane/angular diff --git a/docs/superpowers/plans/2026-04-03-cockpit-example-harness.md b/docs/superpowers/plans/2026-04-03-cockpit-example-harness.md index 46f783211..2b0d6b711 100644 --- a/docs/superpowers/plans/2026-04-03-cockpit-example-harness.md +++ b/docs/superpowers/plans/2026-04-03-cockpit-example-harness.md @@ -1242,7 +1242,7 @@ The `runtimeUrl` field on the capability module is used with `NEXT_PUBLIC_COCKPI runtimeUrl: 'langgraph/streaming', // → ${NEXT_PUBLIC_COCKPIT_RUNTIME_BASE_URL}/langgraph/streaming ``` -This resolves to e.g., `https://examples.stream-resource.dev/langgraph/streaming` in production. +This resolves to e.g., `https://examples.cacheplane.ai/langgraph/streaming` in production. - [ ] **Step 4: Add deployment instructions to the streaming prompt (as a code comment in graph.py)** diff --git a/docs/superpowers/plans/2026-04-03-content-bundle.md b/docs/superpowers/plans/2026-04-03-content-bundle.md index acc86b2f7..1379855f3 100644 --- a/docs/superpowers/plans/2026-04-03-content-bundle.md +++ b/docs/superpowers/plans/2026-04-03-content-bundle.md @@ -48,10 +48,10 @@ describe('resolveRuntimeUrl', () => { }); it('uses NEXT_PUBLIC_COCKPIT_RUNTIME_BASE_URL when set', () => { - vi.stubEnv('NEXT_PUBLIC_COCKPIT_RUNTIME_BASE_URL', 'https://examples.stream-resource.dev'); + vi.stubEnv('NEXT_PUBLIC_COCKPIT_RUNTIME_BASE_URL', 'https://examples.cacheplane.ai'); expect( resolveRuntimeUrl({ runtimeUrl: 'langgraph/streaming', devPort: 4300 }) - ).toBe('https://examples.stream-resource.dev/langgraph/streaming'); + ).toBe('https://examples.cacheplane.ai/langgraph/streaming'); }); it('falls back to localhost with devPort when no env var is set', () => { @@ -69,7 +69,7 @@ describe('resolveRuntimeUrl', () => { }); it('returns null when runtimeUrl is undefined even with env var set', () => { - vi.stubEnv('NEXT_PUBLIC_COCKPIT_RUNTIME_BASE_URL', 'https://examples.stream-resource.dev'); + vi.stubEnv('NEXT_PUBLIC_COCKPIT_RUNTIME_BASE_URL', 'https://examples.cacheplane.ai'); expect( resolveRuntimeUrl({ runtimeUrl: undefined, devPort: undefined }) ).toBeNull(); diff --git a/docs/superpowers/plans/2026-04-05-production-deployment.md b/docs/superpowers/plans/2026-04-05-production-deployment.md index 33fd71576..3158fafa5 100644 --- a/docs/superpowers/plans/2026-04-05-production-deployment.md +++ b/docs/superpowers/plans/2026-04-05-production-deployment.md @@ -4,7 +4,7 @@ **Goal:** Deploy all 14 capability backends to LangGraph Cloud, host all 14 Angular example apps on Vercel, wire the cockpit to production URLs, and verify end-to-end with smoke tests. -**Architecture:** Three-phase deployment: (1) deploy Python backends to LangGraph Cloud via existing `deploy-langgraph.yml`, capture URLs into a registry file; (2) update Angular production environments with LangGraph Cloud URLs, build and deploy as static sites to a new Vercel project at `examples.stream-resource.dev`; (3) set `NEXT_PUBLIC_COCKPIT_RUNTIME_BASE_URL` in cockpit Vercel env, add a production smoke test to CI that verifies the full stack. +**Architecture:** Three-phase deployment: (1) deploy Python backends to LangGraph Cloud via existing `deploy-langgraph.yml`, capture URLs into a registry file; (2) update Angular production environments with LangGraph Cloud URLs, build and deploy as static sites to a new Vercel project at `examples.cacheplane.ai`; (3) set `NEXT_PUBLIC_COCKPIT_RUNTIME_BASE_URL` in cockpit Vercel env, add a production smoke test to CI that verifies the full stack. **Tech Stack:** LangGraph Cloud (LangSmith), Vercel, Angular static builds, Playwright, GitHub Actions @@ -667,16 +667,16 @@ import { expect, test } from '@playwright/test'; * cockpit → iframe → Angular app → LangGraph Cloud backend → AI response. * * Requires environment variables: - * EXAMPLES_URL - e.g., https://examples.stream-resource.dev + * EXAMPLES_URL - e.g., https://examples.cacheplane.ai * OPENAI_API_KEY - for send/receive tests (optional, skips if not set) * * Run against production: - * BASE_URL=https://cockpit.stream-resource.dev \ - * EXAMPLES_URL=https://examples.stream-resource.dev \ + * BASE_URL=https://cockpit.cacheplane.ai \ + * EXAMPLES_URL=https://examples.cacheplane.ai \ * npx playwright test apps/cockpit/e2e/production-smoke.spec.ts */ -const EXAMPLES_URL = process.env['EXAMPLES_URL'] ?? 'https://examples.stream-resource.dev'; +const EXAMPLES_URL = process.env['EXAMPLES_URL'] ?? 'https://examples.cacheplane.ai'; const CAPABILITIES = [ 'langgraph/streaming', @@ -772,8 +772,8 @@ Add a new job after the `deploy` job in `.github/workflows/ci.yml`: - name: Run production smoke tests run: npx playwright test apps/cockpit/e2e/production-smoke.spec.ts --reporter=list env: - BASE_URL: https://cockpit.stream-resource.dev - EXAMPLES_URL: https://examples.stream-resource.dev + BASE_URL: https://cockpit.cacheplane.ai + EXAMPLES_URL: https://examples.cacheplane.ai OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} ``` @@ -810,20 +810,20 @@ In GitHub repo Settings → Secrets: - [ ] **Step 3: Set cockpit env var in Vercel** In the cockpit Vercel project settings → Environment Variables: -1. Add `NEXT_PUBLIC_COCKPIT_RUNTIME_BASE_URL` = `https://examples.stream-resource.dev` +1. Add `NEXT_PUBLIC_COCKPIT_RUNTIME_BASE_URL` = `https://examples.cacheplane.ai` 2. Apply to Production environment - [ ] **Step 4: Set examples domain in Vercel** In the examples Vercel project settings → Domains: -1. Add `examples.stream-resource.dev` +1. Add `examples.cacheplane.ai` 2. Configure DNS (CNAME to `cname.vercel-dns.com`) - [ ] **Step 5: Trigger initial deploy** Push all committed changes to `main`. The CI pipeline will: 1. Build and deploy the cockpit (picks up `NEXT_PUBLIC_COCKPIT_RUNTIME_BASE_URL`) -2. Build and deploy the Angular examples to `examples.stream-resource.dev` +2. Build and deploy the Angular examples to `examples.cacheplane.ai` 3. Run the production smoke test - [ ] **Step 6: Verify end-to-end** @@ -834,15 +834,15 @@ npx tsx scripts/verify-langgraph-deployments.ts --smoke # Verify examples load for cap in langgraph/streaming langgraph/persistence deep-agents/planning; do - curl -s -o /dev/null -w "%{http_code} $cap\n" "https://examples.stream-resource.dev/$cap/" + curl -s -o /dev/null -w "%{http_code} $cap\n" "https://examples.cacheplane.ai/$cap/" done # Verify cockpit -curl -s -o /dev/null -w "%{http_code} cockpit\n" "https://cockpit.stream-resource.dev" +curl -s -o /dev/null -w "%{http_code} cockpit\n" "https://cockpit.cacheplane.ai" # Run full production smoke -BASE_URL=https://cockpit.stream-resource.dev \ -EXAMPLES_URL=https://examples.stream-resource.dev \ +BASE_URL=https://cockpit.cacheplane.ai \ +EXAMPLES_URL=https://examples.cacheplane.ai \ npx playwright test apps/cockpit/e2e/production-smoke.spec.ts --reporter=list ``` diff --git a/docs/superpowers/plans/2026-04-06-lead-generation-resend.md b/docs/superpowers/plans/2026-04-06-lead-generation-resend.md index 25bf0e760..192bab687 100644 --- a/docs/superpowers/plans/2026-04-06-lead-generation-resend.md +++ b/docs/superpowers/plans/2026-04-06-lead-generation-resend.md @@ -172,7 +172,7 @@ interface WhitepaperDownloadProps { name?: string; } -const DOWNLOAD_URL = 'https://stream-resource.dev/whitepaper.pdf'; +const DOWNLOAD_URL = 'https://cacheplane.ai/whitepaper.pdf'; export default function WhitepaperDownload({ name }: WhitepaperDownloadProps) { return ( @@ -248,7 +248,7 @@ export default function NewsletterWelcome() { You'll receive updates on new capabilities, production patterns, and Angular agent best practices. We keep it focused and infrequent — no spam. </Text> - <Button href="https://stream-resource.dev/docs" style={{ + <Button href="https://cacheplane.ai/docs" style={{ backgroundColor: '#004090', color: '#fff', padding: '12px 28px', borderRadius: 10, fontSize: 14, fontWeight: 700, textDecoration: 'none', }}> diff --git a/docs/superpowers/plans/2026-04-06-rebrand-angular-stream-resource.md b/docs/superpowers/plans/2026-04-06-rebrand-angular-stream-resource.md index 19f11b96d..8b387afb7 100644 --- a/docs/superpowers/plans/2026-04-06-rebrand-angular-stream-resource.md +++ b/docs/superpowers/plans/2026-04-06-rebrand-angular-stream-resource.md @@ -429,7 +429,7 @@ to: # Angular Agent Framework v0.0.1 ``` -Note: All other references in these files (`agent()`, `provideAgent`, `import ... from 'angular'`, `@angular/mcp`, `stream-resource.dev`) are code/infrastructure references and should NOT be changed. +Note: All other references in these files (`agent()`, `provideAgent`, `import ... from 'angular'`, `@angular/mcp`, `cacheplane.ai`) are code/infrastructure references and should NOT be changed. - [ ] **Step 3: Commit** diff --git a/docs/superpowers/specs/2026-03-18-agentic-docs-design.md b/docs/superpowers/specs/2026-03-18-agentic-docs-design.md index ba360c001..1f084589f 100644 --- a/docs/superpowers/specs/2026-03-18-agentic-docs-design.md +++ b/docs/superpowers/specs/2026-03-18-agentic-docs-design.md @@ -193,7 +193,7 @@ npm install angular npx @angular/mcp (add to Claude Code settings for tool access) ## Version -@VERSION@ — regenerate if stale: https://stream-resource.dev/llms-full.txt +@VERSION@ — regenerate if stale: https://cacheplane.ai/llms-full.txt ``` ### `AGENTS.md` diff --git a/docs/superpowers/specs/2026-03-19-licensing-model.md b/docs/superpowers/specs/2026-03-19-licensing-model.md index 86ab35813..549269723 100644 --- a/docs/superpowers/specs/2026-03-19-licensing-model.md +++ b/docs/superpowers/specs/2026-03-19-licensing-model.md @@ -60,7 +60,7 @@ Angular Agent Framework uses a **source-available dual-license model**. It is ** | Enterprise | Custom | Volume licensing, priority support, custom contract | **Contact:** hello@cacheplane.ai -**Pricing page:** https://stream-resource.dev/pricing +**Pricing page:** https://cacheplane.ai/pricing **Governing law:** State of Oregon, Deschutes County, United States. **Copyright:** Brian Love d/b/a cacheplane diff --git a/docs/superpowers/specs/2026-03-20-cockpit-app-design.md b/docs/superpowers/specs/2026-03-20-cockpit-app-design.md index e70d60268..427e19132 100644 --- a/docs/superpowers/specs/2026-03-20-cockpit-app-design.md +++ b/docs/superpowers/specs/2026-03-20-cockpit-app-design.md @@ -11,7 +11,7 @@ Define a single integrated cockpit application that serves as: - the live reference surface for all supported capabilities -- a marketing asset at `cockpit.stream-resource.dev` +- a marketing asset at `cockpit.cacheplane.ai` - the canonical integration surface for examples and testing --- diff --git a/docs/superpowers/specs/2026-03-20-cockpit-testing-and-deployment-design.md b/docs/superpowers/specs/2026-03-20-cockpit-testing-and-deployment-design.md index b5f424175..5b93970e0 100644 --- a/docs/superpowers/specs/2026-03-20-cockpit-testing-and-deployment-design.md +++ b/docs/superpowers/specs/2026-03-20-cockpit-testing-and-deployment-design.md @@ -94,7 +94,7 @@ These tests validate the shell contract, not capability business logic. The cockpit is deployed as a product surface at: -- `cockpit.stream-resource.dev` +- `cockpit.cacheplane.ai` Deployment verification should confirm: diff --git a/docs/superpowers/specs/2026-04-05-production-deployment-design.md b/docs/superpowers/specs/2026-04-05-production-deployment-design.md index 28324d326..4b49aa97a 100644 --- a/docs/superpowers/specs/2026-04-05-production-deployment-design.md +++ b/docs/superpowers/specs/2026-04-05-production-deployment-design.md @@ -2,7 +2,7 @@ ## Problem -The cockpit has 14 capability examples (8 LangGraph + 6 Deep Agents), each with an Angular frontend and a Python LangGraph backend. None are deployed to production. The Angular `environment.ts` files still point to `localhost`, the LangGraph Cloud deployments have never been triggered, and there is no hosting for the Angular apps. The cockpit at `https://cockpit.stream-resource.dev` deploys via Vercel but its Run mode iframes show nothing because the Angular apps aren't hosted anywhere. +The cockpit has 14 capability examples (8 LangGraph + 6 Deep Agents), each with an Angular frontend and a Python LangGraph backend. None are deployed to production. The Angular `environment.ts` files still point to `localhost`, the LangGraph Cloud deployments have never been triggered, and there is no hosting for the Angular apps. The cockpit at `https://cockpit.cacheplane.ai` deploys via Vercel but its Run mode iframes show nothing because the Angular apps aren't hosted anywhere. ## Goal @@ -11,13 +11,13 @@ Deploy the full stack to production in three phases: 2. Build and deploy all 14 Angular apps to Vercel as static sites 3. Wire the cockpit to the production Angular apps and verify end-to-end -After completion, a user visiting `https://cockpit.stream-resource.dev`, navigating to any capability, and switching to Run mode sees a working chat interface that sends messages to a production LangGraph Cloud backend and receives AI responses. +After completion, a user visiting `https://cockpit.cacheplane.ai`, navigating to any capability, and switching to Run mode sees a working chat interface that sends messages to a production LangGraph Cloud backend and receives AI responses. ## Architecture Overview ``` -cockpit.stream-resource.dev (Vercel / Next.js) - └─ iframe src: examples.stream-resource.dev/{product}/{topic}/ +cockpit.cacheplane.ai (Vercel / Next.js) + └─ iframe src: examples.cacheplane.ai/{product}/{topic}/ └─ Angular static app (Vercel) └─ API proxy → https://{org}-{name}.us.langgraph.app └─ LangGraph Cloud (LangSmith-hosted Python backend) @@ -78,7 +78,7 @@ For each of the 14 backends: ### What needs to happen -1. **Create a Vercel project** for `examples.stream-resource.dev`. This is a static hosting project — no framework, just serves static files. +1. **Create a Vercel project** for `examples.cacheplane.ai`. This is a static hosting project — no framework, just serves static files. 2. **Update Angular `environment.ts` production files** — replace `http://localhost:4XXX/api` with the LangGraph Cloud URL for each capability (from `deployment-urls.json`). The development files stay pointing to localhost for local dev. @@ -100,7 +100,7 @@ For each of the 14 backends: 6. **Add CI deploy job** — a new job in `ci.yml` (or a separate workflow) that builds, assembles, and deploys all Angular apps on push to main. -7. **Set `NEXT_PUBLIC_COCKPIT_RUNTIME_BASE_URL`** — in the cockpit's Vercel project environment variables, set this to `https://examples.stream-resource.dev`. The cockpit's `content-bundle.ts` uses this to construct iframe URLs like `https://examples.stream-resource.dev/langgraph/streaming/`. +7. **Set `NEXT_PUBLIC_COCKPIT_RUNTIME_BASE_URL`** — in the cockpit's Vercel project environment variables, set this to `https://examples.cacheplane.ai`. The cockpit's `content-bundle.ts` uses this to construct iframe URLs like `https://examples.cacheplane.ai/langgraph/streaming/`. ### Angular Proxy in Production @@ -118,7 +118,7 @@ export const environment = { ### CORS -LangGraph Cloud backends need to allow requests from `examples.stream-resource.dev`. LangGraph Cloud typically allows CORS from any origin for the streaming API, but this should be verified. If CORS is restricted, the LangGraph deployment config may need a `cors_allowed_origins` setting. +LangGraph Cloud backends need to allow requests from `examples.cacheplane.ai`. LangGraph Cloud typically allows CORS from any origin for the streaming API, but this should be verified. If CORS is restricted, the LangGraph deployment config may need a `cors_allowed_origins` setting. ### Verification @@ -131,7 +131,7 @@ For each of the 14 Angular apps: ### What exists -- Cockpit deploys to `https://cockpit.stream-resource.dev` via Vercel +- Cockpit deploys to `https://cockpit.cacheplane.ai` via Vercel - CI deploy job already exists and runs on push to main - Post-deploy smoke script already exists (`cockpit-deploy-smoke`) @@ -140,7 +140,7 @@ For each of the 14 Angular apps: 1. **Set `NEXT_PUBLIC_COCKPIT_RUNTIME_BASE_URL`** in Vercel (done in Phase 2) 2. **Trigger cockpit redeploy** — the env var change requires a redeploy for Next.js to pick it up 3. **Verify the cockpit renders** — navigate to cockpit, confirm sidebar loads with all capabilities (no "overview" entries) -4. **Verify Run mode** — for each capability, switch to Run mode, confirm the iframe loads the Angular app from `examples.stream-resource.dev` +4. **Verify Run mode** — for each capability, switch to Run mode, confirm the iframe loads the Angular app from `examples.cacheplane.ai` 5. **End-to-end smoke** — for a representative subset (at minimum streaming, persistence, planning), send a message in Run mode and verify AI response ### CI Verification Pipeline @@ -160,8 +160,8 @@ production-smoke: - run: npx playwright install --with-deps chromium - run: npx playwright test apps/cockpit/e2e/production-smoke.spec.ts env: - BASE_URL: https://cockpit.stream-resource.dev - EXAMPLES_URL: https://examples.stream-resource.dev + BASE_URL: https://cockpit.cacheplane.ai + EXAMPLES_URL: https://examples.cacheplane.ai OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} ``` diff --git a/docs/superpowers/specs/2026-04-06-lead-generation-resend.md b/docs/superpowers/specs/2026-04-06-lead-generation-resend.md index a1de785eb..c5bb793df 100644 --- a/docs/superpowers/specs/2026-04-06-lead-generation-resend.md +++ b/docs/superpowers/specs/2026-04-06-lead-generation-resend.md @@ -95,7 +95,7 @@ Sent to the user after white paper form submission. - **To:** User's email - **Subject:** `Your Angular Agent Readiness Guide` -- **Body:** Brief intro, prominent "Download the Guide" button linking to `https://stream-resource.dev/whitepaper.pdf`, chapter summary list. +- **Body:** Brief intro, prominent "Download the Guide" button linking to `https://cacheplane.ai/whitepaper.pdf`, chapter summary list. ### `newsletter-welcome.tsx` diff --git a/docs/superpowers/specs/2026-04-06-rebrand-angular-stream-resource.md b/docs/superpowers/specs/2026-04-06-rebrand-angular-stream-resource.md index 69293e5b2..cdb2da04b 100644 --- a/docs/superpowers/specs/2026-04-06-rebrand-angular-stream-resource.md +++ b/docs/superpowers/specs/2026-04-06-rebrand-angular-stream-resource.md @@ -15,7 +15,7 @@ Angular 20 introduced `rxResource` with a `stream` property, which the official | Full product name | Angular Agent Framework | | Parent brand | Cacheplane | | npm package | `@cacheplane/angular` (unchanged) | -| Domain | `stream-resource.dev` (unchanged) | +| Domain | `cacheplane.ai` (unchanged) | | Tagline | "The Enterprise Streaming Resource for LangChain and Angular" (unchanged) | ## Scope @@ -65,7 +65,7 @@ Brand-layer text only. All changes are string replacements in documentation and | File/directory names | `angular.fn.ts`, `/libs/angular/` | File system identity | | Nx project names | `angular`, `angular-e2e` | Build system identity | | TypeScript path aliases | `@cacheplane/angular` in tsconfig | Build system identity | -| Domain URLs | `stream-resource.dev`, `examples.stream-resource.dev` | Infrastructure identity | +| Domain URLs | `cacheplane.ai`, `examples.cacheplane.ai` | Infrastructure identity | | CI/CD workflows | GitHub Actions references | Infrastructure identity | | package.json `name` fields | `"name": "angular"` | Package identity |