mirror of
https://git.openapi.site/https://github.com/desirecore/market.git
synced 2026-09-05 20:03:43 +08:00
feat: 市场支持团队条目类型并上架合同审查团队 (#110)
## 变更 / What
市场此前只有 `agents` 与 `skills` 两类条目。本 PR 加入**团队(teams)**条目类型,并上架第一条真实团队
listing。
The market supported only `agents` and `skills`. This PR adds a
**teams** entry type and lists the first real team.
## 一、支持团队条目类型
「支持一种新条目类型」实际涉及 4 组共 11 个文件,比表面看到的多:
**客户端契约快照**
- 新增 `schemas/market-team-entry.client.schema.json`,用 esbuild 打包客户端
`packages/schemas/src/market.ts` 后导出生成。用同样方法重新生成
`market-agent-entry.client.schema.json` 验证过管线——字节完全一致(含属性顺序),确认不是手工誊抄。
**Sidecar schema**
- `identity.kind` 枚举加 `team`;新增 `$defs.teamSpec`;接入 `spec.oneOf` 与
kind→spec 派发
**校验器(工作量主要在这里)**
- `scripts/catalog/validate_catalog_metadata.py`:`load_legacy`
原先硬编码只认两个根目录。抽出 `CATALOG_ROOTS` 常量同时驱动允许的父目录集合与错误文案;按 kind 分派客户端 schema
校验;`teams` 进 stats 与 `--require-complete` 覆盖统计;把**严格 provenance
比对**与「可安装 pointer 必须自带不可变 ref」两道门禁扩展到团队
- `scripts/i18n/validate-i18n.py`:**它独立重算计数并逐个校验 `entry.json`**,不接团队会漏校
- `.github/workflows/i18n-validate.yml`:变更检测的 grep 不含 `teams/`——**一个只改
teams 的 PR 会报「无 i18n 相关变更,跳过校验」然后零校验通过**
- 测试:`test_validate_catalog_metadata.py` 29→47,`test_validate_i18n.py`
9→17
**顺带修正一条本就不对的规则**:`icon` 此前被要求「每个 entry.json 都必须有非空内联 SVG」,但运行时 schema 里
`marketAgentSchema` 与 `marketTeamSchema` **都没有 `icon` 字段**(只有 skill
有)。也就是说这条规则对 Agent pointer 同样在强加死重量,只因本仓库暂无 agent pointer 条目而未暴露。改为
`ICON_RENDERED_KINDS = {"skill"}`,agent/team 声明 icon
时给**警告**而非错误,文案说明「下一个维护者会以为改它能改变卡片」。
## 二、上架合同审查团队
`teams/contract-review-team/`(`entry.json` + sidecar)。
**团队条目是 fork 指针卡,不分发正文**:市场只存展示元数据 + git-only `source`,真实定义(`team.json`
/ `members.json` / `shared/`)在 `source.repoUrl` 指向的仓库里。安装即
`forkTeam`,更新即 `git pull`——组合固定,因此**没有** `installPolicy` /
`updatePolicy`。
| 字段 | 值 | 依据 |
|---|---|---|
| `source.ref` | `73cd87a9901cc548871927e9d5dbec8e4cc6c2b1` | v0.1.1
的**完整 SHA**。tag 不是可复现 pin,validator 有测试专门拒绝 |
| `latestVersion` | `0.1.1` | 上游真实 tag,与 `release.version` 交叉校验 |
| `license` | `MIT` | 上游仓库真有 LICENSE,已在 pinned ref 的快照中复验 |
| `redistribution` | `source-pointer-only` |
市场从不打包团队正文,只给指针——这是交付形态,与许可证宽松与否无关 |
| `requiredClientVersion` | `10.0.137` | 六个成员都声明了 `FileDigest`
内置工具,它随该版本发布 |
| `memberCount` / `memberNames` | 6 / 5 名 | schema 规定前者**含**组长、后者**不含**
|
| `availability` | `listing-only` | 见下 |
**`availability` 为什么不是 `installable`**:四项证据满足两项(不可变 pin ✓、已知 license
✓),缺的 `reviewedAt` 与 `governance.compliance`
本质是**一次尚未发生的治理审查**——需要具名方在具体日期针对这个确切 ref 审过许可合规、第三方内容与商标使用。没发生的事不能写进目录。
补充一个事实:本仓库**零个 sidecar 有 `compliance` 块,29 个 pointer 条目全是
listing-only**,`installable` 路径从未在任何真实条目上走过。这不阻止安装——fork 由 `source` 驱动。
**`license.evidencePath` 的基准此前是未定义的**:schema 只说
`safeRelativePath`,没规定相对谁。仓库里仅有的两个先例(`guizang-ppt`、`presentation-forge`)都是
vendored 技能,LICENSE 物理上在条目目录里。按那个读法,pointer 条目写 `evidencePath`
断言的是市场目录下有该文件——对 pointer 永远不成立。新增 `license-evidence` 规则按条目形态分派:vendored
要求文件存在(error),pointer 要求条目已 pin(warning),两种读法写进 README。
## 校验 / Validation
```
test_validate_catalog_metadata.py 47 tests OK
test_validate_i18n.py 17 tests OK
test_collection_generator.py exit 0
validate_catalog_metadata.py --require-complete
0 error, 116 warning (agents=1, teams=1, publishableSkills=62, sidecars=64)
validate-i18n.py / --online 0 error, 116 warning
translate.py --check exit 0
gen-collection-children.py --check exit 0
```
116 warnings 即加入团队之前的基线——**本条 listing 贡献 0 个警告**。
真实条目上的反向控制(跑在 rsync 副本上,仓库保持干净):
```
source.kind=zip → team-entry-schema (error)
install/updatePolicy 出现 → team-entry-schema (error)
requiredClientVersion 漂移 → legacy-consistency (error)
memberCount 漂移 → legacy-consistency (error)
provenance ref 漂移 → legacy-consistency (error)
可安装但无不可变 ref → installable-evidence (error)
evidencePath 在未 pin 的 pointer → license-evidence (warning)
```
另用**客户端真实校验器**(`parseMarketTeamEntry`,不是快照)验证条目通过,且多写一个字段会被拒。
## 公开信息边界 / Public information boundary
全树扫描无新增命中。团队内容使用「某某科技(北京)有限公司」这类标准中文占位。
---------
Co-authored-by: yi-ge <mizan57533@gmail.com>
This commit is contained in:
101
teams/contract-review-team/catalog-metadata.v1.json
Normal file
101
teams/contract-review-team/catalog-metadata.v1.json
Normal file
@@ -0,0 +1,101 @@
|
||||
{
|
||||
"$schema": "../../schemas/catalog-metadata.v1.schema.json",
|
||||
"schemaVersion": 1,
|
||||
"identity": {
|
||||
"kind": "team",
|
||||
"id": "contract-review-team"
|
||||
},
|
||||
"presentation": {
|
||||
"defaultLocale": "en-US",
|
||||
"i18n": {
|
||||
"en-US": {
|
||||
"name": "Contract Review Team",
|
||||
"summary": "A six-member contract review team: intake gating, clause structuring, risk scanning and jurisdiction checks, closed by an independent reviewer who re-verifies against the source text before reporting",
|
||||
"description": "Six members work a fixed seven-step chain. The intake officer runs hard checks and freezes the reviewed baseline, stopping the pipeline outright when a blocking condition is hit. The clause officer rewrites the body and attachments into structured facts anchored to clause numbers and page references, keeping genuine ambiguity intact instead of resolving it early. Risk scanning and jurisdiction checks then run in parallel over that same structured record. The reviewer closes the chain: it does not read the earlier members' reasoning, goes back to the source text to re-establish evidence, and only then composes the report.\n\nThis is a team, not one agent running the whole flow end to end. Responsibilities are split across six members and one independent review pass is kept, so a run takes longer but leaves a traceable evidence chain and a clear boundary for each finding. Pick the shape that fits the job.\n\nThe output is supporting material for review work. It is not legal advice, it carries no legal effect, and it does not replace a qualified lawyer or in-house counsel. Every conclusion has to be checked by a qualified person before it is relied on."
|
||||
},
|
||||
"zh-CN": {
|
||||
"name": "合同审查团队",
|
||||
"summary": "六名成员分工的合同审查团队:输入治理、条款结构化、风险识别、法域合规,最后由独立复核成员回原文重新取证再出报告",
|
||||
"description": "六名成员按固定七步链路协作。输入治理官先做硬校验并冻结受审基线,命中阻断项直接终止流水线;条款结构化官把正文与附件转写为带条款编号和页码锚点的结构化事实,原始歧义原样保留,不替下游提前消歧;风险识别官与法域合规官在同一份结构化事实上并行工作;复核出报告官收尾——不读前序成员的推理过程,回到原文重新取证后独立判定,再汇总成报告。\n\n这是一个团队,不是单个智能体跑完全流程:职责拆到六个成员,并保留一次独立复核,因此一次运行耗时更长,换来的是可追溯的证据链和清晰的责任边界。按任务需要选择合适的形态即可。\n\n产出是供审阅使用的辅助材料,不构成法律意见,不具有法律效力,也不替代律师或法务的专业判断;任何结论都需由具备资质的人员复核后再使用。"
|
||||
}
|
||||
},
|
||||
"icon": {
|
||||
"kind": "letter",
|
||||
"value": "合审"
|
||||
},
|
||||
"category": "business",
|
||||
"tags": [
|
||||
"contract-review",
|
||||
"multi-agent-team",
|
||||
"risk",
|
||||
"compliance",
|
||||
"legal-collaboration"
|
||||
]
|
||||
},
|
||||
"release": {
|
||||
"state": "known",
|
||||
"version": "0.1.1",
|
||||
"versionScheme": "semver"
|
||||
},
|
||||
"timestamps": {
|
||||
"catalogUpdatedAt": {
|
||||
"state": "known",
|
||||
"value": "2026-09-01",
|
||||
"precision": "day"
|
||||
},
|
||||
"releasePublishedAt": {
|
||||
"state": "known",
|
||||
"value": "2026-09-01T05:18:09Z",
|
||||
"precision": "second"
|
||||
},
|
||||
"reviewedAt": {
|
||||
"state": "unknown"
|
||||
},
|
||||
"upstreamObservedAt": {
|
||||
"state": "known",
|
||||
"value": "2026-09-01T05:21:24Z",
|
||||
"precision": "second"
|
||||
}
|
||||
},
|
||||
"provenance": {
|
||||
"content": {
|
||||
"kind": "git",
|
||||
"url": "https://github.com/desirecore-agent/contract-review-team.git",
|
||||
"ref": "73cd87a9901cc548871927e9d5dbec8e4cc6c2b1"
|
||||
}
|
||||
},
|
||||
"governance": {
|
||||
"stewardship": "official",
|
||||
"availability": "listing-only",
|
||||
"license": {
|
||||
"state": "known",
|
||||
"value": "MIT",
|
||||
"evidencePath": "LICENSE"
|
||||
},
|
||||
"redistribution": "source-pointer-only",
|
||||
"upstreamMaintainer": {
|
||||
"name": "DesireCore Agent",
|
||||
"url": "https://github.com/desirecore-agent",
|
||||
"verified": true
|
||||
}
|
||||
},
|
||||
"compatibility": {
|
||||
"platforms": {
|
||||
"state": "unknown"
|
||||
},
|
||||
"requiredClientVersion": "10.0.137"
|
||||
},
|
||||
"spec": {
|
||||
"kind": "team",
|
||||
"supervisorName": "合同审查统筹官",
|
||||
"supervisorAgentId": "contract-review-lead",
|
||||
"memberCount": 6,
|
||||
"memberNames": [
|
||||
"合同输入治理官",
|
||||
"条款结构化官",
|
||||
"合同风险识别官",
|
||||
"法域合规官",
|
||||
"合同复核出报告官"
|
||||
]
|
||||
}
|
||||
}
|
||||
53
teams/contract-review-team/entry.json
Normal file
53
teams/contract-review-team/entry.json
Normal file
@@ -0,0 +1,53 @@
|
||||
{
|
||||
"id": "contract-review-team",
|
||||
"name": "Contract Review Team",
|
||||
"category": "business",
|
||||
"tags": [
|
||||
"contract-review",
|
||||
"multi-agent-team",
|
||||
"risk",
|
||||
"compliance",
|
||||
"legal-collaboration"
|
||||
],
|
||||
"latestVersion": "0.1.1",
|
||||
"i18n": {
|
||||
"zh-CN": {
|
||||
"name": "合同审查团队",
|
||||
"shortDesc": "六名成员分工的合同审查团队:输入治理、条款结构化、风险识别、法域合规,最后由独立复核成员回原文重新取证再出报告"
|
||||
},
|
||||
"en-US": {
|
||||
"name": "Contract Review Team",
|
||||
"shortDesc": "A six-member contract review team: intake gating, clause structuring, risk scanning and jurisdiction checks, closed by an independent reviewer who re-verifies against the source text before reporting"
|
||||
}
|
||||
},
|
||||
"maintainer": {
|
||||
"name": "DesireCore Agent",
|
||||
"verified": true,
|
||||
"account": "desirecore-agent",
|
||||
"url": "https://github.com/desirecore-agent"
|
||||
},
|
||||
"stewardship": "official",
|
||||
"license": "MIT",
|
||||
"redistribution": "source-pointer-only",
|
||||
"source": {
|
||||
"kind": "git",
|
||||
"repoUrl": "https://github.com/desirecore-agent/contract-review-team.git",
|
||||
"repoBranch": "main",
|
||||
"ref": "73cd87a9901cc548871927e9d5dbec8e4cc6c2b1"
|
||||
},
|
||||
"requiredClientVersion": "10.0.137",
|
||||
"avatar": {
|
||||
"t": "合审",
|
||||
"bg": "linear-gradient(135deg, #5856D6, #3634A3)"
|
||||
},
|
||||
"supervisorName": "合同审查统筹官",
|
||||
"supervisorAgentId": "contract-review-lead",
|
||||
"memberCount": 6,
|
||||
"memberNames": [
|
||||
"合同输入治理官",
|
||||
"条款结构化官",
|
||||
"合同风险识别官",
|
||||
"法域合规官",
|
||||
"合同复核出报告官"
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user