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
13 changes: 0 additions & 13 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -259,19 +259,6 @@ ALLOW_PLAINTEXT_SECRETS=1
# schema only (`artifacts.*` FKs into public.tenant/principal). Nothing to
# configure here; `bun run dev` mounts Library automatically.

# Slack tag ingress (@corbits/slack-tag, docs/slack.md) — talk to a
# workbench agent from Slack. Leave SLACK_BOT_TOKEN/SLACK_SIGNING_SECRET
# unset to run with no Slack app mounted (the default); set both from your
# Slack app's "OAuth & Permissions" and "Basic Information" pages to turn
# it on. SLACK_WORKBENCH_TENANT_SLUG and SLACK_DEFAULT_AGENT_DEFINITION_ID
# are then also required — see docs/slack.md — since there is no honest
# default for which bench a Slack workspace's messages land in or which
# deployed agent answers them.
# SLACK_BOT_TOKEN=
# SLACK_SIGNING_SECRET=
# SLACK_WORKBENCH_TENANT_SLUG=
# SLACK_DEFAULT_AGENT_DEFINITION_ID=

# Exclusive per-workbench sidecar placement (CL-6096, CL-6283, CL-6534).
# Leave unset (the default) and the hub registers the "process" backend
# alone: each exclusive sidecar runs as one apps/sidecar child process on
Expand Down
4 changes: 2 additions & 2 deletions ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ for the concrete stack.
Packages own product rules. Apps stay generic — they compose packages
rather than own domain logic — with one tracked exception: `apps/hub`
carries a small, explicitly-listed set of mounts (`artifacts-mount.ts`,
`memory-mount.ts`, `skills-mount.ts`, `slack-tag-mount.ts`,
`tenant-create-guard.ts`) pending extraction into packages (tracked as
`memory-mount.ts`, `skills-mount.ts`, `tenant-create-guard.ts`) pending
extraction into packages (tracked as
CL-6127). Outside that list, a product rule that lives inside `apps/*` is
a defect — it belongs in a package.

Expand Down
2 changes: 1 addition & 1 deletion apps/hub/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ native tenant middleware.
app never re-implements them.
- Every `@corbits/*` and `@workbench/*` package route (chat, approvals,
bench, insights, access-policy, mailbox, memory, skills, artifacts,
routines, tasks, webhooks, Slack tag, and more) mounts here as one
routines, tasks, webhooks, and more) mounts here as one
explicit import plus one `app.route(...)` call, inside or outside the
tenant prefix as the extension requires. `src/index.ts` is the single
file where all of this comes together.
Expand Down
1 change: 0 additions & 1 deletion apps/hub/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,6 @@
"@corbits/run-key-history": "workspace:*",
"@corbits/run-scope": "workspace:*",
"@corbits/skills": "workspace:*",
"@corbits/slack-tag": "workspace:*",
"@corbits/tool-registry-publish": "workspace:*",
"@corbits/turn-artifacts": "workspace:*",
"@corbits/url-path": "workspace:*",
Expand Down
5 changes: 2 additions & 3 deletions apps/hub/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2555,9 +2555,8 @@ export async function createHub(config: HubConfig) {
// querying `chat.workbench_launch` on a timer this function is
// about to end — including, once `close()` below tears down the
// db pool, querying a pool that's already shut down. In a test
// suite that boots many hubs back to back (e.g.
// slack-tag-mount.test.ts, CL-7453) those leaked timers pile up
// across the whole `bun test` process and contend with later
// suite that boots many hubs back to back (CL-7453) those leaked
// timers pile up across the whole `bun test` process and contend with later
// tests' own boots for Postgres connections, which is what
// surfaced as `chat·relaunch-sweep: relaunch sweep pass failed:
// Failed query: select ... from chat.workbench_launch` and an
Expand Down
3 changes: 1 addition & 2 deletions apps/hub/test/relaunch-sweep-close.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,7 @@
// kept firing — and logging `relaunch sweep pass failed: ...` when it
// queried a pool `close()` had already shut down — for the rest of the
// `bun test` process. A suite that boots several hubs back to back
// (slack-tag-mount.test.ts's env-gate suite among them) accumulated
// these leaked loops, contending with later tests' own boots for
// accumulated these leaked loops, contending with later tests' own boots for
// Postgres connections and surfacing as an intermittent test timeout.
import { afterAll, expect, test } from "bun:test";
import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
Expand Down
88 changes: 0 additions & 88 deletions apps/web/src/deployment-capabilities-api.test.ts

This file was deleted.

79 changes: 0 additions & 79 deletions apps/web/src/deployment-capabilities-api.ts

This file was deleted.

5 changes: 2 additions & 3 deletions apps/web/src/granola-plugin-availability.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
// Whether this tenant has Granola connected — the routine trigger popover
// (see `shell/routine-panel.tsx`) reads this so an unconnected bench never
// offers "Granola call notes" as if it were a working trigger (CL-6759).
// Same honesty rule as Slack via `deployment-capabilities-api.ts`, but
// tenant-scoped: Granola's credential resolves through the ancestor chain
// (`GET /credentials/resolve/Granola`), not a deployment env gate.
// Tenant-scoped: Granola's credential resolves through the ancestor chain
// (`GET /credentials/resolve/Granola`).
import { type } from "arktype";
import { useQuery } from "@tanstack/react-query";

Expand Down
Loading
Loading