Commit graph

655 commits

Author SHA1 Message Date
XiaoSeS
3bfd8a322a fix(review): handle metadata inbox without version context
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-14 20:46:51 +08:00
XiaoSeS
57bb09fde7 test: align namespace guard mock after authoring merge
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-14 20:22:09 +08:00
XiaoSeS
71790bc1b8 merge: sync main after authoring prerequisite
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-14 20:07:47 +08:00
XiaoSeS
d8dbd4f0c9 fix(authoring): prevent namespace deletion while drafts remain
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-14 19:46:41 +08:00
XiaoSeS
642e780f1e fix(authoring): protect draft transactions and validation lifecycle
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-14 18:15:44 +08:00
XiaoSeS
ccd171eac9 feat(namespace): retain invitation history and join records
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-14 11:52:19 +08:00
XiaoSeS
71d0598d92 feat(review): unify skill avatar approval and space management
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-13 18:38:30 +08:00
XiaoSeS
14cc3f11eb fix(auth): declare staged avatar uploads session-only
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-13 11:47:11 +08:00
XiaoSeS
1a7ffbe6e2 feat(avatar): stage images before skill publication
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-13 11:15:35 +08:00
XiaoSeS
3b3e5ed27c test(avatar): cover policy and release generation boundaries
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-12 16:39:25 +08:00
XiaoSeS
bc2592c978 test(avatar): verify recovery with PostgreSQL transactions
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-12 16:16:15 +08:00
XiaoSeS
5f2d47968c feat: combine Skill avatars and namespace invitations
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-12 13:42:31 +08:00
XiaoSeS
17a18b9319 fix(avatar): recover pending reviews and cover moderation flows
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-12 13:42:26 +08:00
XiaoSeS
b67ea7ddb8 feat(avatar): add review and owner interfaces
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-12 13:42:11 +08:00
XiaoSeS
e65795d313 test(namespace): update command lookup fixtures
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-12 13:14:26 +08:00
XiaoSeS
44a1623620 fix(invitation): align API with issue contract
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-12 12:48:18 +08:00
XiaoSeS
6299733dd8 test(invitation): cover invitation permission boundaries
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-12 12:36:35 +08:00
XiaoSeS
f12019cf14 fix(invitation): keep login return target on join route
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-12 12:32:12 +08:00
XiaoSeS
ff69136ddb test(namespace): cover invitation expiry and role boundaries
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-12 12:28:59 +08:00
XiaoSeS
7d36d42056 test(namespace): cover invitation mutation races
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-12 12:15:49 +08:00
XiaoSeS
27687713d2 fix(namespace): complete invitation review follow-up
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-12 12:06:34 +08:00
XiaoSeS
9c997f7eca feat(namespace): add one-time invitation links
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-12 11:55:47 +08:00
XiaoSeS
f7e96bb8a4 feat(avatar): add owner and reviewer workflows
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-12 11:49:48 +08:00
XiaoSeS
b1d5391102 feat(namespace): add single-use invitation persistence
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-12 11:37:01 +08:00
XiaoSeS
6d42bd6708 feat(avatar): persist candidate lifecycle
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-12 11:34:39 +08:00
XiaoSeS
57477e2614 feat(avatar): normalize uploaded crop on server
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-12 11:32:13 +08:00
zjncs
56531d2692 fix(authoring): enforce draft ownership on file and run listing
Addresses the layer review on #935:

- listFiles and listRuns now resolve the draft through
  getOwnedDraft first, enforcing the same owner-or-SUPER_ADMIN policy
  as every other draft endpoint. Previously an authenticated non-owner
  could read another draft's file metadata and validation-run summary.
- new SkillAuthoringControllerAuthorizationTest: HTTP-level two-user
  coverage on both route prefixes (/api/v1/authoring and
  /api/web/authoring) — owner success, SUPER_ADMIN success, and the
  authenticated non-owner rejection, for both endpoints.
- migration renumbered to V69__authoring_platform.sql (upstream's
  system_auth_settings took V68), rebased on the latest main.
- web/src/api/generated/schema.d.ts regenerated from this branch's
  live OpenAPI surface (includes upstream API drift since the last
  generation plus the authoring endpoints).

Signed-off-by: zjncs <18910855655@163.com>
2026-10-12 11:21:04 +08:00
zjncs
a5729d24e1 feat(authoring): draft domain model, CRUD and structure-layer validation
Layer (a) of the authoring platform (tracked in #934): the SkillDraft
domain — drafts with revisions, digest and optimistic concurrency, draft
files in object storage, validation runs/events/findings — plus the V68
migration, the draft CRUD REST API with a scaffolded SKILL.md, and the
STRUCTURE validation layer executed by the run orchestrator (package
layout, frontmatter rules, file limits) reporting findings with
machine-applicable fix suggestions. Runs and findings stream over SSE
with a polling fallback.

Later layers add runtime binding and behavior execution (b), the fix
loop and publish integration (c), the web workbench (d) and docs (e).

Verified: skillhub-domain 609 tests green; the draft flow integration
test covers scaffold → broken frontmatter → FAILED run with a fixable
FRONTMATTER_FIELD_MISSING finding → repair → SUCCEEDED re-validation,
plus the optimistic-concurrency conflict path.

Signed-off-by: zjncs <18910855655@163.com>
2026-10-12 11:07:24 +08:00
XiaoSeS
68a99b21bd fix(auth): keep initial grant rules out of SQL checks
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-10 17:21:45 +08:00
XiaoSeS
f630519625 test(auth): verify initial grant seed across transactions
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-10 15:42:18 +08:00
XiaoSeS
b4a037b0ff test(auth): verify seed deletion and same-email grant isolation
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-10 15:42:18 +08:00
XiaoSeS
6842b40132 test(auth): persist initial grant audit in PostgreSQL
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-10 15:42:17 +08:00
XiaoSeS
e8de0059ef test(auth): cover competing initial grants and smoke endpoints
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-10 15:42:17 +08:00
XiaoSeS
5120f4f046 test(auth): verify initial role grants in PostgreSQL
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-10 15:42:17 +08:00
XiaoSeS
a2249454cf test(auth): cover public capabilities for all switch states
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-10 15:42:17 +08:00
XiaoSeS
ad2412c075 fix(auth): preserve login on existing installations
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-10 15:42:17 +08:00
XiaoSeS
f297fdfd09 fix(auth): verify initial grants and auth UI behavior
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-10 15:42:17 +08:00
XiaoSeS
df9b869d8e feat(auth): add system login settings and initial role grants
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-10 15:42:17 +08:00
XiaoSeS
863e240838 test(promotion): cover unpublished sources and version races
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-09 18:28:39 +08:00
XiaoSeS
84bda97dee feat(promotion): support reviewed global updates and revocation
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-09 18:14:59 +08:00
XiaoSeS
9d2c7d03a1 feat(starter): activate triage-nda built-in skill
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-09 10:10:57 +08:00
XiaoSeS
b7cfbe193b fix(auth): serialize account merges and revoke secondary tokens
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-08 13:56:23 +08:00
XiaoSeS
7a53782985 test(auth): bound row lock fixture wait
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-08 12:20:51 +08:00
XiaoSeS
15abf9ce76 test(auth): verify merge row lock contention
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-08 12:18:19 +08:00
XiaoSeS
291f5fc24f test(auth): cover merge cancellation races
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-08 12:15:13 +08:00
XiaoSeS
dc635a24d6 fix(auth): require secondary approval before account merge
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-08 12:03:55 +08:00
XiaoSeS
455cbb5ba5
Merge pull request #902 from iflytek/feature/enterprise-login-r1b2-org-admin
feat(auth): add organization creation control plane slice
2026-09-24 15:58:57 +08:00
dongmucat
0fd222d1e7
Merge pull request #879 from iflytek/feature/scanner-2-1-upgrade
fix(scanner): harden Scanner 2.1 integration
2026-09-24 15:47:20 +08:00
XiaoSeS
1e2de2798b test(auth): verify organization creation rollback
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-09-24 15:14:16 +08:00
XiaoSeS
52e4e052a1 feat(auth): add organization creation control plane slice
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-09-24 14:43:17 +08:00