291 Commits

Author SHA1 Message Date
杨翊 SionYang 605a3fd2e4 [ISSUE #14804] Add shared AI resource search APIs (#15745)
* [ISSUE #14804] Add shared AI resource search APIs

Expose generic and resource-specific client search APIs backed by the shared AI Resource Search Core, with auth routing, specifications, and integration coverage.

Assisted-by: Claude Code

* [ISSUE #14804] Cover AI search authorization scenarios

Register the generic resource search and MCP client controllers in the authorization integration-test matrix.

Assisted-by: Claude Code
2026-08-21 13:39:28 +08:00
杨翊 SionYang ba35d1fdee fix(console): forward caller identity to remote server (#15742)
Assisted-by: Claude Code
2026-08-20 19:08:07 +08:00
吴世元 7bc723f1c7 [ISSUE #15710] Declare the LIKE escape clause for dialects without a default escape character (#15711)
* [ISSUE #15710] Declare the LIKE escape clause for dialects without a default escape character

Fuzzy search parameters escape the _ wildcard with a backslash, which only
works on a database treating the backslash as the default LIKE escape
character. Derby and Oracle have no such default, so the predicate matches
the backslash literally and silently returns no row.

Report the clause through the new Mapper#getLikeEscapeClause() dialect hook,
override it for Derby and Oracle, and append it to every LIKE bound to such a
parameter, in both the shared mapper defaults and the Oracle overrides. MySQL
and PostgreSQL keep an empty clause, so their SQL is unchanged.

Assisted-by: Claude Code
Signed-off-by: wushiyuanmaimob <wushiyuanwork@outlook.com>

* [ISSUE #15710] Escape the LIKE escape character in fuzzy search arguments

Declaring ESCAPE '\' on the LIKE predicates also constrains the bound
parameter: generateLikeArgument escaped the _ wildcard but left a literal
backslash in the search value untouched, so a value such as C:\path formed
the invalid escape sequence \p. Oracle rejects it with ORA-01424 and Derby
with SQLSTATE 22025, and a value such as a\_b silently kept _ as a wildcard.

Escape the escape character itself before escaping _, keeping the Config and
AI implementations consistent, and document the required order in the
datasource dialect spec.

Add a Derby test that executes the SQL generated by the mapper with the bound
parameter, since asserting the SQL text alone cannot detect an invalid escape
sequence in the argument.

Assisted-by: Claude Code
Signed-off-by: wushiyuanmaimob <wushiyuanwork@outlook.com>

---------

Signed-off-by: wushiyuanmaimob <wushiyuanwork@outlook.com>
2026-08-17 10:36:27 +08:00
吴世元 9b989acdf1 [ISSUE #15701] Fix history config next-record query for Derby and gray configs (#15702)
HistoryConfigInfoMapper#getNextHistoryInfo backs the config history
detail/diff lookup for UPDATE records. It had two defects.

The interface default SQL ends with 'ORDER BY nid LIMIT 1'. LIMIT is
MySQL/PostgreSQL syntax, and HistoryConfigInfoMapperByDerby overrode the
other row-limiting queries but not this one, so Derby inherited it and
the query failed with a syntax error. Derby is the standalone default
datasource. Add the missing Derby override using FETCH FIRST 1 ROWS
ONLY, matching the existing Oracle override.

The gray filter read grayName through getContextParameter, while both
repository implementations publish it with putWhereParameter and
MapperContext keeps those maps separate. 'AND gray_name = ?' was
therefore never emitted and gray history records of one config were not
separated by gray version. Read grayName from the where parameters and
derive both the predicate and its bound parameter from a single guard,
which also removes the isBlank/isEmpty mismatch that could emit a
placeholder without its predicate.

The existing default-mapper test only passed because it wrote grayName
into both maps; it now uses the where parameters alone, as production
does.

Assisted-by: Claude Code

Signed-off-by: wushiyuanmaimob <wushiyuanwork@outlook.com>
2026-08-13 16:13:52 +08:00
sai 4730901958 [ISSUE #15658] Keep AI resource storage provider routing stable (#15659)
* Fix Skill storage provider routing

Honor the provider persisted with each Skill version for read and delete operations while keeping nacos_config as the legacy fallback.

Assisted-by: Claude Code

* Add global AI storage provider selection

Keep resource-specific provider properties as compatibility overrides and clarify optional storage builder discovery.

Assisted-by: Claude Code

* Keep AI resource storage routing stable

Use each persisted version provider for reads, draft replacements, and deletes, and skip existing Prompt versions before migration writes.

Assisted-by: Claude Code

* test: align AgentSpec concurrent save reflection

Pass the persisted storage provider argument when invoking the concurrent AgentSpec save helper from tests.

Assisted-by: Claude Code

* test: complete Prompt storage descriptor fixture

Include the persisted file list required by the strict storage cleanup path after rebasing the provider routing changes.

Assisted-by: Claude Code
2026-08-12 15:44:53 +08:00
杨翊 SionYang 6074e9bc02 Move visibility plugin runtime to core (#15678)
Assisted-by: Codex
2026-08-10 12:12:33 +08:00
sai db7abe35b6 [ISSUE #15541] Improve ARD search index consistency (#15615)
* Fix ARD filter compatibility

* Remove ARD naming from AI search internals

* Document durable AI resource index enhancement

Assisted-by: Claude Code

* Extend AI resource index task schemas

Assisted-by: Claude Code

* Make AI resource index enhancement durable

Assisted-by: Claude Code

* Fix AI resource index task consumer injection

Assisted-by: Claude Code

* Refactor durable AI resource task model

Generalize the durable search-index task contract with versioned payload and result data while preserving lease, retry, and revision fencing semantics.

Assisted-by: Claude Code

* Update AI resource task schemas

Replace the search-index-specific task table with the generic AI resource task schema across supported databases and align Derby persistence test resources.

Assisted-by: Claude Code

* Use epoch millis for AI resource task scheduling

Assisted-by: Claude Code

* Improve AI resource index convergence

Harden task fencing, lease handling, reconciliation, vector readiness, and ARD filter compatibility.

Assisted-by: Claude Code

* fix: use latest published MCP version by default

Resolve omitted MCP versions through latestPublishedVersion so draft versions do not trigger repeated index reconciliation. Add unit and Admin API regression coverage.

Assisted-by: Claude Code

* fix: fence AI resource task leases

Preserve active leases across coalesced lifecycle schedules and use a monotonic lease token to fence stale workers from renewing, completing, retrying, or releasing newer work.

Assisted-by: Claude Code

* test: align MCP latest published version lookup

Assisted-by: Claude Code
2026-08-05 14:22:10 +08:00
杨翊 SionYang 645f9a13ef Deprecate legacy plugin compatibility paths (#15614)
Continuous Integration / ci (push) Has been cancelled
Frontend Continuous Integration / frontend-ci (push) Has been cancelled
Frontend Continuous Integration / check-min-release-age (push) Has been cancelled
Assisted-by: Claude Code
2026-07-30 15:18:06 +08:00
Zhengcy05 6e6c904a45 [ISSUE #15476] Add plugin-owned visibility grant API (#15513)
* feat: ai-visibility grant api

* fix: add User existence verification and fix test

* fix: Modify naming to remove AI semantics

* feat: retain at most one visibility role

* feat: keep the authorization chain as identity -> role -> permission

* feat: expand 'resource' to 512

* feat: mark the new visibility APIs as ADMIN_API

* feat: remove list api

* feat: Complete the 512-character schema and upgrade delivery

* feat: Align the API contract  and specifications

* feat: complete focused tests for the new authorization model

* feat: remove the grant-list-only indexes

* feat: fix md

* feat: revert the role-wide cache reload changes

* fix: add @NacosApi

* fix: codecov

* fix: add EnvUtil MockEnvironment

---------

Co-authored-by: 杨翊 SionYang <xiweng.yy@alibaba-inc.com>
2026-07-29 16:00:36 +08:00
杨翊 SionYang dff2c7cd8c [ISSUE #14804] Add Agent Admin API and maintainer SDK (#15598)
* [ISSUE #14804] Add Agent Admin API and maintainer SDK

Add protocol-neutral Agent Admin endpoints and maintainer SDK support on the unified AI resource lifecycle. Align first-draft creation, namespace binding, metadata updates, visibility filters, specs, and integration-test coverage.

Assisted-by: Claude Code

* [ISSUE #14804] Fix default Agent owner

Assisted-by: Claude Code

* [ISSUE #14804] Fix agent admin OpenAPI error assertions

Assisted-by: Claude Code
2026-07-29 11:26:33 +08:00
sai 07a0ff15f8 [ISSUE #15541] Add Agentic Resource Discovery support (#15542)
* Add ARD search API contract

* Implement local ARD search service

* Add ARD search service tests

* Implement ARD P0 persistent indexing

* Add ARD PostgreSQL schema and cursor pagination

* Add ARD skill content and LLM index enhancement

* Rebuild latest ARD index on skill version changes

* Support dedicated ARD pgvector storage

# Conflicts:
#	plugin-default-impl/nacos-default-datasource-plugin/nacos-datasource-plugin-mysql/src/main/resources/META-INF/mysql-schema.sql

* Improve ARD search ranking

* Limit ARD pgvector search in SQL

* Make ARD pgvector embeddings extensible

* Enhance ARD source content for prompt and MCP

* Align ARD search protocol response

* Expose ARD resource artifact URLs

* Support ARD field path filters

* Add ARD agents endpoint

* Add ARD explore endpoint

* Add internal ARD catalog endpoint

* Add ARD catalog list explore DTOs

* Complete local ARD protocol endpoints

* Cover ARD catalog list explore artifacts

* Extract ARD index enhancement prompt

* Make ARD catalog host metadata configurable

* Add ARD vector index SPI

* Add default PostgreSQL ARD vector plugin

* Route ARD vector indexing through plugins

# Conflicts:
#	api/src/main/java/com/alibaba/nacos/api/plugin/PluginType.java

* Extract ARD index enhancement prompt

* refactor: flatten ARD enhancement search phrases

* refactor: split ARD enhancement search chunks

* feat: return complete skill packages from ARD

* test: cover ARD skill package URLs

* Add ARD well-known catalog endpoint

* Simplify ARD catalog base URL configuration

* Tighten ARD catalog base URL semantics

* Align ARD well-known catalog semantics

* Fix ARD namespace authorization parsing

* Clean up ARD index content storage

* Add ARD index backfill

* Add ARD global feature switch

* Move ARD protocol contracts to registry adaptor

* Align ARD vector plugin with unified loading

* Document ARD protocol adaptor ownership

* Decouple ARD protocol and storage concerns

* Fix AI vector plugin discovery

* Fix ARD endpoint authentication

* Fix PostgreSQL ARD vector schema isolation

* Fix ARD protocol compatibility and artifact routing

Pin the upstream ARD contract, align response and error models, and serve complete Skill artifacts from the adaptor web context.

* Move ARD discovery logic into AI module

* Make ARD index maintenance durable

Persist coalesced resource-level index tasks with leased retry, make relational and default PostgreSQL vector replacement transactional, and reconcile stale or orphaned indexes periodically.

* Fix ARD schema fixture RAT exclusion

Use a module-independent path pattern so the pinned upstream JSON Schema is excluded when RAT runs from either the repository root or the adaptor module.

* Refine ARD search architecture and compatibility

* Fix ARD release blockers

Align ARD authentication, catalog URLs and identifiers with the pinned protocol contract. Bound discovery/index queries, complete namespace catalogs, and document the three-table migration path.

* Fix ARD authentication in adaptor context

* Fix PluginType spotless formatting
2026-07-29 09:49:47 +08:00
杨翊 SionYang 1ecc39c45c [ISSUE #15475] Align plugin provider and configuration contracts (#15593)
Honor provider order before first-wins registration, align built-in plugin routers with the same conflict policy, and remove datasource fallback to an unrelated dialect.

Make standard configuration keys authoritative by presence and enable AI resource import unless explicitly disabled. Update bilingual plugin specs and tests accordingly.

Assisted-by: Claude Code
2026-07-28 17:47:39 +08:00
杨翊 SionYang bd33453a99 [ISSUE #15475] Make plugin discovery conflicts deterministic (#15592)
* Remove reflective EnvUtil access from visibility plugin

Assisted-by: Claude Code

* Use first-wins plugin registration and definition normalization

Assisted-by: Claude Code
2026-07-28 12:07:09 +08:00
杨翊 SionYang 709bd78ab6 [ISSUE #15475] Integrate environment plugin pre-context configuration (#15590)
* [ISSUE #15475] Integrate environment plugin pre-context configuration

Unify environment plugin discovery, static configuration apply, and startup handoff through PRE_CONTEXT initialization.

Assisted-by: Claude Code

* Fix environment plugin initialization test

Assisted-by: Claude Code
2026-07-27 19:49:53 +08:00
杨翊 SionYang cfa255148d [ISSUE #15475] Integrate AI resource importer plugin configuration (#15589)
* [ISSUE #15475] Integrate AI resource importer plugin configuration

Unify AI resource importer builders with plugin configuration management and remove the redundant source abstraction.

Assisted-by: Claude Code

* [ISSUE #15475] Align AI importer OpenAPI error assertions

Update the focused admin and console API integration tests to match the unified plugin lookup error message.\n\nAssisted-by: Claude Code
2026-07-27 15:20:54 +08:00
杨翊 SionYang 436e900106 [ISSUE #14804] Implement Agent lifecycle persistence (#15588)
Add Agent lifecycle orchestration, persistence state rebuilding, Pipeline integration, and comprehensive unit tests.

Assisted-by: Claude Code
2026-07-27 13:30:49 +08:00
杨翊 SionYang 27d24e55e4 Integrate control plugin with unified configuration (#15572)
Assisted-by: Claude Code
2026-07-24 15:54:07 +08:00
杨翊 SionYang 8cd1910c32 Refine plugin loading and state lifecycle (#15564)
Assisted-by: Claude Code
2026-07-23 11:11:24 +08:00
yijie zhao b46aae5484 [ISSUE #15510] Reject invalid credential before anonymous fallback (#15526)
* fix: reject invalid credential before anonymous fallback

* fix: harden anonymous auth fallback

* style: format identity context api

* style: format auth filter test

* style: apply spotless formatting
2026-07-22 19:31:05 +08:00
杨翊 SionYang a66d928bc6 Unify plugin configuration SPI contracts (#15555)
Assisted-by: Claude Code
2026-07-22 13:38:59 +08:00
杨翊 SionYang ffa81ce810 Add plugin type policies and critical validation (#15548)
Assisted-by: Claude Code
2026-07-21 19:14:33 +08:00
杨翊 SionYang 0797f4ecc3 [ISSUE #15475] Align trace and visibility plugin lifecycle (#15538)
Apply trace plugin state when dispatching events and retain disabled subscribers for runtime re-enablement. Prevent configurable visibility plugins from receiving the deprecated legacy initialization callback, while preserving compatibility for older implementations.

Assisted-by: Claude Code
2026-07-20 19:51:39 +08:00
杨翊 SionYang 30c1398ab9 [ISSUE #15475] Standardize plugin state and AI pipeline lifecycle (#15537)
Centralize plugin execution capabilities and separate core module gates from plugin state. Migrate AI pipeline services to direct PluginConfigSpec lifecycle management with unified runtime ordering and legacy configuration compatibility.

Assisted-by: Claude Code
2026-07-20 17:51:59 +08:00
吴世元 b1724c2871 [ISSUE #15468] Route duplicate-key classification through the datasource dialect SPI (#15509)
Make DatabaseDialect#isDuplicateKeyException(Throwable) the single entry point for
classifying duplicate unique-key conflicts, per the direction agreed in the issue.
The interface default walks the throwable cause chain and recognizes Spring's
DuplicateKeyException, matched by class name so the datasource plugin modules keep
their Spring-free dependency footprint. This reproduces the former database-agnostic
classification as the safe baseline and deliberately does not treat a raw vendor
SQLState such as 23505 as a duplicate on its own, preserving the #15465 rethrow
contract.

ExternalConfigInfoPersistServiceImpl now delegates duplicate-key judgement to the
active dialect, and only falls back to the inline Spring DuplicateKeyException check
when no dialect can be resolved (for example before datasource plugins are loaded).
Vendor dialects can override the SPI default to additionally inspect the original
driver exception (SQLState or vendor error code) via DatabaseDialect.super.

Update the datasource dialect plugin spec (en + zh-cn) and add regression tests: the
plugin-base default rejects non-Spring exceptions and raw SQLState, and the config
module verifies the default recognizes a wrapped Spring DuplicateKeyException.

Related issue: #15468
Related PRs: #15465, #15272, #15278

Assisted-by: Claude Code

Signed-off-by: wushiyuanmaimob <wushiyuanwork@outlook.com>
2026-07-15 15:27:51 +08:00
杨翊 SionYang b9333258be [ISSUE #15475] Complete plugin management foundation (#15500)
Complete unified plugin state enforcement for runtime-routed plugin families.

Add static configuration refresh snapshots, source resolver registry, restart-only field isolation, and shared plugin type capabilities before production plugins adopt PluginConfigSpec.

Assisted-by: Claude Code
2026-07-13 17:33:58 +08:00
杨翊 SionYang 007fe68cb2 Fix config namespace isolation for ID-based operations (#15498)
* Fix config namespace isolation for delete and export

Scope config export-by-ids and batch delete-by-ids to the requested namespace across admin, console, and maintainer SDK paths.

Update specs and IT scenario coverage for namespace-scoped storage ID operations.

Assisted-by: Claude Code

* Document config storage ID selector deprecation

Assisted-by: Claude Code

* Fix config clone namespace isolation

Ensure config clone resolves source IDs within the requested source namespace before writing to the target namespace. Update console and maintainer SDK paths plus API/SDK test specs.

Assisted-by: Claude Code

* Refine config clone service coverage

Extract shared clone logic into ConfigCloneService and move clone behavior coverage from controller tests into service-level tests.

Assisted-by: Claude Code

* Refine config clone source authorization

Add source namespace READ authorization for config clone paths and keep auth identity/resource context available for diagnostics.

Assisted-by: Claude Code

* Refresh legacy console clone namespace assets

Assisted-by: Claude Code

* Fix datasource export namespace isolation tests

* Cover datasource export namespace isolation tests

* Fix auth admin filter test header stubbing

* Stabilize clone source auth checker tests

* Apply spotless to clone auth checker
2026-07-13 15:31:00 +08:00
杨翊 SionYang 1f9f6ccc8e Remove confirmed unused Java code (#15358)
* Remove confirmed unused Java code

Remove validated unused helpers, constants, classes, and matching dedicated tests across Java modules.

Deprecate currently unused datasource mapper methods so downstream plugin usage can be confirmed before removal.

Validation:

- mvn spotless:check

- mvn -B clean compile apache-rat:check checkstyle:check spotbugs:check spotless:check -DskipTests

- mvn -B '-Prelease-nacos,!dev' clean install -Drat.skip=true -Dspotbugs.skip=true -Dcheckstyle.skip=true -DskipTests=false

- mvn -B clean install -Prelease-nacos -DskipTests=true

- mvn -B clean verify -Pintegration-test

- mvn -B -pl test/java-sdk-test clean verify -Pjava-sdk-integration-test -DskipTests=false

- mvn -B -pl test/maintainer-sdk-test clean verify -Pmaintainer-sdk-integration-test -DskipTests=false

Assisted-by: Codex

* Fix flaky unit test setup

Reuse the same version 0.2.0 tar.gz fixture bytes for digest validation and HTTP response payloads, and initialize EnvUtil in GlobalExecutorTest when the test runs without suite-level environment setup.

Assisted-by: Codex

* Fix config test isolation

Assisted-by: Claude Code

* Fix flaky failover reactor test

Assisted-by: Claude Code
2026-06-16 00:12:23 +08:00
杨翊 SionYang 386f98f740 [ISSUE #15322] Remove config migration persistence layer (#15329)
Remove legacy config namespace migration persistence services, beta/tag table mappers, datasource SPI registrations, and old fresh-install test schema definitions.

Assisted-by: Claude Code
2026-06-09 09:42:26 +08:00
杨翊 SionYang 0b932e8367 Improve plugin module unit test coverage (#15219)
* Improve plugin module unit test coverage

Assisted-by: Claude Code

* Improve plugin SPI coverage

Assisted-by: Claude Code
2026-05-22 13:57:41 +08:00
杨翊 SionYang eac920cd53 [ISSUE #15183] Move default AI importers to plugin-default-impl (#15217)
Move built-in MCP registry and Skill well-known importers into a default AI importer plugin.\n\nAdd source provider SPI and nacos.plugin.ai.importer preset configuration.\n\nUpdate import plugin specs and tests.\n\nAssisted-by: Claude Code
2026-05-22 12:04:58 +08:00
杨翊 SionYang f7d86cb901 test: improve plugin module unit test coverage (#15209)
* test: improve plugin module coverage

* test: make tps metrics test timezone independent
2026-05-21 20:39:26 +08:00
有猫饼 f57d43b3f3 [ISSUE #15160] Fix config change pointcut routing for missing srcType (#15161)
Route missing config change source types to unknown pointcuts instead of treating them as RPC, and use remove pointcuts for delete operations.

Assisted-by: Codex
2026-05-20 13:57:54 +08:00
杨翊 SionYang d13b2b40fa [ISSUE #15183] Add AI resource import SPI models (#15190)
* [ISSUE #15183] Add AI resource import SPI models

Add the AI resource import plugin type, public import API DTOs, and plugin importer SPI/model contracts for source-based search, validate, and execute flows.

Assisted-by: Claude Code

* [ISSUE #15183] Refine AI resource import models

Remove the unsupported dependency import abstraction from the initial API and SPI contract, align importer models with Spotless formatting, and add JSON serialization coverage for the public import DTOs.

Assisted-by: Claude Code
2026-05-20 13:35:58 +08:00
cxhello 49f645b28a [ISSUE #14815] build(style): align Checkstyle with Spotless and enable spotless:check in CI (#15117)
- Change lineWrappingIndentation from 0 to 4 to match continuation_indentation=1
- Change arrayInitIndent from 8 to 4 to match continuation_indentation_for_array_initializer=1
- Remove all // @formatter:off/on workarounds (no longer needed)
- Re-format modules affected by continuation_indentation_for_array_initializer change
- Add checkstyle:check and spotless:check to CI check step

Signed-off-by: cxhello <caixiaohuichn@gmail.com>
2026-05-11 10:22:17 +08:00
cxhello f8237f314f [ISSUE #14815] build(style): apply Spotless formatting to plugin module (#15106)
Signed-off-by: cxhello <caixiaohuichn@gmail.com>
2026-05-09 17:04:55 +08:00
Guimu 9e800b32a4 fix(plugin/control): preserve multi-byte UTF-8 chars across DiskUtils chunk boundaries (#15073)
DiskUtils.readFile streams the file in 4096-byte chunks and decodes each
chunk with a CharsetDecoder. After draining the chars from each chunk the
loop calls buffer.clear(). When a multi-byte UTF-8 character straddles
the 4096-byte boundary the decoder reports UNDERFLOW and leaves the
leading bytes of that character in the buffer; clear() then discards
them. The next read starts on an orphaned UTF-8 continuation byte, the
decoder reports malformed input, and the rest of the file is silently
truncated.

Concretely, a file laid out as 4094 ASCII bytes + '中' (3-byte CJK,
E4 B8 AD) + 200 ASCII bytes round-trips back as just 4094 ASCII chars
with the trailing '中' and 200 ASCII bytes lost.

Replace buffer.clear() with buffer.compact() so any unconsumed trailing
bytes survive into the next read, and finalize the stream after EOF
with decoder.decode(buffer, ..., true) + decoder.flush(charBuffer) so
the decoder also drains any state it is holding for the very last
character of the file.

The new testReadFileWithMultiByteUtf8AcrossChunkBoundary builds the
file layout above, asserts the byte indices of '中' against the buffer
boundary, and asserts the exact round-trip. It fails deterministically
on upstream/develop and passes only after the fix.

Builds on the per-call CharsetDecoder change merged in #15065.

Assisted-by: Claude Code
2026-05-08 19:22:33 +08:00
Guimu 840ad82da8 fix(plugin/control): allocate CharsetDecoder per call in DiskUtils.readFile (#15065)
The previous implementation shared a single static CharsetDecoder across
all callers of DiskUtils.readFile. CharsetDecoder is documented as not
safe for concurrent use, and it also retains internal state across decode
invocations. As a result, concurrent calls (for example LocalDiskRuleStorage
loading multiple TPS rule files at once) could corrupt each other's output,
and even sequential calls could observe leftover state from a previous read.

Move the decoder into the readFile method so each call operates on a fresh,
isolated instance. Add tests covering concurrent reads of distinct files,
sequential reads on the same file, and a UTF-8 multi-byte regression.

Assisted-by: Claude Code
2026-05-07 19:09:02 +08:00
杨翊 SionYang 9f2e763870 feat(visibility): add default scope resolution for new resource creation. (#14883) 2026-04-08 15:43:20 +08:00
杨翊 SionYang dff1617660 Add config option to enable or disable visibility plugin (#14873)
* feat(visibility): add support to enable or disable visibility plugin via config.

* feat(visibility): add support to enable or disable visibility plugin via config.
2026-04-07 20:54:56 +08:00
Sunrisea 94dcef9815 feat(auth,ai) support auth ai resource subtype parse (#14847)
* feat(auth,ai) support auth ai resource subtype parse

* fix(auth): update AiHttpResourceParserTest for aiType property

Update testGetProperties to expect 2 properties (ACTION + AI_TYPE)
after getProperties() now sets aiType based on URL path.

Add test cases for all AI resource types: a2a, skill, prompt, agentSpec.

Assisted-by: Kiro AI
2026-04-03 14:29:20 +08:00
Guimu 338e46f00f fix(config): add missing ORDER BY to remaining MySQL pagination queries (#14746)
Several pagination methods in ConfigInfoMapperByMySql and
ConfigTagsRelationMapperByMySql use LIMIT without ORDER BY, causing
non-deterministic results across pages. This adds ORDER BY before
LIMIT to all affected methods, consistent with other paginated methods
in the same classes. Also adds orderBy() method to WhereBuilder.
2026-03-31 10:07:04 +08:00
KomachiSion e77f987774 Merge remote-tracking branch 'refs/remotes/upstream/develop' into develop-skill-pipeline-sync-develop
# Conflicts:
#	ai/src/main/java/com/alibaba/nacos/ai/service/skills/SkillOperationServiceImpl.java
#	ai/src/test/java/com/alibaba/nacos/ai/service/skills/SkillOperationServiceImplTest.java
#	plugin/datasource/src/main/java/com/alibaba/nacos/plugin/datasource/constants/TableConstant.java
2026-03-26 14:06:24 +08:00
Xin Luo 3ffb874ebe feat(pipeline): update plugin-based pipeline configuration format (#14731)
* feat(pipeline): Update configuration format for plugin-based pipeline support

Change-Id: I8bd95ca1bd44e9c723a179293da206e0d16ce89c

* feat: Update visibility constants and improve test assertions for skill operations

Change-Id: I139d8d8f4dfb5f55cc953b10ec6db5040ddc9497
2026-03-26 09:36:44 +08:00
杨翊 SionYang bc7f6b2ec2 feat(plugin-default-impl): add nacos-default-ai-pipeline-plugin module and improve visibility plugin management. (#14725)
* feat(plugin-default-impl): add nacos-default-ai-pipeline-plugin module and improve visibility plugin management.

* chore(conf): update application.properties with new plugin configs.

* chore(conf): update application.properties with new plugin configs.
2026-03-25 18:33:53 +08:00
杨翊 SionYang 5ae2a0eca4 refactor(plugin): Refactor and replace data-filter with visibility plugin (#14723)
* refactor(plugin): Rename and refactor data-filter plugin to visibility plugin.

* refactor(plugin): use new visibility plugin replace old data-filter plugin.

* refactor(skills): unify skill visibility checks and improve permission.

* refactor(auth): replace DefaultAiVisibilityService with plugin-based implementation.

* fix(plugin): temporarily return true for exclusive plugin type check.
2026-03-25 16:07:54 +08:00
qiacheng7 def0140dc0 Optimize the output format of skill-scanner. (#14710)
* support skill-scanner

* edit skill-scanner test

* add skill-scanner spi config

* update skill-scanner llm scan

* Improve skill-scanner publish readability with Markdown output

* Optimize the output format of skill-scanner.
2026-03-24 15:47:01 +08:00
qiacheng7 af88d6e7c9 Improve skill-scanner publish readability with Markdown output (#14705)
* support skill-scanner

* edit skill-scanner test

* add skill-scanner spi config

* update skill-scanner llm scan

* Improve skill-scanner publish readability with Markdown output
2026-03-24 09:25:47 +08:00
杨翊 SionYang 420a06330a feat(plugin): add AI pipeline and storage plugin support. (#14702) 2026-03-23 19:34:46 +08:00
Eric Wang c87f888fc6 feat(client): add OIDC client-side authentication support via Client Credentials Flow (#14696)
- Add OidcClientAuthServiceImpl as AbstractClientAuthService SPI implementation
  - Add OidcTokenHolder for token lifecycle management with proactive refresh window (20-30s before expiry)
  - Add OidcClientContext for configuration loading and OIDC Discovery support
  - Add OidcClientConstants for client-side config key definitions
  - Extract shared protocol-level constants into OidcProtocolConstants (plugin/auth module) to be reused by both client and server
  - Migrate server-side OidcConstants usages to OidcProtocolConstants where applicable
  - Remove unused OidcSessionManager dead code
  - Register OidcClientAuthServiceImpl in SPI META-INF/services
2026-03-23 19:28:02 +08:00
杨翊 SionYang 17c68e431a Add skill updateScope console api and do some refactor for skill api and ai authentication. (#14697)
* refactor(auth): unify anonymous AI access config keys and usage.

* refactor(auth): use constant for identity ID parameter in auth plugin.

* refactor(skills): rename and refactor skill admin model classes to SkillMeta and SkillSummary.

* feat(skill): add update skill visibility scope API.
2026-03-23 15:57:57 +08:00