@bolloon/bolloon-agent 0.5.5 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/dist/agents/parse-tool-call.js +6 -1
  2. package/dist/agents/pi-sdk-session-factory.js +36 -3
  3. package/dist/agents/pi-sdk.js +349 -199
  4. package/dist/agents/run-context.js +20 -0
  5. package/dist/agents/runner-resolver.js +2 -1
  6. package/dist/electron-build/agents/parse-tool-call.js +6 -1
  7. package/dist/electron-build/agents/parse-tool-call.js.map +1 -1
  8. package/dist/electron-build/agents/pi-sdk-session-factory.js +36 -3
  9. package/dist/electron-build/agents/pi-sdk-session-factory.js.map +1 -1
  10. package/dist/electron-build/agents/pi-sdk-types.js.map +1 -1
  11. package/dist/electron-build/agents/pi-sdk.js +349 -199
  12. package/dist/electron-build/agents/pi-sdk.js.map +1 -1
  13. package/dist/electron-build/agents/run-context.js +24 -0
  14. package/dist/electron-build/agents/run-context.js.map +1 -0
  15. package/dist/electron-build/agents/runner-resolver.js +2 -1
  16. package/dist/electron-build/agents/runner-resolver.js.map +1 -1
  17. package/dist/electron-build/kernel/channel-actor.js +314 -0
  18. package/dist/electron-build/kernel/channel-actor.js.map +1 -0
  19. package/dist/index.js +24 -19
  20. package/dist/kernel/channel-actor.js +297 -0
  21. package/dist/kernel/control.js +95 -0
  22. package/dist/kernel/gate-scan.js +1036 -0
  23. package/dist/kernel/model-runtime.js +472 -0
  24. package/dist/kernel/plan-channel-actor.js +298 -0
  25. package/dist/kernel/plan-constraint.js +165 -0
  26. package/dist/kernel/plan-deletion.js +32 -0
  27. package/dist/kernel/plan-modelruntime.js +60 -0
  28. package/dist/kernel/plan-runcontext.js +163 -0
  29. package/dist/kernel/plan.js +153 -0
  30. package/dist/kernel/roster.js +242 -0
  31. package/dist/web/bolloon-web.json +3 -3
  32. package/dist/web/client.js +3 -2
  33. package/dist/web/routes-tasks.js +5 -1
  34. package/dist/web/server.js +58 -18
  35. package/dist/web/sw.js +1 -1
  36. package/dist/web/ui/message-renderer.js +473 -29
  37. package/dist/web/ui/step-timeline.js +13 -12
  38. package/package.json +1 -1
  39. package/scripts/build-web.ts +74 -1
  40. package/dist/constraint-runtime/_archive_helper.d.ts +0 -1
  41. package/dist/constraint-runtime/_archive_helper.js +0 -9
  42. package/dist/constraint-runtime/assistant/index.d.ts +0 -11
  43. package/dist/constraint-runtime/assistant/index.js +0 -12
  44. package/dist/constraint-runtime/bootstrap/index.d.ts +0 -11
  45. package/dist/constraint-runtime/bootstrap/index.js +0 -12
  46. package/dist/constraint-runtime/bridge/index.d.ts +0 -11
  47. package/dist/constraint-runtime/bridge/index.js +0 -12
  48. package/dist/constraint-runtime/buddy/index.d.ts +0 -11
  49. package/dist/constraint-runtime/buddy/index.js +0 -12
  50. package/dist/constraint-runtime/cli/index.d.ts +0 -11
  51. package/dist/constraint-runtime/cli/index.js +0 -12
  52. package/dist/constraint-runtime/components/index.d.ts +0 -11
  53. package/dist/constraint-runtime/components/index.js +0 -12
  54. package/dist/constraint-runtime/constants/index.d.ts +0 -11
  55. package/dist/constraint-runtime/constants/index.js +0 -12
  56. package/dist/constraint-runtime/coordinator/index.d.ts +0 -11
  57. package/dist/constraint-runtime/coordinator/index.js +0 -12
  58. package/dist/constraint-runtime/cost_hook.d.ts +0 -2
  59. package/dist/constraint-runtime/cost_hook.js +0 -4
  60. package/dist/constraint-runtime/entrypoints/index.d.ts +0 -11
  61. package/dist/constraint-runtime/entrypoints/index.js +0 -12
  62. package/dist/constraint-runtime/execution_registry.d.ts +0 -20
  63. package/dist/constraint-runtime/execution_registry.js +0 -44
  64. package/dist/constraint-runtime/hooks/index.d.ts +0 -11
  65. package/dist/constraint-runtime/hooks/index.js +0 -12
  66. package/dist/constraint-runtime/ink.d.ts +0 -1
  67. package/dist/constraint-runtime/ink.js +0 -4
  68. package/dist/constraint-runtime/keybindings/index.d.ts +0 -11
  69. package/dist/constraint-runtime/keybindings/index.js +0 -12
  70. package/dist/constraint-runtime/memdir/index.d.ts +0 -11
  71. package/dist/constraint-runtime/memdir/index.js +0 -12
  72. package/dist/constraint-runtime/migrations/index.d.ts +0 -11
  73. package/dist/constraint-runtime/migrations/index.js +0 -12
  74. package/dist/constraint-runtime/moreright/index.d.ts +0 -11
  75. package/dist/constraint-runtime/moreright/index.js +0 -12
  76. package/dist/constraint-runtime/native_ts/index.d.ts +0 -11
  77. package/dist/constraint-runtime/native_ts/index.js +0 -12
  78. package/dist/constraint-runtime/output_styles/index.d.ts +0 -11
  79. package/dist/constraint-runtime/output_styles/index.js +0 -12
  80. package/dist/constraint-runtime/plugins/index.d.ts +0 -11
  81. package/dist/constraint-runtime/plugins/index.js +0 -12
  82. package/dist/constraint-runtime/port_manifest.d.ts +0 -7
  83. package/dist/constraint-runtime/port_manifest.js +0 -11
  84. package/dist/constraint-runtime/query.d.ts +0 -6
  85. package/dist/constraint-runtime/query.js +0 -1
  86. package/dist/constraint-runtime/remote/index.d.ts +0 -11
  87. package/dist/constraint-runtime/remote/index.js +0 -12
  88. package/dist/constraint-runtime/schemas/index.d.ts +0 -11
  89. package/dist/constraint-runtime/schemas/index.js +0 -12
  90. package/dist/constraint-runtime/screens/index.d.ts +0 -11
  91. package/dist/constraint-runtime/screens/index.js +0 -12
  92. package/dist/constraint-runtime/server/index.d.ts +0 -11
  93. package/dist/constraint-runtime/server/index.js +0 -12
  94. package/dist/constraint-runtime/services/index.d.ts +0 -11
  95. package/dist/constraint-runtime/services/index.js +0 -12
  96. package/dist/constraint-runtime/state/index.d.ts +0 -11
  97. package/dist/constraint-runtime/state/index.js +0 -12
  98. package/dist/constraint-runtime/system_init.d.ts +0 -1
  99. package/dist/constraint-runtime/system_init.js +0 -20
  100. package/dist/constraint-runtime/types/index.d.ts +0 -11
  101. package/dist/constraint-runtime/types/index.js +0 -12
  102. package/dist/constraint-runtime/upstream_proxy/index.d.ts +0 -11
  103. package/dist/constraint-runtime/upstream_proxy/index.js +0 -12
  104. package/dist/constraint-runtime/utils/index.d.ts +0 -11
  105. package/dist/constraint-runtime/utils/index.js +0 -12
  106. package/dist/constraint-runtime/vim/index.d.ts +0 -11
  107. package/dist/constraint-runtime/vim/index.js +0 -12
  108. package/dist/constraint-runtime/voice/index.d.ts +0 -11
  109. package/dist/constraint-runtime/voice/index.js +0 -12
@@ -285,7 +285,12 @@ function resolve(ctx, name) {
285
285
  return defaultResolveAlias(name, ctx.tools);
286
286
  }
287
287
  /** 诊断开关 (2026-10-01): 默认关 —— 这条 diag 在热路径上且上屏, 默认开会刷屏 */
288
- const PARSE_DIAG_ON = process.env.BOLLOON_PARSE_DIAG === '1' || process.env.BOLLOON_VERBOSE === '1';
288
+ // 2026-10-02: 必须守卫 process —— 本文件被浏览器侧模块链引用
289
+ // (/ui/message-renderer.js → /agents/chat-segmenter.js → 这里);
290
+ // 顶层裸读 process.env 会让该模块在浏览器抛 ReferenceError, 静默废掉整条渲染链。
291
+ const _parseEnv = typeof process !== 'undefined' ? process.env : undefined;
292
+ const PARSE_DIAG_ON = !!_parseEnv
293
+ && (_parseEnv.BOLLOON_PARSE_DIAG === '1' || _parseEnv.BOLLOON_VERBOSE === '1');
289
294
  export function parseToolCall(content, ctx) {
290
295
  if (!content)
291
296
  return null;
@@ -16,6 +16,39 @@ import { getBranchPrefix, getCooldownMs } from './shell-guard.js';
16
16
  * - lastSelfImproveAt: 自改冷却期
17
17
  */
18
18
  import { PiAgentSession } from './pi-sdk.js';
19
+ import { getOrCreateActor } from '../kernel/channel-actor.js';
20
+ /**
21
+ * **K5 第 3 步**: 会话创建时绑定它所属 channel 的 Actor —— 只做**归属**。
22
+ * · **注册键取会话身份** (`loadSessionKey` 优先, 否则整条 `peerId`); `channelId` 另取 `peerId` 的 `:` 前段;
23
+ * · 没有身份 ⇒ **不绑定** (不许有 default 兜底桶);
24
+ * · 状态 (messageHistory / channelId / agentId / goalId) **仍在 Pi 实例字段上**, 逐项迁入见 8 步台账;
25
+ * · 绑定是**幂等**的: 同一 channelId 永远拿到同一个 actor (`getOrCreateActor`)。
26
+ */
27
+ function attachActor(session, config) {
28
+ // **注册键 = 会话身份** (SessionStore key 优先, 否则整条 peerId)。
29
+ // 不许取 `:` 前段: 同一 channel 下不同会话会落进同一个桶 ⇒ history 串台
30
+ // (2026-10-02 全量回归实证: 5 红)。
31
+ const identity = String(config.loadSessionKey || config.peerId || '');
32
+ // **没有身份就不归属** —— 没有 'default' 兜底桶, 宁可不共享也不许串台。
33
+ if (!identity)
34
+ return session;
35
+ // 只预置 agentId (它是构造入参, 本来就属于会话); **channelId 不预置** —— 等 prompt/入口设置
36
+ const actor = getOrCreateActor(identity, { agentId: config.agentId || '' });
37
+ if (typeof session.attachActor === 'function')
38
+ session.attachActor(actor);
39
+ else
40
+ session.actor = actor;
41
+ return session;
42
+ }
43
+ function withActor(config) {
44
+ // **K5 步骤⑧**: 先把会话身份算出来、把 actor 取好, 再构造 session ——
45
+ // 这样构造期的异步回灌 (`loadSessionKey`) 直接落在身份 actor 上, 不会先落进私有 actor 再换家。
46
+ // 没身份 ⇒ 不注入 (session 自己用私有 actor)。
47
+ const identity = String(config.loadSessionKey || config.peerId || '');
48
+ if (!identity)
49
+ return config;
50
+ return { ...config, actor: getOrCreateActor(identity, { agentId: config.agentId || '' }) };
51
+ }
19
52
  let sessionInstance = null;
20
53
  let lastIdentityDid = null;
21
54
  const independentSessions = new Map();
@@ -29,7 +62,7 @@ export async function createAgentSession(config, forceNew) {
29
62
  await existing.whenReady();
30
63
  return existing;
31
64
  }
32
- const session = new PiAgentSession(config);
65
+ const session = attachActor(new PiAgentSession(withActor(config)), config);
33
66
  independentSessions.set(key, session);
34
67
  console.log(`[createAgentSession] 创建独立 session, key=${key}, DID=${incomingDid}`);
35
68
  await session.whenReady();
@@ -37,7 +70,7 @@ export async function createAgentSession(config, forceNew) {
37
70
  }
38
71
  if (forceNew) {
39
72
  const key = `force:${Date.now()}`;
40
- const session = new PiAgentSession(config);
73
+ const session = attachActor(new PiAgentSession(withActor(config)), config);
41
74
  independentSessions.set(key, session);
42
75
  console.log(`[createAgentSession] 创建强制新 session, key=${key}`);
43
76
  await session.whenReady();
@@ -61,7 +94,7 @@ export async function createAgentSession(config, forceNew) {
61
94
  await sessionInstance.whenReady();
62
95
  return sessionInstance;
63
96
  }
64
- const newSession = new PiAgentSession(config);
97
+ const newSession = attachActor(new PiAgentSession(withActor(config)), config);
65
98
  sessionInstance = newSession;
66
99
  lastIdentityDid = config.identityDoc?.did || null;
67
100
  console.log(`[createAgentSession] 新建 session, DID=${lastIdentityDid}`);