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

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 16 additions & 26 deletions apps/aevatar-console-web/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ cp .env.example .env.local
pnpm install
```

`pnpm dev` reads proxy targets from `.env.local`. If you want `pnpm dev:stack` to use custom ports from the same file, export it into your shell first:
`pnpm dev` reads proxy targets from `.env.local`. If you also want your shell to reuse the same values for manually starting backend processes, export the file first:

```bash
cd apps/aevatar-console-web
Expand All @@ -29,9 +29,9 @@ source .env.local
set +a
```

If you change backend ports for `dev:stack`, also keep `AEVATAR_API_TARGET`, `AEVATAR_CONFIGURATION_API_TARGET`, and `AEVATAR_STUDIO_API_TARGET` aligned with those ports.
If you change backend ports, also keep `AEVATAR_API_TARGET`, `AEVATAR_CONFIGURATION_API_TARGET`, and `AEVATAR_STUDIO_API_TARGET` aligned with those ports.

`pnpm dev:stack` also injects a default Studio app scope of `aevatar` through `Cli__App__ScopeId`, and keeps Studio NyxID login enabled. Chrono-storage backed connector and role catalogs require both the scope and a valid Studio NyxID session. Override the scope with `AEVATAR_CONSOLE_SCOPE_ID` if you need a different scope, or set `AEVATAR_CONSOLE_STUDIO_NYXID_ENABLED=false` only when you intentionally want to disable protected Studio APIs.
When starting the Studio sidecar manually, set `Cli__App__ScopeId=aevatar` and keep `Cli__App__NyxId__Enabled=true` unless you intentionally want to disable protected Studio APIs. Chrono-storage backed connector and role catalogs require both the scope and a valid Studio NyxID session.

For NyxID login, also set these values in `.env.local`:

Expand All @@ -50,9 +50,6 @@ If you change `.env.local`, restart `pnpm dev` so Umi reloads the injected env v
```bash
cd apps/aevatar-console-web
pnpm dev
pnpm dev:stack
pnpm dev:stack:status
pnpm dev:stack:stop
pnpm build
pnpm test
pnpm tsc
Expand All @@ -66,37 +63,30 @@ pnpm tsc
- `Configuration API` on `http://127.0.0.1:6688`
- `Studio sidecar` on `http://127.0.0.1:6690`

Use the bundled stack script to start all required services from one place:
Start the required services in separate terminals:

```bash
cd apps/aevatar-console-web
pnpm dev:stack
```
env ASPNETCORE_URLS=http://127.0.0.1:5080 \
dotnet run --project src/workflow/Aevatar.Workflow.Host.Api

dotnet run --project tools/Aevatar.Tools.Config -- --port 6688 --no-browser

The script will:
env Cli__App__NyxId__Enabled=true Cli__App__ScopeId=aevatar \
dotnet run --project tools/Aevatar.Tools.Cli -- app --no-browser --port 6690 --api-base http://127.0.0.1:5080

- start `src/workflow/Aevatar.Workflow.Host.Api`
- start `tools/Aevatar.Tools.Config`
- start `tools/Aevatar.Tools.Cli -- app --api-base <Workflow Host API>` with `Cli__App__ScopeId=aevatar`
- keep Studio NyxID login enabled so remote chrono-storage catalog access can reuse the app session
- start `pnpm dev`
- write logs to `apps/aevatar-console-web/.temp/dev-stack/`
cd apps/aevatar-console-web
AEVATAR_API_TARGET=http://127.0.0.1:5080 \
AEVATAR_CONFIGURATION_API_TARGET=http://127.0.0.1:6688 \
AEVATAR_STUDIO_API_TARGET=http://127.0.0.1:6690 \
pnpm dev
```

Current proxy split during local development:

- `/api/chat`, `/api/workflows/*`, `/api/actors/*`, `/api/runs/*`, `/api/primitives`, `/api/capabilities` -> `Workflow Host API`
- `/api/app/*`, `/api/auth/*`, `/api/workspace/*`, `/api/editor/*`, `/api/executions/*`, `/api/roles/*`, `/api/connectors/*`, `/api/settings/*` -> `Studio sidecar`
- `/api/configuration/*` -> `Configuration API`

Useful commands:

```bash
cd apps/aevatar-console-web
pnpm dev:stack:status
pnpm dev:stack:restart
pnpm dev:stack:stop
```

## Current scope

- `Overview`
Expand Down
134 changes: 90 additions & 44 deletions apps/aevatar-console-web/config/routes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,78 +12,124 @@
*/
export default [
{
path: '/login',
component: './login',
path: "/login",
component: "./login",
layout: false,
},
{
path: '/auth/callback',
component: './auth/callback',
path: "/auth/callback",
component: "./auth/callback",
layout: false,
},
{
path: '/overview',
name: 'Overview',
icon: 'dashboard',
component: './overview',
path: "/overview",
name: "Overview",
icon: "dashboard",
component: "./overview",
},
{
path: '/workflows',
name: 'Workflows',
icon: 'branches',
component: './workflows',
path: "/scopes",
name: "Scopes",
icon: "cluster",
redirect: "/scopes/workflows",
},
{
path: '/studio',
name: 'Studio',
icon: 'project',
component: './studio',
path: "/scopes/workflows",
component: "./scopes/workflows",
},
{
path: '/yaml',
component: './yaml',
path: "/scopes/scripts",
component: "./scopes/scripts",
},
{
path: '/primitives',
name: 'Primitives',
icon: 'appstore',
component: './primitives',
path: "/services",
name: "Services",
icon: "api",
component: "./services",
},
{
path: '/playground',
component: './playground',
path: "/services/:serviceId",
component: "./services/detail",
},
{
path: '/runs',
name: 'Runs',
icon: 'playSquare',
component: './runs',
path: "/governance",
name: "Governance",
icon: "safetyCertificate",
redirect: "/governance/bindings",
},
{
path: '/actors',
name: 'Actors',
icon: 'apartment',
component: './actors',
path: "/governance/bindings",
component: "./governance/bindings",
},
{
path: '/observability',
name: 'Observability',
icon: 'eye',
component: './observability',
path: "/governance/policies",
component: "./governance/policies",
},
{
path: '/settings',
name: 'Settings',
icon: 'setting',
component: './settings',
path: "/governance/endpoints",
component: "./governance/endpoints",
},
{
path: '/',
redirect: '/overview',
path: "/governance/activation",
component: "./governance/activation",
},
{
component: '404',
path: "/workflows",
name: "Runtime Workflows",
icon: "branches",
component: "./workflows",
},
{
path: "/studio",
name: "Studio",
icon: "project",
component: "./studio",
},
{
path: "/primitives",
name: "Runtime Primitives",
icon: "appstore",
component: "./primitives",
},
{
path: "/runs",
name: "Runtime Runs",
icon: "playSquare",
component: "./runs",
},
{
path: "/actors",
name: "Runtime Explorer",
icon: "apartment",
component: "./actors",
},
{
path: "/observability",
name: "Observability",
icon: "eye",
component: "./observability",
},
{
path: "/settings",
name: "Settings",
icon: "setting",
redirect: "/settings/console",
},
{
path: "/settings/console",
component: "./settings/console",
},
{
path: "/settings/runtime",
component: "./settings/runtime",
},
{
path: "/",
redirect: "/overview",
},
{
component: "404",
layout: false,
path: '/*',
path: "/*",
},
];
4 changes: 0 additions & 4 deletions apps/aevatar-console-web/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,6 @@
"analyze": "cross-env ANALYZE=1 max build",
"build": "max build",
"dev": "npm run start:dev",
"dev:stack": "bash ./scripts/dev-stack.sh start",
"dev:stack:restart": "bash ./scripts/dev-stack.sh restart",
"dev:stack:status": "bash ./scripts/dev-stack.sh status",
"dev:stack:stop": "bash ./scripts/dev-stack.sh stop",
"jest": "jest",
"lint": "npm run biome:lint && npm run tsc",
"biome:lint": "npx @biomejs/biome lint",
Expand Down
Loading
Loading