Update codebase artifacts (run 0d24fd38) - #1361
Conversation
…5db6d0d048ece9fec6
… 0d24fd38b5964f5db6d0d048ece9fec6
… run 0d24fd38b5964f5db6d0d048ece9fec6
…38b5964f5db6d0d048ece9fec6
…64f5db6d0d048ece9fec6
…run 0d24fd38b5964f5db6d0d048ece9fec6
…rom run 0d24fd38b5964f5db6d0d048ece9fec6
…4fd38b5964f5db6d0d048ece9fec6
…964f5db6d0d048ece9fec6
… run 0d24fd38b5964f5db6d0d048ece9fec6
…from run 0d24fd38b5964f5db6d0d048ece9fec6
…24fd38b5964f5db6d0d048ece9fec6
…38b5964f5db6d0d048ece9fec6
…from run 0d24fd38b5964f5db6d0d048ece9fec6
….md from run 0d24fd38b5964f5db6d0d048ece9fec6
…n 0d24fd38b5964f5db6d0d048ece9fec6
…AGENTS.md from run 0d24fd38b5964f5db6d0d048ece9fec6
…dependencies_overview.md from run 0d24fd38b5964f5db6d0d048ece9fec6
…business_logic_references.md from run 0d24fd38b5964f5db6d0d048ece9fec6
…app_interfaces.md from run 0d24fd38b5964f5db6d0d048ece9fec6
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
Claude finished @JayGhiya's task —— View job Code Review for Codebase Artifacts Update (run 0d24fd38)Review Progress
✅ Review SummaryThis PR represents a high-quality automated artifact update with consistent formatting, accurate content generation, and proper structural organization. 📋 Code Quality AssessmentEXCELLENT - The artifact files demonstrate:
🔍 Detailed FindingsAGENTS.md Files (
|
|
🚀 Preview Deployment Ready! Preview URL: https://head.unoplat-code-confluence-docs.pages.dev Deployed via Cloudflare Pages |
📝 WalkthroughWalkthroughThis PR restructures documentation across multiple packages to standardize format and content. It adds generated-context metadata blocks with branch/commit information, introduces language-specific engineering workflow sections (uv for Python, bun for JavaScript), expands business logic reference documentation with detailed model definitions, and converts interface documentation to a structured line-reference format with canonical links. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~12 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 inconclusive)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 9
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (5)
unoplat-code-confluence-docs/business_logic_references.md (1)
7-64:⚠️ Potential issue | 🟠 MajorUse repository-relative paths instead of machine-local absolute paths.
The references from Line 7 onward are
/opt/...absolute paths, which are not portable across environments and break canonical documentation reuse.🩹 Proposed pattern change
- ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-docs/src/lib/banner-config.ts` + ### `unoplat-code-confluence-docs/src/lib/banner-config.ts`Apply the same conversion to all path entries in this file.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@unoplat-code-confluence-docs/business_logic_references.md` around lines 7 - 64, The document contains machine-local absolute paths (e.g., entries referencing FluentColumnConfigHelper, ColumnOption, ColumnDataType, ColumnConfig, BannerConfig, ChangelogEntry, SeoOptions, FileRoutesByFullPath, Register, FrameworkCatalogRow, etc.) starting with /opt/... which must be converted to repository-relative paths; update each absolute path string to a repo-relative path (for example remove the leading /opt/... prefix and use the project's relative path like src/components/... or src/lib/...) across the file so all listed symbols (FluentColumnConfigHelper, ColumnOption, ColumnConfigHelper, DataTableFilterConfig, BannerConfig, ChangelogEntry, SeoOptions, FileRoutesByPath, Register, FrameworkCatalogRow, etc.) point to portable, relative locations; apply this change consistently to every path entry in the document.unoplat-code-confluence-commons/business_logic_references.md (1)
7-1610:⚠️ Potential issue | 🟠 MajorReplace environment-specific absolute paths with repo-relative references.
Using
/opt/unoplat/...paths throughout the reference map makes the documentation environment-bound and fragile for other contributors and CI consumers.🩹 Proposed pattern change
- ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/base_models/framework_models.py` + ### `unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/base_models/framework_models.py`Repeat this normalization for all path entries in the document.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@unoplat-code-confluence-commons/business_logic_references.md` around lines 7 - 1610, The document uses environment-specific absolute paths (/opt/unoplat/...) for file references which must be converted to repo-relative references; find occurrences that prefix filenames shown in the review (e.g., data_model_position.py, engine_models.py, framework_models.py, python_structural_signature.py, typescript_structural_signature.py, configuration_models.py, credentials.py, flags.py, pr_metadata_model.py, programming_language_metadata.py, unoplat_code_confluence.py, repo_models.py, workflow_envelopes.py, workflow_models.py) and replace the leading absolute prefix with a repository-relative path pattern (for example unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/...) so all entries are portable; apply this normalization consistently across every path entry in the document and run a quick grep to ensure no remaining /opt/unoplat/... occurrences remain.unoplat-code-confluence-query-engine/business_logic_references.md (2)
7-1037:⚠️ Potential issue | 🟡 MinorNormalize references to repo-relative paths for portability.
Like other generated docs, absolute
/opt/...paths make this reference environment-dependent and harder to use in PR/GitHub contexts. Please emit repo-relative paths consistently.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@unoplat-code-confluence-query-engine/business_logic_references.md` around lines 7 - 1037, The doc contains absolute /opt/... file paths making it non-portable; update the generator that emits these references so it outputs repo-relative paths instead (e.g., start from "unoplat-code-confluence/..." or the repository root) rather than absolute filesystem roots. Locate the code that formats the path strings used to produce entries like the ai_model_config.py, app_feedback.py, code_confluence_business_logic_repository.py, and other listed modules and change the formatting to strip the absolute prefix (anything before the repository root name) or use a configured repo_root constant, ensuring all emitted references (class names and line ranges) become repo-relative. Ensure this normalization is applied consistently for all entries in business_logic_references.md generation.
8-1037:⚠️ Potential issue | 🟠 MajorFix malformed markdown: multi-line code is using inline backticks instead of fenced blocks.
The current format breaks markdown parsing (matches the MD023/MD001 warnings) and makes the catalog hard to consume. Use either:
- single-line symbol references only, or
- fenced code blocks for multi-line snippets.
Example fix pattern
-- `/opt/.../ai_model_config.py#L55-L61` — `class CodexOAuthAuthorizeResponse(BaseModel): - """Response payload for OAuth authorize flow initialization.""" - - flow_id: str - authorization_url: str - expires_at: int - poll_interval_ms: int` +- `src/unoplat_code_confluence_query_engine/api/v1/endpoints/ai_model_config.py#L55-L61` — `CodexOAuthAuthorizeResponse`🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@unoplat-code-confluence-query-engine/business_logic_references.md` around lines 8 - 1037, The markdown in business_logic_references.md incorrectly wraps multi-line code snippets (e.g., the class definitions like CodexOAuthAuthorizeResponse, CodexOAuthAuthorizeRequest, AiModelConfig, _DataModelPositionsPayload.normalize_positions, ModelParams, LocalMCPServerConfig.validate_command, RemoteMCPServerConfig.validate_url, AgentMdOutput, GitRefInfo, FrameworkFeatureUsageIdentity, CallExpressionValidationAgentOutput, ProviderSchema.to_public, TemporalAgentRegistry.iter_agents, AgentSnapshotCompleteEnvelope.extras, SearchMatch/SearchResults, etc.) in inline backticks which breaks parsing; edit the file to replace each multi-line inline-backtick block with either a single-line symbol reference (e.g., only the symbol path) or a fenced code block (```python ... ```) preserving the original text content and language hint, ensuring lists remain valid markdown and no inline backticks span multiple lines. Ensure each changed snippet uses consistent fenced code block syntax and run a markdown linter to confirm MD023/MD001 warnings are resolved.unoplat-code-confluence-query-engine/AGENTS.md (1)
3-17:⚠️ Potential issue | 🟠 MajorConsolidate duplicated workflow/interface sections to one canonical block.
The file defines the same sections twice (
Engineering Workflow,Dependency Guide,App Interfaces) with overlapping but different wording. This creates drift risk and ambiguous guidance. Keep one authoritative section (preferably the generated context block) and remove/replace the duplicate.Also applies to: 72-96
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@unoplat-code-confluence-query-engine/AGENTS.md` around lines 3 - 17, The file contains duplicated sections for the headings "## Engineering Workflow", "## Dependency Guide", and "## App Interfaces" causing drift; remove the redundant copy and keep a single canonical block (preferably the generated context block) so guidance is authoritative; locate both occurrences of those headings in AGENTS.md, delete the older/duplicate block and ensure the retained block includes the concise items (Install/Dev/Test/Lint/Type check, dependency_overview.md pointer, FastAPI endpoints path under src/unoplat_code_confluence_query_engine/api/v1/endpoints and app_interfaces.md reference) and update any slightly differing wording to match the canonical phrasing.
🧹 Nitpick comments (2)
unoplat-code-confluence-frontend/AGENTS.md (1)
82-109: Consolidate duplicated guidance sections into one authoritative block.This adds a second
Engineering Workflow/Dependency Guideset while older sections remain above, which can cause conflicting instructions over time. Prefer one canonical section per topic.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@unoplat-code-confluence-frontend/AGENTS.md` around lines 82 - 109, There are duplicate "Engineering Workflow" and "Dependency Guide" sections; remove the redundant block and consolidate content into one canonical section using the headings "Engineering Workflow" and "Dependency Guide" so there’s a single source of truth, merge any unique items from the duplicated block (install, build, dev, test, lint, type check notes) into that canonical section, keep existing links like dependencies_overview.md and app_interfaces.md intact, and ensure heading formatting and order remain consistent with the rest of the document.unoplat-code-confluence-ingestion/code-confluence-flow-bridge/AGENTS.md (1)
110-139: Merge duplicated section set to avoid split-source instructions.The generated block introduces a second copy of workflow/dependency/domain/interface guidance. Keeping both increases drift risk and reader confusion.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@unoplat-code-confluence-ingestion/code-confluence-flow-bridge/AGENTS.md` around lines 110 - 139, The file contains a duplicated block of high-level guidance (the headings "Engineering Workflow", "Dependency Guide", "Business Logic Domain", and "App Interfaces") which should be merged to a single canonical section; remove the duplicated copy and retain one clear section combining install/build/dev/test/lint/type-check commands and links (e.g., Taskfile/pyproject references), the dependency pointer to dependencies_overview.md, the business domain bullets, and the app_interfaces.md reference so readers are not presented with split or repeated instructions; ensure the remaining section uses the original headings ("Engineering Workflow", "Dependency Guide", "Business Logic Domain", "App Interfaces") and preserves the accurate command examples and links.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@unoplat-code-confluence-commons/AGENTS.md`:
- Around line 23-52: The file contains duplicated top-level section headings
(e.g., "## Engineering Workflow" and "## Dependency Guide") that trigger MD024;
remove the redundant set so each heading appears only once and keep the
canonical dependency details in dependencies_overview.md; specifically, collapse
or delete the repeated "## Engineering Workflow" block and the duplicate "##
Dependency Guide" text in AGENTS.md and replace any inline dependency catalog
text with a single reference to dependencies_overview.md to ensure the latter
remains the source-of-truth.
In `@unoplat-code-confluence-commons/business_logic_references.md`:
- Around line 108-1536: The markdown has structural/formatting issues (heading
ordering/indentation, duplicate headings, and emphasis/spacing) that break
machine parsing; update the document to use consistent ATX headings (#, ##, ###)
in correct semantic order, remove or merge duplicate headings, normalize list
and code block formatting (fenced triple-backticks for code snippets), and fix
emphasis spacing (no space between emphasis markers and text). Locate and
correct sections referencing the shown model/class names (e.g.,
FrameworkFeaturePayload, FrameworkFeature, FeatureAbsolutePath,
TypeScriptStructuralSignature, CodebaseConfig, Repository,
RepositoryWorkflowRun, CodebaseWorkflowRun) so their headings and lists are
consistent, then run markdownlint and iterate until no warnings remain.
In `@unoplat-code-confluence-commons/dependencies_overview.md`:
- Around line 3-8: The dependencies_overview.md is missing the runtime
dependency "cryptography" that is declared in pyproject.toml; update
dependencies_overview.md to include an entry for cryptography describing its
purpose (e.g., cryptographic primitives, TLS, signing/encryption support) so the
document matches the canonical dependencies in pyproject.toml and call out that
it's used at runtime; ensure the new bullet follows the same format and style as
the other package entries.
In `@unoplat-code-confluence-docs/AGENTS.md`:
- Around line 27-54: The file contains duplicated top-level sections
("Engineering Workflow", "Dependency Guide", "Business Logic Domain", "App
Interfaces") introduced by an appended context block; remove or consolidate the
duplicate headings and their redundant content so each heading appears only once
(merge any unique lines under the existing section rather than adding a second
heading). Locate the duplicated headings in AGENTS.md (look for the exact
strings "Engineering Workflow", "Dependency Guide", "Business Logic Domain",
"App Interfaces") and either delete the redundant block or merge its unique
details into the original sections to resolve MD024 lint warnings.
In `@unoplat-code-confluence-docs/dependencies_overview.md`:
- Around line 22-23: Replace the generic Radix labels with the actual package
names in the dependencies_overview.md entry: change "Radix UI React Primitives"
/ "radix-ui" to the concrete packages `@radix-ui/react-separator` and
`@radix-ui/react-slot` and update their descriptions to match each package's
purpose (Separator = visual/semantic separator, Slot = props-merging/asChild
composition). Ensure the text exactly lists these package names so the audit
trail matches package.json and the document remains the canonical dependency
catalog.
In `@unoplat-code-confluence-frontend/business_logic_references.md`:
- Around line 7-239: The document uses machine-local absolute paths (e.g.
entries like
`/opt/.../unoplat-code-confluence-frontend/src/features/agent-feedback/api.ts#L17-L21`)
which must be replaced with repo-relative paths (e.g.
`src/features/agent-feedback/api.ts#L17-L21`) for portability; edit
business_logic_references.md and update every listed entry (all occurrences
referencing src/features/agent-feedback/*, src/features/app-feedback/*,
src/features/model-config/*, src/features/repository-agent-snapshots/*,
src/lib/*, src/types.* and others shown in the diff) to use repository-relative
paths and match the link style used in app_interfaces.md so anchors and
filenames remain stable across machines.
In `@unoplat-code-confluence-frontend/dependencies_overview.md`:
- Line 26: Replace the vague "dnd kit" entry with the actual npm package
identifiers: list `@dnd-kit/core`, `@dnd-kit/sortable`, and `@dnd-kit/utilities` (or
consolidate under the scoped `@dnd-kit` name with a parenthetical that it consists
of these sub-packages) and update the purpose text to map each package to its
role (e.g., `@dnd-kit/core` = core drag-and-drop primitives, `@dnd-kit/sortable` =
reordering/sortable utilities, `@dnd-kit/utilities` = helper utilities) so the
dependencies_overview.md contains concrete package names and per-package
purposes.
In
`@unoplat-code-confluence-ingestion/code-confluence-flow-bridge/app_interfaces.md`:
- Around line 31-36: Remove the test fixture routes listed in app_interfaces.md
that reference tests/test_data/framework_samples (the entries for
github_app/router.py L154, L255, L64 and main.py L10, L16) and regenerate the
canonical interface inventory; update the inventory-generation/filtering logic
(wherever routes are aggregated) to exclude any paths matching the pattern
"tests/test_data/" or similar test-fixture directories so future runs don't
reintroduce these entries, and verify by running the generator to confirm only
real runtime app endpoints remain.
In `@unoplat-code-confluence-query-engine/AGENTS.md`:
- Line 78: Replace the hard-coded TOKEN_ENCRYPTION_KEY value in the AGENTS.md
command snippet with a non-sensitive placeholder (e.g.,
TOKEN_ENCRYPTION_KEY=<your-base64-key>) so the concrete key
`0PiVvlu6HExNWkYjukuG0CAV930B4OsqXNPItAvsxhQ=` is removed; update the command
string that currently sets TOKEN_ENCRYPTION_KEY and ensure the doc shows a
placeholder and a short note to generate/secure the real key in env or secret
manager instead of embedding it in the docs.
---
Outside diff comments:
In `@unoplat-code-confluence-commons/business_logic_references.md`:
- Around line 7-1610: The document uses environment-specific absolute paths
(/opt/unoplat/...) for file references which must be converted to repo-relative
references; find occurrences that prefix filenames shown in the review (e.g.,
data_model_position.py, engine_models.py, framework_models.py,
python_structural_signature.py, typescript_structural_signature.py,
configuration_models.py, credentials.py, flags.py, pr_metadata_model.py,
programming_language_metadata.py, unoplat_code_confluence.py, repo_models.py,
workflow_envelopes.py, workflow_models.py) and replace the leading absolute
prefix with a repository-relative path pattern (for example
unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/...) so all
entries are portable; apply this normalization consistently across every path
entry in the document and run a quick grep to ensure no remaining
/opt/unoplat/... occurrences remain.
In `@unoplat-code-confluence-docs/business_logic_references.md`:
- Around line 7-64: The document contains machine-local absolute paths (e.g.,
entries referencing FluentColumnConfigHelper, ColumnOption, ColumnDataType,
ColumnConfig, BannerConfig, ChangelogEntry, SeoOptions, FileRoutesByFullPath,
Register, FrameworkCatalogRow, etc.) starting with /opt/... which must be
converted to repository-relative paths; update each absolute path string to a
repo-relative path (for example remove the leading /opt/... prefix and use the
project's relative path like src/components/... or src/lib/...) across the file
so all listed symbols (FluentColumnConfigHelper, ColumnOption,
ColumnConfigHelper, DataTableFilterConfig, BannerConfig, ChangelogEntry,
SeoOptions, FileRoutesByPath, Register, FrameworkCatalogRow, etc.) point to
portable, relative locations; apply this change consistently to every path entry
in the document.
In `@unoplat-code-confluence-query-engine/AGENTS.md`:
- Around line 3-17: The file contains duplicated sections for the headings "##
Engineering Workflow", "## Dependency Guide", and "## App Interfaces" causing
drift; remove the redundant copy and keep a single canonical block (preferably
the generated context block) so guidance is authoritative; locate both
occurrences of those headings in AGENTS.md, delete the older/duplicate block and
ensure the retained block includes the concise items (Install/Dev/Test/Lint/Type
check, dependency_overview.md pointer, FastAPI endpoints path under
src/unoplat_code_confluence_query_engine/api/v1/endpoints and app_interfaces.md
reference) and update any slightly differing wording to match the canonical
phrasing.
In `@unoplat-code-confluence-query-engine/business_logic_references.md`:
- Around line 7-1037: The doc contains absolute /opt/... file paths making it
non-portable; update the generator that emits these references so it outputs
repo-relative paths instead (e.g., start from "unoplat-code-confluence/..." or
the repository root) rather than absolute filesystem roots. Locate the code that
formats the path strings used to produce entries like the ai_model_config.py,
app_feedback.py, code_confluence_business_logic_repository.py, and other listed
modules and change the formatting to strip the absolute prefix (anything before
the repository root name) or use a configured repo_root constant, ensuring all
emitted references (class names and line ranges) become repo-relative. Ensure
this normalization is applied consistently for all entries in
business_logic_references.md generation.
- Around line 8-1037: The markdown in business_logic_references.md incorrectly
wraps multi-line code snippets (e.g., the class definitions like
CodexOAuthAuthorizeResponse, CodexOAuthAuthorizeRequest, AiModelConfig,
_DataModelPositionsPayload.normalize_positions, ModelParams,
LocalMCPServerConfig.validate_command, RemoteMCPServerConfig.validate_url,
AgentMdOutput, GitRefInfo, FrameworkFeatureUsageIdentity,
CallExpressionValidationAgentOutput, ProviderSchema.to_public,
TemporalAgentRegistry.iter_agents, AgentSnapshotCompleteEnvelope.extras,
SearchMatch/SearchResults, etc.) in inline backticks which breaks parsing; edit
the file to replace each multi-line inline-backtick block with either a
single-line symbol reference (e.g., only the symbol path) or a fenced code block
(```python ... ```) preserving the original text content and language hint,
ensuring lists remain valid markdown and no inline backticks span multiple
lines. Ensure each changed snippet uses consistent fenced code block syntax and
run a markdown linter to confirm MD023/MD001 warnings are resolved.
---
Nitpick comments:
In `@unoplat-code-confluence-frontend/AGENTS.md`:
- Around line 82-109: There are duplicate "Engineering Workflow" and "Dependency
Guide" sections; remove the redundant block and consolidate content into one
canonical section using the headings "Engineering Workflow" and "Dependency
Guide" so there’s a single source of truth, merge any unique items from the
duplicated block (install, build, dev, test, lint, type check notes) into that
canonical section, keep existing links like dependencies_overview.md and
app_interfaces.md intact, and ensure heading formatting and order remain
consistent with the rest of the document.
In `@unoplat-code-confluence-ingestion/code-confluence-flow-bridge/AGENTS.md`:
- Around line 110-139: The file contains a duplicated block of high-level
guidance (the headings "Engineering Workflow", "Dependency Guide", "Business
Logic Domain", and "App Interfaces") which should be merged to a single
canonical section; remove the duplicated copy and retain one clear section
combining install/build/dev/test/lint/type-check commands and links (e.g.,
Taskfile/pyproject references), the dependency pointer to
dependencies_overview.md, the business domain bullets, and the app_interfaces.md
reference so readers are not presented with split or repeated instructions;
ensure the remaining section uses the original headings ("Engineering Workflow",
"Dependency Guide", "Business Logic Domain", "App Interfaces") and preserves the
accurate command examples and links.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 451d0fdf-d6a9-4165-92db-cccdb8fec2e8
📒 Files selected for processing (20)
unoplat-code-confluence-commons/AGENTS.mdunoplat-code-confluence-commons/app_interfaces.mdunoplat-code-confluence-commons/business_logic_references.mdunoplat-code-confluence-commons/dependencies_overview.mdunoplat-code-confluence-docs/AGENTS.mdunoplat-code-confluence-docs/app_interfaces.mdunoplat-code-confluence-docs/business_logic_references.mdunoplat-code-confluence-docs/dependencies_overview.mdunoplat-code-confluence-frontend/AGENTS.mdunoplat-code-confluence-frontend/app_interfaces.mdunoplat-code-confluence-frontend/business_logic_references.mdunoplat-code-confluence-frontend/dependencies_overview.mdunoplat-code-confluence-ingestion/code-confluence-flow-bridge/AGENTS.mdunoplat-code-confluence-ingestion/code-confluence-flow-bridge/app_interfaces.mdunoplat-code-confluence-ingestion/code-confluence-flow-bridge/business_logic_references.mdunoplat-code-confluence-ingestion/code-confluence-flow-bridge/dependencies_overview.mdunoplat-code-confluence-query-engine/AGENTS.mdunoplat-code-confluence-query-engine/app_interfaces.mdunoplat-code-confluence-query-engine/business_logic_references.mdunoplat-code-confluence-query-engine/dependencies_overview.md
| ## Engineering Workflow | ||
| ### Install | ||
| - `uv sync` (config: `pyproject.toml`). | ||
|
|
||
| ### Build | ||
| - `uv build` (config: `pyproject.toml`). | ||
|
|
||
| ### Dev | ||
| - Not detected. | ||
|
|
||
| ### Test | ||
| - `uv run pytest -v tests/` (config: `pyproject.toml`). | ||
|
|
||
| ### Lint | ||
| - `uv run ruff check .` (config: `ruff.toml`). | ||
|
|
||
| ### Type Check | ||
| - `uv run --with mypy mypy src/unoplat_code_confluence_commons` (config: `pyproject.toml`). | ||
|
|
||
| ## Dependency Guide | ||
| See [`dependencies_overview.md`](./dependencies_overview.md) for the full dependency catalog and usage notes. | ||
|
|
||
| ## Business Logic Domain | ||
| - This codebase centers on a "code confluence" ingestion and analysis platform that stores repositories, codebases, source files, and workflow runs in PostgreSQL. | ||
| - Its core models capture Python and TypeScript structural signatures, detected data model spans, and framework feature metadata/query rules used to identify library usage across codebases. | ||
| - Supporting tables track agent execution events/snapshots, package manager and language metadata, credentials, flags, and AGENTS.md publication metadata. | ||
|
|
||
| ## App Interfaces | ||
| See [`app_interfaces.md`](./app_interfaces.md) for the canonical interface and endpoint reference. | ||
|
|
There was a problem hiding this comment.
Fix duplicated section headings to satisfy markdown lint and avoid drift.
The generated context block introduces a second set of headings already present in the file, which aligns with MD024 warnings and makes the guide harder to trust.
Based on learnings: Maintain full dependency descriptions in dependencies_overview.md as the source-of-truth dependency catalog.
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)
[warning] 23-23: Multiple headings with the same content
(MD024, no-duplicate-heading)
[warning] 42-42: Multiple headings with the same content
(MD024, no-duplicate-heading)
[warning] 50-50: Multiple headings with the same content
(MD024, no-duplicate-heading)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@unoplat-code-confluence-commons/AGENTS.md` around lines 23 - 52, The file
contains duplicated top-level section headings (e.g., "## Engineering Workflow"
and "## Dependency Guide") that trigger MD024; remove the redundant set so each
heading appears only once and keep the canonical dependency details in
dependencies_overview.md; specifically, collapse or delete the repeated "##
Engineering Workflow" block and the duplicate "## Dependency Guide" text in
AGENTS.md and replace any inline dependency catalog text with a single reference
to dependencies_overview.md to ensure the latter remains the source-of-truth.
| return _compose_feature_key(self.capability_key, self.operation_key) | ||
|
|
||
| @model_validator(mode="after") | ||
| def validate_base_confidence_scope(self) -> Self: | ||
| _validate_base_confidence_scope(self.concept, self.base_confidence) | ||
| return self` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/base_models/engine_models.py#L172-L214` — `class FrameworkFeaturePayload(BaseModel): | ||
| """JSONB payload shape for framework_feature.feature_definition.""" | ||
|
|
||
| description: Optional[str] = Field(None, description="Human-readable description") | ||
| absolute_paths: List[str] = Field( | ||
| default_factory=list, | ||
| description="Fully qualified import paths", | ||
| ) | ||
| target_level: TargetLevel = Field( | ||
| default=TargetLevel.FUNCTION, | ||
| description="function or class", | ||
| ) | ||
| concept: Concept = Field( | ||
| default=Concept.ANNOTATION_LIKE, | ||
| description="Semantic concept", | ||
| ) | ||
| locator_strategy: LocatorStrategy = Field( | ||
| default=LocatorStrategy.VARIABLE_BOUND, | ||
| description="VariableBound or Direct", | ||
| ) | ||
| construct_query: Optional[Dict[str, Any]] = Field( | ||
| default=None, | ||
| description="Language-specific tweaks for ConceptQuery construction", | ||
| ) | ||
| base_confidence: Optional[float] = Field( | ||
| default=None, | ||
| ge=0.0, | ||
| le=1.0, | ||
| description="Baseline confidence for CallExpression feature definitions", | ||
| ) | ||
| startpoint: bool = Field( | ||
| default=False, | ||
| description="Feature is a starting point", | ||
| ) | ||
| notes: Optional[str] = Field(default=None, description="Contributor notes, caveats, disambiguation guidance") | ||
| docs_url: Optional[str] = Field(default=None, description="Operation-specific documentation URL") | ||
|
|
||
| model_config = ConfigDict(extra="forbid", use_enum_values=True) | ||
|
|
||
| @model_validator(mode="after") | ||
| def validate_base_confidence_scope(self) -> Self: | ||
| _validate_base_confidence_scope(self.concept, self.base_confidence) | ||
| return self` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/base_models/engine_models.py#L217-L235` — `class FeatureUsagePayload(BaseModel): | ||
| """Typed payload for detected feature usage confidence metadata.""" | ||
|
|
||
| match_confidence: float = Field( | ||
| default=1.0, | ||
| ge=0.0, | ||
| le=1.0, | ||
| description="Confidence score for a single detected usage", | ||
| ) | ||
| validation_status: ValidationStatus = Field( | ||
| default=ValidationStatus.COMPLETED, | ||
| description="Validation lifecycle state for the usage row", | ||
| ) | ||
| evidence_json: Optional[Dict[str, Any]] = Field( | ||
| default=None, | ||
| description="Structured evidence payload supporting usage classification", | ||
| ) | ||
|
|
||
| model_config = ConfigDict(use_enum_values=True)` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/base_models/engine_models.py#L238-L264` — `class Detection(BaseModel): | ||
| """Result of feature detection in source code.""" | ||
|
|
||
| capability_key: str = Field( | ||
| ..., | ||
| min_length=1, | ||
| description="Capability family for the detected feature", | ||
| ) | ||
| operation_key: str = Field( | ||
| ..., | ||
| min_length=1, | ||
| description="Operation identifier for the detected feature", | ||
| ) | ||
| library: str = Field( | ||
| ..., description="Library/framework name this feature belongs to" | ||
| ) | ||
| match_text: str = Field(..., description="The actual text that matched") | ||
| start_line: int = Field(..., description="Starting line number (1-indexed)") | ||
| end_line: int = Field(..., description="Ending line number (1-indexed)") | ||
| metadata: Dict[str, Any] = Field( | ||
| default_factory=dict, description="Additional metadata" | ||
| ) | ||
|
|
||
| @property | ||
| def feature_key(self) -> str: | ||
| """Return the dotted convenience key derived from structured identity.""" | ||
| return _compose_feature_key(self.capability_key, self.operation_key)` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/base_models/engine_models.py#L267-L286` — `class DetectionResult(BaseModel): | ||
| """Complete detection result returned by an engine run.""" | ||
|
|
||
| success: bool = Field(..., description="Whether detection completed successfully") | ||
| detections: Dict[str, List[Detection]] = Field( | ||
| default_factory=dict, | ||
| description="Feature key to list of detections", | ||
| ) | ||
| errors: List[str] = Field( | ||
| default_factory=list, | ||
| description="Critical errors that prevented detection", | ||
| ) | ||
| warnings: List[str] = Field( | ||
| default_factory=list, | ||
| description="Non-critical issues encountered during detection", | ||
| ) | ||
| unsupported_features: List[str] = Field( | ||
| default_factory=list, | ||
| description="Features that couldn't be processed by the engine", | ||
| )` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/base_models/framework_models.py` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/base_models/framework_models.py#L32-L54` — `class Framework(SQLBase): | ||
| """Language-library combo ("python-fastapi", etc.).""" | ||
|
|
||
| __tablename__ = "framework" | ||
| __table_args__ = {"extend_existing": True} | ||
|
|
||
| language: Mapped[str] = mapped_column( | ||
| primary_key=True, comment="Programming language" | ||
| ) | ||
| library: Mapped[str] = mapped_column( | ||
| primary_key=True, comment="Library / framework" | ||
| ) | ||
| docs_url: Mapped[Optional[str]] = mapped_column(default=None, comment="Docs URL") | ||
| description: Mapped[Optional[str]] = mapped_column( | ||
| default=None, comment="Framework/library description" | ||
| ) | ||
|
|
||
| # Relationships | ||
| features: Mapped[List["FrameworkFeature"]] = relationship( | ||
| back_populates="framework", | ||
| cascade="all, delete-orphan", | ||
| passive_deletes=True, | ||
| )` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/base_models/framework_models.py#L60-L217` — `class FrameworkFeature(SQLBase): | ||
| """Per-feature metadata keyed by capability + operation.""" | ||
|
|
||
| __tablename__ = "framework_feature" | ||
| __table_args__ = ( | ||
| ForeignKeyConstraint( # FK → Framework | ||
| ["language", "library"], | ||
| ["framework.language", "framework.library"], | ||
| ondelete="CASCADE", | ||
| ), | ||
| Index( | ||
| "framework_feature_definition_gin_idx", | ||
| "feature_definition", | ||
| postgresql_using="gin", | ||
| postgresql_ops={"feature_definition": "jsonb_path_ops"}, | ||
| ), | ||
| Index( | ||
| "framework_feature_startpoint_bool_idx", | ||
| text("coalesce((feature_definition['startpoint'])::boolean, false)"), | ||
| ), | ||
| {"extend_existing": True}, | ||
| ) | ||
|
|
||
| # Composite PK = language + library + capability_key + operation_key | ||
| language: Mapped[str] = mapped_column(primary_key=True) | ||
| library: Mapped[str] = mapped_column(primary_key=True) | ||
| capability_key: Mapped[str] = mapped_column( | ||
| primary_key=True, | ||
| comment="Capability family this feature belongs to", | ||
| ) | ||
| operation_key: Mapped[str] = mapped_column( | ||
| primary_key=True, | ||
| comment="Operation identifier within the capability", | ||
| ) | ||
|
|
||
| feature_definition: Mapped[dict[str, object]] = mapped_column( | ||
| JSONB, | ||
| nullable=False, | ||
| default=dict, | ||
| server_default=text("'{}'::jsonb"), | ||
| comment="Source-of-truth JSONB payload for feature schema fields", | ||
| ) | ||
|
|
||
| # Relationships | ||
| framework: Mapped[Framework] = relationship(back_populates="features") | ||
| absolute_paths: Mapped[List["FeatureAbsolutePath"]] = relationship( | ||
| back_populates="feature", | ||
| cascade="all, delete-orphan", | ||
| passive_deletes=True, | ||
| ) | ||
|
|
||
| @property | ||
| def feature_key(self) -> str: | ||
| """Return the dotted convenience key derived from structured identity.""" | ||
| return _compose_feature_key(self.capability_key, self.operation_key) | ||
|
|
||
| @property | ||
| def description(self) -> Optional[str]: | ||
| """Return description from feature_definition.""" | ||
| value = self.feature_definition.get("description") | ||
| if value is None: | ||
| return None | ||
| if isinstance(value, str): | ||
| return value | ||
| raise TypeError("feature_definition.description must be a string") | ||
|
|
||
| @property | ||
| def target_level(self) -> TargetLevel: | ||
| """Return target level from feature_definition.""" | ||
| value = self.feature_definition["target_level"] | ||
| if isinstance(value, TargetLevel): | ||
| return value | ||
| if isinstance(value, str): | ||
| return TargetLevel(value) | ||
| raise TypeError("feature_definition.target_level must be a string enum value") | ||
|
|
||
| @property | ||
| def concept(self) -> Concept: | ||
| """Return concept from feature_definition.""" | ||
| value = self.feature_definition["concept"] | ||
| if isinstance(value, Concept): | ||
| return value | ||
| if isinstance(value, str): | ||
| return Concept(value) | ||
| raise TypeError("feature_definition.concept must be a string enum value") | ||
|
|
||
| @property | ||
| def locator_strategy(self) -> LocatorStrategy: | ||
| """Return locator strategy from feature_definition.""" | ||
| value = self.feature_definition["locator_strategy"] | ||
| if isinstance(value, LocatorStrategy): | ||
| return value | ||
| if isinstance(value, str): | ||
| return LocatorStrategy(value) | ||
| raise TypeError( | ||
| "feature_definition.locator_strategy must be a string enum value" | ||
| ) | ||
|
|
||
| @property | ||
| def construct_query(self) -> Optional[dict[str, object]]: | ||
| """Return construct_query from feature_definition.""" | ||
| value = self.feature_definition.get("construct_query") | ||
| if value is None: | ||
| return None | ||
| if isinstance(value, dict): | ||
| return value | ||
| raise TypeError("feature_definition.construct_query must be an object") | ||
|
|
||
| @property | ||
| def startpoint(self) -> bool: | ||
| """Return startpoint from feature_definition.""" | ||
| value = self.feature_definition["startpoint"] | ||
| if isinstance(value, bool): | ||
| return value | ||
| raise TypeError("feature_definition.startpoint must be a boolean") | ||
|
|
||
| @property | ||
| def base_confidence(self) -> float | None: | ||
| """Return base confidence from feature_definition when present.""" | ||
| value = self.feature_definition.get("base_confidence") | ||
| if value is None: | ||
| return None | ||
| if isinstance(value, (int, float)) and not isinstance(value, bool): | ||
| return float(value) | ||
| raise TypeError("feature_definition.base_confidence must be a number") | ||
|
|
||
| @classmethod | ||
| def concept_sql_expression(cls) -> ColumnElement[str]: | ||
| """SQL expression for concept reads/grouping.""" | ||
| return cls.feature_definition["concept"].astext | ||
|
|
||
| @classmethod | ||
| def startpoint_sql_expression(cls) -> ColumnElement[bool]: | ||
| """SQL expression for startpoint reads/filtering.""" | ||
| return func.coalesce(cls.feature_definition["startpoint"].as_boolean(), False) | ||
|
|
||
| @property | ||
| def construct_query_typed(self) -> Optional[ConstructQueryConfig]: | ||
| """Get construct_query as typed configuration.""" | ||
| construct_query = self.construct_query | ||
| if not construct_query: | ||
| return None | ||
| try: | ||
| return ConstructQueryConfig.model_validate(construct_query) | ||
| except Exception: | ||
| return None | ||
|
|
||
| @construct_query_typed.setter | ||
| def construct_query_typed(self, value: Optional[ConstructQueryConfig]) -> None: | ||
| """Set construct_query from typed configuration.""" | ||
| updated_feature_definition = dict(self.feature_definition) | ||
| if value is None: | ||
| updated_feature_definition.pop("construct_query", None) | ||
| else: | ||
| updated_feature_definition["construct_query"] = value.model_dump( | ||
| exclude_none=True | ||
| ) | ||
| self.feature_definition = updated_feature_definition` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/base_models/framework_models.py#L223-L265` — `class FeatureAbsolutePath(SQLBase): | ||
| """Maps each absolute import path to its feature.""" | ||
|
|
||
| __tablename__ = "feature_absolute_path" | ||
| __table_args__ = ( | ||
| ForeignKeyConstraint( # FK → FrameworkFeature | ||
| ["language", "library", "capability_key", "operation_key"], | ||
| [ | ||
| "framework_feature.language", | ||
| "framework_feature.library", | ||
| "framework_feature.capability_key", | ||
| "framework_feature.operation_key", | ||
| ], | ||
| ondelete="CASCADE", | ||
| ), | ||
| # Fast lookup by path + covering columns for an index-only probe | ||
| Index( | ||
| "path_lookup_idx", | ||
| "absolute_path", | ||
| postgresql_include=( | ||
| "language", | ||
| "library", | ||
| "capability_key", | ||
| "operation_key", | ||
| ), | ||
| ), | ||
| {"extend_existing": True}, | ||
| ) | ||
|
|
||
| # Composite PK = language + library + capability_key + operation_key + absolute_path | ||
| language: Mapped[str] = mapped_column(primary_key=True) | ||
| library: Mapped[str] = mapped_column(primary_key=True) | ||
| capability_key: Mapped[str] = mapped_column(primary_key=True) | ||
| operation_key: Mapped[str] = mapped_column(primary_key=True) | ||
| absolute_path: Mapped[str] = mapped_column(primary_key=True, comment="Import path") | ||
|
|
||
| @property | ||
| def feature_key(self) -> str: | ||
| """Return the dotted convenience key derived from structured identity.""" | ||
| return _compose_feature_key(self.capability_key, self.operation_key) | ||
|
|
||
| # Relationship back to metadata | ||
| feature: Mapped[FrameworkFeature] = relationship(back_populates="absolute_paths")` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/base_models/python_structural_signature.py` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/base_models/python_structural_signature.py#L11-L15` — `class PythonVariableInfo(BaseModel): | ||
| """Information about a global variable declaration.""" | ||
| start_line: int = Field(..., description="Starting line number of variable declaration") | ||
| end_line: int = Field(..., description="Ending line number of variable declaration") | ||
| signature: str = Field(..., description="Complete variable declaration line(s)")` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/base_models/python_structural_signature.py#L18-L26` — `class PythonFunctionInfo(BaseModel): | ||
| """Information about a function or method.""" | ||
| start_line: int = Field(..., description="Line number where the function starts") | ||
| end_line: int = Field(..., description="Line number where the function ends") | ||
| signature: str = Field(..., description="Complete function declaration including decorators, def/async def, parameters, return type") | ||
| docstring: Optional[str] = Field(None, description="Function docstring") | ||
| function_calls: List[str] = Field(default_factory=list, description="Fully-qualified names of function calls inside the function body, in order of appearance") | ||
| nested_functions: List['PythonFunctionInfo'] = Field(default_factory=list, description="Nested functions declarations") | ||
| instance_variables: List['PythonVariableInfo'] = Field(default_factory=list, description="Instance variable assignments (self.*) within this method")` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/base_models/python_structural_signature.py#L29-L37` — `class PythonClassInfo(BaseModel): | ||
| """Information about a class definition.""" | ||
| start_line: int = Field(..., description="Line number where the class starts") | ||
| end_line: int = Field(..., description="Line number where the class ends") | ||
| signature: str = Field(..., description="Complete class declaration including decorators and inheritance") | ||
| docstring: Optional[str] = Field(None, description="Class docstring") | ||
| vars: List[PythonVariableInfo] = Field(default_factory=list, description="Class and instance variables") | ||
| methods: List[PythonFunctionInfo] = Field(default_factory=list, description="Class methods") | ||
| nested_classes: List['PythonClassInfo'] = Field(default_factory=list, description="Nested class declarations")` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/base_models/python_structural_signature.py#L40-L51` — `class PythonStructuralSignature(BaseModel): | ||
| """ | ||
| Structural signature of a Python source code file. | ||
|
|
||
| This model captures the high-level structure and outline of a source file, | ||
| including module-level constructs, functions, classes, and their | ||
| positions within the file. | ||
| """ | ||
| module_docstring: Optional[str] = Field(None, description="Module-level docstring") | ||
| global_variables: List[PythonVariableInfo] = Field(default_factory=list, description="Module-level variables") | ||
| functions: List[PythonFunctionInfo] = Field(default_factory=list, description="Module-level functions") | ||
| classes: List[PythonClassInfo] = Field(default_factory=list, description="Class definitions")` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/base_models/typescript_structural_signature.py` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/base_models/typescript_structural_signature.py#L11-L25` — `class TypeScriptVariableInfo(BaseModel): | ||
| """Information about a variable declaration (const, let, var).""" | ||
|
|
||
| start_line: Optional[int] = Field( | ||
| default=None, description="Starting line number of variable declaration" | ||
| ) | ||
| end_line: Optional[int] = Field( | ||
| default=None, description="Ending line number of variable declaration" | ||
| ) | ||
| signature: Optional[str] = Field( | ||
| default=None, description="Complete variable declaration including type annotation" | ||
| ) | ||
| kind: Optional[str] = Field( | ||
| default=None, description="Variable kind: const, let, or var" | ||
| )` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/base_models/typescript_structural_signature.py#L28-L34` — `class TypeScriptParameterInfo(BaseModel): | ||
| """Information about function/method parameters.""" | ||
|
|
||
| name: str = Field(..., description="Parameter name") | ||
| type_annotation: Optional[str] = Field(None, description="Type annotation if present") | ||
| optional: bool = Field(default=False, description="Whether parameter is optional") | ||
| default_value: Optional[str] = Field(None, description="Default value if present")` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/base_models/typescript_structural_signature.py#L37-L54` — `class TypeScriptFunctionInfo(BaseModel): | ||
| """Information about a function or method.""" | ||
|
|
||
| start_line: Optional[int] = Field( | ||
| default=None, description="Line number where the function starts" | ||
| ) | ||
| end_line: Optional[int] = Field( | ||
| default=None, description="Line number where the function ends" | ||
| ) | ||
| signature: Optional[str] = Field( | ||
| default=None, | ||
| description="Complete function declaration including async/function/arrow syntax, type parameters, parameters, return type", | ||
| ) | ||
| docstring: Optional[str] = Field(None, description="JSDoc or TSDoc comment") | ||
| #is_async: bool = Field(default=False, description="Whether function is async") | ||
| nested_functions: List["TypeScriptFunctionInfo"] = Field( | ||
| default_factory=list, description="Nested function declarations" | ||
| )` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/base_models/typescript_structural_signature.py#L71-L86` — `class TypeScriptMethodInfo(BaseModel): | ||
| """Information about class methods.""" | ||
|
|
||
| start_line: Optional[int] = Field( | ||
| default=None, description="Line number where the method starts" | ||
| ) | ||
| end_line: Optional[int] = Field( | ||
| default=None, description="Line number where the method ends" | ||
| ) | ||
| signature: Optional[str] = Field( | ||
| default=None, | ||
| description="Complete method declaration including modifiers, type parameters, parameters, return type", | ||
| ) | ||
| docstring: Optional[str] = Field(None, description="JSDoc or TSDoc comment") | ||
| #todo: enable later not in scope right now | ||
| #is_async: bool = Field(default=False, description="Whether method is async")` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/base_models/typescript_structural_signature.py#L89-L95` — `class TypeScriptInterfacePropertyInfo(BaseModel): | ||
| """Information about interface property signatures.""" | ||
|
|
||
| name: str = Field(..., description="Property name") | ||
| signature: Optional[str] = Field( | ||
| default=None, description="Complete property signature with type" | ||
| )` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/base_models/typescript_structural_signature.py#L98-L104` — `class TypeScriptInterfaceMethodInfo(BaseModel): | ||
| """Information about interface method signatures.""" | ||
|
|
||
| name: str = Field(..., description="Method name") | ||
| signature: Optional[str] = Field( | ||
| default=None, description="Complete method signature with parameters and return type" | ||
| )` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/base_models/typescript_structural_signature.py#L107-L126` — `class TypeScriptInterfaceInfo(BaseModel): | ||
| """Information about a TypeScript interface definition.""" | ||
|
|
||
| start_line: Optional[int] = Field( | ||
| default=None, description="Line number where the interface starts" | ||
| ) | ||
| end_line: Optional[int] = Field( | ||
| default=None, description="Line number where the interface ends" | ||
| ) | ||
| signature: Optional[str] = Field( | ||
| default=None, | ||
| description="Complete interface declaration including type parameters and extends clause", | ||
| ) | ||
| docstring: Optional[str] = Field(None, description="Interface TSDoc comment") | ||
| properties: List[TypeScriptInterfacePropertyInfo] = Field( | ||
| default_factory=list, description="Interface property signatures" | ||
| ) | ||
| methods: List[TypeScriptInterfaceMethodInfo] = Field( | ||
| default_factory=list, description="Interface method signatures" | ||
| )` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/base_models/typescript_structural_signature.py#L129-L141` — `class TypeScriptTypeAliasInfo(BaseModel): | ||
| """Information about a TypeScript type alias.""" | ||
|
|
||
| start_line: Optional[int] = Field( | ||
| default=None, description="Line number where the type alias starts" | ||
| ) | ||
| end_line: Optional[int] = Field( | ||
| default=None, description="Line number where the type alias ends" | ||
| ) | ||
| signature: Optional[str] = Field( | ||
| default=None, description="Complete type alias declaration including type parameters" | ||
| ) | ||
| docstring: Optional[str] = Field(None, description="Type alias TSDoc comment")` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/base_models/typescript_structural_signature.py#L144-L169` — `class TypeScriptClassInfo(BaseModel): | ||
| """Information about a class definition.""" | ||
|
|
||
| start_line: Optional[int] = Field( | ||
| default=None, description="Line number where the class starts" | ||
| ) | ||
| end_line: Optional[int] = Field( | ||
| default=None, description="Line number where the class ends" | ||
| ) | ||
| signature: Optional[str] = Field( | ||
| default=None, | ||
| description="Complete class declaration including decorators, abstract modifier, type parameters, implements, and extends clauses", | ||
| ) | ||
| docstring: Optional[str] = Field(None, description="Class JSDoc or TSDoc comment") | ||
| #todo: enable later not in scope right now | ||
| #is_abstract: bool = Field(default=False, description="Whether class is abstract") | ||
| decorators: List[str] = Field(default_factory=list, description="Class decorator names") | ||
| # properties: List[TypeScriptPropertyInfo] = Field( | ||
| # default_factory=list, description="Class properties and fields" | ||
| # ) | ||
| methods: List[TypeScriptMethodInfo] = Field( | ||
| default_factory=list, description="Class methods including constructor" | ||
| ) | ||
| nested_classes: List["TypeScriptClassInfo"] = Field( | ||
| default_factory=list, description="Nested class declarations" | ||
| )` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/base_models/typescript_structural_signature.py#L172-L176` — `class TypeScriptEnumMemberInfo(BaseModel): | ||
| """Information about enum member.""" | ||
|
|
||
| name: str = Field(..., description="Enum member name") | ||
| value: Optional[str] = Field(None, description="Enum member value if present")` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/base_models/typescript_structural_signature.py#L179-L195` — `class TypeScriptEnumInfo(BaseModel): | ||
| """Information about a TypeScript enum definition.""" | ||
|
|
||
| start_line: Optional[int] = Field( | ||
| default=None, description="Line number where the enum starts" | ||
| ) | ||
| end_line: Optional[int] = Field( | ||
| default=None, description="Line number where the enum ends" | ||
| ) | ||
| signature: Optional[str] = Field( | ||
| default=None, description="Complete enum declaration" | ||
| ) | ||
| docstring: Optional[str] = Field(None, description="Enum TSDoc comment") | ||
| is_const: bool = Field(default=False, description="Whether enum is const") | ||
| members: List[TypeScriptEnumMemberInfo] = Field( | ||
| default_factory=list, description="Enum members" | ||
| )` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/base_models/typescript_structural_signature.py#L198-L213` — `class TypeScriptNamespaceInfo(BaseModel): | ||
| """Information about a TypeScript namespace/module declaration.""" | ||
|
|
||
| start_line: Optional[int] = Field( | ||
| default=None, description="Line number where the namespace starts" | ||
| ) | ||
| end_line: Optional[int] = Field( | ||
| default=None, description="Line number where the namespace ends" | ||
| ) | ||
| signature: Optional[str] = Field( | ||
| default=None, description="Complete namespace declaration" | ||
| ) | ||
| docstring: Optional[str] = Field(None, description="Namespace TSDoc comment") | ||
| is_ambient: bool = Field( | ||
| default=False, description="Whether namespace is ambient (declare namespace)" | ||
| )` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/base_models/typescript_structural_signature.py#L216-L223` — `class TypeScriptExportInfo(BaseModel): | ||
| """Information about export statements.""" | ||
|
|
||
| export_type: str = Field( | ||
| ..., description="Export type: named, default, all, or declaration" | ||
| ) | ||
| exported_names: List[str] = Field(default_factory=list, description="Exported identifier names") | ||
| source: Optional[str] = Field(None, description="Source module for re-exports")` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/base_models/typescript_structural_signature.py#L226-L233` — `class TypeScriptImportInfo(BaseModel): | ||
| """Information about import statements.""" | ||
|
|
||
| import_type: str = Field( | ||
| ..., description="Import type: named, default, namespace, or side-effect" | ||
| ) | ||
| imported_names: List[str] = Field(default_factory=list, description="Imported identifier names") | ||
| source: str = Field(..., description="Source module path")` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/base_models/typescript_structural_signature.py#L236-L276` — `class TypeScriptStructuralSignature(BaseModel): | ||
| """ | ||
| Structural signature of a TypeScript/JavaScript source code file. | ||
|
|
||
| This model captures the high-level structure and outline of a source file, | ||
| including module-level constructs, functions, classes, interfaces, types, | ||
| enums, namespaces, and their positions within the file. | ||
|
|
||
| Based on tree-sitter-typescript grammar patterns. | ||
| """ | ||
|
|
||
| module_docstring: Optional[str] = Field( | ||
| None, description="Module-level JSDoc or TSDoc comment" | ||
| ) | ||
| imports: List[TypeScriptImportInfo] = Field( | ||
| default_factory=list, description="Import statements" | ||
| ) | ||
| exports: List[TypeScriptExportInfo] = Field( | ||
| default_factory=list, description="Export statements" | ||
| ) | ||
| global_variables: List[TypeScriptVariableInfo] = Field( | ||
| default_factory=list, description="Module-level variables (const, let, var)" | ||
| ) | ||
| functions: List[TypeScriptFunctionInfo] = Field( | ||
| default_factory=list, description="Module-level functions" | ||
| ) | ||
| classes: List[TypeScriptClassInfo] = Field( | ||
| default_factory=list, description="Class definitions" | ||
| ) | ||
| interfaces: List[TypeScriptInterfaceInfo] = Field( | ||
| default_factory=list, description="TypeScript interface definitions" | ||
| ) | ||
| type_aliases: List[TypeScriptTypeAliasInfo] = Field( | ||
| default_factory=list, description="TypeScript type alias definitions" | ||
| ) | ||
| enums: List[TypeScriptEnumInfo] = Field( | ||
| default_factory=list, description="TypeScript enum definitions" | ||
| ) | ||
| namespaces: List[TypeScriptNamespaceInfo] = Field( | ||
| default_factory=list, description="TypeScript namespace/module declarations" | ||
| )` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/configuration_models.py` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/configuration_models.py#L10-L19` — `class CodebaseConfig(BaseModel): | ||
| """Pydantic model for codebase configuration in JSON config files.""" | ||
| codebase_folder: str | ||
| root_packages: Optional[list[str]] = Field( | ||
| default=None, | ||
| description=( | ||
| "Relative paths (POSIX) to each root package inside codebase_folder." | ||
| ), | ||
| ) | ||
| programming_language_metadata: ProgrammingLanguageMetadata` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/configuration_models.py#L22-L26` — `class RepositorySettings(BaseModel): | ||
| """Pydantic model for repository settings in JSON config files.""" | ||
| git_url: str | ||
| output_path: str | ||
| codebases: List[CodebaseConfig]` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/credentials.py` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/credentials.py#L20-L48` — `class Credentials(SQLBase): | ||
| """Model for storing encrypted credentials with support for multiple credential types.""" | ||
|
|
||
| __tablename__ = "credentials" | ||
| __table_args__ = ( | ||
| # Add unique constraint on credential_key for multi-key credential support | ||
| Index( | ||
| "uq_credentials_namespace_provider_secret", | ||
| "namespace", | ||
| "provider_key", | ||
| "secret_kind", | ||
| unique=True, | ||
| ), | ||
| # Keep existing unique constraint on token_hash for backward compatibility | ||
| ) | ||
| id: Mapped[uuid.UUID] = mapped_column(primary_key=True, default=uuid.uuid4) | ||
| namespace: Mapped[CredentialNamespace] = mapped_column(nullable=False) | ||
| provider_key: Mapped[ProviderKey] = mapped_column(nullable=False) | ||
| secret_kind: Mapped[SecretKind] = mapped_column(nullable=False) | ||
| token_hash: Mapped[str] = mapped_column(comment="Encrypted credential value") | ||
| metadata_json: Mapped[Optional[dict[str, Any]]] = mapped_column( | ||
| JSONB, default=None, comment="Provider specific metadata", nullable=True | ||
| ) | ||
| created_at: Mapped[Optional[datetime]] = mapped_column( | ||
| DateTime(timezone=True), default=None | ||
| ) | ||
| updated_at: Mapped[Optional[datetime]] = mapped_column( | ||
| DateTime(timezone=True), default=None | ||
| )` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/flags.py` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/flags.py#L8-L15` — `class Flag(SQLBase): | ||
| """Model for storing feature flags.""" | ||
|
|
||
| __tablename__ = "flag" | ||
|
|
||
| id: Mapped[int] = mapped_column(primary_key=True) | ||
| name: Mapped[str] = mapped_column(unique=True, index=True) | ||
| status: Mapped[bool] = mapped_column(default=False)` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/pr_metadata_model.py` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/pr_metadata_model.py#L7-L27` — `class PrMetadata(BaseModel): | ||
| """Persisted metadata for a manual AGENTS.md PR publication. | ||
|
|
||
| Stored as JSONB on RepositoryAgentMdSnapshot.pr_metadata. | ||
| One row per (owner, repo, workflow_run_id) — one-shot semantics | ||
| mean the first successful publish writes this; subsequent calls | ||
| for the same run are no-ops. | ||
| """ | ||
|
|
||
| pr_number: int | None = Field(default=None) | ||
| pr_url: str | None = Field(default=None) | ||
| branch_name: str | None = Field(default=None) | ||
| status: Literal["modified", "no_changes"] = Field(...) | ||
| changed_files: list[str] = Field(default_factory=list) | ||
| message: str = Field(...) | ||
| created_at: AwareDatetime = Field( | ||
| default_factory=lambda: datetime.now(timezone.utc), | ||
| ) | ||
| updated_at: AwareDatetime = Field( | ||
| default_factory=lambda: datetime.now(timezone.utc), | ||
| )` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/programming_language_metadata.py` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/programming_language_metadata.py#L32-L41` — `class ProgrammingLanguageMetadata(BaseModel): | ||
| language: ProgrammingLanguage | ||
| package_manager: Optional[PackageManagerType] = None | ||
| language_version: Optional[str] = None | ||
| manifest_path: Optional[str] = None | ||
| project_name: Optional[str] = None | ||
| package_manager_provenance: Optional[PackageManagerProvenance] = None | ||
| workspace_root: Optional[str] = None | ||
| workspace_orchestrator: Optional[WorkspaceOrchestratorType] = None | ||
| workspace_orchestrator_config_path: Optional[str] = None` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/relational_models/unoplat_code_confluence.py` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/relational_models/unoplat_code_confluence.py#L13-L36` — `class UnoplatCodeConfluenceGitRepository(SQLBase): | ||
| """Git repository stored in PostgreSQL for Code Confluence.""" | ||
|
|
||
| __tablename__ = "code_confluence_git_repository" | ||
| __table_args__ = ( | ||
| Index("uq_cc_git_repo_url", "repository_url", unique=True), | ||
| {"extend_existing": True}, | ||
| ) | ||
|
|
||
| qualified_name: Mapped[str] = mapped_column(primary_key=True) | ||
| repository_url: Mapped[str] = mapped_column(nullable=False) | ||
| repository_name: Mapped[str] = mapped_column(nullable=False) | ||
| repository_metadata: Mapped[Optional[Dict[str, Any]]] = mapped_column( | ||
| JSONB, default=None | ||
| ) | ||
| readme: Mapped[Optional[str]] = mapped_column(default=None) | ||
| domain: Mapped[Optional[str]] = mapped_column(default=None) | ||
| github_organization: Mapped[Optional[str]] = mapped_column(default=None) | ||
|
|
||
| codebases: Mapped[List["UnoplatCodeConfluenceCodebase"]] = relationship( | ||
| back_populates="repository", | ||
| cascade="all, delete-orphan", | ||
| passive_deletes=True, | ||
| )` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/relational_models/unoplat_code_confluence.py#L39-L81` — `class UnoplatCodeConfluenceCodebase(SQLBase): | ||
| """Codebase stored in PostgreSQL for Code Confluence.""" | ||
|
|
||
| __tablename__ = "code_confluence_codebase" | ||
| __table_args__ = ( | ||
| ForeignKeyConstraint( | ||
| ["repository_qualified_name"], | ||
| ["code_confluence_git_repository.qualified_name"], | ||
| ondelete="CASCADE", | ||
| ), | ||
| {"extend_existing": True}, | ||
| ) | ||
|
|
||
| qualified_name: Mapped[str] = mapped_column(primary_key=True) | ||
| repository_qualified_name: Mapped[str] = mapped_column(nullable=False) | ||
| name: Mapped[str] = mapped_column(nullable=False) | ||
| readme: Mapped[Optional[str]] = mapped_column(default=None) | ||
| root_packages: Mapped[Optional[List[str]]] = mapped_column(JSONB, default=None) | ||
| codebase_path: Mapped[str] = mapped_column(nullable=False) | ||
| codebase_folder: Mapped[Optional[str]] = mapped_column(default=None) | ||
| programming_language: Mapped[Optional[str]] = mapped_column(default=None) | ||
|
|
||
| repository: Mapped[UnoplatCodeConfluenceGitRepository] = relationship( | ||
| back_populates="codebases" | ||
| ) | ||
| package_manager_metadata: Mapped[ | ||
| Optional["UnoplatCodeConfluencePackageManagerMetadata"] | ||
| ] = relationship( | ||
| back_populates="codebase", | ||
| cascade="all, delete-orphan", | ||
| passive_deletes=True, | ||
| uselist=False, | ||
| ) | ||
| files: Mapped[List["UnoplatCodeConfluenceFile"]] = relationship( | ||
| back_populates="codebase", | ||
| cascade="all, delete-orphan", | ||
| passive_deletes=True, | ||
| ) | ||
| frameworks: Mapped[List["UnoplatCodeConfluenceCodebaseFramework"]] = relationship( | ||
| back_populates="codebase", | ||
| cascade="all, delete-orphan", | ||
| passive_deletes=True, | ||
| )` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/relational_models/unoplat_code_confluence.py#L84-L111` — `class UnoplatCodeConfluencePackageManagerMetadata(SQLBase): | ||
| """Package manager metadata stored in PostgreSQL for Code Confluence.""" | ||
|
|
||
| __tablename__ = "code_confluence_package_manager_metadata" | ||
| __table_args__ = ( | ||
| ForeignKeyConstraint( | ||
| ["codebase_qualified_name"], | ||
| ["code_confluence_codebase.qualified_name"], | ||
| ondelete="CASCADE", | ||
| ), | ||
| Index( | ||
| "uq_cc_pkg_metadata_codebase", | ||
| "codebase_qualified_name", | ||
| unique=True, | ||
| ), | ||
| {"extend_existing": True}, | ||
| ) | ||
|
|
||
| id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True) | ||
| codebase_qualified_name: Mapped[str] = mapped_column(nullable=False) | ||
| dependencies: Mapped[Dict[str, Any]] = mapped_column(JSONB, default=dict) | ||
| other_metadata: Mapped[Dict[str, Any]] = mapped_column(JSONB, default=dict) | ||
| package_manager: Mapped[str] = mapped_column(nullable=False) | ||
| programming_language: Mapped[str] = mapped_column(nullable=False) | ||
|
|
||
| codebase: Mapped[UnoplatCodeConfluenceCodebase] = relationship( | ||
| back_populates="package_manager_metadata" | ||
| )` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/relational_models/unoplat_code_confluence.py#L114-L146` — `class UnoplatCodeConfluenceFile(SQLBase): | ||
| """Source file stored in PostgreSQL for Code Confluence.""" | ||
|
|
||
| __tablename__ = "code_confluence_file" | ||
| __table_args__ = ( | ||
| ForeignKeyConstraint( | ||
| ["codebase_qualified_name"], | ||
| ["code_confluence_codebase.qualified_name"], | ||
| ondelete="CASCADE", | ||
| ), | ||
| {"extend_existing": True}, | ||
| ) | ||
|
|
||
| file_path: Mapped[str] = mapped_column(primary_key=True) | ||
| codebase_qualified_name: Mapped[str] = mapped_column(nullable=False) | ||
| checksum: Mapped[Optional[str]] = mapped_column(default=None) | ||
| structural_signature: Mapped[Optional[Dict[str, Any]]] = mapped_column( | ||
| JSONB, default=None | ||
| ) | ||
| imports: Mapped[List[str]] = mapped_column(JSONB, default=list) | ||
| has_data_model: Mapped[bool] = mapped_column(default=False) | ||
| data_model_positions: Mapped[Dict[str, Any]] = mapped_column(JSONB, default=dict) | ||
|
|
||
| codebase: Mapped[UnoplatCodeConfluenceCodebase] = relationship( | ||
| back_populates="files" | ||
| ) | ||
| framework_features: Mapped[List["UnoplatCodeConfluenceFileFrameworkFeature"]] = ( | ||
| relationship( | ||
| back_populates="file", | ||
| cascade="all, delete-orphan", | ||
| passive_deletes=True, | ||
| ) | ||
| )` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/relational_models/unoplat_code_confluence.py#L149-L173` — `class UnoplatCodeConfluenceCodebaseFramework(SQLBase): | ||
| """Join table linking codebases to frameworks.""" | ||
|
|
||
| __tablename__ = "code_confluence_codebase_framework" | ||
| __table_args__ = ( | ||
| ForeignKeyConstraint( | ||
| ["codebase_qualified_name"], | ||
| ["code_confluence_codebase.qualified_name"], | ||
| ondelete="CASCADE", | ||
| ), | ||
| ForeignKeyConstraint( | ||
| ["framework_language", "framework_library"], | ||
| ["framework.language", "framework.library"], | ||
| ondelete="CASCADE", | ||
| ), | ||
| {"extend_existing": True}, | ||
| ) | ||
|
|
||
| codebase_qualified_name: Mapped[str] = mapped_column(primary_key=True) | ||
| framework_language: Mapped[str] = mapped_column(primary_key=True) | ||
| framework_library: Mapped[str] = mapped_column(primary_key=True) | ||
|
|
||
| codebase: Mapped[UnoplatCodeConfluenceCodebase] = relationship( | ||
| back_populates="frameworks" | ||
| )` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/relational_models/unoplat_code_confluence.py#L181-L236` — `class UnoplatCodeConfluenceFileFrameworkFeature(SQLBase): | ||
| """Join table linking files to framework features with span metadata.""" | ||
|
|
||
| __tablename__ = "code_confluence_file_framework_feature" | ||
| __table_args__ = ( | ||
| ForeignKeyConstraint( | ||
| ["file_path"], | ||
| ["code_confluence_file.file_path"], | ||
| ondelete="CASCADE", | ||
| ), | ||
| ForeignKeyConstraint( | ||
| [ | ||
| "feature_language", | ||
| "feature_library", | ||
| "feature_capability_key", | ||
| "feature_operation_key", | ||
| ], | ||
| [ | ||
| "framework_feature.language", | ||
| "framework_feature.library", | ||
| "framework_feature.capability_key", | ||
| "framework_feature.operation_key", | ||
| ], | ||
| ondelete="CASCADE", | ||
| ), | ||
| {"extend_existing": True}, | ||
| ) | ||
|
|
||
| file_path: Mapped[str] = mapped_column(primary_key=True) | ||
| feature_language: Mapped[str] = mapped_column(primary_key=True) | ||
| feature_library: Mapped[str] = mapped_column(primary_key=True) | ||
| feature_capability_key: Mapped[str] = mapped_column(primary_key=True) | ||
| feature_operation_key: Mapped[str] = mapped_column(primary_key=True) | ||
| start_line: Mapped[int] = mapped_column(primary_key=True) | ||
| end_line: Mapped[int] = mapped_column(primary_key=True) | ||
| match_text: Mapped[Optional[str]] = mapped_column(Text, default=None) | ||
| match_confidence: Mapped[float] = mapped_column(default=1.0) | ||
| validation_status: Mapped[str] = mapped_column( | ||
| default=ValidationStatus.COMPLETED.value, | ||
| ) | ||
| evidence_json: Mapped[Optional[Dict[str, Any]]] = mapped_column( | ||
| JSONB, | ||
| default=None, | ||
| ) | ||
|
|
||
| @property | ||
| def feature_key(self) -> str: | ||
| """Return the dotted convenience key derived from structured identity.""" | ||
| return _compose_feature_key( | ||
| self.feature_capability_key, | ||
| self.feature_operation_key, | ||
| ) | ||
|
|
||
| file: Mapped[UnoplatCodeConfluenceFile] = relationship( | ||
| back_populates="framework_features" | ||
| )` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/repo_models.py` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/repo_models.py#L42-L76` — `class Repository(SQLBase): | ||
| """SQLModel for repository table in code_confluence schema.""" | ||
|
|
||
| __tablename__ = "repository" | ||
|
|
||
| repository_name: Mapped[str] = mapped_column( | ||
| primary_key=True, comment="The name of the repository" | ||
| ) | ||
| repository_owner_name: Mapped[str] = mapped_column( | ||
| primary_key=True, comment="The name of the repository owner" | ||
| ) | ||
| repository_provider: Mapped[ProviderKey] = mapped_column( | ||
| SQLEnum(ProviderKey, name="repository_provider_type", native_enum=False), | ||
| default=ProviderKey.GITHUB_OPEN, | ||
| nullable=False, | ||
| comment="Provider key for this repository (e.g., GITHUB_OPEN, GITHUB_ENTERPRISE, GITLAB_CE, GITLAB_ENTERPRISE)", | ||
| ) | ||
|
|
||
| # Relationships - will be populated after class definitions | ||
| workflow_runs: Mapped[List["RepositoryWorkflowRun"]] = relationship( | ||
| back_populates="repository", | ||
| cascade="all, delete-orphan", | ||
| passive_deletes=True, | ||
| ) | ||
| configs: Mapped[List["CodebaseConfig"]] = relationship( | ||
| back_populates="repository", | ||
| cascade="all, delete-orphan", | ||
| passive_deletes=True, | ||
| ) | ||
| agent_md_snapshot: Mapped[Optional["RepositoryAgentMdSnapshot"]] = relationship( | ||
| back_populates="repository", | ||
| cascade="all, delete-orphan", | ||
| passive_deletes=True, | ||
| uselist=False, | ||
| )` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/repo_models.py#L79-L115` — `class CodebaseConfig(SQLBase): | ||
| """SQLModel for codebase_config table in code_confluence schema.""" | ||
|
|
||
| __tablename__ = "codebase_config" | ||
| __table_args__ = ( | ||
| ForeignKeyConstraint( | ||
| ["repository_name", "repository_owner_name"], | ||
| ["repository.repository_name", "repository.repository_owner_name"], | ||
| ondelete="CASCADE", | ||
| ), | ||
| ) | ||
|
|
||
| repository_name: Mapped[str] = mapped_column( | ||
| primary_key=True, comment="The name of the repository" | ||
| ) | ||
| repository_owner_name: Mapped[str] = mapped_column( | ||
| primary_key=True, comment="The name of the repository owner" | ||
| ) | ||
| codebase_folder: Mapped[str] = mapped_column( | ||
| primary_key=True, comment="Path to codebase folder relative to repo root" | ||
| ) | ||
| root_packages: Mapped[Optional[List[str]]] = mapped_column( | ||
| JSONB, default=None, comment="List of root packages within the codebase folder" | ||
| ) | ||
| programming_language_metadata: Mapped[Dict[str, Any]] = mapped_column( | ||
| JSONB, | ||
| nullable=False, | ||
| comment="Language-specific metadata for this codebase like programming language, package manager etc", | ||
| ) | ||
|
|
||
| # Relationships | ||
| repository: Mapped[Repository] = relationship(back_populates="configs") | ||
| workflow_runs: Mapped[List["CodebaseWorkflowRun"]] = relationship( | ||
| back_populates="codebase_config", | ||
| viewonly=True, | ||
| overlaps="repository_workflow_run,workflow_runs", | ||
| )` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/repo_models.py#L118-L194` — `class RepositoryWorkflowRun(SQLBase): | ||
| """SQLModel for repository_workflow_run table in code_confluence schema.""" | ||
|
|
||
| __tablename__ = "repository_workflow_run" | ||
| __table_args__ = ( | ||
| CheckConstraint( | ||
| "status IN ('SUBMITTED','RUNNING','FAILED','TIMED_OUT','COMPLETED','RETRYING','ERROR','CANCELLED')", | ||
| name="status_check", | ||
| ), | ||
| ForeignKeyConstraint( | ||
| ["repository_name", "repository_owner_name"], | ||
| ["repository.repository_name", "repository.repository_owner_name"], | ||
| ondelete="CASCADE", | ||
| ), | ||
| ) | ||
|
|
||
| repository_name: Mapped[str] = mapped_column( | ||
| primary_key=True, comment="The name of the repository" | ||
| ) | ||
| repository_owner_name: Mapped[str] = mapped_column( | ||
| primary_key=True, comment="The name of the repository owner" | ||
| ) | ||
| repository_workflow_run_id: Mapped[str] = mapped_column( | ||
| primary_key=True, comment="The run ID of the repository workflow" | ||
| ) | ||
| repository_workflow_id: Mapped[str] = mapped_column( | ||
| comment="The ID of the repository workflow" | ||
| ) | ||
| operation: Mapped[RepositoryWorkflowOperation] = mapped_column( | ||
| SQLEnum( | ||
| RepositoryWorkflowOperation, | ||
| name="repository_workflow_operation_type", | ||
| native_enum=False, | ||
| ), | ||
| default=RepositoryWorkflowOperation.INGESTION, | ||
| nullable=False, | ||
| comment="Operation this workflow run performs (e.g., INGESTION, AGENTS_GENERATION, AGENT_MD_UPDATE)", | ||
| ) | ||
| status: Mapped[str] = mapped_column( | ||
| String, | ||
| nullable=False, | ||
| comment="Status of the workflow run. One of: SUBMITTED, RUNNING, FAILED, TIMED_OUT, COMPLETED, RETRYING, ERROR, CANCELLED.", | ||
| ) | ||
| error_report: Mapped[Optional[Dict[str, Any]]] = mapped_column( | ||
| JSONB, default=None, comment="Error report if the workflow run failed" | ||
| ) | ||
| issue_tracking: Mapped[Optional[Dict[str, Any]]] = mapped_column( | ||
| JSONB, | ||
| default=None, | ||
| comment="GitHub issue tracking info for this repository workflow run", | ||
| ) | ||
| feedback_issue_url: Mapped[Optional[str]] = mapped_column( | ||
| String, | ||
| default=None, | ||
| nullable=True, | ||
| comment="GitHub issue URL for user feedback on agent generation", | ||
| ) | ||
|
|
||
| started_at: Mapped[datetime] = mapped_column( | ||
| DateTime(timezone=True), | ||
| nullable=False, | ||
| comment="Timestamp when the workflow run started", | ||
| ) | ||
| completed_at: Mapped[Optional[datetime]] = mapped_column( | ||
| DateTime(timezone=True), | ||
| nullable=True, | ||
| default=None, | ||
| comment="Timestamp when the workflow run completed", | ||
| ) | ||
|
|
||
| # Relationships | ||
| repository: Mapped[Repository] = relationship(back_populates="workflow_runs") | ||
| codebase_workflow_runs: Mapped[List["CodebaseWorkflowRun"]] = relationship( | ||
| back_populates="repository_workflow_run", | ||
| viewonly=True, | ||
| overlaps="codebase_config,workflow_runs", | ||
| )` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/repo_models.py#L197-L277` — `class CodebaseWorkflowRun(SQLBase): | ||
| """SQLModel for codebase_workflow_run table in code_confluence schema.""" | ||
|
|
||
| __tablename__ = "codebase_workflow_run" | ||
| __table_args__ = ( | ||
| CheckConstraint( | ||
| "status IN ('SUBMITTED','RUNNING','FAILED','TIMED_OUT','COMPLETED','RETRYING','ERROR','CANCELLED')", | ||
| name="codebase_status_check", | ||
| ), | ||
| ForeignKeyConstraint( | ||
| ["repository_name", "repository_owner_name", "codebase_folder"], | ||
| [ | ||
| "codebase_config.repository_name", | ||
| "codebase_config.repository_owner_name", | ||
| "codebase_config.codebase_folder", | ||
| ], | ||
| ondelete="CASCADE", | ||
| ), | ||
| ForeignKeyConstraint( | ||
| ["repository_name", "repository_owner_name", "repository_workflow_run_id"], | ||
| [ | ||
| "repository_workflow_run.repository_name", | ||
| "repository_workflow_run.repository_owner_name", | ||
| "repository_workflow_run.repository_workflow_run_id", | ||
| ], | ||
| ondelete="CASCADE", | ||
| ), | ||
| ) | ||
|
|
||
| repository_name: Mapped[str] = mapped_column( | ||
| primary_key=True, comment="The name of the repository" | ||
| ) | ||
| repository_owner_name: Mapped[str] = mapped_column( | ||
| primary_key=True, comment="The name of the repository owner" | ||
| ) | ||
| codebase_folder: Mapped[str] = mapped_column( | ||
| primary_key=True, comment="FK to codebase_config - path to codebase folder" | ||
| ) | ||
| codebase_workflow_run_id: Mapped[str] = mapped_column( | ||
| primary_key=True, | ||
| comment="Unique identifier for this specific run of the codebase workflow", | ||
| ) | ||
| codebase_workflow_id: Mapped[str] = mapped_column( | ||
| comment="The ID of the codebase workflow" | ||
| ) | ||
| repository_workflow_run_id: Mapped[str] = mapped_column( | ||
| comment="Link back to parent repository workflow run" | ||
| ) | ||
| status: Mapped[str] = mapped_column( | ||
| String, | ||
| nullable=False, | ||
| comment="Status of the workflow run. One of: SUBMITTED, RUNNING, FAILED, TIMED_OUT, COMPLETED, RETRYING, ERROR, CANCELLED.", | ||
| ) | ||
| error_report: Mapped[Optional[Dict[str, Any]]] = mapped_column( | ||
| JSONB, default=None, comment="Error report if the workflow run failed" | ||
| ) | ||
| issue_tracking: Mapped[Optional[Dict[str, Any]]] = mapped_column( | ||
| JSONB, | ||
| default=None, | ||
| comment="GitHub issue tracking info for this codebase workflow run", | ||
| ) | ||
|
|
||
| started_at: Mapped[datetime] = mapped_column( | ||
| DateTime(timezone=True), | ||
| nullable=False, | ||
| comment="Timestamp when the workflow run started", | ||
| ) | ||
| completed_at: Mapped[Optional[datetime]] = mapped_column( | ||
| DateTime(timezone=True), | ||
| nullable=True, | ||
| default=None, | ||
| comment="Timestamp when the workflow run completed", | ||
| ) | ||
|
|
||
| # Relationships | ||
| codebase_config: Mapped[CodebaseConfig] = relationship( | ||
| back_populates="workflow_runs" | ||
| ) | ||
| repository_workflow_run: Mapped[RepositoryWorkflowRun] = relationship( | ||
| back_populates="codebase_workflow_runs" | ||
| )` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/repo_models.py#L280-L373` — `class RepositoryAgentCodebaseProgress(SQLBase): | ||
| """Live per-codebase progress row for repository agent execution.""" | ||
|
|
||
| __tablename__ = "repository_agent_codebase_progress" | ||
| __table_args__ = ( | ||
| ForeignKeyConstraint( | ||
| ["repository_name", "repository_owner_name"], | ||
| ["repository.repository_name", "repository.repository_owner_name"], | ||
| ondelete="CASCADE", | ||
| ), | ||
| ForeignKeyConstraint( | ||
| [ | ||
| "repository_name", | ||
| "repository_owner_name", | ||
| "repository_workflow_run_id", | ||
| ], | ||
| [ | ||
| "repository_workflow_run.repository_name", | ||
| "repository_workflow_run.repository_owner_name", | ||
| "repository_workflow_run.repository_workflow_run_id", | ||
| ], | ||
| ondelete="CASCADE", | ||
| ), | ||
| Index( | ||
| "ix_repository_agent_codebase_progress_run", | ||
| "repository_owner_name", | ||
| "repository_name", | ||
| "repository_workflow_run_id", | ||
| ), | ||
| ) | ||
|
|
||
| repository_name: Mapped[str] = mapped_column( | ||
| primary_key=True, comment="The name of the repository" | ||
| ) | ||
| repository_owner_name: Mapped[str] = mapped_column( | ||
| primary_key=True, comment="The name of the repository owner" | ||
| ) | ||
| repository_workflow_run_id: Mapped[str] = mapped_column( | ||
| primary_key=True, | ||
| comment="The run ID of the repository workflow this progress row belongs to", | ||
| ) | ||
| codebase_name: Mapped[str] = mapped_column( | ||
| primary_key=True, | ||
| comment="Codebase identifier/path relative to the repository root", | ||
| ) | ||
| next_event_id: Mapped[int] = mapped_column( | ||
| Integer, | ||
| nullable=False, | ||
| default=1, | ||
| comment="Next monotonic event ID to allocate for this codebase stream", | ||
| ) | ||
| latest_event_id: Mapped[Optional[int]] = mapped_column( | ||
| Integer, | ||
| nullable=True, | ||
| default=None, | ||
| comment="Most recently allocated event ID for this codebase stream", | ||
| ) | ||
| event_count: Mapped[int] = mapped_column( | ||
| Integer, | ||
| nullable=False, | ||
| default=0, | ||
| comment="Number of persisted events for this codebase stream", | ||
| ) | ||
| progress: Mapped[Decimal] = mapped_column( | ||
| Numeric(5, 2), | ||
| nullable=False, | ||
| default=0, | ||
| comment="Progress percentage for this codebase stream", | ||
| ) | ||
| completed_namespaces: Mapped[List[str]] = mapped_column( | ||
| JSONB, | ||
| nullable=False, | ||
| default=list, | ||
| comment="Sorted list of completion namespaces already finished for this codebase", | ||
| ) | ||
| latest_event_at: Mapped[Optional[datetime]] = mapped_column( | ||
| DateTime(timezone=True), | ||
| nullable=True, | ||
| default=None, | ||
| comment="Timestamp of the most recent persisted event for this codebase", | ||
| ) | ||
| created_at: Mapped[datetime] = mapped_column( | ||
| DateTime(timezone=True), | ||
| default=func.now(), | ||
| nullable=False, | ||
| comment="Timestamp when the row was first inserted", | ||
| ) | ||
| modified_at: Mapped[datetime] = mapped_column( | ||
| DateTime(timezone=True), | ||
| default=func.now(), | ||
| onupdate=func.now(), | ||
| nullable=False, | ||
| comment="Timestamp when the row was last updated", | ||
| )` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/repo_models.py#L376-L488` — `class RepositoryAgentEvent(SQLBase): | ||
| """Durable append-only repository agent event history row.""" | ||
|
|
||
| __tablename__ = "repository_agent_event" | ||
| __table_args__ = ( | ||
| ForeignKeyConstraint( | ||
| ["repository_name", "repository_owner_name"], | ||
| ["repository.repository_name", "repository.repository_owner_name"], | ||
| ondelete="CASCADE", | ||
| ), | ||
| ForeignKeyConstraint( | ||
| [ | ||
| "repository_name", | ||
| "repository_owner_name", | ||
| "repository_workflow_run_id", | ||
| ], | ||
| [ | ||
| "repository_workflow_run.repository_name", | ||
| "repository_workflow_run.repository_owner_name", | ||
| "repository_workflow_run.repository_workflow_run_id", | ||
| ], | ||
| ondelete="CASCADE", | ||
| ), | ||
| ForeignKeyConstraint( | ||
| [ | ||
| "repository_name", | ||
| "repository_owner_name", | ||
| "repository_workflow_run_id", | ||
| "codebase_name", | ||
| ], | ||
| [ | ||
| "repository_agent_codebase_progress.repository_name", | ||
| "repository_agent_codebase_progress.repository_owner_name", | ||
| "repository_agent_codebase_progress.repository_workflow_run_id", | ||
| "repository_agent_codebase_progress.codebase_name", | ||
| ], | ||
| ondelete="CASCADE", | ||
| ), | ||
| Index( | ||
| "ix_repository_agent_event_run_codebase_order", | ||
| "repository_owner_name", | ||
| "repository_name", | ||
| "repository_workflow_run_id", | ||
| "codebase_name", | ||
| "event_id", | ||
| ), | ||
| ) | ||
|
|
||
| repository_name: Mapped[str] = mapped_column( | ||
| primary_key=True, comment="The name of the repository" | ||
| ) | ||
| repository_owner_name: Mapped[str] = mapped_column( | ||
| primary_key=True, comment="The name of the repository owner" | ||
| ) | ||
| repository_workflow_run_id: Mapped[str] = mapped_column( | ||
| primary_key=True, | ||
| comment="The run ID of the repository workflow this event belongs to", | ||
| ) | ||
| codebase_name: Mapped[str] = mapped_column( | ||
| primary_key=True, | ||
| comment="Codebase identifier/path relative to the repository root", | ||
| ) | ||
| event_id: Mapped[int] = mapped_column( | ||
| Integer, | ||
| primary_key=True, | ||
| comment="Monotonic event ID within a repository workflow run and codebase", | ||
| ) | ||
| event: Mapped[str] = mapped_column( | ||
| String, | ||
| nullable=False, | ||
| comment="Event namespace or agent name that emitted this row", | ||
| ) | ||
| phase: Mapped[str] = mapped_column( | ||
| String, | ||
| nullable=False, | ||
| comment="Lifecycle phase for the event (tool.call, tool.result, result)", | ||
| ) | ||
| message: Mapped[Optional[str]] = mapped_column( | ||
| String, | ||
| nullable=True, | ||
| default=None, | ||
| comment="Human-readable event message when present", | ||
| ) | ||
| tool_name: Mapped[Optional[str]] = mapped_column( | ||
| String, | ||
| nullable=True, | ||
| default=None, | ||
| comment="Tool name for tool-related events when present", | ||
| ) | ||
| tool_call_id: Mapped[Optional[str]] = mapped_column( | ||
| String, | ||
| nullable=True, | ||
| default=None, | ||
| comment="Tool call identifier when present", | ||
| ) | ||
| tool_args: Mapped[Optional[Dict[str, Any]]] = mapped_column( | ||
| JSONB, | ||
| nullable=True, | ||
| default=None, | ||
| comment="Structured tool arguments when available", | ||
| ) | ||
| tool_result_content: Mapped[Optional[str]] = mapped_column( | ||
| String, | ||
| nullable=True, | ||
| default=None, | ||
| comment="Captured tool result content when available", | ||
| ) | ||
| created_at: Mapped[datetime] = mapped_column( | ||
| DateTime(timezone=True), | ||
| default=func.now(), | ||
| nullable=False, | ||
| comment="Timestamp when the event row was inserted", | ||
| )` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/repo_models.py#L491-L570` — `class RepositoryAgentMdSnapshot(SQLBase): | ||
| """SQLModel for repository_agent_md_snapshot table in code_confluence schema.""" | ||
|
|
||
| __tablename__ = "repository_agent_md_snapshot" | ||
| __table_args__ = ( | ||
| ForeignKeyConstraint( | ||
| ["repository_name", "repository_owner_name"], | ||
| ["repository.repository_name", "repository.repository_owner_name"], | ||
| ondelete="CASCADE", | ||
| ), | ||
| ForeignKeyConstraint( | ||
| [ | ||
| "repository_name", | ||
| "repository_owner_name", | ||
| "repository_workflow_run_id", | ||
| ], | ||
| [ | ||
| "repository_workflow_run.repository_name", | ||
| "repository_workflow_run.repository_owner_name", | ||
| "repository_workflow_run.repository_workflow_run_id", | ||
| ], | ||
| ondelete="CASCADE", | ||
| ), | ||
| ) | ||
|
|
||
| repository_name: Mapped[str] = mapped_column( | ||
| primary_key=True, comment="The name of the repository" | ||
| ) | ||
| repository_owner_name: Mapped[str] = mapped_column( | ||
| primary_key=True, comment="The name of the repository owner" | ||
| ) | ||
| repository_workflow_run_id: Mapped[str] = mapped_column( | ||
| primary_key=True, | ||
| comment="The run ID of the repository workflow this snapshot belongs to", | ||
| ) | ||
| agent_md_output: Mapped[Dict[str, Any]] = mapped_column( | ||
| JSONB, | ||
| nullable=False, | ||
| comment="Complete final payload from agent execution containing per-codebase agent data", | ||
| ) | ||
| statistics: Mapped[Optional[Dict[str, Any]]] = mapped_column( | ||
| JSONB, | ||
| nullable=True, | ||
| default=None, | ||
| comment="Aggregated usage and pricing statistics for the latest agent workflow", | ||
| ) | ||
| overall_progress: Mapped[Optional[Decimal]] = mapped_column( | ||
| Numeric(5, 2), | ||
| nullable=True, | ||
| default=None, | ||
| comment="Cached overall progress percentage for fast polling", | ||
| ) | ||
| latest_event_at: Mapped[Optional[datetime]] = mapped_column( | ||
| DateTime(timezone=True), | ||
| nullable=True, | ||
| default=None, | ||
| comment="Timestamp of the most recent appended event for this run", | ||
| ) | ||
| created_at: Mapped[datetime] = mapped_column( | ||
| DateTime(timezone=True), | ||
| default=func.now(), | ||
| nullable=False, | ||
| comment="Timestamp when the row was first inserted", | ||
| ) | ||
| modified_at: Mapped[datetime] = mapped_column( | ||
| DateTime(timezone=True), | ||
| default=func.now(), | ||
| onupdate=func.now(), | ||
| nullable=False, | ||
| comment="Timestamp when the latest overwrite occurred", | ||
| ) | ||
| pr_metadata: Mapped[Optional[Dict[str, Any]]] = mapped_column( | ||
| JSONB, | ||
| nullable=True, | ||
| default=None, | ||
| comment="Persisted PR metadata from manual AGENTS.md PR creation/update", | ||
| ) | ||
|
|
||
| # Relationships | ||
| repository: Mapped["Repository"] = relationship(back_populates="agent_md_snapshot")` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-commons/src/unoplat_code_confluence_commons/workflow_envelopes.py` |
There was a problem hiding this comment.
Fix markdown structure warnings to keep this reference machine- and human-readable.
The file currently triggers multiple markdownlint issues (heading indentation/ordering/duplicates and emphasis-spacing). Please normalize heading syntax and list/code formatting so this authoritative index remains parseable.
🧰 Tools
🪛 LanguageTool
[typographical] ~146-~146: When punctuating reported speech in US English, the comma is usually placed before the closing quotation mark.
Context: ...description="Feature is a starting point", ) notes: Optional[str] = Field(...
(QUOTATION_MARKS_COMMA)
[uncategorized] ~824-~824: The official name of this software platform is spelled with a capital “H”.
Context: ...str]] = mapped_column(default=None) github_organization: Mapped[Optional[str]] = m...
(GITHUB)
[style] ~1080-~1080: In American English, abbreviations like “etc.” require a period.
Context: ...e programming language, package manager etc", ) # Relationships reposi...
(ETC_PERIOD)
🪛 markdownlint-cli2 (0.22.1)
[warning] 108-108: Spaces inside emphasis markers
(MD037, no-space-in-emphasis)
[warning] 202-202: Spaces inside emphasis markers
(MD037, no-space-in-emphasis)
[warning] 242-242: Headings must start at the beginning of the line
(MD023, heading-start-left)
[warning] 271-271: Headings must start at the beginning of the line
(MD023, heading-start-left)
[warning] 291-291: Headings must start at the beginning of the line
(MD023, heading-start-left)
[warning] 291-291: Multiple headings with the same content
(MD024, no-duplicate-heading)
[warning] 302-302: Spaces inside emphasis markers
(MD037, no-space-in-emphasis)
[warning] 435-435: Headings must start at the beginning of the line
(MD023, heading-start-left)
[warning] 445-445: Spaces inside emphasis markers
(MD037, no-space-in-emphasis)
[warning] 447-447: Headings must start at the beginning of the line
(MD023, heading-start-left)
[warning] 450-450: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3
(MD001, heading-increment)
[warning] 608-608: Headings must start at the beginning of the line
(MD023, heading-start-left)
[warning] 609-609: Multiple spaces after hash on atx style heading
(MD019, no-multiple-space-atx)
[warning] 609-609: Headings must start at the beginning of the line
(MD023, heading-start-left)
[warning] 610-610: Headings must start at the beginning of the line
(MD023, heading-start-left)
[warning] 713-713: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3
(MD001, heading-increment)
[warning] 1008-1008: Spaces inside emphasis markers
(MD037, no-space-in-emphasis)
[warning] 1036-1036: Headings must start at the beginning of the line
(MD023, heading-start-left)
[warning] 1083-1083: Headings must start at the beginning of the line
(MD023, heading-start-left)
[warning] 1083-1083: Multiple headings with the same content
(MD024, no-duplicate-heading)
[warning] 1160-1160: Headings must start at the beginning of the line
(MD023, heading-start-left)
[warning] 1160-1160: Multiple headings with the same content
(MD024, no-duplicate-heading)
[warning] 1241-1241: Headings must start at the beginning of the line
(MD023, heading-start-left)
[warning] 1241-1241: Multiple headings with the same content
(MD024, no-duplicate-heading)
[warning] 1533-1533: Headings must start at the beginning of the line
(MD023, heading-start-left)
[warning] 1533-1533: Multiple headings with the same content
(MD024, no-duplicate-heading)
[warning] 1536-1536: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3
(MD001, heading-increment)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@unoplat-code-confluence-commons/business_logic_references.md` around lines
108 - 1536, The markdown has structural/formatting issues (heading
ordering/indentation, duplicate headings, and emphasis/spacing) that break
machine parsing; update the document to use consistent ATX headings (#, ##, ###)
in correct semantic order, remove or merge duplicate headings, normalize list
and code block formatting (fenced triple-backticks for code snippets), and fix
emphasis spacing (no space between emphasis markers and text). Locate and
correct sections referencing the shown model/class names (e.g.,
FrameworkFeaturePayload, FrameworkFeature, FeatureAbsolutePath,
TypeScriptStructuralSignature, CodebaseConfig, Repository,
RepositoryWorkflowRun, CodebaseWorkflowRun) so their headings and lists are
consistent, then run markdownlint and iterate until no warnings remain.
| - **Package management**: Use `uv` as the package manager for this codebase. | ||
| - **pydantic**: Purpose: Python data validation library built around type annotations. It lets you define models to parse and validate input data, serialize outputs, and generate JSON Schema. | ||
| - **pytest**: Purpose: A Python testing framework for writing small, readable tests that also scales to complex functional testing for applications and libraries. It offers assertion introspection, automatic test discovery, fixtures, and a rich plugin ecosystem. | ||
| - **pytest-asyncio**: Purpose: A pytest plugin for testing asyncio code. It provides support for coroutine test functions and event-loop-aware async fixtures so you can await code inside your tests. | ||
| - **sqlalchemy**: Purpose: Python SQL toolkit and Object Relational Mapper for working with databases. Provides Core SQL expression/engine/connection services and ORM features for mapping Python objects to database schemas. | ||
| - **sqlmodel**: Purpose: SQLModel is a library for interacting with SQL databases from Python code using Python objects. It is built on Python type annotations and combines Pydantic and SQLAlchemy for a simple, type-friendly ORM experience. |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
pyproject_file=$(fd -a '^pyproject\.toml$' | rg 'unoplat-code-confluence-commons/pyproject.toml' | head -n1)
doc_file=$(fd -a '^dependencies_overview\.md$' | rg 'unoplat-code-confluence-commons/dependencies_overview.md' | head -n1)
echo "Using:"
echo " pyproject: $pyproject_file"
echo " doc: $doc_file"
python - <<'PY'
import re, pathlib, tomllib
pyproject = pathlib.Path("""'"$pyproject_file"'""")
doc = pathlib.Path("""'"$doc_file"'""")
data = tomllib.loads(pyproject.read_text())
deps = data.get("project", {}).get("dependencies", [])
names = []
for d in deps:
m = re.match(r'\s*([A-Za-z0-9_.-]+)', d)
if m:
names.append(m.group(1).lower())
doc_text = doc.read_text().lower()
missing = [n for n in names if f"**{n}**" not in doc_text]
print("Declared dependencies:", names)
print("Missing from dependencies_overview.md:", missing)
PYRepository: unoplat/unoplat-code-confluence
Length of output: 816
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Find the files with proper escaping
pyproject_path="unoplat-code-confluence-commons/pyproject.toml"
doc_path="unoplat-code-confluence-commons/dependencies_overview.md"
echo "=== Checking pyproject.toml for cryptography ==="
if grep -i "cryptography" "$pyproject_path" 2>/dev/null; then
echo "✓ Found cryptography in pyproject.toml"
else
echo "✗ cryptography not found in pyproject.toml"
fi
echo ""
echo "=== Checking dependencies_overview.md for cryptography ==="
if grep -i "cryptography" "$doc_path" 2>/dev/null; then
echo "✓ Found cryptography in dependencies_overview.md"
else
echo "✗ cryptography not found in dependencies_overview.md"
fi
echo ""
echo "=== Full dependencies from pyproject.toml ==="
cat "$pyproject_path" | grep -A 50 '^\[project\]' | grep -A 30 'dependencies'
echo ""
echo "=== Current dependencies_overview.md content ==="
cat "$doc_path"Repository: unoplat/unoplat-code-confluence
Length of output: 2148
Add missing runtime dependency to canonical catalog (cryptography).
dependencies_overview.md omits cryptography, which is declared as a dependency in unoplat-code-confluence-commons/pyproject.toml. This creates a gap in the source-of-truth dependency documentation.
🩹 Proposed doc fix
- **sqlmodel**: Purpose: SQLModel is a library for interacting with SQL databases from Python code using Python objects. It is built on Python type annotations and combines Pydantic and SQLAlchemy for a simple, type-friendly ORM experience.
+ - **cryptography**: Purpose: Python cryptography library providing secure primitives and recipes for encryption, signatures, key management, and X.509 handling.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - **Package management**: Use `uv` as the package manager for this codebase. | |
| - **pydantic**: Purpose: Python data validation library built around type annotations. It lets you define models to parse and validate input data, serialize outputs, and generate JSON Schema. | |
| - **pytest**: Purpose: A Python testing framework for writing small, readable tests that also scales to complex functional testing for applications and libraries. It offers assertion introspection, automatic test discovery, fixtures, and a rich plugin ecosystem. | |
| - **pytest-asyncio**: Purpose: A pytest plugin for testing asyncio code. It provides support for coroutine test functions and event-loop-aware async fixtures so you can await code inside your tests. | |
| - **sqlalchemy**: Purpose: Python SQL toolkit and Object Relational Mapper for working with databases. Provides Core SQL expression/engine/connection services and ORM features for mapping Python objects to database schemas. | |
| - **sqlmodel**: Purpose: SQLModel is a library for interacting with SQL databases from Python code using Python objects. It is built on Python type annotations and combines Pydantic and SQLAlchemy for a simple, type-friendly ORM experience. | |
| - **Package management**: Use `uv` as the package manager for this codebase. | |
| - **pydantic**: Purpose: Python data validation library built around type annotations. It lets you define models to parse and validate input data, serialize outputs, and generate JSON Schema. | |
| - **pytest**: Purpose: A Python testing framework for writing small, readable tests that also scales to complex functional testing for applications and libraries. It offers assertion introspection, automatic test discovery, fixtures, and a rich plugin ecosystem. | |
| - **pytest-asyncio**: Purpose: A pytest plugin for testing asyncio code. It provides support for coroutine test functions and event-loop-aware async fixtures so you can await code inside your tests. | |
| - **sqlalchemy**: Purpose: Python SQL toolkit and Object Relational Mapper for working with databases. Provides Core SQL expression/engine/connection services and ORM features for mapping Python objects to database schemas. | |
| - **sqlmodel**: Purpose: SQLModel is a library for interacting with SQL databases from Python code using Python objects. It is built on Python type annotations and combines Pydantic and SQLAlchemy for a simple, type-friendly ORM experience. | |
| - **cryptography**: Purpose: Python cryptography library providing secure primitives and recipes for encryption, signatures, key management, and X.509 handling. |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@unoplat-code-confluence-commons/dependencies_overview.md` around lines 3 - 8,
The dependencies_overview.md is missing the runtime dependency "cryptography"
that is declared in pyproject.toml; update dependencies_overview.md to include
an entry for cryptography describing its purpose (e.g., cryptographic
primitives, TLS, signing/encryption support) so the document matches the
canonical dependencies in pyproject.toml and call out that it's used at runtime;
ensure the new bullet follows the same format and style as the other package
entries.
| ## Engineering Workflow | ||
| ### Install | ||
| - `bun install` (config: `package.json`, working directory: repo root) | ||
|
|
||
| ### Build | ||
| - `bun run build` (config: `package.json`, working directory: repo root) | ||
|
|
||
| ### Dev | ||
| - `bun run dev` (config: `package.json`, working directory: repo root) | ||
|
|
||
| ### Test | ||
| - Not detected | ||
|
|
||
| ### Lint | ||
| - Not detected | ||
|
|
||
| ### Type Check | ||
| - `bun run types:check` (config: `package.json`, working directory: repo root) | ||
|
|
||
| ## Dependency Guide | ||
| See [`dependencies_overview.md`](./dependencies_overview.md) for the full dependency catalog and usage notes. | ||
|
|
||
| ## Business Logic Domain | ||
|
|
||
| The data models describe a documentation website’s content and presentation metadata. They cover configurable announcement banners (messaging, links, variants), changelog entries for product releases (titles, versions, dates, and GitHub release references), and SEO options for pages (title, description, path, and type). Overall, the domain centers on managing a docs site’s release communications, user-facing announcements, and search visibility. | ||
| The codebase primarily models a documentation site for Unoplat Code Confluence, centered on release communications and page metadata: banner announcements, changelog entries, SEO/canonical tags, and TanStack route structure for docs, changelog, and search pages. It also includes a reusable data-table filtering domain for typed column configs, operators, and faceted filtering across text, number, date, and option-based columns. | ||
|
|
||
| Key data models: | ||
| - `src/lib/banner-config.ts`: Announcement banner configuration (messaging, link metadata, and visual variants). | ||
| - `src/lib/changelog-utils.ts`: Structured changelog entries (titles, versions, dates, and GitHub release references). | ||
| - `src/lib/seo.ts`: SEO metadata for pages (title, description, path, and page type). | ||
| ## App Interfaces | ||
| See [`app_interfaces.md`](./app_interfaces.md) for the canonical interface and endpoint reference. |
There was a problem hiding this comment.
Resolve duplicate headings introduced by appended context block.
This section duplicates existing headings (Engineering Workflow, Dependency Guide, Business Logic Domain), which matches the MD024 warnings and can fail markdown linting.
🛠️ Suggested cleanup
-## Engineering Workflow
-...
-## Dependency Guide
-...
-## Business Logic Domain
-...
-## App Interfaces
-...
+<!-- Keep one canonical set of sections; remove or replace the earlier duplicated block -->🧰 Tools
🪛 markdownlint-cli2 (0.22.1)
[warning] 42-42: Multiple headings with the same content
(MD024, no-duplicate-heading)
[warning] 50-50: Multiple headings with the same content
(MD024, no-duplicate-heading)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@unoplat-code-confluence-docs/AGENTS.md` around lines 27 - 54, The file
contains duplicated top-level sections ("Engineering Workflow", "Dependency
Guide", "Business Logic Domain", "App Interfaces") introduced by an appended
context block; remove or consolidate the duplicate headings and their redundant
content so each heading appears only once (merge any unique lines under the
existing section rather than adding a second heading). Locate the duplicated
headings in AGENTS.md (look for the exact strings "Engineering Workflow",
"Dependency Guide", "Business Logic Domain", "App Interfaces") and either delete
the redundant block or merge its unique details into the original sections to
resolve MD024 lint warnings.
| - **Radix UI React Primitives**: Purpose: A low-level, unstyled React UI component library for building accessible design systems and web apps. The Separator primitive visually or semantically separates content, and the Slot utility merges props onto its immediate child to support `asChild` composition. | ||
| - **radix-ui**: Purpose: An open-source, low-level UI component library for building accessible design systems and web apps. It ships unstyled, fully-typed primitives with built-in accessibility, keyboard navigation, and tree-shakeable incremental adoption. |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
pkg=$(fd -a '^package\.json$' | rg 'unoplat-code-confluence-docs/package.json' | head -n1)
doc=$(fd -a '^dependencies_overview\.md$' | rg 'unoplat-code-confluence-docs/dependencies_overview.md' | head -n1)
echo "Using:"
echo " package.json: $pkg"
echo " doc: $doc"
python - <<'PY'
import json, pathlib, re
pkg = pathlib.Path("""'"$pkg"'""")
doc = pathlib.Path("""'"$doc"'""")
deps = json.loads(pkg.read_text()).get("dependencies", {})
radix_deps = sorted([k for k in deps if k.startswith("@radix-ui/")])
text = doc.read_text()
missing = [d for d in radix_deps if f"**{d}**" not in text]
print("Radix deps in package.json:", radix_deps)
print("Missing concrete entries in dependencies_overview.md:", missing)
PYRepository: unoplat/unoplat-code-confluence
Length of output: 803
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Read package.json dependencies
echo "=== Radix UI packages in package.json ==="
cat /home/jailuser/git/unoplat-code-confluence-docs/package.json | jq -r '.dependencies | keys[] | select(startswith("@radix-ui/"))' | sort
# Read dependencies_overview.md to see what's documented
echo ""
echo "=== Current entries in dependencies_overview.md (lines 20-30) ==="
sed -n '20,30p' /home/jailuser/git/unoplat-code-confluence-docs/dependencies_overview.md
echo ""
echo "=== Checking for `@radix-ui` entries in dependencies_overview.md ==="
grep -n "@radix-ui" /home/jailuser/git/unoplat-code-confluence-docs/dependencies_overview.md || echo "No `@radix-ui` entries found"
echo ""
echo "=== Checking for generic Radix entries in dependencies_overview.md ==="
grep -n "Radix" /home/jailuser/git/unoplat-code-confluence-docs/dependencies_overview.mdRepository: unoplat/unoplat-code-confluence
Length of output: 2826
Use concrete package names for Radix dependencies in the source-of-truth doc.
Lines 22–23 use generic labels ("Radix UI React Primitives" and "radix-ui") instead of listing the actual dependencies from package.json: @radix-ui/react-separator and @radix-ui/react-slot. This breaks auditability of the canonical dependency catalog.
🩹 Proposed doc adjustment
-- **Radix UI React Primitives**: Purpose: A low-level, unstyled React UI component library for building accessible design systems and web apps. The Separator primitive visually or semantically separates content, and the Slot utility merges props onto its immediate child to support `asChild` composition.
-- **radix-ui**: Purpose: An open-source, low-level UI component library for building accessible design systems and web apps. It ships unstyled, fully-typed primitives with built-in accessibility, keyboard navigation, and tree-shakeable incremental adoption.
+- **@radix-ui/react-separator**: Purpose: Radix UI primitive for visually or semantically separating content.
+- **@radix-ui/react-slot**: Purpose: Radix UI utility that merges props onto the immediate child to enable `asChild` composition.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - **Radix UI React Primitives**: Purpose: A low-level, unstyled React UI component library for building accessible design systems and web apps. The Separator primitive visually or semantically separates content, and the Slot utility merges props onto its immediate child to support `asChild` composition. | |
| - **radix-ui**: Purpose: An open-source, low-level UI component library for building accessible design systems and web apps. It ships unstyled, fully-typed primitives with built-in accessibility, keyboard navigation, and tree-shakeable incremental adoption. | |
| - **@radix-ui/react-separator**: Purpose: Radix UI primitive for visually or semantically separating content. | |
| - **@radix-ui/react-slot**: Purpose: Radix UI utility that merges props onto the immediate child to enable `asChild` composition. |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@unoplat-code-confluence-docs/dependencies_overview.md` around lines 22 - 23,
Replace the generic Radix labels with the actual package names in the
dependencies_overview.md entry: change "Radix UI React Primitives" / "radix-ui"
to the concrete packages `@radix-ui/react-separator` and `@radix-ui/react-slot` and
update their descriptions to match each package's purpose (Separator =
visual/semantic separator, Slot = props-merging/asChild composition). Ensure the
text exactly lists these package names so the audit trail matches package.json
and the document remains the canonical dependency catalog.
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/agent-feedback/api.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/agent-feedback/api.ts#L17-L21` — `AgentRatingPayload` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/agent-feedback/api.ts#L27-L35` — `AgentFeedbackSubmissionRequest` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/agent-feedback/schema.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/agent-feedback/schema.ts#L13-L14` — `SentimentRating` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/agent-feedback/schema.ts#L26-L27` — `FeedbackCategory` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/agent-feedback/schema.ts#L48-L49` — `AgentSentimentRating` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/agent-feedback/store.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/agent-feedback/store.ts#L15-L20` — `AgentFeedbackDraft` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/agent-feedback/store.ts#L25-L36` — `AgentFeedbackState` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/app-feedback/api.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/app-feedback/api.ts#L12-L19` — `AppFeedbackRequest` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/app-feedback/api.ts#L25-L28` — `AppFeedbackResponse` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/app-feedback/schema.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/app-feedback/schema.ts#L18-L19` — `AppFeedbackCategory` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/app-feedback/store.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/app-feedback/store.ts#L3-L8` — `AppFeedbackSheetState` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/model-config/provider-schema.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/model-config/provider-schema.ts#L65-L67` — `ProviderFieldPrimitive` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/model-config/provider-schema.ts#L69-L71` — `ProviderConfigFieldDefinition` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/model-config/schema-generator.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/model-config/schema-generator.ts#L167-L169` — `ProviderConfigInput` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/model-config/types.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/model-config/types.ts#L20-L28` — `ProviderFieldType` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/model-config/types.ts#L36-L39` — `ProviderFormValues` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/collection.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/collection.ts#L16-L20` — `RepositoryAgentSnapshotScope` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/collection.ts#L22-L25` — `RepositoryAgentCodebaseScope` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/collection.ts#L140-L142` — `RepositoryAgentSnapshotCollection` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/collection.ts#L143-L145` — `RepositoryAgentCodebaseProgressCollection` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/collection.ts#L146-L148` — `RepositoryAgentEventCollection` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/hooks.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/hooks.ts#L26-L34` — `UseRepositoryAgentSnapshotResult` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/hooks.ts#L36-L44` — `UseRepositoryAgentCodebaseProgressResult` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/hooks.ts#L46-L56` — `UseRepositoryAgentEventHistoryResult` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/schema.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/schema.ts#L36-L38` — `RepositoryAgentCodebaseProgressRow` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/schema.ts#L49-L51` — `AgentMdEngineeringWorkflowCommand` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/schema.ts#L57-L59` — `AgentMdEngineeringWorkflow` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/schema.ts#L78-L80` — `AgentMdDependencyGuideEntry` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/schema.ts#L87-L89` — `AgentMdDependencyGuide` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/schema.ts#L95-L97` — `AgentMdInterfaceMatchPattern` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/schema.ts#L105-L107` — `AgentMdInterfaceConstruct` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/schema.ts#L122-L124` — `AgentMdProgrammingLanguageMetadata` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/schema.ts#L200-L202` — `RepositoryAgentSnapshotRow` | ||
|
|
||
| ### `/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#L10-L13` — `RepositoryAgentCodebaseState` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/transformers.ts#L17-L26` — `ParsedRepositoryAgentSnapshot` | ||
|
|
||
| ### `/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` — `ToolConfigListResponse` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/forms/types.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/forms/types.ts#L6-L13` — `BaseFieldProps` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/hooks/use-data-table.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/hooks/use-data-table.ts#L45-L68` — `UseDataTableProps` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/hooks/useCodexOauth.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/hooks/useCodexOauth.ts#L10-L14` — `CodexOauthPopupResult` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/hooks/useSaveModelConfig.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/hooks/useSaveModelConfig.ts#L9-L12` — `SaveModelConfigVariables` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/hooks/useSaveModelConfig.ts#L14-L17` — `SaveModelConfigResponse` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/hooks/useSaveToolConfig.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/hooks/useSaveToolConfig.ts#L9-L12` — `SaveToolConfigVariables` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/hooks/useSaveToolConfig.ts#L14-L16` — `DeleteToolConfigVariables` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/agent-events-utils.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/agent-events-utils.ts#L321-L326` — `AgentGroupSummaryCounts` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/agent-md-to-markdown.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/agent-md-to-markdown.ts#L8-L10` — `AgentMdToMarkdownOptions` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L52-L55` — `ApiResponse` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L58-L60` — `FastApiErrorResponse` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L66-L71` — `ApiError` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L186-L191` — `FetchGitHubRepositoriesParams` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L416-L422` — `GitHubUser` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L500-L510` — `GithubIssueSubmissionRequest` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L515-L521` — `IssueTracking` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L620-L622` — `RepositoryWorkflowRunResponse` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L624-L628` — `RepositoryAgentRunCancelResponse` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L630-L634` — `RepositoryAgentMdPrRequest` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L636-L643` — `RepositoryAgentMdPrResponse` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L645-L648` — `RepositoryAgentMdPrStatusResponse` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L725-L731` — `RepositoryAgentSnapshotResponse` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L736-L740` — `RepositoryAgentSnapshot` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L782-L799` — `ModelConfigResponse` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L801-L804` — `DeleteModelConfigResponse` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L806-L811` — `CodexOAuthAuthorizeResponse` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L813-L815` — `CodexOAuthAuthorizeRequest` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L817-L820` — `CodexOAuthFlowStatusResponse` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L822-L827` — `CodexOAuthStatusResponse` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L829-L832` — `CodexOAuthDeleteResponse` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L837-L842` — `SaveModelConfigRequest` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api/repositories-api.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api/repositories-api.ts#L5-L10` — `FetchReposParams` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api/repository-provider-api.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api/repository-provider-api.ts#L31-L33` — `IngestTokenResponse` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api/repository-provider-api.ts#L35-L38` — `ApiErrorResponse` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/env.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/env.ts#L7-L32` — `Env` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/github-token-utils.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/github-token-utils.ts#L10-L13` — `BuildPatLinkOptions` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/utils/provider-route-utils.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/utils/provider-route-utils.ts#L6-L10` — `ProviderMetadata` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/utils/provider-utils.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/utils/provider-utils.ts#L147-L152` — `ProviderOption` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/validation/credential-schemas.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/validation/credential-schemas.ts#L101-L103` — `RepositoryRequestConfigData` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/routeTree.gen.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/routeTree.gen.ts#L85-L97` — `FileRoutesByFullPath` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/routeTree.gen.ts#L98-L109` — `FileRoutesByTo` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/routeTree.gen.ts#L110-L124` — `FileRoutesById` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/routeTree.gen.ts#L125-L166` — `FileRouteTypes` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/routeTree.gen.ts#L167-L172` — `RootRouteChildren` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/routeTree.gen.ts#L175-L260` — `FileRoutesByPath` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/routeTree.gen.ts#L263-L266` — `AppOnboardingRouteChildren` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/routeTree.gen.ts#L277-L284` — `AppRouteChildren` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/stores/useAuthStore.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/stores/useAuthStore.ts#L5-L9` — `AuthState` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/stores/useCommandPaletteStore.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/stores/useCommandPaletteStore.ts#L3-L8` — `CommandPaletteState` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/stores/useDevModeStore.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/stores/useDevModeStore.ts#L4-L7` — `DevModeState` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/stores/useThemeStore.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/stores/useThemeStore.ts#L6-L9` — `ThemeState` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L4-L10` — `GitHubRepoSummary` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L13-L19` — `RepositoryConfigDialogData` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L22-L27` — `RepositoryMetadata` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L30-L33` — `RepositorySelection` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L36-L41` — `IngestionStatus` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L43-L51` — `IngestionJob` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L53-L56` — `PaginationJson` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L58-L63` — `PaginatedResponse` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L65-L68` — `FlagResponse` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L71-L78` — `ProgrammingLanguageMetadata` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L80-L88` — `CodebaseConfig` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L91-L93` — `CodebaseMetadataResponse` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L96-L102` — `RepositoryRequestConfiguration` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L108-L117` — `CodebaseRepoConfig` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L119-L124` — `GitHubRepoResponseConfiguration` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L126-L128` — `CodebaseStatusSchema` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L135-L138` — `CompletedStage` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L141-L145` — `ApiResponse` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L151-L159` — `JobStatus` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L162-L165` — `RepositoryWorkflowOperation` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L168-L180` — `ParentWorkflowJobResponse` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L183-L185` — `ParentWorkflowJobListResponse` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L190-L196` — `IssueTracking` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L207-L211` — `ApiErrorReport` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L216-L232` — `UiErrorReport` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L235-L242` — `WorkflowRun` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L245-L253` — `FlattenedCodebaseRun` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L256-L259` — `WorkflowStatus` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L262-L265` — `CodebaseStatus` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L268-L270` — `CodebaseStatusList` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L273-L284` — `GithubRepoStatus` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L300-L304` — `IngestedRepository` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L306-L308` — `IngestedRepositoriesResponse` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L311-L316` — `RefreshRepositoryResponse` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/agent-events.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/agent-events.ts#L6-L12` — `AgentGroup` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/agent-events.ts#L17-L20` — `AgentEventsAccordionProps` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/agent-events.ts#L25-L28` — `ToolDetailItem` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/agent-events.ts#L33-L37` — `ToolDetailModalProps` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/agent-events.ts#L43-L47` — `AgentEventSingleDisplayItem` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/agent-events.ts#L49-L54` — `AgentEventToolPairDisplayItem` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/agent-events.ts#L56-L58` — `AgentEventDisplayItem` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/agent-events.ts#L63-L66` — `AgentEventItemProps` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/agent-events.ts#L71-L73` — `AgentGroupHeaderProps` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/agent-feedback.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/agent-feedback.ts#L21-L25` — `AgentRating` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/agent-feedback.ts#L30-L39` — `AgentFeedbackFormData` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/agent-feedback.ts#L49-L54` — `SentimentConfig` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/agent-feedback.ts#L83-L86` — `CategoryConfig` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/credential-enums.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/credential-enums.ts#L49-L55` — `CredentialParams` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/credential-enums.ts#L60-L62` — `TokenOperationParams` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/data-table.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/data-table.ts#L7-L9` — `TableMeta` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/data-table.ts#L12-L21` — `ColumnMeta` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/data-table.ts#L24-L30` — `QueryKeys` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/data-table.ts#L32-L37` — `Option` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/data-table.ts#L43-L45` — `ExtendedColumnSort` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/data-table.ts#L47-L49` — `ExtendedColumnFilter` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/data-table.ts#L51-L54` — `DataTableRowAction` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/index.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/index.ts#L1-L13` — `Repository` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/index.ts#L17-L19` — `RepositoryWithCategory` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/index.ts#L21-L26` — `RepositoryMetadata` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/index.ts#L28-L31` — `RepositorySelection` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/index.ts#L33-L38` — `IngestionStatus` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/index.ts#L40-L48` — `IngestionJob` | ||
|
|
||
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/repository-provider.ts` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/repository-provider.ts#L6-L8` — `RepositoryProvidersResponse` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/repository-provider.ts#L13-L17` — `RepositoryProviderFormData` | ||
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/repository-provider.ts#L22-L26` — `Provider` |
There was a problem hiding this comment.
Use repo-relative paths instead of machine-local absolute paths.
These references are currently bound to /opt/..., which is not portable across developer machines/CI and weakens navigability in rendered docs. Please switch entries to repository-relative paths (same style as app_interfaces.md) so links remain stable.
Suggested format adjustment
-### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/agent-feedback/api.ts`
-- `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/agent-feedback/api.ts#L17-L21` — `AgentRatingPayload`
+### `src/features/agent-feedback/api.ts`
+- `src/features/agent-feedback/api.ts#L17-L21` — `AgentRatingPayload`📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/agent-feedback/api.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/agent-feedback/api.ts#L17-L21` — `AgentRatingPayload` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/agent-feedback/api.ts#L27-L35` — `AgentFeedbackSubmissionRequest` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/agent-feedback/schema.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/agent-feedback/schema.ts#L13-L14` — `SentimentRating` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/agent-feedback/schema.ts#L26-L27` — `FeedbackCategory` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/agent-feedback/schema.ts#L48-L49` — `AgentSentimentRating` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/agent-feedback/store.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/agent-feedback/store.ts#L15-L20` — `AgentFeedbackDraft` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/agent-feedback/store.ts#L25-L36` — `AgentFeedbackState` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/app-feedback/api.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/app-feedback/api.ts#L12-L19` — `AppFeedbackRequest` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/app-feedback/api.ts#L25-L28` — `AppFeedbackResponse` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/app-feedback/schema.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/app-feedback/schema.ts#L18-L19` — `AppFeedbackCategory` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/app-feedback/store.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/app-feedback/store.ts#L3-L8` — `AppFeedbackSheetState` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/model-config/provider-schema.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/model-config/provider-schema.ts#L65-L67` — `ProviderFieldPrimitive` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/model-config/provider-schema.ts#L69-L71` — `ProviderConfigFieldDefinition` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/model-config/schema-generator.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/model-config/schema-generator.ts#L167-L169` — `ProviderConfigInput` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/model-config/types.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/model-config/types.ts#L20-L28` — `ProviderFieldType` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/model-config/types.ts#L36-L39` — `ProviderFormValues` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/collection.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/collection.ts#L16-L20` — `RepositoryAgentSnapshotScope` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/collection.ts#L22-L25` — `RepositoryAgentCodebaseScope` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/collection.ts#L140-L142` — `RepositoryAgentSnapshotCollection` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/collection.ts#L143-L145` — `RepositoryAgentCodebaseProgressCollection` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/collection.ts#L146-L148` — `RepositoryAgentEventCollection` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/hooks.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/hooks.ts#L26-L34` — `UseRepositoryAgentSnapshotResult` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/hooks.ts#L36-L44` — `UseRepositoryAgentCodebaseProgressResult` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/hooks.ts#L46-L56` — `UseRepositoryAgentEventHistoryResult` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/schema.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/schema.ts#L36-L38` — `RepositoryAgentCodebaseProgressRow` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/schema.ts#L49-L51` — `AgentMdEngineeringWorkflowCommand` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/schema.ts#L57-L59` — `AgentMdEngineeringWorkflow` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/schema.ts#L78-L80` — `AgentMdDependencyGuideEntry` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/schema.ts#L87-L89` — `AgentMdDependencyGuide` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/schema.ts#L95-L97` — `AgentMdInterfaceMatchPattern` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/schema.ts#L105-L107` — `AgentMdInterfaceConstruct` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/schema.ts#L122-L124` — `AgentMdProgrammingLanguageMetadata` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/schema.ts#L200-L202` — `RepositoryAgentSnapshotRow` | |
| ### `/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#L10-L13` — `RepositoryAgentCodebaseState` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/features/repository-agent-snapshots/transformers.ts#L17-L26` — `ParsedRepositoryAgentSnapshot` | |
| ### `/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` — `ToolConfigListResponse` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/forms/types.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/forms/types.ts#L6-L13` — `BaseFieldProps` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/hooks/use-data-table.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/hooks/use-data-table.ts#L45-L68` — `UseDataTableProps` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/hooks/useCodexOauth.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/hooks/useCodexOauth.ts#L10-L14` — `CodexOauthPopupResult` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/hooks/useSaveModelConfig.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/hooks/useSaveModelConfig.ts#L9-L12` — `SaveModelConfigVariables` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/hooks/useSaveModelConfig.ts#L14-L17` — `SaveModelConfigResponse` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/hooks/useSaveToolConfig.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/hooks/useSaveToolConfig.ts#L9-L12` — `SaveToolConfigVariables` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/hooks/useSaveToolConfig.ts#L14-L16` — `DeleteToolConfigVariables` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/agent-events-utils.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/agent-events-utils.ts#L321-L326` — `AgentGroupSummaryCounts` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/agent-md-to-markdown.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/agent-md-to-markdown.ts#L8-L10` — `AgentMdToMarkdownOptions` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L52-L55` — `ApiResponse` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L58-L60` — `FastApiErrorResponse` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L66-L71` — `ApiError` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L186-L191` — `FetchGitHubRepositoriesParams` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L416-L422` — `GitHubUser` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L500-L510` — `GithubIssueSubmissionRequest` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L515-L521` — `IssueTracking` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L620-L622` — `RepositoryWorkflowRunResponse` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L624-L628` — `RepositoryAgentRunCancelResponse` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L630-L634` — `RepositoryAgentMdPrRequest` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L636-L643` — `RepositoryAgentMdPrResponse` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L645-L648` — `RepositoryAgentMdPrStatusResponse` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L725-L731` — `RepositoryAgentSnapshotResponse` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L736-L740` — `RepositoryAgentSnapshot` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L782-L799` — `ModelConfigResponse` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L801-L804` — `DeleteModelConfigResponse` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L806-L811` — `CodexOAuthAuthorizeResponse` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L813-L815` — `CodexOAuthAuthorizeRequest` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L817-L820` — `CodexOAuthFlowStatusResponse` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L822-L827` — `CodexOAuthStatusResponse` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L829-L832` — `CodexOAuthDeleteResponse` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api.ts#L837-L842` — `SaveModelConfigRequest` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api/repositories-api.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api/repositories-api.ts#L5-L10` — `FetchReposParams` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api/repository-provider-api.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api/repository-provider-api.ts#L31-L33` — `IngestTokenResponse` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/api/repository-provider-api.ts#L35-L38` — `ApiErrorResponse` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/env.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/env.ts#L7-L32` — `Env` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/github-token-utils.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/github-token-utils.ts#L10-L13` — `BuildPatLinkOptions` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/utils/provider-route-utils.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/utils/provider-route-utils.ts#L6-L10` — `ProviderMetadata` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/utils/provider-utils.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/utils/provider-utils.ts#L147-L152` — `ProviderOption` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/validation/credential-schemas.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/lib/validation/credential-schemas.ts#L101-L103` — `RepositoryRequestConfigData` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/routeTree.gen.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/routeTree.gen.ts#L85-L97` — `FileRoutesByFullPath` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/routeTree.gen.ts#L98-L109` — `FileRoutesByTo` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/routeTree.gen.ts#L110-L124` — `FileRoutesById` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/routeTree.gen.ts#L125-L166` — `FileRouteTypes` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/routeTree.gen.ts#L167-L172` — `RootRouteChildren` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/routeTree.gen.ts#L175-L260` — `FileRoutesByPath` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/routeTree.gen.ts#L263-L266` — `AppOnboardingRouteChildren` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/routeTree.gen.ts#L277-L284` — `AppRouteChildren` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/stores/useAuthStore.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/stores/useAuthStore.ts#L5-L9` — `AuthState` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/stores/useCommandPaletteStore.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/stores/useCommandPaletteStore.ts#L3-L8` — `CommandPaletteState` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/stores/useDevModeStore.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/stores/useDevModeStore.ts#L4-L7` — `DevModeState` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/stores/useThemeStore.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/stores/useThemeStore.ts#L6-L9` — `ThemeState` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L4-L10` — `GitHubRepoSummary` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L13-L19` — `RepositoryConfigDialogData` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L22-L27` — `RepositoryMetadata` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L30-L33` — `RepositorySelection` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L36-L41` — `IngestionStatus` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L43-L51` — `IngestionJob` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L53-L56` — `PaginationJson` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L58-L63` — `PaginatedResponse` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L65-L68` — `FlagResponse` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L71-L78` — `ProgrammingLanguageMetadata` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L80-L88` — `CodebaseConfig` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L91-L93` — `CodebaseMetadataResponse` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L96-L102` — `RepositoryRequestConfiguration` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L108-L117` — `CodebaseRepoConfig` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L119-L124` — `GitHubRepoResponseConfiguration` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L126-L128` — `CodebaseStatusSchema` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L135-L138` — `CompletedStage` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L141-L145` — `ApiResponse` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L151-L159` — `JobStatus` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L162-L165` — `RepositoryWorkflowOperation` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L168-L180` — `ParentWorkflowJobResponse` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L183-L185` — `ParentWorkflowJobListResponse` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L190-L196` — `IssueTracking` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L207-L211` — `ApiErrorReport` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L216-L232` — `UiErrorReport` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L235-L242` — `WorkflowRun` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L245-L253` — `FlattenedCodebaseRun` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L256-L259` — `WorkflowStatus` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L262-L265` — `CodebaseStatus` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L268-L270` — `CodebaseStatusList` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L273-L284` — `GithubRepoStatus` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L300-L304` — `IngestedRepository` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L306-L308` — `IngestedRepositoriesResponse` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types.ts#L311-L316` — `RefreshRepositoryResponse` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/agent-events.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/agent-events.ts#L6-L12` — `AgentGroup` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/agent-events.ts#L17-L20` — `AgentEventsAccordionProps` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/agent-events.ts#L25-L28` — `ToolDetailItem` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/agent-events.ts#L33-L37` — `ToolDetailModalProps` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/agent-events.ts#L43-L47` — `AgentEventSingleDisplayItem` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/agent-events.ts#L49-L54` — `AgentEventToolPairDisplayItem` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/agent-events.ts#L56-L58` — `AgentEventDisplayItem` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/agent-events.ts#L63-L66` — `AgentEventItemProps` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/agent-events.ts#L71-L73` — `AgentGroupHeaderProps` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/agent-feedback.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/agent-feedback.ts#L21-L25` — `AgentRating` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/agent-feedback.ts#L30-L39` — `AgentFeedbackFormData` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/agent-feedback.ts#L49-L54` — `SentimentConfig` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/agent-feedback.ts#L83-L86` — `CategoryConfig` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/credential-enums.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/credential-enums.ts#L49-L55` — `CredentialParams` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/credential-enums.ts#L60-L62` — `TokenOperationParams` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/data-table.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/data-table.ts#L7-L9` — `TableMeta` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/data-table.ts#L12-L21` — `ColumnMeta` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/data-table.ts#L24-L30` — `QueryKeys` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/data-table.ts#L32-L37` — `Option` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/data-table.ts#L43-L45` — `ExtendedColumnSort` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/data-table.ts#L47-L49` — `ExtendedColumnFilter` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/data-table.ts#L51-L54` — `DataTableRowAction` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/index.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/index.ts#L1-L13` — `Repository` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/index.ts#L17-L19` — `RepositoryWithCategory` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/index.ts#L21-L26` — `RepositoryMetadata` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/index.ts#L28-L31` — `RepositorySelection` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/index.ts#L33-L38` — `IngestionStatus` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/index.ts#L40-L48` — `IngestionJob` | |
| ### `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/repository-provider.ts` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/repository-provider.ts#L6-L8` — `RepositoryProvidersResponse` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/repository-provider.ts#L13-L17` — `RepositoryProviderFormData` | |
| - `/opt/unoplat/repositories/unoplat-code-confluence/unoplat-code-confluence-frontend/src/types/repository-provider.ts#L22-L26` — `Provider` | |
| ### `src/features/agent-feedback/api.ts` | |
| - `src/features/agent-feedback/api.ts#L17-L21` — `AgentRatingPayload` | |
| - `src/features/agent-feedback/api.ts#L27-L35` — `AgentFeedbackSubmissionRequest` | |
| ### `src/features/agent-feedback/schema.ts` | |
| - `src/features/agent-feedback/schema.ts#L13-L14` — `SentimentRating` | |
| - `src/features/agent-feedback/schema.ts#L26-L27` — `FeedbackCategory` | |
| - `src/features/agent-feedback/schema.ts#L48-L49` — `AgentSentimentRating` | |
| ### `src/features/agent-feedback/store.ts` | |
| - `src/features/agent-feedback/store.ts#L15-L20` — `AgentFeedbackDraft` | |
| - `src/features/agent-feedback/store.ts#L25-L36` — `AgentFeedbackState` | |
| ### `src/features/app-feedback/api.ts` | |
| - `src/features/app-feedback/api.ts#L12-L19` — `AppFeedbackRequest` | |
| - `src/features/app-feedback/api.ts#L25-L28` — `AppFeedbackResponse` | |
| ### `src/features/app-feedback/schema.ts` | |
| - `src/features/app-feedback/schema.ts#L18-L19` — `AppFeedbackCategory` | |
| ### `src/features/app-feedback/store.ts` | |
| - `src/features/app-feedback/store.ts#L3-L8` — `AppFeedbackSheetState` | |
| ### `src/features/model-config/provider-schema.ts` | |
| - `src/features/model-config/provider-schema.ts#L65-L67` — `ProviderFieldPrimitive` | |
| - `src/features/model-config/provider-schema.ts#L69-L71` — `ProviderConfigFieldDefinition` | |
| ### `src/features/model-config/schema-generator.ts` | |
| - `src/features/model-config/schema-generator.ts#L167-L169` — `ProviderConfigInput` | |
| ### `src/features/model-config/types.ts` | |
| - `src/features/model-config/types.ts#L20-L28` — `ProviderFieldType` | |
| - `src/features/model-config/types.ts#L36-L39` — `ProviderFormValues` | |
| ### `src/features/repository-agent-snapshots/collection.ts` | |
| - `src/features/repository-agent-snapshots/collection.ts#L16-L20` — `RepositoryAgentSnapshotScope` | |
| - `src/features/repository-agent-snapshots/collection.ts#L22-L25` — `RepositoryAgentCodebaseScope` | |
| - `src/features/repository-agent-snapshots/collection.ts#L140-L142` — `RepositoryAgentSnapshotCollection` | |
| - `src/features/repository-agent-snapshots/collection.ts#L143-L145` — `RepositoryAgentCodebaseProgressCollection` | |
| - `src/features/repository-agent-snapshots/collection.ts#L146-L148` — `RepositoryAgentEventCollection` | |
| ### `src/features/repository-agent-snapshots/hooks.ts` | |
| - `src/features/repository-agent-snapshots/hooks.ts#L26-L34` — `UseRepositoryAgentSnapshotResult` | |
| - `src/features/repository-agent-snapshots/hooks.ts#L36-L44` — `UseRepositoryAgentCodebaseProgressResult` | |
| - `src/features/repository-agent-snapshots/hooks.ts#L46-L56` — `UseRepositoryAgentEventHistoryResult` | |
| ### `src/features/repository-agent-snapshots/schema.ts` | |
| - `src/features/repository-agent-snapshots/schema.ts#L36-L38` — `RepositoryAgentCodebaseProgressRow` | |
| - `src/features/repository-agent-snapshots/schema.ts#L49-L51` — `AgentMdEngineeringWorkflowCommand` | |
| - `src/features/repository-agent-snapshots/schema.ts#L57-L59` — `AgentMdEngineeringWorkflow` | |
| - `src/features/repository-agent-snapshots/schema.ts#L78-L80` — `AgentMdDependencyGuideEntry` | |
| - `src/features/repository-agent-snapshots/schema.ts#L87-L89` — `AgentMdDependencyGuide` | |
| - `src/features/repository-agent-snapshots/schema.ts#L95-L97` — `AgentMdInterfaceMatchPattern` | |
| - `src/features/repository-agent-snapshots/schema.ts#L105-L107` — `AgentMdInterfaceConstruct` | |
| - `src/features/repository-agent-snapshots/schema.ts#L122-L124` — `AgentMdProgrammingLanguageMetadata` | |
| - `src/features/repository-agent-snapshots/schema.ts#L200-L202` — `RepositoryAgentSnapshotRow` | |
| ### `src/features/repository-agent-snapshots/transformers.ts` | |
| - `src/features/repository-agent-snapshots/transformers.ts#L10-L13` — `RepositoryAgentCodebaseState` | |
| - `src/features/repository-agent-snapshots/transformers.ts#L17-L26` — `ParsedRepositoryAgentSnapshot` | |
| ### `src/features/tool-config/types.ts` | |
| - `src/features/tool-config/types.ts#L35-L37` — `ToolConfigListResponse` | |
| ### `src/forms/types.ts` | |
| - `src/forms/types.ts#L6-L13` — `BaseFieldProps` | |
| ### `src/hooks/use-data-table.ts` | |
| - `src/hooks/use-data-table.ts#L45-L68` — `UseDataTableProps` | |
| ### `src/hooks/useCodexOauth.ts` | |
| - `src/hooks/useCodexOauth.ts#L10-L14` — `CodexOauthPopupResult` | |
| ### `src/hooks/useSaveModelConfig.ts` | |
| - `src/hooks/useSaveModelConfig.ts#L9-L12` — `SaveModelConfigVariables` | |
| - `src/hooks/useSaveModelConfig.ts#L14-L17` — `SaveModelConfigResponse` | |
| ### `src/hooks/useSaveToolConfig.ts` | |
| - `src/hooks/useSaveToolConfig.ts#L9-L12` — `SaveToolConfigVariables` | |
| - `src/hooks/useSaveToolConfig.ts#L14-L16` — `DeleteToolConfigVariables` | |
| ### `src/lib/agent-events-utils.ts` | |
| - `src/lib/agent-events-utils.ts#L321-L326` — `AgentGroupSummaryCounts` | |
| ### `src/lib/agent-md-to-markdown.ts` | |
| - `src/lib/agent-md-to-markdown.ts#L8-L10` — `AgentMdToMarkdownOptions` | |
| ### `src/lib/api.ts` | |
| - `src/lib/api.ts#L52-L55` — `ApiResponse` | |
| - `src/lib/api.ts#L58-L60` — `FastApiErrorResponse` | |
| - `src/lib/api.ts#L66-L71` — `ApiError` | |
| - `src/lib/api.ts#L186-L191` — `FetchGitHubRepositoriesParams` | |
| - `src/lib/api.ts#L416-L422` — `GitHubUser` | |
| - `src/lib/api.ts#L500-L510` — `GithubIssueSubmissionRequest` | |
| - `src/lib/api.ts#L515-L521` — `IssueTracking` | |
| - `src/lib/api.ts#L620-L622` — `RepositoryWorkflowRunResponse` | |
| - `src/lib/api.ts#L624-L628` — `RepositoryAgentRunCancelResponse` | |
| - `src/lib/api.ts#L630-L634` — `RepositoryAgentMdPrRequest` | |
| - `src/lib/api.ts#L636-L643` — `RepositoryAgentMdPrResponse` | |
| - `src/lib/api.ts#L645-L648` — `RepositoryAgentMdPrStatusResponse` | |
| - `src/lib/api.ts#L725-L731` — `RepositoryAgentSnapshotResponse` | |
| - `src/lib/api.ts#L736-L740` — `RepositoryAgentSnapshot` | |
| - `src/lib/api.ts#L782-L799` — `ModelConfigResponse` | |
| - `src/lib/api.ts#L801-L804` — `DeleteModelConfigResponse` | |
| - `src/lib/api.ts#L806-L811` — `CodexOAuthAuthorizeResponse` | |
| - `src/lib/api.ts#L813-L815` — `CodexOAuthAuthorizeRequest` | |
| - `src/lib/api.ts#L817-L820` — `CodexOAuthFlowStatusResponse` | |
| - `src/lib/api.ts#L822-L827` — `CodexOAuthStatusResponse` | |
| - `src/lib/api.ts#L829-L832` — `CodexOAuthDeleteResponse` | |
| - `src/lib/api.ts#L837-L842` — `SaveModelConfigRequest` | |
| ### `src/lib/api/repositories-api.ts` | |
| - `src/lib/api/repositories-api.ts#L5-L10` — `FetchReposParams` | |
| ### `src/lib/api/repository-provider-api.ts` | |
| - `src/lib/api/repository-provider-api.ts#L31-L33` — `IngestTokenResponse` | |
| - `src/lib/api/repository-provider-api.ts#L35-L38` — `ApiErrorResponse` | |
| ### `src/lib/env.ts` | |
| - `src/lib/env.ts#L7-L32` — `Env` | |
| ### `src/lib/github-token-utils.ts` | |
| - `src/lib/github-token-utils.ts#L10-L13` — `BuildPatLinkOptions` | |
| ### `src/lib/utils/provider-route-utils.ts` | |
| - `src/lib/utils/provider-route-utils.ts#L6-L10` — `ProviderMetadata` | |
| ### `src/lib/utils/provider-utils.ts` | |
| - `src/lib/utils/provider-utils.ts#L147-L152` — `ProviderOption` | |
| ### `src/lib/validation/credential-schemas.ts` | |
| - `src/lib/validation/credential-schemas.ts#L101-L103` — `RepositoryRequestConfigData` | |
| ### `src/routeTree.gen.ts` | |
| - `src/routeTree.gen.ts#L85-L97` — `FileRoutesByFullPath` | |
| - `src/routeTree.gen.ts#L98-L109` — `FileRoutesByTo` | |
| - `src/routeTree.gen.ts#L110-L124` — `FileRoutesById` | |
| - `src/routeTree.gen.ts#L125-L166` — `FileRouteTypes` | |
| - `src/routeTree.gen.ts#L167-L172` — `RootRouteChildren` | |
| - `src/routeTree.gen.ts#L175-L260` — `FileRoutesByPath` | |
| - `src/routeTree.gen.ts#L263-L266` — `AppOnboardingRouteChildren` | |
| - `src/routeTree.gen.ts#L277-L284` — `AppRouteChildren` | |
| ### `src/stores/useAuthStore.ts` | |
| - `src/stores/useAuthStore.ts#L5-L9` — `AuthState` | |
| ### `src/stores/useCommandPaletteStore.ts` | |
| - `src/stores/useCommandPaletteStore.ts#L3-L8` — `CommandPaletteState` | |
| ### `src/stores/useDevModeStore.ts` | |
| - `src/stores/useDevModeStore.ts#L4-L7` — `DevModeState` | |
| ### `src/stores/useThemeStore.ts` | |
| - `src/stores/useThemeStore.ts#L6-L9` — `ThemeState` | |
| ### `src/types.ts` | |
| - `src/types.ts#L4-L10` — `GitHubRepoSummary` | |
| - `src/types.ts#L13-L19` — `RepositoryConfigDialogData` | |
| - `src/types.ts#L22-L27` — `RepositoryMetadata` | |
| - `src/types.ts#L30-L33` — `RepositorySelection` | |
| - `src/types.ts#L36-L41` — `IngestionStatus` | |
| - `src/types.ts#L43-L51` — `IngestionJob` | |
| - `src/types.ts#L53-L56` — `PaginationJson` | |
| - `src/types.ts#L58-L63` — `PaginatedResponse` | |
| - `src/types.ts#L65-L68` — `FlagResponse` | |
| - `src/types.ts#L71-L78` — `ProgrammingLanguageMetadata` | |
| - `src/types.ts#L80-L88` — `CodebaseConfig` | |
| - `src/types.ts#L91-L93` — `CodebaseMetadataResponse` | |
| - `src/types.ts#L96-L102` — `RepositoryRequestConfiguration` | |
| - `src/types.ts#L108-L117` — `CodebaseRepoConfig` | |
| - `src/types.ts#L119-L124` — `GitHubRepoResponseConfiguration` | |
| - `src/types.ts#L126-L128` — `CodebaseStatusSchema` | |
| - `src/types.ts#L135-L138` — `CompletedStage` | |
| - `src/types.ts#L141-L145` — `ApiResponse` | |
| - `src/types.ts#L151-L159` — `JobStatus` | |
| - `src/types.ts#L162-L165` — `RepositoryWorkflowOperation` | |
| - `src/types.ts#L168-L180` — `ParentWorkflowJobResponse` | |
| - `src/types.ts#L183-L185` — `ParentWorkflowJobListResponse` | |
| - `src/types.ts#L190-L196` — `IssueTracking` | |
| - `src/types.ts#L207-L211` — `ApiErrorReport` | |
| - `src/types.ts#L216-L232` — `UiErrorReport` | |
| - `src/types.ts#L235-L242` — `WorkflowRun` | |
| - `src/types.ts#L245-L253` — `FlattenedCodebaseRun` | |
| - `src/types.ts#L256-L259` — `WorkflowStatus` | |
| - `src/types.ts#L262-L265` — `CodebaseStatus` | |
| - `src/types.ts#L268-L270` — `CodebaseStatusList` | |
| - `src/types.ts#L273-L284` — `GithubRepoStatus` | |
| - `src/types.ts#L300-L304` — `IngestedRepository` | |
| - `src/types.ts#L306-L308` — `IngestedRepositoriesResponse` | |
| - `src/types.ts#L311-L316` — `RefreshRepositoryResponse` | |
| ### `src/types/agent-events.ts` | |
| - `src/types/agent-events.ts#L6-L12` — `AgentGroup` | |
| - `src/types/agent-events.ts#L17-L20` — `AgentEventsAccordionProps` | |
| - `src/types/agent-events.ts#L25-L28` — `ToolDetailItem` | |
| - `src/types/agent-events.ts#L33-L37` — `ToolDetailModalProps` | |
| - `src/types/agent-events.ts#L43-L47` — `AgentEventSingleDisplayItem` | |
| - `src/types/agent-events.ts#L49-L54` — `AgentEventToolPairDisplayItem` | |
| - `src/types/agent-events.ts#L56-L58` — `AgentEventDisplayItem` | |
| - `src/types/agent-events.ts#L63-L66` — `AgentEventItemProps` | |
| - `src/types/agent-events.ts#L71-L73` — `AgentGroupHeaderProps` | |
| ### `src/types/agent-feedback.ts` | |
| - `src/types/agent-feedback.ts#L21-L25` — `AgentRating` | |
| - `src/types/agent-feedback.ts#L30-L39` — `AgentFeedbackFormData` | |
| - `src/types/agent-feedback.ts#L49-L54` — `SentimentConfig` | |
| - `src/types/agent-feedback.ts#L83-L86` — `CategoryConfig` | |
| ### `src/types/credential-enums.ts` | |
| - `src/types/credential-enums.ts#L49-L55` — `CredentialParams` | |
| - `src/types/credential-enums.ts#L60-L62` — `TokenOperationParams` | |
| ### `src/types/data-table.ts` | |
| - `src/types/data-table.ts#L7-L9` — `TableMeta` | |
| - `src/types/data-table.ts#L12-L21` — `ColumnMeta` | |
| - `src/types/data-table.ts#L24-L30` — `QueryKeys` | |
| - `src/types/data-table.ts#L32-L37` — `Option` | |
| - `src/types/data-table.ts#L43-L45` — `ExtendedColumnSort` | |
| - `src/types/data-table.ts#L47-L49` — `ExtendedColumnFilter` | |
| - `src/types/data-table.ts#L51-L54` — `DataTableRowAction` | |
| ### `src/types/index.ts` | |
| - `src/types/index.ts#L1-L13` — `Repository` | |
| - `src/types/index.ts#L17-L19` — `RepositoryWithCategory` | |
| - `src/types/index.ts#L21-L26` — `RepositoryMetadata` | |
| - `src/types/index.ts#L28-L31` — `RepositorySelection` | |
| - `src/types/index.ts#L33-L38` — `IngestionStatus` | |
| - `src/types/index.ts#L40-L48` — `IngestionJob` | |
| ### `src/types/repository-provider.ts` | |
| - `src/types/repository-provider.ts#L6-L8` — `RepositoryProvidersResponse` | |
| - `src/types/repository-provider.ts#L13-L17` — `RepositoryProviderFormData` | |
| - `src/types/repository-provider.ts#L22-L26` — `Provider` |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@unoplat-code-confluence-frontend/business_logic_references.md` around lines 7
- 239, The document uses machine-local absolute paths (e.g. entries like
`/opt/.../unoplat-code-confluence-frontend/src/features/agent-feedback/api.ts#L17-L21`)
which must be replaced with repo-relative paths (e.g.
`src/features/agent-feedback/api.ts#L17-L21`) for portability; edit
business_logic_references.md and update every listed entry (all occurrences
referencing src/features/agent-feedback/*, src/features/app-feedback/*,
src/features/model-config/*, src/features/repository-agent-snapshots/*,
src/lib/*, src/types.* and others shown in the diff) to use repository-relative
paths and match the link style used in app_interfaces.md so anchors and
filenames remain stable across machines.
| - **clsx**: Purpose: A tiny utility for constructing `className` strings conditionally. It accepts strings, arrays, objects, booleans, and other mixed inputs, discarding falsey values; it’s also a smaller drop-in replacement for `classnames`. | ||
| - **cmdk**: Purpose: A React command menu component that can also be used as an accessible combobox. It renders items and automatically filters/sorts them, with a fully composable API. | ||
| - **date-fns**: Purpose: A modern JavaScript/TypeScript date utility library for manipulating dates in a browser and Node.js. It provides a comprehensive, consistent set of small, functional helpers for working with native JavaScript Date objects. | ||
| - **dnd kit**: Purpose: A modern toolkit for building drag-and-drop interfaces with first-class TypeScript support. It provides core drag-and-drop primitives, plus sortable and utility packages for reordering and customization. |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
pkg=$(fd -a '^package\.json$' | rg 'unoplat-code-confluence-frontend/package.json' | head -n1)
doc=$(fd -a '^dependencies_overview\.md$' | rg 'unoplat-code-confluence-frontend/dependencies_overview.md' | head -n1)
echo "Using:"
echo " package.json: $pkg"
echo " doc: $doc"
python - <<'PY'
import json, pathlib
pkg = pathlib.Path("""'"$pkg"'""")
doc = pathlib.Path("""'"$doc"'""").read_text()
deps = json.loads(pkg.read_text()).get("dependencies", {})
dnd = sorted([k for k in deps if "dnd" in k.lower()])
print("DND-related package.json deps:", dnd)
print("Has literal '**dnd kit**' doc entry:", "**dnd kit**" in doc.lower())
PYRepository: unoplat/unoplat-code-confluence
Length of output: 811
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Find and read package.json
pkg_file=$(fd -a '^package\.json$' unoplat-code-confluence-frontend/ | head -n1)
echo "=== Package.json ==="
cat "$pkg_file" | jq '.dependencies | keys[] | select(contains("dnd") or contains("kit"))' 2>/dev/null || echo "No dnd/kit packages found"
# Find and read dependencies_overview.md, specifically around line 26
doc_file=$(fd -a '^dependencies_overview\.md$' unoplat-code-confluence-frontend/ | head -n1)
echo ""
echo "=== Line 26 from dependencies_overview.md ==="
sed -n '26p' "$doc_file"
echo ""
echo "=== Lines 24-28 for context ==="
sed -n '24,28p' "$doc_file"Repository: unoplat/unoplat-code-confluence
Length of output: 1556
Use actual npm package identifiers for dnd-kit dependencies.
Line 26 lists dnd kit as a single package, but the actual installed packages are @dnd-kit/core, @dnd-kit/sortable, and @dnd-kit/utilities. Since dependencies_overview.md serves as the source-of-truth dependency catalog, entries must use concrete package identifiers. Either list the packages separately with their individual purposes or consolidate under the actual scoped package names with a note that it includes multiple sub-packages.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@unoplat-code-confluence-frontend/dependencies_overview.md` at line 26,
Replace the vague "dnd kit" entry with the actual npm package identifiers: list
`@dnd-kit/core`, `@dnd-kit/sortable`, and `@dnd-kit/utilities` (or consolidate under
the scoped `@dnd-kit` name with a parenthetical that it consists of these
sub-packages) and update the purpose text to map each package to its role (e.g.,
`@dnd-kit/core` = core drag-and-drop primitives, `@dnd-kit/sortable` =
reordering/sortable utilities, `@dnd-kit/utilities` = helper utilities) so the
dependencies_overview.md contains concrete package names and per-package
purposes.
| - `tests/test_data/framework_samples/code_confluence_flow_bridge/github_app/router.py`: L154: @router.get( "/app-manifest/callback", response_model=ManifestConversionResponse, status_code=status.HTTP_200_OK, ) | ||
| - `tests/test_data/framework_samples/code_confluence_flow_bridge/github_app/router.py`: L255: @router.post( "/webhook", status_code=status.HTTP_202_ACCEPTED, ) | ||
| - `tests/test_data/framework_samples/code_confluence_flow_bridge/github_app/router.py`: L64: @router.post( "/app-manifest", response_model=ManifestGenerationResponse, status_code=status.HTTP_201_CREATED, ) | ||
| - `tests/test_data/framework_samples/code_confluence_flow_bridge/main.py`: L10: @app.get("/health") | ||
| - `tests/test_data/framework_samples/code_confluence_flow_bridge/main.py`: L16: @app.post("/echo") | ||
|
|
There was a problem hiding this comment.
Exclude test fixture routes from canonical inbound interface inventory.
tests/test_data/framework_samples/... entries are test artifacts, not runtime app interfaces. Keeping them here makes the canonical endpoint catalog inaccurate.
✂️ Proposed fix
-- `tests/test_data/framework_samples/code_confluence_flow_bridge/github_app/router.py`: L154: `@router.get`( "/app-manifest/callback", response_model=ManifestConversionResponse, status_code=status.HTTP_200_OK, )
-- `tests/test_data/framework_samples/code_confluence_flow_bridge/github_app/router.py`: L255: `@router.post`( "/webhook", status_code=status.HTTP_202_ACCEPTED, )
-- `tests/test_data/framework_samples/code_confluence_flow_bridge/github_app/router.py`: L64: `@router.post`( "/app-manifest", response_model=ManifestGenerationResponse, status_code=status.HTTP_201_CREATED, )
-- `tests/test_data/framework_samples/code_confluence_flow_bridge/main.py`: L10: `@app.get`("/health")
-- `tests/test_data/framework_samples/code_confluence_flow_bridge/main.py`: L16: `@app.post`("/echo")Based on learnings: Reference app_interfaces.md as the canonical interface and endpoint reference for all app interfaces.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - `tests/test_data/framework_samples/code_confluence_flow_bridge/github_app/router.py`: L154: @router.get( "/app-manifest/callback", response_model=ManifestConversionResponse, status_code=status.HTTP_200_OK, ) | |
| - `tests/test_data/framework_samples/code_confluence_flow_bridge/github_app/router.py`: L255: @router.post( "/webhook", status_code=status.HTTP_202_ACCEPTED, ) | |
| - `tests/test_data/framework_samples/code_confluence_flow_bridge/github_app/router.py`: L64: @router.post( "/app-manifest", response_model=ManifestGenerationResponse, status_code=status.HTTP_201_CREATED, ) | |
| - `tests/test_data/framework_samples/code_confluence_flow_bridge/main.py`: L10: @app.get("/health") | |
| - `tests/test_data/framework_samples/code_confluence_flow_bridge/main.py`: L16: @app.post("/echo") |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@unoplat-code-confluence-ingestion/code-confluence-flow-bridge/app_interfaces.md`
around lines 31 - 36, Remove the test fixture routes listed in app_interfaces.md
that reference tests/test_data/framework_samples (the entries for
github_app/router.py L154, L255, L64 and main.py L10, L16) and regenerate the
canonical interface inventory; update the inventory-generation/filtering logic
(wherever routes are aggregated) to exclude any paths matching the pattern
"tests/test_data/" or similar test-fixture directories so future runs don't
reintroduce these entries, and verify by running the generator to confirm only
real runtime app endpoints remain.
| ### Build | ||
| - Not detected | ||
| ### Dev | ||
| - `CODE_CONFLUENCE_BRIDGE_URL=http://localhost:8000 TOKEN_ENCRYPTION_KEY=0PiVvlu6HExNWkYjukuG0CAV930B4OsqXNPItAvsxhQ= MCP_SERVERS_CONFIG_PATH=../../mcp-servers.json CODEX_OPENAI_CALLBACK_PORT=1455 CODEX_OPENAI_REDIRECT_URI=http://localhost:1455/auth/callback uv run fastapi dev --port 8001` (working directory: `src/unoplat_code_confluence_query_engine`; config: `Taskfile.yml`) |
There was a problem hiding this comment.
Remove the hard-coded encryption key from docs immediately.
Line 78 embeds a concrete TOKEN_ENCRYPTION_KEY value. Even in documentation, this is sensitive material and should be replaced with an environment placeholder.
Redaction fix
-- `CODE_CONFLUENCE_BRIDGE_URL=http://localhost:8000 TOKEN_ENCRYPTION_KEY=0PiVvlu6HExNWkYjukuG0CAV930B4OsqXNPItAvsxhQ= MCP_SERVERS_CONFIG_PATH=../../mcp-servers.json CODEX_OPENAI_CALLBACK_PORT=1455 CODEX_OPENAI_REDIRECT_URI=http://localhost:1455/auth/callback uv run fastapi dev --port 8001` (working directory: `src/unoplat_code_confluence_query_engine`; config: `Taskfile.yml`)
+- `CODE_CONFLUENCE_BRIDGE_URL=http://localhost:8000 TOKEN_ENCRYPTION_KEY=$TOKEN_ENCRYPTION_KEY MCP_SERVERS_CONFIG_PATH=../../mcp-servers.json CODEX_OPENAI_CALLBACK_PORT=1455 CODEX_OPENAI_REDIRECT_URI=http://localhost:1455/auth/callback uv run fastapi dev --port 8001` (working directory: `src/unoplat_code_confluence_query_engine`; config: `Taskfile.yml`)📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - `CODE_CONFLUENCE_BRIDGE_URL=http://localhost:8000 TOKEN_ENCRYPTION_KEY=0PiVvlu6HExNWkYjukuG0CAV930B4OsqXNPItAvsxhQ= MCP_SERVERS_CONFIG_PATH=../../mcp-servers.json CODEX_OPENAI_CALLBACK_PORT=1455 CODEX_OPENAI_REDIRECT_URI=http://localhost:1455/auth/callback uv run fastapi dev --port 8001` (working directory: `src/unoplat_code_confluence_query_engine`; config: `Taskfile.yml`) | |
| - `CODE_CONFLUENCE_BRIDGE_URL=http://localhost:8000 TOKEN_ENCRYPTION_KEY=$TOKEN_ENCRYPTION_KEY MCP_SERVERS_CONFIG_PATH=../../mcp-servers.json CODEX_OPENAI_CALLBACK_PORT=1455 CODEX_OPENAI_REDIRECT_URI=http://localhost:1455/auth/callback uv run fastapi dev --port 8001` (working directory: `src/unoplat_code_confluence_query_engine`; config: `Taskfile.yml`) |
🧰 Tools
🪛 Betterleaks (1.1.2)
[high] 78-78: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.
(generic-api-key)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@unoplat-code-confluence-query-engine/AGENTS.md` at line 78, Replace the
hard-coded TOKEN_ENCRYPTION_KEY value in the AGENTS.md command snippet with a
non-sensitive placeholder (e.g., TOKEN_ENCRYPTION_KEY=<your-base64-key>) so the
concrete key `0PiVvlu6HExNWkYjukuG0CAV930B4OsqXNPItAvsxhQ=` is removed; update
the command string that currently sets TOKEN_ENCRYPTION_KEY and ensure the doc
shows a placeholder and a short note to generate/secure the real key in env or
secret manager instead of embedding it in the docs.
Summary
0d24fd38b5964f5db6d0d048ece9fec6Changed Files
unoplat-code-confluence-docs/AGENTS.mdunoplat-code-confluence-docs/dependencies_overview.mdunoplat-code-confluence-docs/business_logic_references.mdunoplat-code-confluence-docs/app_interfaces.mdunoplat-code-confluence-commons/AGENTS.mdunoplat-code-confluence-commons/dependencies_overview.mdunoplat-code-confluence-commons/business_logic_references.mdunoplat-code-confluence-commons/app_interfaces.mdunoplat-code-confluence-frontend/AGENTS.mdunoplat-code-confluence-frontend/dependencies_overview.mdunoplat-code-confluence-frontend/business_logic_references.mdunoplat-code-confluence-frontend/app_interfaces.mdunoplat-code-confluence-query-engine/AGENTS.mdunoplat-code-confluence-query-engine/dependencies_overview.mdunoplat-code-confluence-query-engine/business_logic_references.mdunoplat-code-confluence-query-engine/app_interfaces.mdunoplat-code-confluence-ingestion/code-confluence-flow-bridge/AGENTS.mdunoplat-code-confluence-ingestion/code-confluence-flow-bridge/dependencies_overview.mdunoplat-code-confluence-ingestion/code-confluence-flow-bridge/business_logic_references.mdunoplat-code-confluence-ingestion/code-confluence-flow-bridge/app_interfaces.mdSummary by CodeRabbit
Release Notes