@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,124 @@
1
+ "use strict";
2
+ /**
3
+ * Permission Mode — 3 种模式枚举 + 解析
4
+ *
5
+ * 设计: 严格对齐 Claude Code 论文 3 种 mode (default / acceptEdits / bypassPermissions)
6
+ * 论文第 7 种 (plan/dontAsk/bubble) bolloon 暂不引入, 减少 API surface.
7
+ *
8
+ * 关键设计: shell-guard **不受** mode 影响
9
+ * - 路径黑名单 (.bolloon/, pi-sdk.ts, shell-guard.ts, .env, .git/ 等) 永远生效
10
+ * - 命令 allowlist 默认: git/node/npm/npx/tsx/tsc/vitest/cat/head/tail/wc/ls/echo/pwd/date/mkdir/touch 永远生效
11
+ * - 即使用户设 bypassPermissions, shell 类工具仍走 shell-guard
12
+ *
13
+ * 失败静默: 任何异常 → 返回 'default' (向后兼容)
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.ALL_PERMISSION_MODES = void 0;
17
+ exports.resolvePermissionMode = resolvePermissionMode;
18
+ exports.isEditTool = isEditTool;
19
+ exports.isShellTool = isShellTool;
20
+ exports.shouldRunBlacklist = shouldRunBlacklist;
21
+ exports._resetPermissionModeForTest = _resetPermissionModeForTest;
22
+ exports.ALL_PERMISSION_MODES = [
23
+ 'default',
24
+ 'acceptEdits',
25
+ 'bypassPermissions',
26
+ ];
27
+ /**
28
+ * 解析当前 permission mode.
29
+ * 优先级 (由高到低):
30
+ * 1. opts.permissionMode (BootstrapOptions 显式传入)
31
+ * 2. runtime override (~/.bolloon/sessions/permission-mode.json, UI 设置)
32
+ * 3. env BOLLOON_PERM_MODE (环境变量)
33
+ * 4. 'default' (兜底)
34
+ *
35
+ * 非法值 → fallback 'default', console.warn
36
+ * 失败静默: 任何异常 → 'default' (不阻塞主对话)
37
+ */
38
+ function resolvePermissionMode(opts) {
39
+ try {
40
+ if (opts?.permissionMode && exports.ALL_PERMISSION_MODES.includes(opts.permissionMode)) {
41
+ return opts.permissionMode;
42
+ }
43
+ // runtime override (UI 设置, 存 ~/.bolloon/sessions/permission-mode.json)
44
+ const override = readRuntimeOverride();
45
+ if (override) {
46
+ return override;
47
+ }
48
+ const env = process.env.BOLLOON_PERM_MODE;
49
+ if (env === 'default' || env === 'acceptEdits' || env === 'bypassPermissions') {
50
+ return env;
51
+ }
52
+ if (env && env.length > 0) {
53
+ console.warn(`[permission-mode] unknown BOLLOON_PERM_MODE="${env}", fallback to "default"`);
54
+ }
55
+ return 'default';
56
+ }
57
+ catch (err) {
58
+ console.warn('[permission-mode] resolvePermissionMode failed (silent, using default):', err);
59
+ return 'default';
60
+ }
61
+ }
62
+ /**
63
+ * 读 runtime override 文件 (UI 设的 mode).
64
+ * 失败静默: 任何异常 → null (回到 env/default)
65
+ */
66
+ function readRuntimeOverride() {
67
+ try {
68
+ const fs = require('fs');
69
+ const os = require('os');
70
+ const path = require('path');
71
+ const file = path.join(process.env.HOME || os.homedir() || '/tmp', '.bolloon', 'sessions', 'permission-mode.json');
72
+ if (!fs.existsSync(file))
73
+ return null;
74
+ const raw = fs.readFileSync(file, 'utf-8');
75
+ const obj = JSON.parse(raw);
76
+ if (obj && typeof obj.mode === 'string' && exports.ALL_PERMISSION_MODES.includes(obj.mode)) {
77
+ return obj.mode;
78
+ }
79
+ return null;
80
+ }
81
+ catch {
82
+ return null;
83
+ }
84
+ }
85
+ /**
86
+ * 工具名分类: 是不是"编辑"类 (受 acceptEdits 模式影响)
87
+ * 简单按前缀, 不做完整注册表
88
+ */
89
+ function isEditTool(toolName) {
90
+ const lc = toolName.toLowerCase();
91
+ return lc.startsWith('edit_') || lc.startsWith('write_') || lc === 'str_replace' || lc === 'create_file' || lc === 'present_files';
92
+ }
93
+ /**
94
+ * 工具名分类: 是不是"shell"类 (永远走 shell-guard, 不受 mode 影响)
95
+ */
96
+ function isShellTool(toolName) {
97
+ const lc = toolName.toLowerCase();
98
+ return lc === 'shell' || lc === 'shell_exec' || lc === 'bash';
99
+ }
100
+ /**
101
+ * 判断当前 mode + tool 的最终是否需要走 blacklist
102
+ *
103
+ * 逻辑表:
104
+ * - shell 工具: 永远走 blacklist (shell-guard 接管)
105
+ * - bypassPermissions 模式: 非 shell 全部放行
106
+ * - acceptEdits 模式: edit_* / write_* 类跳过 blacklist
107
+ * - default 模式: 全部走 blacklist
108
+ */
109
+ function shouldRunBlacklist(toolName, mode) {
110
+ if (isShellTool(toolName))
111
+ return true; // shell-guard 永远跑
112
+ if (mode === 'bypassPermissions')
113
+ return false;
114
+ if (mode === 'acceptEdits' && isEditTool(toolName))
115
+ return false;
116
+ return true; // default
117
+ }
118
+ // ============================================================
119
+ // 测试钩子
120
+ // ============================================================
121
+ function _resetPermissionModeForTest() {
122
+ // 解析只读 env, 无内部状态, 保留 API 一致
123
+ }
124
+ //# sourceMappingURL=permission-mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission-mode.js","sourceRoot":"","sources":["../../../src/agents/permission-mode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,268 @@
1
+ "use strict";
2
+ /**
3
+ * pi-harness.ts — 唯一 PiAgentHarness 门面 (2026-09-16 Milestone 1-B)
4
+ *
5
+ * 背景 (leo 2026-09-16): 约束层是**散落的多层** —— react-harness / deny-pipeline /
6
+ * pre-tool-validator(human-value-pipeline) / hooks-engine / tool-gate / loop-review 各自被
7
+ * pi-sdk 在不同位置分别调用, 于是出现"某条路径走 deny-pipeline、另一条绕过它", 且各自出错时
8
+ * 的处置不一致 (多数是 fail-open = 出错就放行)。
9
+ *
10
+ * 这一层不删旧模块, 只**收敛入口**: pi-sdk 只认识 PiAgentHarness, 由 Harness 决定约束流程与顺序。
11
+ * 旧模块成为 Harness 的内部实现 (通过构造参数注入, 行为保持不变)。
12
+ *
13
+ * 生命周期 (与计划书一致):
14
+ * sessionStart → beforeModelCall → afterModelCall → beforeToolCall → afterToolCall
15
+ * → checkpoint → recover → pause → sessionEnd
16
+ *
17
+ * 失败分级 (leo 2026-09-16 第 6 条):
18
+ * core_constraint 核心约束自身失效 (e.g. 策略层异常) → **阻止执行** (默认 fail-closed)
19
+ * policy_denied 工具被策略拒绝 → 返回 agent 可处理的拒绝结果 (不崩, 不静默放行)
20
+ * observational 观测/记录失败 → 记降级, 不中断 (决策不因记账失败而改变)
21
+ * goal_review 目标审查未通过 → 不许进 done (由调用方按决策续跑)
22
+ *
23
+ * 设计取舍 (如实记):
24
+ * - 旧行为里 "harness 抛错 → 放行" 是 fail-open; 现在默认 fail-closed (`failClosed: true`)。
25
+ * 这是 Phase 1 的**明确要求** (不允许 harness 出错后默认放行高风险工具), 不是顺带改动。
26
+ * - Harness 事件写 Run 用"观测级"写入: 记账失败绝不改变已做出的决策 (记录是账, 不是闸)。
27
+ */
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.PiAgentHarness = void 0;
30
+ const loop_review_js_1 = require("./loop-review.js");
31
+ class PiAgentHarness {
32
+ deps;
33
+ failClosed;
34
+ modelCalls = 0;
35
+ degradedOnce = new Set();
36
+ constructor(deps) {
37
+ this.deps = deps;
38
+ this.failClosed = deps.failClosed !== false;
39
+ }
40
+ /** 事件出口: 记账失败**永不**抛出 (记录是账, 不是闸) */
41
+ emit(e) {
42
+ try {
43
+ const full = { ts: new Date().toISOString(), ...e };
44
+ const out = this.deps.events?.(full);
45
+ if (out && typeof out.catch === 'function') {
46
+ out.catch((err) => console.warn('[PiAgentHarness] 事件写入失败 (非致命):', err?.message));
47
+ }
48
+ }
49
+ catch (err) {
50
+ console.warn('[PiAgentHarness] 事件构造/写入失败 (非致命):', err?.message);
51
+ }
52
+ }
53
+ /** 约束层自身失效的统一处置: 记降级 + 决定是否放行 (failClosed → 不放行) */
54
+ onLayerError(layer, err, ctx, tool) {
55
+ const message = `${layer} 失效: ${String(err?.message || err).slice(0, 200)}`;
56
+ console.warn(`[PiAgentHarness] ${message}`);
57
+ this.emit({ event: 'beforeToolCall', kind: 'error', failureKind: 'core_constraint', tool, reason: message, source: layer, runId: ctx.runId, goalId: ctx.goalId });
58
+ if (!this.failClosed)
59
+ return null; // 旧语义 (fail-open) — 仅显式配置时
60
+ return {
61
+ allow: false,
62
+ reason: `核心约束层 ${layer} 失效, 已阻止该工具调用 (fail-closed): ${message}`,
63
+ source: 'harness-error',
64
+ kind: 'core_constraint',
65
+ degraded: true,
66
+ };
67
+ }
68
+ // ───────────────────────── session ─────────────────────────
69
+ async sessionStart(ctx) {
70
+ const t0 = Date.now();
71
+ // ① react-harness 会话开启 (8-gate 状态复位)
72
+ try {
73
+ await this.deps.reactHarness.onSessionStart(ctx.channelId);
74
+ }
75
+ catch (err) {
76
+ this.emit({ event: 'sessionStart', kind: 'degrade', failureKind: 'observational', reason: `reactHarness.onSessionStart 失败: ${err?.message}`, runId: ctx.runId, goalId: ctx.goalId });
77
+ }
78
+ // ② hooks: onLoopStart (一次运行一次; 与旧行为一致)
79
+ let hookDeny = null;
80
+ try {
81
+ const results = await this.deps.hooks.fire('onLoopStart', { event: 'onLoopStart', channelId: ctx.channelId, agentId: ctx.agentId });
82
+ for (const r of results || [])
83
+ if (r?.deny)
84
+ hookDeny = r.reason || 'hook 拒绝';
85
+ }
86
+ catch { /* hook 失败静默 (与旧行为一致: hooks-engine 自身已兜底) */ }
87
+ this.emit({ event: 'sessionStart', kind: hookDeny ? 'deny' : 'allow', reason: hookDeny || undefined, source: 'hooks', ms: Date.now() - t0, runId: ctx.runId, goalId: ctx.goalId });
88
+ }
89
+ async sessionEnd(ctx) {
90
+ try {
91
+ await this.deps.reactHarness.onSessionEnd();
92
+ this.emit({ event: 'sessionEnd', kind: 'note', runId: ctx.runId, goalId: ctx.goalId });
93
+ }
94
+ catch (err) {
95
+ this.emit({ event: 'sessionEnd', kind: 'degrade', failureKind: 'observational', reason: `reactHarness.onSessionEnd 失败: ${err?.message}`, runId: ctx.runId, goalId: ctx.goalId });
96
+ }
97
+ }
98
+ // ───────────────────────── model call ─────────────────────────
99
+ /**
100
+ * 模型调用前 (扩展点)。默认只计数 + 留事件。
101
+ * 刻意**不**在此 fire 新的 hook 事件: 旧行为里模型调用前没有任何 hook, 加了会改变现有
102
+ * hooks.yaml 用户的实际触发次数 (属于行为变更, 需要单独决策, 见 wiki 记录)。
103
+ */
104
+ beforeModelCall(ctx) {
105
+ this.modelCalls++;
106
+ this.emit({ event: 'beforeModelCall', kind: 'note', runId: ctx.runId, goalId: ctx.goalId });
107
+ return { hints: [] };
108
+ }
109
+ afterModelCall(ctx, info = {}) {
110
+ if (info.error) {
111
+ this.emit({ event: 'afterModelCall', kind: 'error', failureKind: 'core_constraint', reason: String(info.error?.message || info.error).slice(0, 200), ms: info.ms, runId: ctx.runId, goalId: ctx.goalId });
112
+ return;
113
+ }
114
+ this.emit({ event: 'afterModelCall', kind: 'note', ms: info.ms, runId: ctx.runId, goalId: ctx.goalId });
115
+ }
116
+ get modelCallCount() {
117
+ return this.modelCalls;
118
+ }
119
+ // ───────────────────────── tool call ─────────────────────────
120
+ /**
121
+ * 工具调用前的**唯一**决策入口。
122
+ * 顺序严格保持旧实现: deny-pipeline → pre-tool-validator(4 步链) → react-harness(8-gate)。
123
+ * 任一层拒绝即返回 (第一层拒绝后不再检查后续), 与旧行为一致。
124
+ */
125
+ async beforeToolCall(input) {
126
+ const { tool, args, ctx } = input;
127
+ const t0 = Date.now();
128
+ // ① deny-pipeline (黑名单 / 权限 / hooks 策略)
129
+ let denyResult = null;
130
+ try {
131
+ denyResult = await this.deps.denyPipeline.check({
132
+ toolName: tool,
133
+ toolArgs: args || {},
134
+ permissionMode: input.permissionMode,
135
+ channelId: ctx.channelId,
136
+ agentId: ctx.agentId,
137
+ });
138
+ }
139
+ catch (err) {
140
+ const fail = this.onLayerError('deny-pipeline', err, ctx, tool);
141
+ if (fail)
142
+ return fail;
143
+ }
144
+ if (denyResult?.denied) {
145
+ const decision = {
146
+ allow: false,
147
+ reason: denyResult.reason,
148
+ source: 'deny-pipeline',
149
+ rejectedBy: denyResult.source,
150
+ kind: 'policy_denied',
151
+ };
152
+ this.emit({ event: 'beforeToolCall', kind: 'deny', failureKind: 'policy_denied', tool, reason: denyResult.reason, source: `deny-pipeline:${denyResult.source}`, ms: Date.now() - t0, runId: ctx.runId, goalId: ctx.goalId });
153
+ return decision;
154
+ }
155
+ // ② 参数/危险命令校验 (pre-tool-validator 4 步链)
156
+ if (this.deps.preToolUse) {
157
+ let pre = null;
158
+ try {
159
+ pre = await this.deps.preToolUse({ tool, args: args || {}, permissionMode: input.permissionMode });
160
+ }
161
+ catch (err) {
162
+ const fail = this.onLayerError('pre-tool-validator', err, ctx, tool);
163
+ if (fail)
164
+ return fail;
165
+ }
166
+ if (pre && !pre.allowed) {
167
+ this.emit({ event: 'beforeToolCall', kind: 'deny', failureKind: 'policy_denied', tool, reason: pre.reason, source: 'pre-tool-validator', ms: Date.now() - t0, runId: ctx.runId, goalId: ctx.goalId });
168
+ return {
169
+ allow: false,
170
+ reason: pre.reason || '未通过安全校验',
171
+ source: 'pre-tool-validator',
172
+ rejectedBy: 'pre-tool-validator',
173
+ kind: 'policy_denied',
174
+ };
175
+ }
176
+ }
177
+ // ③ react-harness (8-gate + builtin-guards, 含路由 hint)
178
+ let preCall = null;
179
+ try {
180
+ preCall = await this.deps.reactHarness.preToolCall(tool, args || {}, ctx.channelId);
181
+ }
182
+ catch (err) {
183
+ const fail = this.onLayerError('react-harness', err, ctx, tool);
184
+ if (fail)
185
+ return fail;
186
+ }
187
+ if (preCall && !preCall.allowed) {
188
+ this.emit({ event: 'beforeToolCall', kind: 'deny', failureKind: 'policy_denied', tool, reason: preCall.reason, source: `react-harness:${preCall.details?.rejectedBy}`, ms: Date.now() - t0, runId: ctx.runId, goalId: ctx.goalId });
189
+ return {
190
+ allow: false,
191
+ reason: preCall.reason || '未通过安全校验',
192
+ source: 'react-harness',
193
+ rejectedBy: preCall.details?.rejectedBy,
194
+ kind: 'policy_denied',
195
+ };
196
+ }
197
+ this.emit({ event: 'beforeToolCall', kind: 'allow', tool, source: 'harness', ms: Date.now() - t0, runId: ctx.runId, goalId: ctx.goalId });
198
+ return { allow: true, systemAddition: denyResult?.systemAddition };
199
+ }
200
+ /** 工具调用后: 路由 hint + 输出 gate (顺序与旧实现一致: hint 先, output gate 后) */
201
+ async afterToolCall(input) {
202
+ const { tool, ctx } = input;
203
+ const out = {};
204
+ try {
205
+ const routeHint = this.deps.reactHarness.getLastRouteHint();
206
+ if (routeHint && routeHint.systemAddition) {
207
+ out.routeHint = { reason: routeHint.reason, systemAddition: routeHint.systemAddition };
208
+ this.deps.reactHarness.clearRouteHint();
209
+ }
210
+ }
211
+ catch { /* hint 读失败不影响执行 */ }
212
+ try {
213
+ const post = await this.deps.reactHarness.postToolCall(tool, String(input.output || ''), ctx.channelId);
214
+ if (!post.allowed) {
215
+ out.outputBlocked = { reason: post.reason || '输出含敏感信息' };
216
+ this.emit({ event: 'afterToolCall', kind: 'deny', failureKind: 'policy_denied', tool, reason: out.outputBlocked.reason, source: 'react-harness:output', runId: ctx.runId, goalId: ctx.goalId });
217
+ return out;
218
+ }
219
+ }
220
+ catch (err) {
221
+ // 旧行为: output gate 失败 → 放行原输出 (fail-open)。这里保持放行 (输出已产生, 拦不住源头),
222
+ // 但**必须留痕**: 不把"gate 没跑成"说成"gate 通过了"。
223
+ out.degraded = true;
224
+ this.emit({ event: 'afterToolCall', kind: 'degrade', failureKind: 'observational', tool, reason: `output gate 失效 (输出已按原样放行): ${err?.message}`, source: 'react-harness:output', runId: ctx.runId, goalId: ctx.goalId });
225
+ return out;
226
+ }
227
+ this.emit({ event: 'afterToolCall', kind: 'allow', tool, source: 'harness', runId: ctx.runId, goalId: ctx.goalId });
228
+ return out;
229
+ }
230
+ // ───────────────────────── run 生命周期 ─────────────────────────
231
+ /** checkpoint: 由 Harness 统一触发 (调用方给实现, 通常是 run-store.saveCheckpoint) */
232
+ async checkpoint(ctx, cp) {
233
+ try {
234
+ await this.deps.events?.({ ts: new Date().toISOString(), event: 'checkpoint', kind: 'note', ms: undefined, runId: ctx.runId, goalId: ctx.goalId, reason: cp.nextAction });
235
+ }
236
+ catch { /* 记账失败不影响 */ }
237
+ }
238
+ /** recover / pause: 接口先立 (Milestone 2/3 接线), 此处只留事件 */
239
+ recover(ctx, info) {
240
+ this.emit({ event: 'recover', kind: 'note', failureKind: 'observational', reason: `${info.errorClass || 'unknown'} → ${info.action || 'none'}`, runId: ctx.runId, goalId: ctx.goalId });
241
+ }
242
+ pause(ctx, reason) {
243
+ this.emit({ event: 'pause', kind: 'note', reason, runId: ctx.runId, goalId: ctx.goalId });
244
+ }
245
+ // ───────────────────────── 目标审查 ─────────────────────────
246
+ /**
247
+ * final 前目标对齐审查 (loop-review 的唯一入口)。
248
+ * 审查本身失效时: 记为 goal_review 失败并**按"继续审查"处理**? 不 —— 按协议
249
+ * "目标审查失败: 禁止进入 done", 这里返回 `continue-review` 的等价结果 (不放过收尾),
250
+ * 避免"审查没跑成 → 直接算完成"。
251
+ */
252
+ reviewFinal(state, maxReviews = loop_review_js_1.DEFAULT_MAX_REVIEWS) {
253
+ try {
254
+ const decision = (0, loop_review_js_1.decideAfterReview)(state, maxReviews);
255
+ this.emit({ event: 'review', kind: decision.kind === 'continue-review' ? 'note' : 'allow', failureKind: 'goal_review', reason: decision.kind, runId: state.runId, goalId: state.goalId });
256
+ return decision;
257
+ }
258
+ catch (err) {
259
+ this.emit({ event: 'review', kind: 'error', failureKind: 'goal_review', reason: `审查器失效: ${err?.message}`, runId: state.runId, goalId: state.goalId });
260
+ return {
261
+ kind: 'continue-review',
262
+ hint: `[目标审查降级] 审查器执行失败 (${String(err?.message || err).slice(0, 120)}), 按"未确认完成"处理: 请再次核对用户需求是否真的全部满足, 并列出证据。确认完成后再加 <final gen>。`,
263
+ };
264
+ }
265
+ }
266
+ }
267
+ exports.PiAgentHarness = PiAgentHarness;
268
+ //# sourceMappingURL=pi-harness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi-harness.js","sourceRoot":"","sources":["../../../src/agents/pi-harness.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;;;AAKH,qDAAiH;AAsEjH;IACU,IAAI,CAAqB;IACzB,UAAU,CAAU;IACpB,UAAU,GAAG,CAAC,CAAC;IACf,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IAEzC,YAAY,IAAwB;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC;IAC9C,CAAC;IAED,qCAAqC;IAC7B,IAAI,CAAC,CAA2B;QACtC,IAAI,CAAC;YACH,MAAM,IAAI,GAAiB,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC;YAClE,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,GAAG,IAAI,OAAQ,GAAqB,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;gBAC7D,GAAqB,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,gCAAgC,EAAG,GAAa,EAAE,OAAO,CAAC,CAAC,CAAC;YACjH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,mCAAmC,EAAG,GAAa,EAAE,OAAO,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAED,oDAAoD;IAC5C,YAAY,CAAC,KAAa,EAAE,GAAY,EAAE,GAAsB,EAAE,IAAa;QACrF,MAAM,OAAO,GAAG,GAAG,KAAK,QAAQ,MAAM,CAAE,GAAa,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QACvF,OAAO,CAAC,IAAI,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QAClK,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC,CAAG,2BAA2B;QAChE,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,SAAS,KAAK,gCAAgC,OAAO,EAAE;YAC/D,MAAM,EAAE,eAAe;YACvB,IAAI,EAAE,iBAAiB;YACvB,QAAQ,EAAE,IAAI;SACf,CAAC;IACJ,CAAC;IAED,8DAA8D;IAE9D,KAAK,CAAC,YAAY,CAAC,GAAsB;QACvC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtB,qCAAqC;QACrC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,EAAE,mCAAoC,GAAa,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QAClM,CAAC;QACD,wCAAwC;QACxC,IAAI,QAAQ,GAAkB,IAAI,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACpI,KAAK,MAAM,CAAC,IAAI,OAAO,IAAI,EAAE;gBAAE,IAAI,CAAC,EAAE,IAAI;oBAAE,QAAQ,GAAG,CAAC,CAAC,MAAM,IAAI,SAAS,CAAC;QAC/E,CAAC;QAAC,MAAM,CAAC,CAAC,4CAA4C,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,IAAI,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACrL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAsB;QACrC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;YAC5C,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACzF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,EAAE,iCAAkC,GAAa,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9L,CAAC;IACH,CAAC;IAED,iEAAiE;IAEjE;;;;OAIG;IACH,eAAe,CAAC,GAAsB;QACpC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5F,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACvB,CAAC;IAED,cAAc,CAAC,GAAsB,EAAE,IAAI,GAAqC,EAAE;QAChF,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,CAAE,IAAI,CAAC,KAAe,EAAE,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YACrN,OAAO;QACT,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1G,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,gEAAgE;IAEhE;;;;OAIG;IACH,KAAK,CAAC,cAAc,CAAC,KAAuG;QAC1H,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;QAClC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEtB,wCAAwC;QACxC,IAAI,UAAU,GAAsD,IAAI,CAAC;QACzE,IAAI,CAAC;YACH,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;gBAC9C,QAAQ,EAAE,IAAI;gBACd,QAAQ,EAAE,IAAI,IAAI,EAAE;gBACpB,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,OAAO,EAAE,GAAG,CAAC,OAAO;aACN,CAAC,CAAC;QACpB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAChE,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC;QACxB,CAAC;QACD,IAAI,UAAU,EAAE,MAAM,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAiB;gBAC7B,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,MAAM,EAAE,eAAe;gBACvB,UAAU,EAAE,UAAU,CAAC,MAAM;gBAC7B,IAAI,EAAE,eAAe;aACtB,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7N,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,wCAAwC;QACxC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACzB,IAAI,GAAG,GAAiD,IAAI,CAAC;YAC7D,IAAI,CAAC;gBACH,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;YACrG,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,oBAAoB,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;gBACrE,IAAI,IAAI;oBAAE,OAAO,IAAI,CAAC;YACxB,CAAC;YACD,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;gBACxB,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,oBAAoB,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;gBACtM,OAAO;oBACL,KAAK,EAAE,KAAK;oBACZ,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,SAAS;oBAC/B,MAAM,EAAE,oBAAoB;oBAC5B,UAAU,EAAE,oBAAoB;oBAChC,IAAI,EAAE,eAAe;iBACtB,CAAC;YACJ,CAAC;QACH,CAAC;QAED,sDAAsD;QACtD,IAAI,OAAO,GAA4D,IAAI,CAAC;QAC5E,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;QACtF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAChE,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC;QACxB,CAAC;QACD,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YACpO,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,SAAS;gBACnC,MAAM,EAAE,eAAe;gBACvB,UAAU,EAAE,OAAO,CAAC,OAAO,EAAE,UAAU;gBACvC,IAAI,EAAE,eAAe;aACtB,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1I,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;IACrE,CAAC;IAED,iEAAiE;IACjE,KAAK,CAAC,aAAa,CAAC,KAA6E;QAC/F,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;QAC5B,MAAM,GAAG,GAAoB,EAAE,CAAC;QAEhC,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC;YAC5D,IAAI,SAAS,IAAI,SAAS,CAAC,cAAc,EAAE,CAAC;gBAC1C,GAAG,CAAC,SAAS,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,CAAC,cAAc,EAAE,CAAC;gBACvF,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC;YAC1C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,CAAC;QAE/B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;YACxG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,GAAG,CAAC,aAAa,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;gBACzD,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,sBAAsB,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;gBAChM,OAAO,GAAG,CAAC;YACb,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,iEAAiE;YACjE,uCAAuC;YACvC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,8BAA+B,GAAa,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,sBAAsB,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YAClO,OAAO,GAAG,CAAC;QACb,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACpH,OAAO,GAAG,CAAC;IACb,CAAC;IAED,+DAA+D;IAE/D,wEAAwE;IACxE,KAAK,CAAC,UAAU,CAAC,GAAsB,EAAE,EAAkG;QACzI,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;QAC5K,CAAC;QAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;IAC3B,CAAC;IAED,uDAAuD;IACvD,OAAO,CAAC,GAAsB,EAAE,IAA8C;QAC5E,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,IAAI,SAAS,MAAM,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1L,CAAC;IAED,KAAK,CAAC,GAAsB,EAAE,MAAe;QAC3C,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,2DAA2D;IAE3D;;;;;OAKG;IACH,WAAW,CAAC,KAAkB,EAAE,UAAU,GAAW,oCAAmB;QACtE,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAA,kCAAiB,EAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YACtD,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YAC1L,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,UAAW,GAAa,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YACjK,OAAO;gBACL,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,qBAAqB,MAAM,CAAE,GAAa,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,8DAA8D;aAC5H,CAAC;QACtB,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createAgentSession = createAgentSession;
4
+ exports.getAgentSession = getAgentSession;
5
+ exports.resetAgentSession = resetAgentSession;
6
+ exports.runSelfImproveLoop = runSelfImproveLoop;
7
+ const shell_tool_js_1 = require("./shell-tool.js");
8
+ const shell_guard_js_1 = require("./shell-guard.js");
9
+ /**
10
+ * Session factory + runSelfImproveLoop.
11
+ *
12
+ * 从 pi-sdk.ts 抽出 (2026-07-06):
13
+ * - createAgentSession(config, forceNew?)
14
+ * - getAgentSession()
15
+ * - resetAgentSession()
16
+ * - runSelfImproveLoop(goal)
17
+ *
18
+ * 三个状态变量 (module-level):
19
+ * - sessionInstance: 单例 cache
20
+ * - lastIdentityDid: DID 变化检测
21
+ * - independentSessions: 多 session 缓存 (peerId 含 : 的场景)
22
+ * - lastSelfImproveAt: 自改冷却期
23
+ */
24
+ const pi_sdk_js_1 = require("./pi-sdk.js");
25
+ let sessionInstance = null;
26
+ let lastIdentityDid = null;
27
+ const independentSessions = new Map();
28
+ async function createAgentSession(config, forceNew) {
29
+ const incomingDid = config.identityDoc?.did;
30
+ if (config.peerId && config.peerId.includes(':')) {
31
+ const key = config.peerId;
32
+ if (!forceNew && independentSessions.has(key)) {
33
+ console.log(`[createAgentSession] 找到现有独立 session, key=${key}`);
34
+ const existing = independentSessions.get(key);
35
+ await existing.whenReady();
36
+ return existing;
37
+ }
38
+ const session = new pi_sdk_js_1.PiAgentSession(config);
39
+ independentSessions.set(key, session);
40
+ console.log(`[createAgentSession] 创建独立 session, key=${key}, DID=${incomingDid}`);
41
+ await session.whenReady();
42
+ return session;
43
+ }
44
+ if (forceNew) {
45
+ const key = `force:${Date.now()}`;
46
+ const session = new pi_sdk_js_1.PiAgentSession(config);
47
+ independentSessions.set(key, session);
48
+ console.log(`[createAgentSession] 创建强制新 session, key=${key}`);
49
+ await session.whenReady();
50
+ return session;
51
+ }
52
+ if (sessionInstance && lastIdentityDid && incomingDid && lastIdentityDid !== incomingDid) {
53
+ console.log(`[createAgentSession] DID 变化 ${lastIdentityDid} -> ${incomingDid},重建 session`);
54
+ sessionInstance = null;
55
+ }
56
+ if (sessionInstance) {
57
+ const currentDid = sessionInstance.getIdentity().did;
58
+ if (incomingDid && currentDid !== incomingDid) {
59
+ console.log(`[createAgentSession] 更新 identity: ${currentDid} -> ${incomingDid}`);
60
+ sessionInstance.updateIdentity({
61
+ did: incomingDid,
62
+ name: config.identityDoc?.name || sessionInstance.getIdentity().name,
63
+ publicKey: config.identityDoc?.publicKey || '',
64
+ createdAt: Date.now()
65
+ });
66
+ }
67
+ await sessionInstance.whenReady();
68
+ return sessionInstance;
69
+ }
70
+ const newSession = new pi_sdk_js_1.PiAgentSession(config);
71
+ sessionInstance = newSession;
72
+ lastIdentityDid = config.identityDoc?.did || null;
73
+ console.log(`[createAgentSession] 新建 session, DID=${lastIdentityDid}`);
74
+ await newSession.whenReady();
75
+ return newSession;
76
+ }
77
+ function getAgentSession() {
78
+ return sessionInstance;
79
+ }
80
+ function resetAgentSession() {
81
+ sessionInstance = null;
82
+ lastIdentityDid = null;
83
+ }
84
+ /**
85
+ * 自我改进循环: 在沙箱分支上工作, 输出结果给用户审.
86
+ *
87
+ * 不在 PiAgent 实例上的原因: 心跳回调可能没有 agent 实例, 单独函数更易复用.
88
+ *
89
+ * **关键不变量**:
90
+ * 1. AI 不能 push 到 master (shell-guard 黑名单 + git 受保护分支)
91
+ * 2. 改动必须走沙箱分支 (SELF_IMPROVE_BRANCH_PREFIX)
92
+ * 3. 6 小时冷却期 (SELF_IMPROVE_COOLDOWN_MS)
93
+ * 4. 写文件必须经过 shell_exec + 护栏检查
94
+ */
95
+ let lastSelfImproveAt = null;
96
+ async function runSelfImproveLoop(goal) {
97
+ const cooldownMs = (0, shell_guard_js_1.getCooldownMs)();
98
+ if (lastSelfImproveAt && Date.now() - lastSelfImproveAt < cooldownMs) {
99
+ const waitHrs = Math.ceil((cooldownMs - (Date.now() - lastSelfImproveAt)) / 3600000);
100
+ return { success: false, error: `自改冷却中, 还需要约 ${waitHrs} 小时` };
101
+ }
102
+ const sourceBranch = 'master';
103
+ const newBranch = `${(0, shell_guard_js_1.getBranchPrefix)()}${Date.now()}`;
104
+ console.log(`[self-improve] 启动自改循环, 目标: ${goal}, 新分支: ${newBranch}`);
105
+ const r1 = await (0, shell_tool_js_1.shellExec)('git', ['checkout', sourceBranch]);
106
+ if (!r1.success)
107
+ return { success: false, error: `切换到 ${sourceBranch} 失败: ${r1.error}` };
108
+ const r2 = await (0, shell_tool_js_1.shellExec)('git', ['checkout', '-b', newBranch]);
109
+ if (!r2.success)
110
+ return { success: false, error: `创建分支失败: ${r2.error}` };
111
+ lastSelfImproveAt = Date.now();
112
+ return {
113
+ success: true,
114
+ output: `✅ 自改分支已创建: ${newBranch}\n目标: ${goal}\n\n**护栏已激活**:\n - 仅允许白名单命令\n - 6 小时冷却期\n\nAI 接下来会用 shell_exec 工具改源码. 完成后你会在对话里看到 diff 摘要, 手动 git diff master..${newBranch} 审, 满意再 merge.`
115
+ };
116
+ }
117
+ //# sourceMappingURL=pi-sdk-session-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi-sdk-session-factory.js","sourceRoot":"","sources":["../../../src/agents/pi-sdk-session-factory.ts"],"names":[],"mappings":"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"}