From 18c996644b6bf220e17d48f88b51b8cc7cb00a66 Mon Sep 17 00:00:00 2001 From: Brian Love Date: Thu, 30 Apr 2026 16:40:35 -0700 Subject: [PATCH 1/5] =?UTF-8?q?docs:=20@cacheplane=20=E2=86=92=20@ngaf=20o?= =?UTF-8?q?rg=20rename=20design?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bulk find/replace across 536 files (88 package.json, 15 tsconfig paths, 448 source files). Drop packages/mcp from publishable group (private:true) for first release; defer mcp to a future release. After the rename merges, user manually publishes 0.0.1 of the 7 packages, then a separate PR switches the workflow to npm trusted publishing (no token needed). Co-Authored-By: Claude Opus 4.7 --- .../2026-04-30-ngaf-org-rename-design.md | 99 +++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 docs/superpowers/specs/2026-04-30-ngaf-org-rename-design.md diff --git a/docs/superpowers/specs/2026-04-30-ngaf-org-rename-design.md b/docs/superpowers/specs/2026-04-30-ngaf-org-rename-design.md new file mode 100644 index 000000000..3922c0622 --- /dev/null +++ b/docs/superpowers/specs/2026-04-30-ngaf-org-rename-design.md @@ -0,0 +1,99 @@ +# `@cacheplane` → `@ngaf` npm Org Rename + First Publish Setup + +## Goal + +Rename the npm scope across the entire codebase from `@cacheplane` to `@ngaf` (Angular Agent Framework, abbreviated). Drop `packages/mcp` from the publishable set for the first release (defer; mark private). Prepare the workflow for the user's first manual publish at `0.0.1` and document the path to switch to npm trusted publishing afterward. + +## Motivation + +- The codebase uses `@cacheplane/*` everywhere as a placeholder scope name. The public-facing identity should match the project, not the company that's incubating it. `@ngaf` is short (5 chars vs `@angular-agent-framework`'s 24), pronounceable, and uniquely identifies the project. +- npm package names are sticky once published; better to rename now (pre-first-release) than after consumers depend on `@cacheplane/*`. +- The MCP integration package isn't ready for first release — drop from publishable group, ship later. + +## Scope + +### Rename + +`@cacheplane/X` → `@ngaf/X` everywhere except: +- `apps/minting-service/` (proprietary; never published; left untouched as a unit). +- Historical docs in `docs/superpowers/specs/` and `docs/superpowers/plans/` (artifacts of past decisions; rewriting corrupts the record). + +Affected (audited): +- 88 `package.json` files (lib/cockpit/app/packages roots and inter-package peerDeps). +- 15 entries in `tsconfig.base.json` `compilerOptions.paths`. +- 448 non-JSON source files (TypeScript imports, README/docs prose). + +Total: 536 file rewrites. Bulk find/replace, no substring-overlap risk (the literal `@cacheplane/` won't appear inside other identifiers). + +### Publishable group changes + +Drop `mcp` from the synchronized `publishable` release group. `packages/mcp/package.json` gains `"private": true` so it can't accidentally publish. + +Final publishable list (7 packages): +- `@ngaf/chat` +- `@ngaf/langgraph` +- `@ngaf/ag-ui` +- `@ngaf/render` +- `@ngaf/a2ui` +- `@ngaf/partial-json` +- `@ngaf/licensing` + +### Workflow + runbook updates + +- `nx.json` `release.groups.publishable.projects`: drop `mcp`. +- `nx.json` `release.version.preVersionCommand`: drop `mcp` from the project list. +- `.github/workflows/publish.yml`: update `NPM_PUBLISHABLE_PROJECTS` env var (drop `mcp`). +- `docs/RELEASE.md`: drop `mcp` from the package list and the build-projects command. + +### First publish (manual, user-driven; NOT part of the PR) + +After the rename PR merges, the user runs the corrected first-release flow from `docs/RELEASE.md`: + +```bash +git checkout main && git pull +npx nx run-many -t build --projects=chat,langgraph,ag-ui,render,a2ui,partial-json,licensing +npx nx release changelog 0.0.1 --first-release +npx nx release publish --groups=publishable --first-release +git push origin main --tags +``` + +This requires: +- `npm whoami` confirms the user is logged in to the account that owns `@ngaf` org rights. +- `NPM_TOKEN` configured locally (e.g., in `~/.npmrc` or `.env` sourced into shell). Token has `automation` or `publish` scope on the `@ngaf` org. +- `gh secret list` shows `NPM_TOKEN` set in the repo for the workflow's tag-triggered publish path (until trusted publishing replaces it). + +### Trusted publishing (post-first-publish, separate PR) + +After the first publish creates the 7 packages on npm: + +1. **Per-package npm config** (manual, web UI). For each of the 7 packages, navigate to `npmjs.com/package/@ngaf//access` and add a "Trusted Publisher" entry pointing to: + - GitHub repository: `cacheplane/angular-agent-framework` + - Workflow filename: `publish.yml` + - Environment: (none — public workflow trigger) +2. **Workflow update PR** (separate from this rename): + - Drop `NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}` from the publish steps. + - Keep `permissions.id-token: write` (already present). + - Keep `NPM_CONFIG_PROVENANCE: 'true'` (already present). + - The workflow now uses OIDC instead of a token; npm validates the workflow is the configured trusted publisher before accepting the publish. +3. **Secret cleanup** (post-trusted-publishing): once trusted publishing works for two consecutive releases, remove the `NPM_TOKEN` secret from the repo (`gh secret delete NPM_TOKEN`). + +## Out of Scope + +- The first publish itself (manual; user runs locally; not in the PR). +- Trusted publishing config and workflow update (separate PR after first publish). +- Renaming `apps/minting-service/` (stays proprietary regardless of npm scope). +- MCP package work (deferred; private:true for now). +- Any version-number changes (`0.0.1` stays for first publish). +- Domain or branding changes (this is just an npm scope rename). + +## Risk + +- **npm scope availability.** `@ngaf` must be claimable on npm. Pre-PR check: `npm view @ngaf` should return 404 or "scope is empty"; if a different scope owner exists, the plan needs a different name. **Verify before merging the PR.** +- **Dist artifact references.** ng-packagr embeds package names into built `.d.ts` and `package.json` artifacts. These are regenerated on build, so as long as we re-run `npx nx run-many -t build` after the rename, dist/ is consistent. +- **Lockfile churn.** `npm install` after the rename will rewrite `package-lock.json` to reflect the new package names. This is expected; the same caveat about preserving cross-platform native bindings (see `feedback_lockfile_platform_bindings.md`) applies — don't `rm -f` the lockfile. +- **External docs / blog posts** — none yet referencing `@cacheplane` since nothing's published. Safe. + +## When to Revisit + +- If `@ngaf` becomes ambiguous as the project gains other meanings, can rename again before broad adoption. +- If `mcp` package matures and becomes user-facing, re-add to the publishable group (also decide its final name: `@ngaf/mcp` is the natural choice). From a3aefda11288d4a854f3e218ed5495dd9411cf78 Mon Sep 17 00:00:00 2001 From: Brian Love Date: Thu, 30 Apr 2026 16:41:42 -0700 Subject: [PATCH 2/5] =?UTF-8?q?docs:=20@cacheplane=20=E2=86=92=20@ngaf=20r?= =?UTF-8?q?ename=20implementation=20plan?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 5 tasks: pre-flight audit (verify @ngaf is claimable on npm), bulk find/replace across 536 files, drop mcp from publishable group with private:true, lockfile reconciliation, final verify + PR. Plus documented post-merge flow for first manual publish + trusted publishing migration. Co-Authored-By: Claude Opus 4.7 --- .../plans/2026-04-30-ngaf-org-rename.md | 323 ++++++++++++++++++ 1 file changed, 323 insertions(+) create mode 100644 docs/superpowers/plans/2026-04-30-ngaf-org-rename.md diff --git a/docs/superpowers/plans/2026-04-30-ngaf-org-rename.md b/docs/superpowers/plans/2026-04-30-ngaf-org-rename.md new file mode 100644 index 000000000..35998ae51 --- /dev/null +++ b/docs/superpowers/plans/2026-04-30-ngaf-org-rename.md @@ -0,0 +1,323 @@ +# `@cacheplane` → `@ngaf` Org Rename Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans. + +**Goal:** Rewrite all 536 references from `@cacheplane/X` → `@ngaf/X`, drop `mcp` from the publishable release group (mark `packages/mcp` private), and update workflow + runbook to reflect the 7-package publishable set. Out of scope: actual first publish, trusted publishing setup. + +**Spec:** `docs/superpowers/specs/2026-04-30-ngaf-org-rename-design.md` + +--- + +## File Structure + +- 88 `package.json` files: `"name": "@cacheplane/X"` → `"@ngaf/X"`; inter-package peerDeps keys. +- 15 entries in `tsconfig.base.json` `compilerOptions.paths`. +- 448 non-JSON source files: TypeScript imports, README/docs prose. +- `nx.json`: drop `mcp` from `release.groups.publishable.projects` and `release.version.preVersionCommand`. +- `.github/workflows/publish.yml`: update `NPM_PUBLISHABLE_PROJECTS` env var. +- `docs/RELEASE.md`: drop `mcp` from the package list and build command example. +- `packages/mcp/package.json`: add `"private": true`. + +--- + +### Task 1: Pre-flight audit + +- [ ] **Step 1: Confirm `@ngaf` is available on npm** + +```bash +npm view @ngaf 2>&1 | head -5 +``` + +Expected: `404 Not Found` or "Scope is empty". If a different owner already holds `@ngaf`, STOP — the rename plan needs a different name (defer the user for a new clarification). + +- [ ] **Step 2: Snapshot current counts** + +```bash +echo "Total @cacheplane refs:"; rg -l "@cacheplane/" --glob '!package-lock.json' --glob '!node_modules/**' --glob '!dist/**' | wc -l +echo "package.json with @cacheplane:"; rg -l '"@cacheplane/' --type json --glob '!package-lock.json' | wc -l +echo "tsconfig.base.json paths:"; rg "@cacheplane/" tsconfig.base.json | wc -l +echo "non-JSON source files:"; rg -l "@cacheplane/" --glob '!*.json' --glob '!package-lock.json' --glob '!node_modules/**' --glob '!dist/**' | wc -l +``` + +Expected: 536 / 88 / 15 / 448. If the numbers differ, re-audit before proceeding. + +--- + +### Task 2: Bulk rename `@cacheplane` → `@ngaf` + +- [ ] **Step 1: Bulk rewrite all source files** + +```bash +rg -l "@cacheplane/" \ + --glob '!package-lock.json' \ + --glob '!node_modules/**' \ + --glob '!dist/**' \ + --glob '!docs/superpowers/**' \ + --glob '!apps/minting-service/**' | \ + xargs sed -i '' 's|@cacheplane/|@ngaf/|g' +``` + +(macOS `sed -i ''`; on Linux drop the empty-string arg.) + +`docs/superpowers/**` and `apps/minting-service/**` are excluded — historical artifacts and a separately-licensed proprietary service. + +- [ ] **Step 2: Verify counts** + +```bash +echo "Remaining @cacheplane refs (should be 0 outside exclusions):" +rg -l "@cacheplane/" \ + --glob '!package-lock.json' \ + --glob '!node_modules/**' \ + --glob '!dist/**' \ + --glob '!docs/superpowers/**' \ + --glob '!apps/minting-service/**' | wc -l + +echo "@ngaf refs introduced:" +rg -l "@ngaf/" \ + --glob '!package-lock.json' \ + --glob '!node_modules/**' \ + --glob '!dist/**' | wc -l +``` + +Expected: `0` remaining `@cacheplane`, ~536 new `@ngaf`. + +- [ ] **Step 3: Spot-check 3 representative files** + +```bash +jq '{name, version, peerDependencies}' libs/chat/package.json +grep -E "@ngaf|@cacheplane" tsconfig.base.json | head -10 +grep "from '@" libs/chat/src/lib/agent/agent.ts | head -5 +``` + +Each should show `@ngaf/...` with no residual `@cacheplane/...`. + +- [ ] **Step 4: Commit** + +```bash +git add -A +git commit -m "refactor: rename npm scope @cacheplane → @ngaf across the codebase + +Bulk rewrite of 536 references (88 package.json, 15 tsconfig paths, +448 source files + READMEs). Excludes apps/minting-service/ and +docs/superpowers/ historical artifacts. + +Co-Authored-By: Claude Opus 4.7 " +``` + +--- + +### Task 3: Drop `mcp` from publishable group; mark private + +- [ ] **Step 1: Mark `packages/mcp` private** + +Edit `packages/mcp/package.json`. Add `"private": true` (alongside other top-level fields). Verify: + +```bash +jq '{name, private}' packages/mcp/package.json +``` + +Expected: `{"name": "@ngaf/langgraph-mcp", "private": true}`. + +- [ ] **Step 2: Update `nx.json` release config** + +Find the `release.groups.publishable.projects` array and remove `"mcp"`. Final state: + +```json +"projects": [ + "chat", + "langgraph", + "ag-ui", + "render", + "a2ui", + "partial-json", + "licensing" +] +``` + +Update `release.version.preVersionCommand` to drop `mcp`: + +```json +"preVersionCommand": "npx nx run-many -t build --projects=chat,langgraph,ag-ui,render,a2ui,partial-json,licensing" +``` + +- [ ] **Step 3: Update `.github/workflows/publish.yml`** + +Find the env var: + +```yaml +NPM_PUBLISHABLE_PROJECTS: chat,langgraph,ag-ui,render,a2ui,partial-json,licensing,mcp +``` + +Drop `mcp`: + +```yaml +NPM_PUBLISHABLE_PROJECTS: chat,langgraph,ag-ui,render,a2ui,partial-json,licensing +``` + +- [ ] **Step 4: Update `docs/RELEASE.md`** + +In the package-list paragraph and the build command example, drop `@ngaf/langgraph-mcp` / `mcp`. The list should show 7 packages. + +- [ ] **Step 5: Verify dry-run still works** + +```bash +rm -rf dist/ +npx nx release publish --groups=publishable --dry-run 2>&1 | grep "name:" | sort -u +``` + +Expected: 7 lines, all `@ngaf/`. No `langgraph-mcp` in the output. + +- [ ] **Step 6: Commit** + +```bash +git add packages/mcp/package.json nx.json .github/workflows/publish.yml docs/RELEASE.md +git commit -m "chore: drop mcp from publishable group; mark packages/mcp private + +The MCP integration package isn't ready for first release. Mark +packages/mcp 'private: true' so it can't accidentally publish, and +remove from the synchronized publishable release group. Re-add when +the package matures. + +Co-Authored-By: Claude Opus 4.7 " +``` + +--- + +### Task 4: Lockfile reconciliation + +- [ ] **Step 1: Reinstall** + +```bash +npm install 2>&1 | tail -3 +``` + +This rewrites `package-lock.json` with the new package names. Do NOT `rm -f package-lock.json` first — that drops cross-platform native bindings (see `feedback_lockfile_platform_bindings.md`). + +- [ ] **Step 2: Verify cross-platform bindings preserved** + +```bash +grep -c '"node_modules/@next/swc-' package-lock.json +``` + +Expected: ≥ 4 (linux-x64-gnu, linux-x64-musl, darwin-arm64, win32-x64). If only 1, lockfile lost cross-platform; restore from `git checkout origin/main -- package-lock.json` and re-run `npm install`. + +- [ ] **Step 3: Full library lint/test/build** + +```bash +npx nx run-many -t lint,test,build --projects=chat,langgraph,ag-ui,render,a2ui,partial-json,licensing --skip-nx-cache 2>&1 | tail -3 +``` + +Expected: PASS for all 7 + the cockpit-* deps. Watch for: +- "Cannot find module '@cacheplane/X'" → missed find/replace. +- "Cannot find module '@ngaf/X'" → tsconfig path or package-lock issue. + +- [ ] **Step 4: Commit lockfile** + +```bash +git add package-lock.json +git commit -m "chore: reconcile package-lock after @cacheplane → @ngaf rename" +``` + +--- + +### Task 5: Final verification, push, PR + +- [ ] **Step 1: Final residual-check** + +```bash +echo "@cacheplane in source (should be 0):" +rg "@cacheplane/" \ + --glob '!package-lock.json' \ + --glob '!node_modules/**' \ + --glob '!dist/**' \ + --glob '!docs/superpowers/**' \ + --glob '!apps/minting-service/**' | wc -l +``` + +- [ ] **Step 2: Affected app builds** + +```bash +npx nx affected -t build --base=origin/main 2>&1 | tail -5 +``` + +Expected: PASS. + +- [ ] **Step 3: Push** + +```bash +git push -u origin feat/ngaf-org-rename +``` + +- [ ] **Step 4: Open PR** + +```bash +gh pr create --title "refactor: rename npm scope @cacheplane → @ngaf; drop mcp from publishable group" --body "$(cat <<'EOF' +## Summary +- Bulk rewrite of 536 references from \`@cacheplane/X\` to \`@ngaf/X\`. Affects 88 package.json files, 15 tsconfig paths, 448 source files + READMEs. Excludes \`apps/minting-service/\` (proprietary) and \`docs/superpowers/\` (historical artifacts). +- Drop \`mcp\` from the \`publishable\` release group; mark \`packages/mcp\` \`private: true\`. The MCP integration is deferred to a future release. +- Update \`nx.json\`, \`.github/workflows/publish.yml\`, and \`docs/RELEASE.md\` to reflect the 7-package publishable set. + +## Motivation +\`@ngaf\` (Angular Agent Framework, abbreviated) is short (5 chars vs the 24-char alternative), pronounceable, and identifies the project rather than the parent company. npm package names are sticky once published — better to rename now, before the first release. + +## Final publishable set +1. \`@ngaf/chat\` +2. \`@ngaf/langgraph\` +3. \`@ngaf/ag-ui\` +4. \`@ngaf/render\` +5. \`@ngaf/a2ui\` +6. \`@ngaf/partial-json\` +7. \`@ngaf/licensing\` + +## Test Plan +- [x] Zero \`@cacheplane\` references remain outside excluded paths +- [x] All 7 publishable libs lint/test/build clean +- [x] \`nx release publish --dry-run\` produces 7 tarballs (no langgraph-mcp) +- [x] Cross-platform bindings preserved in package-lock.json + +## What this does NOT do +- The actual first publish (manual; user runs locally per \`docs/RELEASE.md\` after this merges). +- Trusted publishing setup (separate PR after the first publish, since trusted publishing requires the packages to exist on npm first). + +## Design + plan +- Spec: \`docs/superpowers/specs/2026-04-30-ngaf-org-rename-design.md\` +- Plan: \`docs/superpowers/plans/2026-04-30-ngaf-org-rename.md\` + +🤖 Generated with [Claude Code](https://claude.com/claude-code) +EOF +)" +``` + +--- + +## Post-merge: First publish (manual, user-driven) + +Once the rename PR merges and the user has confirmed: +- `npm whoami` returns the user account that owns `@ngaf` org rights +- `NPM_TOKEN` is set locally (e.g., in `.env` or `~/.npmrc`) +- `gh secret list` shows `NPM_TOKEN` set in the repo + +Run from a fresh main checkout: + +```bash +git checkout main && git pull +npx nx run-many -t build --projects=chat,langgraph,ag-ui,render,a2ui,partial-json,licensing +npx nx release changelog 0.0.1 --first-release +npx nx release publish --groups=publishable --first-release +git push origin main --tags +``` + +This publishes 7 packages at version `0.0.1`, generates `CHANGELOG.md`, creates a `v0.0.1` tag, and pushes the tag. The `Publish` workflow fires on tag push but is idempotent (npm rejects duplicate versions). + +## Post-publish: Switch to trusted publishing (separate PR) + +1. **Per-package npm config** (manual web UI). For each of the 7 packages, navigate to `npmjs.com/package/@ngaf//access` and add a Trusted Publisher entry pointing to: + - GitHub repository: `cacheplane/angular-agent-framework` + - Workflow filename: `publish.yml` + - Environment: (none) +2. **Workflow update PR:** + - Drop `NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}` from the publish steps in `.github/workflows/publish.yml`. + - Keep `permissions.id-token: write` and `NPM_CONFIG_PROVENANCE: 'true'` (already there). + - Add a comment in the workflow noting trusted publishing is now active. +3. **Verify** with workflow_dispatch dry-run (`Run workflow → dry-run = true`) before the next real release. +4. **Cleanup** after two consecutive successful releases via trusted publishing: `gh secret delete NPM_TOKEN`. From bd9c93b1ae4e692b51193773cf2f80b6109e833e Mon Sep 17 00:00:00 2001 From: Brian Love Date: Thu, 30 Apr 2026 16:44:41 -0700 Subject: [PATCH 3/5] =?UTF-8?q?refactor:=20rename=20npm=20scope=20@cachepl?= =?UTF-8?q?ane=20=E2=86=92=20@ngaf=20across=20the=20codebase?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bulk rewrite of 434 references (88 package.json, 15 tsconfig paths, 331 source files + READMEs). Excludes apps/minting-service/ and docs/superpowers/ historical artifacts. Co-Authored-By: Claude Opus 4.7 --- AGENTS.md | 4 +- COMMERCIAL.md | 2 +- README.md | 8 ++-- apps/cockpit/src/app/layout.tsx | 2 +- apps/cockpit/src/components/cockpit-shell.tsx | 2 +- .../components/mobile-nav-overlay.spec.tsx | 2 +- .../src/components/mobile-nav-overlay.tsx | 2 +- .../sidebar/cockpit-sidebar.spec.tsx | 2 +- .../components/sidebar/cockpit-sidebar.tsx | 2 +- .../sidebar/language-picker.spec.tsx | 2 +- .../components/sidebar/language-picker.tsx | 4 +- .../components/sidebar/navigation-groups.tsx | 2 +- apps/cockpit/src/lib/cockpit-page.ts | 2 +- apps/cockpit/src/lib/route-resolution.spec.ts | 2 +- apps/cockpit/src/lib/route-resolution.ts | 2 +- apps/cockpit/src/lib/utils.ts | 2 +- apps/cockpit/tsconfig.json | 6 +-- .../src/app/chat-demo/chat-demo.component.ts | 2 +- apps/website/content/AGENTS.md.template | 8 ++-- apps/website/content/CLAUDE.md.template | 8 ++-- apps/website/content/docs/agent/api/agent.mdx | 2 +- .../docs/agent/api/fetch-stream-transport.mdx | 2 +- .../docs/agent/api/mock-stream-transport.mdx | 2 +- .../content/docs/agent/api/provide-agent.mdx | 2 +- .../agent/concepts/agent-architecture.mdx | 6 +-- .../docs/agent/concepts/angular-signals.mdx | 8 ++-- .../docs/agent/concepts/state-management.mdx | 4 +- .../agent/getting-started/installation.mdx | 4 +- .../agent/getting-started/introduction.mdx | 6 +-- .../docs/agent/getting-started/quickstart.mdx | 6 +-- .../content/docs/agent/guides/deployment.mdx | 4 +- .../content/docs/agent/guides/interrupts.mdx | 6 +-- .../content/docs/agent/guides/memory.mdx | 4 +- .../content/docs/agent/guides/persistence.mdx | 4 +- .../content/docs/agent/guides/streaming.mdx | 4 +- .../content/docs/agent/guides/subgraphs.mdx | 2 +- .../content/docs/agent/guides/testing.mdx | 20 ++++----- .../content/docs/agent/guides/time-travel.mdx | 4 +- .../content/docs/chat/api/chat-config.mdx | 6 +-- .../docs/chat/api/content-classifier.mdx | 4 +- .../docs/chat/api/create-mock-agent-ref.mdx | 10 ++--- .../docs/chat/api/parse-tree-store.mdx | 12 ++--- .../content/docs/chat/api/provide-chat.mdx | 12 ++--- .../docs/chat/components/chat-debug.mdx | 18 ++++---- .../docs/chat/components/chat-input.mdx | 8 ++-- .../chat/components/chat-interrupt-panel.mdx | 14 +++--- .../docs/chat/components/chat-messages.mdx | 10 ++--- .../chat/components/chat-subagent-card.mdx | 8 ++-- .../chat/components/chat-tool-call-card.mdx | 6 +-- .../content/docs/chat/components/chat.mdx | 12 ++--- .../chat/getting-started/installation.mdx | 26 +++++------ .../chat/getting-started/introduction.mdx | 12 ++--- .../docs/chat/getting-started/quickstart.mdx | 18 ++++---- .../docs/chat/guides/configuration.mdx | 10 ++--- .../docs/chat/guides/custom-catalogs.mdx | 18 ++++---- .../docs/chat/guides/generative-ui.mdx | 8 ++-- .../content/docs/chat/guides/markdown.mdx | 8 ++-- .../content/docs/chat/guides/streaming.mdx | 8 ++-- .../content/docs/chat/guides/theming.mdx | 6 +-- .../content/docs/render/a2ui/catalog.mdx | 2 +- .../content/docs/render/a2ui/overview.mdx | 10 ++--- .../docs/render/a2ui/surface-component.mdx | 8 ++-- .../docs/render/a2ui/surface-store.mdx | 6 +-- .../render/api/define-angular-registry.mdx | 6 +-- .../docs/render/api/provide-render.mdx | 10 ++--- .../docs/render/api/render-spec-component.mdx | 6 +-- .../docs/render/api/signal-state-store.mdx | 2 +- .../website/content/docs/render/api/views.mdx | 4 +- .../render/getting-started/installation.mdx | 12 ++--- .../render/getting-started/introduction.mdx | 8 ++-- .../render/getting-started/quickstart.mdx | 12 ++--- .../content/docs/render/guides/events.mdx | 2 +- .../content/docs/render/guides/registry.mdx | 10 ++--- .../content/docs/render/guides/specs.mdx | 2 +- .../docs/render/guides/state-store.mdx | 4 +- apps/website/content/prompts/configuration.md | 2 +- .../content/prompts/getting-started.md | 4 +- apps/website/content/prompts/testing.md | 2 +- apps/website/emails/drip-angular-followup.ts | 6 +-- apps/website/emails/drip-chat-followup.ts | 2 +- apps/website/emails/drip-render-followup.ts | 2 +- apps/website/public/assets/arch-diagram.svg | 2 +- .../public/whitepapers/angular-preview.html | 16 +++---- .../public/whitepapers/chat-preview.html | 44 +++++++++---------- .../public/whitepapers/render-preview.html | 14 +++--- apps/website/scripts/generate-whitepaper.ts | 42 +++++++++--------- apps/website/src/app/angular/page.tsx | 4 +- apps/website/src/app/chat/page.tsx | 4 +- apps/website/src/app/docs/page.tsx | 2 +- apps/website/src/app/llms-full.txt/route.ts | 2 +- apps/website/src/app/llms.txt/route.ts | 6 +-- apps/website/src/app/render/page.tsx | 4 +- .../website/src/app/solutions/[slug]/page.tsx | 2 +- apps/website/src/app/solutions/page.tsx | 2 +- .../src/components/docs/ApiDocRenderer.tsx | 2 +- .../src/components/docs/ApiRefTable.tsx | 2 +- .../src/components/docs/CopyPromptButton.tsx | 2 +- .../src/components/docs/DocsBreadcrumb.tsx | 2 +- .../src/components/docs/DocsPrevNext.tsx | 2 +- .../src/components/docs/DocsSearch.tsx | 2 +- .../src/components/docs/DocsSidebar.tsx | 2 +- .../src/components/docs/mdx/Callout.tsx | 2 +- apps/website/src/components/docs/mdx/Card.tsx | 2 +- .../src/components/docs/mdx/CodeGroup.tsx | 2 +- .../website/src/components/docs/mdx/Steps.tsx | 2 +- .../src/components/landing/ArchDiagram.tsx | 2 +- .../src/components/landing/CapabilityCard.tsx | 2 +- .../landing/ChatFeaturesSection.tsx | 4 +- .../src/components/landing/CockpitCTA.tsx | 2 +- .../src/components/landing/CodeBlock.tsx | 2 +- .../components/landing/DeepAgentsShowcase.tsx | 2 +- .../src/components/landing/EmbedFrame.tsx | 2 +- .../src/components/landing/FeatureStrip.tsx | 2 +- .../components/landing/GenerativeUIFrame.tsx | 2 +- .../src/components/landing/HeroTwoCol.tsx | 6 +-- .../components/landing/LangGraphShowcase.tsx | 2 +- .../components/landing/LibrariesSection.tsx | 8 ++-- .../src/components/landing/PilotSolution.tsx | 2 +- .../src/components/landing/StatsStrip.tsx | 2 +- .../src/components/landing/TheStack.tsx | 8 ++-- .../src/components/landing/ValueProps.tsx | 2 +- .../src/components/landing/ValuePropsTabs.tsx | 2 +- .../landing/angular/AngularCodeShowcase.tsx | 6 +-- .../landing/angular/AngularComparison.tsx | 6 +-- .../landing/angular/AngularFeaturesGrid.tsx | 2 +- .../landing/angular/AngularFooterCTA.tsx | 2 +- .../landing/angular/AngularHero.tsx | 4 +- .../angular/AngularProblemSolution.tsx | 4 +- .../landing/angular/AngularStackSiblings.tsx | 6 +-- .../landing/angular/AngularWhitePaperGate.tsx | 2 +- .../chat-landing/ChatLandingCodeShowcase.tsx | 4 +- .../chat-landing/ChatLandingComparison.tsx | 6 +-- .../chat-landing/ChatLandingFeaturesGrid.tsx | 2 +- .../chat-landing/ChatLandingFooterCTA.tsx | 2 +- .../landing/chat-landing/ChatLandingHero.tsx | 4 +- .../ChatLandingProblemSolution.tsx | 8 ++-- .../chat-landing/ChatLandingStackSiblings.tsx | 6 +-- .../ChatLandingWhitePaperGate.tsx | 2 +- .../landing/render/RenderCodeShowcase.tsx | 4 +- .../landing/render/RenderComparison.tsx | 6 +-- .../landing/render/RenderFeaturesGrid.tsx | 2 +- .../landing/render/RenderFooterCTA.tsx | 2 +- .../components/landing/render/RenderHero.tsx | 6 +-- .../landing/render/RenderProblemSolution.tsx | 6 +-- .../landing/render/RenderStackSiblings.tsx | 6 +-- .../landing/render/RenderWhitePaperGate.tsx | 2 +- .../solutions/SolutionArchitecture.tsx | 2 +- .../landing/solutions/SolutionHero.tsx | 2 +- .../landing/solutions/SolutionProblem.tsx | 2 +- .../landing/solutions/SolutionProofPoints.tsx | 2 +- .../landing/solutions/SolutionsGrid.tsx | 2 +- .../src/components/pricing/CompareTable.tsx | 2 +- .../src/components/pricing/LeadForm.tsx | 2 +- .../src/components/pricing/PricingGrid.tsx | 4 +- .../components/shared/AnnouncementToast.tsx | 2 +- apps/website/src/components/shared/Footer.tsx | 6 +-- .../src/components/shared/InstallStrip.tsx | 4 +- apps/website/src/components/shared/Nav.tsx | 2 +- apps/website/src/lib/solutions-data.ts | 18 ++++---- apps/website/tsconfig.json | 8 ++-- cockpit/ag-ui/streaming/angular/package.json | 6 +-- .../streaming/angular/prompts/streaming.md | 2 +- .../streaming/angular/src/app/app.config.ts | 2 +- .../angular/src/app/streaming.component.ts | 8 ++-- .../a2ui/angular/src/app/a2ui.component.ts | 4 +- .../chat/a2ui/angular/src/app/app.config.ts | 4 +- cockpit/chat/a2ui/python/docs/guide.md | 8 ++-- cockpit/chat/debug/angular/package.json | 6 +-- .../chat/debug/angular/src/app/app.config.ts | 4 +- .../debug/angular/src/app/debug.component.ts | 6 +-- cockpit/chat/debug/python/docs/guide.md | 6 +-- cockpit/chat/debug/python/package.json | 2 +- .../chat/generative-ui/angular/package.json | 6 +-- .../angular/src/app/app.config.ts | 4 +- .../src/app/generative-ui.component.ts | 6 +-- .../src/app/views/container.component.ts | 2 +- .../src/app/views/dashboard-grid.component.ts | 2 +- .../chat/generative-ui/python/docs/guide.md | 4 +- .../chat/generative-ui/python/package.json | 2 +- cockpit/chat/input/angular/package.json | 6 +-- .../chat/input/angular/src/app/app.config.ts | 4 +- .../input/angular/src/app/input.component.ts | 8 ++-- cockpit/chat/input/python/docs/guide.md | 6 +-- cockpit/chat/input/python/package.json | 2 +- cockpit/chat/input/python/prompts/input.md | 2 +- cockpit/chat/interrupts/angular/package.json | 6 +-- .../interrupts/angular/src/app/app.config.ts | 4 +- .../angular/src/app/interrupts.component.ts | 6 +-- cockpit/chat/interrupts/python/docs/guide.md | 4 +- cockpit/chat/interrupts/python/package.json | 2 +- cockpit/chat/messages/angular/package.json | 6 +-- .../messages/angular/src/app/app.config.ts | 4 +- .../angular/src/app/messages.component.ts | 8 ++-- cockpit/chat/messages/python/docs/guide.md | 6 +-- cockpit/chat/messages/python/package.json | 2 +- .../chat/messages/python/prompts/messages.md | 2 +- cockpit/chat/subagents/angular/package.json | 6 +-- .../subagents/angular/src/app/app.config.ts | 4 +- .../angular/src/app/subagents.component.ts | 6 +-- cockpit/chat/subagents/python/docs/guide.md | 4 +- cockpit/chat/subagents/python/package.json | 2 +- cockpit/chat/theming/angular/package.json | 6 +-- .../theming/angular/src/app/app.config.ts | 4 +- .../angular/src/app/theming.component.ts | 6 +-- cockpit/chat/theming/python/docs/guide.md | 6 +-- cockpit/chat/theming/python/package.json | 2 +- .../chat/theming/python/prompts/theming.md | 2 +- cockpit/chat/threads/angular/package.json | 6 +-- .../threads/angular/src/app/app.config.ts | 4 +- .../angular/src/app/threads.component.ts | 6 +-- cockpit/chat/threads/python/docs/guide.md | 4 +- cockpit/chat/threads/python/package.json | 2 +- cockpit/chat/timeline/angular/package.json | 6 +-- .../timeline/angular/src/app/app.config.ts | 4 +- .../angular/src/app/timeline.component.ts | 6 +-- cockpit/chat/timeline/python/docs/guide.md | 4 +- cockpit/chat/timeline/python/package.json | 2 +- cockpit/chat/tool-calls/angular/package.json | 6 +-- .../tool-calls/angular/src/app/app.config.ts | 4 +- .../angular/src/app/tool-calls.component.ts | 6 +-- cockpit/chat/tool-calls/python/docs/guide.md | 4 +- cockpit/chat/tool-calls/python/package.json | 2 +- .../filesystem/angular/package.json | 6 +-- .../filesystem/angular/prompts/filesystem.md | 2 +- .../filesystem/angular/src/app/app.config.ts | 6 +-- .../angular/src/app/filesystem.component.ts | 8 ++-- .../filesystem/python/docs/guide.md | 8 ++-- .../filesystem/python/package.json | 2 +- .../deep-agents/memory/angular/package.json | 6 +-- .../memory/angular/prompts/memory.md | 2 +- .../memory/angular/src/app/app.config.ts | 6 +-- .../angular/src/app/memory.component.ts | 6 +-- .../deep-agents/memory/python/docs/guide.md | 8 ++-- .../deep-agents/memory/python/package.json | 2 +- .../deep-agents/planning/angular/package.json | 6 +-- .../planning/angular/prompts/planning.md | 2 +- .../planning/angular/src/app/app.config.ts | 6 +-- .../angular/src/app/planning.component.ts | 8 ++-- .../deep-agents/planning/python/docs/guide.md | 8 ++-- .../deep-agents/planning/python/package.json | 2 +- .../sandboxes/angular/package.json | 6 +-- .../sandboxes/angular/prompts/sandboxes.md | 2 +- .../sandboxes/angular/src/app/app.config.ts | 6 +-- .../angular/src/app/sandboxes.component.ts | 8 ++-- .../sandboxes/python/docs/guide.md | 8 ++-- .../deep-agents/sandboxes/python/package.json | 2 +- .../deep-agents/skills/angular/package.json | 6 +-- .../skills/angular/prompts/skills.md | 2 +- .../skills/angular/src/app/app.config.ts | 6 +-- .../angular/src/app/skills.component.ts | 8 ++-- .../deep-agents/skills/python/docs/guide.md | 8 ++-- .../deep-agents/skills/python/package.json | 2 +- .../subagents/angular/package.json | 6 +-- .../subagents/angular/prompts/subagents.md | 2 +- .../subagents/angular/src/app/app.config.ts | 6 +-- .../angular/src/app/subagents.component.ts | 6 +-- .../subagents/python/docs/guide.md | 8 ++-- .../deep-agents/subagents/python/package.json | 2 +- .../deployment-runtime/angular/package.json | 6 +-- .../angular/prompts/deployment-runtime.md | 2 +- .../angular/src/app/app.config.ts | 4 +- .../src/app/deployment-runtime.component.ts | 6 +-- .../deployment-runtime/python/docs/guide.md | 6 +-- .../deployment-runtime/python/package.json | 2 +- .../deployment-runtime/python/tsconfig.json | 2 +- .../durable-execution/angular/package.json | 6 +-- .../angular/prompts/durable-execution.md | 2 +- .../angular/src/app/app.config.ts | 4 +- .../src/app/durable-execution.component.ts | 8 ++-- .../durable-execution/python/docs/guide.md | 8 ++-- .../durable-execution/python/package.json | 2 +- .../durable-execution/python/tsconfig.json | 2 +- .../langgraph/interrupts/angular/package.json | 6 +-- .../interrupts/angular/prompts/interrupts.md | 2 +- .../interrupts/angular/src/app/app.config.ts | 4 +- .../angular/src/app/interrupts.component.ts | 8 ++-- .../langgraph/interrupts/python/docs/guide.md | 8 ++-- .../langgraph/interrupts/python/package.json | 2 +- .../langgraph/interrupts/python/tsconfig.json | 2 +- cockpit/langgraph/memory/angular/package.json | 6 +-- .../memory/angular/prompts/memory.md | 2 +- .../memory/angular/src/app/app.config.ts | 4 +- .../angular/src/app/memory.component.ts | 6 +-- cockpit/langgraph/memory/python/docs/guide.md | 6 +-- cockpit/langgraph/memory/python/package.json | 2 +- cockpit/langgraph/memory/python/tsconfig.json | 2 +- .../persistence/angular/package.json | 6 +-- .../angular/prompts/persistence.md | 2 +- .../persistence/angular/src/app/app.config.ts | 4 +- .../angular/src/app/persistence.component.ts | 6 +-- .../persistence/python/docs/guide.md | 10 ++--- .../langgraph/persistence/python/package.json | 2 +- .../persistence/python/tsconfig.json | 2 +- .../langgraph/streaming/angular/package.json | 6 +-- .../streaming/angular/prompts/streaming.md | 2 +- .../streaming/angular/src/app/app.config.ts | 4 +- .../angular/src/app/streaming.component.ts | 8 ++-- .../langgraph/streaming/python/docs/guide.md | 8 ++-- .../langgraph/streaming/python/package.json | 2 +- .../streaming/python/prompts/input.md | 2 +- .../streaming/python/prompts/messages.md | 2 +- .../streaming/python/prompts/theming.md | 2 +- .../langgraph/streaming/python/tsconfig.json | 2 +- .../langgraph/subgraphs/angular/package.json | 6 +-- .../subgraphs/angular/prompts/subgraphs.md | 2 +- .../subgraphs/angular/src/app/app.config.ts | 4 +- .../angular/src/app/subgraphs.component.ts | 6 +-- .../langgraph/subgraphs/python/docs/guide.md | 10 ++--- .../langgraph/subgraphs/python/package.json | 2 +- .../langgraph/subgraphs/python/tsconfig.json | 2 +- .../time-travel/angular/package.json | 6 +-- .../angular/prompts/time-travel.md | 2 +- .../time-travel/angular/src/app/app.config.ts | 4 +- .../angular/src/app/time-travel.component.ts | 8 ++-- .../time-travel/python/docs/guide.md | 8 ++-- .../langgraph/time-travel/python/package.json | 2 +- .../time-travel/python/tsconfig.json | 2 +- .../computed-functions/angular/package.json | 4 +- .../angular/src/app/app.config.ts | 2 +- .../src/app/computed-functions.component.ts | 4 +- .../computed-functions/python/docs/guide.md | 4 +- .../computed-functions/python/package.json | 2 +- .../python/prompts/computed-functions.md | 2 +- .../element-rendering/angular/package.json | 4 +- .../angular/src/app/app.config.ts | 2 +- .../src/app/element-rendering.component.ts | 4 +- .../element-rendering/python/docs/guide.md | 6 +-- .../element-rendering/python/package.json | 2 +- .../python/prompts/element-rendering.md | 2 +- cockpit/render/registry/angular/package.json | 4 +- .../registry/angular/src/app/app.config.ts | 2 +- .../angular/src/app/registry.component.ts | 4 +- cockpit/render/registry/python/docs/guide.md | 6 +-- cockpit/render/registry/python/package.json | 2 +- .../registry/python/prompts/registry.md | 2 +- .../render/repeat-loops/angular/package.json | 4 +- .../angular/src/app/app.config.ts | 2 +- .../angular/src/app/repeat-loops.component.ts | 4 +- .../render/repeat-loops/python/docs/guide.md | 6 +-- .../render/repeat-loops/python/package.json | 2 +- .../python/prompts/repeat-loops.md | 2 +- cockpit/render/shared/streaming-simulator.ts | 4 +- .../spec-rendering/angular/package.json | 4 +- .../angular/src/app/app.config.ts | 2 +- .../src/app/spec-rendering.component.ts | 4 +- .../spec-rendering/python/docs/guide.md | 10 ++--- .../render/spec-rendering/python/package.json | 2 +- .../python/prompts/spec-rendering.md | 2 +- .../render/spec-rendering/python/src/graph.py | 2 +- .../state-management/angular/package.json | 4 +- .../angular/src/app/app.config.ts | 2 +- .../src/app/state-management.component.ts | 4 +- .../state-management/python/docs/guide.md | 6 +-- .../state-management/python/package.json | 2 +- .../python/prompts/state-management.md | 2 +- docs/RELEASE.md | 2 +- libs/a2ui/package.json | 2 +- libs/ag-ui/README.md | 8 ++-- libs/ag-ui/eslint.config.mjs | 2 +- libs/ag-ui/package.json | 6 +-- libs/ag-ui/src/lib/provide-ag-ui-agent.ts | 2 +- libs/ag-ui/src/lib/reducer.spec.ts | 2 +- libs/ag-ui/src/lib/reducer.ts | 2 +- .../src/lib/to-agent.conformance.spec.ts | 2 +- libs/ag-ui/src/lib/to-agent.ts | 2 +- libs/chat/README.md | 4 +- libs/chat/package.json | 10 ++--- .../src/lib/a2ui/build-action-message.spec.ts | 2 +- .../chat/src/lib/a2ui/build-action-message.ts | 2 +- .../src/lib/a2ui/catalog/button.component.ts | 2 +- .../src/lib/a2ui/catalog/card.component.ts | 2 +- .../lib/a2ui/catalog/check-box.component.ts | 2 +- .../a2ui/catalog/choice-picker.component.ts | 2 +- .../src/lib/a2ui/catalog/column.component.ts | 2 +- .../a2ui/catalog/date-time-input.component.ts | 2 +- libs/chat/src/lib/a2ui/catalog/index.ts | 2 +- .../src/lib/a2ui/catalog/list.component.ts | 2 +- .../src/lib/a2ui/catalog/modal.component.ts | 2 +- .../src/lib/a2ui/catalog/row.component.ts | 2 +- .../src/lib/a2ui/catalog/slider.component.ts | 2 +- .../src/lib/a2ui/catalog/tabs.component.ts | 2 +- .../lib/a2ui/catalog/text-field.component.ts | 2 +- .../catalog/validation-errors.component.ts | 2 +- libs/chat/src/lib/a2ui/surface-store.spec.ts | 2 +- libs/chat/src/lib/a2ui/surface-store.ts | 4 +- .../chat/src/lib/a2ui/surface-to-spec.spec.ts | 2 +- libs/chat/src/lib/a2ui/surface-to-spec.ts | 4 +- libs/chat/src/lib/a2ui/surface.component.ts | 6 +-- libs/chat/src/lib/chat.types.ts | 2 +- .../compositions/chat/chat-render-event.ts | 2 +- .../compositions/chat/chat.component.spec.ts | 2 +- .../lib/compositions/chat/chat.component.ts | 6 +-- .../chat-generative-ui.component.ts | 4 +- libs/chat/src/lib/provide-chat.spec.ts | 4 +- libs/chat/src/lib/provide-chat.ts | 6 +-- .../src/lib/streaming/content-classifier.ts | 6 +-- .../lib/streaming/parse-tree-store.spec.ts | 2 +- .../src/lib/streaming/parse-tree-store.ts | 4 +- libs/chat/src/public-api.ts | 14 +++--- libs/cockpit-docs/package.json | 2 +- libs/cockpit-registry/package.json | 2 +- libs/cockpit-shell/package.json | 2 +- libs/cockpit-testing/package.json | 2 +- libs/cockpit-ui/package.json | 2 +- libs/db/package.json | 2 +- libs/design-tokens/package.json | 2 +- libs/example-layouts/package.json | 2 +- libs/langgraph/package.json | 6 +-- libs/langgraph/src/lib/agent.provider.spec.ts | 4 +- libs/langgraph/src/lib/agent.provider.ts | 4 +- .../src/lib/to-agent.conformance.spec.ts | 2 +- libs/langgraph/src/lib/to-agent.spec.ts | 2 +- libs/langgraph/src/lib/to-agent.ts | 2 +- libs/langgraph/src/test-setup.ts | 2 +- libs/licensing/README.md | 6 +-- libs/licensing/package.json | 2 +- libs/licensing/src/lib/license-public-key.ts | 2 +- libs/licensing/src/lib/nag.spec.ts | 22 +++++----- libs/licensing/src/lib/nag.ts | 2 +- .../src/lib/run-license-check.spec.ts | 12 ++--- libs/licensing/src/lib/telemetry.spec.ts | 14 +++--- libs/licensing/src/testing.ts | 2 +- libs/partial-json/package.json | 2 +- libs/render/package.json | 4 +- libs/render/src/lib/provide-render.spec.ts | 4 +- libs/render/src/lib/provide-render.ts | 4 +- libs/ui-react/package.json | 2 +- libs/ui-react/src/lib/css-vars.ts | 2 +- packages/mcp/package-smoke.test.mjs | 4 +- packages/mcp/package.json | 6 +-- packages/mcp/src/tools/add-agent.ts | 4 +- packages/mcp/src/tools/get-example.ts | 14 +++--- .../mcp/src/tools/scaffold-chat-component.ts | 2 +- tsconfig.base.json | 32 +++++++------- 434 files changed, 1030 insertions(+), 1030 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 4f2a299d9..ba37d00ae 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -36,9 +36,9 @@ This file is for agents working in this repository. It is contributor-facing, no ## Repo Layout -- `libs/langgraph`: main Angular library (`@cacheplane/langgraph`). +- `libs/langgraph`: main Angular library (`@ngaf/langgraph`). - `apps/website`: docs and marketing site. -- `packages/mcp`: MCP server package (`@cacheplane/langgraph-mcp`). +- `packages/mcp`: MCP server package (`@ngaf/langgraph-mcp`). - `e2e/agent-e2e`: end-to-end coverage for the workspace. - `apps/demo` and `apps/demo-e2e`: demo application and related end-to-end coverage. diff --git a/COMMERCIAL.md b/COMMERCIAL.md index d68b3dbf6..9a732f1fb 100644 --- a/COMMERCIAL.md +++ b/COMMERCIAL.md @@ -1,6 +1,6 @@ # Licensing -The libraries in this repository (`@cacheplane/langgraph`, `@cacheplane/chat`, and all related packages) are released under the **MIT License**. You are free to use, modify, and distribute them in any project — commercial or noncommercial — at no cost. See [`LICENSE`](./LICENSE). +The libraries in this repository (`@ngaf/langgraph`, `@ngaf/chat`, and all related packages) are released under the **MIT License**. You are free to use, modify, and distribute them in any project — commercial or noncommercial — at no cost. See [`LICENSE`](./LICENSE). ## Minting Service diff --git a/README.md b/README.md index e861a8431..9cc3704de 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@

- + npm version @@ -34,7 +34,7 @@ ## Install ```bash -npm install @cacheplane/langgraph +npm install @ngaf/langgraph ``` **Peer dependencies:** `@angular/core ^20.0.0 || ^21.0.0`, `@langchain/core ^1.1.0`, `@langchain/langgraph-sdk ^1.7.0`, `rxjs ~7.8.0` @@ -45,7 +45,7 @@ npm install @cacheplane/langgraph ```typescript import { Component } from '@angular/core'; -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; import type { BaseMessage } from '@langchain/core/messages'; @Component({ @@ -134,4 +134,4 @@ That's it. `chat.messages()` is an Angular Signal. Bind it directly in your temp **MIT** — free for any use. See [`LICENSE`](./LICENSE). -`@cacheplane/langgraph` and all libraries in this repository are released under the [MIT License](./LICENSE). You are free to use, modify, and distribute them in both commercial and noncommercial projects without restriction. +`@ngaf/langgraph` and all libraries in this repository are released under the [MIT License](./LICENSE). You are free to use, modify, and distribute them in both commercial and noncommercial projects without restriction. diff --git a/apps/cockpit/src/app/layout.tsx b/apps/cockpit/src/app/layout.tsx index e0775a1d7..95cf9d5e9 100644 --- a/apps/cockpit/src/app/layout.tsx +++ b/apps/cockpit/src/app/layout.tsx @@ -1,5 +1,5 @@ import type { ReactNode } from 'react'; -import { cssVars } from '@cacheplane/ui-react'; +import { cssVars } from '@ngaf/ui-react'; import './cockpit.css'; export const metadata = { diff --git a/apps/cockpit/src/components/cockpit-shell.tsx b/apps/cockpit/src/components/cockpit-shell.tsx index a2d9fa0dd..270b4e330 100644 --- a/apps/cockpit/src/components/cockpit-shell.tsx +++ b/apps/cockpit/src/components/cockpit-shell.tsx @@ -1,7 +1,7 @@ 'use client'; import React, { useEffect, useState } from 'react'; -import { cockpitManifest } from '@cacheplane/cockpit-registry'; +import { cockpitManifest } from '@ngaf/cockpit-registry'; import type { ContentBundle } from '../lib/content-bundle'; import type { CapabilityPresentation, NavigationProduct } from '../lib/route-resolution'; import { CodeMode } from './code-mode/code-mode'; diff --git a/apps/cockpit/src/components/mobile-nav-overlay.spec.tsx b/apps/cockpit/src/components/mobile-nav-overlay.spec.tsx index 7808c4252..12d55897f 100644 --- a/apps/cockpit/src/components/mobile-nav-overlay.spec.tsx +++ b/apps/cockpit/src/components/mobile-nav-overlay.spec.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { renderToStaticMarkup } from 'react-dom/server'; import { describe, expect, it } from 'vitest'; -import { cockpitManifest } from '@cacheplane/cockpit-registry'; +import { cockpitManifest } from '@ngaf/cockpit-registry'; import { buildNavigationTree } from '../lib/route-resolution'; import { MobileNavOverlay } from './mobile-nav-overlay'; diff --git a/apps/cockpit/src/components/mobile-nav-overlay.tsx b/apps/cockpit/src/components/mobile-nav-overlay.tsx index f99fe6d70..805740ac8 100644 --- a/apps/cockpit/src/components/mobile-nav-overlay.tsx +++ b/apps/cockpit/src/components/mobile-nav-overlay.tsx @@ -1,7 +1,7 @@ 'use client'; import React, { useEffect, useState } from 'react'; -import type { CockpitManifestEntry } from '@cacheplane/cockpit-registry'; +import type { CockpitManifestEntry } from '@ngaf/cockpit-registry'; import type { NavigationProduct } from '../lib/route-resolution'; import { toCockpitPath } from '../lib/route-resolution'; import { PRODUCT_LABELS, stripProductPrefix } from '../lib/navigation-labels'; diff --git a/apps/cockpit/src/components/sidebar/cockpit-sidebar.spec.tsx b/apps/cockpit/src/components/sidebar/cockpit-sidebar.spec.tsx index 4cb5a7812..024226b62 100644 --- a/apps/cockpit/src/components/sidebar/cockpit-sidebar.spec.tsx +++ b/apps/cockpit/src/components/sidebar/cockpit-sidebar.spec.tsx @@ -2,7 +2,7 @@ import React from 'react'; import { renderToStaticMarkup } from 'react-dom/server'; import { describe, expect, it } from 'vitest'; import { buildNavigationTree } from '../../lib/route-resolution'; -import { cockpitManifest } from '@cacheplane/cockpit-registry'; +import { cockpitManifest } from '@ngaf/cockpit-registry'; import { CockpitSidebar } from './cockpit-sidebar'; describe('CockpitSidebar', () => { diff --git a/apps/cockpit/src/components/sidebar/cockpit-sidebar.tsx b/apps/cockpit/src/components/sidebar/cockpit-sidebar.tsx index efe970bf5..68a5ecf55 100644 --- a/apps/cockpit/src/components/sidebar/cockpit-sidebar.tsx +++ b/apps/cockpit/src/components/sidebar/cockpit-sidebar.tsx @@ -1,7 +1,7 @@ import React from 'react'; import type { CockpitManifestEntry, -} from '@cacheplane/cockpit-registry'; +} from '@ngaf/cockpit-registry'; import type { NavigationProduct } from '../../lib/route-resolution'; import { LanguagePicker } from './language-picker'; import { NavigationGroups } from './navigation-groups'; diff --git a/apps/cockpit/src/components/sidebar/language-picker.spec.tsx b/apps/cockpit/src/components/sidebar/language-picker.spec.tsx index 227cd56eb..92af1a547 100644 --- a/apps/cockpit/src/components/sidebar/language-picker.spec.tsx +++ b/apps/cockpit/src/components/sidebar/language-picker.spec.tsx @@ -3,7 +3,7 @@ import { act } from 'react-dom/test-utils'; import { createRoot } from 'react-dom/client'; import { JSDOM } from 'jsdom'; import { afterEach, describe, expect, it } from 'vitest'; -import { cockpitManifest } from '@cacheplane/cockpit-registry'; +import { cockpitManifest } from '@ngaf/cockpit-registry'; import { LanguagePicker } from './language-picker'; describe('LanguagePicker', () => { diff --git a/apps/cockpit/src/components/sidebar/language-picker.tsx b/apps/cockpit/src/components/sidebar/language-picker.tsx index cf5019ed5..63d54298b 100644 --- a/apps/cockpit/src/components/sidebar/language-picker.tsx +++ b/apps/cockpit/src/components/sidebar/language-picker.tsx @@ -4,8 +4,8 @@ import React, { useState, useEffect, useRef } from 'react'; import type { CockpitLanguage, CockpitManifestEntry, -} from '@cacheplane/cockpit-registry'; -import { resolveManifestLanguage } from '@cacheplane/cockpit-registry'; +} from '@ngaf/cockpit-registry'; +import { resolveManifestLanguage } from '@ngaf/cockpit-registry'; import { toCockpitPath } from '../../lib/route-resolution'; const LANGUAGE_OPTIONS: Array<{ language: CockpitLanguage; label: string }> = [ diff --git a/apps/cockpit/src/components/sidebar/navigation-groups.tsx b/apps/cockpit/src/components/sidebar/navigation-groups.tsx index 81a86c8f1..0b185b445 100644 --- a/apps/cockpit/src/components/sidebar/navigation-groups.tsx +++ b/apps/cockpit/src/components/sidebar/navigation-groups.tsx @@ -1,7 +1,7 @@ 'use client'; import React, { useState } from 'react'; -import type { CockpitManifestEntry } from '@cacheplane/cockpit-registry'; +import type { CockpitManifestEntry } from '@ngaf/cockpit-registry'; import type { NavigationProduct } from '../../lib/route-resolution'; import { toCockpitPath } from '../../lib/route-resolution'; import { PRODUCT_LABELS, stripProductPrefix } from '../../lib/navigation-labels'; diff --git a/apps/cockpit/src/lib/cockpit-page.ts b/apps/cockpit/src/lib/cockpit-page.ts index a9d378dac..8fb8309eb 100644 --- a/apps/cockpit/src/lib/cockpit-page.ts +++ b/apps/cockpit/src/lib/cockpit-page.ts @@ -1,4 +1,4 @@ -import { cockpitManifest, type CockpitProduct, type CockpitSection, type CockpitPageId, type CockpitLanguage } from '@cacheplane/cockpit-registry'; +import { cockpitManifest, type CockpitProduct, type CockpitSection, type CockpitPageId, type CockpitLanguage } from '@ngaf/cockpit-registry'; import { buildNavigationTree, getCapabilityPresentation, diff --git a/apps/cockpit/src/lib/route-resolution.spec.ts b/apps/cockpit/src/lib/route-resolution.spec.ts index 5caeb874d..b753fd62b 100644 --- a/apps/cockpit/src/lib/route-resolution.spec.ts +++ b/apps/cockpit/src/lib/route-resolution.spec.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from 'vitest'; -import { cockpitManifest } from '@cacheplane/cockpit-registry'; +import { cockpitManifest } from '@ngaf/cockpit-registry'; import { buildNavigationTree, getCapabilityPresentation, diff --git a/apps/cockpit/src/lib/route-resolution.ts b/apps/cockpit/src/lib/route-resolution.ts index 8585863e0..27502c5fa 100644 --- a/apps/cockpit/src/lib/route-resolution.ts +++ b/apps/cockpit/src/lib/route-resolution.ts @@ -2,7 +2,7 @@ import { resolveManifestLanguage, type CockpitLanguage, type CockpitManifestEntry, -} from '@cacheplane/cockpit-registry'; +} from '@ngaf/cockpit-registry'; import { langgraphStreamingPythonModule } from '../../../../cockpit/langgraph/streaming/python/src/index'; import { langgraphPersistencePythonModule } from '../../../../cockpit/langgraph/persistence/python/src/index'; import { langgraphInterruptsPythonModule } from '../../../../cockpit/langgraph/interrupts/python/src/index'; diff --git a/apps/cockpit/src/lib/utils.ts b/apps/cockpit/src/lib/utils.ts index eebaf420b..82e5f6084 100644 --- a/apps/cockpit/src/lib/utils.ts +++ b/apps/cockpit/src/lib/utils.ts @@ -1 +1 @@ -export { cn } from '@cacheplane/ui-react'; +export { cn } from '@ngaf/ui-react'; diff --git a/apps/cockpit/tsconfig.json b/apps/cockpit/tsconfig.json index d0efdb3e8..a4ad6512c 100644 --- a/apps/cockpit/tsconfig.json +++ b/apps/cockpit/tsconfig.json @@ -12,9 +12,9 @@ "baseUrl": ".", "paths": { "@/*": ["./src/*"], - "@cacheplane/design-tokens": ["../../libs/design-tokens/src/index.ts"], - "@cacheplane/ui-react": ["../../libs/ui-react/src/index.ts"], - "@cacheplane/cockpit-registry": ["../../libs/cockpit-registry/src/index.ts"] + "@ngaf/design-tokens": ["../../libs/design-tokens/src/index.ts"], + "@ngaf/ui-react": ["../../libs/ui-react/src/index.ts"], + "@ngaf/cockpit-registry": ["../../libs/cockpit-registry/src/index.ts"] } }, "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], diff --git a/apps/demo/src/app/chat-demo/chat-demo.component.ts b/apps/demo/src/app/chat-demo/chat-demo.component.ts index 6061eaaa4..490f641a8 100644 --- a/apps/demo/src/app/chat-demo/chat-demo.component.ts +++ b/apps/demo/src/app/chat-demo/chat-demo.component.ts @@ -1,5 +1,5 @@ import { Component, Input, OnInit, Injector, runInInjectionContext } from '@angular/core'; -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; import type { BaseMessage } from '@langchain/core/messages'; @Component({ diff --git a/apps/website/content/AGENTS.md.template b/apps/website/content/AGENTS.md.template index b0ee7d128..588ec58cc 100644 --- a/apps/website/content/AGENTS.md.template +++ b/apps/website/content/AGENTS.md.template @@ -3,7 +3,7 @@ Angular agent framework for LangChain/LangGraph. Provides `agent()` — Signal-native streaming for Angular agents, built for LangGraph. ## Install -npm install @cacheplane/langgraph +npm install @ngaf/langgraph ## Key requirement `agent()` MUST be called within an Angular injection context (component constructor or field initializer). Calling it in ngOnInit or any async context throws "NG0203: inject() must be called from an injection context". @@ -11,13 +11,13 @@ npm install @cacheplane/langgraph ## Basic usage ```typescript // app.config.ts -import { provideAgent } from '@cacheplane/langgraph'; +import { provideAgent } from '@ngaf/langgraph'; export const appConfig: ApplicationConfig = { providers: [provideAgent({ apiUrl: 'http://localhost:2024' })] }; // chat.component.ts -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; import type { BaseMessage } from '@langchain/core/messages'; @Component({ template: ` @@ -38,7 +38,7 @@ export class ChatComponent { ## MCP server (for tool access) Add to ~/.claude/settings.json: -{"mcpServers":{"angular-agent":{"command":"npx","args":["@cacheplane/langgraph-mcp"]}}} +{"mcpServers":{"angular-agent":{"command":"npx","args":["@ngaf/langgraph-mcp"]}}} ## Version check If this file is stale, fetch the latest: https://cacheplane.ai/llms-full.txt diff --git a/apps/website/content/CLAUDE.md.template b/apps/website/content/CLAUDE.md.template index b0ee7d128..588ec58cc 100644 --- a/apps/website/content/CLAUDE.md.template +++ b/apps/website/content/CLAUDE.md.template @@ -3,7 +3,7 @@ Angular agent framework for LangChain/LangGraph. Provides `agent()` — Signal-native streaming for Angular agents, built for LangGraph. ## Install -npm install @cacheplane/langgraph +npm install @ngaf/langgraph ## Key requirement `agent()` MUST be called within an Angular injection context (component constructor or field initializer). Calling it in ngOnInit or any async context throws "NG0203: inject() must be called from an injection context". @@ -11,13 +11,13 @@ npm install @cacheplane/langgraph ## Basic usage ```typescript // app.config.ts -import { provideAgent } from '@cacheplane/langgraph'; +import { provideAgent } from '@ngaf/langgraph'; export const appConfig: ApplicationConfig = { providers: [provideAgent({ apiUrl: 'http://localhost:2024' })] }; // chat.component.ts -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; import type { BaseMessage } from '@langchain/core/messages'; @Component({ template: ` @@ -38,7 +38,7 @@ export class ChatComponent { ## MCP server (for tool access) Add to ~/.claude/settings.json: -{"mcpServers":{"angular-agent":{"command":"npx","args":["@cacheplane/langgraph-mcp"]}}} +{"mcpServers":{"angular-agent":{"command":"npx","args":["@ngaf/langgraph-mcp"]}}} ## Version check If this file is stale, fetch the latest: https://cacheplane.ai/llms-full.txt diff --git a/apps/website/content/docs/agent/api/agent.mdx b/apps/website/content/docs/agent/api/agent.mdx index 1ad011d5f..e388e3341 100644 --- a/apps/website/content/docs/agent/api/agent.mdx +++ b/apps/website/content/docs/agent/api/agent.mdx @@ -5,7 +5,7 @@ When the `url` signal changes, the resource tears down the previous connection and opens a fresh one automatically. You never write subscription management or cleanup logic yourself. ```ts -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; // Inside a component or service with injection context const repo = agent({ diff --git a/apps/website/content/docs/agent/api/fetch-stream-transport.mdx b/apps/website/content/docs/agent/api/fetch-stream-transport.mdx index a23ed6a0d..be5639995 100644 --- a/apps/website/content/docs/agent/api/fetch-stream-transport.mdx +++ b/apps/website/content/docs/agent/api/fetch-stream-transport.mdx @@ -11,7 +11,7 @@ In most apps you will never import or inject `FetchStreamTransport` by name — ```ts import { inject } from '@angular/core'; -import { agent, FetchStreamTransport } from '@cacheplane/langgraph'; +import { agent, FetchStreamTransport } from '@ngaf/langgraph'; // Override transport for a single resource const events = agent({ diff --git a/apps/website/content/docs/agent/api/mock-stream-transport.mdx b/apps/website/content/docs/agent/api/mock-stream-transport.mdx index faa1028c1..69ae82238 100644 --- a/apps/website/content/docs/agent/api/mock-stream-transport.mdx +++ b/apps/website/content/docs/agent/api/mock-stream-transport.mdx @@ -13,7 +13,7 @@ import { provideAgent, MockAgentTransport, agent, -} from '@cacheplane/langgraph'; +} from '@ngaf/langgraph'; @Component({ template: '' }) class RepoComponent { diff --git a/apps/website/content/docs/agent/api/provide-agent.mdx b/apps/website/content/docs/agent/api/provide-agent.mdx index 7833131db..c632fc6ad 100644 --- a/apps/website/content/docs/agent/api/provide-agent.mdx +++ b/apps/website/content/docs/agent/api/provide-agent.mdx @@ -9,7 +9,7 @@ import { bootstrapApplication } from '@angular/platform-browser'; import { provideAgent, FetchStreamTransport, -} from '@cacheplane/langgraph'; +} from '@ngaf/langgraph'; import { AppComponent } from './app/app.component'; bootstrapApplication(AppComponent, { diff --git a/apps/website/content/docs/agent/concepts/agent-architecture.mdx b/apps/website/content/docs/agent/concepts/agent-architecture.mdx index 3d21665a4..84fc43b5c 100644 --- a/apps/website/content/docs/agent/concepts/agent-architecture.mdx +++ b/apps/website/content/docs/agent/concepts/agent-architecture.mdx @@ -1,6 +1,6 @@ # Agent Architecture -How AI agents work — the planning, execution, and tool-calling lifecycle that agent() connects your Angular app to. This page shows you the Python patterns that power modern agents and exactly how each pattern surfaces in Angular through `@cacheplane/langgraph`. +How AI agents work — the planning, execution, and tool-calling lifecycle that agent() connects your Angular app to. This page shows you the Python patterns that power modern agents and exactly how each pattern surfaces in Angular through `@ngaf/langgraph`. Every section below shows the Python backend code first, then the Angular frontend code that consumes it. You need both halves to build a production agent application — LangGraph handles the intelligence, agent() handles the reactivity. @@ -149,7 +149,7 @@ graph = builder.compile() ```typescript import { ChangeDetectionStrategy, Component, computed } from '@angular/core'; -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; interface AgentState { messages: BaseMessage[]; @@ -401,7 +401,7 @@ graph = builder.compile() ```typescript import { ChangeDetectionStrategy, Component, computed } from '@angular/core'; -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; interface OrchestratorState { messages: BaseMessage[]; diff --git a/apps/website/content/docs/agent/concepts/angular-signals.mdx b/apps/website/content/docs/agent/concepts/angular-signals.mdx index 2d9de7a74..25b1b3b1e 100644 --- a/apps/website/content/docs/agent/concepts/angular-signals.mdx +++ b/apps/website/content/docs/agent/concepts/angular-signals.mdx @@ -60,7 +60,7 @@ const status = toSignal(status$, { initialValue: 'idle' }); ```typescript -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; // You never touch BehaviorSubjects or toSignal() yourself. // agent() hands you clean Signals: @@ -154,7 +154,7 @@ console.log(chat.isLoading()); // false ```typescript import { computed } from '@angular/core'; -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; const chat = agent({ assistantId: 'chat_agent', @@ -259,7 +259,7 @@ Angular's new control flow syntax (`@if`, `@for`, `@switch`) works naturally wit ```typescript import { ChangeDetectionStrategy, Component, computed, effect, ElementRef, ViewChild } from '@angular/core'; -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; @Component({ selector: 'app-chat', @@ -457,7 +457,7 @@ graph = builder.compile() ```typescript import { ChangeDetectionStrategy, Component, computed, effect } from '@angular/core'; -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; @Component({ selector: 'app-chat', diff --git a/apps/website/content/docs/agent/concepts/state-management.mdx b/apps/website/content/docs/agent/concepts/state-management.mdx index fa6d758e5..f6d4caa8c 100644 --- a/apps/website/content/docs/agent/concepts/state-management.mdx +++ b/apps/website/content/docs/agent/concepts/state-management.mdx @@ -17,7 +17,7 @@ This inversion is intentional. Agent state can span multiple LLM calls, tool exe Your Angular component calls `agent.submit({ messages: [userMsg] })`. No state is stored in the component. -`@cacheplane/langgraph` forwards the input to `FetchStreamTransport`, which opens an HTTP POST and SSE connection to LangGraph Platform. +`@ngaf/langgraph` forwards the input to `FetchStreamTransport`, which opens an HTTP POST and SSE connection to LangGraph Platform. The agent runs its nodes — calling the LLM, invoking tools, checking conditions — and streams SSE events back with incremental state updates. @@ -419,7 +419,7 @@ def researcher_node(state: ResearchState) -> dict: ```typescript import { BaseMessage } from '@langchain/core/messages'; -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; interface ResearchState { messages: BaseMessage[]; diff --git a/apps/website/content/docs/agent/getting-started/installation.mdx b/apps/website/content/docs/agent/getting-started/installation.mdx index 0407d5e23..8120b987b 100644 --- a/apps/website/content/docs/agent/getting-started/installation.mdx +++ b/apps/website/content/docs/agent/getting-started/installation.mdx @@ -19,7 +19,7 @@ A running LangGraph agent accessible via HTTP. Can be local (langgraph dev) or d ## Install the package ```bash -npm install @cacheplane/langgraph +npm install @ngaf/langgraph ``` This installs the library and its peer dependencies including `@langchain/langgraph-sdk`. @@ -31,7 +31,7 @@ Add `provideAgent()` to your application configuration. This sets global default ```typescript // app.config.ts import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; +import { provideAgent } from '@ngaf/langgraph'; import { environment } from '../environments/environment'; export const appConfig: ApplicationConfig = { diff --git a/apps/website/content/docs/agent/getting-started/introduction.mdx b/apps/website/content/docs/agent/getting-started/introduction.mdx index f938065ed..d8e503a9a 100644 --- a/apps/website/content/docs/agent/getting-started/introduction.mdx +++ b/apps/website/content/docs/agent/getting-started/introduction.mdx @@ -126,7 +126,7 @@ Now connect your Angular app to the running agent using agent(). ```bash -npm install @cacheplane/langgraph +npm install @ngaf/langgraph ``` @@ -135,7 +135,7 @@ npm install @cacheplane/langgraph ```typescript // app.config.ts import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; +import { provideAgent } from '@ngaf/langgraph'; export const appConfig: ApplicationConfig = { providers: [ @@ -155,7 +155,7 @@ export const appConfig: ApplicationConfig = { ```typescript // chat.component.ts import { Component, signal, computed } from '@angular/core'; -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; import type { BaseMessage } from '@langchain/core/messages'; @Component({ diff --git a/apps/website/content/docs/agent/getting-started/quickstart.mdx b/apps/website/content/docs/agent/getting-started/quickstart.mdx index 5293e980b..eafa4ebcf 100644 --- a/apps/website/content/docs/agent/getting-started/quickstart.mdx +++ b/apps/website/content/docs/agent/getting-started/quickstart.mdx @@ -10,7 +10,7 @@ Angular 20+ project with Node.js 18+. If you need setup help, see the [Installat ```bash -npm install @cacheplane/langgraph +npm install @ngaf/langgraph ``` @@ -20,7 +20,7 @@ Add `provideAgent()` to your application config with your LangGraph Platform URL ```typescript // app.config.ts -import { provideAgent } from '@cacheplane/langgraph'; +import { provideAgent } from '@ngaf/langgraph'; export const appConfig: ApplicationConfig = { providers: [ @@ -42,7 +42,7 @@ Use `agent()` in a component field initializer. Every property on the returned r ```typescript // chat.component.ts import { Component, ChangeDetectionStrategy, signal, computed } from '@angular/core'; -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; import type { BaseMessage } from '@langchain/core/messages'; @Component({ diff --git a/apps/website/content/docs/agent/guides/deployment.mdx b/apps/website/content/docs/agent/guides/deployment.mdx index ac40deddf..9c26a0494 100644 --- a/apps/website/content/docs/agent/guides/deployment.mdx +++ b/apps/website/content/docs/agent/guides/deployment.mdx @@ -108,7 +108,7 @@ export const environment = { Wire the environment into `provideAgent()`: ```typescript -import { provideAgent } from '@cacheplane/langgraph'; +import { provideAgent } from '@ngaf/langgraph'; import { environment } from '../environments/environment'; export const appConfig: ApplicationConfig = { @@ -202,7 +202,7 @@ Production apps need graceful error handling. Build a reactive error boundary us ```typescript import { ChangeDetectionStrategy, Component, computed } from '@angular/core'; -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; @Component({ selector: 'app-chat', diff --git a/apps/website/content/docs/agent/guides/interrupts.mdx b/apps/website/content/docs/agent/guides/interrupts.mdx index 0aece264b..39cac60ef 100644 --- a/apps/website/content/docs/agent/guides/interrupts.mdx +++ b/apps/website/content/docs/agent/guides/interrupts.mdx @@ -143,7 +143,7 @@ import { signal, ChangeDetectionStrategy, } from '@angular/core'; -import { agent, BaseMessage } from '@cacheplane/langgraph'; +import { agent, BaseMessage } from '@ngaf/langgraph'; interface ApprovalPayload { action: string; @@ -354,7 +354,7 @@ import { computed, ChangeDetectionStrategy, } from '@angular/core'; -import { agent, BaseMessage } from '@cacheplane/langgraph'; +import { agent, BaseMessage } from '@ngaf/langgraph'; interface StepApproval { step_number: number; @@ -454,7 +454,7 @@ By default, `interrupt()` returns an untyped object. The BagTemplate generic par BagTemplate is a type parameter on the agent configuration that maps signal names to their types. When you specify an interrupt type through BagTemplate, the `interrupt()` signal returns a properly typed object instead of `unknown`. This means your template expressions, computed signals, and event handlers all benefit from compile-time checking. ```typescript -import { agent, BagTemplate } from '@cacheplane/langgraph'; +import { agent, BagTemplate } from '@ngaf/langgraph'; // Define the exact shape of your interrupt payload interface DeployApproval { diff --git a/apps/website/content/docs/agent/guides/memory.mdx b/apps/website/content/docs/agent/guides/memory.mdx index 03d9dbc3e..81cb40c5c 100644 --- a/apps/website/content/docs/agent/guides/memory.mdx +++ b/apps/website/content/docs/agent/guides/memory.mdx @@ -75,7 +75,7 @@ graph = builder.compile() ```typescript import { Component, computed, ChangeDetectionStrategy } from '@angular/core'; -import { agent, BaseMessage } from '@cacheplane/langgraph'; +import { agent, BaseMessage } from '@ngaf/langgraph'; interface AgentState { messages: BaseMessage[]; @@ -267,7 +267,7 @@ graph = builder.compile() ```typescript import { Component, computed, signal, ChangeDetectionStrategy } from '@angular/core'; -import { agent, BaseMessage } from '@cacheplane/langgraph'; +import { agent, BaseMessage } from '@ngaf/langgraph'; @Component({ selector: 'app-longterm-chat', diff --git a/apps/website/content/docs/agent/guides/persistence.mdx b/apps/website/content/docs/agent/guides/persistence.mdx index f55c51e17..e5f00d6fb 100644 --- a/apps/website/content/docs/agent/guides/persistence.mdx +++ b/apps/website/content/docs/agent/guides/persistence.mdx @@ -111,7 +111,7 @@ Save the thread ID to localStorage so conversations survive page refreshes. agen ```typescript import { ChangeDetectionStrategy, Component } from '@angular/core'; import { signal } from '@angular/core'; -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; @Component({ selector: 'app-chat', @@ -161,7 +161,7 @@ A real chat application needs a sidebar showing all conversations. Here is a ful ```typescript import { ChangeDetectionStrategy, Component, signal, computed } from '@angular/core'; -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; interface Thread { id: string; diff --git a/apps/website/content/docs/agent/guides/streaming.mdx b/apps/website/content/docs/agent/guides/streaming.mdx index 8e24fde66..39017ff68 100644 --- a/apps/website/content/docs/agent/guides/streaming.mdx +++ b/apps/website/content/docs/agent/guides/streaming.mdx @@ -59,7 +59,7 @@ async for event in graph.astream_events( ```typescript import { Component, computed, ChangeDetectionStrategy } from '@angular/core'; -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; import { BaseMessage } from '@langchain/core/messages'; @Component({ @@ -174,7 +174,7 @@ If the SSE connection drops or the agent throws, `status()` transitions to `'err ```typescript import { Component, computed, ChangeDetectionStrategy } from '@angular/core'; -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; import { BaseMessage } from '@langchain/core/messages'; @Component({ diff --git a/apps/website/content/docs/agent/guides/subgraphs.mdx b/apps/website/content/docs/agent/guides/subgraphs.mdx index cf3389852..f8618be7e 100644 --- a/apps/website/content/docs/agent/guides/subgraphs.mdx +++ b/apps/website/content/docs/agent/guides/subgraphs.mdx @@ -75,7 +75,7 @@ graph = builder.compile() ```typescript import { Component, computed, inject, effect, ChangeDetectionStrategy } from '@angular/core'; -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; @Component({ selector: 'app-orchestrator', diff --git a/apps/website/content/docs/agent/guides/testing.mdx b/apps/website/content/docs/agent/guides/testing.mdx index b8e611845..a30f3c496 100644 --- a/apps/website/content/docs/agent/guides/testing.mdx +++ b/apps/website/content/docs/agent/guides/testing.mdx @@ -48,8 +48,8 @@ On the Angular side, MockAgentTransport replaces the real HTTP transport. Create ```typescript import { TestBed } from '@angular/core/testing'; -import { MockAgentTransport, agent } from '@cacheplane/langgraph'; -import type { BaseMessage } from '@cacheplane/langgraph'; +import { MockAgentTransport, agent } from '@ngaf/langgraph'; +import type { BaseMessage } from '@ngaf/langgraph'; describe('ChatComponent', () => { it('should display agent messages', () => { @@ -81,7 +81,7 @@ describe('ChatComponent', () => { ```typescript import { ChangeDetectionStrategy, Component } from '@angular/core'; -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; @Component({ selector: 'app-chat', @@ -140,7 +140,7 @@ The most common test pattern verifies the full submit-to-resolved lifecycle: sub ```typescript import { TestBed } from '@angular/core/testing'; -import { MockAgentTransport, agent } from '@cacheplane/langgraph'; +import { MockAgentTransport, agent } from '@ngaf/langgraph'; describe('streaming lifecycle', () => { it('should transition through loading → values → resolved', () => { @@ -187,7 +187,7 @@ describe('streaming lifecycle', () => { ```typescript import { ChangeDetectionStrategy, Component } from '@angular/core'; -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; @Component({ selector: 'app-chat', @@ -224,7 +224,7 @@ Script an interrupt event to test human-in-the-loop flows. Verify the interrupt ```typescript import { TestBed } from '@angular/core/testing'; -import { MockAgentTransport, agent } from '@cacheplane/langgraph'; +import { MockAgentTransport, agent } from '@ngaf/langgraph'; describe('interrupt handling', () => { it('should surface interrupt and resume on approval', () => { @@ -272,7 +272,7 @@ describe('interrupt handling', () => { ```typescript import { ChangeDetectionStrategy, Component } from '@angular/core'; -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; @Component({ selector: 'app-approval', @@ -315,7 +315,7 @@ Inject errors with `emitError()` to verify your component handles failures grace ```typescript import { TestBed } from '@angular/core/testing'; -import { MockAgentTransport, agent } from '@cacheplane/langgraph'; +import { MockAgentTransport, agent } from '@ngaf/langgraph'; describe('error handling', () => { it('should surface errors and set error status', () => { @@ -374,7 +374,7 @@ describe('error handling', () => { ```typescript import { ChangeDetectionStrategy, Component } from '@angular/core'; -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; @Component({ selector: 'app-chat', @@ -478,7 +478,7 @@ describe('thread switching', () => { -Make sure `@cacheplane/langgraph` is available in your test environment. MockAgentTransport ships with the main package — no extra install needed. +Make sure `@ngaf/langgraph` is available in your test environment. MockAgentTransport ships with the main package — no extra install needed. Instantiate `MockAgentTransport` with optional pre-scripted batches for sequential playback, or leave it empty for imperative `emit()` calls. diff --git a/apps/website/content/docs/agent/guides/time-travel.mdx b/apps/website/content/docs/agent/guides/time-travel.mdx index 4bbbf0768..bb97a05a8 100644 --- a/apps/website/content/docs/agent/guides/time-travel.mdx +++ b/apps/website/content/docs/agent/guides/time-travel.mdx @@ -61,7 +61,7 @@ past_state = graph.get_state(past_config) ```typescript import { Component, inject, computed, ChangeDetectionStrategy } from '@angular/core'; -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; import { AgentService } from './agent.service'; @Component({ @@ -171,7 +171,7 @@ Expose checkpoint history directly in your component to let users scrub through ```typescript import { Component, inject, computed, ChangeDetectionStrategy } from '@angular/core'; -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; import { AgentService } from './agent.service'; @Component({ diff --git a/apps/website/content/docs/chat/api/chat-config.mdx b/apps/website/content/docs/chat/api/chat-config.mdx index bc72ea0b0..7e12512e3 100644 --- a/apps/website/content/docs/chat/api/chat-config.mdx +++ b/apps/website/content/docs/chat/api/chat-config.mdx @@ -5,7 +5,7 @@ **Import:** ```typescript -import type { ChatConfig } from '@cacheplane/chat'; +import type { ChatConfig } from '@ngaf/chat'; ``` ## Interface Definition @@ -61,8 +61,8 @@ Inject `CHAT_CONFIG` to read configuration values in your own components: ```typescript import { inject } from '@angular/core'; -import { CHAT_CONFIG } from '@cacheplane/chat'; -import type { ChatConfig } from '@cacheplane/chat'; +import { CHAT_CONFIG } from '@ngaf/chat'; +import type { ChatConfig } from '@ngaf/chat'; @Component({ selector: 'app-chat-header', diff --git a/apps/website/content/docs/chat/api/content-classifier.mdx b/apps/website/content/docs/chat/api/content-classifier.mdx index e5cf4387c..0828b6fc4 100644 --- a/apps/website/content/docs/chat/api/content-classifier.mdx +++ b/apps/website/content/docs/chat/api/content-classifier.mdx @@ -5,8 +5,8 @@ Factory function that creates a `ContentClassifier` — a stateful, per-message **Import:** ```typescript -import { createContentClassifier } from '@cacheplane/chat'; -import type { ContentClassifier, ContentType } from '@cacheplane/chat'; +import { createContentClassifier } from '@ngaf/chat'; +import type { ContentClassifier, ContentType } from '@ngaf/chat'; ``` ## Signature diff --git a/apps/website/content/docs/chat/api/create-mock-agent-ref.mdx b/apps/website/content/docs/chat/api/create-mock-agent-ref.mdx index 94f5b415d..b61b323c8 100644 --- a/apps/website/content/docs/chat/api/create-mock-agent-ref.mdx +++ b/apps/website/content/docs/chat/api/create-mock-agent-ref.mdx @@ -5,7 +5,7 @@ **Import:** ```typescript -import { createMockAgentRef } from '@cacheplane/chat'; +import { createMockAgentRef } from '@ngaf/chat'; ``` ## Signature @@ -85,8 +85,8 @@ The mock provides no-op implementations for all `AgentRef` methods: ```typescript import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { createMockAgentRef, ChatComponent } from '@cacheplane/chat'; -import type { MockAgentRef } from '@cacheplane/chat'; +import { createMockAgentRef, ChatComponent } from '@ngaf/chat'; +import type { MockAgentRef } from '@ngaf/chat'; describe('ChatComponent', () => { let fixture: ComponentFixture; @@ -193,8 +193,8 @@ Use `createMockAgentRef()` to test any component that accepts an `AgentRef` inpu ```typescript import { Component, input } from '@angular/core'; -import type { AgentRef } from '@cacheplane/langgraph'; -import { createMockAgentRef } from '@cacheplane/chat'; +import type { AgentRef } from '@ngaf/langgraph'; +import { createMockAgentRef } from '@ngaf/chat'; // Your component @Component({ diff --git a/apps/website/content/docs/chat/api/parse-tree-store.mdx b/apps/website/content/docs/chat/api/parse-tree-store.mdx index 860b17675..419c282a1 100644 --- a/apps/website/content/docs/chat/api/parse-tree-store.mdx +++ b/apps/website/content/docs/chat/api/parse-tree-store.mdx @@ -1,12 +1,12 @@ # createParseTreeStore() -Factory function that creates a `ParseTreeStore` — a bridge between the `@cacheplane/partial-json` parser and Angular's signal-based `Spec` rendering. It materializes the parse tree into a `Spec` signal with structural sharing on each push. +Factory function that creates a `ParseTreeStore` — a bridge between the `@ngaf/partial-json` parser and Angular's signal-based `Spec` rendering. It materializes the parse tree into a `Spec` signal with structural sharing on each push. **Import:** ```typescript -import { createParseTreeStore } from '@cacheplane/chat'; -import type { ParseTreeStore, ElementAccumulationState } from '@cacheplane/chat'; +import { createParseTreeStore } from '@ngaf/chat'; +import type { ParseTreeStore, ElementAccumulationState } from '@ngaf/chat'; ``` ## Signature @@ -17,7 +17,7 @@ function createParseTreeStore(parser: PartialJsonParser): ParseTreeStore | Parameter | Type | Description | |-----------|------|-------------| -| `parser` | `PartialJsonParser` | A parser instance from `createPartialJsonParser()` in `@cacheplane/partial-json` | +| `parser` | `PartialJsonParser` | A parser instance from `createPartialJsonParser()` in `@ngaf/partial-json` | **Returns:** `ParseTreeStore` — must be called within an Angular injection context. @@ -50,8 +50,8 @@ interface ElementAccumulationState { ## Usage ```typescript -import { createPartialJsonParser } from '@cacheplane/partial-json'; -import { createParseTreeStore } from '@cacheplane/chat'; +import { createPartialJsonParser } from '@ngaf/partial-json'; +import { createParseTreeStore } from '@ngaf/chat'; const parser = createPartialJsonParser(); const store = createParseTreeStore(parser); diff --git a/apps/website/content/docs/chat/api/provide-chat.mdx b/apps/website/content/docs/chat/api/provide-chat.mdx index 81b3999cf..944c9cba3 100644 --- a/apps/website/content/docs/chat/api/provide-chat.mdx +++ b/apps/website/content/docs/chat/api/provide-chat.mdx @@ -1,9 +1,9 @@ # provideChat() -`provideChat` is the provider factory that registers `@cacheplane/chat` configuration in Angular's dependency injection system. Call it once in your `ApplicationConfig` (or at the route level) to set global defaults used by chat composition components. +`provideChat` is the provider factory that registers `@ngaf/chat` configuration in Angular's dependency injection system. Call it once in your `ApplicationConfig` (or at the route level) to set global defaults used by chat composition components. ```typescript -import { provideChat } from '@cacheplane/chat'; +import { provideChat } from '@ngaf/chat'; export const appConfig: ApplicationConfig = { providers: [ @@ -40,7 +40,7 @@ This makes the `ChatConfig` object available throughout the application via the ## CHAT_CONFIG Injection Token ```typescript -import { CHAT_CONFIG } from '@cacheplane/chat'; +import { CHAT_CONFIG } from '@ngaf/chat'; const CHAT_CONFIG: InjectionToken; ``` @@ -49,7 +49,7 @@ The token is an `InjectionToken` that can be injected in any compone ```typescript import { inject } from '@angular/core'; -import { CHAT_CONFIG } from '@cacheplane/chat'; +import { CHAT_CONFIG } from '@ngaf/chat'; @Component({ /* ... */ }) export class MyComponent { @@ -76,8 +76,8 @@ See the [ChatConfig API reference](/docs/chat/api/chat-config) for the full inte ```typescript // app.config.ts -import { provideAgent } from '@cacheplane/langgraph'; -import { provideChat } from '@cacheplane/chat'; +import { provideAgent } from '@ngaf/langgraph'; +import { provideChat } from '@ngaf/chat'; export const appConfig: ApplicationConfig = { providers: [ diff --git a/apps/website/content/docs/chat/components/chat-debug.mdx b/apps/website/content/docs/chat/components/chat-debug.mdx index 4bdf4215c..065252e76 100644 --- a/apps/website/content/docs/chat/components/chat-debug.mdx +++ b/apps/website/content/docs/chat/components/chat-debug.mdx @@ -7,7 +7,7 @@ **Import:** ```typescript -import { ChatDebugComponent } from '@cacheplane/chat'; +import { ChatDebugComponent } from '@ngaf/chat'; ``` ## When to Use It @@ -23,9 +23,9 @@ Use `ChatDebugComponent` during development to understand what your LangGraph ag ```typescript import { Component, signal, ChangeDetectionStrategy } from '@angular/core'; -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; import type { BaseMessage } from '@langchain/core/messages'; -import { ChatDebugComponent } from '@cacheplane/chat'; +import { ChatDebugComponent } from '@ngaf/chat'; @Component({ selector: 'app-debug-page', @@ -123,7 +123,7 @@ Each debug sub-component is exported individually for custom debug UIs: Converts a `ThreadState` entry to a `DebugCheckpoint`: ```typescript -import { toDebugCheckpoint } from '@cacheplane/chat'; +import { toDebugCheckpoint } from '@ngaf/chat'; const checkpoint = toDebugCheckpoint(threadState, index); // { node: 'agent', checkpointId: 'abc123' } @@ -134,7 +134,7 @@ const checkpoint = toDebugCheckpoint(threadState, index); Extracts the state values from a `ThreadState`, returning `{}` if unavailable: ```typescript -import { extractStateValues } from '@cacheplane/chat'; +import { extractStateValues } from '@ngaf/chat'; const values = extractStateValues(threadState); // { messages: [...], someKey: 'value' } @@ -145,8 +145,8 @@ const values = extractStateValues(threadState); Computes a recursive diff between two state objects: ```typescript -import { computeStateDiff } from '@cacheplane/chat'; -import type { DiffEntry } from '@cacheplane/chat'; +import { computeStateDiff } from '@ngaf/chat'; +import type { DiffEntry } from '@ngaf/chat'; const diff: DiffEntry[] = computeStateDiff(beforeState, afterState); ``` @@ -184,8 +184,8 @@ import { DebugDetailComponent, toDebugCheckpoint, extractStateValues, -} from '@cacheplane/chat'; -import type { DebugCheckpoint } from '@cacheplane/chat'; +} from '@ngaf/chat'; +import type { DebugCheckpoint } from '@ngaf/chat'; @Component({ selector: 'app-custom-debug', diff --git a/apps/website/content/docs/chat/components/chat-input.mdx b/apps/website/content/docs/chat/components/chat-input.mdx index ae89387da..1059a73d8 100644 --- a/apps/website/content/docs/chat/components/chat-input.mdx +++ b/apps/website/content/docs/chat/components/chat-input.mdx @@ -7,7 +7,7 @@ **Import:** ```typescript -import { ChatInputComponent, submitMessage } from '@cacheplane/chat'; +import { ChatInputComponent, submitMessage } from '@ngaf/chat'; ``` ## Basic Usage @@ -70,7 +70,7 @@ The textarea uses `field-sizing: content` CSS, which allows it to grow with its The `submitMessage()` function is exported as a standalone utility for programmatic message submission: ```typescript -import { submitMessage } from '@cacheplane/chat'; +import { submitMessage } from '@ngaf/chat'; function sendGreeting(ref: AgentRef) { const result = submitMessage(ref, 'Hello!'); @@ -123,9 +123,9 @@ The component includes accessibility attributes: ```typescript import { Component, signal, ChangeDetectionStrategy } from '@angular/core'; -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; import type { BaseMessage } from '@langchain/core/messages'; -import { ChatInputComponent } from '@cacheplane/chat'; +import { ChatInputComponent } from '@ngaf/chat'; @Component({ selector: 'app-input-demo', diff --git a/apps/website/content/docs/chat/components/chat-interrupt-panel.mdx b/apps/website/content/docs/chat/components/chat-interrupt-panel.mdx index 06ad49944..32ccec9d8 100644 --- a/apps/website/content/docs/chat/components/chat-interrupt-panel.mdx +++ b/apps/website/content/docs/chat/components/chat-interrupt-panel.mdx @@ -7,8 +7,8 @@ **Import:** ```typescript -import { ChatInterruptPanelComponent } from '@cacheplane/chat'; -import type { InterruptAction } from '@cacheplane/chat'; +import { ChatInterruptPanelComponent } from '@ngaf/chat'; +import type { InterruptAction } from '@ngaf/chat'; ``` ## How It Works @@ -27,7 +27,7 @@ When no interrupt is active, the component renders nothing. ``` ```typescript -import type { InterruptAction } from '@cacheplane/chat'; +import type { InterruptAction } from '@ngaf/chat'; handleInterrupt(action: InterruptAction) { switch (action) { @@ -113,7 +113,7 @@ If you need full control over the interrupt UI, use the lower-level `ChatInterru The primitive also exports a `getInterrupt()` helper function: ```typescript -import { getInterrupt } from '@cacheplane/chat'; +import { getInterrupt } from '@ngaf/chat'; const interrupt = getInterrupt(chatRef); // Interrupt | undefined ``` @@ -122,10 +122,10 @@ const interrupt = getInterrupt(chatRef); // Interrupt | undefined ```typescript import { Component, signal, ChangeDetectionStrategy } from '@angular/core'; -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; import type { BaseMessage } from '@langchain/core/messages'; -import { ChatComponent, ChatInterruptPanelComponent } from '@cacheplane/chat'; -import type { InterruptAction } from '@cacheplane/chat'; +import { ChatComponent, ChatInterruptPanelComponent } from '@ngaf/chat'; +import type { InterruptAction } from '@ngaf/chat'; @Component({ selector: 'app-interrupt-demo', diff --git a/apps/website/content/docs/chat/components/chat-messages.mdx b/apps/website/content/docs/chat/components/chat-messages.mdx index 38b940a0f..75f0910a3 100644 --- a/apps/website/content/docs/chat/components/chat-messages.mdx +++ b/apps/website/content/docs/chat/components/chat-messages.mdx @@ -11,7 +11,7 @@ import { ChatMessagesComponent, MessageTemplateDirective, getMessageType, -} from '@cacheplane/chat'; +} from '@ngaf/chat'; ``` ## How It Works @@ -77,7 +77,7 @@ The `MessageTemplateDirective` is a structural directive applied to `ng-template **Selector:** `ng-template[chatMessageTemplate]` ```typescript -import { MessageTemplateDirective } from '@cacheplane/chat'; +import { MessageTemplateDirective } from '@ngaf/chat'; ``` ### Input @@ -97,7 +97,7 @@ type MessageTemplateType = 'human' | 'ai' | 'tool' | 'system' | 'function'; The `getMessageType()` function maps a LangChain `BaseMessage` to a `MessageTemplateType`. It handles both class instances (with `_getType()` method) and plain JSON objects (with a `type` property), since SSE stream events deliver plain JSON rather than hydrated class instances. ```typescript -import { getMessageType } from '@cacheplane/chat'; +import { getMessageType } from '@ngaf/chat'; import type { BaseMessage } from '@langchain/core/messages'; const type = getMessageType(message); // 'human' | 'ai' | 'tool' | 'system' | 'function' @@ -141,14 +141,14 @@ For custom templates, you can access `message.content` directly and handle the t ```typescript import { Component, inject, ChangeDetectionStrategy, signal } from '@angular/core'; import { DomSanitizer } from '@angular/platform-browser'; -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; import type { BaseMessage } from '@langchain/core/messages'; import { ChatMessagesComponent, MessageTemplateDirective, CHAT_MARKDOWN_STYLES, renderMarkdown, -} from '@cacheplane/chat'; +} from '@ngaf/chat'; @Component({ selector: 'app-messages-demo', diff --git a/apps/website/content/docs/chat/components/chat-subagent-card.mdx b/apps/website/content/docs/chat/components/chat-subagent-card.mdx index 3f924d623..98d09fa30 100644 --- a/apps/website/content/docs/chat/components/chat-subagent-card.mdx +++ b/apps/website/content/docs/chat/components/chat-subagent-card.mdx @@ -7,7 +7,7 @@ **Import:** ```typescript -import { ChatSubagentCardComponent } from '@cacheplane/chat'; +import { ChatSubagentCardComponent } from '@ngaf/chat'; ``` ## Basic Usage @@ -26,7 +26,7 @@ import { ChatSubagentCardComponent } from '@cacheplane/chat'; ## SubagentStreamRef -The `SubagentStreamRef` type comes from `@cacheplane/langgraph`. It provides reactive state for a subagent: +The `SubagentStreamRef` type comes from `@ngaf/langgraph`. It provides reactive state for a subagent: | Property | Type | Description | |----------|------|-------------| @@ -77,13 +77,13 @@ The `ChatSubagentsComponent` primitive iterates over active subagent streams fro ```typescript import { Component, signal, ChangeDetectionStrategy } from '@angular/core'; -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; import type { BaseMessage } from '@langchain/core/messages'; import { ChatComponent, ChatSubagentsComponent, ChatSubagentCardComponent, -} from '@cacheplane/chat'; +} from '@ngaf/chat'; @Component({ selector: 'app-subagent-demo', diff --git a/apps/website/content/docs/chat/components/chat-tool-call-card.mdx b/apps/website/content/docs/chat/components/chat-tool-call-card.mdx index ae114c5c2..3dcf1993c 100644 --- a/apps/website/content/docs/chat/components/chat-tool-call-card.mdx +++ b/apps/website/content/docs/chat/components/chat-tool-call-card.mdx @@ -7,8 +7,8 @@ **Import:** ```typescript -import { ChatToolCallCardComponent } from '@cacheplane/chat'; -import type { ToolCallInfo } from '@cacheplane/chat'; +import { ChatToolCallCardComponent } from '@ngaf/chat'; +import type { ToolCallInfo } from '@ngaf/chat'; ``` ## Basic Usage @@ -89,7 +89,7 @@ The `ChatToolCallsComponent` primitive iterates over tool calls from an `AgentRe ```typescript import type { ToolCallWithResult } from '@langchain/langgraph-sdk'; -import type { ToolCallInfo } from '@cacheplane/chat'; +import type { ToolCallInfo } from '@ngaf/chat'; asToolCallInfo(tc: ToolCallWithResult): ToolCallInfo { return { diff --git a/apps/website/content/docs/chat/components/chat.mdx b/apps/website/content/docs/chat/components/chat.mdx index f836be462..3d8f57215 100644 --- a/apps/website/content/docs/chat/components/chat.mdx +++ b/apps/website/content/docs/chat/components/chat.mdx @@ -7,7 +7,7 @@ **Import:** ```typescript -import { ChatComponent } from '@cacheplane/chat'; +import { ChatComponent } from '@ngaf/chat'; ``` ## When to Use It @@ -29,8 +29,8 @@ If you need to customize the message layout, add components between sections, or ```typescript import { Component, signal } from '@angular/core'; -import { agent } from '@cacheplane/langgraph'; -import { ChatComponent } from '@cacheplane/chat'; +import { agent } from '@ngaf/langgraph'; +import { ChatComponent } from '@ngaf/chat'; import type { BaseMessage } from '@langchain/core/messages'; @Component({ @@ -61,8 +61,8 @@ export class ChatPageComponent { | Input | Type | Default | Description | |-------|------|---------|-------------| -| `ref` | `AgentRef` | **Required** | The agent ref providing streaming state. Created by `agent()` from `@cacheplane/langgraph`. | -| `views` | `ViewRegistry \| undefined` | `undefined` | View registry for generative UI. Maps spec type names to Angular components. Created with `views()` from `@cacheplane/chat`. | +| `ref` | `AgentRef` | **Required** | The agent ref providing streaming state. Created by `agent()` from `@ngaf/langgraph`. | +| `views` | `ViewRegistry \| undefined` | `undefined` | View registry for generative UI. Maps spec type names to Angular components. Created with `views()` from `@ngaf/chat`. | | `store` | `StateStore \| undefined` | `undefined` | Optional state store for interactive generative UI specs. | | `handlers` | `Record) => unknown \| Promise>` | `{}` | Event handlers for generative UI specs and A2UI `functionCall` actions. Handlers run in Angular injection context — `inject()` is available inside handler functions. | | `threads` | `Thread[]` | `[]` | List of threads to display in the sidebar. Each thread must have an `id` property. | @@ -136,7 +136,7 @@ When you pass a `[views]` registry, the component auto-detects JSON specs in AI ``` ```typescript -import { views } from '@cacheplane/chat'; +import { views } from '@ngaf/chat'; import { WeatherCardComponent } from './weather-card.component'; const myViews = views({ diff --git a/apps/website/content/docs/chat/getting-started/installation.mdx b/apps/website/content/docs/chat/getting-started/installation.mdx index 563014115..c1791614b 100644 --- a/apps/website/content/docs/chat/getting-started/installation.mdx +++ b/apps/website/content/docs/chat/getting-started/installation.mdx @@ -1,15 +1,15 @@ # Installation -Detailed setup guide for `@cacheplane/chat` in your Angular application. +Detailed setup guide for `@ngaf/chat` in your Angular application. ## Requirements -`@cacheplane/chat` uses Angular Signals, the `input()` function, and `contentChildren()`. Angular 20 or later is required. +`@ngaf/chat` uses Angular Signals, the `input()` function, and `contentChildren()`. Angular 20 or later is required. - -The chat components read streaming state from `AgentRef`, which is provided by `@cacheplane/agent`. You must have `provideAgent()` configured before adding chat. + +The chat components read streaming state from `AgentRef`, which is provided by `@ngaf/agent`. You must have `provideAgent()` configured before adding chat. Required for the build toolchain and package installation. @@ -19,20 +19,20 @@ Required for the build toolchain and package installation. ## Install the package ```bash -npm install @cacheplane/chat +npm install @ngaf/chat ``` ## Peer Dependencies -`@cacheplane/chat` declares the following peer dependencies: +`@ngaf/chat` declares the following peer dependencies: | Package | Version | Required | |---------|---------|----------| | `@angular/core` | `^20.0.0 \|\| ^21.0.0` | Yes | | `@angular/common` | `^20.0.0 \|\| ^21.0.0` | Yes | | `@angular/forms` | `^20.0.0 \|\| ^21.0.0` | Yes | -| `@cacheplane/langgraph` | `^0.0.1` | Yes | -| `@cacheplane/render` | `^0.0.1` | Yes | +| `@ngaf/langgraph` | `^0.0.1` | Yes | +| `@ngaf/render` | `^0.0.1` | Yes | | `@json-render/core` | `^0.16.0` | Yes | | `@langchain/core` | `^1.1.33` | Yes | | `@langchain/langgraph-sdk` | `^1.7.4` | Yes | @@ -45,7 +45,7 @@ The `marked` package is optional. When installed, AI messages are rendered as fu To install everything at once: ```bash -npm install @cacheplane/chat @cacheplane/langgraph @cacheplane/render marked +npm install @ngaf/chat @ngaf/langgraph @ngaf/render marked ``` ## Configure provideChat() @@ -55,8 +55,8 @@ Add `provideChat()` alongside `provideAgent()` in your application configuration ```typescript // app.config.ts import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; -import { provideChat } from '@cacheplane/chat'; +import { provideAgent } from '@ngaf/langgraph'; +import { provideChat } from '@ngaf/chat'; export const appConfig: ApplicationConfig = { providers: [ @@ -91,8 +91,8 @@ Create a minimal component to verify everything is wired up: ```typescript import { Component, signal } from '@angular/core'; -import { agent } from '@cacheplane/langgraph'; -import { ChatComponent } from '@cacheplane/chat'; +import { agent } from '@ngaf/langgraph'; +import { ChatComponent } from '@ngaf/chat'; import type { BaseMessage } from '@langchain/core/messages'; @Component({ diff --git a/apps/website/content/docs/chat/getting-started/introduction.mdx b/apps/website/content/docs/chat/getting-started/introduction.mdx index 881261a65..857e91511 100644 --- a/apps/website/content/docs/chat/getting-started/introduction.mdx +++ b/apps/website/content/docs/chat/getting-started/introduction.mdx @@ -1,6 +1,6 @@ # Introduction -`@cacheplane/chat` is the Angular UI component library for building chat interfaces on top of `@cacheplane/agent`. It provides a complete set of composable, Signal-driven components that render messages, handle user input, display tool calls, manage interrupts, and support generative UI -- all styled with CSS custom properties and built for Angular 20+. +`@ngaf/chat` is the Angular UI component library for building chat interfaces on top of `@ngaf/agent`. It provides a complete set of composable, Signal-driven components that render messages, handle user input, display tool calls, manage interrupts, and support generative UI -- all styled with CSS custom properties and built for Angular 20+. This guide explains the library's two-tier architecture, how it relates to the rest of the Cacheplane stack, and when to reach for the all-in-one composition versus assembling primitives yourself. @@ -42,25 +42,25 @@ Compositions are opinionated, styled components that combine primitives into rea ## How the Stack Fits Together -`@cacheplane/chat` sits between your application and two other Cacheplane libraries: +`@ngaf/chat` sits between your application and two other Cacheplane libraries: ``` Your App | v -@cacheplane/chat <-- UI components (this library) +@ngaf/chat <-- UI components (this library) | | v v -@cacheplane/agent @cacheplane/render +@ngaf/agent @ngaf/render (streaming state) (generative UI) | v LangGraph Platform ``` -- **`@cacheplane/agent`** provides the `agent()` function and the `AgentRef` type. Every chat component accepts an `AgentRef` as its primary input. The ref exposes reactive Signals for `messages()`, `isLoading()`, `error()`, `interrupt()`, `toolCalls()`, `history()`, and more. +- **`@ngaf/agent`** provides the `agent()` function and the `AgentRef` type. Every chat component accepts an `AgentRef` as its primary input. The ref exposes reactive Signals for `messages()`, `isLoading()`, `error()`, `interrupt()`, `toolCalls()`, `history()`, and more. -- **`@cacheplane/render`** provides `RenderSpecComponent` and view registries for rendering JSON UI specs as Angular components. The `ChatComponent` auto-detects JSON specs in AI messages and renders them through `@cacheplane/render` — pass a view registry via the `[views]` input. The `ChatComponent` also auto-detects A2UI v0.9 payloads and renders them using a built-in 12-component catalog. +- **`@ngaf/render`** provides `RenderSpecComponent` and view registries for rendering JSON UI specs as Angular components. The `ChatComponent` auto-detects JSON specs in AI messages and renders them through `@ngaf/render` — pass a view registry via the `[views]` input. The `ChatComponent` also auto-detects A2UI v0.9 payloads and renders them using a built-in 12-component catalog. ## When to Use `ChatComponent` vs. Custom Assembly diff --git a/apps/website/content/docs/chat/getting-started/quickstart.mdx b/apps/website/content/docs/chat/getting-started/quickstart.mdx index b396a46ee..c6bbf2a61 100644 --- a/apps/website/content/docs/chat/getting-started/quickstart.mdx +++ b/apps/website/content/docs/chat/getting-started/quickstart.mdx @@ -1,16 +1,16 @@ # Quick Start -Build a streaming chat UI with `@cacheplane/chat` in 5 minutes. +Build a streaming chat UI with `@ngaf/chat` in 5 minutes. -Angular 20+ project with `@cacheplane/agent` already configured. If you need setup help, see the [Agent Installation](/docs/agent/getting-started/installation) guide first. +Angular 20+ project with `@ngaf/agent` already configured. If you need setup help, see the [Agent Installation](/docs/agent/getting-started/installation) guide first. ```bash -npm install @cacheplane/chat +npm install @ngaf/chat ``` @@ -21,8 +21,8 @@ Add both `provideAgent()` and `provideChat()` to your application config. ```typescript // app.config.ts import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; -import { provideChat } from '@cacheplane/chat'; +import { provideAgent } from '@ngaf/langgraph'; +import { provideChat } from '@ngaf/chat'; export const appConfig: ApplicationConfig = { providers: [ @@ -45,9 +45,9 @@ Use `agent()` to create a streaming connection and pass the returned `AgentRef` ```typescript // chat-page.component.ts import { Component, ChangeDetectionStrategy, signal } from '@angular/core'; -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; import type { BaseMessage } from '@langchain/core/messages'; -import { ChatComponent } from '@cacheplane/chat'; +import { ChatComponent } from '@ngaf/chat'; @Component({ selector: 'app-chat-page', @@ -117,7 +117,7 @@ If you need more control over how messages render, drop down to the primitives l ```typescript import { Component, ChangeDetectionStrategy, signal, inject } from '@angular/core'; import { DomSanitizer } from '@angular/platform-browser'; -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; import type { BaseMessage } from '@langchain/core/messages'; import { ChatMessagesComponent, @@ -125,7 +125,7 @@ import { ChatInputComponent, ChatTypingIndicatorComponent, renderMarkdown, -} from '@cacheplane/chat'; +} from '@ngaf/chat'; @Component({ selector: 'app-custom-chat', diff --git a/apps/website/content/docs/chat/guides/configuration.mdx b/apps/website/content/docs/chat/guides/configuration.mdx index 8696940c8..c6aba7859 100644 --- a/apps/website/content/docs/chat/guides/configuration.mdx +++ b/apps/website/content/docs/chat/guides/configuration.mdx @@ -1,6 +1,6 @@ # Configuration -`@cacheplane/chat` uses Angular's dependency injection system for global configuration. The `provideChat()` function registers a `ChatConfig` object under the `CHAT_CONFIG` injection token. +`@ngaf/chat` uses Angular's dependency injection system for global configuration. The `provideChat()` function registers a `ChatConfig` object under the `CHAT_CONFIG` injection token. ## provideChat() @@ -9,7 +9,7 @@ Call `provideChat()` in your application's provider array to set global configur ```typescript // app.config.ts import { ApplicationConfig } from '@angular/core'; -import { provideChat } from '@cacheplane/chat'; +import { provideChat } from '@ngaf/chat'; export const appConfig: ApplicationConfig = { providers: [ @@ -54,8 +54,8 @@ The `CHAT_CONFIG` token is an `InjectionToken` that you can inject d ```typescript import { inject } from '@angular/core'; -import { CHAT_CONFIG } from '@cacheplane/chat'; -import type { ChatConfig } from '@cacheplane/chat'; +import { CHAT_CONFIG } from '@ngaf/chat'; +import type { ChatConfig } from '@ngaf/chat'; @Component({ /* ... */ }) export class MyComponent { @@ -77,7 +77,7 @@ Because `provideChat()` returns `EnvironmentProviders`, you can provide differen ```typescript // app.routes.ts -import { provideChat } from '@cacheplane/chat'; +import { provideChat } from '@ngaf/chat'; export const routes: Routes = [ { diff --git a/apps/website/content/docs/chat/guides/custom-catalogs.mdx b/apps/website/content/docs/chat/guides/custom-catalogs.mdx index e1f059694..152f1ca55 100644 --- a/apps/website/content/docs/chat/guides/custom-catalogs.mdx +++ b/apps/website/content/docs/chat/guides/custom-catalogs.mdx @@ -5,12 +5,12 @@ description: Compose custom component catalogs for generative UI using ViewRegis # Custom Catalogs -Both json-render specs and A2UI surfaces render through the same `ViewRegistry`. Compose catalogs using `views`, `withViews`, and `withoutViews` from `@cacheplane/render`. +Both json-render specs and A2UI surfaces render through the same `ViewRegistry`. Compose catalogs using `views`, `withViews`, and `withoutViews` from `@ngaf/render`. ## Using the Built-In A2UI Catalog ```typescript -import { a2uiBasicCatalog } from '@cacheplane/chat'; +import { a2uiBasicCatalog } from '@ngaf/chat'; ``` @@ -18,8 +18,8 @@ import { a2uiBasicCatalog } from '@cacheplane/chat'; ## Adding Custom Components ```typescript -import { withViews } from '@cacheplane/render'; -import { a2uiBasicCatalog } from '@cacheplane/chat'; +import { withViews } from '@ngaf/render'; +import { a2uiBasicCatalog } from '@ngaf/chat'; const catalog = withViews(a2uiBasicCatalog(), { Chart: MyChartComponent, @@ -32,8 +32,8 @@ const catalog = withViews(a2uiBasicCatalog(), { ## Overriding Built-In Components ```typescript -import { views } from '@cacheplane/render'; -import { a2uiBasicCatalog } from '@cacheplane/chat'; +import { views } from '@ngaf/render'; +import { a2uiBasicCatalog } from '@ngaf/chat'; const catalog = views({ ...a2uiBasicCatalog(), @@ -44,8 +44,8 @@ const catalog = views({ ## Removing Components ```typescript -import { withoutViews } from '@cacheplane/render'; -import { a2uiBasicCatalog } from '@cacheplane/chat'; +import { withoutViews } from '@ngaf/render'; +import { a2uiBasicCatalog } from '@ngaf/chat'; const catalog = withoutViews(a2uiBasicCatalog(), 'Modal', 'Video'); ``` @@ -53,7 +53,7 @@ const catalog = withoutViews(a2uiBasicCatalog(), 'Modal', 'Video'); ## Custom-Only (No A2UI) ```typescript -import { views } from '@cacheplane/render'; +import { views } from '@ngaf/render'; const catalog = views({ Chart: MyChartComponent, diff --git a/apps/website/content/docs/chat/guides/generative-ui.mdx b/apps/website/content/docs/chat/guides/generative-ui.mdx index 75497c3fb..170003d19 100644 --- a/apps/website/content/docs/chat/guides/generative-ui.mdx +++ b/apps/website/content/docs/chat/guides/generative-ui.mdx @@ -16,7 +16,7 @@ AI message content (token by token) → JSON specs via RenderSpecComponent + your view registry ``` -The JSON path uses `@cacheplane/partial-json` to parse incomplete JSON character-by-character, producing a live `Spec` signal with structural sharing — unchanged elements keep the same object reference so Angular skips re-rendering them. +The JSON path uses `@ngaf/partial-json` to parse incomplete JSON character-by-character, producing a live `Spec` signal with structural sharing — unchanged elements keep the same object reference so Angular skips re-rendering them. ## Setup @@ -24,8 +24,8 @@ Pass a `ViewRegistry` via the `[views]` input on `ChatComponent`: ```typescript import { Component, signal } from '@angular/core'; -import { agent } from '@cacheplane/langgraph'; -import { ChatComponent, views } from '@cacheplane/chat'; +import { agent } from '@ngaf/langgraph'; +import { ChatComponent, views } from '@ngaf/chat'; import type { BaseMessage } from '@langchain/core/messages'; import { WeatherCardComponent } from './weather-card.component'; import { ChartComponent } from './chart.component'; @@ -116,7 +116,7 @@ Because the JSON is parsed character-by-character as tokens arrive: For interactive generative UI (forms, selections), pass a `StateStore` via the `[store]` input: ```typescript -import { signalStateStore } from '@cacheplane/render'; +import { signalStateStore } from '@ngaf/render'; @Component({ template: ` diff --git a/apps/website/content/docs/chat/guides/markdown.mdx b/apps/website/content/docs/chat/guides/markdown.mdx index c436a62d5..05f2ba5da 100644 --- a/apps/website/content/docs/chat/guides/markdown.mdx +++ b/apps/website/content/docs/chat/guides/markdown.mdx @@ -1,6 +1,6 @@ # Markdown Rendering -AI messages in `@cacheplane/chat` can render full markdown -- headings, code blocks, tables, lists, blockquotes, and inline formatting. This is powered by the `renderMarkdown()` utility and styled with `CHAT_MARKDOWN_STYLES`. +AI messages in `@ngaf/chat` can render full markdown -- headings, code blocks, tables, lists, blockquotes, and inline formatting. This is powered by the `renderMarkdown()` utility and styled with `CHAT_MARKDOWN_STYLES`. ## How It Works @@ -12,7 +12,7 @@ The markdown pipeline has two stages: ## The renderMarkdown() Function ```typescript -import { renderMarkdown } from '@cacheplane/chat'; +import { renderMarkdown } from '@ngaf/chat'; import { DomSanitizer } from '@angular/platform-browser'; // In a component: @@ -49,7 +49,7 @@ The `marked` library is loaded via a dynamic `import('marked')` at module initia The `CHAT_MARKDOWN_STYLES` constant provides CSS rules for all standard markdown elements. It targets the `.chat-md` class using `::ng-deep` for view encapsulation compatibility. ```typescript -import { CHAT_MARKDOWN_STYLES } from '@cacheplane/chat'; +import { CHAT_MARKDOWN_STYLES } from '@ngaf/chat'; @Component({ styles: [CHAT_MARKDOWN_STYLES], @@ -94,7 +94,7 @@ import { MessageTemplateDirective, CHAT_MARKDOWN_STYLES, renderMarkdown, -} from '@cacheplane/chat'; +} from '@ngaf/chat'; @Component({ selector: 'app-chat-view', diff --git a/apps/website/content/docs/chat/guides/streaming.mdx b/apps/website/content/docs/chat/guides/streaming.mdx index a503406ec..c0ee2336d 100644 --- a/apps/website/content/docs/chat/guides/streaming.mdx +++ b/apps/website/content/docs/chat/guides/streaming.mdx @@ -8,7 +8,7 @@ Each AI message is processed by a `ContentClassifier` that examines the content | Trigger | Content Type | What Happens | |---------|-------------|--------------| -| First non-whitespace is `{` | `json-render` | Parsed as a JSON spec via `@cacheplane/partial-json` | +| First non-whitespace is `{` | `json-render` | Parsed as a JSON spec via `@ngaf/partial-json` | | Any other text | `markdown` | Rendered as markdown prose | @@ -34,7 +34,7 @@ Tokens arrive character-by-character For custom message rendering outside of `ChatComponent`, use `createContentClassifier()`: ```typescript -import { createContentClassifier } from '@cacheplane/chat'; +import { createContentClassifier } from '@ngaf/chat'; // Create a classifier instance (must be in an Angular injection context) const classifier = createContentClassifier(); @@ -74,8 +74,8 @@ type ContentType = 'undetermined' | 'markdown' | 'json-render' | 'a2ui' | 'mixed For lower-level control over JSON-to-Spec materialization: ```typescript -import { createPartialJsonParser } from '@cacheplane/partial-json'; -import { createParseTreeStore } from '@cacheplane/chat'; +import { createPartialJsonParser } from '@ngaf/partial-json'; +import { createParseTreeStore } from '@ngaf/chat'; const parser = createPartialJsonParser(); const store = createParseTreeStore(parser); diff --git a/apps/website/content/docs/chat/guides/theming.mdx b/apps/website/content/docs/chat/guides/theming.mdx index d1ef9c37a..00540e89b 100644 --- a/apps/website/content/docs/chat/guides/theming.mdx +++ b/apps/website/content/docs/chat/guides/theming.mdx @@ -1,13 +1,13 @@ # Theming -`@cacheplane/chat` uses CSS custom properties (variables) for all visual styling. Every color, radius, font, and spacing value is controlled by a variable prefixed with `--chat-`, making it straightforward to match your application's design system. +`@ngaf/chat` uses CSS custom properties (variables) for all visual styling. Every color, radius, font, and spacing value is controlled by a variable prefixed with `--chat-`, making it straightforward to match your application's design system. ## How Theming Works Composition components include `CHAT_THEME_STYLES` in their `styles` array. This stylesheet defines all CSS custom properties on the `:host` element and applies dark mode by default, with automatic light mode support via `prefers-color-scheme`. ```typescript -import { CHAT_THEME_STYLES } from '@cacheplane/chat'; +import { CHAT_THEME_STYLES } from '@ngaf/chat'; @Component({ // ... @@ -110,7 +110,7 @@ If you are building custom compositions using the primitives, import `CHAT_THEME ```typescript import { Component } from '@angular/core'; -import { CHAT_THEME_STYLES } from '@cacheplane/chat'; +import { CHAT_THEME_STYLES } from '@ngaf/chat'; @Component({ selector: 'my-custom-chat', diff --git a/apps/website/content/docs/render/a2ui/catalog.mdx b/apps/website/content/docs/render/a2ui/catalog.mdx index 68ea3fec1..32bd893bb 100644 --- a/apps/website/content/docs/render/a2ui/catalog.mdx +++ b/apps/website/content/docs/render/a2ui/catalog.mdx @@ -5,7 +5,7 @@ The built-in A2UI catalog provides 18 Angular components covering display, layou **Import:** ```typescript -import { a2uiBasicCatalog } from '@cacheplane/chat'; +import { a2uiBasicCatalog } from '@ngaf/chat'; ``` ## Signature diff --git a/apps/website/content/docs/render/a2ui/overview.mdx b/apps/website/content/docs/render/a2ui/overview.mdx index da35a2c0b..038c89c19 100644 --- a/apps/website/content/docs/render/a2ui/overview.mdx +++ b/apps/website/content/docs/render/a2ui/overview.mdx @@ -107,7 +107,7 @@ Use **A2UI** when the agent needs to build an interface incrementally, bind it t Pass `a2uiBasicCatalog()` to the `views` input to enable A2UI rendering: ```typescript -import { ChatComponent, a2uiBasicCatalog } from '@cacheplane/chat'; +import { ChatComponent, a2uiBasicCatalog } from '@ngaf/chat'; @Component({ template: ``, @@ -148,8 +148,8 @@ or log events without intercepting the routing. ### Minimal Consumer Setup ```typescript -import { ChatComponent, a2uiBasicCatalog } from '@cacheplane/chat'; -import { agent } from '@cacheplane/langgraph'; +import { ChatComponent, a2uiBasicCatalog } from '@ngaf/chat'; +import { agent } from '@ngaf/langgraph'; @Component({ template: ``, @@ -263,7 +263,7 @@ interface A2uiValidationResult { Use the shared `A2uiValidationErrorsComponent` for consistent error display: ```typescript -import { A2uiValidationErrorsComponent } from '@cacheplane/chat'; +import { A2uiValidationErrorsComponent } from '@ngaf/chat'; @Component({ imports: [A2uiValidationErrorsComponent], @@ -412,7 +412,7 @@ catalog components as the `_bindings` prop. Custom catalog components can use the `emitBinding` utility for consistent binding emission: ```typescript -import { emitBinding } from '@cacheplane/chat'; +import { emitBinding } from '@ngaf/chat'; // In your component's change handler: onInput(event: Event): void { diff --git a/apps/website/content/docs/render/a2ui/surface-component.mdx b/apps/website/content/docs/render/a2ui/surface-component.mdx index 42c064088..1b4126fae 100644 --- a/apps/website/content/docs/render/a2ui/surface-component.mdx +++ b/apps/website/content/docs/render/a2ui/surface-component.mdx @@ -5,7 +5,7 @@ Angular component that renders a single A2UI surface. It converts the surface's **Import:** ```typescript -import { A2uiSurfaceComponent } from '@cacheplane/chat'; +import { A2uiSurfaceComponent } from '@ngaf/chat'; ``` **Selector:** `a2ui-surface` @@ -60,8 +60,8 @@ The final `Spec` is passed to `RenderSpecComponent` along with the `ViewRegistry ```typescript import { Component, signal } from '@angular/core'; -import { A2uiSurfaceComponent, createA2uiSurfaceStore, a2uiBasicCatalog } from '@cacheplane/chat'; -import { createA2uiMessageParser } from '@cacheplane/a2ui'; +import { A2uiSurfaceComponent, createA2uiSurfaceStore, a2uiBasicCatalog } from '@ngaf/chat'; +import { createA2uiMessageParser } from '@ngaf/a2ui'; @Component({ selector: 'app-agent-panel', @@ -97,7 +97,7 @@ The conversion function is exported for testing or custom rendering pipelines. **Import:** ```typescript -import { surfaceToSpec } from '@cacheplane/chat'; +import { surfaceToSpec } from '@ngaf/chat'; ``` **Signature:** diff --git a/apps/website/content/docs/render/a2ui/surface-store.mdx b/apps/website/content/docs/render/a2ui/surface-store.mdx index b3279186a..04a4e9ff9 100644 --- a/apps/website/content/docs/render/a2ui/surface-store.mdx +++ b/apps/website/content/docs/render/a2ui/surface-store.mdx @@ -5,7 +5,7 @@ Factory function that creates an `A2uiSurfaceStore` — a reactive store that ac **Import:** ```typescript -import { createA2uiSurfaceStore } from '@cacheplane/chat'; +import { createA2uiSurfaceStore } from '@ngaf/chat'; ``` ## Signature @@ -87,8 +87,8 @@ The `updateDataModel` message uses JSON Pointer (RFC 6901) paths to address valu The surface store is designed to work with `createA2uiMessageParser`, which parses raw JSONL chunks into typed `A2uiMessage` objects. ```typescript -import { createA2uiSurfaceStore } from '@cacheplane/chat'; -import { createA2uiMessageParser } from '@cacheplane/a2ui'; +import { createA2uiSurfaceStore } from '@ngaf/chat'; +import { createA2uiMessageParser } from '@ngaf/a2ui'; import { effect } from '@angular/core'; const store = createA2uiSurfaceStore(); diff --git a/apps/website/content/docs/render/api/define-angular-registry.mdx b/apps/website/content/docs/render/api/define-angular-registry.mdx index 47414ae38..65154507c 100644 --- a/apps/website/content/docs/render/api/define-angular-registry.mdx +++ b/apps/website/content/docs/render/api/define-angular-registry.mdx @@ -5,7 +5,7 @@ Creates an `AngularRegistry` that maps element type names to Angular component c ## Import ```typescript -import { defineAngularRegistry } from '@cacheplane/render'; +import { defineAngularRegistry } from '@ngaf/render'; ``` ## Signature @@ -45,7 +45,7 @@ interface AngularRegistry { ### Basic Registry ```typescript -import { defineAngularRegistry } from '@cacheplane/render'; +import { defineAngularRegistry } from '@ngaf/render'; import { TextComponent } from './text.component'; import { CardComponent } from './card.component'; @@ -63,7 +63,7 @@ registry.names(); // ['Text', 'Card'] ### With provideRender() ```typescript -import { provideRender, defineAngularRegistry } from '@cacheplane/render'; +import { provideRender, defineAngularRegistry } from '@ngaf/render'; export const appConfig: ApplicationConfig = { providers: [ diff --git a/apps/website/content/docs/render/api/provide-render.mdx b/apps/website/content/docs/render/api/provide-render.mdx index 95efb4387..aa8f1c17f 100644 --- a/apps/website/content/docs/render/api/provide-render.mdx +++ b/apps/website/content/docs/render/api/provide-render.mdx @@ -1,11 +1,11 @@ # provideRender() -Registers global default configuration for `@cacheplane/render` via Angular's dependency injection system. +Registers global default configuration for `@ngaf/render` via Angular's dependency injection system. ## Import ```typescript -import { provideRender, RENDER_CONFIG } from '@cacheplane/render'; +import { provideRender, RENDER_CONFIG } from '@ngaf/render'; ``` ## Signature @@ -58,7 +58,7 @@ You can inject it directly if needed: ```typescript import { inject } from '@angular/core'; -import { RENDER_CONFIG } from '@cacheplane/render'; +import { RENDER_CONFIG } from '@ngaf/render'; const config = inject(RENDER_CONFIG, { optional: true }); // null if provideRender() was not called @@ -71,7 +71,7 @@ const config = inject(RENDER_CONFIG, { optional: true }); ```typescript // app.config.ts import { ApplicationConfig } from '@angular/core'; -import { provideRender, defineAngularRegistry } from '@cacheplane/render'; +import { provideRender, defineAngularRegistry } from '@ngaf/render'; import { TextComponent } from './components/text.component'; import { CardComponent } from './components/card.component'; @@ -94,7 +94,7 @@ import { provideRender, defineAngularRegistry, signalStateStore, -} from '@cacheplane/render'; +} from '@ngaf/render'; const globalStore = signalStateStore({ theme: 'light' }); diff --git a/apps/website/content/docs/render/api/render-spec-component.mdx b/apps/website/content/docs/render/api/render-spec-component.mdx index a243b57f7..13d57d886 100644 --- a/apps/website/content/docs/render/api/render-spec-component.mdx +++ b/apps/website/content/docs/render/api/render-spec-component.mdx @@ -5,7 +5,7 @@ The top-level entry point for rendering a `@json-render/core` spec as an Angular ## Import ```typescript -import { RenderSpecComponent } from '@cacheplane/render'; +import { RenderSpecComponent } from '@ngaf/render'; ``` ## Selector @@ -91,7 +91,7 @@ The context is a `computed` signal that updates when any input or config changes ```typescript import { inject } from '@angular/core'; -import { RENDER_CONTEXT } from '@cacheplane/render'; +import { RENDER_CONTEXT } from '@ngaf/render'; const ctx = inject(RENDER_CONTEXT); ctx.store.get('/some/path'); @@ -142,7 +142,7 @@ import { RenderSpecComponent, defineAngularRegistry, signalStateStore, -} from '@cacheplane/render'; +} from '@ngaf/render'; import type { Spec } from '@json-render/core'; import { TextComponent } from './text.component'; import { ButtonComponent } from './button.component'; diff --git a/apps/website/content/docs/render/api/signal-state-store.mdx b/apps/website/content/docs/render/api/signal-state-store.mdx index 4cd1b7c78..ef4e6c5d3 100644 --- a/apps/website/content/docs/render/api/signal-state-store.mdx +++ b/apps/website/content/docs/render/api/signal-state-store.mdx @@ -5,7 +5,7 @@ Creates a reactive state store backed by Angular Signals that implements the `St ## Import ```typescript -import { signalStateStore } from '@cacheplane/render'; +import { signalStateStore } from '@ngaf/render'; ``` ## Signature diff --git a/apps/website/content/docs/render/api/views.mdx b/apps/website/content/docs/render/api/views.mdx index 9e88f82fc..75c71313b 100644 --- a/apps/website/content/docs/render/api/views.mdx +++ b/apps/website/content/docs/render/api/views.mdx @@ -10,7 +10,7 @@ Creates an immutable view registry mapping names to Angular components. Views ar ## Usage ```typescript -import { views } from '@cacheplane/render'; +import { views } from '@ngaf/render'; const ui = views({ 'plan-checklist': PlanChecklistComponent, @@ -28,7 +28,7 @@ Pass to the chat component: Or provide globally via DI: ```typescript -import { provideViews } from '@cacheplane/render'; +import { provideViews } from '@ngaf/render'; // app.config.ts providers: [provideViews(ui)] diff --git a/apps/website/content/docs/render/getting-started/installation.mdx b/apps/website/content/docs/render/getting-started/installation.mdx index 47869b3d5..eb295424c 100644 --- a/apps/website/content/docs/render/getting-started/installation.mdx +++ b/apps/website/content/docs/render/getting-started/installation.mdx @@ -1,12 +1,12 @@ # Installation -Detailed setup guide for `@cacheplane/render` in your Angular application. +Detailed setup guide for `@ngaf/render` in your Angular application. ## Requirements -`@cacheplane/render` uses Angular Signals, the `input()` function, and the `NgComponentOutlet` directive. Angular 20 or later is required. +`@ngaf/render` uses Angular Signals, the `input()` function, and the `NgComponentOutlet` directive. Angular 20 or later is required. Required for the build toolchain and package installation. @@ -16,7 +16,7 @@ Required for the build toolchain and package installation. ## Install the Package ```bash -npm install @cacheplane/render @json-render/core +npm install @ngaf/render @json-render/core ``` ### Peer Dependencies @@ -40,7 +40,7 @@ Add `provideRender()` to your application configuration. This sets global defaul ```typescript // app.config.ts import { ApplicationConfig } from '@angular/core'; -import { provideRender, defineAngularRegistry } from '@cacheplane/render'; +import { provideRender, defineAngularRegistry } from '@ngaf/render'; import { TextComponent } from './components/text.component'; import { CardComponent } from './components/card.component'; @@ -69,7 +69,7 @@ Here is a complete minimal application setup: ```typescript import { ApplicationConfig } from '@angular/core'; -import { provideRender, defineAngularRegistry } from '@cacheplane/render'; +import { provideRender, defineAngularRegistry } from '@ngaf/render'; import { TextComponent } from './text.component'; export const appConfig: ApplicationConfig = { @@ -107,7 +107,7 @@ export class TextComponent { ```typescript import { Component, ChangeDetectionStrategy } from '@angular/core'; -import { RenderSpecComponent } from '@cacheplane/render'; +import { RenderSpecComponent } from '@ngaf/render'; import type { Spec } from '@json-render/core'; @Component({ diff --git a/apps/website/content/docs/render/getting-started/introduction.mdx b/apps/website/content/docs/render/getting-started/introduction.mdx index 084eb5e94..545f9513a 100644 --- a/apps/website/content/docs/render/getting-started/introduction.mdx +++ b/apps/website/content/docs/render/getting-started/introduction.mdx @@ -1,10 +1,10 @@ # Introduction -`@cacheplane/render` is the Angular rendering engine for [json-render](https://github.com/nicholasgriffintn/json-render) specs. It takes a declarative JSON specification and renders it into a live Angular component tree -- with reactive state, event handling, and conditional rendering built in. +`@ngaf/render` is the Angular rendering engine for [json-render](https://github.com/nicholasgriffintn/json-render) specs. It takes a declarative JSON specification and renders it into a live Angular component tree -- with reactive state, event handling, and conditional rendering built in. -## Why @cacheplane/render? +## Why @ngaf/render? -Building dynamic UIs from server-driven specifications is a common pattern in AI applications, form builders, and CMS-powered frontends. `@cacheplane/render` bridges the gap between `@json-render/core` (a framework-agnostic spec evaluation engine) and Angular's component model. +Building dynamic UIs from server-driven specifications is a common pattern in AI applications, form builders, and CMS-powered frontends. `@ngaf/render` bridges the gap between `@json-render/core` (a framework-agnostic spec evaluation engine) and Angular's component model. Instead of writing imperative rendering logic, you describe your UI as a JSON spec and let the library handle the rest: @@ -31,7 +31,7 @@ The library resolves `Text` from your component registry, evaluates the `$state` `@json-render/core` provides the spec format and the evaluation engine -- it resolves prop expressions (`$state`, `$item`, `$index`, `$bindState`, `$fn`), evaluates visibility conditions, and resolves bindings. It is framework-agnostic and has no Angular dependency. -`@cacheplane/render` is the Angular adapter layer. It provides: +`@ngaf/render` is the Angular adapter layer. It provides: - **Component registry** -- maps spec element types (like `"Text"` or `"Card"`) to Angular component classes - **Signal-based state store** -- an Angular Signals-backed implementation of the `StateStore` interface from `@json-render/core` diff --git a/apps/website/content/docs/render/getting-started/quickstart.mdx b/apps/website/content/docs/render/getting-started/quickstart.mdx index 2bcda5285..71211fdb5 100644 --- a/apps/website/content/docs/render/getting-started/quickstart.mdx +++ b/apps/website/content/docs/render/getting-started/quickstart.mdx @@ -3,7 +3,7 @@ Render a JSON spec as a live Angular component tree in 5 minutes. -Angular 20+ project with `@cacheplane/render` installed. See the [Installation](/docs/render/getting-started/installation) guide if you need setup help. +Angular 20+ project with `@ngaf/render` installed. See the [Installation](/docs/render/getting-started/installation) guide if you need setup help. @@ -35,7 +35,7 @@ Map element type names to Angular component classes using `defineAngularRegistry ```typescript // ui-registry.ts -import { defineAngularRegistry } from '@cacheplane/render'; +import { defineAngularRegistry } from '@ngaf/render'; import { TextComponent } from './text.component'; export const uiRegistry = defineAngularRegistry({ @@ -51,7 +51,7 @@ A spec describes the UI tree as a flat map of elements. The `root` key points to ```typescript // app.component.ts import { Component, ChangeDetectionStrategy } from '@angular/core'; -import { RenderSpecComponent } from '@cacheplane/render'; +import { RenderSpecComponent } from '@ngaf/render'; import type { Spec } from '@json-render/core'; import { uiRegistry } from './ui-registry'; @@ -72,7 +72,7 @@ export class AppComponent { elements: { greeting: { type: 'Text', - props: { label: 'Hello from @cacheplane/render!' }, + props: { label: 'Hello from @ngaf/render!' }, }, }, }; @@ -86,7 +86,7 @@ export class AppComponent { ng serve ``` -Open `http://localhost:4200`. You should see "Hello from @cacheplane/render!" rendered by your `TextComponent`. +Open `http://localhost:4200`. You should see "Hello from @ngaf/render!" rendered by your `TextComponent`. @@ -97,7 +97,7 @@ Specs become powerful when you connect them to a state store. Props with `$state ```typescript import { Component, ChangeDetectionStrategy } from '@angular/core'; -import { RenderSpecComponent, signalStateStore } from '@cacheplane/render'; +import { RenderSpecComponent, signalStateStore } from '@ngaf/render'; import type { Spec } from '@json-render/core'; import { uiRegistry } from './ui-registry'; diff --git a/apps/website/content/docs/render/guides/events.mdx b/apps/website/content/docs/render/guides/events.mdx index 608c79693..661d1d5dd 100644 --- a/apps/website/content/docs/render/guides/events.mdx +++ b/apps/website/content/docs/render/guides/events.mdx @@ -125,7 +125,7 @@ export class AppComponent { ```typescript // app.config.ts -import { provideRender } from '@cacheplane/render'; +import { provideRender } from '@ngaf/render'; export const appConfig: ApplicationConfig = { providers: [ diff --git a/apps/website/content/docs/render/guides/registry.mdx b/apps/website/content/docs/render/guides/registry.mdx index 9458a78bc..7e50cdf6d 100644 --- a/apps/website/content/docs/render/guides/registry.mdx +++ b/apps/website/content/docs/render/guides/registry.mdx @@ -7,7 +7,7 @@ The component registry maps element type names from your spec to Angular compone Use `defineAngularRegistry()` to create a registry from a plain object mapping type names to component classes: ```typescript -import { defineAngularRegistry } from '@cacheplane/render'; +import { defineAngularRegistry } from '@ngaf/render'; import { TextComponent } from './text.component'; import { CardComponent } from './card.component'; import { ButtonComponent } from './button.component'; @@ -34,7 +34,7 @@ uiRegistry.names(); // ['Text', 'Card', 'Button', 'Container'] ## The Component Input Contract -Every component rendered by `@cacheplane/render` receives inputs conforming to the `AngularComponentInputs` interface. Your custom props from the spec are spread as additional inputs alongside the standard ones. +Every component rendered by `@ngaf/render` receives inputs conforming to the `AngularComponentInputs` interface. Your custom props from the spec are spread as additional inputs alongside the standard ones. ### Standard Inputs @@ -126,7 +126,7 @@ You can use the bindings map to write back to the store: ```typescript import { Component, ChangeDetectionStrategy, input, inject } from '@angular/core'; -import { RENDER_CONTEXT } from '@cacheplane/render'; +import { RENDER_CONTEXT } from '@ngaf/render'; @Component({ selector: 'app-input', @@ -162,7 +162,7 @@ Container components can render their children by using the `childKeys` and `spe ```typescript import { Component, ChangeDetectionStrategy, input } from '@angular/core'; -import { RenderElementComponent } from '@cacheplane/render'; +import { RenderElementComponent } from '@ngaf/render'; import type { Spec } from '@json-render/core'; @Component({ @@ -198,7 +198,7 @@ You can provide the registry in two ways: ```typescript // app.config.ts -import { provideRender, defineAngularRegistry } from '@cacheplane/render'; +import { provideRender, defineAngularRegistry } from '@ngaf/render'; export const appConfig: ApplicationConfig = { providers: [ diff --git a/apps/website/content/docs/render/guides/specs.mdx b/apps/website/content/docs/render/guides/specs.mdx index 1dd869b48..2b30c0b51 100644 --- a/apps/website/content/docs/render/guides/specs.mdx +++ b/apps/website/content/docs/render/guides/specs.mdx @@ -1,6 +1,6 @@ # Specs -A spec is the JSON object that describes your entire UI tree. It tells `@cacheplane/render` what to render, how to wire state, and when to show or hide elements. +A spec is the JSON object that describes your entire UI tree. It tells `@ngaf/render` what to render, how to wire state, and when to show or hide elements. ## Spec Format diff --git a/apps/website/content/docs/render/guides/state-store.mdx b/apps/website/content/docs/render/guides/state-store.mdx index 6d859691b..2c34d28af 100644 --- a/apps/website/content/docs/render/guides/state-store.mdx +++ b/apps/website/content/docs/render/guides/state-store.mdx @@ -1,11 +1,11 @@ # State Store -The state store holds the reactive state that drives your rendered UI. `@cacheplane/render` provides `signalStateStore()`, an Angular Signals-backed implementation of the `StateStore` interface from `@json-render/core`. +The state store holds the reactive state that drives your rendered UI. `@ngaf/render` provides `signalStateStore()`, an Angular Signals-backed implementation of the `StateStore` interface from `@json-render/core`. ## Creating a State Store ```typescript -import { signalStateStore } from '@cacheplane/render'; +import { signalStateStore } from '@ngaf/render'; const store = signalStateStore({ user: { name: 'Alice', age: 30 }, diff --git a/apps/website/content/prompts/configuration.md b/apps/website/content/prompts/configuration.md index e887a1109..9f019a23a 100644 --- a/apps/website/content/prompts/configuration.md +++ b/apps/website/content/prompts/configuration.md @@ -1,7 +1,7 @@ Configure angular globally and per-component in my Angular application. Global config (applies to all agent() calls in the app): -In app.config.ts, provideAgent({ apiUrl: 'https://my-langgraph-server.com', }) — import provideAgent from '@cacheplane/langgraph'. +In app.config.ts, provideAgent({ apiUrl: 'https://my-langgraph-server.com', }) — import provideAgent from '@ngaf/langgraph'. Per-call override (overrides global config for one component): Pass apiUrl directly to agent({ apiUrl: 'https://other-server.com', assistantId: 'my-agent' }) — per-call options take precedence over global config. diff --git a/apps/website/content/prompts/getting-started.md b/apps/website/content/prompts/getting-started.md index 64feb8f56..140482e54 100644 --- a/apps/website/content/prompts/getting-started.md +++ b/apps/website/content/prompts/getting-started.md @@ -1,8 +1,8 @@ Add angular to my Angular 20+ application. -Install: npm install @cacheplane/langgraph@latest +Install: npm install @ngaf/langgraph@latest -1. In app.config.ts, add provideAgent({ apiUrl: 'http://localhost:2024' }) to the providers array. Import it from '@cacheplane/langgraph'. +1. In app.config.ts, add provideAgent({ apiUrl: 'http://localhost:2024' }) to the providers array. Import it from '@ngaf/langgraph'. 2. Create a ChatComponent that calls agent<{ messages: BaseMessage[] }>({ assistantId: 'chat_agent' }) in the constructor or as a field initializer. agent() MUST be called inside an Angular injection context — constructor or field initializer is correct; ngOnInit is not. diff --git a/apps/website/content/prompts/testing.md b/apps/website/content/prompts/testing.md index dcd9274e0..3a9a08307 100644 --- a/apps/website/content/prompts/testing.md +++ b/apps/website/content/prompts/testing.md @@ -1,6 +1,6 @@ Write unit tests for my Angular component that uses angular, without hitting a real LangGraph server. -Use MockAgentTransport from '@cacheplane/langgraph'. It implements AgentTransport and lets you script exactly what events the stream emits. +Use MockAgentTransport from '@ngaf/langgraph'. It implements AgentTransport and lets you script exactly what events the stream emits. Test setup: const transport = new MockAgentTransport(); diff --git a/apps/website/emails/drip-angular-followup.ts b/apps/website/emails/drip-angular-followup.ts index e2693cfbe..42d03bd20 100644 --- a/apps/website/emails/drip-angular-followup.ts +++ b/apps/website/emails/drip-angular-followup.ts @@ -18,12 +18,12 @@ export function dripAngularFollowupHtml(day: number): { subject: string; html: s if (day === 5) { return { - subject: 'LangGraph Angular SDK vs @cacheplane/langgraph', + subject: 'LangGraph Angular SDK vs @ngaf/langgraph', html: wrapEmail({ body: `

Comparison

-

LangGraph Angular SDK vs @cacheplane/langgraph

-

The LangGraph JS SDK gives you a streaming client. @cacheplane/langgraph gives you signal-native state, thread persistence, interrupt flows, and a full test harness — all wired together and optimized for Angular's change detection model. See the full comparison on our product page.

+

LangGraph Angular SDK vs @ngaf/langgraph

+

The LangGraph JS SDK gives you a streaming client. @ngaf/langgraph gives you signal-native state, thread persistence, interrupt flows, and a full test harness — all wired together and optimized for Angular's change detection model. See the full comparison on our product page.

See the Comparison → `, showUnsubscribe: true, diff --git a/apps/website/emails/drip-chat-followup.ts b/apps/website/emails/drip-chat-followup.ts index e0acc8cec..2e6dd462b 100644 --- a/apps/website/emails/drip-chat-followup.ts +++ b/apps/website/emails/drip-chat-followup.ts @@ -23,7 +23,7 @@ export function dripChatFollowupHtml(day: number): { subject: string; html: stri body: `

The Sprint Tax

The sprint tax: why every team rebuilds chat from scratch

-

Most teams spend 2–4 sprints building a chat UI before a single agent feature lands. Streaming state management, optimistic updates, thread history, error recovery — it's the same work every time. @cacheplane/chat eliminates the sprint tax so your team ships features from day one.

+

Most teams spend 2–4 sprints building a chat UI before a single agent feature lands. Streaming state management, optimistic updates, thread history, error recovery — it's the same work every time. @ngaf/chat eliminates the sprint tax so your team ships features from day one.

See How It Works → `, showUnsubscribe: true, diff --git a/apps/website/emails/drip-render-followup.ts b/apps/website/emails/drip-render-followup.ts index d45dc09a0..4583b4934 100644 --- a/apps/website/emails/drip-render-followup.ts +++ b/apps/website/emails/drip-render-followup.ts @@ -23,7 +23,7 @@ export function dripRenderFollowupHtml(day: number): { subject: string; html: st body: `

Architecture

Why tight coupling between agents and UI kills iteration speed

-

When an agent generates UI directly — raw HTML, string templates, hardcoded component names — every model change breaks the frontend and every UI change breaks the prompt. Decoupling via a declarative spec layer means agents and UI teams can iterate independently. See how @cacheplane/render makes this the default.

+

When an agent generates UI directly — raw HTML, string templates, hardcoded component names — every model change breaks the frontend and every UI change breaks the prompt. Decoupling via a declarative spec layer means agents and UI teams can iterate independently. See how @ngaf/render makes this the default.

See How It Works → `, showUnsubscribe: true, diff --git a/apps/website/public/assets/arch-diagram.svg b/apps/website/public/assets/arch-diagram.svg index d8a041767..02f9d2023 100644 --- a/apps/website/public/assets/arch-diagram.svg +++ b/apps/website/public/assets/arch-diagram.svg @@ -36,7 +36,7 @@ font-size="11" fill="#4A527A">Signal-native state @cacheplane/langgraph + font-size="11" fill="#4A527A">@ngaf/langgraph diff --git a/apps/website/public/whitepapers/angular-preview.html b/apps/website/public/whitepapers/angular-preview.html index 51ede38d0..c7410b9f5 100644 --- a/apps/website/public/whitepapers/angular-preview.html +++ b/apps/website/public/whitepapers/angular-preview.html @@ -20,7 +20,7 @@
-
@cacheplane/langgraph · Enterprise Guide
+
@ngaf/langgraph · Enterprise Guide

The
Enterprise
Guide
to
Agent
Streaming
in
Angular

Ship LangGraph agents in Angular — without building the plumbing

cacheplane.io · 2026
@@ -91,7 +91,7 @@

The Real Cost

Chapter 2

The agent() API

Chapter 3: The agent() API

-

The core primitive in `@cacheplane/langgraph` is `agent()` — a factory function that returns a structured ref containing typed signals wired directly to a LangGraph agent stream. You call it once, bind the signals in your template, and the component reacts to every streamed token without a subscription, a zone trigger, or an accumulation buffer in sight.

+

The core primitive in `@ngaf/langgraph` is `agent()` — a factory function that returns a structured ref containing typed signals wired directly to a LangGraph agent stream. You call it once, bind the signals in your template, and the component reacts to every streamed token without a subscription, a zone trigger, or an accumulation buffer in sight.

What agent() Returns

`agent()` returns an `AgentRef` object with four signals:

interface AgentRef {
@@ -185,12 +185,12 @@ 

Production Checklist

Chapter 4

Interrupt & Approval Flows

Chapter 7: Interrupt & Approval Flows

-

Agents that interact with external systems — firing off emails, mutating database records, executing privileged queries — cannot operate as fire-and-forget processes in an enterprise context. Execution must be pauseable, inspectable, and resumable with explicit human intent. LangGraph's `interrupt()` primitive and `@cacheplane/langgraph`'s reactive surface for it give you exactly that, without polling loops or bespoke WebSocket plumbing.

+

Agents that interact with external systems — firing off emails, mutating database records, executing privileged queries — cannot operate as fire-and-forget processes in an enterprise context. Execution must be pauseable, inspectable, and resumable with explicit human intent. LangGraph's `interrupt()` primitive and `@ngaf/langgraph`'s reactive surface for it give you exactly that, without polling loops or bespoke WebSocket plumbing.

How LangGraph interrupt() Works

When a LangGraph node calls `interrupt(payload)`, graph execution halts at that checkpoint. The payload is an arbitrary object you define — typically the action description, affected resource identifiers, and any data the reviewer needs to make a decision. The graph persists this state to its checkpointer and waits. Nothing proceeds until a resume command arrives with the correct thread ID and checkpoint reference.

The resume payload follows a typed contract: `{ action: "approve" | "edit" | "cancel", data?: unknown }`. On `approve`, the graph continues with the original node inputs. On `edit`, your modified `data` is injected, replacing what the node would have used. On `cancel`, LangGraph short-circuits the remaining path and routes to whatever terminal state you've configured for rejected flows.

The Interrupt Signal in Angular

-

`@cacheplane/langgraph` exposes this checkpoint state directly on the agent reference. The `interrupt` property is a computed signal that starts as `null` and transitions to an `InterruptState` object the moment the backend checkpoint is written:

+

`@ngaf/langgraph` exposes this checkpoint state directly on the agent reference. The `interrupt` property is a computed signal that starts as `null` and transitions to an `InterruptState` object the moment the backend checkpoint is written:

const agent = injectAgentRef({ threadId });
 

const interrupt = agent.interrupt; // Signal

const handleApprove = () => @@ -221,16 +221,16 @@

Edge Cases Worth Handling

Chapter 5

Full LangGraph Feature Coverage

Chapter 4: Full LangGraph Feature Coverage

-

Basic chat streaming is a solved problem. The real engineering challenge begins when your graph does something more interesting—calls a tool, delegates to a subagent, or needs to rewind to a prior checkpoint. Most Angular LLM libraries handle the simple case and then quietly stop working. This chapter documents how `@cacheplane/langgraph` exposes the full LangGraph feature surface through a coherent signal-based API.

+

Basic chat streaming is a solved problem. The real engineering challenge begins when your graph does something more interesting—calls a tool, delegates to a subagent, or needs to rewind to a prior checkpoint. Most Angular LLM libraries handle the simple case and then quietly stop working. This chapter documents how `@ngaf/langgraph` exposes the full LangGraph feature surface through a coherent signal-based API.

---

Tool Call Streaming

-

When a LangGraph node invokes a tool, the graph emits a structured sequence of events: the tool call intent, intermediate streaming deltas, and the final tool result. Rather than requiring you to parse raw SSE frames and reconstruct this sequence manually, `@cacheplane/langgraph` surfaces tool invocation lifecycle through the agent ref directly.

+

When a LangGraph node invokes a tool, the graph emits a structured sequence of events: the tool call intent, intermediate streaming deltas, and the final tool result. Rather than requiring you to parse raw SSE frames and reconstruct this sequence manually, `@ngaf/langgraph` surfaces tool invocation lifecycle through the agent ref directly.

The `toolCalls` signal on the agent ref updates reactively as each tool call progresses. You get the tool name, input arguments as they stream in, execution status, and the final output—all typed, all reactive. Your component never needs to touch the underlying event stream to render a "Searching the web…" indicator or display structured tool output inline.

This matters because tool call parsing is subtle. Argument deltas arrive as partial JSON strings. Parallel tool calls interleave. A naive implementation collapses these into noise. The library handles reconstruction and ordering internally.

---

Subgraph Event Propagation

LangGraph supports nested graphs, and real production agents use them. Events emitted inside a subgraph are namespaced by graph path, which means consuming them correctly requires understanding the event hierarchy.

-

`@cacheplane/langgraph` flattens subgraph events into the parent stream while preserving their origin metadata. If you care about which subgraph produced a message—for routing UI panels, for logging, or for debugging—you have access to the full event path. If you don't care, the default signal behavior aggregates everything cleanly without requiring you to configure traversal logic.

+

`@ngaf/langgraph` flattens subgraph events into the parent stream while preserving their origin metadata. If you care about which subgraph produced a message—for routing UI panels, for logging, or for debugging—you have access to the full event path. If you don't care, the default signal behavior aggregates everything cleanly without requiring you to configure traversal logic.

---

Time Travel

LangGraph's checkpoint system allows you to rewind graph state to any prior node execution and re-run from that point. This is not a niche feature—it's the foundation of any agent UI that allows users to correct mistakes or explore alternative paths.

@@ -238,7 +238,7 @@

Time Travel

---

DeepAgent Multi-Agent Coordination

DeepAgent introduces orchestrator-subagent topology at the stream level. An orchestrator dispatches work to specialized agents and aggregates their outputs. From the stream consumer's perspective, this produces interleaved events from multiple graph instances.

-

`@cacheplane/langgraph` maps each active agent to its own scoped signal context. The orchestrator's agent ref exposes a `subagents` signal—a reactive map of active agent IDs to their respective state signals. You can bind a list of subagent components to this map and let Angular's `@for` loop handle the rest. Agent addition, completion, and failure all propagate as signal updates without manual subscription management.

+

`@ngaf/langgraph` maps each active agent to its own scoped signal context. The orchestrator's agent ref exposes a `subagents` signal—a reactive map of active agent IDs to their respective state signals. You can bind a list of subagent components to this map and let Angular's `@for` loop handle the rest. Agent addition, completion, and failure all propagate as signal updates without manual subscription management.

---

The `onCustomEvent` Hook

LangGraph nodes can emit arbitrary structured events outside the message channel. These are the primitives for generative UI, analytics instrumentation, and intermediate state reporting.

diff --git a/apps/website/public/whitepapers/chat-preview.html b/apps/website/public/whitepapers/chat-preview.html index b3e27b960..7c63a83ed 100644 --- a/apps/website/public/whitepapers/chat-preview.html +++ b/apps/website/public/whitepapers/chat-preview.html @@ -20,7 +20,7 @@
-
@cacheplane/chat · Enterprise Guide
+
@ngaf/chat · Enterprise Guide

The
Enterprise
Guide
to
Agent
Chat
Interfaces
in
Angular

Production agent chat UI in days, not sprints

cacheplane.io · 2026
@@ -79,7 +79,7 @@

Demo Versus Production

The Opportunity Cost

Senior Angular engineers who spend three sprints on chat infrastructure are not spending those sprints on agent integration. They are not building the domain-specific tool interfaces, the custom interrupt flows, or the application state management that ties agent output to the rest of the product. Those are the things that will differentiate the application. The scroll behavior will not.

The Thesis

-

`@cacheplane/chat` exists to eliminate the sprint tax. Ship the chat UI on day one—message rendering, streaming, tool call cards, interrupt panels, accessibility, mobile layout, all of it—and spend the sprints on what actually matters: the integration work that is specific to your agent, your domain, and your users.

+

`@ngaf/chat` exists to eliminate the sprint tax. Ship the chat UI on day one—message rendering, streaming, tool call cards, interrupt panels, accessibility, mobile layout, all of it—and spend the sprints on what actually matters: the integration work that is specific to your agent, your domain, and your users.

The backend is ready. The chat UI should be too.

@@ -87,7 +87,7 @@

The Thesis

Batteries-Included Components

Chapter 4: Batteries-Included Components

Two Tiers, One Decision

-

`@cacheplane/chat` ships two distinct component tiers. The prebuilt tier gives you a production-ready chat interface with a single element. The headless tier gives you behavior and state without a single line of CSS opinion. Your team picks the tier that matches how much control you actually need — not how much you think you might need someday.

+

`@ngaf/chat` ships two distinct component tiers. The prebuilt tier gives you a production-ready chat interface with a single element. The headless tier gives you behavior and state without a single line of CSS opinion. Your team picks the tier that matches how much control you actually need — not how much you think you might need someday.

Most teams start with prebuilt and never leave. That is the correct call.

---

The Headless Tier

@@ -102,8 +102,8 @@

The Headless Tier

---

The Prebuilt Tier

`chat-prebuilt` is a single component that composes all four headless primitives internally, applies a production-quality default theme, and handles responsive layout. Zero configuration is required beyond connecting an agent reference.

-
import { AgentService } from '@cacheplane/langgraph';
-import { ChatPrebuiltComponent } from '@cacheplane/chat';
+
import { AgentService } from '@ngaf/langgraph';
+import { ChatPrebuiltComponent } from '@ngaf/chat';
 

@Component({ selector: 'app-support', imports: [ChatPrebuiltComponent], @@ -122,7 +122,7 @@

The Prebuilt Tier

That is a fully functional streaming chat interface. Message history, input handling, tool call display, and interrupt controls are all included.

---

How the Component Model Connects

-

Both tiers consume the `AgentRef` produced by `@cacheplane/langgraph`. The `AgentRef` is a stable reference that exposes an `AIMessage[]` signal, a send method, and a cancellation interface. Components bind to this ref and react to signal emissions via Angular's standard reactivity primitives — no custom change detection strategies required, no zone workarounds.

+

Both tiers consume the `AgentRef` produced by `@ngaf/langgraph`. The `AgentRef` is a stable reference that exposes an `AIMessage[]` signal, a send method, and a cancellation interface. Components bind to this ref and react to signal emissions via Angular's standard reactivity primitives — no custom change detection strategies required, no zone workarounds.

When the agent emits a new token mid-stream, the `AIMessage[]` signal updates, and `chat-messages` incrementally patches the DOM. The mechanism is straightforward signal subscription. There is no proprietary diffing layer to reason about.

---

Composing the Two Tiers

@@ -136,17 +136,17 @@

When to Migrate

Chapter 3

Theming & Design System Integration

Chapter 6: Theming & Design System Integration

-

A chat interface that looks like it came from a SaaS starter kit is a trust problem. Users notice when a modal, sidebar, or embedded panel breaks the visual contract established by the rest of your product. For enterprise teams, that inconsistency signals a lack of ownership — and in agent-facing tools, ownership matters. This chapter covers how to bring `@cacheplane/chat` fully into your design system without forking component source or writing brittle CSS overrides.

+

A chat interface that looks like it came from a SaaS starter kit is a trust problem. Users notice when a modal, sidebar, or embedded panel breaks the visual contract established by the rest of your product. For enterprise teams, that inconsistency signals a lack of ownership — and in agent-facing tools, ownership matters. This chapter covers how to bring `@ngaf/chat` fully into your design system without forking component source or writing brittle CSS overrides.

---

The CSS Custom Property API

-

`@cacheplane/chat` exposes all visual decisions as CSS custom properties scoped under the `--cp-` namespace. These are not internal implementation details — they are the public API for visual configuration. Properties are declared on the host element and cascade normally through Shadow DOM boundaries where applicable, giving you a single override surface regardless of where components are mounted in the Angular component tree.

+

`@ngaf/chat` exposes all visual decisions as CSS custom properties scoped under the `--cp-` namespace. These are not internal implementation details — they are the public API for visual configuration. Properties are declared on the host element and cascade normally through Shadow DOM boundaries where applicable, giving you a single override surface regardless of where components are mounted in the Angular component tree.

The token surface covers six categories: color (surface, text, border, accent, semantic), typography (family, size scale, weight, line height), spacing (component padding, message gap, input height), shape (border radius at three scale points), motion (transition duration and easing), and elevation (box shadow values).

---

Design Token Mapping

-

If your design system already emits CSS custom properties — through Style Dictionary, Theo, or a Figma Tokens pipeline — mapping to `@cacheplane/chat` is a one-to-one alias operation. Define the mappings in a single stylesheet or Angular style encapsulation block. Avoid hardcoding raw values into `--cp-` properties directly; alias through your own tokens so that upstream design system changes propagate automatically.

+

If your design system already emits CSS custom properties — through Style Dictionary, Theo, or a Figma Tokens pipeline — mapping to `@ngaf/chat` is a one-to-one alias operation. Define the mappings in a single stylesheet or Angular style encapsulation block. Avoid hardcoding raw values into `--cp-` properties directly; alias through your own tokens so that upstream design system changes propagate automatically.

---

Typography Integration

-

Font family, size scale, and line height are independently configurable. `--cp-font-family` accepts any valid CSS font stack. Size tokens (`--cp-text-sm`, `--cp-text-base`, `--cp-text-lg`) map to the message body, metadata labels, and heading contexts respectively. If your type scale uses `rem` values derived from a root size override, `@cacheplane/chat` respects document root sizing — no unit conversion required.

+

Font family, size scale, and line height are independently configurable. `--cp-font-family` accepts any valid CSS font stack. Size tokens (`--cp-text-sm`, `--cp-text-base`, `--cp-text-lg`) map to the message body, metadata labels, and heading contexts respectively. If your type scale uses `rem` values derived from a root size override, `@ngaf/chat` respects document root sizing — no unit conversion required.

---

Color System Integration

Surface tokens (`--cp-surface-base`, `--cp-surface-raised`, `--cp-surface-input`) control background layering. Text tokens handle primary content, secondary metadata, and disabled states. `--cp-accent` drives interactive elements — send buttons, link text, focus rings. Semantic tokens (`--cp-color-error`, `--cp-color-warning`, `--cp-color-success`) control inline status indicators on message delivery states and tool call results. Map these directly to your semantic palette.

@@ -171,7 +171,7 @@

Brand Override Example

Ten properties. Full brand alignment. No component source required.

---

Token Limits and the Headless Tier

-

CSS custom properties cannot retheme structural decisions: message bubble layout, avatar placement geometry, the composition of the input toolbar, or the ordering of action elements. If your design system requires layout-level divergence — for example, a top-mounted input bar or a two-column transcript layout — the token API will not reach that far. That is the correct boundary for dropping to the headless tier, where `@cacheplane/chat/headless` exposes behavior and state without any rendered output, and your team owns the template entirely. Use tokens for brand alignment; use headless for structural ownership.

+

CSS custom properties cannot retheme structural decisions: message bubble layout, avatar placement geometry, the composition of the input toolbar, or the ordering of action elements. If your design system requires layout-level divergence — for example, a top-mounted input bar or a two-column transcript layout — the token API will not reach that far. That is the correct boundary for dropping to the headless tier, where `@ngaf/chat/headless` exposes behavior and state without any rendered output, and your team owns the template entirely. Use tokens for brand alignment; use headless for structural ownership.

Chapter 4
@@ -179,17 +179,17 @@

Chapter 7: Generative UI in Chat

Text responses have a ceiling. When a financial agent needs to surface a sortable data table or a scheduling agent needs to render an interactive booking form, prose falls short. Generative UI closes that gap by allowing agents to emit structured UI specifications directly into the message stream — specifications that the chat interface resolves into live Angular components.

How Generative UI Messages Work in the Stream

-

From the chat renderer's perspective, a generative UI message is just another message type. The message stream carries a `type` discriminator — `text`, `tool_call`, `ui_spec`, and so on. When `@cacheplane/chat` encounters a `ui_spec` message, it routes it to the UI renderer instead of the text pipeline. The result is that a data table, approval card, or booking form appears inline between conversational turns, indistinguishable in position from any other message bubble, but rendered as a fully interactive Angular component.

+

From the chat renderer's perspective, a generative UI message is just another message type. The message stream carries a `type` discriminator — `text`, `tool_call`, `ui_spec`, and so on. When `@ngaf/chat` encounters a `ui_spec` message, it routes it to the UI renderer instead of the text pipeline. The result is that a data table, approval card, or booking form appears inline between conversational turns, indistinguishable in position from any other message bubble, but rendered as a fully interactive Angular component.

The json-render Spec

The json-render specification is a JSON-based declarative format for describing UI trees. An agent emits a payload describing component type, props, and children. The chat layer deserializes that payload and resolves each component node against a registry. Because the spec is declarative and serializable, it travels cleanly over SSE or WebSocket streams and requires no client-side code changes when an agent starts emitting new component types — only a registry entry.

Google's A2UI Spec

-

A2UI extends the base idea with agent-specific primitives that json-render doesn't cover. It introduces first-class concepts for approval flows (a structured action requires explicit user confirmation before the agent proceeds), structured data cards with typed field schemas, and multi-step task UI. Where json-render is a general rendering protocol, A2UI is opinionated about agent interaction patterns. `@cacheplane/chat` supports both specs out of the box, detecting the discriminator on the incoming message and routing accordingly.

-

Integration with @cacheplane/render

-

The rendering layer is handled by `@cacheplane/render`, which owns component resolution, prop binding, and the registry itself. `@cacheplane/chat` delegates all spec rendering to `@cacheplane/render` — the chat library doesn't need to know how components are resolved, only that the renderer accepts a spec and returns a mounted component. This separation keeps the chat layer focused on message orchestration and keeps the rendering logic reusable outside of chat contexts.

+

A2UI extends the base idea with agent-specific primitives that json-render doesn't cover. It introduces first-class concepts for approval flows (a structured action requires explicit user confirmation before the agent proceeds), structured data cards with typed field schemas, and multi-step task UI. Where json-render is a general rendering protocol, A2UI is opinionated about agent interaction patterns. `@ngaf/chat` supports both specs out of the box, detecting the discriminator on the incoming message and routing accordingly.

+

Integration with @ngaf/render

+

The rendering layer is handled by `@ngaf/render`, which owns component resolution, prop binding, and the registry itself. `@ngaf/chat` delegates all spec rendering to `@ngaf/render` — the chat library doesn't need to know how components are resolved, only that the renderer accepts a spec and returns a mounted component. This separation keeps the chat layer focused on message orchestration and keeps the rendering logic reusable outside of chat contexts.

The Registry Pattern in Chat

Custom components are registered once and become available to any agent that knows the component identifier. The registry maps string keys to Angular component classes. Any component the agent might emit — a custom chart, a domain-specific form, a confirmation widget — needs a corresponding entry.

-
import { provideChatRenderer } from '@cacheplane/chat';
-import { provideRenderRegistry } from '@cacheplane/render';
+
import { provideChatRenderer } from '@ngaf/chat';
+import { provideRenderRegistry } from '@ngaf/render';
 import { DataTableComponent } from './components/data-table.component';
 import { BookingFormComponent } from './components/booking-form.component';
 import { ApprovalCardComponent } from './components/approval-card.component';
@@ -206,7 +206,7 @@ 

The Registry Pattern in Chat

Any component the agent emits by key is resolved here. Unknown keys fall back to a configurable fallback component rather than throwing.

Progressive Rendering via Streaming JSON Patches

-

Agents don't emit complete UI specs in a single chunk. They stream JSON patches — RFC 6902 operations that incrementally build the spec as the model generates it. `@cacheplane/chat` applies each patch to the in-progress spec and triggers Angular's change detection cycle. The effect is a component that populates live: table rows appear as the agent reasons through the data, form fields materialize in sequence. This isn't a loading spinner followed by a full render — it's the UI itself arriving progressively, which is both faster to first meaningful paint and more transparent about what the agent is doing.

+

Agents don't emit complete UI specs in a single chunk. They stream JSON patches — RFC 6902 operations that incrementally build the spec as the model generates it. `@ngaf/chat` applies each patch to the in-progress spec and triggers Angular's change detection cycle. The effect is a component that populates live: table rows appear as the agent reasons through the data, form fields materialize in sequence. This isn't a loading spinner followed by a full render — it's the UI itself arriving progressively, which is both faster to first meaningful paint and more transparent about what the agent is doing.

Chapter 5
@@ -214,14 +214,14 @@

Chapter 7: Debug Tooling

Debugging a running agent is fundamentally different from debugging a REST call. There is no single request to inspect in the network tab. The state lives across a stream of discrete events, tool invocations happen inside the graph before responses surface, and interrupt flows depend on timing between the UI and the server-side checkpoint. Standard browser tooling was not built for this. `chat-debug` was.

What chat-debug Exposes

-

`chat-debug` is a developer overlay built into `@cacheplane/chat`. When active, it renders a resizable panel alongside your chat interface that gives you a live view of four distinct concerns.

+

`chat-debug` is a developer overlay built into `@ngaf/chat`. When active, it renders a resizable panel alongside your chat interface that gives you a live view of four distinct concerns.

Raw message state surfaces the full `AIMessage[]` array as it exists in the agent signal at any given moment — not a serialized snapshot, but the live signal value. You can watch content chunks arrive and accumulate during streaming without manually logging signal reads.

The streaming event log shows every server-sent event in the order it was received, including event type, timestamp, and raw payload. This is where you catch malformed chunk sequences, unexpected `end` events, and latency gaps between tool execution and the next assistant turn.

The tool call state machine tracks each tool invocation through its full lifecycle: `pending`, `executing`, `complete`, or `error`. For each call you see the tool name, the serialized input payload, the output value, and wall-clock execution time. When a tool is slow or returning unexpected output, this panel removes the guesswork.

Interrupt state shows the full interrupt payload at the moment the graph pauses, including the checkpoint ID and any structured data the graph passed to the UI. After the user responds, the panel records what was submitted. If your interrupt flow has a bug, the before-and-after diff is right there.

Adding chat-debug

-

Drop `ChatDebugComponent` into any host component that already uses the `@cacheplane/chat` primitives. No providers, no configuration file. In dev mode it activates automatically.

-
import { ChatDebugComponent } from '@cacheplane/chat/debug';
+

Drop `ChatDebugComponent` into any host component that already uses the `@ngaf/chat` primitives. No providers, no configuration file. In dev mode it activates automatically.

+
import { ChatDebugComponent } from '@ngaf/chat/debug';
 

@Component({ imports: [ChatDebugComponent], template: ` @@ -236,7 +236,7 @@

Inspecting Messages and Tool Calls

Clicking any message in the raw state view expands it into a structured inspector showing message type, role, content blocks, and metadata fields. Streamed messages show their final assembled content alongside a chunk count. Tool call messages link directly to the corresponding entry in the tool call state machine view.

The tool call inspector is the most useful surface for backend integration bugs. Input and output payloads are formatted as syntax-highlighted JSON. Execution timing lets you correlate slow tool responses with latency you see in the event log.

Angular DevTools Integration

-

Agent signals registered through `@cacheplane/chat` appear as named signals in the Angular DevTools component tree. You can inspect `messageStream`, `interruptState`, and `toolCallRegistry` directly in the DevTools panel without instrumentation code. The signal graph reflects live state, so you can pause, inspect, and resume without affecting the stream.

+

Agent signals registered through `@ngaf/chat` appear as named signals in the Angular DevTools component tree. You can inspect `messageStream`, `interruptState`, and `toolCallRegistry` directly in the DevTools panel without instrumentation code. The signal graph reflects live state, so you can pause, inspect, and resume without affecting the stream.

Production Safety

`chat-debug` uses a build-time token that resolves to a no-op component in production. The overlay never renders, and tree-shaking removes the debug module entirely from the production bundle. No conditional guards in application code are required. The separation is enforced at the library level.

When a stream misbehaves in development, `chat-debug` gives you the full picture in one place. That is its only job, and it does it without adding complexity to your application architecture.

diff --git a/apps/website/public/whitepapers/render-preview.html b/apps/website/public/whitepapers/render-preview.html index 9cd74f4bc..3e47c7464 100644 --- a/apps/website/public/whitepapers/render-preview.html +++ b/apps/website/public/whitepapers/render-preview.html @@ -20,7 +20,7 @@
-
@cacheplane/render · Enterprise Guide
+
@ngaf/render · Enterprise Guide

The
Enterprise
Guide
to
Generative
UI
in
Angular

Agents that render UI — without coupling to your frontend

cacheplane.io · 2026
@@ -134,8 +134,8 @@

Conditional Rendering, Iteration, and Computed Properties

Computed properties use `{{expression}}` interpolation within prop values. Expressions are evaluated against a runtime context object supplied by the host application. The spec deliberately keeps the expression language minimal — it is not a scripting environment.

Google's A2UI Extension

Google's A2UI spec extends json-render for agent-native patterns. It introduces `intent` nodes, which describe what the agent wants to accomplish rather than prescribing a specific component. A2UI also formalizes `action` bindings — structured event handlers that dispatch typed payloads back to the agent rather than calling arbitrary JavaScript. For teams building bidirectional agent interfaces, A2UI's interaction model is worth adopting alongside the base spec.

-

@cacheplane/render in Angular

-

`@cacheplane/render` implements json-render for Angular via the `` directive. Pass it a document and a component registry:

+

@ngaf/render in Angular

+

`@ngaf/render` implements json-render for Angular via the `` directive. Pass it a document and a component registry:

@Component({
   template: ``
 })
@@ -156,7 +156,7 @@ 

Chapter 5

State Management & Computed Functions

Chapter 4: State Management & Computed Functions

-

Static specs describe structure. They fall short the moment your UI needs to reflect derived state — a total calculated from line items, a label that changes based on a flag, a list of cards rendered from an array. For generative UI to be production-ready, the spec itself must support dynamic behavior. `@cacheplane/render` addresses this through `signalStateStore()`, computed properties, and repeat loops — mechanisms that let an agent define reactive UI logic declaratively, without pushing that responsibility into custom component code.

+

Static specs describe structure. They fall short the moment your UI needs to reflect derived state — a total calculated from line items, a label that changes based on a flag, a list of cards rendered from an array. For generative UI to be production-ready, the spec itself must support dynamic behavior. `@ngaf/render` addresses this through `signalStateStore()`, computed properties, and repeat loops — mechanisms that let an agent define reactive UI logic declaratively, without pushing that responsibility into custom component code.

signalStateStore(): Agent-Managed Reactive State

`signalStateStore()` creates a Signal-backed state container that both the rendering engine and your Angular components can read from and write to. When an agent generates a spec, it can seed this store with initial values. Components rendered from that spec subscribe to the store automatically — no `@Input()` wiring, no manual change detection.

const store = signalStateStore({
diff --git a/apps/website/scripts/generate-whitepaper.ts b/apps/website/scripts/generate-whitepaper.ts
index c03f65bce..b13089359 100644
--- a/apps/website/scripts/generate-whitepaper.ts
+++ b/apps/website/scripts/generate-whitepaper.ts
@@ -116,7 +116,7 @@ Context: The most advanced production agents emit structured UI specs — not ju
 
 Cover:
 - The onCustomEvent pattern in LangGraph: how agents emit structured data
-- The @cacheplane/render approach: json-render specs, defineAngularRegistry(), 
+- The @ngaf/render approach: json-render specs, defineAngularRegistry(), 
 - How JSON patch streaming enables progressive UI updates (rows appearing as data arrives)
 - The registry pattern: decoupling agent from component implementation
 - Code example: defineAngularRegistry() registration (8-12 lines)
@@ -150,7 +150,7 @@ Tone: Direct, technical, peer-to-peer. No fluff. Audience is senior Angular engi
     id: 'angular',
     title: 'The Enterprise Guide to Agent Streaming in Angular',
     subtitle: 'Ship LangGraph agents in Angular — without building the plumbing',
-    eyebrow: '@cacheplane/langgraph · Enterprise Guide',
+    eyebrow: '@ngaf/langgraph · Enterprise Guide',
     coverGradient: 'linear-gradient(135deg, #eaf3ff 0%, #e6f4ff 45%, #f4f0ff 70%, #fef0f3 100%)',
     outputPdf: 'apps/website/public/whitepapers/angular.pdf',
     outputHtml: 'apps/website/public/whitepapers/angular-preview.html',
@@ -181,7 +181,7 @@ Tone: Direct, technical, peer-to-peer. No fluff. Audience is senior Angular engi
 
 Chapter topic: The agent() API
 
-Context: @cacheplane/langgraph exposes a signal-native API for streaming LangGraph agents into Angular components. The core primitive is agent() — a function that returns reactive signals wired directly to the agent stream, with no manual subscription management, no zone-patching, and no token accumulation logic.
+Context: @ngaf/langgraph exposes a signal-native API for streaming LangGraph agents into Angular components. The core primitive is agent() — a function that returns reactive signals wired directly to the agent stream, with no manual subscription management, no zone-patching, and no token accumulation logic.
 
 Cover:
 - How agent() returns a structured ref with typed signals: messages(), isStreaming(), error(), interrupt()
@@ -220,7 +220,7 @@ Tone: Direct, technical, peer-to-peer. No fluff. Audience is senior Angular engi
 
 Chapter topic: Interrupt & Approval Flows
 
-Context: Agents that take real-world actions — sending emails, executing queries, modifying records — must pause for human confirmation. LangGraph's interrupt() primitive enables this on the backend. @cacheplane/langgraph surfaces it as a reactive signal, eliminating the need for polling, websockets, or custom resume endpoints.
+Context: Agents that take real-world actions — sending emails, executing queries, modifying records — must pause for human confirmation. LangGraph's interrupt() primitive enables this on the backend. @ngaf/langgraph surfaces it as a reactive signal, eliminating the need for polling, websockets, or custom resume endpoints.
 
 Cover:
 - How LangGraph interrupt() pauses graph execution and what the resume payload looks like
@@ -239,7 +239,7 @@ Tone: Direct, technical, peer-to-peer. No fluff. Audience is senior Angular engi
 
 Chapter topic: Full LangGraph Feature Coverage
 
-Context: Most Angular LLM integrations support basic chat. @cacheplane/langgraph is designed for the full LangGraph feature surface: tool calls, subgraphs, time travel, and DeepAgent multi-agent coordination. Teams shouldn't have to drop down to raw SSE parsing to access advanced graph features.
+Context: Most Angular LLM integrations support basic chat. @ngaf/langgraph is designed for the full LangGraph feature surface: tool calls, subgraphs, time travel, and DeepAgent multi-agent coordination. Teams shouldn't have to drop down to raw SSE parsing to access advanced graph features.
 
 Cover:
 - Tool call streaming: how tool invocation events surface through the agent ref without manual parsing
@@ -277,7 +277,7 @@ Tone: Direct, technical, peer-to-peer. No fluff. Audience is senior Angular engi
     id: 'render',
     title: 'The Enterprise Guide to Generative UI in Angular',
     subtitle: 'Agents that render UI — without coupling to your frontend',
-    eyebrow: '@cacheplane/render · Enterprise Guide',
+    eyebrow: '@ngaf/render · Enterprise Guide',
     coverGradient: 'linear-gradient(135deg, #e8f5e9 0%, #eaf3ff 45%, #f4f0ff 70%, #fef0f3 100%)',
     outputPdf: 'apps/website/public/whitepapers/render.pdf',
     outputHtml: 'apps/website/public/whitepapers/render-preview.html',
@@ -308,14 +308,14 @@ Tone: Direct, technical, peer-to-peer. No fluff. Audience is senior Angular engi
 
 Chapter topic: Declarative UI Specs & the json-render Standard
 
-Context: Vercel's json-render spec defines a framework-agnostic standard for describing UI as structured JSON. An agent emits a json-render document. A frontend interprets it. Neither side knows how the other is implemented. @cacheplane/render implements this standard for Angular, with streaming JSON patch support on top.
+Context: Vercel's json-render spec defines a framework-agnostic standard for describing UI as structured JSON. An agent emits a json-render document. A frontend interprets it. Neither side knows how the other is implemented. @ngaf/render implements this standard for Angular, with streaming JSON patch support on top.
 
 Cover:
 - What a json-render document looks like: component name, props, children (concrete example)
 - Why an open standard matters: portability across frameworks, LLM prompt stability, community tooling
 - How the spec handles conditional rendering, iteration, and computed properties
 - Google's A2UI spec and how it extends json-render for agent-specific patterns
-- The @cacheplane/render implementation:  directive consumes a json-render document
+- The @ngaf/render implementation:  directive consumes a json-render document
 - How LLMs generate valid json-render output: prompt patterns that produce spec-compliant JSON
 
 Tone: Direct, technical, peer-to-peer. No fluff. Audience is senior Angular engineers.`,
@@ -327,7 +327,7 @@ Tone: Direct, technical, peer-to-peer. No fluff. Audience is senior Angular engi
 
 Chapter topic: The Component Registry
 
-Context: A json-render document references components by name. The registry is what maps those names to actual Angular components. defineAngularRegistry() is the @cacheplane/render API for declaring this mapping — it's the seam between the open standard and your specific component library.
+Context: A json-render document references components by name. The registry is what maps those names to actual Angular components. defineAngularRegistry() is the @ngaf/render API for declaring this mapping — it's the seam between the open standard and your specific component library.
 
 Cover:
 - How defineAngularRegistry() maps string component names to Angular component classes
@@ -347,7 +347,7 @@ Tone: Direct, technical, peer-to-peer. No fluff. Audience is senior Angular engi
 
 Chapter topic: Streaming JSON Patches
 
-Context: Generative UI is most powerful when it streams. A data table with 50 rows should appear progressively — rows rendering as the agent produces them, not after a 3-second wait for the full JSON payload. @cacheplane/render uses JSON Patch (RFC 6902) to apply incremental updates to the UI spec as it streams, enabling skeleton states and progressive rendering.
+Context: Generative UI is most powerful when it streams. A data table with 50 rows should appear progressively — rows rendering as the agent produces them, not after a 3-second wait for the full JSON payload. @ngaf/render uses JSON Patch (RFC 6902) to apply incremental updates to the UI spec as it streams, enabling skeleton states and progressive rendering.
 
 Cover:
 - Why streaming full JSON documents on each update is impractical for large UI specs
@@ -355,7 +355,7 @@ Cover:
 - How the agent emits patch operations instead of full spec replacements
 - Partial-JSON parsing: rendering valid portions of an incomplete JSON stream
 - Skeleton states: how to show placeholder UI while the spec is still arriving
-- Code example: consuming streaming patch events in a @cacheplane/render component (8-12 lines)
+- Code example: consuming streaming patch events in a @ngaf/render component (8-12 lines)
 - Performance: why patch-based updates are O(change) not O(spec size)
 
 Tone: Direct, technical, peer-to-peer. No fluff. Audience is senior Angular engineers.`,
@@ -367,7 +367,7 @@ Tone: Direct, technical, peer-to-peer. No fluff. Audience is senior Angular engi
 
 Chapter topic: State Management & Computed Functions
 
-Context: Static UI specs only go so far. Production generative UI needs computed properties — values derived from other spec fields — and repeat loops for rendering collections. @cacheplane/render's signalStateStore() and computed function support bring dynamic behavior into the spec without requiring custom component logic.
+Context: Static UI specs only go so far. Production generative UI needs computed properties — values derived from other spec fields — and repeat loops for rendering collections. @ngaf/render's signalStateStore() and computed function support bring dynamic behavior into the spec without requiring custom component logic.
 
 Cover:
 - signalStateStore(): agent-managed state that components can read and update
@@ -387,7 +387,7 @@ Tone: Direct, technical, peer-to-peer. No fluff. Audience is senior Angular engi
     id: 'chat',
     title: 'The Enterprise Guide to Agent Chat Interfaces in Angular',
     subtitle: 'Production agent chat UI in days, not sprints',
-    eyebrow: '@cacheplane/chat · Enterprise Guide',
+    eyebrow: '@ngaf/chat · Enterprise Guide',
     coverGradient: 'linear-gradient(135deg, #f3e8ff 0%, #f4f0ff 45%, #eaf3ff 70%, #e6f4ff 100%)',
     outputPdf: 'apps/website/public/whitepapers/chat.pdf',
     outputHtml: 'apps/website/public/whitepapers/chat-preview.html',
@@ -407,7 +407,7 @@ Cover:
 - The hidden costs: accessibility is harder than it looks, streaming token display has edge cases, tool call state machines are complex
 - What "good enough for demo" looks like vs. what production chat UI actually requires
 - The opportunity cost: senior Angular engineers spending sprints on chat chrome instead of agent integration
-- The @cacheplane/chat thesis: ship the chat UI on day one, spend the sprints on what differentiates your product
+- The @ngaf/chat thesis: ship the chat UI on day one, spend the sprints on what differentiates your product
 
 Tone: Direct, technical, peer-to-peer. No fluff. Audience is senior Angular engineers.`,
       },
@@ -418,13 +418,13 @@ Tone: Direct, technical, peer-to-peer. No fluff. Audience is senior Angular engi
 
 Chapter topic: Batteries-Included Components
 
-Context: @cacheplane/chat ships two tiers of components: headless primitives that own behavior and state with no styling opinions, and prebuilt components that are production-ready out of the box. Teams choose the tier that matches their customization needs.
+Context: @ngaf/chat ships two tiers of components: headless primitives that own behavior and state with no styling opinions, and prebuilt components that are production-ready out of the box. Teams choose the tier that matches their customization needs.
 
 Cover:
 - The headless tier: chat-messages, chat-input, chat-tool-calls, chat-interrupt — behavior without styling
 - The prebuilt tier: chat-prebuilt — a full chat interface in one component, zero configuration
 - How the two tiers compose: using prebuilt for 90% of UI, dropping to headless for custom sections
-- The component model: how @cacheplane/chat connects to the agent ref from @cacheplane/langgraph
+- The component model: how @ngaf/chat connects to the agent ref from @ngaf/langgraph
 - Message rendering: how AIMessage[] from the agent signal maps to chat message display
 - Code example:  with an agent ref (6-10 lines)
 - When to use headless vs. prebuilt and how to migrate between them
@@ -438,10 +438,10 @@ Tone: Direct, technical, peer-to-peer. No fluff. Audience is senior Angular engi
 
 Chapter topic: Theming & Design System Integration
 
-Context: Chat UI that looks like a generic chatbot is a product liability. Enterprise teams need chat components that match their design system — typography, color palette, border radius, spacing. @cacheplane/chat uses CSS custom properties and design tokens to make this integration straightforward without requiring component source access.
+Context: Chat UI that looks like a generic chatbot is a product liability. Enterprise teams need chat components that match their design system — typography, color palette, border radius, spacing. @ngaf/chat uses CSS custom properties and design tokens to make this integration straightforward without requiring component source access.
 
 Cover:
-- The CSS custom property API: how @cacheplane/chat exposes design decisions as variables
+- The CSS custom property API: how @ngaf/chat exposes design decisions as variables
 - Design token mapping: aligning chat component tokens with your existing design system tokens
 - Typography integration: font family, size scale, and line height control
 - Color system integration: surface colors, text colors, accent colors, and semantic state colors
@@ -458,13 +458,13 @@ Tone: Direct, technical, peer-to-peer. No fluff. Audience is senior Angular engi
 
 Chapter topic: Generative UI in Chat
 
-Context: The most capable agent chat interfaces don't just display text — they render agent-generated UI directly in the message stream. A financial agent renders a live data table. A scheduling agent renders a booking form. @cacheplane/chat supports both the json-render spec and Google's A2UI spec out of the box, with streaming patch support.
+Context: The most capable agent chat interfaces don't just display text — they render agent-generated UI directly in the message stream. A financial agent renders a live data table. A scheduling agent renders a booking form. @ngaf/chat supports both the json-render spec and Google's A2UI spec out of the box, with streaming patch support.
 
 Cover:
 - How generative UI messages appear in the chat message stream alongside text messages
 - The json-render spec: how agents emit structured UI specs that chat renders automatically
 - Google's A2UI spec: what it adds for agent-specific UI patterns (actions, approvals, structured data)
-- How @cacheplane/chat integrates with @cacheplane/render for component resolution
+- How @ngaf/chat integrates with @ngaf/render for component resolution
 - The registry pattern in a chat context: registering custom components that agents can emit
 - Code example: enabling generative UI in chat with a component registry (8-12 lines)
 - Progressive rendering: how streaming JSON patches create the live UI update effect in chat
@@ -478,7 +478,7 @@ Tone: Direct, technical, peer-to-peer. No fluff. Audience is senior Angular engi
 
 Chapter topic: Debug Tooling
 
-Context: Debugging agent chat is hard. The message stream is opaque, tool call state transitions are fast, and interrupt flows have timing edge cases. chat-debug is @cacheplane/chat's built-in debug panel — a developer overlay that surfaces agent state, raw message events, tool call history, and interrupt state in real time.
+Context: Debugging agent chat is hard. The message stream is opaque, tool call state transitions are fast, and interrupt flows have timing edge cases. chat-debug is @ngaf/chat's built-in debug panel — a developer overlay that surfaces agent state, raw message events, tool call history, and interrupt state in real time.
 
 Cover:
 - What chat-debug shows: raw AIMessage[] state, streaming event log, tool call state machine, interrupt payload
diff --git a/apps/website/src/app/angular/page.tsx b/apps/website/src/app/angular/page.tsx
index be1819f2c..9b450acb7 100644
--- a/apps/website/src/app/angular/page.tsx
+++ b/apps/website/src/app/angular/page.tsx
@@ -7,10 +7,10 @@ import { AngularComparison } from '../../components/landing/angular/AngularCompa
 import { AngularWhitePaperGate } from '../../components/landing/angular/AngularWhitePaperGate';
 import { AngularStackSiblings } from '../../components/landing/angular/AngularStackSiblings';
 import { AngularFooterCTA } from '../../components/landing/angular/AngularFooterCTA';
-import { tokens } from '@cacheplane/design-tokens';
+import { tokens } from '@ngaf/design-tokens';
 
 export const metadata = {
-  title: '@cacheplane/langgraph — Agent Streaming for Angular',
+  title: '@ngaf/langgraph — Agent Streaming for Angular',
   description: 'Ship LangGraph agents in Angular. Signal-native streaming, thread persistence, interrupts, and deterministic testing.',
 };
 
diff --git a/apps/website/src/app/chat/page.tsx b/apps/website/src/app/chat/page.tsx
index 7634128cb..bbe3eec4b 100644
--- a/apps/website/src/app/chat/page.tsx
+++ b/apps/website/src/app/chat/page.tsx
@@ -7,10 +7,10 @@ import { ChatLandingComparison } from '../../components/landing/chat-landing/Cha
 import { ChatLandingWhitePaperGate } from '../../components/landing/chat-landing/ChatLandingWhitePaperGate';
 import { ChatLandingStackSiblings } from '../../components/landing/chat-landing/ChatLandingStackSiblings';
 import { ChatLandingFooterCTA } from '../../components/landing/chat-landing/ChatLandingFooterCTA';
-import { tokens } from '@cacheplane/design-tokens';
+import { tokens } from '@ngaf/design-tokens';
 
 export const metadata = {
-  title: '@cacheplane/chat — Batteries-Included Agent Chat for Angular',
+  title: '@ngaf/chat — Batteries-Included Agent Chat for Angular',
   description: 'Production agent chat UI in days, not sprints. Built on Vercel json-render and Google A2UI specs.',
 };
 
diff --git a/apps/website/src/app/docs/page.tsx b/apps/website/src/app/docs/page.tsx
index 5d2a89fea..ad6aae3b9 100644
--- a/apps/website/src/app/docs/page.tsx
+++ b/apps/website/src/app/docs/page.tsx
@@ -1,6 +1,6 @@
 import Link from 'next/link';
 import { docsConfig } from '../../lib/docs-config';
-import { tokens } from '@cacheplane/design-tokens';
+import { tokens } from '@ngaf/design-tokens';
 
 export default function DocsLandingPage() {
   return (
diff --git a/apps/website/src/app/llms-full.txt/route.ts b/apps/website/src/app/llms-full.txt/route.ts
index 86548098f..08de188b1 100644
--- a/apps/website/src/app/llms-full.txt/route.ts
+++ b/apps/website/src/app/llms-full.txt/route.ts
@@ -41,7 +41,7 @@ export async function GET() {
     [
       '## MCP server',
       '',
-      'npx @cacheplane/langgraph-mcp',
+      'npx @ngaf/langgraph-mcp',
       'Add to Claude Code settings.json, Cursor .cursor/mcp.json, or any MCP-compatible agent.',
     ].join('\n'),
   ];
diff --git a/apps/website/src/app/llms.txt/route.ts b/apps/website/src/app/llms.txt/route.ts
index 9e61835e5..50b3f1b8f 100644
--- a/apps/website/src/app/llms.txt/route.ts
+++ b/apps/website/src/app/llms.txt/route.ts
@@ -10,7 +10,7 @@ function buildLlmsTxt(): string {
     "Angular Agent Framework — the enterprise streaming library for LangChain/LangGraph. Provides agent() — full parity with React's useStream() hook, built on Angular Signals.",
     '',
     '## Install',
-    'npm install @cacheplane/langgraph',
+    'npm install @ngaf/langgraph',
     '',
     '## Key API',
     '- agent(options): AgentRef — call in Angular injection context (constructor or field initializer)',
@@ -22,13 +22,13 @@ function buildLlmsTxt(): string {
     '- MockAgentTransport — deterministic unit testing without a real server',
     '',
     '## Minimal example',
-    "import { agent } from '@cacheplane/langgraph';",
+    "import { agent } from '@ngaf/langgraph';",
     "const chat = agent({ assistantId: 'chat_agent', apiUrl: 'http://localhost:2024' });",
     '// Template: @for (msg of chat.messages(); track $index) { 

{{ msg.content }}

}', "// Submit: chat.submit({ messages: [{ role: 'human', content: input }] })", '', '## MCP server', - 'npx @cacheplane/langgraph-mcp', + 'npx @ngaf/langgraph-mcp', '', '## Full reference', 'https://cacheplane.ai/llms-full.txt', diff --git a/apps/website/src/app/render/page.tsx b/apps/website/src/app/render/page.tsx index aaabfef40..400349705 100644 --- a/apps/website/src/app/render/page.tsx +++ b/apps/website/src/app/render/page.tsx @@ -7,10 +7,10 @@ import { RenderComparison } from '../../components/landing/render/RenderComparis import { RenderWhitePaperGate } from '../../components/landing/render/RenderWhitePaperGate'; import { RenderStackSiblings } from '../../components/landing/render/RenderStackSiblings'; import { RenderFooterCTA } from '../../components/landing/render/RenderFooterCTA'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; export const metadata = { - title: '@cacheplane/render — Generative UI for Angular', + title: '@ngaf/render — Generative UI for Angular', description: 'Agents that render UI without coupling to your frontend. Built on Vercel json-render spec.', }; diff --git a/apps/website/src/app/solutions/[slug]/page.tsx b/apps/website/src/app/solutions/[slug]/page.tsx index 2660ae591..606bbe35f 100644 --- a/apps/website/src/app/solutions/[slug]/page.tsx +++ b/apps/website/src/app/solutions/[slug]/page.tsx @@ -1,5 +1,5 @@ import { notFound } from 'next/navigation'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; import { getSolutionBySlug, getAllSolutionSlugs } from '../../../lib/solutions-data'; import { SolutionHero } from '../../../components/landing/solutions/SolutionHero'; import { SolutionProblem } from '../../../components/landing/solutions/SolutionProblem'; diff --git a/apps/website/src/app/solutions/page.tsx b/apps/website/src/app/solutions/page.tsx index fcea547e6..e512a72c7 100644 --- a/apps/website/src/app/solutions/page.tsx +++ b/apps/website/src/app/solutions/page.tsx @@ -1,4 +1,4 @@ -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; import { SolutionsGrid } from '../../components/landing/solutions/SolutionsGrid'; import { WhitePaperSection } from '../../components/landing/WhitePaperSection'; import { PilotFooterCTA } from '../../components/landing/PilotFooterCTA'; diff --git a/apps/website/src/components/docs/ApiDocRenderer.tsx b/apps/website/src/components/docs/ApiDocRenderer.tsx index e0c09ff71..b76c6b32f 100644 --- a/apps/website/src/components/docs/ApiDocRenderer.tsx +++ b/apps/website/src/components/docs/ApiDocRenderer.tsx @@ -1,4 +1,4 @@ -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; interface ApiParam { name: string; diff --git a/apps/website/src/components/docs/ApiRefTable.tsx b/apps/website/src/components/docs/ApiRefTable.tsx index e15f0722a..bcf2033c9 100644 --- a/apps/website/src/components/docs/ApiRefTable.tsx +++ b/apps/website/src/components/docs/ApiRefTable.tsx @@ -1,4 +1,4 @@ -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; export interface ApiEntry { name: string; diff --git a/apps/website/src/components/docs/CopyPromptButton.tsx b/apps/website/src/components/docs/CopyPromptButton.tsx index e6cb7bb79..b0d241bb2 100644 --- a/apps/website/src/components/docs/CopyPromptButton.tsx +++ b/apps/website/src/components/docs/CopyPromptButton.tsx @@ -1,6 +1,6 @@ 'use client'; import { useState } from 'react'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; interface Props { prompt: string; diff --git a/apps/website/src/components/docs/DocsBreadcrumb.tsx b/apps/website/src/components/docs/DocsBreadcrumb.tsx index 60fd2d2d9..ac94c8a48 100644 --- a/apps/website/src/components/docs/DocsBreadcrumb.tsx +++ b/apps/website/src/components/docs/DocsBreadcrumb.tsx @@ -1,5 +1,5 @@ import Link from 'next/link'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; import { getDocsSection, getLibraryConfig, type LibraryId } from '../../lib/docs-config'; export function DocsBreadcrumb({ library, section, title }: { library: LibraryId; section: string; title: string }) { diff --git a/apps/website/src/components/docs/DocsPrevNext.tsx b/apps/website/src/components/docs/DocsPrevNext.tsx index 2e34402d4..aefd4bafb 100644 --- a/apps/website/src/components/docs/DocsPrevNext.tsx +++ b/apps/website/src/components/docs/DocsPrevNext.tsx @@ -1,5 +1,5 @@ import Link from 'next/link'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; import { getPrevNextPages, type LibraryId } from '../../lib/docs-config'; export function DocsPrevNext({ library, section, slug }: { library: LibraryId; section: string; slug: string }) { diff --git a/apps/website/src/components/docs/DocsSearch.tsx b/apps/website/src/components/docs/DocsSearch.tsx index 1aefb8cac..a51246a22 100644 --- a/apps/website/src/components/docs/DocsSearch.tsx +++ b/apps/website/src/components/docs/DocsSearch.tsx @@ -2,7 +2,7 @@ import { useState, useEffect, useRef, useCallback } from 'react'; import { useRouter } from 'next/navigation'; import { docsConfig, type LibraryId } from '../../lib/docs-config'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; interface SearchablePage { title: string; diff --git a/apps/website/src/components/docs/DocsSidebar.tsx b/apps/website/src/components/docs/DocsSidebar.tsx index 63c2587c2..17821b84b 100644 --- a/apps/website/src/components/docs/DocsSidebar.tsx +++ b/apps/website/src/components/docs/DocsSidebar.tsx @@ -3,7 +3,7 @@ import { useState, useRef, useEffect } from 'react'; import Link from 'next/link'; import { useRouter } from 'next/navigation'; import { docsConfig, getLibraryConfig, type DocsSection, type LibraryId } from '../../lib/docs-config'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; interface Props { activeLibrary: LibraryId; diff --git a/apps/website/src/components/docs/mdx/Callout.tsx b/apps/website/src/components/docs/mdx/Callout.tsx index e79128daa..12d979cf3 100644 --- a/apps/website/src/components/docs/mdx/Callout.tsx +++ b/apps/website/src/components/docs/mdx/Callout.tsx @@ -1,4 +1,4 @@ -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; const CALLOUT_STYLES = { info: { diff --git a/apps/website/src/components/docs/mdx/Card.tsx b/apps/website/src/components/docs/mdx/Card.tsx index 998988cfa..692bbdb47 100644 --- a/apps/website/src/components/docs/mdx/Card.tsx +++ b/apps/website/src/components/docs/mdx/Card.tsx @@ -1,6 +1,6 @@ 'use client'; import Link from 'next/link'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; export function CardGroup({ cols = 2, children }: { cols?: number; children: React.ReactNode }) { return ( diff --git a/apps/website/src/components/docs/mdx/CodeGroup.tsx b/apps/website/src/components/docs/mdx/CodeGroup.tsx index c5772d697..e95f52045 100644 --- a/apps/website/src/components/docs/mdx/CodeGroup.tsx +++ b/apps/website/src/components/docs/mdx/CodeGroup.tsx @@ -1,6 +1,6 @@ 'use client'; import { useState, Children, isValidElement } from 'react'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; export function CodeGroup({ children }: { children: React.ReactNode }) { const [active, setActive] = useState(0); diff --git a/apps/website/src/components/docs/mdx/Steps.tsx b/apps/website/src/components/docs/mdx/Steps.tsx index 6b5c7a5d7..ac27d6785 100644 --- a/apps/website/src/components/docs/mdx/Steps.tsx +++ b/apps/website/src/components/docs/mdx/Steps.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; export function Steps({ children }: { children: React.ReactNode }) { const steps = React.Children.toArray(children); diff --git a/apps/website/src/components/landing/ArchDiagram.tsx b/apps/website/src/components/landing/ArchDiagram.tsx index 63f1c2022..cf44262ce 100644 --- a/apps/website/src/components/landing/ArchDiagram.tsx +++ b/apps/website/src/components/landing/ArchDiagram.tsx @@ -1,7 +1,7 @@ 'use client'; import { useState } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; // ── Node data ─────────────────────────────────────────────────────────────── interface NodeDef { diff --git a/apps/website/src/components/landing/CapabilityCard.tsx b/apps/website/src/components/landing/CapabilityCard.tsx index e439dbbb1..5d34c24e9 100644 --- a/apps/website/src/components/landing/CapabilityCard.tsx +++ b/apps/website/src/components/landing/CapabilityCard.tsx @@ -1,7 +1,7 @@ 'use client'; import { useState } from 'react'; import { motion } from 'framer-motion'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; interface Props { icon: string; diff --git a/apps/website/src/components/landing/ChatFeaturesSection.tsx b/apps/website/src/components/landing/ChatFeaturesSection.tsx index 88e831ad6..a53e208b2 100644 --- a/apps/website/src/components/landing/ChatFeaturesSection.tsx +++ b/apps/website/src/components/landing/ChatFeaturesSection.tsx @@ -76,7 +76,7 @@ async function runGenUI(ctx: ScenarioCtx) { gui.innerHTML = `
- @cacheplane/render · DataTable + @ngaf/render · DataTable
`; bbl.appendChild(gui); @@ -324,7 +324,7 @@ export function ChatFeaturesSection() { {/* Eyebrow + headline */}

- @cacheplane/chat + @ngaf/chat

Every agent UI primitive,
diff --git a/apps/website/src/components/landing/CockpitCTA.tsx b/apps/website/src/components/landing/CockpitCTA.tsx index 3d57aef22..c1d395c57 100644 --- a/apps/website/src/components/landing/CockpitCTA.tsx +++ b/apps/website/src/components/landing/CockpitCTA.tsx @@ -1,6 +1,6 @@ 'use client'; import { motion } from 'framer-motion'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; export function CockpitCTA() { return ( diff --git a/apps/website/src/components/landing/CodeBlock.tsx b/apps/website/src/components/landing/CodeBlock.tsx index c26b3fb03..64857f74b 100644 --- a/apps/website/src/components/landing/CodeBlock.tsx +++ b/apps/website/src/components/landing/CodeBlock.tsx @@ -1,5 +1,5 @@ import { codeToHtml } from 'shiki'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; const EXAMPLE = `// app.config.ts provideAgent({ apiUrl: 'http://localhost:2024' }) diff --git a/apps/website/src/components/landing/DeepAgentsShowcase.tsx b/apps/website/src/components/landing/DeepAgentsShowcase.tsx index 7566fb788..6452c364a 100644 --- a/apps/website/src/components/landing/DeepAgentsShowcase.tsx +++ b/apps/website/src/components/landing/DeepAgentsShowcase.tsx @@ -1,5 +1,5 @@ import { codeToHtml } from 'shiki'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; import { CapabilityCard } from './CapabilityCard'; const CAPABILITIES = [ diff --git a/apps/website/src/components/landing/EmbedFrame.tsx b/apps/website/src/components/landing/EmbedFrame.tsx index f0100d4ec..722ff2fc5 100644 --- a/apps/website/src/components/landing/EmbedFrame.tsx +++ b/apps/website/src/components/landing/EmbedFrame.tsx @@ -1,6 +1,6 @@ 'use client'; import { useState } from 'react'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; interface EmbedFrameProps { src: string; diff --git a/apps/website/src/components/landing/FeatureStrip.tsx b/apps/website/src/components/landing/FeatureStrip.tsx index ee75e9bbd..ab01b1eae 100644 --- a/apps/website/src/components/landing/FeatureStrip.tsx +++ b/apps/website/src/components/landing/FeatureStrip.tsx @@ -1,6 +1,6 @@ 'use client'; import { motion } from 'framer-motion'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; const FEATURES = [ { icon: '\u26A1', title: 'Token-by-token streaming', desc: 'Real-time SSE streaming via FetchStreamTransport. Messages update as each token arrives.' }, diff --git a/apps/website/src/components/landing/GenerativeUIFrame.tsx b/apps/website/src/components/landing/GenerativeUIFrame.tsx index b3a9e1469..dd49436cb 100644 --- a/apps/website/src/components/landing/GenerativeUIFrame.tsx +++ b/apps/website/src/components/landing/GenerativeUIFrame.tsx @@ -1,6 +1,6 @@ 'use client'; import { useEffect, useRef } from 'react'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; export function GenerativeUIFrame() { const frameRef = useRef(null); diff --git a/apps/website/src/components/landing/HeroTwoCol.tsx b/apps/website/src/components/landing/HeroTwoCol.tsx index 8bc8afa90..7a8c0d26f 100644 --- a/apps/website/src/components/landing/HeroTwoCol.tsx +++ b/apps/website/src/components/landing/HeroTwoCol.tsx @@ -1,8 +1,8 @@ import { GenerativeUIFrame } from './GenerativeUIFrame'; import { CopyPromptButton } from '../docs/CopyPromptButton'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; -const SETUP_SNIPPET = 'npm install @cacheplane/langgraph\n\n// app.config.ts\nprovideAgent({ apiUrl: \'http://localhost:2024\' })'; +const SETUP_SNIPPET = 'npm install @ngaf/langgraph\n\n// app.config.ts\nprovideAgent({ apiUrl: \'http://localhost:2024\' })'; function LangChainBadge() { return ( @@ -110,7 +110,7 @@ export async function HeroTwoCol() { fontSize: 12, color: tokens.colors.textMuted, }}> - npm install @cacheplane/langgraph + npm install @ngaf/langgraph

diff --git a/apps/website/src/components/landing/LangGraphShowcase.tsx b/apps/website/src/components/landing/LangGraphShowcase.tsx index 6aa799fb3..e41311422 100644 --- a/apps/website/src/components/landing/LangGraphShowcase.tsx +++ b/apps/website/src/components/landing/LangGraphShowcase.tsx @@ -1,5 +1,5 @@ import { codeToHtml } from 'shiki'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; import { CapabilityCard } from './CapabilityCard'; const CAPABILITIES = [ diff --git a/apps/website/src/components/landing/LibrariesSection.tsx b/apps/website/src/components/landing/LibrariesSection.tsx index d86df0d60..1e6c966e7 100644 --- a/apps/website/src/components/landing/LibrariesSection.tsx +++ b/apps/website/src/components/landing/LibrariesSection.tsx @@ -1,13 +1,13 @@ 'use client'; import { motion } from 'framer-motion'; import Link from 'next/link'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; const LIBRARIES = [ { id: 'angular', tag: 'Agent', - pkg: '@cacheplane/langgraph', + pkg: '@ngaf/langgraph', color: tokens.colors.accent, rgb: '0,64,144', oneLiner: 'Signal-native streaming for LangGraph agents', @@ -18,7 +18,7 @@ const LIBRARIES = [ { id: 'render', tag: 'Gen UI', - pkg: '@cacheplane/render', + pkg: '@ngaf/render', color: tokens.colors.renderGreen, rgb: '26,122,64', oneLiner: 'Agents that render UI — without coupling to your frontend', @@ -29,7 +29,7 @@ const LIBRARIES = [ { id: 'chat', tag: 'Chat', - pkg: '@cacheplane/chat', + pkg: '@ngaf/chat', color: tokens.colors.chatPurple, rgb: '90,0,200', oneLiner: 'Batteries-included agent chat — fully featured from day one', diff --git a/apps/website/src/components/landing/PilotSolution.tsx b/apps/website/src/components/landing/PilotSolution.tsx index 43b0bae12..1adfa109f 100644 --- a/apps/website/src/components/landing/PilotSolution.tsx +++ b/apps/website/src/components/landing/PilotSolution.tsx @@ -1,7 +1,7 @@ 'use client'; import { motion } from 'framer-motion'; import Link from 'next/link'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; const STEPS = [ { diff --git a/apps/website/src/components/landing/StatsStrip.tsx b/apps/website/src/components/landing/StatsStrip.tsx index a823a0f29..5f897558f 100644 --- a/apps/website/src/components/landing/StatsStrip.tsx +++ b/apps/website/src/components/landing/StatsStrip.tsx @@ -1,6 +1,6 @@ 'use client'; import { motion } from 'framer-motion'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; const STATS = [ { value: '14+', label: 'Capabilities' }, diff --git a/apps/website/src/components/landing/TheStack.tsx b/apps/website/src/components/landing/TheStack.tsx index 1d0c2d4c5..aacb4a9ec 100644 --- a/apps/website/src/components/landing/TheStack.tsx +++ b/apps/website/src/components/landing/TheStack.tsx @@ -1,13 +1,13 @@ 'use client'; import { motion } from 'framer-motion'; import Link from 'next/link'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; const LIBRARIES = [ { id: 'angular', tag: 'Agent', - pkg: '@cacheplane/langgraph', + pkg: '@ngaf/langgraph', color: tokens.colors.accent, rgb: '0,64,144', headline: 'The reactive bridge to LangGraph', @@ -19,7 +19,7 @@ const LIBRARIES = [ { id: 'render', tag: 'Gen UI', - pkg: '@cacheplane/render', + pkg: '@ngaf/render', color: tokens.colors.renderGreen, rgb: '26,122,64', headline: 'Agents that render UI \u2014 on open standards', @@ -31,7 +31,7 @@ const LIBRARIES = [ { id: 'chat', tag: 'Chat', - pkg: '@cacheplane/chat', + pkg: '@ngaf/chat', color: tokens.colors.chatPurple, rgb: '90,0,200', headline: 'Production chat UI in days, not sprints', diff --git a/apps/website/src/components/landing/ValueProps.tsx b/apps/website/src/components/landing/ValueProps.tsx index 01df508d5..d36bced76 100644 --- a/apps/website/src/components/landing/ValueProps.tsx +++ b/apps/website/src/components/landing/ValueProps.tsx @@ -1,5 +1,5 @@ import { codeToHtml } from 'shiki'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; import { ValuePropsTabs } from './ValuePropsTabs'; const TAB_DATA = [ diff --git a/apps/website/src/components/landing/ValuePropsTabs.tsx b/apps/website/src/components/landing/ValuePropsTabs.tsx index e82ede183..0dd069b7c 100644 --- a/apps/website/src/components/landing/ValuePropsTabs.tsx +++ b/apps/website/src/components/landing/ValuePropsTabs.tsx @@ -1,7 +1,7 @@ 'use client'; import { useState } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; interface Tab { id: string; diff --git a/apps/website/src/components/landing/angular/AngularCodeShowcase.tsx b/apps/website/src/components/landing/angular/AngularCodeShowcase.tsx index ef0a5098a..81bcf0dad 100644 --- a/apps/website/src/components/landing/angular/AngularCodeShowcase.tsx +++ b/apps/website/src/components/landing/angular/AngularCodeShowcase.tsx @@ -1,7 +1,7 @@ -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; import { HighlightedCode } from '../HighlightedCode'; -const SNIPPET_1 = `import { agent } from '@cacheplane/langgraph'; +const SNIPPET_1 = `import { agent } from '@ngaf/langgraph'; const chat = agent({ graphId: 'my-agent', @@ -13,7 +13,7 @@ chat.messages(); // Signal chat.isStreaming(); // Signal chat.interrupt(); // Signal`; -const SNIPPET_2 = `import { provideAgent } from '@cacheplane/langgraph'; +const SNIPPET_2 = `import { provideAgent } from '@ngaf/langgraph'; provideAgent({ graphId: 'my-agent', diff --git a/apps/website/src/components/landing/angular/AngularComparison.tsx b/apps/website/src/components/landing/angular/AngularComparison.tsx index ccbfb8978..86a9f123a 100644 --- a/apps/website/src/components/landing/angular/AngularComparison.tsx +++ b/apps/website/src/components/landing/angular/AngularComparison.tsx @@ -1,7 +1,7 @@ // apps/website/src/components/landing/angular/AngularComparison.tsx 'use client'; import { motion } from 'framer-motion'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; const ROWS = [ { capability: 'SSE streaming', theirs: 'Raw Client + for-await loop', ours: 'Signal-native via agent()' }, @@ -42,7 +42,7 @@ export function AngularComparison() { fontSize: 'clamp(26px,3.5vw,42px)', fontWeight: 800, lineHeight: 1.1, color: tokens.colors.textPrimary, }}> - @langchain/langgraph-sdk vs @cacheplane/langgraph + @langchain/langgraph-sdk vs @ngaf/langgraph @@ -62,7 +62,7 @@ export function AngularComparison() { display: 'grid', gridTemplateColumns: 'minmax(100px, 1fr) minmax(120px, 1fr) minmax(120px, 1fr)', background: 'rgba(255,255,255,.3)', borderBottom: `1px solid ${tokens.glass.border}`, padding: '14px 24px', }}> - {['Capability', '@langchain/langgraph-sdk', '@cacheplane/langgraph'].map((h, i) => ( + {['Capability', '@langchain/langgraph-sdk', '@ngaf/langgraph'].map((h, i) => (
- @cacheplane/langgraph + @ngaf/langgraph diff --git a/apps/website/src/components/landing/angular/AngularProblemSolution.tsx b/apps/website/src/components/landing/angular/AngularProblemSolution.tsx index 9618c7346..8d7413e65 100644 --- a/apps/website/src/components/landing/angular/AngularProblemSolution.tsx +++ b/apps/website/src/components/landing/angular/AngularProblemSolution.tsx @@ -1,7 +1,7 @@ // apps/website/src/components/landing/angular/AngularProblemSolution.tsx 'use client'; import { motion } from 'framer-motion'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; const PAIN_POINTS = [ 'Raw Client + for-await SSE loop — no Angular integration', @@ -69,7 +69,7 @@ export function AngularProblemSolution() { fontSize: '0.58rem', fontWeight: 700, textTransform: 'uppercase', letterSpacing: '0.07em', padding: '2px 9px', borderRadius: 5, color: '#fff', background: '#1a7a40', marginBottom: 16, }}> - With @cacheplane/langgraph + With @ngaf/langgraph

- Incrementally building chat vs @cacheplane/chat + Incrementally building chat vs @ngaf/chat

@@ -62,7 +62,7 @@ export function ChatLandingComparison() { display: 'grid', gridTemplateColumns: 'minmax(100px, 1fr) minmax(120px, 1fr) minmax(120px, 1fr)', background: 'rgba(255,255,255,.3)', borderBottom: `1px solid ${tokens.glass.border}`, padding: '14px 24px', }}> - {['Capability', 'Build Incrementally', '@cacheplane/chat'].map((h, i) => ( + {['Capability', 'Build Incrementally', '@ngaf/chat'].map((h, i) => (
- @cacheplane/chat + @ngaf/chat diff --git a/apps/website/src/components/landing/chat-landing/ChatLandingProblemSolution.tsx b/apps/website/src/components/landing/chat-landing/ChatLandingProblemSolution.tsx index f2dc4432b..755a05413 100644 --- a/apps/website/src/components/landing/chat-landing/ChatLandingProblemSolution.tsx +++ b/apps/website/src/components/landing/chat-landing/ChatLandingProblemSolution.tsx @@ -1,7 +1,7 @@ // apps/website/src/components/landing/chat-landing/ChatLandingProblemSolution.tsx 'use client'; import { motion } from 'framer-motion'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; const PAIN_POINTS = [ 'Message rendering from scratch', @@ -14,7 +14,7 @@ const PAIN_POINTS = [ const SOLUTIONS = [ 'Pre-built accessible components', - 'Vercel json-render spec via @cacheplane/render', + 'Vercel json-render spec via @ngaf/render', 'Google A2UI spec — 18 built-in components, v0.9 CheckRule validation', 'Consumer-extensible action handlers for both specs', 'Debug tooling + CSS custom property theming included', @@ -44,7 +44,7 @@ export function ChatLandingProblemSolution() { fontSize: '0.58rem', fontWeight: 700, textTransform: 'uppercase', letterSpacing: '0.07em', padding: '2px 9px', borderRadius: 5, color: '#fff', background: '#b71c1c', marginBottom: 16, }}> - Without @cacheplane/chat + Without @ngaf/chat

- With @cacheplane/chat + With @ngaf/chat

- Hardcoded agent UI vs @cacheplane/render + Hardcoded agent UI vs @ngaf/render

@@ -61,7 +61,7 @@ export function RenderComparison() { display: 'grid', gridTemplateColumns: 'minmax(100px, 1fr) minmax(120px, 1fr) minmax(120px, 1fr)', background: 'rgba(255,255,255,.3)', borderBottom: `1px solid ${tokens.glass.border}`, padding: '14px 24px', }}> - {['Capability', 'Hardcoded Approach', '@cacheplane/render'].map((h, i) => ( + {['Capability', 'Hardcoded Approach', '@ngaf/render'].map((h, i) => (
- @cacheplane/render + @ngaf/render @@ -52,7 +52,7 @@ export function RenderHero() { fontFamily: 'Inter, sans-serif', fontSize: 18, color: tokens.colors.textSecondary, maxWidth: '52ch', margin: '0 auto', lineHeight: 1.6, marginBottom: '2rem', }}> - Built on Vercel's json-render spec and Google's A2UI protocol — open standards you already trust. @cacheplane/render brings both to Angular with streaming JSON patches, component registries, and signal-native state. + Built on Vercel's json-render spec and Google's A2UI protocol — open standards you already trust. @ngaf/render brings both to Angular with streaming JSON patches, component registries, and signal-native state. - Without @cacheplane/render + Without @ngaf/render

- With @cacheplane/render + With @ngaf/render

= { diff --git a/apps/website/src/components/landing/solutions/SolutionHero.tsx b/apps/website/src/components/landing/solutions/SolutionHero.tsx index f68116f40..19317cd96 100644 --- a/apps/website/src/components/landing/solutions/SolutionHero.tsx +++ b/apps/website/src/components/landing/solutions/SolutionHero.tsx @@ -1,7 +1,7 @@ 'use client'; import { motion } from 'framer-motion'; import Link from 'next/link'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; import type { SolutionConfig } from '../../../lib/solutions-data'; interface SolutionHeroProps { diff --git a/apps/website/src/components/landing/solutions/SolutionProblem.tsx b/apps/website/src/components/landing/solutions/SolutionProblem.tsx index a8245c1ac..c87d7d32f 100644 --- a/apps/website/src/components/landing/solutions/SolutionProblem.tsx +++ b/apps/website/src/components/landing/solutions/SolutionProblem.tsx @@ -1,6 +1,6 @@ 'use client'; import { motion } from 'framer-motion'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; import type { SolutionPainPoint } from '../../../lib/solutions-data'; interface SolutionProblemProps { diff --git a/apps/website/src/components/landing/solutions/SolutionProofPoints.tsx b/apps/website/src/components/landing/solutions/SolutionProofPoints.tsx index 7620d1fc3..06f03eaa1 100644 --- a/apps/website/src/components/landing/solutions/SolutionProofPoints.tsx +++ b/apps/website/src/components/landing/solutions/SolutionProofPoints.tsx @@ -1,6 +1,6 @@ 'use client'; import { motion } from 'framer-motion'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; import type { ProofPoint } from '../../../lib/solutions-data'; interface SolutionProofPointsProps { diff --git a/apps/website/src/components/landing/solutions/SolutionsGrid.tsx b/apps/website/src/components/landing/solutions/SolutionsGrid.tsx index 0eb0e8764..f76592a0c 100644 --- a/apps/website/src/components/landing/solutions/SolutionsGrid.tsx +++ b/apps/website/src/components/landing/solutions/SolutionsGrid.tsx @@ -1,7 +1,7 @@ 'use client'; import { motion } from 'framer-motion'; import Link from 'next/link'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; import { SOLUTIONS } from '../../../lib/solutions-data'; export function SolutionsGrid() { diff --git a/apps/website/src/components/pricing/CompareTable.tsx b/apps/website/src/components/pricing/CompareTable.tsx index 5436c2daa..97258513e 100644 --- a/apps/website/src/components/pricing/CompareTable.tsx +++ b/apps/website/src/components/pricing/CompareTable.tsx @@ -1,5 +1,5 @@ 'use client'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; const ROWS = [ { feature: 'npm install', oss: true, seat: true, app: true, enterprise: true }, diff --git a/apps/website/src/components/pricing/LeadForm.tsx b/apps/website/src/components/pricing/LeadForm.tsx index 1ad38269d..39b1ab70f 100644 --- a/apps/website/src/components/pricing/LeadForm.tsx +++ b/apps/website/src/components/pricing/LeadForm.tsx @@ -1,6 +1,6 @@ 'use client'; import { useState } from 'react'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; export function LeadForm() { const [status, setStatus] = useState<'idle' | 'sending' | 'sent' | 'error'>('idle'); diff --git a/apps/website/src/components/pricing/PricingGrid.tsx b/apps/website/src/components/pricing/PricingGrid.tsx index 0d5b78fdb..b1cd2567a 100644 --- a/apps/website/src/components/pricing/PricingGrid.tsx +++ b/apps/website/src/components/pricing/PricingGrid.tsx @@ -1,5 +1,5 @@ 'use client'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; const PLANS = [ { @@ -9,7 +9,7 @@ const PLANS = [ features: ['MIT License', 'All libraries', 'Commercial use welcome', 'Community support'], highlight: false, cta: 'Get Started', - ctaHref: 'https://www.npmjs.com/package/@cacheplane/langgraph', + ctaHref: 'https://www.npmjs.com/package/@ngaf/langgraph', }, { name: 'Enterprise', diff --git a/apps/website/src/components/shared/AnnouncementToast.tsx b/apps/website/src/components/shared/AnnouncementToast.tsx index a4f559023..6c9ea7cef 100644 --- a/apps/website/src/components/shared/AnnouncementToast.tsx +++ b/apps/website/src/components/shared/AnnouncementToast.tsx @@ -1,7 +1,7 @@ 'use client'; import { useState, useEffect } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; /** * Bump this date to re-show the toast for all users. diff --git a/apps/website/src/components/shared/Footer.tsx b/apps/website/src/components/shared/Footer.tsx index 3f6431bd4..a0ca1391c 100644 --- a/apps/website/src/components/shared/Footer.tsx +++ b/apps/website/src/components/shared/Footer.tsx @@ -2,7 +2,7 @@ import { useState } from 'react'; import Link from 'next/link'; import { motion } from 'framer-motion'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; function GitHubIcon() { return ( @@ -120,7 +120,7 @@ export function Footer() { aria-label="GitHub"> - (e.currentTarget.style.color = tokens.colors.textSecondary)}> Getting Started - (e.currentTarget.style.color = tokens.colors.accent)} diff --git a/apps/website/src/components/shared/InstallStrip.tsx b/apps/website/src/components/shared/InstallStrip.tsx index ed68999ab..e059e952f 100644 --- a/apps/website/src/components/shared/InstallStrip.tsx +++ b/apps/website/src/components/shared/InstallStrip.tsx @@ -1,8 +1,8 @@ 'use client'; import { useState } from 'react'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; -const CMD = 'npm install @cacheplane/langgraph'; +const CMD = 'npm install @ngaf/langgraph'; export function InstallStrip() { const [copied, setCopied] = useState(false); diff --git a/apps/website/src/components/shared/Nav.tsx b/apps/website/src/components/shared/Nav.tsx index d10bde108..e82c91660 100644 --- a/apps/website/src/components/shared/Nav.tsx +++ b/apps/website/src/components/shared/Nav.tsx @@ -2,7 +2,7 @@ import { useState, useEffect } from 'react'; import Link from 'next/link'; import { usePathname } from 'next/navigation'; -import { tokens } from '@cacheplane/design-tokens'; +import { tokens } from '@ngaf/design-tokens'; import { docsConfig } from '../../lib/docs-config'; const links = [ diff --git a/apps/website/src/lib/solutions-data.ts b/apps/website/src/lib/solutions-data.ts index cb14dcf4e..87ababb3f 100644 --- a/apps/website/src/lib/solutions-data.ts +++ b/apps/website/src/lib/solutions-data.ts @@ -57,17 +57,17 @@ export const SOLUTIONS: SolutionConfig[] = [ architectureLayers: [ { library: 'Agent', - pkg: '@cacheplane/langgraph', + pkg: '@ngaf/langgraph', role: 'Signal-native streaming with first-class interrupt support. Every agent action can require human approval before execution. Thread persistence gives you a complete, immutable history of every decision.', }, { library: 'Render', - pkg: '@cacheplane/render', + pkg: '@ngaf/render', role: 'Approval workflows rendered as structured UI — not chat messages. The agent proposes an action, renders a confirmation card, and waits for the human gate before proceeding.', }, { library: 'Chat', - pkg: '@cacheplane/chat', + pkg: '@ngaf/chat', role: 'Debug overlay shows every tool call, interrupt, and state transition. Your compliance team can review exactly what happened, when, and why — in a UI they can understand.', }, ], @@ -106,17 +106,17 @@ export const SOLUTIONS: SolutionConfig[] = [ architectureLayers: [ { library: 'Agent', - pkg: '@cacheplane/langgraph', + pkg: '@ngaf/langgraph', role: 'Streams query results token-by-token as the LangGraph agent reasons over your data. Thread persistence means users can refine questions without re-running expensive queries.', }, { library: 'Render', - pkg: '@cacheplane/render', + pkg: '@ngaf/render', role: 'The agent emits chart specs, data tables, and KPI cards as structured render specs. Your Angular components render them with streaming JSON patches — live-updating visualizations as data arrives.', }, { library: 'Chat', - pkg: '@cacheplane/chat', + pkg: '@ngaf/chat', role: 'Pre-built generative UI panel renders charts and tables inline with the conversation. Users ask follow-up questions and see updated visualizations without leaving the chat.', }, ], @@ -155,17 +155,17 @@ export const SOLUTIONS: SolutionConfig[] = [ architectureLayers: [ { library: 'Agent', - pkg: '@cacheplane/langgraph', + pkg: '@ngaf/langgraph', role: 'LangGraph interrupts let the agent pause before sensitive actions — refunds, account changes, escalations. Thread persistence preserves the full conversation across bot-to-human handoffs.', }, { library: 'Render', - pkg: '@cacheplane/render', + pkg: '@ngaf/render', role: 'The agent renders structured UI — order summaries, refund confirmations, knowledge base cards — instead of dumping text. Customers see clean, actionable information.', }, { library: 'Chat', - pkg: '@cacheplane/chat', + pkg: '@ngaf/chat', role: 'Production-ready chat UI with streaming messages, tool call visibility, and interrupt panels. When the agent escalates, the human agent sees the full debug overlay with every step the AI took.', }, ], diff --git a/apps/website/tsconfig.json b/apps/website/tsconfig.json index bbf425fd5..6bd8e4b02 100644 --- a/apps/website/tsconfig.json +++ b/apps/website/tsconfig.json @@ -20,12 +20,12 @@ "baseUrl": ".", "paths": { "@/*": ["./src/*"], - "@cacheplane/cockpit-docs": ["../../libs/cockpit-docs/src/index.ts"], - "@cacheplane/cockpit-registry": [ + "@ngaf/cockpit-docs": ["../../libs/cockpit-docs/src/index.ts"], + "@ngaf/cockpit-registry": [ "../../libs/cockpit-registry/src/index.ts" ], - "@cacheplane/cockpit-shell": ["../../libs/cockpit-shell/src/index.ts"], - "@cacheplane/design-tokens": ["../../libs/design-tokens/src/index.ts"] + "@ngaf/cockpit-shell": ["../../libs/cockpit-shell/src/index.ts"], + "@ngaf/design-tokens": ["../../libs/design-tokens/src/index.ts"] } }, "include": [ diff --git a/cockpit/ag-ui/streaming/angular/package.json b/cockpit/ag-ui/streaming/angular/package.json index 75c88791d..150e18d96 100644 --- a/cockpit/ag-ui/streaming/angular/package.json +++ b/cockpit/ag-ui/streaming/angular/package.json @@ -1,9 +1,9 @@ { - "name": "@cacheplane/cockpit-ag-ui-streaming-angular", + "name": "@ngaf/cockpit-ag-ui-streaming-angular", "version": "0.0.1", "peerDependencies": { - "@cacheplane/ag-ui": "^0.0.1", - "@cacheplane/chat": "^0.0.1" + "@ngaf/ag-ui": "^0.0.1", + "@ngaf/chat": "^0.0.1" }, "license": "MIT", "sideEffects": false diff --git a/cockpit/ag-ui/streaming/angular/prompts/streaming.md b/cockpit/ag-ui/streaming/angular/prompts/streaming.md index 197577a9e..ea995101f 100644 --- a/cockpit/ag-ui/streaming/angular/prompts/streaming.md +++ b/cockpit/ag-ui/streaming/angular/prompts/streaming.md @@ -1,6 +1,6 @@ # AG-UI Streaming (Angular) -This capability demonstrates real-time token streaming from an AG-UI compatible agent using the `@cacheplane/chat` Angular component library. The example shows how to wire the `AG_UI_AGENT` injection token (provided by `provideAgUiAgent`) into the `` host component and compose ``, ``, and `` to deliver a responsive, streaming chat experience. +This capability demonstrates real-time token streaming from an AG-UI compatible agent using the `@ngaf/chat` Angular component library. The example shows how to wire the `AG_UI_AGENT` injection token (provided by `provideAgUiAgent`) into the `` host component and compose ``, ``, and `` to deliver a responsive, streaming chat experience. Key components used: ``, ``, ``, ``. The `provideAgUiAgent` provider handles SSE event processing from the AG-UI streaming endpoint, and the chat components subscribe reactively without any manual subscription management. diff --git a/cockpit/ag-ui/streaming/angular/src/app/app.config.ts b/cockpit/ag-ui/streaming/angular/src/app/app.config.ts index 4783883c9..2a6b3cbe6 100644 --- a/cockpit/ag-ui/streaming/angular/src/app/app.config.ts +++ b/cockpit/ag-ui/streaming/angular/src/app/app.config.ts @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT import { ApplicationConfig } from '@angular/core'; -import { provideFakeAgUiAgent } from '@cacheplane/ag-ui'; +import { provideFakeAgUiAgent } from '@ngaf/ag-ui'; export const appConfig: ApplicationConfig = { providers: [ diff --git a/cockpit/ag-ui/streaming/angular/src/app/streaming.component.ts b/cockpit/ag-ui/streaming/angular/src/app/streaming.component.ts index 1ddbe780f..49e7fdc3d 100644 --- a/cockpit/ag-ui/streaming/angular/src/app/streaming.component.ts +++ b/cockpit/ag-ui/streaming/angular/src/app/streaming.component.ts @@ -1,11 +1,11 @@ // SPDX-License-Identifier: MIT import { Component, inject } from '@angular/core'; -import { ChatComponent } from '@cacheplane/chat'; -import { AG_UI_AGENT } from '@cacheplane/ag-ui'; -import { ExampleChatLayoutComponent } from '@cacheplane/example-layouts'; +import { ChatComponent } from '@ngaf/chat'; +import { AG_UI_AGENT } from '@ngaf/ag-ui'; +import { ExampleChatLayoutComponent } from '@ngaf/example-layouts'; /** - * Streaming demo — simplest possible @cacheplane/chat integration with AG-UI. + * Streaming demo — simplest possible @ngaf/chat integration with AG-UI. * * Injects the AG_UI_AGENT token (provided by provideAgUiAgent) and passes it * to the prebuilt composition. The composition handles message rendering, diff --git a/cockpit/chat/a2ui/angular/src/app/a2ui.component.ts b/cockpit/chat/a2ui/angular/src/app/a2ui.component.ts index 400bf855a..14b3e8dc6 100644 --- a/cockpit/chat/a2ui/angular/src/app/a2ui.component.ts +++ b/cockpit/chat/a2ui/angular/src/app/a2ui.component.ts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT import { Component } from '@angular/core'; -import { ChatComponent, a2uiBasicCatalog } from '@cacheplane/chat'; -import { agent, toAgent } from '@cacheplane/langgraph'; +import { ChatComponent, a2uiBasicCatalog } from '@ngaf/chat'; +import { agent, toAgent } from '@ngaf/langgraph'; import { environment } from '../environments/environment'; @Component({ diff --git a/cockpit/chat/a2ui/angular/src/app/app.config.ts b/cockpit/chat/a2ui/angular/src/app/app.config.ts index 0ef67aee5..be14b0243 100644 --- a/cockpit/chat/a2ui/angular/src/app/app.config.ts +++ b/cockpit/chat/a2ui/angular/src/app/app.config.ts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; -import { provideChat } from '@cacheplane/chat'; +import { provideAgent } from '@ngaf/langgraph'; +import { provideChat } from '@ngaf/chat'; import { environment } from '../environments/environment'; export const appConfig: ApplicationConfig = { diff --git a/cockpit/chat/a2ui/python/docs/guide.md b/cockpit/chat/a2ui/python/docs/guide.md index efbd71f33..a77ed5152 100644 --- a/cockpit/chat/a2ui/python/docs/guide.md +++ b/cockpit/chat/a2ui/python/docs/guide.md @@ -1,4 +1,4 @@ -# A2UI Surfaces with @cacheplane/chat +# A2UI Surfaces with @ngaf/chat Render agent-driven interactive UI using the A2UI (Agent-to-UI) protocol. @@ -8,7 +8,7 @@ The agent streams JSONL messages that build surfaces from the built-in Add A2UI surface rendering to your chat interface using `a2uiBasicCatalog()` -from `@cacheplane/chat`. Pass it to `ChatComponent` via the `[views]` input +from `@ngaf/chat`. Pass it to `ChatComponent` via the `[views]` input to enable A2UI surface rendering with automatic event routing. @@ -18,8 +18,8 @@ to enable A2UI surface rendering with automatic event routing. Import `a2uiBasicCatalog()` and pass it via the `[views]` input: ```typescript -import { ChatComponent, a2uiBasicCatalog } from '@cacheplane/chat'; -import { agent } from '@cacheplane/langgraph'; +import { ChatComponent, a2uiBasicCatalog } from '@ngaf/chat'; +import { agent } from '@ngaf/langgraph'; @Component({ selector: 'app-a2ui', diff --git a/cockpit/chat/debug/angular/package.json b/cockpit/chat/debug/angular/package.json index e21713044..ed333e02c 100644 --- a/cockpit/chat/debug/angular/package.json +++ b/cockpit/chat/debug/angular/package.json @@ -1,9 +1,9 @@ { - "name": "@cacheplane/cockpit-chat-debug-angular", + "name": "@ngaf/cockpit-chat-debug-angular", "version": "0.0.1", "peerDependencies": { - "@cacheplane/chat": "^0.0.1", - "@cacheplane/langgraph": "^0.0.1", + "@ngaf/chat": "^0.0.1", + "@ngaf/langgraph": "^0.0.1", "@langchain/langgraph-sdk": "^0.0.36" }, "license": "MIT", diff --git a/cockpit/chat/debug/angular/src/app/app.config.ts b/cockpit/chat/debug/angular/src/app/app.config.ts index 0ef67aee5..be14b0243 100644 --- a/cockpit/chat/debug/angular/src/app/app.config.ts +++ b/cockpit/chat/debug/angular/src/app/app.config.ts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; -import { provideChat } from '@cacheplane/chat'; +import { provideAgent } from '@ngaf/langgraph'; +import { provideChat } from '@ngaf/chat'; import { environment } from '../environments/environment'; export const appConfig: ApplicationConfig = { diff --git a/cockpit/chat/debug/angular/src/app/debug.component.ts b/cockpit/chat/debug/angular/src/app/debug.component.ts index 0582a1286..ca5fbcb7b 100644 --- a/cockpit/chat/debug/angular/src/app/debug.component.ts +++ b/cockpit/chat/debug/angular/src/app/debug.component.ts @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT import { Component } from '@angular/core'; -import { ChatDebugComponent } from '@cacheplane/chat'; -import { agent, toAgent } from '@cacheplane/langgraph'; -import { ExampleChatLayoutComponent } from '@cacheplane/example-layouts'; +import { ChatDebugComponent } from '@ngaf/chat'; +import { agent, toAgent } from '@ngaf/langgraph'; +import { ExampleChatLayoutComponent } from '@ngaf/example-layouts'; import { environment } from '../environments/environment'; /** diff --git a/cockpit/chat/debug/python/docs/guide.md b/cockpit/chat/debug/python/docs/guide.md index b31d45a86..0f20d4dce 100644 --- a/cockpit/chat/debug/python/docs/guide.md +++ b/cockpit/chat/debug/python/docs/guide.md @@ -1,4 +1,4 @@ -# Chat Debug with @cacheplane/chat +# Chat Debug with @ngaf/chat Inspect conversation state, diffs, and graph execution using the @@ -8,7 +8,7 @@ state inspector, and diff viewer for development. Add a debug panel to your chat interface using `ChatDebugComponent` -from `@cacheplane/chat`. This replaces `ChatComponent` and provides +from `@ngaf/chat`. This replaces `ChatComponent` and provides full development inspection capabilities. @@ -19,7 +19,7 @@ Use `ChatDebugComponent` instead of `ChatComponent` for the full debug experience: ```typescript -import { ChatDebugComponent } from '@cacheplane/chat'; +import { ChatDebugComponent } from '@ngaf/chat'; ``` diff --git a/cockpit/chat/debug/python/package.json b/cockpit/chat/debug/python/package.json index d32ec20c8..7357f76df 100644 --- a/cockpit/chat/debug/python/package.json +++ b/cockpit/chat/debug/python/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/cockpit-chat-debug-python", + "name": "@ngaf/cockpit-chat-debug-python", "version": "0.0.1", "license": "MIT", "sideEffects": false diff --git a/cockpit/chat/generative-ui/angular/package.json b/cockpit/chat/generative-ui/angular/package.json index 94e9fdf7a..ef4cb471b 100644 --- a/cockpit/chat/generative-ui/angular/package.json +++ b/cockpit/chat/generative-ui/angular/package.json @@ -1,9 +1,9 @@ { - "name": "@cacheplane/cockpit-chat-generative-ui-angular", + "name": "@ngaf/cockpit-chat-generative-ui-angular", "version": "0.0.1", "peerDependencies": { - "@cacheplane/chat": "^0.0.1", - "@cacheplane/langgraph": "^0.0.1", + "@ngaf/chat": "^0.0.1", + "@ngaf/langgraph": "^0.0.1", "@langchain/langgraph-sdk": "^0.0.36" }, "license": "MIT", diff --git a/cockpit/chat/generative-ui/angular/src/app/app.config.ts b/cockpit/chat/generative-ui/angular/src/app/app.config.ts index 0ef67aee5..be14b0243 100644 --- a/cockpit/chat/generative-ui/angular/src/app/app.config.ts +++ b/cockpit/chat/generative-ui/angular/src/app/app.config.ts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; -import { provideChat } from '@cacheplane/chat'; +import { provideAgent } from '@ngaf/langgraph'; +import { provideChat } from '@ngaf/chat'; import { environment } from '../environments/environment'; export const appConfig: ApplicationConfig = { diff --git a/cockpit/chat/generative-ui/angular/src/app/generative-ui.component.ts b/cockpit/chat/generative-ui/angular/src/app/generative-ui.component.ts index 66de12e54..ff2da2194 100644 --- a/cockpit/chat/generative-ui/angular/src/app/generative-ui.component.ts +++ b/cockpit/chat/generative-ui/angular/src/app/generative-ui.component.ts @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT import { Component } from '@angular/core'; -import { ChatComponent, views } from '@cacheplane/chat'; -import { agent, toAgent } from '@cacheplane/langgraph'; -import { ExampleChatLayoutComponent } from '@cacheplane/example-layouts'; +import { ChatComponent, views } from '@ngaf/chat'; +import { agent, toAgent } from '@ngaf/langgraph'; +import { ExampleChatLayoutComponent } from '@ngaf/example-layouts'; import { environment } from '../environments/environment'; import { StatCardComponent } from './views/stat-card.component'; diff --git a/cockpit/chat/generative-ui/angular/src/app/views/container.component.ts b/cockpit/chat/generative-ui/angular/src/app/views/container.component.ts index 6ac5a098a..2065775ea 100644 --- a/cockpit/chat/generative-ui/angular/src/app/views/container.component.ts +++ b/cockpit/chat/generative-ui/angular/src/app/views/container.component.ts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT import { Component, computed, input } from '@angular/core'; import type { Spec } from '@json-render/core'; -import { RenderElementComponent } from '@cacheplane/render'; +import { RenderElementComponent } from '@ngaf/render'; @Component({ selector: 'app-container', diff --git a/cockpit/chat/generative-ui/angular/src/app/views/dashboard-grid.component.ts b/cockpit/chat/generative-ui/angular/src/app/views/dashboard-grid.component.ts index ef67bfce0..81a14ef97 100644 --- a/cockpit/chat/generative-ui/angular/src/app/views/dashboard-grid.component.ts +++ b/cockpit/chat/generative-ui/angular/src/app/views/dashboard-grid.component.ts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT import { Component, input } from '@angular/core'; import type { Spec } from '@json-render/core'; -import { RenderElementComponent } from '@cacheplane/render'; +import { RenderElementComponent } from '@ngaf/render'; @Component({ selector: 'app-dashboard-grid', diff --git a/cockpit/chat/generative-ui/python/docs/guide.md b/cockpit/chat/generative-ui/python/docs/guide.md index 8a6c0ce60..c9d918e86 100644 --- a/cockpit/chat/generative-ui/python/docs/guide.md +++ b/cockpit/chat/generative-ui/python/docs/guide.md @@ -8,7 +8,7 @@ parses it incrementally, and renders Angular components in real time. Add generative UI to your chat interface using `views()` from -`@cacheplane/chat`. Register view components and pass them to +`@ngaf/chat`. Register view components and pass them to `ChatComponent` via the `[views]` input. @@ -25,7 +25,7 @@ rendered spec. Use the `views()` function to map spec type names to Angular components: ```typescript -import { views } from '@cacheplane/chat'; +import { views } from '@ngaf/chat'; const myViews = views({ weather_card: WeatherCardComponent, diff --git a/cockpit/chat/generative-ui/python/package.json b/cockpit/chat/generative-ui/python/package.json index 1241e24e7..950875f99 100644 --- a/cockpit/chat/generative-ui/python/package.json +++ b/cockpit/chat/generative-ui/python/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/cockpit-chat-generative-ui-python", + "name": "@ngaf/cockpit-chat-generative-ui-python", "version": "0.0.1", "license": "MIT", "sideEffects": false diff --git a/cockpit/chat/input/angular/package.json b/cockpit/chat/input/angular/package.json index 28cc0ff99..26f51e7ed 100644 --- a/cockpit/chat/input/angular/package.json +++ b/cockpit/chat/input/angular/package.json @@ -1,9 +1,9 @@ { - "name": "@cacheplane/cockpit-chat-input-angular", + "name": "@ngaf/cockpit-chat-input-angular", "version": "0.0.1", "peerDependencies": { - "@cacheplane/chat": "^0.0.1", - "@cacheplane/langgraph": "^0.0.1", + "@ngaf/chat": "^0.0.1", + "@ngaf/langgraph": "^0.0.1", "@langchain/langgraph-sdk": "^0.0.36" }, "license": "MIT", diff --git a/cockpit/chat/input/angular/src/app/app.config.ts b/cockpit/chat/input/angular/src/app/app.config.ts index 0ef67aee5..be14b0243 100644 --- a/cockpit/chat/input/angular/src/app/app.config.ts +++ b/cockpit/chat/input/angular/src/app/app.config.ts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; -import { provideChat } from '@cacheplane/chat'; +import { provideAgent } from '@ngaf/langgraph'; +import { provideChat } from '@ngaf/chat'; import { environment } from '../environments/environment'; export const appConfig: ApplicationConfig = { diff --git a/cockpit/chat/input/angular/src/app/input.component.ts b/cockpit/chat/input/angular/src/app/input.component.ts index aabd51404..57d139322 100644 --- a/cockpit/chat/input/angular/src/app/input.component.ts +++ b/cockpit/chat/input/angular/src/app/input.component.ts @@ -1,9 +1,9 @@ // SPDX-License-Identifier: MIT import { Component, computed } from '@angular/core'; -import { ChatInputComponent as ChatInputPrimitive } from '@cacheplane/chat'; -import { ChatMessagesComponent } from '@cacheplane/chat'; -import { ExampleChatLayoutComponent } from '@cacheplane/example-layouts'; -import { agent, toAgent } from '@cacheplane/langgraph'; +import { ChatInputComponent as ChatInputPrimitive } from '@ngaf/chat'; +import { ChatMessagesComponent } from '@ngaf/chat'; +import { ExampleChatLayoutComponent } from '@ngaf/example-layouts'; +import { agent, toAgent } from '@ngaf/langgraph'; import { environment } from '../environments/environment'; /** diff --git a/cockpit/chat/input/python/docs/guide.md b/cockpit/chat/input/python/docs/guide.md index b287c04ef..8548d2cd2 100644 --- a/cockpit/chat/input/python/docs/guide.md +++ b/cockpit/chat/input/python/docs/guide.md @@ -1,4 +1,4 @@ -# Chat Input with @cacheplane/chat +# Chat Input with @ngaf/chat Configure and customize the ChatInputComponent for handling user input @@ -8,7 +8,7 @@ disabled states, and loading indicators. Add a customized chat input to your Angular component using `ChatInputComponent` -from `@cacheplane/chat`. Configure placeholder text, keyboard handling, +from `@ngaf/chat`. Configure placeholder text, keyboard handling, and loading state integration. @@ -18,7 +18,7 @@ and loading state integration. Import the input component from the chat library: ```typescript -import { ChatInputComponent } from '@cacheplane/chat'; +import { ChatInputComponent } from '@ngaf/chat'; ``` diff --git a/cockpit/chat/input/python/package.json b/cockpit/chat/input/python/package.json index 4b5fbbb7d..2b68e20aa 100644 --- a/cockpit/chat/input/python/package.json +++ b/cockpit/chat/input/python/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/cockpit-chat-input-python", + "name": "@ngaf/cockpit-chat-input-python", "version": "0.0.1", "license": "MIT", "sideEffects": false diff --git a/cockpit/chat/input/python/prompts/input.md b/cockpit/chat/input/python/prompts/input.md index ed2b23926..d7aeb8bdf 100644 --- a/cockpit/chat/input/python/prompts/input.md +++ b/cockpit/chat/input/python/prompts/input.md @@ -1,6 +1,6 @@ # Chat Input Assistant -You are an assistant that demonstrates the ChatInputComponent from @cacheplane/chat. +You are an assistant that demonstrates the ChatInputComponent from @ngaf/chat. Echo back what the user says, and explain the input features being demonstrated: - Custom placeholder text diff --git a/cockpit/chat/interrupts/angular/package.json b/cockpit/chat/interrupts/angular/package.json index 6196303f2..60309fe95 100644 --- a/cockpit/chat/interrupts/angular/package.json +++ b/cockpit/chat/interrupts/angular/package.json @@ -1,9 +1,9 @@ { - "name": "@cacheplane/cockpit-chat-interrupts-angular", + "name": "@ngaf/cockpit-chat-interrupts-angular", "version": "0.0.1", "peerDependencies": { - "@cacheplane/chat": "^0.0.1", - "@cacheplane/langgraph": "^0.0.1", + "@ngaf/chat": "^0.0.1", + "@ngaf/langgraph": "^0.0.1", "@langchain/langgraph-sdk": "^0.0.36" }, "license": "MIT", diff --git a/cockpit/chat/interrupts/angular/src/app/app.config.ts b/cockpit/chat/interrupts/angular/src/app/app.config.ts index 0ef67aee5..be14b0243 100644 --- a/cockpit/chat/interrupts/angular/src/app/app.config.ts +++ b/cockpit/chat/interrupts/angular/src/app/app.config.ts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; -import { provideChat } from '@cacheplane/chat'; +import { provideAgent } from '@ngaf/langgraph'; +import { provideChat } from '@ngaf/chat'; import { environment } from '../environments/environment'; export const appConfig: ApplicationConfig = { diff --git a/cockpit/chat/interrupts/angular/src/app/interrupts.component.ts b/cockpit/chat/interrupts/angular/src/app/interrupts.component.ts index 8f407ad2e..e5e31012b 100644 --- a/cockpit/chat/interrupts/angular/src/app/interrupts.component.ts +++ b/cockpit/chat/interrupts/angular/src/app/interrupts.component.ts @@ -1,9 +1,9 @@ // SPDX-License-Identifier: MIT import { Component, computed } from '@angular/core'; import { JsonPipe } from '@angular/common'; -import { ChatComponent, ChatInterruptPanelComponent } from '@cacheplane/chat'; -import { ExampleChatLayoutComponent } from '@cacheplane/example-layouts'; -import { agent, toAgent } from '@cacheplane/langgraph'; +import { ChatComponent, ChatInterruptPanelComponent } from '@ngaf/chat'; +import { ExampleChatLayoutComponent } from '@ngaf/example-layouts'; +import { agent, toAgent } from '@ngaf/langgraph'; import { environment } from '../environments/environment'; /** diff --git a/cockpit/chat/interrupts/python/docs/guide.md b/cockpit/chat/interrupts/python/docs/guide.md index f4d642a10..acf526111 100644 --- a/cockpit/chat/interrupts/python/docs/guide.md +++ b/cockpit/chat/interrupts/python/docs/guide.md @@ -1,4 +1,4 @@ -# Chat Interrupts with @cacheplane/chat +# Chat Interrupts with @ngaf/chat Implement human-in-the-loop approval gates using LangGraph interrupts @@ -8,7 +8,7 @@ an approval UI before proceeding. Add interrupt handling to your chat interface using `ChatInterruptPanelComponent` -from `@cacheplane/chat`. Detect when the stream enters an interrupted state +from `@ngaf/chat`. Detect when the stream enters an interrupted state and render approval/rejection controls. diff --git a/cockpit/chat/interrupts/python/package.json b/cockpit/chat/interrupts/python/package.json index 8c403ff98..ad13b4e0f 100644 --- a/cockpit/chat/interrupts/python/package.json +++ b/cockpit/chat/interrupts/python/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/cockpit-chat-interrupts-python", + "name": "@ngaf/cockpit-chat-interrupts-python", "version": "0.0.1", "license": "MIT", "sideEffects": false diff --git a/cockpit/chat/messages/angular/package.json b/cockpit/chat/messages/angular/package.json index 3abafd64f..5b2ea0515 100644 --- a/cockpit/chat/messages/angular/package.json +++ b/cockpit/chat/messages/angular/package.json @@ -1,9 +1,9 @@ { - "name": "@cacheplane/cockpit-chat-messages-angular", + "name": "@ngaf/cockpit-chat-messages-angular", "version": "0.0.1", "peerDependencies": { - "@cacheplane/chat": "^0.0.1", - "@cacheplane/langgraph": "^0.0.1", + "@ngaf/chat": "^0.0.1", + "@ngaf/langgraph": "^0.0.1", "@langchain/langgraph-sdk": "^0.0.36" }, "license": "MIT", diff --git a/cockpit/chat/messages/angular/src/app/app.config.ts b/cockpit/chat/messages/angular/src/app/app.config.ts index 0ef67aee5..be14b0243 100644 --- a/cockpit/chat/messages/angular/src/app/app.config.ts +++ b/cockpit/chat/messages/angular/src/app/app.config.ts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; -import { provideChat } from '@cacheplane/chat'; +import { provideAgent } from '@ngaf/langgraph'; +import { provideChat } from '@ngaf/chat'; import { environment } from '../environments/environment'; export const appConfig: ApplicationConfig = { diff --git a/cockpit/chat/messages/angular/src/app/messages.component.ts b/cockpit/chat/messages/angular/src/app/messages.component.ts index 726a09052..50911d9ae 100644 --- a/cockpit/chat/messages/angular/src/app/messages.component.ts +++ b/cockpit/chat/messages/angular/src/app/messages.component.ts @@ -4,13 +4,13 @@ import { ChatMessagesComponent, ChatInputComponent, ChatTypingIndicatorComponent, -} from '@cacheplane/chat'; -import { ExampleChatLayoutComponent } from '@cacheplane/example-layouts'; -import { agent, toAgent } from '@cacheplane/langgraph'; +} from '@ngaf/chat'; +import { ExampleChatLayoutComponent } from '@ngaf/example-layouts'; +import { agent, toAgent } from '@ngaf/langgraph'; import { environment } from '../environments/environment'; /** - * MessagesComponent demonstrates the chat message primitives from @cacheplane/chat. + * MessagesComponent demonstrates the chat message primitives from @ngaf/chat. * * Uses ChatMessagesComponent, ChatInputComponent, and ChatTypingIndicatorComponent * individually rather than the composed ChatComponent, giving full control diff --git a/cockpit/chat/messages/python/docs/guide.md b/cockpit/chat/messages/python/docs/guide.md index a9211afea..d8e59123b 100644 --- a/cockpit/chat/messages/python/docs/guide.md +++ b/cockpit/chat/messages/python/docs/guide.md @@ -1,4 +1,4 @@ -# Chat Messages with @cacheplane/chat +# Chat Messages with @ngaf/chat Render chat messages using the primitive components ChatMessagesComponent, @@ -8,7 +8,7 @@ give full control over message layout, input handling, and loading states. Build a chat interface using the individual message primitives from -`@cacheplane/chat`. Import `ChatMessagesComponent`, `ChatInputComponent`, +`@ngaf/chat`. Import `ChatMessagesComponent`, `ChatInputComponent`, and `ChatTypingIndicatorComponent` separately instead of the composed `ChatComponent`. @@ -23,7 +23,7 @@ import { ChatMessagesComponent, ChatInputComponent, ChatTypingIndicatorComponent, -} from '@cacheplane/chat'; +} from '@ngaf/chat'; ``` diff --git a/cockpit/chat/messages/python/package.json b/cockpit/chat/messages/python/package.json index 1ee8c21bc..32de99d45 100644 --- a/cockpit/chat/messages/python/package.json +++ b/cockpit/chat/messages/python/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/cockpit-chat-messages-python", + "name": "@ngaf/cockpit-chat-messages-python", "version": "0.0.1", "license": "MIT", "sideEffects": false diff --git a/cockpit/chat/messages/python/prompts/messages.md b/cockpit/chat/messages/python/prompts/messages.md index 5553c7818..02977840f 100644 --- a/cockpit/chat/messages/python/prompts/messages.md +++ b/cockpit/chat/messages/python/prompts/messages.md @@ -1,6 +1,6 @@ # Chat Messages Assistant -You are an assistant that demonstrates the chat message primitives from @cacheplane/chat. +You are an assistant that demonstrates the chat message primitives from @ngaf/chat. Your role is to showcase different message types and rendering styles. Use varied response formats including short answers, longer explanations, diff --git a/cockpit/chat/subagents/angular/package.json b/cockpit/chat/subagents/angular/package.json index b575623b6..6b9dd5c45 100644 --- a/cockpit/chat/subagents/angular/package.json +++ b/cockpit/chat/subagents/angular/package.json @@ -1,9 +1,9 @@ { - "name": "@cacheplane/cockpit-chat-subagents-angular", + "name": "@ngaf/cockpit-chat-subagents-angular", "version": "0.0.1", "peerDependencies": { - "@cacheplane/chat": "^0.0.1", - "@cacheplane/langgraph": "^0.0.1", + "@ngaf/chat": "^0.0.1", + "@ngaf/langgraph": "^0.0.1", "@langchain/langgraph-sdk": "^0.0.36" }, "license": "MIT", diff --git a/cockpit/chat/subagents/angular/src/app/app.config.ts b/cockpit/chat/subagents/angular/src/app/app.config.ts index 0ef67aee5..be14b0243 100644 --- a/cockpit/chat/subagents/angular/src/app/app.config.ts +++ b/cockpit/chat/subagents/angular/src/app/app.config.ts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; -import { provideChat } from '@cacheplane/chat'; +import { provideAgent } from '@ngaf/langgraph'; +import { provideChat } from '@ngaf/chat'; import { environment } from '../environments/environment'; export const appConfig: ApplicationConfig = { diff --git a/cockpit/chat/subagents/angular/src/app/subagents.component.ts b/cockpit/chat/subagents/angular/src/app/subagents.component.ts index bdc0637e2..a99fbc827 100644 --- a/cockpit/chat/subagents/angular/src/app/subagents.component.ts +++ b/cockpit/chat/subagents/angular/src/app/subagents.component.ts @@ -4,9 +4,9 @@ import { ChatComponent, ChatSubagentsComponent, ChatSubagentCardComponent, -} from '@cacheplane/chat'; -import { ExampleChatLayoutComponent } from '@cacheplane/example-layouts'; -import { agent, toAgent } from '@cacheplane/langgraph'; +} from '@ngaf/chat'; +import { ExampleChatLayoutComponent } from '@ngaf/example-layouts'; +import { agent, toAgent } from '@ngaf/langgraph'; import { environment } from '../environments/environment'; /** diff --git a/cockpit/chat/subagents/python/docs/guide.md b/cockpit/chat/subagents/python/docs/guide.md index e07e21ad2..f6620f4b7 100644 --- a/cockpit/chat/subagents/python/docs/guide.md +++ b/cockpit/chat/subagents/python/docs/guide.md @@ -1,4 +1,4 @@ -# Chat Subagents with @cacheplane/chat +# Chat Subagents with @ngaf/chat Track and display subagent orchestration using ChatSubagentsComponent @@ -8,7 +8,7 @@ as the orchestrator delegates work. Add subagent tracking to your chat interface using `ChatSubagentsComponent` -and `ChatSubagentCardComponent` from `@cacheplane/chat`. Display active +and `ChatSubagentCardComponent` from `@ngaf/chat`. Display active subagents with real-time status in a sidebar. diff --git a/cockpit/chat/subagents/python/package.json b/cockpit/chat/subagents/python/package.json index df0e381b2..80df6b3ea 100644 --- a/cockpit/chat/subagents/python/package.json +++ b/cockpit/chat/subagents/python/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/cockpit-chat-subagents-python", + "name": "@ngaf/cockpit-chat-subagents-python", "version": "0.0.1", "license": "MIT", "sideEffects": false diff --git a/cockpit/chat/theming/angular/package.json b/cockpit/chat/theming/angular/package.json index a6a6638df..28d268e0d 100644 --- a/cockpit/chat/theming/angular/package.json +++ b/cockpit/chat/theming/angular/package.json @@ -1,9 +1,9 @@ { - "name": "@cacheplane/cockpit-chat-theming-angular", + "name": "@ngaf/cockpit-chat-theming-angular", "version": "0.0.1", "peerDependencies": { - "@cacheplane/chat": "^0.0.1", - "@cacheplane/langgraph": "^0.0.1", + "@ngaf/chat": "^0.0.1", + "@ngaf/langgraph": "^0.0.1", "@langchain/langgraph-sdk": "^0.0.36" }, "license": "MIT", diff --git a/cockpit/chat/theming/angular/src/app/app.config.ts b/cockpit/chat/theming/angular/src/app/app.config.ts index 0ef67aee5..be14b0243 100644 --- a/cockpit/chat/theming/angular/src/app/app.config.ts +++ b/cockpit/chat/theming/angular/src/app/app.config.ts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; -import { provideChat } from '@cacheplane/chat'; +import { provideAgent } from '@ngaf/langgraph'; +import { provideChat } from '@ngaf/chat'; import { environment } from '../environments/environment'; export const appConfig: ApplicationConfig = { diff --git a/cockpit/chat/theming/angular/src/app/theming.component.ts b/cockpit/chat/theming/angular/src/app/theming.component.ts index 4373ab26c..4f1f0d4ab 100644 --- a/cockpit/chat/theming/angular/src/app/theming.component.ts +++ b/cockpit/chat/theming/angular/src/app/theming.component.ts @@ -1,9 +1,9 @@ // SPDX-License-Identifier: MIT import { Component, signal } from '@angular/core'; import { TitleCasePipe } from '@angular/common'; -import { ChatComponent } from '@cacheplane/chat'; -import { ExampleChatLayoutComponent } from '@cacheplane/example-layouts'; -import { agent, toAgent } from '@cacheplane/langgraph'; +import { ChatComponent } from '@ngaf/chat'; +import { ExampleChatLayoutComponent } from '@ngaf/example-layouts'; +import { agent, toAgent } from '@ngaf/langgraph'; import { environment } from '../environments/environment'; const THEMES: Record> = { diff --git a/cockpit/chat/theming/python/docs/guide.md b/cockpit/chat/theming/python/docs/guide.md index f16dc371e..36336b7a7 100644 --- a/cockpit/chat/theming/python/docs/guide.md +++ b/cockpit/chat/theming/python/docs/guide.md @@ -1,4 +1,4 @@ -# Chat Theming with @cacheplane/chat +# Chat Theming with @ngaf/chat Customize chat appearance using CSS custom properties and @@ -8,7 +8,7 @@ for runtime theme switching. Add theming to your chat interface using CSS custom properties and -`CHAT_THEME_STYLES` from `@cacheplane/chat`. Create theme presets +`CHAT_THEME_STYLES` from `@ngaf/chat`. Create theme presets and a theme picker for switching themes at runtime. @@ -32,7 +32,7 @@ Chat components use CSS custom properties for all visual styling: Use `CHAT_THEME_STYLES` to apply a complete theme: ```typescript -import { CHAT_THEME_STYLES } from '@cacheplane/chat'; +import { CHAT_THEME_STYLES } from '@ngaf/chat'; ``` diff --git a/cockpit/chat/theming/python/package.json b/cockpit/chat/theming/python/package.json index ee5c543b8..fda523481 100644 --- a/cockpit/chat/theming/python/package.json +++ b/cockpit/chat/theming/python/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/cockpit-chat-theming-python", + "name": "@ngaf/cockpit-chat-theming-python", "version": "0.0.1", "license": "MIT", "sideEffects": false diff --git a/cockpit/chat/theming/python/prompts/theming.md b/cockpit/chat/theming/python/prompts/theming.md index 88613665f..2503d981a 100644 --- a/cockpit/chat/theming/python/prompts/theming.md +++ b/cockpit/chat/theming/python/prompts/theming.md @@ -1,7 +1,7 @@ # Chat Theming Assistant You are an assistant that demonstrates chat theming and CSS custom -property customization in @cacheplane/chat. +property customization in @ngaf/chat. The chat UI supports extensive theming via CSS custom properties like `--chat-bg`, `--chat-text`, `--chat-accent`, `--chat-surface`, and more. diff --git a/cockpit/chat/threads/angular/package.json b/cockpit/chat/threads/angular/package.json index 8d4806226..03cc33640 100644 --- a/cockpit/chat/threads/angular/package.json +++ b/cockpit/chat/threads/angular/package.json @@ -1,9 +1,9 @@ { - "name": "@cacheplane/cockpit-chat-threads-angular", + "name": "@ngaf/cockpit-chat-threads-angular", "version": "0.0.1", "peerDependencies": { - "@cacheplane/chat": "^0.0.1", - "@cacheplane/langgraph": "^0.0.1", + "@ngaf/chat": "^0.0.1", + "@ngaf/langgraph": "^0.0.1", "@langchain/langgraph-sdk": "^0.0.36" }, "license": "MIT", diff --git a/cockpit/chat/threads/angular/src/app/app.config.ts b/cockpit/chat/threads/angular/src/app/app.config.ts index 0ef67aee5..be14b0243 100644 --- a/cockpit/chat/threads/angular/src/app/app.config.ts +++ b/cockpit/chat/threads/angular/src/app/app.config.ts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; -import { provideChat } from '@cacheplane/chat'; +import { provideAgent } from '@ngaf/langgraph'; +import { provideChat } from '@ngaf/chat'; import { environment } from '../environments/environment'; export const appConfig: ApplicationConfig = { diff --git a/cockpit/chat/threads/angular/src/app/threads.component.ts b/cockpit/chat/threads/angular/src/app/threads.component.ts index e6efd6c77..332b3b8c9 100644 --- a/cockpit/chat/threads/angular/src/app/threads.component.ts +++ b/cockpit/chat/threads/angular/src/app/threads.component.ts @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT import { Component, signal } from '@angular/core'; -import { ChatComponent, ChatThreadListComponent, type Thread } from '@cacheplane/chat'; -import { agent, toAgent } from '@cacheplane/langgraph'; -import { ExampleChatLayoutComponent } from '@cacheplane/example-layouts'; +import { ChatComponent, ChatThreadListComponent, type Thread } from '@ngaf/chat'; +import { agent, toAgent } from '@ngaf/langgraph'; +import { ExampleChatLayoutComponent } from '@ngaf/example-layouts'; import { environment } from '../environments/environment'; /** diff --git a/cockpit/chat/threads/python/docs/guide.md b/cockpit/chat/threads/python/docs/guide.md index 76e63f435..0294e9bd2 100644 --- a/cockpit/chat/threads/python/docs/guide.md +++ b/cockpit/chat/threads/python/docs/guide.md @@ -1,4 +1,4 @@ -# Chat Threads with @cacheplane/chat +# Chat Threads with @ngaf/chat Manage multiple conversation threads using ChatThreadListComponent. @@ -8,7 +8,7 @@ run parallel conversations with the same agent. Add multi-thread support to your chat interface using `ChatThreadListComponent` -from `@cacheplane/chat`. Display a thread list sidebar for creating and +from `@ngaf/chat`. Display a thread list sidebar for creating and switching between conversations. diff --git a/cockpit/chat/threads/python/package.json b/cockpit/chat/threads/python/package.json index 5c6f66824..17dfc418d 100644 --- a/cockpit/chat/threads/python/package.json +++ b/cockpit/chat/threads/python/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/cockpit-chat-threads-python", + "name": "@ngaf/cockpit-chat-threads-python", "version": "0.0.1", "license": "MIT", "sideEffects": false diff --git a/cockpit/chat/timeline/angular/package.json b/cockpit/chat/timeline/angular/package.json index 1245af5d1..7c856150b 100644 --- a/cockpit/chat/timeline/angular/package.json +++ b/cockpit/chat/timeline/angular/package.json @@ -1,9 +1,9 @@ { - "name": "@cacheplane/cockpit-chat-timeline-angular", + "name": "@ngaf/cockpit-chat-timeline-angular", "version": "0.0.1", "peerDependencies": { - "@cacheplane/chat": "^0.0.1", - "@cacheplane/langgraph": "^0.0.1", + "@ngaf/chat": "^0.0.1", + "@ngaf/langgraph": "^0.0.1", "@langchain/langgraph-sdk": "^0.0.36" }, "license": "MIT", diff --git a/cockpit/chat/timeline/angular/src/app/app.config.ts b/cockpit/chat/timeline/angular/src/app/app.config.ts index 0ef67aee5..be14b0243 100644 --- a/cockpit/chat/timeline/angular/src/app/app.config.ts +++ b/cockpit/chat/timeline/angular/src/app/app.config.ts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; -import { provideChat } from '@cacheplane/chat'; +import { provideAgent } from '@ngaf/langgraph'; +import { provideChat } from '@ngaf/chat'; import { environment } from '../environments/environment'; export const appConfig: ApplicationConfig = { diff --git a/cockpit/chat/timeline/angular/src/app/timeline.component.ts b/cockpit/chat/timeline/angular/src/app/timeline.component.ts index 9b6b0e35c..9d55bb4c0 100644 --- a/cockpit/chat/timeline/angular/src/app/timeline.component.ts +++ b/cockpit/chat/timeline/angular/src/app/timeline.component.ts @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT import { Component } from '@angular/core'; -import { ChatComponent, ChatTimelineSliderComponent } from '@cacheplane/chat'; -import { ExampleChatLayoutComponent } from '@cacheplane/example-layouts'; -import { agent, toAgent } from '@cacheplane/langgraph'; +import { ChatComponent, ChatTimelineSliderComponent } from '@ngaf/chat'; +import { ExampleChatLayoutComponent } from '@ngaf/example-layouts'; +import { agent, toAgent } from '@ngaf/langgraph'; import { environment } from '../environments/environment'; /** diff --git a/cockpit/chat/timeline/python/docs/guide.md b/cockpit/chat/timeline/python/docs/guide.md index cd4d03610..90804afc2 100644 --- a/cockpit/chat/timeline/python/docs/guide.md +++ b/cockpit/chat/timeline/python/docs/guide.md @@ -1,4 +1,4 @@ -# Chat Timeline with @cacheplane/chat +# Chat Timeline with @ngaf/chat Navigate conversation history using ChatTimelineSliderComponent. @@ -8,7 +8,7 @@ enabling time-travel debugging and conversation branching. Add timeline navigation to your chat interface using -`ChatTimelineSliderComponent` from `@cacheplane/chat`. Enable users +`ChatTimelineSliderComponent` from `@ngaf/chat`. Enable users to navigate checkpoints and branch from previous conversation states. diff --git a/cockpit/chat/timeline/python/package.json b/cockpit/chat/timeline/python/package.json index b2096571e..d6c9f529b 100644 --- a/cockpit/chat/timeline/python/package.json +++ b/cockpit/chat/timeline/python/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/cockpit-chat-timeline-python", + "name": "@ngaf/cockpit-chat-timeline-python", "version": "0.0.1", "license": "MIT", "sideEffects": false diff --git a/cockpit/chat/tool-calls/angular/package.json b/cockpit/chat/tool-calls/angular/package.json index 467976b52..4628dacfa 100644 --- a/cockpit/chat/tool-calls/angular/package.json +++ b/cockpit/chat/tool-calls/angular/package.json @@ -1,9 +1,9 @@ { - "name": "@cacheplane/cockpit-chat-tool-calls-angular", + "name": "@ngaf/cockpit-chat-tool-calls-angular", "version": "0.0.1", "peerDependencies": { - "@cacheplane/chat": "^0.0.1", - "@cacheplane/langgraph": "^0.0.1", + "@ngaf/chat": "^0.0.1", + "@ngaf/langgraph": "^0.0.1", "@langchain/langgraph-sdk": "^0.0.36" }, "license": "MIT", diff --git a/cockpit/chat/tool-calls/angular/src/app/app.config.ts b/cockpit/chat/tool-calls/angular/src/app/app.config.ts index 0ef67aee5..be14b0243 100644 --- a/cockpit/chat/tool-calls/angular/src/app/app.config.ts +++ b/cockpit/chat/tool-calls/angular/src/app/app.config.ts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; -import { provideChat } from '@cacheplane/chat'; +import { provideAgent } from '@ngaf/langgraph'; +import { provideChat } from '@ngaf/chat'; import { environment } from '../environments/environment'; export const appConfig: ApplicationConfig = { diff --git a/cockpit/chat/tool-calls/angular/src/app/tool-calls.component.ts b/cockpit/chat/tool-calls/angular/src/app/tool-calls.component.ts index d8aaebf5f..ab1d6e9b4 100644 --- a/cockpit/chat/tool-calls/angular/src/app/tool-calls.component.ts +++ b/cockpit/chat/tool-calls/angular/src/app/tool-calls.component.ts @@ -4,9 +4,9 @@ import { ChatComponent, ChatToolCallsComponent, ChatToolCallCardComponent, -} from '@cacheplane/chat'; -import { ExampleChatLayoutComponent } from '@cacheplane/example-layouts'; -import { agent, toAgent } from '@cacheplane/langgraph'; +} from '@ngaf/chat'; +import { ExampleChatLayoutComponent } from '@ngaf/example-layouts'; +import { agent, toAgent } from '@ngaf/langgraph'; import { environment } from '../environments/environment'; /** diff --git a/cockpit/chat/tool-calls/python/docs/guide.md b/cockpit/chat/tool-calls/python/docs/guide.md index 42b1b0110..eef7d8928 100644 --- a/cockpit/chat/tool-calls/python/docs/guide.md +++ b/cockpit/chat/tool-calls/python/docs/guide.md @@ -1,4 +1,4 @@ -# Chat Tool Calls with @cacheplane/chat +# Chat Tool Calls with @ngaf/chat Display tool call execution and results using ChatToolCallsComponent @@ -9,7 +9,7 @@ renders each call with its arguments and response. Add tool call visualization to your chat interface using `ChatToolCallsComponent` and `ChatToolCallCardComponent` from -`@cacheplane/chat`. Display active tool calls in a sidebar. +`@ngaf/chat`. Display active tool calls in a sidebar. diff --git a/cockpit/chat/tool-calls/python/package.json b/cockpit/chat/tool-calls/python/package.json index f17b711f7..249603584 100644 --- a/cockpit/chat/tool-calls/python/package.json +++ b/cockpit/chat/tool-calls/python/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/cockpit-chat-tool-calls-python", + "name": "@ngaf/cockpit-chat-tool-calls-python", "version": "0.0.1", "license": "MIT", "sideEffects": false diff --git a/cockpit/deep-agents/filesystem/angular/package.json b/cockpit/deep-agents/filesystem/angular/package.json index 103e09040..382655413 100644 --- a/cockpit/deep-agents/filesystem/angular/package.json +++ b/cockpit/deep-agents/filesystem/angular/package.json @@ -1,9 +1,9 @@ { - "name": "@cacheplane/cockpit-deep-agents-filesystem-angular", + "name": "@ngaf/cockpit-deep-agents-filesystem-angular", "version": "0.0.1", "peerDependencies": { - "@cacheplane/chat": "^0.0.1", - "@cacheplane/langgraph": "^0.0.1", + "@ngaf/chat": "^0.0.1", + "@ngaf/langgraph": "^0.0.1", "@langchain/langgraph-sdk": "^0.0.36" }, "license": "MIT", diff --git a/cockpit/deep-agents/filesystem/angular/prompts/filesystem.md b/cockpit/deep-agents/filesystem/angular/prompts/filesystem.md index 05c68164c..2858e737b 100644 --- a/cockpit/deep-agents/filesystem/angular/prompts/filesystem.md +++ b/cockpit/deep-agents/filesystem/angular/prompts/filesystem.md @@ -1,5 +1,5 @@ # Deep Agents Filesystem (Angular) -This capability demonstrates a deep agent that reads, writes, and navigates a sandboxed filesystem using the `@cacheplane/chat` Angular component library. The `` component surfaces every filesystem tool call — including path, arguments, and result — so developers can follow the agent's file operations step by step. +This capability demonstrates a deep agent that reads, writes, and navigates a sandboxed filesystem using the `@ngaf/chat` Angular component library. The `` component surfaces every filesystem tool call — including path, arguments, and result — so developers can follow the agent's file operations step by step. Key components used: ``. Each tool invocation (read_file, write_file, list_dir, etc.) appears as a collapsible trace node, giving full visibility into how the agent interacts with the filesystem without cluttering the end-user chat view. diff --git a/cockpit/deep-agents/filesystem/angular/src/app/app.config.ts b/cockpit/deep-agents/filesystem/angular/src/app/app.config.ts index bc07aa807..c37f8a0e2 100644 --- a/cockpit/deep-agents/filesystem/angular/src/app/app.config.ts +++ b/cockpit/deep-agents/filesystem/angular/src/app/app.config.ts @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; -import { provideChat } from '@cacheplane/chat'; -import { provideRender } from '@cacheplane/render'; +import { provideAgent } from '@ngaf/langgraph'; +import { provideChat } from '@ngaf/chat'; +import { provideRender } from '@ngaf/render'; import { environment } from '../environments/environment'; export const appConfig: ApplicationConfig = { diff --git a/cockpit/deep-agents/filesystem/angular/src/app/filesystem.component.ts b/cockpit/deep-agents/filesystem/angular/src/app/filesystem.component.ts index ab83f6fe1..161731f29 100644 --- a/cockpit/deep-agents/filesystem/angular/src/app/filesystem.component.ts +++ b/cockpit/deep-agents/filesystem/angular/src/app/filesystem.component.ts @@ -1,8 +1,8 @@ import { Component, computed } from '@angular/core'; -import { ChatComponent, views } from '@cacheplane/chat'; -import { ExampleChatLayoutComponent } from '@cacheplane/example-layouts'; -import { agent, toAgent } from '@cacheplane/langgraph'; -import { signalStateStore } from '@cacheplane/render'; +import { ChatComponent, views } from '@ngaf/chat'; +import { ExampleChatLayoutComponent } from '@ngaf/example-layouts'; +import { agent, toAgent } from '@ngaf/langgraph'; +import { signalStateStore } from '@ngaf/render'; import { environment } from '../environments/environment'; import { FilePreviewComponent } from './views/file-preview.component'; diff --git a/cockpit/deep-agents/filesystem/python/docs/guide.md b/cockpit/deep-agents/filesystem/python/docs/guide.md index cbe5690c8..3118fb705 100644 --- a/cockpit/deep-agents/filesystem/python/docs/guide.md +++ b/cockpit/deep-agents/filesystem/python/docs/guide.md @@ -2,12 +2,12 @@ Build a chat interface that shows real-time file operation logs using `agent()` from -`@cacheplane/langgraph`. The agent reads and writes files using tool calls, and the +`@ngaf/langgraph`. The agent reads and writes files using tool calls, and the sidebar displays each operation as it happens. -Add a file operations sidebar to this Angular component using `agent()` from `@cacheplane/langgraph`. Use `stream.messages()` to access tool call data, derive `toolCallEntries` with `computed()`, and bind them to the sidebar via the `` component from `@cacheplane/chat`. +Add a file operations sidebar to this Angular component using `agent()` from `@ngaf/langgraph`. Use `stream.messages()` to access tool call data, derive `toolCallEntries` with `computed()`, and bind them to the sidebar via the `` component from `@ngaf/chat`. @@ -18,7 +18,7 @@ Set up `provideAgent()` in your app config with the LangGraph API URL: ```typescript // app.config.ts import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; +import { provideAgent } from '@ngaf/langgraph'; export const appConfig: ApplicationConfig = { providers: [ @@ -38,7 +38,7 @@ In your component, call `agent()` with the `assistantId` pointing to your filesy ```typescript // filesystem.component.ts -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; export class FilesystemComponent { protected readonly stream = agent({ diff --git a/cockpit/deep-agents/filesystem/python/package.json b/cockpit/deep-agents/filesystem/python/package.json index 6404094fa..d3bc6945f 100644 --- a/cockpit/deep-agents/filesystem/python/package.json +++ b/cockpit/deep-agents/filesystem/python/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/cockpit-deep-agents-filesystem-python", + "name": "@ngaf/cockpit-deep-agents-filesystem-python", "version": "0.0.1", "license": "MIT", "sideEffects": false diff --git a/cockpit/deep-agents/memory/angular/package.json b/cockpit/deep-agents/memory/angular/package.json index 19d882c08..9bb250384 100644 --- a/cockpit/deep-agents/memory/angular/package.json +++ b/cockpit/deep-agents/memory/angular/package.json @@ -1,9 +1,9 @@ { - "name": "@cacheplane/cockpit-deep-agents-memory-angular", + "name": "@ngaf/cockpit-deep-agents-memory-angular", "version": "0.0.1", "peerDependencies": { - "@cacheplane/chat": "^0.0.1", - "@cacheplane/langgraph": "^0.0.1", + "@ngaf/chat": "^0.0.1", + "@ngaf/langgraph": "^0.0.1", "@langchain/langgraph-sdk": "^0.0.36" }, "license": "MIT", diff --git a/cockpit/deep-agents/memory/angular/prompts/memory.md b/cockpit/deep-agents/memory/angular/prompts/memory.md index df0e2a256..8c10c70fa 100644 --- a/cockpit/deep-agents/memory/angular/prompts/memory.md +++ b/cockpit/deep-agents/memory/angular/prompts/memory.md @@ -1,5 +1,5 @@ # Deep Agents Memory (Angular) -This capability demonstrates how a deep agent stores, retrieves, and updates long-term memories across sessions using the `@cacheplane/chat` Angular component library. The `` component reveals every memory read and write operation — including the memory key, value, and retrieval score — so developers can verify that the agent is building and using its knowledge store correctly. +This capability demonstrates how a deep agent stores, retrieves, and updates long-term memories across sessions using the `@ngaf/chat` Angular component library. The `` component reveals every memory read and write operation — including the memory key, value, and retrieval score — so developers can verify that the agent is building and using its knowledge store correctly. Key components used: ``. Memory tool calls (store_memory, retrieve_memories, delete_memory) appear as collapsible trace nodes, giving full visibility into how the agent's persistent knowledge base evolves over the course of a session and across session boundaries. diff --git a/cockpit/deep-agents/memory/angular/src/app/app.config.ts b/cockpit/deep-agents/memory/angular/src/app/app.config.ts index bc07aa807..c37f8a0e2 100644 --- a/cockpit/deep-agents/memory/angular/src/app/app.config.ts +++ b/cockpit/deep-agents/memory/angular/src/app/app.config.ts @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; -import { provideChat } from '@cacheplane/chat'; -import { provideRender } from '@cacheplane/render'; +import { provideAgent } from '@ngaf/langgraph'; +import { provideChat } from '@ngaf/chat'; +import { provideRender } from '@ngaf/render'; import { environment } from '../environments/environment'; export const appConfig: ApplicationConfig = { diff --git a/cockpit/deep-agents/memory/angular/src/app/memory.component.ts b/cockpit/deep-agents/memory/angular/src/app/memory.component.ts index ea7b451a3..83b91c0ab 100644 --- a/cockpit/deep-agents/memory/angular/src/app/memory.component.ts +++ b/cockpit/deep-agents/memory/angular/src/app/memory.component.ts @@ -1,7 +1,7 @@ import { Component, computed } from '@angular/core'; -import { ChatComponent } from '@cacheplane/chat'; -import { ExampleChatLayoutComponent } from '@cacheplane/example-layouts'; -import { agent, toAgent } from '@cacheplane/langgraph'; +import { ChatComponent } from '@ngaf/chat'; +import { ExampleChatLayoutComponent } from '@ngaf/example-layouts'; +import { agent, toAgent } from '@ngaf/langgraph'; import { environment } from '../environments/environment'; /** diff --git a/cockpit/deep-agents/memory/python/docs/guide.md b/cockpit/deep-agents/memory/python/docs/guide.md index 9dc1fffb9..358226f2c 100644 --- a/cockpit/deep-agents/memory/python/docs/guide.md +++ b/cockpit/deep-agents/memory/python/docs/guide.md @@ -1,11 +1,11 @@ # Persistent Agent Memory with angular -Build a chat interface where the agent remembers facts about the user across turns using `agent()` from `@cacheplane/langgraph`. The agent stores learned facts in `agent_memory` state, and the sidebar displays them in real time. +Build a chat interface where the agent remembers facts about the user across turns using `agent()` from `@ngaf/langgraph`. The agent stores learned facts in `agent_memory` state, and the sidebar displays them in real time. -Add a memory sidebar to this Angular component using `agent()` from `@cacheplane/langgraph`. Use `stream.value()` to access the agent's `agent_memory` state, derive `memoryEntries` with `computed()`, and bind them to the sidebar via the `` component from `@cacheplane/chat`. +Add a memory sidebar to this Angular component using `agent()` from `@ngaf/langgraph`. Use `stream.value()` to access the agent's `agent_memory` state, derive `memoryEntries` with `computed()`, and bind them to the sidebar via the `` component from `@ngaf/chat`. @@ -16,7 +16,7 @@ Set up `provideAgent()` in your app config with the LangGraph API URL: ```typescript // app.config.ts import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; +import { provideAgent } from '@ngaf/langgraph'; export const appConfig: ApplicationConfig = { providers: [ @@ -36,7 +36,7 @@ In your component, call `agent()` with the `assistantId` pointing to your memory ```typescript // memory.component.ts -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; export class MemoryComponent { protected readonly stream = agent({ diff --git a/cockpit/deep-agents/memory/python/package.json b/cockpit/deep-agents/memory/python/package.json index fc58bc32a..df6bc0ac4 100644 --- a/cockpit/deep-agents/memory/python/package.json +++ b/cockpit/deep-agents/memory/python/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/cockpit-deep-agents-memory-python", + "name": "@ngaf/cockpit-deep-agents-memory-python", "version": "0.0.1", "license": "MIT", "sideEffects": false diff --git a/cockpit/deep-agents/planning/angular/package.json b/cockpit/deep-agents/planning/angular/package.json index 67023fdbe..6343c5cda 100644 --- a/cockpit/deep-agents/planning/angular/package.json +++ b/cockpit/deep-agents/planning/angular/package.json @@ -1,9 +1,9 @@ { - "name": "@cacheplane/cockpit-deep-agents-planning-angular", + "name": "@ngaf/cockpit-deep-agents-planning-angular", "version": "0.0.1", "peerDependencies": { - "@cacheplane/chat": "^0.0.1", - "@cacheplane/langgraph": "^0.0.1", + "@ngaf/chat": "^0.0.1", + "@ngaf/langgraph": "^0.0.1", "@langchain/langgraph-sdk": "^0.0.36" }, "license": "MIT", diff --git a/cockpit/deep-agents/planning/angular/prompts/planning.md b/cockpit/deep-agents/planning/angular/prompts/planning.md index 82544d36e..b18828bd6 100644 --- a/cockpit/deep-agents/planning/angular/prompts/planning.md +++ b/cockpit/deep-agents/planning/angular/prompts/planning.md @@ -1,5 +1,5 @@ # Deep Agents Planning (Angular) -This capability demonstrates how a deep agent decomposes complex tasks into structured plans using the `@cacheplane/chat` Angular component library. The `` component exposes the agent's internal reasoning trace — goal decomposition, sub-task generation, and dependency resolution — so developers can inspect planning decisions in real time. +This capability demonstrates how a deep agent decomposes complex tasks into structured plans using the `@ngaf/chat` Angular component library. The `` component exposes the agent's internal reasoning trace — goal decomposition, sub-task generation, and dependency resolution — so developers can inspect planning decisions in real time. Key components used: ``. The debug panel renders the full agent thought trace alongside the final response, making it easy to understand how the planning agent broke down the user's request and in which order it intends to tackle each sub-task. diff --git a/cockpit/deep-agents/planning/angular/src/app/app.config.ts b/cockpit/deep-agents/planning/angular/src/app/app.config.ts index bc07aa807..c37f8a0e2 100644 --- a/cockpit/deep-agents/planning/angular/src/app/app.config.ts +++ b/cockpit/deep-agents/planning/angular/src/app/app.config.ts @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; -import { provideChat } from '@cacheplane/chat'; -import { provideRender } from '@cacheplane/render'; +import { provideAgent } from '@ngaf/langgraph'; +import { provideChat } from '@ngaf/chat'; +import { provideRender } from '@ngaf/render'; import { environment } from '../environments/environment'; export const appConfig: ApplicationConfig = { diff --git a/cockpit/deep-agents/planning/angular/src/app/planning.component.ts b/cockpit/deep-agents/planning/angular/src/app/planning.component.ts index d667133f0..156279ac8 100644 --- a/cockpit/deep-agents/planning/angular/src/app/planning.component.ts +++ b/cockpit/deep-agents/planning/angular/src/app/planning.component.ts @@ -1,8 +1,8 @@ import { Component, computed } from '@angular/core'; -import { ChatComponent, views } from '@cacheplane/chat'; -import { ExampleChatLayoutComponent } from '@cacheplane/example-layouts'; -import { agent, toAgent } from '@cacheplane/langgraph'; -import { signalStateStore } from '@cacheplane/render'; +import { ChatComponent, views } from '@ngaf/chat'; +import { ExampleChatLayoutComponent } from '@ngaf/example-layouts'; +import { agent, toAgent } from '@ngaf/langgraph'; +import { signalStateStore } from '@ngaf/render'; import { environment } from '../environments/environment'; import { PlanChecklistComponent } from './views/plan-checklist.component'; import { CheckboxRowComponent } from './views/checkbox-row.component'; diff --git a/cockpit/deep-agents/planning/python/docs/guide.md b/cockpit/deep-agents/planning/python/docs/guide.md index 7e30183a1..30a762529 100644 --- a/cockpit/deep-agents/planning/python/docs/guide.md +++ b/cockpit/deep-agents/planning/python/docs/guide.md @@ -2,12 +2,12 @@ Build a chat interface that shows real-time task decomposition using `agent()` from -`@cacheplane/langgraph`. The agent breaks complex requests into ordered steps, and the +`@ngaf/langgraph`. The agent breaks complex requests into ordered steps, and the sidebar displays each step's status as the agent works through them. -Add a task planning sidebar to this Angular component using `agent()` from `@cacheplane/langgraph`. Use `stream.value()` to access the agent's plan state, derive `planSteps` with `computed()`, and bind them to the sidebar via the `` component from `@cacheplane/chat`. +Add a task planning sidebar to this Angular component using `agent()` from `@ngaf/langgraph`. Use `stream.value()` to access the agent's plan state, derive `planSteps` with `computed()`, and bind them to the sidebar via the `` component from `@ngaf/chat`. @@ -18,7 +18,7 @@ Set up `provideAgent()` in your app config with the LangGraph API URL: ```typescript // app.config.ts import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; +import { provideAgent } from '@ngaf/langgraph'; export const appConfig: ApplicationConfig = { providers: [ @@ -38,7 +38,7 @@ In your component, call `agent()` with the `assistantId` pointing to your planni ```typescript // planning.component.ts -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; export class PlanningComponent { protected readonly stream = agent({ diff --git a/cockpit/deep-agents/planning/python/package.json b/cockpit/deep-agents/planning/python/package.json index 0f57af4ac..4e9ec4b6b 100644 --- a/cockpit/deep-agents/planning/python/package.json +++ b/cockpit/deep-agents/planning/python/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/cockpit-deep-agents-planning-python", + "name": "@ngaf/cockpit-deep-agents-planning-python", "version": "0.0.1", "license": "MIT", "sideEffects": false diff --git a/cockpit/deep-agents/sandboxes/angular/package.json b/cockpit/deep-agents/sandboxes/angular/package.json index 07c2e660a..576c5ebd9 100644 --- a/cockpit/deep-agents/sandboxes/angular/package.json +++ b/cockpit/deep-agents/sandboxes/angular/package.json @@ -1,9 +1,9 @@ { - "name": "@cacheplane/cockpit-deep-agents-sandboxes-angular", + "name": "@ngaf/cockpit-deep-agents-sandboxes-angular", "version": "0.0.1", "peerDependencies": { - "@cacheplane/chat": "^0.0.1", - "@cacheplane/langgraph": "^0.0.1", + "@ngaf/chat": "^0.0.1", + "@ngaf/langgraph": "^0.0.1", "@langchain/langgraph-sdk": "^0.0.36" }, "license": "MIT", diff --git a/cockpit/deep-agents/sandboxes/angular/prompts/sandboxes.md b/cockpit/deep-agents/sandboxes/angular/prompts/sandboxes.md index 0896e67e1..1d2dca55c 100644 --- a/cockpit/deep-agents/sandboxes/angular/prompts/sandboxes.md +++ b/cockpit/deep-agents/sandboxes/angular/prompts/sandboxes.md @@ -1,5 +1,5 @@ # Deep Agents Sandboxes (Angular) -This capability demonstrates a deep agent executing code and shell commands inside an isolated sandbox environment using the `@cacheplane/chat` Angular component library. The `` component surfaces every sandbox invocation — the code submitted, the execution environment, stdout/stderr, and exit codes — giving developers complete visibility into agent-driven code execution. +This capability demonstrates a deep agent executing code and shell commands inside an isolated sandbox environment using the `@ngaf/chat` Angular component library. The `` component surfaces every sandbox invocation — the code submitted, the execution environment, stdout/stderr, and exit codes — giving developers complete visibility into agent-driven code execution. Key components used: ``. Sandbox execution events appear as trace nodes labelled with the runtime (Python, Node.js, shell, etc.), with expandable panels showing the exact code submitted and the full execution output, making it straightforward to reproduce and debug agent-generated code. diff --git a/cockpit/deep-agents/sandboxes/angular/src/app/app.config.ts b/cockpit/deep-agents/sandboxes/angular/src/app/app.config.ts index bc07aa807..c37f8a0e2 100644 --- a/cockpit/deep-agents/sandboxes/angular/src/app/app.config.ts +++ b/cockpit/deep-agents/sandboxes/angular/src/app/app.config.ts @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; -import { provideChat } from '@cacheplane/chat'; -import { provideRender } from '@cacheplane/render'; +import { provideAgent } from '@ngaf/langgraph'; +import { provideChat } from '@ngaf/chat'; +import { provideRender } from '@ngaf/render'; import { environment } from '../environments/environment'; export const appConfig: ApplicationConfig = { diff --git a/cockpit/deep-agents/sandboxes/angular/src/app/sandboxes.component.ts b/cockpit/deep-agents/sandboxes/angular/src/app/sandboxes.component.ts index 42d13d12f..442dd11c8 100644 --- a/cockpit/deep-agents/sandboxes/angular/src/app/sandboxes.component.ts +++ b/cockpit/deep-agents/sandboxes/angular/src/app/sandboxes.component.ts @@ -1,8 +1,8 @@ import { Component, computed } from '@angular/core'; -import { ChatComponent, views } from '@cacheplane/chat'; -import { ExampleChatLayoutComponent } from '@cacheplane/example-layouts'; -import { agent, toAgent } from '@cacheplane/langgraph'; -import { signalStateStore } from '@cacheplane/render'; +import { ChatComponent, views } from '@ngaf/chat'; +import { ExampleChatLayoutComponent } from '@ngaf/example-layouts'; +import { agent, toAgent } from '@ngaf/langgraph'; +import { signalStateStore } from '@ngaf/render'; import { environment } from '../environments/environment'; import { CodeExecutionComponent } from './views/code-execution.component'; diff --git a/cockpit/deep-agents/sandboxes/python/docs/guide.md b/cockpit/deep-agents/sandboxes/python/docs/guide.md index 3aaa31ad0..f6c778446 100644 --- a/cockpit/deep-agents/sandboxes/python/docs/guide.md +++ b/cockpit/deep-agents/sandboxes/python/docs/guide.md @@ -2,12 +2,12 @@ Build a chat interface that shows real-time code execution logs using `agent()` from -`@cacheplane/langgraph`. The agent writes Python code and runs it in a sandbox, and the +`@ngaf/langgraph`. The agent writes Python code and runs it in a sandbox, and the sidebar displays each execution as a log entry with code input, stdout output, and exit status. -Add a code execution log sidebar to this Angular component using `agent()` from `@cacheplane/langgraph`. Use `stream.messages()` to access tool call data from the `run_code` tool, derive `executionLogs` with `computed()`, and bind them to the sidebar via the `` component from `@cacheplane/chat`. +Add a code execution log sidebar to this Angular component using `agent()` from `@ngaf/langgraph`. Use `stream.messages()` to access tool call data from the `run_code` tool, derive `executionLogs` with `computed()`, and bind them to the sidebar via the `` component from `@ngaf/chat`. @@ -18,7 +18,7 @@ Set up `provideAgent()` in your app config with the LangGraph API URL: ```typescript // app.config.ts import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; +import { provideAgent } from '@ngaf/langgraph'; export const appConfig: ApplicationConfig = { providers: [ @@ -38,7 +38,7 @@ In your component, call `agent()` with the `assistantId` pointing to your sandbo ```typescript // sandboxes.component.ts -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; export class SandboxesComponent { protected readonly stream = agent({ diff --git a/cockpit/deep-agents/sandboxes/python/package.json b/cockpit/deep-agents/sandboxes/python/package.json index f8bfa8b84..e9211cb5b 100644 --- a/cockpit/deep-agents/sandboxes/python/package.json +++ b/cockpit/deep-agents/sandboxes/python/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/cockpit-deep-agents-sandboxes-python", + "name": "@ngaf/cockpit-deep-agents-sandboxes-python", "version": "0.0.1", "license": "MIT", "sideEffects": false diff --git a/cockpit/deep-agents/skills/angular/package.json b/cockpit/deep-agents/skills/angular/package.json index 2d7ad87a9..ea8474359 100644 --- a/cockpit/deep-agents/skills/angular/package.json +++ b/cockpit/deep-agents/skills/angular/package.json @@ -1,9 +1,9 @@ { - "name": "@cacheplane/cockpit-deep-agents-skills-angular", + "name": "@ngaf/cockpit-deep-agents-skills-angular", "version": "0.0.1", "peerDependencies": { - "@cacheplane/chat": "^0.0.1", - "@cacheplane/langgraph": "^0.0.1", + "@ngaf/chat": "^0.0.1", + "@ngaf/langgraph": "^0.0.1", "@langchain/langgraph-sdk": "^0.0.36" }, "license": "MIT", diff --git a/cockpit/deep-agents/skills/angular/prompts/skills.md b/cockpit/deep-agents/skills/angular/prompts/skills.md index e1af2858a..05377f62e 100644 --- a/cockpit/deep-agents/skills/angular/prompts/skills.md +++ b/cockpit/deep-agents/skills/angular/prompts/skills.md @@ -1,5 +1,5 @@ # Deep Agents Skills (Angular) -This capability demonstrates a deep agent that selects and executes reusable skill modules — pre-packaged sequences of tool calls — using the `@cacheplane/chat` Angular component library. The `` component shows which skill was invoked, the parameters it received, and the intermediate steps it performed, giving developers full traceability into skill dispatch and execution. +This capability demonstrates a deep agent that selects and executes reusable skill modules — pre-packaged sequences of tool calls — using the `@ngaf/chat` Angular component library. The `` component shows which skill was invoked, the parameters it received, and the intermediate steps it performed, giving developers full traceability into skill dispatch and execution. Key components used: ``. Skill invocations appear as named trace nodes with expandable step-by-step sub-traces, making it easy to audit skill selection logic, identify skill failures, and verify that parameter binding between the agent and each skill is correct. diff --git a/cockpit/deep-agents/skills/angular/src/app/app.config.ts b/cockpit/deep-agents/skills/angular/src/app/app.config.ts index bc07aa807..c37f8a0e2 100644 --- a/cockpit/deep-agents/skills/angular/src/app/app.config.ts +++ b/cockpit/deep-agents/skills/angular/src/app/app.config.ts @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; -import { provideChat } from '@cacheplane/chat'; -import { provideRender } from '@cacheplane/render'; +import { provideAgent } from '@ngaf/langgraph'; +import { provideChat } from '@ngaf/chat'; +import { provideRender } from '@ngaf/render'; import { environment } from '../environments/environment'; export const appConfig: ApplicationConfig = { diff --git a/cockpit/deep-agents/skills/angular/src/app/skills.component.ts b/cockpit/deep-agents/skills/angular/src/app/skills.component.ts index acc90860a..e2a8d98b5 100644 --- a/cockpit/deep-agents/skills/angular/src/app/skills.component.ts +++ b/cockpit/deep-agents/skills/angular/src/app/skills.component.ts @@ -1,8 +1,8 @@ import { Component, computed } from '@angular/core'; -import { ChatComponent, views } from '@cacheplane/chat'; -import { ExampleChatLayoutComponent } from '@cacheplane/example-layouts'; -import { agent, toAgent } from '@cacheplane/langgraph'; -import { signalStateStore } from '@cacheplane/render'; +import { ChatComponent, views } from '@ngaf/chat'; +import { ExampleChatLayoutComponent } from '@ngaf/example-layouts'; +import { agent, toAgent } from '@ngaf/langgraph'; +import { signalStateStore } from '@ngaf/render'; import { environment } from '../environments/environment'; import { CalculatorResultComponent } from './views/calculator-result.component'; import { WordCountResultComponent } from './views/word-count-result.component'; diff --git a/cockpit/deep-agents/skills/python/docs/guide.md b/cockpit/deep-agents/skills/python/docs/guide.md index f677098c1..50a7a40db 100644 --- a/cockpit/deep-agents/skills/python/docs/guide.md +++ b/cockpit/deep-agents/skills/python/docs/guide.md @@ -2,12 +2,12 @@ Build a chat interface that shows real-time skill invocations using `agent()` from -`@cacheplane/langgraph`. The agent selects from specialized tools (calculator, word counter, +`@ngaf/langgraph`. The agent selects from specialized tools (calculator, word counter, summarizer) based on the user's request, and the sidebar displays each skill invocation as a card. -Add a skill invocation sidebar to this Angular component using `agent()` from `@cacheplane/langgraph`. Use `stream.messages()` to access tool call data, derive `skillInvocations` with `computed()`, and bind them to the sidebar via the `` component from `@cacheplane/chat`. +Add a skill invocation sidebar to this Angular component using `agent()` from `@ngaf/langgraph`. Use `stream.messages()` to access tool call data, derive `skillInvocations` with `computed()`, and bind them to the sidebar via the `` component from `@ngaf/chat`. @@ -18,7 +18,7 @@ Set up `provideAgent()` in your app config with the LangGraph API URL: ```typescript // app.config.ts import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; +import { provideAgent } from '@ngaf/langgraph'; export const appConfig: ApplicationConfig = { providers: [ @@ -38,7 +38,7 @@ In your component, call `agent()` with the `assistantId` pointing to your skills ```typescript // skills.component.ts -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; export class SkillsComponent { protected readonly stream = agent({ diff --git a/cockpit/deep-agents/skills/python/package.json b/cockpit/deep-agents/skills/python/package.json index 9085b3057..cbd917090 100644 --- a/cockpit/deep-agents/skills/python/package.json +++ b/cockpit/deep-agents/skills/python/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/cockpit-deep-agents-skills-python", + "name": "@ngaf/cockpit-deep-agents-skills-python", "version": "0.0.1", "license": "MIT", "sideEffects": false diff --git a/cockpit/deep-agents/subagents/angular/package.json b/cockpit/deep-agents/subagents/angular/package.json index 8416252a2..defa7374c 100644 --- a/cockpit/deep-agents/subagents/angular/package.json +++ b/cockpit/deep-agents/subagents/angular/package.json @@ -1,9 +1,9 @@ { - "name": "@cacheplane/cockpit-deep-agents-subagents-angular", + "name": "@ngaf/cockpit-deep-agents-subagents-angular", "version": "0.0.1", "peerDependencies": { - "@cacheplane/chat": "^0.0.1", - "@cacheplane/langgraph": "^0.0.1", + "@ngaf/chat": "^0.0.1", + "@ngaf/langgraph": "^0.0.1", "@langchain/langgraph-sdk": "^0.0.36" }, "license": "MIT", diff --git a/cockpit/deep-agents/subagents/angular/prompts/subagents.md b/cockpit/deep-agents/subagents/angular/prompts/subagents.md index 0282ea0b0..a1d67b66b 100644 --- a/cockpit/deep-agents/subagents/angular/prompts/subagents.md +++ b/cockpit/deep-agents/subagents/angular/prompts/subagents.md @@ -1,5 +1,5 @@ # Deep Agents Subagents (Angular) -This capability demonstrates an orchestrator agent that delegates work to specialised subagents using the `@cacheplane/chat` Angular component library. The `` component shows the full delegation trace — which subagent was called, with what instructions, and what it returned — giving developers complete observability into multi-agent coordination. +This capability demonstrates an orchestrator agent that delegates work to specialised subagents using the `@ngaf/chat` Angular component library. The `` component shows the full delegation trace — which subagent was called, with what instructions, and what it returned — giving developers complete observability into multi-agent coordination. Key components used: ``. Each subagent invocation appears as a collapsible trace node labelled with the subagent's identity, making it straightforward to audit delegation chains, spot redundant calls, and verify that each subagent received the correct context. diff --git a/cockpit/deep-agents/subagents/angular/src/app/app.config.ts b/cockpit/deep-agents/subagents/angular/src/app/app.config.ts index bc07aa807..c37f8a0e2 100644 --- a/cockpit/deep-agents/subagents/angular/src/app/app.config.ts +++ b/cockpit/deep-agents/subagents/angular/src/app/app.config.ts @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; -import { provideChat } from '@cacheplane/chat'; -import { provideRender } from '@cacheplane/render'; +import { provideAgent } from '@ngaf/langgraph'; +import { provideChat } from '@ngaf/chat'; +import { provideRender } from '@ngaf/render'; import { environment } from '../environments/environment'; export const appConfig: ApplicationConfig = { diff --git a/cockpit/deep-agents/subagents/angular/src/app/subagents.component.ts b/cockpit/deep-agents/subagents/angular/src/app/subagents.component.ts index 23370e5c1..60d75a5e2 100644 --- a/cockpit/deep-agents/subagents/angular/src/app/subagents.component.ts +++ b/cockpit/deep-agents/subagents/angular/src/app/subagents.component.ts @@ -1,7 +1,7 @@ import { Component, computed } from '@angular/core'; -import { ChatComponent } from '@cacheplane/chat'; -import { ExampleChatLayoutComponent } from '@cacheplane/example-layouts'; -import { agent, toAgent } from '@cacheplane/langgraph'; +import { ChatComponent } from '@ngaf/chat'; +import { ExampleChatLayoutComponent } from '@ngaf/example-layouts'; +import { agent, toAgent } from '@ngaf/langgraph'; import { environment } from '../environments/environment'; /** diff --git a/cockpit/deep-agents/subagents/python/docs/guide.md b/cockpit/deep-agents/subagents/python/docs/guide.md index 8a785109c..f2ec2ed32 100644 --- a/cockpit/deep-agents/subagents/python/docs/guide.md +++ b/cockpit/deep-agents/subagents/python/docs/guide.md @@ -2,12 +2,12 @@ Build a chat interface that shows real-time subagent activity using `agent()` from -`@cacheplane/langgraph`. An orchestrator agent delegates subtasks to specialist child +`@ngaf/langgraph`. An orchestrator agent delegates subtasks to specialist child agents, and the sidebar displays each subagent's status and message count as they stream. -Add a subagent activity sidebar to this Angular component using `agent()` from `@cacheplane/langgraph`. Use `stream.subagents()` to access the live Map of child agent streams, derive `subagentEntries` with `computed()`, and render them in the `` sidebar. +Add a subagent activity sidebar to this Angular component using `agent()` from `@ngaf/langgraph`. Use `stream.subagents()` to access the live Map of child agent streams, derive `subagentEntries` with `computed()`, and render them in the `` sidebar. @@ -18,7 +18,7 @@ Set up `provideAgent()` in your app config with the LangGraph API URL: ```typescript // app.config.ts import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; +import { provideAgent } from '@ngaf/langgraph'; export const appConfig: ApplicationConfig = { providers: [ @@ -38,7 +38,7 @@ In your component, call `agent()` with the `assistantId` pointing to your subage ```typescript // subagents.component.ts -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; export class SubagentsComponent { protected readonly stream = agent({ diff --git a/cockpit/deep-agents/subagents/python/package.json b/cockpit/deep-agents/subagents/python/package.json index b5070d2cc..6344b5de1 100644 --- a/cockpit/deep-agents/subagents/python/package.json +++ b/cockpit/deep-agents/subagents/python/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/cockpit-deep-agents-subagents-python", + "name": "@ngaf/cockpit-deep-agents-subagents-python", "version": "0.0.1", "license": "MIT", "sideEffects": false diff --git a/cockpit/langgraph/deployment-runtime/angular/package.json b/cockpit/langgraph/deployment-runtime/angular/package.json index 40f7841fd..92e85a39e 100644 --- a/cockpit/langgraph/deployment-runtime/angular/package.json +++ b/cockpit/langgraph/deployment-runtime/angular/package.json @@ -1,9 +1,9 @@ { - "name": "@cacheplane/cockpit-langgraph-deployment-runtime-angular", + "name": "@ngaf/cockpit-langgraph-deployment-runtime-angular", "version": "0.0.1", "peerDependencies": { - "@cacheplane/chat": "^0.0.1", - "@cacheplane/langgraph": "^0.0.1", + "@ngaf/chat": "^0.0.1", + "@ngaf/langgraph": "^0.0.1", "@langchain/langgraph-sdk": "^0.0.36" }, "license": "MIT", diff --git a/cockpit/langgraph/deployment-runtime/angular/prompts/deployment-runtime.md b/cockpit/langgraph/deployment-runtime/angular/prompts/deployment-runtime.md index 6ba1ffaca..e6f1de785 100644 --- a/cockpit/langgraph/deployment-runtime/angular/prompts/deployment-runtime.md +++ b/cockpit/langgraph/deployment-runtime/angular/prompts/deployment-runtime.md @@ -1,5 +1,5 @@ # LangGraph Deployment & Runtime (Angular) -This capability demonstrates production deployment patterns for LangGraph agents — including environment-specific base URLs, authentication headers, and assistant resolution — using the `@cacheplane/chat` Angular component library. The `` component is configured through Angular's dependency injection system, making it straightforward to swap between local development, staging, and production LangGraph Cloud deployments. +This capability demonstrates production deployment patterns for LangGraph agents — including environment-specific base URLs, authentication headers, and assistant resolution — using the `@ngaf/chat` Angular component library. The `` component is configured through Angular's dependency injection system, making it straightforward to swap between local development, staging, and production LangGraph Cloud deployments. Key components used: ``. Configuration is provided via an Angular environment token injected into `agent`, keeping all deployment concerns out of the component template and enabling zero-code environment switches at build time. diff --git a/cockpit/langgraph/deployment-runtime/angular/src/app/app.config.ts b/cockpit/langgraph/deployment-runtime/angular/src/app/app.config.ts index 0ef67aee5..be14b0243 100644 --- a/cockpit/langgraph/deployment-runtime/angular/src/app/app.config.ts +++ b/cockpit/langgraph/deployment-runtime/angular/src/app/app.config.ts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; -import { provideChat } from '@cacheplane/chat'; +import { provideAgent } from '@ngaf/langgraph'; +import { provideChat } from '@ngaf/chat'; import { environment } from '../environments/environment'; export const appConfig: ApplicationConfig = { diff --git a/cockpit/langgraph/deployment-runtime/angular/src/app/deployment-runtime.component.ts b/cockpit/langgraph/deployment-runtime/angular/src/app/deployment-runtime.component.ts index 9ba189e68..f52f48c36 100644 --- a/cockpit/langgraph/deployment-runtime/angular/src/app/deployment-runtime.component.ts +++ b/cockpit/langgraph/deployment-runtime/angular/src/app/deployment-runtime.component.ts @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT import { Component } from '@angular/core'; -import { ChatComponent } from '@cacheplane/chat'; -import { agent, toAgent } from '@cacheplane/langgraph'; -import { ExampleChatLayoutComponent } from '@cacheplane/example-layouts'; +import { ChatComponent } from '@ngaf/chat'; +import { agent, toAgent } from '@ngaf/langgraph'; +import { ExampleChatLayoutComponent } from '@ngaf/example-layouts'; import { environment } from '../environments/environment'; /** diff --git a/cockpit/langgraph/deployment-runtime/python/docs/guide.md b/cockpit/langgraph/deployment-runtime/python/docs/guide.md index 536e17a05..f1853e4da 100644 --- a/cockpit/langgraph/deployment-runtime/python/docs/guide.md +++ b/cockpit/langgraph/deployment-runtime/python/docs/guide.md @@ -2,13 +2,13 @@ Deploy a LangGraph graph to LangGraph Cloud and connect an Angular app using -`agent()` from `@cacheplane/langgraph`. This tutorial covers +`agent()` from `@ngaf/langgraph`. This tutorial covers `langgraph deploy`, environment configuration, Vercel hosting for Angular, and CI automation. -Build a production-ready Angular chat app that connects to a LangGraph Cloud deployment using `agent()` from `@cacheplane/langgraph`. Configure the `apiUrl` to point to your deployed LangGraph Cloud endpoint and set `assistantId` to match the graph name in `langgraph.json`. Display the deployment status via `stream.status()` and show the thread ID from the `onThreadId` callback. +Build a production-ready Angular chat app that connects to a LangGraph Cloud deployment using `agent()` from `@ngaf/langgraph`. Configure the `apiUrl` to point to your deployed LangGraph Cloud endpoint and set `assistantId` to match the graph name in `langgraph.json`. Display the deployment status via `stream.status()` and show the thread ID from the `onThreadId` callback. @@ -76,7 +76,7 @@ In your component, pass the deployment URL and assistant ID to `agent()`: ```typescript // deployment-runtime.component.ts -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; import { environment } from '../environments/environment'; export class DeploymentRuntimeComponent { diff --git a/cockpit/langgraph/deployment-runtime/python/package.json b/cockpit/langgraph/deployment-runtime/python/package.json index 93bceb30d..9c498bc7e 100644 --- a/cockpit/langgraph/deployment-runtime/python/package.json +++ b/cockpit/langgraph/deployment-runtime/python/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/cockpit-langgraph-deployment-runtime-python", + "name": "@ngaf/cockpit-langgraph-deployment-runtime-python", "version": "0.0.1", "license": "MIT", "sideEffects": false diff --git a/cockpit/langgraph/deployment-runtime/python/tsconfig.json b/cockpit/langgraph/deployment-runtime/python/tsconfig.json index 6a06e7124..b8e8652a7 100644 --- a/cockpit/langgraph/deployment-runtime/python/tsconfig.json +++ b/cockpit/langgraph/deployment-runtime/python/tsconfig.json @@ -7,7 +7,7 @@ "declaration": true, "emitDeclarationOnly": false, "paths": { - "@cacheplane/cockpit-registry": ["libs/cockpit-registry/src/index.ts"] + "@ngaf/cockpit-registry": ["libs/cockpit-registry/src/index.ts"] }, "types": ["node", "react"] }, diff --git a/cockpit/langgraph/durable-execution/angular/package.json b/cockpit/langgraph/durable-execution/angular/package.json index 5bac4c1b7..e4c0c3094 100644 --- a/cockpit/langgraph/durable-execution/angular/package.json +++ b/cockpit/langgraph/durable-execution/angular/package.json @@ -1,9 +1,9 @@ { - "name": "@cacheplane/cockpit-langgraph-durable-execution-angular", + "name": "@ngaf/cockpit-langgraph-durable-execution-angular", "version": "0.0.1", "peerDependencies": { - "@cacheplane/chat": "^0.0.1", - "@cacheplane/langgraph": "^0.0.1", + "@ngaf/chat": "^0.0.1", + "@ngaf/langgraph": "^0.0.1", "@langchain/langgraph-sdk": "^0.0.36" }, "license": "MIT", diff --git a/cockpit/langgraph/durable-execution/angular/prompts/durable-execution.md b/cockpit/langgraph/durable-execution/angular/prompts/durable-execution.md index 0fcf6a4e4..a8a0ece82 100644 --- a/cockpit/langgraph/durable-execution/angular/prompts/durable-execution.md +++ b/cockpit/langgraph/durable-execution/angular/prompts/durable-execution.md @@ -1,5 +1,5 @@ # LangGraph Durable Execution (Angular) -This capability demonstrates LangGraph's durable execution guarantees — automatic retry, reconnection, and resumption after network interruptions — using the `@cacheplane/chat` Angular component library. The `` component surfaces transient failures with a one-click reconnect affordance, while `agent` handles exponential back-off and checkpoint-based resumption transparently. +This capability demonstrates LangGraph's durable execution guarantees — automatic retry, reconnection, and resumption after network interruptions — using the `@ngaf/chat` Angular component library. The `` component surfaces transient failures with a one-click reconnect affordance, while `agent` handles exponential back-off and checkpoint-based resumption transparently. Key components used: ``, ``. When the SSE stream is interrupted, `` replaces the typing indicator with an error banner; once the user reconnects (or `agent` auto-retries), the component dismisses automatically and the stream resumes from the last persisted checkpoint. diff --git a/cockpit/langgraph/durable-execution/angular/src/app/app.config.ts b/cockpit/langgraph/durable-execution/angular/src/app/app.config.ts index 0ef67aee5..be14b0243 100644 --- a/cockpit/langgraph/durable-execution/angular/src/app/app.config.ts +++ b/cockpit/langgraph/durable-execution/angular/src/app/app.config.ts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; -import { provideChat } from '@cacheplane/chat'; +import { provideAgent } from '@ngaf/langgraph'; +import { provideChat } from '@ngaf/chat'; import { environment } from '../environments/environment'; export const appConfig: ApplicationConfig = { diff --git a/cockpit/langgraph/durable-execution/angular/src/app/durable-execution.component.ts b/cockpit/langgraph/durable-execution/angular/src/app/durable-execution.component.ts index 4f7e64f91..f0cc01c42 100644 --- a/cockpit/langgraph/durable-execution/angular/src/app/durable-execution.component.ts +++ b/cockpit/langgraph/durable-execution/angular/src/app/durable-execution.component.ts @@ -1,8 +1,8 @@ import { Component, computed } from '@angular/core'; -import { ChatComponent, views } from '@cacheplane/chat'; -import { agent, toAgent } from '@cacheplane/langgraph'; -import { signalStateStore } from '@cacheplane/render'; -import { ExampleChatLayoutComponent } from '@cacheplane/example-layouts'; +import { ChatComponent, views } from '@ngaf/chat'; +import { agent, toAgent } from '@ngaf/langgraph'; +import { signalStateStore } from '@ngaf/render'; +import { ExampleChatLayoutComponent } from '@ngaf/example-layouts'; import { environment } from '../environments/environment'; import { StepPipelineComponent } from './views/step-pipeline.component'; diff --git a/cockpit/langgraph/durable-execution/python/docs/guide.md b/cockpit/langgraph/durable-execution/python/docs/guide.md index 076389f92..2c3e1d759 100644 --- a/cockpit/langgraph/durable-execution/python/docs/guide.md +++ b/cockpit/langgraph/durable-execution/python/docs/guide.md @@ -2,13 +2,13 @@ Build a fault-tolerant chat interface using `agent()` from -`@cacheplane/langgraph`. The backend graph checkpoints state after +`@ngaf/langgraph`. The backend graph checkpoints state after each node, enabling resume-on-failure. The sidebar monitors execution status in real time and exposes a "Retry" button when errors occur. -Add a durable multi-step execution workflow to this Angular component using `agent()` from `@cacheplane/langgraph`. Display `stream.status()` as a colour-coded badge, show a `stream.hasValue()` indicator, and render a "Retry" button that calls `stream.reload()` when `stream.error()` is set. Bind `stream.messages()` in the template via the `` component from `@cacheplane/chat`. +Add a durable multi-step execution workflow to this Angular component using `agent()` from `@ngaf/langgraph`. Display `stream.status()` as a colour-coded badge, show a `stream.hasValue()` indicator, and render a "Retry" button that calls `stream.reload()` when `stream.error()` is set. Bind `stream.messages()` in the template via the `` component from `@ngaf/chat`. @@ -19,7 +19,7 @@ Set up `provideAgent()` in your app config with the LangGraph API URL: ```typescript // app.config.ts import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; +import { provideAgent } from '@ngaf/langgraph'; export const appConfig: ApplicationConfig = { providers: [ @@ -39,7 +39,7 @@ In your component, call `agent()` with the `assistantId` pointing to your durabl ```typescript // durable-execution.component.ts -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; export class DurableExecutionComponent { protected readonly stream = agent({ diff --git a/cockpit/langgraph/durable-execution/python/package.json b/cockpit/langgraph/durable-execution/python/package.json index 036775fc1..d94840bef 100644 --- a/cockpit/langgraph/durable-execution/python/package.json +++ b/cockpit/langgraph/durable-execution/python/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/cockpit-langgraph-durable-execution-python", + "name": "@ngaf/cockpit-langgraph-durable-execution-python", "version": "0.0.1", "license": "MIT", "sideEffects": false diff --git a/cockpit/langgraph/durable-execution/python/tsconfig.json b/cockpit/langgraph/durable-execution/python/tsconfig.json index 6a06e7124..b8e8652a7 100644 --- a/cockpit/langgraph/durable-execution/python/tsconfig.json +++ b/cockpit/langgraph/durable-execution/python/tsconfig.json @@ -7,7 +7,7 @@ "declaration": true, "emitDeclarationOnly": false, "paths": { - "@cacheplane/cockpit-registry": ["libs/cockpit-registry/src/index.ts"] + "@ngaf/cockpit-registry": ["libs/cockpit-registry/src/index.ts"] }, "types": ["node", "react"] }, diff --git a/cockpit/langgraph/interrupts/angular/package.json b/cockpit/langgraph/interrupts/angular/package.json index 32f04608e..fa863ccff 100644 --- a/cockpit/langgraph/interrupts/angular/package.json +++ b/cockpit/langgraph/interrupts/angular/package.json @@ -1,9 +1,9 @@ { - "name": "@cacheplane/cockpit-langgraph-interrupts-angular", + "name": "@ngaf/cockpit-langgraph-interrupts-angular", "version": "0.0.1", "peerDependencies": { - "@cacheplane/chat": "^0.0.1", - "@cacheplane/langgraph": "^0.0.1", + "@ngaf/chat": "^0.0.1", + "@ngaf/langgraph": "^0.0.1", "@langchain/langgraph-sdk": "^0.0.36" }, "license": "MIT", diff --git a/cockpit/langgraph/interrupts/angular/prompts/interrupts.md b/cockpit/langgraph/interrupts/angular/prompts/interrupts.md index 51d09138b..c9fdb0199 100644 --- a/cockpit/langgraph/interrupts/angular/prompts/interrupts.md +++ b/cockpit/langgraph/interrupts/angular/prompts/interrupts.md @@ -1,5 +1,5 @@ # LangGraph Interrupts (Angular) -This capability demonstrates human-in-the-loop interrupt handling using LangGraph's `interrupt()` primitive and the `@cacheplane/chat` Angular component library. When the graph pauses at an interrupt node, the `` surfaces the pending decision to the user; their response is submitted back to the graph via `agent`'s `resume` helper. +This capability demonstrates human-in-the-loop interrupt handling using LangGraph's `interrupt()` primitive and the `@ngaf/chat` Angular component library. When the graph pauses at an interrupt node, the `` surfaces the pending decision to the user; their response is submitted back to the graph via `agent`'s `resume` helper. Key components used: ``, ``. The interrupt panel renders inside the chat host and becomes visible automatically whenever the underlying agent detects a pending interrupt in the thread state. diff --git a/cockpit/langgraph/interrupts/angular/src/app/app.config.ts b/cockpit/langgraph/interrupts/angular/src/app/app.config.ts index 0ef67aee5..be14b0243 100644 --- a/cockpit/langgraph/interrupts/angular/src/app/app.config.ts +++ b/cockpit/langgraph/interrupts/angular/src/app/app.config.ts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; -import { provideChat } from '@cacheplane/chat'; +import { provideAgent } from '@ngaf/langgraph'; +import { provideChat } from '@ngaf/chat'; import { environment } from '../environments/environment'; export const appConfig: ApplicationConfig = { diff --git a/cockpit/langgraph/interrupts/angular/src/app/interrupts.component.ts b/cockpit/langgraph/interrupts/angular/src/app/interrupts.component.ts index 0eda01638..148dd7499 100644 --- a/cockpit/langgraph/interrupts/angular/src/app/interrupts.component.ts +++ b/cockpit/langgraph/interrupts/angular/src/app/interrupts.component.ts @@ -1,9 +1,9 @@ // SPDX-License-Identifier: MIT import { Component } from '@angular/core'; -import { ChatComponent, ChatInterruptPanelComponent, views, type InterruptAction } from '@cacheplane/chat'; -import { agent, toAgent } from '@cacheplane/langgraph'; -import { ExampleChatLayoutComponent } from '@cacheplane/example-layouts'; -import { signalStateStore } from '@cacheplane/render'; +import { ChatComponent, ChatInterruptPanelComponent, views, type InterruptAction } from '@ngaf/chat'; +import { agent, toAgent } from '@ngaf/langgraph'; +import { ExampleChatLayoutComponent } from '@ngaf/example-layouts'; +import { signalStateStore } from '@ngaf/render'; import { environment } from '../environments/environment'; import { ApprovalCardComponent } from './views/approval-card.component'; diff --git a/cockpit/langgraph/interrupts/python/docs/guide.md b/cockpit/langgraph/interrupts/python/docs/guide.md index 66f35d5e6..3befc050a 100644 --- a/cockpit/langgraph/interrupts/python/docs/guide.md +++ b/cockpit/langgraph/interrupts/python/docs/guide.md @@ -2,12 +2,12 @@ Build a chat interface with human-in-the-loop approval using `agent()` from -`@cacheplane/langgraph`. The LangGraph backend pauses execution for approval, +`@ngaf/langgraph`. The LangGraph backend pauses execution for approval, and the frontend resumes it with `stream.submit()`. -Add human-in-the-loop approval to this Angular component using `agent()` from `@cacheplane/langgraph`. Use `stream.interrupt()` to display pending approvals, `stream.submit(null)` to approve and resume execution, and `stream.submit({ resume: false })` to reject. Bind `stream.messages()` in the template via the `` component from `@cacheplane/chat`. +Add human-in-the-loop approval to this Angular component using `agent()` from `@ngaf/langgraph`. Use `stream.interrupt()` to display pending approvals, `stream.submit(null)` to approve and resume execution, and `stream.submit({ resume: false })` to reject. Bind `stream.messages()` in the template via the `` component from `@ngaf/chat`. @@ -18,7 +18,7 @@ Set up `provideAgent()` in your app config with the LangGraph API URL: ```typescript // app.config.ts import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; +import { provideAgent } from '@ngaf/langgraph'; export const appConfig: ApplicationConfig = { providers: [ @@ -38,7 +38,7 @@ In your component, call `agent()` with the assistant ID that maps to your interr ```typescript // interrupts.component.ts -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; export class InterruptsComponent { protected readonly stream = agent({ diff --git a/cockpit/langgraph/interrupts/python/package.json b/cockpit/langgraph/interrupts/python/package.json index 216502dd0..4e28382c5 100644 --- a/cockpit/langgraph/interrupts/python/package.json +++ b/cockpit/langgraph/interrupts/python/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/cockpit-langgraph-interrupts-python", + "name": "@ngaf/cockpit-langgraph-interrupts-python", "version": "0.0.1", "license": "MIT", "sideEffects": false diff --git a/cockpit/langgraph/interrupts/python/tsconfig.json b/cockpit/langgraph/interrupts/python/tsconfig.json index 6a06e7124..b8e8652a7 100644 --- a/cockpit/langgraph/interrupts/python/tsconfig.json +++ b/cockpit/langgraph/interrupts/python/tsconfig.json @@ -7,7 +7,7 @@ "declaration": true, "emitDeclarationOnly": false, "paths": { - "@cacheplane/cockpit-registry": ["libs/cockpit-registry/src/index.ts"] + "@ngaf/cockpit-registry": ["libs/cockpit-registry/src/index.ts"] }, "types": ["node", "react"] }, diff --git a/cockpit/langgraph/memory/angular/package.json b/cockpit/langgraph/memory/angular/package.json index f1141b6df..b4bb470be 100644 --- a/cockpit/langgraph/memory/angular/package.json +++ b/cockpit/langgraph/memory/angular/package.json @@ -1,9 +1,9 @@ { - "name": "@cacheplane/cockpit-langgraph-memory-angular", + "name": "@ngaf/cockpit-langgraph-memory-angular", "version": "0.0.1", "peerDependencies": { - "@cacheplane/chat": "^0.0.1", - "@cacheplane/langgraph": "^0.0.1", + "@ngaf/chat": "^0.0.1", + "@ngaf/langgraph": "^0.0.1", "@langchain/langgraph-sdk": "^0.0.36" }, "license": "MIT", diff --git a/cockpit/langgraph/memory/angular/prompts/memory.md b/cockpit/langgraph/memory/angular/prompts/memory.md index f74a8f0c1..4cbd32f18 100644 --- a/cockpit/langgraph/memory/angular/prompts/memory.md +++ b/cockpit/langgraph/memory/angular/prompts/memory.md @@ -1,5 +1,5 @@ # LangGraph Memory (Angular) -This capability demonstrates cross-thread memory using LangGraph's persistent memory store and the `@cacheplane/chat` Angular component library. Facts and preferences written by the agent in one thread are automatically recalled in subsequent threads, giving the user a coherent long-term experience across sessions. +This capability demonstrates cross-thread memory using LangGraph's persistent memory store and the `@ngaf/chat` Angular component library. Facts and preferences written by the agent in one thread are automatically recalled in subsequent threads, giving the user a coherent long-term experience across sessions. Key components used: `` with a thread list sidebar. Each new `agent` ref carries the same `userId` namespace so the LangGraph memory store can surface relevant memories regardless of which thread is active. diff --git a/cockpit/langgraph/memory/angular/src/app/app.config.ts b/cockpit/langgraph/memory/angular/src/app/app.config.ts index 0ef67aee5..be14b0243 100644 --- a/cockpit/langgraph/memory/angular/src/app/app.config.ts +++ b/cockpit/langgraph/memory/angular/src/app/app.config.ts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; -import { provideChat } from '@cacheplane/chat'; +import { provideAgent } from '@ngaf/langgraph'; +import { provideChat } from '@ngaf/chat'; import { environment } from '../environments/environment'; export const appConfig: ApplicationConfig = { diff --git a/cockpit/langgraph/memory/angular/src/app/memory.component.ts b/cockpit/langgraph/memory/angular/src/app/memory.component.ts index 5dd5aaf62..9458d0a69 100644 --- a/cockpit/langgraph/memory/angular/src/app/memory.component.ts +++ b/cockpit/langgraph/memory/angular/src/app/memory.component.ts @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT import { Component, computed } from '@angular/core'; -import { ChatComponent } from '@cacheplane/chat'; -import { agent, toAgent } from '@cacheplane/langgraph'; -import { ExampleChatLayoutComponent } from '@cacheplane/example-layouts'; +import { ChatComponent } from '@ngaf/chat'; +import { agent, toAgent } from '@ngaf/langgraph'; +import { ExampleChatLayoutComponent } from '@ngaf/example-layouts'; import { environment } from '../environments/environment'; /** diff --git a/cockpit/langgraph/memory/python/docs/guide.md b/cockpit/langgraph/memory/python/docs/guide.md index d760bc355..df8d78797 100644 --- a/cockpit/langgraph/memory/python/docs/guide.md +++ b/cockpit/langgraph/memory/python/docs/guide.md @@ -8,7 +8,7 @@ and displays it in a live sidebar. -Add persistent agent memory to this Angular component using `agent()` from `@cacheplane/langgraph`. Use `stream.value()` to access the `memory` field in graph state, derive a reactive `memoryEntries` signal with Angular's `computed()`, and render the facts in a sidebar panel via the `` component from `@cacheplane/chat`. +Add persistent agent memory to this Angular component using `agent()` from `@ngaf/langgraph`. Use `stream.value()` to access the `memory` field in graph state, derive a reactive `memoryEntries` signal with Angular's `computed()`, and render the facts in a sidebar panel via the `` component from `@ngaf/chat`. @@ -19,7 +19,7 @@ Set up `provideAgent()` in your app config with the LangGraph API URL: ```typescript // app.config.ts import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; +import { provideAgent } from '@ngaf/langgraph'; export const appConfig: ApplicationConfig = { providers: [ @@ -37,7 +37,7 @@ In your component, call `agent()` pointing at the `memory` assistant: ```typescript // memory.component.ts -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; export class MemoryComponent { protected readonly stream = agent({ diff --git a/cockpit/langgraph/memory/python/package.json b/cockpit/langgraph/memory/python/package.json index 00de5aca8..7b554205e 100644 --- a/cockpit/langgraph/memory/python/package.json +++ b/cockpit/langgraph/memory/python/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/cockpit-langgraph-memory-python", + "name": "@ngaf/cockpit-langgraph-memory-python", "version": "0.0.1", "license": "MIT", "sideEffects": false diff --git a/cockpit/langgraph/memory/python/tsconfig.json b/cockpit/langgraph/memory/python/tsconfig.json index 6a06e7124..b8e8652a7 100644 --- a/cockpit/langgraph/memory/python/tsconfig.json +++ b/cockpit/langgraph/memory/python/tsconfig.json @@ -7,7 +7,7 @@ "declaration": true, "emitDeclarationOnly": false, "paths": { - "@cacheplane/cockpit-registry": ["libs/cockpit-registry/src/index.ts"] + "@ngaf/cockpit-registry": ["libs/cockpit-registry/src/index.ts"] }, "types": ["node", "react"] }, diff --git a/cockpit/langgraph/persistence/angular/package.json b/cockpit/langgraph/persistence/angular/package.json index 485085e26..a05981285 100644 --- a/cockpit/langgraph/persistence/angular/package.json +++ b/cockpit/langgraph/persistence/angular/package.json @@ -1,9 +1,9 @@ { - "name": "@cacheplane/cockpit-langgraph-persistence-angular", + "name": "@ngaf/cockpit-langgraph-persistence-angular", "version": "0.0.1", "peerDependencies": { - "@cacheplane/chat": "^0.0.1", - "@cacheplane/langgraph": "^0.0.1", + "@ngaf/chat": "^0.0.1", + "@ngaf/langgraph": "^0.0.1", "@langchain/langgraph-sdk": "^0.0.36" }, "license": "MIT", diff --git a/cockpit/langgraph/persistence/angular/prompts/persistence.md b/cockpit/langgraph/persistence/angular/prompts/persistence.md index b4c85491d..7cc02cccc 100644 --- a/cockpit/langgraph/persistence/angular/prompts/persistence.md +++ b/cockpit/langgraph/persistence/angular/prompts/persistence.md @@ -1,5 +1,5 @@ # LangGraph Persistence (Angular) -This capability demonstrates persisted conversation threads using LangGraph checkpointers and the `@cacheplane/chat` Angular component library. The `` component is paired with a thread list so users can switch between saved conversations — each backed by a LangGraph thread ID — without losing history. +This capability demonstrates persisted conversation threads using LangGraph checkpointers and the `@ngaf/chat` Angular component library. The `` component is paired with a thread list so users can switch between saved conversations — each backed by a LangGraph thread ID — without losing history. Key components used: `` with a thread list sidebar driven by the LangGraph Threads API. The `agent` ref is re-initialised with a new `threadId` whenever the user selects a different thread, and the chat view replays the persisted checkpoint automatically. diff --git a/cockpit/langgraph/persistence/angular/src/app/app.config.ts b/cockpit/langgraph/persistence/angular/src/app/app.config.ts index 0ef67aee5..be14b0243 100644 --- a/cockpit/langgraph/persistence/angular/src/app/app.config.ts +++ b/cockpit/langgraph/persistence/angular/src/app/app.config.ts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; -import { provideChat } from '@cacheplane/chat'; +import { provideAgent } from '@ngaf/langgraph'; +import { provideChat } from '@ngaf/chat'; import { environment } from '../environments/environment'; export const appConfig: ApplicationConfig = { diff --git a/cockpit/langgraph/persistence/angular/src/app/persistence.component.ts b/cockpit/langgraph/persistence/angular/src/app/persistence.component.ts index b88226559..9e4b9ca0a 100644 --- a/cockpit/langgraph/persistence/angular/src/app/persistence.component.ts +++ b/cockpit/langgraph/persistence/angular/src/app/persistence.component.ts @@ -1,7 +1,7 @@ import { Component, signal } from '@angular/core'; -import { ChatComponent } from '@cacheplane/chat'; -import { agent, toAgent } from '@cacheplane/langgraph'; -import { ExampleChatLayoutComponent } from '@cacheplane/example-layouts'; +import { ChatComponent } from '@ngaf/chat'; +import { agent, toAgent } from '@ngaf/langgraph'; +import { ExampleChatLayoutComponent } from '@ngaf/example-layouts'; import { environment } from '../environments/environment'; interface Thread { diff --git a/cockpit/langgraph/persistence/python/docs/guide.md b/cockpit/langgraph/persistence/python/docs/guide.md index 636eaedbf..ab7723771 100644 --- a/cockpit/langgraph/persistence/python/docs/guide.md +++ b/cockpit/langgraph/persistence/python/docs/guide.md @@ -2,12 +2,12 @@ Build a chat interface with thread persistence using `agent()` from -`@cacheplane/langgraph`. Conversations survive browser refreshes and +`@ngaf/langgraph`. Conversations survive browser refreshes and can be resumed using `stream.switchThread(id)`. -Add thread persistence to this Angular component using `agent()` from `@cacheplane/langgraph`. Use the `onThreadId` callback to capture thread IDs, `stream.switchThread(id)` to resume conversations, and `stream.switchThread(null)` to start fresh. Bind `stream.messages()` in the template via the `` component from `@cacheplane/chat`. +Add thread persistence to this Angular component using `agent()` from `@ngaf/langgraph`. Use the `onThreadId` callback to capture thread IDs, `stream.switchThread(id)` to resume conversations, and `stream.switchThread(null)` to start fresh. Bind `stream.messages()` in the template via the `` component from `@ngaf/chat`. @@ -18,7 +18,7 @@ Set up `provideAgent()` in your app config with the LangGraph API URL: ```typescript // app.config.ts import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; +import { provideAgent } from '@ngaf/langgraph'; export const appConfig: ApplicationConfig = { providers: [ @@ -38,7 +38,7 @@ In your component, call `agent()` with the `onThreadId` callback to capture new ```typescript // persistence.component.ts -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; export class PersistenceComponent { protected readonly stream = agent({ @@ -63,7 +63,7 @@ Store thread IDs in `localStorage` to survive full page reloads. On app init, re -Use the `` component from `@cacheplane/chat` and project a sidebar via `ng-template`: +Use the `` component from `@ngaf/chat` and project a sidebar via `ng-template`: ```html ` host component and compose ``, ``, and `` to deliver a responsive, streaming chat experience. +This capability demonstrates real-time token streaming from a LangGraph agent using the `@ngaf/chat` Angular component library. The example shows how to wire a `agent` ref into the `` host component and compose ``, ``, and `` to deliver a responsive, streaming chat experience. Key components used: ``, ``, ``, ``. The `agent` signal handles SSE fan-out from the LangGraph streaming endpoint, and the chat components subscribe reactively without any manual subscription management. diff --git a/cockpit/langgraph/streaming/angular/src/app/app.config.ts b/cockpit/langgraph/streaming/angular/src/app/app.config.ts index 0ef67aee5..be14b0243 100644 --- a/cockpit/langgraph/streaming/angular/src/app/app.config.ts +++ b/cockpit/langgraph/streaming/angular/src/app/app.config.ts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; -import { provideChat } from '@cacheplane/chat'; +import { provideAgent } from '@ngaf/langgraph'; +import { provideChat } from '@ngaf/chat'; import { environment } from '../environments/environment'; export const appConfig: ApplicationConfig = { diff --git a/cockpit/langgraph/streaming/angular/src/app/streaming.component.ts b/cockpit/langgraph/streaming/angular/src/app/streaming.component.ts index 928464e3d..b92bc99a4 100644 --- a/cockpit/langgraph/streaming/angular/src/app/streaming.component.ts +++ b/cockpit/langgraph/streaming/angular/src/app/streaming.component.ts @@ -1,12 +1,12 @@ // SPDX-License-Identifier: MIT import { Component } from '@angular/core'; -import { ChatComponent } from '@cacheplane/chat'; -import { agent, toAgent } from '@cacheplane/langgraph'; -import { ExampleChatLayoutComponent } from '@cacheplane/example-layouts'; +import { ChatComponent } from '@ngaf/chat'; +import { agent, toAgent } from '@ngaf/langgraph'; +import { ExampleChatLayoutComponent } from '@ngaf/example-layouts'; import { environment } from '../environments/environment'; /** - * Streaming demo — simplest possible @cacheplane/chat integration. + * Streaming demo — simplest possible @ngaf/chat integration. * * Creates a agent ref and passes it to the prebuilt * composition. The composition handles message rendering, input, typing diff --git a/cockpit/langgraph/streaming/python/docs/guide.md b/cockpit/langgraph/streaming/python/docs/guide.md index 25b33b409..5533eb653 100644 --- a/cockpit/langgraph/streaming/python/docs/guide.md +++ b/cockpit/langgraph/streaming/python/docs/guide.md @@ -2,11 +2,11 @@ Build a real-time streaming chat interface using `agent()` from -`@cacheplane/langgraph` connected to a LangGraph backend on LangSmith Cloud. +`@ngaf/langgraph` connected to a LangGraph backend on LangSmith Cloud. -Add real-time LLM streaming to this Angular component using `agent()` from `@cacheplane/langgraph`. Configure `provideAgent({ apiUrl })` in the app config, then call `stream.submit()` to send messages. Bind `stream.messages()` in the template using `@for` — all Signals, no subscriptions needed. +Add real-time LLM streaming to this Angular component using `agent()` from `@ngaf/langgraph`. Configure `provideAgent({ apiUrl })` in the app config, then call `stream.submit()` to send messages. Bind `stream.messages()` in the template using `@for` — all Signals, no subscriptions needed. @@ -17,7 +17,7 @@ Set up `provideAgent()` in your app config with the LangGraph Cloud URL: ```typescript // app.config.ts import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; +import { provideAgent } from '@ngaf/langgraph'; export const appConfig: ApplicationConfig = { providers: [ @@ -37,7 +37,7 @@ In your component, call `agent()` in a field initializer (injection context requ ```typescript // streaming.component.ts -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; export class StreamingComponent { protected readonly stream = agent({ diff --git a/cockpit/langgraph/streaming/python/package.json b/cockpit/langgraph/streaming/python/package.json index 95593eb69..50343c6bf 100644 --- a/cockpit/langgraph/streaming/python/package.json +++ b/cockpit/langgraph/streaming/python/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/cockpit-langgraph-streaming-python", + "name": "@ngaf/cockpit-langgraph-streaming-python", "version": "0.0.1", "license": "MIT", "sideEffects": false diff --git a/cockpit/langgraph/streaming/python/prompts/input.md b/cockpit/langgraph/streaming/python/prompts/input.md index ed2b23926..d7aeb8bdf 100644 --- a/cockpit/langgraph/streaming/python/prompts/input.md +++ b/cockpit/langgraph/streaming/python/prompts/input.md @@ -1,6 +1,6 @@ # Chat Input Assistant -You are an assistant that demonstrates the ChatInputComponent from @cacheplane/chat. +You are an assistant that demonstrates the ChatInputComponent from @ngaf/chat. Echo back what the user says, and explain the input features being demonstrated: - Custom placeholder text diff --git a/cockpit/langgraph/streaming/python/prompts/messages.md b/cockpit/langgraph/streaming/python/prompts/messages.md index 5553c7818..02977840f 100644 --- a/cockpit/langgraph/streaming/python/prompts/messages.md +++ b/cockpit/langgraph/streaming/python/prompts/messages.md @@ -1,6 +1,6 @@ # Chat Messages Assistant -You are an assistant that demonstrates the chat message primitives from @cacheplane/chat. +You are an assistant that demonstrates the chat message primitives from @ngaf/chat. Your role is to showcase different message types and rendering styles. Use varied response formats including short answers, longer explanations, diff --git a/cockpit/langgraph/streaming/python/prompts/theming.md b/cockpit/langgraph/streaming/python/prompts/theming.md index 88613665f..2503d981a 100644 --- a/cockpit/langgraph/streaming/python/prompts/theming.md +++ b/cockpit/langgraph/streaming/python/prompts/theming.md @@ -1,7 +1,7 @@ # Chat Theming Assistant You are an assistant that demonstrates chat theming and CSS custom -property customization in @cacheplane/chat. +property customization in @ngaf/chat. The chat UI supports extensive theming via CSS custom properties like `--chat-bg`, `--chat-text`, `--chat-accent`, `--chat-surface`, and more. diff --git a/cockpit/langgraph/streaming/python/tsconfig.json b/cockpit/langgraph/streaming/python/tsconfig.json index 6a06e7124..b8e8652a7 100644 --- a/cockpit/langgraph/streaming/python/tsconfig.json +++ b/cockpit/langgraph/streaming/python/tsconfig.json @@ -7,7 +7,7 @@ "declaration": true, "emitDeclarationOnly": false, "paths": { - "@cacheplane/cockpit-registry": ["libs/cockpit-registry/src/index.ts"] + "@ngaf/cockpit-registry": ["libs/cockpit-registry/src/index.ts"] }, "types": ["node", "react"] }, diff --git a/cockpit/langgraph/subgraphs/angular/package.json b/cockpit/langgraph/subgraphs/angular/package.json index e831e9bc8..aa75b3853 100644 --- a/cockpit/langgraph/subgraphs/angular/package.json +++ b/cockpit/langgraph/subgraphs/angular/package.json @@ -1,9 +1,9 @@ { - "name": "@cacheplane/cockpit-langgraph-subgraphs-angular", + "name": "@ngaf/cockpit-langgraph-subgraphs-angular", "version": "0.0.1", "peerDependencies": { - "@cacheplane/chat": "^0.0.1", - "@cacheplane/langgraph": "^0.0.1", + "@ngaf/chat": "^0.0.1", + "@ngaf/langgraph": "^0.0.1", "@langchain/langgraph-sdk": "^0.0.36" }, "license": "MIT", diff --git a/cockpit/langgraph/subgraphs/angular/prompts/subgraphs.md b/cockpit/langgraph/subgraphs/angular/prompts/subgraphs.md index 49b9ae8c7..a93ce7472 100644 --- a/cockpit/langgraph/subgraphs/angular/prompts/subgraphs.md +++ b/cockpit/langgraph/subgraphs/angular/prompts/subgraphs.md @@ -1,5 +1,5 @@ # LangGraph Subgraphs (Angular) -This capability demonstrates composing LangGraph subgraphs — independent graphs invoked as nodes inside a parent graph — using the `@cacheplane/chat` Angular component library. The `` renders a live status card for each active subgraph invocation, letting the user see which specialised agent is running and what it has produced. +This capability demonstrates composing LangGraph subgraphs — independent graphs invoked as nodes inside a parent graph — using the `@ngaf/chat` Angular component library. The `` renders a live status card for each active subgraph invocation, letting the user see which specialised agent is running and what it has produced. Key components used: ``, ``. Cards appear in the message feed as the parent graph delegates work to subgraphs; each card shows the subgraph name, its streamed output, and a completion badge when the subgraph finishes. diff --git a/cockpit/langgraph/subgraphs/angular/src/app/app.config.ts b/cockpit/langgraph/subgraphs/angular/src/app/app.config.ts index 0ef67aee5..be14b0243 100644 --- a/cockpit/langgraph/subgraphs/angular/src/app/app.config.ts +++ b/cockpit/langgraph/subgraphs/angular/src/app/app.config.ts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; -import { provideChat } from '@cacheplane/chat'; +import { provideAgent } from '@ngaf/langgraph'; +import { provideChat } from '@ngaf/chat'; import { environment } from '../environments/environment'; export const appConfig: ApplicationConfig = { diff --git a/cockpit/langgraph/subgraphs/angular/src/app/subgraphs.component.ts b/cockpit/langgraph/subgraphs/angular/src/app/subgraphs.component.ts index dd3d51053..7698443d4 100644 --- a/cockpit/langgraph/subgraphs/angular/src/app/subgraphs.component.ts +++ b/cockpit/langgraph/subgraphs/angular/src/app/subgraphs.component.ts @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT import { Component, computed } from '@angular/core'; -import { ChatComponent } from '@cacheplane/chat'; -import { agent, toAgent } from '@cacheplane/langgraph'; -import { ExampleChatLayoutComponent } from '@cacheplane/example-layouts'; +import { ChatComponent } from '@ngaf/chat'; +import { agent, toAgent } from '@ngaf/langgraph'; +import { ExampleChatLayoutComponent } from '@ngaf/example-layouts'; import { environment } from '../environments/environment'; /** diff --git a/cockpit/langgraph/subgraphs/python/docs/guide.md b/cockpit/langgraph/subgraphs/python/docs/guide.md index e7b84b904..fcdeddff8 100644 --- a/cockpit/langgraph/subgraphs/python/docs/guide.md +++ b/cockpit/langgraph/subgraphs/python/docs/guide.md @@ -2,12 +2,12 @@ Build a chat interface that visualizes nested agent delegation using `agent()` from -`@cacheplane/langgraph`. A parent orchestrator dispatches research tasks to a child +`@ngaf/langgraph`. A parent orchestrator dispatches research tasks to a child subgraph, and the sidebar tracks each subagent's status in real time using `stream.subagents()`. -Add a subgraph-powered orchestrator to this Angular component using `agent()` from `@cacheplane/langgraph`. Use `stream.subagents()` to track active child subgraph executions, and derive a `subagentEntries` signal with `computed()` for template iteration. Bind `stream.messages()` via the `` component from `@cacheplane/chat`. +Add a subgraph-powered orchestrator to this Angular component using `agent()` from `@ngaf/langgraph`. Use `stream.subagents()` to track active child subgraph executions, and derive a `subagentEntries` signal with `computed()` for template iteration. Bind `stream.messages()` via the `` component from `@ngaf/chat`. @@ -18,7 +18,7 @@ Set up `provideAgent()` in your app config with the LangGraph API URL: ```typescript // app.config.ts import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; +import { provideAgent } from '@ngaf/langgraph'; export const appConfig: ApplicationConfig = { providers: [ @@ -37,7 +37,7 @@ In your component, call `agent()` with the assistant ID pointing to your subgrap ```typescript // subgraphs.component.ts import { Component, computed } from '@angular/core'; -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; export class SubgraphsComponent { protected readonly stream = agent({ @@ -53,7 +53,7 @@ export class SubgraphsComponent { -Use `` from `@cacheplane/chat` and project a sidebar via `ng-template`: +Use `` from `@ngaf/chat` and project a sidebar via `ng-template`: ```html ` lets the user scrub through the full checkpoint history of a thread and fork execution from any historical state. +This capability demonstrates LangGraph's time-travel feature — replaying or branching from any past checkpoint — using the `@ngaf/chat` Angular component library. The `` lets the user scrub through the full checkpoint history of a thread and fork execution from any historical state. Key components used: ``, ``. The slider reads checkpoint metadata from the thread state exposed by `agent` and emits a `checkpointId` that is passed back to the graph to resume from that point in history. diff --git a/cockpit/langgraph/time-travel/angular/src/app/app.config.ts b/cockpit/langgraph/time-travel/angular/src/app/app.config.ts index 0ef67aee5..be14b0243 100644 --- a/cockpit/langgraph/time-travel/angular/src/app/app.config.ts +++ b/cockpit/langgraph/time-travel/angular/src/app/app.config.ts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; -import { provideChat } from '@cacheplane/chat'; +import { provideAgent } from '@ngaf/langgraph'; +import { provideChat } from '@ngaf/chat'; import { environment } from '../environments/environment'; export const appConfig: ApplicationConfig = { diff --git a/cockpit/langgraph/time-travel/angular/src/app/time-travel.component.ts b/cockpit/langgraph/time-travel/angular/src/app/time-travel.component.ts index 2b5b1e483..bf7682738 100644 --- a/cockpit/langgraph/time-travel/angular/src/app/time-travel.component.ts +++ b/cockpit/langgraph/time-travel/angular/src/app/time-travel.component.ts @@ -1,8 +1,8 @@ import { Component, computed, signal } from '@angular/core'; -import { ChatComponent } from '@cacheplane/chat'; -import { agent, toAgent } from '@cacheplane/langgraph'; -import type { ThreadState } from '@cacheplane/langgraph'; -import { ExampleChatLayoutComponent } from '@cacheplane/example-layouts'; +import { ChatComponent } from '@ngaf/chat'; +import { agent, toAgent } from '@ngaf/langgraph'; +import type { ThreadState } from '@ngaf/langgraph'; +import { ExampleChatLayoutComponent } from '@ngaf/example-layouts'; import { environment } from '../environments/environment'; /** diff --git a/cockpit/langgraph/time-travel/python/docs/guide.md b/cockpit/langgraph/time-travel/python/docs/guide.md index 12006cfc5..a24c2bd93 100644 --- a/cockpit/langgraph/time-travel/python/docs/guide.md +++ b/cockpit/langgraph/time-travel/python/docs/guide.md @@ -2,13 +2,13 @@ Build a chat interface with time travel using `agent()` from -`@cacheplane/langgraph`. Browse the checkpoint history via `stream.history()`, +`@ngaf/langgraph`. Browse the checkpoint history via `stream.history()`, see the active branch via `stream.branch()`, and fork the conversation from any past state with `stream.setBranch(checkpointId)`. -Add time travel to this Angular component using `agent()` from `@cacheplane/langgraph`. Display checkpoint history from `stream.history()` in the sidebar. Highlight the active branch using `stream.branch()`. Call `stream.setBranch(id)` when the user clicks a checkpoint to fork the conversation from that point. +Add time travel to this Angular component using `agent()` from `@ngaf/langgraph`. Display checkpoint history from `stream.history()` in the sidebar. Highlight the active branch using `stream.branch()`. Call `stream.setBranch(id)` when the user clicks a checkpoint to fork the conversation from that point. @@ -19,7 +19,7 @@ Set up `provideAgent()` in your app config with the LangGraph API URL: ```typescript // app.config.ts import { ApplicationConfig } from '@angular/core'; -import { provideAgent } from '@cacheplane/langgraph'; +import { provideAgent } from '@ngaf/langgraph'; export const appConfig: ApplicationConfig = { providers: [ @@ -38,7 +38,7 @@ available automatically — no extra config needed: ```typescript // time-travel.component.ts -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; export class TimeTravelComponent { protected readonly stream = agent({ diff --git a/cockpit/langgraph/time-travel/python/package.json b/cockpit/langgraph/time-travel/python/package.json index be7f8ffa7..1920fa925 100644 --- a/cockpit/langgraph/time-travel/python/package.json +++ b/cockpit/langgraph/time-travel/python/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/cockpit-langgraph-time-travel-python", + "name": "@ngaf/cockpit-langgraph-time-travel-python", "version": "0.0.1", "license": "MIT", "sideEffects": false diff --git a/cockpit/langgraph/time-travel/python/tsconfig.json b/cockpit/langgraph/time-travel/python/tsconfig.json index 6a06e7124..b8e8652a7 100644 --- a/cockpit/langgraph/time-travel/python/tsconfig.json +++ b/cockpit/langgraph/time-travel/python/tsconfig.json @@ -7,7 +7,7 @@ "declaration": true, "emitDeclarationOnly": false, "paths": { - "@cacheplane/cockpit-registry": ["libs/cockpit-registry/src/index.ts"] + "@ngaf/cockpit-registry": ["libs/cockpit-registry/src/index.ts"] }, "types": ["node", "react"] }, diff --git a/cockpit/render/computed-functions/angular/package.json b/cockpit/render/computed-functions/angular/package.json index 992067861..60b69221c 100644 --- a/cockpit/render/computed-functions/angular/package.json +++ b/cockpit/render/computed-functions/angular/package.json @@ -1,8 +1,8 @@ { - "name": "@cacheplane/cockpit-render-computed-functions-angular", + "name": "@ngaf/cockpit-render-computed-functions-angular", "version": "0.0.1", "peerDependencies": { - "@cacheplane/render": "^0.0.1" + "@ngaf/render": "^0.0.1" }, "license": "MIT", "sideEffects": false diff --git a/cockpit/render/computed-functions/angular/src/app/app.config.ts b/cockpit/render/computed-functions/angular/src/app/app.config.ts index 5858f11c3..902edd7c8 100644 --- a/cockpit/render/computed-functions/angular/src/app/app.config.ts +++ b/cockpit/render/computed-functions/angular/src/app/app.config.ts @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT import { ApplicationConfig } from '@angular/core'; -import { provideRender } from '@cacheplane/render'; +import { provideRender } from '@ngaf/render'; export const appConfig: ApplicationConfig = { providers: [ diff --git a/cockpit/render/computed-functions/angular/src/app/computed-functions.component.ts b/cockpit/render/computed-functions/angular/src/app/computed-functions.component.ts index 41f42895e..77f37054f 100644 --- a/cockpit/render/computed-functions/angular/src/app/computed-functions.component.ts +++ b/cockpit/render/computed-functions/angular/src/app/computed-functions.component.ts @@ -5,11 +5,11 @@ import { RenderElementComponent, defineAngularRegistry, signalStateStore, -} from '@cacheplane/render'; +} from '@ngaf/render'; import type { Spec } from '@json-render/core'; import { StreamingSimulator } from '../../../../shared/streaming-simulator'; import { StreamingTimelineComponent } from '../../../../shared/streaming-timeline.component'; -import { ExampleSplitLayoutComponent } from '@cacheplane/example-layouts'; +import { ExampleSplitLayoutComponent } from '@ngaf/example-layouts'; import { COMPUTED_FUNCTIONS_SPECS } from './specs'; // --- Inline view components --- diff --git a/cockpit/render/computed-functions/python/docs/guide.md b/cockpit/render/computed-functions/python/docs/guide.md index 41c8defaa..613a35838 100644 --- a/cockpit/render/computed-functions/python/docs/guide.md +++ b/cockpit/render/computed-functions/python/docs/guide.md @@ -1,4 +1,4 @@ -# Computed Functions with @cacheplane/render +# Computed Functions with @ngaf/render Define custom functions for prop resolution and data transformation in @@ -8,7 +8,7 @@ in spec prop expressions for dynamic computed values. Add computed functions to this Angular application using `provideRender()` -from `@cacheplane/render`. Define custom functions for data formatting, +from `@ngaf/render`. Define custom functions for data formatting, register them in the render config, and use them in spec props. diff --git a/cockpit/render/computed-functions/python/package.json b/cockpit/render/computed-functions/python/package.json index 0c2c2c8fd..94ed22182 100644 --- a/cockpit/render/computed-functions/python/package.json +++ b/cockpit/render/computed-functions/python/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/cockpit-render-computed-functions-python", + "name": "@ngaf/cockpit-render-computed-functions-python", "version": "0.0.1", "license": "MIT", "sideEffects": false diff --git a/cockpit/render/computed-functions/python/prompts/computed-functions.md b/cockpit/render/computed-functions/python/prompts/computed-functions.md index 8e0d90d1e..1efa473d5 100644 --- a/cockpit/render/computed-functions/python/prompts/computed-functions.md +++ b/cockpit/render/computed-functions/python/prompts/computed-functions.md @@ -1,6 +1,6 @@ # Computed Functions Assistant -You are an assistant that demonstrates computed functions from @cacheplane/render. +You are an assistant that demonstrates computed functions from @ngaf/render. Computed functions are custom functions registered with provideRender() that can be used for prop resolution, expressions, and data transformation in diff --git a/cockpit/render/element-rendering/angular/package.json b/cockpit/render/element-rendering/angular/package.json index d2797ab64..6d79da8ee 100644 --- a/cockpit/render/element-rendering/angular/package.json +++ b/cockpit/render/element-rendering/angular/package.json @@ -1,8 +1,8 @@ { - "name": "@cacheplane/cockpit-render-element-rendering-angular", + "name": "@ngaf/cockpit-render-element-rendering-angular", "version": "0.0.1", "peerDependencies": { - "@cacheplane/render": "^0.0.1" + "@ngaf/render": "^0.0.1" }, "license": "MIT", "sideEffects": false diff --git a/cockpit/render/element-rendering/angular/src/app/app.config.ts b/cockpit/render/element-rendering/angular/src/app/app.config.ts index ff94629d2..083fd6ec0 100644 --- a/cockpit/render/element-rendering/angular/src/app/app.config.ts +++ b/cockpit/render/element-rendering/angular/src/app/app.config.ts @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT import { ApplicationConfig } from '@angular/core'; -import { provideRender } from '@cacheplane/render'; +import { provideRender } from '@ngaf/render'; export const appConfig: ApplicationConfig = { providers: [ diff --git a/cockpit/render/element-rendering/angular/src/app/element-rendering.component.ts b/cockpit/render/element-rendering/angular/src/app/element-rendering.component.ts index a022758b3..b76de5010 100644 --- a/cockpit/render/element-rendering/angular/src/app/element-rendering.component.ts +++ b/cockpit/render/element-rendering/angular/src/app/element-rendering.component.ts @@ -5,11 +5,11 @@ import { RenderElementComponent, defineAngularRegistry, signalStateStore, -} from '@cacheplane/render'; +} from '@ngaf/render'; import type { Spec } from '@json-render/core'; import { StreamingSimulator } from '../../../../shared/streaming-simulator'; import { StreamingTimelineComponent } from '../../../../shared/streaming-timeline.component'; -import { ExampleSplitLayoutComponent } from '@cacheplane/example-layouts'; +import { ExampleSplitLayoutComponent } from '@ngaf/example-layouts'; import { ELEMENT_RENDERING_SPECS } from './specs'; // --- Inline view components registered in the demo registry --- diff --git a/cockpit/render/element-rendering/python/docs/guide.md b/cockpit/render/element-rendering/python/docs/guide.md index f95d18586..62cf49af7 100644 --- a/cockpit/render/element-rendering/python/docs/guide.md +++ b/cockpit/render/element-rendering/python/docs/guide.md @@ -1,4 +1,4 @@ -# Element Rendering with @cacheplane/render +# Element Rendering with @ngaf/render Recursively render nested element trees using RenderElementComponent. @@ -8,7 +8,7 @@ conditions bound to a reactive state store. Add recursive element rendering to this Angular component using -`RenderElementComponent` from `@cacheplane/render`. Define a nested element +`RenderElementComponent` from `@ngaf/render`. Define a nested element spec, create a state store for visibility toggling, and render the tree. @@ -41,7 +41,7 @@ const spec = { Use `signalStateStore()` to manage visibility flags: ```typescript -import { signalStateStore } from '@cacheplane/render'; +import { signalStateStore } from '@ngaf/render'; const store = signalStateStore({ showDetail: true }); ``` diff --git a/cockpit/render/element-rendering/python/package.json b/cockpit/render/element-rendering/python/package.json index 859337662..185230b8e 100644 --- a/cockpit/render/element-rendering/python/package.json +++ b/cockpit/render/element-rendering/python/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/cockpit-render-element-rendering-python", + "name": "@ngaf/cockpit-render-element-rendering-python", "version": "0.0.1", "license": "MIT", "sideEffects": false diff --git a/cockpit/render/element-rendering/python/prompts/element-rendering.md b/cockpit/render/element-rendering/python/prompts/element-rendering.md index 4d7e55bd3..03aeb1360 100644 --- a/cockpit/render/element-rendering/python/prompts/element-rendering.md +++ b/cockpit/render/element-rendering/python/prompts/element-rendering.md @@ -1,6 +1,6 @@ # Element Rendering Assistant -You are an assistant that demonstrates RenderElementComponent from @cacheplane/render. +You are an assistant that demonstrates RenderElementComponent from @ngaf/render. RenderElementComponent recursively renders nested element trees. Each element in the tree can have children, forming a recursive structure. Visibility diff --git a/cockpit/render/registry/angular/package.json b/cockpit/render/registry/angular/package.json index e5acbaff0..17d16192b 100644 --- a/cockpit/render/registry/angular/package.json +++ b/cockpit/render/registry/angular/package.json @@ -1,8 +1,8 @@ { - "name": "@cacheplane/cockpit-render-registry-angular", + "name": "@ngaf/cockpit-render-registry-angular", "version": "0.0.1", "peerDependencies": { - "@cacheplane/render": "^0.0.1" + "@ngaf/render": "^0.0.1" }, "license": "MIT", "sideEffects": false diff --git a/cockpit/render/registry/angular/src/app/app.config.ts b/cockpit/render/registry/angular/src/app/app.config.ts index ff94629d2..083fd6ec0 100644 --- a/cockpit/render/registry/angular/src/app/app.config.ts +++ b/cockpit/render/registry/angular/src/app/app.config.ts @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT import { ApplicationConfig } from '@angular/core'; -import { provideRender } from '@cacheplane/render'; +import { provideRender } from '@ngaf/render'; export const appConfig: ApplicationConfig = { providers: [ diff --git a/cockpit/render/registry/angular/src/app/registry.component.ts b/cockpit/render/registry/angular/src/app/registry.component.ts index e831046d3..ec5e20d12 100644 --- a/cockpit/render/registry/angular/src/app/registry.component.ts +++ b/cockpit/render/registry/angular/src/app/registry.component.ts @@ -5,11 +5,11 @@ import { RenderElementComponent, defineAngularRegistry, signalStateStore, -} from '@cacheplane/render'; +} from '@ngaf/render'; import type { Spec } from '@json-render/core'; import { StreamingSimulator } from '../../../../shared/streaming-simulator'; import { StreamingTimelineComponent } from '../../../../shared/streaming-timeline.component'; -import { ExampleSplitLayoutComponent } from '@cacheplane/example-layouts'; +import { ExampleSplitLayoutComponent } from '@ngaf/example-layouts'; import { REGISTRY_SPECS } from './specs'; // --- Inline view components registered in the demo registry --- diff --git a/cockpit/render/registry/python/docs/guide.md b/cockpit/render/registry/python/docs/guide.md index 3570bdf6b..423604e9b 100644 --- a/cockpit/render/registry/python/docs/guide.md +++ b/cockpit/render/registry/python/docs/guide.md @@ -1,4 +1,4 @@ -# Registry with @cacheplane/render +# Registry with @ngaf/render Map type strings to Angular component classes using defineAngularRegistry. @@ -8,7 +8,7 @@ to reference components by name. Add a component registry to this Angular application using -`defineAngularRegistry()` from `@cacheplane/render`. Register component +`defineAngularRegistry()` from `@ngaf/render`. Register component types, look them up with `registry.get()`, and list all types with `registry.names()`. @@ -32,7 +32,7 @@ export class BadgeComponent { @Input() label = ''; } Map type strings to component classes: ```typescript -import { defineAngularRegistry } from '@cacheplane/render'; +import { defineAngularRegistry } from '@ngaf/render'; const registry = defineAngularRegistry({ card: CardComponent, diff --git a/cockpit/render/registry/python/package.json b/cockpit/render/registry/python/package.json index 5c3efa877..161c30f70 100644 --- a/cockpit/render/registry/python/package.json +++ b/cockpit/render/registry/python/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/cockpit-render-registry-python", + "name": "@ngaf/cockpit-render-registry-python", "version": "0.0.1", "license": "MIT", "sideEffects": false diff --git a/cockpit/render/registry/python/prompts/registry.md b/cockpit/render/registry/python/prompts/registry.md index 9af148941..db984e534 100644 --- a/cockpit/render/registry/python/prompts/registry.md +++ b/cockpit/render/registry/python/prompts/registry.md @@ -1,6 +1,6 @@ # Registry Assistant -You are an assistant that demonstrates defineAngularRegistry from @cacheplane/render. +You are an assistant that demonstrates defineAngularRegistry from @ngaf/render. defineAngularRegistry() creates a component registry that maps type strings to Angular component classes. This registry is used by RenderSpecComponent diff --git a/cockpit/render/repeat-loops/angular/package.json b/cockpit/render/repeat-loops/angular/package.json index aa67e0bc6..ccd44a0ce 100644 --- a/cockpit/render/repeat-loops/angular/package.json +++ b/cockpit/render/repeat-loops/angular/package.json @@ -1,8 +1,8 @@ { - "name": "@cacheplane/cockpit-render-repeat-loops-angular", + "name": "@ngaf/cockpit-render-repeat-loops-angular", "version": "0.0.1", "peerDependencies": { - "@cacheplane/render": "^0.0.1" + "@ngaf/render": "^0.0.1" }, "license": "MIT", "sideEffects": false diff --git a/cockpit/render/repeat-loops/angular/src/app/app.config.ts b/cockpit/render/repeat-loops/angular/src/app/app.config.ts index ff94629d2..083fd6ec0 100644 --- a/cockpit/render/repeat-loops/angular/src/app/app.config.ts +++ b/cockpit/render/repeat-loops/angular/src/app/app.config.ts @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT import { ApplicationConfig } from '@angular/core'; -import { provideRender } from '@cacheplane/render'; +import { provideRender } from '@ngaf/render'; export const appConfig: ApplicationConfig = { providers: [ diff --git a/cockpit/render/repeat-loops/angular/src/app/repeat-loops.component.ts b/cockpit/render/repeat-loops/angular/src/app/repeat-loops.component.ts index 6c8c3a8ca..06487931b 100644 --- a/cockpit/render/repeat-loops/angular/src/app/repeat-loops.component.ts +++ b/cockpit/render/repeat-loops/angular/src/app/repeat-loops.component.ts @@ -5,11 +5,11 @@ import { RenderElementComponent, defineAngularRegistry, signalStateStore, -} from '@cacheplane/render'; +} from '@ngaf/render'; import type { Spec } from '@json-render/core'; import { StreamingSimulator } from '../../../../shared/streaming-simulator'; import { StreamingTimelineComponent } from '../../../../shared/streaming-timeline.component'; -import { ExampleSplitLayoutComponent } from '@cacheplane/example-layouts'; +import { ExampleSplitLayoutComponent } from '@ngaf/example-layouts'; import { REPEAT_LOOPS_SPECS } from './specs'; // --- Inline view components registered in the demo registry --- diff --git a/cockpit/render/repeat-loops/python/docs/guide.md b/cockpit/render/repeat-loops/python/docs/guide.md index 104266e09..935c89953 100644 --- a/cockpit/render/repeat-loops/python/docs/guide.md +++ b/cockpit/render/repeat-loops/python/docs/guide.md @@ -1,4 +1,4 @@ -# Repeat Loops with @cacheplane/render +# Repeat Loops with @ngaf/render Iterate over arrays in the state store using repeat specs. Each iteration @@ -8,7 +8,7 @@ for per-item rendering. Add repeat rendering to this Angular component using repeat specs from -`@cacheplane/render`. Define array state, create a repeat spec template, +`@ngaf/render`. Define array state, create a repeat spec template, access RepeatScope context, and add/remove items dynamically. @@ -18,7 +18,7 @@ access RepeatScope context, and add/remove items dynamically. Create a state store with an array to iterate over: ```typescript -import { signalStateStore } from '@cacheplane/render'; +import { signalStateStore } from '@ngaf/render'; const store = signalStateStore({ items: [ diff --git a/cockpit/render/repeat-loops/python/package.json b/cockpit/render/repeat-loops/python/package.json index a6468b1fa..872d97170 100644 --- a/cockpit/render/repeat-loops/python/package.json +++ b/cockpit/render/repeat-loops/python/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/cockpit-render-repeat-loops-python", + "name": "@ngaf/cockpit-render-repeat-loops-python", "version": "0.0.1", "license": "MIT", "sideEffects": false diff --git a/cockpit/render/repeat-loops/python/prompts/repeat-loops.md b/cockpit/render/repeat-loops/python/prompts/repeat-loops.md index d249e1f75..a9256bedb 100644 --- a/cockpit/render/repeat-loops/python/prompts/repeat-loops.md +++ b/cockpit/render/repeat-loops/python/prompts/repeat-loops.md @@ -1,6 +1,6 @@ # Repeat Loops Assistant -You are an assistant that demonstrates repeat rendering from @cacheplane/render. +You are an assistant that demonstrates repeat rendering from @ngaf/render. Repeat rendering allows iterating over arrays in the state store to render a template for each item. It uses: diff --git a/cockpit/render/shared/streaming-simulator.ts b/cockpit/render/shared/streaming-simulator.ts index 45ed77908..1452ef0fc 100644 --- a/cockpit/render/shared/streaming-simulator.ts +++ b/cockpit/render/shared/streaming-simulator.ts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT import { signal, computed } from '@angular/core'; -import { createPartialJsonParser, materialize } from '@cacheplane/partial-json'; -import type { PartialJsonParser, ParseEvent } from '@cacheplane/partial-json'; +import { createPartialJsonParser, materialize } from '@ngaf/partial-json'; +import type { PartialJsonParser, ParseEvent } from '@ngaf/partial-json'; import type { Spec } from '@json-render/core'; export class StreamingSimulator { diff --git a/cockpit/render/spec-rendering/angular/package.json b/cockpit/render/spec-rendering/angular/package.json index 5eb70add1..b4c6b632f 100644 --- a/cockpit/render/spec-rendering/angular/package.json +++ b/cockpit/render/spec-rendering/angular/package.json @@ -1,8 +1,8 @@ { - "name": "@cacheplane/cockpit-render-spec-rendering-angular", + "name": "@ngaf/cockpit-render-spec-rendering-angular", "version": "0.0.1", "peerDependencies": { - "@cacheplane/render": "^0.0.1" + "@ngaf/render": "^0.0.1" }, "license": "MIT", "sideEffects": false diff --git a/cockpit/render/spec-rendering/angular/src/app/app.config.ts b/cockpit/render/spec-rendering/angular/src/app/app.config.ts index ff94629d2..083fd6ec0 100644 --- a/cockpit/render/spec-rendering/angular/src/app/app.config.ts +++ b/cockpit/render/spec-rendering/angular/src/app/app.config.ts @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT import { ApplicationConfig } from '@angular/core'; -import { provideRender } from '@cacheplane/render'; +import { provideRender } from '@ngaf/render'; export const appConfig: ApplicationConfig = { providers: [ diff --git a/cockpit/render/spec-rendering/angular/src/app/spec-rendering.component.ts b/cockpit/render/spec-rendering/angular/src/app/spec-rendering.component.ts index cda48f7f1..158df57e6 100644 --- a/cockpit/render/spec-rendering/angular/src/app/spec-rendering.component.ts +++ b/cockpit/render/spec-rendering/angular/src/app/spec-rendering.component.ts @@ -5,11 +5,11 @@ import { RenderElementComponent, defineAngularRegistry, signalStateStore, -} from '@cacheplane/render'; +} from '@ngaf/render'; import type { Spec } from '@json-render/core'; import { StreamingSimulator } from '../../../../shared/streaming-simulator'; import { StreamingTimelineComponent } from '../../../../shared/streaming-timeline.component'; -import { ExampleSplitLayoutComponent } from '@cacheplane/example-layouts'; +import { ExampleSplitLayoutComponent } from '@ngaf/example-layouts'; import { SPEC_RENDERING_SPECS } from './specs'; // --- Inline view components registered in the demo registry --- diff --git a/cockpit/render/spec-rendering/python/docs/guide.md b/cockpit/render/spec-rendering/python/docs/guide.md index 58a4ce60f..339309e0b 100644 --- a/cockpit/render/spec-rendering/python/docs/guide.md +++ b/cockpit/render/spec-rendering/python/docs/guide.md @@ -1,4 +1,4 @@ -# Spec Rendering with @cacheplane/render +# Spec Rendering with @ngaf/render Render Angular components from JSON specifications using RenderSpecComponent. @@ -8,7 +8,7 @@ them with reactive prop bindings. Add JSON-driven UI rendering to this Angular component using `RenderSpecComponent` -from `@cacheplane/render`. Define a registry with `defineAngularRegistry()`, create +from `@ngaf/render`. Define a registry with `defineAngularRegistry()`, create a state store with `signalStateStore()`, and pass a JSON spec to the template. @@ -20,8 +20,8 @@ Set up `provideRender()` in your app config with a component registry: ```typescript // app.config.ts import { ApplicationConfig } from '@angular/core'; -import { provideRender } from '@cacheplane/render'; -import { defineAngularRegistry } from '@cacheplane/render'; +import { provideRender } from '@ngaf/render'; +import { defineAngularRegistry } from '@ngaf/render'; export const appConfig: ApplicationConfig = { providers: [ @@ -68,7 +68,7 @@ Use `signalStateStore()` to create a reactive state store that your spec can bind to: ```typescript -import { signalStateStore } from '@cacheplane/render'; +import { signalStateStore } from '@ngaf/render'; const store = signalStateStore({ count: 0, name: '' }); store.set('/count', 1); diff --git a/cockpit/render/spec-rendering/python/package.json b/cockpit/render/spec-rendering/python/package.json index 0d2ea14af..0b0a924a1 100644 --- a/cockpit/render/spec-rendering/python/package.json +++ b/cockpit/render/spec-rendering/python/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/cockpit-render-spec-rendering-python", + "name": "@ngaf/cockpit-render-spec-rendering-python", "version": "0.0.1", "license": "MIT", "sideEffects": false diff --git a/cockpit/render/spec-rendering/python/prompts/spec-rendering.md b/cockpit/render/spec-rendering/python/prompts/spec-rendering.md index 5edec1100..337fd90c9 100644 --- a/cockpit/render/spec-rendering/python/prompts/spec-rendering.md +++ b/cockpit/render/spec-rendering/python/prompts/spec-rendering.md @@ -1,6 +1,6 @@ # Spec Rendering Assistant -You are an assistant that demonstrates the RenderSpecComponent from @cacheplane/render. +You are an assistant that demonstrates the RenderSpecComponent from @ngaf/render. When the user asks you to create a UI, respond with a description of the layout and components you would use. Include JSON render spec examples when helpful. diff --git a/cockpit/render/spec-rendering/python/src/graph.py b/cockpit/render/spec-rendering/python/src/graph.py index c96c540ba..b0a788458 100644 --- a/cockpit/render/spec-rendering/python/src/graph.py +++ b/cockpit/render/spec-rendering/python/src/graph.py @@ -19,7 +19,7 @@ def build_spec_rendering_graph(): Constructs a graph that generates JSON render specs. The agent responds with JSON UI specifications that the Angular frontend - renders using RenderSpecComponent from @cacheplane/render. + renders using RenderSpecComponent from @ngaf/render. """ llm = ChatOpenAI(model="gpt-5-mini", streaming=True) diff --git a/cockpit/render/state-management/angular/package.json b/cockpit/render/state-management/angular/package.json index 9b152aded..82211c713 100644 --- a/cockpit/render/state-management/angular/package.json +++ b/cockpit/render/state-management/angular/package.json @@ -1,8 +1,8 @@ { - "name": "@cacheplane/cockpit-render-state-management-angular", + "name": "@ngaf/cockpit-render-state-management-angular", "version": "0.0.1", "peerDependencies": { - "@cacheplane/render": "^0.0.1" + "@ngaf/render": "^0.0.1" }, "license": "MIT", "sideEffects": false diff --git a/cockpit/render/state-management/angular/src/app/app.config.ts b/cockpit/render/state-management/angular/src/app/app.config.ts index ff94629d2..083fd6ec0 100644 --- a/cockpit/render/state-management/angular/src/app/app.config.ts +++ b/cockpit/render/state-management/angular/src/app/app.config.ts @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT import { ApplicationConfig } from '@angular/core'; -import { provideRender } from '@cacheplane/render'; +import { provideRender } from '@ngaf/render'; export const appConfig: ApplicationConfig = { providers: [ diff --git a/cockpit/render/state-management/angular/src/app/state-management.component.ts b/cockpit/render/state-management/angular/src/app/state-management.component.ts index 9677f40df..2b0def61d 100644 --- a/cockpit/render/state-management/angular/src/app/state-management.component.ts +++ b/cockpit/render/state-management/angular/src/app/state-management.component.ts @@ -5,11 +5,11 @@ import { RenderElementComponent, defineAngularRegistry, signalStateStore, -} from '@cacheplane/render'; +} from '@ngaf/render'; import type { Spec } from '@json-render/core'; import { StreamingSimulator } from '../../../../shared/streaming-simulator'; import { StreamingTimelineComponent } from '../../../../shared/streaming-timeline.component'; -import { ExampleSplitLayoutComponent } from '@cacheplane/example-layouts'; +import { ExampleSplitLayoutComponent } from '@ngaf/example-layouts'; import { STATE_MANAGEMENT_SPECS } from './specs'; // --- Inline view components --- diff --git a/cockpit/render/state-management/python/docs/guide.md b/cockpit/render/state-management/python/docs/guide.md index f1811e796..550f9c55b 100644 --- a/cockpit/render/state-management/python/docs/guide.md +++ b/cockpit/render/state-management/python/docs/guide.md @@ -1,4 +1,4 @@ -# State Management with @cacheplane/render +# State Management with @ngaf/render Manage reactive UI state using signalStateStore with JSON Pointer paths. @@ -8,7 +8,7 @@ automatic UI propagation. Add reactive state management to this Angular component using -`signalStateStore()` from `@cacheplane/render`. Create a store with +`signalStateStore()` from `@ngaf/render`. Create a store with nested state, read values with get(), write with set(), and batch updates with update(). @@ -19,7 +19,7 @@ updates with update(). Initialize a `signalStateStore()` with your initial state shape: ```typescript -import { signalStateStore } from '@cacheplane/render'; +import { signalStateStore } from '@ngaf/render'; const store = signalStateStore({ user: { name: '', age: 0 }, diff --git a/cockpit/render/state-management/python/package.json b/cockpit/render/state-management/python/package.json index 2853001c1..831531563 100644 --- a/cockpit/render/state-management/python/package.json +++ b/cockpit/render/state-management/python/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/cockpit-render-state-management-python", + "name": "@ngaf/cockpit-render-state-management-python", "version": "0.0.1", "license": "MIT", "sideEffects": false diff --git a/cockpit/render/state-management/python/prompts/state-management.md b/cockpit/render/state-management/python/prompts/state-management.md index 9e1120299..95b83df2f 100644 --- a/cockpit/render/state-management/python/prompts/state-management.md +++ b/cockpit/render/state-management/python/prompts/state-management.md @@ -1,6 +1,6 @@ # State Management Assistant -You are an assistant that demonstrates signalStateStore from @cacheplane/render. +You are an assistant that demonstrates signalStateStore from @ngaf/render. signalStateStore provides reactive state management using JSON Pointer paths (RFC 6901) and Angular Signals. It supports: diff --git a/docs/RELEASE.md b/docs/RELEASE.md index 5c0bf325f..20433f6ec 100644 --- a/docs/RELEASE.md +++ b/docs/RELEASE.md @@ -1,6 +1,6 @@ # Release Process -The eight publishable libraries (`@cacheplane/chat`, `@cacheplane/langgraph`, `@cacheplane/ag-ui`, `@cacheplane/render`, `@cacheplane/a2ui`, `@cacheplane/partial-json`, `@cacheplane/licensing`, `@cacheplane/langgraph-mcp`) ship together at a synchronized version via Nx Release. During the `0.0.x` exploratory phase, only patch bumps are used. +The eight publishable libraries (`@ngaf/chat`, `@ngaf/langgraph`, `@ngaf/ag-ui`, `@ngaf/render`, `@ngaf/a2ui`, `@ngaf/partial-json`, `@ngaf/licensing`, `@ngaf/langgraph-mcp`) ship together at a synchronized version via Nx Release. During the `0.0.x` exploratory phase, only patch bumps are used. ## One-shot release (recommended; second release onward) diff --git a/libs/a2ui/package.json b/libs/a2ui/package.json index aed13d0f0..8bce7aa7d 100644 --- a/libs/a2ui/package.json +++ b/libs/a2ui/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/a2ui", + "name": "@ngaf/a2ui", "version": "0.0.1", "license": "MIT", "repository": { diff --git a/libs/ag-ui/README.md b/libs/ag-ui/README.md index 46a05bbdf..4df99e4b6 100644 --- a/libs/ag-ui/README.md +++ b/libs/ag-ui/README.md @@ -1,10 +1,10 @@ -# @cacheplane/ag-ui +# @ngaf/ag-ui -Adapter that wraps an [AG-UI](https://github.com/ag-ui-protocol/ag-ui) `AbstractAgent` into the runtime-neutral `Agent` contract from `@cacheplane/chat`. +Adapter that wraps an [AG-UI](https://github.com/ag-ui-protocol/ag-ui) `AbstractAgent` into the runtime-neutral `Agent` contract from `@ngaf/chat`. ```ts -import { provideAgUiAgent, AG_UI_AGENT } from '@cacheplane/ag-ui'; -import { ChatComponent } from '@cacheplane/chat'; +import { provideAgUiAgent, AG_UI_AGENT } from '@ngaf/ag-ui'; +import { ChatComponent } from '@ngaf/chat'; // app.config.ts export const appConfig: ApplicationConfig = { diff --git a/libs/ag-ui/eslint.config.mjs b/libs/ag-ui/eslint.config.mjs index 4f165dc8d..e642025aa 100644 --- a/libs/ag-ui/eslint.config.mjs +++ b/libs/ag-ui/eslint.config.mjs @@ -15,7 +15,7 @@ export default [ '@nx/vite', 'vitest', // peerDeps used by later tasks (stub-only in Task 1) - '@cacheplane/licensing', + '@ngaf/licensing', 'fast-json-patch', 'rxjs', ], diff --git a/libs/ag-ui/package.json b/libs/ag-ui/package.json index 2a8c111bf..3688221de 100644 --- a/libs/ag-ui/package.json +++ b/libs/ag-ui/package.json @@ -1,9 +1,9 @@ { - "name": "@cacheplane/ag-ui", + "name": "@ngaf/ag-ui", "version": "0.0.1", "peerDependencies": { - "@cacheplane/chat": "*", - "@cacheplane/licensing": "*", + "@ngaf/chat": "*", + "@ngaf/licensing": "*", "@angular/core": "^20.0.0 || ^21.0.0", "@ag-ui/client": "*", "fast-json-patch": "*", diff --git a/libs/ag-ui/src/lib/provide-ag-ui-agent.ts b/libs/ag-ui/src/lib/provide-ag-ui-agent.ts index 29172928b..d5dd019ce 100644 --- a/libs/ag-ui/src/lib/provide-ag-ui-agent.ts +++ b/libs/ag-ui/src/lib/provide-ag-ui-agent.ts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT import { InjectionToken, inject, type Provider } from '@angular/core'; import { HttpAgent } from '@ag-ui/client'; -import type { Agent } from '@cacheplane/chat'; +import type { Agent } from '@ngaf/chat'; import { toAgent } from './to-agent'; /** diff --git a/libs/ag-ui/src/lib/reducer.spec.ts b/libs/ag-ui/src/lib/reducer.spec.ts index de7adca08..f0ee28845 100644 --- a/libs/ag-ui/src/lib/reducer.spec.ts +++ b/libs/ag-ui/src/lib/reducer.spec.ts @@ -4,7 +4,7 @@ import { signal } from '@angular/core'; import { Subject } from 'rxjs'; import type { Message, AgentStatus, ToolCall, AgentEvent, -} from '@cacheplane/chat'; +} from '@ngaf/chat'; import { reduceEvent, type ReducerStore } from './reducer'; function makeStore(): ReducerStore { diff --git a/libs/ag-ui/src/lib/reducer.ts b/libs/ag-ui/src/lib/reducer.ts index 9c595c84e..a62dac27f 100644 --- a/libs/ag-ui/src/lib/reducer.ts +++ b/libs/ag-ui/src/lib/reducer.ts @@ -7,7 +7,7 @@ import type { WritableSignal } from '@angular/core'; import type { Subject } from 'rxjs'; import type { Message, AgentStatus, ToolCall, AgentEvent, -} from '@cacheplane/chat'; +} from '@ngaf/chat'; import type { BaseEvent } from '@ag-ui/client'; import { applyPatch, type Operation } from 'fast-json-patch'; diff --git a/libs/ag-ui/src/lib/to-agent.conformance.spec.ts b/libs/ag-ui/src/lib/to-agent.conformance.spec.ts index 9186ed5a7..6d4dc4cce 100644 --- a/libs/ag-ui/src/lib/to-agent.conformance.spec.ts +++ b/libs/ag-ui/src/lib/to-agent.conformance.spec.ts @@ -2,7 +2,7 @@ import { Observable } from 'rxjs'; import type { AbstractAgent, BaseEvent } from '@ag-ui/client'; import type { RunAgentInput } from '@ag-ui/core'; -import { runAgentConformance } from '@cacheplane/chat'; +import { runAgentConformance } from '@ngaf/chat'; import { toAgent } from './to-agent'; /** diff --git a/libs/ag-ui/src/lib/to-agent.ts b/libs/ag-ui/src/lib/to-agent.ts index dde90d3db..f668abf84 100644 --- a/libs/ag-ui/src/lib/to-agent.ts +++ b/libs/ag-ui/src/lib/to-agent.ts @@ -5,7 +5,7 @@ import type { AbstractAgent } from '@ag-ui/client'; import type { Agent, Message, AgentStatus, ToolCall, AgentEvent, AgentSubmitInput, AgentSubmitOptions, -} from '@cacheplane/chat'; +} from '@ngaf/chat'; import { reduceEvent, type ReducerStore } from './reducer'; /** diff --git a/libs/chat/README.md b/libs/chat/README.md index 8e7ce32b9..fa560fdc7 100644 --- a/libs/chat/README.md +++ b/libs/chat/README.md @@ -6,8 +6,8 @@ This library was generated with [Nx](https://nx.dev). Chat primitives consume a runtime-neutral `Agent` contract. Two adapters ship today: -- **`@cacheplane/langgraph`** — for LangGraph / LangGraph Platform backends. -- **`@cacheplane/ag-ui`** — for any AG-UI-compatible backend (LangGraph, CrewAI, Mastra, Microsoft Agent Framework, AG2, Pydantic AI, AWS Strands, CopilotKit runtime). +- **`@ngaf/langgraph`** — for LangGraph / LangGraph Platform backends. +- **`@ngaf/ag-ui`** — for any AG-UI-compatible backend (LangGraph, CrewAI, Mastra, Microsoft Agent Framework, AG2, Pydantic AI, AWS Strands, CopilotKit runtime). Custom backends can implement `Agent` directly with no library dependency. diff --git a/libs/chat/package.json b/libs/chat/package.json index 4c9475673..0de7a447b 100644 --- a/libs/chat/package.json +++ b/libs/chat/package.json @@ -1,15 +1,15 @@ { - "name": "@cacheplane/chat", + "name": "@ngaf/chat", "version": "0.0.1", "peerDependencies": { "@angular/core": "^20.0.0 || ^21.0.0", "@angular/common": "^20.0.0 || ^21.0.0", "@angular/forms": "^20.0.0 || ^21.0.0", "@angular/platform-browser": "^20.0.0 || ^21.0.0", - "@cacheplane/licensing": "*", - "@cacheplane/render": "*", - "@cacheplane/a2ui": "*", - "@cacheplane/partial-json": "*", + "@ngaf/licensing": "*", + "@ngaf/render": "*", + "@ngaf/a2ui": "*", + "@ngaf/partial-json": "*", "@json-render/core": "^0.16.0", "@langchain/core": "^1.1.33", "rxjs": "~7.8.0", diff --git a/libs/chat/src/lib/a2ui/build-action-message.spec.ts b/libs/chat/src/lib/a2ui/build-action-message.spec.ts index 420a8f7a8..a3f940666 100644 --- a/libs/chat/src/lib/a2ui/build-action-message.spec.ts +++ b/libs/chat/src/lib/a2ui/build-action-message.spec.ts @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT import { describe, it, expect } from 'vitest'; -import type { A2uiSurface, A2uiComponent } from '@cacheplane/a2ui'; +import type { A2uiSurface, A2uiComponent } from '@ngaf/a2ui'; import { buildA2uiActionMessage } from './build-action-message'; describe('buildA2uiActionMessage', () => { diff --git a/libs/chat/src/lib/a2ui/build-action-message.ts b/libs/chat/src/lib/a2ui/build-action-message.ts index 26cf7b06a..d82b1df0b 100644 --- a/libs/chat/src/lib/a2ui/build-action-message.ts +++ b/libs/chat/src/lib/a2ui/build-action-message.ts @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -import type { A2uiSurface, A2uiActionMessage } from '@cacheplane/a2ui'; +import type { A2uiSurface, A2uiActionMessage } from '@ngaf/a2ui'; /** Builds a v0.9 A2uiActionMessage from handler params and the current surface. */ export function buildA2uiActionMessage( diff --git a/libs/chat/src/lib/a2ui/catalog/button.component.ts b/libs/chat/src/lib/a2ui/catalog/button.component.ts index e68e8494c..2e96ab5b2 100644 --- a/libs/chat/src/lib/a2ui/catalog/button.component.ts +++ b/libs/chat/src/lib/a2ui/catalog/button.component.ts @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT import { Component, input, ChangeDetectionStrategy } from '@angular/core'; -import type { A2uiValidationResult } from '@cacheplane/a2ui'; +import type { A2uiValidationResult } from '@ngaf/a2ui'; import { A2uiValidationErrorsComponent } from './validation-errors.component'; @Component({ diff --git a/libs/chat/src/lib/a2ui/catalog/card.component.ts b/libs/chat/src/lib/a2ui/catalog/card.component.ts index 738618a2d..a230821c2 100644 --- a/libs/chat/src/lib/a2ui/catalog/card.component.ts +++ b/libs/chat/src/lib/a2ui/catalog/card.component.ts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT import { Component, input } from '@angular/core'; import type { Spec } from '@json-render/core'; -import { RenderElementComponent } from '@cacheplane/render'; +import { RenderElementComponent } from '@ngaf/render'; @Component({ selector: 'a2ui-card', diff --git a/libs/chat/src/lib/a2ui/catalog/check-box.component.ts b/libs/chat/src/lib/a2ui/catalog/check-box.component.ts index 58f35b122..2ae52a430 100644 --- a/libs/chat/src/lib/a2ui/catalog/check-box.component.ts +++ b/libs/chat/src/lib/a2ui/catalog/check-box.component.ts @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT import { Component, input, ChangeDetectionStrategy } from '@angular/core'; -import type { A2uiValidationResult } from '@cacheplane/a2ui'; +import type { A2uiValidationResult } from '@ngaf/a2ui'; import { A2uiValidationErrorsComponent } from './validation-errors.component'; import { emitBinding } from './emit-binding'; diff --git a/libs/chat/src/lib/a2ui/catalog/choice-picker.component.ts b/libs/chat/src/lib/a2ui/catalog/choice-picker.component.ts index f0e48d6a6..50016325f 100644 --- a/libs/chat/src/lib/a2ui/catalog/choice-picker.component.ts +++ b/libs/chat/src/lib/a2ui/catalog/choice-picker.component.ts @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT import { Component, input, ChangeDetectionStrategy } from '@angular/core'; -import type { A2uiValidationResult } from '@cacheplane/a2ui'; +import type { A2uiValidationResult } from '@ngaf/a2ui'; import { A2uiValidationErrorsComponent } from './validation-errors.component'; import { emitBinding } from './emit-binding'; diff --git a/libs/chat/src/lib/a2ui/catalog/column.component.ts b/libs/chat/src/lib/a2ui/catalog/column.component.ts index 9b7de189c..66fa3caaa 100644 --- a/libs/chat/src/lib/a2ui/catalog/column.component.ts +++ b/libs/chat/src/lib/a2ui/catalog/column.component.ts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT import { Component, input } from '@angular/core'; import type { Spec } from '@json-render/core'; -import { RenderElementComponent } from '@cacheplane/render'; +import { RenderElementComponent } from '@ngaf/render'; @Component({ selector: 'a2ui-column', diff --git a/libs/chat/src/lib/a2ui/catalog/date-time-input.component.ts b/libs/chat/src/lib/a2ui/catalog/date-time-input.component.ts index 4a821229c..7f196da5c 100644 --- a/libs/chat/src/lib/a2ui/catalog/date-time-input.component.ts +++ b/libs/chat/src/lib/a2ui/catalog/date-time-input.component.ts @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT import { Component, input, ChangeDetectionStrategy } from '@angular/core'; -import type { A2uiValidationResult } from '@cacheplane/a2ui'; +import type { A2uiValidationResult } from '@ngaf/a2ui'; import { A2uiValidationErrorsComponent } from './validation-errors.component'; import { emitBinding } from './emit-binding'; diff --git a/libs/chat/src/lib/a2ui/catalog/index.ts b/libs/chat/src/lib/a2ui/catalog/index.ts index 53e392ed6..3a374e867 100644 --- a/libs/chat/src/lib/a2ui/catalog/index.ts +++ b/libs/chat/src/lib/a2ui/catalog/index.ts @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -import { views, type ViewRegistry } from '@cacheplane/render'; +import { views, type ViewRegistry } from '@ngaf/render'; import { A2uiAudioPlayerComponent } from './audio-player.component'; import { A2uiButtonComponent } from './button.component'; import { A2uiCardComponent } from './card.component'; diff --git a/libs/chat/src/lib/a2ui/catalog/list.component.ts b/libs/chat/src/lib/a2ui/catalog/list.component.ts index f418bbf39..eaf6070cb 100644 --- a/libs/chat/src/lib/a2ui/catalog/list.component.ts +++ b/libs/chat/src/lib/a2ui/catalog/list.component.ts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT import { Component, input } from '@angular/core'; import type { Spec } from '@json-render/core'; -import { RenderElementComponent } from '@cacheplane/render'; +import { RenderElementComponent } from '@ngaf/render'; @Component({ selector: 'a2ui-list', diff --git a/libs/chat/src/lib/a2ui/catalog/modal.component.ts b/libs/chat/src/lib/a2ui/catalog/modal.component.ts index 5d6ccc3ec..8eb1d91c0 100644 --- a/libs/chat/src/lib/a2ui/catalog/modal.component.ts +++ b/libs/chat/src/lib/a2ui/catalog/modal.component.ts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT import { Component, input } from '@angular/core'; import type { Spec } from '@json-render/core'; -import { RenderElementComponent } from '@cacheplane/render'; +import { RenderElementComponent } from '@ngaf/render'; import { emitBinding } from './emit-binding'; @Component({ diff --git a/libs/chat/src/lib/a2ui/catalog/row.component.ts b/libs/chat/src/lib/a2ui/catalog/row.component.ts index 486c60748..38d66f7c2 100644 --- a/libs/chat/src/lib/a2ui/catalog/row.component.ts +++ b/libs/chat/src/lib/a2ui/catalog/row.component.ts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT import { Component, input } from '@angular/core'; import type { Spec } from '@json-render/core'; -import { RenderElementComponent } from '@cacheplane/render'; +import { RenderElementComponent } from '@ngaf/render'; @Component({ selector: 'a2ui-row', diff --git a/libs/chat/src/lib/a2ui/catalog/slider.component.ts b/libs/chat/src/lib/a2ui/catalog/slider.component.ts index ac52fa0c2..c1482837a 100644 --- a/libs/chat/src/lib/a2ui/catalog/slider.component.ts +++ b/libs/chat/src/lib/a2ui/catalog/slider.component.ts @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT import { Component, input, ChangeDetectionStrategy } from '@angular/core'; -import type { A2uiValidationResult } from '@cacheplane/a2ui'; +import type { A2uiValidationResult } from '@ngaf/a2ui'; import { A2uiValidationErrorsComponent } from './validation-errors.component'; import { emitBinding } from './emit-binding'; diff --git a/libs/chat/src/lib/a2ui/catalog/tabs.component.ts b/libs/chat/src/lib/a2ui/catalog/tabs.component.ts index 8efcb0d30..6cbfc7c50 100644 --- a/libs/chat/src/lib/a2ui/catalog/tabs.component.ts +++ b/libs/chat/src/lib/a2ui/catalog/tabs.component.ts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT import { Component, computed, effect, input, signal } from '@angular/core'; import type { Spec } from '@json-render/core'; -import { RenderElementComponent } from '@cacheplane/render'; +import { RenderElementComponent } from '@ngaf/render'; import { emitBinding } from './emit-binding'; @Component({ diff --git a/libs/chat/src/lib/a2ui/catalog/text-field.component.ts b/libs/chat/src/lib/a2ui/catalog/text-field.component.ts index 0555dff59..3b8335da4 100644 --- a/libs/chat/src/lib/a2ui/catalog/text-field.component.ts +++ b/libs/chat/src/lib/a2ui/catalog/text-field.component.ts @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT import { Component, input, ChangeDetectionStrategy } from '@angular/core'; -import type { A2uiValidationResult } from '@cacheplane/a2ui'; +import type { A2uiValidationResult } from '@ngaf/a2ui'; import { A2uiValidationErrorsComponent } from './validation-errors.component'; import { emitBinding } from './emit-binding'; diff --git a/libs/chat/src/lib/a2ui/catalog/validation-errors.component.ts b/libs/chat/src/lib/a2ui/catalog/validation-errors.component.ts index bbcc53b83..19af24eee 100644 --- a/libs/chat/src/lib/a2ui/catalog/validation-errors.component.ts +++ b/libs/chat/src/lib/a2ui/catalog/validation-errors.component.ts @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT import { Component, input, ChangeDetectionStrategy } from '@angular/core'; -import type { A2uiValidationResult } from '@cacheplane/a2ui'; +import type { A2uiValidationResult } from '@ngaf/a2ui'; @Component({ selector: 'a2ui-validation-errors', diff --git a/libs/chat/src/lib/a2ui/surface-store.spec.ts b/libs/chat/src/lib/a2ui/surface-store.spec.ts index 611991106..f44499309 100644 --- a/libs/chat/src/lib/a2ui/surface-store.spec.ts +++ b/libs/chat/src/lib/a2ui/surface-store.spec.ts @@ -2,7 +2,7 @@ import { describe, it, expect } from 'vitest'; import { TestBed } from '@angular/core/testing'; import { createA2uiSurfaceStore } from './surface-store'; -import type { A2uiMessage } from '@cacheplane/a2ui'; +import type { A2uiMessage } from '@ngaf/a2ui'; describe('createA2uiSurfaceStore', () => { function setup() { diff --git a/libs/chat/src/lib/a2ui/surface-store.ts b/libs/chat/src/lib/a2ui/surface-store.ts index 5d5b77b57..b9079d858 100644 --- a/libs/chat/src/lib/a2ui/surface-store.ts +++ b/libs/chat/src/lib/a2ui/surface-store.ts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT import { computed, signal, type Signal } from '@angular/core'; -import type { A2uiMessage, A2uiSurface } from '@cacheplane/a2ui'; -import { setByPointer, deleteByPointer } from '@cacheplane/a2ui'; +import type { A2uiMessage, A2uiSurface } from '@ngaf/a2ui'; +import { setByPointer, deleteByPointer } from '@ngaf/a2ui'; export interface A2uiSurfaceStore { apply(message: A2uiMessage): void; diff --git a/libs/chat/src/lib/a2ui/surface-to-spec.spec.ts b/libs/chat/src/lib/a2ui/surface-to-spec.spec.ts index 76cadefe3..a6baeee83 100644 --- a/libs/chat/src/lib/a2ui/surface-to-spec.spec.ts +++ b/libs/chat/src/lib/a2ui/surface-to-spec.spec.ts @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT import { describe, it, expect } from 'vitest'; -import type { A2uiSurface, A2uiComponent } from '@cacheplane/a2ui'; +import type { A2uiSurface, A2uiComponent } from '@ngaf/a2ui'; import { surfaceToSpec } from './surface-to-spec'; function makeSurface(components: A2uiComponent[], dataModel: Record = {}): A2uiSurface { diff --git a/libs/chat/src/lib/a2ui/surface-to-spec.ts b/libs/chat/src/lib/a2ui/surface-to-spec.ts index 16661bdc4..361be7ee1 100644 --- a/libs/chat/src/lib/a2ui/surface-to-spec.ts +++ b/libs/chat/src/lib/a2ui/surface-to-spec.ts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT import type { Spec, UIElement } from '@json-render/core'; -import type { A2uiSurface, A2uiChildTemplate } from '@cacheplane/a2ui'; -import { resolveDynamic, getByPointer, evaluateCheckRules, isPathRef } from '@cacheplane/a2ui'; +import type { A2uiSurface, A2uiChildTemplate } from '@ngaf/a2ui'; +import { resolveDynamic, getByPointer, evaluateCheckRules, isPathRef } from '@ngaf/a2ui'; const RESERVED_KEYS = new Set(['id', 'component', 'children', 'action', 'checks', '_bindings']); diff --git a/libs/chat/src/lib/a2ui/surface.component.ts b/libs/chat/src/lib/a2ui/surface.component.ts index f0211d9a8..cbf877311 100644 --- a/libs/chat/src/lib/a2ui/surface.component.ts +++ b/libs/chat/src/lib/a2ui/surface.component.ts @@ -2,9 +2,9 @@ import { Component, computed, input, output, ChangeDetectionStrategy, } from '@angular/core'; -import type { A2uiSurface, A2uiActionMessage } from '@cacheplane/a2ui'; -import { RenderSpecComponent, toRenderRegistry } from '@cacheplane/render'; -import type { ViewRegistry, RenderEvent } from '@cacheplane/render'; +import type { A2uiSurface, A2uiActionMessage } from '@ngaf/a2ui'; +import { RenderSpecComponent, toRenderRegistry } from '@ngaf/render'; +import type { ViewRegistry, RenderEvent } from '@ngaf/render'; import { surfaceToSpec } from './surface-to-spec'; import { buildA2uiActionMessage } from './build-action-message'; diff --git a/libs/chat/src/lib/chat.types.ts b/libs/chat/src/lib/chat.types.ts index 8d9c64574..eba159076 100644 --- a/libs/chat/src/lib/chat.types.ts +++ b/libs/chat/src/lib/chat.types.ts @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -import type { AngularRegistry } from '@cacheplane/render'; +import type { AngularRegistry } from '@ngaf/render'; export interface ChatConfig { registry?: AngularRegistry; diff --git a/libs/chat/src/lib/compositions/chat/chat-render-event.ts b/libs/chat/src/lib/compositions/chat/chat-render-event.ts index a0cee332b..f24560fe0 100644 --- a/libs/chat/src/lib/compositions/chat/chat-render-event.ts +++ b/libs/chat/src/lib/compositions/chat/chat-render-event.ts @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -import type { RenderEvent } from '@cacheplane/render'; +import type { RenderEvent } from '@ngaf/render'; export interface ChatRenderEvent { readonly messageIndex: number; diff --git a/libs/chat/src/lib/compositions/chat/chat.component.spec.ts b/libs/chat/src/lib/compositions/chat/chat.component.spec.ts index b136aa015..0b04e5d70 100644 --- a/libs/chat/src/lib/compositions/chat/chat.component.spec.ts +++ b/libs/chat/src/lib/compositions/chat/chat.component.spec.ts @@ -9,7 +9,7 @@ import { ChatComponent } from './chat.component'; import { messageContent } from '../shared/message-utils'; import { createContentClassifier, type ContentClassifier } from '../../streaming/content-classifier'; import { mockAgent } from '../../testing/mock-agent'; -import { signalStateStore } from '@cacheplane/render'; +import { signalStateStore } from '@ngaf/render'; import type { AgentEvent } from '../../agent/agent-event'; describe('ChatComponent', () => { diff --git a/libs/chat/src/lib/compositions/chat/chat.component.ts b/libs/chat/src/lib/compositions/chat/chat.component.ts index 2a277a290..45b31cc39 100644 --- a/libs/chat/src/lib/compositions/chat/chat.component.ts +++ b/libs/chat/src/lib/compositions/chat/chat.component.ts @@ -15,8 +15,8 @@ import { } from '@angular/core'; import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import type { Agent } from '../../agent'; -import type { ViewRegistry, RenderEvent } from '@cacheplane/render'; -import type { A2uiActionMessage } from '@cacheplane/a2ui'; +import type { ViewRegistry, RenderEvent } from '@ngaf/render'; +import type { A2uiActionMessage } from '@ngaf/a2ui'; import type { StateStore } from '@json-render/core'; import { ChatMessagesComponent } from '../../primitives/chat-messages/chat-messages.component'; import { MessageTemplateDirective } from '../../primitives/chat-messages/message-template.directive'; @@ -26,7 +26,7 @@ import { ChatErrorComponent } from '../../primitives/chat-error/chat-error.compo import { ChatInterruptComponent } from '../../primitives/chat-interrupt/chat-interrupt.component'; import { ChatThreadListComponent, Thread } from '../../primitives/chat-thread-list/chat-thread-list.component'; import { ChatGenerativeUiComponent } from '../../primitives/chat-generative-ui/chat-generative-ui.component'; -import { toRenderRegistry, signalStateStore } from '@cacheplane/render'; +import { toRenderRegistry, signalStateStore } from '@ngaf/render'; import { createContentClassifier, type ContentClassifier } from '../../streaming/content-classifier'; import { messageContent } from '../shared/message-utils'; import { CHAT_THEME_STYLES } from '../../styles/chat-theme'; diff --git a/libs/chat/src/lib/primitives/chat-generative-ui/chat-generative-ui.component.ts b/libs/chat/src/lib/primitives/chat-generative-ui/chat-generative-ui.component.ts index e4959003a..b98f90f37 100644 --- a/libs/chat/src/lib/primitives/chat-generative-ui/chat-generative-ui.component.ts +++ b/libs/chat/src/lib/primitives/chat-generative-ui/chat-generative-ui.component.ts @@ -6,8 +6,8 @@ import { ChangeDetectionStrategy, } from '@angular/core'; import type { Spec, StateStore } from '@json-render/core'; -import type { AngularRegistry, RenderEvent } from '@cacheplane/render'; -import { RenderSpecComponent } from '@cacheplane/render'; +import type { AngularRegistry, RenderEvent } from '@ngaf/render'; +import { RenderSpecComponent } from '@ngaf/render'; @Component({ selector: 'chat-generative-ui', diff --git a/libs/chat/src/lib/provide-chat.spec.ts b/libs/chat/src/lib/provide-chat.spec.ts index b055b2484..c9346f102 100644 --- a/libs/chat/src/lib/provide-chat.spec.ts +++ b/libs/chat/src/lib/provide-chat.spec.ts @@ -6,7 +6,7 @@ import type { ChatConfig } from './provide-chat'; import { __resetRunLicenseCheckStateForTests, __resetNagStateForTests, -} from '@cacheplane/licensing/testing'; +} from '@ngaf/licensing/testing'; describe('provideChat', () => { beforeEach(() => { @@ -60,7 +60,7 @@ describe('provideChat', () => { const warn = globalThis.console.warn as ReturnType; expect( warn.mock.calls.some((c) => - String(c[0]).includes('[cacheplane] @cacheplane/chat'), + String(c[0]).includes('[cacheplane] @ngaf/chat'), ), ).toBe(true); }); diff --git a/libs/chat/src/lib/provide-chat.ts b/libs/chat/src/lib/provide-chat.ts index 2ee16c59a..4f8336300 100644 --- a/libs/chat/src/lib/provide-chat.ts +++ b/libs/chat/src/lib/provide-chat.ts @@ -4,10 +4,10 @@ import { runLicenseCheck, LICENSE_PUBLIC_KEY, inferNoncommercial, -} from '@cacheplane/licensing'; -import type { AngularRegistry } from '@cacheplane/render'; +} from '@ngaf/licensing'; +import type { AngularRegistry } from '@ngaf/render'; -const PACKAGE_NAME = '@cacheplane/chat'; +const PACKAGE_NAME = '@ngaf/chat'; declare const __CACHEPLANE_CHAT_VERSION__: string | undefined; const PACKAGE_VERSION = typeof __CACHEPLANE_CHAT_VERSION__ !== 'undefined' diff --git a/libs/chat/src/lib/streaming/content-classifier.ts b/libs/chat/src/lib/streaming/content-classifier.ts index 6528d2033..5318427c2 100644 --- a/libs/chat/src/lib/streaming/content-classifier.ts +++ b/libs/chat/src/lib/streaming/content-classifier.ts @@ -1,10 +1,10 @@ // SPDX-License-Identifier: MIT import { signal, untracked, type Signal } from '@angular/core'; import type { Spec } from '@json-render/core'; -import { createPartialJsonParser } from '@cacheplane/partial-json'; +import { createPartialJsonParser } from '@ngaf/partial-json'; import { createParseTreeStore, type ElementAccumulationState, type ParseTreeStore } from './parse-tree-store'; -import { createA2uiMessageParser, type A2uiMessageParser } from '@cacheplane/a2ui'; -import type { A2uiSurface } from '@cacheplane/a2ui'; +import { createA2uiMessageParser, type A2uiMessageParser } from '@ngaf/a2ui'; +import type { A2uiSurface } from '@ngaf/a2ui'; import { createA2uiSurfaceStore, type A2uiSurfaceStore } from '../a2ui/surface-store'; export type ContentType = 'undetermined' | 'markdown' | 'json-render' | 'a2ui' | 'mixed'; diff --git a/libs/chat/src/lib/streaming/parse-tree-store.spec.ts b/libs/chat/src/lib/streaming/parse-tree-store.spec.ts index 1398662d7..a0efa08ba 100644 --- a/libs/chat/src/lib/streaming/parse-tree-store.spec.ts +++ b/libs/chat/src/lib/streaming/parse-tree-store.spec.ts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT import { describe, it, expect } from 'vitest'; import { TestBed } from '@angular/core/testing'; -import { createPartialJsonParser } from '@cacheplane/partial-json'; +import { createPartialJsonParser } from '@ngaf/partial-json'; import type { Spec } from '@json-render/core'; import { createParseTreeStore } from './parse-tree-store'; diff --git a/libs/chat/src/lib/streaming/parse-tree-store.ts b/libs/chat/src/lib/streaming/parse-tree-store.ts index ef669d665..1af371161 100644 --- a/libs/chat/src/lib/streaming/parse-tree-store.ts +++ b/libs/chat/src/lib/streaming/parse-tree-store.ts @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT import { signal, type Signal } from '@angular/core'; import type { Spec } from '@json-render/core'; -import type { PartialJsonParser, JsonObjectNode } from '@cacheplane/partial-json'; -import { materialize } from '@cacheplane/partial-json'; +import type { PartialJsonParser, JsonObjectNode } from '@ngaf/partial-json'; +import { materialize } from '@ngaf/partial-json'; export interface ElementAccumulationState { hasType: boolean; diff --git a/libs/chat/src/public-api.ts b/libs/chat/src/public-api.ts index 614ba5301..d62cf0656 100644 --- a/libs/chat/src/public-api.ts +++ b/libs/chat/src/public-api.ts @@ -68,10 +68,10 @@ export { ICON_WARNING, ICON_AGENT, ICON_CHECK, ICON_SEND, } from './lib/styles/chat-icons'; -// Views (re-exported from @cacheplane/render for convenience) -export { views, withViews, withoutViews, toRenderRegistry } from '@cacheplane/render'; -export type { ViewRegistry } from '@cacheplane/render'; -export { provideViews, VIEW_REGISTRY } from '@cacheplane/render'; +// Views (re-exported from @ngaf/render for convenience) +export { views, withViews, withoutViews, toRenderRegistry } from '@ngaf/render'; +export type { ViewRegistry } from '@ngaf/render'; +export { provideViews, VIEW_REGISTRY } from '@ngaf/render'; // Streaming / Generative UI export { createContentClassifier } from './lib/streaming/content-classifier'; @@ -109,15 +109,15 @@ export { A2uiTabsComponent } from './lib/a2ui/catalog/tabs.component'; export { A2uiAudioPlayerComponent } from './lib/a2ui/catalog/audio-player.component'; export { A2uiVideoComponent } from './lib/a2ui/catalog/video.component'; -// A2UI types (re-exported from @cacheplane/a2ui for convenience) +// A2UI types (re-exported from @ngaf/a2ui for convenience) export type { A2uiActionMessage, A2uiClientDataModel, A2uiSurface, A2uiComponent, A2uiTheme, DynamicValue, DynamicString, DynamicNumber, DynamicBoolean, A2uiPathRef, A2uiFunctionCall, A2uiCheckRule, A2uiValidationResult, -} from '@cacheplane/a2ui'; -export { isPathRef, isFunctionCall } from '@cacheplane/a2ui'; +} from '@ngaf/a2ui'; +export { isPathRef, isFunctionCall } from '@ngaf/a2ui'; // Test utilities export { mockAgent } from './lib/testing/mock-agent'; diff --git a/libs/cockpit-docs/package.json b/libs/cockpit-docs/package.json index 4141e7024..0f554e006 100644 --- a/libs/cockpit-docs/package.json +++ b/libs/cockpit-docs/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/cockpit-docs", + "name": "@ngaf/cockpit-docs", "version": "0.0.1", "license": "MIT", "repository": { diff --git a/libs/cockpit-registry/package.json b/libs/cockpit-registry/package.json index d166607a5..7cbb95ed9 100644 --- a/libs/cockpit-registry/package.json +++ b/libs/cockpit-registry/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/cockpit-registry", + "name": "@ngaf/cockpit-registry", "version": "0.0.1", "license": "MIT", "repository": { diff --git a/libs/cockpit-shell/package.json b/libs/cockpit-shell/package.json index 0ac1dcf49..66245188b 100644 --- a/libs/cockpit-shell/package.json +++ b/libs/cockpit-shell/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/cockpit-shell", + "name": "@ngaf/cockpit-shell", "version": "0.0.1", "license": "MIT", "repository": { diff --git a/libs/cockpit-testing/package.json b/libs/cockpit-testing/package.json index 03988c429..cc0d1c5ef 100644 --- a/libs/cockpit-testing/package.json +++ b/libs/cockpit-testing/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/cockpit-testing", + "name": "@ngaf/cockpit-testing", "version": "0.0.1", "license": "MIT", "repository": { diff --git a/libs/cockpit-ui/package.json b/libs/cockpit-ui/package.json index 41266bba3..93cfa6830 100644 --- a/libs/cockpit-ui/package.json +++ b/libs/cockpit-ui/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/cockpit-ui", + "name": "@ngaf/cockpit-ui", "version": "0.0.1", "license": "MIT", "repository": { diff --git a/libs/db/package.json b/libs/db/package.json index 6bf6fbb24..7a7441001 100644 --- a/libs/db/package.json +++ b/libs/db/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/db", + "name": "@ngaf/db", "version": "0.0.1", "license": "MIT", "repository": { diff --git a/libs/design-tokens/package.json b/libs/design-tokens/package.json index 19985d1cf..c52e4c1ad 100644 --- a/libs/design-tokens/package.json +++ b/libs/design-tokens/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/design-tokens", + "name": "@ngaf/design-tokens", "version": "0.0.1", "license": "MIT", "repository": { diff --git a/libs/example-layouts/package.json b/libs/example-layouts/package.json index bd5056601..9884e6134 100644 --- a/libs/example-layouts/package.json +++ b/libs/example-layouts/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/example-layouts", + "name": "@ngaf/example-layouts", "version": "0.0.1", "peerDependencies": { "@angular/core": "^20.0.0 || ^21.0.0", diff --git a/libs/langgraph/package.json b/libs/langgraph/package.json index 25a850596..492e35254 100644 --- a/libs/langgraph/package.json +++ b/libs/langgraph/package.json @@ -1,9 +1,9 @@ { - "name": "@cacheplane/langgraph", + "name": "@ngaf/langgraph", "version": "0.0.1", "peerDependencies": { - "@cacheplane/chat": "*", - "@cacheplane/licensing": "*", + "@ngaf/chat": "*", + "@ngaf/licensing": "*", "@angular/core": "^20.0.0 || ^21.0.0", "@langchain/core": "^1.1.33", "@langchain/langgraph-sdk": "^1.7.4", diff --git a/libs/langgraph/src/lib/agent.provider.spec.ts b/libs/langgraph/src/lib/agent.provider.spec.ts index 4331d65eb..256c15e67 100644 --- a/libs/langgraph/src/lib/agent.provider.spec.ts +++ b/libs/langgraph/src/lib/agent.provider.spec.ts @@ -8,7 +8,7 @@ import { generateKeyPair, __resetRunLicenseCheckStateForTests, __resetNagStateForTests, -} from '@cacheplane/licensing/testing'; +} from '@ngaf/licensing/testing'; describe('provideAgent', () => { beforeEach(() => { @@ -75,6 +75,6 @@ describe('provideAgent', () => { TestBed.inject(AGENT_CONFIG); await new Promise((r) => setTimeout(r, 0)); const calls = warn.mock.calls.map((c) => String(c[0])); - expect(calls.some((m) => m.includes('[cacheplane] @cacheplane/langgraph'))).toBe(true); + expect(calls.some((m) => m.includes('[cacheplane] @ngaf/langgraph'))).toBe(true); }); }); diff --git a/libs/langgraph/src/lib/agent.provider.ts b/libs/langgraph/src/lib/agent.provider.ts index 6cd08421d..d330dd536 100644 --- a/libs/langgraph/src/lib/agent.provider.ts +++ b/libs/langgraph/src/lib/agent.provider.ts @@ -4,10 +4,10 @@ import { runLicenseCheck, LICENSE_PUBLIC_KEY, inferNoncommercial, -} from '@cacheplane/licensing'; +} from '@ngaf/licensing'; import { AgentTransport } from './agent.types'; -const PACKAGE_NAME = '@cacheplane/langgraph'; +const PACKAGE_NAME = '@ngaf/langgraph'; // Wired up by the release pipeline — imported lazily to avoid a hard build-time // dependency on package.json. declare const __CACHEPLANE_AGENT_VERSION__: string | undefined; diff --git a/libs/langgraph/src/lib/to-agent.conformance.spec.ts b/libs/langgraph/src/lib/to-agent.conformance.spec.ts index bf46390cc..56229274a 100644 --- a/libs/langgraph/src/lib/to-agent.conformance.spec.ts +++ b/libs/langgraph/src/lib/to-agent.conformance.spec.ts @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT import { TestBed } from '@angular/core/testing'; -import { runAgentConformance } from '@cacheplane/chat'; +import { runAgentConformance } from '@ngaf/chat'; import { toAgent } from './to-agent'; import { signal } from '@angular/core'; import { ResourceStatus } from './agent.types'; diff --git a/libs/langgraph/src/lib/to-agent.spec.ts b/libs/langgraph/src/lib/to-agent.spec.ts index 773b0bc91..1891c4a19 100644 --- a/libs/langgraph/src/lib/to-agent.spec.ts +++ b/libs/langgraph/src/lib/to-agent.spec.ts @@ -2,7 +2,7 @@ import { signal } from '@angular/core'; import { TestBed } from '@angular/core/testing'; import { HumanMessage, AIMessage } from '@langchain/core/messages'; -import type { Agent, AgentEvent } from '@cacheplane/chat'; +import type { Agent, AgentEvent } from '@ngaf/chat'; import type { AgentRef, CustomStreamEvent } from './agent.types'; import { ResourceStatus } from './agent.types'; import { toAgent } from './to-agent'; diff --git a/libs/langgraph/src/lib/to-agent.ts b/libs/langgraph/src/lib/to-agent.ts index 7343a6b34..28dba191f 100644 --- a/libs/langgraph/src/lib/to-agent.ts +++ b/libs/langgraph/src/lib/to-agent.ts @@ -7,7 +7,7 @@ import type { AgentWithHistory, AgentCheckpoint, AgentEvent, Message, Role, ToolCall, ToolCallStatus, AgentStatus, AgentInterrupt, Subagent, AgentSubmitInput, AgentSubmitOptions, -} from '@cacheplane/chat'; +} from '@ngaf/chat'; import type { AgentRef, CustomStreamEvent, SubagentStreamRef, ThreadState } from './agent.types'; import { ResourceStatus } from './agent.types'; diff --git a/libs/langgraph/src/test-setup.ts b/libs/langgraph/src/test-setup.ts index 171964e39..f258dbb91 100644 --- a/libs/langgraph/src/test-setup.ts +++ b/libs/langgraph/src/test-setup.ts @@ -14,7 +14,7 @@ import { createHash } from 'node:crypto'; // which has no cross-realm constraints and produces the same digest. // // Scoped to libs/langgraph test-setup only — this does not affect production code -// or the published package (@cacheplane/langgraph). The @noble/ed25519 default +// or the published package (@ngaf/langgraph). The @noble/ed25519 default // remains in place for all non-test consumers. ed.etc.sha512Async = async (...messages: Uint8Array[]): Promise => { const hash = createHash('sha512'); diff --git a/libs/licensing/README.md b/libs/licensing/README.md index da411f00b..544546c8a 100644 --- a/libs/licensing/README.md +++ b/libs/licensing/README.md @@ -1,12 +1,12 @@ -# @cacheplane/licensing +# @ngaf/licensing Offline Ed25519 license verification + non-blocking telemetry for the Cacheplane Angular framework libraries. ## Status -Private, pre-1.0. Consumed by `@cacheplane/langgraph`, `@cacheplane/render`, and -`@cacheplane/chat`. Not intended as a standalone import. +Private, pre-1.0. Consumed by `@ngaf/langgraph`, `@ngaf/render`, and +`@ngaf/chat`. Not intended as a standalone import. ## Behavior diff --git a/libs/licensing/package.json b/libs/licensing/package.json index 3f2e2038d..c2a012f32 100644 --- a/libs/licensing/package.json +++ b/libs/licensing/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/licensing", + "name": "@ngaf/licensing", "version": "0.0.1", "license": "MIT", "repository": { diff --git a/libs/licensing/src/lib/license-public-key.ts b/libs/licensing/src/lib/license-public-key.ts index 1c3f64feb..ab5b52244 100644 --- a/libs/licensing/src/lib/license-public-key.ts +++ b/libs/licensing/src/lib/license-public-key.ts @@ -9,5 +9,5 @@ function hexToBytes(hex: string): Uint8Array { return out; } -/** Ed25519 public key baked into this build of `@cacheplane/licensing`. */ +/** Ed25519 public key baked into this build of `@ngaf/licensing`. */ export const LICENSE_PUBLIC_KEY: Uint8Array = hexToBytes(LICENSE_PUBLIC_KEY_HEX); diff --git a/libs/licensing/src/lib/nag.spec.ts b/libs/licensing/src/lib/nag.spec.ts index c33bb72c7..b80109e44 100644 --- a/libs/licensing/src/lib/nag.spec.ts +++ b/libs/licensing/src/lib/nag.spec.ts @@ -14,28 +14,28 @@ describe('emitNag', () => { }); it('is silent when status is licensed', () => { - emitNag({ status: 'licensed' }, { package: '@cacheplane/langgraph', warn }); + emitNag({ status: 'licensed' }, { package: '@ngaf/langgraph', warn }); expect(warn).not.toHaveBeenCalled(); }); it('is silent when status is noncommercial', () => { - emitNag({ status: 'noncommercial' }, { package: '@cacheplane/langgraph', warn }); + emitNag({ status: 'noncommercial' }, { package: '@ngaf/langgraph', warn }); expect(warn).not.toHaveBeenCalled(); }); it('warns with a stable prefix when status is missing', () => { - emitNag({ status: 'missing' }, { package: '@cacheplane/langgraph', warn }); + emitNag({ status: 'missing' }, { package: '@ngaf/langgraph', warn }); expect(warn).toHaveBeenCalledTimes(1); const message = warn.mock.calls[0][0] as string; expect(message).toContain('[cacheplane]'); - expect(message).toContain('@cacheplane/langgraph'); + expect(message).toContain('@ngaf/langgraph'); expect(message).toContain('cacheplane.dev/pricing'); }); it('warns differently for grace / expired / tampered', () => { - emitNag({ status: 'grace' }, { package: '@cacheplane/langgraph', warn }); - emitNag({ status: 'expired' }, { package: '@cacheplane/render', warn }); - emitNag({ status: 'tampered' }, { package: '@cacheplane/chat', warn }); + emitNag({ status: 'grace' }, { package: '@ngaf/langgraph', warn }); + emitNag({ status: 'expired' }, { package: '@ngaf/render', warn }); + emitNag({ status: 'tampered' }, { package: '@ngaf/chat', warn }); expect(warn).toHaveBeenCalledTimes(3); expect(warn.mock.calls[0][0]).toMatch(/grace/i); expect(warn.mock.calls[1][0]).toMatch(/expired/i); @@ -43,14 +43,14 @@ describe('emitNag', () => { }); it('dedupes repeated calls for the same package + status', () => { - emitNag({ status: 'missing' }, { package: '@cacheplane/langgraph', warn }); - emitNag({ status: 'missing' }, { package: '@cacheplane/langgraph', warn }); + emitNag({ status: 'missing' }, { package: '@ngaf/langgraph', warn }); + emitNag({ status: 'missing' }, { package: '@ngaf/langgraph', warn }); expect(warn).toHaveBeenCalledTimes(1); }); it('does not dedupe across different packages', () => { - emitNag({ status: 'missing' }, { package: '@cacheplane/langgraph', warn }); - emitNag({ status: 'missing' }, { package: '@cacheplane/render', warn }); + emitNag({ status: 'missing' }, { package: '@ngaf/langgraph', warn }); + emitNag({ status: 'missing' }, { package: '@ngaf/render', warn }); expect(warn).toHaveBeenCalledTimes(2); }); }); diff --git a/libs/licensing/src/lib/nag.ts b/libs/licensing/src/lib/nag.ts index d09189ff0..427b1f664 100644 --- a/libs/licensing/src/lib/nag.ts +++ b/libs/licensing/src/lib/nag.ts @@ -2,7 +2,7 @@ import type { EvaluateResult } from './evaluate-license.js'; export interface EmitNagOptions { - /** Fully-qualified npm package name, e.g. "@cacheplane/langgraph". */ + /** Fully-qualified npm package name, e.g. "@ngaf/langgraph". */ package: string; /** Injected warn channel; defaults to `console.warn`. */ warn?: (message: string) => void; diff --git a/libs/licensing/src/lib/run-license-check.spec.ts b/libs/licensing/src/lib/run-license-check.spec.ts index 1bbe06dff..88959d28e 100644 --- a/libs/licensing/src/lib/run-license-check.spec.ts +++ b/libs/licensing/src/lib/run-license-check.spec.ts @@ -35,7 +35,7 @@ describe('runLicenseCheck', () => { it('does not warn with a valid token and still fires telemetry', async () => { const status = await runLicenseCheck({ - package: '@cacheplane/langgraph', + package: '@ngaf/langgraph', version: '1.0.0', token: validToken, publicKey: kp.publicKey, @@ -53,7 +53,7 @@ describe('runLicenseCheck', () => { it('warns when token is missing', async () => { const status = await runLicenseCheck({ - package: '@cacheplane/langgraph', + package: '@ngaf/langgraph', version: '1.0.0', publicKey: kp.publicKey, nowSec: 1_900_000_000, @@ -67,7 +67,7 @@ describe('runLicenseCheck', () => { it('is idempotent per (package, token) pair', async () => { await runLicenseCheck({ - package: '@cacheplane/langgraph', + package: '@ngaf/langgraph', version: '1.0.0', token: validToken, publicKey: kp.publicKey, @@ -77,7 +77,7 @@ describe('runLicenseCheck', () => { fetch: fetchMock, }); await runLicenseCheck({ - package: '@cacheplane/langgraph', + package: '@ngaf/langgraph', version: '1.0.0', token: validToken, publicKey: kp.publicKey, @@ -94,7 +94,7 @@ describe('runLicenseCheck', () => { it('re-runs when token changes (e.g., after key rotation in the host)', async () => { const otherToken = await signLicense({ ...BASE, sub: 'cus_xyz' }, kp.privateKey); await runLicenseCheck({ - package: '@cacheplane/langgraph', + package: '@ngaf/langgraph', version: '1.0.0', token: validToken, publicKey: kp.publicKey, @@ -104,7 +104,7 @@ describe('runLicenseCheck', () => { fetch: fetchMock, }); await runLicenseCheck({ - package: '@cacheplane/langgraph', + package: '@ngaf/langgraph', version: '1.0.0', token: otherToken, publicKey: kp.publicKey, diff --git a/libs/licensing/src/lib/telemetry.spec.ts b/libs/licensing/src/lib/telemetry.spec.ts index 55ebd44a3..bfbb91617 100644 --- a/libs/licensing/src/lib/telemetry.spec.ts +++ b/libs/licensing/src/lib/telemetry.spec.ts @@ -25,7 +25,7 @@ describe('createTelemetryClient', () => { }); await client.send({ - package: '@cacheplane/langgraph', + package: '@ngaf/langgraph', version: '1.0.0', licenseId: 'cus_123', }); @@ -35,7 +35,7 @@ describe('createTelemetryClient', () => { expect(url).toBe('https://telemetry.example.com/v1/ping'); expect(init.method).toBe('POST'); const body = JSON.parse(init.body as string); - expect(body.package).toBe('@cacheplane/langgraph'); + expect(body.package).toBe('@ngaf/langgraph'); expect(body.version).toBe('1.0.0'); expect(body.license_id).toBe('cus_123'); expect(typeof body.anon_instance_id).toBe('string'); @@ -48,8 +48,8 @@ describe('createTelemetryClient', () => { endpoint: 'https://telemetry.example.com/v1/ping', fetch: fetchMock, }); - await client.send({ package: '@cacheplane/langgraph', version: '1.0.0' }); - await client.send({ package: '@cacheplane/langgraph', version: '1.0.0' }); + await client.send({ package: '@ngaf/langgraph', version: '1.0.0' }); + await client.send({ package: '@ngaf/langgraph', version: '1.0.0' }); const id1 = JSON.parse(fetchMock.mock.calls[0][1].body as string).anon_instance_id; const id2 = JSON.parse(fetchMock.mock.calls[1][1].body as string).anon_instance_id; @@ -63,7 +63,7 @@ describe('createTelemetryClient', () => { endpoint: 'https://telemetry.example.com/v1/ping', fetch: fetchMock, }); - await client.send({ package: '@cacheplane/langgraph', version: '1.0.0' }); + await client.send({ package: '@ngaf/langgraph', version: '1.0.0' }); expect(fetchMock).not.toHaveBeenCalled(); }); @@ -74,7 +74,7 @@ describe('createTelemetryClient', () => { endpoint: 'https://telemetry.example.com/v1/ping', fetch: fetchMock, }); - await client.send({ package: '@cacheplane/langgraph', version: '1.0.0' }); + await client.send({ package: '@ngaf/langgraph', version: '1.0.0' }); expect(fetchMock).not.toHaveBeenCalled(); }); @@ -85,7 +85,7 @@ describe('createTelemetryClient', () => { fetch: fetchMock, }); await expect( - client.send({ package: '@cacheplane/langgraph', version: '1.0.0' }), + client.send({ package: '@ngaf/langgraph', version: '1.0.0' }), ).resolves.toBeUndefined(); }); }); diff --git a/libs/licensing/src/testing.ts b/libs/licensing/src/testing.ts index ce27ce08d..7e2114d80 100644 --- a/libs/licensing/src/testing.ts +++ b/libs/licensing/src/testing.ts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT // Monorepo-internal test helpers. NOT part of the published package — // excluded from `tsconfig.lib.json` so nothing here ships in dist. -// Downstream consumers cannot import `@cacheplane/licensing/testing`. +// Downstream consumers cannot import `@ngaf/licensing/testing`. export { generateKeyPair } from './lib/testing/keypair'; export type { DevKeyPair } from './lib/testing/keypair'; export { signLicense } from './lib/sign-license'; diff --git a/libs/partial-json/package.json b/libs/partial-json/package.json index 23dc0ea0b..3f2c1b056 100644 --- a/libs/partial-json/package.json +++ b/libs/partial-json/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/partial-json", + "name": "@ngaf/partial-json", "version": "0.0.1", "license": "MIT", "repository": { diff --git a/libs/render/package.json b/libs/render/package.json index 9f21ee84c..e329ed859 100644 --- a/libs/render/package.json +++ b/libs/render/package.json @@ -1,11 +1,11 @@ { - "name": "@cacheplane/render", + "name": "@ngaf/render", "version": "0.0.1", "peerDependencies": { "@angular/core": "^20.0.0 || ^21.0.0", "@angular/common": "^20.0.0 || ^21.0.0", "@json-render/core": "^0.16.0", - "@cacheplane/licensing": "*" + "@ngaf/licensing": "*" }, "license": "MIT", "repository": { diff --git a/libs/render/src/lib/provide-render.spec.ts b/libs/render/src/lib/provide-render.spec.ts index 70ae1c747..394d01684 100644 --- a/libs/render/src/lib/provide-render.spec.ts +++ b/libs/render/src/lib/provide-render.spec.ts @@ -8,7 +8,7 @@ import type { RenderConfig } from './render.types'; import { __resetRunLicenseCheckStateForTests, __resetNagStateForTests, -} from '@cacheplane/licensing/testing'; +} from '@ngaf/licensing/testing'; @Component({ selector: 'render-test-card', standalone: true, template: '
card
' }) class TestCardComponent {} @@ -51,7 +51,7 @@ describe('provideRender', () => { const warn = globalThis.console.warn as ReturnType; expect( warn.mock.calls.some((c) => - String(c[0]).includes('[cacheplane] @cacheplane/render'), + String(c[0]).includes('[cacheplane] @ngaf/render'), ), ).toBe(true); }); diff --git a/libs/render/src/lib/provide-render.ts b/libs/render/src/lib/provide-render.ts index 4de727549..8dd0f255a 100644 --- a/libs/render/src/lib/provide-render.ts +++ b/libs/render/src/lib/provide-render.ts @@ -4,10 +4,10 @@ import { runLicenseCheck, LICENSE_PUBLIC_KEY, inferNoncommercial, -} from '@cacheplane/licensing'; +} from '@ngaf/licensing'; import type { RenderConfig } from './render.types'; -const PACKAGE_NAME = '@cacheplane/render'; +const PACKAGE_NAME = '@ngaf/render'; declare const __CACHEPLANE_RENDER_VERSION__: string | undefined; const PACKAGE_VERSION = typeof __CACHEPLANE_RENDER_VERSION__ !== 'undefined' diff --git a/libs/ui-react/package.json b/libs/ui-react/package.json index 513f62c29..cd8a036ec 100644 --- a/libs/ui-react/package.json +++ b/libs/ui-react/package.json @@ -1,5 +1,5 @@ { - "name": "@cacheplane/ui-react", + "name": "@ngaf/ui-react", "version": "0.0.1", "license": "MIT", "repository": { diff --git a/libs/ui-react/src/lib/css-vars.ts b/libs/ui-react/src/lib/css-vars.ts index 0141ef350..97873796a 100644 --- a/libs/ui-react/src/lib/css-vars.ts +++ b/libs/ui-react/src/lib/css-vars.ts @@ -1,4 +1,4 @@ -import { colors, glass, gradient, glow, typography } from '@cacheplane/design-tokens'; +import { colors, glass, gradient, glow, typography } from '@ngaf/design-tokens'; /** * CSS custom properties derived from design tokens. diff --git a/packages/mcp/package-smoke.test.mjs b/packages/mcp/package-smoke.test.mjs index 114312247..219e16e53 100644 --- a/packages/mcp/package-smoke.test.mjs +++ b/packages/mcp/package-smoke.test.mjs @@ -14,7 +14,7 @@ const packageJsonPath = path.join(outputRoot, 'package.json'); test('source package manifest entrypoints exist locally', () => { const packageJson = require('./package.json'); - const binPath = packageJson.bin['@cacheplane/langgraph-mcp']; + const binPath = packageJson.bin['@ngaf/langgraph-mcp']; assert.equal(fs.existsSync(path.join(workspaceRoot, 'packages/mcp', packageJson.main)), true); assert.equal(fs.existsSync(path.join(workspaceRoot, 'packages/mcp', binPath)), true); @@ -26,7 +26,7 @@ function loadBuiltPackageJson() { test('built package manifest entrypoints resolve inside Nx output', () => { const packageJson = loadBuiltPackageJson(); - const binPath = packageJson.bin['@cacheplane/langgraph-mcp']; + const binPath = packageJson.bin['@ngaf/langgraph-mcp']; assert.equal(fs.existsSync(path.join(outputRoot, packageJson.main)), true); assert.equal(fs.existsSync(path.join(outputRoot, binPath)), true); diff --git a/packages/mcp/package.json b/packages/mcp/package.json index 27d5c98b3..85fc62212 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -1,7 +1,7 @@ { - "name": "@cacheplane/langgraph-mcp", + "name": "@ngaf/langgraph-mcp", "version": "0.0.1", - "description": "MCP server for the @cacheplane/langgraph library", + "description": "MCP server for the @ngaf/langgraph library", "license": "MIT", "repository": { "type": "git", @@ -14,7 +14,7 @@ }, "main": "src/index.js", "bin": { - "@cacheplane/langgraph-mcp": "src/index.js" + "@ngaf/langgraph-mcp": "src/index.js" }, "scripts": { "build": "tsc -p tsconfig.json", diff --git a/packages/mcp/src/tools/add-agent.ts b/packages/mcp/src/tools/add-agent.ts index 788c0abfe..f210af151 100644 --- a/packages/mcp/src/tools/add-agent.ts +++ b/packages/mcp/src/tools/add-agent.ts @@ -28,12 +28,12 @@ export function handleAddAgent(args: Record) { 1. Install the package: \`\`\`bash -npm install @cacheplane/langgraph +npm install @ngaf/langgraph \`\`\` 2. Apply this change to ${appConfigPath}: \`\`\`diff -+import { provideAgent } from '@cacheplane/langgraph'; ++import { provideAgent } from '@ngaf/langgraph'; export const appConfig: ApplicationConfig = { providers: [ diff --git a/packages/mcp/src/tools/get-example.ts b/packages/mcp/src/tools/get-example.ts index b68f701dc..cd9874dcc 100644 --- a/packages/mcp/src/tools/get-example.ts +++ b/packages/mcp/src/tools/get-example.ts @@ -2,7 +2,7 @@ const EXAMPLES: Record = { 'basic-chat': `// Basic chat component with angular import { Component } from '@angular/core'; -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; import type { BaseMessage } from '@langchain/core/messages'; @Component({ @@ -26,7 +26,7 @@ export class ChatComponent { 'thread-persistence': `// Thread persistence with localStorage import { Component, signal } from '@angular/core'; -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; import type { BaseMessage } from '@langchain/core/messages'; @Component({ selector: 'app-chat', template: '' }) @@ -42,7 +42,7 @@ export class ChatComponent { 'system-prompt': `// System prompt configuration per session import { Component } from '@angular/core'; -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; @Component({ selector: 'app-chat', template: '' }) export class ChatComponent { @@ -54,7 +54,7 @@ export class ChatComponent { 'mock-testing': `// Unit testing with MockAgentTransport import { TestBed } from '@angular/core/testing'; -import { agent, MockAgentTransport } from '@cacheplane/langgraph'; +import { agent, MockAgentTransport } from '@ngaf/langgraph'; import type { BaseMessage } from '@langchain/core/messages'; describe('ChatComponent', () => { @@ -73,7 +73,7 @@ describe('ChatComponent', () => { 'interrupts': `// Handling interrupts (human-in-the-loop) import { Component } from '@angular/core'; -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; @Component({ selector: 'app-chat', @@ -95,7 +95,7 @@ export class ChatComponent { 'subagent-progress': `// Showing subagent tool call progress import { Component } from '@angular/core'; -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; @Component({ selector: 'app-chat', @@ -110,7 +110,7 @@ export class ChatComponent { }`, 'custom-transport': `// Custom transport with auth headers -import { AgentTransport } from '@cacheplane/langgraph'; +import { AgentTransport } from '@ngaf/langgraph'; export class AuthTransport implements AgentTransport { async *stream(input: unknown, _options: unknown): AsyncGenerator { diff --git a/packages/mcp/src/tools/scaffold-chat-component.ts b/packages/mcp/src/tools/scaffold-chat-component.ts index 4b2256d20..33b54e0ff 100644 --- a/packages/mcp/src/tools/scaffold-chat-component.ts +++ b/packages/mcp/src/tools/scaffold-chat-component.ts @@ -29,7 +29,7 @@ export function handleScaffoldChatComponent(args: Record) { : ''; const code = `import { Component${persistenceImport} } from '@angular/core'; -import { agent } from '@cacheplane/langgraph'; +import { agent } from '@ngaf/langgraph'; import type { BaseMessage } from '@langchain/core/messages'; @Component({ diff --git a/tsconfig.base.json b/tsconfig.base.json index f83660fdd..87dfd8e47 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -15,24 +15,24 @@ "noUnusedLocals": true, "baseUrl": ".", "paths": { - "@cacheplane/ag-ui": ["libs/ag-ui/src/public-api.ts"], - "@cacheplane/a2ui": ["libs/a2ui/src/index.ts"], - "@cacheplane/chat": ["libs/chat/src/public-api.ts"], - "@cacheplane/cockpit-docs": ["libs/cockpit-docs/src/index.ts"], - "@cacheplane/cockpit-langgraph-streaming-python": [ + "@ngaf/ag-ui": ["libs/ag-ui/src/public-api.ts"], + "@ngaf/a2ui": ["libs/a2ui/src/index.ts"], + "@ngaf/chat": ["libs/chat/src/public-api.ts"], + "@ngaf/cockpit-docs": ["libs/cockpit-docs/src/index.ts"], + "@ngaf/cockpit-langgraph-streaming-python": [ "cockpit/langgraph/streaming/python/src/index.ts" ], - "@cacheplane/cockpit-registry": ["libs/cockpit-registry/src/index.ts"], - "@cacheplane/cockpit-shell": ["libs/cockpit-shell/src/index.ts"], - "@cacheplane/cockpit-testing": ["libs/cockpit-testing/src/index.ts"], - "@cacheplane/cockpit-ui": ["libs/cockpit-ui/src/index.ts"], - "@cacheplane/db": ["libs/db/src/index.ts"], - "@cacheplane/example-layouts": ["libs/example-layouts/src/public-api.ts"], - "@cacheplane/langgraph": ["libs/langgraph/src/public-api.ts"], - "@cacheplane/licensing": ["libs/licensing/src/index.ts"], - "@cacheplane/licensing/testing": ["libs/licensing/src/testing.ts"], - "@cacheplane/partial-json": ["libs/partial-json/src/index.ts"], - "@cacheplane/render": ["libs/render/src/public-api.ts"] + "@ngaf/cockpit-registry": ["libs/cockpit-registry/src/index.ts"], + "@ngaf/cockpit-shell": ["libs/cockpit-shell/src/index.ts"], + "@ngaf/cockpit-testing": ["libs/cockpit-testing/src/index.ts"], + "@ngaf/cockpit-ui": ["libs/cockpit-ui/src/index.ts"], + "@ngaf/db": ["libs/db/src/index.ts"], + "@ngaf/example-layouts": ["libs/example-layouts/src/public-api.ts"], + "@ngaf/langgraph": ["libs/langgraph/src/public-api.ts"], + "@ngaf/licensing": ["libs/licensing/src/index.ts"], + "@ngaf/licensing/testing": ["libs/licensing/src/testing.ts"], + "@ngaf/partial-json": ["libs/partial-json/src/index.ts"], + "@ngaf/render": ["libs/render/src/public-api.ts"] }, "skipLibCheck": true, "strict": true, From 2b6e4448c1a98b5749f8c6e773245496d1a13281 Mon Sep 17 00:00:00 2001 From: Brian Love Date: Thu, 30 Apr 2026 16:46:27 -0700 Subject: [PATCH 4/5] chore: drop mcp from publishable group; mark packages/mcp private The MCP integration package isn't ready for first release. Mark packages/mcp 'private: true' so it can't accidentally publish, and remove from the synchronized publishable release group. Re-add when the package matures. Co-Authored-By: Claude Opus 4.7 --- .github/workflows/publish.yml | 2 +- docs/RELEASE.md | 10 +++++----- nx.json | 5 ++--- packages/mcp/package.json | 1 + 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 8dd16dff0..62733e297 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -18,7 +18,7 @@ jobs: contents: read id-token: write # for npm provenance env: - NPM_PUBLISHABLE_PROJECTS: chat,langgraph,ag-ui,render,a2ui,partial-json,licensing,mcp + NPM_PUBLISHABLE_PROJECTS: chat,langgraph,ag-ui,render,a2ui,partial-json,licensing steps: - uses: actions/checkout@v6.0.2 - uses: actions/setup-node@v6.3.0 diff --git a/docs/RELEASE.md b/docs/RELEASE.md index 20433f6ec..32be579de 100644 --- a/docs/RELEASE.md +++ b/docs/RELEASE.md @@ -1,6 +1,6 @@ # Release Process -The eight publishable libraries (`@ngaf/chat`, `@ngaf/langgraph`, `@ngaf/ag-ui`, `@ngaf/render`, `@ngaf/a2ui`, `@ngaf/partial-json`, `@ngaf/licensing`, `@ngaf/langgraph-mcp`) ship together at a synchronized version via Nx Release. During the `0.0.x` exploratory phase, only patch bumps are used. +The seven publishable libraries (`@ngaf/chat`, `@ngaf/langgraph`, `@ngaf/ag-ui`, `@ngaf/render`, `@ngaf/a2ui`, `@ngaf/partial-json`, `@ngaf/licensing`) ship together at a synchronized version via Nx Release. During the `0.0.x` exploratory phase, only patch bumps are used. ## One-shot release (recommended; second release onward) @@ -15,7 +15,7 @@ npx nx release patch This runs Nx Release in interactive mode, which: -1. Builds all eight publishable projects (preVersionCommand). +1. Builds all seven publishable projects (preVersionCommand). 2. Bumps every package.json version (e.g., `0.0.1` → `0.0.2`). 3. Generates `CHANGELOG.md` from commits since the last tag. 4. Creates a git commit `chore(release): publish v0.0.2`. @@ -51,7 +51,7 @@ The very first publish ships the version currently on disk (`0.0.1`) — no vers ```bash # 1. Build everything -npx nx run-many -t build --projects=chat,langgraph,ag-ui,render,a2ui,partial-json,licensing,mcp +npx nx run-many -t build --projects=chat,langgraph,ag-ui,render,a2ui,partial-json,licensing # 2. Generate the initial CHANGELOG, commit, and tag v0.0.1 npx nx release changelog 0.0.1 --first-release @@ -85,6 +85,6 @@ While the API is still settling we bump only the patch component (`0.0.1` → `0 When the API stabilizes enough to make compatibility promises, transition to `0.1.0` and start using minor/major bumps with conventional-commit-driven semver. -## Why peerDeps use `*` between cacheplane libs +## Why peerDeps use `*` between ngaf libs -Caret-prefixed ranges (`^0.0.1`) in `0.0.x` don't include subsequent patches because npm semver treats `0.0.x` as breaking. Using `"*"` for inter-cacheplane peerDeps during this phase avoids the range-narrowing problem; the synchronized release group ensures all libs ship the same version anyway. Switch back to `^X.Y.Z` once we hit `0.1.0`. +Caret-prefixed ranges (`^0.0.1`) in `0.0.x` don't include subsequent patches because npm semver treats `0.0.x` as breaking. Using `"*"` for inter-ngaf peerDeps during this phase avoids the range-narrowing problem; the synchronized release group ensures all libs ship the same version anyway. Switch back to `^X.Y.Z` once we hit `0.1.0`. diff --git a/nx.json b/nx.json index 1f9da75cf..5f09a4465 100644 --- a/nx.json +++ b/nx.json @@ -51,14 +51,13 @@ "render", "a2ui", "partial-json", - "licensing", - "mcp" + "licensing" ], "projectsRelationship": "fixed" } }, "version": { - "preVersionCommand": "npx nx run-many -t build --projects=chat,langgraph,ag-ui,render,a2ui,partial-json,licensing,mcp", + "preVersionCommand": "npx nx run-many -t build --projects=chat,langgraph,ag-ui,render,a2ui,partial-json,licensing", "updateDependents": "auto", "preserveLocalDependencyProtocols": true }, diff --git a/packages/mcp/package.json b/packages/mcp/package.json index 85fc62212..3073dbc0b 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -1,6 +1,7 @@ { "name": "@ngaf/langgraph-mcp", "version": "0.0.1", + "private": true, "description": "MCP server for the @ngaf/langgraph library", "license": "MIT", "repository": { From 3481eb6e2701bfd3273015c9e6d10a0eb85b035d Mon Sep 17 00:00:00 2001 From: Brian Love Date: Thu, 30 Apr 2026 16:47:55 -0700 Subject: [PATCH 5/5] =?UTF-8?q?chore:=20reconcile=20package-lock=20after?= =?UTF-8?q?=20@cacheplane=20=E2=86=92=20@ngaf=20rename?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index d592d0bf2..79ef284d7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,7 @@ "name": "stream-resource", "version": "0.0.0", "hasInstallScript": true, - "license": "PolyForm-Noncommercial-1.0.0", + "license": "MIT", "workspaces": [ "packages/*", "apps/*" @@ -119,6 +119,7 @@ "apps/minting-service": { "name": "@cacheplane/minting-service", "version": "0.0.1", + "license": "SEE LICENSE IN LICENSE", "dependencies": { "drizzle-orm": "^0.45.2", "postgres": "^3.4.9", @@ -6906,10 +6907,6 @@ "dev": true, "license": "(Apache-2.0 WITH LLVM-exception)" }, - "node_modules/@cacheplane/langgraph-mcp": { - "resolved": "packages/mcp", - "link": true - }, "node_modules/@cacheplane/minting-service": { "resolved": "apps/minting-service", "link": true @@ -12066,6 +12063,10 @@ "node": ">= 10" } }, + "node_modules/@ngaf/langgraph-mcp": { + "resolved": "packages/mcp", + "link": true + }, "node_modules/@ngtools/webpack": { "version": "21.2.6", "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-21.2.6.tgz", @@ -43392,9 +43393,9 @@ } }, "packages/mcp": { - "name": "@cacheplane/langgraph-mcp", - "version": "0.1.0", - "license": "PolyForm-Noncommercial-1.0.0", + "name": "@ngaf/langgraph-mcp", + "version": "0.0.1", + "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" },