@bolloon/bolloon-agent 0.4.28 → 0.4.29

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 (435) hide show
  1. package/bin/bolloon.cjs +18 -148
  2. package/bin/bolloon.cmd +6 -3
  3. package/dist/agents/pi-sdk-tools.js +3 -1
  4. package/dist/agents/pi-sdk.js +4 -1
  5. package/dist/cli/update-commands.js +349 -0
  6. package/dist/cli-entry.js +41 -55
  7. package/dist/electron-build/agents/agent-gateway.js +169 -0
  8. package/dist/electron-build/agents/agent-gateway.js.map +1 -0
  9. package/dist/electron-build/agents/agent-identity-store.js +212 -0
  10. package/dist/electron-build/agents/agent-identity-store.js.map +1 -0
  11. package/dist/electron-build/agents/agent-identity.js +196 -0
  12. package/dist/electron-build/agents/agent-identity.js.map +1 -0
  13. package/dist/electron-build/agents/agent-manifest-protocol.js +151 -0
  14. package/dist/electron-build/agents/agent-manifest-protocol.js.map +1 -0
  15. package/dist/electron-build/agents/agent-registry.js +217 -0
  16. package/dist/electron-build/agents/agent-registry.js.map +1 -0
  17. package/dist/electron-build/agents/agent-reputation.js +60 -0
  18. package/dist/electron-build/agents/agent-reputation.js.map +1 -0
  19. package/dist/electron-build/agents/agent-service-client.js +186 -0
  20. package/dist/electron-build/agents/agent-service-client.js.map +1 -0
  21. package/dist/electron-build/agents/browser-cdp.js +765 -0
  22. package/dist/electron-build/agents/browser-cdp.js.map +1 -0
  23. package/dist/electron-build/agents/computer-use.js +341 -0
  24. package/dist/electron-build/agents/computer-use.js.map +1 -0
  25. package/dist/electron-build/agents/constraint-layer.js +210 -0
  26. package/dist/electron-build/agents/constraint-layer.js.map +1 -0
  27. package/dist/electron-build/agents/decision-store.js +292 -0
  28. package/dist/electron-build/agents/decision-store.js.map +1 -0
  29. package/dist/electron-build/agents/deny-pipeline.js +125 -0
  30. package/dist/electron-build/agents/deny-pipeline.js.map +1 -0
  31. package/dist/electron-build/agents/economic-policy.js +172 -0
  32. package/dist/electron-build/agents/economic-policy.js.map +1 -0
  33. package/dist/electron-build/agents/error-classifier.js +125 -0
  34. package/dist/electron-build/agents/error-classifier.js.map +1 -0
  35. package/dist/electron-build/agents/execution-supervisor.js +539 -0
  36. package/dist/electron-build/agents/execution-supervisor.js.map +1 -0
  37. package/dist/electron-build/agents/external-events.js +171 -0
  38. package/dist/electron-build/agents/external-events.js.map +1 -0
  39. package/dist/electron-build/agents/gateway-join.js +315 -0
  40. package/dist/electron-build/agents/gateway-join.js.map +1 -0
  41. package/dist/electron-build/agents/gateway-network.js +505 -0
  42. package/dist/electron-build/agents/gateway-network.js.map +1 -0
  43. package/dist/electron-build/agents/goal-criteria.js +133 -0
  44. package/dist/electron-build/agents/goal-criteria.js.map +1 -0
  45. package/dist/electron-build/agents/goal-resume.js +364 -0
  46. package/dist/electron-build/agents/goal-resume.js.map +1 -0
  47. package/dist/electron-build/agents/goal-store.js +587 -0
  48. package/dist/electron-build/agents/goal-store.js.map +1 -0
  49. package/dist/electron-build/agents/intent-classifier.js +104 -0
  50. package/dist/electron-build/agents/intent-classifier.js.map +1 -0
  51. package/dist/electron-build/agents/iroh-secret.js +70 -0
  52. package/dist/electron-build/agents/iroh-secret.js.map +1 -0
  53. package/dist/electron-build/agents/loop-review.js +101 -0
  54. package/dist/electron-build/agents/loop-review.js.map +1 -0
  55. package/dist/electron-build/agents/memory-recall.js +154 -0
  56. package/dist/electron-build/agents/memory-recall.js.map +1 -0
  57. package/dist/electron-build/agents/p2p-document-tools.js +328 -0
  58. package/dist/electron-build/agents/p2p-document-tools.js.map +1 -0
  59. package/dist/electron-build/agents/parse-tool-call.js +564 -0
  60. package/dist/electron-build/agents/parse-tool-call.js.map +1 -0
  61. package/dist/electron-build/agents/patch-tool.js +205 -0
  62. package/dist/electron-build/agents/patch-tool.js.map +1 -0
  63. package/dist/electron-build/agents/payment-approval.js +183 -0
  64. package/dist/electron-build/agents/payment-approval.js.map +1 -0
  65. package/dist/electron-build/agents/payment-gate.js +139 -0
  66. package/dist/electron-build/agents/payment-gate.js.map +1 -0
  67. package/dist/electron-build/agents/permission-mode.js +124 -0
  68. package/dist/electron-build/agents/permission-mode.js.map +1 -0
  69. package/dist/electron-build/agents/pi-harness.js +268 -0
  70. package/dist/electron-build/agents/pi-harness.js.map +1 -0
  71. package/dist/electron-build/agents/pi-sdk-session-factory.js +117 -0
  72. package/dist/electron-build/agents/pi-sdk-session-factory.js.map +1 -0
  73. package/dist/electron-build/agents/pi-sdk-session-manager.js +335 -0
  74. package/dist/electron-build/agents/pi-sdk-session-manager.js.map +1 -0
  75. package/dist/electron-build/agents/pi-sdk-tools.js +4042 -0
  76. package/dist/electron-build/agents/pi-sdk-tools.js.map +1 -0
  77. package/dist/electron-build/agents/pi-sdk-types.js +17 -0
  78. package/dist/electron-build/agents/pi-sdk-types.js.map +1 -0
  79. package/dist/electron-build/agents/pi-sdk.js +3325 -0
  80. package/dist/electron-build/agents/pi-sdk.js.map +1 -0
  81. package/dist/electron-build/agents/plan-store.js +212 -0
  82. package/dist/electron-build/agents/plan-store.js.map +1 -0
  83. package/dist/electron-build/agents/pre-tool-validator.js +200 -0
  84. package/dist/electron-build/agents/pre-tool-validator.js.map +1 -0
  85. package/dist/electron-build/agents/process-runner.js +148 -0
  86. package/dist/electron-build/agents/process-runner.js.map +1 -0
  87. package/dist/electron-build/agents/react-loop.js +131 -0
  88. package/dist/electron-build/agents/react-loop.js.map +1 -0
  89. package/dist/electron-build/agents/resource-store.js +180 -0
  90. package/dist/electron-build/agents/resource-store.js.map +1 -0
  91. package/dist/electron-build/agents/resource-token.js +118 -0
  92. package/dist/electron-build/agents/resource-token.js.map +1 -0
  93. package/dist/electron-build/agents/resource-wallet.js +84 -0
  94. package/dist/electron-build/agents/resource-wallet.js.map +1 -0
  95. package/dist/electron-build/agents/run-store.js +854 -0
  96. package/dist/electron-build/agents/run-store.js.map +1 -0
  97. package/dist/electron-build/agents/runner-resolver.js +267 -0
  98. package/dist/electron-build/agents/runner-resolver.js.map +1 -0
  99. package/dist/electron-build/agents/session-store.js +294 -0
  100. package/dist/electron-build/agents/session-store.js.map +1 -0
  101. package/dist/electron-build/agents/shell-guard.js +465 -0
  102. package/dist/electron-build/agents/shell-guard.js.map +1 -0
  103. package/dist/electron-build/agents/shell-tool.js +102 -0
  104. package/dist/electron-build/agents/shell-tool.js.map +1 -0
  105. package/dist/electron-build/agents/skill-loader.js +216 -0
  106. package/dist/electron-build/agents/skill-loader.js.map +1 -0
  107. package/dist/electron-build/agents/skill-readiness.js +174 -0
  108. package/dist/electron-build/agents/skill-readiness.js.map +1 -0
  109. package/dist/electron-build/agents/skill-share.js +394 -0
  110. package/dist/electron-build/agents/skill-share.js.map +1 -0
  111. package/dist/electron-build/agents/skill-supervisor-link.js +75 -0
  112. package/dist/electron-build/agents/skill-supervisor-link.js.map +1 -0
  113. package/dist/electron-build/agents/skill-writer.js +347 -0
  114. package/dist/electron-build/agents/skill-writer.js.map +1 -0
  115. package/dist/electron-build/agents/skills-manager.js +763 -0
  116. package/dist/electron-build/agents/skills-manager.js.map +1 -0
  117. package/dist/electron-build/agents/supervisor-host.js +294 -0
  118. package/dist/electron-build/agents/supervisor-host.js.map +1 -0
  119. package/dist/electron-build/agents/task/local-seller.js +188 -0
  120. package/dist/electron-build/agents/task/local-seller.js.map +1 -0
  121. package/dist/electron-build/agents/task/report-card.js +152 -0
  122. package/dist/electron-build/agents/task/report-card.js.map +1 -0
  123. package/dist/electron-build/agents/task/resource-advisor.js +222 -0
  124. package/dist/electron-build/agents/task/resource-advisor.js.map +1 -0
  125. package/dist/electron-build/agents/task/task-budget.js +111 -0
  126. package/dist/electron-build/agents/task/task-budget.js.map +1 -0
  127. package/dist/electron-build/agents/task/task-runner.js +670 -0
  128. package/dist/electron-build/agents/task/task-runner.js.map +1 -0
  129. package/dist/electron-build/agents/task-state.js +266 -0
  130. package/dist/electron-build/agents/task-state.js.map +1 -0
  131. package/dist/electron-build/agents/tool-registry.js +141 -0
  132. package/dist/electron-build/agents/tool-registry.js.map +1 -0
  133. package/dist/electron-build/agents/treasury-bridge.js +165 -0
  134. package/dist/electron-build/agents/treasury-bridge.js.map +1 -0
  135. package/dist/electron-build/agents/user-questions.js +223 -0
  136. package/dist/electron-build/agents/user-questions.js.map +1 -0
  137. package/dist/electron-build/agents/verify-recipe.js +90 -0
  138. package/dist/electron-build/agents/verify-recipe.js.map +1 -0
  139. package/dist/electron-build/agents/workflow-engine.js +222 -0
  140. package/dist/electron-build/agents/workflow-engine.js.map +1 -0
  141. package/dist/electron-build/agents/workflow-pivot-loop.js +988 -0
  142. package/dist/electron-build/agents/workflow-pivot-loop.js.map +1 -0
  143. package/dist/electron-build/agents/write-staging.js +133 -0
  144. package/dist/electron-build/agents/write-staging.js.map +1 -0
  145. package/dist/electron-build/agents/x402/goal-run-bridge.js +115 -0
  146. package/dist/electron-build/agents/x402/goal-run-bridge.js.map +1 -0
  147. package/dist/electron-build/agents/x402/milestone-settlement.js +163 -0
  148. package/dist/electron-build/agents/x402/milestone-settlement.js.map +1 -0
  149. package/dist/electron-build/agents/x402/paid-info-protocol.js +274 -0
  150. package/dist/electron-build/agents/x402/paid-info-protocol.js.map +1 -0
  151. package/dist/electron-build/agents/x402/paid-info-store.js +409 -0
  152. package/dist/electron-build/agents/x402/paid-info-store.js.map +1 -0
  153. package/dist/electron-build/agents/x402/paid-info-tools.js +346 -0
  154. package/dist/electron-build/agents/x402/paid-info-tools.js.map +1 -0
  155. package/dist/electron-build/agents/x402/payment-recovery.js +330 -0
  156. package/dist/electron-build/agents/x402/payment-recovery.js.map +1 -0
  157. package/dist/electron-build/agents/x402/resource-contract.js +533 -0
  158. package/dist/electron-build/agents/x402/resource-contract.js.map +1 -0
  159. package/dist/electron-build/agents/x402/settlement-state.js +432 -0
  160. package/dist/electron-build/agents/x402/settlement-state.js.map +1 -0
  161. package/dist/electron-build/agents/x402/trade.js +294 -0
  162. package/dist/electron-build/agents/x402/trade.js.map +1 -0
  163. package/dist/electron-build/agents/x402/transaction-protocol.js +109 -0
  164. package/dist/electron-build/agents/x402/transaction-protocol.js.map +1 -0
  165. package/dist/electron-build/agents/x402/transaction-store.js +404 -0
  166. package/dist/electron-build/agents/x402/transaction-store.js.map +1 -0
  167. package/dist/electron-build/agents/x402/x402Pay.js +377 -0
  168. package/dist/electron-build/agents/x402/x402Pay.js.map +1 -0
  169. package/dist/electron-build/bollharness-integration/context-router-judgment.js +269 -0
  170. package/dist/electron-build/bollharness-integration/context-router-judgment.js.map +1 -0
  171. package/dist/electron-build/bollharness-integration/context-router.js +584 -0
  172. package/dist/electron-build/bollharness-integration/context-router.js.map +1 -0
  173. package/dist/electron-build/bollharness-integration/gate-state-machine.js +362 -0
  174. package/dist/electron-build/bollharness-integration/gate-state-machine.js.map +1 -0
  175. package/dist/electron-build/bollharness-integration/gate-transition-hooks.js +136 -0
  176. package/dist/electron-build/bollharness-integration/gate-transition-hooks.js.map +1 -0
  177. package/dist/electron-build/bollharness-integration/guard-checker.js +400 -0
  178. package/dist/electron-build/bollharness-integration/guard-checker.js.map +1 -0
  179. package/dist/electron-build/bollharness-integration/index.js +123 -0
  180. package/dist/electron-build/bollharness-integration/index.js.map +1 -0
  181. package/dist/electron-build/bollharness-integration/integration.js +531 -0
  182. package/dist/electron-build/bollharness-integration/integration.js.map +1 -0
  183. package/dist/electron-build/bollharness-integration/skill-adapter.js +608 -0
  184. package/dist/electron-build/bollharness-integration/skill-adapter.js.map +1 -0
  185. package/dist/electron-build/bootstrap/bootstrap.js +173 -0
  186. package/dist/electron-build/bootstrap/bootstrap.js.map +1 -0
  187. package/dist/electron-build/bootstrap/context-collector.js +358 -0
  188. package/dist/electron-build/bootstrap/context-collector.js.map +1 -0
  189. package/dist/electron-build/bootstrap/context-hierarchy.js +262 -0
  190. package/dist/electron-build/bootstrap/context-hierarchy.js.map +1 -0
  191. package/dist/electron-build/bootstrap/context-manager.js +211 -0
  192. package/dist/electron-build/bootstrap/context-manager.js.map +1 -0
  193. package/dist/electron-build/bootstrap/context-os.js +277 -0
  194. package/dist/electron-build/bootstrap/context-os.js.map +1 -0
  195. package/dist/electron-build/bootstrap/event-log.js +203 -0
  196. package/dist/electron-build/bootstrap/event-log.js.map +1 -0
  197. package/dist/electron-build/bootstrap/exhaust-scrubber.js +277 -0
  198. package/dist/electron-build/bootstrap/exhaust-scrubber.js.map +1 -0
  199. package/dist/electron-build/bootstrap/lifecycle-hooks.js +282 -0
  200. package/dist/electron-build/bootstrap/lifecycle-hooks.js.map +1 -0
  201. package/dist/electron-build/bootstrap/memory-compressor.js +377 -0
  202. package/dist/electron-build/bootstrap/memory-compressor.js.map +1 -0
  203. package/dist/electron-build/bootstrap/persona-loader.js +219 -0
  204. package/dist/electron-build/bootstrap/persona-loader.js.map +1 -0
  205. package/dist/electron-build/bootstrap/project-context.js +162 -0
  206. package/dist/electron-build/bootstrap/project-context.js.map +1 -0
  207. package/dist/electron-build/bootstrap/project-state.js +205 -0
  208. package/dist/electron-build/bootstrap/project-state.js.map +1 -0
  209. package/dist/electron-build/bootstrap/session-window.js +162 -0
  210. package/dist/electron-build/bootstrap/session-window.js.map +1 -0
  211. package/dist/electron-build/bootstrap/vector-index.js +291 -0
  212. package/dist/electron-build/bootstrap/vector-index.js.map +1 -0
  213. package/dist/electron-build/constraint-runtime/src/tools/PolymarketSDK/cancelOrder.js +22 -0
  214. package/dist/electron-build/constraint-runtime/src/tools/PolymarketSDK/cancelOrder.js.map +1 -0
  215. package/dist/electron-build/constraint-runtime/src/tools/PolymarketSDK/clobShared.js +86 -0
  216. package/dist/electron-build/constraint-runtime/src/tools/PolymarketSDK/clobShared.js.map +1 -0
  217. package/dist/electron-build/constraint-runtime/src/tools/PolymarketSDK/createOrder.js +37 -0
  218. package/dist/electron-build/constraint-runtime/src/tools/PolymarketSDK/createOrder.js.map +1 -0
  219. package/dist/electron-build/constraint-runtime/src/tools/PolymarketSDK/getMarket.js +20 -0
  220. package/dist/electron-build/constraint-runtime/src/tools/PolymarketSDK/getMarket.js.map +1 -0
  221. package/dist/electron-build/constraint-runtime/src/tools/PolymarketSDK/getOrders.js +29 -0
  222. package/dist/electron-build/constraint-runtime/src/tools/PolymarketSDK/getOrders.js.map +1 -0
  223. package/dist/electron-build/constraint-runtime/src/tools/PolymarketSDK/listMarkets.js +28 -0
  224. package/dist/electron-build/constraint-runtime/src/tools/PolymarketSDK/listMarkets.js.map +1 -0
  225. package/dist/electron-build/constraint-runtime/src/tools/SafeSDK/deploySafe.js +10 -0
  226. package/dist/electron-build/constraint-runtime/src/tools/SafeSDK/deploySafe.js.map +1 -0
  227. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/autoPay.js +68 -0
  228. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/autoPay.js.map +1 -0
  229. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/createWallet.js +14 -0
  230. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/createWallet.js.map +1 -0
  231. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/getBalance.js +17 -0
  232. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/getBalance.js.map +1 -0
  233. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/importWallet.js +59 -0
  234. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/importWallet.js.map +1 -0
  235. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/sendTransaction.js +29 -0
  236. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/sendTransaction.js.map +1 -0
  237. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/signMessage.js +14 -0
  238. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/signMessage.js.map +1 -0
  239. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/transferToken.js +29 -0
  240. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/transferToken.js.map +1 -0
  241. package/dist/electron-build/constraints/index.js +11 -0
  242. package/dist/electron-build/constraints/index.js.map +1 -0
  243. package/dist/electron-build/context-compaction/auto-compact.js +182 -0
  244. package/dist/electron-build/context-compaction/auto-compact.js.map +1 -0
  245. package/dist/electron-build/context-compaction/budget-gate.js +32 -0
  246. package/dist/electron-build/context-compaction/budget-gate.js.map +1 -0
  247. package/dist/electron-build/context-compaction/budget-reduce.js +39 -0
  248. package/dist/electron-build/context-compaction/budget-reduce.js.map +1 -0
  249. package/dist/electron-build/context-compaction/context-collapse.js +71 -0
  250. package/dist/electron-build/context-compaction/context-collapse.js.map +1 -0
  251. package/dist/electron-build/context-compaction/index.js +38 -0
  252. package/dist/electron-build/context-compaction/index.js.map +1 -0
  253. package/dist/electron-build/context-compaction/microcompact.js +55 -0
  254. package/dist/electron-build/context-compaction/microcompact.js.map +1 -0
  255. package/dist/electron-build/context-compaction/pipeline.js +128 -0
  256. package/dist/electron-build/context-compaction/pipeline.js.map +1 -0
  257. package/dist/electron-build/context-compaction/snip.js +50 -0
  258. package/dist/electron-build/context-compaction/snip.js.map +1 -0
  259. package/dist/electron-build/context-compaction/token-estimator.js +40 -0
  260. package/dist/electron-build/context-compaction/token-estimator.js.map +1 -0
  261. package/dist/electron-build/context-compaction/types.js +21 -0
  262. package/dist/electron-build/context-compaction/types.js.map +1 -0
  263. package/dist/electron-build/cron/tick-lock.js +247 -0
  264. package/dist/electron-build/cron/tick-lock.js.map +1 -0
  265. package/dist/electron-build/documents/reader.js +131 -0
  266. package/dist/electron-build/documents/reader.js.map +1 -0
  267. package/dist/electron-build/documents/store.js +220 -0
  268. package/dist/electron-build/documents/store.js.map +1 -0
  269. package/dist/electron-build/external-engines/delegate-handle.js +76 -0
  270. package/dist/electron-build/external-engines/delegate-handle.js.map +1 -0
  271. package/dist/electron-build/external-engines/delegate.js +225 -0
  272. package/dist/electron-build/external-engines/delegate.js.map +1 -0
  273. package/dist/electron-build/external-engines/discovery.js +448 -0
  274. package/dist/electron-build/external-engines/discovery.js.map +1 -0
  275. package/dist/electron-build/external-engines/types.js +13 -0
  276. package/dist/electron-build/external-engines/types.js.map +1 -0
  277. package/dist/electron-build/hooks/hooks-engine.js +367 -0
  278. package/dist/electron-build/hooks/hooks-engine.js.map +1 -0
  279. package/dist/electron-build/judgeness/reflect.js +100 -0
  280. package/dist/electron-build/judgeness/reflect.js.map +1 -0
  281. package/dist/electron-build/judgeness/store.js +536 -0
  282. package/dist/electron-build/judgeness/store.js.map +1 -0
  283. package/dist/electron-build/judgeness/types.js +21 -0
  284. package/dist/electron-build/judgeness/types.js.map +1 -0
  285. package/dist/electron-build/llm/config-store.js +551 -0
  286. package/dist/electron-build/llm/config-store.js.map +1 -0
  287. package/dist/electron-build/llm/error-lessons.js +76 -0
  288. package/dist/electron-build/llm/error-lessons.js.map +1 -0
  289. package/dist/electron-build/llm/pi-ai.js +830 -0
  290. package/dist/electron-build/llm/pi-ai.js.map +1 -0
  291. package/dist/electron-build/llm/system-prompt/registry.js +318 -0
  292. package/dist/electron-build/llm/system-prompt/registry.js.map +1 -0
  293. package/dist/electron-build/llm/system-prompt/strip-hibsml.js +55 -0
  294. package/dist/electron-build/llm/system-prompt/strip-hibsml.js.map +1 -0
  295. package/dist/electron-build/locales/en.js +32 -0
  296. package/dist/electron-build/locales/en.js.map +1 -0
  297. package/dist/electron-build/locales/zh.js +30 -0
  298. package/dist/electron-build/locales/zh.js.map +1 -0
  299. package/dist/electron-build/lsp/lsp-manager.js +327 -0
  300. package/dist/electron-build/lsp/lsp-manager.js.map +1 -0
  301. package/dist/electron-build/lsp/lsp-tools.js +226 -0
  302. package/dist/electron-build/lsp/lsp-tools.js.map +1 -0
  303. package/dist/electron-build/migration/external-agent-migrator.js +451 -0
  304. package/dist/electron-build/migration/external-agent-migrator.js.map +1 -0
  305. package/dist/electron-build/network/agent-network.js +775 -0
  306. package/dist/electron-build/network/agent-network.js.map +1 -0
  307. package/dist/electron-build/network/goal-event-bridge.js +62 -0
  308. package/dist/electron-build/network/goal-event-bridge.js.map +1 -0
  309. package/dist/electron-build/network/iroh-integration.js +117 -0
  310. package/dist/electron-build/network/iroh-integration.js.map +1 -0
  311. package/dist/electron-build/network/iroh-transport.js +550 -0
  312. package/dist/electron-build/network/iroh-transport.js.map +1 -0
  313. package/dist/electron-build/network/p2p.js +1103 -0
  314. package/dist/electron-build/network/p2p.js.map +1 -0
  315. package/dist/electron-build/network/storage/adapters/json-adapter.js +416 -0
  316. package/dist/electron-build/network/storage/adapters/json-adapter.js.map +1 -0
  317. package/dist/electron-build/network/storage/types.js +18 -0
  318. package/dist/electron-build/network/storage/types.js.map +1 -0
  319. package/dist/electron-build/orbitdb/agent-tools.js +402 -0
  320. package/dist/electron-build/orbitdb/agent-tools.js.map +1 -0
  321. package/dist/electron-build/orbitdb/cid-database.js +284 -0
  322. package/dist/electron-build/orbitdb/cid-database.js.map +1 -0
  323. package/dist/electron-build/orbitdb/context-store.js +99 -0
  324. package/dist/electron-build/orbitdb/context-store.js.map +1 -0
  325. package/dist/electron-build/orbitdb/ipfs-node.js +120 -0
  326. package/dist/electron-build/orbitdb/ipfs-node.js.map +1 -0
  327. package/dist/electron-build/orbitdb/kanban-store.js +299 -0
  328. package/dist/electron-build/orbitdb/kanban-store.js.map +1 -0
  329. package/dist/electron-build/orbitdb/task-store.js +155 -0
  330. package/dist/electron-build/orbitdb/task-store.js.map +1 -0
  331. package/dist/electron-build/orbitdb/trajectory-store.js +194 -0
  332. package/dist/electron-build/orbitdb/trajectory-store.js.map +1 -0
  333. package/dist/electron-build/orbitdb/ui-cid.js +77 -0
  334. package/dist/electron-build/orbitdb/ui-cid.js.map +1 -0
  335. package/dist/electron-build/pi-ecosystem-a2ui/index.js +89 -0
  336. package/dist/electron-build/pi-ecosystem-a2ui/index.js.map +1 -0
  337. package/dist/electron-build/pi-ecosystem-goals/index.js +512 -0
  338. package/dist/electron-build/pi-ecosystem-goals/index.js.map +1 -0
  339. package/dist/electron-build/pi-ecosystem-judgment/adaptive-scan.js +325 -0
  340. package/dist/electron-build/pi-ecosystem-judgment/adaptive-scan.js.map +1 -0
  341. package/dist/electron-build/pi-ecosystem-judgment/causal-judge.js +492 -0
  342. package/dist/electron-build/pi-ecosystem-judgment/causal-judge.js.map +1 -0
  343. package/dist/electron-build/pi-ecosystem-judgment/cleanup.js +167 -0
  344. package/dist/electron-build/pi-ecosystem-judgment/cleanup.js.map +1 -0
  345. package/dist/electron-build/pi-ecosystem-judgment/decision.js +321 -0
  346. package/dist/electron-build/pi-ecosystem-judgment/decision.js.map +1 -0
  347. package/dist/electron-build/pi-ecosystem-judgment/detect-hook.js +175 -0
  348. package/dist/electron-build/pi-ecosystem-judgment/detect-hook.js.map +1 -0
  349. package/dist/electron-build/pi-ecosystem-judgment/distill-prompt.js +232 -0
  350. package/dist/electron-build/pi-ecosystem-judgment/distill-prompt.js.map +1 -0
  351. package/dist/electron-build/pi-ecosystem-judgment/distillation.js +304 -0
  352. package/dist/electron-build/pi-ecosystem-judgment/distillation.js.map +1 -0
  353. package/dist/electron-build/pi-ecosystem-judgment/evolve-judgment.js +176 -0
  354. package/dist/electron-build/pi-ecosystem-judgment/evolve-judgment.js.map +1 -0
  355. package/dist/electron-build/pi-ecosystem-judgment/human-value-pipeline.js +65 -0
  356. package/dist/electron-build/pi-ecosystem-judgment/human-value-pipeline.js.map +1 -0
  357. package/dist/electron-build/pi-ecosystem-judgment/human-value-store.js +808 -0
  358. package/dist/electron-build/pi-ecosystem-judgment/human-value-store.js.map +1 -0
  359. package/dist/electron-build/pi-ecosystem-judgment/index.js +508 -0
  360. package/dist/electron-build/pi-ecosystem-judgment/index.js.map +1 -0
  361. package/dist/electron-build/pi-ecosystem-judgment/injection-gate.js +334 -0
  362. package/dist/electron-build/pi-ecosystem-judgment/injection-gate.js.map +1 -0
  363. package/dist/electron-build/pi-ecosystem-judgment/monitor-gate.js +228 -0
  364. package/dist/electron-build/pi-ecosystem-judgment/monitor-gate.js.map +1 -0
  365. package/dist/electron-build/pi-ecosystem-judgment/value-injection.js +598 -0
  366. package/dist/electron-build/pi-ecosystem-judgment/value-injection.js.map +1 -0
  367. package/dist/electron-build/pi-ecosystem-mcp/index.js +643 -0
  368. package/dist/electron-build/pi-ecosystem-mcp/index.js.map +1 -0
  369. package/dist/electron-build/pi-ecosystem-mcp/ui-tools.js +116 -0
  370. package/dist/electron-build/pi-ecosystem-mcp/ui-tools.js.map +1 -0
  371. package/dist/electron-build/pi-ecosystem-subagents/index.js +352 -0
  372. package/dist/electron-build/pi-ecosystem-subagents/index.js.map +1 -0
  373. package/dist/electron-build/security/builtin-guards.js +133 -0
  374. package/dist/electron-build/security/builtin-guards.js.map +1 -0
  375. package/dist/electron-build/security/context-router-tool.js +111 -0
  376. package/dist/electron-build/security/context-router-tool.js.map +1 -0
  377. package/dist/electron-build/security/input-scanner.js +263 -0
  378. package/dist/electron-build/security/input-scanner.js.map +1 -0
  379. package/dist/electron-build/security/react-harness.js +148 -0
  380. package/dist/electron-build/security/react-harness.js.map +1 -0
  381. package/dist/electron-build/security/tool-gate.js +287 -0
  382. package/dist/electron-build/security/tool-gate.js.map +1 -0
  383. package/dist/electron-build/setup/setup-store.js +648 -0
  384. package/dist/electron-build/setup/setup-store.js.map +1 -0
  385. package/dist/electron-build/social/channels/ChannelManager.js +444 -0
  386. package/dist/electron-build/social/channels/ChannelManager.js.map +1 -0
  387. package/dist/electron-build/social/channels/DiapChannelBridge.js +451 -0
  388. package/dist/electron-build/social/channels/DiapChannelBridge.js.map +1 -0
  389. package/dist/electron-build/social/channels/InterestMatcher.js +135 -0
  390. package/dist/electron-build/social/channels/InterestMatcher.js.map +1 -0
  391. package/dist/electron-build/social/channels/types.js +21 -0
  392. package/dist/electron-build/social/channels/types.js.map +1 -0
  393. package/dist/electron-build/social/global-shared-context.js +368 -0
  394. package/dist/electron-build/social/global-shared-context.js.map +1 -0
  395. package/dist/electron-build/social/heartbeat.js +882 -0
  396. package/dist/electron-build/social/heartbeat.js.map +1 -0
  397. package/dist/electron-build/storage/did-catalog-bridge.js +314 -0
  398. package/dist/electron-build/storage/did-catalog-bridge.js.map +1 -0
  399. package/dist/electron-build/storage/did-catalog.js +272 -0
  400. package/dist/electron-build/storage/did-catalog.js.map +1 -0
  401. package/dist/electron-build/utils/auto-update.js +140 -558
  402. package/dist/electron-build/utils/auto-update.js.map +1 -1
  403. package/dist/electron-build/utils/module-context.js +98 -0
  404. package/dist/electron-build/utils/module-context.js.map +1 -0
  405. package/dist/electron-build/utils/runtime-bootstrap.js +745 -0
  406. package/dist/electron-build/utils/runtime-bootstrap.js.map +1 -0
  407. package/dist/electron-build/utils/update-manager.js +770 -0
  408. package/dist/electron-build/utils/update-manager.js.map +1 -0
  409. package/dist/electron-build/utils/update-state.js +406 -0
  410. package/dist/electron-build/utils/update-state.js.map +1 -0
  411. package/dist/electron-build/utils/version-info.js +562 -0
  412. package/dist/electron-build/utils/version-info.js.map +1 -0
  413. package/dist/electron-build/web/i18n.js +146 -0
  414. package/dist/electron-build/web/i18n.js.map +1 -0
  415. package/dist/electron-build/web/routes-x402-info.js +232 -0
  416. package/dist/electron-build/web/routes-x402-info.js.map +1 -0
  417. package/dist/electron-build/web/server-storage.js +390 -0
  418. package/dist/electron-build/web/server-storage.js.map +1 -0
  419. package/dist/electron-build/web/server-types.js +52 -0
  420. package/dist/electron-build/web/server-types.js.map +1 -0
  421. package/dist/electron-build/web/task-deps.js +41 -0
  422. package/dist/electron-build/web/task-deps.js.map +1 -0
  423. package/dist/index.js +28 -27
  424. package/dist/llm/system-prompt/registry.js +6 -3
  425. package/dist/utils/auto-update.js +138 -525
  426. package/dist/utils/module-context.js +59 -0
  427. package/dist/utils/runtime-bootstrap.js +682 -0
  428. package/dist/utils/update-cli.js +82 -0
  429. package/dist/utils/update-health.js +401 -0
  430. package/dist/utils/update-manager.js +716 -0
  431. package/dist/utils/update-state.js +353 -0
  432. package/dist/utils/version-info.js +510 -0
  433. package/package.json +1 -1
  434. package/scripts/build-cli.js +32 -151
  435. package/scripts/postinstall.js +153 -76
@@ -0,0 +1,377 @@
1
+ "use strict";
2
+ /**
3
+ * Memory Compressor — session 消息 → LLM 摘要 → ~/.bolloon/memory/<agentId>/sessions/
4
+ *
5
+ * 触发: 每次 /message 处理后, saveSession 之后 (server.ts:2073 之后)
6
+ * 行为:
7
+ * - 读 session messages
8
+ * - 只压缩 cursor 之后的增量 (≥ 4 条新 messages 才压缩, 防频繁)
9
+ * - 调 LLM 生成中文摘要 (失败 fallback 到纯模板)
10
+ * - append 模式写入 <safe-channelId>__<safe-sessionId>.summary.md
11
+ * - 维护 cursor 文件 <safe-channelId>__<safe-sessionId>.cursor
12
+ *
13
+ * 失败静默: 调用方 try/catch 后 console.warn, 不阻塞主对话.
14
+ */
15
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ var desc = Object.getOwnPropertyDescriptor(m, k);
18
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
19
+ desc = { enumerable: true, get: function() { return m[k]; } };
20
+ }
21
+ Object.defineProperty(o, k2, desc);
22
+ }) : (function(o, m, k, k2) {
23
+ if (k2 === undefined) k2 = k;
24
+ o[k2] = m[k];
25
+ }));
26
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
27
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
28
+ }) : function(o, v) {
29
+ o["default"] = v;
30
+ });
31
+ var __importStar = (this && this.__importStar) || (function () {
32
+ var ownKeys = function(o) {
33
+ ownKeys = Object.getOwnPropertyNames || function (o) {
34
+ var ar = [];
35
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
36
+ return ar;
37
+ };
38
+ return ownKeys(o);
39
+ };
40
+ return function (mod) {
41
+ if (mod && mod.__esModule) return mod;
42
+ var result = {};
43
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
44
+ __setModuleDefault(result, mod);
45
+ return result;
46
+ };
47
+ })();
48
+ Object.defineProperty(exports, "__esModule", { value: true });
49
+ exports.sanitizeAgentId = sanitizeAgentId;
50
+ exports.sanitizeKey = sanitizeKey;
51
+ exports.getMemoryDir = getMemoryDir;
52
+ exports.getSessionSummaryPath = getSessionSummaryPath;
53
+ exports.getSessionCursorPath = getSessionCursorPath;
54
+ exports.getSessionCacheFile = getSessionCacheFile;
55
+ exports.compressSessionToMemory = compressSessionToMemory;
56
+ exports.extractValuePoints = extractValuePoints;
57
+ exports.routeValuePointsToJudgeness = routeValuePointsToJudgeness;
58
+ const fs = __importStar(require("fs/promises"));
59
+ const os = __importStar(require("os"));
60
+ const path = __importStar(require("path"));
61
+ /** 统一消息字段: SessionStore (session-store.ts) 用 role, 老 cache 格式用 type. 读成 SessionMessageLite. */
62
+ function toLite(m) {
63
+ const raw = m && typeof m === 'object' ? m : { content: String(m ?? '') };
64
+ let type = raw.type ?? raw.role ?? '';
65
+ if (type === 'assistant')
66
+ type = 'ai';
67
+ if (type === 'system' || type === 'tool')
68
+ type = 'system';
69
+ return {
70
+ type: type || 'unknown',
71
+ content: typeof raw.content === 'string' ? raw.content : JSON.stringify(raw.content ?? ''),
72
+ timestamp: raw.timestamp || raw.createdAt,
73
+ };
74
+ }
75
+ function sanitizeAgentId(id) {
76
+ return id.replace(/[^a-zA-Z0-9_-]/g, '_').slice(0, 64);
77
+ }
78
+ function sanitizeKey(id) {
79
+ return id.replace(/[^a-zA-Z0-9_.-]/g, '_').slice(0, 128);
80
+ }
81
+ /**
82
+ * ~/.bolloon/memory/<sanitizedAgentId>/
83
+ */
84
+ function getMemoryDir(agentId, home) {
85
+ return path.join(home || os.homedir(), '.bolloon', 'memory', sanitizeAgentId(agentId));
86
+ }
87
+ /**
88
+ * ~/.bolloon/memory/<agentId>/sessions/<safe-channelId>__<safe-sessionId>.summary.md
89
+ */
90
+ function getSessionSummaryPath(agentId, channelId, sessionId, home) {
91
+ const key = `${sanitizeKey(channelId)}__${sanitizeKey(sessionId)}`;
92
+ return path.join(getMemoryDir(agentId, home), 'sessions', `${key}.summary.md`);
93
+ }
94
+ function getSessionCursorPath(agentId, channelId, sessionId, home) {
95
+ const key = `${sanitizeKey(channelId)}__${sanitizeKey(sessionId)}`;
96
+ return path.join(getMemoryDir(agentId, home), 'sessions', `${key}.cursor`);
97
+ }
98
+ /**
99
+ * Session 缓存文件路径 (跟 server.ts:1806 sessionKey 规则一致)
100
+ */
101
+ function getSessionCacheFile(channelId, sessionId, home) {
102
+ const root = path.join(home || os.homedir(), '.bolloon', 'sessions', 'cache');
103
+ const safeChannel = sanitizeKey(channelId);
104
+ const safeSession = sanitizeKey(sessionId).replace(/:/g, '__');
105
+ return path.join(root, `${safeChannel}__${safeSession}.json`);
106
+ }
107
+ async function readCursor(cursorPath) {
108
+ try {
109
+ const raw = await fs.readFile(cursorPath, 'utf-8');
110
+ const n = parseInt(raw.trim(), 10);
111
+ return Number.isFinite(n) && n >= 0 ? n : 0;
112
+ }
113
+ catch {
114
+ return 0;
115
+ }
116
+ }
117
+ async function writeCursor(cursorPath, value) {
118
+ await fs.mkdir(path.dirname(cursorPath), { recursive: true });
119
+ await fs.writeFile(cursorPath, String(value), 'utf-8');
120
+ }
121
+ async function readSessionMessages(sessionCacheFile) {
122
+ try {
123
+ const raw = await fs.readFile(sessionCacheFile, 'utf-8');
124
+ const parsed = JSON.parse(raw);
125
+ const list = Array.isArray(parsed) ? parsed : Array.isArray(parsed.messages) ? parsed.messages : [];
126
+ // 2026-08-06: 统一 role/type 字段 (SessionStore 写 role, 老格式写 type), 过滤空壳消息
127
+ return list.map((m) => toLite(m)).filter(m => m.type !== 'unknown' && m.content);
128
+ }
129
+ catch {
130
+ return [];
131
+ }
132
+ }
133
+ /**
134
+ * 纯模板摘要 (LLM 失败 fallback, 不依赖外部调用)
135
+ */
136
+ function templateSummary(opts) {
137
+ const userMsgs = opts.newMessages.filter(m => m.type === 'user');
138
+ const aiMsgs = opts.newMessages.filter(m => m.type === 'ai');
139
+ const userSnippet = userMsgs.slice(0, 3).map(m => ` - ${m.content.slice(0, 80)}`).join('\n');
140
+ const aiSnippet = aiMsgs.slice(0, 3).map(m => ` - ${m.content.slice(0, 80)}`).join('\n');
141
+ return `# Session 摘要 — ${opts.channelId} / ${opts.sessionId}
142
+
143
+ 时间: ${opts.timestamp}
144
+ 新增消息数: ${opts.newMessages.length} (user=${userMsgs.length}, ai=${aiMsgs.length})
145
+
146
+ ## 用户关键提问
147
+ ${userSnippet || ' (无)'}
148
+
149
+ ## AI 关键回答
150
+ ${aiSnippet || ' (无)'}
151
+
152
+ ## 备注
153
+ - 此摘要由模板生成 (LLM 调用失败 fallback)
154
+ `;
155
+ }
156
+ /**
157
+ * 尝试调 LLM 生成更精炼的中文摘要. 失败 → 抛错, 由 caller fallback.
158
+ *
159
+ * 2026-08-06 修复: 之前调用不存在的 pi-ai.generateText → 100% 抛错 → 永远模板 fallback.
160
+ * 改用真实接口 getMinimax().chat(userMsg, systemPrompt) (pi-ai.ts 导出的 PiAIModel).
161
+ * 用动态 import + 失败静默 — 不引入 pi-ai 强依赖 (避免循环).
162
+ */
163
+ async function tryLlmSummary(systemPrompt, userPrompt) {
164
+ try {
165
+ const piAi = await Promise.resolve().then(() => __importStar(require('../llm/pi-ai.js')));
166
+ const getMinimax = piAi.getMinimax;
167
+ if (typeof getMinimax !== 'function')
168
+ throw new Error('getMinimax not exported');
169
+ const llm = getMinimax();
170
+ if (!llm || typeof llm.chat !== 'function')
171
+ throw new Error('LLM chat not available');
172
+ const result = await llm.chat(userPrompt, systemPrompt);
173
+ const text = result?.reply || result?.text || '';
174
+ if (typeof text !== 'string' || text.length < 20)
175
+ throw new Error('LLM returned too-short text');
176
+ return text;
177
+ }
178
+ catch (e) {
179
+ throw new Error(`LLM call failed: ${e?.message || String(e)}`);
180
+ }
181
+ }
182
+ async function compressSessionToMemory(opts) {
183
+ const agentId = sanitizeAgentId(opts.agentId);
184
+ const home = opts.home || os.homedir();
185
+ const summaryPath = getSessionSummaryPath(agentId, opts.channelId, opts.sessionId, home);
186
+ const cursorPath = getSessionCursorPath(agentId, opts.channelId, opts.sessionId, home);
187
+ const sessionCacheFile = getSessionCacheFile(opts.channelId, opts.sessionId, home);
188
+ const allMessages = await readSessionMessages(sessionCacheFile);
189
+ const cursor = await readCursor(cursorPath);
190
+ const newMessages = allMessages.slice(cursor);
191
+ const minNew = opts.minNewMessages ?? 4;
192
+ if (allMessages.length === 0) {
193
+ return { summaryPath, cursorPath, messagesCount: 0, bytesWritten: 0, skipped: 'no-new-messages' };
194
+ }
195
+ if (newMessages.length < minNew) {
196
+ return { summaryPath, cursorPath, messagesCount: newMessages.length, bytesWritten: 0, skipped: 'too-few-messages' };
197
+ }
198
+ const timestamp = new Date().toISOString();
199
+ let summaryBody;
200
+ try {
201
+ // 2026-08-03 (Context OS P4): 摘要 prompt 要求输出"价值点"段 — 供收尾路由入库 judgeness
202
+ const sysPrompt = '你是 bolloon 记忆压缩助手. 输入是一段 session 消息历史 (用户问题 + AI 回答), 输出 200-400 字中文摘要, 包含 3-5 条关键发现和未完成事项. 不要寒暄, 不要复述已知. 格式: ## 关键发现 / ## 待办. 最后单独输出 ## 价值点 段: 0-3 行, 每行 `- (类型) 一句话内容`, 类型 ∈ decision|lesson|knowledge|insight (decision=做出了什么决定; lesson=哪里出错下次怎么避免; knowledge=修正了什么认知; insight=改变了判断的洞察). 没有就写 `- (无)`';
203
+ const recentSnippet = newMessages.slice(-10).map(m => `[${m.type}] ${m.content}`).join('\n---\n').slice(0, 6000);
204
+ const userPrompt = `Channel: ${opts.channelId}\nSession: ${opts.sessionId}\n时间: ${timestamp}\n新增消息数: ${newMessages.length}\n\n最近消息:\n${recentSnippet}`;
205
+ summaryBody = await tryLlmSummary(sysPrompt, userPrompt);
206
+ }
207
+ catch (e) {
208
+ summaryBody = templateSummary({
209
+ channelId: opts.channelId,
210
+ sessionId: opts.sessionId,
211
+ newMessages,
212
+ timestamp,
213
+ });
214
+ }
215
+ const block = `\n\n---\n\n## 增量摘要 @ ${timestamp} (${newMessages.length} messages)\n\n${summaryBody.trim()}\n`;
216
+ await fs.mkdir(path.dirname(summaryPath), { recursive: true });
217
+ await fs.appendFile(summaryPath, block, 'utf-8');
218
+ await writeCursor(cursorPath, allMessages.length);
219
+ // 2026-08-08 (DID 目录写穿): 摘要同步进 DID 目录 memory 表 — WAL 事件 → 多设备同步/OrbitDB 复制.
220
+ // 失败静默: 目录不可用不影响原磁盘写入.
221
+ try {
222
+ const { catalogUpsertQuiet } = await Promise.resolve().then(() => __importStar(require('../storage/did-catalog-bridge.js')));
223
+ await catalogUpsertQuiet('memory', `sessions/${agentId}/${path.basename(summaryPath)}`, {
224
+ agentId,
225
+ channelId: opts.channelId,
226
+ sessionId: opts.sessionId,
227
+ kind: 'summary',
228
+ file: path.basename(summaryPath),
229
+ summary: summaryBody.slice(0, 4000),
230
+ size: summaryBody.length,
231
+ updatedAt: Date.now(),
232
+ }, { home: opts.home });
233
+ }
234
+ catch { /* 静默 */ }
235
+ // 2026-08-03 (Context OS P4): 价值点分类路由 — 把摘要里的 decision/lesson/knowledge/insight
236
+ // 自动写入 human-values + judgeness (Context OS §6 对话收尾: 价值不流失).
237
+ // 失败静默, 不阻塞主对话. 幂等: 相同 decision 文本跳过.
238
+ try {
239
+ await routeValuePointsToJudgeness({
240
+ agentId,
241
+ channelId: opts.channelId,
242
+ summaryBody,
243
+ home,
244
+ });
245
+ }
246
+ catch { /* 静默 */ }
247
+ // 2026-07-22 设计 C: 废气采样 — 压缩成功 = 上下文需要压缩的信号, 记入涡轮 (隐式)
248
+ // 废气不进 prompt, 只调参 (背压高 → judgment 注入收紧). 落 log/memory.
249
+ try {
250
+ const { recordExhaust } = await Promise.resolve().then(() => __importStar(require('./exhaust-scrubber.js')));
251
+ recordExhaust({
252
+ source: 'memory-compressor',
253
+ reason: 'compress-summary-written',
254
+ droppedTokens: newMessages.length * 200, // 粗估 200 tokens/msg
255
+ }, opts.home).catch(() => { });
256
+ }
257
+ catch { /* 静默 */ }
258
+ return {
259
+ summaryPath,
260
+ cursorPath,
261
+ messagesCount: newMessages.length,
262
+ bytesWritten: Buffer.byteLength(block, 'utf-8'),
263
+ };
264
+ }
265
+ /**
266
+ * 解析摘要里的 `## 价值点` 段.
267
+ * 容错 3 种行格式: `- (decision) 内容` / `- decision: 内容` / `- decision 内容`
268
+ * 无该段 / `- (无)` → 返回 [].
269
+ */
270
+ function extractValuePoints(summaryBody) {
271
+ if (!summaryBody)
272
+ return [];
273
+ const m = summaryBody.match(/##\s*价值点\s*\n([\s\S]*?)(?=\n##\s|\n---\s*$|$)/);
274
+ if (!m)
275
+ return [];
276
+ const lines = m[1].split('\n').map((l) => l.trim()).filter(Boolean);
277
+ const out = [];
278
+ const typeSet = ['decision', 'lesson', 'knowledge', 'insight'];
279
+ for (const line of lines) {
280
+ const stripped = line.replace(/^[-*•]\s*/, '');
281
+ if (stripped === '(无)' || stripped === '无' || stripped === '')
282
+ continue;
283
+ // - (type) content | - type: content | - type content
284
+ const m2 = stripped.match(/^\(?(\w+)\)?\s*[::]?\s+(.+)$/);
285
+ if (!m2)
286
+ continue;
287
+ const t = m2[1].toLowerCase();
288
+ if (!typeSet.includes(t))
289
+ continue;
290
+ const content = m2[2].trim();
291
+ if (content.length < 4)
292
+ continue;
293
+ out.push({ type: t, content });
294
+ }
295
+ return out.slice(0, 3);
296
+ }
297
+ /** 幂等检查: human-values 里已有相同 decision 文本 → 跳过 (防重复入库) */
298
+ async function alreadyRouted(decisionText, home) {
299
+ try {
300
+ const { loadAllJudgments } = await Promise.resolve().then(() => __importStar(require('../pi-ecosystem-judgment/human-value-store.js')));
301
+ const all = await loadAllJudgments();
302
+ return all.some((j) => String(j.decision).trim() === decisionText.trim());
303
+ }
304
+ catch {
305
+ return false; // 读失败 → 不跳过 (重试语义)
306
+ }
307
+ }
308
+ /**
309
+ * 把摘要里的价值点路由到 human-values + judgeness + Context OS 资产层.
310
+ * 失败静默 (由调用方 try/catch), 单条失败不影响其余.
311
+ * 落点 (Context OS §6 Step2 唯一落点):
312
+ * decision → decisions/ (decision-store, 不重复写资产层)
313
+ * lesson → human-values + judgeness + 12-Analysis/ (复盘)
314
+ * knowledge→ human-values + judgeness + 07-Knowledge/
315
+ * insight → human-values + judgeness + 08-Insights/
316
+ * 返回写入条数 (测试/日志用).
317
+ */
318
+ async function routeValuePointsToJudgeness(opts) {
319
+ const points = extractValuePoints(opts.summaryBody);
320
+ if (points.length === 0)
321
+ return 0;
322
+ let written = 0;
323
+ for (const p of points) {
324
+ try {
325
+ const decisionText = p.content.slice(0, 300);
326
+ if (await alreadyRouted(decisionText, opts.home))
327
+ continue;
328
+ const { storeHumanJudgment } = await Promise.resolve().then(() => __importStar(require('../pi-ecosystem-judgment/human-value-store.js')));
329
+ const { reflectAfterJudgment } = await Promise.resolve().then(() => __importStar(require('../judgeness/reflect.js')));
330
+ const isLesson = p.type === 'lesson';
331
+ const judgment = await storeHumanJudgment({
332
+ decision: decisionText,
333
+ decision_type: isLesson ? 'reject' : 'approve',
334
+ reasons: [`来源: session 摘要价值点 (${p.type})`],
335
+ values_derived: [],
336
+ context: {
337
+ domain: opts.channelId?.startsWith('ch_') ? '通用' : (opts.channelId || '通用'),
338
+ complexity: 'simple',
339
+ stakes: 'low',
340
+ time_pressure: 'low',
341
+ },
342
+ metadata: {
343
+ source: isLesson ? 'trajectory' : 'implicit',
344
+ confidence: 0.6,
345
+ revisable: true,
346
+ },
347
+ status: 'active',
348
+ appliesTo: [],
349
+ });
350
+ await reflectAfterJudgment(judgment, 'agent', sanitizeAgentId(opts.agentId)).catch(() => null);
351
+ written += 1;
352
+ // 2026-08-03 (Context OS P5): 唯一落点 — knowledge/insight/lesson 写入资产层
353
+ // (幂等: 同标题已存在则跳过; 失败静默不影响主流程)
354
+ const assetLayer = p.type === 'knowledge' ? '07-Knowledge' :
355
+ p.type === 'insight' ? '08-Insights' :
356
+ p.type === 'lesson' ? '12-Analysis' : null;
357
+ if (assetLayer) {
358
+ try {
359
+ const { writeContextAsset } = await Promise.resolve().then(() => __importStar(require('./context-os.js')));
360
+ await writeContextAsset({
361
+ layer: assetLayer,
362
+ title: p.content.slice(0, 40),
363
+ content: `> 来源: session 价值点自动路由 (${p.type})\n\n${p.content}\n\n## 价值判断自检\n未来哪个具体场景会用到它? (待确认后固化, 当前 stage0)`,
364
+ tags: [p.type, 'auto-routed'],
365
+ domain: opts.channelId,
366
+ }, opts.home);
367
+ }
368
+ catch { /* 资产层写入失败不影响 */ }
369
+ }
370
+ }
371
+ catch {
372
+ /* 单条失败跳过 */
373
+ }
374
+ }
375
+ return written;
376
+ }
377
+ //# sourceMappingURL=memory-compressor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-compressor.js","sourceRoot":"","sources":["../../../src/bootstrap/memory-compressor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,219 @@
1
+ "use strict";
2
+ /**
3
+ * Persona Documents Loader — ~/.bolloon/persona/<agentId>/*.md
4
+ *
5
+ * 失败静默: 文件不存在 → 字段 = '', 不抛错
6
+ * 安全: agentId sanitize (防路径穿越)
7
+ * 6 段输出顺序: identity → soul → project → user → agent → wiki
8
+ *
9
+ * 2026-08-03 (Context OS 融合 P1):
10
+ * - 支持 persona 文件 frontmatter 里的判断力声明 (judgment_style / stakes_default / revisable),
11
+ * 与 judgeness 5 维 facets 对应 — persona 提供"这个人怎么判断"的入口.
12
+ * - formatPersonaForSystemPrompt 固定追加 INJECT 工作纪律段 (Context OS 读取协议),
13
+ * 任何 channel 即使无 persona 文件也有纪律约束.
14
+ */
15
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ var desc = Object.getOwnPropertyDescriptor(m, k);
18
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
19
+ desc = { enumerable: true, get: function() { return m[k]; } };
20
+ }
21
+ Object.defineProperty(o, k2, desc);
22
+ }) : (function(o, m, k, k2) {
23
+ if (k2 === undefined) k2 = k;
24
+ o[k2] = m[k];
25
+ }));
26
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
27
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
28
+ }) : function(o, v) {
29
+ o["default"] = v;
30
+ });
31
+ var __importStar = (this && this.__importStar) || (function () {
32
+ var ownKeys = function(o) {
33
+ ownKeys = Object.getOwnPropertyNames || function (o) {
34
+ var ar = [];
35
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
36
+ return ar;
37
+ };
38
+ return ownKeys(o);
39
+ };
40
+ return function (mod) {
41
+ if (mod && mod.__esModule) return mod;
42
+ var result = {};
43
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
44
+ __setModuleDefault(result, mod);
45
+ return result;
46
+ };
47
+ })();
48
+ Object.defineProperty(exports, "__esModule", { value: true });
49
+ exports.sanitizeAgentId = sanitizeAgentId;
50
+ exports.loadPersonaDocs = loadPersonaDocs;
51
+ exports.parseSimpleFrontmatter = parseSimpleFrontmatter;
52
+ exports.loadPersonaJudgmentDeclaration = loadPersonaJudgmentDeclaration;
53
+ exports.formatJudgmentDeclaration = formatJudgmentDeclaration;
54
+ exports.formatPersonaForSystemPrompt = formatPersonaForSystemPrompt;
55
+ const fs = __importStar(require("fs/promises"));
56
+ const os = __importStar(require("os"));
57
+ const path = __importStar(require("path"));
58
+ const FILE_KEYS = ['soul', 'identity', 'project', 'user', 'agent', 'wiki'];
59
+ /**
60
+ * 安全转 agentId: 只保留 [a-zA-Z0-9_-], 限长 64
61
+ * 防止路径穿越 ('/', '..', '\\\\' 都变 '_')
62
+ */
63
+ function sanitizeAgentId(id) {
64
+ return id.replace(/[^a-zA-Z0-9_-]/g, '_').slice(0, 64);
65
+ }
66
+ /**
67
+ * 读 ~/.bolloon/persona/<sanitizedAgentId>/{6 files}
68
+ * 文件不存在 → 该字段 = ''
69
+ */
70
+ async function loadPersonaDocs(agentId, home) {
71
+ const safeId = sanitizeAgentId(agentId);
72
+ const root = home || os.homedir();
73
+ const baseDir = path.join(root, '.bolloon', 'persona', safeId);
74
+ const docs = {
75
+ agentId: safeId,
76
+ soul: '',
77
+ identity: '',
78
+ project: '',
79
+ user: '',
80
+ agent: '',
81
+ wiki: '',
82
+ };
83
+ await Promise.all(FILE_KEYS.map(async (key) => {
84
+ const file = path.join(baseDir, `${key}.md`);
85
+ try {
86
+ const content = await fs.readFile(file, 'utf-8');
87
+ docs[key] = content;
88
+ }
89
+ catch {
90
+ docs[key] = '';
91
+ }
92
+ }));
93
+ return docs;
94
+ }
95
+ /**
96
+ * 轻量 frontmatter 解析 (不依赖 js-yaml).
97
+ * 只认 `key: value` 单行字段; 无 frontmatter (不以 --- 开头) → 返回 {}.
98
+ */
99
+ function parseSimpleFrontmatter(content) {
100
+ const out = {};
101
+ const m = content.match(/^---\s*\r?\n([\s\S]*?)\r?\n---/);
102
+ if (!m)
103
+ return out;
104
+ for (const line of m[1].split('\n')) {
105
+ const kv = line.match(/^\s*([A-Za-z0-9_-]+)\s*:\s*(.*?)\s*$/);
106
+ if (kv)
107
+ out[kv[1]] = kv[2].replace(/^['"]|['"]$/g, '').trim();
108
+ }
109
+ return out;
110
+ }
111
+ /**
112
+ * 读 persona 6 文件 frontmatter 里的判断力声明 (Context OS 入口层 ↔ judgeness 5 维).
113
+ * 聚合所有文件中的 judgment_style / stakes_default / revisable 字段 (后者优先).
114
+ * 失败静默: 无 persona 文件 → 全部空值, 不抛错.
115
+ */
116
+ async function loadPersonaJudgmentDeclaration(agentId, home) {
117
+ const safeId = sanitizeAgentId(agentId);
118
+ const root = home || os.homedir();
119
+ const baseDir = path.join(root, '.bolloon', 'persona', safeId);
120
+ const decl = {
121
+ judgmentStyle: '',
122
+ stakesDefault: '',
123
+ revisable: true,
124
+ raw: {},
125
+ };
126
+ await Promise.all(FILE_KEYS.map(async (key) => {
127
+ try {
128
+ const content = await fs.readFile(path.join(baseDir, `${key}.md`), 'utf-8');
129
+ const fm = parseSimpleFrontmatter(content);
130
+ for (const [k, v] of Object.entries(fm)) {
131
+ if (k.startsWith('judgment_') || k === 'stakes_default' || k === 'revisable') {
132
+ decl.raw[k] = v;
133
+ }
134
+ }
135
+ }
136
+ catch {
137
+ /* 单文件缺失/损坏跳过 */
138
+ }
139
+ }));
140
+ decl.judgmentStyle = decl.raw['judgment_style'] || decl.raw['judgmentStyle'] || '';
141
+ decl.stakesDefault = decl.raw['stakes_default'] || decl.raw['stakesDefault'] || '';
142
+ decl.revisable = decl.raw['revisable'] !== 'false';
143
+ return decl;
144
+ }
145
+ /** 把判断力声明格式化成一行段 (server contextHint 注入用) */
146
+ function formatJudgmentDeclaration(decl) {
147
+ if (!decl.judgmentStyle && !decl.stakesDefault && !decl.raw['revisable'])
148
+ return '';
149
+ const parts = [];
150
+ if (decl.judgmentStyle)
151
+ parts.push(`风格: ${decl.judgmentStyle}`);
152
+ if (decl.stakesDefault)
153
+ parts.push(`默认风险等级: ${decl.stakesDefault}`);
154
+ if (decl.raw['revisable'] === 'false')
155
+ parts.push('偏好不可回滚的决策 (谨慎)');
156
+ else if (decl.raw['revisable'] === 'true')
157
+ parts.push('偏好可回滚的决策');
158
+ return `[系统上下文] 判断风格声明 (来自 persona frontmatter, 与 judgeness 判断资产对应):\n ${parts.join(' / ')}\n\n`;
159
+ }
160
+ const DEFAULT_MAX_CHARS = 4000;
161
+ const SECTION_LABELS = {
162
+ identity: 'Identity',
163
+ soul: 'Soul',
164
+ project: 'Project',
165
+ user: 'User',
166
+ agent: 'Agent',
167
+ wiki: 'Wiki',
168
+ };
169
+ const OUTPUT_ORDER = ['identity', 'soul', 'project', 'user', 'agent', 'wiki'];
170
+ /**
171
+ * 把 PersonaDocs 格式化成 markdown 段, 拼到 system prompt 头部.
172
+ *
173
+ * 超 maxChars 时按比例截断: 每个字段都保留头部,
174
+ * 保证 6 段标识都出现, 不砍段.
175
+ *
176
+ * 2026-08-03: 固定追加 INJECT 工作纪律段 (Context OS 读取协议 §4/§10).
177
+ * 纪律段不参与动态预算 — 即使没有 persona 文件也有纪律约束.
178
+ */
179
+ function formatPersonaForSystemPrompt(docs, maxChars) {
180
+ const cap = maxChars ?? DEFAULT_MAX_CHARS;
181
+ // 段: 标识 + 字段值 (空字段跳过)
182
+ const sections = [];
183
+ for (const key of OUTPUT_ORDER) {
184
+ const v = docs[key];
185
+ if (v && v.length > 0) {
186
+ sections.push({ key, text: `## ${SECTION_LABELS[key]}\n${v}` });
187
+ }
188
+ }
189
+ // INJECT 工作纪律 (Context OS §4 最小读取集 + §10 工作规则, 精简 4 条)
190
+ const discipline = '## 工作纪律 (INJECT)\n' +
191
+ '1. 先看动态状态 (历史记忆 / 进行中的计划), 再按任务路由读取对应文档; 不读到的内容不假装知道.\n' +
192
+ '2. 区分: 已知事实 / 你的判断 / 需要用户确认的内容.\n' +
193
+ '3. 重要决策前列出: 选项 (含不做)、成本、收益、风险、信息缺口、回滚条件 — 决策可追溯.\n' +
194
+ '4. 对话收尾提取可复用的决策/知识/教训, 归档到唯一位置, 不制造重复文件.';
195
+ const header = `# Persona (agentId=${docs.agentId})\n\n`;
196
+ // 无 persona 文件 → 只输出纪律段
197
+ if (sections.length === 0) {
198
+ const solo = `${header}${discipline}`;
199
+ return solo.length > cap ? solo.slice(0, cap) : solo;
200
+ }
201
+ // 预算每段 (去掉 ## 标识和换行的固定开销; 纪律段固定, 动态段让出预算)
202
+ const fixedOverhead = header.length + discipline.length + (sections.length - 1) * 2;
203
+ const perSectionBudget = Math.max(50, Math.floor((cap - fixedOverhead) / sections.length));
204
+ const parts = [header.trim()];
205
+ for (const sec of sections) {
206
+ let body = sec.text;
207
+ if (body.length > perSectionBudget) {
208
+ body = body.substring(0, perSectionBudget) + '\n... (截断)';
209
+ }
210
+ parts.push(body);
211
+ }
212
+ let result = parts.join('\n\n') + '\n\n' + discipline;
213
+ if (result.length > cap) {
214
+ const truncateMarker = '\n... (截断)';
215
+ result = result.substring(0, Math.max(0, cap - truncateMarker.length)) + truncateMarker;
216
+ }
217
+ return result;
218
+ }
219
+ //# sourceMappingURL=persona-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persona-loader.js","sourceRoot":"","sources":["../../../src/bootstrap/persona-loader.ts"],"names":[],"mappings":"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"}