Skip to content
Open
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
3 changes: 2 additions & 1 deletion architecture.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Current architecture

The deployed web frontend calls the flow bridge and query engine APIs. The flow bridge receives GitHub App webhooks, calls the query engine after refresh, and both backend services use Temporal and PostgreSQL.
The deployed web frontend calls the flow bridge and query engine APIs. The flow bridge receives GitHub App webhooks, calls the query engine after refresh, and both backend services use Temporal and PostgreSQL. The query engine also calls GitHub for feedback issues and agent-change pull requests.

```mermaid
architecture-beta
Expand All @@ -26,6 +26,7 @@ architecture-beta
flow_bridge:R --> L:postgresql
query_engine:R --> L:temporal
query_engine:R --> L:postgresql
query_engine:R --> L:github
temporal:R --> L:postgresql

align column flow_bridge query_engine
Expand Down
2 changes: 1 addition & 1 deletion unoplat-code-confluence-cli/AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<!-- UNOPLAT_CODE_CONFLUENCE_CONTEXT:BEGIN -->
<CRITICAL_INSTRUCTION>

> Generated from branch `dev` at commit `5ecdba39d57f50c5188a8e32b9dd4f52d01611fe` (2026-07-18). Content may become stale as new commits land.
> Generated from branch `dev` at commit `ab23412576ec6612cd5b7099ed42d497b8f4db7e` (2026-07-18). Content may become stale as new commits land.

</CRITICAL_INSTRUCTION>

Expand Down
22 changes: 20 additions & 2 deletions unoplat-code-confluence-cli/app_interfaces.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,29 @@ Format: `path: L<line>: <match_text>` where path is codebase-relative.

## Inbound Constructs

No inbound constructs detected.
### cli_command (click)

- `src/unoplat_code_confluence_cli/cli_app/repo_commands.py`: L15: @repo_group.command(name="add")
- `src/unoplat_code_confluence_cli/cli_app/repo_commands.py`: L27: @click.command(name="add-repository")
- `src/unoplat_code_confluence_cli/cli_app/repo_commands.py`: L42: @click.command(name="agent-md")
- `src/unoplat_code_confluence_cli/cli_app/service_commands.py`: L20: @service_group.command(name="run")
- `src/unoplat_code_confluence_cli/cli_app/service_commands.py`: L28: @service_group.command(name="status")
- `src/unoplat_code_confluence_cli/cli_app/service_commands.py`: L47: @service_group.command(name="update")
- `src/unoplat_code_confluence_cli/cli_app/service_commands.py`: L55: @service_group.command(name="stop")
- `src/unoplat_code_confluence_cli/cli_app/service_commands.py`: L63: @service_group.command(name="destroy")
- `src/unoplat_code_confluence_cli/cli_app/setup_commands.py`: L16: @setup_group.command(name="token-repo-provider")
- `src/unoplat_code_confluence_cli/cli_app/setup_commands.py`: L28: @setup_group.command(name="model-provider")

## Outbound Constructs

No outbound constructs detected.
### http_client (httpx2)

- `src/unoplat_code_confluence_cli/adapters/httpx2_client.py`: L37: httpx2.get( f"{candidate_base_url}{path}", params=params, headers=headers, follow_redirects=follow_redirects, timeout=timeout, )
- `src/unoplat_code_confluence_cli/adapters/httpx2_client.py`: L73: httpx2.post( f"{candidate_base_url}{path}", json=json, timeout=timeout, )

## Bidirectional Constructs

No bidirectional constructs detected.

## Internal Constructs

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Business Domain References

## Domain Summary
Unoplat Code Confluence CLI manages a local Docker Compose deployment for repository-aware AI code assistance, including Flow Bridge, a query engine, and a frontend. It registers and refreshes Git repositories, verifies repository and model-provider credentials, tracks GitHub release manifests and installed state, and initiates AGENTS.md-generation workflows that raise pull requests.
This CLI manages a local Docker Compose deployment for repository-aware AI code assistance, coordinating Flow Bridge, a query engine, and a frontend. It registers and refreshes Git repositories, validates repository and model-provider configuration, tracks GitHub release manifests and installed versions, and starts AGENTS.md-generation workflows that produce pull requests.

## Data Model References
### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-cli/src/unoplat_code_confluence_cli/backend/flow_bridge_client.py`
Expand Down
2 changes: 1 addition & 1 deletion unoplat-code-confluence-commons/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ This project uses Backlog.md MCP for all task and project management. Before cre
<!-- UNOPLAT_CODE_CONFLUENCE_CONTEXT:BEGIN -->
<CRITICAL_INSTRUCTION>

> Generated from branch `dev` at commit `5ecdba39d57f50c5188a8e32b9dd4f52d01611fe` (2026-07-18). Content may become stale as new commits land.
> Generated from branch `dev` at commit `ab23412576ec6612cd5b7099ed42d497b8f4db7e` (2026-07-18). Content may become stale as new commits land.

</CRITICAL_INSTRUCTION>

Expand Down
4 changes: 4 additions & 0 deletions unoplat-code-confluence-commons/app_interfaces.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ No inbound constructs detected.

No outbound constructs detected.

## Bidirectional Constructs

No bidirectional constructs detected.

## Internal Constructs

No internal constructs detected.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Business Domain References

## Domain Summary
This package supports Code Confluence, a repository-ingestion and code-intelligence platform for analyzing source repositories and their codebases. It models repositories, files, language and package metadata, framework feature catalogs, detected source-code spans, and confidence/evidence for feature usage. It also manages workflow execution, progress and event histories, agent output snapshots and AGENTS.md publication metadata, with credentials and feature flags supporting operations.
This package supports Code Confluence, a repository-ingestion and code-intelligence platform. Its models track Git repositories, codebases, source files, framework-feature definitions and detections, package metadata, and workflow execution status, errors, events, and agent progress. It also manages provider credentials, feature flags, and metadata for publishing generated AGENTS.md updates through pull requests.

## Data Model References
### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/base_models/data_model_position.py`
Expand Down
2 changes: 1 addition & 1 deletion unoplat-code-confluence-docs/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ Reference details: see `business_logic_references.md`.
<!-- UNOPLAT_CODE_CONFLUENCE_CONTEXT:BEGIN -->
<CRITICAL_INSTRUCTION>

> Generated from branch `dev` at commit `5ecdba39d57f50c5188a8e32b9dd4f52d01611fe` (2026-07-18). Content may become stale as new commits land.
> Generated from branch `dev` at commit `ab23412576ec6612cd5b7099ed42d497b8f4db7e` (2026-07-18). Content may become stale as new commits land.

</CRITICAL_INSTRUCTION>

Expand Down
4 changes: 4 additions & 0 deletions unoplat-code-confluence-docs/app_interfaces.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ No inbound constructs detected.

No outbound constructs detected.

## Bidirectional Constructs

No bidirectional constructs detected.

## Internal Constructs

No internal constructs detected.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Business Domain References

## Domain Summary
This repository powers the documentation site for Unoplat Code Confluence, a code-context engine that helps AI agents understand Python and TypeScript codebases and generate AGENTS.md guidance. Its models support documentation delivery: framework and library catalog entries, searchable/filterable tables, release changelogs, site announcements, and page SEO metadata. The dominant domain is developer-product documentation and release communication for AI-assisted code understanding.
This repository supports the documentation site for Unoplat Code Confluence, a developer tool for AI-assisted code understanding and AGENTS.md generation. Its models cover documentation-site metadata including release changelogs, announcement banners, SEO settings, framework catalog records, and configurable data-table filtering. The dominant domain is product documentation, discoverability, and release communication for a code-context engine serving Python and TypeScript codebases.

## Data Model References
### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-docs/src/components/data-table-filter/core/filters.ts`
Expand Down
2 changes: 1 addition & 1 deletion unoplat-code-confluence-frontend/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ Before substantial work:
<!-- UNOPLAT_CODE_CONFLUENCE_CONTEXT:BEGIN -->
<CRITICAL_INSTRUCTION>

> Generated from branch `dev` at commit `5ecdba39d57f50c5188a8e32b9dd4f52d01611fe` (2026-07-18). Content may become stale as new commits land.
> Generated from branch `dev` at commit `ab23412576ec6612cd5b7099ed42d497b8f4db7e` (2026-07-18). Content may become stale as new commits land.

</CRITICAL_INSTRUCTION>

Expand Down
49 changes: 48 additions & 1 deletion unoplat-code-confluence-frontend/app_interfaces.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,54 @@ No inbound constructs detected.

## Outbound Constructs

No outbound constructs detected.
### http_client (axios)

- `src/features/agent-feedback/api.ts`: L75: apiClient.post( "/code-confluence/feedback", payload, )
- `src/features/app-feedback/api.ts`: L42: queryEngineClient.post("/v1/app-feedback", payload)
- `src/lib/api.ts`: L142: apiClient.post( "/ingest-token", null, { params: queryParams, headers: { Authorization: `Bearer ${token}`, "Content-Type": undefined, // Prevent sending default Content-Type }, }, )
- `src/lib/api.ts`: L219: apiClient.get("/repos", { params })
- `src/lib/api.ts`: L236: apiClient.post( "/repositories", repository, )
- `src/lib/api.ts`: L267: apiClient.put( "/update-token", null, { params: queryParams, headers: { Authorization: `Bearer ${token}`, "Content-Type": undefined, // Prevent sending default Content-Type }, }, )
- `src/lib/api.ts`: L319: apiClient.delete( "/delete-token", { params: queryParams }, )
- `src/lib/api.ts`: L333: apiClient.get( `/flags/${flagName}`, )
- `src/lib/api.ts`: L362: apiClient.post( "/repository-data", config, )
- `src/lib/api.ts`: L400: apiClient.get("/repository-data", { params: { repository_name: repositoryName, repository_owner_name: ownerName, }, })
- `src/lib/api.ts`: L437: apiClient.get( "/user-details", { params: { provider_key: providerKey }, }, )
- `src/lib/api.ts`: L456: apiClient.get("/parent-workflow-jobs")
- `src/lib/api.ts`: L489: apiClient.get( "/repository-status", { params }, )
- `src/lib/api.ts`: L537: apiClient.post( "/code-confluence/issues", requestData, )
- `src/lib/api.ts`: L557: apiClient.get( "/codebase-metadata", { params }, )
- `src/lib/api.ts`: L576: apiClient.get("/get/ingestedRepositories")
- `src/lib/api.ts`: L597: apiClient.post("/refresh-repository", repository)
- `src/lib/api.ts`: L614: apiClient.delete( "/delete-repository", { data: repository }, )
- `src/lib/api.ts`: L667: queryEngineClient.get("/v1/codebase-agent-rules", { params, })
- `src/lib/api.ts`: L690: queryEngineClient.post("/v1/repository-agent-run/cancel", null, { params, })
- `src/lib/api.ts`: L705: queryEngineClient.post("/v1/repository-agent-md-pr", payload)
- `src/lib/api.ts`: L724: queryEngineClient.get("/v1/repository-agent-md-pr", { params })
- `src/lib/api.ts`: L765: queryEngineClient.get("/v1/repository-agent-snapshot", { params, })
- `src/lib/api.ts`: L862: queryEngineClient.get("/v1/providers")
- `src/lib/api.ts`: L889: queryEngineClient.get("/v1/model-config")
- `src/lib/api.ts`: L925: queryEngineClient.put( "/v1/model-config", bodyConfig, { headers }, )
- `src/lib/api.ts`: L945: queryEngineClient.delete("/v1/model-config")
- `src/lib/api.ts`: L957: queryEngineClient.post( "/v1/model-config/codex-openai/oauth/authorize", payload, )
- `src/lib/api.ts`: L972: queryEngineClient.get( `/v1/model-config/codex-openai/oauth/flows/${flowId}`, )
- `src/lib/api.ts`: L985: queryEngineClient.get( "/v1/model-config/codex-openai/oauth/status", )
- `src/lib/api.ts`: L998: queryEngineClient.delete("/v1/model-config/codex-openai/oauth")
- `src/lib/api/repositories-api.ts`: L29: apiClient.get<PaginatedResponse<GitHubRepoSummary>>( "/repos", { params: { provider_key: providerKey, per_page: perPage, cursor: cursor ?? undefined, filterValues, }, }, )
- `src/lib/api/repository-provider-api.ts`: L17: apiClient.get<RepositoryProvidersResponse>( "/repository-providers", )
- `src/lib/api/repository-provider-api.ts`: L67: apiClient.post<IngestTokenResponse>( "/ingest-token", null, { params: queryParams, headers: { Authorization: `Bearer ${patToken}`, }, }, )
- `src/lib/api/tool-config-api.ts`: L19: queryEngineClient.get("/v1/tool-config")
- `src/lib/api/tool-config-api.ts`: L32: queryEngineClient.get(`/v1/tool-config/${provider}`)
- `src/lib/api/tool-config-api.ts`: L55: queryEngineClient.put( `/v1/tool-config/${provider}`, null, { headers: { Authorization: `Bearer ${sanitizedApiKey}` }, }, )
- `src/lib/api/tool-config-api.ts`: L73: queryEngineClient.delete( `/v1/tool-config/${provider}`, )

## Bidirectional Constructs

### realtime_sync (@tanstack/react-db)

- `src/features/repository-agent-snapshots/hooks.ts`: L133: useLiveInfiniteQuery( (q) => q .from({ events: collection }) .orderBy(({ events }) => events.event_id, "desc"), { pageSize, }, [scope.owner, scope.repository, scope.runId, normalizedCodebaseName, pageSize], )
- `src/features/repository-agent-snapshots/hooks.ts`: L64: useLiveQuery( (q) => { if (!collection) { return undefined; } return q.from({ snapshots: collection }); }, [collection], )
- `src/features/repository-agent-snapshots/hooks.ts`: L96: useLiveQuery( (q) => { if (!collection) { return undefined; } return q .from({ progress: collection }) .orderBy(({ progress }) => progress.codebase_name, "asc"); }, [collection], )

## Internal Constructs

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Business Domain References

## Domain Summary
This frontend supports an AI-assisted code analysis and repository operations platform: users onboard GitHub/GitLab repositories, ingest them into workflows, and monitor codebase status, workflow runs, agent events, and generated Agent MD documentation. It also manages repository credentials, model and tool providers including OAuth, and feedback flows that rate agent output or application experience and can create GitHub issues.
This frontend supports a code intelligence and repository-operations platform that onboards GitHub/GitLab repositories, ingests their codebases through workflow runs, and presents AI-agent outputs such as engineering workflows, dependency guides, business-logic summaries, and interface scans. It also manages repository credentials, OAuth-connected model providers and tools, operational status and agent events, plus feedback flows that can create GitHub issues.

## Data Model References
### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/agent-feedback/api.ts`
Expand Down Expand Up @@ -59,11 +59,11 @@ This frontend supports an AI-assisted code analysis and repository operations pl
- `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/schema.ts#L94-L96`
- `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/schema.ts#L104-L106`
- `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/schema.ts#L124-L126`
- `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/schema.ts#L202-L204`
- `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/schema.ts#L208-L210`

### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/transformers.ts`
- `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/transformers.ts#L11-L14`
- `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/transformers.ts#L18-L27`
- `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/transformers.ts#L18-L28`

### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/tool-config/types.ts`
- `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/tool-config/types.ts#L35-L37`
Expand Down Expand Up @@ -178,7 +178,6 @@ This frontend supports an AI-assisted code analysis and repository operations pl
- `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L119-L128`
- `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L130-L135`
- `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L137-L139`
- `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L141-L144`
- `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L146-L149`
- `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L152-L156`
- `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L162-L170`
Expand All @@ -190,6 +189,7 @@ This frontend supports an AI-assisted code analysis and repository operations pl
- `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L227-L243`
- `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L246-L253`
- `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L256-L264`
- `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L267-L270`
- `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L273-L276`
- `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L279-L281`
- `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L284-L295`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,17 +103,17 @@ task code-quality # Run all checks (lint + typecheck + schema va
<!-- UNOPLAT_CODE_CONFLUENCE_CONTEXT:BEGIN -->
<CRITICAL_INSTRUCTION>

> Generated from branch `dev` at commit `5ecdba39d57f50c5188a8e32b9dd4f52d01611fe` (2026-07-18). Content may become stale as new commits land.
> Generated from branch `dev` at commit `ab23412576ec6612cd5b7099ed42d497b8f4db7e` (2026-07-18). Content may become stale as new commits land.

</CRITICAL_INSTRUCTION>

## Engineering Workflow
### Install
- `uv sync` (Taskfile.yml, `.`)
- `uv sync` (pyproject.toml, `.`)
### Build
- Not detected
### Dev
- `DB_HOST=localhost DB_PORT=5432 DB_USER=postgres DB_PASSWORD=postgres DB_NAME=code_confluence NEO4J_HOST=localhost NEO4J_PORT=7687 NEO4J_USERNAME=neo4j NEO4J_PASSWORD=password TEMPORAL_SERVER_ADDRESS=localhost:7233 OTEL_EXPORTER_OTLP_ENDPOINT=localhost:4317 OTEL_EXPORTER_OTLP_PROTOCOL=grpc OTEL_SERVICE_NAME=code-confluence-flow-bridge OTEL_PROPAGATORS='tracecontext,baggage' FRAMEWORK_DEFINITIONS_PATH='../../framework-definitions' TEMPORAL_MAX_CONCURRENT_ACTIVITIES=3 REPOSITORIES_BASE_PATH=/opt/unoplat/repositories TOKEN_ENCRYPTION_KEY='0PiVvlu6HExNWkYjukuG0CAV930B4OsqXNPItAvsxhQ=' GITHUB_APP_OWNER_TYPE=organisation GITHUB_APP_OWNER=unoplat uv run fastapi dev` (Taskfile.yml, `src/code_confluence_flow_bridge`)
- `task dev` (Taskfile.yml, `.`)
### Test
- `uv sync --group test && uv run --python 3.13 --group test pytest --cov=src/code_confluence_flow_bridge --cov-report=html:coverage_reports tests/ -v` (Taskfile.yml, `.`)
### Lint
Expand Down
Loading
Loading