Skip to content

Commit e05b22f

Browse files
ksarangmathRelease Test
andauthored
feat: add composable integrations for Slack, Discord, and GitHub (#559)
* feat: add composable apps for Slack, Discord, and GitHub * fix(api): reuse connection ID schema for route parameters * fix: resolve app setup and API compatibility CI failures * feat(web): manage apps independently from project profiles * refactor: make apps own independently configurable capabilities Pin app tools, listeners, and interaction handlers to project-owned apps. Preserve runtime subscriptions independently of sending tools, migrate legacy Slack configurations through a coordinated downtime cutover, and cover provider lifecycle and setup races. * feat: support scheduled app thread launches * refactor: simplify scheduled app opening recovery * refactor: make app subscriptions independent of agent configs * refactor(web): reuse app settings viewing state * refactor: derive app destinations from conversation state * test: remove obsolete app assertions and duplicate coverage * refactor: move schema generation out of tests * fix: own Discord gateway and harden inbox operation * refactor: attribute hosted integration senders to apps * refactor: identify apps by behavior type * refactor: share persistence for app workflow state * Simplify app tools around assigned conversations * Add official app icons and clickable Apps breadcrumbs * refactor(web): streamline app setup and detail layout * refactor(web): group app connection setup by task * fix(web): create apps alongside connection setup * fix(web): show app actions at the bottom of the page * fix(web): simplify and align app connection forms * refactor(discord): remove editable gateway shard topology * fix(web): align app removal with connection actions * fix(web): group bordered remove action beside connect * fix(web): label app deletion explicitly * fix(web): hide redundant add action on empty apps page * docs(web): clarify Slack configuration token setup * docs(web): shorten Slack token setup hint * fix(web): reject invalid Slack icons before attachment * fix(web): simplify Slack authorization actions * fix(apps): restore simple Slack and Discord permission prompts * fix(apps): show permission outcome and tool in chat * fix(slack): acknowledge form selection callbacks * fix(web): remove project apps shortcut from agent profile * Simplify Discord setup and discover bot identity automatically * Show Discord portal setup after connecting * Default Discord mention setup to server-wide routing * Simplify Discord launch scope and acknowledge accepted messages * Launch Discord agents wherever the bot is installed * feat: let apps own schedules and guide GitHub setup * fix: scope interaction helpers to app launches * fix(apps): make inbox failures terminal and remove recovery CLI * Prune redundant app comments and consolidate developer docs * Remove automatic interaction routing from model context * Fix app setup compiler checks and lock allocation warning * fix(apps): correct inbox discovery and schedule validation * refactor(web): separate app setup workflows and form ownership * fix(web): connect field labels to their controls * fix(web): preserve setup cleanup with supported compiler syntax * fix(web): preserve Slack setup focus and compiler support * docs: keep app-specific behavior in integration guides * fix: harden app event admission and provider recovery * refactor: separate app tool scope from launch policy * refactor: store assigned app conversations in app state * refactor: standardize app terminology * refactor: standardize integration terminology * refactor: simplify integration subscription routing * feat: raise Discord worker capacity and expose utilization * refactor(integrations): derive inbox outcomes from execution records * refactor(model): remove obsolete resource context scaffolding * test(httpapi): include Slack scope in agent listing fixture * test(model): remove unused resource-context test import * refactor: simplify integration interaction routing * refactor: address integration review invariants * test: finish integration review verification * docs: record integration actor cutover contract * fix: close integration routing and setup review findings * test: exercise Slack-origin runtime notifications * Validate integration input before persistence and use real lifecycle fixtures * feat: add integration-backed Git credentials for agent machines * refactor: simplify Git credential authority and responses * docs: remove changelog changes from integration PR * refactor: require writer access for GitHub comments * refactor: simplify input admission and agent listing * refactor: remove redundant integration preparation work * fix(integrations): address review findings and harden routing Tighten launcher recovery, provider authority, setup flows, and credential reuse. Preserve interaction selection for internal reports and ordinary scheduled inputs, protect replies during pending launches, and route terminal failure notices independently of approvals. Add concurrency, revocation, retry, and real-producer coverage; remove retired helpers. Keep the documented Discord pre-classification reply window deferred. * refactor(web): isolate setup URL clipboard control * fix(integrations): enforce callback authority and settle retry feedback * docs(integrations): separate release checklist from product guides * refactor(integrations): name inbox state foreign key explicitly * style(integrations): wrap inbox state lookup calls * refactor(web): simplify GitHub integration setup presentation * fix(web): clarify GitHub integration setup choices * fix(integrations): unify selects and restrict PR launches * fix(integrations): clarify GitHub connection and launch setup * fix(web): simplify GitHub launch settings and copy * fix(integrations): acknowledge accepted GitHub comments * feat(integrations): support GitHub draft reviews and trim PR clutter * fix(web): simplify GitHub setup and keep credential names current * fix: preserve Slack conversations and pending work during migration * fix: refine integration setup and inbox observability * refactor: streamline integration setup and background execution Keep integration launch settings directly editable and simplify Slack mention setup. Standardize provider workflow filenames, consolidate credential-access checks, and strengthen internal event and actor types. Use ordinary background submission for questions and expose shared queue depth, capacity, submission outcomes, and wait metrics. Update generated contracts, provider documentation, and focused UI, authorization, and concurrency coverage. * fix: keep integration form submissions compatible with React Compiler --------- Co-authored-by: Release Test <[email protected]>
1 parent 6de70f7 commit e05b22f

868 files changed

Lines changed: 132301 additions & 25799 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.env.example‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ OMNARA_ALLOW_INSECURE_DEV_DEFAULTS=1
1010
OMNARA_WORKER_EVENT_WEBHOOK_CONCURRENCY=128
1111
OMNARA_EVENT_WEBHOOK_PER_ORG_CONCURRENCY=128
1212
OMNARA_WORKER_CAPACITY=4
13+
OMNARA_WORKER_INBOX_CAPACITY=4
14+
OMNARA_WORKER_DISCORD_CAPACITY=1024
1315
OMNARA_WORKER_ASYNC_TOOL_CAPACITY=32
1416
OMNARA_WORKER_BACKGROUND_TOOL_CAPACITY=8
1517

‎Makefile‎

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,17 +30,21 @@ INTEGRATION_STORAGE_PACKAGES := \
3030
./internal/storage \
3131
./internal/storage/executionstore \
3232
./internal/storage/identitystore \
33+
./internal/storage/integrationstore \
3334
./internal/testutil/storagetest
3435
INTEGRATION_HTTPAPI_PACKAGES := \
3536
./internal/httpapi \
3637
./internal/httpapi/auth
3738
INTEGRATION_RUNTIME_PACKAGES := \
39+
./cmd/maintenance \
40+
./internal/integration \
3841
./internal/maintenance \
3942
./internal/harness/kernel \
4043
./internal/harness/tools \
4144
./internal/harness/worker \
4245
./internal/dbmigrate \
4346
./internal/machinepool \
47+
./internal/metrics \
4448
./internal/modelprovider \
4549
./internal/notifications \
4650
./internal/redistore
@@ -62,7 +66,7 @@ LOAD_DOTENV = set -a; [ ! -f .env ] || . ./.env; set +a
6266
.PHONY: \
6367
help ci test-all test verify verify-go verify-static fmt-check golangci-version-check golangci-lint govulncheck race-machinedaemon \
6468
go-modules-check integration-packages-check tagged-packages-check golangci-lint-tagged race-unit \
65-
openapi-generate openapi-check openapi-compat-fixture-check openapi-compat-check compatibility-check \
69+
config-schema-generate openapi-generate openapi-check openapi-compat-fixture-check openapi-compat-check compatibility-check \
6670
migration-create state-migration-create migration-fix migration-check migration-compat-check goose-version-check sqlite-libc-check \
6771
sqlc-generate sqlc-check sql-rules sqlc-vet migrate-test-db sqlc-vet-db sqlc-vet-local-db \
6872
unit coverage test-database-contracts test-integration test-integration-storage test-integration-httpapi test-integration-runtime clean-integration-dbs db-up db-down stack-up stack-down fmt run-migrate run-api run-worker run-maintenance mcp-registry-sync \
@@ -143,10 +147,14 @@ race-machinedaemon:
143147
race-unit: ## Run internal unit tests with race detection
144148
$(GO) test -race -count=1 ./internal/...
145149

146-
openapi-generate:
150+
config-schema-generate: ## Generate agent config and shared OpenAPI schemas
151+
$(GO) run ./tools/config-schema
152+
153+
openapi-generate: config-schema-generate
147154
$(OAPI_CODEGEN) -config api/openapi/oapi-codegen.yaml api/openapi/openapi.yaml
148155

149156
openapi-check:
157+
$(GO) run ./tools/config-schema -check
150158
@$(OAPI_CODEGEN) -config api/openapi/oapi-codegen.yaml api/openapi/openapi.yaml; \
151159
untracked="$$(git ls-files --others --exclude-standard api/openapi internal/httpapi/openapi)"; \
152160
test -z "$$untracked" || { printf 'untracked openapi-owned files:\n%s\n' "$$untracked"; exit 1; }; \

0 commit comments

Comments
 (0)