Integrations Domain
integrations.astrale.ai owns provider discovery and caller-owned external account connections. It exposes one provider-neutral connection-broker contract and binds it to Nango at Runtime initialization.
The package is authored on the current Astrale Application model:
schema/ public catalog, Connection facts, relationships, Functions, Core, and View
schema/modules/connection/states/ closed Connection lifecycle vocabulary
queries/ named catalog and owner-scoped graph observations
mutations/ atomic catalog and Connection changes
integrations/ provider-neutral connection-broker ability
providers/ Nango protocol admission
functions/ Actions and provider plus graph Workflows
views/ Shell-bound application projection
ui/ Domain-free presentation
frontend/ Vite and TanStack Router application
Credentials are fetched from a Provider only when requested and are never written to the graph. Every Connection read first traverses owned_by from the authenticated caller, so a supplied Connection ID alone is not authority.
Development
Copy .env.example to .env.dev, set NANGO_SECRET_KEY, then run:
pnpm install
pnpm typecheck
pnpm test
pnpm lint
pnpm build
pnpm package
Domain source imports Kernel concepts only through semantic @astrale-os/sdk/* facades and owns no .spec tree.
Application logos
Catalog logos are unmodified SVGs returned by Nango's integration metadata API. They are served locally so rendering does not require a Nango API call, browser credentials, or third-party image requests.
After configuring an integration and adding its App/Core entries, run pnpm --dir integrations logos:sync from the workspace root. Pass an environment file relative to the domain directory if needed: pnpm --dir integrations logos:sync .env.prod. The file must contain an environment-level NANGO_SECRET_KEY.
The command resolves the schema catalog, looks up each integration by its actual Nango integration key, and downloads the returned logo URL into the App's logoUrl asset path. No app-specific logo mapping or hand-drawn SVG is needed. All downloads are checked before files are written. Commit the assets and generated frontend/public/provider-logos/sources.json together; the manifest records each source URL and SHA-256, and catalog tests verify every logo matches it. Normal builds and tests remain offline. Application names and an initials fallback remain available if an image cannot load.