Repository navigation
Feat hzw 261106 - #4339
Open
lijiayang619 wants to merge 4 commits into
Open
Feat hzw 261106#4339lijiayang619 wants to merge 4 commits into
lijiayang619 wants to merge 4 commits into
Conversation
Integrate develop through 652d1c1 while preserving unified resource repository workflows and independent skill creation dialogs. Resolve relocated repository implementations, keep compatible route re-exports, and migrate remaining repository controls to native Ant Design after develop removed Standard wrappers. Honor role unions in review visibility and decisions, preserve explicit repository grants and same-status authorization, and retain legacy review status display. Validation: - Complete frontend TypeScript check passed in an isolated temporary environment. - Resource repository/skill/multi-role component tests: 162 passed; skill helper tests: 5 passed. - Targeted backend regressions: 638 passed across 19 isolated modules, including new multi-role review scope assertions. - Additional artifact/preview regressions: 58 passed, 2 unchanged DOCX background tests failed on jsdom box-shadow CSS assertions. - Selected-file lint retains 9 no-explicit-any errors also reproduced on the pre-merge agent-config-actions source; no new lint errors. - Copyright check passed for all 1089 changed source files. Branch diff against develop passes whitespace checks; merged SQL migrations remain untouched. - Formal D1-D5 asset validation could not run because local Python lacks openpyxl. No live end-to-end acceptance or deployment performed. - Temporary frontend dependencies use available Next 16.0.10, Vitest 4.1.12 and jsdom 26; repository package manifests and lockfiles were not altered for testing.
lijiayang619
requested review from
Dallas98,
Jasonxia007,
WMC001,
YehongPan,
hhhhsc701 and
jeffwu-1999
as code owners
November 13, 2026 07:38
| ) | ||
| results.append({**result, "success": True}) | ||
|
|
||
| return JSONResponse(status_code=HTTPStatus.OK, content={"status": "success", "data": results}) |
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
Unresolved defects break administrator review access, submission-status display, and legacy notification navigation, while outdated fixtures, uncollected tests, and invalid E2E metadata undermine verification.
7 open issues
Admin role tuple comparison blocks administrator review access · New Legacy notifications lose repository-specific destinations · New Mapper drops latest review status from MCP list responses · New Component test suite does not collect the new icon specs · New Active D5 binding lacks required preparation declaration · New Resource-center features lack report ownership mappings · New Backend scenario fixtures still use removed fields and omit review rows · New
What changed in this PR
This PR develops Nexent’s unified resource repository for Agents, MCP services, and Skills. It introduces independent review records and shared repository UI components while retaining compatibility exports for existing pages.
Changes:
- Add review persistence, shared transactions, post-commit notifications, and installation-source tracking.
- Connect frontend services, navigation, types, and presentation controls to unified repository workflows.
- Extend backend and frontend regression coverage and add formal test definitions and scenario bindings.
| File | Description |
|---|---|
test/backend/services/test_repository_skill_upload_cleanup.py |
Tests cleanup after failed Skill preparation. |
test/backend/services/test_repository_same_status_authorization.py |
Tests authorization for unchanged statuses. |
test/backend/services/test_repository_mcp_pending_notifications.py |
Tests submission delegation and notification recipients. |
test/backend/services/test_mcp_record_edit_permission.py |
Tests MCP edit-permission rules. |
test/backend/services/test_mcp_publication_state.py |
Tests publication state and author visibility. |
test/backend/management/test_repository_transactions.py |
Tests transaction ownership and notification ordering. |
test/backend/management/test_repository_review_contracts.py |
Tests review validation and pagination contracts. |
test/backend/database/test_skill_repository_db.py |
Extends mocked review metadata. |
test/backend/database/test_notification_db.py |
Tests review and repository notification IDs. |
test/backend/database/test_market_mcp_db.py |
Adds SQL expressions for review-field mocks. |
test/backend/database/test_agent_repository_db.py |
Updates review metadata and summary expectations. |
test/backend/app/test_skill_repository_app.py |
Isolates latest-review projection queries. |
test/backend/app/test_remote_mcp_app.py |
Isolates latest-review projection queries. |
test/backend/app/test_agent_repository_app.py |
Tests identity forwarding and sorting selectors. |
test/backend/app/test_agent_app.py |
Isolates paged Agent review projections. |
test-e2e/infra/config/resource-center.schema.json |
Defines scenario environment configuration. |
test-e2e/infra/config/resource-center.example.json |
Provides example scenario configuration. |
test-e2e/infra/automation/shared/resource_center.py |
Launches backend scenarios inside configured containers. |
test-e2e/features/RESOURCE-CENTER-REVIEW/feature.yaml |
Defines unified review acceptance rules. |
test-e2e/features/RESOURCE-CENTER-REVIEW/cases.md |
Lists review cases and statuses. |
test-e2e/features/RESOURCE-CENTER-MANAGE/feature.yaml |
Defines repository management acceptance rules. |
test-e2e/features/RESOURCE-CENTER-MANAGE/cases.md |
Lists management cases and statuses. |
test-e2e/features/RESOURCE-CENTER-LIFECYCLE/feature.yaml |
Defines submission lifecycle and migration rules. |
test-e2e/features/RESOURCE-CENTER-LIFECYCLE/cases.md |
Lists lifecycle cases and statuses. |
test-e2e/features/RESOURCE-CENTER-ACCESS/feature.yaml |
Defines navigation and access rules. |
test-e2e/features/RESOURCE-CENTER-ACCESS/cases.md |
Lists access cases and statuses. |
test-e2e/changes/requirements/SKILL-CHAT-CREATE-MODAL-20261112.md |
Records dialog scope and verification limitations. |
test-e2e/cases/RESOURCE-CENTER-REVIEW-D2-002/test.py |
Invokes review-detail scenarios. |
test-e2e/cases/RESOURCE-CENTER-REVIEW-D2-002/execution.yaml |
Binds review-detail acceptance checks. |
test-e2e/cases/RESOURCE-CENTER-REVIEW-D2-001/test.py |
Invokes authorized review-list scenarios. |
test-e2e/cases/RESOURCE-CENTER-REVIEW-D2-001/execution.yaml |
Binds review-list acceptance checks. |
test-e2e/cases/RESOURCE-CENTER-LIFECYCLE-D5-002/test.py |
Invokes upgrade and migration scenarios. |
test-e2e/cases/RESOURCE-CENTER-LIFECYCLE-D5-002/execution.yaml |
Binds migration acceptance checks. |
test-e2e/cases/RESOURCE-CENTER-LIFECYCLE-D5-001/test.py |
Invokes reliability scenarios. |
test-e2e/cases/RESOURCE-CENTER-LIFECYCLE-D5-001/execution.yaml |
Binds reliability acceptance checks. |
test-e2e/cases/RESOURCE-CENTER-ACCESS-D5-001/test.py |
Invokes access and lifecycle scenarios. |
test-e2e/cases/RESOURCE-CENTER-ACCESS-D5-001/execution.yaml |
Binds access acceptance checks. |
frontend/types/skillRepository.ts |
Adds installation, publication, and review metadata. |
frontend/types/resourceReview.ts |
Defines unified review API types. |
frontend/types/resourceRepository.ts |
Defines repository navigation targets. |
frontend/types/notification.ts |
Adds review notifications and string IDs. |
frontend/types/mcpTools.ts |
Adds MCP review, author, and wire-response types. |
frontend/types/agentRepository.ts |
Adds publication sorting and review metadata. |
frontend/types/agentConfig.ts |
Adds latest-review metadata to Agents. |
frontend/tests/component/skillRepositoryIcon.test.mjs |
Tests Skill icon classification. |
frontend/tests/component/skillGroupSelection.test.tsx |
Tests group selection and loading states. |
frontend/tests/component/skillDetailFiles.test.mjs |
Tests nested file-tree filtering. |
frontend/tests/component/skillCreationFiles.test.tsx |
Tests draft editing and path validation. |
frontend/tests/component/resourceRepositoryCard.test.tsx |
Tests repository card action placement. |
frontend/tests/component/repositorySkillDetailFiles.test.tsx |
Tests frozen archive display and errors. |
frontend/tests/component/repositoryPagination.test.tsx |
Updates pagination interaction expectations. |
frontend/tests/component/myAgentOwnershipRemoval.test.tsx |
Updates Agent fixtures and shared-component mocks. |
frontend/tests/component/myAgentMainBadge.test.tsx |
Updates navigation and icon mocks. |
frontend/tests/component/mcpUnpublishProtocol.test.tsx |
Tests non-destructive MCP unpublishing. |
frontend/tests/component/mcpCommunityRecovery.test.tsx |
Updates shared MCP component mocks. |
frontend/tests/component/casRepositoryIdentity.test.tsx |
Tests distinct creation and publication timestamps. |
frontend/tests/component/agentUsageGuide.test.tsx |
Updates navigation and settings mocks. |
frontend/services/skillRepositoryService.ts |
Uses review submissions and adds deletion APIs. |
frontend/services/resourceReviewService.ts |
Implements unified review requests. |
frontend/services/mcpService.ts |
Forwards MCP author display names. |
frontend/services/agentVersionService.ts |
Extends version metadata types. |
frontend/services/agentRepositoryService.ts |
Routes Agent applications through review submissions. |
frontend/services/agentConfigService.ts |
Preserves latest-review metadata in Agent mapping. |
frontend/lib/skillRepositoryIcon.ts |
Classifies Skill icons from metadata. |
frontend/lib/skillDetailFiles.ts |
Builds searchable nested file trees. |
frontend/lib/notificationNavigation.ts |
Adds unified review navigation. |
frontend/lib/notificationMessage.ts |
Formats notifications by reviewed resource type. |
frontend/hooks/useRepositoryTagPredicates.ts |
Restores validated tag filters from query state. |
frontend/hooks/useRepositoryQueryState.ts |
Shares URL-backed filters and page sizing. |
frontend/hooks/useRepositoryPresentation.ts |
Defines shared repository presentation context. |
frontend/hooks/resourceReview/useResourceReviews.ts |
Adds review queries, decisions, and cache invalidation. |
frontend/hooks/agentRepository/useAgentRepositoryListings.ts |
Retains compatible data during page changes. |
frontend/hooks/agent/useAgentVersionDetail.ts |
Makes version-detail caching configurable. |
frontend/const/resourceRepository.ts |
Defines repository route and tab constants. |
frontend/const/mcpTools.ts |
Adds MCP edit-drawer sizing. |
frontend/components/tag/RepositoryTagFilter.tsx |
Adds unified repository tag selection. |
frontend/components/resource/ResourceDetail.tsx |
Adds Agent and MCP detail drawers. |
frontend/components/resource/CreateResourceCard.tsx |
Supports compact list-layout creation buttons. |
frontend/components/repository/skill/components/SkillTypeIcon.tsx |
Renders metadata-based Skill icons. |
frontend/components/repository/skill/components/skillRepositoryShared.ts |
Centralizes Skill repository helpers. |
frontend/components/repository/skill/components/SkillRepositoryReviewConfirmModal.tsx |
Relocates Skill review confirmation UI. |
frontend/components/repository/skill/components/CreateNewSkillCard.tsx |
Relocates the Skill creation control. |
frontend/components/repository/ResourceReviewLink.tsx |
Links review status to unified review details. |
frontend/components/repository/ResourcePublishedAt.tsx |
Displays publication time or unknown status. |
frontend/components/repository/mcp/components/shared/StatusBadge.tsx |
Relocates shared MCP status badges. |
frontend/components/repository/mcp/components/shared/McpGroupSelectionTable.tsx |
Adds paginated MCP group selection. |
frontend/components/repository/mcp/components/shared/JsonPreviewModal.tsx |
Relocates JSON preview UI. |
frontend/components/repository/mcp/components/shared/ContainerPortField.tsx |
Relocates container-port controls. |
frontend/components/repository/mcp/components/PublishedServiceCard.tsx |
Relocates published MCP cards. |
frontend/components/repository/mcp/components/McpServicesFilterBar.tsx |
Relocates MCP service filters. |
frontend/components/repository/mcp/components/McpServiceCard.tsx |
Relocates local MCP cards. |
frontend/components/repository/mcp/components/AddMcpServiceCard.tsx |
Relocates the MCP creation control. |
frontend/components/repository/mcp/components/add/community/McpCommunityToolbar.tsx |
Relocates community search and filters. |
frontend/components/repository/mcp/components/add/community/McpCommunityRequestError.tsx |
Relocates community retry UI. |
frontend/components/repository/mcp/components/add/community/McpCommunityCardList.tsx |
Relocates community listing and pagination. |
frontend/components/repository/mcp/components/add/community/McpCommunityCard.tsx |
Relocates community cards and quick-add actions. |
frontend/components/repository/mcp/components/add/community/AddMcpServiceCommunitySection.tsx |
Relocates community browsing coordination. |
frontend/components/repository/mcp/components/add/AddMcpServiceModal.tsx |
Presents MCP creation in a guarded drawer. |
frontend/components/repository/agent/components/RepositoryAgentIcon.tsx |
Relocates repository icons with class customization. |
frontend/components/repository/agent/components/MyAgentIcon.tsx |
Relocates uploaded Agent icon rendering. |
frontend/components/repository/agent/components/CreateNewAgentCard.tsx |
Relocates the Agent creation control. |
frontend/components/navigation/SideNavigation.tsx |
Makes resource space a navigation destination. |
frontend/app/[locale]/skill-space/components/skillRepositoryShared.ts |
Re-exports shared Skill helpers. |
frontend/app/[locale]/skill-space/components/SkillRepositoryReviewConfirmModal.tsx |
Preserves the legacy confirmation import. |
frontend/app/[locale]/skill-space/components/MineApplyListingModal.tsx |
Preserves the legacy application-modal import. |
frontend/app/[locale]/skill-space/components/CreateNewSkillCard.tsx |
Preserves the legacy creation-card import. |
frontend/app/[locale]/resource-space/page.tsx |
Adds the unified repository route. |
frontend/app/[locale]/mcp-space/components/shared/StatusBadge.tsx |
Re-exports shared status badges. |
frontend/app/[locale]/mcp-space/components/shared/JsonPreviewModal.tsx |
Re-exports shared JSON previews. |
frontend/app/[locale]/mcp-space/components/shared/ContainerPortField.tsx |
Re-exports shared port controls. |
frontend/app/[locale]/mcp-space/components/PublishedServiceCard.tsx |
Re-exports shared published cards. |
frontend/app/[locale]/mcp-space/components/McpServicesFilterBar.tsx |
Re-exports shared service filters. |
frontend/app/[locale]/mcp-space/components/McpServiceCard.tsx |
Re-exports shared service cards. |
frontend/app/[locale]/mcp-space/components/McpRepositoryReviewConfirmModal.tsx |
Preserves the legacy review-modal import. |
frontend/app/[locale]/mcp-space/components/AddMcpServiceCard.tsx |
Re-exports the shared creation control. |
frontend/app/[locale]/mcp-space/components/add/community/McpCommunityToolbar.tsx |
Re-exports the community toolbar. |
frontend/app/[locale]/mcp-space/components/add/community/McpCommunityRequestError.tsx |
Re-exports community retry UI. |
frontend/app/[locale]/mcp-space/components/add/community/McpCommunityCardList.tsx |
Re-exports community listing UI. |
frontend/app/[locale]/mcp-space/components/add/community/McpCommunityCard.tsx |
Re-exports community cards. |
frontend/app/[locale]/mcp-space/components/add/community/AddMcpServiceCommunitySection.tsx |
Re-exports community browsing coordination. |
frontend/app/[locale]/mcp-space/components/add/AddMcpServiceModal.tsx |
Re-exports the shared creation drawer. |
frontend/app/[locale]/agent-space/components/RepositoryAgentIcon.tsx |
Re-exports repository Agent icons. |
frontend/app/[locale]/agent-space/components/MyAgentIcon.tsx |
Re-exports local Agent icons. |
frontend/app/[locale]/agent-space/components/MineApplyListingModal.tsx |
Exposes the shared application modal. |
frontend/app/[locale]/agent-space/components/CreateNewAgentCard.tsx |
Re-exports the Agent creation control. |
frontend/app/[locale]/agent-space/components/AgentRepositoryReviewConfirmModal.tsx |
Preserves the legacy review-modal import. |
deploy/sql/migrations/v2.8.0_003_repository_review_indexes.sql |
Indexes active Skill installation sources. |
deploy/sql/migrations/v2.8.0_002_repository_review_metadata.sql |
Adds the Skill installation-source column. |
backend/management/services/repository/review_notifications.py |
Defers review notifications until commit. |
backend/management/services/repository/agent/listing.py |
Adds visibility filtering and publication/download sorting. |
backend/management/services/repository/agent/common.py |
Includes publication time in summaries. |
backend/management/services/mcp/service.py |
Checks deletion permissions and resolves publication/authors. |
backend/management/services/mcp/permission.py |
Centralizes MCP edit-permission checks. |
backend/management/db/skill/repository.py |
Persists installation sources and shares commit ownership. |
backend/management/db/skill/models.py |
Adds source links and review projections. |
backend/management/db/resource_review_model.py |
Defines independent review persistence. |
backend/management/db/repository_transactions.py |
Adds shared transactions, callbacks, and source locks. |
backend/management/db/repository_reviews.py |
Implements authorized review queries. |
backend/management/db/repository_review_fields.py |
Projects review metadata onto repository models. |
backend/management/db/notification/repository.py |
Defers deactivation and exposes typed notification IDs. |
backend/management/db/models/__init__.py |
Exports the review model. |
backend/management/db/mcp/models.py |
Adds MCP review projections. |
backend/management/db/client.py |
Reuses repository-owned database sessions. |
backend/management/db/agent/models.py |
Adds Agent review projections. |
backend/management/db/agent/catalog.py |
Adds source locking and review-aware summaries. |
backend/management/api/skill/skill_repository.py |
Adds installation options, review summaries, and deletion routes. |
backend/management/api/mcp/remote_mcp.py |
Returns authors/reviews and maps deletion denials. |
backend/management/api/application.py |
Registers unified review routes. |
backend/management/api/agent/agent.py |
Attaches reviews to paged Agent responses. |
backend/management/api/agent/agent_repository.py |
Forwards identity/sorting and attaches review summaries. |
backend/contracts/tool.py |
Defines batch deletion and publication sorting inputs. |
backend/contracts/errors/exceptions.py |
Adds a review-conflict exception. |
backend/contracts/constants/constants.py |
Registers the review notification resource type. |
Review effort: Balanced
| # Order the merged tenant+official set as one list; ordering only in | ||
| # SQL would interleave the two query blocks incorrectly. | ||
| records = _order_listings_by_publish_time(records) | ||
| if user_id is not None and _get_user_role(user_id) != "ADMIN": |
Comment on lines
+293
to
+296
| return buildResourceRepositoryHref(locale, { | ||
| tab: "review", | ||
| resourceType: type, | ||
| }); |
| @@ -49,6 +49,7 @@ export const getMcpServerList = async (tenantId?: string | null) => { | |||
| const formattedData = (data.remote_mcp_server_list || []).map((server: any) => { | |||
| return { | |||
| service_name: server.remote_mcp_server_name, | |||
| author_display_name: server.author_display_name, | |||
| // Copyright (c) 2025-2026 Huawei Technologies Co., Ltd. All rights reserved. | ||
|
|
||
| import assert from "node:assert/strict"; | ||
| import { test } from "node:test"; |
Comment on lines
+3
to
+6
| implementations: | ||
| - framework: pytest | ||
| file: test.py | ||
| selector: test_per_type_scopes_and_direct_decision_authorization |
| id: RESOURCE-CENTER | ||
| name: 资源仓库与统一审核 | ||
| feature: | ||
| feature_id: RESOURCE-CENTER-REVIEW |
| try: | ||
| result = subprocess.run([ | ||
| "docker", "exec", "-e", f"PYTHONPATH={configuration['backend_directory']}", "-w", configuration["backend_directory"], | ||
| container, configuration["python"], remote + "/backend_scenarios.py", scenario, |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

No description provided.