Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 49 additions & 0 deletions adapters/jiuwenswarm/manifest.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Human-reviewed adapter for openJiuwen-ai/jiuwenswarm (kb init pilot 2).
# Upstream facts checked 2026-09-30: public, default branch `develop`, Python
# (package `jiuwenswarm/` plus the `jiuwenbox` sandbox service under
# `jiuwenbox/src/jiuwenbox/`), pytest under `tests/`, docs in `docs/zh` and
# `docs/en` (the same set in two languages), no GitHub Actions workflows.
# It has no knowledge pages yet: `kb init jiuwenswarm` creates repos/jiuwenswarm/.
name: jiuwenswarm
status: active
created_by: human
schema_version: 1
capabilities: []

repo:
path: ${JIUWENSWARM_REPO}
full_name: openJiuwen-ai/jiuwenswarm
aliases: [jiuwenswarm, openJiuwen-ai/jiuwenswarm]
default_branch: develop
language: python

knowledge:
source: openJiuwen-ai/jiuwenswarm@develop
repo_subdir: repos/jiuwenswarm

push:
default_remote: origin
protected_branches: [develop, main, master]
allowed: false

# Knowledge service: declared but disabled; kb init's third PR flips it to
# shadow after human review (design kb-init §9).
knowledge_lifecycle:
enabled: false
mode: shadow
knowledge_dir: repos/jiuwenswarm
release:
trigger: none
upstream_visibility: public
init:
seeds:
# linked, never copied: repo-neutral design-review rules
- general/review/rules.md
# linked: check the existing tests before proposing a fix; the repo
# has a large tests/ tree (unit, integration, system, e2e)
- general/ci/guides/inspect-existing-tests-first.md
# one language only: docs/zh and docs/en carry the same pages, and reading
# both would double the doc-corpus cost for no new facts
doc_globs: [README_CN.md, TESTING.md, "docs/zh/**/*.md", jiuwenbox/README_CN.md]
source_roots: [jiuwenswarm/, jiuwenbox/src/jiuwenbox/]
exclude: ["*/tests/*", "*/__init__.py", "*/resources/*", "*/node_modules/*"]
2 changes: 1 addition & 1 deletion doc/knowledge/SCHEMA.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ contradictions: [相对路径] # 可选:与本页冲突的页面

新标签必须先加入此表再使用(防止标签蔓延):

- 归属:`general`、`vllm-omni`、`afd-plugin`、`vllm-gr`
- 归属:`general`、`vllm-omni`、`afd-plugin`、`vllm-gr`、`jiuwenswarm`
- 工作主题:`review`、`ci`、`docs`、`git`、`debug`、`bug`、`benchmark`、`environment`、
`remote`、`agents`、`planning`、`dev`、`rebase`
- 代码/模型轴:`components`、`models`、`diffusion`、`model-executor`、`serving`、
Expand Down
36 changes: 36 additions & 0 deletions test/test_kb_init_pilot_jiuwenswarm.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
"""kb init pilot 2: the jiuwenswarm adapter is loadable, has no knowledge
pages yet, and its init block parses with seeds that exist (design kb-init §12)."""

from __future__ import annotations

from infermatrix_copilot.adapters.base import AdapterRegistry
from infermatrix_copilot.kb_service.config import load_registry, validate_seeds
from infermatrix_copilot.sdk._resources import adapters_root, knowledge_root


def test_jiuwenswarm_adapter_is_a_disabled_empty_kb_pilot():
adapter = next(a for a in AdapterRegistry(adapters_root()).all() if a.name == "jiuwenswarm")
assert adapter.manifest["repo"]["full_name"] == "openJiuwen-ai/jiuwenswarm"
assert adapter.manifest["push"]["allowed"] is False
lifecycle = load_registry(adapters_root())["jiuwenswarm"]
assert lifecycle.enabled is False and lifecycle.mode == "shadow"
assert lifecycle.upstream_visibility == "public"
init = lifecycle.init
assert init is not None
assert all(seed.startswith("general/") for seed in init.seeds)
assert validate_seeds(init, knowledge_root()) == []
# the empty-KB path: kb init creates the tree, this PR must not
assert not (knowledge_root() / "repos" / "jiuwenswarm").exists()


def test_jiuwenswarm_tag_is_in_the_knowledge_taxonomy():
# kb init refuses to write pages whose repo tag the taxonomy lacks
# (check_wiki_lint reads doc/knowledge/SCHEMA.md), so the tag is declared first
import importlib.util
from pathlib import Path

lint_path = Path(__file__).resolve().parents[1] / "knowledge" / "tools" / "check_wiki_lint.py"
spec = importlib.util.spec_from_file_location("check_wiki_lint", lint_path)
lint = importlib.util.module_from_spec(spec)
spec.loader.exec_module(lint)
assert "jiuwenswarm" in lint.taxonomy()
Loading