Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
e026fd0
chore(docs): drop references to things the stack removed
Makisuo Nov 10, 2026
2cbaa64
Merge branch 'fix/audit-libraries' into chore/audit-docs-leftovers
Makisuo Nov 10, 2026
6939c12
Merge branch 'fix/audit-libraries' into chore/audit-docs-leftovers
Makisuo Nov 10, 2026
52eb7bc
Merge branch 'fix/audit-libraries' into chore/audit-docs-leftovers
Makisuo Nov 10, 2026
6cd6552
Merge branch 'fix/audit-libraries' into chore/audit-docs-leftovers
Makisuo Nov 10, 2026
4d89e41
Merge branch 'fix/audit-libraries' into chore/audit-docs-leftovers
Makisuo Nov 10, 2026
15b6aa8
Merge branch 'fix/audit-libraries' into chore/audit-docs-leftovers
Makisuo Nov 10, 2026
eab168b
Merge branch 'fix/audit-libraries' into chore/audit-docs-leftovers
Makisuo Nov 10, 2026
6655ad7
Merge branch 'fix/audit-libraries' into chore/audit-docs-leftovers
Makisuo Nov 10, 2026
445b279
Merge branch 'fix/audit-libraries' into chore/audit-docs-leftovers
Makisuo Nov 10, 2026
d9ca766
Merge branch 'fix/audit-libraries' into chore/audit-docs-leftovers
Makisuo Nov 10, 2026
c097512
Merge branch 'fix/audit-libraries' into chore/audit-docs-leftovers
Makisuo Nov 10, 2026
8cc39c3
Merge branch 'fix/audit-libraries' into chore/audit-docs-leftovers
Makisuo Nov 10, 2026
1c7edbd
Merge branch 'fix/audit-libraries' into chore/audit-docs-leftovers
Makisuo Nov 10, 2026
aab752d
Merge branch 'fix/audit-libraries' into chore/audit-docs-leftovers
Makisuo Nov 10, 2026
4ea9563
Merge branch 'fix/audit-libraries' into chore/audit-docs-leftovers
Makisuo Nov 10, 2026
98dbd2f
Merge branch 'fix/audit-libraries' into chore/audit-docs-leftovers
Makisuo Nov 10, 2026
2b4c920
Merge branch 'fix/audit-libraries' into chore/audit-docs-leftovers
Makisuo Nov 10, 2026
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
11 changes: 4 additions & 7 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,9 @@ CLICKHOUSE_PASSWORD=maple
# MAPLE_IGNORE_ORG_CLICKHOUSE=1

# Database
# Local non-worker entrypoints + tests use embedded PGlite. MAPLE_DB_URL is the
# PGlite data dir: blank = apps/api/.data/pglite (persistent), or `memory://`
# for ephemeral. The Workers under `alchemy dev` ignore this and dial the
# docker-compose Postgres through the dev Hyperdrive origin in
# apps/api/alchemy.run.ts (`bun run db:up && bun run db:migrate:local` to set it up).
MAPLE_DB_URL=
# The Workers under `alchemy dev` dial the docker-compose Postgres through the dev
# Hyperdrive origin (`bun run db:up && bun run db:migrate:local` to set it up).
# Tests use embedded PGlite and need nothing here.

# Deployed stages (set in Infisical, not here): the PlanetScale Postgres connection
# string for the `main` branch (direct port 5432), used by the import scripts. prd binds its Hyperdrive by dashboard
Expand Down Expand Up @@ -237,7 +234,7 @@ ELECTRIC_URL=http://localhost:3473
# # apps/electric/alchemy.run.ts into Secrets Manager as the
# # ECS service's DATABASE_URL.

# LLM provider for AI chat + triage. Both paths stay wired in apps/api/src/platform/Llm.ts, so
# LLM provider for AI chat + triage. Both paths stay wired in apps/ai/src/platform/Llm.ts, so
# switching is this one var: "openrouter" (default) or "workers-ai". Model overrides are
# provider-scoped so both can stay set across a flip.
# MAPLE_LLM_PROVIDER=openrouter
Expand Down
2 changes: 0 additions & 2 deletions .oxfmtrc.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@
"tabWidth": 4,
// packages/db/drizzle is generated (drizzle-kit, then effect-orm) — formatting
// it is churn that only obscures the migration-snapshot diff.
// TanStack Router owns routeTree.gen.ts and regenerates it in its configured
// style during web builds; formatting it only creates transient churn.
// The iOS OpenAPI spec is generated by scripts/generate-ios-openapi.ts, and
// `ios:openapi:check` re-runs that generator and compares byte for byte — so
// formatting it does not merely churn, it fails CI for anyone who has run
Expand Down
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ with `packageManager`.
`apps/api` forwards `/mcp`, `/api/chat/*`, `/internal/chat/*` to it over a service binding;
OAuth stays in `apps/api`.
- An investigation is **one agent turn** ending in `submit_diagnosis`. Do not split it across
planner/lanes/validator. Sub-agents are fine elsewhere (e.g. review fan-out) via `SubagentHost`.
planner/lanes/validator. Sub-agents are fine elsewhere (e.g. review fan-out) via `Subagent` from `@yielded/agent/subagent`.
- LLM code (Effect AI + `@yielded/agent`) is only in `apps/ai`; Maple-specific wiring lives in
`apps/ai/src/platform/Llm.ts`.
- Shared services live in `packages/backend`, imported via `@maple/backend/*` subpaths.
Expand Down
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ with `packageManager`.
`apps/api` forwards `/mcp`, `/api/chat/*`, `/internal/chat/*` to it over a service binding;
OAuth stays in `apps/api`.
- An investigation is **one agent turn** ending in `submit_diagnosis`. Do not split it across
planner/lanes/validator. Sub-agents are fine elsewhere (e.g. review fan-out) via `SubagentHost`.
planner/lanes/validator. Sub-agents are fine elsewhere (e.g. review fan-out) via `Subagent` from `@yielded/agent/subagent`.
- LLM code (Effect AI + `@yielded/agent`) is only in `apps/ai`; Maple-specific wiring lives in
`apps/ai/src/platform/Llm.ts`.
- Shared services live in `packages/backend`, imported via `@maple/backend/*` subpaths.
Expand Down
2 changes: 1 addition & 1 deletion apps/scraper/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Local docker-compose build. Build context: repo root (workspace deps @maple/domain +
# Source build for a local image. Build context: repo root (workspace deps @maple/domain +
# @maple-dev/effect-sdk). Deploys use Dockerfile.prebuilt (apps/scraper/alchemy.run.ts).
FROM oven/bun:1.4.4 AS runner
WORKDIR /app
Expand Down
2 changes: 1 addition & 1 deletion apps/web/src/document-headers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ const SHARE_PATH = "/share"
export const isShareDocument = (pathname: string): boolean =>
pathname === SHARE_PATH || Str.startsWith(`${SHARE_PATH}/`)(pathname)

/** Every document: no plugins, no `<base>` retargeting relative URLs. Keep in step with nginx.conf. */
/** Every document: no plugins, no `<base>` retargeting relative URLs. */
const BASE_CSP = "object-src 'none'; base-uri 'self'"

export const APP_DOCUMENT_HEADERS: HeaderEntries = [
Expand Down
6 changes: 1 addition & 5 deletions docs/persistence.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,7 @@ Maple stores relational application state in PostgreSQL with a schema defined by
administrative connection.
- **Wrangler development:** Docker Postgres on port 5499 through Hyperdrive's
`localConnectionString`.
- **Non-Worker local entrypoints and tests:** embedded PGlite. `MAPLE_DB_URL` is a PGlite data
directory, or `memory://` for an ephemeral database. It is not a remote database URL.
- **Tests and evals:** embedded PGlite, in memory.
- **PR previews:** a Neon branch `pr-<n>` per preview, migrated by the deploy like prd's
`main` and deleted on teardown, behind one Hyperdrive config (`docs/pr-previews.md`).

Expand Down Expand Up @@ -59,9 +58,6 @@ bun db:up
bun db:migrate:local
```

Persistent PGlite is created automatically for non-Worker local entrypoints under
`apps/api/.data/pglite`. Set `MAPLE_DB_URL=memory://` when persistence is not wanted.

## Authoring migrations

Change a table in `packages/db/src/tables/`, then generate the migration:
Expand Down
4 changes: 2 additions & 2 deletions docs/product-events-dashboard-parity.md
Original file line number Diff line number Diff line change
Expand Up @@ -181,8 +181,8 @@ hangs off the `QuerySpec` arms from phase 1.
widened. `alert-signal-display.ts`: label "Event count" / "Sessions with events", unit `count`.
- Web: `apps/web/src/lib/alerts/form-utils.ts` and `signal-and-threshold-section.tsx` accept the
source; the where-clause editor gets the same scope as the dashboard panel.
- Alert templates: one "Signups dropped" example under `alert-templates/` is enough to prove the
path; don't build a catalogue.
- Alert templates: one "Signups dropped" example is enough to prove the path; don't build a
catalogue.

### Phase 5: agents and public surfaces

Expand Down
2 changes: 0 additions & 2 deletions packages/backend/src/platform/Env.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ export interface EnvConfig {
readonly CLICKHOUSE_USER: string
readonly CLICKHOUSE_PASSWORD: Option.Option<Redacted.Redacted>
readonly CLICKHOUSE_DATABASE: string
readonly MAPLE_DB_URL: string
readonly MAPLE_AUTH_MODE: string
readonly MAPLE_ROOT_PASSWORD: Option.Option<Redacted.Redacted>
readonly MAPLE_DEFAULT_ORG_ID: string
Expand Down Expand Up @@ -233,7 +232,6 @@ const envConfig = Config.all({
CLICKHOUSE_USER: stringWithDefault("CLICKHOUSE_USER", "default"),
CLICKHOUSE_PASSWORD: optionalRedacted("CLICKHOUSE_PASSWORD"),
CLICKHOUSE_DATABASE: stringWithDefault("CLICKHOUSE_DATABASE", "default"),
MAPLE_DB_URL: stringWithDefault("MAPLE_DB_URL", ""),
MAPLE_AUTH_MODE: stringWithDefault("MAPLE_AUTH_MODE", "self_hosted"),
MAPLE_ROOT_PASSWORD: optionalRedacted("MAPLE_ROOT_PASSWORD"),
MAPLE_DEFAULT_ORG_ID: stringWithDefault("MAPLE_DEFAULT_ORG_ID", "default"),
Expand Down
Loading