diff --git a/doc/architecture/SPEC/direct_routing.md b/doc/architecture/SPEC/direct_routing.md index 3105f4ae1..846ebe34d 100644 --- a/doc/architecture/SPEC/direct_routing.md +++ b/doc/architecture/SPEC/direct_routing.md @@ -1,6 +1,6 @@ # direct_routing.py —— 规范 - + `LOC ~880 · Direct 模式完整策略包与仓库中立的知识路由 · refactor-status: stable` @@ -11,6 +11,11 @@ owner/model 路由表是知识数据 `knowledge/repos//_routes.yaml`,仓 公开面由 `contract.py` 再导出。 ## 公开契约 + +`direct_review_plan` 另返回 `related_knowledge`:从本次 `KnowledgeView` 按 diff 路径和描述 +检索的有限解释性正文。`navigation_policy.related_document_read_paths` 只列截断背景页, +每页增加一次 `execution_budget.knowledge_file_reads`;完整内嵌内容不需要再读文件。 +owner/model 路由仍先按描述选择,路径仍用于路由范围校验;背景检索不增补硬规则路由。 经 `contract.py` 再导出的五个名字:`direct_review_plan`(完整、一次性的 Direct policy bundle)、`direct_knowledge_routes`、 `direct_execution_budget`、`direct_completion_result`、 diff --git a/doc/architecture/SPEC/engine/agent_runtime.md b/doc/architecture/SPEC/engine/agent_runtime.md index acfa22fcb..6c814458e 100644 --- a/doc/architecture/SPEC/engine/agent_runtime.md +++ b/doc/architecture/SPEC/engine/agent_runtime.md @@ -1,10 +1,15 @@ # engine/agent_runtime/ —— 规范 - + `LOC ~1690(7 个文件) · 引擎(受治理的 agent 运行时) · refactor-status: ok` ## 职责 + +开启 `profile_briefing_enabled` 且证据包含 `pr_diff` 时,runner 使用既有 diff parser 提取 +路径,通过 `doc_related` 在首个模型调用前注入同一有界知识背景。内容放入 untrusted +围栏并转义标签;`review_knowledge_context` 记录命中页面、状态和正文长度。 +关闭 briefing 时自动背景注入也关闭;无关路径不补入知识。Agent 可按需调用该只读工具。 每个 `kind == "agent"` step 的**唯一**受治理入口,外加评审质量 ensemble。 它是全库信息密度最高、杠杆最大的子系统 —— 曾经是一个 685 行的模块, 现在是一个把底座(dispatch/knowledge/utils)与两个入口(runner/ensemble)分开的包。 diff --git a/doc/architecture/SPEC/kb_service.md b/doc/architecture/SPEC/kb_service.md index 3a054a1ac..1dcc4f958 100644 --- a/doc/architecture/SPEC/kb_service.md +++ b/doc/architecture/SPEC/kb_service.md @@ -677,3 +677,13 @@ PR 描述只展示前 20 个升级及总数,完整来源留在 commit trailers 模型失败、findings 或远程 head 变化均保持阻塞;人仍负责合并。 dry run 为旧快照建本地临时 baseline,再生成相同升级串与全量 Codex 审阅,落盘预览和 `COMMITS.json`,不写 GitHub。 全程不打开服务账本。测试:`test_kb_init_history.py`、`test_kb_init_config.py`、`test_imkbinit_skill.py`。 + + +## 2026-10-02 初始化与检索验收 + +`knowledge` 与有 accepted depth 的 `knowledge-deepen` 从 coverage policy 更新现存功能解释页 +的 `feature`、`entry_points`、`source_globs`;同一 writer 保留正文和来源。深读 checkpoint +仍绑定 accepted 原文哈希,恢复后再生成提示,不改已接受证明。全部被拒绝时不写 metadata-only +变更,保持 empty 阶段语义。提示不会增加 coverage、创建规则或改 owner 路由。 +完成合并后的完整 checkout 用 `tools/audit_review_retrieval.py` 验收 Direct 上下文交付, +同时报告描述+路径与仅路径结果。报告在 eval/本地状态,与 breadth/depth 审计分开;不是 RQS 或缺陷召回率。 diff --git a/doc/architecture/SPEC/knowledge_docs.md b/doc/architecture/SPEC/knowledge_docs.md index 2fdc7af54..2f3ec2614 100644 --- a/doc/architecture/SPEC/knowledge_docs.md +++ b/doc/architecture/SPEC/knowledge_docs.md @@ -1,15 +1,15 @@ # knowledge_docs.py —— 规范 - + -`LOC ~122 · 供 MCP 面使用的只读知识检索 · refactor-status: ok` +`LOC ~280 · 供 Direct 与 Agent 共用的只读知识检索 · refactor-status: ok` ## 职责 对那棵精选 Markdown 知识库的跨平台、按仓库限定的**只读访问** —— -`doc_search`/`doc_read` 的底座。 +`doc_search`/`doc_read`/`doc_related` 的底座。 ## 公开契约 -`KnowledgeDocs`(search、read)、`KnowledgeDocsError`。 +`KnowledgeDocs`(search、read、related)、`KnowledgeDocsError`。 ## 不变量(**C1**、**D1**) - **限定在切片内**:general 切片加上**单个**仓库的切片。知识根之外的路径一律拒绝 @@ -22,10 +22,20 @@ 不撰写知识、不提 candidate、不在代码里放仓库专属规则(那棵树是数据面)。 ## 依赖(允许) -仅 stdlib。 +stdlib 与 `knowledge_service.lifecycle` 的页面/完整深读正文解析;不依赖模型、配置或 server。 ## 测试 -`test_knowledge_source.py`、`test_thin_mcp_server.py`。 +`test_knowledge_source.py`、`test_knowledge_retrieval.py`、`test_thin_mcp_server.py`。 + +## 有界审查背景 + +`related(changed_files, query=...)` 只选当前 repo 的 architecture/guide;规则页、索引与 +结构化接口卡不进入背景。确定性优先级为固定来源路径、生产入口、源码 glob,再结合 +功能 ID/标题和正文词命中;相同 feature 去重,完整深读优先于基础功能页。 +最多返回两页、每页 3,000 字符、总计 6,000 字符;优先完整 facet,超长单 facet 仍提供 +截断片段并标 `more_available`。返回来源 pin、命中路径、已有/缺失 facet,不验证 PR head。 +深读正文哈希、证明形状或重复 facet 有问题时不提供该块;上游证据验证仍属于 init/audit。 +所有读取前调用同一 `verify`,包括最终被排除的接口卡;激活快照校验失败直接阻断。 ## 重构备注 **保持它不含模型**:这是 Direct MCP 路径与工具桥共用的**唯一**知识读取器, diff --git a/doc/architecture/SPEC/knowledge_service.md b/doc/architecture/SPEC/knowledge_service.md index b0fd02622..a0467c508 100644 --- a/doc/architecture/SPEC/knowledge_service.md +++ b/doc/architecture/SPEC/knowledge_service.md @@ -1,6 +1,6 @@ # knowledge_service/ — provider curation components - + The provider owns knowledge curation beneath the public SDK v1 facade. `KnowledgeCurator` composes four domain components over one explicit work @@ -20,6 +20,9 @@ contracts across the move. Knowledge Ops API 2.0 sits beside the v1 curator and does not change it: `lifecycle` parses rule pages (byte-exact) and their `kb:rule` footers, +and owns the shared depth format, intact-prose reader and safe source-path +syntax used by retrieval and init/audit; upstream proof verification stays in +`kb_service.knowledge_depth`. `ops.apply_operations` applies typed add / edit_same_meaning / replace / retire / purge changes with their mechanical consequences, and `l1` is the deterministic half of the quality gate (`check_tree`, `check_changeset`). The diff --git a/doc/architecture/SPEC/knowledge_service/lifecycle.md b/doc/architecture/SPEC/knowledge_service/lifecycle.md index df8416a3c..f7293388b 100644 --- a/doc/architecture/SPEC/knowledge_service/lifecycle.md +++ b/doc/architecture/SPEC/knowledge_service/lifecycle.md @@ -1,6 +1,6 @@ # knowledge_service/lifecycle.py —— 规范 - + `LOC ~330 · 规则页数据模型与生命周期尾注 · refactor-status: stable` @@ -10,6 +10,10 @@ reason、evidence、supersedes、superseded_by、protected);无尾注即 active。 ## 公开契约 + +`DEPTH_FACETS`、`DEPTH_BLOCK` 和 `depth_sections` 是 init/audit 与检索共享的深读数据格式。 +后者只返回正文哈希完整、facet 唯一且 proof evidence 形状合法的段落,隐藏 proof 注释, +不重新读取上游证据。固定源码验证仍由 `kb_service.knowledge_depth` 负责。 `Page.parse/render`、`Page.rules/rule/replace_section/append_section`、 `Page.sources/with_sources`(按页面原风格写 flow 或 block 列表)、`Section.footer/ with_footer/body_without_footer/content_sha256/citations`、`Footer.parse/render/check`、 diff --git a/doc/architecture/SPEC/sdk.md b/doc/architecture/SPEC/sdk.md index 2a8c57a7a..b833acc8d 100644 --- a/doc/architecture/SPEC/sdk.md +++ b/doc/architecture/SPEC/sdk.md @@ -1,12 +1,16 @@ # sdk/ —— 规范 - + `Python SDK v1 · 跨仓库唯一 typed 边界 · refactor-status: ok` ## 职责 +`DirectReviewPlan.related_knowledge` 是有默认空字典的增量字段,与 MCP 提供同一有界背景。 +每个相关文档另带内容寻址的 `document` 引用,路径保持知识相对 ID;后续读取使用原 +`review_context_id`,不混入激活切换后的另一快照。正文 pin 与 PR head 分别记录。 + 给 ReviewBot 等嵌入式宿主提供一个版本化、可序列化、wheel-safe 的公开 API: `infermatrix_copilot.sdk.v1`。宿主不得再 import `mcp_server`、`config`、 `thin_mcp_server` 或其私有 helper。 diff --git a/doc/knowledge/SCHEMA.md b/doc/knowledge/SCHEMA.md index 51bcfbf51..893f4455a 100644 --- a/doc/knowledge/SCHEMA.md +++ b/doc/knowledge/SCHEMA.md @@ -40,6 +40,13 @@ validation 六个维度。它生成的非规则段使用 `kb:knowledge` HTML 注 实现知识;旧标记、静态接口卡、规则和索引不计入此深度。正文或证据改变、pin 不符或重复 facet 均失效。页面仍使用既有 architecture/guide 类型,设计推断与未验证测试明确标出。 +功能解释页可声明 `feature`(功能 ID)、`entry_points`(生产入口路径列表)和 +`source_globs`(所属源码 glob 列表)。`knowledge`/`knowledge-deepen` 从同一份已审阅 +coverage policy 生成这些匹配提示,刷新时保留正文、来源和深读证明。提示只选择审查背景, +不增加文件或行为覆盖率;旧页仍可通过 `sources` 中的固定源码路径匹配。 +Direct 的 `related_knowledge` 与 Agent 的 `doc_related` 共用确定性检索,最多提供两页、 +共 6,000 字符,附来源 pin、已有/缺失 facet 和截断状态;它不把推断变成硬规则。 + `check_wiki_lint.py` 强制的只有前五项(`title`、`created`、`updated`、`type`、 非空 `tags`);其余为约定字段,写了就必须合法(`confidence` 只能取三值)。 diff --git a/eval/knowledge-depth/jiuwenswarm-retrieval-acceptance-20261002.json b/eval/knowledge-depth/jiuwenswarm-retrieval-acceptance-20261002.json new file mode 100644 index 000000000..5e949076b --- /dev/null +++ b/eval/knowledge-depth/jiuwenswarm-retrieval-acceptance-20261002.json @@ -0,0 +1,8425 @@ +{ + "summary": { + "description_and_paths": { + "cases": 79, + "feature_hits": 79, + "depth_hits": 77, + "expected_depth": 77, + "max_content_chars": 5571, + "median_elapsed_ms": 1935 + }, + "paths_only": { + "cases": 79, + "feature_hits": 77, + "depth_hits": 75, + "expected_depth": 77, + "max_content_chars": 5459, + "median_elapsed_ms": 1943 + } + }, + "problems": [], + "cases": [ + { + "feature": "bootstrap", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/init_workspace.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 4708, + "elapsed_ms": 2167, + "extra_read_paths": [ + "repos/jiuwenswarm/components/launch/jiuwenswarm.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/launch/feature-depth-bootstrap.md", + "feature": "bootstrap", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "configuration", + "tradeoffs", + "validation" + ], + "available_facets": [ + "api", + "configuration", + "tradeoffs", + "validation" + ], + "missing_facets": [ + "flow", + "dependencies", + "failure_modes" + ] + }, + { + "path": "repos/jiuwenswarm/components/launch/jiuwenswarm.md", + "feature": "", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [], + "available_facets": [], + "missing_facets": [] + } + ] + }, + { + "feature": "bootstrap", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/init_workspace.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 4708, + "elapsed_ms": 1977, + "extra_read_paths": [ + "repos/jiuwenswarm/components/launch/jiuwenswarm.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/launch/feature-depth-bootstrap.md", + "feature": "bootstrap", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "configuration", + "tradeoffs", + "validation" + ], + "available_facets": [ + "api", + "configuration", + "tradeoffs", + "validation" + ], + "missing_facets": [ + "flow", + "dependencies", + "failure_modes" + ] + }, + { + "path": "repos/jiuwenswarm/components/launch/jiuwenswarm.md", + "feature": "", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [], + "available_facets": [], + "missing_facets": [] + } + ] + }, + { + "feature": "instances", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/instance_manager/bootstrap.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 5235, + "elapsed_ms": 1858, + "extra_read_paths": [ + "repos/jiuwenswarm/components/launch/jiuwenswarm-instance-manager.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/launch/feature-depth-instances.md", + "feature": "instances", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "dependencies", + "tradeoffs", + "configuration" + ], + "available_facets": [ + "api", + "dependencies", + "tradeoffs", + "configuration" + ], + "missing_facets": [ + "flow", + "failure_modes", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/launch/jiuwenswarm-instance-manager.md", + "feature": "", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [], + "available_facets": [], + "missing_facets": [] + } + ] + }, + { + "feature": "instances", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/instance_manager/bootstrap.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 5235, + "elapsed_ms": 1784, + "extra_read_paths": [ + "repos/jiuwenswarm/components/launch/jiuwenswarm-instance-manager.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/launch/feature-depth-instances.md", + "feature": "instances", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "dependencies", + "tradeoffs", + "configuration" + ], + "available_facets": [ + "api", + "dependencies", + "tradeoffs", + "configuration" + ], + "missing_facets": [ + "flow", + "failure_modes", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/launch/jiuwenswarm-instance-manager.md", + "feature": "", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [], + "available_facets": [], + "missing_facets": [] + } + ] + }, + { + "feature": "desktop", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/channels/desktop/desktop_app.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2357, + "elapsed_ms": 1924, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/launch/feature-depth-desktop.md", + "feature": "desktop", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "failure_modes", + "tradeoffs", + "configuration" + ], + "available_facets": [ + "api", + "failure_modes", + "tradeoffs", + "configuration" + ], + "missing_facets": [ + "flow", + "dependencies", + "validation" + ] + } + ] + }, + { + "feature": "desktop", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/channels/desktop/desktop_app.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2357, + "elapsed_ms": 1918, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/launch/feature-depth-desktop.md", + "feature": "desktop", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "failure_modes", + "tradeoffs", + "configuration" + ], + "available_facets": [ + "api", + "failure_modes", + "tradeoffs", + "configuration" + ], + "missing_facets": [ + "flow", + "dependencies", + "validation" + ] + } + ] + }, + { + "feature": "deployment", + "probe": "description_and_paths", + "changed_files": [ + "scripts/build-electron-exe.sh", + "Dockerfile.claw", + "docker/Dockerfile.claw", + "docker/Dockerfile.claw.base", + "docker/Dockerfile.yr.rt.mgr" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 1187, + "elapsed_ms": 1986, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/packaging-deploy/feature-depth-deployment.md", + "feature": "deployment", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "dependencies" + ], + "available_facets": [ + "configuration", + "dependencies" + ], + "missing_facets": [ + "flow", + "api", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "deployment", + "probe": "paths_only", + "changed_files": [ + "scripts/build-electron-exe.sh", + "Dockerfile.claw", + "docker/Dockerfile.claw", + "docker/Dockerfile.claw.base", + "docker/Dockerfile.yr.rt.mgr" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 1187, + "elapsed_ms": 1942, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/packaging-deploy/feature-depth-deployment.md", + "feature": "deployment", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "dependencies" + ], + "available_facets": [ + "configuration", + "dependencies" + ], + "missing_facets": [ + "flow", + "api", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "process-cli", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/channels/process_cli/app.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 4163, + "elapsed_ms": 1910, + "extra_read_paths": [ + "repos/jiuwenswarm/components/gateway-channels/feature-depth-process-cli.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/gateway-channels/feature-depth-process-cli.md", + "feature": "process-cli", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "dependencies" + ], + "available_facets": [ + "flow", + "dependencies", + "validation" + ], + "missing_facets": [ + "api", + "configuration", + "failure_modes", + "tradeoffs" + ] + }, + { + "path": "repos/jiuwenswarm/components/gateway-channels/design-tradeoffs.md", + "feature": "", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [], + "available_facets": [], + "missing_facets": [] + } + ] + }, + { + "feature": "process-cli", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/channels/process_cli/app.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 4163, + "elapsed_ms": 1956, + "extra_read_paths": [ + "repos/jiuwenswarm/components/gateway-channels/feature-depth-process-cli.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/gateway-channels/feature-depth-process-cli.md", + "feature": "process-cli", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "dependencies" + ], + "available_facets": [ + "flow", + "dependencies", + "validation" + ], + "missing_facets": [ + "api", + "configuration", + "failure_modes", + "tradeoffs" + ] + }, + { + "path": "repos/jiuwenswarm/components/gateway-channels/design-tradeoffs.md", + "feature": "", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [], + "available_facets": [], + "missing_facets": [] + } + ] + }, + { + "feature": "cli", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/cli/main.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 697, + "elapsed_ms": 1935, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/gateway-channels/feature-depth-cli.md", + "feature": "cli", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "dependencies" + ], + "available_facets": [ + "dependencies" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "cli", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/cli/main.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 697, + "elapsed_ms": 1916, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/gateway-channels/feature-depth-cli.md", + "feature": "cli", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "dependencies" + ], + "available_facets": [ + "dependencies" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "tui", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/channels/tui/frontend/src/index.ts" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 601, + "elapsed_ms": 2025, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/tui-client/feature-depth-tui.md", + "feature": "tui", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration" + ], + "available_facets": [ + "configuration" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "tui", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/channels/tui/frontend/src/index.ts" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 601, + "elapsed_ms": 1889, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/tui-client/feature-depth-tui.md", + "feature": "tui", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration" + ], + "available_facets": [ + "configuration" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "web-chat", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/channels/web/frontend/src/hooks/useWebSocket.ts" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 4812, + "elapsed_ms": 1845, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/web-frontend/feature-depth-web-chat.md", + "feature": "web-chat", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "failure_modes", + "validation" + ], + "available_facets": [ + "api", + "failure_modes", + "validation" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "tradeoffs" + ] + }, + { + "path": "repos/jiuwenswarm/components/web-frontend/feature-depth-goal-mode.md", + "feature": "goal-mode", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "api" + ], + "available_facets": [ + "flow", + "api" + ], + "missing_facets": [ + "configuration", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "web-chat", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/channels/web/frontend/src/hooks/useWebSocket.ts" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 4812, + "elapsed_ms": 1876, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/web-frontend/feature-depth-web-chat.md", + "feature": "web-chat", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "failure_modes", + "validation" + ], + "available_facets": [ + "api", + "failure_modes", + "validation" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "tradeoffs" + ] + }, + { + "path": "repos/jiuwenswarm/components/web-frontend/feature-depth-goal-mode.md", + "feature": "goal-mode", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "api" + ], + "available_facets": [ + "flow", + "api" + ], + "missing_facets": [ + "configuration", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "web-navigation", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/channels/web/frontend/src/App.tsx" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 3634, + "elapsed_ms": 1915, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/web-frontend/feature-depth-web-navigation.md", + "feature": "web-navigation", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "failure_modes", + "api" + ], + "available_facets": [ + "configuration", + "failure_modes", + "api" + ], + "missing_facets": [ + "flow", + "dependencies", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/web-frontend/feature-depth-web-chat.md", + "feature": "web-chat", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "failure_modes", + "validation" + ], + "available_facets": [ + "api", + "failure_modes", + "validation" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "tradeoffs" + ] + } + ] + }, + { + "feature": "web-navigation", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/channels/web/frontend/src/App.tsx" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 3634, + "elapsed_ms": 1929, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/web-frontend/feature-depth-web-navigation.md", + "feature": "web-navigation", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "failure_modes", + "api" + ], + "available_facets": [ + "configuration", + "failure_modes", + "api" + ], + "missing_facets": [ + "flow", + "dependencies", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/web-frontend/feature-depth-web-chat.md", + "feature": "web-chat", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "failure_modes", + "validation" + ], + "available_facets": [ + "api", + "failure_modes", + "validation" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "tradeoffs" + ] + } + ] + }, + { + "feature": "projects-sessions", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/runtime/session_catalog.py", + "jiuwenswarm/runtime/session_lifecycle.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2253, + "elapsed_ms": 1845, + "extra_read_paths": [ + "repos/jiuwenswarm/components/agent-runtime/feature-depth-projects-sessions.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agent-runtime/feature-depth-projects-sessions.md", + "feature": "projects-sessions", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "api" + ], + "available_facets": [ + "flow", + "api", + "configuration", + "validation" + ], + "missing_facets": [ + "dependencies", + "failure_modes", + "tradeoffs" + ] + } + ] + }, + { + "feature": "projects-sessions", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/runtime/session_catalog.py", + "jiuwenswarm/runtime/session_lifecycle.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2253, + "elapsed_ms": 1900, + "extra_read_paths": [ + "repos/jiuwenswarm/components/agent-runtime/feature-depth-projects-sessions.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agent-runtime/feature-depth-projects-sessions.md", + "feature": "projects-sessions", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "api" + ], + "available_facets": [ + "flow", + "api", + "configuration", + "validation" + ], + "missing_facets": [ + "dependencies", + "failure_modes", + "tradeoffs" + ] + } + ] + }, + { + "feature": "modes", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/runtime/mode_catalog.py", + "jiuwenswarm/common/mode_matrix.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 4494, + "elapsed_ms": 1803, + "extra_read_paths": [ + "repos/jiuwenswarm/components/agent-runtime/feature-depth-projects-sessions.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-modes.md", + "feature": "modes", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "failure_modes", + "api", + "validation" + ], + "available_facets": [ + "failure_modes", + "api", + "validation" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "tradeoffs" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-runtime/feature-depth-projects-sessions.md", + "feature": "projects-sessions", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "api" + ], + "available_facets": [ + "flow", + "api", + "configuration", + "validation" + ], + "missing_facets": [ + "dependencies", + "failure_modes", + "tradeoffs" + ] + } + ] + }, + { + "feature": "modes", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/runtime/mode_catalog.py", + "jiuwenswarm/common/mode_matrix.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 4494, + "elapsed_ms": 1886, + "extra_read_paths": [ + "repos/jiuwenswarm/components/agent-runtime/feature-depth-projects-sessions.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agent-runtime/feature-depth-projects-sessions.md", + "feature": "projects-sessions", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "api" + ], + "available_facets": [ + "flow", + "api", + "configuration", + "validation" + ], + "missing_facets": [ + "dependencies", + "failure_modes", + "tradeoffs" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-modes.md", + "feature": "modes", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "failure_modes", + "api", + "validation" + ], + "available_facets": [ + "failure_modes", + "api", + "validation" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "tradeoffs" + ] + } + ] + }, + { + "feature": "team", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/agents/harness/team/team_manager.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 4974, + "elapsed_ms": 2027, + "extra_read_paths": [ + "repos/jiuwenswarm/components/agents-team/feature-depth-human-team.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-team.md", + "feature": "team", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "dependencies", + "failure_modes" + ], + "available_facets": [ + "configuration", + "dependencies", + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-human-team.md", + "feature": "human-team", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "tradeoffs", + "api", + "dependencies" + ], + "available_facets": [ + "tradeoffs", + "api", + "dependencies", + "failure_modes" + ], + "missing_facets": [ + "flow", + "configuration", + "validation" + ] + } + ] + }, + { + "feature": "team", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/agents/harness/team/team_manager.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 4974, + "elapsed_ms": 1934, + "extra_read_paths": [ + "repos/jiuwenswarm/components/agents-team/feature-depth-human-team.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-human-team.md", + "feature": "human-team", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "tradeoffs", + "api", + "dependencies" + ], + "available_facets": [ + "tradeoffs", + "api", + "dependencies", + "failure_modes" + ], + "missing_facets": [ + "flow", + "configuration", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-team.md", + "feature": "team", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "dependencies", + "failure_modes" + ], + "available_facets": [ + "configuration", + "dependencies", + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "distributed-team", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/agents/harness/team/distributed_runtime.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 5182, + "elapsed_ms": 1905, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-distributed-team.md", + "feature": "distributed-team", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "api", + "failure_modes", + "validation" + ], + "available_facets": [ + "configuration", + "api", + "failure_modes", + "validation" + ], + "missing_facets": [ + "flow", + "dependencies", + "tradeoffs" + ] + }, + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-team.md", + "feature": "team", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "dependencies", + "failure_modes" + ], + "available_facets": [ + "configuration", + "dependencies", + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "distributed-team", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/agents/harness/team/distributed_runtime.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 5459, + "elapsed_ms": 1930, + "extra_read_paths": [ + "repos/jiuwenswarm/components/agents-team/feature-depth-human-team.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-distributed-team.md", + "feature": "distributed-team", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "api", + "failure_modes", + "validation" + ], + "available_facets": [ + "configuration", + "api", + "failure_modes", + "validation" + ], + "missing_facets": [ + "flow", + "dependencies", + "tradeoffs" + ] + }, + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-human-team.md", + "feature": "human-team", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "dependencies", + "failure_modes" + ], + "available_facets": [ + "api", + "dependencies", + "failure_modes", + "tradeoffs" + ], + "missing_facets": [ + "flow", + "configuration", + "validation" + ] + } + ] + }, + { + "feature": "human-team", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/agents/harness/team/team_manager.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 4974, + "elapsed_ms": 1903, + "extra_read_paths": [ + "repos/jiuwenswarm/components/agents-team/feature-depth-human-team.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-human-team.md", + "feature": "human-team", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "tradeoffs", + "api", + "dependencies" + ], + "available_facets": [ + "tradeoffs", + "api", + "dependencies", + "failure_modes" + ], + "missing_facets": [ + "flow", + "configuration", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-team.md", + "feature": "team", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "dependencies", + "failure_modes" + ], + "available_facets": [ + "configuration", + "dependencies", + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "human-team", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/agents/harness/team/team_manager.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 4974, + "elapsed_ms": 2007, + "extra_read_paths": [ + "repos/jiuwenswarm/components/agents-team/feature-depth-human-team.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-human-team.md", + "feature": "human-team", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "tradeoffs", + "api", + "dependencies" + ], + "available_facets": [ + "tradeoffs", + "api", + "dependencies", + "failure_modes" + ], + "missing_facets": [ + "flow", + "configuration", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-team.md", + "feature": "team", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "dependencies", + "failure_modes" + ], + "available_facets": [ + "configuration", + "dependencies", + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "swarmflow", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/agents/harness/team/handlers/workflow_state.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 3016, + "elapsed_ms": 1923, + "extra_read_paths": [ + "repos/jiuwenswarm/components/agents-team/feature-depth-human-team.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-swarmflow.md", + "feature": "swarmflow", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "tradeoffs" + ], + "available_facets": [ + "tradeoffs" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-human-team.md", + "feature": "human-team", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "dependencies", + "failure_modes" + ], + "available_facets": [ + "api", + "dependencies", + "failure_modes", + "tradeoffs" + ], + "missing_facets": [ + "flow", + "configuration", + "validation" + ] + } + ] + }, + { + "feature": "swarmflow", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/agents/harness/team/handlers/workflow_state.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 3016, + "elapsed_ms": 2065, + "extra_read_paths": [ + "repos/jiuwenswarm/components/agents-team/feature-depth-human-team.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-swarmflow.md", + "feature": "swarmflow", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "tradeoffs" + ], + "available_facets": [ + "tradeoffs" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-human-team.md", + "feature": "human-team", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "dependencies", + "failure_modes" + ], + "available_facets": [ + "api", + "dependencies", + "failure_modes", + "tradeoffs" + ], + "missing_facets": [ + "flow", + "configuration", + "validation" + ] + } + ] + }, + { + "feature": "harness", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/server/runtime/agent_adapter/interface_deep.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2714, + "elapsed_ms": 1866, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-harness.md", + "feature": "harness", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "validation" + ], + "available_facets": [ + "configuration", + "validation" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-context.md", + "feature": "context", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "validation" + ], + "available_facets": [ + "validation" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs" + ] + } + ] + }, + { + "feature": "harness", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/server/runtime/agent_adapter/interface_deep.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2714, + "elapsed_ms": 1649, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-harness.md", + "feature": "harness", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "validation" + ], + "available_facets": [ + "configuration", + "validation" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-context.md", + "feature": "context", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "validation" + ], + "available_facets": [ + "validation" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs" + ] + } + ] + }, + { + "feature": "planning", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/agents/harness/code/rails/code_task_planning_rail.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 5571, + "elapsed_ms": 1892, + "extra_read_paths": [ + "repos/jiuwenswarm/components/agents-team/feature-depth-planning.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-planning.md", + "feature": "planning", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "dependencies", + "failure_modes", + "configuration" + ], + "available_facets": [ + "dependencies", + "failure_modes", + "flow", + "configuration" + ], + "missing_facets": [ + "api", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-coding-memory.md", + "feature": "coding-memory", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "configuration", + "tradeoffs" + ], + "available_facets": [ + "flow", + "configuration", + "tradeoffs" + ], + "missing_facets": [ + "api", + "dependencies", + "failure_modes", + "validation" + ] + } + ] + }, + { + "feature": "planning", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/agents/harness/code/rails/code_task_planning_rail.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 5095, + "elapsed_ms": 1883, + "extra_read_paths": [ + "repos/jiuwenswarm/components/agents-team/feature-depth-planning.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-planning.md", + "feature": "planning", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "dependencies" + ], + "available_facets": [ + "flow", + "dependencies", + "failure_modes", + "configuration" + ], + "missing_facets": [ + "api", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-coding-memory.md", + "feature": "coding-memory", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "configuration", + "tradeoffs" + ], + "available_facets": [ + "flow", + "configuration", + "tradeoffs" + ], + "missing_facets": [ + "api", + "dependencies", + "failure_modes", + "validation" + ] + } + ] + }, + { + "feature": "subagents", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/agents/swarm/providers/code_subagents.py", + "jiuwenswarm/agents/harness/common/tools/subagent_compat.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2782, + "elapsed_ms": 1921, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-subagents.md", + "feature": "subagents", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "dependencies", + "tradeoffs" + ], + "available_facets": [ + "flow", + "dependencies", + "tradeoffs" + ], + "missing_facets": [ + "api", + "configuration", + "failure_modes", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-context.md", + "feature": "context", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "validation" + ], + "available_facets": [ + "validation" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs" + ] + } + ] + }, + { + "feature": "subagents", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/agents/swarm/providers/code_subagents.py", + "jiuwenswarm/agents/harness/common/tools/subagent_compat.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2782, + "elapsed_ms": 1911, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-subagents.md", + "feature": "subagents", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "dependencies", + "tradeoffs" + ], + "available_facets": [ + "flow", + "dependencies", + "tradeoffs" + ], + "missing_facets": [ + "api", + "configuration", + "failure_modes", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-context.md", + "feature": "context", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "validation" + ], + "available_facets": [ + "validation" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs" + ] + } + ] + }, + { + "feature": "skills", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/server/runtime/skill/skill_manager.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 3855, + "elapsed_ms": 2069, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-skills.md", + "feature": "skills", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "dependencies", + "failure_modes", + "configuration", + "tradeoffs" + ], + "available_facets": [ + "dependencies", + "failure_modes", + "configuration", + "tradeoffs" + ], + "missing_facets": [ + "flow", + "api", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-permissions.md", + "feature": "permissions", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "failure_modes" + ], + "available_facets": [ + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "skills", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/server/runtime/skill/skill_manager.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 3855, + "elapsed_ms": 2193, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-skills.md", + "feature": "skills", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "dependencies", + "failure_modes", + "configuration", + "tradeoffs" + ], + "available_facets": [ + "dependencies", + "failure_modes", + "configuration", + "tradeoffs" + ], + "missing_facets": [ + "flow", + "api", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-permissions.md", + "feature": "permissions", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "failure_modes" + ], + "available_facets": [ + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "swarm-skills", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/agents/swarm/assembly.py", + "jiuwenswarm/agents/swarm/providers/skills.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2848, + "elapsed_ms": 2231, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-swarm-skills.md", + "feature": "swarm-skills", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "tradeoffs", + "flow", + "configuration" + ], + "available_facets": [ + "tradeoffs", + "flow", + "configuration" + ], + "missing_facets": [ + "api", + "dependencies", + "failure_modes", + "validation" + ] + } + ] + }, + { + "feature": "swarm-skills", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/agents/swarm/assembly.py", + "jiuwenswarm/agents/swarm/providers/skills.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2848, + "elapsed_ms": 1885, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-swarm-skills.md", + "feature": "swarm-skills", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "tradeoffs", + "flow", + "configuration" + ], + "available_facets": [ + "tradeoffs", + "flow", + "configuration" + ], + "missing_facets": [ + "api", + "dependencies", + "failure_modes", + "validation" + ] + } + ] + }, + { + "feature": "skill-hub", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/server/runtime/marketplace/hub_client.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2608, + "elapsed_ms": 1917, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-skill-hub.md", + "feature": "skill-hub", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "flow", + "api" + ], + "available_facets": [ + "configuration", + "flow", + "api" + ], + "missing_facets": [ + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-permissions.md", + "feature": "permissions", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "failure_modes" + ], + "available_facets": [ + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "skill-hub", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/server/runtime/marketplace/hub_client.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2608, + "elapsed_ms": 1983, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-skill-hub.md", + "feature": "skill-hub", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "api", + "configuration" + ], + "available_facets": [ + "flow", + "api", + "configuration" + ], + "missing_facets": [ + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-permissions.md", + "feature": "permissions", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "failure_modes" + ], + "available_facets": [ + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "skill-evolution", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/server/runtime/agent_adapter/evolution_helpers.py" + ], + "expected_depth": false, + "feature_hit": true, + "depth_hit": false, + "content_chars": 5201, + "elapsed_ms": 1859, + "extra_read_paths": [ + "repos/jiuwenswarm/components/agent-server-runtime/feature-skill-evolution.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-skill-evolution.md", + "feature": "skill-evolution", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [], + "available_facets": [], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-modes.md", + "feature": "modes", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "failure_modes", + "validation" + ], + "available_facets": [ + "api", + "failure_modes", + "validation" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "tradeoffs" + ] + } + ] + }, + { + "feature": "skill-evolution", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/server/runtime/agent_adapter/evolution_helpers.py" + ], + "expected_depth": false, + "feature_hit": true, + "depth_hit": false, + "content_chars": 5201, + "elapsed_ms": 1872, + "extra_read_paths": [ + "repos/jiuwenswarm/components/agent-server-runtime/feature-skill-evolution.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-skill-evolution.md", + "feature": "skill-evolution", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [], + "available_facets": [], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-modes.md", + "feature": "modes", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "failure_modes", + "validation" + ], + "available_facets": [ + "api", + "failure_modes", + "validation" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "tradeoffs" + ] + } + ] + }, + { + "feature": "symphony", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/symphony/service.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 4860, + "elapsed_ms": 1931, + "extra_read_paths": [ + "repos/jiuwenswarm/components/symphony-orchestration/feature-depth-symphony.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/symphony-orchestration/feature-depth-symphony.md", + "feature": "symphony", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "api", + "configuration", + "dependencies" + ], + "available_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "validation" + ], + "missing_facets": [ + "failure_modes", + "tradeoffs" + ] + }, + { + "path": "repos/jiuwenswarm/components/symphony-orchestration/design-tradeoffs.md", + "feature": "", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [], + "available_facets": [], + "missing_facets": [] + } + ] + }, + { + "feature": "symphony", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/symphony/service.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 4860, + "elapsed_ms": 1786, + "extra_read_paths": [ + "repos/jiuwenswarm/components/symphony-orchestration/feature-depth-symphony.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/symphony-orchestration/feature-depth-symphony.md", + "feature": "symphony", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "api", + "configuration", + "dependencies" + ], + "available_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "validation" + ], + "missing_facets": [ + "failure_modes", + "tradeoffs" + ] + }, + { + "path": "repos/jiuwenswarm/components/symphony-orchestration/design-tradeoffs.md", + "feature": "", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [], + "available_facets": [], + "missing_facets": [] + } + ] + }, + { + "feature": "auto-harness", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/agents/harness/common/auto_harness/service.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 3262, + "elapsed_ms": 1924, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/auto-harness/feature-depth-auto-harness.md", + "feature": "auto-harness", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration" + ], + "available_facets": [ + "configuration" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-browser-tools.md", + "feature": "browser-tools", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "configuration", + "failure_modes" + ], + "available_facets": [ + "flow", + "configuration", + "failure_modes" + ], + "missing_facets": [ + "api", + "dependencies", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "auto-harness", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/agents/harness/common/auto_harness/service.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 1593, + "elapsed_ms": 1867, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/auto-harness/feature-depth-auto-harness.md", + "feature": "auto-harness", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration" + ], + "available_facets": [ + "configuration" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-context.md", + "feature": "context", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "validation" + ], + "available_facets": [ + "validation" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs" + ] + } + ] + }, + { + "feature": "rsi-packages", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/agents/harness/common/rsi/harness_activation.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 5174, + "elapsed_ms": 1941, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/auto-harness/feature-depth-rsi-packages.md", + "feature": "rsi-packages", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "failure_modes", + "flow", + "configuration" + ], + "available_facets": [ + "failure_modes", + "flow", + "configuration" + ], + "missing_facets": [ + "api", + "dependencies", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-browser-tools.md", + "feature": "browser-tools", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "configuration", + "failure_modes" + ], + "available_facets": [ + "flow", + "configuration", + "failure_modes" + ], + "missing_facets": [ + "api", + "dependencies", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "rsi-packages", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/agents/harness/common/rsi/harness_activation.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 3505, + "elapsed_ms": 1905, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/auto-harness/feature-depth-rsi-packages.md", + "feature": "rsi-packages", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "failure_modes", + "flow", + "configuration" + ], + "available_facets": [ + "failure_modes", + "flow", + "configuration" + ], + "missing_facets": [ + "api", + "dependencies", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-context.md", + "feature": "context", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "validation" + ], + "available_facets": [ + "validation" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs" + ] + } + ] + }, + { + "feature": "ttse", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/server/runtime/agent_adapter/interface_deep.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2284, + "elapsed_ms": 1753, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-ttse.md", + "feature": "ttse", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "dependencies" + ], + "available_facets": [ + "dependencies" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-harness.md", + "feature": "harness", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "validation" + ], + "available_facets": [ + "configuration", + "validation" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs" + ] + } + ] + }, + { + "feature": "ttse", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/server/runtime/agent_adapter/interface_deep.py" + ], + "expected_depth": true, + "feature_hit": false, + "depth_hit": false, + "content_chars": 2714, + "elapsed_ms": 1725, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-harness.md", + "feature": "harness", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "validation" + ], + "available_facets": [ + "configuration", + "validation" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-context.md", + "feature": "context", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "validation" + ], + "available_facets": [ + "validation" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs" + ] + } + ] + }, + { + "feature": "memory", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/agents/harness/common/memory/manager.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 1877, + "elapsed_ms": 1919, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-memory.md", + "feature": "memory", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration" + ], + "available_facets": [ + "configuration" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-context.md", + "feature": "context", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "validation" + ], + "available_facets": [ + "validation" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs" + ] + } + ] + }, + { + "feature": "memory", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/agents/harness/common/memory/manager.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 1877, + "elapsed_ms": 1858, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-memory.md", + "feature": "memory", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration" + ], + "available_facets": [ + "configuration" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-context.md", + "feature": "context", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "validation" + ], + "available_facets": [ + "validation" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs" + ] + } + ] + }, + { + "feature": "auto-memory", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/agents/harness/common/auto_memory/extraction_runner.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2519, + "elapsed_ms": 1916, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-auto-memory.md", + "feature": "auto-memory", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "dependencies" + ], + "available_facets": [ + "configuration", + "dependencies" + ], + "missing_facets": [ + "flow", + "api", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-context.md", + "feature": "context", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "validation" + ], + "available_facets": [ + "validation" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs" + ] + } + ] + }, + { + "feature": "auto-memory", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/agents/harness/common/auto_memory/extraction_runner.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2519, + "elapsed_ms": 1947, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-auto-memory.md", + "feature": "auto-memory", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "dependencies" + ], + "available_facets": [ + "configuration", + "dependencies" + ], + "missing_facets": [ + "flow", + "api", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-context.md", + "feature": "context", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "validation" + ], + "available_facets": [ + "validation" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs" + ] + } + ] + }, + { + "feature": "coding-memory", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/server/runtime/agent_adapter/interface_code.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 3208, + "elapsed_ms": 1966, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-coding-memory.md", + "feature": "coding-memory", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "configuration", + "tradeoffs" + ], + "available_facets": [ + "flow", + "configuration", + "tradeoffs" + ], + "missing_facets": [ + "api", + "dependencies", + "failure_modes", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-lsp.md", + "feature": "lsp", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api" + ], + "available_facets": [ + "api" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "coding-memory", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/server/runtime/agent_adapter/interface_code.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 3208, + "elapsed_ms": 1874, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-coding-memory.md", + "feature": "coding-memory", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "configuration", + "tradeoffs" + ], + "available_facets": [ + "flow", + "configuration", + "tradeoffs" + ], + "missing_facets": [ + "api", + "dependencies", + "failure_modes", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-lsp.md", + "feature": "lsp", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api" + ], + "available_facets": [ + "api" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "task-memory", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/agents/harness/common/tools/task_tools.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 3756, + "elapsed_ms": 1871, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-task-memory.md", + "feature": "task-memory", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "failure_modes", + "api", + "dependencies" + ], + "available_facets": [ + "flow", + "failure_modes", + "api", + "dependencies" + ], + "missing_facets": [ + "configuration", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-context.md", + "feature": "context", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "validation" + ], + "available_facets": [ + "validation" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs" + ] + } + ] + }, + { + "feature": "task-memory", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/agents/harness/common/tools/task_tools.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 3756, + "elapsed_ms": 2135, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-task-memory.md", + "feature": "task-memory", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "failure_modes", + "api", + "dependencies" + ], + "available_facets": [ + "flow", + "failure_modes", + "api", + "dependencies" + ], + "missing_facets": [ + "configuration", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-context.md", + "feature": "context", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "validation" + ], + "available_facets": [ + "validation" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs" + ] + } + ] + }, + { + "feature": "context", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/server/runtime/agent_adapter/compact_partial_prompts.py", + "jiuwenswarm/server/runtime/agent_adapter/interface_deep.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2714, + "elapsed_ms": 2218, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-context.md", + "feature": "context", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "validation" + ], + "available_facets": [ + "validation" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-harness.md", + "feature": "harness", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "validation" + ], + "available_facets": [ + "configuration", + "validation" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs" + ] + } + ] + }, + { + "feature": "context", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/server/runtime/agent_adapter/compact_partial_prompts.py", + "jiuwenswarm/server/runtime/agent_adapter/interface_deep.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2714, + "elapsed_ms": 1941, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-harness.md", + "feature": "harness", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "validation" + ], + "available_facets": [ + "configuration", + "validation" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-context.md", + "feature": "context", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "validation" + ], + "available_facets": [ + "validation" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs" + ] + } + ] + }, + { + "feature": "permissions", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/agents/harness/common/rails/permissions/permission_interrupt_rail.py", + "jiuwenswarm/agents/harness/common/rails/permissions/policy_eval.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 1646, + "elapsed_ms": 1902, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-permissions.md", + "feature": "permissions", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "failure_modes" + ], + "available_facets": [ + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-context.md", + "feature": "context", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "validation" + ], + "available_facets": [ + "validation" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs" + ] + } + ] + }, + { + "feature": "permissions", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/agents/harness/common/rails/permissions/permission_interrupt_rail.py", + "jiuwenswarm/agents/harness/common/rails/permissions/policy_eval.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 1646, + "elapsed_ms": 1997, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-permissions.md", + "feature": "permissions", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "failure_modes" + ], + "available_facets": [ + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-context.md", + "feature": "context", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "validation" + ], + "available_facets": [ + "validation" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs" + ] + } + ] + }, + { + "feature": "hooks", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/extensions/manager.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 3086, + "elapsed_ms": 1987, + "extra_read_paths": [ + "repos/jiuwenswarm/components/extensions-plugins/jiuwenswarm-extensions.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/extensions-plugins/feature-depth-hooks.md", + "feature": "hooks", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "tradeoffs" + ], + "available_facets": [ + "tradeoffs" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/extensions-plugins/jiuwenswarm-extensions.md", + "feature": "", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [], + "available_facets": [], + "missing_facets": [] + } + ] + }, + { + "feature": "hooks", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/extensions/manager.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 3086, + "elapsed_ms": 1992, + "extra_read_paths": [ + "repos/jiuwenswarm/components/extensions-plugins/jiuwenswarm-extensions.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/extensions-plugins/feature-depth-hooks.md", + "feature": "hooks", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "tradeoffs" + ], + "available_facets": [ + "tradeoffs" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/extensions-plugins/jiuwenswarm-extensions.md", + "feature": "", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [], + "available_facets": [], + "missing_facets": [] + } + ] + }, + { + "feature": "applications", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/extensions/application_host.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 4861, + "elapsed_ms": 2086, + "extra_read_paths": [ + "repos/jiuwenswarm/components/extensions-plugins/jiuwenswarm-application-plugins.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/extensions-plugins/feature-depth-applications.md", + "feature": "applications", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "configuration", + "dependencies" + ], + "available_facets": [ + "api", + "configuration", + "dependencies" + ], + "missing_facets": [ + "flow", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/extensions-plugins/jiuwenswarm-application-plugins.md", + "feature": "", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [], + "available_facets": [], + "missing_facets": [] + } + ] + }, + { + "feature": "applications", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/extensions/application_host.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 4861, + "elapsed_ms": 1895, + "extra_read_paths": [ + "repos/jiuwenswarm/components/extensions-plugins/jiuwenswarm-application-plugins.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/extensions-plugins/feature-depth-applications.md", + "feature": "applications", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "configuration", + "dependencies" + ], + "available_facets": [ + "api", + "configuration", + "dependencies" + ], + "missing_facets": [ + "flow", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/extensions-plugins/jiuwenswarm-application-plugins.md", + "feature": "", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [], + "available_facets": [], + "missing_facets": [] + } + ] + }, + { + "feature": "video-duplex", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/extensions/video_duplex/backend/tasks/rail.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 1287, + "elapsed_ms": 1895, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/extensions-plugins/feature-depth-video-duplex.md", + "feature": "video-duplex", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration" + ], + "available_facets": [ + "configuration" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/extensions-plugins/feature-depth-hooks.md", + "feature": "hooks", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "tradeoffs" + ], + "available_facets": [ + "tradeoffs" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "validation" + ] + } + ] + }, + { + "feature": "video-duplex", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/extensions/video_duplex/backend/tasks/rail.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 1287, + "elapsed_ms": 1850, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/extensions-plugins/feature-depth-video-duplex.md", + "feature": "video-duplex", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration" + ], + "available_facets": [ + "configuration" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/extensions-plugins/feature-depth-hooks.md", + "feature": "hooks", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "tradeoffs" + ], + "available_facets": [ + "tradeoffs" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "validation" + ] + } + ] + }, + { + "feature": "e2a", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/common/e2a/models.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 648, + "elapsed_ms": 1756, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/protocols/feature-depth-e2a.md", + "feature": "e2a", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api" + ], + "available_facets": [ + "api" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "e2a", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/common/e2a/models.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 648, + "elapsed_ms": 1686, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/protocols/feature-depth-e2a.md", + "feature": "e2a", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api" + ], + "available_facets": [ + "api" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "a2a", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/gateway/channel_manager/protocol/a2a/a2a_connect.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 1936, + "elapsed_ms": 1823, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/protocols/feature-depth-a2a.md", + "feature": "a2a", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "tradeoffs", + "validation" + ], + "available_facets": [ + "configuration", + "tradeoffs", + "validation" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes" + ] + } + ] + }, + { + "feature": "a2a", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/gateway/channel_manager/protocol/a2a/a2a_connect.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 1936, + "elapsed_ms": 1866, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/protocols/feature-depth-a2a.md", + "feature": "a2a", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "tradeoffs", + "validation" + ], + "available_facets": [ + "configuration", + "tradeoffs", + "validation" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes" + ] + } + ] + }, + { + "feature": "acp", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/acp/stdio_client.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 789, + "elapsed_ms": 1940, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/protocols/feature-depth-acp.md", + "feature": "acp", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration" + ], + "available_facets": [ + "configuration" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "acp", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/acp/stdio_client.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 789, + "elapsed_ms": 1745, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/protocols/feature-depth-acp.md", + "feature": "acp", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration" + ], + "available_facets": [ + "configuration" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "ssh", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/gateway/channel_manager/protocol/ssh/ssh_connect.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 761, + "elapsed_ms": 1862, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/gateway-channels/feature-depth-ssh.md", + "feature": "ssh", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "failure_modes" + ], + "available_facets": [ + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "ssh", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/gateway/channel_manager/protocol/ssh/ssh_connect.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 761, + "elapsed_ms": 1795, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/gateway-channels/feature-depth-ssh.md", + "feature": "ssh", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "failure_modes" + ], + "available_facets": [ + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "a2ui", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/server/runtime/a2ui/runtime/finalizer.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2519, + "elapsed_ms": 1893, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/a2ui/feature-depth-a2ui.md", + "feature": "a2ui", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "validation" + ], + "available_facets": [ + "configuration", + "validation" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-permissions.md", + "feature": "permissions", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "failure_modes" + ], + "available_facets": [ + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "a2ui", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/server/runtime/a2ui/runtime/finalizer.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2519, + "elapsed_ms": 1890, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/a2ui/feature-depth-a2ui.md", + "feature": "a2ui", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "validation" + ], + "available_facets": [ + "configuration", + "validation" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-permissions.md", + "feature": "permissions", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "failure_modes" + ], + "available_facets": [ + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "browser-tools", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/agents/swarm/browser_runtime.py", + "jiuwenswarm/agents/harness/common/browser_config.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 3243, + "elapsed_ms": 1856, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-browser-tools.md", + "feature": "browser-tools", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "configuration", + "failure_modes" + ], + "available_facets": [ + "flow", + "configuration", + "failure_modes" + ], + "missing_facets": [ + "api", + "dependencies", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-context.md", + "feature": "context", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "validation" + ], + "available_facets": [ + "validation" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs" + ] + } + ] + }, + { + "feature": "browser-tools", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/agents/swarm/browser_runtime.py", + "jiuwenswarm/agents/harness/common/browser_config.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 3243, + "elapsed_ms": 1919, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-browser-tools.md", + "feature": "browser-tools", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "configuration", + "failure_modes" + ], + "available_facets": [ + "flow", + "configuration", + "failure_modes" + ], + "missing_facets": [ + "api", + "dependencies", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-context.md", + "feature": "context", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "validation" + ], + "available_facets": [ + "validation" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs" + ] + } + ] + }, + { + "feature": "browser-client", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/channels/browser/frontend/src/background/index.ts", + "jiuwenswarm/channels/browser/frontend/src/sidepanel/index.ts" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 1136, + "elapsed_ms": 2001, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/browser-client/feature-depth-browser-client.md", + "feature": "browser-client", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "tradeoffs" + ], + "available_facets": [ + "api", + "tradeoffs" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "failure_modes", + "validation" + ] + } + ] + }, + { + "feature": "browser-client", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/channels/browser/frontend/src/background/index.ts", + "jiuwenswarm/channels/browser/frontend/src/sidepanel/index.ts" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 1136, + "elapsed_ms": 2172, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/browser-client/feature-depth-browser-client.md", + "feature": "browser-client", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "tradeoffs" + ], + "available_facets": [ + "api", + "tradeoffs" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "failure_modes", + "validation" + ] + } + ] + }, + { + "feature": "vscode", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/channels/ide/packages/vscode-extension/src/extension.ts" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 767, + "elapsed_ms": 1848, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/ide-clients/feature-depth-vscode.md", + "feature": "vscode", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration" + ], + "available_facets": [ + "configuration" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "vscode", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/channels/ide/packages/vscode-extension/src/extension.ts" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 767, + "elapsed_ms": 1851, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/ide-clients/feature-depth-vscode.md", + "feature": "vscode", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration" + ], + "available_facets": [ + "configuration" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "jetbrains", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/channels/ide/packages/jetbrains-plugin/src/main/kotlin/com/jiuwenswarm/plugin/JiuwenSwarmService.kt" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 1575, + "elapsed_ms": 1862, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/ide-clients/feature-depth-jetbrains.md", + "feature": "jetbrains", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "tradeoffs" + ], + "available_facets": [ + "configuration", + "tradeoffs" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "validation" + ] + } + ] + }, + { + "feature": "jetbrains", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/channels/ide/packages/jetbrains-plugin/src/main/kotlin/com/jiuwenswarm/plugin/JiuwenSwarmService.kt" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 1575, + "elapsed_ms": 1936, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/ide-clients/feature-depth-jetbrains.md", + "feature": "jetbrains", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "tradeoffs" + ], + "available_facets": [ + "configuration", + "tradeoffs" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "validation" + ] + } + ] + }, + { + "feature": "sdk", + "probe": "description_and_paths", + "changed_files": [ + "sdks/python/src/jiuwenswarm_sdk/client.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 1280, + "elapsed_ms": 1968, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/sdk-clients/feature-depth-sdk.md", + "feature": "sdk", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "failure_modes" + ], + "available_facets": [ + "configuration", + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "sdk", + "probe": "paths_only", + "changed_files": [ + "sdks/python/src/jiuwenswarm_sdk/client.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 1280, + "elapsed_ms": 1943, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/sdk-clients/feature-depth-sdk.md", + "feature": "sdk", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "failure_modes" + ], + "available_facets": [ + "configuration", + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "sandbox", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenbox/src/jiuwenbox/server/app.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 1433, + "elapsed_ms": 1822, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/sandbox-runtime/feature-depth-sandbox.md", + "feature": "sandbox", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "api" + ], + "available_facets": [ + "configuration", + "api" + ], + "missing_facets": [ + "flow", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "sandbox", + "probe": "paths_only", + "changed_files": [ + "jiuwenbox/src/jiuwenbox/server/app.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 1433, + "elapsed_ms": 1925, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/sandbox-runtime/feature-depth-sandbox.md", + "feature": "sandbox", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "api" + ], + "available_facets": [ + "configuration", + "api" + ], + "missing_facets": [ + "flow", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "models", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/common/model_catalog.py", + "jiuwenswarm/common/model_config_validation.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 4767, + "elapsed_ms": 1917, + "extra_read_paths": [ + "repos/jiuwenswarm/components/common-core/jiuwenswarm-common-model-catalog.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/common-core/feature-depth-models.md", + "feature": "models", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "tradeoffs", + "configuration", + "validation" + ], + "available_facets": [ + "tradeoffs", + "configuration", + "validation" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes" + ] + }, + { + "path": "repos/jiuwenswarm/components/common-core/jiuwenswarm-common-model-catalog.md", + "feature": "", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [], + "available_facets": [], + "missing_facets": [] + } + ] + }, + { + "feature": "models", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/common/model_catalog.py", + "jiuwenswarm/common/model_config_validation.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 4767, + "elapsed_ms": 1919, + "extra_read_paths": [ + "repos/jiuwenswarm/components/common-core/jiuwenswarm-common-model-catalog.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/common-core/feature-depth-models.md", + "feature": "models", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "tradeoffs", + "configuration", + "validation" + ], + "available_facets": [ + "tradeoffs", + "configuration", + "validation" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes" + ] + }, + { + "path": "repos/jiuwenswarm/components/common-core/jiuwenswarm-common-model-catalog.md", + "feature": "", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [], + "available_facets": [], + "missing_facets": [] + } + ] + }, + { + "feature": "mcp", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/common/mcp_config.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 4096, + "elapsed_ms": 1742, + "extra_read_paths": [ + "repos/jiuwenswarm/components/common-core/jiuwenswarm-common.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/common-core/feature-depth-mcp.md", + "feature": "mcp", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "api", + "dependencies" + ], + "available_facets": [ + "configuration", + "api", + "dependencies" + ], + "missing_facets": [ + "flow", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/common-core/jiuwenswarm-common.md", + "feature": "", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [], + "available_facets": [], + "missing_facets": [] + } + ] + }, + { + "feature": "mcp", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/common/mcp_config.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 4096, + "elapsed_ms": 1818, + "extra_read_paths": [ + "repos/jiuwenswarm/components/common-core/jiuwenswarm-common.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/common-core/feature-depth-mcp.md", + "feature": "mcp", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "api", + "dependencies" + ], + "available_facets": [ + "configuration", + "api", + "dependencies" + ], + "missing_facets": [ + "flow", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/common-core/jiuwenswarm-common.md", + "feature": "", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [], + "available_facets": [], + "missing_facets": [] + } + ] + }, + { + "feature": "login", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/common/auth/service.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2496, + "elapsed_ms": 1743, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/login-auth/feature-depth-login.md", + "feature": "login", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration" + ], + "available_facets": [ + "configuration" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/login-auth/design-tradeoffs.md", + "feature": "", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [], + "available_facets": [], + "missing_facets": [] + } + ] + }, + { + "feature": "login", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/common/auth/service.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2496, + "elapsed_ms": 1990, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/login-auth/feature-depth-login.md", + "feature": "login", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration" + ], + "available_facets": [ + "configuration" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/login-auth/design-tradeoffs.md", + "feature": "", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [], + "available_facets": [], + "missing_facets": [] + } + ] + }, + { + "feature": "cron", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/runtime/cron/factory.py" + ], + "expected_depth": false, + "feature_hit": true, + "depth_hit": false, + "content_chars": 4941, + "elapsed_ms": 2072, + "extra_read_paths": [ + "repos/jiuwenswarm/components/cron-scheduling/feature-cron.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/cron-scheduling/feature-cron.md", + "feature": "cron", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [], + "available_facets": [], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/cron-scheduling/design-tradeoffs.md", + "feature": "", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [], + "available_facets": [], + "missing_facets": [] + } + ] + }, + { + "feature": "cron", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/runtime/cron/factory.py" + ], + "expected_depth": false, + "feature_hit": true, + "depth_hit": false, + "content_chars": 4941, + "elapsed_ms": 1891, + "extra_read_paths": [ + "repos/jiuwenswarm/components/cron-scheduling/feature-cron.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/cron-scheduling/design-tradeoffs.md", + "feature": "", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [], + "available_facets": [], + "missing_facets": [] + }, + { + "path": "repos/jiuwenswarm/components/cron-scheduling/feature-cron.md", + "feature": "cron", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [], + "available_facets": [], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "observability", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/observability/sink.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2311, + "elapsed_ms": 1829, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/observability/feature-depth-observability.md", + "feature": "observability", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "failure_modes" + ], + "available_facets": [ + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/observability/design-tradeoffs.md", + "feature": "", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [], + "available_facets": [], + "missing_facets": [] + } + ] + }, + { + "feature": "observability", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/observability/sink.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2311, + "elapsed_ms": 1948, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/observability/feature-depth-observability.md", + "feature": "observability", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "failure_modes" + ], + "available_facets": [ + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/observability/design-tradeoffs.md", + "feature": "", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [], + "available_facets": [], + "missing_facets": [] + } + ] + }, + { + "feature": "debug-trace", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/server/runtime/debug_trace/config.py", + "jiuwenswarm/server/runtime/debug_trace/stream_logger.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 3332, + "elapsed_ms": 2009, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/observability/feature-depth-debug-trace.md", + "feature": "debug-trace", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "flow", + "tradeoffs" + ], + "available_facets": [ + "api", + "flow", + "tradeoffs" + ], + "missing_facets": [ + "configuration", + "dependencies", + "failure_modes", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-permissions.md", + "feature": "permissions", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "failure_modes" + ], + "available_facets": [ + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "debug-trace", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/server/runtime/debug_trace/config.py", + "jiuwenswarm/server/runtime/debug_trace/stream_logger.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 3332, + "elapsed_ms": 1831, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/observability/feature-depth-debug-trace.md", + "feature": "debug-trace", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "flow", + "tradeoffs" + ], + "available_facets": [ + "api", + "flow", + "tradeoffs" + ], + "missing_facets": [ + "configuration", + "dependencies", + "failure_modes", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-permissions.md", + "feature": "permissions", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "failure_modes" + ], + "available_facets": [ + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "multimodal", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/agents/harness/common/tools/multimodal_config.py", + "jiuwenswarm/agents/harness/common/tools/image_tools.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 4118, + "elapsed_ms": 2007, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-multimodal.md", + "feature": "multimodal", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "tradeoffs" + ], + "available_facets": [ + "configuration", + "tradeoffs" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-image-generation.md", + "feature": "image-generation", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "api" + ], + "available_facets": [ + "flow", + "api" + ], + "missing_facets": [ + "configuration", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "multimodal", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/agents/harness/common/tools/multimodal_config.py", + "jiuwenswarm/agents/harness/common/tools/image_tools.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 4118, + "elapsed_ms": 2002, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-image-generation.md", + "feature": "image-generation", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "api" + ], + "available_facets": [ + "flow", + "api" + ], + "missing_facets": [ + "configuration", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-multimodal.md", + "feature": "multimodal", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "tradeoffs" + ], + "available_facets": [ + "configuration", + "tradeoffs" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "validation" + ] + } + ] + }, + { + "feature": "lsp", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/server/runtime/agent_adapter/interface_code.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 3208, + "elapsed_ms": 2193, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-lsp.md", + "feature": "lsp", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api" + ], + "available_facets": [ + "api" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-coding-memory.md", + "feature": "coding-memory", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "configuration", + "tradeoffs" + ], + "available_facets": [ + "flow", + "configuration", + "tradeoffs" + ], + "missing_facets": [ + "api", + "dependencies", + "failure_modes", + "validation" + ] + } + ] + }, + { + "feature": "lsp", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/server/runtime/agent_adapter/interface_code.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 3208, + "elapsed_ms": 1960, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-coding-memory.md", + "feature": "coding-memory", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "configuration", + "tradeoffs" + ], + "available_facets": [ + "flow", + "configuration", + "tradeoffs" + ], + "missing_facets": [ + "api", + "dependencies", + "failure_modes", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-lsp.md", + "feature": "lsp", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api" + ], + "available_facets": [ + "api" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "worktree", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/server/runtime/agent_adapter/interface_code.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 3052, + "elapsed_ms": 1867, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-worktree.md", + "feature": "worktree", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "failure_modes" + ], + "available_facets": [ + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-coding-memory.md", + "feature": "coding-memory", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "configuration", + "tradeoffs" + ], + "available_facets": [ + "flow", + "configuration", + "tradeoffs" + ], + "missing_facets": [ + "api", + "dependencies", + "failure_modes", + "validation" + ] + } + ] + }, + { + "feature": "worktree", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/server/runtime/agent_adapter/interface_code.py" + ], + "expected_depth": true, + "feature_hit": false, + "depth_hit": false, + "content_chars": 3208, + "elapsed_ms": 2019, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-coding-memory.md", + "feature": "coding-memory", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "configuration", + "tradeoffs" + ], + "available_facets": [ + "flow", + "configuration", + "tradeoffs" + ], + "missing_facets": [ + "api", + "dependencies", + "failure_modes", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-lsp.md", + "feature": "lsp", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api" + ], + "available_facets": [ + "api" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "autofix", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/autofix-pr.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/autofix-pr.watch.ts" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 3208, + "elapsed_ms": 1896, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/tui-client/feature-depth-autofix.md", + "feature": "autofix", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "api", + "tradeoffs" + ], + "available_facets": [ + "configuration", + "api", + "tradeoffs" + ], + "missing_facets": [ + "flow", + "dependencies", + "failure_modes", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/tui-client/feature-depth-tui.md", + "feature": "tui", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration" + ], + "available_facets": [ + "configuration" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "autofix", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/autofix-pr.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/autofix-pr.watch.ts" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 3208, + "elapsed_ms": 2261, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/tui-client/feature-depth-autofix.md", + "feature": "autofix", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "api", + "tradeoffs" + ], + "available_facets": [ + "configuration", + "api", + "tradeoffs" + ], + "missing_facets": [ + "flow", + "dependencies", + "failure_modes", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/tui-client/feature-depth-tui.md", + "feature": "tui", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration" + ], + "available_facets": [ + "configuration" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "im-feishu", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/gateway/channel_manager/im_platforms/feishu/feishu_connect.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 460, + "elapsed_ms": 1927, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/gateway-channels/feature-depth-im-feishu.md", + "feature": "im-feishu", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "validation" + ], + "available_facets": [ + "validation" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs" + ] + } + ] + }, + { + "feature": "im-feishu", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/gateway/channel_manager/im_platforms/feishu/feishu_connect.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 460, + "elapsed_ms": 2077, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/gateway-channels/feature-depth-im-feishu.md", + "feature": "im-feishu", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "validation" + ], + "available_facets": [ + "validation" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs" + ] + } + ] + }, + { + "feature": "im-wechat", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/gateway/channel_manager/im_platforms/wechat/wechat_connect.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 1507, + "elapsed_ms": 1823, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/gateway-channels/feature-depth-im-wechat.md", + "feature": "im-wechat", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "api" + ], + "available_facets": [ + "flow", + "api" + ], + "missing_facets": [ + "configuration", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "im-wechat", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/gateway/channel_manager/im_platforms/wechat/wechat_connect.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 1507, + "elapsed_ms": 1939, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/gateway-channels/feature-depth-im-wechat.md", + "feature": "im-wechat", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "api" + ], + "available_facets": [ + "flow", + "api" + ], + "missing_facets": [ + "configuration", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "im-wecom", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/gateway/channel_manager/im_platforms/wecom/wecom_connect.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 1252, + "elapsed_ms": 2107, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/gateway-channels/feature-depth-im-wecom.md", + "feature": "im-wecom", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "tradeoffs" + ], + "available_facets": [ + "configuration", + "tradeoffs" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "validation" + ] + } + ] + }, + { + "feature": "im-wecom", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/gateway/channel_manager/im_platforms/wecom/wecom_connect.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 1252, + "elapsed_ms": 2148, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/gateway-channels/feature-depth-im-wecom.md", + "feature": "im-wecom", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "tradeoffs" + ], + "available_facets": [ + "configuration", + "tradeoffs" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "validation" + ] + } + ] + }, + { + "feature": "im-dingtalk", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/gateway/channel_manager/im_platforms/dingtalk/dingtalk_connect.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 829, + "elapsed_ms": 2101, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/gateway-channels/feature-depth-im-dingtalk.md", + "feature": "im-dingtalk", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration" + ], + "available_facets": [ + "configuration" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "im-dingtalk", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/gateway/channel_manager/im_platforms/dingtalk/dingtalk_connect.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 829, + "elapsed_ms": 2025, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/gateway-channels/feature-depth-im-dingtalk.md", + "feature": "im-dingtalk", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration" + ], + "available_facets": [ + "configuration" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "im-xiaoyi", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/gateway/channel_manager/im_platforms/xiaoyi/xiaoyi_connect.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 1341, + "elapsed_ms": 2086, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/gateway-channels/feature-depth-im-xiaoyi.md", + "feature": "im-xiaoyi", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "api" + ], + "available_facets": [ + "configuration", + "api" + ], + "missing_facets": [ + "flow", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "im-xiaoyi", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/gateway/channel_manager/im_platforms/xiaoyi/xiaoyi_connect.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 1341, + "elapsed_ms": 2022, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/gateway-channels/feature-depth-im-xiaoyi.md", + "feature": "im-xiaoyi", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "api" + ], + "available_facets": [ + "configuration", + "api" + ], + "missing_facets": [ + "flow", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "im-slack", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/gateway/channel_manager/im_platforms/slack/slack_connect.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2008, + "elapsed_ms": 2570, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/gateway-channels/feature-depth-im-slack.md", + "feature": "im-slack", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "failure_modes", + "api" + ], + "available_facets": [ + "configuration", + "failure_modes", + "api" + ], + "missing_facets": [ + "flow", + "dependencies", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "im-slack", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/gateway/channel_manager/im_platforms/slack/slack_connect.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2008, + "elapsed_ms": 2100, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/gateway-channels/feature-depth-im-slack.md", + "feature": "im-slack", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "failure_modes", + "api" + ], + "available_facets": [ + "configuration", + "failure_modes", + "api" + ], + "missing_facets": [ + "flow", + "dependencies", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "im-telegram", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/gateway/channel_manager/im_platforms/telegram/telegram_connect.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 990, + "elapsed_ms": 2158, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/gateway-channels/feature-depth-im-telegram.md", + "feature": "im-telegram", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration" + ], + "available_facets": [ + "configuration" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "im-telegram", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/gateway/channel_manager/im_platforms/telegram/telegram_connect.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 990, + "elapsed_ms": 2115, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/gateway-channels/feature-depth-im-telegram.md", + "feature": "im-telegram", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration" + ], + "available_facets": [ + "configuration" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "im-discord", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/gateway/channel_manager/im_platforms/discord/discord_connect.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 491, + "elapsed_ms": 2277, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/gateway-channels/feature-depth-im-discord.md", + "feature": "im-discord", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api" + ], + "available_facets": [ + "api" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "im-discord", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/gateway/channel_manager/im_platforms/discord/discord_connect.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 491, + "elapsed_ms": 2287, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/gateway-channels/feature-depth-im-discord.md", + "feature": "im-discord", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api" + ], + "available_facets": [ + "api" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "im-whatsapp", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/gateway/channel_manager/im_platforms/whatsapp/whatsapp_connect.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2231, + "elapsed_ms": 2116, + "extra_read_paths": [ + "repos/jiuwenswarm/components/gateway-channels/feature-depth-im-whatsapp.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/gateway-channels/feature-depth-im-whatsapp.md", + "feature": "im-whatsapp", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "api" + ], + "available_facets": [ + "flow", + "api", + "configuration" + ], + "missing_facets": [ + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "im-whatsapp", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/gateway/channel_manager/im_platforms/whatsapp/whatsapp_connect.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2231, + "elapsed_ms": 2069, + "extra_read_paths": [ + "repos/jiuwenswarm/components/gateway-channels/feature-depth-im-whatsapp.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/gateway-channels/feature-depth-im-whatsapp.md", + "feature": "im-whatsapp", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "api" + ], + "available_facets": [ + "flow", + "api", + "configuration" + ], + "missing_facets": [ + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "agent-management", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/channels/web/frontend/src/components/AgentManagementPanel/index.tsx", + "jiuwenswarm/channels/web/frontend/src/features/agentManagement/client.ts", + "jiuwenswarm/channels/web/frontend/src/components/AgentPanel/index.tsx" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2383, + "elapsed_ms": 2042, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/web-frontend/feature-depth-agent-management.md", + "feature": "agent-management", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api" + ], + "available_facets": [ + "api" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/web-frontend/feature-depth-web-chat.md", + "feature": "web-chat", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "failure_modes", + "validation" + ], + "available_facets": [ + "api", + "failure_modes", + "validation" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "tradeoffs" + ] + } + ] + }, + { + "feature": "agent-management", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/channels/web/frontend/src/components/AgentManagementPanel/index.tsx", + "jiuwenswarm/channels/web/frontend/src/features/agentManagement/client.ts", + "jiuwenswarm/channels/web/frontend/src/components/AgentPanel/index.tsx" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2383, + "elapsed_ms": 2587, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/web-frontend/feature-depth-agent-management.md", + "feature": "agent-management", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api" + ], + "available_facets": [ + "api" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/web-frontend/feature-depth-web-chat.md", + "feature": "web-chat", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "failure_modes", + "validation" + ], + "available_facets": [ + "api", + "failure_modes", + "validation" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "tradeoffs" + ] + } + ] + }, + { + "feature": "jiuwen-memory-sdk", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/agents/harness/common/memory/external_memory_builder.py", + "jiuwenswarm/agents/harness/common/memory/external_memory_config.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 3117, + "elapsed_ms": 2305, + "extra_read_paths": [ + "repos/jiuwenswarm/components/agents-team/feature-depth-jiuwen-memory-sdk.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-jiuwen-memory-sdk.md", + "feature": "jiuwen-memory-sdk", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "flow" + ], + "available_facets": [ + "configuration", + "flow", + "dependencies", + "validation" + ], + "missing_facets": [ + "api", + "failure_modes", + "tradeoffs" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-context.md", + "feature": "context", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "validation" + ], + "available_facets": [ + "validation" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs" + ] + } + ] + }, + { + "feature": "jiuwen-memory-sdk", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/agents/harness/common/memory/external_memory_builder.py", + "jiuwenswarm/agents/harness/common/memory/external_memory_config.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 3117, + "elapsed_ms": 2166, + "extra_read_paths": [ + "repos/jiuwenswarm/components/agents-team/feature-depth-jiuwen-memory-sdk.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-jiuwen-memory-sdk.md", + "feature": "jiuwen-memory-sdk", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "flow" + ], + "available_facets": [ + "configuration", + "flow", + "dependencies", + "validation" + ], + "missing_facets": [ + "api", + "failure_modes", + "tradeoffs" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-context.md", + "feature": "context", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "validation" + ], + "available_facets": [ + "validation" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs" + ] + } + ] + }, + { + "feature": "image-generation", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/agents/harness/common/tools/image_tools.py", + "jiuwenswarm/agents/harness/common/tools/multimodal_config.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 4118, + "elapsed_ms": 2136, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-image-generation.md", + "feature": "image-generation", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "api" + ], + "available_facets": [ + "flow", + "api" + ], + "missing_facets": [ + "configuration", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-multimodal.md", + "feature": "multimodal", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "tradeoffs" + ], + "available_facets": [ + "configuration", + "tradeoffs" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "validation" + ] + } + ] + }, + { + "feature": "image-generation", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/agents/harness/common/tools/image_tools.py", + "jiuwenswarm/agents/harness/common/tools/multimodal_config.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 4118, + "elapsed_ms": 2030, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-image-generation.md", + "feature": "image-generation", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "api" + ], + "available_facets": [ + "flow", + "api" + ], + "missing_facets": [ + "configuration", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-multimodal.md", + "feature": "multimodal", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "tradeoffs" + ], + "available_facets": [ + "configuration", + "tradeoffs" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "validation" + ] + } + ] + }, + { + "feature": "sandbox-privacy-proxy", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenbox/src/jiuwenbox/proxy/inference_privacy_proxy.py", + "jiuwenbox/src/jiuwenbox/proxy/inference_privacy_proxy_manager.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 4196, + "elapsed_ms": 2348, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/sandbox-runtime/feature-depth-sandbox-privacy-proxy.md", + "feature": "sandbox-privacy-proxy", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "dependencies", + "failure_modes" + ], + "available_facets": [ + "configuration", + "dependencies", + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/sandbox-runtime/feature-depth-sandbox.md", + "feature": "sandbox", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "configuration" + ], + "available_facets": [ + "api", + "configuration" + ], + "missing_facets": [ + "flow", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "sandbox-privacy-proxy", + "probe": "paths_only", + "changed_files": [ + "jiuwenbox/src/jiuwenbox/proxy/inference_privacy_proxy.py", + "jiuwenbox/src/jiuwenbox/proxy/inference_privacy_proxy_manager.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 4196, + "elapsed_ms": 1989, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/sandbox-runtime/feature-depth-sandbox-privacy-proxy.md", + "feature": "sandbox-privacy-proxy", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "dependencies", + "failure_modes" + ], + "available_facets": [ + "configuration", + "dependencies", + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/sandbox-runtime/feature-depth-sandbox.md", + "feature": "sandbox", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "configuration" + ], + "available_facets": [ + "api", + "configuration" + ], + "missing_facets": [ + "flow", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "digital-avatar", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/agents/harness/common/rails/avatar_rail.py", + "jiuwenswarm/agents/harness/common/rails/permissions/owner_scopes.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2369, + "elapsed_ms": 2053, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-digital-avatar.md", + "feature": "digital-avatar", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "dependencies", + "failure_modes" + ], + "available_facets": [ + "dependencies", + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-context.md", + "feature": "context", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "validation" + ], + "available_facets": [ + "validation" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs" + ] + } + ] + }, + { + "feature": "digital-avatar", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/agents/harness/common/rails/avatar_rail.py", + "jiuwenswarm/agents/harness/common/rails/permissions/owner_scopes.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2369, + "elapsed_ms": 2076, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agents-team/feature-depth-digital-avatar.md", + "feature": "digital-avatar", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "dependencies", + "failure_modes" + ], + "available_facets": [ + "dependencies", + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-context.md", + "feature": "context", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "validation" + ], + "available_facets": [ + "validation" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs" + ] + } + ] + }, + { + "feature": "connectors", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/channels/web/frontend/src/services/connectorApi.ts", + "jiuwenswarm/channels/web/frontend/src/components/ConnectorMarket/index.tsx" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2571, + "elapsed_ms": 2078, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/web-frontend/feature-depth-connectors.md", + "feature": "connectors", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "tradeoffs" + ], + "available_facets": [ + "tradeoffs" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/web-frontend/feature-depth-web-chat.md", + "feature": "web-chat", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "failure_modes", + "validation" + ], + "available_facets": [ + "api", + "failure_modes", + "validation" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "tradeoffs" + ] + } + ] + }, + { + "feature": "connectors", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/channels/web/frontend/src/services/connectorApi.ts", + "jiuwenswarm/channels/web/frontend/src/components/ConnectorMarket/index.tsx" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2571, + "elapsed_ms": 2200, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/web-frontend/feature-depth-connectors.md", + "feature": "connectors", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "tradeoffs" + ], + "available_facets": [ + "tradeoffs" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/web-frontend/feature-depth-web-chat.md", + "feature": "web-chat", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "failure_modes", + "validation" + ], + "available_facets": [ + "api", + "failure_modes", + "validation" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "tradeoffs" + ] + } + ] + }, + { + "feature": "external-cli-agents", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/common/external_cli_runtime.py", + "jiuwenswarm/common/external_cli_catalog.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 1410, + "elapsed_ms": 1988, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/common-core/feature-depth-external-cli-agents.md", + "feature": "external-cli-agents", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration" + ], + "available_facets": [ + "configuration" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/gateway-channels/feature-depth-cli.md", + "feature": "cli", + "match_reason": "description", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "dependencies" + ], + "available_facets": [ + "dependencies" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "external-cli-agents", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/common/external_cli_runtime.py", + "jiuwenswarm/common/external_cli_catalog.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 713, + "elapsed_ms": 2071, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/common-core/feature-depth-external-cli-agents.md", + "feature": "external-cli-agents", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration" + ], + "available_facets": [ + "configuration" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "goal-mode", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/channels/web/frontend/src/features/goalMode/goalModeGate.ts", + "jiuwenswarm/channels/web/frontend/src/stores/goalStore.ts", + "jiuwenswarm/channels/web/frontend/src/services/webClient.ts", + "jiuwenswarm/channels/web/frontend/src/hooks/useWebSocket.ts" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 4812, + "elapsed_ms": 2012, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/web-frontend/feature-depth-goal-mode.md", + "feature": "goal-mode", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "api" + ], + "available_facets": [ + "flow", + "api" + ], + "missing_facets": [ + "configuration", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/web-frontend/feature-depth-web-chat.md", + "feature": "web-chat", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "failure_modes", + "validation" + ], + "available_facets": [ + "api", + "failure_modes", + "validation" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "tradeoffs" + ] + } + ] + }, + { + "feature": "goal-mode", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/channels/web/frontend/src/features/goalMode/goalModeGate.ts", + "jiuwenswarm/channels/web/frontend/src/stores/goalStore.ts", + "jiuwenswarm/channels/web/frontend/src/services/webClient.ts", + "jiuwenswarm/channels/web/frontend/src/hooks/useWebSocket.ts" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 4812, + "elapsed_ms": 2084, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/web-frontend/feature-depth-goal-mode.md", + "feature": "goal-mode", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "api" + ], + "available_facets": [ + "flow", + "api" + ], + "missing_facets": [ + "configuration", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/web-frontend/feature-depth-web-chat.md", + "feature": "web-chat", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "failure_modes", + "validation" + ], + "available_facets": [ + "api", + "failure_modes", + "validation" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "tradeoffs" + ] + } + ] + }, + { + "feature": "plan-mode", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/channels/web/frontend/src/features/planMode/planModeGate.ts", + "jiuwenswarm/channels/web/frontend/src/stores/planStore.ts" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 4025, + "elapsed_ms": 2053, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/web-frontend/feature-depth-plan-mode.md", + "feature": "plan-mode", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "dependencies" + ], + "available_facets": [ + "flow", + "dependencies" + ], + "missing_facets": [ + "api", + "configuration", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/web-frontend/feature-depth-web-chat.md", + "feature": "web-chat", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "failure_modes", + "validation" + ], + "available_facets": [ + "api", + "failure_modes", + "validation" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "tradeoffs" + ] + } + ] + }, + { + "feature": "plan-mode", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/channels/web/frontend/src/features/planMode/planModeGate.ts", + "jiuwenswarm/channels/web/frontend/src/stores/planStore.ts" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 4025, + "elapsed_ms": 2107, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/web-frontend/feature-depth-plan-mode.md", + "feature": "plan-mode", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "dependencies" + ], + "available_facets": [ + "flow", + "dependencies" + ], + "missing_facets": [ + "api", + "configuration", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/web-frontend/feature-depth-web-chat.md", + "feature": "web-chat", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "failure_modes", + "validation" + ], + "available_facets": [ + "api", + "failure_modes", + "validation" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "tradeoffs" + ] + } + ] + }, + { + "feature": "heartbeat", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/agents/harness/code/rails/heartbeat/models.py", + "jiuwenswarm/agents/harness/code/rails/heartbeat/controller.py", + "jiuwenswarm/gateway/heartbeat/proxy.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 3884, + "elapsed_ms": 2175, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-heartbeat.md", + "feature": "heartbeat", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "api" + ], + "available_facets": [ + "configuration", + "api" + ], + "missing_facets": [ + "flow", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-coding-memory.md", + "feature": "coding-memory", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "configuration", + "tradeoffs" + ], + "available_facets": [ + "flow", + "configuration", + "tradeoffs" + ], + "missing_facets": [ + "api", + "dependencies", + "failure_modes", + "validation" + ] + } + ] + }, + { + "feature": "heartbeat", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/agents/harness/code/rails/heartbeat/models.py", + "jiuwenswarm/agents/harness/code/rails/heartbeat/controller.py", + "jiuwenswarm/gateway/heartbeat/proxy.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 3884, + "elapsed_ms": 2036, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-heartbeat.md", + "feature": "heartbeat", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "configuration", + "api" + ], + "available_facets": [ + "configuration", + "api" + ], + "missing_facets": [ + "flow", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-coding-memory.md", + "feature": "coding-memory", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "configuration", + "tradeoffs" + ], + "available_facets": [ + "flow", + "configuration", + "tradeoffs" + ], + "missing_facets": [ + "api", + "dependencies", + "failure_modes", + "validation" + ] + } + ] + }, + { + "feature": "artifacts", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/index.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/artifactCollection.ts", + "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/filePreviewModel.ts" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 4253, + "elapsed_ms": 2487, + "extra_read_paths": [ + "repos/jiuwenswarm/components/web-frontend/feature-depth-artifacts.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/web-frontend/feature-depth-artifacts.md", + "feature": "artifacts", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "dependencies" + ], + "available_facets": [ + "flow", + "dependencies", + "failure_modes", + "api" + ], + "missing_facets": [ + "configuration", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/web-frontend/feature-depth-web-chat.md", + "feature": "web-chat", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "failure_modes", + "validation" + ], + "available_facets": [ + "api", + "failure_modes", + "validation" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "tradeoffs" + ] + } + ] + }, + { + "feature": "artifacts", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/index.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/artifactCollection.ts", + "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/filePreviewModel.ts" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 4253, + "elapsed_ms": 2224, + "extra_read_paths": [ + "repos/jiuwenswarm/components/web-frontend/feature-depth-artifacts.md" + ], + "documents": [ + { + "path": "repos/jiuwenswarm/components/web-frontend/feature-depth-artifacts.md", + "feature": "artifacts", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "dependencies" + ], + "available_facets": [ + "flow", + "dependencies", + "failure_modes", + "api" + ], + "missing_facets": [ + "configuration", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/web-frontend/feature-depth-web-chat.md", + "feature": "web-chat", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "failure_modes", + "validation" + ], + "available_facets": [ + "api", + "failure_modes", + "validation" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "tradeoffs" + ] + } + ] + }, + { + "feature": "speech-interaction", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/channels/web/frontend/src/features/taskAsr/useTaskAsr.ts", + "jiuwenswarm/channels/web/frontend/src/features/taskAsr/featureFlag.ts", + "jiuwenswarm/channels/web/frontend/src/utils/tts.ts", + "jiuwenswarm/channels/web/frontend/src/hooks/useSpeech.ts" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2870, + "elapsed_ms": 2007, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/web-frontend/feature-depth-speech-interaction.md", + "feature": "speech-interaction", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "failure_modes" + ], + "available_facets": [ + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/web-frontend/feature-depth-web-chat.md", + "feature": "web-chat", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "failure_modes", + "validation" + ], + "available_facets": [ + "api", + "failure_modes", + "validation" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "tradeoffs" + ] + } + ] + }, + { + "feature": "speech-interaction", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/channels/web/frontend/src/features/taskAsr/useTaskAsr.ts", + "jiuwenswarm/channels/web/frontend/src/features/taskAsr/featureFlag.ts", + "jiuwenswarm/channels/web/frontend/src/utils/tts.ts", + "jiuwenswarm/channels/web/frontend/src/hooks/useSpeech.ts" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2870, + "elapsed_ms": 2054, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/web-frontend/feature-depth-speech-interaction.md", + "feature": "speech-interaction", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "failure_modes" + ], + "available_facets": [ + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/web-frontend/feature-depth-web-chat.md", + "feature": "web-chat", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "failure_modes", + "validation" + ], + "available_facets": [ + "api", + "failure_modes", + "validation" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "tradeoffs" + ] + } + ] + }, + { + "feature": "skill-development", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/server/runtime/skill/skilldev/service.py", + "jiuwenswarm/server/runtime/skill/skilldev/pipeline.py", + "jiuwenswarm/server/runtime/skill/skilldev/deps.py", + "jiuwenswarm/server/runtime/skill/skilldev/context.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2489, + "elapsed_ms": 2067, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-skill-development.md", + "feature": "skill-development", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "configuration" + ], + "available_facets": [ + "api", + "configuration" + ], + "missing_facets": [ + "flow", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-permissions.md", + "feature": "permissions", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "failure_modes" + ], + "available_facets": [ + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "skill-development", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/server/runtime/skill/skilldev/service.py", + "jiuwenswarm/server/runtime/skill/skilldev/pipeline.py", + "jiuwenswarm/server/runtime/skill/skilldev/deps.py", + "jiuwenswarm/server/runtime/skill/skilldev/context.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 2489, + "elapsed_ms": 2080, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-skill-development.md", + "feature": "skill-development", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "api", + "configuration" + ], + "available_facets": [ + "api", + "configuration" + ], + "missing_facets": [ + "flow", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-permissions.md", + "feature": "permissions", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "failure_modes" + ], + "available_facets": [ + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "tradeoffs", + "validation" + ] + } + ] + }, + { + "feature": "proactive-recommendation", + "probe": "description_and_paths", + "changed_files": [ + "jiuwenswarm/agents/harness/common/recommendation/proactive_engine.py", + "jiuwenswarm/server/runtime/proactive_adapter.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 3099, + "elapsed_ms": 2288, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-proactive-recommendation.md", + "feature": "proactive-recommendation", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "configuration" + ], + "available_facets": [ + "flow", + "configuration" + ], + "missing_facets": [ + "api", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-context.md", + "feature": "context", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "validation" + ], + "available_facets": [ + "validation" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs" + ] + } + ] + }, + { + "feature": "proactive-recommendation", + "probe": "paths_only", + "changed_files": [ + "jiuwenswarm/agents/harness/common/recommendation/proactive_engine.py", + "jiuwenswarm/server/runtime/proactive_adapter.py" + ], + "expected_depth": true, + "feature_hit": true, + "depth_hit": true, + "content_chars": 3099, + "elapsed_ms": 2257, + "extra_read_paths": [], + "documents": [ + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-proactive-recommendation.md", + "feature": "proactive-recommendation", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "flow", + "configuration" + ], + "available_facets": [ + "flow", + "configuration" + ], + "missing_facets": [ + "api", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ] + }, + { + "path": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-context.md", + "feature": "context", + "match_reason": "changed_source", + "source_pins": [ + "f0a69728c96b5961d993449f1a901cbd2f4dac5b" + ], + "included_facets": [ + "validation" + ], + "available_facets": [ + "validation" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs" + ] + } + ] + } + ], + "provenance": { + "knowledge_tree_sha256": "64879b31ee9c494595324d66842f78971071ebff00eb74459f2ae7da0fa05b97", + "policy_sha256": "c23eefb5057bfdff6a7be55cd663b5e9dc636cc2d76741b39d875088a8216661" + }, + "limits": "Catalog probes test context delivery, not real PR bug recall or review quality. Paths-only probes are diagnostic when multiple features share entry points. Intact depth prose does not revalidate upstream source or the PR head." +} diff --git a/eval/knowledge-depth/jiuwenswarm-retrieval-baseline-20261002.json b/eval/knowledge-depth/jiuwenswarm-retrieval-baseline-20261002.json new file mode 100644 index 000000000..44395272a --- /dev/null +++ b/eval/knowledge-depth/jiuwenswarm-retrieval-baseline-20261002.json @@ -0,0 +1,485 @@ +{ + "baseline_commit": "2b669678bd5bf43a77edf5b296c5d59dc4497591", + "same_kb_input": "current metadata; repository page bodies unchanged from baseline", + "cases": [ + { + "feature": "bootstrap", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "instances", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "desktop", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "deployment", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "process-cli", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "cli", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "tui", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "web-chat", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "web-navigation", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "projects-sessions", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "modes", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "team", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "distributed-team", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "human-team", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "swarmflow", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "harness", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "planning", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "subagents", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "skills", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "swarm-skills", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "skill-hub", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "skill-evolution", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "symphony", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "auto-harness", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "rsi-packages", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "ttse", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "memory", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "auto-memory", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "coding-memory", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "task-memory", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "context", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "permissions", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "hooks", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "applications", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "video-duplex", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "e2a", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "a2a", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "acp", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "ssh", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "a2ui", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "browser-tools", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "browser-client", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "vscode", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "jetbrains", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "sdk", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "sandbox", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "models", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "mcp", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "login", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "cron", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "observability", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "debug-trace", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "multimodal", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "lsp", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "worktree", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "autofix", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "im-feishu", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "im-wechat", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "im-wecom", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "im-dingtalk", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "im-xiaoyi", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "im-slack", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "im-telegram", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "im-discord", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "im-whatsapp", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "agent-management", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "jiuwen-memory-sdk", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "image-generation", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "sandbox-privacy-proxy", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "digital-avatar", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "connectors", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "external-cli-agents", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "goal-mode", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "plan-mode", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "heartbeat", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "artifacts", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "speech-interaction", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "skill-development", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + }, + { + "feature": "proactive-recommendation", + "routes_unchanged": true, + "old_embedded_related_documents": 0, + "old_file_reads": 1 + } + ], + "summary": { + "cases": 79, + "routes_unchanged": 79, + "old_embedded_related_documents": 0 + } +} diff --git a/eval/knowledge-depth/jiuwenswarm-retrieval-depth-audit-20261002.json b/eval/knowledge-depth/jiuwenswarm-retrieval-depth-audit-20261002.json new file mode 100644 index 000000000..b0c609c74 --- /dev/null +++ b/eval/knowledge-depth/jiuwenswarm-retrieval-depth-audit-20261002.json @@ -0,0 +1,4428 @@ +{ + "semantic_depth": { + "pin": "f0a69728c96b5961d993449f1a901cbd2f4dac5b", + "features": { + "bootstrap": { + "owner": "launch", + "page": "repos/jiuwenswarm/components/launch/feature-depth-bootstrap.md", + "facets": [ + "api", + "configuration", + "tradeoffs", + "validation" + ], + "missing_facets": [ + "flow", + "dependencies", + "failure_modes" + ], + "complete": false + }, + "instances": { + "owner": "launch", + "page": "repos/jiuwenswarm/components/launch/feature-depth-instances.md", + "facets": [ + "api", + "configuration", + "dependencies", + "tradeoffs" + ], + "missing_facets": [ + "flow", + "failure_modes", + "validation" + ], + "complete": false + }, + "desktop": { + "owner": "launch", + "page": "repos/jiuwenswarm/components/launch/feature-depth-desktop.md", + "facets": [ + "api", + "configuration", + "failure_modes", + "tradeoffs" + ], + "missing_facets": [ + "flow", + "dependencies", + "validation" + ], + "complete": false + }, + "deployment": { + "owner": "packaging-deploy", + "page": "repos/jiuwenswarm/components/packaging-deploy/feature-depth-deployment.md", + "facets": [ + "configuration", + "dependencies" + ], + "missing_facets": [ + "flow", + "api", + "failure_modes", + "tradeoffs", + "validation" + ], + "complete": false + }, + "process-cli": { + "owner": "gateway-channels", + "page": "repos/jiuwenswarm/components/gateway-channels/feature-depth-process-cli.md", + "facets": [ + "flow", + "dependencies", + "validation" + ], + "missing_facets": [ + "api", + "configuration", + "failure_modes", + "tradeoffs" + ], + "complete": false + }, + "cli": { + "owner": "gateway-channels", + "page": "repos/jiuwenswarm/components/gateway-channels/feature-depth-cli.md", + "facets": [ + "dependencies" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "failure_modes", + "tradeoffs", + "validation" + ], + "complete": false + }, + "tui": { + "owner": "tui-client", + "page": "repos/jiuwenswarm/components/tui-client/feature-depth-tui.md", + "facets": [ + "configuration" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ], + "complete": false + }, + "web-chat": { + "owner": "web-frontend", + "page": "repos/jiuwenswarm/components/web-frontend/feature-depth-web-chat.md", + "facets": [ + "api", + "failure_modes", + "validation" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "tradeoffs" + ], + "complete": false + }, + "web-navigation": { + "owner": "web-frontend", + "page": "repos/jiuwenswarm/components/web-frontend/feature-depth-web-navigation.md", + "facets": [ + "api", + "configuration", + "failure_modes" + ], + "missing_facets": [ + "flow", + "dependencies", + "tradeoffs", + "validation" + ], + "complete": false + }, + "projects-sessions": { + "owner": "agent-runtime", + "page": "repos/jiuwenswarm/components/agent-runtime/feature-depth-projects-sessions.md", + "facets": [ + "flow", + "api", + "configuration", + "validation" + ], + "missing_facets": [ + "dependencies", + "failure_modes", + "tradeoffs" + ], + "complete": false + }, + "modes": { + "owner": "agent-server-runtime", + "page": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-modes.md", + "facets": [ + "api", + "failure_modes", + "validation" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "tradeoffs" + ], + "complete": false + }, + "team": { + "owner": "agents-team", + "page": "repos/jiuwenswarm/components/agents-team/feature-depth-team.md", + "facets": [ + "configuration", + "dependencies", + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "tradeoffs", + "validation" + ], + "complete": false + }, + "distributed-team": { + "owner": "agents-team", + "page": "repos/jiuwenswarm/components/agents-team/feature-depth-distributed-team.md", + "facets": [ + "api", + "configuration", + "failure_modes", + "validation" + ], + "missing_facets": [ + "flow", + "dependencies", + "tradeoffs" + ], + "complete": false + }, + "human-team": { + "owner": "agents-team", + "page": "repos/jiuwenswarm/components/agents-team/feature-depth-human-team.md", + "facets": [ + "api", + "dependencies", + "failure_modes", + "tradeoffs" + ], + "missing_facets": [ + "flow", + "configuration", + "validation" + ], + "complete": false + }, + "swarmflow": { + "owner": "agents-team", + "page": "repos/jiuwenswarm/components/agents-team/feature-depth-swarmflow.md", + "facets": [ + "tradeoffs" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "validation" + ], + "complete": false + }, + "harness": { + "owner": "agent-server-runtime", + "page": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-harness.md", + "facets": [ + "configuration", + "validation" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs" + ], + "complete": false + }, + "planning": { + "owner": "agents-team", + "page": "repos/jiuwenswarm/components/agents-team/feature-depth-planning.md", + "facets": [ + "flow", + "configuration", + "dependencies", + "failure_modes" + ], + "missing_facets": [ + "api", + "tradeoffs", + "validation" + ], + "complete": false + }, + "subagents": { + "owner": "agents-team", + "page": "repos/jiuwenswarm/components/agents-team/feature-depth-subagents.md", + "facets": [ + "flow", + "dependencies", + "tradeoffs" + ], + "missing_facets": [ + "api", + "configuration", + "failure_modes", + "validation" + ], + "complete": false + }, + "skills": { + "owner": "agents-team", + "page": "repos/jiuwenswarm/components/agents-team/feature-depth-skills.md", + "facets": [ + "configuration", + "dependencies", + "failure_modes", + "tradeoffs" + ], + "missing_facets": [ + "flow", + "api", + "validation" + ], + "complete": false + }, + "swarm-skills": { + "owner": "agents-team", + "page": "repos/jiuwenswarm/components/agents-team/feature-depth-swarm-skills.md", + "facets": [ + "flow", + "configuration", + "tradeoffs" + ], + "missing_facets": [ + "api", + "dependencies", + "failure_modes", + "validation" + ], + "complete": false + }, + "skill-hub": { + "owner": "agents-team", + "page": "repos/jiuwenswarm/components/agents-team/feature-depth-skill-hub.md", + "facets": [ + "flow", + "api", + "configuration" + ], + "missing_facets": [ + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ], + "complete": false + }, + "skill-evolution": { + "owner": "agent-server-runtime", + "page": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-skill-evolution.md", + "facets": [], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ], + "complete": false + }, + "symphony": { + "owner": "symphony-orchestration", + "page": "repos/jiuwenswarm/components/symphony-orchestration/feature-depth-symphony.md", + "facets": [ + "flow", + "api", + "configuration", + "dependencies", + "validation" + ], + "missing_facets": [ + "failure_modes", + "tradeoffs" + ], + "complete": false + }, + "auto-harness": { + "owner": "auto-harness", + "page": "repos/jiuwenswarm/components/auto-harness/feature-depth-auto-harness.md", + "facets": [ + "configuration" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ], + "complete": false + }, + "rsi-packages": { + "owner": "auto-harness", + "page": "repos/jiuwenswarm/components/auto-harness/feature-depth-rsi-packages.md", + "facets": [ + "flow", + "configuration", + "failure_modes" + ], + "missing_facets": [ + "api", + "dependencies", + "tradeoffs", + "validation" + ], + "complete": false + }, + "ttse": { + "owner": "agent-server-runtime", + "page": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-ttse.md", + "facets": [ + "dependencies" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "failure_modes", + "tradeoffs", + "validation" + ], + "complete": false + }, + "memory": { + "owner": "agents-team", + "page": "repos/jiuwenswarm/components/agents-team/feature-depth-memory.md", + "facets": [ + "configuration" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ], + "complete": false + }, + "auto-memory": { + "owner": "agents-team", + "page": "repos/jiuwenswarm/components/agents-team/feature-depth-auto-memory.md", + "facets": [ + "configuration", + "dependencies" + ], + "missing_facets": [ + "flow", + "api", + "failure_modes", + "tradeoffs", + "validation" + ], + "complete": false + }, + "coding-memory": { + "owner": "agent-server-runtime", + "page": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-coding-memory.md", + "facets": [ + "flow", + "configuration", + "tradeoffs" + ], + "missing_facets": [ + "api", + "dependencies", + "failure_modes", + "validation" + ], + "complete": false + }, + "task-memory": { + "owner": "agents-team", + "page": "repos/jiuwenswarm/components/agents-team/feature-depth-task-memory.md", + "facets": [ + "flow", + "api", + "dependencies", + "failure_modes" + ], + "missing_facets": [ + "configuration", + "tradeoffs", + "validation" + ], + "complete": false + }, + "context": { + "owner": "agent-server-runtime", + "page": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-context.md", + "facets": [ + "validation" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs" + ], + "complete": false + }, + "permissions": { + "owner": "agent-server-runtime", + "page": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-permissions.md", + "facets": [ + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "tradeoffs", + "validation" + ], + "complete": false + }, + "hooks": { + "owner": "extensions-plugins", + "page": "repos/jiuwenswarm/components/extensions-plugins/feature-depth-hooks.md", + "facets": [ + "tradeoffs" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "validation" + ], + "complete": false + }, + "applications": { + "owner": "extensions-plugins", + "page": "repos/jiuwenswarm/components/extensions-plugins/feature-depth-applications.md", + "facets": [ + "api", + "configuration", + "dependencies" + ], + "missing_facets": [ + "flow", + "failure_modes", + "tradeoffs", + "validation" + ], + "complete": false + }, + "video-duplex": { + "owner": "extensions-plugins", + "page": "repos/jiuwenswarm/components/extensions-plugins/feature-depth-video-duplex.md", + "facets": [ + "configuration" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ], + "complete": false + }, + "e2a": { + "owner": "protocols", + "page": "repos/jiuwenswarm/components/protocols/feature-depth-e2a.md", + "facets": [ + "api" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ], + "complete": false + }, + "a2a": { + "owner": "protocols", + "page": "repos/jiuwenswarm/components/protocols/feature-depth-a2a.md", + "facets": [ + "configuration", + "tradeoffs", + "validation" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes" + ], + "complete": false + }, + "acp": { + "owner": "protocols", + "page": "repos/jiuwenswarm/components/protocols/feature-depth-acp.md", + "facets": [ + "configuration" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ], + "complete": false + }, + "ssh": { + "owner": "gateway-channels", + "page": "repos/jiuwenswarm/components/gateway-channels/feature-depth-ssh.md", + "facets": [ + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "tradeoffs", + "validation" + ], + "complete": false + }, + "a2ui": { + "owner": "a2ui", + "page": "repos/jiuwenswarm/components/a2ui/feature-depth-a2ui.md", + "facets": [ + "configuration", + "validation" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs" + ], + "complete": false + }, + "browser-tools": { + "owner": "agents-team", + "page": "repos/jiuwenswarm/components/agents-team/feature-depth-browser-tools.md", + "facets": [ + "flow", + "configuration", + "failure_modes" + ], + "missing_facets": [ + "api", + "dependencies", + "tradeoffs", + "validation" + ], + "complete": false + }, + "browser-client": { + "owner": "browser-client", + "page": "repos/jiuwenswarm/components/browser-client/feature-depth-browser-client.md", + "facets": [ + "api", + "tradeoffs" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "failure_modes", + "validation" + ], + "complete": false + }, + "vscode": { + "owner": "ide-clients", + "page": "repos/jiuwenswarm/components/ide-clients/feature-depth-vscode.md", + "facets": [ + "configuration" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ], + "complete": false + }, + "jetbrains": { + "owner": "ide-clients", + "page": "repos/jiuwenswarm/components/ide-clients/feature-depth-jetbrains.md", + "facets": [ + "configuration", + "tradeoffs" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "validation" + ], + "complete": false + }, + "sdk": { + "owner": "sdk-clients", + "page": "repos/jiuwenswarm/components/sdk-clients/feature-depth-sdk.md", + "facets": [ + "configuration", + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "tradeoffs", + "validation" + ], + "complete": false + }, + "sandbox": { + "owner": "sandbox-runtime", + "page": "repos/jiuwenswarm/components/sandbox-runtime/feature-depth-sandbox.md", + "facets": [ + "api", + "configuration" + ], + "missing_facets": [ + "flow", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ], + "complete": false + }, + "models": { + "owner": "common-core", + "page": "repos/jiuwenswarm/components/common-core/feature-depth-models.md", + "facets": [ + "configuration", + "tradeoffs", + "validation" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes" + ], + "complete": false + }, + "mcp": { + "owner": "common-core", + "page": "repos/jiuwenswarm/components/common-core/feature-depth-mcp.md", + "facets": [ + "api", + "configuration", + "dependencies" + ], + "missing_facets": [ + "flow", + "failure_modes", + "tradeoffs", + "validation" + ], + "complete": false + }, + "login": { + "owner": "login-auth", + "page": "repos/jiuwenswarm/components/login-auth/feature-depth-login.md", + "facets": [ + "configuration" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ], + "complete": false + }, + "cron": { + "owner": "cron-scheduling", + "page": "repos/jiuwenswarm/components/cron-scheduling/feature-depth-cron.md", + "facets": [], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ], + "complete": false + }, + "observability": { + "owner": "observability", + "page": "repos/jiuwenswarm/components/observability/feature-depth-observability.md", + "facets": [ + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "tradeoffs", + "validation" + ], + "complete": false + }, + "debug-trace": { + "owner": "observability", + "page": "repos/jiuwenswarm/components/observability/feature-depth-debug-trace.md", + "facets": [ + "flow", + "api", + "tradeoffs" + ], + "missing_facets": [ + "configuration", + "dependencies", + "failure_modes", + "validation" + ], + "complete": false + }, + "multimodal": { + "owner": "agents-team", + "page": "repos/jiuwenswarm/components/agents-team/feature-depth-multimodal.md", + "facets": [ + "configuration", + "tradeoffs" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "validation" + ], + "complete": false + }, + "lsp": { + "owner": "agent-server-runtime", + "page": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-lsp.md", + "facets": [ + "api" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ], + "complete": false + }, + "worktree": { + "owner": "agent-server-runtime", + "page": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-worktree.md", + "facets": [ + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "tradeoffs", + "validation" + ], + "complete": false + }, + "autofix": { + "owner": "tui-client", + "page": "repos/jiuwenswarm/components/tui-client/feature-depth-autofix.md", + "facets": [ + "api", + "configuration", + "tradeoffs" + ], + "missing_facets": [ + "flow", + "dependencies", + "failure_modes", + "validation" + ], + "complete": false + }, + "im-feishu": { + "owner": "gateway-channels", + "page": "repos/jiuwenswarm/components/gateway-channels/feature-depth-im-feishu.md", + "facets": [ + "validation" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs" + ], + "complete": false + }, + "im-wechat": { + "owner": "gateway-channels", + "page": "repos/jiuwenswarm/components/gateway-channels/feature-depth-im-wechat.md", + "facets": [ + "flow", + "api" + ], + "missing_facets": [ + "configuration", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ], + "complete": false + }, + "im-wecom": { + "owner": "gateway-channels", + "page": "repos/jiuwenswarm/components/gateway-channels/feature-depth-im-wecom.md", + "facets": [ + "configuration", + "tradeoffs" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "validation" + ], + "complete": false + }, + "im-dingtalk": { + "owner": "gateway-channels", + "page": "repos/jiuwenswarm/components/gateway-channels/feature-depth-im-dingtalk.md", + "facets": [ + "configuration" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ], + "complete": false + }, + "im-xiaoyi": { + "owner": "gateway-channels", + "page": "repos/jiuwenswarm/components/gateway-channels/feature-depth-im-xiaoyi.md", + "facets": [ + "api", + "configuration" + ], + "missing_facets": [ + "flow", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ], + "complete": false + }, + "im-slack": { + "owner": "gateway-channels", + "page": "repos/jiuwenswarm/components/gateway-channels/feature-depth-im-slack.md", + "facets": [ + "api", + "configuration", + "failure_modes" + ], + "missing_facets": [ + "flow", + "dependencies", + "tradeoffs", + "validation" + ], + "complete": false + }, + "im-telegram": { + "owner": "gateway-channels", + "page": "repos/jiuwenswarm/components/gateway-channels/feature-depth-im-telegram.md", + "facets": [ + "configuration" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ], + "complete": false + }, + "im-discord": { + "owner": "gateway-channels", + "page": "repos/jiuwenswarm/components/gateway-channels/feature-depth-im-discord.md", + "facets": [ + "api" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ], + "complete": false + }, + "im-whatsapp": { + "owner": "gateway-channels", + "page": "repos/jiuwenswarm/components/gateway-channels/feature-depth-im-whatsapp.md", + "facets": [ + "flow", + "api", + "configuration" + ], + "missing_facets": [ + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ], + "complete": false + }, + "agent-management": { + "owner": "web-frontend", + "page": "repos/jiuwenswarm/components/web-frontend/feature-depth-agent-management.md", + "facets": [ + "api" + ], + "missing_facets": [ + "flow", + "configuration", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ], + "complete": false + }, + "jiuwen-memory-sdk": { + "owner": "agents-team", + "page": "repos/jiuwenswarm/components/agents-team/feature-depth-jiuwen-memory-sdk.md", + "facets": [ + "flow", + "configuration", + "dependencies", + "validation" + ], + "missing_facets": [ + "api", + "failure_modes", + "tradeoffs" + ], + "complete": false + }, + "image-generation": { + "owner": "agents-team", + "page": "repos/jiuwenswarm/components/agents-team/feature-depth-image-generation.md", + "facets": [ + "flow", + "api" + ], + "missing_facets": [ + "configuration", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ], + "complete": false + }, + "sandbox-privacy-proxy": { + "owner": "sandbox-runtime", + "page": "repos/jiuwenswarm/components/sandbox-runtime/feature-depth-sandbox-privacy-proxy.md", + "facets": [ + "configuration", + "dependencies", + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "tradeoffs", + "validation" + ], + "complete": false + }, + "digital-avatar": { + "owner": "agents-team", + "page": "repos/jiuwenswarm/components/agents-team/feature-depth-digital-avatar.md", + "facets": [ + "dependencies", + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "tradeoffs", + "validation" + ], + "complete": false + }, + "connectors": { + "owner": "web-frontend", + "page": "repos/jiuwenswarm/components/web-frontend/feature-depth-connectors.md", + "facets": [ + "tradeoffs" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "failure_modes", + "validation" + ], + "complete": false + }, + "external-cli-agents": { + "owner": "common-core", + "page": "repos/jiuwenswarm/components/common-core/feature-depth-external-cli-agents.md", + "facets": [ + "configuration" + ], + "missing_facets": [ + "flow", + "api", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ], + "complete": false + }, + "goal-mode": { + "owner": "web-frontend", + "page": "repos/jiuwenswarm/components/web-frontend/feature-depth-goal-mode.md", + "facets": [ + "flow", + "api" + ], + "missing_facets": [ + "configuration", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ], + "complete": false + }, + "plan-mode": { + "owner": "web-frontend", + "page": "repos/jiuwenswarm/components/web-frontend/feature-depth-plan-mode.md", + "facets": [ + "flow", + "dependencies" + ], + "missing_facets": [ + "api", + "configuration", + "failure_modes", + "tradeoffs", + "validation" + ], + "complete": false + }, + "heartbeat": { + "owner": "agent-server-runtime", + "page": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-heartbeat.md", + "facets": [ + "api", + "configuration" + ], + "missing_facets": [ + "flow", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ], + "complete": false + }, + "artifacts": { + "owner": "web-frontend", + "page": "repos/jiuwenswarm/components/web-frontend/feature-depth-artifacts.md", + "facets": [ + "flow", + "api", + "dependencies", + "failure_modes" + ], + "missing_facets": [ + "configuration", + "tradeoffs", + "validation" + ], + "complete": false + }, + "speech-interaction": { + "owner": "web-frontend", + "page": "repos/jiuwenswarm/components/web-frontend/feature-depth-speech-interaction.md", + "facets": [ + "failure_modes" + ], + "missing_facets": [ + "flow", + "api", + "configuration", + "dependencies", + "tradeoffs", + "validation" + ], + "complete": false + }, + "skill-development": { + "owner": "agent-server-runtime", + "page": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-skill-development.md", + "facets": [ + "api", + "configuration" + ], + "missing_facets": [ + "flow", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ], + "complete": false + }, + "proactive-recommendation": { + "owner": "agent-server-runtime", + "page": "repos/jiuwenswarm/components/agent-server-runtime/feature-depth-proactive-recommendation.md", + "facets": [ + "flow", + "configuration" + ], + "missing_facets": [ + "api", + "dependencies", + "failure_modes", + "tradeoffs", + "validation" + ], + "complete": false + } + }, + "complete_features": 0, + "total_features": 79, + "covered_facets": 173, + "total_facets": 553, + "facet_ratio": 0.3128390596745027, + "production_files_with_semantic_evidence": [ + "Dockerfile.claw", + "jiuwenbox/src/jiuwenbox/cli/jiuwenbox.py", + "jiuwenbox/src/jiuwenbox/proxy/inference_privacy_proxy.py", + "jiuwenbox/src/jiuwenbox/proxy/inference_privacy_proxy_manager.py", + "jiuwenbox/src/jiuwenbox/server/app.py", + "jiuwenswarm/acp/cli.py", + "jiuwenswarm/agents/harness/code/rails/code_task_planning_rail.py", + "jiuwenswarm/agents/harness/code/rails/heartbeat/controller.py", + "jiuwenswarm/agents/harness/common/auto_harness/service.py", + "jiuwenswarm/agents/harness/common/auto_memory/extraction_runner.py", + "jiuwenswarm/agents/harness/common/auto_memory/prompts.py", + "jiuwenswarm/agents/harness/common/auto_memory/tool_restriction_rail.py", + "jiuwenswarm/agents/harness/common/browser_config.py", + "jiuwenswarm/agents/harness/common/memory/config.py", + "jiuwenswarm/agents/harness/common/memory/dreaming/sweeper.py", + "jiuwenswarm/agents/harness/common/memory/external_memory_builder.py", + "jiuwenswarm/agents/harness/common/memory/external_memory_config.py", + "jiuwenswarm/agents/harness/common/rails/avatar_rail.py", + "jiuwenswarm/agents/harness/common/rails/permissions/owner_scopes.py", + "jiuwenswarm/agents/harness/common/rails/permissions/permission_interrupt_rail.py", + "jiuwenswarm/agents/harness/common/rails/permissions/send_file_path_guard.py", + "jiuwenswarm/agents/harness/common/recommendation/proactive_actions.py", + "jiuwenswarm/agents/harness/common/recommendation/proactive_engine.py", + "jiuwenswarm/agents/harness/common/rsi/harness_activation.py", + "jiuwenswarm/agents/harness/common/tools/image_tools.py", + "jiuwenswarm/agents/harness/common/tools/multimodal_config.py", + "jiuwenswarm/agents/harness/common/tools/task_tools.py", + "jiuwenswarm/agents/harness/team/a2x/a2x_registry_runtime.py", + "jiuwenswarm/agents/harness/team/distributed_runtime.py", + "jiuwenswarm/agents/harness/team/handlers/workflow_state.py", + "jiuwenswarm/agents/harness/team/team_manager.py", + "jiuwenswarm/agents/swarm/assembly.py", + "jiuwenswarm/agents/swarm/browser_runtime.py", + "jiuwenswarm/agents/swarm/providers/code_subagents.py", + "jiuwenswarm/agents/swarm/providers/skills.py", + "jiuwenswarm/channels/browser/frontend/src/background/ContextCache.ts", + "jiuwenswarm/channels/browser/frontend/src/background/index.ts", + "jiuwenswarm/channels/desktop/desktop_app.py", + "jiuwenswarm/channels/ide/packages/jetbrains-plugin/src/main/kotlin/com/jiuwenswarm/plugin/JiuwenSwarmService.kt", + "jiuwenswarm/channels/ide/packages/vscode-extension/src/client/WsClient.ts", + "jiuwenswarm/channels/ide/packages/vscode-extension/src/extension.ts", + "jiuwenswarm/channels/process_cli/app.py", + "jiuwenswarm/channels/process_cli/client.py", + "jiuwenswarm/channels/process_cli/display_context.py", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/autofix-pr.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/autofix-pr.watch.ts", + "jiuwenswarm/channels/tui/frontend/src/index.ts", + "jiuwenswarm/channels/web/frontend/src/App.tsx", + "jiuwenswarm/channels/web/frontend/src/components/AgentManagementPanel/index.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/artifactCollection.ts", + "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/filePreviewModel.ts", + "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/index.tsx", + "jiuwenswarm/channels/web/frontend/src/features/goalMode/goalModeGate.ts", + "jiuwenswarm/channels/web/frontend/src/features/planMode/planModeGate.ts", + "jiuwenswarm/channels/web/frontend/src/features/taskAsr/useTaskAsr.ts", + "jiuwenswarm/channels/web/frontend/src/hooks/useWebSocket.ts", + "jiuwenswarm/channels/web/frontend/src/services/connectorApi.ts", + "jiuwenswarm/channels/web/frontend/src/services/webClient.ts", + "jiuwenswarm/cli/_terminal.py", + "jiuwenswarm/cli/chat.py", + "jiuwenswarm/cli/main.py", + "jiuwenswarm/common/auth/account_kit.py", + "jiuwenswarm/common/config.py", + "jiuwenswarm/common/e2a/acp/acp_tool_updates.py", + "jiuwenswarm/common/external_cli_catalog.py", + "jiuwenswarm/common/external_cli_runtime.py", + "jiuwenswarm/common/mcp_config.py", + "jiuwenswarm/common/mode_matrix.py", + "jiuwenswarm/common/model_config_validation.py", + "jiuwenswarm/common/playwright_mcp_runtime.py", + "jiuwenswarm/common/schema/agent.py", + "jiuwenswarm/common/utils.py", + "jiuwenswarm/extensions/application_host.py", + "jiuwenswarm/extensions/manager.py", + "jiuwenswarm/extensions/video_duplex/backend/joyai_provider.py", + "jiuwenswarm/gateway/channel_manager/im_platforms/dingtalk/dingtalk_connect.py", + "jiuwenswarm/gateway/channel_manager/im_platforms/discord/discord_connect.py", + "jiuwenswarm/gateway/channel_manager/im_platforms/slack/slack_connect.py", + "jiuwenswarm/gateway/channel_manager/im_platforms/telegram/telegram_connect.py", + "jiuwenswarm/gateway/channel_manager/im_platforms/wechat/wechat_connect.py", + "jiuwenswarm/gateway/channel_manager/im_platforms/wecom/wecom_connect.py", + "jiuwenswarm/gateway/channel_manager/im_platforms/whatsapp/whatsapp_connect.py", + "jiuwenswarm/gateway/channel_manager/im_platforms/xiaoyi/xiaoyi_connect.py", + "jiuwenswarm/gateway/channel_manager/im_platforms/xiaoyi/xiaoyi_utils/push.py", + "jiuwenswarm/gateway/channel_manager/protocol/a2a/a2a_connect.py", + "jiuwenswarm/gateway/channel_manager/protocol/ssh/server.py", + "jiuwenswarm/gateway/heartbeat/proxy.py", + "jiuwenswarm/init_workspace.py", + "jiuwenswarm/instance_manager/bootstrap.py", + "jiuwenswarm/instance_manager/config.py", + "jiuwenswarm/instance_manager/status.py", + "jiuwenswarm/observability/config.py", + "jiuwenswarm/observability/runtime.py", + "jiuwenswarm/observability/sink.py", + "jiuwenswarm/runtime/mode_catalog.py", + "jiuwenswarm/runtime/session_catalog.py", + "jiuwenswarm/server/control/a2ui_config.py", + "jiuwenswarm/server/runtime/agent_adapter/interface_code.py", + "jiuwenswarm/server/runtime/agent_adapter/interface_deep.py", + "jiuwenswarm/server/runtime/agent_adapter/statusline_setup_agent.py", + "jiuwenswarm/server/runtime/debug_trace/config.py", + "jiuwenswarm/server/runtime/debug_trace/stream_logger.py", + "jiuwenswarm/server/runtime/marketplace/hub_client.py", + "jiuwenswarm/server/runtime/marketplace/hub_models.py", + "jiuwenswarm/server/runtime/proactive_adapter.py", + "jiuwenswarm/server/runtime/skill/archive_store.py", + "jiuwenswarm/server/runtime/skill/skill_manager.py", + "jiuwenswarm/server/runtime/skill/skilldev/schema.py", + "jiuwenswarm/server/runtime/skill/skilldev/service.py", + "jiuwenswarm/symphony/adapter.py", + "jiuwenswarm/symphony/build.py", + "jiuwenswarm/symphony/config.py", + "jiuwenswarm/symphony/service.py", + "scripts/build-electron-exe.sh", + "sdks/python/src/jiuwenswarm_sdk/client.py" + ], + "production_files_total": 2199, + "problems": [], + "complete": false, + "interpretation": "Pinned representative call/contract witnesses; neither static interface cards nor exhaustive behavior or executed-test coverage." + }, + "breadth": { + "pin": "f0a69728c96b5961d993449f1a901cbd2f4dac5b", + "full_name": "openJiuwen-ai/jiuwenswarm", + "required": true, + "definitions": { + "feature": "Every declared feature has six cited facets, documentation and production entry points. This is inventory coverage, not proof of exhaustive feature discovery or runtime correctness.", + "core_file": "A production file has a cited explanation or a hash-verified static interface/dependency record. This is structural knowledge coverage, not exhaustive behavior analysis or test coverage." + }, + "catalog_sources": { + "declared": [ + "README_CN.md", + "docs/README.md", + "docs/zh/Harness.md", + "docs/zh/智能体.md", + "docs/zh/JiuwenMemory-SDK接入.md", + "docs/zh/配置信息.md", + "jiuwenbox/README_CN.md", + "jiuwenswarm/channels/web/AGENTS.md", + "jiuwenswarm/channels/web/frontend/README.md", + "docs/zh/设置与频道升级迁移指南.md", + "jiuwenswarm/server/runtime/skill/skilldev/DESIGN.md" + ], + "missing": [] + }, + "met": true, + "core": { + "target": 0.85, + "covered": 2043, + "total": 2199, + "ratio": 0.9290586630286494, + "roots": [ + "jiuwenswarm/", + "jiuwenbox/src/jiuwenbox/", + "jiuwenbox/scripts/", + "sdks/", + "packages/", + "scripts/", + "deploy/", + "docker/", + "Dockerfile.claw", + "jiuwenbox/docker/", + "Makefile" + ], + "exclude": [ + "*/tests/*", + "*/test/*", + "*/__tests__/*", + "*.test.*", + "*.spec.*", + "*/node_modules/*", + "*/third_party/*", + "*/vendor/*", + "*/dist/*", + "*/build/*", + "*/generated/*", + "*/__pycache__/*", + "scripts/acceptance/*", + "scripts/genai_semconv/*", + "*/third-party/*" + ], + "suffixes": [ + ".py", + ".ts", + ".tsx", + ".mts", + ".cts", + ".js", + ".jsx", + ".mjs", + ".cjs", + ".kt", + ".kts", + ".java", + ".rs", + ".go", + ".swift", + ".ets", + ".vue", + ".svelte", + ".html", + ".css", + ".scss", + ".less", + ".c", + ".cc", + ".cpp", + ".h", + ".hpp", + ".sh", + ".ps1", + ".psm1", + ".cmd", + ".bat", + ".iss", + ".spec" + ], + "filenames": [ + "Dockerfile", + "Dockerfile.*", + "Makefile", + "gradlew" + ], + "covered_files": [ + "Dockerfile.claw", + "deploy/observability/upload_traces_to_langfuse.py", + "deploy/yuanrong/args_handler.sh", + "deploy/yuanrong/deploy.sh", + "docker/Dockerfile.claw", + "docker/Dockerfile.claw.base", + "docker/Dockerfile.yr.rt.mgr", + "jiuwenbox/scripts/build_docker.sh", + "jiuwenbox/scripts/run_docker.sh", + "jiuwenbox/src/jiuwenbox/bundled_configs.py", + "jiuwenbox/src/jiuwenbox/cli/jiuwenbox.py", + "jiuwenbox/src/jiuwenbox/logging_config.py", + "jiuwenbox/src/jiuwenbox/models/__init__.py", + "jiuwenbox/src/jiuwenbox/models/common.py", + "jiuwenbox/src/jiuwenbox/models/policy.py", + "jiuwenbox/src/jiuwenbox/models/sandbox.py", + "jiuwenbox/src/jiuwenbox/proxy/__init__.py", + "jiuwenbox/src/jiuwenbox/proxy/inference_privacy_proxy.py", + "jiuwenbox/src/jiuwenbox/proxy/inference_privacy_proxy_manager.py", + "jiuwenbox/src/jiuwenbox/server/app.py", + "jiuwenbox/src/jiuwenbox/server/audit_logger.py", + "jiuwenbox/src/jiuwenbox/server/auth.py", + "jiuwenbox/src/jiuwenbox/server/launcher.py", + "jiuwenbox/src/jiuwenbox/server/policy_engine.py", + "jiuwenbox/src/jiuwenbox/server/policy_reader.py", + "jiuwenbox/src/jiuwenbox/server/proxy_manager.py", + "jiuwenbox/src/jiuwenbox/server/routes/mcp.py", + "jiuwenbox/src/jiuwenbox/server/routes/policy.py", + "jiuwenbox/src/jiuwenbox/server/routes/proxy.py", + "jiuwenbox/src/jiuwenbox/server/routes/sandbox.py", + "jiuwenbox/src/jiuwenbox/server/runtime/base.py", + "jiuwenbox/src/jiuwenbox/server/runtime/process.py", + "jiuwenbox/src/jiuwenbox/server/sandbox_manager.py", + "jiuwenbox/src/jiuwenbox/server/workspace.py", + "jiuwenbox/src/jiuwenbox/supervisor/bwrap.py", + "jiuwenbox/src/jiuwenbox/supervisor/cgroup.py", + "jiuwenbox/src/jiuwenbox/supervisor/daemon_ipc.py", + "jiuwenbox/src/jiuwenbox/supervisor/landlock.py", + "jiuwenbox/src/jiuwenbox/supervisor/landlock_launcher.py", + "jiuwenbox/src/jiuwenbox/supervisor/network.py", + "jiuwenbox/src/jiuwenbox/supervisor/sandbox_daemon.py", + "jiuwenbox/src/jiuwenbox/supervisor/seccomp.py", + "jiuwenswarm/acp/__init__.py", + "jiuwenswarm/acp/cli.py", + "jiuwenswarm/acp/stdio_client.py", + "jiuwenswarm/acp/subprocess_env.py", + "jiuwenswarm/agents/harness/agent_observability.py", + "jiuwenswarm/agents/harness/code/prompt/__init__.py", + "jiuwenswarm/agents/harness/code/prompt/code_prompt_builder.py", + "jiuwenswarm/agents/harness/code/prompt/code_todo_tool_prompts.py", + "jiuwenswarm/agents/harness/code/prompt/plan_approval.py", + "jiuwenswarm/agents/harness/code/rails/__init__.py", + "jiuwenswarm/agents/harness/code/rails/code_agent_mode_rail.py", + "jiuwenswarm/agents/harness/code/rails/code_confirm_interrupt_rail.py", + "jiuwenswarm/agents/harness/code/rails/code_plan_approval_interrupt_rail.py", + "jiuwenswarm/agents/harness/code/rails/code_plan_approval_rail.py", + "jiuwenswarm/agents/harness/code/rails/code_task_planning_rail.py", + "jiuwenswarm/agents/harness/code/rails/heartbeat/__init__.py", + "jiuwenswarm/agents/harness/code/rails/heartbeat/controller.py", + "jiuwenswarm/agents/harness/code/rails/heartbeat/cron_schedule.py", + "jiuwenswarm/agents/harness/code/rails/heartbeat/execution.py", + "jiuwenswarm/agents/harness/code/rails/heartbeat/models.py", + "jiuwenswarm/agents/harness/code/rails/heartbeat/runtime.py", + "jiuwenswarm/agents/harness/code/rails/heartbeat/scheduler.py", + "jiuwenswarm/agents/harness/code/rails/heartbeat/session_resolver.py", + "jiuwenswarm/agents/harness/code/rails/heartbeat/store.py", + "jiuwenswarm/agents/harness/code/rails/heartbeat/tools.py", + "jiuwenswarm/agents/harness/code/rails/heartbeat_rail.py", + "jiuwenswarm/agents/harness/code/rails/sdd/__init__.py", + "jiuwenswarm/agents/harness/code/rails/sdd/common/__init__.py", + "jiuwenswarm/agents/harness/code/rails/sdd/common/rail_state_machine.py", + "jiuwenswarm/agents/harness/code/rails/sdd/design_rail/__init__.py", + "jiuwenswarm/agents/harness/code/rails/sdd/design_rail/config_loader.py", + "jiuwenswarm/agents/harness/code/rails/sdd/design_rail/rail.py", + "jiuwenswarm/agents/harness/code/rails/sdd/design_rail/skills/aet-req-analysis/scripts/assemble-checklist.mjs", + "jiuwenswarm/agents/harness/code/rails/sdd/design_rail/skills/aet-req-analysis/scripts/assemble-template.mjs", + "jiuwenswarm/agents/harness/code/rails/sdd/design_rail/skills/aet-req-design/scripts/assemble-checklist.mjs", + "jiuwenswarm/agents/harness/code/rails/sdd/design_rail/skills/aet-req-design/scripts/assemble-template.mjs", + "jiuwenswarm/agents/harness/code/spec.py", + "jiuwenswarm/agents/harness/code/tools/__init__.py", + "jiuwenswarm/agents/harness/code/tools/code_todo_tools.py", + "jiuwenswarm/agents/harness/common/auto_harness/__init__.py", + "jiuwenswarm/agents/harness/common/auto_harness/capabilities.py", + "jiuwenswarm/agents/harness/common/auto_harness/config_validator.py", + "jiuwenswarm/agents/harness/common/auto_harness/issue_fix/__init__.py", + "jiuwenswarm/agents/harness/common/auto_harness/issue_fix/code_rules.py", + "jiuwenswarm/agents/harness/common/auto_harness/issue_fix/gitcode_issue_client.py", + "jiuwenswarm/agents/harness/common/auto_harness/issue_fix/issue_matrix_store.py", + "jiuwenswarm/agents/harness/common/auto_harness/issue_fix/issue_runner.py", + "jiuwenswarm/agents/harness/common/auto_harness/issue_fix/issue_state_store.py", + "jiuwenswarm/agents/harness/common/auto_harness/issue_fix/run_progress.py", + "jiuwenswarm/agents/harness/common/auto_harness/issue_fix/service.py", + "jiuwenswarm/agents/harness/common/auto_harness/issue_fix/task_factory.py", + "jiuwenswarm/agents/harness/common/auto_harness/repo_auth/__init__.py", + "jiuwenswarm/agents/harness/common/auto_harness/repo_auth/gitcode.py", + "jiuwenswarm/agents/harness/common/auto_harness/run_log_status.py", + "jiuwenswarm/agents/harness/common/auto_harness/scheduler.py", + "jiuwenswarm/agents/harness/common/auto_harness/service.py", + "jiuwenswarm/agents/harness/common/auto_harness/task_store.py", + "jiuwenswarm/agents/harness/common/auto_memory/__init__.py", + "jiuwenswarm/agents/harness/common/auto_memory/extract_memories.py", + "jiuwenswarm/agents/harness/common/auto_memory/extraction_runner.py", + "jiuwenswarm/agents/harness/common/auto_memory/prompts.py", + "jiuwenswarm/agents/harness/common/auto_memory/tool_restriction_rail.py", + "jiuwenswarm/agents/harness/common/browser_config.py", + "jiuwenswarm/agents/harness/common/electron_sideview.py", + "jiuwenswarm/agents/harness/common/memory/__init__.py", + "jiuwenswarm/agents/harness/common/memory/config.py", + "jiuwenswarm/agents/harness/common/memory/dreaming/__init__.py", + "jiuwenswarm/agents/harness/common/memory/dreaming/sweeper.py", + "jiuwenswarm/agents/harness/common/memory/embeddings.py", + "jiuwenswarm/agents/harness/common/memory/external_memory_builder.py", + "jiuwenswarm/agents/harness/common/memory/external_memory_config.py", + "jiuwenswarm/agents/harness/common/memory/forbidden.py", + "jiuwenswarm/agents/harness/common/memory/internal.py", + "jiuwenswarm/agents/harness/common/memory/manager.py", + "jiuwenswarm/agents/harness/common/memory/types.py", + "jiuwenswarm/agents/harness/common/memory_rpc.py", + "jiuwenswarm/agents/harness/common/plugins/rail_manager.py", + "jiuwenswarm/agents/harness/common/prompt/browser_task_prompt.py", + "jiuwenswarm/agents/harness/common/prompt/priority_registry.py", + "jiuwenswarm/agents/harness/common/prompt/prompt_builder.py", + "jiuwenswarm/agents/harness/common/prompt/shell_environment.py", + "jiuwenswarm/agents/harness/common/prompt/user_prompt_builder.py", + "jiuwenswarm/agents/harness/common/rails/__init__.py", + "jiuwenswarm/agents/harness/common/rails/ask_user_rail.py", + "jiuwenswarm/agents/harness/common/rails/avatar_rail.py", + "jiuwenswarm/agents/harness/common/rails/browser_task_prompt_rail.py", + "jiuwenswarm/agents/harness/common/rails/eternal_conversation/__init__.py", + "jiuwenswarm/agents/harness/common/rails/eternal_conversation/background_agents.py", + "jiuwenswarm/agents/harness/common/rails/eternal_conversation/coordinator.py", + "jiuwenswarm/agents/harness/common/rails/eternal_conversation/evidence.py", + "jiuwenswarm/agents/harness/common/rails/eternal_conversation/memory_cli.py", + "jiuwenswarm/agents/harness/common/rails/eternal_conversation/prompts.py", + "jiuwenswarm/agents/harness/common/rails/eternal_conversation/rail.py", + "jiuwenswarm/agents/harness/common/rails/eternal_conversation/registry.py", + "jiuwenswarm/agents/harness/common/rails/execution_guard/__init__.py", + "jiuwenswarm/agents/harness/common/rails/execution_guard/circuit_breaker_rail.py", + "jiuwenswarm/agents/harness/common/rails/interrupt/interrupt_helpers.py", + "jiuwenswarm/agents/harness/common/rails/interrupt/permission_options.py", + "jiuwenswarm/agents/harness/common/rails/memory_forbidden_rail.py", + "jiuwenswarm/agents/harness/common/rails/multimodal_image_rail.py", + "jiuwenswarm/agents/harness/common/rails/permissions/__init__.py", + "jiuwenswarm/agents/harness/common/rails/permissions/_auto_permission/artifact_authorization.py", + "jiuwenswarm/agents/harness/common/rails/permissions/_auto_permission/artifact_declaration.py", + "jiuwenswarm/agents/harness/common/rails/permissions/_auto_permission/artifact_tracking_capture.py", + "jiuwenswarm/agents/harness/common/rails/permissions/_auto_permission/before_tool.py", + "jiuwenswarm/agents/harness/common/rails/permissions/_auto_permission/deny_response.py", + "jiuwenswarm/agents/harness/common/rails/permissions/_auto_permission/deterministic.py", + "jiuwenswarm/agents/harness/common/rails/permissions/_auto_permission/domain_grant_audit.py", + "jiuwenswarm/agents/harness/common/rails/permissions/_auto_permission/domain_manual.py", + "jiuwenswarm/agents/harness/common/rails/permissions/_auto_permission/invocation_context.py", + "jiuwenswarm/agents/harness/common/rails/permissions/_auto_permission/lifecycle.py", + "jiuwenswarm/agents/harness/common/rails/permissions/_auto_permission/manual_authorization.py", + "jiuwenswarm/agents/harness/common/rails/permissions/_auto_permission/models.py", + "jiuwenswarm/agents/harness/common/rails/permissions/_auto_permission/readonly_tool_bindings.py", + "jiuwenswarm/agents/harness/common/rails/permissions/_auto_permission/reviewer_audit.py", + "jiuwenswarm/agents/harness/common/rails/permissions/_auto_permission/reviewer_execution.py", + "jiuwenswarm/agents/harness/common/rails/permissions/_auto_permission/reviewer_metadata.py", + "jiuwenswarm/agents/harness/common/rails/permissions/_auto_permission/reviewer_override_consume.py", + "jiuwenswarm/agents/harness/common/rails/permissions/_auto_permission/reviewer_override_gate.py", + "jiuwenswarm/agents/harness/common/rails/permissions/_auto_permission/runtime_bridge.py", + "jiuwenswarm/agents/harness/common/rails/permissions/_auto_permission/runtime_result.py", + "jiuwenswarm/agents/harness/common/rails/permissions/audit.py", + "jiuwenswarm/agents/harness/common/rails/permissions/auto_config.py", + "jiuwenswarm/agents/harness/common/rails/permissions/auto_decision.py", + "jiuwenswarm/agents/harness/common/rails/permissions/auto_permission_rail.py", + "jiuwenswarm/agents/harness/common/rails/permissions/auto_reviewer.py", + "jiuwenswarm/agents/harness/common/rails/permissions/execution_provider_contract.py", + "jiuwenswarm/agents/harness/common/rails/permissions/generated_artifact_delivery.py", + "jiuwenswarm/agents/harness/common/rails/permissions/native_path_context.py", + "jiuwenswarm/agents/harness/common/rails/permissions/network_scope.py", + "jiuwenswarm/agents/harness/common/rails/permissions/openjiuwen_contract.py", + "jiuwenswarm/agents/harness/common/rails/permissions/owner_scopes.py", + "jiuwenswarm/agents/harness/common/rails/permissions/permission_compose.py", + "jiuwenswarm/agents/harness/common/rails/permissions/permission_interaction.py", + "jiuwenswarm/agents/harness/common/rails/permissions/permission_interrupt_rail.py", + "jiuwenswarm/agents/harness/common/rails/permissions/permissions_config_rpc.py", + "jiuwenswarm/agents/harness/common/rails/permissions/permissions_layers.py", + "jiuwenswarm/agents/harness/common/rails/permissions/permissions_persist.py", + "jiuwenswarm/agents/harness/common/rails/permissions/persistent_audit.py", + "jiuwenswarm/agents/harness/common/rails/permissions/policy_eval.py", + "jiuwenswarm/agents/harness/common/rails/permissions/protected_paths.py", + "jiuwenswarm/agents/harness/common/rails/permissions/reviewer_redaction.py", + "jiuwenswarm/agents/harness/common/rails/permissions/reviewer_route.py", + "jiuwenswarm/agents/harness/common/rails/permissions/reviewer_stream_metadata.py", + "jiuwenswarm/agents/harness/common/rails/permissions/root_ask_user.py", + "jiuwenswarm/agents/harness/common/rails/permissions/root_context.py", + "jiuwenswarm/agents/harness/common/rails/permissions/root_context_rail.py", + "jiuwenswarm/agents/harness/common/rails/permissions/root_permission_queue.py", + "jiuwenswarm/agents/harness/common/rails/permissions/root_permission_queue_rail.py", + "jiuwenswarm/agents/harness/common/rails/permissions/sandbox_profile.py", + "jiuwenswarm/agents/harness/common/rails/permissions/send_file_approval_scope.py", + "jiuwenswarm/agents/harness/common/rails/permissions/send_file_path_guard.py", + "jiuwenswarm/agents/harness/common/rails/permissions/session_deny.py", + "jiuwenswarm/agents/harness/common/rails/permissions/tool_binding.py", + "jiuwenswarm/agents/harness/common/rails/permissions/tool_capabilities.py", + "jiuwenswarm/agents/harness/common/rails/permissions/tool_decision_facts.py", + "jiuwenswarm/agents/harness/common/rails/permissions/tool_invocation_key.py", + "jiuwenswarm/agents/harness/common/rails/permissions/tool_permission_context.py", + "jiuwenswarm/agents/harness/common/rails/permissions/trusted_search_urls.py", + "jiuwenswarm/agents/harness/common/rails/permissions/url_safety.py", + "jiuwenswarm/agents/harness/common/rails/project_memory/__init__.py", + "jiuwenswarm/agents/harness/common/rails/project_memory/files.py", + "jiuwenswarm/agents/harness/common/rails/project_memory/section.py", + "jiuwenswarm/agents/harness/common/rails/project_memory_rail.py", + "jiuwenswarm/agents/harness/common/rails/response_prompt_rail.py", + "jiuwenswarm/agents/harness/common/rails/runtime_prompt_rail.py", + "jiuwenswarm/agents/harness/common/rails/skill_retrieval_prompt_rail.py", + "jiuwenswarm/agents/harness/common/rails/stream_event_rail.py", + "jiuwenswarm/agents/harness/common/rails/symphony/__init__.py", + "jiuwenswarm/agents/harness/common/rails/symphony/orchestration_rail.py", + "jiuwenswarm/agents/harness/common/rails/symphony/retrieval_context_processor.py", + "jiuwenswarm/agents/harness/common/rails/symphony/tool_stream_events.py", + "jiuwenswarm/agents/harness/common/recommendation/__init__.py", + "jiuwenswarm/agents/harness/common/recommendation/calendar_source.py", + "jiuwenswarm/agents/harness/common/recommendation/feedback_collector.py", + "jiuwenswarm/agents/harness/common/recommendation/gradient_updater.py", + "jiuwenswarm/agents/harness/common/recommendation/proactive_actions.py", + "jiuwenswarm/agents/harness/common/recommendation/proactive_engine.py", + "jiuwenswarm/agents/harness/common/recommendation/proactive_prompts.py", + "jiuwenswarm/agents/harness/common/recommendation/profile_extractor.py", + "jiuwenswarm/agents/harness/common/recommendation/situation_report.py", + "jiuwenswarm/agents/harness/common/rsi/__init__.py", + "jiuwenswarm/agents/harness/common/rsi/adapter.py", + "jiuwenswarm/agents/harness/common/rsi/artifact_adapter.py", + "jiuwenswarm/agents/harness/common/rsi/artifact_files_service.py", + "jiuwenswarm/agents/harness/common/rsi/artifact_service.py", + "jiuwenswarm/agents/harness/common/rsi/context.py", + "jiuwenswarm/agents/harness/common/rsi/errors.py", + "jiuwenswarm/agents/harness/common/rsi/event_consumer.py", + "jiuwenswarm/agents/harness/common/rsi/event_journal.py", + "jiuwenswarm/agents/harness/common/rsi/events.py", + "jiuwenswarm/agents/harness/common/rsi/harness_activation.py", + "jiuwenswarm/agents/harness/common/rsi/harness_adapter.py", + "jiuwenswarm/agents/harness/common/rsi/harness_provider.py", + "jiuwenswarm/agents/harness/common/rsi/materializer.py", + "jiuwenswarm/agents/harness/common/rsi/mock_artifact_provider.py", + "jiuwenswarm/agents/harness/common/rsi/mock_harness_provider.py", + "jiuwenswarm/agents/harness/common/rsi/model_resolver.py", + "jiuwenswarm/agents/harness/common/rsi/models.py", + "jiuwenswarm/agents/harness/common/rsi/paper_provider.py", + "jiuwenswarm/agents/harness/common/rsi/plugin_catalog.py", + "jiuwenswarm/agents/harness/common/rsi/projector.py", + "jiuwenswarm/agents/harness/common/rsi/provider_factory.py", + "jiuwenswarm/agents/harness/common/rsi/recovery.py", + "jiuwenswarm/agents/harness/common/rsi/services.py", + "jiuwenswarm/agents/harness/common/rsi/task_store.py", + "jiuwenswarm/agents/harness/common/rsi/usage_recorder.py", + "jiuwenswarm/agents/harness/common/rsi/validation_dataset.py", + "jiuwenswarm/agents/harness/common/rsi/worker.py", + "jiuwenswarm/agents/harness/common/session_ops_service.py", + "jiuwenswarm/agents/harness/common/tool_progress_context.py", + "jiuwenswarm/agents/harness/common/tools/__init__.py", + "jiuwenswarm/agents/harness/common/tools/acp_chat/__init__.py", + "jiuwenswarm/agents/harness/common/tools/acp_chat/tool.py", + "jiuwenswarm/agents/harness/common/tools/acp_output_tools.py", + "jiuwenswarm/agents/harness/common/tools/audio_tools.py", + "jiuwenswarm/agents/harness/common/tools/bash_tool_safety.py", + "jiuwenswarm/agents/harness/common/tools/browser_timeout_policy.py", + "jiuwenswarm/agents/harness/common/tools/command_execution_context.py", + "jiuwenswarm/agents/harness/common/tools/command_runtime.py", + "jiuwenswarm/agents/harness/common/tools/command_tools.py", + "jiuwenswarm/agents/harness/common/tools/cron/cron_runtime.py", + "jiuwenswarm/agents/harness/common/tools/cron/cron_tools.py", + "jiuwenswarm/agents/harness/common/tools/file_delivery_policy.py", + "jiuwenswarm/agents/harness/common/tools/gen_toolkits.py", + "jiuwenswarm/agents/harness/common/tools/image_tools.py", + "jiuwenswarm/agents/harness/common/tools/mcp_toolkits.py", + "jiuwenswarm/agents/harness/common/tools/memory_tools.py", + "jiuwenswarm/agents/harness/common/tools/multi_session_toolkits.py", + "jiuwenswarm/agents/harness/common/tools/multimodal_config.py", + "jiuwenswarm/agents/harness/common/tools/pdf_tools.py", + "jiuwenswarm/agents/harness/common/tools/search_tools.py", + "jiuwenswarm/agents/harness/common/tools/send_file_to_user.py", + "jiuwenswarm/agents/harness/common/tools/session_messaging_toolkit.py", + "jiuwenswarm/agents/harness/common/tools/skill_retrieval_toolkits.py", + "jiuwenswarm/agents/harness/common/tools/skill_toolkits.py", + "jiuwenswarm/agents/harness/common/tools/ssl_config.py", + "jiuwenswarm/agents/harness/common/tools/subagent_compat.py", + "jiuwenswarm/agents/harness/common/tools/symphony_toolkits.py", + "jiuwenswarm/agents/harness/common/tools/task_tools.py", + "jiuwenswarm/agents/harness/common/tools/todo_compat.py", + "jiuwenswarm/agents/harness/common/tools/todo_toolkits.py", + "jiuwenswarm/agents/harness/common/tools/trusted_search_tool_adapter.py", + "jiuwenswarm/agents/harness/common/tools/user_todo_tool.py", + "jiuwenswarm/agents/harness/common/tools/verified_download_assets.py", + "jiuwenswarm/agents/harness/common/tools/video_gen_tools.py", + "jiuwenswarm/agents/harness/common/tools/video_tools.py", + "jiuwenswarm/agents/harness/common/tools/visual_gen_tools.py", + "jiuwenswarm/agents/harness/common/tools/web_fetch_tools.py", + "jiuwenswarm/agents/harness/common/tools/web_file_download.py", + "jiuwenswarm/agents/harness/common/tools/wiki_tools.py", + "jiuwenswarm/agents/harness/common/tools/xiaoyi_phone_tools/__init__.py", + "jiuwenswarm/agents/harness/common/tools/xiaoyi_phone_tools/alarm_tools.py", + "jiuwenswarm/agents/harness/common/tools/xiaoyi_phone_tools/calendar_tools.py", + "jiuwenswarm/agents/harness/common/tools/xiaoyi_phone_tools/contact_tools.py", + "jiuwenswarm/agents/harness/common/tools/xiaoyi_phone_tools/file_tools.py", + "jiuwenswarm/agents/harness/common/tools/xiaoyi_phone_tools/file_upload_helpers.py", + "jiuwenswarm/agents/harness/common/tools/xiaoyi_phone_tools/image_reading_tool.py", + "jiuwenswarm/agents/harness/common/tools/xiaoyi_phone_tools/location_tool.py", + "jiuwenswarm/agents/harness/common/tools/xiaoyi_phone_tools/message_tools.py", + "jiuwenswarm/agents/harness/common/tools/xiaoyi_phone_tools/note_tools.py", + "jiuwenswarm/agents/harness/common/tools/xiaoyi_phone_tools/phone_tools.py", + "jiuwenswarm/agents/harness/common/tools/xiaoyi_phone_tools/photo_tools.py", + "jiuwenswarm/agents/harness/common/tools/xiaoyi_phone_tools/push_result_tool.py", + "jiuwenswarm/agents/harness/common/tools/xiaoyi_phone_tools/pushdata_manager.py", + "jiuwenswarm/agents/harness/common/tools/xiaoyi_phone_tools/save_tools.py", + "jiuwenswarm/agents/harness/common/tools/xiaoyi_phone_tools/timestamp_tool.py", + "jiuwenswarm/agents/harness/common/tools/xiaoyi_phone_tools/utils.py", + "jiuwenswarm/agents/harness/common/tools/xiaoyi_phone_tools/xiaoyi_collection_tool.py", + "jiuwenswarm/agents/harness/common/tools/xiaoyi_phone_tools/xiaoyi_gui_tool.py", + "jiuwenswarm/agents/harness/common/workspace_paths.py", + "jiuwenswarm/agents/harness/observability_runtime.py", + "jiuwenswarm/agents/harness/team/__init__.py", + "jiuwenswarm/agents/harness/team/a2x/a2x_registry_runtime.py", + "jiuwenswarm/agents/harness/team/a2x/client/__init__.py", + "jiuwenswarm/agents/harness/team/a2x/client/_internal.py", + "jiuwenswarm/agents/harness/team/a2x/client/async_client.py", + "jiuwenswarm/agents/harness/team/a2x/client/client.py", + "jiuwenswarm/agents/harness/team/a2x/client/errors.py", + "jiuwenswarm/agents/harness/team/a2x/client/models.py", + "jiuwenswarm/agents/harness/team/a2x/client/ownership.py", + "jiuwenswarm/agents/harness/team/a2x/client/transport.py", + "jiuwenswarm/agents/harness/team/bootstrap.py", + "jiuwenswarm/agents/harness/team/config_loader.py", + "jiuwenswarm/agents/harness/team/distributed_runtime.py", + "jiuwenswarm/agents/harness/team/event_types.py", + "jiuwenswarm/agents/harness/team/exceptions.py", + "jiuwenswarm/agents/harness/team/handlers/__init__.py", + "jiuwenswarm/agents/harness/team/handlers/base_monitor_handler.py", + "jiuwenswarm/agents/harness/team/handlers/team_monitor_handler.py", + "jiuwenswarm/agents/harness/team/handlers/workflow_monitor_handler.py", + "jiuwenswarm/agents/harness/team/handlers/workflow_state.py", + "jiuwenswarm/agents/harness/team/rails/team_member_skill_toolkit_rail.py", + "jiuwenswarm/agents/harness/team/rails/team_permission_policy_rail.py", + "jiuwenswarm/agents/harness/team/rails/team_skill_library_reload_rail.py", + "jiuwenswarm/agents/harness/team/rails/team_skill_storage_policy_rail.py", + "jiuwenswarm/agents/harness/team/rails/team_workspace_report_path_rail.py", + "jiuwenswarm/agents/harness/team/remote_member_bootstrap.py", + "jiuwenswarm/agents/harness/team/team_manager.py", + "jiuwenswarm/agents/harness/team/team_name_generator.py", + "jiuwenswarm/agents/harness/team/team_runtime_inheritance.py", + "jiuwenswarm/agents/harness/work/prompt/work_plan_prompts.py", + "jiuwenswarm/agents/harness/work/rails/work_agent_mode_rail.py", + "jiuwenswarm/agents/swarm/__init__.py", + "jiuwenswarm/agents/swarm/agent_group.py", + "jiuwenswarm/agents/swarm/assembly.py", + "jiuwenswarm/agents/swarm/browser_runtime.py", + "jiuwenswarm/agents/swarm/config_specs.py", + "jiuwenswarm/agents/swarm/context.py", + "jiuwenswarm/agents/swarm/providers/builtin_rails.py", + "jiuwenswarm/agents/swarm/providers/code_rails.py", + "jiuwenswarm/agents/swarm/providers/code_subagents.py", + "jiuwenswarm/agents/swarm/providers/evolution_rails.py", + "jiuwenswarm/agents/swarm/providers/member_rails.py", + "jiuwenswarm/agents/swarm/providers/runtime_tools.py", + "jiuwenswarm/agents/swarm/providers/skills.py", + "jiuwenswarm/agents/swarm/providers/tools.py", + "jiuwenswarm/agents/swarm/registry.py", + "jiuwenswarm/app.py", + "jiuwenswarm/channels/acp/app_acp.py", + "jiuwenswarm/channels/browser/frontend/src/background/ContextCache.ts", + "jiuwenswarm/channels/browser/frontend/src/background/ContextMenu.ts", + "jiuwenswarm/channels/browser/frontend/src/background/PanelManager.ts", + "jiuwenswarm/channels/browser/frontend/src/background/SessionManager.ts", + "jiuwenswarm/channels/browser/frontend/src/background/TabWatcher.ts", + "jiuwenswarm/channels/browser/frontend/src/background/ToolDispatcher.ts", + "jiuwenswarm/channels/browser/frontend/src/background/WsClient.ts", + "jiuwenswarm/channels/browser/frontend/src/background/index.ts", + "jiuwenswarm/channels/browser/frontend/src/content/Annotator.ts", + "jiuwenswarm/channels/browser/frontend/src/content/Extractor.ts", + "jiuwenswarm/channels/browser/frontend/src/content/FormAssist.ts", + "jiuwenswarm/channels/browser/frontend/src/content/PageTypeDetector.ts", + "jiuwenswarm/channels/browser/frontend/src/content/SelectionMonitor.ts", + "jiuwenswarm/channels/browser/frontend/src/content/adapters/arxiv.ts", + "jiuwenswarm/channels/browser/frontend/src/content/adapters/github.ts", + "jiuwenswarm/channels/browser/frontend/src/content/adapters/hackernews.ts", + "jiuwenswarm/channels/browser/frontend/src/content/adapters/pubmed.ts", + "jiuwenswarm/channels/browser/frontend/src/content/adapters/sec.ts", + "jiuwenswarm/channels/browser/frontend/src/content/adapters/twitter.ts", + "jiuwenswarm/channels/browser/frontend/src/content/adapters/wikipedia.ts", + "jiuwenswarm/channels/browser/frontend/src/content/adapters/youtube.ts", + "jiuwenswarm/channels/browser/frontend/src/content/index.ts", + "jiuwenswarm/channels/browser/frontend/src/options/index.ts", + "jiuwenswarm/channels/browser/frontend/src/options/options.html", + "jiuwenswarm/channels/browser/frontend/src/popup/index.ts", + "jiuwenswarm/channels/browser/frontend/src/popup/popup.html", + "jiuwenswarm/channels/browser/frontend/src/shared/constants.ts", + "jiuwenswarm/channels/browser/frontend/src/shared/i18n.ts", + "jiuwenswarm/channels/browser/frontend/src/shared/logger.ts", + "jiuwenswarm/channels/browser/frontend/src/shared/messages.ts", + "jiuwenswarm/channels/browser/frontend/src/shared/protocol.ts", + "jiuwenswarm/channels/browser/frontend/src/shared/storage.ts", + "jiuwenswarm/channels/browser/frontend/src/shared/types.ts", + "jiuwenswarm/channels/browser/frontend/src/shared/url.ts", + "jiuwenswarm/channels/browser/frontend/src/sidepanel/ChatBridge.ts", + "jiuwenswarm/channels/browser/frontend/src/sidepanel/ContextBar.ts", + "jiuwenswarm/channels/browser/frontend/src/sidepanel/SessionExporter.ts", + "jiuwenswarm/channels/browser/frontend/src/sidepanel/SessionPicker.ts", + "jiuwenswarm/channels/browser/frontend/src/sidepanel/chat.ts", + "jiuwenswarm/channels/browser/frontend/src/sidepanel/index.ts", + "jiuwenswarm/channels/browser/frontend/src/sidepanel/markdown.ts", + "jiuwenswarm/channels/browser/frontend/src/sidepanel/privacy.ts", + "jiuwenswarm/channels/browser/frontend/src/sidepanel/reader.ts", + "jiuwenswarm/channels/browser/frontend/src/sidepanel/search.ts", + "jiuwenswarm/channels/browser/frontend/src/sidepanel/sidepanel.html", + "jiuwenswarm/channels/browser/frontend/src/sidepanel/tour.ts", + "jiuwenswarm/channels/browser/frontend/src/webview/chat.html", + "jiuwenswarm/channels/cli/_terminal.py", + "jiuwenswarm/channels/cli/chat.py", + "jiuwenswarm/channels/cli/events.py", + "jiuwenswarm/channels/cli/gateway_client.py", + "jiuwenswarm/channels/cli/main.py", + "jiuwenswarm/channels/cli/render.py", + "jiuwenswarm/channels/desktop/desktop_app.py", + "jiuwenswarm/channels/desktop/electron/browser_panels.cjs", + "jiuwenswarm/channels/desktop/electron/launch.cjs", + "jiuwenswarm/channels/desktop/electron/main.cjs", + "jiuwenswarm/channels/desktop/electron/preload.cjs", + "jiuwenswarm/channels/desktop/electron/target_mcp_wrapper.cjs", + "jiuwenswarm/channels/ide/packages/jetbrains-plugin/gradlew", + "jiuwenswarm/channels/ide/packages/jetbrains-plugin/src/main/kotlin/com/jiuwenswarm/plugin/JiuwenSwarmService.kt", + "jiuwenswarm/channels/ide/packages/jetbrains-plugin/src/main/kotlin/com/jiuwenswarm/plugin/client/SessionManager.kt", + "jiuwenswarm/channels/ide/packages/jetbrains-plugin/src/main/kotlin/com/jiuwenswarm/plugin/client/WsClient.kt", + "jiuwenswarm/channels/ide/packages/jetbrains-plugin/src/main/kotlin/com/jiuwenswarm/plugin/context/ContextCollector.kt", + "jiuwenswarm/channels/ide/packages/jetbrains-plugin/src/main/kotlin/com/jiuwenswarm/plugin/context/GitContextProvider.kt", + "jiuwenswarm/channels/ide/packages/jetbrains-plugin/src/main/kotlin/com/jiuwenswarm/plugin/editor/DiffApplier.kt", + "jiuwenswarm/channels/ide/packages/jetbrains-plugin/src/main/kotlin/com/jiuwenswarm/plugin/settings/JiuwenSwarmSettings.kt", + "jiuwenswarm/channels/ide/packages/jetbrains-plugin/src/main/kotlin/com/jiuwenswarm/plugin/settings/SettingsConfigurable.kt", + "jiuwenswarm/channels/ide/packages/jetbrains-plugin/src/main/kotlin/com/jiuwenswarm/plugin/swarm/SwarmState.kt", + "jiuwenswarm/channels/ide/packages/jetbrains-plugin/src/main/kotlin/com/jiuwenswarm/plugin/swarm/SwarmStateManager.kt", + "jiuwenswarm/channels/ide/packages/jetbrains-plugin/src/main/kotlin/com/jiuwenswarm/plugin/terminal/TerminalManager.kt", + "jiuwenswarm/channels/ide/packages/jetbrains-plugin/src/main/kotlin/com/jiuwenswarm/plugin/ui/Actions.kt", + "jiuwenswarm/channels/ide/packages/jetbrains-plugin/src/main/kotlin/com/jiuwenswarm/plugin/ui/ChatToolWindow.kt", + "jiuwenswarm/channels/ide/packages/jetbrains-plugin/src/main/kotlin/com/jiuwenswarm/plugin/ui/FixWithAiIntention.kt", + "jiuwenswarm/channels/ide/packages/jetbrains-plugin/src/main/kotlin/com/jiuwenswarm/plugin/ui/StatusBarWidgetFactory.kt", + "jiuwenswarm/channels/ide/packages/jetbrains-plugin/src/main/kotlin/com/jiuwenswarm/plugin/ui/SwarmMapPanel.kt", + "jiuwenswarm/channels/ide/packages/jetbrains-plugin/src/main/kotlin/com/jiuwenswarm/plugin/ui/SwarmMapToolWindowFactory.kt", + "jiuwenswarm/channels/ide/packages/vscode-extension/esbuild.js", + "jiuwenswarm/channels/ide/packages/vscode-extension/src/client/SessionManager.ts", + "jiuwenswarm/channels/ide/packages/vscode-extension/src/client/WsClient.ts", + "jiuwenswarm/channels/ide/packages/vscode-extension/src/client/protocol.ts", + "jiuwenswarm/channels/ide/packages/vscode-extension/src/codeActions/FixWithAiCodeActionProvider.ts", + "jiuwenswarm/channels/ide/packages/vscode-extension/src/context/ContextCollector.ts", + "jiuwenswarm/channels/ide/packages/vscode-extension/src/editor/DiffApplier.ts", + "jiuwenswarm/channels/ide/packages/vscode-extension/src/editor/DiffViewer.ts", + "jiuwenswarm/channels/ide/packages/vscode-extension/src/extension.ts", + "jiuwenswarm/channels/ide/packages/vscode-extension/src/swarm/SwarmMapPanel.ts", + "jiuwenswarm/channels/ide/packages/vscode-extension/src/swarm/SwarmState.ts", + "jiuwenswarm/channels/ide/packages/vscode-extension/src/swarm/SwarmStateManager.ts", + "jiuwenswarm/channels/ide/packages/vscode-extension/src/terminal/TerminalManager.ts", + "jiuwenswarm/channels/ide/packages/vscode-extension/src/ui/ChatPanel.ts", + "jiuwenswarm/channels/ide/packages/vscode-extension/src/ui/StatusBar.ts", + "jiuwenswarm/channels/process_cli/app.py", + "jiuwenswarm/channels/process_cli/client.py", + "jiuwenswarm/channels/process_cli/commands.py", + "jiuwenswarm/channels/process_cli/control_commands.py", + "jiuwenswarm/channels/process_cli/display_context.py", + "jiuwenswarm/channels/process_cli/duplex_control.py", + "jiuwenswarm/channels/process_cli/duplex_input.py", + "jiuwenswarm/channels/process_cli/duplex_protocol.py", + "jiuwenswarm/channels/process_cli/live_input.py", + "jiuwenswarm/channels/process_cli/live_layout.py", + "jiuwenswarm/channels/process_cli/machine.py", + "jiuwenswarm/channels/process_cli/machine_entry.py", + "jiuwenswarm/channels/process_cli/machine_io.py", + "jiuwenswarm/channels/process_cli/machine_result.py", + "jiuwenswarm/channels/process_cli/machine_signals.py", + "jiuwenswarm/channels/process_cli/main.py", + "jiuwenswarm/channels/process_cli/prompt.py", + "jiuwenswarm/channels/process_cli/protocol/__init__.py", + "jiuwenswarm/channels/process_cli/protocol/jsonl.py", + "jiuwenswarm/channels/process_cli/protocol/model.py", + "jiuwenswarm/channels/process_cli/protocol/query.py", + "jiuwenswarm/channels/process_cli/protocol/version.py", + "jiuwenswarm/channels/process_cli/query.py", + "jiuwenswarm/channels/process_cli/query_entry.py", + "jiuwenswarm/channels/process_cli/render.py", + "jiuwenswarm/channels/process_cli/repl.py", + "jiuwenswarm/channels/process_cli/session_guard.py", + "jiuwenswarm/channels/process_cli/ui.py", + "jiuwenswarm/channels/tui/frontend/src/app-state.ts", + "jiuwenswarm/channels/tui/frontend/src/core/app-state-helpers.ts", + "jiuwenswarm/channels/tui/frontend/src/core/attachments.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/CommandService.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/_placeholder.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/agents.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/auto-harness-issue-fix.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/auto-harness.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/autofix-pr.prompts.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/autofix-pr.status.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/autofix-pr.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/autofix-pr.watch.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/branch.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/btw.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/cancel.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/chrome.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/clear.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/collapse.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/color.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/compact.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/config.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/context.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/copy.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/cron.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/debug.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/diff.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/evolve.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/exit.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/expand.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/export.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/fold.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/harmonyos-dev-init.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/harmonyos-project-init.prompts.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/harmonyos-project-init.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/help.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/history.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/hooks.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/init.prompts.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/init.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/keybindings.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/mcp.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/memory-path-utils.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/memory.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/mode.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/model.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/new.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/permissions.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/persist.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/plan.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/plugin.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/recap.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/reload-plugins.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/rename.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/resume.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/review.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/rewind.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/sandbox.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/security-review.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/session.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/sessions.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/simplify.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/skills.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/status.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/statusline.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/swarmflow.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/swarmflows.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/switch.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/teamskills.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/theme.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/usage.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/view.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/workspace-dir.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/clipboard.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/helpers.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/registry.ts", + "jiuwenswarm/channels/tui/frontend/src/core/commands/types.ts", + "jiuwenswarm/channels/tui/frontend/src/core/compression-formatters.ts", + "jiuwenswarm/channels/tui/frontend/src/core/event-handlers.ts", + "jiuwenswarm/channels/tui/frontend/src/core/final-content.ts", + "jiuwenswarm/channels/tui/frontend/src/core/history-parser.ts", + "jiuwenswarm/channels/tui/frontend/src/core/keybindings/actions.ts", + "jiuwenswarm/channels/tui/frontend/src/core/keybindings/defaultBindings.ts", + "jiuwenswarm/channels/tui/frontend/src/core/keybindings/reserved.ts", + "jiuwenswarm/channels/tui/frontend/src/core/keybindings/resolver.ts", + "jiuwenswarm/channels/tui/frontend/src/core/keybindings/store.ts", + "jiuwenswarm/channels/tui/frontend/src/core/keybindings/template.ts", + "jiuwenswarm/channels/tui/frontend/src/core/keybindings/types.ts", + "jiuwenswarm/channels/tui/frontend/src/core/modes.ts", + "jiuwenswarm/channels/tui/frontend/src/core/pasted-text.ts", + "jiuwenswarm/channels/tui/frontend/src/core/plan-entry-source.ts", + "jiuwenswarm/channels/tui/frontend/src/core/protocol.ts", + "jiuwenswarm/channels/tui/frontend/src/core/session-state.ts", + "jiuwenswarm/channels/tui/frontend/src/core/statusline-runner.ts", + "jiuwenswarm/channels/tui/frontend/src/core/supervision/handoff-port.ts", + "jiuwenswarm/channels/tui/frontend/src/core/supervision/protocol.ts", + "jiuwenswarm/channels/tui/frontend/src/core/supervision/reauth-port.ts", + "jiuwenswarm/channels/tui/frontend/src/core/supervision/supervised-env.ts", + "jiuwenswarm/channels/tui/frontend/src/core/supervision/task-lifecycle-port.ts", + "jiuwenswarm/channels/tui/frontend/src/core/supervision/ui-lifecycle.ts", + "jiuwenswarm/channels/tui/frontend/src/core/transcript-timeline.ts", + "jiuwenswarm/channels/tui/frontend/src/core/tui-config-store.ts", + "jiuwenswarm/channels/tui/frontend/src/core/tui-trusted-dirs-store.ts", + "jiuwenswarm/channels/tui/frontend/src/core/types.ts", + "jiuwenswarm/channels/tui/frontend/src/core/utils/editor.ts", + "jiuwenswarm/channels/tui/frontend/src/core/workflows.ts", + "jiuwenswarm/channels/tui/frontend/src/core/ws-client.ts", + "jiuwenswarm/channels/tui/frontend/src/index.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/app-screen.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/components/checkbox-list.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/components/messages/content-components.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/components/messages/diff-component.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/components/messages/history-entry.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/components/messages/meta-components.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/components/messages/presentation-rules.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/components/messages/render-compact-entry.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/components/messages/render-detailed-entry.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/components/messages/shared.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/components/messages/types.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/components/team-panel.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/components/team-shared.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/components/team-status-pill.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/components/todo-list.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/components/tools/collapsed-tool-group-message.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/components/tools/command-tool-renderers.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/components/tools/compact-tool-renderers.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/components/tools/detailed-tool-renderers.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/components/tools/file-tool-renderers.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/components/tools/search-tool-renderers.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/components/tools/tool-group-message.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/components/tools/tool-kind-utils.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/components/tools/tool-line-renderers.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/components/tools/tool-render-shared.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/components/tools/tool-render-types.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/components/tools/tool-structured-data.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/keymap.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/memory-view.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/rendering/text.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/screen-layout.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/theme.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/transcript-entry-selection.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/transcript-renderer.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/welcome.ts", + "jiuwenswarm/channels/web/app_web.py", + "jiuwenswarm/channels/web/directory_picker.py", + "jiuwenswarm/channels/web/file_picker.py", + "jiuwenswarm/channels/web/frontend/index.html", + "jiuwenswarm/channels/web/frontend/scripts/lint-changed.mjs", + "jiuwenswarm/channels/web/frontend/scripts/test-a2ui-action-defaults.mjs", + "jiuwenswarm/channels/web/frontend/scripts/test-a2ui-interaction-guards.mjs", + "jiuwenswarm/channels/web/frontend/scripts/test-input-area-permission-merge.mjs", + "jiuwenswarm/channels/web/frontend/scripts/test-permission-answer-transport.mjs", + "jiuwenswarm/channels/web/frontend/scripts/test-project-create-error-localization.mjs", + "jiuwenswarm/channels/web/frontend/scripts/test-skill-package-prompt.mjs", + "jiuwenswarm/channels/web/frontend/scripts/test-team-a2ui-render-path.mjs", + "jiuwenswarm/channels/web/frontend/src/App.tsx", + "jiuwenswarm/channels/web/frontend/src/applicationPlugins/ApplicationPluginOutlet.tsx", + "jiuwenswarm/channels/web/frontend/src/applicationPlugins/ApplicationTaskControls.tsx", + "jiuwenswarm/channels/web/frontend/src/applicationPlugins/manifest.ts", + "jiuwenswarm/channels/web/frontend/src/applicationPlugins/taskProgressStore.ts", + "jiuwenswarm/channels/web/frontend/src/applicationPlugins/types.ts", + "jiuwenswarm/channels/web/frontend/src/applicationPlugins/useApplicationPlugins.ts", + "jiuwenswarm/channels/web/frontend/src/assets/providers/index.ts", + "jiuwenswarm/channels/web/frontend/src/assets/settings/index.ts", + "jiuwenswarm/channels/web/frontend/src/components/AgentAvatar/index.tsx", + "jiuwenswarm/channels/web/frontend/src/components/AgentManagementPanel/AgentEditor.tsx", + "jiuwenswarm/channels/web/frontend/src/components/AgentManagementPanel/AgentGroupDetailPage.tsx", + "jiuwenswarm/channels/web/frontend/src/components/AgentManagementPanel/AgentGroupEditor.tsx", + "jiuwenswarm/channels/web/frontend/src/components/AgentManagementPanel/AgentGroupMemberPicker.tsx", + "jiuwenswarm/channels/web/frontend/src/components/AgentManagementPanel/AgentGroupUploadDialog.tsx", + "jiuwenswarm/channels/web/frontend/src/components/AgentManagementPanel/AgentTagPicker.tsx", + "jiuwenswarm/channels/web/frontend/src/components/AgentManagementPanel/AgentUploadDialog.tsx", + "jiuwenswarm/channels/web/frontend/src/components/AgentManagementPanel/CatalogPage.tsx", + "jiuwenswarm/channels/web/frontend/src/components/AgentManagementPanel/DefinitionCard.tsx", + "jiuwenswarm/channels/web/frontend/src/components/AgentManagementPanel/DefinitionDetailPage.tsx", + "jiuwenswarm/channels/web/frontend/src/components/AgentManagementPanel/DefinitionFilePreview.tsx", + "jiuwenswarm/channels/web/frontend/src/components/AgentManagementPanel/GroupCard.tsx", + "jiuwenswarm/channels/web/frontend/src/components/AgentManagementPanel/GroupCatalogPage.tsx", + "jiuwenswarm/channels/web/frontend/src/components/AgentManagementPanel/SelectionPagination.tsx", + "jiuwenswarm/channels/web/frontend/src/components/AgentManagementPanel/index.tsx", + "jiuwenswarm/channels/web/frontend/src/components/AgentManagementPanel/useDialogFocusTrap.ts", + "jiuwenswarm/channels/web/frontend/src/components/AgentPanel/FileViewer.tsx", + "jiuwenswarm/channels/web/frontend/src/components/AgentPanel/index.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/ArtifactExpandedPanel.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/CodePreview.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/DocxPreview.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/FilePreview.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/PresentationPreview.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/SpreadsheetPreview.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/artifactCollection.ts", + "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/chartGeometry.ts", + "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/codeLanguageExtensions.ts", + "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/codeLanguages.ts", + "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/filePreviewModel.ts", + "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/index.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/officeFontStack.ts", + "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/ooxmlArchiveLimits.ts", + "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/pptxPresentationParser.ts", + "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/pptxPreview.worker.ts", + "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/pptxPreviewModel.ts", + "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/spreadsheetPreview.worker.ts", + "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/spreadsheetPreviewModel.ts", + "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/spreadsheetWorkbookParser.ts", + "jiuwenswarm/channels/web/frontend/src/components/AssetPublishDrawer/index.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/AutoReviewerStatus.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/BeamSearchTree.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/ChatModelSelector.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/ContextUsageIndicator.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/ExtensionPickerPanel.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/FileDownloadMediaPreviewContext.ts", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/HarnessProgressBar.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/InlineQuestionCard.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/InputArea.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/MediaRenderer.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/MessageItem.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/MessageList.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/PermissionWarningDialog.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/PickerPanel.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/PickerSearchInput.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/ProactiveRecommendationCard.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/SkillPickerPanel.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/SkillTreePath.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/StreamingContent.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/TeamEventGroupDisplay.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/ToolCallDisplay.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/ToolGroupDisplay.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/VirtualTimeline.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/beamSearchTreeModel.ts", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/chatTimelineClock.ts", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/clipboardImagePaste.ts", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/evolution-status.ts", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/imeComposition.ts", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/index.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/projectSelection.ts", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/slashCommands/registry.ts", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/slashCommands/semantics.ts", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/teamEventUtils.ts", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/timelineRowState.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/toolCategory.ts", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/unsentImageDiscard.ts", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/useProcessTreeCollapse.ts", + "jiuwenswarm/channels/web/frontend/src/components/ConnectorMarket/Buttons.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ConnectorMarket/CliAuthModal.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ConnectorMarket/ConfirmDialog.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ConnectorMarket/ConnectTokenModal.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ConnectorMarket/CreatePluginPage.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ConnectorMarket/EntityAvatar.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ConnectorMarket/FormPageLayout.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ConnectorMarket/MarketCard.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ConnectorMarket/MarketplacePage.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ConnectorMarket/McpDetailPage.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ConnectorMarket/MyMarketCard.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ConnectorMarket/PickerModal.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ConnectorMarket/PluginDetailPage.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ConnectorMarket/RegisterMcpPage.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ConnectorMarket/Toast.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ConnectorMarket/TruncatedText.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ConnectorMarket/UploadFileCreateModal.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ConnectorMarket/icons.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ConnectorMarket/index.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ConnectorMarket/mcpState.ts", + "jiuwenswarm/channels/web/frontend/src/components/ConnectorMarket/useClickOutside.ts", + "jiuwenswarm/channels/web/frontend/src/components/ConnectorMarket/usePendingConnectorFlow.tsx", + "jiuwenswarm/channels/web/frontend/src/components/CronPanel/ConfirmDialog.tsx", + "jiuwenswarm/channels/web/frontend/src/components/CronPanel/CronTaskDrawer.tsx", + "jiuwenswarm/channels/web/frontend/src/components/CronPanel/DatePicker.tsx", + "jiuwenswarm/channels/web/frontend/src/components/CronPanel/ModeSelector.tsx", + "jiuwenswarm/channels/web/frontend/src/components/CronPanel/ScheduleEditor.tsx", + "jiuwenswarm/channels/web/frontend/src/components/CronPanel/SimpleSelect.tsx", + "jiuwenswarm/channels/web/frontend/src/components/CronPanel/StatusBadge.tsx", + "jiuwenswarm/channels/web/frontend/src/components/CronPanel/TemplateClusterIcon.tsx", + "jiuwenswarm/channels/web/frontend/src/components/CronPanel/TimePicker.tsx", + "jiuwenswarm/channels/web/frontend/src/components/CronPanel/constants.ts", + "jiuwenswarm/channels/web/frontend/src/components/CronPanel/cronExprValidation.ts", + "jiuwenswarm/channels/web/frontend/src/components/CronPanel/cronMode.ts", + "jiuwenswarm/channels/web/frontend/src/components/CronPanel/cronProjectDisplay.ts", + "jiuwenswarm/channels/web/frontend/src/components/CronPanel/cronWakeOffset.ts", + "jiuwenswarm/channels/web/frontend/src/components/CronPanel/cronWeekAlpha.ts", + "jiuwenswarm/channels/web/frontend/src/components/CronPanel/index.tsx", + "jiuwenswarm/channels/web/frontend/src/components/CronPanel/scheduleConvert.ts", + "jiuwenswarm/channels/web/frontend/src/components/CronPanel/useClickOutside.ts", + "jiuwenswarm/channels/web/frontend/src/components/CronPanel/xiaoyiCronTarget.ts", + "jiuwenswarm/channels/web/frontend/src/components/DesktopBrowserPane/index.tsx", + "jiuwenswarm/channels/web/frontend/src/components/DesktopTextEditContextMenu/index.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ExternalCliAgentsSection.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ExternalCliInstallDialog.tsx", + "jiuwenswarm/channels/web/frontend/src/components/FileIcon/fileIconModel.ts", + "jiuwenswarm/channels/web/frontend/src/components/FileIcon/index.tsx", + "jiuwenswarm/channels/web/frontend/src/components/GoalBar/EditGoalModal.tsx", + "jiuwenswarm/channels/web/frontend/src/components/GoalBar/GoalCompletedCard.tsx", + "jiuwenswarm/channels/web/frontend/src/components/GoalBar/OverwriteGoalConfirmModal.tsx", + "jiuwenswarm/channels/web/frontend/src/components/GoalBar/goalCompletedMessage.ts", + "jiuwenswarm/channels/web/frontend/src/components/GoalBar/index.tsx", + "jiuwenswarm/channels/web/frontend/src/components/HeartbeatPanel/HeartbeatPagination.tsx", + "jiuwenswarm/channels/web/frontend/src/components/HeartbeatPanel/HeartbeatScheduleEditor.tsx", + "jiuwenswarm/channels/web/frontend/src/components/HeartbeatPanel/HeartbeatStatusBadge.tsx", + "jiuwenswarm/channels/web/frontend/src/components/HeartbeatPanel/HeartbeatTaskDrawer.tsx", + "jiuwenswarm/channels/web/frontend/src/components/HeartbeatPanel/heartbeatCronValidation.ts", + "jiuwenswarm/channels/web/frontend/src/components/HeartbeatPanel/heartbeatScheduleConvert.ts", + "jiuwenswarm/channels/web/frontend/src/components/HeartbeatPanel/heartbeatStatusText.ts", + "jiuwenswarm/channels/web/frontend/src/components/HeartbeatPanel/index.tsx", + "jiuwenswarm/channels/web/frontend/src/components/InteractionSlot/AuthorizationPrompt.tsx", + "jiuwenswarm/channels/web/frontend/src/components/InteractionSlot/InteractionPrompt.tsx", + "jiuwenswarm/channels/web/frontend/src/components/InteractionSlot/QaSummaryCard.tsx", + "jiuwenswarm/channels/web/frontend/src/components/InteractionSlot/index.tsx", + "jiuwenswarm/channels/web/frontend/src/components/InteractionSlot/permissionTextI18n.ts", + "jiuwenswarm/channels/web/frontend/src/components/InteractionSlot/promptRouting.ts", + "jiuwenswarm/channels/web/frontend/src/components/InteractionSlot/qaSummary.ts", + "jiuwenswarm/channels/web/frontend/src/components/LoginDialog/index.tsx", + "jiuwenswarm/channels/web/frontend/src/components/LogsPanel/index.tsx", + "jiuwenswarm/channels/web/frontend/src/components/MarkdownRenderer/MarkdownRenderer.tsx", + "jiuwenswarm/channels/web/frontend/src/components/MarkdownRenderer/codeBlocks/fencedCode.ts", + "jiuwenswarm/channels/web/frontend/src/components/MarkdownRenderer/codeBlocks/registry.tsx", + "jiuwenswarm/channels/web/frontend/src/components/MarkdownRenderer/codeBlocks/types.ts", + "jiuwenswarm/channels/web/frontend/src/components/MarkdownRenderer/diagrams/DiagramViewer.tsx", + "jiuwenswarm/channels/web/frontend/src/components/MarkdownRenderer/diagrams/MermaidDiagram.tsx", + "jiuwenswarm/channels/web/frontend/src/components/MarkdownRenderer/diagrams/SvgDiagram.tsx", + "jiuwenswarm/channels/web/frontend/src/components/MarkdownRenderer/diagrams/diagramExport.ts", + "jiuwenswarm/channels/web/frontend/src/components/MarkdownRenderer/diagrams/mermaidLayout.ts", + "jiuwenswarm/channels/web/frontend/src/components/MarkdownRenderer/diagrams/mermaidRuntime.ts", + "jiuwenswarm/channels/web/frontend/src/components/MarkdownRenderer/diagrams/svgPreview.ts", + "jiuwenswarm/channels/web/frontend/src/components/MarkdownRenderer/diagrams/useDiagramExportActions.ts", + "jiuwenswarm/channels/web/frontend/src/components/MarkdownRenderer/isolatedPreview.ts", + "jiuwenswarm/channels/web/frontend/src/components/MarkdownRenderer/markdownPlugins.ts", + "jiuwenswarm/channels/web/frontend/src/components/MarkdownRenderer/markdownTransforms.ts", + "jiuwenswarm/channels/web/frontend/src/components/MarkdownRenderer/math/remarkLatexDelimiters.ts", + "jiuwenswarm/channels/web/frontend/src/components/MemberTaskDrawer/index.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ModelPicker/index.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ModelProviderIcon/index.tsx", + "jiuwenswarm/channels/web/frontend/src/components/PersonalContext/AddContentDrawer.tsx", + "jiuwenswarm/channels/web/frontend/src/components/PersonalContext/GraphPanel.tsx", + "jiuwenswarm/channels/web/frontend/src/components/PersonalContext/Intro.tsx", + "jiuwenswarm/channels/web/frontend/src/components/PersonalContext/ServicesPanel.tsx", + "jiuwenswarm/channels/web/frontend/src/components/PersonalContext/SettingsPanel.tsx", + "jiuwenswarm/channels/web/frontend/src/components/PersonalContext/edgeBookmarkFolders.ts", + "jiuwenswarm/channels/web/frontend/src/components/PersonalContext/index.tsx", + "jiuwenswarm/channels/web/frontend/src/components/SessionSidebar/OffloadFilesWidget.tsx", + "jiuwenswarm/channels/web/frontend/src/components/SessionSidebar/SessionItem.tsx", + "jiuwenswarm/channels/web/frontend/src/components/SessionSidebar/index.tsx", + "jiuwenswarm/channels/web/frontend/src/components/SessionsPanel/index.tsx", + "jiuwenswarm/channels/web/frontend/src/components/SkillGraphPanel/index.tsx", + "jiuwenswarm/channels/web/frontend/src/components/SkillGraphPanel/skillGraphLayout.ts", + "jiuwenswarm/channels/web/frontend/src/components/SkillPanel/DocToSkillModal.tsx", + "jiuwenswarm/channels/web/frontend/src/components/SkillPanel/MarketplaceView.tsx", + "jiuwenswarm/channels/web/frontend/src/components/SkillPanel/SkillDetailView.tsx", + "jiuwenswarm/channels/web/frontend/src/components/SkillPanel/SkillGraphTab.tsx", + "jiuwenswarm/channels/web/frontend/src/components/SkillPanel/SkillPanelWidgets.tsx", + "jiuwenswarm/channels/web/frontend/src/components/SkillPanel/SkillToasts.tsx", + "jiuwenswarm/channels/web/frontend/src/components/SkillPanel/UploadSkillModal.tsx", + "jiuwenswarm/channels/web/frontend/src/components/SkillPanel/index.tsx", + "jiuwenswarm/channels/web/frontend/src/components/SkillPanel/skillPanelUtils.ts", + "jiuwenswarm/channels/web/frontend/src/components/SkillPanel/skillRetrievalStatus.ts", + "jiuwenswarm/channels/web/frontend/src/components/SkillPanel/skillVersionOptions.ts", + "jiuwenswarm/channels/web/frontend/src/components/SkillPanel/symphonyGraphAction.ts", + "jiuwenswarm/channels/web/frontend/src/components/SkillPanel/types.ts", + "jiuwenswarm/channels/web/frontend/src/components/SkillPanel/useEvolution.ts", + "jiuwenswarm/channels/web/frontend/src/components/SkillPanel/useHubMarketplace.ts", + "jiuwenswarm/channels/web/frontend/src/components/SkillPanel/useRetrievalIndexBuild.ts", + "jiuwenswarm/channels/web/frontend/src/components/SkillPanel/useSkillFilesTab.tsx", + "jiuwenswarm/channels/web/frontend/src/components/SkillPanel/useSkillToasts.ts", + "jiuwenswarm/channels/web/frontend/src/components/SkillPanel/useSymphonyGraph.ts", + "jiuwenswarm/channels/web/frontend/src/components/Switch/index.tsx", + "jiuwenswarm/channels/web/frontend/src/components/TeamMemberAvatar/index.tsx", + "jiuwenswarm/channels/web/frontend/src/components/TeamTaskEvents.tsx", + "jiuwenswarm/channels/web/frontend/src/components/TodoList/TodoItem.tsx", + "jiuwenswarm/channels/web/frontend/src/components/TodoList/index.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ToolPanel/CollapsibleSection.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ToolPanel/ReadOnlyFileModal.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ToolPanel/index.tsx", + "jiuwenswarm/channels/web/frontend/src/components/UpdatePanel/index.tsx", + "jiuwenswarm/channels/web/frontend/src/components/form/components/Form.tsx", + "jiuwenswarm/channels/web/frontend/src/components/form/components/FormDialog.tsx", + "jiuwenswarm/channels/web/frontend/src/components/form/core/FormStore.ts", + "jiuwenswarm/channels/web/frontend/src/components/form/hooks/useForm.ts", + "jiuwenswarm/channels/web/frontend/src/components/form/hooks/useFormState.ts", + "jiuwenswarm/channels/web/frontend/src/components/form/types.ts", + "jiuwenswarm/channels/web/frontend/src/components/marketplace/CatalogCacheNotice.tsx", + "jiuwenswarm/channels/web/frontend/src/components/marketplace/InstallationFilterSelect.tsx", + "jiuwenswarm/channels/web/frontend/src/components/marketplace/MarketplaceSurface.tsx", + "jiuwenswarm/channels/web/frontend/src/components/marketplace/PublicationDetailStatus.tsx", + "jiuwenswarm/channels/web/frontend/src/components/subagent/SubagentCompactPanel.tsx", + "jiuwenswarm/channels/web/frontend/src/components/subagent/SubagentExpandedPanel.tsx", + "jiuwenswarm/channels/web/frontend/src/components/subagent/SubagentStatusIcon.tsx", + "jiuwenswarm/channels/web/frontend/src/components/teamArea/AgentDetailModal.tsx", + "jiuwenswarm/channels/web/frontend/src/components/teamArea/CompactTaskList.tsx", + "jiuwenswarm/channels/web/frontend/src/components/teamArea/ExpandedPanel.tsx", + "jiuwenswarm/channels/web/frontend/src/components/teamArea/ExpandedPanelTabs.tsx", + "jiuwenswarm/channels/web/frontend/src/components/teamArea/MemberListItem.tsx", + "jiuwenswarm/channels/web/frontend/src/components/teamArea/MemberOverviewCard.tsx", + "jiuwenswarm/channels/web/frontend/src/components/teamArea/MemberTaskList.tsx", + "jiuwenswarm/channels/web/frontend/src/components/teamArea/ProcessListCard.tsx", + "jiuwenswarm/channels/web/frontend/src/components/teamArea/SwarmflowGraphView.tsx", + "jiuwenswarm/channels/web/frontend/src/components/teamArea/SwarmflowTreeView.tsx", + "jiuwenswarm/channels/web/frontend/src/components/teamArea/TaskPlanningPanel.tsx", + "jiuwenswarm/channels/web/frontend/src/components/teamArea/TeamMembersPanel.tsx", + "jiuwenswarm/channels/web/frontend/src/components/teamArea/UnassignedTeamAvatar.tsx", + "jiuwenswarm/channels/web/frontend/src/components/teamArea/index.tsx", + "jiuwenswarm/channels/web/frontend/src/components/teamArea/shared.tsx", + "jiuwenswarm/channels/web/frontend/src/components/teamArea/taskProgress.ts", + "jiuwenswarm/channels/web/frontend/src/components/teamArea/workflowTypes.ts", + "jiuwenswarm/channels/web/frontend/src/components/ui/Button/Button.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ui/CategoryTabs/CategoryTabs.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ui/CloseButton/CloseButton.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ui/CollapsibleText/CollapsibleText.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ui/DetailPromptChip/DetailPromptChip.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ui/DetailSection/DetailSection.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ui/Dialog/Dialog.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ui/DropdownMenu/DropdownMenu.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ui/DropdownMenu/index.ts", + "jiuwenswarm/channels/web/frontend/src/components/ui/EntityAvatar/EntityAvatar.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ui/EntityHeader/EntityHeader.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ui/FilePreviewPanel/FilePreviewContent.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ui/FilePreviewPanel/FilePreviewIcon.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ui/FilePreviewPanel/FilePreviewPanel.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ui/FilePreviewPanel/FilePreviewTree.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ui/FilePreviewPanel/filePreviewShared.ts", + "jiuwenswarm/channels/web/frontend/src/components/ui/FormDrawer/FormDrawer.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ui/HelpTips/HelpTips.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ui/InfoCard/InfoCard.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ui/Input/Input.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ui/Loading/Loading.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ui/LoadingSpinner/LoadingSpinner.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ui/MarkdownPane/MarkdownPane.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ui/PageCard/PageCard.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ui/PageHeader/PageHeader.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ui/PageToolbar/PageToolbar.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ui/PageToolbarSearch/PageToolbarSearch.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ui/RadioGroup/RadioGroup.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ui/Select/Select.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ui/Switch/Switch.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ui/Tabs/Tabs.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ui/Tag/Tag.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ui/Textarea/Textarea.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ui/Toast/Toast.tsx", + "jiuwenswarm/channels/web/frontend/src/components/ui/Toast/toastStore.ts", + "jiuwenswarm/channels/web/frontend/src/components/ui/index.ts", + "jiuwenswarm/channels/web/frontend/src/config/chatConfig.tsx", + "jiuwenswarm/channels/web/frontend/src/config/permissionProfiles.ts", + "jiuwenswarm/channels/web/frontend/src/featureFlags.ts", + "jiuwenswarm/channels/web/frontend/src/features/ClawHubSearchModal/index.tsx", + "jiuwenswarm/channels/web/frontend/src/features/OnlineSkillSearchPanel/index.tsx", + "jiuwenswarm/channels/web/frontend/src/features/SkillEvolutionModal/index.tsx", + "jiuwenswarm/channels/web/frontend/src/features/SkillNetSearchModal/index.tsx", + "jiuwenswarm/channels/web/frontend/src/features/SourceManagerModal/index.tsx", + "jiuwenswarm/channels/web/frontend/src/features/TeamSkillsHubModal/index.tsx", + "jiuwenswarm/channels/web/frontend/src/features/UserQuestionModal/index.tsx", + "jiuwenswarm/channels/web/frontend/src/features/a2ui/A2UIErrorBoundary.tsx", + "jiuwenswarm/channels/web/frontend/src/features/a2ui/A2UIMessageContent.tsx", + "jiuwenswarm/channels/web/frontend/src/features/a2ui/CheckBoxWithDefaults.tsx", + "jiuwenswarm/channels/web/frontend/src/features/a2ui/DateTimeInputWithDefaults.tsx", + "jiuwenswarm/channels/web/frontend/src/features/a2ui/MultipleChoiceWithDefaults.tsx", + "jiuwenswarm/channels/web/frontend/src/features/a2ui/SliderWithDefaults.tsx", + "jiuwenswarm/channels/web/frontend/src/features/a2ui/TextFieldWithDefaults.tsx", + "jiuwenswarm/channels/web/frontend/src/features/a2ui/TextWithDefaults.tsx", + "jiuwenswarm/channels/web/frontend/src/features/a2ui/a2uiContent.ts", + "jiuwenswarm/channels/web/frontend/src/features/a2ui/actionBridge.ts", + "jiuwenswarm/channels/web/frontend/src/features/a2ui/actionDefaults.ts", + "jiuwenswarm/channels/web/frontend/src/features/a2ui/featureConfig.ts", + "jiuwenswarm/channels/web/frontend/src/features/a2ui/fieldBinding.ts", + "jiuwenswarm/channels/web/frontend/src/features/a2ui/formDefaults.ts", + "jiuwenswarm/channels/web/frontend/src/features/a2ui/rendererRegistry.tsx", + "jiuwenswarm/channels/web/frontend/src/features/agentIdentity.ts", + "jiuwenswarm/channels/web/frontend/src/features/agentManagement/adapter.ts", + "jiuwenswarm/channels/web/frontend/src/features/agentManagement/client.ts", + "jiuwenswarm/channels/web/frontend/src/features/agentManagement/groupClient.ts", + "jiuwenswarm/channels/web/frontend/src/features/agentManagement/limits.ts", + "jiuwenswarm/channels/web/frontend/src/features/agentManagement/locale.ts", + "jiuwenswarm/channels/web/frontend/src/features/agentManagement/pendingInstallQueue.ts", + "jiuwenswarm/channels/web/frontend/src/features/agentManagement/port.ts", + "jiuwenswarm/channels/web/frontend/src/features/agentManagement/presentation.ts", + "jiuwenswarm/channels/web/frontend/src/features/agentManagement/raw.ts", + "jiuwenswarm/channels/web/frontend/src/features/agentManagement/selection.ts", + "jiuwenswarm/channels/web/frontend/src/features/agentManagement/state.ts", + "jiuwenswarm/channels/web/frontend/src/features/agentManagement/tagOptions.ts", + "jiuwenswarm/channels/web/frontend/src/features/agentManagement/types.ts", + "jiuwenswarm/channels/web/frontend/src/features/agentManagement/upload.ts", + "jiuwenswarm/channels/web/frontend/src/features/agentManagement/viewModel.ts", + "jiuwenswarm/channels/web/frontend/src/features/assetPublication.ts", + "jiuwenswarm/channels/web/frontend/src/features/assetPublishErrors.ts", + "jiuwenswarm/channels/web/frontend/src/features/assetPublishEvents.ts", + "jiuwenswarm/channels/web/frontend/src/features/assetPublishState.ts", + "jiuwenswarm/channels/web/frontend/src/features/browserAgentActivity.ts", + "jiuwenswarm/channels/web/frontend/src/features/catalogCache.ts", + "jiuwenswarm/channels/web/frontend/src/features/chatTimeline/buildTurnTimeline.ts", + "jiuwenswarm/channels/web/frontend/src/features/chatTimeline/index.ts", + "jiuwenswarm/channels/web/frontend/src/features/chatTimeline/projectTimelineItems.ts", + "jiuwenswarm/channels/web/frontend/src/features/code-mode/CodeBranchSelector.tsx", + "jiuwenswarm/channels/web/frontend/src/features/code-mode/CodeChangesCard.tsx", + "jiuwenswarm/channels/web/frontend/src/features/code-mode/CodeCommitPushControl.tsx", + "jiuwenswarm/channels/web/frontend/src/features/code-mode/CodeEnvironmentPanel.tsx", + "jiuwenswarm/channels/web/frontend/src/features/code-mode/CodeReviewPanel.tsx", + "jiuwenswarm/channels/web/frontend/src/features/code-mode/codeTurnChangeEvents.ts", + "jiuwenswarm/channels/web/frontend/src/features/code-mode/codeTurnDiffBinding.ts", + "jiuwenswarm/channels/web/frontend/src/features/code-mode/gitClient.ts", + "jiuwenswarm/channels/web/frontend/src/features/code-mode/gitPublishState.ts", + "jiuwenswarm/channels/web/frontend/src/features/code-mode/gitWatchClient.ts", + "jiuwenswarm/channels/web/frontend/src/features/code-mode/turnChangeState.ts", + "jiuwenswarm/channels/web/frontend/src/features/code-mode/types.ts", + "jiuwenswarm/channels/web/frontend/src/features/code-mode/useCodeGitDiffWatch.ts", + "jiuwenswarm/channels/web/frontend/src/features/code-mode/useCodeTurnDiffHistory.ts", + "jiuwenswarm/channels/web/frontend/src/features/contextUsage/contextUsageCategories.ts", + "jiuwenswarm/channels/web/frontend/src/features/contextUsage/contextUsageModel.ts", + "jiuwenswarm/channels/web/frontend/src/features/desktopBrowserFile.ts", + "jiuwenswarm/channels/web/frontend/src/features/equipmentListRequest.ts", + "jiuwenswarm/channels/web/frontend/src/features/equipmentMarketplace.ts", + "jiuwenswarm/channels/web/frontend/src/features/fileTreeFilters.ts", + "jiuwenswarm/channels/web/frontend/src/features/free-models/campaign.ts", + "jiuwenswarm/channels/web/frontend/src/features/free-models/chatError.ts", + "jiuwenswarm/channels/web/frontend/src/features/free-models/points.ts", + "jiuwenswarm/channels/web/frontend/src/features/free-models/quotaReset.ts", + "jiuwenswarm/channels/web/frontend/src/features/goalMode/goalModeGate.ts", + "jiuwenswarm/channels/web/frontend/src/features/goalPendingObjectiveBubble.ts", + "jiuwenswarm/channels/web/frontend/src/features/historyFilePreview.ts", + "jiuwenswarm/channels/web/frontend/src/features/historyPagination.ts", + "jiuwenswarm/channels/web/frontend/src/features/historyRecordReassembler.ts", + "jiuwenswarm/channels/web/frontend/src/features/historyRestore.ts", + "jiuwenswarm/channels/web/frontend/src/features/modelSetupGuide/ModelSetupGuide.tsx", + "jiuwenswarm/channels/web/frontend/src/features/modelSetupGuide/modelSetupGuideState.ts", + "jiuwenswarm/channels/web/frontend/src/features/planMode/planEntrySource.ts", + "jiuwenswarm/channels/web/frontend/src/features/planMode/planModeGate.ts", + "jiuwenswarm/channels/web/frontend/src/features/planMode/wireMode.ts", + "jiuwenswarm/channels/web/frontend/src/features/rsi/RsiPage.tsx", + "jiuwenswarm/channels/web/frontend/src/features/rsi/components/ConfigInfoDialog.tsx", + "jiuwenswarm/channels/web/frontend/src/features/rsi/components/CreateExperimentDialog.tsx", + "jiuwenswarm/channels/web/frontend/src/features/rsi/components/RsiArtifactDetailDialog.tsx", + "jiuwenswarm/channels/web/frontend/src/features/rsi/components/RsiCanvasArea.tsx", + "jiuwenswarm/channels/web/frontend/src/features/rsi/components/RsiDetail.tsx", + "jiuwenswarm/channels/web/frontend/src/features/rsi/components/RsiDetailHeader.tsx", + "jiuwenswarm/channels/web/frontend/src/features/rsi/components/RsiIntroduction.tsx", + "jiuwenswarm/channels/web/frontend/src/features/rsi/components/RsiLatexPreview.tsx", + "jiuwenswarm/channels/web/frontend/src/features/rsi/components/RsiRail.tsx", + "jiuwenswarm/channels/web/frontend/src/features/rsi/components/RsiResultSummary.tsx", + "jiuwenswarm/channels/web/frontend/src/features/rsi/components/RsiSelectedInfo.tsx", + "jiuwenswarm/channels/web/frontend/src/features/rsi/featureConfig.ts", + "jiuwenswarm/channels/web/frontend/src/features/rsi/latexPreview.ts", + "jiuwenswarm/channels/web/frontend/src/features/rsi/mockData.ts", + "jiuwenswarm/channels/web/frontend/src/features/rsi/rsiApi.ts", + "jiuwenswarm/channels/web/frontend/src/features/rsi/rsiArtifactFiles.ts", + "jiuwenswarm/channels/web/frontend/src/features/rsi/rsiPresentation.ts", + "jiuwenswarm/channels/web/frontend/src/features/rsi/rsiStore.ts", + "jiuwenswarm/channels/web/frontend/src/features/rsi/rsiTreeLayout.ts", + "jiuwenswarm/channels/web/frontend/src/features/rsi/types.ts", + "jiuwenswarm/channels/web/frontend/src/features/rsi/useRsiEvents.ts", + "jiuwenswarm/channels/web/frontend/src/features/sessionInput.ts", + "jiuwenswarm/channels/web/frontend/src/features/sessionOutput.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/SettingsPage.tsx", + "jiuwenswarm/channels/web/frontend/src/features/settings/SettingsPageLayout.tsx", + "jiuwenswarm/channels/web/frontend/src/features/settings/components/SettingItemRenderer.tsx", + "jiuwenswarm/channels/web/frontend/src/features/settings/components/SettingRow.tsx", + "jiuwenswarm/channels/web/frontend/src/features/settings/components/SettingsConfirmDialog.tsx", + "jiuwenswarm/channels/web/frontend/src/features/settings/components/SettingsSection.tsx", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/agent/AgentSettings.tsx", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/agent/GenerationModelConfigDialog.tsx", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/agent/MediaModelConfigDialog.tsx", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/agent/definition.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/agent/generationModels.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/agent/mediaCapabilities.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/agent/mediaModelConfig.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/archivedTasks/ArchivedTasksSettings.tsx", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/archivedTasks/definition.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/archivedTasks/useArchivedTaskLists.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/browser/definition.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/channels/ChannelsModule.tsx", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/channels/SettingsChannelsPanel.tsx", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/channels/channelAdapters.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/channels/channelCatalog.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/channels/channelFormItems.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/channels/channelGuideUrls.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/channels/channelRequirements.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/channels/channelTypes.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/channels/components/ChannelConfigDialog.tsx", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/channels/components/ChannelListSection.tsx", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/channels/components/ChannelLogo.tsx", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/channels/components/XiaoyiEnableConfirmDialog.tsx", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/channels/definition.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/channels/forms/FeishuChannelForm.tsx", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/channels/forms/SimpleChannelForms.tsx", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/channels/forms/StandardChannelForm.tsx", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/channels/forms/XiaoyiChannelForm.tsx", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/channels/useChannelForm.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/channels/useSettingsChannelsController.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/experimental/ExperimentalSettings.tsx", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/experimental/VideoDuplexModelSettings.tsx", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/experimental/definition.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/experimental/externalCliInstallState.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/general/GeneralSettings.tsx", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/general/definition.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/models/ContextWindowField.tsx", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/models/FreeModelSettingsDialog.tsx", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/models/FreeModelsSettings.tsx", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/models/ModelDialog.tsx", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/models/ModelNameField.tsx", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/models/ModelProviderSelect.tsx", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/models/ModelsSettings.tsx", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/models/OpenAIAccountField.tsx", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/models/contextWindow.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/models/definition.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/models/modelAdapters.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/models/modelListOperations.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/models/modelReasoning.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/models/modelValidation.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/personalContext/PersonalContextSettingsModule.tsx", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/personalContext/definition.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/registry/accessPolicy.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/registry/buildSettingsPageDefinition.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/registry/createSettingsPageDefinition.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/registry/openSourceDefinition.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/registry/types.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/services/SettingsSaveQueue.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/services/SettingsServicesProvider.tsx", + "jiuwenswarm/channels/web/frontend/src/features/settings/services/SettingsSourceProvider.tsx", + "jiuwenswarm/channels/web/frontend/src/features/settings/services/SettingsUnsavedChangesRegistry.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/services/createSettingsRequestRouter.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/services/settingsContract.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/services/settingsSourceContract.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/services/useSettingsConfig.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/services/useSettingsFormDialogClose.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/services/useUnsavedChanges.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/settingsNavigation.ts", + "jiuwenswarm/channels/web/frontend/src/features/shareImageArchive.ts", + "jiuwenswarm/channels/web/frontend/src/features/shareImageExport.tsx", + "jiuwenswarm/channels/web/frontend/src/features/shareImageJob.ts", + "jiuwenswarm/channels/web/frontend/src/features/shareImagePng.worker.ts", + "jiuwenswarm/channels/web/frontend/src/features/shareImagePngEncoder.ts", + "jiuwenswarm/channels/web/frontend/src/features/shareImageRaster.ts", + "jiuwenswarm/channels/web/frontend/src/features/singleAgentPanelState.ts", + "jiuwenswarm/channels/web/frontend/src/features/streamingPng.ts", + "jiuwenswarm/channels/web/frontend/src/features/subagent/subagentActivityPresentation.ts", + "jiuwenswarm/channels/web/frontend/src/features/subagent/subagentNormalizer.ts", + "jiuwenswarm/channels/web/frontend/src/features/subagent/subagentStatusPresentation.ts", + "jiuwenswarm/channels/web/frontend/src/features/taskAsr/featureFlag.ts", + "jiuwenswarm/channels/web/frontend/src/features/taskAsr/useTaskAsr.ts", + "jiuwenswarm/channels/web/frontend/src/features/taskFullDuplex/featureFlag.ts", + "jiuwenswarm/channels/web/frontend/src/features/teamConnectionPresentation.ts", + "jiuwenswarm/channels/web/frontend/src/features/teamHistoryPanelRestore.ts", + "jiuwenswarm/channels/web/frontend/src/features/teamLeaderIdentity.ts", + "jiuwenswarm/channels/web/frontend/src/features/teamLeaderMessages.ts", + "jiuwenswarm/channels/web/frontend/src/features/teamPanelState.ts", + "jiuwenswarm/channels/web/frontend/src/features/teamPanelStateNormalize.ts", + "jiuwenswarm/channels/web/frontend/src/features/teamTaskProgressBaseline.ts", + "jiuwenswarm/channels/web/frontend/src/features/tool-events/reviewerMetadata.ts", + "jiuwenswarm/channels/web/frontend/src/features/tool-events/toolEventNormalizer.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/SingleAgentSurface.tsx", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/TeamTrajectoryWorkspace.tsx", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/TrajectoryPanel.tsx", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/client/TrajectoryExplorer.tsx", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/client/TrajectoryTable.tsx", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/client/TrajectoryTimeline.tsx", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/client/TrajectoryToolbar.tsx", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/client/i18n.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/featureConfig.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/index.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/primitives/JsonTree.tsx", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/primitives/Menu.tsx", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/primitives/Tooltip.tsx", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/primitives/icons/index.tsx", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/primitives/icons/props.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/primitives/markdown/CodeBlock.tsx", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/primitives/markdown/MarkdownText.tsx", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/primitives/markdown/cjkFriendlyStrong.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/primitives/markdown/highlight.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/primitives/markdown/incremental.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/primitives/markdown/katex.tsx", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/primitives/markdown/mathCompatibility.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/primitives/markdown/parse.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/primitives/markdown/plain-text.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/primitives/markdown/render.tsx", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/primitives/pointer-grace.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/projector/attribute-resolver.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/projector/otel-trajectory-projector.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/projector/trajectory-v2-reducer.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/semconv/attributes.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/semconv/constants.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/semconv/gen-ai-semconv.generated.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/semconv/openjiuwen-semconv.generated.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/shared/otlp.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/teamTrajectoryLanes.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/theme/context.tsx", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/trajectory/compaction.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/trajectory/model.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/trajectory/preview.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/trajectory/record.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/trajectory/search-index.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/trajectory/timeline.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/trajectory/virtual-rows.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/trajectoryArchive.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/trajectoryCheckpoints.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/trajectoryClient.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/trajectoryFrames.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/trajectoryLayout.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/trajectorySequences.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/trajectorySubjects.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/trajectoryTurnGaps.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/trajectoryWindow.ts", + "jiuwenswarm/channels/web/frontend/src/features/workspace/archivedTaskClient.ts", + "jiuwenswarm/channels/web/frontend/src/features/workspace/archivedTaskGrouping.ts", + "jiuwenswarm/channels/web/frontend/src/features/workspace/localFilePicker.ts", + "jiuwenswarm/channels/web/frontend/src/features/workspace/projectDirectoryPicker.ts", + "jiuwenswarm/channels/web/frontend/src/features/workspace/projectRegistryClient.ts", + "jiuwenswarm/channels/web/frontend/src/features/workspace/projectTypes.ts", + "jiuwenswarm/channels/web/frontend/src/features/workspace/workModeStorage.ts", + "jiuwenswarm/channels/web/frontend/src/hooks/useAdaptiveTooltip.tsx", + "jiuwenswarm/channels/web/frontend/src/hooks/useAssetPublication.ts", + "jiuwenswarm/channels/web/frontend/src/hooks/useAssetPublish.ts", + "jiuwenswarm/channels/web/frontend/src/hooks/useDesktopLocalFilePickerReady.ts", + "jiuwenswarm/channels/web/frontend/src/hooks/useFullscreenPanel.ts", + "jiuwenswarm/channels/web/frontend/src/hooks/useHorizontalScrollEdges.ts", + "jiuwenswarm/channels/web/frontend/src/hooks/useResponsive.ts", + "jiuwenswarm/channels/web/frontend/src/hooks/useSpeech.ts", + "jiuwenswarm/channels/web/frontend/src/hooks/useWebSocket.ts", + "jiuwenswarm/channels/web/frontend/src/i18n/index.ts", + "jiuwenswarm/channels/web/frontend/src/main.tsx", + "jiuwenswarm/channels/web/frontend/src/multi-session/dialogs/Dialogs.tsx", + "jiuwenswarm/channels/web/frontend/src/multi-session/routing/route.ts", + "jiuwenswarm/channels/web/frontend/src/multi-session/routing/useChatRoute.ts", + "jiuwenswarm/channels/web/frontend/src/multi-session/sidebar/ConversationSidebar.tsx", + "jiuwenswarm/channels/web/frontend/src/multi-session/sidebar/ProjectArchiveDialog.tsx", + "jiuwenswarm/channels/web/frontend/src/multi-session/sidebar/ProjectCreateMenu.tsx", + "jiuwenswarm/channels/web/frontend/src/multi-session/sidebar/SidebarActionMenu.tsx", + "jiuwenswarm/channels/web/frontend/src/multi-session/sidebar/SidebarMenu.tsx", + "jiuwenswarm/channels/web/frontend/src/multi-session/sidebar/SidebarMenu.types.ts", + "jiuwenswarm/channels/web/frontend/src/multi-session/sidebar/projectArchiveModel.ts", + "jiuwenswarm/channels/web/frontend/src/multi-session/sidebar/projectCreateErrors.ts", + "jiuwenswarm/channels/web/frontend/src/multi-session/sidebar/sidebarMenuSchema.ts", + "jiuwenswarm/channels/web/frontend/src/multi-session/sidebar/sidebarModel.ts", + "jiuwenswarm/channels/web/frontend/src/multi-session/sidebar/useSidebarMenu.tsx", + "jiuwenswarm/channels/web/frontend/src/multi-session/state/createConversationSession.ts", + "jiuwenswarm/channels/web/frontend/src/multi-session/state/newConversationLifecycle.ts", + "jiuwenswarm/channels/web/frontend/src/multi-session/state/newConversationPreviousSession.ts", + "jiuwenswarm/channels/web/frontend/src/multi-session/state/newConversationProject.ts", + "jiuwenswarm/channels/web/frontend/src/services/assetPublishApi.ts", + "jiuwenswarm/channels/web/frontend/src/services/authClient.ts", + "jiuwenswarm/channels/web/frontend/src/services/connectorApi.ts", + "jiuwenswarm/channels/web/frontend/src/services/personalContextApi.ts", + "jiuwenswarm/channels/web/frontend/src/services/pluginPackagesApi.ts", + "jiuwenswarm/channels/web/frontend/src/services/sessionEventGate.ts", + "jiuwenswarm/channels/web/frontend/src/services/streamDeltaBatcher.ts", + "jiuwenswarm/channels/web/frontend/src/services/webClient.ts", + "jiuwenswarm/channels/web/frontend/src/stores/agentCatalogStore.ts", + "jiuwenswarm/channels/web/frontend/src/stores/agentGroupCatalogSeed.ts", + "jiuwenswarm/channels/web/frontend/src/stores/authStore.ts", + "jiuwenswarm/channels/web/frontend/src/stores/chatStore.ts", + "jiuwenswarm/channels/web/frontend/src/stores/connectorStore.ts", + "jiuwenswarm/channels/web/frontend/src/stores/cronStore.ts", + "jiuwenswarm/channels/web/frontend/src/stores/ensureSessionRuntimes.ts", + "jiuwenswarm/channels/web/frontend/src/stores/goalStore.ts", + "jiuwenswarm/channels/web/frontend/src/stores/harnessStore.ts", + "jiuwenswarm/channels/web/frontend/src/stores/pendingQuestionQueue.ts", + "jiuwenswarm/channels/web/frontend/src/stores/personalContextStore.ts", + "jiuwenswarm/channels/web/frontend/src/stores/planStore.ts", + "jiuwenswarm/channels/web/frontend/src/stores/pluginPackageStore.ts", + "jiuwenswarm/channels/web/frontend/src/stores/sessionStore.ts", + "jiuwenswarm/channels/web/frontend/src/stores/subagentStore.ts", + "jiuwenswarm/channels/web/frontend/src/stores/teamTaskNormalize.ts", + "jiuwenswarm/channels/web/frontend/src/stores/todoStore.ts", + "jiuwenswarm/channels/web/frontend/src/stores/toolResultLifecycle.ts", + "jiuwenswarm/channels/web/frontend/src/stores/workspaceStore.ts", + "jiuwenswarm/channels/web/frontend/src/styles/breakpoints.ts", + "jiuwenswarm/channels/web/frontend/src/types/assetPublish.ts", + "jiuwenswarm/channels/web/frontend/src/types/beamSearch.ts", + "jiuwenswarm/channels/web/frontend/src/types/connector.ts", + "jiuwenswarm/channels/web/frontend/src/types/contextUsage.ts", + "jiuwenswarm/channels/web/frontend/src/types/cron.ts", + "jiuwenswarm/channels/web/frontend/src/types/electron.ts", + "jiuwenswarm/channels/web/frontend/src/types/goal.ts", + "jiuwenswarm/channels/web/frontend/src/types/heartbeat.ts", + "jiuwenswarm/channels/web/frontend/src/types/index.ts", + "jiuwenswarm/channels/web/frontend/src/types/message.ts", + "jiuwenswarm/channels/web/frontend/src/types/pluginPackage.ts", + "jiuwenswarm/channels/web/frontend/src/types/skillTree.ts", + "jiuwenswarm/channels/web/frontend/src/types/subagent.ts", + "jiuwenswarm/channels/web/frontend/src/types/todo.ts", + "jiuwenswarm/channels/web/frontend/src/types/websocket.ts", + "jiuwenswarm/channels/web/frontend/src/utils/chatFinalProtocol.ts", + "jiuwenswarm/channels/web/frontend/src/utils/contextCompression.ts", + "jiuwenswarm/channels/web/frontend/src/utils/crossSessionMessage.ts", + "jiuwenswarm/channels/web/frontend/src/utils/desktopSave.ts", + "jiuwenswarm/channels/web/frontend/src/utils/documentMessage.ts", + "jiuwenswarm/channels/web/frontend/src/utils/enabledExtensions.ts", + "jiuwenswarm/channels/web/frontend/src/utils/env.ts", + "jiuwenswarm/channels/web/frontend/src/utils/fileDownloadDedup.ts", + "jiuwenswarm/channels/web/frontend/src/utils/finalContent.ts", + "jiuwenswarm/channels/web/frontend/src/utils/formatters.ts", + "jiuwenswarm/channels/web/frontend/src/utils/frontendPlatform.ts", + "jiuwenswarm/channels/web/frontend/src/utils/gitcodeOAuth.ts", + "jiuwenswarm/channels/web/frontend/src/utils/heartbeatAutomation.ts", + "jiuwenswarm/channels/web/frontend/src/utils/mySkills.ts", + "jiuwenswarm/channels/web/frontend/src/utils/proactiveRecommendation.ts", + "jiuwenswarm/channels/web/frontend/src/utils/skillAvatar.ts", + "jiuwenswarm/channels/web/frontend/src/utils/skillNetUrl.ts", + "jiuwenswarm/channels/web/frontend/src/utils/skillPackageFile.ts", + "jiuwenswarm/channels/web/frontend/src/utils/speechDetection/silero.worker.ts", + "jiuwenswarm/channels/web/frontend/src/utils/speechDetection/sileroVad.ts", + "jiuwenswarm/channels/web/frontend/src/utils/speechDetection/speechGate.ts", + "jiuwenswarm/channels/web/frontend/src/utils/svgDimensions.ts", + "jiuwenswarm/channels/web/frontend/src/utils/swarmflowAdvisory.ts", + "jiuwenswarm/channels/web/frontend/src/utils/symphonyCommandDisplay.ts", + "jiuwenswarm/channels/web/frontend/src/utils/teamMemberAvatar.ts", + "jiuwenswarm/channels/web/frontend/src/utils/textEditCommands.ts", + "jiuwenswarm/channels/web/frontend/src/utils/timestamp.ts", + "jiuwenswarm/channels/web/frontend/src/utils/tts.ts", + "jiuwenswarm/channels/web/frontend/src/utils/userId.ts", + "jiuwenswarm/channels/web/frontend/src/utils/uuid.ts", + "jiuwenswarm/channels/web/frontend/src/utils/writeClipboard.ts", + "jiuwenswarm/channels/web/frontend/src/utils/wsEventDedup.ts", + "jiuwenswarm/channels/web/frontend/src/vite-env.d.ts", + "jiuwenswarm/channels/web/frontend/tailwind.config.js", + "jiuwenswarm/channels/web/frontend/vite.config.ts", + "jiuwenswarm/channels/web/hub_oauth.py", + "jiuwenswarm/channels/web/share_image_export.py", + "jiuwenswarm/cli/_terminal.py", + "jiuwenswarm/cli/chat.py", + "jiuwenswarm/cli/events.py", + "jiuwenswarm/cli/gateway_client.py", + "jiuwenswarm/cli/main.py", + "jiuwenswarm/cli/render.py", + "jiuwenswarm/common/_build_config.py", + "jiuwenswarm/common/acp/stdio_client.py", + "jiuwenswarm/common/acp/subprocess_env.py", + "jiuwenswarm/common/auth/__init__.py", + "jiuwenswarm/common/auth/account_kit.py", + "jiuwenswarm/common/auth/apig.py", + "jiuwenswarm/common/auth/login_credentials.py", + "jiuwenswarm/common/auth/model_catalog.py", + "jiuwenswarm/common/auth/net.py", + "jiuwenswarm/common/auth/passthrough.py", + "jiuwenswarm/common/auth/remote_config.py", + "jiuwenswarm/common/auth/service.py", + "jiuwenswarm/common/auth/session_owners.py", + "jiuwenswarm/common/auth/session_store.py", + "jiuwenswarm/common/chat_final.py", + "jiuwenswarm/common/cleanup.py", + "jiuwenswarm/common/client/agent_client.py", + "jiuwenswarm/common/client/agent_http_bridge.py", + "jiuwenswarm/common/client/third_agent.py", + "jiuwenswarm/common/coding_memory_paths.py", + "jiuwenswarm/common/config.py", + "jiuwenswarm/common/config_panel/config_set_handlers.py", + "jiuwenswarm/common/config_panel/models_handlers.py", + "jiuwenswarm/common/config_panel/tui_models_handlers.py", + "jiuwenswarm/common/context_keys.py", + "jiuwenswarm/common/context_window.py", + "jiuwenswarm/common/cron_session.py", + "jiuwenswarm/common/cron_team_completion.py", + "jiuwenswarm/common/debug_dump.py", + "jiuwenswarm/common/e2a/__init__.py", + "jiuwenswarm/common/e2a/acp/__init__.py", + "jiuwenswarm/common/e2a/acp/acp_tool_updates.py", + "jiuwenswarm/common/e2a/acp/protocol.py", + "jiuwenswarm/common/e2a/acp/session_updates.py", + "jiuwenswarm/common/e2a/adapters.py", + "jiuwenswarm/common/e2a/agent_compat.py", + "jiuwenswarm/common/e2a/gateway_normalize.py", + "jiuwenswarm/common/e2a/models.py", + "jiuwenswarm/common/e2a/wire_codec.py", + "jiuwenswarm/common/external_cli_catalog.py", + "jiuwenswarm/common/external_cli_runtime.py", + "jiuwenswarm/common/git_safe_directory.py", + "jiuwenswarm/common/hooks_config.py", + "jiuwenswarm/common/kv_cache_affinity_config.py", + "jiuwenswarm/common/log_preview.py", + "jiuwenswarm/common/mcp_config.py", + "jiuwenswarm/common/media_capability_config.py", + "jiuwenswarm/common/mode_matrix.py", + "jiuwenswarm/common/model_catalog.py", + "jiuwenswarm/common/model_config_validation.py", + "jiuwenswarm/common/model_errors.py", + "jiuwenswarm/common/model_migration.py", + "jiuwenswarm/common/model_selection.py", + "jiuwenswarm/common/model_vendor_registry.py", + "jiuwenswarm/common/openrouter_attribution.py", + "jiuwenswarm/common/permission_tools.py", + "jiuwenswarm/common/playwright_mcp_runtime.py", + "jiuwenswarm/common/process_supervision.py", + "jiuwenswarm/common/projectless_workspace.py", + "jiuwenswarm/common/protocol_ids.py", + "jiuwenswarm/common/reasoning_config.py", + "jiuwenswarm/common/reasoning_injector.py", + "jiuwenswarm/common/runtime_log_filter.py", + "jiuwenswarm/common/runtime_workspace.py", + "jiuwenswarm/common/schema/__init__.py", + "jiuwenswarm/common/schema/agent.py", + "jiuwenswarm/common/schema/chat_send.py", + "jiuwenswarm/common/schema/event_base.py", + "jiuwenswarm/common/schema/message.py", + "jiuwenswarm/common/schema/swarmflow_reply.py", + "jiuwenswarm/common/security/base_crypto.py", + "jiuwenswarm/common/security/ws_origin.py", + "jiuwenswarm/common/stage_timer.py", + "jiuwenswarm/common/startup_diagnostics.py", + "jiuwenswarm/common/task_loop_config.py", + "jiuwenswarm/common/team_artifacts.py", + "jiuwenswarm/common/todo_snapshot.py", + "jiuwenswarm/common/tool_display.py", + "jiuwenswarm/common/tool_ownership.py", + "jiuwenswarm/common/updater.py", + "jiuwenswarm/common/updater_restart_helper.py", + "jiuwenswarm/common/upgrade_executor.py", + "jiuwenswarm/common/utils.py", + "jiuwenswarm/common/version.py", + "jiuwenswarm/common/version_source.py", + "jiuwenswarm/common/work_mode.py", + "jiuwenswarm/common/ws_diagnostics.py", + "jiuwenswarm/debug_launcher.py", + "jiuwenswarm/dotenv_early.py", + "jiuwenswarm/extensions/__init__.py", + "jiuwenswarm/extensions/agent_client/__init__.py", + "jiuwenswarm/extensions/agent_client/extension.py", + "jiuwenswarm/extensions/agentos/__init__.py", + "jiuwenswarm/extensions/agentos/agentos_router/__init__.py", + "jiuwenswarm/extensions/agentos/agentos_router/agent_manager.py", + "jiuwenswarm/extensions/agentos/agentos_router/agentos_authenticator.py", + "jiuwenswarm/extensions/agentos/agentos_router/config.py", + "jiuwenswarm/extensions/agentos/agentos_router/extension.py", + "jiuwenswarm/extensions/agentos/agentos_router/logutil.py", + "jiuwenswarm/extensions/agentos/agentos_router/models.py", + "jiuwenswarm/extensions/agentos/agentos_router/registry_client.py", + "jiuwenswarm/extensions/agentos/agentos_router/router_client.py", + "jiuwenswarm/extensions/agentos/agentos_router/ssh_relay.py", + "jiuwenswarm/extensions/agentos/agentos_router/stale_cleanup.py", + "jiuwenswarm/extensions/agentos/agentos_router/third_agent.py", + "jiuwenswarm/extensions/agentos/auth/__init__.py", + "jiuwenswarm/extensions/agentos/auth/common.py", + "jiuwenswarm/extensions/agentos/auth/credential_authenticator.py", + "jiuwenswarm/extensions/agentos/auth/ssh_authenticator.py", + "jiuwenswarm/extensions/agentos/auth/ssh_key_issuer.py", + "jiuwenswarm/extensions/agentos/auth/ssh_key_registry.py", + "jiuwenswarm/extensions/agentos/extension.py", + "jiuwenswarm/extensions/application_host.py", + "jiuwenswarm/extensions/callback_compat.py", + "jiuwenswarm/extensions/clawee.py", + "jiuwenswarm/extensions/hook_event.py", + "jiuwenswarm/extensions/hooks_context.py", + "jiuwenswarm/extensions/loader.py", + "jiuwenswarm/extensions/manager.py", + "jiuwenswarm/extensions/registry.py", + "jiuwenswarm/extensions/sdk/__init__.py", + "jiuwenswarm/extensions/sdk/agent_server_client.py", + "jiuwenswarm/extensions/sdk/application_plugin.py", + "jiuwenswarm/extensions/sdk/base.py", + "jiuwenswarm/extensions/sdk/crypto_utility.py", + "jiuwenswarm/extensions/sdk/third_agent.py", + "jiuwenswarm/extensions/types.py", + "jiuwenswarm/extensions/video_duplex/backend/joyai_provider.py", + "jiuwenswarm/extensions/video_duplex/backend/qwen_omni_gateway.py", + "jiuwenswarm/extensions/video_duplex/backend/qwen_omni_tools.py", + "jiuwenswarm/extensions/video_duplex/backend/settings.py", + "jiuwenswarm/extensions/video_duplex/backend/task_adapter.py", + "jiuwenswarm/extensions/video_duplex/backend/tasks/__init__.py", + "jiuwenswarm/extensions/video_duplex/backend/tasks/bridge.py", + "jiuwenswarm/extensions/video_duplex/backend/tasks/checkpoint.py", + "jiuwenswarm/extensions/video_duplex/backend/tasks/errors.py", + "jiuwenswarm/extensions/video_duplex/backend/tasks/execution.py", + "jiuwenswarm/extensions/video_duplex/backend/tasks/interactions.py", + "jiuwenswarm/extensions/video_duplex/backend/tasks/prompts.py", + "jiuwenswarm/extensions/video_duplex/backend/tasks/rail.py", + "jiuwenswarm/extensions/video_duplex/backend/tasks/server_adapter.py", + "jiuwenswarm/extensions/video_duplex/backend/tasks/service.py", + "jiuwenswarm/extensions/video_duplex/backend/tasks/store.py", + "jiuwenswarm/extensions/video_duplex/backend/video_files.py", + "jiuwenswarm/extensions/video_duplex/backend/video_live.py", + "jiuwenswarm/extensions/video_duplex/backend/video_search.py", + "jiuwenswarm/extensions/video_duplex/backend/video_voice.py", + "jiuwenswarm/extensions/video_duplex/extension.py", + "jiuwenswarm/extensions/video_duplex/frontend/TaskFullDuplexAction.tsx", + "jiuwenswarm/extensions/video_duplex/frontend/TaskFullDuplexRuntime.tsx", + "jiuwenswarm/extensions/video_duplex/frontend/VideoDuplexSettings.tsx", + "jiuwenswarm/extensions/video_duplex/frontend/VideoLivePanel/duplex-capture.js", + "jiuwenswarm/extensions/video_duplex/frontend/VideoLivePanel/duplex-playback.js", + "jiuwenswarm/extensions/video_duplex/frontend/VideoLivePanel/index.tsx", + "jiuwenswarm/extensions/video_duplex/frontend/VideoLivePanel/joyaiPromptLifecycle.ts", + "jiuwenswarm/extensions/video_duplex/frontend/VideoLivePanel/joyaiProvider.ts", + "jiuwenswarm/extensions/video_duplex/frontend/VideoLivePanel/joyaiToolContext.ts", + "jiuwenswarm/extensions/video_duplex/frontend/VideoLivePanel/joyaiVoice.ts", + "jiuwenswarm/extensions/video_duplex/frontend/VideoLivePanel/qwenOmniProtocol.ts", + "jiuwenswarm/extensions/video_duplex/frontend/VideoLivePanel/qwenOmniSession.ts", + "jiuwenswarm/extensions/video_duplex/frontend/VideoLivePanel/qwenOmniTools.ts", + "jiuwenswarm/extensions/video_duplex/frontend/VideoLivePanel/replyLanguage.ts", + "jiuwenswarm/extensions/video_duplex/frontend/VideoLivePanel/searchPresentation.ts", + "jiuwenswarm/extensions/video_duplex/frontend/VideoLivePanel/taskPrompts.ts", + "jiuwenswarm/extensions/video_duplex/frontend/VideoLivePanel/types.ts", + "jiuwenswarm/extensions/video_duplex/frontend/VideoLivePanel/videoSource.ts", + "jiuwenswarm/extensions/video_duplex/frontend/index.tsx", + "jiuwenswarm/extensions/video_duplex/frontend/taskDuplexJobs.ts", + "jiuwenswarm/extensions/video_duplex/frontend/taskFullDuplexRuntimeStore.ts", + "jiuwenswarm/extensions/yuanrong_frontend_client.py", + "jiuwenswarm/gateway/__init__.py", + "jiuwenswarm/gateway/app_gateway.py", + "jiuwenswarm/gateway/channel_manager/__init__.py", + "jiuwenswarm/gateway/channel_manager/base.py", + "jiuwenswarm/gateway/channel_manager/channel_manager.py", + "jiuwenswarm/gateway/channel_manager/im_platforms/dingtalk/dingtalk_connect.py", + "jiuwenswarm/gateway/channel_manager/im_platforms/dingtalk/dingtalk_file_service.py", + "jiuwenswarm/gateway/channel_manager/im_platforms/discord/discord_connect.py", + "jiuwenswarm/gateway/channel_manager/im_platforms/errors.py", + "jiuwenswarm/gateway/channel_manager/im_platforms/feishu/feishu_connect.py", + "jiuwenswarm/gateway/channel_manager/im_platforms/feishu/feishu_file_service.py", + "jiuwenswarm/gateway/channel_manager/im_platforms/feishu/feishu_im_adapter.py", + "jiuwenswarm/gateway/channel_manager/im_platforms/feishu/feishu_streaming_card.py", + "jiuwenswarm/gateway/channel_manager/im_platforms/platform_adapter/message.py", + "jiuwenswarm/gateway/channel_manager/im_platforms/slack/__init__.py", + "jiuwenswarm/gateway/channel_manager/im_platforms/slack/slack_connect.py", + "jiuwenswarm/gateway/channel_manager/im_platforms/telegram/telegram_connect.py", + "jiuwenswarm/gateway/channel_manager/im_platforms/wechat/wechat_connect.py", + "jiuwenswarm/gateway/channel_manager/im_platforms/wecom/wecom_connect.py", + "jiuwenswarm/gateway/channel_manager/im_platforms/wecom/wecom_file_service.py", + "jiuwenswarm/gateway/channel_manager/im_platforms/wecom/wecom_im_adapter.py", + "jiuwenswarm/gateway/channel_manager/im_platforms/whatsapp/whatsapp_connect.py", + "jiuwenswarm/gateway/channel_manager/im_platforms/xiaoyi/xiaoyi_connect.py", + "jiuwenswarm/gateway/channel_manager/im_platforms/xiaoyi/xiaoyi_utils/formatter.py", + "jiuwenswarm/gateway/channel_manager/im_platforms/xiaoyi/xiaoyi_utils/media.py", + "jiuwenswarm/gateway/channel_manager/im_platforms/xiaoyi/xiaoyi_utils/push.py", + "jiuwenswarm/gateway/channel_manager/protocol/a2a/a2a_connect.py", + "jiuwenswarm/gateway/channel_manager/protocol/acp/acp_connect.py", + "jiuwenswarm/gateway/channel_manager/protocol/ssh/__init__.py", + "jiuwenswarm/gateway/channel_manager/protocol/ssh/config.py", + "jiuwenswarm/gateway/channel_manager/protocol/ssh/key_registry.py", + "jiuwenswarm/gateway/channel_manager/protocol/ssh/server.py", + "jiuwenswarm/gateway/channel_manager/protocol/ssh/ssh_connect.py", + "jiuwenswarm/gateway/channel_manager/tui/tui_channel.py", + "jiuwenswarm/gateway/channel_manager/tui/tui_connect.py", + "jiuwenswarm/gateway/channel_manager/web/app_web_handlers.py", + "jiuwenswarm/gateway/channel_manager/web/container_file_http.py", + "jiuwenswarm/gateway/channel_manager/web/git_ws_handler.py", + "jiuwenswarm/gateway/channel_manager/web/lifecycle_handlers.py", + "jiuwenswarm/gateway/channel_manager/web/task_asr.py", + "jiuwenswarm/gateway/channel_manager/web/trajectory_http.py", + "jiuwenswarm/gateway/channel_manager/web/web_channel_app.py", + "jiuwenswarm/gateway/channel_manager/web/web_connect.py", + "jiuwenswarm/gateway/channel_manager/web/web_http_auth.py", + "jiuwenswarm/gateway/channel_manager/web/ws_connection_adapter.py", + "jiuwenswarm/gateway/cron/__init__.py", + "jiuwenswarm/gateway/cron/controller.py", + "jiuwenswarm/gateway/cron/cron_expr.py", + "jiuwenswarm/gateway/cron/cron_json_convert.py", + "jiuwenswarm/gateway/cron/dingtalk_routing.py", + "jiuwenswarm/gateway/cron/factory.py", + "jiuwenswarm/gateway/cron/lifecycle_owners.py", + "jiuwenswarm/gateway/cron/models.py", + "jiuwenswarm/gateway/cron/proactive_cron_sync.py", + "jiuwenswarm/gateway/cron/scheduler.py", + "jiuwenswarm/gateway/cron/store.py", + "jiuwenswarm/gateway/cron/store_base.py", + "jiuwenswarm/gateway/health_check/__init__.py", + "jiuwenswarm/gateway/health_check/health_check.py", + "jiuwenswarm/gateway/heartbeat/__init__.py", + "jiuwenswarm/gateway/heartbeat/proxy.py", + "jiuwenswarm/gateway/hooks/handler.py", + "jiuwenswarm/gateway/im_pipeline/im_inbound.py", + "jiuwenswarm/gateway/im_pipeline/im_outbound.py", + "jiuwenswarm/gateway/im_pipeline/im_session_input.py", + "jiuwenswarm/gateway/message_handler/__init__.py", + "jiuwenswarm/gateway/message_handler/command_parser/slash_command.py", + "jiuwenswarm/gateway/message_handler/evolution_approval.py", + "jiuwenswarm/gateway/message_handler/join_exit_handlers.py", + "jiuwenswarm/gateway/message_handler/message_handler.py", + "jiuwenswarm/gateway/message_handler/prompts/__init__.py", + "jiuwenswarm/gateway/message_handler/prompts/review_prompt.py", + "jiuwenswarm/gateway/message_handler/prompts/security_review_prompt.py", + "jiuwenswarm/gateway/routing/agent_client.py", + "jiuwenswarm/gateway/routing/agent_http_bridge.py", + "jiuwenswarm/gateway/routing/agent_request_timeout.py", + "jiuwenswarm/gateway/routing/base_ws_channel.py", + "jiuwenswarm/gateway/routing/e2a_proxy.py", + "jiuwenswarm/gateway/routing/interaction_context.py", + "jiuwenswarm/gateway/routing/keys.py", + "jiuwenswarm/gateway/routing/route_binding.py", + "jiuwenswarm/gateway/routing/session_map.py", + "jiuwenswarm/gateway/routing/session_sharing.py", + "jiuwenswarm/gateway/routing/third_agent.py", + "jiuwenswarm/init_workspace.py", + "jiuwenswarm/instance_manager/__init__.py", + "jiuwenswarm/instance_manager/bootstrap.py", + "jiuwenswarm/instance_manager/config.py", + "jiuwenswarm/instance_manager/lock.py", + "jiuwenswarm/instance_manager/status.py", + "jiuwenswarm/instance_manager/yaml.py", + "jiuwenswarm/llm_provider_compat_patch.py", + "jiuwenswarm/llm_sse_patch.py", + "jiuwenswarm/observability/__init__.py", + "jiuwenswarm/observability/config.py", + "jiuwenswarm/observability/gateway_hints.py", + "jiuwenswarm/observability/models.py", + "jiuwenswarm/observability/otlp_payload.py", + "jiuwenswarm/observability/retention.py", + "jiuwenswarm/observability/runtime.py", + "jiuwenswarm/observability/session_delete.py", + "jiuwenswarm/observability/sink.py", + "jiuwenswarm/observability/store.py", + "jiuwenswarm/observability/turn.py", + "jiuwenswarm/resources/agent/workspace/skills/advanced-daily-report/analyzers/__init__.py", + "jiuwenswarm/resources/agent/workspace/skills/advanced-daily-report/analyzers/ai_analyzer.py", + "jiuwenswarm/resources/agent/workspace/skills/advanced-daily-report/analyzers/work_analyzer.py", + "jiuwenswarm/resources/agent/workspace/skills/advanced-daily-report/collectors/__init__.py", + "jiuwenswarm/resources/agent/workspace/skills/advanced-daily-report/collectors/aggregator.py", + "jiuwenswarm/resources/agent/workspace/skills/advanced-daily-report/collectors/email_collector.py", + "jiuwenswarm/resources/agent/workspace/skills/advanced-daily-report/collectors/git_collector.py", + "jiuwenswarm/resources/agent/workspace/skills/advanced-daily-report/collectors/memory_collector.py", + "jiuwenswarm/resources/agent/workspace/skills/advanced-daily-report/collectors/todo_collector.py", + "jiuwenswarm/resources/agent/workspace/skills/advanced-daily-report/generators/__init__.py", + "jiuwenswarm/resources/agent/workspace/skills/advanced-daily-report/generators/report_generator.py", + "jiuwenswarm/resources/agent/workspace/skills/advanced-daily-report/report_helper.py", + "jiuwenswarm/resources/agent/workspace/skills/advanced-daily-report/run_report.py", + "jiuwenswarm/resources/agent/workspace/skills/agent-creator/scripts/init_template.py", + "jiuwenswarm/resources/agent/workspace/skills/agent-creator/scripts/register_template.py", + "jiuwenswarm/resources/agent/workspace/skills/agent-creator/scripts/validate_hot_load_worker.py", + "jiuwenswarm/resources/agent/workspace/skills/agent-creator/scripts/validate_template.py", + "jiuwenswarm/resources/agent/workspace/skills/agent-group-creator/scripts/register_group.py", + "jiuwenswarm/resources/agent/workspace/skills/ascend-moe-optimizer-auto-trace/scripts/apply_trace_scaffold.sh", + "jiuwenswarm/resources/agent/workspace/skills/ascend-moe-optimizer-auto-trace/scripts/bootstrap_trace_toolchain.py", + "jiuwenswarm/resources/agent/workspace/skills/ascend-moe-optimizer-auto-trace/scripts/check_compile_safety.py", + "jiuwenswarm/resources/agent/workspace/skills/ascend-moe-optimizer-auto-trace/scripts/generate_instrumentation_plan.py", + "jiuwenswarm/resources/agent/workspace/skills/ascend-moe-optimizer-auto-trace/scripts/inspect_rank_pt.py", + "jiuwenswarm/resources/agent/workspace/skills/ascend-moe-optimizer-auto-trace/scripts/instrument_operator.py", + "jiuwenswarm/resources/agent/workspace/skills/ascend-moe-optimizer-auto-trace/scripts/patch_build_pipeline.py", + "jiuwenswarm/resources/agent/workspace/skills/ascend-moe-optimizer-auto-trace/scripts/trace_collector.py", + "jiuwenswarm/resources/agent/workspace/skills/ascend-moe-optimizer-auto-trace/scripts/trace_preprocessor.py", + "jiuwenswarm/resources/agent/workspace/skills/ascend-moe-optimizer-auto-trace/scripts/trace_save.py", + "jiuwenswarm/resources/agent/workspace/skills/ascend-moe-optimizer-auto-trace/scripts/trace_utils.py", + "jiuwenswarm/resources/agent/workspace/skills/ascend-moe-optimizer-auto-trace/scripts/validate_trace_points.py", + "jiuwenswarm/resources/agent/workspace/skills/ascend-moe-optimizer-auto-trace/scripts/verify_trace_scaffold.py", + "jiuwenswarm/resources/agent/workspace/skills/ascend-moe-optimizer-trace-analyzer/analyzers/diagnosis.py", + "jiuwenswarm/resources/agent/workspace/skills/ascend-moe-optimizer-trace-analyzer/analyzers/llm_analysis.py", + "jiuwenswarm/resources/agent/workspace/skills/ascend-moe-optimizer-trace-analyzer/analyzers/metrics.py", + "jiuwenswarm/resources/agent/workspace/skills/ascend-moe-optimizer-trace-analyzer/analyzers/parser.py", + "jiuwenswarm/resources/agent/workspace/skills/ascend-moe-optimizer-trace-analyzer/analyzers/phase_mapper.py", + "jiuwenswarm/resources/agent/workspace/skills/ascend-moe-optimizer-trace-analyzer/analyzers/plots.py", + "jiuwenswarm/resources/agent/workspace/skills/ascend-moe-optimizer-trace-analyzer/analyzers/reporter.py", + "jiuwenswarm/resources/agent/workspace/skills/ascend-moe-optimizer-trace-analyzer/app.py", + "jiuwenswarm/resources/agent/workspace/skills/baoyu-image-gen/scripts/build-batch.ts", + "jiuwenswarm/resources/agent/workspace/skills/baoyu-image-gen/scripts/codex-imagegen/cache.ts", + "jiuwenswarm/resources/agent/workspace/skills/baoyu-image-gen/scripts/codex-imagegen/logger.ts", + "jiuwenswarm/resources/agent/workspace/skills/baoyu-image-gen/scripts/codex-imagegen/main.ts", + "jiuwenswarm/resources/agent/workspace/skills/baoyu-image-gen/scripts/codex-imagegen/parser.ts", + "jiuwenswarm/resources/agent/workspace/skills/baoyu-image-gen/scripts/codex-imagegen/spawn.ts", + "jiuwenswarm/resources/agent/workspace/skills/baoyu-image-gen/scripts/codex-imagegen/types.ts", + "jiuwenswarm/resources/agent/workspace/skills/baoyu-image-gen/scripts/codex-imagegen/validator.ts", + "jiuwenswarm/resources/agent/workspace/skills/baoyu-image-gen/scripts/main.ts", + "jiuwenswarm/resources/agent/workspace/skills/baoyu-image-gen/scripts/providers/agnes.ts", + "jiuwenswarm/resources/agent/workspace/skills/baoyu-image-gen/scripts/providers/azure.ts", + "jiuwenswarm/resources/agent/workspace/skills/baoyu-image-gen/scripts/providers/codex-cli.ts", + "jiuwenswarm/resources/agent/workspace/skills/baoyu-image-gen/scripts/providers/dashscope.ts", + "jiuwenswarm/resources/agent/workspace/skills/baoyu-image-gen/scripts/providers/google.ts", + "jiuwenswarm/resources/agent/workspace/skills/baoyu-image-gen/scripts/providers/jimeng.ts", + "jiuwenswarm/resources/agent/workspace/skills/baoyu-image-gen/scripts/providers/minimax.ts", + "jiuwenswarm/resources/agent/workspace/skills/baoyu-image-gen/scripts/providers/openai.ts", + "jiuwenswarm/resources/agent/workspace/skills/baoyu-image-gen/scripts/providers/openrouter.ts", + "jiuwenswarm/resources/agent/workspace/skills/baoyu-image-gen/scripts/providers/replicate.ts", + "jiuwenswarm/resources/agent/workspace/skills/baoyu-image-gen/scripts/providers/seedream.ts", + "jiuwenswarm/resources/agent/workspace/skills/baoyu-image-gen/scripts/providers/zai.ts", + "jiuwenswarm/resources/agent/workspace/skills/baoyu-image-gen/scripts/types.ts", + "jiuwenswarm/resources/agent/workspace/skills/cross-channel-history-retrieval/scripts/search_history.py", + "jiuwenswarm/resources/agent/workspace/skills/delayed-restart-app/launch_delayed_restart.py", + "jiuwenswarm/resources/agent/workspace/skills/docx-pro/scripts/docx_pro.py", + "jiuwenswarm/resources/agent/workspace/skills/docx-pro/scripts/docx_replace.py", + "jiuwenswarm/resources/agent/workspace/skills/docx-pro/scripts/md_export.py", + "jiuwenswarm/resources/agent/workspace/skills/docx-pro/scripts/md_parser.py", + "jiuwenswarm/resources/agent/workspace/skills/docx-pro/scripts/renderer.py", + "jiuwenswarm/resources/agent/workspace/skills/docx-pro/scripts/setup_check.py", + "jiuwenswarm/resources/agent/workspace/skills/dynamic-memory-cli/scripts/dynamic_memory_cli.py", + "jiuwenswarm/resources/agent/workspace/skills/financial-document-parser/financial_parser.py", + "jiuwenswarm/resources/agent/workspace/skills/gitcode-api/scripts/gitcode_api_cli.py", + "jiuwenswarm/resources/agent/workspace/skills/gitcode-api/scripts/open_github_issue.py", + "jiuwenswarm/resources/agent/workspace/skills/harmonyos-dev-suite/scripts/install_atomic_skill.py", + "jiuwenswarm/resources/agent/workspace/skills/huawei-cloud-maas-setup/scripts/auto_authorize.py", + "jiuwenswarm/resources/agent/workspace/skills/huawei-cloud-maas-setup/scripts/auto_create_apikey.py", + "jiuwenswarm/resources/agent/workspace/skills/huawei-cloud-maas-setup/scripts/auto_open_model.py", + "jiuwenswarm/resources/agent/workspace/skills/huawei-cloud-maas-setup/scripts/check_account.py", + "jiuwenswarm/resources/agent/workspace/skills/huawei-cloud-maas-setup/scripts/config_writer.py", + "jiuwenswarm/resources/agent/workspace/skills/huawei-cloud-maas-setup/scripts/ensure_browser.py", + "jiuwenswarm/resources/agent/workspace/skills/huawei-cloud-maas-setup/scripts/lib/cdp_client.py", + "jiuwenswarm/resources/agent/workspace/skills/huawei-cloud-maas-setup/scripts/lib/flow_state.py", + "jiuwenswarm/resources/agent/workspace/skills/huawei-cloud-maas-setup/scripts/lib/huawei_selectors.py", + "jiuwenswarm/resources/agent/workspace/skills/huawei-cloud-maas-setup/scripts/navigate.py", + "jiuwenswarm/resources/agent/workspace/skills/huawei-cloud-maas-setup/scripts/validate_config.py", + "jiuwenswarm/resources/agent/workspace/skills/local-doc-ocr/scripts/ocr_offline.py", + "jiuwenswarm/resources/agent/workspace/skills/local-doc-ocr/scripts/pdf_to_images.py", + "jiuwenswarm/resources/agent/workspace/skills/local-doc-ocr/scripts/preprocess_img.py", + "jiuwenswarm/resources/agent/workspace/skills/local-doc-ocr/scripts/setup.py", + "jiuwenswarm/resources/agent/workspace/skills/local-doc-ocr/scripts/write_ocr_md.py", + "jiuwenswarm/resources/agent/workspace/skills/openJiuwen-DeepSearch/scripts/convert_docx.py", + "jiuwenswarm/resources/agent/workspace/skills/openJiuwen-DeepSearch/scripts/convert_html.py", + "jiuwenswarm/resources/agent/workspace/skills/openJiuwen-DeepSearch/scripts/main.py", + "jiuwenswarm/resources/agent/workspace/skills/openJiuwen-DeepSearch/scripts/validate_environment.py", + "jiuwenswarm/resources/agent/workspace/skills/openJiuwen-DeepSearch/scripts/verify_skill_structure.py", + "jiuwenswarm/resources/agent/workspace/skills/plugin-creator/scripts/init_plugin.py", + "jiuwenswarm/resources/agent/workspace/skills/plugin-creator/scripts/register_plugin.py", + "jiuwenswarm/resources/agent/workspace/skills/plugin-creator/scripts/validate_plugin.py", + "jiuwenswarm/resources/agent/workspace/skills/plugin-creator/scripts/validate_plugin_hot_load_worker.py", + "jiuwenswarm/resources/agent/workspace/skills/ppt-creation/components/brand.js", + "jiuwenswarm/resources/agent/workspace/skills/ppt-creation/components/charts.js", + "jiuwenswarm/resources/agent/workspace/skills/ppt-creation/components/content.js", + "jiuwenswarm/resources/agent/workspace/skills/ppt-creation/components/diagrams.js", + "jiuwenswarm/resources/agent/workspace/skills/ppt-creation/components/index.js", + "jiuwenswarm/resources/agent/workspace/skills/ppt-creation/scripts/audit_pptx.py", + "jiuwenswarm/resources/agent/workspace/skills/ppt-creation/scripts/components.js", + "jiuwenswarm/resources/agent/workspace/skills/ppt-creation/scripts/demo_components.js", + "jiuwenswarm/resources/agent/workspace/skills/ppt-creation/scripts/extract_arxiv_visuals_v2_2.py", + "jiuwenswarm/resources/agent/workspace/skills/ppt-creation/scripts/figure-panel.js", + "jiuwenswarm/resources/agent/workspace/skills/ppt-creation/scripts/fill_cover.py", + "jiuwenswarm/resources/agent/workspace/skills/ppt-creation/scripts/finalize_deck.py", + "jiuwenswarm/resources/agent/workspace/skills/ppt-creation/scripts/make_blank_template.py", + "jiuwenswarm/resources/agent/workspace/skills/ppt-creation/scripts/merge_slides.py", + "jiuwenswarm/resources/agent/workspace/skills/ppt-creation/scripts/opc/add_slide.py", + "jiuwenswarm/resources/agent/workspace/skills/ppt-creation/scripts/opc/pack.py", + "jiuwenswarm/resources/agent/workspace/skills/ppt-creation/scripts/opc/prune.py", + "jiuwenswarm/resources/agent/workspace/skills/ppt-creation/scripts/opc/repair.py", + "jiuwenswarm/resources/agent/workspace/skills/ppt-creation/scripts/opc/thumbnail.py", + "jiuwenswarm/resources/agent/workspace/skills/ppt-creation/scripts/opc/unpack.py", + "jiuwenswarm/resources/agent/workspace/skills/ppt-creation/scripts/opc/validate.py", + "jiuwenswarm/resources/agent/workspace/skills/ppt-creation/scripts/prepare_evidence.py", + "jiuwenswarm/resources/agent/workspace/skills/ppt-creation/scripts/qa_density.py", + "jiuwenswarm/resources/agent/workspace/skills/ppt-creation/scripts/qa_geometry.py", + "jiuwenswarm/resources/agent/workspace/skills/ppt-creation/scripts/sync-runtime-skill.js", + "jiuwenswarm/resources/agent/workspace/skills/ppt-creation/scripts/system-diagram.js", + "jiuwenswarm/resources/agent/workspace/skills/ppt-creation/scripts/validate-evidence-plan.js", + "jiuwenswarm/resources/agent/workspace/skills/ppt-creation/scripts/validate-execution-lock.js", + "jiuwenswarm/resources/agent/workspace/skills/project-maintainer/scripts/audit_integrity.py", + "jiuwenswarm/resources/agent/workspace/skills/project-maintainer/scripts/check_doc_sizes.py", + "jiuwenswarm/resources/agent/workspace/skills/project-maintainer/scripts/inventory_symbols.py", + "jiuwenswarm/resources/agent/workspace/skills/project-maintainer/scripts/render_audit_report.py", + "jiuwenswarm/resources/agent/workspace/skills/rsi-program-dataset-creator/scripts/check_folder.py", + "jiuwenswarm/resources/agent/workspace/skills/skill-creator-normal/assets/eval_review.html", + "jiuwenswarm/resources/agent/workspace/skills/skill-creator-normal/eval-viewer/generate_review.py", + "jiuwenswarm/resources/agent/workspace/skills/skill-creator-normal/eval-viewer/viewer.html", + "jiuwenswarm/resources/agent/workspace/skills/skill-creator-normal/scripts/aggregate_benchmark.py", + "jiuwenswarm/resources/agent/workspace/skills/skill-creator-normal/scripts/generate_report.py", + "jiuwenswarm/resources/agent/workspace/skills/skill-creator-normal/scripts/improve_description.py", + "jiuwenswarm/resources/agent/workspace/skills/skill-creator-normal/scripts/package_skill.py", + "jiuwenswarm/resources/agent/workspace/skills/skill-creator-normal/scripts/quick_validate.py", + "jiuwenswarm/resources/agent/workspace/skills/skill-creator-normal/scripts/run_eval.py", + "jiuwenswarm/resources/agent/workspace/skills/skill-creator-normal/scripts/run_loop.py", + "jiuwenswarm/resources/agent/workspace/skills/skill-creator-normal/scripts/utils.py", + "jiuwenswarm/resources/agent/workspace/skills/skill-gen-4-enterprise-doc/scripts/skill_gen/__init__.py", + "jiuwenswarm/resources/agent/workspace/skills/skill-gen-4-enterprise-doc/scripts/skill_gen/models.py", + "jiuwenswarm/resources/agent/workspace/skills/skill-gen-4-enterprise-doc/scripts/skill_gen/sop_chunk_merge.py", + "jiuwenswarm/resources/agent/workspace/skills/skill-gen-4-enterprise-doc/scripts/skill_gen/sop_fallback.py", + "jiuwenswarm/resources/agent/workspace/skills/skill-gen-4-enterprise-doc/scripts/skill_gen/sop_parser.py", + "jiuwenswarm/resources/agent/workspace/skills/skill-gen-4-enterprise-doc/scripts/skill_gen/url_ingest/__init__.py", + "jiuwenswarm/resources/agent/workspace/skills/skill-gen-4-enterprise-doc/scripts/skill_gen/url_ingest/models.py", + "jiuwenswarm/resources/agent/workspace/skills/skill-gen-4-enterprise-doc/scripts/skill_gen/url_ingest/router.py", + "jiuwenswarm/resources/agent/workspace/skills/skill-gen-4-enterprise-doc/scripts/skill_gen/url_ingest/url_safety.py", + "jiuwenswarm/resources/agent/workspace/skills/skill-gen-4-enterprise-doc/scripts/skill_gen/url_ingest/web_page.py", + "jiuwenswarm/resources/agent/workspace/skills/skill-gen-4-enterprise-doc/scripts/skill_gen/url_ingest/wechat_article.py", + "jiuwenswarm/resources/agent/workspace/skills/skill-gen-4-enterprise-doc/scripts/skill_gen/validator.py", + "jiuwenswarm/resources/agent/workspace/skills/skill-gen-4-enterprise-doc/scripts/skill_generator_cli.py", + "jiuwenswarm/resources/agent/workspace/skills/skill-omni-creation/scripts/analyze_video.py", + "jiuwenswarm/resources/agent/workspace/skills/skill-omni-creation/scripts/common.py", + "jiuwenswarm/resources/agent/workspace/skills/skill-omni-creation/scripts/download_images.py", + "jiuwenswarm/resources/agent/workspace/skills/skill-omni-creation/scripts/environment_gate.py", + "jiuwenswarm/resources/agent/workspace/skills/skill-omni-creation/scripts/finalize_scripts.py", + "jiuwenswarm/resources/agent/workspace/skills/skill-omni-creation/scripts/image_review.py", + "jiuwenswarm/resources/agent/workspace/skills/skill-omni-creation/scripts/prepare_images.py", + "jiuwenswarm/resources/agent/workspace/skills/skill-omni-creation/scripts/print_blocks.py", + "jiuwenswarm/resources/agent/workspace/skills/skill-omni-creation/scripts/save_images.py", + "jiuwenswarm/resources/agent/workspace/skills/skill-omni-creation/scripts/scrape_page.py", + "jiuwenswarm/resources/agent/workspace/skills/swarmskill-creator/scripts/validate_swarmskill.py", + "jiuwenswarm/resources/agent/workspace/skills/xlsx/scripts/_xlsx_common.py", + "jiuwenswarm/resources/agent/workspace/skills/xlsx/scripts/doctor.py", + "jiuwenswarm/resources/agent/workspace/skills/xlsx/scripts/formula_check.py", + "jiuwenswarm/resources/agent/workspace/skills/xlsx/scripts/libreoffice_recalc.py", + "jiuwenswarm/resources/agent/workspace/skills/xlsx/scripts/xlsx_add_column.py", + "jiuwenswarm/resources/agent/workspace/skills/xlsx/scripts/xlsx_insert_row.py", + "jiuwenswarm/resources/agent/workspace/skills/xlsx/scripts/xlsx_pack.py", + "jiuwenswarm/resources/agent/workspace/skills/xlsx/scripts/xlsx_reader.py", + "jiuwenswarm/resources/agent/workspace/skills/xlsx/scripts/xlsx_render.py", + "jiuwenswarm/resources/agent/workspace/skills/xlsx/scripts/xlsx_shift_rows.py", + "jiuwenswarm/resources/agent/workspace/skills/xlsx/scripts/xlsx_unpack.py", + "jiuwenswarm/runtime/agent_definition.py", + "jiuwenswarm/runtime/context.py", + "jiuwenswarm/runtime/cron/__init__.py", + "jiuwenswarm/runtime/cron/cron_expr.py", + "jiuwenswarm/runtime/cron/cron_job_mutations.py", + "jiuwenswarm/runtime/cron/dingtalk_routing.py", + "jiuwenswarm/runtime/cron/etcd_client.py", + "jiuwenswarm/runtime/cron/etcd_store.py", + "jiuwenswarm/runtime/cron/factory.py", + "jiuwenswarm/runtime/cron/models.py", + "jiuwenswarm/runtime/cron/store.py", + "jiuwenswarm/runtime/cron/store_base.py", + "jiuwenswarm/runtime/events.py", + "jiuwenswarm/runtime/evolution.py", + "jiuwenswarm/runtime/host_services.py", + "jiuwenswarm/runtime/interaction.py", + "jiuwenswarm/runtime/mcp_references.py", + "jiuwenswarm/runtime/mode_catalog.py", + "jiuwenswarm/runtime/model_catalog.py", + "jiuwenswarm/runtime/permission_catalog.py", + "jiuwenswarm/runtime/plan.py", + "jiuwenswarm/runtime/request.py", + "jiuwenswarm/runtime/service.py", + "jiuwenswarm/runtime/session/__init__.py", + "jiuwenswarm/runtime/session/coordinator.py", + "jiuwenswarm/runtime/session/execution_registry.py", + "jiuwenswarm/runtime/session/model.py", + "jiuwenswarm/runtime/session/work_scheduler.py", + "jiuwenswarm/runtime/session_catalog.py", + "jiuwenswarm/runtime/session_delete.py", + "jiuwenswarm/runtime/session_input.py", + "jiuwenswarm/runtime/session_lifecycle.py", + "jiuwenswarm/runtime/session_provisioner.py", + "jiuwenswarm/server/__init__.py", + "jiuwenswarm/server/agent_ws_server.py", + "jiuwenswarm/server/app_agentserver.py", + "jiuwenswarm/server/control/a2ui_config.py", + "jiuwenswarm/server/control/config_service.py", + "jiuwenswarm/server/control/health_service.py", + "jiuwenswarm/server/control/history_service.py", + "jiuwenswarm/server/control/methods.py", + "jiuwenswarm/server/control/project_service.py", + "jiuwenswarm/server/control/repositories/project_repository.py", + "jiuwenswarm/server/control/repositories/session_repository.py", + "jiuwenswarm/server/control/responses.py", + "jiuwenswarm/server/control/session_service.py", + "jiuwenswarm/server/control/store/project_queries.py", + "jiuwenswarm/server/front/__init__.py", + "jiuwenswarm/server/front/admission.py", + "jiuwenswarm/server/front/connection.py", + "jiuwenswarm/server/front/event_forwarder.py", + "jiuwenswarm/server/front/protocol.py", + "jiuwenswarm/server/front/request_registry.py", + "jiuwenswarm/server/front/router.py", + "jiuwenswarm/server/front/server.py", + "jiuwenswarm/server/gateway_push/__init__.py", + "jiuwenswarm/server/gateway_push/transport.py", + "jiuwenswarm/server/gateway_push/wire.py", + "jiuwenswarm/server/hooks/executor.py", + "jiuwenswarm/server/hooks/user_hook_rail.py", + "jiuwenswarm/server/lifecycle.py", + "jiuwenswarm/server/personal_context/__init__.py", + "jiuwenswarm/server/personal_context/error_messages.py", + "jiuwenswarm/server/personal_context/host_api.py", + "jiuwenswarm/server/personal_context/ws_handler.py", + "jiuwenswarm/server/rsi/__init__.py", + "jiuwenswarm/server/rsi/rsi_handlers.py", + "jiuwenswarm/server/runtime/a2ui/__init__.py", + "jiuwenswarm/server/runtime/a2ui/config.py", + "jiuwenswarm/server/runtime/a2ui/integration.py", + "jiuwenswarm/server/runtime/a2ui/parser.py", + "jiuwenswarm/server/runtime/a2ui/prompt_instructions.py", + "jiuwenswarm/server/runtime/a2ui/protocol.py", + "jiuwenswarm/server/runtime/a2ui/protocols/__init__.py", + "jiuwenswarm/server/runtime/a2ui/runtime/__init__.py", + "jiuwenswarm/server/runtime/a2ui/runtime/finalizer.py", + "jiuwenswarm/server/runtime/a2ui/runtime/formatter.py", + "jiuwenswarm/server/runtime/a2ui/runtime/prompt.py", + "jiuwenswarm/server/runtime/a2ui/runtime/response_finalization.py", + "jiuwenswarm/server/runtime/a2ui/runtime/stream.py", + "jiuwenswarm/server/runtime/a2ui/runtime/team_stream.py", + "jiuwenswarm/server/runtime/a2ui/stream_guard.py", + "jiuwenswarm/server/runtime/a2ui/support.py", + "jiuwenswarm/server/runtime/a2ui/text_formatter.py", + "jiuwenswarm/server/runtime/a2ui/types.py", + "jiuwenswarm/server/runtime/a2ui/validator.py", + "jiuwenswarm/server/runtime/agent_adapter/agent_adapters.py", + "jiuwenswarm/server/runtime/agent_adapter/browser_runtime_network_guard.js", + "jiuwenswarm/server/runtime/agent_adapter/browser_runtime_security.py", + "jiuwenswarm/server/runtime/agent_adapter/code_agent_rail.py", + "jiuwenswarm/server/runtime/agent_adapter/compact_partial_prompts.py", + "jiuwenswarm/server/runtime/agent_adapter/evolution_helpers.py", + "jiuwenswarm/server/runtime/agent_adapter/evolution_slash.py", + "jiuwenswarm/server/runtime/agent_adapter/interface.py", + "jiuwenswarm/server/runtime/agent_adapter/interface_code.py", + "jiuwenswarm/server/runtime/agent_adapter/interface_deep.py", + "jiuwenswarm/server/runtime/agent_adapter/output_handoff.py", + "jiuwenswarm/server/runtime/agent_adapter/permission_continuation.py", + "jiuwenswarm/server/runtime/agent_adapter/permission_dispatch.py", + "jiuwenswarm/server/runtime/agent_adapter/permission_rail_group.py", + "jiuwenswarm/server/runtime/agent_adapter/permission_runtime_state.py", + "jiuwenswarm/server/runtime/agent_adapter/recap_prompts.py", + "jiuwenswarm/server/runtime/agent_adapter/sensitive_answers.py", + "jiuwenswarm/server/runtime/agent_adapter/session_input.py", + "jiuwenswarm/server/runtime/agent_adapter/session_message_input.py", + "jiuwenswarm/server/runtime/agent_adapter/statusline_setup_agent.py", + "jiuwenswarm/server/runtime/agent_adapter/sysop_builder.py", + "jiuwenswarm/server/runtime/agent_adapter/task_tool_events.py", + "jiuwenswarm/server/runtime/agent_adapter/team_helpers.py", + "jiuwenswarm/server/runtime/agent_adapter/trusted_web_search.py", + "jiuwenswarm/server/runtime/agent_adapter/user_turn.py", + "jiuwenswarm/server/runtime/agent_config_service.py", + "jiuwenswarm/server/runtime/agent_manager.py", + "jiuwenswarm/server/runtime/agent_warm_pool.py", + "jiuwenswarm/server/runtime/attachments/document_attachments.py", + "jiuwenswarm/server/runtime/attachments/media_attachments.py", + "jiuwenswarm/server/runtime/attachments/upload_storage.py", + "jiuwenswarm/server/runtime/debug_trace/__init__.py", + "jiuwenswarm/server/runtime/debug_trace/config.py", + "jiuwenswarm/server/runtime/debug_trace/context.py", + "jiuwenswarm/server/runtime/debug_trace/directives.py", + "jiuwenswarm/server/runtime/debug_trace/paths.py", + "jiuwenswarm/server/runtime/debug_trace/stream_logger.py", + "jiuwenswarm/server/runtime/debug_trace/subagent_capture.py", + "jiuwenswarm/server/runtime/debug_trace/task_tool_patch.py", + "jiuwenswarm/server/runtime/extension_package_manager.py", + "jiuwenswarm/server/runtime/gateway_adapter/__init__.py", + "jiuwenswarm/server/runtime/gateway_adapter/base.py", + "jiuwenswarm/server/runtime/gateway_adapter/config_adapter.py", + "jiuwenswarm/server/runtime/gateway_adapter/harmonyos_adapter.py", + "jiuwenswarm/server/runtime/gateway_adapter/memory_adapter.py", + "jiuwenswarm/server/runtime/gateway_adapter/project_adapter.py", + "jiuwenswarm/server/runtime/gateway_adapter/session_adapter.py", + "jiuwenswarm/server/runtime/gateway_adapter/workspace_file_adapter.py", + "jiuwenswarm/server/runtime/harmonyos/harmonyos_dev.py", + "jiuwenswarm/server/runtime/harmonyos/harmonyos_project.py", + "jiuwenswarm/server/runtime/image_modality_warmup.py", + "jiuwenswarm/server/runtime/marketplace/__init__.py", + "jiuwenswarm/server/runtime/marketplace/asset_mcp_publish_converter.py", + "jiuwenswarm/server/runtime/marketplace/asset_package_builder.py", + "jiuwenswarm/server/runtime/marketplace/asset_publish_adapters.py", + "jiuwenswarm/server/runtime/marketplace/asset_publish_api.py", + "jiuwenswarm/server/runtime/marketplace/asset_publish_models.py", + "jiuwenswarm/server/runtime/marketplace/asset_publish_service.py", + "jiuwenswarm/server/runtime/marketplace/asset_publish_store.py", + "jiuwenswarm/server/runtime/marketplace/hub_asset_installer.py", + "jiuwenswarm/server/runtime/marketplace/hub_asset_port.py", + "jiuwenswarm/server/runtime/marketplace/hub_asset_type_adapter.py", + "jiuwenswarm/server/runtime/marketplace/hub_avatar_cache.py", + "jiuwenswarm/server/runtime/marketplace/hub_catalog_cache.py", + "jiuwenswarm/server/runtime/marketplace/hub_client.py", + "jiuwenswarm/server/runtime/marketplace/hub_install_state.py", + "jiuwenswarm/server/runtime/marketplace/hub_models.py", + "jiuwenswarm/server/runtime/marketplace/hub_package_downloader.py", + "jiuwenswarm/server/runtime/marketplace/hub_publish_client.py", + "jiuwenswarm/server/runtime/marketplace/hub_publish_port.py", + "jiuwenswarm/server/runtime/mcp/__init__.py", + "jiuwenswarm/server/runtime/mcp/call_timeout_patch.py", + "jiuwenswarm/server/runtime/mcp/cli_driver.py", + "jiuwenswarm/server/runtime/mcp/credential.py", + "jiuwenswarm/server/runtime/mcp/exc_group.py", + "jiuwenswarm/server/runtime/mcp/marketplace.py", + "jiuwenswarm/server/runtime/mcp/package_manifest.py", + "jiuwenswarm/server/runtime/mcp/paths.py", + "jiuwenswarm/server/runtime/mcp/registry.py", + "jiuwenswarm/server/runtime/mcp/skill_installer.py", + "jiuwenswarm/server/runtime/mcp/state_store.py", + "jiuwenswarm/server/runtime/model_compiler_adapter.py", + "jiuwenswarm/server/runtime/model_routing_registry.py", + "jiuwenswarm/server/runtime/no_host_fallback_jiuwenbox.py", + "jiuwenswarm/server/runtime/offline_session_cleanup.py", + "jiuwenswarm/server/runtime/opencode_zen.py", + "jiuwenswarm/server/runtime/proactive_adapter.py", + "jiuwenswarm/server/runtime/sandbox_no_host_fallback.py", + "jiuwenswarm/server/runtime/session/git_diff_status.py", + "jiuwenswarm/server/runtime/session/git_diff_watcher.py", + "jiuwenswarm/server/runtime/session/history_io.py", + "jiuwenswarm/server/runtime/session/kv_cache/kv_cache_application_owner.py", + "jiuwenswarm/server/runtime/session/kv_cache/kv_cache_application_runtime.py", + "jiuwenswarm/server/runtime/session/kv_cache/kv_cache_model_provider.py", + "jiuwenswarm/server/runtime/session/kv_cache/kv_cache_session_lifecycle_participant.py", + "jiuwenswarm/server/runtime/session/kv_cache/kv_cache_task_guard.py", + "jiuwenswarm/server/runtime/session/lifecycle.py", + "jiuwenswarm/server/runtime/session/model_selection_store.py", + "jiuwenswarm/server/runtime/session/project_git.py", + "jiuwenswarm/server/runtime/session/project_queries.py", + "jiuwenswarm/server/runtime/session/project_store.py", + "jiuwenswarm/server/runtime/session/session_archive.py", + "jiuwenswarm/server/runtime/session/session_history.py", + "jiuwenswarm/server/runtime/session/session_info.py", + "jiuwenswarm/server/runtime/session/session_manager.py", + "jiuwenswarm/server/runtime/session/session_message_service.py", + "jiuwenswarm/server/runtime/session/session_message_store.py", + "jiuwenswarm/server/runtime/session/session_metadata.py", + "jiuwenswarm/server/runtime/session/session_rename.py", + "jiuwenswarm/server/runtime/session/work_mode.py", + "jiuwenswarm/server/runtime/skill/__init__.py", + "jiuwenswarm/server/runtime/skill/archive_store.py", + "jiuwenswarm/server/runtime/skill/skill_content_images.py", + "jiuwenswarm/server/runtime/skill/skill_files.py", + "jiuwenswarm/server/runtime/skill/skill_manager.py", + "jiuwenswarm/server/runtime/skill/skill_type.py", + "jiuwenswarm/server/runtime/skill/skilldev/__init__.py", + "jiuwenswarm/server/runtime/skill/skilldev/context.py", + "jiuwenswarm/server/runtime/skill/skilldev/deps.py", + "jiuwenswarm/server/runtime/skill/skilldev/pipeline.py", + "jiuwenswarm/server/runtime/skill/skilldev/schema.py", + "jiuwenswarm/server/runtime/skill/skilldev/service.py", + "jiuwenswarm/server/runtime/skill/skilldev/stages/__init__.py", + "jiuwenswarm/server/runtime/skill/skilldev/stages/base.py", + "jiuwenswarm/server/runtime/skill/skilldev/stages/desc_optimize_stage.py", + "jiuwenswarm/server/runtime/skill/skilldev/stages/evaluate_stage.py", + "jiuwenswarm/server/runtime/skill/skilldev/stages/generate_stage.py", + "jiuwenswarm/server/runtime/skill/skilldev/stages/improve_stage.py", + "jiuwenswarm/server/runtime/skill/skilldev/stages/init_stage.py", + "jiuwenswarm/server/runtime/skill/skilldev/stages/package_stage.py", + "jiuwenswarm/server/runtime/skill/skilldev/stages/plan_stage.py", + "jiuwenswarm/server/runtime/skill/skilldev/stages/test_design_stage.py", + "jiuwenswarm/server/runtime/skill/skilldev/stages/test_run_stage.py", + "jiuwenswarm/server/runtime/skill/skilldev/stages/validate_stage.py", + "jiuwenswarm/server/runtime/skill/skilldev/state_utils.py", + "jiuwenswarm/server/runtime/skill/skilldev/store.py", + "jiuwenswarm/server/runtime/skill/skilldev/workspace.py", + "jiuwenswarm/server/runtime/skill/skillpack.py", + "jiuwenswarm/server/runtime/skill/skills_multipart_http.py", + "jiuwenswarm/server/runtime/team_binding_store.py", + "jiuwenswarm/server/runtime/team_entity_store.py", + "jiuwenswarm/server/runtime/tenant_agent_pool.py", + "jiuwenswarm/server/runtime/tokenizer_service.py", + "jiuwenswarm/server/sandbox/host_port.py", + "jiuwenswarm/server/sandbox/jiuwenbox_runner.py", + "jiuwenswarm/server/utils/diff_service.py", + "jiuwenswarm/server/utils/stream_utils.py", + "jiuwenswarm/server/utils/utils.py", + "jiuwenswarm/server/wire_truncate.py", + "jiuwenswarm/server/ws_send.py", + "jiuwenswarm/start_services.py", + "jiuwenswarm/symphony/adapter.py", + "jiuwenswarm/symphony/build.py", + "jiuwenswarm/symphony/config.py", + "jiuwenswarm/symphony/evolution/__init__.py", + "jiuwenswarm/symphony/evolution/aggregate.py", + "jiuwenswarm/symphony/evolution/models.py", + "jiuwenswarm/symphony/evolution/service.py", + "jiuwenswarm/symphony/evolution/store.py", + "jiuwenswarm/symphony/experience.py", + "jiuwenswarm/symphony/graph_state.py", + "jiuwenswarm/symphony/graph_storage.py", + "jiuwenswarm/symphony/llm.py", + "jiuwenswarm/symphony/service.py", + "jiuwenswarm/symphony/shared/__init__.py", + "jiuwenswarm/symphony/shared/llm_payload.py", + "jiuwenswarm/symphony/shared/profiling.py", + "jiuwenswarm/symphony/shared/rich_compat.py", + "jiuwenswarm/symphony/shared/storage.py", + "jiuwenswarm/symphony/shared/tags.py", + "jiuwenswarm/symphony/skill_retrieval/__init__.py", + "jiuwenswarm/symphony/skill_retrieval/runtime.py", + "packages/jiuwenswarm-tui/jiuwenswarm_tui/app.py", + "packages/jiuwenswarm-tui/setup.py", + "scripts/build-electron-exe.ps1", + "scripts/build-electron-exe.sh", + "scripts/build-exe.ps1", + "scripts/build-harmony-hap.sh", + "scripts/build-harmony.sh", + "scripts/build-macos.sh", + "scripts/build-runtimes.psm1", + "scripts/build.ps1", + "scripts/build.sh", + "scripts/build_config.py", + "scripts/build_python_packages.py", + "scripts/build_tui.py", + "scripts/harmony_entry.py", + "scripts/installer-electron.iss", + "scripts/installer.iss", + "scripts/jiuwenswarm.iss", + "scripts/jiuwenswarm.spec", + "scripts/jiuwenswarm_exe_entry.py", + "scripts/nfs/teardown_nfs_client.sh", + "scripts/nfs/teardown_nfs_server.sh", + "scripts/openjiuwen_team_mcp_exe_entry.py", + "scripts/reset_trajectory_data.py", + "scripts/update_playwright_mcp_runtime.py", + "scripts/verify_a2ui_bundle.py", + "scripts/verify_gitcode_cli_bundle.py", + "scripts/verify_playwright_mcp_bundle.py", + "scripts/verify_playwright_mcp_offline.py", + "scripts/verify_rsi_bundle.py", + "sdks/python/src/jiuwenswarm_sdk/__init__.py", + "sdks/python/src/jiuwenswarm_sdk/client.py", + "sdks/python/src/jiuwenswarm_sdk/protocol.py", + "sdks/python/src/jiuwenswarm_sdk/types.py", + "sdks/typescript/src/index.ts", + "sdks/typescript/src/protocol.ts" + ], + "missing_files": [ + "Makefile", + "deploy/yuanrong/check_handler.sh", + "deploy/yuanrong/cmd_handler.sh", + "deploy/yuanrong/common.sh", + "deploy/yuanrong/envfile_handler.sh", + "deploy/yuanrong/gateway_handler.sh", + "deploy/yuanrong/global_vars.sh", + "deploy/yuanrong/jiuwenswarm_handler.sh", + "deploy/yuanrong/template_handler.sh", + "deploy/yuanrong/web_handler.sh", + "jiuwenbox/docker/Dockerfile", + "jiuwenbox/src/jiuwenbox/__init__.py", + "jiuwenswarm/agents/harness/common/browser_defaults.py", + "jiuwenswarm/agents/harness/common/rails/ask_user_contract.py", + "jiuwenswarm/channels/browser/frontend/eslint.config.js", + "jiuwenswarm/channels/browser/frontend/scripts/pack.js", + "jiuwenswarm/channels/browser/frontend/vite.config.ts", + "jiuwenswarm/channels/browser/frontend/vite.content.config.ts", + "jiuwenswarm/channels/ide/packages/jetbrains-plugin/build.gradle.kts", + "jiuwenswarm/channels/ide/packages/jetbrains-plugin/gradlew.bat", + "jiuwenswarm/channels/ide/packages/jetbrains-plugin/settings.gradle.kts", + "jiuwenswarm/channels/ide/packages/shared-webview/chat.html", + "jiuwenswarm/channels/ide/packages/shared-webview/swarm_map.html", + "jiuwenswarm/channels/tui/frontend/src/ui/components/message-components.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/components/messages/basic-message-components.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/components/messages/index.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/components/tool-group-message.ts", + "jiuwenswarm/channels/tui/frontend/src/ui/components/tools/index.ts", + "jiuwenswarm/channels/web/frontend/.eslintrc.cjs", + "jiuwenswarm/channels/web/frontend/.prettierrc.cjs", + "jiuwenswarm/channels/web/frontend/postcss.config.js", + "jiuwenswarm/channels/web/frontend/src/App.css", + "jiuwenswarm/channels/web/frontend/src/applicationPlugins/applicationPlugins.css", + "jiuwenswarm/channels/web/frontend/src/components/AgentManagementPanel/agentManagement.css", + "jiuwenswarm/channels/web/frontend/src/components/AssetPublishDrawer/style.css", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/BeamSearchTree.css", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/ChatPanel.css", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/ContextUsageIndicator.css", + "jiuwenswarm/channels/web/frontend/src/components/ChatPanel/SkillTreePath.css", + "jiuwenswarm/channels/web/frontend/src/components/ConnectorMarket/ConnectorMarket.css", + "jiuwenswarm/channels/web/frontend/src/components/ConnectorMarket/FormPageLayout.css", + "jiuwenswarm/channels/web/frontend/src/components/DesktopBrowserPane/DesktopBrowserPane.css", + "jiuwenswarm/channels/web/frontend/src/components/DesktopTextEditContextMenu/DesktopTextEditContextMenu.css", + "jiuwenswarm/channels/web/frontend/src/components/ExternalCliInstallDialog.css", + "jiuwenswarm/channels/web/frontend/src/components/GoalBar/GoalBar.css", + "jiuwenswarm/channels/web/frontend/src/components/InteractionSlot/InteractionSlot.css", + "jiuwenswarm/channels/web/frontend/src/components/LoginDialog/LoginDialog.css", + "jiuwenswarm/channels/web/frontend/src/components/MarkdownRenderer/MarkdownRenderer.css", + "jiuwenswarm/channels/web/frontend/src/components/MarkdownRenderer/index.ts", + "jiuwenswarm/channels/web/frontend/src/components/ModelProviderIcon/index.css", + "jiuwenswarm/channels/web/frontend/src/components/PersonalContext/AddContentDrawer.css", + "jiuwenswarm/channels/web/frontend/src/components/PersonalContext/GraphPanel.css", + "jiuwenswarm/channels/web/frontend/src/components/PersonalContext/Intro.css", + "jiuwenswarm/channels/web/frontend/src/components/PersonalContext/ServicesPanel.css", + "jiuwenswarm/channels/web/frontend/src/components/PersonalContext/SettingsPanel.css", + "jiuwenswarm/channels/web/frontend/src/components/PersonalContext/index.css", + "jiuwenswarm/channels/web/frontend/src/components/SessionSidebar/SessionSidebar.css", + "jiuwenswarm/channels/web/frontend/src/components/SkillGraphPanel/SkillGraphPanel.css", + "jiuwenswarm/channels/web/frontend/src/components/ToolPanel/ToolPanel.css", + "jiuwenswarm/channels/web/frontend/src/components/form/components/Form.css", + "jiuwenswarm/channels/web/frontend/src/components/form/components/FormDialog.css", + "jiuwenswarm/channels/web/frontend/src/components/form/index.ts", + "jiuwenswarm/channels/web/frontend/src/components/subagent/Subagent.css", + "jiuwenswarm/channels/web/frontend/src/components/ui/Button/Button.css", + "jiuwenswarm/channels/web/frontend/src/components/ui/CategoryTabs/CategoryTabs.css", + "jiuwenswarm/channels/web/frontend/src/components/ui/CollapsibleText/CollapsibleText.css", + "jiuwenswarm/channels/web/frontend/src/components/ui/DetailSection/DetailSection.css", + "jiuwenswarm/channels/web/frontend/src/components/ui/Dialog/Dialog.css", + "jiuwenswarm/channels/web/frontend/src/components/ui/DropdownMenu/DropdownMenu.css", + "jiuwenswarm/channels/web/frontend/src/components/ui/EntityHeader/EntityHeader.css", + "jiuwenswarm/channels/web/frontend/src/components/ui/FilePreviewPanel/FilePreviewPanel.css", + "jiuwenswarm/channels/web/frontend/src/components/ui/FormDrawer/FormDrawer.css", + "jiuwenswarm/channels/web/frontend/src/components/ui/HelpTips/HelpTips.css", + "jiuwenswarm/channels/web/frontend/src/components/ui/Input/Input.css", + "jiuwenswarm/channels/web/frontend/src/components/ui/Loading/Loading.css", + "jiuwenswarm/channels/web/frontend/src/components/ui/PageCard/PageCard.css", + "jiuwenswarm/channels/web/frontend/src/components/ui/PageToolbar/PageToolbar.css", + "jiuwenswarm/channels/web/frontend/src/components/ui/RadioGroup/RadioGroup.css", + "jiuwenswarm/channels/web/frontend/src/components/ui/Select/Select.css", + "jiuwenswarm/channels/web/frontend/src/components/ui/Switch/Switch.css", + "jiuwenswarm/channels/web/frontend/src/components/ui/Tabs/Tabs.css", + "jiuwenswarm/channels/web/frontend/src/components/ui/Tag/Tag.css", + "jiuwenswarm/channels/web/frontend/src/components/ui/Textarea/Textarea.css", + "jiuwenswarm/channels/web/frontend/src/components/ui/Toast/Toast.css", + "jiuwenswarm/channels/web/frontend/src/features/a2ui/a2ui.css", + "jiuwenswarm/channels/web/frontend/src/features/agentManagement/index.ts", + "jiuwenswarm/channels/web/frontend/src/features/code-mode/CodeMode.css", + "jiuwenswarm/channels/web/frontend/src/features/modelSetupGuide/ModelSetupGuide.css", + "jiuwenswarm/channels/web/frontend/src/features/rsi/styles/rsi.css", + "jiuwenswarm/channels/web/frontend/src/features/settings/SettingsPage.css", + "jiuwenswarm/channels/web/frontend/src/features/settings/components/SettingRow.css", + "jiuwenswarm/channels/web/frontend/src/features/settings/components/SettingsConfirmDialog.css", + "jiuwenswarm/channels/web/frontend/src/features/settings/components/SettingsSection.css", + "jiuwenswarm/channels/web/frontend/src/features/settings/components/index.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/agent/AgentSettings.css", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/agent/index.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/archivedTasks/ArchivedTasksSettings.css", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/archivedTasks/index.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/browser/index.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/channels/SettingsChannelsPanel.css", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/channels/index.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/experimental/VideoDuplexModelSettings.css", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/experimental/index.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/general/index.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/models/ContextWindowField.css", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/models/FreeModelSettingsDialog.css", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/models/FreeModelsSettings.css", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/models/OpenAIAccountField.css", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/models/index.ts", + "jiuwenswarm/channels/web/frontend/src/features/settings/modules/personalContext/index.ts", + "jiuwenswarm/channels/web/frontend/src/features/shareImageExport.css", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/TeamTrajectoryWorkspace.module.css", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/TrajectoryPanel.module.css", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/client/TrajectoryExplorer.module.css", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/client/TrajectoryTable.module.css", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/client/TrajectoryTimeline.module.css", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/client/TrajectoryToolbar.module.css", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/client/theme.css", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/primitives/JsonTree.module.css", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/primitives/Menu.module.css", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/primitives/Tooltip.module.css", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/primitives/clipboard.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/primitives/index.ts", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/primitives/markdown/CodeBlock.module.css", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/primitives/markdown/MarkdownText.module.css", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/theme/base.css", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/theme/design-platform.css", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/theme/gradient-shadow-text.css", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/theme/scrollbar.css", + "jiuwenswarm/channels/web/frontend/src/features/trajectory/theme/shiki.css", + "jiuwenswarm/channels/web/frontend/src/hooks/index.ts", + "jiuwenswarm/channels/web/frontend/src/index.css", + "jiuwenswarm/channels/web/frontend/src/multi-session/dialogs/dialogs.css", + "jiuwenswarm/channels/web/frontend/src/multi-session/sidebar/ConversationSidebar.css", + "jiuwenswarm/channels/web/frontend/src/multi-session/sidebar/ProjectArchiveDialog.css", + "jiuwenswarm/channels/web/frontend/src/stores/index.ts", + "jiuwenswarm/channels/web/frontend/src/styles/foundation.css", + "jiuwenswarm/channels/web/frontend/src/styles/themes/default/light.css", + "jiuwenswarm/channels/web/frontend/src/utils/index.ts", + "jiuwenswarm/common/e2a/constants.py", + "jiuwenswarm/common/session_message.py", + "jiuwenswarm/common/ws_limits.py", + "jiuwenswarm/extensions/video_duplex/frontend/TaskFullDuplexAction.css", + "jiuwenswarm/extensions/video_duplex/frontend/VideoDuplexSettings.css", + "jiuwenswarm/extensions/video_duplex/frontend/VideoLivePanel/VideoLivePanel.css", + "jiuwenswarm/resources/agent/workspace/skills/ascend-moe-optimizer-auto-trace/scripts/run_instrumentation_checks.sh", + "jiuwenswarm/runtime/__init__.py", + "jiuwenswarm/scripts/generate-agent-folders.js", + "jiuwenswarm/scripts/watch-folders.js", + "jiuwenswarm/scripts/whatsapp-bridge.js", + "scripts/build-exe.bat", + "scripts/build-runtimes.sh", + "scripts/nfs/setup_nfs_client.sh", + "scripts/nfs/setup_nfs_server.sh", + "scripts/run_gateway_acp.cmd", + "scripts/run_gateway_acp.sh" + ], + "contract_files": 1893, + "stale_contracts": [] + }, + "features": { + "target": 1.0, + "covered": 79, + "total": 79, + "items": { + "bootstrap": { + "title": "初始化与服务启动", + "page": "repos/jiuwenswarm/components/launch/feature-bootstrap.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "instances": { + "title": "单机多实例", + "page": "repos/jiuwenswarm/components/launch/feature-instances.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "desktop": { + "title": "桌面宿主与自动更新", + "page": "repos/jiuwenswarm/components/launch/feature-desktop.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "deployment": { + "title": "打包与部署", + "page": "repos/jiuwenswarm/components/packaging-deploy/feature-deployment.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "process-cli": { + "title": "机器执行与本地 CLI", + "page": "repos/jiuwenswarm/components/gateway-channels/feature-process-cli.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "cli": { + "title": "交互式命令行", + "page": "repos/jiuwenswarm/components/gateway-channels/feature-cli.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "tui": { + "title": "TUI 对话与命令", + "page": "repos/jiuwenswarm/components/tui-client/feature-tui.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "web-chat": { + "title": "Web 对话与流式状态", + "page": "repos/jiuwenswarm/components/web-frontend/feature-web-chat.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "web-navigation": { + "title": "Web 页面与功能入口", + "page": "repos/jiuwenswarm/components/web-frontend/feature-web-navigation.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "projects-sessions": { + "title": "项目、会话与历史管理", + "page": "repos/jiuwenswarm/components/agent-runtime/feature-projects-sessions.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "modes": { + "title": "Agent、Code 与 Team 模式", + "page": "repos/jiuwenswarm/components/agent-server-runtime/feature-modes.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "team": { + "title": "多智能体团队协作", + "page": "repos/jiuwenswarm/components/agents-team/feature-team.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "distributed-team": { + "title": "跨进程分布式 Team", + "page": "repos/jiuwenswarm/components/agents-team/feature-distributed-team.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "human-team": { + "title": "人类团队成员与人工协作", + "page": "repos/jiuwenswarm/components/agents-team/feature-human-team.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "swarmflow": { + "title": "SwarmFlow 工作流与 HITL", + "page": "repos/jiuwenswarm/components/agents-team/feature-swarmflow.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "harness": { + "title": "Agent Loop 与 Rail 装配", + "page": "repos/jiuwenswarm/components/agent-server-runtime/feature-harness.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "planning": { + "title": "任务规划与 Todo", + "page": "repos/jiuwenswarm/components/agents-team/feature-planning.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "subagents": { + "title": "子代理派发与验证", + "page": "repos/jiuwenswarm/components/agents-team/feature-subagents.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "skills": { + "title": "技能安装、挂载与发现", + "page": "repos/jiuwenswarm/components/agents-team/feature-skills.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "swarm-skills": { + "title": "团队技能与能力复用", + "page": "repos/jiuwenswarm/components/agents-team/feature-swarm-skills.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "skill-hub": { + "title": "Skill Hub 与市场流通", + "page": "repos/jiuwenswarm/components/agents-team/feature-skill-hub.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "skill-evolution": { + "title": "Skill 自演进", + "page": "repos/jiuwenswarm/components/agent-server-runtime/feature-skill-evolution.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "symphony": { + "title": "Symphony 检索与图谱编排", + "page": "repos/jiuwenswarm/components/symphony-orchestration/feature-symphony.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "auto-harness": { + "title": "Auto Harness 评测优化", + "page": "repos/jiuwenswarm/components/auto-harness/feature-auto-harness.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "rsi-packages": { + "title": "Harness Package 与热激活", + "page": "repos/jiuwenswarm/components/auto-harness/feature-rsi-packages.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "ttse": { + "title": "FACT/TIP 双轨经验", + "page": "repos/jiuwenswarm/components/agent-server-runtime/feature-ttse.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "memory": { + "title": "长期记忆", + "page": "repos/jiuwenswarm/components/agents-team/feature-memory.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "auto-memory": { + "title": "对话后自动记忆", + "page": "repos/jiuwenswarm/components/agents-team/feature-auto-memory.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "coding-memory": { + "title": "Code 模式编码记忆", + "page": "repos/jiuwenswarm/components/agent-server-runtime/feature-coding-memory.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "task-memory": { + "title": "任务经验检索与沉淀", + "page": "repos/jiuwenswarm/components/agents-team/feature-task-memory.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "context": { + "title": "上下文压缩与卸载", + "page": "repos/jiuwenswarm/components/agent-server-runtime/feature-context.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "permissions": { + "title": "工具权限与安全治理", + "page": "repos/jiuwenswarm/components/agent-server-runtime/feature-permissions.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "hooks": { + "title": "生命周期 Hooks 与扩展", + "page": "repos/jiuwenswarm/components/extensions-plugins/feature-hooks.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "applications": { + "title": "Application Plugin 与前端贡献", + "page": "repos/jiuwenswarm/components/extensions-plugins/feature-applications.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "video-duplex": { + "title": "音视频双工扩展", + "page": "repos/jiuwenswarm/components/extensions-plugins/feature-video-duplex.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "e2a": { + "title": "E2A 统一请求响应协议", + "page": "repos/jiuwenswarm/components/protocols/feature-e2a.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "a2a": { + "title": "A2A 接入与 AgentCard", + "page": "repos/jiuwenswarm/components/protocols/feature-a2a.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "acp": { + "title": "ACP 与 stdio 桥接", + "page": "repos/jiuwenswarm/components/protocols/feature-acp.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "ssh": { + "title": "SSH 频道与远程终端", + "page": "repos/jiuwenswarm/components/gateway-channels/feature-ssh.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "a2ui": { + "title": "A2UI 生成式界面", + "page": "repos/jiuwenswarm/components/a2ui/feature-a2ui.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "browser-tools": { + "title": "浏览器服务与网页工具", + "page": "repos/jiuwenswarm/components/agents-team/feature-browser-tools.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "browser-client": { + "title": "Chromium 浏览器扩展", + "page": "repos/jiuwenswarm/components/browser-client/feature-browser-client.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "vscode": { + "title": "VS Code 客户端", + "page": "repos/jiuwenswarm/components/ide-clients/feature-vscode.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "jetbrains": { + "title": "JetBrains 客户端", + "page": "repos/jiuwenswarm/components/ide-clients/feature-jetbrains.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "sdk": { + "title": "Python 与 TypeScript SDK", + "page": "repos/jiuwenswarm/components/sdk-clients/feature-sdk.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "sandbox": { + "title": "JiuwenBox 隔离执行", + "page": "repos/jiuwenswarm/components/sandbox-runtime/feature-sandbox.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "models": { + "title": "模型平台与 API 配置", + "page": "repos/jiuwenswarm/components/common-core/feature-models.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "mcp": { + "title": "MCP 配置、凭据与资源", + "page": "repos/jiuwenswarm/components/common-core/feature-mcp.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "login": { + "title": "账号登录与凭据续期", + "page": "repos/jiuwenswarm/components/login-auth/feature-login.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "cron": { + "title": "定时任务与调度存储", + "page": "repos/jiuwenswarm/components/cron-scheduling/feature-cron.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "observability": { + "title": "执行轨迹与保留", + "page": "repos/jiuwenswarm/components/observability/feature-observability.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "debug-trace": { + "title": "Debug Dump 与 OTel", + "page": "repos/jiuwenswarm/components/observability/feature-debug-trace.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "multimodal": { + "title": "多模态理解与媒体配置", + "page": "repos/jiuwenswarm/components/agents-team/feature-multimodal.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "lsp": { + "title": "LSP 代码智能", + "page": "repos/jiuwenswarm/components/agent-server-runtime/feature-lsp.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "worktree": { + "title": "Worktree 隔离工作", + "page": "repos/jiuwenswarm/components/agent-server-runtime/feature-worktree.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "autofix": { + "title": "已有 PR 自动修复", + "page": "repos/jiuwenswarm/components/tui-client/feature-autofix.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "im-feishu": { + "title": "飞书 频道", + "page": "repos/jiuwenswarm/components/gateway-channels/feature-im-feishu.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "im-wechat": { + "title": "微信 频道", + "page": "repos/jiuwenswarm/components/gateway-channels/feature-im-wechat.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "im-wecom": { + "title": "企业微信 频道", + "page": "repos/jiuwenswarm/components/gateway-channels/feature-im-wecom.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "im-dingtalk": { + "title": "钉钉 频道", + "page": "repos/jiuwenswarm/components/gateway-channels/feature-im-dingtalk.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "im-xiaoyi": { + "title": "小艺 频道", + "page": "repos/jiuwenswarm/components/gateway-channels/feature-im-xiaoyi.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "im-slack": { + "title": "Slack 频道", + "page": "repos/jiuwenswarm/components/gateway-channels/feature-im-slack.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "im-telegram": { + "title": "Telegram 频道", + "page": "repos/jiuwenswarm/components/gateway-channels/feature-im-telegram.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "im-discord": { + "title": "Discord 频道", + "page": "repos/jiuwenswarm/components/gateway-channels/feature-im-discord.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "im-whatsapp": { + "title": "WhatsApp 频道", + "page": "repos/jiuwenswarm/components/gateway-channels/feature-im-whatsapp.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "agent-management": { + "title": "智能体资产管理与工作区浏览", + "page": "repos/jiuwenswarm/components/web-frontend/feature-agent-management.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "jiuwen-memory-sdk": { + "title": "JiuwenMemory 进程内 SDK 接入", + "page": "repos/jiuwenswarm/components/agents-team/feature-jiuwen-memory-sdk.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "image-generation": { + "title": "图片生成与产物落盘", + "page": "repos/jiuwenswarm/components/agents-team/feature-image-generation.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "sandbox-privacy-proxy": { + "title": "JiuwenBox 推理隐私代理", + "page": "repos/jiuwenswarm/components/sandbox-runtime/feature-sandbox-privacy-proxy.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "digital-avatar": { + "title": "群聊数字分身与 owner 权限", + "page": "repos/jiuwenswarm/components/agents-team/feature-digital-avatar.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "connectors": { + "title": "连接器市场与 MCP 授权流程", + "page": "repos/jiuwenswarm/components/web-frontend/feature-connectors.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "external-cli-agents": { + "title": "外部 Claude 与 Codex CLI 智能体", + "page": "repos/jiuwenswarm/components/common-core/feature-external-cli-agents.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "goal-mode": { + "title": "持续目标与会话控制", + "page": "repos/jiuwenswarm/components/web-frontend/feature-goal-mode.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "plan-mode": { + "title": "计划模式与多入口切换限制", + "page": "repos/jiuwenswarm/components/web-frontend/feature-plan-mode.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "heartbeat": { + "title": "绑定会话的心跳续跑任务", + "page": "repos/jiuwenswarm/components/agent-server-runtime/feature-heartbeat.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "artifacts": { + "title": "会话产物列表、预览与下载", + "page": "repos/jiuwenswarm/components/web-frontend/feature-artifacts.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "speech-interaction": { + "title": "语音输入、回复朗读与停止", + "page": "repos/jiuwenswarm/components/web-frontend/feature-speech-interaction.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "skill-development": { + "title": "SkillDev 创建、评测与打包边界", + "page": "repos/jiuwenswarm/components/agent-server-runtime/feature-skill-development.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + }, + "proactive-recommendation": { + "title": "主动推荐、频率限制与主 Agent 交付", + "page": "repos/jiuwenswarm/components/agent-server-runtime/feature-proactive-recommendation.md", + "covered": true, + "missing_facets": [], + "source_evidence": true, + "doc_evidence": true, + "implemented": true + } + } + } + }, + "provenance": { + "policy_sha256": "c23eefb5057bfdff6a7be55cd663b5e9dc636cc2d76741b39d875088a8216661", + "knowledge_sha256": "e6bc02523ee3431b05a7b661a146e8dd1f6532245861bd8ccdc90944d74f50f1", + "upstream_tracked_files_clean": true, + "reproduce": "PYTHONPATH=src python tools/audit_knowledge_depth.py --repo jiuwenswarm --upstream /path/to/pinned/jiuwenswarm --pin f0a69728c96b5961d993449f1a901cbd2f4dac5b" + } +} diff --git a/eval/knowledge-depth/jiuwenswarm-retrieval-improvement-cn.md b/eval/knowledge-depth/jiuwenswarm-retrieval-improvement-cn.md new file mode 100644 index 000000000..52474f25d --- /dev/null +++ b/eval/knowledge-depth/jiuwenswarm-retrieval-improvement-cn.md @@ -0,0 +1,75 @@ +# JiuwenSwarm 检索与工作流改进报告(2026-10-02) + +本次把已有知识从“可按需查阅”接入默认 PR 审查上下文。带功能描述和入口路径的 79 个目录验收用例全部命中;其中已有的 77 篇深读正文全部进入上下文。知识内容覆盖率保持原值,真实 PR 缺陷召回率尚未测量。 + +## 与上一版比较 + +比较基线为合并提交 `2b669678bd5bf43a77edf5b296c5d59dc4497591`(PR #286)。使用同一份 JiuwenSwarm 功能目录和生产入口,不以新增文档数量代替审查效果。 + +| 指标 | 上一版 | 本次 | +|---|---:|---:| +| 知识 Markdown 页面 | 742 | 742 | +| 功能覆盖 | 79/79 | 79/79 | +| 第一方生产文件覆盖 | 2,043/2,199(92.91%) | 保持不变 | +| 已验证深读维度 | 173/553(31.28%) | 保持不变 | +| 具有深读证据的生产文件 | 115 | 保持不变 | +| Direct 自动返回解释性背景正文的用例 | 0/79 | 79/79 | +| Direct 自动返回本功能已有深读正文的用例 | 0/77 | 77/77 | +| 精确 owner/model 路由 | 既有路由 | 79/79 用例保持一致 | +| 追加背景全文读取预算 | 无专门预算 | 截断的返回页面各一次,最多两次 | + +“上一版为零”指默认计划没有 `related_knowledge` 正文字段;原有知识页仍可以手工搜索和读取。文件覆盖主要包含静态接口/依赖记录,不能理解为完整行为覆盖。本次只给 156 个现存功能页补齐匹配元数据,正文、源码引用和深读证明保持原样。 + +## 对 PR review 的具体影响 + +Direct MCP 和 Python SDK 在原来的规则快速地图之外,自动提供最多两页解释性正文;Agent review 在首次模型调用前注入同一检索结果,并保留 `doc_related` 供按需查询。三个入口共用 `KnowledgeDocs.related`,没有各自的排序实现,也不调用额外的检索模型。 + +相关功能先按固定源码引用、入口路径、源码 glob 和 PR 描述选择,再优先提供该功能的完整深读正文。模型平台、ACP 和 A2UI 的基础介绍曾排在深读前,这次验收发现并修复了该问题。旧页没有新元数据时仍能通过固定源码路径命中。 + +每个结果附带来源 pin、命中路径、已有/缺失深读维度和截断状态。知识来源 pin 不等于 PR head;审查者仍须到固定 PR head 复核。推断的设计取舍是背景,不能转成硬规则。SDK 文档引用和后续读取绑定同一知识快照;Agent 背景放在不可信数据围栏内。关闭 briefing 时自动知识注入也关闭。 + +正文限每页 3,000 字符、总计 6,000 字符。结构化接口卡、规则页、索引和其他仓库不会进入自动背景;这些限制让说明性知识与硬规则路由各自承担原来的职责。 + +## 离线检索验收 + +| 输入方式 | 用例数 | 本功能命中 | 已有深读命中 | 最大背景正文 | 本地耗时中位数 | +|---|---:|---:|---:|---:|---:| +| 功能描述+入口路径 | 79 | 79/79 | 77/77 | 5571 字符 | 1935 ms | +| 仅入口路径 | 79 | 77/79 | 75/77 | 5459 字符 | 1943 ms | + +仅路径时 `ttse` 和 `worktree` 与其他功能共享入口,受两页上限影响没有命中本功能。默认 Direct 要求先收集 PR title/body;这项结果说明保留描述信息的价值,也暴露了纯路径检索的剩余歧义。 + +耗时来自本机完整知识树读取,属于检索本身的额外开销,不能据此声称审查更快。用例是功能目录探针,不是真实 PR:没有测得缺陷召回、误报率、RQS、模型 token 或端到端耗时改善。`cron` 和 `skill-evolution` 仍缺已批准的深读;所有功能仍未达到七维全部完成。 + +## 更新后的初始化与审查流程 + +```mermaid +flowchart TD + A[固定上游 pin] --> B[既有知识、项目文档、维护者文档] + B --> C[knowledge / widen:功能与生产文件广度] + C --> D[knowledge-deepen:有源码证明的代表性行为] + C --> E[从同一 coverage policy 生成匹配元数据] + D --> E + E --> F[分阶段合并后,在完整 checkout 做离线检索验收] + F --> G[Direct / SDK / Agent 自动获取有界背景] + G --> H[在固定 PR head 复核,形成审查结论] +``` + +`knowledge` 和有接受结果的 `knowledge-deepen` 从已审阅的 coverage policy 写入 `feature`、`entry_points`、`source_globs`。恢复运行先验证原来的 accepted checkpoint,随后生成提示;不会修改 checkpoint 正文哈希。全部深读被拒绝时仍保持空阶段语义,不发布只有元数据的失败结果。 + +CLI skill、Cursor review、知识入口说明、playbook 和对应 SPEC 已更新。合并后在完整 checkout 运行: + +```bash +PYTHONPATH=src python tools/audit_review_retrieval.py --repo jiuwenswarm --report /tmp/jiuwenswarm-retrieval.json +``` + +知识树和 wiki 校验、固定源码广度/深度审计、检索交付验收是三个不同结果;检索报告必须保存在产品知识树之外。局部 dry-run delta 不能当作完整检索验收输入。 + +## 验证与复现材料 + +- [检索验收及逐用例结果](jiuwenswarm-retrieval-acceptance-20261002.json):158 个实际 Direct 调用,保存正文长度、文档路径、来源 pin、维度和快照哈希。 +- [上一版默认计划对照](jiuwenswarm-retrieval-baseline-20261002.json):执行固定基线的路由代码,确认没有自动背景正文且 79 个规则路由一致。 +- [固定上游源码覆盖审计](jiuwenswarm-retrieval-depth-audit-20261002.json):上游 `f0a69728c96b5961d993449f1a901cbd2f4dac5b`,广度目标通过,深读证明无问题。 +- [独立审查报告](retrieval-independent-review-20261002.md):完整 diff 复审及七条规则审计;发现的证明摘要/路径格式问题已修复,报告通过 `--require-clean`。额外修复了报告 checker 对真实 `##`/`###` 规则标题的识别。 + +代表性测试覆盖实际 Direct、SDK、Agent 提示注入、消融开关、仓库隔离、长度上限、旧页兼容、快照篡改及初始化恢复。完整离线 suite 已通过,最后证明格式修复又通过相关测试;最终提交仍由 PR CI 全树执行验证。两项知识校验、文档链接/引用与 SPEC freshness 均通过。 diff --git a/eval/knowledge-depth/retrieval-contract-20261002.md b/eval/knowledge-depth/retrieval-contract-20261002.md new file mode 100644 index 000000000..15a4c7efc --- /dev/null +++ b/eval/knowledge-depth/retrieval-contract-20261002.md @@ -0,0 +1,25 @@ +# Bounded review retrieval contract + +Baseline: `2b669678bd5bf43a77edf5b296c5d59dc4497591`. +User scope: improve retrieval and update the workflow, following the Chinese knowledge comparison report. +This document records the review input and acceptance matrix at implementation handoff; it does not claim an earlier design approval. + +Unique owner: `KnowledgeDocs.related`; all consumers use its result. Estimated production additions: 300–400 lines; current additions about 250. No new model calls, provider, KB stage, or hard-rule route. + +| Input / producer | Consumer | Required behavior | +|---|---|---| +| Frozen diff paths + PR description | Direct MCP / SDK plan | Deterministic bounded explanatory context; preserve description-first hard-rule routes | +| `pr_diff` + `pr_context` | Agent dispatch | Same retrieval; untrusted-data fencing; briefing ablation disables automatic injection | +| Feature policy | `knowledge` / accepted `knowledge-deepen` pages | Canonical hints; preserve bodies, source pins and accepted checkpoint proofs | +| Old pages without hints | Retrieval | Pinned-source-path fallback; no migration prerequisite | +| Intact partial depth | All consumers | Prefer deep prose within a selected feature; expose available/missing facets and source pin | +| Edited, duplicate or malformed depth | All consumers | Do not present invalid facet as checked depth | +| Other repo / structural cards / rules | Automatic context | Exclude; explicit general read/search behavior remains available | +| Activated KB snapshot | Direct + SDK | Verify reads; bind references and later reads to the original view | +| Long prose | All consumers | Two documents, 3,000 characters each, 6,000 total; budget incomplete-document followups | +| Rejected extraction | Depth workflow | Preserve empty-stage semantics; do not publish metadata-only failure | + +Validation: representative positive/negative tests at actual Direct, SDK and Agent entry points; 79 catalog cases with descriptions and paths plus 79 diagnostic paths-only cases; independent pinned upstream breadth/depth audit. Catalog delivery is not real PR recall/RQS improvement. Reports remain outside product knowledge. + +Review owner rules: `knowledge/general/review/rules.md` (full, no grouped owner contract). +Baseline contracts: `doc/architecture/SPEC/knowledge_docs.md`, `direct_routing.md`, `sdk.md`, `engine/agent_runtime.md`, `kb_service.md` and root repository invariants. diff --git a/eval/knowledge-depth/retrieval-independent-review-20261002.md b/eval/knowledge-depth/retrieval-independent-review-20261002.md new file mode 100644 index 000000000..073a98f9a --- /dev/null +++ b/eval/knowledge-depth/retrieval-independent-review-20261002.md @@ -0,0 +1,122 @@ +# Independent retrieval delivery review + +## Review scope + +- Base SHA: 2b669678bd5bf43a77edf5b296c5d59dc4497591. +- Diff: baseline -> working tree, including tracked production, tests, workflow/spec changes and 156 JiuwenSwarm metadata edits. +- Owners: knowledge/general/review/rules.md; full enumeration, no rule groups. +- In-scope untracked files: tools/audit_review_retrieval.py; test/test_knowledge_retrieval.py; eval/knowledge-depth/retrieval-contract-20261002.md; jiuwenswarm-retrieval-acceptance-20261002.json; jiuwenswarm-retrieval-baseline-20261002.json; jiuwenswarm-retrieval-depth-audit-20261002.json. +- Author-supplied contract: eval/knowledge-depth/retrieval-contract-20261002.md is the implementation handoff contract. It explicitly states that it is not evidence of earlier design approval. The user request and baseline live contracts provide the authorized scope. +- Evidence boundaries: no network, paid model, broad pytest or duplicate extraction/audit. This review is read-only except this report. The main agent owns final test/CI and publication. This second wave re-reviewed the entire current source, workflow and test diff after F1, including the checker compatibility change. Later production edits invalidate this source verdict. + +## Owner rule audit + +| Rule ID | Status | Evidence | Disposition | +|---|---|---|---| +| REV-1a | PASS | knowledge_docs.py:KnowledgeDocs.related is shared by direct_routing.py:direct_review_plan, sdk/v1/direct.py:DirectClient.plan and engine/agent_runtime/runner.py:run_agent_step; existing explicit read/search remain independent operations with unchanged contracts. | - | +| REV-1b | PASS | runner.py:run_agent_step gates automatic injection on profile_briefing_enabled; test_agent_runtime.py:test_review_prompt_gets_scoped_knowledge_and_respects_ablation covers enabled hit, enabled miss and disabled hit. Direct/SDK use the same result without a ranking fork. | - | +| REV-2a | PASS | One read-only evidence packet and this single report cover correctness plus subtraction; git diff and bounded source reads were reused; no second reviewer or broad test duplication. | - | +| REV-2b | PASS | Subtraction signal triggered by related API, parser helper, metadata writer and tool; the scope/census/item ledger below proves one retrieval result with three consumer adapters and one canonical metadata writer. | - | +| REV-2c | PASS | Bounded 10-minute independent review; parent received the initial status and confirmed finding promptly. CI/mergeability do not exist for this uncommitted worktree; no fabricated PR metadata. | - | +| REV-3a | PASS | .github/workflows/test.yml runs python -m pytest -q and both knowledge validators. Parent reports the equivalent full suite passed before the final proof guard, and final targeted proof/depth/SDK/Agent plus checker tests passed afterward. Final remote CI is pending; this report does not call the earlier full-suite result final-head evidence or use a focused probe as lane evidence. | - | +| REV-3b | PASS | Handoff retrieval-contract-20261002.md provides estimated 300–400 production additions; parent now reports 256 added/21 removed under src plus two checker lines, below both that budget and 1,000. The separate offline acceptance script is also within 400 total additions. Largest source addition is knowledge_docs.py. Generated 156 metadata edits, docs and eval JSON are not production-code budget. | - | + +## Public ingress matrix + +| Ingress | Actual dispatcher | Contract check | First expensive operation | Owner adapter/consumer | Production-path test/evidence | +|---|---|---|---|---|---| +| Direct MCP review(mode=direct) | `thin_mcp_server.py:review` -> `direct_routing.py:direct_review_plan` | Existing Direct metadata normalization; repository support guard and KnowledgeDocs related-path validation | `KnowledgeDocs.related` scoped file verification/read | `KnowledgeDocs.related` -> Direct related_knowledge | test_thin_mcp_server.py existing routing/budget assertions updated; no strict engine/repo resolution added | +| Python SDK plan | `sdk/v1/direct.py:DirectClient.plan` -> `direct_review_plan` | Existing typed request validation and pinned KnowledgeView | `KnowledgeDocs.related` scoped file verification/read | `DirectClient._document_ref` binds returned docs to the same view | test_sdk_v1.py:test_related_depth_reaches_sdk_with_content_addressed_refs_and_read_budget; existing read_document context binding retained | +| Agent review and ensemble lens | `runner.py:run_agent_step`; `ensemble.py:run_agent_step_ensemble` reuses runner | Existing diff_signals parser; briefing ablation; no retrieval policy duplicated in caller | `doc_related` -> `KnowledgeDocs.related` file read | `AgentDispatchContext.briefing` -> first model prompt | test_agent_runtime.py positive/negative/ablation prompt test; ensemble passes identical evidence into runner | +| Explicit agent doc_related | `knowledge.py:_repo_docs_tool` closure | KnowledgeDocsError produces visible refused response; selected repo scope only | `KnowledgeDocs.related` file read | `knowledge.py:doc_related` JSON response | test_knowledge_retrieval.py scope/input tests; explicit doc_read/search remain available | +| Knowledge init | `init_knowledge.py:_Knowledge._build` | Existing reviewed policy loader and explanatory page check | `knowledge_coverage.py:feature_metadata` Page parsing | `init_stages.py:_Stage._conclude` publication delta | Code inspection: canonical writer runs after generated knowledge, preserving bodies | +| Knowledge deepen init/resume | `init_knowledge_depth.py:_KnowledgeDepth._build` | Existing accepted checkpoint digest and upstream source proofs checked before rendering hints | `knowledge_depth.py:verified_blocks` proof validation | `knowledge_coverage.py:feature_metadata` -> `init_stages.py:_Stage._conclude` publication delta | test_kb_knowledge_depth.py accepted page hints and resume assertions; no accepted body/digest mutation | +| Offline acceptance CLI | `tools/audit_review_retrieval.py:main` | Reviewed policy, report destination outside product KB, verified KnowledgeView | `direct_routing.py:direct_review_plan` for two probes per feature | `audit_review_retrieval.py:main` JSON report plus nonzero exit on delivery failure | Code inspection; report clearly separates catalog delivery from real PR recall/RQS | + +## Producer-consumer trace + +| Value or contract | Producer | Transformations | Final consumer | Stop/failure owner | Evidence | +|---|---|---|---|---|---| +| Retrieval identity/paths/globs | Feature policy | feature_metadata edits only YAML fields | KnowledgeDocs.related matching | Policy loader/explanatory type guard | Read-only baseline comparison: all 156 changed JiuwenSwarm pages have identical bodies after frontmatter | +| Depth prose/proof | render_block / accepted checkpoint | depth_sections checks body digest, duplicate facet, safe relative evidence path, span shape and 64-hex evidence digest; visible_text hides proof | Direct plan / SDK / agent prompt | depth_sections rejects malformed shape; init/audit owns upstream source verification | Re-review in-memory valid control and four malformed proofs with correct enclosing body hashes all behaved correctly | +| Context excerpt/bounds | KnowledgeDocs.related | Feature ranking/dedup; at most two 3,000-character documents | related_knowledge and fenced briefing | KnowledgeDocs.related | test_knowledge_retrieval.py large depth, whole-block selection and bounds cases | +| Navigation allowance | Related documents more_available | Direct adds one read per returned incomplete document | execution_budget and navigation_policy.related_document_read_paths | Direct plan provider | SDK/MCP budget assertions updated; no unconstrained index walk introduced | +| Snapshot/reference | KnowledgeView | verify callback before files; _document_ref uses the same view | SDK read_document(review_context_id=...) | KnowledgeView/SDK existing context owner | Existing immutable context read implementation retained; reader tamper probe test supplied | +| Knowledge trust boundary | Curated explanatory prose at source pins | JSON encoding and tag escaping; missing_facets explicit | Review background, never hard-rule routing | Reviewer must verify PR head | runner.py untrusted_data wrapper; workflow/spec updates say missing facets are unknown | + +## Source-consumer decision matrix + +| Source | Consumer scope / dispatcher | Decision | Conflicts with | Production-path evidence | +|---|---|---|---|---| +| Policy entry points and source globs | Direct/SDK/Agent explanatory context | ROUTE | Multiple hints are relevance signals, not conflicting user values; exact pinned source > entry > glob | One KnowledgeDocs.related scoring implementation | +| Frontmatter sources in old pages | Same explanatory context | ROUTE | Coexists with policy hints; stronger exact source match; no migration prerequisite | test_old_explanatory_pages_use_pinned_sources_without_new_metadata | +| PR title/body/diff | Same explanatory context | ROUTE | Complements paths; no effect on hard-rule owner route selection | direct_review_plan passes joined query; runner uses same related owner | +| Valid depth plus basic feature page | Feature-scoped result | ROUTE | Feature dedup selects depth; overview boosts feature rank without hiding depth | test_stronger_overview_match_cannot_hide_intact_feature_depth | +| General, other repo, rules and structural cards | Automatic explanatory injection | NOT_APPLICABLE | Explicit doc_read/search retain their separate scope/contract | Scoped repo enumeration and early kb:file exclusion | +| Edited/duplicate/malformed proof | Checked depth facets | NOT_APPLICABLE | Invalid blocks do not become checked depth; missing/bad sha and absolute/traversing source paths are rejected | Resolved F1: lifecycle.py:depth_sections plus related-consumer regressions | +| profile_briefing_enabled=false | Automatic agent injection | DEFAULT | Existing ablation disables automatic background; explicit tools remain callable | Agent positive/negative/disabled test | +| Accepted checkpoint text vs rendered hints | Deepen publication | ROUTE | Accepted digest binds original checkpoint; metadata rendering happens after proof check | _KnowledgeDepth._build accepted_sha256 check precedes feature_metadata | +| All-rejected depth extraction | Deepen publication | NOT_APPLICABLE | accepted=false avoids metadata-only output; existing empty-stage contract retained | _KnowledgeDepth._build guard around hints | + +## Subtraction audit + +subtraction_signal=triggered. + +### Scope ledger + +| Behavior / production file / test group | Authorized goal or current RFC slice | KEEP / DELETE / DEFER | Evidence | +|---|---|---|---| +| Deterministic related retrieval and shared depth reader | User: improve retrieval; expose existing knowledge to review | KEEP | knowledge_docs.py, lifecycle.py; no model call/provider/index service | +| Direct field plus SDK references plus agent injection/tool | Existing review consumers need the same explanatory context | KEEP | Three actual entry chains above; no second retrieval owner | +| Canonical feature metadata and 156 header migration | User: update init workflow and use existing feature KB | KEEP | feature_metadata reused by knowledge and knowledge-deepen; exact body preservation verified | +| Specs, skills, Cursor instructions, playbook acceptance | User: update workflow | KEEP | Explain bounded retrieval, source pins, missing facets and offline delivery acceptance | +| Regression tests and offline eval tool/reports | Measured retrieval acceptance | KEEP | Tests map to scope, snapshots, bounds and consumer delivery; reports stay under eval | +| Checker heading-ID compatibility and two integration regressions | Required independent review can enumerate the existing stable owner IDs | KEEP | check_review_report.py retains bold/table syntax, adds heading syntax and still rejects duplicate definitions | +| New embedding/provider/extraction, persistent cache or hard-rule route | Not part of current slice | DEFER | None added in the diff; existing rules/route registry unchanged | + +### Abstraction census and minimal design + +Current census: one retrieval method KnowledgeDocs.related; one canonical safe_source_path predicate shared with the existing init/audit safe_path alias; one depth format parser and shared constants; one policy-to-frontmatter writer; one tool closure; one additive SDK dictionary field/reference projection; one Direct followup budget projection; one agent untrusted renderer; one offline acceptance CLI. Existing init/audit proof verification remains the owner of upstream reads. + +Minimal owner design: feature policy writes canonical hints; KnowledgeDocs owns scoped reading, validity projection, ranking and bounded text once; Direct consumes that result, SDK attaches its existing DocumentRef, and Agent encodes it for its existing briefing. Init/audit retains upstream verification. This explanation needs no repair timeline. + +### Item ledger + +| Current abstraction | KEEP / INLINE / MERGE / MOVE / DELETE | Code anchor | Survival proof or removal | +|---|---|---|---| +| Related selection/ranking/excerpt | KEEP | knowledge_docs.py:KnowledgeDocs.related | All three consumers need the exact same semantics; no duplicate ranker | +| Relative source path predicate | MERGE | lifecycle.py:safe_source_path; knowledge_depth.py:safe_path; knowledge_docs.py:_source_path | Canonical shape policy owns retrieval and evidence paths; compatibility aliases preserve the existing callable | +| Depth format constants/parser | KEEP | lifecycle.py:DEPTH_BLOCK/DEPTH_FACETS/depth_sections | KB proof implementation aliases canonical format; no copied regex/facet set | +| Policy metadata writer | KEEP | knowledge_coverage.py:feature_metadata | Two init stages plus current migration share one producer; preserves body | +| SDK related reference projection | KEEP | sdk/v1/direct.py:DirectClient.plan | Uses existing DocumentRef and frozen read contract; representation differs from MCP dictionary | +| Direct followup projection | KEEP | direct_routing.py:direct_review_plan | Caller owns review budget, retrieval owner owns truncation; no second truncation/default | +| Agent JSON tool/rendering | KEEP | knowledge.py:_repo_docs_tool; runner.py:run_agent_step | Tool and prompt are two existing consumer representations; same related result | +| Offline acceptance CLI | KEEP | tools/audit_review_retrieval.py:main | Measures current public Direct behavior; no runtime cache/background scheduler | +| Stable-rule definition format extension | KEEP | check_review_report.py:RULE_DEFINITION_RE | Existing general/review/rules.md uses heading IDs; two-line extension preserves old definitions and duplicate checks | + +### Net result + +Scope subtraction: zero removals required; every retained behavior/file/test maps to requested retrieval/workflow scope. Architecture subtraction: zero further safe deletions identified; the format constants and path predicate were merged into their shared owner and consumers reuse one selection implementation. The final fix deletes the former standalone knowledge_depth.safe_path implementation; its import alias preserves the API. Correctness F1 is not counted as subtraction. + +## Resolved finding + +F1 is closed after the entire current diff was re-reviewed. The shared depth reader now requires a 64-hex bound evidence digest and a safe relative path. The canonical safe_source_path helper is also the object exported through the former init/audit safe_path name and retrieval alias; identity was checked in the live interpreter. A valid models block remains accepted; removing its digest, replacing the digest with a non-hex value, or changing its path to absolute/traversing forms while recomputing the enclosing block hash all cause rejection. Four new regressions exercise the actual related consumer with intact enclosing hashes, so malformed proof shape is independently covered. No upstream I/O or second parser/normalizer was added. + +The checker validation boundary is closed: the two-line definition regex extension recognizes ##/### IDs alongside existing bold/table syntax. Integration regressions verify the same report succeeds with heading definitions and mixed duplicate definitions still fail. + +## Open findings + +- None. No actionable findings remain in the reviewed current diff. + +## Completion + +Correctness and design/subtraction are clean for the reviewed source diff; no new actionable finding after the F1 fix. The read-only body comparison again verified all 156 metadata pages preserve their baseline bodies exactly. This review ran no broad pytest or duplicate catalog audit. + +Parent-provided validation evidence: Python 3.12 / PyYAML 6.0.3 / pytest 9.1.1 / mcp 1.30, PYTHONPATH=src, both knowledge validators, doc links/citations and SPEC freshness passed. The frozen-tree `python -m pytest -q` passed before the final proof guard; final representative proof/depth/SDK/Agent tests and checker integration tests passed after it. Final whole-tree CI remains pending and belongs to the publisher; the earlier full-suite result is not claimed to cover subsequent changes. + +The inspected refreshed acceptance report records description+paths 79/79 feature hits and 77/77 available depth hits, paths-only 77/79 feature hits and 75/77 depth hits (ttse and worktree ambiguous), maximum 5,571 content characters and median 1,962 ms. Its knowledge tree hash is ceed356ae274258689ddff368713fa6d60314e41e1e523dcc8f125b5119f48f0 and policy hash c23eefb5057bfdff6a7be55cd663b5e9dc636cc2d76741b39d875088a8216661. The publisher is refreshing the identical corpus after the proof guard to record final provenance; this review does not wait for that run or remote CI. Catalog delivery is distinct from real PR recall/RQS, which remains unmeasured. + +OWNER RULE COVERAGE: knowledge/general/review/rules.md: 7/7 stable IDs inventoried — 7 pass / 0 fail / 0 missing evidence / 0 not applicable +SUBTRACTION VERDICT: PASS — all retained scope has a concrete consumer; one retrieval, metadata, format and source-path owner; compatibility aliases retain existing public calls +CORRECTNESS VERDICT: PASS — F1 resolved; current complete source diff has no actionable findings; final full-tree CI remains an explicit publisher verification boundary +AUDITS RUN: coverage,ingress,producer-consumer,source-consumer,duplication,layering,edge-cases,surface-area — 0 findings (0 P0, 0 P1, 0 P2) diff --git a/integrations/cursor/imreview.md b/integrations/cursor/imreview.md index 814a3b8bc..cb97dd05e 100644 --- a/integrations/cursor/imreview.md +++ b/integrations/cursor/imreview.md @@ -7,7 +7,11 @@ mergeability, and any early findings in the host conversation before reading knowledge, searching source, or running tests. Within 60 seconds, do this. Then call `review` once with `mode="direct"` plus `title`, `body`, and `changed_files`. Use the embedded -`quick_map` in each returned `knowledge_routes` item. Do not open the full route +`quick_map` in each returned `knowledge_routes` item and the bounded prose in +`related_knowledge`. Verify source-pinned claims at the PR head; missing facets +remain unknown and inferred tradeoffs are background. Use only budgeted +`navigation_policy.related_document_read_paths` to read incomplete excerpts. +Do not open the full route file unless a concrete ambiguity blocks source review, and do not walk `AGENTS.md`, `CLAUDE.md`, repository indexes, or model catalogs. Inspect the target at the pinned head SHA and return only evidence-backed findings with diff --git a/knowledge/AGENTS.md b/knowledge/AGENTS.md index 4ddcb7cec..d57b32dcc 100644 --- a/knowledge/AGENTS.md +++ b/knowledge/AGENTS.md @@ -13,7 +13,7 @@ Before adding or moving knowledge, read the short `doc/knowledge/CONTRIBUTING.md Before committing or pushing, follow the target repository's own Git and identity rules. Do not inherit a commit identity, SSH host, remote, DCO requirement, or PR format from an unrelated repository entry. -Any PR review, including a request containing only a PR link, must follow the single-review Direct routing in `CLAUDE.md`. The host resolves the pinned diff and metadata once, reports snapshot status before reading knowledge, then passes title/body/changed files to Direct and uses only the compact `quick_map` embedded in each returned exact owner/model route. Open a full route file only when one concrete ambiguity blocks source review, and follow the returned docs/code `execution_budget`; extend it once only for a stated unresolved P1/high-risk contract. Do not reopen this file, `CLAUDE.md`, repo indexes, or model catalogs after exact routes are returned. Reuse one evidence packet for correctness and design/subtraction checks. Do not start a second generic review or publish separate review comments. A bounded specialist is allowed only for a novel, contradictory, or still-uncovered high-risk contract; it extends the same evidence packet and returns to the host for one consolidated comment. +Any PR review, including a request containing only a PR link, must follow the single-review Direct routing in `CLAUDE.md`. The host resolves the pinned diff and metadata once, reports snapshot status before reading knowledge, then passes title/body/changed files to Direct and uses the compact `quick_map` embedded in each returned exact owner/model route plus bounded `related_knowledge` prose. Verify its source-pinned claims at the PR head; missing facets remain unknown and inferred tradeoffs are background. Read incomplete excerpts only through the budgeted `navigation_policy.related_document_read_paths`. Open a full route file only when one concrete ambiguity blocks source review, and follow the returned docs/code `execution_budget`; extend it once only for a stated unresolved P1/high-risk contract. Do not reopen this file, `CLAUDE.md`, repo indexes, or model catalogs after exact routes are returned. Reuse one evidence packet for correctness and design/subtraction checks. Do not start a second generic review or publish separate review comments. A bounded specialist is allowed only for a novel, contradictory, or still-uncovered high-risk contract; it extends the same evidence packet and returns to the host for one consolidated comment. After pinning the snapshot, finish the first host progress update before starting knowledge/source and validation tracks. Then run those independent tracks concurrently. Reuse one in-review packet for files, bounded `rg` searches, callers, tests, repo-map, routing, and findings. Before pytest, run a short import/version compatibility preflight; bind validation evidence to the head SHA and an environment fingerprint, and reuse an environment only when its dependency fingerprint matches. diff --git a/knowledge/CLAUDE.md b/knowledge/CLAUDE.md index f58e8e06b..85d0383c0 100644 --- a/knowledge/CLAUDE.md +++ b/knowledge/CLAUDE.md @@ -19,7 +19,7 @@ ### Direct PR review 单次路由 -默认 Direct review 只执行一篇 Codex 审查。先固定 base/head,再一次性获取 PR title/body、changed files、diff、mergeability 和 CI;元数据返回后先在宿主对话发进度,再把 title/body/changed files 一次传给 Direct。使用返回的至多 3 个精确 owner/model `knowledge_routes` 内嵌 `quick_map`,随后停止知识导航;只有一个具体歧义阻塞源码审查时才打开对应完整规则文件,不得再从 `AGENTS.md`、本页、repo index 或 model catalog 逐层展开。执行返回的 docs/code `execution_budget`;只有明确未解决的 P1/高风险合同可追加一次有界调查。changed files 只校验并补全真实范围。把已读文件、caller 搜索、测试结果和 findings 放进同一份证据包,correctness 与 design/subtraction 在这次审查中共用,不能各自重新导航或重复采集。 +默认 Direct review 只执行一篇 Codex 审查。先固定 base/head,再一次性获取 PR title/body、changed files、diff、mergeability 和 CI;元数据返回后先在宿主对话发进度,再把 title/body/changed files 一次传给 Direct。使用返回的至多 3 个精确 owner/model `knowledge_routes` 内嵌 `quick_map` 和有界的 `related_knowledge` 正文,随后停止索引导航;背景声明须核对来源 pin 与 PR head,缺失维度保留为未知,截断页只沿预算内的 `related_document_read_paths` 读取;只有一个具体歧义阻塞源码审查时才打开对应完整规则文件,不得再从 `AGENTS.md`、本页、repo index 或 model catalog 逐层展开。执行返回的 docs/code `execution_budget`;只有明确未解决的 P1/高风险合同可追加一次有界调查。changed files 只校验并补全真实范围。把已读文件、caller 搜索、测试结果和 findings 放进同一份证据包,correctness 与 design/subtraction 在这次审查中共用,不能各自重新导航或重复采集。 固定快照后先完成状态轨并发出宿主进度;不要让知识读取、源码搜索或测试挡住这条消息。随后知识/源码轨与验证轨并行:前者只读 Direct 返回的精确规则和命中源码,后者先做简短 import/version 兼容性预检,通过后运行目标测试与低成本静态检查。全程只维护当前审查的一份证据包,复用文件、限定目录/glob/输出量的 `rg`、caller、测试、repo-map、知识路由和 findings;不为 Direct 新建持久缓存或调度服务。 diff --git a/knowledge/general/review/guides/review-execution-contract.md b/knowledge/general/review/guides/review-execution-contract.md index f3ce6201d..a4b677e1c 100644 --- a/knowledge/general/review/guides/review-execution-contract.md +++ b/knowledge/general/review/guides/review-execution-contract.md @@ -1,7 +1,7 @@ --- title: "独立审查执行合同" created: 2026-07-13 -updated: 2026-09-02 +updated: 2026-10-02 type: guide tags: [general, review] sources: ["InferMatrixCopilot Issue #17", "InferMatrixCopilot Issue #24", "vllm-project/vllm-omni PR #5871", "zuiho-kai/claude-workflow-starter@c217fc6"] @@ -13,7 +13,7 @@ sources: ["InferMatrixCopilot Issue #17", "InferMatrixCopilot Issue #24", "vllm- ## 单次输入与简明检查单 -主审查只采集一次 `{base_sha, head_sha, PR title/body, changed files, diff, mergeability, CI}`。元数据返回后先发宿主进度,再把 title/body/changed files 一次传给 Direct;使用返回的至多 3 个精确 owner/model `knowledge_routes` 内嵌 `quick_map`,只有具体歧义阻塞源码审查时才打开完整规则文件,不得从总入口和索引重新导航。changed files 只验证和补全范围;PR 描述只负责导航,不能作为 finding 证据。 +主审查只采集一次 `{base_sha, head_sha, PR title/body, changed files, diff, mergeability, CI}`。元数据返回后先发宿主进度,再把 title/body/changed files 一次传给 Direct;使用返回的至多 3 个精确 owner/model `knowledge_routes` 内嵌 `quick_map`,同时消费 `related_knowledge` 中有界的解释性正文,核对来源 pin 与 PR head,缺失维度保留为未知。截断背景只沿预算内的 `related_document_read_paths` 读取。只有具体歧义阻塞源码审查时才打开完整规则文件,不得从总入口和索引重新导航。changed files 只验证和补全范围;PR 描述只负责导航,不能作为 finding 证据。 同一份证据包持续追加已读文件、caller 搜索、测试结果和 findings,后续步骤必须复用,不能重新抓取或重复调查。第一次 Codex review 使用这份简明检查单: diff --git a/knowledge/repos/jiuwenswarm/components/a2ui/feature-a2ui.md b/knowledge/repos/jiuwenswarm/components/a2ui/feature-a2ui.md index 53a76a662..232f37749 100644 --- a/knowledge/repos/jiuwenswarm/components/a2ui/feature-a2ui.md +++ b/knowledge/repos/jiuwenswarm/components/a2ui/feature-a2ui.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/a2ui/runtime/finalizer.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/A2UI.md +feature: "a2ui" +entry_points: ["jiuwenswarm/server/runtime/a2ui/runtime/finalizer.py"] +source_globs: ["jiuwenswarm/server/runtime/a2ui/runtime/finalizer.py", "jiuwenswarm/server/runtime/a2ui/*"] --- # A2UI 生成式界面 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/a2ui/feature-depth-a2ui.md b/knowledge/repos/jiuwenswarm/components/a2ui/feature-depth-a2ui.md index 5609e7a30..91e488c8b 100644 --- a/knowledge/repos/jiuwenswarm/components/a2ui/feature-depth-a2ui.md +++ b/knowledge/repos/jiuwenswarm/components/a2ui/feature-depth-a2ui.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/control/a2ui_config.py:L39-L69, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:tests/system_tests/test_a2ui_system_flow.py:L42-L100, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:tests/unit_tests/a2ui/test_integration_bridge.py:L26-L32, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:tests/unit_tests/a2ui/test_integration_bridge.py:L93-L109] +feature: "a2ui" +entry_points: ["jiuwenswarm/server/runtime/a2ui/runtime/finalizer.py"] +source_globs: ["jiuwenswarm/server/runtime/a2ui/runtime/finalizer.py", "jiuwenswarm/server/runtime/a2ui/*"] --- # A2UI 生成式界面:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/agent-runtime/feature-depth-projects-sessions.md b/knowledge/repos/jiuwenswarm/components/agent-runtime/feature-depth-projects-sessions.md index e71964dc8..93d54f01f 100644 --- a/knowledge/repos/jiuwenswarm/components/agent-runtime/feature-depth-projects-sessions.md +++ b/knowledge/repos/jiuwenswarm/components/agent-runtime/feature-depth-projects-sessions.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/runtime/session_catalog.py:L230-L281, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/runtime/session_catalog.py:L162-L188, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/runtime/session_catalog.py:L156-L159, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/mode_matrix.py:L309-L326, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/runtime/session_catalog.py:L119-L131, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/runtime/session_catalog.py:L1-L19, "openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/项目与会话管理.md:L130-L149", openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:tests/system_tests/test_process_cli_session_runtime_live.py:L78-L142, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:tests/system_tests/test_process_cli_session_runtime_live.py:L24-L31, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/runtime/session_catalog.py:L94-L98] +feature: "projects-sessions" +entry_points: ["jiuwenswarm/runtime/session_catalog.py", "jiuwenswarm/runtime/session_lifecycle.py"] +source_globs: ["jiuwenswarm/runtime/session_catalog.py", "jiuwenswarm/runtime/session_lifecycle.py", "jiuwenswarm/runtime/session*.py"] --- # 项目、会话与历史管理:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/agent-runtime/feature-projects-sessions.md b/knowledge/repos/jiuwenswarm/components/agent-runtime/feature-projects-sessions.md index ff163c787..7bc61061c 100644 --- a/knowledge/repos/jiuwenswarm/components/agent-runtime/feature-projects-sessions.md +++ b/knowledge/repos/jiuwenswarm/components/agent-runtime/feature-projects-sessions.md @@ -9,6 +9,9 @@ sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/runtime/session_catalog.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/runtime/session_lifecycle.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/项目与会话管理.md +feature: "projects-sessions" +entry_points: ["jiuwenswarm/runtime/session_catalog.py", "jiuwenswarm/runtime/session_lifecycle.py"] +source_globs: ["jiuwenswarm/runtime/session_catalog.py", "jiuwenswarm/runtime/session_lifecycle.py", "jiuwenswarm/runtime/session*.py"] --- # 项目、会话与历史管理 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-coding-memory.md b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-coding-memory.md index c46555046..139156821 100644 --- a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-coding-memory.md +++ b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-coding-memory.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/agent_adapter/interface_code.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/编码记忆.md +feature: "coding-memory" +entry_points: ["jiuwenswarm/server/runtime/agent_adapter/interface_code.py"] +source_globs: ["jiuwenswarm/server/runtime/agent_adapter/interface_code.py", "jiuwenswarm/agents/harness/code/*"] --- # Code 模式编码记忆 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-context.md b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-context.md index 6b15120db..fe2493dc5 100644 --- a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-context.md +++ b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-context.md @@ -9,6 +9,9 @@ sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/agent_adapter/compact_partial_prompts.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/agent_adapter/interface_deep.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/上下文压缩.md +feature: "context" +entry_points: ["jiuwenswarm/server/runtime/agent_adapter/compact_partial_prompts.py", "jiuwenswarm/server/runtime/agent_adapter/interface_deep.py"] +source_globs: ["jiuwenswarm/server/runtime/agent_adapter/compact_partial_prompts.py", "jiuwenswarm/server/runtime/agent_adapter/interface_deep.py", "jiuwenswarm/agents/harness/common/*"] --- # 上下文压缩与卸载 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-coding-memory.md b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-coding-memory.md index 1043772c5..752de2dfa 100644 --- a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-coding-memory.md +++ b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-coding-memory.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/agent_adapter/interface_code.py:L1697-L1739, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/agent_adapter/interface_code.py:L426-L465, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/agent_adapter/interface_code.py:L414-L423, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/memory/config.py:L250-L281, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/agent_adapter/interface_code.py:L156-L198] +feature: "coding-memory" +entry_points: ["jiuwenswarm/server/runtime/agent_adapter/interface_code.py"] +source_globs: ["jiuwenswarm/server/runtime/agent_adapter/interface_code.py", "jiuwenswarm/agents/harness/code/*"] --- # Code 模式编码记忆:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-context.md b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-context.md index 8125625f9..e387d75a9 100644 --- a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-context.md +++ b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-context.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:tests/unit_tests/agentserver/test_agentserver_modes.py:L48-L138, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:tests/unit_tests/agentserver/test_agentserver_modes.py:L141-L170] +feature: "context" +entry_points: ["jiuwenswarm/server/runtime/agent_adapter/compact_partial_prompts.py", "jiuwenswarm/server/runtime/agent_adapter/interface_deep.py"] +source_globs: ["jiuwenswarm/server/runtime/agent_adapter/compact_partial_prompts.py", "jiuwenswarm/server/runtime/agent_adapter/interface_deep.py", "jiuwenswarm/agents/harness/common/*"] --- # 上下文压缩与卸载:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-harness.md b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-harness.md index f47c1bda8..5b2296255 100644 --- a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-harness.md +++ b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-harness.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/agent_adapter/interface_deep.py:L4363-L4374, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/agent_adapter/interface_deep.py:L4756-L4777, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/agent_adapter/interface_deep.py:L9561-L9568, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:tests/unit_tests/agentserver/test_agentserver_modes.py:L141-L170, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:tests/unit_tests/test_app_agentserver.py:L57-L104] +feature: "harness" +entry_points: ["jiuwenswarm/server/runtime/agent_adapter/interface_deep.py"] +source_globs: ["jiuwenswarm/server/runtime/agent_adapter/interface_deep.py", "jiuwenswarm/agents/harness/common/rails/*"] --- # Agent Loop 与 Rail 装配:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-heartbeat.md b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-heartbeat.md index 4cb27c772..817a0c2a7 100644 --- a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-heartbeat.md +++ b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-heartbeat.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/heartbeat/proxy.py:L25-L66, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/code/rails/heartbeat/controller.py:L71-L80, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/code/rails/heartbeat/controller.py:L278-L380] +feature: "heartbeat" +entry_points: ["jiuwenswarm/agents/harness/code/rails/heartbeat/models.py", "jiuwenswarm/agents/harness/code/rails/heartbeat/controller.py", "jiuwenswarm/gateway/heartbeat/proxy.py"] +source_globs: ["jiuwenswarm/agents/harness/code/rails/heartbeat/models.py", "jiuwenswarm/agents/harness/code/rails/heartbeat/controller.py", "jiuwenswarm/gateway/heartbeat/proxy.py"] --- # 绑定会话的心跳续跑任务:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-lsp.md b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-lsp.md index 0811d1f07..18ef03e42 100644 --- a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-lsp.md +++ b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-lsp.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/Harness.md:L201-L204, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/agent_adapter/interface_code.py:L30-L37] +feature: "lsp" +entry_points: ["jiuwenswarm/server/runtime/agent_adapter/interface_code.py"] +source_globs: ["jiuwenswarm/server/runtime/agent_adapter/interface_code.py", "jiuwenswarm/agents/harness/common/rails/*"] --- # LSP 代码智能:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-modes.md b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-modes.md index ee43bcaf7..dd22d833a 100644 --- a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-modes.md +++ b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-modes.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/runtime/mode_catalog.py:L92-L101, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/runtime/mode_catalog.py:L21-L27, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/mode_matrix.py:L309-L326, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/mode_matrix.py:L219-L223, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:tests/unit_tests/test_plan_entry_source_contract.py:L126-L163, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:tests/unit_tests/test_plan_entry_source_contract.py:L72-L93] +feature: "modes" +entry_points: ["jiuwenswarm/runtime/mode_catalog.py", "jiuwenswarm/common/mode_matrix.py"] +source_globs: ["jiuwenswarm/runtime/mode_catalog.py", "jiuwenswarm/common/mode_matrix.py", "jiuwenswarm/server/runtime/agent_adapter/*.py"] --- # Agent、Code 与 Team 模式:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-permissions.md b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-permissions.md index 90b0b6c62..e6978837f 100644 --- a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-permissions.md +++ b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-permissions.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/rails/permissions/send_file_path_guard.py:L112-L123, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/rails/permissions/permission_interrupt_rail.py:L71-L82] +feature: "permissions" +entry_points: ["jiuwenswarm/agents/harness/common/rails/permissions/permission_interrupt_rail.py", "jiuwenswarm/agents/harness/common/rails/permissions/policy_eval.py"] +source_globs: ["jiuwenswarm/agents/harness/common/rails/permissions/permission_interrupt_rail.py", "jiuwenswarm/agents/harness/common/rails/permissions/policy_eval.py", "jiuwenswarm/server/*"] --- # 工具权限与安全治理:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-proactive-recommendation.md b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-proactive-recommendation.md index b037548ad..cef9f2803 100644 --- a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-proactive-recommendation.md +++ b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-proactive-recommendation.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/proactive_adapter.py:L393-L451, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/proactive_adapter.py:L85-L117, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/recommendation/proactive_actions.py:L235-L269, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/recommendation/proactive_engine.py:L34-L36, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/recommendation/proactive_engine.py:L78-L161, "openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/设置与频道升级迁移指南.md:L183-L188"] +feature: "proactive-recommendation" +entry_points: ["jiuwenswarm/agents/harness/common/recommendation/proactive_engine.py", "jiuwenswarm/server/runtime/proactive_adapter.py"] +source_globs: ["jiuwenswarm/agents/harness/common/recommendation/proactive_engine.py", "jiuwenswarm/server/runtime/proactive_adapter.py"] --- # 主动推荐、频率限制与主 Agent 交付:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-skill-development.md b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-skill-development.md index ca71a675d..e2eac01c3 100644 --- a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-skill-development.md +++ b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-skill-development.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/skill/skilldev/service.py:L44-L52, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/skill/skilldev/service.py:L65-L83, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/skill/skilldev/service.py:L328-L336, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/skill/skilldev/service.py:L92-L101, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/skill/skilldev/schema.py:L113-L122] +feature: "skill-development" +entry_points: ["jiuwenswarm/server/runtime/skill/skilldev/service.py", "jiuwenswarm/server/runtime/skill/skilldev/pipeline.py", "jiuwenswarm/server/runtime/skill/skilldev/deps.py", "jiuwenswarm/server/runtime/skill/skilldev/context.py"] +source_globs: ["jiuwenswarm/server/runtime/skill/skilldev/service.py", "jiuwenswarm/server/runtime/skill/skilldev/pipeline.py", "jiuwenswarm/server/runtime/skill/skilldev/deps.py", "jiuwenswarm/server/runtime/skill/skilldev/context.py"] --- # SkillDev 创建、评测与打包边界:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-ttse.md b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-ttse.md index 9cd8da0fb..599e200cc 100644 --- a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-ttse.md +++ b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-ttse.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/TTSE.md:L5-L7] +feature: "ttse" +entry_points: ["jiuwenswarm/server/runtime/agent_adapter/interface_deep.py"] +source_globs: ["jiuwenswarm/server/runtime/agent_adapter/interface_deep.py", "jiuwenswarm/agents/harness/common/*"] --- # FACT/TIP 双轨经验:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-worktree.md b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-worktree.md index 80f7ea560..1952220f9 100644 --- a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-worktree.md +++ b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-depth-worktree.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/agent_adapter/interface_code.py:L1860-L1870] +feature: "worktree" +entry_points: ["jiuwenswarm/server/runtime/agent_adapter/interface_code.py"] +source_globs: ["jiuwenswarm/server/runtime/agent_adapter/interface_code.py", "jiuwenswarm/agents/harness/common/rails/*"] --- # Worktree 隔离工作:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-harness.md b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-harness.md index 7da66ff32..978719c65 100644 --- a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-harness.md +++ b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-harness.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/agent_adapter/interface_deep.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/Harness.md +feature: "harness" +entry_points: ["jiuwenswarm/server/runtime/agent_adapter/interface_deep.py"] +source_globs: ["jiuwenswarm/server/runtime/agent_adapter/interface_deep.py", "jiuwenswarm/agents/harness/common/rails/*"] --- # Agent Loop 与 Rail 装配 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-heartbeat.md b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-heartbeat.md index 991319289..c593c4a84 100644 --- a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-heartbeat.md +++ b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-heartbeat.md @@ -11,6 +11,9 @@ sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/heartbeat/proxy.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/项目与会话管理.md - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/AGENTS.md +feature: "heartbeat" +entry_points: ["jiuwenswarm/agents/harness/code/rails/heartbeat/models.py", "jiuwenswarm/agents/harness/code/rails/heartbeat/controller.py", "jiuwenswarm/gateway/heartbeat/proxy.py"] +source_globs: ["jiuwenswarm/agents/harness/code/rails/heartbeat/models.py", "jiuwenswarm/agents/harness/code/rails/heartbeat/controller.py", "jiuwenswarm/gateway/heartbeat/proxy.py"] --- # 绑定会话的心跳续跑任务的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-lsp.md b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-lsp.md index 962db88a9..a26f8a3db 100644 --- a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-lsp.md +++ b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-lsp.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/agent_adapter/interface_code.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/Harness.md +feature: "lsp" +entry_points: ["jiuwenswarm/server/runtime/agent_adapter/interface_code.py"] +source_globs: ["jiuwenswarm/server/runtime/agent_adapter/interface_code.py", "jiuwenswarm/agents/harness/common/rails/*"] --- # LSP 代码智能 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-modes.md b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-modes.md index 3cb7a7279..b0b66ad49 100644 --- a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-modes.md +++ b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-modes.md @@ -9,6 +9,9 @@ sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/runtime/mode_catalog.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/mode_matrix.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/模式系统.md +feature: "modes" +entry_points: ["jiuwenswarm/runtime/mode_catalog.py", "jiuwenswarm/common/mode_matrix.py"] +source_globs: ["jiuwenswarm/runtime/mode_catalog.py", "jiuwenswarm/common/mode_matrix.py", "jiuwenswarm/server/runtime/agent_adapter/*.py"] --- # Agent、Code 与 Team 模式 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-permissions.md b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-permissions.md index c94238448..0ce225307 100644 --- a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-permissions.md +++ b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-permissions.md @@ -9,6 +9,9 @@ sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/rails/permissions/permission_interrupt_rail.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/rails/permissions/policy_eval.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/工具权限与安全防护.md +feature: "permissions" +entry_points: ["jiuwenswarm/agents/harness/common/rails/permissions/permission_interrupt_rail.py", "jiuwenswarm/agents/harness/common/rails/permissions/policy_eval.py"] +source_globs: ["jiuwenswarm/agents/harness/common/rails/permissions/permission_interrupt_rail.py", "jiuwenswarm/agents/harness/common/rails/permissions/policy_eval.py", "jiuwenswarm/server/*"] --- # 工具权限与安全治理 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-proactive-recommendation.md b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-proactive-recommendation.md index 03ea259ae..f289dab67 100644 --- a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-proactive-recommendation.md +++ b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-proactive-recommendation.md @@ -9,6 +9,9 @@ sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/recommendation/proactive_engine.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/proactive_adapter.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/设置与频道升级迁移指南.md +feature: "proactive-recommendation" +entry_points: ["jiuwenswarm/agents/harness/common/recommendation/proactive_engine.py", "jiuwenswarm/server/runtime/proactive_adapter.py"] +source_globs: ["jiuwenswarm/agents/harness/common/recommendation/proactive_engine.py", "jiuwenswarm/server/runtime/proactive_adapter.py"] --- # 主动推荐、频率限制与主 Agent 交付的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-skill-development.md b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-skill-development.md index 89f3f9fa1..6086fc4e8 100644 --- a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-skill-development.md +++ b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-skill-development.md @@ -11,6 +11,9 @@ sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/skill/skilldev/deps.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/skill/skilldev/context.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/skill/skilldev/DESIGN.md +feature: "skill-development" +entry_points: ["jiuwenswarm/server/runtime/skill/skilldev/service.py", "jiuwenswarm/server/runtime/skill/skilldev/pipeline.py", "jiuwenswarm/server/runtime/skill/skilldev/deps.py", "jiuwenswarm/server/runtime/skill/skilldev/context.py"] +source_globs: ["jiuwenswarm/server/runtime/skill/skilldev/service.py", "jiuwenswarm/server/runtime/skill/skilldev/pipeline.py", "jiuwenswarm/server/runtime/skill/skilldev/deps.py", "jiuwenswarm/server/runtime/skill/skilldev/context.py"] --- # SkillDev 创建、评测与打包边界的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-skill-evolution.md b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-skill-evolution.md index 7bb169e2b..6f900ee80 100644 --- a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-skill-evolution.md +++ b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-skill-evolution.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/agent_adapter/evolution_helpers.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/Skill自演进.md +feature: "skill-evolution" +entry_points: ["jiuwenswarm/server/runtime/agent_adapter/evolution_helpers.py"] +source_globs: ["jiuwenswarm/server/runtime/agent_adapter/evolution_helpers.py", "jiuwenswarm/agents/harness/common/rails/*"] --- # Skill 自演进 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-ttse.md b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-ttse.md index aafd73669..f90744a6c 100644 --- a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-ttse.md +++ b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-ttse.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/agent_adapter/interface_deep.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/TTSE.md +feature: "ttse" +entry_points: ["jiuwenswarm/server/runtime/agent_adapter/interface_deep.py"] +source_globs: ["jiuwenswarm/server/runtime/agent_adapter/interface_deep.py", "jiuwenswarm/agents/harness/common/*"] --- # FACT/TIP 双轨经验 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-worktree.md b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-worktree.md index 5e2e068f7..7b8e921e0 100644 --- a/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-worktree.md +++ b/knowledge/repos/jiuwenswarm/components/agent-server-runtime/feature-worktree.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/agent_adapter/interface_code.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/Harness.md +feature: "worktree" +entry_points: ["jiuwenswarm/server/runtime/agent_adapter/interface_code.py"] +source_globs: ["jiuwenswarm/server/runtime/agent_adapter/interface_code.py", "jiuwenswarm/agents/harness/common/rails/*"] --- # Worktree 隔离工作 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/agents-team/feature-auto-memory.md b/knowledge/repos/jiuwenswarm/components/agents-team/feature-auto-memory.md index 9247e532e..bdc5c59cb 100644 --- a/knowledge/repos/jiuwenswarm/components/agents-team/feature-auto-memory.md +++ b/knowledge/repos/jiuwenswarm/components/agents-team/feature-auto-memory.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/auto_memory/extraction_runner.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/自动记忆.md +feature: "auto-memory" +entry_points: ["jiuwenswarm/agents/harness/common/auto_memory/extraction_runner.py"] +source_globs: ["jiuwenswarm/agents/harness/common/auto_memory/extraction_runner.py", "jiuwenswarm/agents/harness/common/auto_memory/*"] --- # 对话后自动记忆 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/agents-team/feature-browser-tools.md b/knowledge/repos/jiuwenswarm/components/agents-team/feature-browser-tools.md index 5a8b68ed5..89ec183bb 100644 --- a/knowledge/repos/jiuwenswarm/components/agents-team/feature-browser-tools.md +++ b/knowledge/repos/jiuwenswarm/components/agents-team/feature-browser-tools.md @@ -9,6 +9,9 @@ sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/swarm/browser_runtime.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/browser_config.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/浏览器.md +feature: "browser-tools" +entry_points: ["jiuwenswarm/agents/swarm/browser_runtime.py", "jiuwenswarm/agents/harness/common/browser_config.py"] +source_globs: ["jiuwenswarm/agents/swarm/browser_runtime.py", "jiuwenswarm/agents/harness/common/browser_config.py", "jiuwenswarm/agents/harness/common/*"] --- # 浏览器服务与网页工具 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-auto-memory.md b/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-auto-memory.md index bad400be4..b4098d70b 100644 --- a/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-auto-memory.md +++ b/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-auto-memory.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: ["openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/自动记忆.md:L21-L33", "openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/自动记忆.md:L99-L105", openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/auto_memory/prompts.py:L13-L30, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/auto_memory/extraction_runner.py:L236-L242, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/auto_memory/tool_restriction_rail.py:L95-L189, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/auto_memory/extraction_runner.py:L372-L406] +feature: "auto-memory" +entry_points: ["jiuwenswarm/agents/harness/common/auto_memory/extraction_runner.py"] +source_globs: ["jiuwenswarm/agents/harness/common/auto_memory/extraction_runner.py", "jiuwenswarm/agents/harness/common/auto_memory/*"] --- # 对话后自动记忆:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-browser-tools.md b/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-browser-tools.md index 46dac9771..2a5c87c10 100644 --- a/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-browser-tools.md +++ b/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-browser-tools.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/swarm/browser_runtime.py:L26-L57, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/browser_config.py:L12-L32, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/config.py:L62-L99, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/browser_config.py:L19-L32, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/utils.py:L416-L433, "openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/浏览器.md:L99-L119", openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/playwright_mcp_runtime.py:L333-L381] +feature: "browser-tools" +entry_points: ["jiuwenswarm/agents/swarm/browser_runtime.py", "jiuwenswarm/agents/harness/common/browser_config.py"] +source_globs: ["jiuwenswarm/agents/swarm/browser_runtime.py", "jiuwenswarm/agents/harness/common/browser_config.py", "jiuwenswarm/agents/harness/common/*"] --- # 浏览器服务与网页工具:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-digital-avatar.md b/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-digital-avatar.md index 81e20667b..a6e84cb2d 100644 --- a/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-digital-avatar.md +++ b/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-digital-avatar.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/rails/avatar_rail.py:L43-L119, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/rails/permissions/owner_scopes.py:L104-L114, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/rails/avatar_rail.py:L121-L161, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/rails/avatar_rail.py:L164-L170] +feature: "digital-avatar" +entry_points: ["jiuwenswarm/agents/harness/common/rails/avatar_rail.py", "jiuwenswarm/agents/harness/common/rails/permissions/owner_scopes.py"] +source_globs: ["jiuwenswarm/agents/harness/common/rails/avatar_rail.py", "jiuwenswarm/agents/harness/common/rails/permissions/owner_scopes.py"] --- # 群聊数字分身与 owner 权限:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-distributed-team.md b/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-distributed-team.md index effffcbfc..47606d0ac 100644 --- a/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-distributed-team.md +++ b/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-distributed-team.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:tests/unit_tests/agentserver/test_distributed_runtime.py:L11-L33, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:tests/unit_tests/agentserver/test_distributed_runtime.py:L70-L104, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/team/distributed_runtime.py:L74-L81, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:tests/unit_tests/agentserver/test_distributed_runtime.py:L54-L59, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/team/distributed_runtime.py:L100-L131, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/team/distributed_runtime.py:L53-L59, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/team/distributed_runtime.py:L31-L35, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/team/distributed_runtime.py:L53-L71, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:tests/unit_tests/agentserver/test_distributed_runtime.py:L97-L104] +feature: "distributed-team" +entry_points: ["jiuwenswarm/agents/harness/team/distributed_runtime.py"] +source_globs: ["jiuwenswarm/agents/harness/team/distributed_runtime.py"] --- # 跨进程分布式 Team:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-human-team.md b/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-human-team.md index 25ffc7e86..bf330b292 100644 --- a/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-human-team.md +++ b/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-human-team.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/team/a2x/a2x_registry_runtime.py:L86-L96, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/team/a2x/a2x_registry_runtime.py:L286-L310, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/team/a2x/a2x_registry_runtime.py:L254-L283, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/team/a2x/a2x_registry_runtime.py:L311-L352, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/team/a2x/a2x_registry_runtime.py:L1-L34, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/team/a2x/a2x_registry_runtime.py:L156-L167, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/team/a2x/a2x_registry_runtime.py:L320-L352, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/observability/runtime.py:L124-L136, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/team/team_manager.py:L212-L227, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/team/team_manager.py:L141-L146] +feature: "human-team" +entry_points: ["jiuwenswarm/agents/harness/team/team_manager.py"] +source_globs: ["jiuwenswarm/agents/harness/team/team_manager.py", "jiuwenswarm/agents/harness/team/*"] --- # 人类团队成员与人工协作:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-image-generation.md b/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-image-generation.md index c8ac4bb56..836dd91c5 100644 --- a/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-image-generation.md +++ b/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-image-generation.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/tools/image_tools.py:L474-L477, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/tools/image_tools.py:L335-L350, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/tools/multimodal_config.py:L39-L49, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/tools/image_tools.py:L390-L415, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/tools/image_tools.py:L450-L467, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/tools/image_tools.py:L479-L505] +feature: "image-generation" +entry_points: ["jiuwenswarm/agents/harness/common/tools/image_tools.py", "jiuwenswarm/agents/harness/common/tools/multimodal_config.py"] +source_globs: ["jiuwenswarm/agents/harness/common/tools/image_tools.py", "jiuwenswarm/agents/harness/common/tools/multimodal_config.py"] --- # 图片生成与产物落盘:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-jiuwen-memory-sdk.md b/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-jiuwen-memory-sdk.md index dcfa72948..fbbc71bba 100644 --- a/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-jiuwen-memory-sdk.md +++ b/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-jiuwen-memory-sdk.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/memory/external_memory_builder.py:L30-L85, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/memory/external_memory_config.py:L53-L73, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/memory/config.py:L57-L76, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/memory/external_memory_builder.py:L299-L331, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/memory/external_memory_builder.py:L391-L402, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/memory/external_memory_config.py:L31-L40, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/memory/external_memory_builder.py:L431-L461, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/memory/external_memory_builder.py:L299-L388, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/memory/config.py:L79-L91, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:tests/unit_tests/agentserver/memory/test_external_memory_config.py:L117-L141, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:tests/unit_tests/agentserver/memory/test_external_memory_builder.py:L106-L133] +feature: "jiuwen-memory-sdk" +entry_points: ["jiuwenswarm/agents/harness/common/memory/external_memory_builder.py", "jiuwenswarm/agents/harness/common/memory/external_memory_config.py"] +source_globs: ["jiuwenswarm/agents/harness/common/memory/external_memory_builder.py", "jiuwenswarm/agents/harness/common/memory/external_memory_config.py"] --- # JiuwenMemory 进程内 SDK 接入:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-memory.md b/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-memory.md index 79f28e1a1..e5076c4d6 100644 --- a/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-memory.md +++ b/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-memory.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/memory/config.py:L250-L281, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/memory/config.py:L207-L247, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/memory/dreaming/sweeper.py:L51-L71] +feature: "memory" +entry_points: ["jiuwenswarm/agents/harness/common/memory/manager.py"] +source_globs: ["jiuwenswarm/agents/harness/common/memory/manager.py", "jiuwenswarm/agents/harness/common/memory/*"] --- # 长期记忆:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-multimodal.md b/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-multimodal.md index c4303dd87..395578117 100644 --- a/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-multimodal.md +++ b/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-multimodal.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/tools/multimodal_config.py:L233-L282, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/tools/multimodal_config.py:L185-L230, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/tools/image_tools.py:L89-L93] +feature: "multimodal" +entry_points: ["jiuwenswarm/agents/harness/common/tools/multimodal_config.py", "jiuwenswarm/agents/harness/common/tools/image_tools.py"] +source_globs: ["jiuwenswarm/agents/harness/common/tools/multimodal_config.py", "jiuwenswarm/agents/harness/common/tools/image_tools.py", "jiuwenswarm/agents/harness/common/tools/*"] --- # 多模态理解与媒体配置:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-planning.md b/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-planning.md index 23c877ab1..64ebe55ee 100644 --- a/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-planning.md +++ b/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-planning.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/code/rails/code_task_planning_rail.py:L86-L89, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/code/rails/code_task_planning_rail.py:L249-L261, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/code/rails/code_task_planning_rail.py:L426-L431, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/code/rails/code_task_planning_rail.py:L1-L84, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/code/rails/code_task_planning_rail.py:L91-L154, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/code/rails/code_task_planning_rail.py:L156-L169, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/code/rails/code_task_planning_rail.py:L104-L115, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/code/rails/code_task_planning_rail.py:L91-L115, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/code/rails/code_task_planning_rail.py:L234-L238] +feature: "planning" +entry_points: ["jiuwenswarm/agents/harness/code/rails/code_task_planning_rail.py"] +source_globs: ["jiuwenswarm/agents/harness/code/rails/code_task_planning_rail.py", "jiuwenswarm/agents/harness/common/*"] --- # 任务规划与 Todo:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-skill-hub.md b/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-skill-hub.md index b7502d4fa..e83433376 100644 --- a/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-skill-hub.md +++ b/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-skill-hub.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/marketplace/hub_client.py:L220-L245, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/marketplace/hub_client.py:L45-L54, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/marketplace/hub_models.py:L163-L177] +feature: "skill-hub" +entry_points: ["jiuwenswarm/server/runtime/marketplace/hub_client.py"] +source_globs: ["jiuwenswarm/server/runtime/marketplace/hub_client.py", "jiuwenswarm/server/runtime/marketplace/*"] --- # Skill Hub 与市场流通:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-skills.md b/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-skills.md index 37ac64956..69f174308 100644 --- a/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-skills.md +++ b/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-skills.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/skill/skill_manager.py:L811-L877, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/skill/archive_store.py:L1-L35, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/skill/skill_manager.py:L6331-L6343, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/skill/archive_store.py:L87-L100, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/skill/skill_manager.py:L995-L1014, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/skill/skill_manager.py:L903-L915, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/skill/skill_manager.py:L786-L809, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/utils.py:L1816-L1824] +feature: "skills" +entry_points: ["jiuwenswarm/server/runtime/skill/skill_manager.py"] +source_globs: ["jiuwenswarm/server/runtime/skill/skill_manager.py", "jiuwenswarm/server/runtime/skill/*"] --- # 技能安装、挂载与发现:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-subagents.md b/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-subagents.md index ea57a69f7..24f87d5b1 100644 --- a/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-subagents.md +++ b/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-subagents.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/swarm/providers/code_subagents.py:L111-L126, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/swarm/providers/code_subagents.py:L137-L154, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/agent_adapter/statusline_setup_agent.py:L89-L119] +feature: "subagents" +entry_points: ["jiuwenswarm/agents/swarm/providers/code_subagents.py", "jiuwenswarm/agents/harness/common/tools/subagent_compat.py"] +source_globs: ["jiuwenswarm/agents/swarm/providers/code_subagents.py", "jiuwenswarm/agents/harness/common/tools/subagent_compat.py", "jiuwenswarm/agents/harness/common/rails/*"] --- # 子代理派发与验证:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-swarm-skills.md b/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-swarm-skills.md index 56db7cd7d..1e43aae33 100644 --- a/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-swarm-skills.md +++ b/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-swarm-skills.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/swarm/providers/skills.py:L93-L115, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/swarm/providers/skills.py:L60-L90, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/swarm/assembly.py:L313-L318, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/utils.py:L1816-L1824, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/swarm/providers/skills.py:L96-L110, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/swarm/providers/skills.py:L18-L28, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/swarm/providers/skills.py:L176-L190] +feature: "swarm-skills" +entry_points: ["jiuwenswarm/agents/swarm/assembly.py", "jiuwenswarm/agents/swarm/providers/skills.py"] +source_globs: ["jiuwenswarm/agents/swarm/assembly.py", "jiuwenswarm/agents/swarm/providers/skills.py", "jiuwenswarm/agents/swarm/*"] --- # 团队技能与能力复用:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-swarmflow.md b/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-swarmflow.md index 768d92a01..71579c8aa 100644 --- a/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-swarmflow.md +++ b/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-swarmflow.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/team/handlers/workflow_state.py:L832-L847] +feature: "swarmflow" +entry_points: ["jiuwenswarm/agents/harness/team/handlers/workflow_state.py"] +source_globs: ["jiuwenswarm/agents/harness/team/handlers/workflow_state.py", "jiuwenswarm/agents/harness/team/handlers/*"] --- # SwarmFlow 工作流与 HITL:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-task-memory.md b/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-task-memory.md index a49bb4ad0..71df40c80 100644 --- a/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-task-memory.md +++ b/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-task-memory.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/tools/task_tools.py:L204-L269, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/tools/task_tools.py:L104-L194, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/config.py:L237-L244, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/tools/task_tools.py:L37-L39, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/utils.py:L1751-L1760, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/tools/task_tools.py:L150-L194, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/tools/task_tools.py:L266-L269] +feature: "task-memory" +entry_points: ["jiuwenswarm/agents/harness/common/tools/task_tools.py"] +source_globs: ["jiuwenswarm/agents/harness/common/tools/task_tools.py", "jiuwenswarm/agents/harness/common/memory/*"] --- # 任务经验检索与沉淀:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-team.md b/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-team.md index 35f391542..051ccb259 100644 --- a/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-team.md +++ b/knowledge/repos/jiuwenswarm/components/agents-team/feature-depth-team.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/team/team_manager.py:L130-L209, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/config.py:L299-L301, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/observability/config.py:L112-L154, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/team/team_manager.py:L212-L227, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/observability/runtime.py:L124-L136, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/team/team_manager.py:L178-L209, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/team/a2x/a2x_registry_runtime.py:L254-L283] +feature: "team" +entry_points: ["jiuwenswarm/agents/harness/team/team_manager.py"] +source_globs: ["jiuwenswarm/agents/harness/team/team_manager.py", "jiuwenswarm/agents/harness/team/*.py"] --- # 多智能体团队协作:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/agents-team/feature-digital-avatar.md b/knowledge/repos/jiuwenswarm/components/agents-team/feature-digital-avatar.md index e498c41e1..3b8ebdb7f 100644 --- a/knowledge/repos/jiuwenswarm/components/agents-team/feature-digital-avatar.md +++ b/knowledge/repos/jiuwenswarm/components/agents-team/feature-digital-avatar.md @@ -10,6 +10,9 @@ sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/rails/permissions/owner_scopes.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/频道.md - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/国内频道.md +feature: "digital-avatar" +entry_points: ["jiuwenswarm/agents/harness/common/rails/avatar_rail.py", "jiuwenswarm/agents/harness/common/rails/permissions/owner_scopes.py"] +source_globs: ["jiuwenswarm/agents/harness/common/rails/avatar_rail.py", "jiuwenswarm/agents/harness/common/rails/permissions/owner_scopes.py"] --- # 群聊数字分身与 owner 权限的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/agents-team/feature-distributed-team.md b/knowledge/repos/jiuwenswarm/components/agents-team/feature-distributed-team.md index 08761761c..ea30caa14 100644 --- a/knowledge/repos/jiuwenswarm/components/agents-team/feature-distributed-team.md +++ b/knowledge/repos/jiuwenswarm/components/agents-team/feature-distributed-team.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/team/distributed_runtime.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/分布式Team.md +feature: "distributed-team" +entry_points: ["jiuwenswarm/agents/harness/team/distributed_runtime.py"] +source_globs: ["jiuwenswarm/agents/harness/team/distributed_runtime.py"] --- # 跨进程分布式 Team 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/agents-team/feature-human-team.md b/knowledge/repos/jiuwenswarm/components/agents-team/feature-human-team.md index 15558bb1f..a9bea5442 100644 --- a/knowledge/repos/jiuwenswarm/components/agents-team/feature-human-team.md +++ b/knowledge/repos/jiuwenswarm/components/agents-team/feature-human-team.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/team/team_manager.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/AgentTeam人类成员联机协作.md +feature: "human-team" +entry_points: ["jiuwenswarm/agents/harness/team/team_manager.py"] +source_globs: ["jiuwenswarm/agents/harness/team/team_manager.py", "jiuwenswarm/agents/harness/team/*"] --- # 人类团队成员与人工协作 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/agents-team/feature-image-generation.md b/knowledge/repos/jiuwenswarm/components/agents-team/feature-image-generation.md index 9e856570d..710f40c04 100644 --- a/knowledge/repos/jiuwenswarm/components/agents-team/feature-image-generation.md +++ b/knowledge/repos/jiuwenswarm/components/agents-team/feature-image-generation.md @@ -9,6 +9,9 @@ sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/tools/image_tools.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/tools/multimodal_config.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/配置信息.md +feature: "image-generation" +entry_points: ["jiuwenswarm/agents/harness/common/tools/image_tools.py", "jiuwenswarm/agents/harness/common/tools/multimodal_config.py"] +source_globs: ["jiuwenswarm/agents/harness/common/tools/image_tools.py", "jiuwenswarm/agents/harness/common/tools/multimodal_config.py"] --- # 图片生成与产物落盘的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/agents-team/feature-jiuwen-memory-sdk.md b/knowledge/repos/jiuwenswarm/components/agents-team/feature-jiuwen-memory-sdk.md index 3c8465334..b21a33df3 100644 --- a/knowledge/repos/jiuwenswarm/components/agents-team/feature-jiuwen-memory-sdk.md +++ b/knowledge/repos/jiuwenswarm/components/agents-team/feature-jiuwen-memory-sdk.md @@ -9,6 +9,9 @@ sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/memory/external_memory_builder.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/memory/external_memory_config.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/JiuwenMemory-SDK接入.md +feature: "jiuwen-memory-sdk" +entry_points: ["jiuwenswarm/agents/harness/common/memory/external_memory_builder.py", "jiuwenswarm/agents/harness/common/memory/external_memory_config.py"] +source_globs: ["jiuwenswarm/agents/harness/common/memory/external_memory_builder.py", "jiuwenswarm/agents/harness/common/memory/external_memory_config.py"] --- # JiuwenMemory 进程内 SDK 接入的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/agents-team/feature-memory.md b/knowledge/repos/jiuwenswarm/components/agents-team/feature-memory.md index 7aa405f18..69c5be666 100644 --- a/knowledge/repos/jiuwenswarm/components/agents-team/feature-memory.md +++ b/knowledge/repos/jiuwenswarm/components/agents-team/feature-memory.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/memory/manager.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/记忆.md +feature: "memory" +entry_points: ["jiuwenswarm/agents/harness/common/memory/manager.py"] +source_globs: ["jiuwenswarm/agents/harness/common/memory/manager.py", "jiuwenswarm/agents/harness/common/memory/*"] --- # 长期记忆 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/agents-team/feature-multimodal.md b/knowledge/repos/jiuwenswarm/components/agents-team/feature-multimodal.md index 8d3ae4d44..042b6dfa1 100644 --- a/knowledge/repos/jiuwenswarm/components/agents-team/feature-multimodal.md +++ b/knowledge/repos/jiuwenswarm/components/agents-team/feature-multimodal.md @@ -9,6 +9,9 @@ sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/tools/multimodal_config.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/tools/image_tools.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/Harness.md +feature: "multimodal" +entry_points: ["jiuwenswarm/agents/harness/common/tools/multimodal_config.py", "jiuwenswarm/agents/harness/common/tools/image_tools.py"] +source_globs: ["jiuwenswarm/agents/harness/common/tools/multimodal_config.py", "jiuwenswarm/agents/harness/common/tools/image_tools.py", "jiuwenswarm/agents/harness/common/tools/*"] --- # 多模态理解与媒体配置 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/agents-team/feature-planning.md b/knowledge/repos/jiuwenswarm/components/agents-team/feature-planning.md index 2753382b7..54f90b64f 100644 --- a/knowledge/repos/jiuwenswarm/components/agents-team/feature-planning.md +++ b/knowledge/repos/jiuwenswarm/components/agents-team/feature-planning.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/code/rails/code_task_planning_rail.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/任务规划.md +feature: "planning" +entry_points: ["jiuwenswarm/agents/harness/code/rails/code_task_planning_rail.py"] +source_globs: ["jiuwenswarm/agents/harness/code/rails/code_task_planning_rail.py", "jiuwenswarm/agents/harness/common/*"] --- # 任务规划与 Todo 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/agents-team/feature-skill-hub.md b/knowledge/repos/jiuwenswarm/components/agents-team/feature-skill-hub.md index 8dc0147a1..ba84aea07 100644 --- a/knowledge/repos/jiuwenswarm/components/agents-team/feature-skill-hub.md +++ b/knowledge/repos/jiuwenswarm/components/agents-team/feature-skill-hub.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/marketplace/hub_client.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/技能.md +feature: "skill-hub" +entry_points: ["jiuwenswarm/server/runtime/marketplace/hub_client.py"] +source_globs: ["jiuwenswarm/server/runtime/marketplace/hub_client.py", "jiuwenswarm/server/runtime/marketplace/*"] --- # Skill Hub 与市场流通 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/agents-team/feature-skills.md b/knowledge/repos/jiuwenswarm/components/agents-team/feature-skills.md index 2609489ff..963c56bf5 100644 --- a/knowledge/repos/jiuwenswarm/components/agents-team/feature-skills.md +++ b/knowledge/repos/jiuwenswarm/components/agents-team/feature-skills.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/skill/skill_manager.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/技能.md +feature: "skills" +entry_points: ["jiuwenswarm/server/runtime/skill/skill_manager.py"] +source_globs: ["jiuwenswarm/server/runtime/skill/skill_manager.py", "jiuwenswarm/server/runtime/skill/*"] --- # 技能安装、挂载与发现 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/agents-team/feature-subagents.md b/knowledge/repos/jiuwenswarm/components/agents-team/feature-subagents.md index 8272c4c2b..fb20a13f0 100644 --- a/knowledge/repos/jiuwenswarm/components/agents-team/feature-subagents.md +++ b/knowledge/repos/jiuwenswarm/components/agents-team/feature-subagents.md @@ -9,6 +9,9 @@ sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/swarm/providers/code_subagents.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/tools/subagent_compat.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/Harness.md +feature: "subagents" +entry_points: ["jiuwenswarm/agents/swarm/providers/code_subagents.py", "jiuwenswarm/agents/harness/common/tools/subagent_compat.py"] +source_globs: ["jiuwenswarm/agents/swarm/providers/code_subagents.py", "jiuwenswarm/agents/harness/common/tools/subagent_compat.py", "jiuwenswarm/agents/harness/common/rails/*"] --- # 子代理派发与验证 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/agents-team/feature-swarm-skills.md b/knowledge/repos/jiuwenswarm/components/agents-team/feature-swarm-skills.md index 2567268b9..30933fbc0 100644 --- a/knowledge/repos/jiuwenswarm/components/agents-team/feature-swarm-skills.md +++ b/knowledge/repos/jiuwenswarm/components/agents-team/feature-swarm-skills.md @@ -9,6 +9,9 @@ sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/swarm/assembly.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/swarm/providers/skills.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/SwarmSkills.md +feature: "swarm-skills" +entry_points: ["jiuwenswarm/agents/swarm/assembly.py", "jiuwenswarm/agents/swarm/providers/skills.py"] +source_globs: ["jiuwenswarm/agents/swarm/assembly.py", "jiuwenswarm/agents/swarm/providers/skills.py", "jiuwenswarm/agents/swarm/*"] --- # 团队技能与能力复用 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/agents-team/feature-swarmflow.md b/knowledge/repos/jiuwenswarm/components/agents-team/feature-swarmflow.md index ce2b3bd45..54f9d75b7 100644 --- a/knowledge/repos/jiuwenswarm/components/agents-team/feature-swarmflow.md +++ b/knowledge/repos/jiuwenswarm/components/agents-team/feature-swarmflow.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/team/handlers/workflow_state.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/TUI使用SwarmFlow指南.md +feature: "swarmflow" +entry_points: ["jiuwenswarm/agents/harness/team/handlers/workflow_state.py"] +source_globs: ["jiuwenswarm/agents/harness/team/handlers/workflow_state.py", "jiuwenswarm/agents/harness/team/handlers/*"] --- # SwarmFlow 工作流与 HITL 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/agents-team/feature-task-memory.md b/knowledge/repos/jiuwenswarm/components/agents-team/feature-task-memory.md index 64fb804cc..a337b3ada 100644 --- a/knowledge/repos/jiuwenswarm/components/agents-team/feature-task-memory.md +++ b/knowledge/repos/jiuwenswarm/components/agents-team/feature-task-memory.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/tools/task_tools.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/经验记忆.md +feature: "task-memory" +entry_points: ["jiuwenswarm/agents/harness/common/tools/task_tools.py"] +source_globs: ["jiuwenswarm/agents/harness/common/tools/task_tools.py", "jiuwenswarm/agents/harness/common/memory/*"] --- # 任务经验检索与沉淀 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/agents-team/feature-team.md b/knowledge/repos/jiuwenswarm/components/agents-team/feature-team.md index cff96a368..bb490acdb 100644 --- a/knowledge/repos/jiuwenswarm/components/agents-team/feature-team.md +++ b/knowledge/repos/jiuwenswarm/components/agents-team/feature-team.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/team/team_manager.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/AgentTeam.md +feature: "team" +entry_points: ["jiuwenswarm/agents/harness/team/team_manager.py"] +source_globs: ["jiuwenswarm/agents/harness/team/team_manager.py", "jiuwenswarm/agents/harness/team/*.py"] --- # 多智能体团队协作 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/auto-harness/feature-auto-harness.md b/knowledge/repos/jiuwenswarm/components/auto-harness/feature-auto-harness.md index c71defca6..02739abdc 100644 --- a/knowledge/repos/jiuwenswarm/components/auto-harness/feature-auto-harness.md +++ b/knowledge/repos/jiuwenswarm/components/auto-harness/feature-auto-harness.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/auto_harness/service.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/AutoHarness.md +feature: "auto-harness" +entry_points: ["jiuwenswarm/agents/harness/common/auto_harness/service.py"] +source_globs: ["jiuwenswarm/agents/harness/common/auto_harness/service.py", "jiuwenswarm/agents/harness/common/auto_harness/*"] --- # Auto Harness 评测优化 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/auto-harness/feature-depth-auto-harness.md b/knowledge/repos/jiuwenswarm/components/auto-harness/feature-depth-auto-harness.md index 7f21bcd71..0e690e72f 100644 --- a/knowledge/repos/jiuwenswarm/components/auto-harness/feature-depth-auto-harness.md +++ b/knowledge/repos/jiuwenswarm/components/auto-harness/feature-depth-auto-harness.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/auto_harness/service.py:L961-L980, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/auto_harness/service.py:L880-L958] +feature: "auto-harness" +entry_points: ["jiuwenswarm/agents/harness/common/auto_harness/service.py"] +source_globs: ["jiuwenswarm/agents/harness/common/auto_harness/service.py", "jiuwenswarm/agents/harness/common/auto_harness/*"] --- # Auto Harness 评测优化:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/auto-harness/feature-depth-rsi-packages.md b/knowledge/repos/jiuwenswarm/components/auto-harness/feature-depth-rsi-packages.md index 0757dbdf7..47d8b6544 100644 --- a/knowledge/repos/jiuwenswarm/components/auto-harness/feature-depth-rsi-packages.md +++ b/knowledge/repos/jiuwenswarm/components/auto-harness/feature-depth-rsi-packages.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/rsi/harness_activation.py:L221-L263, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/rsi/harness_activation.py:L169-L178, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/rsi/harness_activation.py:L38-L40, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/rsi/harness_activation.py:L157-L166, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/rsi/harness_activation.py:L86-L96, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/rsi/harness_activation.py:L321-L331] +feature: "rsi-packages" +entry_points: ["jiuwenswarm/agents/harness/common/rsi/harness_activation.py"] +source_globs: ["jiuwenswarm/agents/harness/common/rsi/harness_activation.py", "jiuwenswarm/agents/harness/common/rsi/*"] --- # Harness Package 与热激活:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/auto-harness/feature-rsi-packages.md b/knowledge/repos/jiuwenswarm/components/auto-harness/feature-rsi-packages.md index 5408f29f5..7f62db7f5 100644 --- a/knowledge/repos/jiuwenswarm/components/auto-harness/feature-rsi-packages.md +++ b/knowledge/repos/jiuwenswarm/components/auto-harness/feature-rsi-packages.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/agents/harness/common/rsi/harness_activation.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/AutoHarness.md +feature: "rsi-packages" +entry_points: ["jiuwenswarm/agents/harness/common/rsi/harness_activation.py"] +source_globs: ["jiuwenswarm/agents/harness/common/rsi/harness_activation.py", "jiuwenswarm/agents/harness/common/rsi/*"] --- # Harness Package 与热激活 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/browser-client/feature-browser-client.md b/knowledge/repos/jiuwenswarm/components/browser-client/feature-browser-client.md index 617b86ed6..4238a746d 100644 --- a/knowledge/repos/jiuwenswarm/components/browser-client/feature-browser-client.md +++ b/knowledge/repos/jiuwenswarm/components/browser-client/feature-browser-client.md @@ -9,6 +9,9 @@ sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/browser/frontend/src/background/index.ts - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/browser/frontend/src/sidepanel/index.ts - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/browser-extension/浏览器扩展.md +feature: "browser-client" +entry_points: ["jiuwenswarm/channels/browser/frontend/src/background/index.ts", "jiuwenswarm/channels/browser/frontend/src/sidepanel/index.ts"] +source_globs: ["jiuwenswarm/channels/browser/frontend/src/background/index.ts", "jiuwenswarm/channels/browser/frontend/src/sidepanel/index.ts", "jiuwenswarm/channels/browser/frontend/src/*"] --- # Chromium 浏览器扩展 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/browser-client/feature-depth-browser-client.md b/knowledge/repos/jiuwenswarm/components/browser-client/feature-depth-browser-client.md index a5e6ebee9..2b22990ad 100644 --- a/knowledge/repos/jiuwenswarm/components/browser-client/feature-depth-browser-client.md +++ b/knowledge/repos/jiuwenswarm/components/browser-client/feature-depth-browser-client.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/browser/frontend/src/background/index.ts:L211-L249, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/browser/frontend/src/background/index.ts:L236-L248, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/browser/frontend/src/background/ContextCache.ts:L1-L12] +feature: "browser-client" +entry_points: ["jiuwenswarm/channels/browser/frontend/src/background/index.ts", "jiuwenswarm/channels/browser/frontend/src/sidepanel/index.ts"] +source_globs: ["jiuwenswarm/channels/browser/frontend/src/background/index.ts", "jiuwenswarm/channels/browser/frontend/src/sidepanel/index.ts", "jiuwenswarm/channels/browser/frontend/src/*"] --- # Chromium 浏览器扩展:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/common-core/feature-depth-external-cli-agents.md b/knowledge/repos/jiuwenswarm/components/common-core/feature-depth-external-cli-agents.md index 47cb40ce3..09da5bb7a 100644 --- a/knowledge/repos/jiuwenswarm/components/common-core/feature-depth-external-cli-agents.md +++ b/knowledge/repos/jiuwenswarm/components/common-core/feature-depth-external-cli-agents.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/external_cli_runtime.py:L215-L239, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/external_cli_catalog.py:L24-L27] +feature: "external-cli-agents" +entry_points: ["jiuwenswarm/common/external_cli_runtime.py", "jiuwenswarm/common/external_cli_catalog.py"] +source_globs: ["jiuwenswarm/common/external_cli_runtime.py", "jiuwenswarm/common/external_cli_catalog.py"] --- # 外部 Claude 与 Codex CLI 智能体:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/common-core/feature-depth-mcp.md b/knowledge/repos/jiuwenswarm/components/common-core/feature-depth-mcp.md index da6728b4f..ae2c1a625 100644 --- a/knowledge/repos/jiuwenswarm/components/common-core/feature-depth-mcp.md +++ b/knowledge/repos/jiuwenswarm/components/common-core/feature-depth-mcp.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/mcp_config.py:L107-L195, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/mcp_config.py:L97-L104, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/mcp_config.py:L47-L71, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/mcp_config.py:L74-L104, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/config.py:L2546-L2590] +feature: "mcp" +entry_points: ["jiuwenswarm/common/mcp_config.py"] +source_globs: ["jiuwenswarm/common/mcp_config.py"] --- # MCP 配置、凭据与资源:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/common-core/feature-depth-models.md b/knowledge/repos/jiuwenswarm/components/common-core/feature-depth-models.md index 66174c0da..1ab5b9ee9 100644 --- a/knowledge/repos/jiuwenswarm/components/common-core/feature-depth-models.md +++ b/knowledge/repos/jiuwenswarm/components/common-core/feature-depth-models.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/model_config_validation.py:L70-L119, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/model_config_validation.py:L30-L67, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/model_config_validation.py:L70-L86, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:tests/unit_tests/common/test_model_config_validation.py:L64-L86, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:tests/unit_tests/common/test_model_config_validation.py:L116-L128, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:tests/unit_tests/runtime/test_model_catalog.py:L72-L81] +feature: "models" +entry_points: ["jiuwenswarm/common/model_catalog.py", "jiuwenswarm/common/model_config_validation.py"] +source_globs: ["jiuwenswarm/common/model_catalog.py", "jiuwenswarm/common/model_config_validation.py", "jiuwenswarm/common/model*.py"] --- # 模型平台与 API 配置:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/common-core/feature-external-cli-agents.md b/knowledge/repos/jiuwenswarm/components/common-core/feature-external-cli-agents.md index 6d249b6e7..b0adfb35a 100644 --- a/knowledge/repos/jiuwenswarm/components/common-core/feature-external-cli-agents.md +++ b/knowledge/repos/jiuwenswarm/components/common-core/feature-external-cli-agents.md @@ -9,6 +9,9 @@ sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/external_cli_runtime.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/external_cli_catalog.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/设置与频道升级迁移指南.md +feature: "external-cli-agents" +entry_points: ["jiuwenswarm/common/external_cli_runtime.py", "jiuwenswarm/common/external_cli_catalog.py"] +source_globs: ["jiuwenswarm/common/external_cli_runtime.py", "jiuwenswarm/common/external_cli_catalog.py"] --- # 外部 Claude 与 Codex CLI 智能体的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/common-core/feature-mcp.md b/knowledge/repos/jiuwenswarm/components/common-core/feature-mcp.md index 8ff28edad..bf5a9cb40 100644 --- a/knowledge/repos/jiuwenswarm/components/common-core/feature-mcp.md +++ b/knowledge/repos/jiuwenswarm/components/common-core/feature-mcp.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/mcp_config.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/MCP配置.md +feature: "mcp" +entry_points: ["jiuwenswarm/common/mcp_config.py"] +source_globs: ["jiuwenswarm/common/mcp_config.py"] --- # MCP 配置、凭据与资源 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/common-core/feature-models.md b/knowledge/repos/jiuwenswarm/components/common-core/feature-models.md index 43accddf0..0dd5ef3c5 100644 --- a/knowledge/repos/jiuwenswarm/components/common-core/feature-models.md +++ b/knowledge/repos/jiuwenswarm/components/common-core/feature-models.md @@ -9,6 +9,9 @@ sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/model_catalog.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/model_config_validation.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/配置信息.md +feature: "models" +entry_points: ["jiuwenswarm/common/model_catalog.py", "jiuwenswarm/common/model_config_validation.py"] +source_globs: ["jiuwenswarm/common/model_catalog.py", "jiuwenswarm/common/model_config_validation.py", "jiuwenswarm/common/model*.py"] --- # 模型平台与 API 配置 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/cron-scheduling/feature-cron.md b/knowledge/repos/jiuwenswarm/components/cron-scheduling/feature-cron.md index 1a7c3366e..7f1e89b1c 100644 --- a/knowledge/repos/jiuwenswarm/components/cron-scheduling/feature-cron.md +++ b/knowledge/repos/jiuwenswarm/components/cron-scheduling/feature-cron.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/runtime/cron/factory.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/定时任务.md +feature: "cron" +entry_points: ["jiuwenswarm/runtime/cron/factory.py"] +source_globs: ["jiuwenswarm/runtime/cron/factory.py", "jiuwenswarm/runtime/cron/*.py"] --- # 定时任务与调度存储 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/extensions-plugins/feature-applications.md b/knowledge/repos/jiuwenswarm/components/extensions-plugins/feature-applications.md index cc3ef6516..3ee1dbcbb 100644 --- a/knowledge/repos/jiuwenswarm/components/extensions-plugins/feature-applications.md +++ b/knowledge/repos/jiuwenswarm/components/extensions-plugins/feature-applications.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/extensions/application_host.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/application-plugins.md +feature: "applications" +entry_points: ["jiuwenswarm/extensions/application_host.py"] +source_globs: ["jiuwenswarm/extensions/application_host.py"] --- # Application Plugin 与前端贡献 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/extensions-plugins/feature-depth-applications.md b/knowledge/repos/jiuwenswarm/components/extensions-plugins/feature-depth-applications.md index bd26fdecd..1a0f84afa 100644 --- a/knowledge/repos/jiuwenswarm/components/extensions-plugins/feature-depth-applications.md +++ b/knowledge/repos/jiuwenswarm/components/extensions-plugins/feature-depth-applications.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/extensions/application_host.py:L96-L110, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/extensions/application_host.py:L70-L77, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/extensions/application_host.py:L15-L16, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/extensions/application_host.py:L30-L44, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/application-plugins.md:L47-L48, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/extensions/application_host.py:L88-L94, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/extensions/application_host.py:L18-L21] +feature: "applications" +entry_points: ["jiuwenswarm/extensions/application_host.py"] +source_globs: ["jiuwenswarm/extensions/application_host.py"] --- # Application Plugin 与前端贡献:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/extensions-plugins/feature-depth-hooks.md b/knowledge/repos/jiuwenswarm/components/extensions-plugins/feature-depth-hooks.md index ae550e5b1..3b02f78bb 100644 --- a/knowledge/repos/jiuwenswarm/components/extensions-plugins/feature-depth-hooks.md +++ b/knowledge/repos/jiuwenswarm/components/extensions-plugins/feature-depth-hooks.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/extensions/manager.py:L90-L100] +feature: "hooks" +entry_points: ["jiuwenswarm/extensions/manager.py"] +source_globs: ["jiuwenswarm/extensions/manager.py", "jiuwenswarm/extensions/*.py"] --- # 生命周期 Hooks 与扩展:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/extensions-plugins/feature-depth-video-duplex.md b/knowledge/repos/jiuwenswarm/components/extensions-plugins/feature-depth-video-duplex.md index 82251c216..a5888831b 100644 --- a/knowledge/repos/jiuwenswarm/components/extensions-plugins/feature-depth-video-duplex.md +++ b/knowledge/repos/jiuwenswarm/components/extensions-plugins/feature-depth-video-duplex.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/extensions/video_duplex/backend/joyai_provider.py:L65-L79, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/extensions/video_duplex/backend/joyai_provider.py:L82-L89] +feature: "video-duplex" +entry_points: ["jiuwenswarm/extensions/video_duplex/backend/tasks/rail.py"] +source_globs: ["jiuwenswarm/extensions/video_duplex/backend/tasks/rail.py", "jiuwenswarm/extensions/video_duplex/*"] --- # 音视频双工扩展:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/extensions-plugins/feature-hooks.md b/knowledge/repos/jiuwenswarm/components/extensions-plugins/feature-hooks.md index 88da19ef9..91afdcab6 100644 --- a/knowledge/repos/jiuwenswarm/components/extensions-plugins/feature-hooks.md +++ b/knowledge/repos/jiuwenswarm/components/extensions-plugins/feature-hooks.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/extensions/manager.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/Harness.md +feature: "hooks" +entry_points: ["jiuwenswarm/extensions/manager.py"] +source_globs: ["jiuwenswarm/extensions/manager.py", "jiuwenswarm/extensions/*.py"] --- # 生命周期 Hooks 与扩展 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/extensions-plugins/feature-video-duplex.md b/knowledge/repos/jiuwenswarm/components/extensions-plugins/feature-video-duplex.md index 3d7080a59..a516c5524 100644 --- a/knowledge/repos/jiuwenswarm/components/extensions-plugins/feature-video-duplex.md +++ b/knowledge/repos/jiuwenswarm/components/extensions-plugins/feature-video-duplex.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/extensions/video_duplex/backend/tasks/rail.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/application-plugins.md +feature: "video-duplex" +entry_points: ["jiuwenswarm/extensions/video_duplex/backend/tasks/rail.py"] +source_globs: ["jiuwenswarm/extensions/video_duplex/backend/tasks/rail.py", "jiuwenswarm/extensions/video_duplex/*"] --- # 音视频双工扩展 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-cli.md b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-cli.md index 9468e2d69..0135e1a44 100644 --- a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-cli.md +++ b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-cli.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/cli/main.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/命令行指令.md +feature: "cli" +entry_points: ["jiuwenswarm/cli/main.py"] +source_globs: ["jiuwenswarm/cli/main.py", "jiuwenswarm/cli/*.py"] --- # 交互式命令行 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-cli.md b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-cli.md index e693eea4b..b6033e827 100644 --- a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-cli.md +++ b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-cli.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/cli/_terminal.py:L5-L8, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/cli/chat.py:L5-L8, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/cli/main.py:L5-L7] +feature: "cli" +entry_points: ["jiuwenswarm/cli/main.py"] +source_globs: ["jiuwenswarm/cli/main.py", "jiuwenswarm/cli/*.py"] --- # 交互式命令行:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-im-dingtalk.md b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-im-dingtalk.md index fdae18cf5..9203814ea 100644 --- a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-im-dingtalk.md +++ b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-im-dingtalk.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/channel_manager/im_platforms/dingtalk/dingtalk_connect.py:L28-L42, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/channel_manager/im_platforms/dingtalk/dingtalk_connect.py:L374-L412] +feature: "im-dingtalk" +entry_points: ["jiuwenswarm/gateway/channel_manager/im_platforms/dingtalk/dingtalk_connect.py"] +source_globs: ["jiuwenswarm/gateway/channel_manager/im_platforms/dingtalk/dingtalk_connect.py", "jiuwenswarm/gateway/channel_manager/im_platforms/dingtalk/*"] --- # 钉钉 频道:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-im-discord.md b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-im-discord.md index d9cc47bb6..2771c3e70 100644 --- a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-im-discord.md +++ b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-im-discord.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/channel_manager/im_platforms/discord/discord_connect.py:L190-L217] +feature: "im-discord" +entry_points: ["jiuwenswarm/gateway/channel_manager/im_platforms/discord/discord_connect.py"] +source_globs: ["jiuwenswarm/gateway/channel_manager/im_platforms/discord/discord_connect.py", "jiuwenswarm/gateway/channel_manager/im_platforms/discord/*"] --- # Discord 频道:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-im-feishu.md b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-im-feishu.md index 4c5e339a7..b9d10b317 100644 --- a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-im-feishu.md +++ b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-im-feishu.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:tests/unit_tests/gateway/test_feishu_im_adapter.py:L12-L26] +feature: "im-feishu" +entry_points: ["jiuwenswarm/gateway/channel_manager/im_platforms/feishu/feishu_connect.py"] +source_globs: ["jiuwenswarm/gateway/channel_manager/im_platforms/feishu/feishu_connect.py", "jiuwenswarm/gateway/channel_manager/im_platforms/feishu/*"] --- # 飞书 频道:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-im-slack.md b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-im-slack.md index b6e63a623..a31af5cba 100644 --- a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-im-slack.md +++ b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-im-slack.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/channel_manager/im_platforms/slack/slack_connect.py:L79-L112, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/channel_manager/im_platforms/slack/slack_connect.py:L40-L50, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/channel_manager/im_platforms/slack/slack_connect.py:L166-L251] +feature: "im-slack" +entry_points: ["jiuwenswarm/gateway/channel_manager/im_platforms/slack/slack_connect.py"] +source_globs: ["jiuwenswarm/gateway/channel_manager/im_platforms/slack/slack_connect.py", "jiuwenswarm/gateway/channel_manager/im_platforms/slack/*"] --- # Slack 频道:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-im-telegram.md b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-im-telegram.md index 9e34b18ad..5b95503f1 100644 --- a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-im-telegram.md +++ b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-im-telegram.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/channel_manager/im_platforms/telegram/telegram_connect.py:L39-L47, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/channel_manager/im_platforms/telegram/telegram_connect.py:L92-L98, "openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/海外频道.md:L55-L61"] +feature: "im-telegram" +entry_points: ["jiuwenswarm/gateway/channel_manager/im_platforms/telegram/telegram_connect.py"] +source_globs: ["jiuwenswarm/gateway/channel_manager/im_platforms/telegram/telegram_connect.py", "jiuwenswarm/gateway/channel_manager/im_platforms/telegram/*"] --- # Telegram 频道:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-im-wechat.md b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-im-wechat.md index c67ede933..8e77a1bf3 100644 --- a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-im-wechat.md +++ b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-im-wechat.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/channel_manager/im_platforms/wechat/wechat_connect.py:L407-L447, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/channel_manager/im_platforms/wechat/wechat_connect.py:L911-L974] +feature: "im-wechat" +entry_points: ["jiuwenswarm/gateway/channel_manager/im_platforms/wechat/wechat_connect.py"] +source_globs: ["jiuwenswarm/gateway/channel_manager/im_platforms/wechat/wechat_connect.py", "jiuwenswarm/gateway/channel_manager/im_platforms/wechat/*"] --- # 微信 频道:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-im-wecom.md b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-im-wecom.md index 9b7ea002d..5e8a11cc6 100644 --- a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-im-wecom.md +++ b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-im-wecom.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/channel_manager/im_platforms/wecom/wecom_connect.py:L46-L66, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/channel_manager/im_platforms/wecom/wecom_connect.py:L1374-L1418, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/channel_manager/im_platforms/wecom/wecom_connect.py:L1426-L1446] +feature: "im-wecom" +entry_points: ["jiuwenswarm/gateway/channel_manager/im_platforms/wecom/wecom_connect.py"] +source_globs: ["jiuwenswarm/gateway/channel_manager/im_platforms/wecom/wecom_connect.py", "jiuwenswarm/gateway/channel_manager/im_platforms/wecom/*"] --- # 企业微信 频道:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-im-whatsapp.md b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-im-whatsapp.md index 2243b20dc..6839a7e5f 100644 --- a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-im-whatsapp.md +++ b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-im-whatsapp.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/channel_manager/im_platforms/whatsapp/whatsapp_connect.py:L67-L83, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/channel_manager/im_platforms/whatsapp/whatsapp_connect.py:L153-L179, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/channel_manager/im_platforms/whatsapp/whatsapp_connect.py:L201-L209, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/channel_manager/im_platforms/whatsapp/whatsapp_connect.py:L57-L58, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/channel_manager/im_platforms/whatsapp/whatsapp_connect.py:L24-L33, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/channel_manager/im_platforms/whatsapp/whatsapp_connect.py:L162-L168] +feature: "im-whatsapp" +entry_points: ["jiuwenswarm/gateway/channel_manager/im_platforms/whatsapp/whatsapp_connect.py"] +source_globs: ["jiuwenswarm/gateway/channel_manager/im_platforms/whatsapp/whatsapp_connect.py", "jiuwenswarm/gateway/channel_manager/im_platforms/whatsapp/*"] --- # WhatsApp 频道:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-im-xiaoyi.md b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-im-xiaoyi.md index a250e5cf7..b5a399771 100644 --- a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-im-xiaoyi.md +++ b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-im-xiaoyi.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/channel_manager/im_platforms/xiaoyi/xiaoyi_utils/push.py:L55-L132, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/channel_manager/im_platforms/xiaoyi/xiaoyi_connect.py:L386-L412, "openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/国内频道.md:L67-L103"] +feature: "im-xiaoyi" +entry_points: ["jiuwenswarm/gateway/channel_manager/im_platforms/xiaoyi/xiaoyi_connect.py"] +source_globs: ["jiuwenswarm/gateway/channel_manager/im_platforms/xiaoyi/xiaoyi_connect.py", "jiuwenswarm/gateway/channel_manager/im_platforms/xiaoyi/*"] --- # 小艺 频道:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-process-cli.md b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-process-cli.md index 958b50ae1..dd887fa25 100644 --- a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-process-cli.md +++ b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-process-cli.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/process_cli/app.py:L732-L921, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/process_cli/app.py:L80-L116, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/process_cli/display_context.py:L228-L252, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/schema/agent.py:L68-L94, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/process_cli/client.py:L73-L252, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:tests/unit_tests/process_cli/test_control_commands.py:L1-L180] +feature: "process-cli" +entry_points: ["jiuwenswarm/channels/process_cli/app.py"] +source_globs: ["jiuwenswarm/channels/process_cli/app.py", "jiuwenswarm/channels/process_cli/*.py"] --- # 机器执行与本地 CLI:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-ssh.md b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-ssh.md index 5c4718e4f..e80eb0831 100644 --- a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-ssh.md +++ b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-depth-ssh.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/channel_manager/protocol/ssh/server.py:L144-L149, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/channel_manager/protocol/ssh/server.py:L273-L290] +feature: "ssh" +entry_points: ["jiuwenswarm/gateway/channel_manager/protocol/ssh/ssh_connect.py"] +source_globs: ["jiuwenswarm/gateway/channel_manager/protocol/ssh/ssh_connect.py", "jiuwenswarm/gateway/channel_manager/protocol/ssh/*.py"] --- # SSH 频道与远程终端:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-im-dingtalk.md b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-im-dingtalk.md index 369f3f7b7..f85e6db2e 100644 --- a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-im-dingtalk.md +++ b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-im-dingtalk.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/channel_manager/im_platforms/dingtalk/dingtalk_connect.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/国内频道.md +feature: "im-dingtalk" +entry_points: ["jiuwenswarm/gateway/channel_manager/im_platforms/dingtalk/dingtalk_connect.py"] +source_globs: ["jiuwenswarm/gateway/channel_manager/im_platforms/dingtalk/dingtalk_connect.py", "jiuwenswarm/gateway/channel_manager/im_platforms/dingtalk/*"] --- # 钉钉 频道 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-im-discord.md b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-im-discord.md index 95a1a3d0c..f0c3df948 100644 --- a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-im-discord.md +++ b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-im-discord.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/channel_manager/im_platforms/discord/discord_connect.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/海外频道.md +feature: "im-discord" +entry_points: ["jiuwenswarm/gateway/channel_manager/im_platforms/discord/discord_connect.py"] +source_globs: ["jiuwenswarm/gateway/channel_manager/im_platforms/discord/discord_connect.py", "jiuwenswarm/gateway/channel_manager/im_platforms/discord/*"] --- # Discord 频道 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-im-feishu.md b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-im-feishu.md index 4597eef07..6832c90d4 100644 --- a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-im-feishu.md +++ b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-im-feishu.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/channel_manager/im_platforms/feishu/feishu_connect.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/国内频道.md +feature: "im-feishu" +entry_points: ["jiuwenswarm/gateway/channel_manager/im_platforms/feishu/feishu_connect.py"] +source_globs: ["jiuwenswarm/gateway/channel_manager/im_platforms/feishu/feishu_connect.py", "jiuwenswarm/gateway/channel_manager/im_platforms/feishu/*"] --- # 飞书 频道 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-im-slack.md b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-im-slack.md index ec4501900..0d2cd181d 100644 --- a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-im-slack.md +++ b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-im-slack.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/channel_manager/im_platforms/slack/slack_connect.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/海外频道.md +feature: "im-slack" +entry_points: ["jiuwenswarm/gateway/channel_manager/im_platforms/slack/slack_connect.py"] +source_globs: ["jiuwenswarm/gateway/channel_manager/im_platforms/slack/slack_connect.py", "jiuwenswarm/gateway/channel_manager/im_platforms/slack/*"] --- # Slack 频道 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-im-telegram.md b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-im-telegram.md index 23475d0e2..9be3bc3a9 100644 --- a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-im-telegram.md +++ b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-im-telegram.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/channel_manager/im_platforms/telegram/telegram_connect.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/海外频道.md +feature: "im-telegram" +entry_points: ["jiuwenswarm/gateway/channel_manager/im_platforms/telegram/telegram_connect.py"] +source_globs: ["jiuwenswarm/gateway/channel_manager/im_platforms/telegram/telegram_connect.py", "jiuwenswarm/gateway/channel_manager/im_platforms/telegram/*"] --- # Telegram 频道 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-im-wechat.md b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-im-wechat.md index 29f7d77ce..e62998272 100644 --- a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-im-wechat.md +++ b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-im-wechat.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/channel_manager/im_platforms/wechat/wechat_connect.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/国内频道.md +feature: "im-wechat" +entry_points: ["jiuwenswarm/gateway/channel_manager/im_platforms/wechat/wechat_connect.py"] +source_globs: ["jiuwenswarm/gateway/channel_manager/im_platforms/wechat/wechat_connect.py", "jiuwenswarm/gateway/channel_manager/im_platforms/wechat/*"] --- # 微信 频道 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-im-wecom.md b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-im-wecom.md index 2b248511d..529de9d49 100644 --- a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-im-wecom.md +++ b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-im-wecom.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/channel_manager/im_platforms/wecom/wecom_connect.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/国内频道.md +feature: "im-wecom" +entry_points: ["jiuwenswarm/gateway/channel_manager/im_platforms/wecom/wecom_connect.py"] +source_globs: ["jiuwenswarm/gateway/channel_manager/im_platforms/wecom/wecom_connect.py", "jiuwenswarm/gateway/channel_manager/im_platforms/wecom/*"] --- # 企业微信 频道 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-im-whatsapp.md b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-im-whatsapp.md index 0ad952fb9..4b72e1064 100644 --- a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-im-whatsapp.md +++ b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-im-whatsapp.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/channel_manager/im_platforms/whatsapp/whatsapp_connect.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/海外频道.md +feature: "im-whatsapp" +entry_points: ["jiuwenswarm/gateway/channel_manager/im_platforms/whatsapp/whatsapp_connect.py"] +source_globs: ["jiuwenswarm/gateway/channel_manager/im_platforms/whatsapp/whatsapp_connect.py", "jiuwenswarm/gateway/channel_manager/im_platforms/whatsapp/*"] --- # WhatsApp 频道 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-im-xiaoyi.md b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-im-xiaoyi.md index a055935f1..d6704ab4d 100644 --- a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-im-xiaoyi.md +++ b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-im-xiaoyi.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/channel_manager/im_platforms/xiaoyi/xiaoyi_connect.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/国内频道.md +feature: "im-xiaoyi" +entry_points: ["jiuwenswarm/gateway/channel_manager/im_platforms/xiaoyi/xiaoyi_connect.py"] +source_globs: ["jiuwenswarm/gateway/channel_manager/im_platforms/xiaoyi/xiaoyi_connect.py", "jiuwenswarm/gateway/channel_manager/im_platforms/xiaoyi/*"] --- # 小艺 频道 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-process-cli.md b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-process-cli.md index b73cad900..571e2c2ad 100644 --- a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-process-cli.md +++ b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-process-cli.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/process_cli/app.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/命令行指令.md +feature: "process-cli" +entry_points: ["jiuwenswarm/channels/process_cli/app.py"] +source_globs: ["jiuwenswarm/channels/process_cli/app.py", "jiuwenswarm/channels/process_cli/*.py"] --- # 机器执行与本地 CLI 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-ssh.md b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-ssh.md index 193d08d56..aa1d89211 100644 --- a/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-ssh.md +++ b/knowledge/repos/jiuwenswarm/components/gateway-channels/feature-ssh.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/channel_manager/protocol/ssh/ssh_connect.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/频道.md +feature: "ssh" +entry_points: ["jiuwenswarm/gateway/channel_manager/protocol/ssh/ssh_connect.py"] +source_globs: ["jiuwenswarm/gateway/channel_manager/protocol/ssh/ssh_connect.py", "jiuwenswarm/gateway/channel_manager/protocol/ssh/*.py"] --- # SSH 频道与远程终端 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/ide-clients/feature-depth-jetbrains.md b/knowledge/repos/jiuwenswarm/components/ide-clients/feature-depth-jetbrains.md index 64dd401d3..3d5c41b99 100644 --- a/knowledge/repos/jiuwenswarm/components/ide-clients/feature-depth-jetbrains.md +++ b/knowledge/repos/jiuwenswarm/components/ide-clients/feature-depth-jetbrains.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/ide/packages/jetbrains-plugin/src/main/kotlin/com/jiuwenswarm/plugin/JiuwenSwarmService.kt:L21-L26, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/ide/packages/jetbrains-plugin/src/main/kotlin/com/jiuwenswarm/plugin/JiuwenSwarmService.kt:L39-L42, "openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/ide/jetbrains/JetBrains插件.md:L20-L25", openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/ide/packages/jetbrains-plugin/src/main/kotlin/com/jiuwenswarm/plugin/JiuwenSwarmService.kt:L52-L61] +feature: "jetbrains" +entry_points: ["jiuwenswarm/channels/ide/packages/jetbrains-plugin/src/main/kotlin/com/jiuwenswarm/plugin/JiuwenSwarmService.kt"] +source_globs: ["jiuwenswarm/channels/ide/packages/jetbrains-plugin/src/main/kotlin/com/jiuwenswarm/plugin/JiuwenSwarmService.kt", "jiuwenswarm/channels/ide/packages/jetbrains-plugin/*"] --- # JetBrains 客户端:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/ide-clients/feature-depth-vscode.md b/knowledge/repos/jiuwenswarm/components/ide-clients/feature-depth-vscode.md index 14b5085e6..043c8087e 100644 --- a/knowledge/repos/jiuwenswarm/components/ide-clients/feature-depth-vscode.md +++ b/knowledge/repos/jiuwenswarm/components/ide-clients/feature-depth-vscode.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/ide/packages/vscode-extension/src/extension.ts:L21-L39, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/ide/packages/vscode-extension/src/client/WsClient.ts:L145-L152] +feature: "vscode" +entry_points: ["jiuwenswarm/channels/ide/packages/vscode-extension/src/extension.ts"] +source_globs: ["jiuwenswarm/channels/ide/packages/vscode-extension/src/extension.ts", "jiuwenswarm/channels/ide/packages/vscode-extension/*"] --- # VS Code 客户端:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/ide-clients/feature-jetbrains.md b/knowledge/repos/jiuwenswarm/components/ide-clients/feature-jetbrains.md index dc26a3751..9bcf395e2 100644 --- a/knowledge/repos/jiuwenswarm/components/ide-clients/feature-jetbrains.md +++ b/knowledge/repos/jiuwenswarm/components/ide-clients/feature-jetbrains.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/ide/packages/jetbrains-plugin/src/main/kotlin/com/jiuwenswarm/plugin/JiuwenSwarmService.kt - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/ide/jetbrains/JetBrains插件.md +feature: "jetbrains" +entry_points: ["jiuwenswarm/channels/ide/packages/jetbrains-plugin/src/main/kotlin/com/jiuwenswarm/plugin/JiuwenSwarmService.kt"] +source_globs: ["jiuwenswarm/channels/ide/packages/jetbrains-plugin/src/main/kotlin/com/jiuwenswarm/plugin/JiuwenSwarmService.kt", "jiuwenswarm/channels/ide/packages/jetbrains-plugin/*"] --- # JetBrains 客户端 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/ide-clients/feature-vscode.md b/knowledge/repos/jiuwenswarm/components/ide-clients/feature-vscode.md index 87e61a5a7..759179af5 100644 --- a/knowledge/repos/jiuwenswarm/components/ide-clients/feature-vscode.md +++ b/knowledge/repos/jiuwenswarm/components/ide-clients/feature-vscode.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/ide/packages/vscode-extension/src/extension.ts - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/ide/vscode/VSCode插件.md +feature: "vscode" +entry_points: ["jiuwenswarm/channels/ide/packages/vscode-extension/src/extension.ts"] +source_globs: ["jiuwenswarm/channels/ide/packages/vscode-extension/src/extension.ts", "jiuwenswarm/channels/ide/packages/vscode-extension/*"] --- # VS Code 客户端 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/launch/feature-bootstrap.md b/knowledge/repos/jiuwenswarm/components/launch/feature-bootstrap.md index 960887b1c..aaaa662e4 100644 --- a/knowledge/repos/jiuwenswarm/components/launch/feature-bootstrap.md +++ b/knowledge/repos/jiuwenswarm/components/launch/feature-bootstrap.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/init_workspace.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/安装指南.md +feature: "bootstrap" +entry_points: ["jiuwenswarm/init_workspace.py"] +source_globs: ["jiuwenswarm/init_workspace.py"] --- # 初始化与服务启动 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/launch/feature-depth-bootstrap.md b/knowledge/repos/jiuwenswarm/components/launch/feature-depth-bootstrap.md index 1085d3609..7597eac4d 100644 --- a/knowledge/repos/jiuwenswarm/components/launch/feature-depth-bootstrap.md +++ b/knowledge/repos/jiuwenswarm/components/launch/feature-depth-bootstrap.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/init_workspace.py:L154-L173, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:tests/system_tests/test_init_workspace.py:L54-L177, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/init_workspace.py:L44-L151, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/utils.py:L1674-L1677, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/utils.py:L378-L394, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/init_workspace.py:L63-L71] +feature: "bootstrap" +entry_points: ["jiuwenswarm/init_workspace.py"] +source_globs: ["jiuwenswarm/init_workspace.py"] --- # 初始化与服务启动:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/launch/feature-depth-desktop.md b/knowledge/repos/jiuwenswarm/components/launch/feature-depth-desktop.md index ccf916272..96bd024f0 100644 --- a/knowledge/repos/jiuwenswarm/components/launch/feature-depth-desktop.md +++ b/knowledge/repos/jiuwenswarm/components/launch/feature-depth-desktop.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/desktop/desktop_app.py:L3514-L3536, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/desktop/desktop_app.py:L3565-L3598, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/utils.py:L416-L433, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/desktop/desktop_app.py:L384-L402, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/desktop/desktop_app.py:L673-L707, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/desktop/desktop_app.py:L3105-L3119, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/desktop/desktop_app.py:L3121-L3126] +feature: "desktop" +entry_points: ["jiuwenswarm/channels/desktop/desktop_app.py"] +source_globs: ["jiuwenswarm/channels/desktop/desktop_app.py", "jiuwenswarm/channels/desktop/*"] --- # 桌面宿主与自动更新:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/launch/feature-depth-instances.md b/knowledge/repos/jiuwenswarm/components/launch/feature-depth-instances.md index 4d95ad6dd..8e081df9b 100644 --- a/knowledge/repos/jiuwenswarm/components/launch/feature-depth-instances.md +++ b/knowledge/repos/jiuwenswarm/components/launch/feature-depth-instances.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/instance_manager/config.py:L141-L159, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/instance_manager/config.py:L183-L188, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/instance_manager/bootstrap.py:L139-L202, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/instance_manager/status.py:L261-L294, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/instance_manager/bootstrap.py:L172-L202, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/instance_manager/bootstrap.py:L93-L120] +feature: "instances" +entry_points: ["jiuwenswarm/instance_manager/bootstrap.py"] +source_globs: ["jiuwenswarm/instance_manager/bootstrap.py", "jiuwenswarm/instance_manager/*.py"] --- # 单机多实例:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/launch/feature-desktop.md b/knowledge/repos/jiuwenswarm/components/launch/feature-desktop.md index 32d03c860..f9ff2a939 100644 --- a/knowledge/repos/jiuwenswarm/components/launch/feature-desktop.md +++ b/knowledge/repos/jiuwenswarm/components/launch/feature-desktop.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/desktop/desktop_app.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/windows自动更新设计.md +feature: "desktop" +entry_points: ["jiuwenswarm/channels/desktop/desktop_app.py"] +source_globs: ["jiuwenswarm/channels/desktop/desktop_app.py", "jiuwenswarm/channels/desktop/*"] --- # 桌面宿主与自动更新 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/launch/feature-instances.md b/knowledge/repos/jiuwenswarm/components/launch/feature-instances.md index 3fcc46f7b..0a3cf1bf8 100644 --- a/knowledge/repos/jiuwenswarm/components/launch/feature-instances.md +++ b/knowledge/repos/jiuwenswarm/components/launch/feature-instances.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/instance_manager/bootstrap.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/单机多实例运行.md +feature: "instances" +entry_points: ["jiuwenswarm/instance_manager/bootstrap.py"] +source_globs: ["jiuwenswarm/instance_manager/bootstrap.py", "jiuwenswarm/instance_manager/*.py"] --- # 单机多实例 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/login-auth/feature-depth-login.md b/knowledge/repos/jiuwenswarm/components/login-auth/feature-depth-login.md index f9ac8fb28..74bb4a9f2 100644 --- a/knowledge/repos/jiuwenswarm/components/login-auth/feature-depth-login.md +++ b/knowledge/repos/jiuwenswarm/components/login-auth/feature-depth-login.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/auth/account_kit.py:L92-L99, "openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/华为账号登录.md:L15-L27"] +feature: "login" +entry_points: ["jiuwenswarm/common/auth/service.py"] +source_globs: ["jiuwenswarm/common/auth/service.py", "jiuwenswarm/common/auth/*.py"] --- # 账号登录与凭据续期:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/login-auth/feature-login.md b/knowledge/repos/jiuwenswarm/components/login-auth/feature-login.md index 28db5c092..918e43f76 100644 --- a/knowledge/repos/jiuwenswarm/components/login-auth/feature-login.md +++ b/knowledge/repos/jiuwenswarm/components/login-auth/feature-login.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/auth/service.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/华为账号登录.md +feature: "login" +entry_points: ["jiuwenswarm/common/auth/service.py"] +source_globs: ["jiuwenswarm/common/auth/service.py", "jiuwenswarm/common/auth/*.py"] --- # 账号登录与凭据续期 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/observability/feature-debug-trace.md b/knowledge/repos/jiuwenswarm/components/observability/feature-debug-trace.md index f26976eb3..2daf811e9 100644 --- a/knowledge/repos/jiuwenswarm/components/observability/feature-debug-trace.md +++ b/knowledge/repos/jiuwenswarm/components/observability/feature-debug-trace.md @@ -9,6 +9,9 @@ sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/debug_trace/config.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/debug_trace/stream_logger.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/调试追踪.md +feature: "debug-trace" +entry_points: ["jiuwenswarm/server/runtime/debug_trace/config.py", "jiuwenswarm/server/runtime/debug_trace/stream_logger.py"] +source_globs: ["jiuwenswarm/server/runtime/debug_trace/config.py", "jiuwenswarm/server/runtime/debug_trace/stream_logger.py", "jiuwenswarm/server/runtime/debug_trace/*.py"] --- # Debug Dump 与 OTel 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/observability/feature-depth-debug-trace.md b/knowledge/repos/jiuwenswarm/components/observability/feature-depth-debug-trace.md index f4ddf3fe6..89f5a485e 100644 --- a/knowledge/repos/jiuwenswarm/components/observability/feature-depth-debug-trace.md +++ b/knowledge/repos/jiuwenswarm/components/observability/feature-depth-debug-trace.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/debug_trace/stream_logger.py:L304-L316, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/debug_trace/stream_logger.py:L556-L568, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/debug_trace/config.py:L71-L79, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/debug_trace/stream_logger.py:L293-L302, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/server/runtime/debug_trace/config.py:L21-L28] +feature: "debug-trace" +entry_points: ["jiuwenswarm/server/runtime/debug_trace/config.py", "jiuwenswarm/server/runtime/debug_trace/stream_logger.py"] +source_globs: ["jiuwenswarm/server/runtime/debug_trace/config.py", "jiuwenswarm/server/runtime/debug_trace/stream_logger.py", "jiuwenswarm/server/runtime/debug_trace/*.py"] --- # Debug Dump 与 OTel:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/observability/feature-depth-observability.md b/knowledge/repos/jiuwenswarm/components/observability/feature-depth-observability.md index 3a564b72f..7f99a09f2 100644 --- a/knowledge/repos/jiuwenswarm/components/observability/feature-depth-observability.md +++ b/knowledge/repos/jiuwenswarm/components/observability/feature-depth-observability.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/observability/sink.py:L261-L289, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/observability/sink.py:L62-L70] +feature: "observability" +entry_points: ["jiuwenswarm/observability/sink.py"] +source_globs: ["jiuwenswarm/observability/sink.py", "jiuwenswarm/observability/*.py"] --- # 执行轨迹与保留:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/observability/feature-observability.md b/knowledge/repos/jiuwenswarm/components/observability/feature-observability.md index 545d97b27..d25faed91 100644 --- a/knowledge/repos/jiuwenswarm/components/observability/feature-observability.md +++ b/knowledge/repos/jiuwenswarm/components/observability/feature-observability.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/observability/sink.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/日志.md +feature: "observability" +entry_points: ["jiuwenswarm/observability/sink.py"] +source_globs: ["jiuwenswarm/observability/sink.py", "jiuwenswarm/observability/*.py"] --- # 执行轨迹与保留 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/packaging-deploy/feature-deployment.md b/knowledge/repos/jiuwenswarm/components/packaging-deploy/feature-deployment.md index bc43e63af..f5c91de36 100644 --- a/knowledge/repos/jiuwenswarm/components/packaging-deploy/feature-deployment.md +++ b/knowledge/repos/jiuwenswarm/components/packaging-deploy/feature-deployment.md @@ -12,6 +12,9 @@ sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docker/Dockerfile.claw - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docker/Dockerfile.claw.base - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docker/Dockerfile.yr.rt.mgr +feature: "deployment" +entry_points: ["scripts/build-electron-exe.sh", "Dockerfile.claw", "docker/Dockerfile.claw", "docker/Dockerfile.claw.base", "docker/Dockerfile.yr.rt.mgr"] +source_globs: ["scripts/build-electron-exe.sh", "scripts/*", "Dockerfile.claw", "docker/Dockerfile.claw", "docker/Dockerfile.claw.base", "docker/Dockerfile.yr.rt.mgr"] --- # 打包与部署 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/packaging-deploy/feature-depth-deployment.md b/knowledge/repos/jiuwenswarm/components/packaging-deploy/feature-depth-deployment.md index dcbba57d5..87e832ce1 100644 --- a/knowledge/repos/jiuwenswarm/components/packaging-deploy/feature-depth-deployment.md +++ b/knowledge/repos/jiuwenswarm/components/packaging-deploy/feature-depth-deployment.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:scripts/build-electron-exe.sh:L144-L159, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:Dockerfile.claw:L78-L85, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:scripts/build-electron-exe.sh:L55-L68, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:scripts/build-electron-exe.sh:L301-L307] +feature: "deployment" +entry_points: ["scripts/build-electron-exe.sh", "Dockerfile.claw", "docker/Dockerfile.claw", "docker/Dockerfile.claw.base", "docker/Dockerfile.yr.rt.mgr"] +source_globs: ["scripts/build-electron-exe.sh", "scripts/*", "Dockerfile.claw", "docker/Dockerfile.claw", "docker/Dockerfile.claw.base", "docker/Dockerfile.yr.rt.mgr"] --- # 打包与部署:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/protocols/feature-a2a.md b/knowledge/repos/jiuwenswarm/components/protocols/feature-a2a.md index 00a759782..5e833c46f 100644 --- a/knowledge/repos/jiuwenswarm/components/protocols/feature-a2a.md +++ b/knowledge/repos/jiuwenswarm/components/protocols/feature-a2a.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/channel_manager/protocol/a2a/a2a_connect.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/A2A.md +feature: "a2a" +entry_points: ["jiuwenswarm/gateway/channel_manager/protocol/a2a/a2a_connect.py"] +source_globs: ["jiuwenswarm/gateway/channel_manager/protocol/a2a/a2a_connect.py", "jiuwenswarm/gateway/channel_manager/protocol/a2a/*.py"] --- # A2A 接入与 AgentCard 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/protocols/feature-acp.md b/knowledge/repos/jiuwenswarm/components/protocols/feature-acp.md index 24d83b0f2..80857c6c3 100644 --- a/knowledge/repos/jiuwenswarm/components/protocols/feature-acp.md +++ b/knowledge/repos/jiuwenswarm/components/protocols/feature-acp.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/acp/stdio_client.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/ACP插件使用.md +feature: "acp" +entry_points: ["jiuwenswarm/acp/stdio_client.py"] +source_globs: ["jiuwenswarm/acp/stdio_client.py", "jiuwenswarm/acp/*.py"] --- # ACP 与 stdio 桥接 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/protocols/feature-depth-a2a.md b/knowledge/repos/jiuwenswarm/components/protocols/feature-depth-a2a.md index c10d9cc30..bf4020f1e 100644 --- a/knowledge/repos/jiuwenswarm/components/protocols/feature-depth-a2a.md +++ b/knowledge/repos/jiuwenswarm/components/protocols/feature-depth-a2a.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/channel_manager/protocol/a2a/a2a_connect.py:L284-L314, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/A2A.md:L51-L58, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/gateway/channel_manager/protocol/a2a/a2a_connect.py:L151-L188, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/A2A.md:L122-L125, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/A2A.md:L134-L152] +feature: "a2a" +entry_points: ["jiuwenswarm/gateway/channel_manager/protocol/a2a/a2a_connect.py"] +source_globs: ["jiuwenswarm/gateway/channel_manager/protocol/a2a/a2a_connect.py", "jiuwenswarm/gateway/channel_manager/protocol/a2a/*.py"] --- # A2A 接入与 AgentCard:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/protocols/feature-depth-acp.md b/knowledge/repos/jiuwenswarm/components/protocols/feature-depth-acp.md index 0abfd3278..2b3563a88 100644 --- a/knowledge/repos/jiuwenswarm/components/protocols/feature-depth-acp.md +++ b/knowledge/repos/jiuwenswarm/components/protocols/feature-depth-acp.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/acp/cli.py:L36-L60, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/acp/cli.py:L75-L82, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/utils.py:L2432-L2433] +feature: "acp" +entry_points: ["jiuwenswarm/acp/stdio_client.py"] +source_globs: ["jiuwenswarm/acp/stdio_client.py", "jiuwenswarm/acp/*.py"] --- # ACP 与 stdio 桥接:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/protocols/feature-depth-e2a.md b/knowledge/repos/jiuwenswarm/components/protocols/feature-depth-e2a.md index 41cb2a584..2639b4d40 100644 --- a/knowledge/repos/jiuwenswarm/components/protocols/feature-depth-e2a.md +++ b/knowledge/repos/jiuwenswarm/components/protocols/feature-depth-e2a.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/e2a/acp/acp_tool_updates.py:L119-L148, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/e2a/acp/acp_tool_updates.py:L301-L310] +feature: "e2a" +entry_points: ["jiuwenswarm/common/e2a/models.py"] +source_globs: ["jiuwenswarm/common/e2a/models.py", "jiuwenswarm/common/e2a/*.py"] --- # E2A 统一请求响应协议:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/protocols/feature-e2a.md b/knowledge/repos/jiuwenswarm/components/protocols/feature-e2a.md index f921ae5d6..07a79a291 100644 --- a/knowledge/repos/jiuwenswarm/components/protocols/feature-e2a.md +++ b/knowledge/repos/jiuwenswarm/components/protocols/feature-e2a.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/e2a/models.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/E2A-protocol.md +feature: "e2a" +entry_points: ["jiuwenswarm/common/e2a/models.py"] +source_globs: ["jiuwenswarm/common/e2a/models.py", "jiuwenswarm/common/e2a/*.py"] --- # E2A 统一请求响应协议 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/sandbox-runtime/feature-depth-sandbox-privacy-proxy.md b/knowledge/repos/jiuwenswarm/components/sandbox-runtime/feature-depth-sandbox-privacy-proxy.md index f76f016f9..0c57bdd08 100644 --- a/knowledge/repos/jiuwenswarm/components/sandbox-runtime/feature-depth-sandbox-privacy-proxy.md +++ b/knowledge/repos/jiuwenswarm/components/sandbox-runtime/feature-depth-sandbox-privacy-proxy.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenbox/src/jiuwenbox/proxy/inference_privacy_proxy_manager.py:L343-L356, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenbox/src/jiuwenbox/proxy/inference_privacy_proxy.py:L35-L40, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenbox/src/jiuwenbox/proxy/inference_privacy_proxy.py:L157-L165, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenbox/src/jiuwenbox/proxy/inference_privacy_proxy_manager.py:L21-L22, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenbox/src/jiuwenbox/proxy/inference_privacy_proxy_manager.py:L37-L53, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenbox/src/jiuwenbox/proxy/inference_privacy_proxy_manager.py:L100-L104, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenbox/src/jiuwenbox/proxy/inference_privacy_proxy_manager.py:L370-L389, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenbox/src/jiuwenbox/proxy/inference_privacy_proxy_manager.py:L425-L448] +feature: "sandbox-privacy-proxy" +entry_points: ["jiuwenbox/src/jiuwenbox/proxy/inference_privacy_proxy.py", "jiuwenbox/src/jiuwenbox/proxy/inference_privacy_proxy_manager.py"] +source_globs: ["jiuwenbox/src/jiuwenbox/proxy/inference_privacy_proxy.py", "jiuwenbox/src/jiuwenbox/proxy/inference_privacy_proxy_manager.py"] --- # JiuwenBox 推理隐私代理:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/sandbox-runtime/feature-depth-sandbox.md b/knowledge/repos/jiuwenswarm/components/sandbox-runtime/feature-depth-sandbox.md index 8a9399928..8e9743ed8 100644 --- a/knowledge/repos/jiuwenswarm/components/sandbox-runtime/feature-depth-sandbox.md +++ b/knowledge/repos/jiuwenswarm/components/sandbox-runtime/feature-depth-sandbox.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenbox/src/jiuwenbox/server/app.py:L405-L528, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenbox/src/jiuwenbox/cli/jiuwenbox.py:L302-L319, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenbox/src/jiuwenbox/server/app.py:L153-L204, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenbox/src/jiuwenbox/server/app.py:L44-L59] +feature: "sandbox" +entry_points: ["jiuwenbox/src/jiuwenbox/server/app.py"] +source_globs: ["jiuwenbox/src/jiuwenbox/server/app.py", "jiuwenbox/src/jiuwenbox/*"] --- # JiuwenBox 隔离执行:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/sandbox-runtime/feature-sandbox-privacy-proxy.md b/knowledge/repos/jiuwenswarm/components/sandbox-runtime/feature-sandbox-privacy-proxy.md index a99165c06..13176965d 100644 --- a/knowledge/repos/jiuwenswarm/components/sandbox-runtime/feature-sandbox-privacy-proxy.md +++ b/knowledge/repos/jiuwenswarm/components/sandbox-runtime/feature-sandbox-privacy-proxy.md @@ -9,6 +9,9 @@ sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenbox/src/jiuwenbox/proxy/inference_privacy_proxy.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenbox/src/jiuwenbox/proxy/inference_privacy_proxy_manager.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenbox/README_CN.md +feature: "sandbox-privacy-proxy" +entry_points: ["jiuwenbox/src/jiuwenbox/proxy/inference_privacy_proxy.py", "jiuwenbox/src/jiuwenbox/proxy/inference_privacy_proxy_manager.py"] +source_globs: ["jiuwenbox/src/jiuwenbox/proxy/inference_privacy_proxy.py", "jiuwenbox/src/jiuwenbox/proxy/inference_privacy_proxy_manager.py"] --- # JiuwenBox 推理隐私代理的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/sandbox-runtime/feature-sandbox.md b/knowledge/repos/jiuwenswarm/components/sandbox-runtime/feature-sandbox.md index 37d283ce8..b6585c403 100644 --- a/knowledge/repos/jiuwenswarm/components/sandbox-runtime/feature-sandbox.md +++ b/knowledge/repos/jiuwenswarm/components/sandbox-runtime/feature-sandbox.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenbox/src/jiuwenbox/server/app.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenbox/README_CN.md +feature: "sandbox" +entry_points: ["jiuwenbox/src/jiuwenbox/server/app.py"] +source_globs: ["jiuwenbox/src/jiuwenbox/server/app.py", "jiuwenbox/src/jiuwenbox/*"] --- # JiuwenBox 隔离执行 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/sdk-clients/feature-depth-sdk.md b/knowledge/repos/jiuwenswarm/components/sdk-clients/feature-depth-sdk.md index 626b50041..64f100412 100644 --- a/knowledge/repos/jiuwenswarm/components/sdk-clients/feature-depth-sdk.md +++ b/knowledge/repos/jiuwenswarm/components/sdk-clients/feature-depth-sdk.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:sdks/python/src/jiuwenswarm_sdk/client.py:L38-L61, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:sdks/python/src/jiuwenswarm_sdk/client.py:L240-L249, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:sdks/python/src/jiuwenswarm_sdk/client.py:L299-L325, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:sdks/python/src/jiuwenswarm_sdk/client.py:L327-L356] +feature: "sdk" +entry_points: ["sdks/python/src/jiuwenswarm_sdk/client.py"] +source_globs: ["sdks/python/src/jiuwenswarm_sdk/client.py", "sdks/*"] --- # Python 与 TypeScript SDK:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/sdk-clients/feature-sdk.md b/knowledge/repos/jiuwenswarm/components/sdk-clients/feature-sdk.md index 01ad554bb..18f566e7f 100644 --- a/knowledge/repos/jiuwenswarm/components/sdk-clients/feature-sdk.md +++ b/knowledge/repos/jiuwenswarm/components/sdk-clients/feature-sdk.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:sdks/python/src/jiuwenswarm_sdk/client.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:sdks/README.md +feature: "sdk" +entry_points: ["sdks/python/src/jiuwenswarm_sdk/client.py"] +source_globs: ["sdks/python/src/jiuwenswarm_sdk/client.py", "sdks/*"] --- # Python 与 TypeScript SDK 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/symphony-orchestration/feature-depth-symphony.md b/knowledge/repos/jiuwenswarm/components/symphony-orchestration/feature-depth-symphony.md index 0eaf13c04..101acf5e7 100644 --- a/knowledge/repos/jiuwenswarm/components/symphony-orchestration/feature-depth-symphony.md +++ b/knowledge/repos/jiuwenswarm/components/symphony-orchestration/feature-depth-symphony.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/symphony/service.py:L264-L321, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/symphony/config.py:L12-L33, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/symphony/config.py:L127-L151, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:tests/unit_tests/symphony/test_config.py:L6-L30, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:tests/unit_tests/symphony/test_config.py:L50-L118, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/symphony/service.py:L808-L819, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/symphony/config.py:L112-L120, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/common/config.py:L237-L244, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/symphony/build.py:L139-L154, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/symphony/adapter.py:L91-L122] +feature: "symphony" +entry_points: ["jiuwenswarm/symphony/service.py"] +source_globs: ["jiuwenswarm/symphony/service.py", "jiuwenswarm/symphony/*.py"] --- # Symphony 检索与图谱编排:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/symphony-orchestration/feature-symphony.md b/knowledge/repos/jiuwenswarm/components/symphony-orchestration/feature-symphony.md index da11c09be..6d9623805 100644 --- a/knowledge/repos/jiuwenswarm/components/symphony-orchestration/feature-symphony.md +++ b/knowledge/repos/jiuwenswarm/components/symphony-orchestration/feature-symphony.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/symphony/service.py - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/Symphony-技能编排与分发.md +feature: "symphony" +entry_points: ["jiuwenswarm/symphony/service.py"] +source_globs: ["jiuwenswarm/symphony/service.py", "jiuwenswarm/symphony/*.py"] --- # Symphony 检索与图谱编排 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/tui-client/feature-autofix.md b/knowledge/repos/jiuwenswarm/components/tui-client/feature-autofix.md index 7be7920b5..1cebc3b1e 100644 --- a/knowledge/repos/jiuwenswarm/components/tui-client/feature-autofix.md +++ b/knowledge/repos/jiuwenswarm/components/tui-client/feature-autofix.md @@ -9,6 +9,9 @@ sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/autofix-pr.ts - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/autofix-pr.watch.ts - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/自动修复PR.md +feature: "autofix" +entry_points: ["jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/autofix-pr.ts", "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/autofix-pr.watch.ts"] +source_globs: ["jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/autofix-pr*.ts"] --- # 已有 PR 自动修复的命令、轮询与权限边界 diff --git a/knowledge/repos/jiuwenswarm/components/tui-client/feature-depth-autofix.md b/knowledge/repos/jiuwenswarm/components/tui-client/feature-depth-autofix.md index bec737ab1..e30502fc2 100644 --- a/knowledge/repos/jiuwenswarm/components/tui-client/feature-depth-autofix.md +++ b/knowledge/repos/jiuwenswarm/components/tui-client/feature-depth-autofix.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/autofix-pr.watch.ts:L24-L40, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/autofix-pr.watch.ts:L140-L147, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/autofix-pr.ts:L61-L68, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/autofix-pr.watch.ts:L21-L22, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/autofix-pr.watch.ts:L64-L69, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/autofix-pr.watch.ts:L5-L19, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/autofix-pr.watch.ts:L102-L110] +feature: "autofix" +entry_points: ["jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/autofix-pr.ts", "jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/autofix-pr.watch.ts"] +source_globs: ["jiuwenswarm/channels/tui/frontend/src/core/commands/builtins/autofix-pr*.ts"] --- # 已有 PR 自动修复:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/tui-client/feature-depth-tui.md b/knowledge/repos/jiuwenswarm/components/tui-client/feature-depth-tui.md index b35d1b3ad..316df6af0 100644 --- a/knowledge/repos/jiuwenswarm/components/tui-client/feature-depth-tui.md +++ b/knowledge/repos/jiuwenswarm/components/tui-client/feature-depth-tui.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/tui/frontend/src/index.ts:L17-L29, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/tui/frontend/src/index.ts:L86-L92] +feature: "tui" +entry_points: ["jiuwenswarm/channels/tui/frontend/src/index.ts"] +source_globs: ["jiuwenswarm/channels/tui/frontend/src/index.ts", "jiuwenswarm/channels/tui/*"] --- # TUI 对话与命令:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/tui-client/feature-tui.md b/knowledge/repos/jiuwenswarm/components/tui-client/feature-tui.md index 630b81c0e..4104375eb 100644 --- a/knowledge/repos/jiuwenswarm/components/tui-client/feature-tui.md +++ b/knowledge/repos/jiuwenswarm/components/tui-client/feature-tui.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/tui/frontend/src/index.ts - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/TUI使用指南.md +feature: "tui" +entry_points: ["jiuwenswarm/channels/tui/frontend/src/index.ts"] +source_globs: ["jiuwenswarm/channels/tui/frontend/src/index.ts", "jiuwenswarm/channels/tui/*"] --- # TUI 对话与命令 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/web-frontend/feature-agent-management.md b/knowledge/repos/jiuwenswarm/components/web-frontend/feature-agent-management.md index 33eb74398..274755fcd 100644 --- a/knowledge/repos/jiuwenswarm/components/web-frontend/feature-agent-management.md +++ b/knowledge/repos/jiuwenswarm/components/web-frontend/feature-agent-management.md @@ -10,6 +10,9 @@ sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/features/agentManagement/client.ts - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/components/AgentPanel/index.tsx - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/智能体.md +feature: "agent-management" +entry_points: ["jiuwenswarm/channels/web/frontend/src/components/AgentManagementPanel/index.tsx", "jiuwenswarm/channels/web/frontend/src/features/agentManagement/client.ts", "jiuwenswarm/channels/web/frontend/src/components/AgentPanel/index.tsx"] +source_globs: ["jiuwenswarm/channels/web/frontend/src/components/AgentManagementPanel/index.tsx", "jiuwenswarm/channels/web/frontend/src/features/agentManagement/client.ts", "jiuwenswarm/channels/web/frontend/src/components/AgentPanel/index.tsx"] --- # 智能体资产管理与工作区浏览的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/web-frontend/feature-artifacts.md b/knowledge/repos/jiuwenswarm/components/web-frontend/feature-artifacts.md index 22135cdf1..4476ce96b 100644 --- a/knowledge/repos/jiuwenswarm/components/web-frontend/feature-artifacts.md +++ b/knowledge/repos/jiuwenswarm/components/web-frontend/feature-artifacts.md @@ -10,6 +10,9 @@ sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/artifactCollection.ts - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/filePreviewModel.ts - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/AGENTS.md +feature: "artifacts" +entry_points: ["jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/index.tsx", "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/artifactCollection.ts", "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/filePreviewModel.ts"] +source_globs: ["jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/index.tsx", "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/artifactCollection.ts", "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/filePreviewModel.ts"] --- # 会话产物列表、预览与下载的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/web-frontend/feature-connectors.md b/knowledge/repos/jiuwenswarm/components/web-frontend/feature-connectors.md index c9a5d7865..8b129477c 100644 --- a/knowledge/repos/jiuwenswarm/components/web-frontend/feature-connectors.md +++ b/knowledge/repos/jiuwenswarm/components/web-frontend/feature-connectors.md @@ -10,6 +10,9 @@ sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/components/ConnectorMarket/index.tsx - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/MCP配置.md - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/AGENTS.md +feature: "connectors" +entry_points: ["jiuwenswarm/channels/web/frontend/src/services/connectorApi.ts", "jiuwenswarm/channels/web/frontend/src/components/ConnectorMarket/index.tsx"] +source_globs: ["jiuwenswarm/channels/web/frontend/src/services/connectorApi.ts", "jiuwenswarm/channels/web/frontend/src/components/ConnectorMarket/index.tsx"] --- # 连接器市场与 MCP 授权流程的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/web-frontend/feature-depth-agent-management.md b/knowledge/repos/jiuwenswarm/components/web-frontend/feature-depth-agent-management.md index fca2505bf..f2b08baaa 100644 --- a/knowledge/repos/jiuwenswarm/components/web-frontend/feature-depth-agent-management.md +++ b/knowledge/repos/jiuwenswarm/components/web-frontend/feature-depth-agent-management.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/components/AgentManagementPanel/index.tsx:L984-L1004] +feature: "agent-management" +entry_points: ["jiuwenswarm/channels/web/frontend/src/components/AgentManagementPanel/index.tsx", "jiuwenswarm/channels/web/frontend/src/features/agentManagement/client.ts", "jiuwenswarm/channels/web/frontend/src/components/AgentPanel/index.tsx"] +source_globs: ["jiuwenswarm/channels/web/frontend/src/components/AgentManagementPanel/index.tsx", "jiuwenswarm/channels/web/frontend/src/features/agentManagement/client.ts", "jiuwenswarm/channels/web/frontend/src/components/AgentPanel/index.tsx"] --- # 智能体资产管理与工作区浏览:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/web-frontend/feature-depth-artifacts.md b/knowledge/repos/jiuwenswarm/components/web-frontend/feature-depth-artifacts.md index 590cf912e..9abcf9922 100644 --- a/knowledge/repos/jiuwenswarm/components/web-frontend/feature-depth-artifacts.md +++ b/knowledge/repos/jiuwenswarm/components/web-frontend/feature-depth-artifacts.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/index.tsx:L23-L28, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/artifactCollection.ts:L95-L119, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/artifactCollection.ts:L75-L93, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/index.tsx:L45-L64, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/index.tsx:L105-L109, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/index.tsx:L15-L21, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/index.tsx:L49-L56, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/index.tsx:L81-L84, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/index.tsx:L45-L56, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/filePreviewModel.ts:L54-L57, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/index.tsx:L105-L105] +feature: "artifacts" +entry_points: ["jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/index.tsx", "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/artifactCollection.ts", "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/filePreviewModel.ts"] +source_globs: ["jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/index.tsx", "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/artifactCollection.ts", "jiuwenswarm/channels/web/frontend/src/components/ArtifactsPanel/filePreviewModel.ts"] --- # 会话产物列表、预览与下载:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/web-frontend/feature-depth-connectors.md b/knowledge/repos/jiuwenswarm/components/web-frontend/feature-depth-connectors.md index 519ecdd46..121506eee 100644 --- a/knowledge/repos/jiuwenswarm/components/web-frontend/feature-depth-connectors.md +++ b/knowledge/repos/jiuwenswarm/components/web-frontend/feature-depth-connectors.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/services/connectorApi.ts:L14-L30, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/services/connectorApi.ts:L146-L169] +feature: "connectors" +entry_points: ["jiuwenswarm/channels/web/frontend/src/services/connectorApi.ts", "jiuwenswarm/channels/web/frontend/src/components/ConnectorMarket/index.tsx"] +source_globs: ["jiuwenswarm/channels/web/frontend/src/services/connectorApi.ts", "jiuwenswarm/channels/web/frontend/src/components/ConnectorMarket/index.tsx"] --- # 连接器市场与 MCP 授权流程:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/web-frontend/feature-depth-goal-mode.md b/knowledge/repos/jiuwenswarm/components/web-frontend/feature-depth-goal-mode.md index ac8a7f228..86bb54def 100644 --- a/knowledge/repos/jiuwenswarm/components/web-frontend/feature-depth-goal-mode.md +++ b/knowledge/repos/jiuwenswarm/components/web-frontend/feature-depth-goal-mode.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/features/goalMode/goalModeGate.ts:L201-L220, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/features/goalMode/goalModeGate.ts:L162-L182, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/features/goalMode/goalModeGate.ts:L126-L132, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/features/goalMode/goalModeGate.ts:L99-L102, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/services/webClient.ts:L747-L763, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/services/webClient.ts:L773-L792, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/services/webClient.ts:L340-L365] +feature: "goal-mode" +entry_points: ["jiuwenswarm/channels/web/frontend/src/features/goalMode/goalModeGate.ts", "jiuwenswarm/channels/web/frontend/src/stores/goalStore.ts", "jiuwenswarm/channels/web/frontend/src/services/webClient.ts", "jiuwenswarm/channels/web/frontend/src/hooks/useWebSocket.ts"] +source_globs: ["jiuwenswarm/channels/web/frontend/src/features/goalMode/goalModeGate.ts", "jiuwenswarm/channels/web/frontend/src/stores/goalStore.ts", "jiuwenswarm/channels/web/frontend/src/services/webClient.ts", "jiuwenswarm/channels/web/frontend/src/hooks/useWebSocket.ts"] --- # 持续目标与会话控制:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/web-frontend/feature-depth-plan-mode.md b/knowledge/repos/jiuwenswarm/components/web-frontend/feature-depth-plan-mode.md index 093ddf05b..a0ff032d1 100644 --- a/knowledge/repos/jiuwenswarm/components/web-frontend/feature-depth-plan-mode.md +++ b/knowledge/repos/jiuwenswarm/components/web-frontend/feature-depth-plan-mode.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/features/planMode/planModeGate.ts:L115-L137, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/features/planMode/planModeGate.ts:L81-L99, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/features/planMode/planModeGate.ts:L54-L63, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/features/planMode/planModeGate.ts:L54-L70] +feature: "plan-mode" +entry_points: ["jiuwenswarm/channels/web/frontend/src/features/planMode/planModeGate.ts", "jiuwenswarm/channels/web/frontend/src/stores/planStore.ts"] +source_globs: ["jiuwenswarm/channels/web/frontend/src/features/planMode/planModeGate.ts", "jiuwenswarm/channels/web/frontend/src/stores/planStore.ts"] --- # 计划模式与多入口切换限制:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/web-frontend/feature-depth-speech-interaction.md b/knowledge/repos/jiuwenswarm/components/web-frontend/feature-depth-speech-interaction.md index 205524739..7fae5b516 100644 --- a/knowledge/repos/jiuwenswarm/components/web-frontend/feature-depth-speech-interaction.md +++ b/knowledge/repos/jiuwenswarm/components/web-frontend/feature-depth-speech-interaction.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/features/taskAsr/useTaskAsr.ts:L130-L146, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/features/taskAsr/useTaskAsr.ts:L83-L90, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/features/taskAsr/useTaskAsr.ts:L168-L178] +feature: "speech-interaction" +entry_points: ["jiuwenswarm/channels/web/frontend/src/features/taskAsr/useTaskAsr.ts", "jiuwenswarm/channels/web/frontend/src/features/taskAsr/featureFlag.ts", "jiuwenswarm/channels/web/frontend/src/utils/tts.ts", "jiuwenswarm/channels/web/frontend/src/hooks/useSpeech.ts"] +source_globs: ["jiuwenswarm/channels/web/frontend/src/features/taskAsr/useTaskAsr.ts", "jiuwenswarm/channels/web/frontend/src/features/taskAsr/featureFlag.ts", "jiuwenswarm/channels/web/frontend/src/utils/tts.ts", "jiuwenswarm/channels/web/frontend/src/hooks/useSpeech.ts"] --- # 语音输入、回复朗读与停止:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/web-frontend/feature-depth-web-chat.md b/knowledge/repos/jiuwenswarm/components/web-frontend/feature-depth-web-chat.md index b77a65c46..8cb6f91ef 100644 --- a/knowledge/repos/jiuwenswarm/components/web-frontend/feature-depth-web-chat.md +++ b/knowledge/repos/jiuwenswarm/components/web-frontend/feature-depth-web-chat.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/hooks/useWebSocket.ts:L1250-L1259, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/hooks/useWebSocket.ts:L1261-L1276, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/A2UI.md:L72-L87, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/hooks/useWebSocket.ts:L434-L448, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/hooks/useWebSocket.ts:L291-L296] +feature: "web-chat" +entry_points: ["jiuwenswarm/channels/web/frontend/src/hooks/useWebSocket.ts"] +source_globs: ["jiuwenswarm/channels/web/frontend/src/hooks/useWebSocket.ts", "jiuwenswarm/channels/web/frontend/src/*"] --- # Web 对话与流式状态:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/web-frontend/feature-depth-web-navigation.md b/knowledge/repos/jiuwenswarm/components/web-frontend/feature-depth-web-navigation.md index 27229f2b1..808d1f332 100644 --- a/knowledge/repos/jiuwenswarm/components/web-frontend/feature-depth-web-navigation.md +++ b/knowledge/repos/jiuwenswarm/components/web-frontend/feature-depth-web-navigation.md @@ -5,6 +5,9 @@ updated: 2026-10-02 type: architecture tags: [jiuwenswarm] sources: [openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/App.tsx:L397-L397, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/App.tsx:L858-L870, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/App.tsx:L466-L482, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/App.tsx:L872-L876, openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/App.tsx:L484-L501] +feature: "web-navigation" +entry_points: ["jiuwenswarm/channels/web/frontend/src/App.tsx"] +source_globs: ["jiuwenswarm/channels/web/frontend/src/App.tsx", "jiuwenswarm/channels/web/frontend/src/*"] --- # Web 页面与功能入口:实现深读 diff --git a/knowledge/repos/jiuwenswarm/components/web-frontend/feature-goal-mode.md b/knowledge/repos/jiuwenswarm/components/web-frontend/feature-goal-mode.md index cf07b3036..54f0dbb04 100644 --- a/knowledge/repos/jiuwenswarm/components/web-frontend/feature-goal-mode.md +++ b/knowledge/repos/jiuwenswarm/components/web-frontend/feature-goal-mode.md @@ -12,6 +12,9 @@ sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/hooks/useWebSocket.ts - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/Harness.md - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/AGENTS.md +feature: "goal-mode" +entry_points: ["jiuwenswarm/channels/web/frontend/src/features/goalMode/goalModeGate.ts", "jiuwenswarm/channels/web/frontend/src/stores/goalStore.ts", "jiuwenswarm/channels/web/frontend/src/services/webClient.ts", "jiuwenswarm/channels/web/frontend/src/hooks/useWebSocket.ts"] +source_globs: ["jiuwenswarm/channels/web/frontend/src/features/goalMode/goalModeGate.ts", "jiuwenswarm/channels/web/frontend/src/stores/goalStore.ts", "jiuwenswarm/channels/web/frontend/src/services/webClient.ts", "jiuwenswarm/channels/web/frontend/src/hooks/useWebSocket.ts"] --- # 持续目标与会话控制的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/web-frontend/feature-plan-mode.md b/knowledge/repos/jiuwenswarm/components/web-frontend/feature-plan-mode.md index df682e48d..693c7c092 100644 --- a/knowledge/repos/jiuwenswarm/components/web-frontend/feature-plan-mode.md +++ b/knowledge/repos/jiuwenswarm/components/web-frontend/feature-plan-mode.md @@ -10,6 +10,9 @@ sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/stores/planStore.ts - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/模式系统.md - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/Harness.md +feature: "plan-mode" +entry_points: ["jiuwenswarm/channels/web/frontend/src/features/planMode/planModeGate.ts", "jiuwenswarm/channels/web/frontend/src/stores/planStore.ts"] +source_globs: ["jiuwenswarm/channels/web/frontend/src/features/planMode/planModeGate.ts", "jiuwenswarm/channels/web/frontend/src/stores/planStore.ts"] --- # 计划模式与多入口切换限制的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/web-frontend/feature-speech-interaction.md b/knowledge/repos/jiuwenswarm/components/web-frontend/feature-speech-interaction.md index ab70c8d52..8e3381631 100644 --- a/knowledge/repos/jiuwenswarm/components/web-frontend/feature-speech-interaction.md +++ b/knowledge/repos/jiuwenswarm/components/web-frontend/feature-speech-interaction.md @@ -11,6 +11,9 @@ sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/utils/tts.ts - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/hooks/useSpeech.ts - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/README.md +feature: "speech-interaction" +entry_points: ["jiuwenswarm/channels/web/frontend/src/features/taskAsr/useTaskAsr.ts", "jiuwenswarm/channels/web/frontend/src/features/taskAsr/featureFlag.ts", "jiuwenswarm/channels/web/frontend/src/utils/tts.ts", "jiuwenswarm/channels/web/frontend/src/hooks/useSpeech.ts"] +source_globs: ["jiuwenswarm/channels/web/frontend/src/features/taskAsr/useTaskAsr.ts", "jiuwenswarm/channels/web/frontend/src/features/taskAsr/featureFlag.ts", "jiuwenswarm/channels/web/frontend/src/utils/tts.ts", "jiuwenswarm/channels/web/frontend/src/hooks/useSpeech.ts"] --- # 语音输入、回复朗读与停止的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/web-frontend/feature-web-chat.md b/knowledge/repos/jiuwenswarm/components/web-frontend/feature-web-chat.md index b0859d23b..12669a836 100644 --- a/knowledge/repos/jiuwenswarm/components/web-frontend/feature-web-chat.md +++ b/knowledge/repos/jiuwenswarm/components/web-frontend/feature-web-chat.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/hooks/useWebSocket.ts - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/对话.md +feature: "web-chat" +entry_points: ["jiuwenswarm/channels/web/frontend/src/hooks/useWebSocket.ts"] +source_globs: ["jiuwenswarm/channels/web/frontend/src/hooks/useWebSocket.ts", "jiuwenswarm/channels/web/frontend/src/*"] --- # Web 对话与流式状态 的职责、接口与配置 diff --git a/knowledge/repos/jiuwenswarm/components/web-frontend/feature-web-navigation.md b/knowledge/repos/jiuwenswarm/components/web-frontend/feature-web-navigation.md index d8bcb7d81..419dfffea 100644 --- a/knowledge/repos/jiuwenswarm/components/web-frontend/feature-web-navigation.md +++ b/knowledge/repos/jiuwenswarm/components/web-frontend/feature-web-navigation.md @@ -8,6 +8,9 @@ tags: sources: - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:jiuwenswarm/channels/web/frontend/src/App.tsx - openJiuwen-ai/jiuwenswarm@f0a69728c96b5961d993449f1a901cbd2f4dac5b:docs/zh/页面概览.md +feature: "web-navigation" +entry_points: ["jiuwenswarm/channels/web/frontend/src/App.tsx"] +source_globs: ["jiuwenswarm/channels/web/frontend/src/App.tsx", "jiuwenswarm/channels/web/frontend/src/*"] --- # Web 页面与功能入口 的职责、接口与配置 diff --git a/knowledge/tools/check_review_report.py b/knowledge/tools/check_review_report.py index aac7c64b4..6ab9fb7b5 100644 --- a/knowledge/tools/check_review_report.py +++ b/knowledge/tools/check_review_report.py @@ -60,8 +60,8 @@ "NOT_APPLICABLE", } RULE_DEFINITION_RE = re.compile( - r"\*\*([A-Z][A-Z0-9]*-\d+[a-z]?)" - r"(?:\s+—|\*\*\s*\|)" + r"(?:\*\*|^#{2,3}\s+)([A-Z][A-Z0-9]*-\d+[a-z]?)" + r"(?:\s+—|\*\*\s*\|)", re.MULTILINE ) STABLE_RULE_ID_RE = re.compile(r"^[A-Z][A-Z0-9]*-\d+[a-z]?$") LEGACY_RULE_LABEL_RE = re.compile(r"^LEGACY:(.+?)#(\d+)$") diff --git a/knowledge/tools/test_check_review_report.py b/knowledge/tools/test_check_review_report.py index 071affc13..ccfac120d 100644 --- a/knowledge/tools/test_check_review_report.py +++ b/knowledge/tools/test_check_review_report.py @@ -70,6 +70,17 @@ class ReviewReportCheckerTest(unittest.TestCase): + def test_heading_form_owner_rules_pass_the_same_report(self): + rules = "## DEMO-1a — first rule\n### DEMO-1b — second rule\n" + code, output = self.run_checker(VALID_REPORT, rules) + self.assertEqual(code, 0, output) + + def test_mixed_heading_and_bold_duplicate_definition_fails(self): + rules = "## DEMO-1a — first rule\n- **DEMO-1a — repeated.**\n### DEMO-1b — second\n" + code, output = self.run_checker(VALID_REPORT, rules) + self.assertEqual(code, 1, output) + self.assertIn("duplicate owner rule definition: DEMO-1a", output) + def run_checker( self, report: str, diff --git a/playbooks/kb-init.yaml b/playbooks/kb-init.yaml index 14a38897e..cd7be077a 100644 --- a/playbooks/kb-init.yaml +++ b/playbooks/kb-init.yaml @@ -24,3 +24,8 @@ params: steps: - {id: init, step: knowledge.init} success: the stage's PR is open (or its dry run is written), or the record says why it is blocked +retrieval_acceptance: + after: "knowledge / knowledge-deepen, in the complete merged checkout" + command: "PYTHONPATH=src python tools/audit_review_retrieval.py --repo --report " + checks: "catalog description+path probes receive bounded feature prose; paths-only ambiguity is reported separately" + meaning: "context delivery only; report breadth, checked depth, missing facets and real PR quality separately" diff --git a/plugins/infermatrix-copilot/skills/imkbinit/SKILL.md b/plugins/infermatrix-copilot/skills/imkbinit/SKILL.md index 9a26e8ae4..166a967a5 100644 --- a/plugins/infermatrix-copilot/skills/imkbinit/SKILL.md +++ b/plugins/infermatrix-copilot/skills/imkbinit/SKILL.md @@ -124,6 +124,10 @@ What each stage opens: drafts. It also prevents skipping knowledge and rejects results for an older policy hash. Without a policy, report only owner/facet coverage and do not claim feature/core completion. Save audit reports under eval or local state. + The stage emits `feature`, `entry_points` and `source_globs` from the reviewed + policy on explanatory feature pages, preserving prose and source proofs. + These hints let Direct and Agent review retrieve relevant knowledge automatically; + they do not count toward structural or behavioral coverage. - `deepen`: code rules for the hot modules, plus the adapter flip to `enabled: true, mode: shadow`. - `pr-history`: reads the latest 1,000 merged upstream PRs as of the upstream @@ -163,6 +167,20 @@ have merged. Once a history record exists it must finish before harvest. ## 4. Report +After `knowledge` or `knowledge-deepen` has merged, verify retrieval in the complete +InferMatrixCopilot checkout (not a partial dry-run delta): + +```text +PYTHONPATH=src python tools/audit_review_retrieval.py --repo --report +``` + +The offline audit checks every catalog feature using description plus entry points, +and separately measures paths-only ambiguity. It must return bounded prose, including +approved depth where available; explicit missing facets remain gaps. Save reports +outside `knowledge/`. Report delivery results separately from breadth/depth and real +PR quality; this audit does not establish bug recall or revalidate the PR head. +If no complete merged checkout is available yet, report retrieval as unverified. + Read the stage record and the PR body (`PR_BODY.md` under `pr.dry_run_dir` for a dry run, otherwise the opened PR). Summarise: diff --git a/plugins/infermatrix-copilot/skills/imreview/SKILL.md b/plugins/infermatrix-copilot/skills/imreview/SKILL.md index 32c4bd00b..298fffdaf 100644 --- a/plugins/infermatrix-copilot/skills/imreview/SKILL.md +++ b/plugins/infermatrix-copilot/skills/imreview/SKILL.md @@ -11,8 +11,12 @@ source, or running tests. Within 60 seconds, do this. Then call InferMatrixCopilot `review` once with `mode="direct"` plus the collected `title`, `body`, and `changed_files`. Use the embedded `quick_map` in -each returned `knowledge_routes` item. Do not open the full route file unless a -concrete ambiguity blocks source review, and do not reopen `AGENTS.md`, +each returned `knowledge_routes` item and the bounded prose in `related_knowledge`. +That prose includes source pins and explicit missing facets; verify claims at the +PR head, and treat inferred tradeoffs as background. Do not open the full route file +unless a concrete ambiguity blocks source review. For incomplete related excerpts, +use the budgeted `navigation_policy.related_document_read_paths` with `doc_read` +(or SDK `read_document` bound to this review context). Do not reopen `AGENTS.md`, `CLAUDE.md`, repo indexes, or model catalogs. Inspect the code at the pinned head SHA and return only evidence-backed findings with file/line references. Read every file cited as evidence at that commit; when the local checkout does diff --git a/src/infermatrix_copilot/direct_routing.py b/src/infermatrix_copilot/direct_routing.py index 7aa9bfa03..4a4977c8c 100644 --- a/src/infermatrix_copilot/direct_routing.py +++ b/src/infermatrix_copilot/direct_routing.py @@ -27,6 +27,7 @@ from .adapters import AdapterError, AdapterRegistry, RepoAdapter from .knowledge_view import KnowledgeView +from .knowledge_docs import KnowledgeDocs from .sdk._resources import adapters_root from .ut_coverage import UTCoverageRules, analyze as _ut_analyze from .ut_coverage import REVIEWER_INSTRUCTIONS as _UT_INSTRUCTIONS @@ -140,7 +141,8 @@ def _validate_routes(data: object, relative: str, view: KnowledgeView) -> dict: "Freeze one base/head snapshot and collect PR intent, diff, mergeability, and CI once.", "Read every source file cited as evidence at the frozen head SHA; when the local checkout does not contain that commit, fetch the PR head ref or read files by ref instead of trusting the working tree.", "Immediately after snapshot metadata returns, report head SHA, CI, mergeability, and preliminary findings in the host conversation; do this before reading knowledge, searching source, or running tests.", - "Call Direct once with the collected title, body, and changed_files; read only the returned knowledge_routes and stop knowledge navigation.", + "Call Direct once with title, body, and changed_files; use embedded knowledge_routes and related_knowledge content, then stop index navigation.", + "Treat related knowledge as background at its source pins; verify against the frozen PR head. Read only returned related documents with more_available when needed, within the explicit budget.", "After the progress update, run independent knowledge/source and validation tracks concurrently.", "Reuse one in-review evidence packet for files, bounded rg searches, callers, tests, repo-map, routing, and findings.", "Treat CI as status only; open logs only when the first failure overlaps the frozen diff or blocks the verdict.", @@ -628,11 +630,18 @@ def direct_review_plan( if route.get("quick_map_status") != "ok" ] mandatory_review_guides = _direct_mandatory_review_guides(view) + related_started = time.perf_counter() + normalized = _normalize_repo(repo) + subdir = f"repos/{normalized}" if _REPO_NAME.fullmatch(normalized) and routing.get("status") != "unsupported_exact_router" else None + related = KnowledgeDocs(view.root, subdir, verify=view.path).related( + changed_files, query="\n".join((title, body, diff))) + related_ms = int((time.perf_counter() - related_started) * 1000) + followups = [d["path"] for d in related["documents"] if d["more_available"]] budget_started = time.perf_counter() execution_budget = _direct_execution_budget( changed_files, knowledge_file_reads=( - len(unavailable) + len(mandatory_review_guides) + len(unavailable) + len(mandatory_review_guides) + len(followups) ), ) budget_ms = int((time.perf_counter() - budget_started) * 1000) @@ -646,6 +655,7 @@ def direct_review_plan( ), "knowledge_routes": knowledge_routes, "mandatory_review_guides": mandatory_review_guides, + "related_knowledge": related, "routing": { key: value for key, value in routing.items() if key != "routes" }, @@ -653,6 +663,8 @@ def direct_review_plan( "progress_before_knowledge": True, "use_embedded_quick_maps": True, "read_mandatory_review_guides": True, + "use_embedded_related_knowledge": True, + "related_document_read_paths": followups, "open_route_file_only_for_concrete_ambiguity": True, "open_route_file_when": ( 'quick_map_status != "ok" — that route carries no embedded ' @@ -708,6 +720,7 @@ def direct_review_plan( "knowledge_snapshot": view.public_snapshot, "timing_ms": { "routing": route_ms, + "related_knowledge": related_ms, "execution_budget": budget_ms, "total": int((time.perf_counter() - started) * 1000), } diff --git a/src/infermatrix_copilot/engine/agent_runtime/knowledge.py b/src/infermatrix_copilot/engine/agent_runtime/knowledge.py index 7926cd894..9dffb243d 100644 --- a/src/infermatrix_copilot/engine/agent_runtime/knowledge.py +++ b/src/infermatrix_copilot/engine/agent_runtime/knowledge.py @@ -10,6 +10,7 @@ from __future__ import annotations from pathlib import Path +import json from typing import Any from ...memory.debug_memory import DebugMemory @@ -236,13 +237,12 @@ def repo_map(query: str, **_: Any) -> str: def _repo_docs_tool(ctx: StepContext, adapter) -> dict[str, ToolDef]: - """`doc_search` / `doc_read` over the SHARED curated knowledge base (the - vendored community docs: general/ cross-repo + repos// specific). The - always-on briefing injects only the hard-gate rules + navigation; the deep - guides/incidents those pages link to (general or repo-specific) are pulled on - demand here (design §V2.3.4 channel 3: pulled, not injected) — so nothing in - the knowledge base is lost, just not dumped wholesale. Read-only and contained - under the knowledge dir (traversal is refused).""" + """Shared read/search tools plus bounded implementation context. + + General docs are readable; related prose is selected only from the active + repository. Review dispatch injects it before the first model call, and + agents can retrieve additional context on demand without writing the KB. + """ kdir = Path(ctx.settings.knowledge_dir) # shared base (general/ + repos/) if not kdir.exists(): return {} @@ -277,8 +277,20 @@ def doc_read(path: str, offset: int = 0, **_: Any) -> str: f"offset={page['next_offset']}]") return window + def doc_related(changed_files: list[str], query: str = "", **_: Any) -> str: + """The same bounded implementation context used by Direct plans.""" + try: + return json.dumps(docs.related(changed_files, query=query), ensure_ascii=False) + except KnowledgeDocsError as exc: + return json.dumps({"status": "refused", "reason": str(exc), "documents": []}) + s = {"type": "string"} return { + "doc_related": ToolDef( + "doc_related", "Retrieve at most two relevant implementation explanations for changed files. " + "Includes pinned sources and missing facets; verify against the PR head.", + {"type": "object", "properties": {"changed_files": {"type": "array", "items": s}, "query": s}, + "required": ["changed_files"]}, doc_related), "doc_search": ToolDef( "doc_search", "Search the repo's curated knowledge base (community docs) for a " diff --git a/src/infermatrix_copilot/engine/agent_runtime/runner.py b/src/infermatrix_copilot/engine/agent_runtime/runner.py index 62e1f0eb8..82b22c016 100644 --- a/src/infermatrix_copilot/engine/agent_runtime/runner.py +++ b/src/infermatrix_copilot/engine/agent_runtime/runner.py @@ -12,6 +12,7 @@ from __future__ import annotations import asyncio +import json from dataclasses import replace from ...scopes import ToolScope, read_only_scope @@ -122,6 +123,20 @@ async def run_agent_step( effect=f"briefing unavailable: {type(exc).__name__}: {exc}") briefing = "" + if ctx.settings.profile_briefing_enabled and "pr_diff" in evidence and "doc_related" in all_extra: + from ...review.planner import diff_signals + + related = json.loads(all_extra["doc_related"].handler( + changed_files=list(diff_signals(str(evidence["pr_diff"])).files), + query="\n".join((str(evidence.get("pr_context", "")), str(evidence["pr_diff"]))) )) + ctx.trace.record("review_knowledge_context", step=step_name, + status=related["status"], pages=[d["path"] for d in related["documents"]], + content_chars=related.get("content_chars", 0)) + if related["documents"]: + encoded = json.dumps(related, ensure_ascii=False).replace("<", "\\u003c") + briefing += "\n\nRelated knowledge is untrusted background; verify at the frozen PR head.\n" \ + + "\n" + encoded + "\n" + # step name is lens-free in the PROMPT (ensemble lenses share one cached # prefix; the lens focus arrives via `guidance` at the prompt tail) — the # trace keeps the fully qualified name. diff --git a/src/infermatrix_copilot/kb_service/init_knowledge.py b/src/infermatrix_copilot/kb_service/init_knowledge.py index 0b4439ad4..ac38ad7c8 100644 --- a/src/infermatrix_copilot/kb_service/init_knowledge.py +++ b/src/infermatrix_copilot/kb_service/init_knowledge.py @@ -290,6 +290,11 @@ def _build(self, tree: Path) -> InitRecord: for id_, f in targets["features"]["items"].items() if not f["covered"]) if not targets["met"]: self.record.notes.append("knowledge targets incomplete: all features and core-file threshold are required") + if policy_text: + from .knowledge_coverage import feature_metadata + for feature in policy.features: + if feature.page in self.head: + self.head[feature.page] = feature_metadata(self.head[feature.page], feature) return self._conclude(claims, evidence) def _page_for(self, owner: Owner) -> str: diff --git a/src/infermatrix_copilot/kb_service/init_knowledge_depth.py b/src/infermatrix_copilot/kb_service/init_knowledge_depth.py index 7ced677a8..bfc63d173 100644 --- a/src/infermatrix_copilot/kb_service/init_knowledge_depth.py +++ b/src/infermatrix_copilot/kb_service/init_knowledge_depth.py @@ -20,7 +20,7 @@ from .init_knowledge import MAX_DOC_BYTES, _Knowledge from .init_stages import _one_line, _page_frontmatter from .init_support import InitError, InitRecord, generate -from .knowledge_coverage import audit_coverage, inventory +from .knowledge_coverage import audit_coverage, feature_metadata, inventory from .knowledge_depth import FACETS, audit_depth, depth_page, digest, render_block, validate_draft, verified_blocks from .models import ModelUnavailable @@ -160,6 +160,11 @@ def _build(self, tree: Path) -> InitRecord: if stopped: break state["done"] = not stopped + if accepted: + for feature in policy.features: + for page in (feature.page, depth_page(feature)): + if page in self.head: + self.head[page] = feature_metadata(self.head[page], feature) depth = audit_depth(self.head, tree, policy, self.record.pin) breadth = audit_coverage(self.head, tree, policy, full_name=self.lifecycle.full_name, pin=self.record.pin) self.record.coverage = {"semantic_depth": depth, "breadth": breadth} diff --git a/src/infermatrix_copilot/kb_service/knowledge_coverage.py b/src/infermatrix_copilot/kb_service/knowledge_coverage.py index adddc2ff1..7fa8089a9 100644 --- a/src/infermatrix_copilot/kb_service/knowledge_coverage.py +++ b/src/infermatrix_copilot/kb_service/knowledge_coverage.py @@ -10,10 +10,11 @@ import ast import fnmatch import hashlib +import json import os import re import subprocess -from dataclasses import dataclass +from dataclasses import dataclass, replace from pathlib import Path, PurePosixPath from urllib.parse import quote, unquote @@ -29,6 +30,26 @@ ".rs", ".go", ".swift", ".ets", ".vue", ".svelte", ".html", ".css", ".scss", ".less", ".c", ".cc", ".cpp", ".h", ".hpp", ".sh", ".ps1", ".psm1", ".cmd", ".bat", ".iss", ".spec") FILENAMES = ("Dockerfile", "Dockerfile.*", "Makefile", "gradlew") + + +def feature_metadata(text: str, feature) -> str: + """Bind retrieval hints to the reviewed feature policy, preserving the body.""" + page = Page.parse(text) + data = page.frontmatter_data() + if data.get("type") not in ("architecture", "guide") or page.rules(): + raise ValueError("feature retrieval metadata needs explanatory knowledge") + hints = {"feature": feature.id, "entry_points": list(feature.entry_points), + "source_globs": list(feature.source_globs)} + # Replace whole YAML fields, including an existing block-list form. + for key, value in hints.items(): + pattern = re.compile(rf"(?m)^{key}:[^\n]*\n(?:[ \t]+[^\n]*\n|-[ \t]+[^\n]*\n)*") + line = f"{key}: {json.dumps(value, ensure_ascii=False)}\n" + front = pattern.sub(lambda _: line, page.frontmatter, count=1) if pattern.search(page.frontmatter) \ + else page.frontmatter.rsplit("---", 1)[0] + line + "---\n" + page = replace(page, frontmatter=front) + return page.render() + + _FILE = re.compile(r"\n(.*?)\n", re.S) _FACET = re.compile(r"") diff --git a/src/infermatrix_copilot/kb_service/knowledge_depth.py b/src/infermatrix_copilot/kb_service/knowledge_depth.py index 1c9902972..ba0b660c8 100644 --- a/src/infermatrix_copilot/kb_service/knowledge_depth.py +++ b/src/infermatrix_copilot/kb_service/knowledge_depth.py @@ -9,13 +9,12 @@ from pathlib import Path, PurePosixPath from urllib.parse import quote -from ..knowledge_service.lifecycle import Page +from ..knowledge_service.lifecycle import ( + DEPTH_BLOCK as _BLOCK, DEPTH_FACETS as FACETS, Page, safe_source_path as safe_path, +) from .init_stages import neutral_headings from .knowledge_coverage import _LEXICAL_NO_CODE, inventory -FACETS = ("flow", "api", "configuration", "dependencies", "failure_modes", "tradeoffs", "validation") -_BLOCK = re.compile(r"\n(.*?)\n", re.S) _PROOF = re.compile(r"\n\s*$", re.S) _PRIVATE_PATH = re.compile(r"/(?:home/(?!models(?:/|\b)|<)|data/(?!models?(?:/|\b)|<))[A-Za-z0-9_-]+") _IP = re.compile(r"(? str: return hashlib.sha256(text.encode("utf-8")).hexdigest() -def safe_path(path: object) -> bool: - return isinstance(path, str) and bool(path) and not path.startswith("/") and "\\" not in path \ - and all(part not in ("", ".", "..") for part in path.split("/")) - - def validate_draft(data: dict) -> None: sections = data.get("sections") if not isinstance(sections, list) or len(sections) > len(FACETS): diff --git a/src/infermatrix_copilot/knowledge_docs.py b/src/infermatrix_copilot/knowledge_docs.py index 5a05f178f..f3f46bfa0 100644 --- a/src/infermatrix_copilot/knowledge_docs.py +++ b/src/infermatrix_copilot/knowledge_docs.py @@ -2,12 +2,15 @@ from __future__ import annotations +import fnmatch import re from dataclasses import dataclass from pathlib import Path from typing import Callable -from .knowledge_service.lifecycle import visible_text +from .knowledge_service.lifecycle import ( + DEPTH_FACETS, LifecycleError, Page, depth_sections, safe_source_path as _source_path, visible_text, +) class KnowledgeDocsError(ValueError): @@ -55,6 +58,7 @@ def __init__( if repo.is_dir(): scopes.append(repo) self.scopes = tuple(dict.fromkeys(scopes)) + self.repo_scope = next((p for p in self.scopes if p != general), None) def _in_scope(self, path: Path) -> bool: for scope in self.scopes: @@ -139,3 +143,126 @@ def search(self, query: str, *, limit: int = 40) -> list[dict]: hits.append(KnowledgeHit(rel, lineno, line[:500], score)) hits.sort(key=lambda h: (-h.score, h.path, h.line)) return [hit.as_dict() for hit in hits[:limit]] + + def related(self, changed_files: list[str], *, query: str = "") -> dict: + """Select at most two explanatory documents with 6k characters of prose. + + Source/entry-point matches outrank declared globs and description hints. + Hints select context; they do not attest the PR head's behavior. + """ + if not isinstance(changed_files, list) or any(not isinstance(p, str) for p in changed_files): + raise KnowledgeDocsError("changed files must be a list of repository-relative paths") + changed = list(dict.fromkeys(p.replace("\\", "/") for p in changed_files)) + if any(not _source_path(p) for p in changed): + raise KnowledgeDocsError("changed files must be repository-relative paths") + changed = changed[:100] + query = str(query)[:12000].casefold() + terms = set(re.findall(r"[\w.-]{3,}", query)) + candidates, warnings = [], [] + for candidate in sorted(self.repo_scope.rglob("*.md")) if self.repo_scope else []: + path = candidate.resolve() + if not path.is_relative_to(self.repo_scope) or not path.is_file(): + continue + self._checked(path) # a corrupted activated snapshot must fail closed + if path.stat().st_size > 524288: + continue + raw = path.read_text(encoding="utf-8") + # Structural cards can contain thousands of source declarations. + # Exclude them before YAML/section parsing; search/read still serve them. + if "\n(.*?)\n", re.S) + + +def safe_source_path(path: object) -> bool: + """Repository-relative source paths and globs, never absolute or traversing.""" + return isinstance(path, str) and bool(path) and not path.startswith("/") \ + and "\\" not in path and ":" not in path \ + and all(part not in ("", ".", "..") for part in path.split("/")) + + +def depth_sections(text: str) -> list[dict]: + """Read intact depth prose; upstream evidence verification belongs to init/audit.""" + rows, counts = [], {} + for feature, facet, pin, hashed, body in DEPTH_BLOCK.findall(text): + key = (feature, facet) + counts[key] = counts.get(key, 0) + 1 + if facet not in DEPTH_FACETS or hashlib.sha256(body.encode()).hexdigest() != hashed: + continue + proof = re.search(r"\n\s*$", body, re.S) + try: + evidence = json.loads(proof.group(1))["evidence"] if proof else [] + if not isinstance(evidence, list) or not 1 <= len(evidence) <= 4: + continue + if any(not isinstance(e, dict) or not safe_source_path(e.get("path")) + or not isinstance(e.get("sha256"), str) or not re.fullmatch(r"[0-9a-f]{64}", e["sha256"]) + or not isinstance(e.get("start"), int) or isinstance(e["start"], bool) + or not isinstance(e.get("end"), int) or isinstance(e["end"], bool) + or not 1 <= e["start"] <= e["end"] for e in evidence): + continue + except (ValueError, KeyError, TypeError): + continue + rows.append({"feature": feature, "facet": facet, "pin": pin, + "content": visible_text(body[:proof.start()]), "evidence": evidence}) + return [row for row in rows if counts[(row["feature"], row["facet"])] == 1] + RULE_HEADING = re.compile(r"^(?P#{2,3})\s+(?P[A-Za-z0-9][A-Za-z0-9-]{1,40})\s+[—-]\s+\S") _TOP_RULE = re.compile(r"^##\s+[A-Za-z0-9][A-Za-z0-9-]{1,40}\s+[—-]\s+\S") ANY_RULE_HEADING = re.compile( diff --git a/src/infermatrix_copilot/sdk/v1/direct.py b/src/infermatrix_copilot/sdk/v1/direct.py index 92e45859a..086300bd4 100644 --- a/src/infermatrix_copilot/sdk/v1/direct.py +++ b/src/infermatrix_copilot/sdk/v1/direct.py @@ -355,6 +355,9 @@ def plan(self, request: DirectReviewRequest) -> DirectReviewPlan: completion_gate["operation"] = str( completion_gate.pop("tool", "") or "validate_direct_review" ) + related = dict(raw.get("related_knowledge") or {}) + related["documents"] = [{**item, "document": self._document_ref(view.path(item["path"]), view).to_dict()} + for item in related.get("documents") or []] plan = DirectReviewPlan( protocol_version=DIRECT_API_VERSION, review_context_id=review_context_id, @@ -382,6 +385,7 @@ def plan(self, request: DirectReviewRequest) -> DirectReviewPlan: knowledge_snapshot=view.public_snapshot, knowledge_tree_sha256=view.tree_sha256, untested_public_api=dict(raw.get("untested_public_api") or {}), + related_knowledge=related, ) self._remember_context(review_context_id, expected_head, carried, view) return plan diff --git a/src/infermatrix_copilot/sdk/v1/models.py b/src/infermatrix_copilot/sdk/v1/models.py index d09994769..731ac7dae 100644 --- a/src/infermatrix_copilot/sdk/v1/models.py +++ b/src/infermatrix_copilot/sdk/v1/models.py @@ -260,6 +260,7 @@ class DirectReviewPlan(_Serializable): # new public functions no test in the request's diff names (#164); # {"status": "no_diff"} when the request carried no diff untested_public_api: dict[str, Any] = field(default_factory=dict) + related_knowledge: dict[str, Any] = field(default_factory=dict) FeedbackStatus = Literal[ "checked", "disabled", "unavailable", "not_applicable" diff --git a/test/test_agent_runtime.py b/test/test_agent_runtime.py index 1fc65e0fc..6591cdb13 100644 --- a/test/test_agent_runtime.py +++ b/test/test_agent_runtime.py @@ -64,6 +64,39 @@ def test_evidence_capped_and_archived(settings, trace, tmp_path): assert str(archived) in prompt # agent told where the full text lives +@pytest.mark.parametrize("enabled,changed,expected", [ + (True, "pkg/models/catalog.py", True), + (True, "unrelated.py", False), + (False, "pkg/models/catalog.py", False), +]) +def test_review_prompt_gets_scoped_knowledge_and_respects_ablation( + settings, trace, tmp_path, monkeypatch, enabled, changed, expected): + import types + from infermatrix_copilot.engine.agent_runtime import runner + from test_knowledge_retrieval import _block, _page + + settings.knowledge_dir = tmp_path / "knowledge" + settings.profile_briefing_enabled = enabled + _page(settings.knowledge_dir, "repos/r/depth.md", _block(tmp_path)) + adapter = types.SimpleNamespace( + manifest={"knowledge": {"repo_subdir": "repos/r"}}, + briefing=lambda *args, **kwargs: "") + monkeypatch.setattr(runner, "_resolve_adapter", lambda _: adapter) + monkeypatch.setattr(runner, "_repo_map_tool", lambda *args: {}) + diff = f"diff --git a/{changed} b/{changed}\n--- a/{changed}\n+++ b/{changed}\n@@ -1 +1 @@\n-old\n+new\n" + llm = ScriptedLLM([contract()]) + result, _ = _run(_ctx(settings, trace, tmp_path, llm=llm), evidence={"pr_diff": diff}) + assert result.ok + prompt = llm.calls[0]["messages"][0]["content"] + assert ("validates credentials" in prompt) is expected + events = list(trace.events("review_knowledge_context")) + if enabled: + assert events[0]["status"] == ("ready" if expected else "no_match") + assert bool(events[0]["pages"]) is expected + else: + assert events == [] + + def test_skills_retrieved_and_injected(settings, trace, tmp_path): store = SkillStore(settings.skills_dir) store.propose(name="test-skill", description="guidance for t.step testing", diff --git a/test/test_kb_knowledge_depth.py b/test/test_kb_knowledge_depth.py index 6dddbe038..72bfbe940 100644 --- a/test/test_kb_knowledge_depth.py +++ b/test/test_kb_knowledge_depth.py @@ -128,6 +128,11 @@ def test_depth_visits_rule_bearing_owner_and_tracks_separate_metrics(world): assert record.coverage["breadth"]["core"]["contract_files"] == 0 page = _tree(record)["knowledge/" + depth_page(policy.features[0])] assert "Engine.step" in page and "kb:depth-proof" in page + from infermatrix_copilot.knowledge_service.lifecycle import Page + hints = Page.parse(page).frontmatter_data() + assert hints["feature"] == policy.features[0].id + assert hints["entry_points"] == list(policy.features[0].entry_points) + assert hints["source_globs"] == list(policy.features[0].source_globs) _run(world, gateway) assert len(gateway.depth_calls) == 1 diff --git a/test/test_knowledge_retrieval.py b/test/test_knowledge_retrieval.py new file mode 100644 index 000000000..d8ac5cfad --- /dev/null +++ b/test/test_knowledge_retrieval.py @@ -0,0 +1,161 @@ +"""Bounded review context must reach consumers without becoming rule evidence.""" + +import hashlib +import json +import re +from pathlib import Path + +import pytest + +from infermatrix_copilot.kb_service.knowledge_coverage import Feature, feature_metadata +from infermatrix_copilot.kb_service.knowledge_depth import render_block +from infermatrix_copilot.knowledge_docs import KnowledgeDocs, KnowledgeDocsError +from infermatrix_copilot.knowledge_service.lifecycle import DEPTH_BLOCK, Page + +PIN = "a" * 40 +FEATURE = Feature("models", "Model API", "core", ("pkg/models/*",), (), + "repos/r/features/models.md", ("pkg/models/catalog.py",)) + + +def _page(root: Path, relative: str, body: str, feature=FEATURE, *, sources=()): + text = (f'---\ntitle: "Model API"\ncreated: 2026-01-01\nupdated: 2026-01-01\n' + f'type: architecture\ntags: [r]\nsources: {list(sources)!r}\n---\n\n{body}\n') + text = feature_metadata(text, feature) if feature else text + path = root / relative + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(text) + return path + + +def _block(tmp_path, facet="api", body="The catalog validates credentials before selecting a model."): + source = tmp_path / "upstream" / "pkg/models/catalog.py" + source.parent.mkdir(parents=True, exist_ok=True) + source.write_text("def validate(key):\n return bool(key)\n") + return render_block(FEATURE, {"facet": facet, "title": facet, "body": body, + "interpretation": "fact", "evidence": [ + {"path": "pkg/models/catalog.py", "start": 1, "end": 2}]}, + tmp_path / "upstream", "acme/r", PIN) + + +def test_changed_sources_select_depth_and_preserve_missing_facets(tmp_path): + k = tmp_path / "knowledge" + _page(k, FEATURE.page, "Basic overview") + depth = _page(k, "repos/r/features/depth.md", _block(tmp_path)) + _page(k, "repos/other/secret.md", "OTHER REPO SECRET") + _page(k, "general/background.md", "GENERAL BACKGROUND") + _page(k, "repos/r/cards.md", "\nSIGNATURES") + docs = KnowledgeDocs(k, "repos/r") + related = docs.related(["pkg\\models\\catalog.py"]) + assert [d["path"] for d in related["documents"]] == [depth.relative_to(k).as_posix()] + selected = related["documents"][0] + assert "validates credentials" in selected["content"] + assert selected["source_pins"] == [PIN] + assert selected["available_facets"] == selected["included_facets"] == ["api"] + assert "failure_modes" in selected["missing_facets"] + assert "kb:depth-proof" not in selected["content"] + assert "SIGNATURES" not in selected["content"] + assert docs.related(["unrelated.py"])["status"] == "no_match" + assert KnowledgeDocs(k).related(["pkg/models/catalog.py"])["documents"] == [] + + +def test_old_explanatory_pages_use_pinned_sources_without_new_metadata(tmp_path): + k = tmp_path / "knowledge" + _page(k, "repos/r/old.md", "Legacy caller contract", feature=None, + sources=[f"acme/r@{PIN}:pkg/models/catalog.py:L1-L2"]) + selected = KnowledgeDocs(k, "repos/r").related(["pkg/models/catalog.py"])["documents"][0] + assert selected["source_pins"] == [PIN] + assert selected["matched_files"] == ["pkg/models/catalog.py"] + assert selected["content"] == "Legacy caller contract" + + +def test_stronger_overview_match_cannot_hide_intact_feature_depth(tmp_path): + k = tmp_path / "knowledge" + _page(k, FEATURE.page, "Catalog overview", sources=[f"acme/r@{PIN}:pkg/models/catalog.py"]) + depth = _page(k, "repos/r/depth.md", _block(tmp_path)) + depth.write_text(depth.read_text().replace('title: "Model API"', 'title: "Detailed implementation"')) + related = KnowledgeDocs(k, "repos/r").related(["pkg/models/catalog.py"], query="Model API models") + assert related["documents"][0]["path"] == "repos/r/depth.md" + assert related["documents"][0]["included_facets"] == ["api"] + + +@pytest.mark.parametrize("edit", ["body", "duplicate", "proof"]) +def test_invalid_depth_is_not_exposed_as_checked_context(tmp_path, edit): + k = tmp_path / "knowledge" + block = _block(tmp_path) + if edit == "body": + block = block.replace("validates credentials", "ignores credentials") + elif edit == "duplicate": + block += "\n" + block + else: + block = block.replace('"start":1', '"start":false') + _page(k, "repos/r/depth.md", block) + assert KnowledgeDocs(k, "repos/r").related(["pkg/models/catalog.py"])["documents"] == [] + + +@pytest.mark.parametrize("edit", ["missing_digest", "bad_digest", "absolute_path", "parent_path"]) +def test_malformed_proof_is_refused_even_with_intact_body_digest(tmp_path, edit): + k = tmp_path / "knowledge" + block = _block(tmp_path) + original = DEPTH_BLOCK.fullmatch(block) + body = original[5] + proof_match = re.search(r"", body) + proof = json.loads(proof_match[1]) + evidence = proof["evidence"][0] + if edit == "missing_digest": + evidence.pop("sha256") + elif edit == "bad_digest": + evidence["sha256"] = 42 + else: + evidence["path"] = "/secret.py" if edit == "absolute_path" else "../secret.py" + edited = body.replace(proof_match[1], json.dumps(proof)) + block = block.replace(body, edited).replace(original[4], hashlib.sha256(edited.encode()).hexdigest()) + _page(k, "repos/r/depth.md", block) + assert KnowledgeDocs(k, "repos/r").related(["pkg/models/catalog.py"])["documents"] == [] + + +def test_bounds_keep_large_depth_retrievable_and_budget_followup(tmp_path): + k = tmp_path / "knowledge" + _page(k, "repos/r/depth.md", _block(tmp_path, body="Long behavior. " * 300)) + other = Feature("caller", "Caller", "core", FEATURE.source_globs, (), "repos/r/caller.md", + FEATURE.entry_points) + _page(k, other.page, "Caller context\n" * 400, other) + third = Feature("third", "Third", "core", FEATURE.source_globs, (), "repos/r/third.md", + FEATURE.entry_points) + _page(k, third.page, "Third context", third) + related = KnowledgeDocs(k, "repos/r").related(["pkg/models/catalog.py"]) + assert len(related["documents"]) == 2 and related["content_chars"] <= 6000 + assert related["documents"][0]["included_facets"] == ["api"] + assert all(d["more_available"] for d in related["documents"]) + + +def test_snapshot_verifier_runs_before_read_even_for_excluded_cards(tmp_path): + k = tmp_path / "knowledge" + path = _page(k, "repos/r/depth.md", _block(tmp_path)) + originals = {p.relative_to(k).as_posix(): p.read_bytes() for p in k.rglob("*.md")} + + def verify(relative): + assert (k / relative).read_bytes() == originals[relative], "snapshot changed" + return k / relative + + docs = KnowledgeDocs(k, "repos/r", verify=verify) + assert docs.related(["pkg/models/catalog.py"])["status"] == "ready" + path.write_text("" + "x" * 530000) + with pytest.raises(AssertionError, match="snapshot changed"): + docs.related(["pkg/models/catalog.py"]) + + +def test_feature_hints_refresh_block_lists_without_changing_body(tmp_path): + text = _page(tmp_path, FEATURE.page, _block(tmp_path)).read_text() + text = text.replace('entry_points: ["pkg/models/catalog.py"]', 'entry_points:\n- old.py') + text = text.replace('source_globs: ["pkg/models/*"]', 'source_globs:\n - old/*') + refreshed = feature_metadata(text, FEATURE) + assert Page.parse(refreshed).frontmatter_data()["entry_points"] == list(FEATURE.entry_points) + assert Page.parse(refreshed).frontmatter_data()["source_globs"] == list(FEATURE.source_globs) + assert refreshed[len(Page.parse(refreshed).frontmatter):] == text[len(Page.parse(text).frontmatter):] + assert feature_metadata(refreshed, FEATURE) == refreshed + + +@pytest.mark.parametrize("files", ["pkg/file.py", [None], ["../secret.py"], ["/secret.py"]]) +def test_invalid_changed_file_inputs_are_refused(tmp_path, files): + with pytest.raises(KnowledgeDocsError): + KnowledgeDocs(tmp_path).related(files) diff --git a/test/test_knowledge_source.py b/test/test_knowledge_source.py index b995bb708..91c670842 100644 --- a/test/test_knowledge_source.py +++ b/test/test_knowledge_source.py @@ -110,7 +110,7 @@ def test_doc_tools_reach_general_and_repo_specific(tmp_path): (k / "general" / "g.md").write_text("SEMANTIC PARITY in general", encoding="utf-8") adapter = _adapter(tmp_path, {"knowledge": {"repo_subdir": "repos/r"}}) tools = _repo_docs_tool(_ctx(k), adapter) - assert set(tools) == {"doc_search", "doc_read"} + assert set(tools) == {"doc_search", "doc_read", "doc_related"} assert "SEMANTIC PARITY" in tools["doc_read"].handler(path="general/g.md") assert "HARD GATES" in tools["doc_read"].handler(path="repos/r/rules.md") assert "general/g.md" in tools["doc_search"].handler(query="SEMANTIC PARITY") diff --git a/test/test_sdk_v1.py b/test/test_sdk_v1.py index 66133a38f..1b0d6744b 100644 --- a/test/test_sdk_v1.py +++ b/test/test_sdk_v1.py @@ -83,6 +83,26 @@ def test_second_adapter_routes_from_packaged_adapter_registry(): ) +def test_related_depth_reaches_sdk_with_content_addressed_refs_and_read_budget(): + request = replace(_request("jiuwenswarm", "jiuwenswarm/common/model_catalog.py"), + title="Model platform configuration", body="models API") + client = DirectClient() + plan = client.plan(request) + related = plan.related_knowledge + assert related["status"] == "ready" and related["content_chars"] <= 6000 + models = next(d for d in related["documents"] if d["feature"] == "models") + assert "configuration" in models["available_facets"] + assert models["source_pins"] == ["f0a69728c96b5961d993449f1a901cbd2f4dac5b"] + document = models["document"] + assert document["document_id"] == models["path"] + assert document["sha256"].startswith("sha256:") + assert not Path(document["document_id"]).is_absolute() + assert plan.execution_budget["knowledge_file_reads"] == ( + sum(route.read_required for route in plan.knowledge_routes) + + len(plan.mandatory_review_guides) + + len(plan.navigation_policy["related_document_read_paths"])) + + def test_completion_is_bound_to_context_and_frozen_head(): client = DirectClient() plan = client.plan( diff --git a/test/test_thin_mcp_server.py b/test/test_thin_mcp_server.py index c8edca37a..0f93ebe77 100644 --- a/test/test_thin_mcp_server.py +++ b/test/test_thin_mcp_server.py @@ -122,6 +122,7 @@ def test_direct_entrypoints_do_not_resolve_repo(monkeypatch): "mode", "knowledge_entry", "knowledge_routes", + "related_knowledge", "mandatory_review_guides", "routing", "navigation_policy", @@ -249,6 +250,7 @@ def test_direct_entrypoints_do_not_resolve_repo(monkeypatch): } assert set(review["diagnostics"]["timing_ms"]) == { "routing", + "related_knowledge", "execution_budget", "total", } @@ -300,7 +302,7 @@ def test_direct_routes_title_body_before_changed_files(monkeypatch): assert route["read_required"] is (route["quick_map_status"] != "ok") assert review["execution_budget"]["knowledge_file_reads"] == len( [r for r in review["knowledge_routes"] if r["read_required"]] - ) + len(review["mandatory_review_guides"]) + ) + len(review["mandatory_review_guides"]) + len(review["navigation_policy"]["related_document_read_paths"]) scope = { item["owner"]: item for item in review["routing"]["scope_validation"] @@ -309,7 +311,7 @@ def test_direct_routes_title_body_before_changed_files(monkeypatch): assert review["execution_budget"]["profile"] == "code" # was 0 unconditionally; the budget now grants exactly one read per route whose # map is not fully deliverable, so it cannot contradict read_required - assert review["execution_budget"]["knowledge_file_reads"] == 2 + assert review["execution_budget"]["knowledge_file_reads"] == 2 + len(review["navigation_policy"]["related_document_read_paths"]) def test_direct_ranks_diffusion_owner_for_scheduler_managed_kv_pr(monkeypatch): @@ -971,7 +973,7 @@ def blind(owner, path, reason): n = len([r for r in review["knowledge_routes"] if r["read_required"]]) assert n >= 1 assert review["execution_budget"]["knowledge_file_reads"] == ( - n + len(review["mandatory_review_guides"]) + n + len(review["mandatory_review_guides"]) + len(review["navigation_policy"]["related_document_read_paths"]) ) assert "unavailable" in review["navigation_policy"]["open_route_file_when"] diff --git a/tools/audit_review_retrieval.py b/tools/audit_review_retrieval.py new file mode 100644 index 000000000..24aaee9e4 --- /dev/null +++ b/tools/audit_review_retrieval.py @@ -0,0 +1,83 @@ +#!/usr/bin/env python3 +"""Offline acceptance for bounded review retrieval, separate from KB coverage.""" + +from __future__ import annotations + +import argparse +import hashlib +import json +import time +from pathlib import Path + +import yaml + +from infermatrix_copilot.direct_routing import direct_review_plan +from infermatrix_copilot.kb_service.knowledge_coverage import load_policy, policy_path +from infermatrix_copilot.kb_service.knowledge_depth import depth_page +from infermatrix_copilot.knowledge_service.lifecycle import depth_sections +from infermatrix_copilot.knowledge_view import KnowledgeView + + +def main() -> int: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--repo", required=True) + parser.add_argument("--root", type=Path, default=Path.cwd()) + parser.add_argument("--report", type=Path) + args = parser.parse_args() + root = args.root.resolve() + knowledge = root / "knowledge" + if args.report and args.report.resolve().is_relative_to(knowledge): + parser.error("acceptance reports belong outside product knowledge") + manifest = yaml.safe_load((root / f"adapters/{args.repo}/manifest.yaml").read_text()) + policy_file = root / policy_path(args.repo) + policy = load_policy(policy_file.read_text(), manifest["knowledge"]["repo_subdir"]) + files = {p.relative_to(knowledge).as_posix(): hashlib.sha256(p.read_bytes()).hexdigest() + for p in knowledge.rglob("*") if p.is_file() and p.suffix in (".md", ".yaml", ".yml")} + view = KnowledgeView(root=knowledge, snapshot="audit", files=files) + cases, problems = [], [] + for feature in policy.features: + path = knowledge / depth_page(feature) + expected_depth = bool(path.exists() and depth_sections(path.read_text())) + for probe in ("description_and_paths", "paths_only"): + started = time.perf_counter() + plan = direct_review_plan(args.repo, title=f"{feature.title} {feature.id}" if probe == "description_and_paths" else "", + changed_files=list(feature.entry_points), view=view) + related = plan["related_knowledge"] + documents = related["documents"] + hit = next((d for d in documents if d["feature"] == feature.id), None) + passed = bool(hit and (not expected_depth or hit["included_facets"])) + if probe == "description_and_paths" and not passed: + problems.append(f"{feature.id}: expected feature explanation absent from Direct context") + if len(documents) > 2 or related["content_chars"] > 6000: + problems.append(f"{feature.id}: context bound exceeded") + cases.append({"feature": feature.id, "probe": probe, "changed_files": list(feature.entry_points), + "expected_depth": expected_depth, "feature_hit": bool(hit), + "depth_hit": bool(hit and hit["included_facets"]), + "content_chars": related["content_chars"], + "elapsed_ms": round((time.perf_counter() - started) * 1000), + "extra_read_paths": plan["navigation_policy"]["related_document_read_paths"], + "documents": [{k: d[k] for k in ("path", "feature", "match_reason", "source_pins", + "included_facets", "available_facets", "missing_facets")} + for d in documents]}) + summary = {probe: {"cases": len(rows), "feature_hits": sum(c["feature_hit"] for c in rows), + "depth_hits": sum(c["depth_hit"] for c in rows), + "expected_depth": sum(c["expected_depth"] for c in rows), + "max_content_chars": max((c["content_chars"] for c in rows), default=0), + "median_elapsed_ms": sorted(c["elapsed_ms"] for c in rows)[len(rows) // 2] if rows else 0} + for probe in ("description_and_paths", "paths_only") + if (rows := [c for c in cases if c["probe"] == probe])} + report = {"summary": summary, "problems": problems, "cases": cases, + "provenance": {"knowledge_tree_sha256": view.tree_sha256, + "policy_sha256": hashlib.sha256(policy_file.read_bytes()).hexdigest()}, + "limits": "Catalog probes test context delivery, not real PR bug recall or review quality. " + "Paths-only probes are diagnostic when multiple features share entry points. " + "Intact depth prose does not revalidate upstream source or the PR head."} + if args.report: + args.report.parent.mkdir(parents=True, exist_ok=True) + args.report.write_text(json.dumps(report, ensure_ascii=False, indent=2) + "\n") + print(json.dumps({"summary": summary, "problems": problems}, ensure_ascii=False, indent=2)) + return int(bool(problems)) + + +if __name__ == "__main__": + raise SystemExit(main())