XiaoSeS
74a5b873f0
Merge remote-tracking branch 'origin/main' into codex/fix-pr866-owner-yank
...
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
# Conflicts:
# web/src/api/generated/schema.d.ts
2026-09-17 17:11:59 +08:00
Danny
7cf9f22182
feat(cli): add OAuth device flow login ( #857 )
...
* feat(cli): add OAuth device flow login
Signed-off-by: Danny5487401 <64348131+Danny5487401@users.noreply.github.com>
* fix(cli): avoid browser launch in headless login
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* fix(cli): complete device flow runtime path
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
---------
Signed-off-by: Danny5487401 <64348131+Danny5487401@users.noreply.github.com>
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
Co-authored-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-09-17 16:29:20 +08:00
dongmucat
c888be7212
feat(cli): add Pi agent profile
2026-09-17 14:23:30 +08:00
FenjuFu
120d616ca5
docs(publish): correct skill package metadata requirements
2026-09-17 13:48:25 +08:00
XiaoSeS
b4779735bd
feat(suite): publish suites from multi-skill bundles
2026-09-17 11:16:39 +08:00
XiaoSeS
6d8b7afc89
Merge remote-tracking branch 'origin/main' into codex/fix-pr866-owner-yank
...
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
# Conflicts:
# web/src/api/generated/schema.d.ts
2026-09-16 18:21:54 +08:00
XiaoSeS
ac9204ce67
fix(skills): align owner lifecycle token access
...
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-09-16 17:23:25 +08:00
Thiago Nascimento Nogueira
2014716904
feat(skills): let skill owners yank a published version
...
Yanking a published version is only available through
POST /api/v1/admin/skills/versions/{versionId}/yank, which is
session-only (SESSION_ONLY_ROUTES covers /api/v1/admin/**) and requires
SKILL_ADMIN or SUPER_ADMIN. A skill owner therefore cannot pull a
broken release themselves, neither from the web surface nor from a
script holding an API token.
In package registries yank is an act of the publisher: `cargo yank`
and PyPI's "yank release" are performed by the package owner, not by a
registry admin, because the goal is to stop new installs of a bad
release while keeping the artifact available for lock files. SkillHub
already lets owners archive, unarchive, rerelease and delete draft
versions through SkillLifecycleController under the
assertCanManageLifecycle rule (owner, or namespace ADMIN/OWNER); yank
belongs on the same surface with the same rule.
Changes:
- SkillGovernanceService: add an owner-checked yankVersion(skill,
version, actor, roles, ip, ua, reason) that runs
assertCanManageLifecycle and then the same yank logic as the admin
variant, now shared in yankVersionInternal. The admin entry point is
unchanged for AdminSkillController.
- SkillLifecycleAppService / GovernanceWorkflowAppService: resolve
skill and version by namespace/slug/version, delegate to the new
domain method, and return SkillLifecycleMutationResponse with action
YANK and the resulting version status. The YANK_SKILL_VERSION audit
record and SkillVersionYankedEvent are emitted by the domain service
exactly as for the admin path.
- SkillLifecycleController: POST /{namespace}/{slug}/versions/{version}/yank
on both /api/v1/skills and /api/web/skills, optional body
AdminSkillActionRequest (reason).
- RouteSecurityPolicyRegistry: require skill:yank for the new route on
both prefixes, so tokens can reach it as the SESSION_ONLY_ROUTES
comment promises for every route the authorization list opens. The
admin yank stays session-only. No allow-list of scopes exists outside
the registry; the docs' scope enumeration is updated to include
skill:yank.
- Tests: RouteSecurityPolicyRegistryTest (scope required on both
prefixes, admin route still closed), SkillGovernanceServiceTest
(owner and namespace ADMIN allowed, MEMBER forbidden, unpublished
rejected), SkillLifecycleControllerTest (envelope with and without
body).
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DdnYX4jTS3JwMMP9JCGxzU
2026-09-11 19:52:37 +00:00
XiaoSeS
4ef0f5c8ed
feat(web): reorganize marketplace and console navigation
...
Made-with: Proma
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-09-11 16:58:57 +08:00
XiaoSeS
687097ad91
Merge pull request #849 from iflytek/codex/chore/remove-legacy-document-848-20260910
...
Security / Dependency Review (push) Waiting to run
Security / CodeQL (java-kotlin) (push) Waiting to run
Security / CodeQL (javascript-typescript) (push) Waiting to run
Security / CodeQL (python) (push) Waiting to run
Deploy Docs / build (push) Has been cancelled
Deploy Docs / Deploy (push) Has been cancelled
chore(docs): remove legacy Docusaurus site
2026-09-10 19:16:16 +08:00
XiaoSeS
6f565e0a3c
docs: remove legacy documentation references
...
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-09-10 17:15:49 +08:00
XiaoSeS
180c85a060
docs(faq): preserve PostgreSQL permission guidance
...
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-09-10 16:59:38 +08:00
XiaoSeS
f966ce9d00
chore(docs): remove legacy Docusaurus site
...
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-09-10 16:51:05 +08:00
XiaoSeS
c0b2012a9c
docs(faq): target the published deployment guide
...
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-09-10 16:42:53 +08:00
XiaoSeS
ce4590c50f
Merge remote-tracking branch 'origin/main' into feature/skill-suites-signed-final
...
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-09-09 18:23:05 +08:00
XiaoSeS
c36739ad16
Merge pull request #836 from iflytek/feat/skillhub-cli-builtin-20260908
...
feat(skill): add first-party SkillHub CLI guide
2026-09-09 17:29:56 +08:00
dongmucat
ccacb530e3
feat(cli): add AStudio agent profile ( #840 )
...
* feat(cli): add AstronStudio agent profile
Signed-off-by: dongmucat <1127093059@qq.com>
* test(cli): make AstronStudio path assertions portable
Signed-off-by: dongmucat <1127093059@qq.com>
* docs(cli): document AstronStudio install target
Signed-off-by: dongmucat <1127093059@qq.com>
* fix(cli): rename AstronStudio profile to AStudio
Signed-off-by: dongmucat <1127093059@qq.com>
* fix(cli): use stable lowercase AStudio agent id
Signed-off-by: dongmucat <1127093059@qq.com>
---------
Signed-off-by: dongmucat <1127093059@qq.com>
2026-09-09 17:26:34 +08:00
XiaoSeS
c33cd75e7a
Merge remote-tracking branch 'origin/main' into feature/skill-suites-signed-final
...
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-09-09 13:55:06 +08:00
XiaoSeS
8c0b853023
fix(suite): close rollout and concurrency gaps
...
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-09-09 13:54:59 +08:00
XiaoSeS
a4b35b236a
fix(suite): bind exact members and protect local installs
...
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-09-09 13:54:59 +08:00
XiaoSeS
d0e8c168fa
feat(suite): require and expose entry skill
...
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-09-09 13:54:59 +08:00
XiaoSeS
0ae50f30d7
feat(skill): add first-party SkillHub CLI guide
...
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-09-09 09:24:21 +08:00
XiaoSeS
717165bd69
fix(cli): preserve shared SkillHub state fields ( #835 )
...
Deploy Docs / build (push) Waiting to run
Deploy Docs / Deploy (push) Blocked by required conditions
Security / Dependency Review (push) Waiting to run
Security / CodeQL (java-kotlin) (push) Waiting to run
Security / CodeQL (javascript-typescript) (push) Waiting to run
Security / CodeQL (python) (push) Waiting to run
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-09-08 19:41:49 +08:00
XiaoSeS
859987e3bb
feat(suite): add first-class skill suites
...
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-09-08 19:30:57 +08:00
XiaoSeS
ccc13291b2
fix(scanner): keep failure details private
...
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-09-03 19:32:37 +08:00
XiaoSeS
8b09c23dc4
fix(scanner): make terminal failures recoverable
...
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-09-03 19:32:37 +08:00
XiaoSeS
4bfb5e2692
fix(scanner): expire unavailable pending tasks
...
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-09-03 19:32:37 +08:00
XiaoSeS
d6afc43364
Merge pull request #807 from iflytek/codex/refactor/issue-622-notification-polling
...
refactor(notification): replace SSE with HTTP polling
2026-09-03 13:48:57 +08:00
XiaoSeS
4d71a16ddd
fix(notification): complete polling migration
...
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-09-03 11:38:02 +08:00
XiaoSeS
efa3c1ae65
refactor(notification): replace SSE with HTTP polling
...
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-09-03 11:38:02 +08:00
XiaoSeS
4670edf817
docs(compat): align slug validation guidance
...
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-09-03 11:27:54 +08:00
XiaoSeS
3cbf622c14
docs(compat): clarify canonical slug validation
...
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-09-03 11:24:56 +08:00
XiaoSeS
5191110514
docs(compat): avoid incomplete support list
...
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-09-03 10:52:26 +08:00
XiaoSeS
f5b67ea310
docs(compat): document first-party publish token
...
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-09-03 10:48:07 +08:00
XiaoSeS
923c1df4e1
docs(compat): remove unsupported publish guidance
...
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-09-03 10:40:35 +08:00
XiaoSeS
0e16df8163
docs(compat): align ClawHub support guidance
...
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-09-03 10:28:46 +08:00
XiaoSeS
e43fa82af8
docs(compat): clarify supported ClawHub workflows
...
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-09-03 09:43:23 +08:00
XiaoSeS
fc7c59534a
fix(platform): harden sessions, scanner recovery, and CLI guidance ( #801 )
...
* fix(auth): recover from unreadable sessions
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* fix(scanner): defer unavailable scan tasks safely
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* fix(web): prefer the SkillHub CLI install command
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* fix(auth): decode session cookies during recovery
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* fix(runtime): address scanner and session review findings
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* fix(scanner): defer all server-side outages
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* docs(scanner): clarify deferred failure semantics
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* test(scanner): cover recovery boundaries
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* fix(scanner): register startup hook on router
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* test(e2e): align install defaults and reuse auth session
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
---------
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-09-02 20:15:42 +08:00
XiaoSeS
45d341f144
feat(review): add skill comments and user feedback ( #793 )
...
* feat(review): add skill review domain model
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* feat(review): expose skill reviews in API and UI
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* fix(review): preserve moderation under concurrent edits
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* fix(review): scope concurrent write conflicts
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* fix(review): restore web build compatibility
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* fix(review): keep author cleanup available
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* fix(review): preserve author cleanup access
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* fix(review): require review score contract
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* test(review): strengthen failure and concurrency coverage
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* test(review): tighten persistence assertions
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* test(review): disambiguate repository ports
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* fix(review): enable request validation
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* test(review): align validation and postgres coverage
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* test(namespace): verify invalid batch has no side effects
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* test(web): align accessibility and plural assertions
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* test(i18n): require complete plural references
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* fix(review): wrap editor actions on mobile
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* fix(review): wrap long mobile labels
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* fix(review): disable edits for archived skills
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* fix(review): enforce archived mutation guard
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
---------
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-09-02 11:15:52 +08:00
XiaoSeS
6ab8faa6b9
feat(cli): add source-safe skill upgrades ( #796 )
...
* feat(cli): add source-safe skill upgrades
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* fix(cli): harden skill upgrade lifecycle
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* fix(cli): make multi-target upgrades failure-safe
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* test(cli): cover upgrade selection and fallback boundaries
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* test(cli): use a dead pid for stale lock recovery
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* test(cli): prove upgrade safety invariants
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* test(cli): prove manual ownership remains untouched
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* test(cli): bind ownership sentinels to each fixture
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* test(cli): keep upgrade assertions registry-scoped
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* fix(cli): close upgrade commit races
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* fix(cli): keep rollback backup path narrowed
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* fix(cli): reject upgrade targets removed after planning
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* fix(cli): serialize remove with target upgrades
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* test(cli): prove shared target lock cleanup
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* fix(cli): make stale target lock recovery ownership-safe
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* fix(cli): use proven cross-process target locks
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* test(cli): synchronize target lock contenders
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* test(cli): bound target lock worker cleanup
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* test(cli): satisfy target lock worker lint
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* fix(cli): serialize inventory and alias target mutations
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* test(cli): cover lock root safety boundaries
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* fix(cli): keep target lock identity stable
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* fix(cli): report partial upgrade failures
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* fix(cli): preserve committed upgrade results
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* fix(cli): surface install lifecycle warnings
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* test(cli): prove lifecycle warning outputs
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* test(cli): assert structured upgrade failures
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* fix(cli): keep portable install paths
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* fix(cli): unify aliased target identity
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* test(cli): accept canonical relative paths
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* test(cli): verify portable target identity
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
* test(cli): synchronize stale lock contenders
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
---------
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-09-02 10:50:09 +08:00
XiaoSeS
f993ad6533
Merge pull request #712 from Vast-Stars/feat/personal-namespace-provisioning
...
feat(namespace): auto-provision a personal namespace on registration
2026-08-28 17:04:21 +08:00
XiaoSeS
37e3c63236
Merge pull request #688 from iflytek/fix/auth-email-assurance-guard-main
...
fix(auth): enforce trusted OAuth identity attributes
2026-08-28 17:04:15 +08:00
XiaoSeS
eeb63613f2
fix(namespace): enable personal provisioning by default
2026-08-28 16:42:26 +08:00
XiaoSeS
ee0f0763db
refactor(namespace): keep personal provisioning configuration-only
2026-08-28 15:55:29 +08:00
XiaoSeS
dc31bb97f4
Revert "feat(namespace): backfill personal namespaces for existing accounts"
...
This reverts commit 2d50437e4f .
2026-08-28 15:19:56 +08:00
XiaoSeS
eba2762b5b
Revert "feat(namespace): let operators choose which namespaces new accounts join"
...
This reverts commit a9e7f43e5a .
2026-08-28 15:19:56 +08:00
FenjuFu
26f49e6819
docs(governance): add DPGA policy evidence
...
Validated documentation, links, markdown checks, and CI.
2026-08-27 15:07:42 +08:00
FenjuFu
7fc1df5043
feat(ratelimit): make thresholds runtime-configurable
...
Validated locally and in CI, including runtime configuration documentation.
2026-08-27 15:07:31 +08:00
FenjuFu
f846da230c
feat: add initial RISC-V image support ( #725 )
...
Security / Dependency Review (push) Waiting to run
Security / CodeQL (java-kotlin) (push) Waiting to run
Security / CodeQL (javascript-typescript) (push) Waiting to run
Security / CodeQL (python) (push) Waiting to run
Deploy Docs / build (push) Has been cancelled
Deploy Docs / Deploy (push) Has been cancelled
* feat: add initial RISC-V image support
Signed-off-by: FenjuFu <92919259+FenjuFu@users.noreply.github.com>
* chore(ci): tighten riscv64 image guardrails
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
---------
Signed-off-by: FenjuFu <92919259+FenjuFu@users.noreply.github.com>
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
Co-authored-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-08-24 16:37:34 +08:00
XiaoSeS
1b7a6d5544
chore(deps): resolve dependabot npm alerts
...
Resolve open npm Dependabot alerts for the web app and docs site by refreshing dependency overrides and lockfiles.
Also sets the staging web forwarded-proto default so `make staging` can render the shared Nginx template when using the bare nginx image.
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-08-24 16:08:07 +08:00