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

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions docs/plans/core-decomposition-completed.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@
- `services-integrations` 已承接 remote-connect primitives、wire command routing / response assembly、IM bot provider-neutral config / persistence / file auto-push / locale / menu / state / command parsing、workspace search concrete owner、remote SSH/SFTP/PTY owner、DeepResearch report IO / display-map sidecar、MiniApp host dispatch / storage / worker / import IO。
- `tool-contracts` 已承接 provider-neutral tool DTO、manifest/catalog/admission/result presentation、Computer Use DTO/input parser/screenshot payload、confirmation facts、truncation recovery presentation、runtime restriction policy 和 provider-entry materialization;core 只保留 Computer Use 旧 public path re-export / compatibility shim 与产品执行入口。
- `tool-execution` 已承接 local / remote IO helper、Bash shell helper、batching plan、retry policy、state counting、tool state event payload shaping / result redaction、cancellation-state/token-store policy、background exec output capture、ExecCommand provider-neutral 呈现 / control facts / completion shape、prompt-safe tool context facts / custom-data materialization、Computer Use loop detection / screenshot hash / verification / retry policy,以及 File tool 的 provider-neutral 结果展示、写入 mode/status/line-count 规则、Edit guardrail 分类和 Delete success 文本;core 只保留 ToolResult 包装、权限、checkpoint、runtime handles、process manager / host adapter 调用、read-state adapter、remote shell/FS 调用和旧工具入口。
- `agent-runtime` 已承接 scheduler/background delivery 纯决策、dialog lifecycle port contracts、runtime event queue/router、session management/cancellation port contracts、session/config/summary facts、persisted session state sidecar / processing-state sanitization、session state facts / event-label projection、dialog-turn id / stats facts、side-question runtime-only tracking、thread-goal facts、context profile / model capability policy、prompt markup / prompt / prompt-cache facts 与持久化写入决策、remote file delivery prompt facts、turn skill/agent snapshot DTO/diff/render/store、file-read session state / prior-read guardrail / freshness 决策、session evidence ledger 与 compression-contract projection、dialog-turn cancellation token store、tool confirmation gate / wait channel state、user-question wait channel state、custom agent / mode / subagent schema、默认值、discovery/loading、markdown IO、validation、review 工具过滤、skill catalog/root specs、mode policy、selection/shadow/mode-info 规则、assistant payload rendering、post-call hook routing、DeepReview provider-neutral policy/queue/retry/diagnostics shaping 与 queue event payload shaping、DeepResearch citation renumber 与 report post-process gate,并建立不暴露 `bitfun-core` / `product-full` / concrete manager 的内部 SDK facade。SDK facade 已支持注入 fake runtime services、tool registry、harness registry、hook registry 和 agent registry。
- `agent-runtime` 已承接 scheduler/background delivery 纯决策、dialog lifecycle port contracts、runtime event queue/router、session management/cancellation port contracts、session/config/summary facts、persisted session state sidecar / processing-state sanitization、session state facts / event-label projection、session state manager / event emission owner、dialog-turn id / stats facts、side-question runtime-only tracking、thread-goal facts、context profile / model capability policy、prompt markup / prompt / prompt-cache facts 与持久化写入决策、remote file delivery prompt facts、turn skill/agent snapshot DTO/diff/render/store、file-read session state / prior-read guardrail / freshness 决策、session evidence ledger 与 compression-contract projection、dialog-turn cancellation token store、tool confirmation gate / wait channel state、user-question wait channel state、custom agent / mode / subagent schema、默认值、discovery/loading、markdown IO、validation、review 工具过滤、skill catalog/root specs、mode policy、selection/shadow/mode-info 规则、assistant payload rendering、post-call hook routing、DeepReview provider-neutral policy/queue/retry/diagnostics shaping 与 queue event payload shaping、DeepResearch citation renumber 与 report post-process gate,并建立不暴露 `bitfun-core` / `product-full` / concrete manager 的内部 SDK facade。SDK facade 已支持注入 fake runtime services、tool registry、harness registry、hook registry 和 agent registry。
- `harness` 已建立 descriptor、route plan 和 legacy provider registry。
- `product-domains` 已承接 MiniApp state/workflow planning、compile / permission adaptation、import lifecycle、AI / Agent permission、rate-limit、model/message/session/workspace/turn-text bridge rules、AI / Agent 请求计划、stream / runtime event payload、worker restart / draft key / workspace input 规则、function-agent prompt/parser/response policy 和部分 Git snapshot/fallback 逻辑。
- `product-domains` 已承接 MiniApp state/workflow planning、built-in seed orchestration / host adapter contract、compile / permission adaptation、import lifecycle、AI / Agent permission、rate-limit、model/message/session/workspace/turn-text bridge rules、AI / Agent 请求计划、stream / runtime event payload、worker restart / draft key / workspace input 规则、function-agent prompt/parser/response policy 和部分 Git snapshot/fallback 逻辑。
- `bitfun-core` 的 function-agent AI concrete acquisition 已从旧 `runtime_services` 路径收拢到明确的 core port adapter;Git / AI compatibility re-export 仍保留旧 public path。
- Product Assembly 已承接 `DeliveryProfile`、当前交付形态入口矩阵、`CapabilitySet`、feature group matrix、profile-scoped capability plan、product-full provider plan、service availability report、profile-scoped harness registry 入口与 legacy-route 行为保护,以及 `ProductAssembler` 对 explicit profile input、runtime services、harness registry 和 service requirement 的验证;core 只保留兼容 re-export。ProductFull / Desktop / CLI / ACP 保留完整能力;Server / Remote / Web / MobileWeb 不再 materialize product-full capability packs、feature groups、runtime services、tool groups 或 harness routes。

Expand Down
29 changes: 2 additions & 27 deletions docs/plans/core-decomposition-plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,37 +27,12 @@
- Custom agent / mode / skill、Agent lifecycle、tool side-effect、Computer Use、file tool、MiniApp、DeepReview、DeepResearch、remote-connect、workspace search、remote SSH/SFTP/PTY 等多批 provider-neutral 或 concrete owner 已迁出。
- Root boundary scripts 已覆盖核心 owner 防回流、six-layer path 解析、facade-only 文件、custom agent owner / custom subagent wrapper 保护和重点 feature gate。
- Agent Runtime session workspace resolution、Cron / SessionControl / SessionMessage / SessionHistory 的 target session/workspace owner routing、`/goal` tool management runtime-port routing、session/config/context/lifecycle fact owner 收口,以及 `services-integrations` workspace search preview/result conversion 已纳入已完成摘要;后续计划只保留仍需迁移的 feature/kernel、security/control-plane、execution、extension 和 cross-platform adapter 主体工作。
- MiniApp built-in seed orchestration 已进入 `product-domains`,core 只保留 concrete host adapter;session state manager 已进入 `agent-runtime`,core 只保留兼容 re-export。

## 3. 后续大块 PR 节奏
## 3. 大块 PR 节奏

后续不再按旧 H/M 标签判断完成度。每个 PR 必须包含实质迁移或旧路径显著简化,并在提交前做独立第三方视角的功能边界、依赖关系、不同产品形态和操作系统影响复审。

### PR-A:Product Feature 与 Agent Kernel 分界收口

目标:

- 建立 feature bundle / capability pack 的判定口径,把 DeepReview、MiniApp、input command、settings、UI panel 等产品特性从 Agent Kernel 能力中分离;`/goal` 已先完成 model tool 到 AgentRuntime thread-goal management port 的 owner routing。
- 识别仍留在 `bitfun-core` 中的 provider-neutral feature mapping、command-to-runtime request、UI-facing DTO 和 long-running task 相关旧路径。
- 迁移或显著简化至少一组实际 feature 主体路径;`/goal` 之后优先选择 DeepReview / MiniApp / input command 的 feature assembly 路径。

保护:

- 保持 long-running task、goal metadata、post-turn、continuation、background delivery、UI state 和 command response wire shape 等价。
- 补 feature pack / capability matrix focused tests,覆盖 Desktop / CLI / SDK-safe fallback。

### PR-B:Agent Kernel API 与安全控制面收口

目标:

- 继续收敛 Kernel API 的 builder / runner / event stream / permission / session / workspace / memory / DFX contract;session/config/summary facts、persisted session state sidecar、dialog-turn facts、side-question runtime tracking、context profile policy 和 round-level tool confirmation gate 已完成 owner 收口。
- 把安全控制面所需的 capability/effect/security decision facts 下沉为稳定 contract 或 kernel facts,而不是散落在 UI、tool、MCP、hook 和 plugin 路径。
- 迁移或显著简化仍在 core 中的 provider-neutral scheduler、permission coordination、event routing、memory/context 或 long-running task 事实路径。

保护:

- session / turn / cancellation / event sequence / permission source / audit facts 不漂移。
- `cargo test -p bitfun-agent-runtime`、permission / event focused tests、no-default-features check 和 boundary check 必跑。

### PR-C:Execution 层深迁移

目标:
Expand Down
25 changes: 25 additions & 0 deletions scripts/core-boundaries/rules/source/forbidden-rules.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -1335,6 +1335,31 @@ export const forbiddenContentRules = [
},
],
},
{
path: 'src/crates/assembly/core/src/agentic/coordination/state_manager.rs',
patterns: [
{
regex: /\bpub\s+struct\s+SessionStateManager\b/,
message:
'core session state manager path must remain a compatibility facade; use bitfun-agent-runtime session_state_manager',
},
{
regex: /\bDashMap\b/,
message:
'core session state manager path must not own session state storage; use bitfun-agent-runtime session_state_manager',
},
{
regex: /\bAgenticEvent::SessionStateChanged\b/,
message:
'core session state manager path must not emit session-state events directly; use bitfun-agent-runtime session_state_manager',
},
{
regex: /\bimpl\s+SessionStateManager\b/,
message:
'core session state manager path must not reimplement session state transitions; use bitfun-agent-runtime session_state_manager',
},
],
},
{
path: 'src/crates/assembly/core/src/agentic/coordination/scheduler.rs',
patterns: [
Expand Down
86 changes: 74 additions & 12 deletions scripts/core-boundaries/rules/source/required-rules.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -2378,6 +2378,56 @@ export const requiredContentRules = [
},
],
},
{
path: 'src/crates/execution/agent-runtime/src/session_state_manager.rs',
reason:
'agent-runtime owns provider-neutral session state storage, transition helpers, and SessionStateChanged event projection',
patterns: [
{
regex: /\bpub struct SessionStateManager\b/,
message: 'missing agent-runtime session state manager owner',
},
{
regex: /\bDashMap<String, SessionState>/,
message: 'missing session state storage owner',
},
{
regex: /\bEventQueue\b/,
message: 'missing runtime event queue integration',
},
{
regex: /\bAgenticEvent::SessionStateChanged\b/,
message: 'missing SessionStateChanged event projection',
},
{
regex: /\bsession_state_label_for_state\b/,
message: 'missing stable session-state label projection',
},
{
regex: /\bcan_start_new_turn\b/,
message: 'missing turn-start guard owner',
},
{
regex: /\bsession_state_manager_emits_compatible_state_change_events\b/,
message: 'missing session state event compatibility test',
},
{
regex: /\bsession_state_manager_keeps_turn_start_guard_semantics\b/,
message: 'missing session state guard compatibility test',
},
],
},
{
path: 'src/crates/assembly/core/src/agentic/coordination/state_manager.rs',
reason:
'core session state manager path must preserve legacy imports while agent-runtime owns the implementation',
patterns: [
{
regex: /pub use bitfun_agent_runtime::session_state_manager::SessionStateManager;/,
message: 'missing SessionStateManager compatibility re-export',
},
],
},
{
path: 'src/crates/assembly/core/src/agentic/agents/prompt_builder/user_context.rs',
reason:
Expand Down Expand Up @@ -7142,27 +7192,23 @@ export const requiredContentRules = [
{
path: 'src/crates/assembly/core/src/miniapp/builtin/mod.rs',
reason:
'core must coordinate built-in MiniApp seed decisions and recompilation while services-integrations owns seed filesystem IO',
'core must adapt built-in MiniApp seed host operations while product-domains owns seed orchestration and services-integrations owns seed filesystem IO',
patterns: [
{
regex: /\bBUILTIN_APPS\b/,
message: 'missing product-domain built-in MiniApp bundle re-export/use',
},
{
regex: /\bbuiltin_content_hash\b/,
message: 'missing product-domain built-in MiniApp content hash use',
},
{
regex: /\bshould_seed_builtin_app\b/,
message: 'missing product-domain built-in MiniApp seed decision use',
regex: /\bseed_builtin_miniapps_with_host\b/,
message: 'missing product-domain built-in MiniApp seed orchestrator use',
},
{
regex: /\bresolve_builtin_seed_check\b/,
message: 'missing product-domain built-in MiniApp seed check use',
regex: /\bimpl BuiltinMiniAppSeedHost for CoreBuiltinMiniAppSeedHost\b/,
message: 'missing core built-in MiniApp seed host adapter',
},
{
regex: /\bresolve_builtin_seed_action\b/,
message: 'missing product-domain built-in MiniApp seed action use',
regex: /\bmark_builtin_update_available\b/,
message: 'missing built-in MiniApp local-override update-record host delegation',
},
{
regex: /\bminiapp_builtin_io::prepare_builtin_seed_bundle_files\b/,
Expand Down Expand Up @@ -8154,7 +8200,7 @@ export const requiredContentRules = [
{
path: 'src/crates/contracts/product-domains/src/miniapp/builtin.rs',
reason:
'product-domains owns built-in MiniApp bundle assets, marker, hash, and seed-decision contracts while core keeps asset seeding IO and recompilation',
'product-domains owns built-in MiniApp bundle assets, marker, hash, seed orchestration, and host adapter contract while core keeps concrete IO and recompilation',
patterns: [
{
regex: /id: "builtin-pr-review"/,
Expand Down Expand Up @@ -8196,6 +8242,22 @@ export const requiredContentRules = [
regex: /\bpub enum BuiltinSeedAction\b/,
message: 'missing built-in MiniApp seed action contract',
},
{
regex: /\bpub trait BuiltinMiniAppSeedHost\b/,
message: 'missing built-in MiniApp seed host adapter contract',
},
{
regex: /\bpub async fn seed_builtin_miniapps_with_host\b/,
message: 'missing built-in MiniApp seed orchestrator',
},
{
regex: /\bpub async fn seed_builtin_miniapp_with_host\b/,
message: 'missing built-in MiniApp single-bundle seed orchestrator',
},
{
regex: /\bpub enum BuiltinMiniAppSeedOutcome\b/,
message: 'missing built-in MiniApp seed outcome contract',
},
{
regex: /\bpub fn resolve_builtin_seed_check\b/,
message: 'missing built-in MiniApp seed check helper',
Expand Down
40 changes: 36 additions & 4 deletions scripts/core-boundaries/self-test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -445,6 +445,17 @@ export function runManifestParserSelfTest({
throw new Error(`core scheduler boundary rule must forbid contract: ${contract}`);
}
}
const coreSessionStateManagerRuleText = forbiddenRuleTextForPath(
'src/crates/assembly/core/src/agentic/coordination/state_manager.rs',
);
if (!coreSessionStateManagerRuleText) {
throw new Error('missing core session state manager boundary rule');
}
for (const contract of ['SessionStateManager', 'DashMap', 'AgenticEvent::SessionStateChanged']) {
if (!coreSessionStateManagerRuleText.includes(contract)) {
throw new Error(`core session state manager boundary rule must forbid contract: ${contract}`);
}
}
const coreRoundPreemptRuleText = forbiddenRuleTextForPath(
'src/crates/assembly/core/src/agentic/round_preempt.rs',
);
Expand Down Expand Up @@ -1485,6 +1496,23 @@ export function runManifestParserSelfTest({
path: 'src/crates/execution/agent-runtime/src/event_queue.rs',
contracts: ['EventQueue', 'impl StreamEventSink for EventQueue', 'clear_session'],
},
{
path: 'src/crates/execution/agent-runtime/src/session_state_manager.rs',
contracts: [
'pub struct SessionStateManager',
'DashMap<String, SessionState>',
'EventQueue',
'AgenticEvent::SessionStateChanged',
'session_state_label_for_state',
'can_start_new_turn',
'session_state_manager_emits_compatible_state_change_events',
'session_state_manager_keeps_turn_start_guard_semantics',
],
},
{
path: 'src/crates/assembly/core/src/agentic/coordination/state_manager.rs',
contracts: ['pub use bitfun_agent_runtime::session_state_manager::SessionStateManager'],
},
{
path: 'src/crates/execution/agent-runtime/src/event_router.rs',
contracts: ['EventSubscriber', 'EventRouter', 'route_batch'],
Expand Down Expand Up @@ -2734,10 +2762,10 @@ export function runManifestParserSelfTest({
path: 'src/crates/assembly/core/src/miniapp/builtin/mod.rs',
contracts: [
'BUILTIN_APPS',
'builtin_content_hash',
'should_seed_builtin_app',
'resolve_builtin_seed_check',
'resolve_builtin_seed_action',
'seed_builtin_miniapps_with_host',
'BuiltinMiniAppSeedHost',
'CoreBuiltinMiniAppSeedHost',
'mark_builtin_update_available',
'miniapp_builtin_io::prepare_builtin_seed_bundle_files',
'read_builtin_install_marker',
'miniapp_builtin_io::read_builtin_install_marker',
Expand Down Expand Up @@ -2776,6 +2804,10 @@ export function runManifestParserSelfTest({
'BuiltinSeedArtifacts',
'BuiltinSeedCheck',
'BuiltinSeedAction',
'BuiltinMiniAppSeedHost',
'seed_builtin_miniapps_with_host',
'seed_builtin_miniapp_with_host',
'BuiltinMiniAppSeedOutcome',
'resolve_builtin_seed_check',
'resolve_builtin_seed_action',
'serialize_builtin_install_marker',
Expand Down
Loading
Loading