@bolloon/bolloon-agent 0.4.28 → 0.4.30

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 (473) hide show
  1. package/bin/bolloon.cjs +18 -148
  2. package/bin/bolloon.cmd +6 -3
  3. package/dist/agents/contacts/chain.js +579 -0
  4. package/dist/agents/contacts/cli.js +158 -0
  5. package/dist/agents/contacts/consent.js +124 -0
  6. package/dist/agents/contacts/grant-payload.js +45 -0
  7. package/dist/agents/contacts/grants.js +451 -0
  8. package/dist/agents/contacts/policy.js +264 -0
  9. package/dist/agents/contacts/preview-types.js +6 -0
  10. package/dist/agents/contacts/providers.js +341 -0
  11. package/dist/agents/contacts/store.js +326 -0
  12. package/dist/agents/contacts/tools.js +154 -0
  13. package/dist/agents/contacts/types.js +148 -0
  14. package/dist/agents/pi-sdk-tools.js +3 -1
  15. package/dist/agents/pi-sdk.js +14 -1
  16. package/dist/cli/update-commands.js +349 -0
  17. package/dist/cli-entry.js +41 -55
  18. package/dist/electron-build/agents/agent-gateway.js +169 -0
  19. package/dist/electron-build/agents/agent-gateway.js.map +1 -0
  20. package/dist/electron-build/agents/agent-identity-store.js +212 -0
  21. package/dist/electron-build/agents/agent-identity-store.js.map +1 -0
  22. package/dist/electron-build/agents/agent-identity.js +196 -0
  23. package/dist/electron-build/agents/agent-identity.js.map +1 -0
  24. package/dist/electron-build/agents/agent-manifest-protocol.js +151 -0
  25. package/dist/electron-build/agents/agent-manifest-protocol.js.map +1 -0
  26. package/dist/electron-build/agents/agent-registry.js +217 -0
  27. package/dist/electron-build/agents/agent-registry.js.map +1 -0
  28. package/dist/electron-build/agents/agent-reputation.js +60 -0
  29. package/dist/electron-build/agents/agent-reputation.js.map +1 -0
  30. package/dist/electron-build/agents/agent-service-client.js +186 -0
  31. package/dist/electron-build/agents/agent-service-client.js.map +1 -0
  32. package/dist/electron-build/agents/browser-cdp.js +765 -0
  33. package/dist/electron-build/agents/browser-cdp.js.map +1 -0
  34. package/dist/electron-build/agents/computer-use.js +341 -0
  35. package/dist/electron-build/agents/computer-use.js.map +1 -0
  36. package/dist/electron-build/agents/constraint-layer.js +210 -0
  37. package/dist/electron-build/agents/constraint-layer.js.map +1 -0
  38. package/dist/electron-build/agents/contacts/chain.js +619 -0
  39. package/dist/electron-build/agents/contacts/chain.js.map +1 -0
  40. package/dist/electron-build/agents/contacts/consent.js +163 -0
  41. package/dist/electron-build/agents/contacts/consent.js.map +1 -0
  42. package/dist/electron-build/agents/contacts/grant-payload.js +52 -0
  43. package/dist/electron-build/agents/contacts/grant-payload.js.map +1 -0
  44. package/dist/electron-build/agents/contacts/grants.js +500 -0
  45. package/dist/electron-build/agents/contacts/grants.js.map +1 -0
  46. package/dist/electron-build/agents/contacts/policy.js +271 -0
  47. package/dist/electron-build/agents/contacts/policy.js.map +1 -0
  48. package/dist/electron-build/agents/contacts/preview-types.js +8 -0
  49. package/dist/electron-build/agents/contacts/preview-types.js.map +1 -0
  50. package/dist/electron-build/agents/contacts/providers.js +384 -0
  51. package/dist/electron-build/agents/contacts/providers.js.map +1 -0
  52. package/dist/electron-build/agents/contacts/store.js +370 -0
  53. package/dist/electron-build/agents/contacts/store.js.map +1 -0
  54. package/dist/electron-build/agents/contacts/tools.js +159 -0
  55. package/dist/electron-build/agents/contacts/tools.js.map +1 -0
  56. package/dist/electron-build/agents/contacts/types.js +166 -0
  57. package/dist/electron-build/agents/contacts/types.js.map +1 -0
  58. package/dist/electron-build/agents/decision-store.js +292 -0
  59. package/dist/electron-build/agents/decision-store.js.map +1 -0
  60. package/dist/electron-build/agents/deny-pipeline.js +125 -0
  61. package/dist/electron-build/agents/deny-pipeline.js.map +1 -0
  62. package/dist/electron-build/agents/economic-policy.js +172 -0
  63. package/dist/electron-build/agents/economic-policy.js.map +1 -0
  64. package/dist/electron-build/agents/error-classifier.js +125 -0
  65. package/dist/electron-build/agents/error-classifier.js.map +1 -0
  66. package/dist/electron-build/agents/execution-supervisor.js +539 -0
  67. package/dist/electron-build/agents/execution-supervisor.js.map +1 -0
  68. package/dist/electron-build/agents/external-events.js +171 -0
  69. package/dist/electron-build/agents/external-events.js.map +1 -0
  70. package/dist/electron-build/agents/gateway-join.js +315 -0
  71. package/dist/electron-build/agents/gateway-join.js.map +1 -0
  72. package/dist/electron-build/agents/gateway-network.js +505 -0
  73. package/dist/electron-build/agents/gateway-network.js.map +1 -0
  74. package/dist/electron-build/agents/goal-criteria.js +133 -0
  75. package/dist/electron-build/agents/goal-criteria.js.map +1 -0
  76. package/dist/electron-build/agents/goal-resume.js +364 -0
  77. package/dist/electron-build/agents/goal-resume.js.map +1 -0
  78. package/dist/electron-build/agents/goal-store.js +587 -0
  79. package/dist/electron-build/agents/goal-store.js.map +1 -0
  80. package/dist/electron-build/agents/intent-classifier.js +104 -0
  81. package/dist/electron-build/agents/intent-classifier.js.map +1 -0
  82. package/dist/electron-build/agents/iroh-secret.js +70 -0
  83. package/dist/electron-build/agents/iroh-secret.js.map +1 -0
  84. package/dist/electron-build/agents/loop-review.js +101 -0
  85. package/dist/electron-build/agents/loop-review.js.map +1 -0
  86. package/dist/electron-build/agents/memory-recall.js +154 -0
  87. package/dist/electron-build/agents/memory-recall.js.map +1 -0
  88. package/dist/electron-build/agents/p2p-document-tools.js +328 -0
  89. package/dist/electron-build/agents/p2p-document-tools.js.map +1 -0
  90. package/dist/electron-build/agents/parse-tool-call.js +564 -0
  91. package/dist/electron-build/agents/parse-tool-call.js.map +1 -0
  92. package/dist/electron-build/agents/patch-tool.js +205 -0
  93. package/dist/electron-build/agents/patch-tool.js.map +1 -0
  94. package/dist/electron-build/agents/payment-approval.js +183 -0
  95. package/dist/electron-build/agents/payment-approval.js.map +1 -0
  96. package/dist/electron-build/agents/payment-gate.js +139 -0
  97. package/dist/electron-build/agents/payment-gate.js.map +1 -0
  98. package/dist/electron-build/agents/permission-mode.js +124 -0
  99. package/dist/electron-build/agents/permission-mode.js.map +1 -0
  100. package/dist/electron-build/agents/pi-harness.js +268 -0
  101. package/dist/electron-build/agents/pi-harness.js.map +1 -0
  102. package/dist/electron-build/agents/pi-sdk-session-factory.js +117 -0
  103. package/dist/electron-build/agents/pi-sdk-session-factory.js.map +1 -0
  104. package/dist/electron-build/agents/pi-sdk-session-manager.js +335 -0
  105. package/dist/electron-build/agents/pi-sdk-session-manager.js.map +1 -0
  106. package/dist/electron-build/agents/pi-sdk-tools.js +4042 -0
  107. package/dist/electron-build/agents/pi-sdk-tools.js.map +1 -0
  108. package/dist/electron-build/agents/pi-sdk-types.js +17 -0
  109. package/dist/electron-build/agents/pi-sdk-types.js.map +1 -0
  110. package/dist/electron-build/agents/pi-sdk.js +3335 -0
  111. package/dist/electron-build/agents/pi-sdk.js.map +1 -0
  112. package/dist/electron-build/agents/plan-store.js +212 -0
  113. package/dist/electron-build/agents/plan-store.js.map +1 -0
  114. package/dist/electron-build/agents/pre-tool-validator.js +200 -0
  115. package/dist/electron-build/agents/pre-tool-validator.js.map +1 -0
  116. package/dist/electron-build/agents/process-runner.js +148 -0
  117. package/dist/electron-build/agents/process-runner.js.map +1 -0
  118. package/dist/electron-build/agents/react-loop.js +131 -0
  119. package/dist/electron-build/agents/react-loop.js.map +1 -0
  120. package/dist/electron-build/agents/resource-store.js +180 -0
  121. package/dist/electron-build/agents/resource-store.js.map +1 -0
  122. package/dist/electron-build/agents/resource-token.js +118 -0
  123. package/dist/electron-build/agents/resource-token.js.map +1 -0
  124. package/dist/electron-build/agents/resource-wallet.js +84 -0
  125. package/dist/electron-build/agents/resource-wallet.js.map +1 -0
  126. package/dist/electron-build/agents/run-store.js +854 -0
  127. package/dist/electron-build/agents/run-store.js.map +1 -0
  128. package/dist/electron-build/agents/runner-resolver.js +267 -0
  129. package/dist/electron-build/agents/runner-resolver.js.map +1 -0
  130. package/dist/electron-build/agents/session-store.js +294 -0
  131. package/dist/electron-build/agents/session-store.js.map +1 -0
  132. package/dist/electron-build/agents/shell-guard.js +465 -0
  133. package/dist/electron-build/agents/shell-guard.js.map +1 -0
  134. package/dist/electron-build/agents/shell-tool.js +102 -0
  135. package/dist/electron-build/agents/shell-tool.js.map +1 -0
  136. package/dist/electron-build/agents/skill-loader.js +216 -0
  137. package/dist/electron-build/agents/skill-loader.js.map +1 -0
  138. package/dist/electron-build/agents/skill-readiness.js +174 -0
  139. package/dist/electron-build/agents/skill-readiness.js.map +1 -0
  140. package/dist/electron-build/agents/skill-share.js +394 -0
  141. package/dist/electron-build/agents/skill-share.js.map +1 -0
  142. package/dist/electron-build/agents/skill-supervisor-link.js +75 -0
  143. package/dist/electron-build/agents/skill-supervisor-link.js.map +1 -0
  144. package/dist/electron-build/agents/skill-writer.js +347 -0
  145. package/dist/electron-build/agents/skill-writer.js.map +1 -0
  146. package/dist/electron-build/agents/skills-manager.js +763 -0
  147. package/dist/electron-build/agents/skills-manager.js.map +1 -0
  148. package/dist/electron-build/agents/supervisor-host.js +294 -0
  149. package/dist/electron-build/agents/supervisor-host.js.map +1 -0
  150. package/dist/electron-build/agents/task/local-seller.js +188 -0
  151. package/dist/electron-build/agents/task/local-seller.js.map +1 -0
  152. package/dist/electron-build/agents/task/report-card.js +152 -0
  153. package/dist/electron-build/agents/task/report-card.js.map +1 -0
  154. package/dist/electron-build/agents/task/resource-advisor.js +222 -0
  155. package/dist/electron-build/agents/task/resource-advisor.js.map +1 -0
  156. package/dist/electron-build/agents/task/task-budget.js +111 -0
  157. package/dist/electron-build/agents/task/task-budget.js.map +1 -0
  158. package/dist/electron-build/agents/task/task-runner.js +670 -0
  159. package/dist/electron-build/agents/task/task-runner.js.map +1 -0
  160. package/dist/electron-build/agents/task-state.js +266 -0
  161. package/dist/electron-build/agents/task-state.js.map +1 -0
  162. package/dist/electron-build/agents/tool-registry.js +141 -0
  163. package/dist/electron-build/agents/tool-registry.js.map +1 -0
  164. package/dist/electron-build/agents/treasury-bridge.js +165 -0
  165. package/dist/electron-build/agents/treasury-bridge.js.map +1 -0
  166. package/dist/electron-build/agents/user-questions.js +223 -0
  167. package/dist/electron-build/agents/user-questions.js.map +1 -0
  168. package/dist/electron-build/agents/verify-recipe.js +90 -0
  169. package/dist/electron-build/agents/verify-recipe.js.map +1 -0
  170. package/dist/electron-build/agents/workflow-engine.js +222 -0
  171. package/dist/electron-build/agents/workflow-engine.js.map +1 -0
  172. package/dist/electron-build/agents/workflow-pivot-loop.js +988 -0
  173. package/dist/electron-build/agents/workflow-pivot-loop.js.map +1 -0
  174. package/dist/electron-build/agents/write-staging.js +133 -0
  175. package/dist/electron-build/agents/write-staging.js.map +1 -0
  176. package/dist/electron-build/agents/x402/goal-run-bridge.js +115 -0
  177. package/dist/electron-build/agents/x402/goal-run-bridge.js.map +1 -0
  178. package/dist/electron-build/agents/x402/milestone-settlement.js +163 -0
  179. package/dist/electron-build/agents/x402/milestone-settlement.js.map +1 -0
  180. package/dist/electron-build/agents/x402/paid-info-protocol.js +274 -0
  181. package/dist/electron-build/agents/x402/paid-info-protocol.js.map +1 -0
  182. package/dist/electron-build/agents/x402/paid-info-store.js +409 -0
  183. package/dist/electron-build/agents/x402/paid-info-store.js.map +1 -0
  184. package/dist/electron-build/agents/x402/paid-info-tools.js +346 -0
  185. package/dist/electron-build/agents/x402/paid-info-tools.js.map +1 -0
  186. package/dist/electron-build/agents/x402/payment-recovery.js +330 -0
  187. package/dist/electron-build/agents/x402/payment-recovery.js.map +1 -0
  188. package/dist/electron-build/agents/x402/resource-contract.js +533 -0
  189. package/dist/electron-build/agents/x402/resource-contract.js.map +1 -0
  190. package/dist/electron-build/agents/x402/settlement-state.js +432 -0
  191. package/dist/electron-build/agents/x402/settlement-state.js.map +1 -0
  192. package/dist/electron-build/agents/x402/trade.js +294 -0
  193. package/dist/electron-build/agents/x402/trade.js.map +1 -0
  194. package/dist/electron-build/agents/x402/transaction-protocol.js +109 -0
  195. package/dist/electron-build/agents/x402/transaction-protocol.js.map +1 -0
  196. package/dist/electron-build/agents/x402/transaction-store.js +404 -0
  197. package/dist/electron-build/agents/x402/transaction-store.js.map +1 -0
  198. package/dist/electron-build/agents/x402/x402Pay.js +377 -0
  199. package/dist/electron-build/agents/x402/x402Pay.js.map +1 -0
  200. package/dist/electron-build/bollharness-integration/context-router-judgment.js +269 -0
  201. package/dist/electron-build/bollharness-integration/context-router-judgment.js.map +1 -0
  202. package/dist/electron-build/bollharness-integration/context-router.js +584 -0
  203. package/dist/electron-build/bollharness-integration/context-router.js.map +1 -0
  204. package/dist/electron-build/bollharness-integration/gate-state-machine.js +362 -0
  205. package/dist/electron-build/bollharness-integration/gate-state-machine.js.map +1 -0
  206. package/dist/electron-build/bollharness-integration/gate-transition-hooks.js +136 -0
  207. package/dist/electron-build/bollharness-integration/gate-transition-hooks.js.map +1 -0
  208. package/dist/electron-build/bollharness-integration/guard-checker.js +400 -0
  209. package/dist/electron-build/bollharness-integration/guard-checker.js.map +1 -0
  210. package/dist/electron-build/bollharness-integration/index.js +123 -0
  211. package/dist/electron-build/bollharness-integration/index.js.map +1 -0
  212. package/dist/electron-build/bollharness-integration/integration.js +531 -0
  213. package/dist/electron-build/bollharness-integration/integration.js.map +1 -0
  214. package/dist/electron-build/bollharness-integration/skill-adapter.js +608 -0
  215. package/dist/electron-build/bollharness-integration/skill-adapter.js.map +1 -0
  216. package/dist/electron-build/bootstrap/bootstrap.js +173 -0
  217. package/dist/electron-build/bootstrap/bootstrap.js.map +1 -0
  218. package/dist/electron-build/bootstrap/context-collector.js +358 -0
  219. package/dist/electron-build/bootstrap/context-collector.js.map +1 -0
  220. package/dist/electron-build/bootstrap/context-hierarchy.js +262 -0
  221. package/dist/electron-build/bootstrap/context-hierarchy.js.map +1 -0
  222. package/dist/electron-build/bootstrap/context-manager.js +211 -0
  223. package/dist/electron-build/bootstrap/context-manager.js.map +1 -0
  224. package/dist/electron-build/bootstrap/context-os.js +277 -0
  225. package/dist/electron-build/bootstrap/context-os.js.map +1 -0
  226. package/dist/electron-build/bootstrap/event-log.js +203 -0
  227. package/dist/electron-build/bootstrap/event-log.js.map +1 -0
  228. package/dist/electron-build/bootstrap/exhaust-scrubber.js +277 -0
  229. package/dist/electron-build/bootstrap/exhaust-scrubber.js.map +1 -0
  230. package/dist/electron-build/bootstrap/lifecycle-hooks.js +282 -0
  231. package/dist/electron-build/bootstrap/lifecycle-hooks.js.map +1 -0
  232. package/dist/electron-build/bootstrap/memory-compressor.js +377 -0
  233. package/dist/electron-build/bootstrap/memory-compressor.js.map +1 -0
  234. package/dist/electron-build/bootstrap/persona-loader.js +219 -0
  235. package/dist/electron-build/bootstrap/persona-loader.js.map +1 -0
  236. package/dist/electron-build/bootstrap/project-context.js +162 -0
  237. package/dist/electron-build/bootstrap/project-context.js.map +1 -0
  238. package/dist/electron-build/bootstrap/project-state.js +205 -0
  239. package/dist/electron-build/bootstrap/project-state.js.map +1 -0
  240. package/dist/electron-build/bootstrap/session-window.js +162 -0
  241. package/dist/electron-build/bootstrap/session-window.js.map +1 -0
  242. package/dist/electron-build/bootstrap/vector-index.js +291 -0
  243. package/dist/electron-build/bootstrap/vector-index.js.map +1 -0
  244. package/dist/electron-build/constraint-runtime/src/tools/PolymarketSDK/cancelOrder.js +22 -0
  245. package/dist/electron-build/constraint-runtime/src/tools/PolymarketSDK/cancelOrder.js.map +1 -0
  246. package/dist/electron-build/constraint-runtime/src/tools/PolymarketSDK/clobShared.js +86 -0
  247. package/dist/electron-build/constraint-runtime/src/tools/PolymarketSDK/clobShared.js.map +1 -0
  248. package/dist/electron-build/constraint-runtime/src/tools/PolymarketSDK/createOrder.js +37 -0
  249. package/dist/electron-build/constraint-runtime/src/tools/PolymarketSDK/createOrder.js.map +1 -0
  250. package/dist/electron-build/constraint-runtime/src/tools/PolymarketSDK/getMarket.js +20 -0
  251. package/dist/electron-build/constraint-runtime/src/tools/PolymarketSDK/getMarket.js.map +1 -0
  252. package/dist/electron-build/constraint-runtime/src/tools/PolymarketSDK/getOrders.js +29 -0
  253. package/dist/electron-build/constraint-runtime/src/tools/PolymarketSDK/getOrders.js.map +1 -0
  254. package/dist/electron-build/constraint-runtime/src/tools/PolymarketSDK/listMarkets.js +28 -0
  255. package/dist/electron-build/constraint-runtime/src/tools/PolymarketSDK/listMarkets.js.map +1 -0
  256. package/dist/electron-build/constraint-runtime/src/tools/SafeSDK/deploySafe.js +10 -0
  257. package/dist/electron-build/constraint-runtime/src/tools/SafeSDK/deploySafe.js.map +1 -0
  258. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/autoPay.js +68 -0
  259. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/autoPay.js.map +1 -0
  260. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/createWallet.js +14 -0
  261. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/createWallet.js.map +1 -0
  262. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/getBalance.js +17 -0
  263. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/getBalance.js.map +1 -0
  264. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/importWallet.js +59 -0
  265. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/importWallet.js.map +1 -0
  266. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/sendTransaction.js +29 -0
  267. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/sendTransaction.js.map +1 -0
  268. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/signMessage.js +14 -0
  269. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/signMessage.js.map +1 -0
  270. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/transferToken.js +29 -0
  271. package/dist/electron-build/constraint-runtime/src/tools/WalletTools/transferToken.js.map +1 -0
  272. package/dist/electron-build/constraints/index.js +11 -0
  273. package/dist/electron-build/constraints/index.js.map +1 -0
  274. package/dist/electron-build/context-compaction/auto-compact.js +182 -0
  275. package/dist/electron-build/context-compaction/auto-compact.js.map +1 -0
  276. package/dist/electron-build/context-compaction/budget-gate.js +32 -0
  277. package/dist/electron-build/context-compaction/budget-gate.js.map +1 -0
  278. package/dist/electron-build/context-compaction/budget-reduce.js +39 -0
  279. package/dist/electron-build/context-compaction/budget-reduce.js.map +1 -0
  280. package/dist/electron-build/context-compaction/context-collapse.js +71 -0
  281. package/dist/electron-build/context-compaction/context-collapse.js.map +1 -0
  282. package/dist/electron-build/context-compaction/index.js +38 -0
  283. package/dist/electron-build/context-compaction/index.js.map +1 -0
  284. package/dist/electron-build/context-compaction/microcompact.js +55 -0
  285. package/dist/electron-build/context-compaction/microcompact.js.map +1 -0
  286. package/dist/electron-build/context-compaction/pipeline.js +128 -0
  287. package/dist/electron-build/context-compaction/pipeline.js.map +1 -0
  288. package/dist/electron-build/context-compaction/snip.js +50 -0
  289. package/dist/electron-build/context-compaction/snip.js.map +1 -0
  290. package/dist/electron-build/context-compaction/token-estimator.js +40 -0
  291. package/dist/electron-build/context-compaction/token-estimator.js.map +1 -0
  292. package/dist/electron-build/context-compaction/types.js +21 -0
  293. package/dist/electron-build/context-compaction/types.js.map +1 -0
  294. package/dist/electron-build/cron/tick-lock.js +247 -0
  295. package/dist/electron-build/cron/tick-lock.js.map +1 -0
  296. package/dist/electron-build/documents/reader.js +131 -0
  297. package/dist/electron-build/documents/reader.js.map +1 -0
  298. package/dist/electron-build/documents/store.js +220 -0
  299. package/dist/electron-build/documents/store.js.map +1 -0
  300. package/dist/electron-build/external-engines/delegate-handle.js +76 -0
  301. package/dist/electron-build/external-engines/delegate-handle.js.map +1 -0
  302. package/dist/electron-build/external-engines/delegate.js +225 -0
  303. package/dist/electron-build/external-engines/delegate.js.map +1 -0
  304. package/dist/electron-build/external-engines/discovery.js +448 -0
  305. package/dist/electron-build/external-engines/discovery.js.map +1 -0
  306. package/dist/electron-build/external-engines/types.js +13 -0
  307. package/dist/electron-build/external-engines/types.js.map +1 -0
  308. package/dist/electron-build/hooks/hooks-engine.js +367 -0
  309. package/dist/electron-build/hooks/hooks-engine.js.map +1 -0
  310. package/dist/electron-build/judgeness/reflect.js +100 -0
  311. package/dist/electron-build/judgeness/reflect.js.map +1 -0
  312. package/dist/electron-build/judgeness/store.js +536 -0
  313. package/dist/electron-build/judgeness/store.js.map +1 -0
  314. package/dist/electron-build/judgeness/types.js +21 -0
  315. package/dist/electron-build/judgeness/types.js.map +1 -0
  316. package/dist/electron-build/llm/config-store.js +551 -0
  317. package/dist/electron-build/llm/config-store.js.map +1 -0
  318. package/dist/electron-build/llm/error-lessons.js +76 -0
  319. package/dist/electron-build/llm/error-lessons.js.map +1 -0
  320. package/dist/electron-build/llm/pi-ai.js +830 -0
  321. package/dist/electron-build/llm/pi-ai.js.map +1 -0
  322. package/dist/electron-build/llm/system-prompt/registry.js +318 -0
  323. package/dist/electron-build/llm/system-prompt/registry.js.map +1 -0
  324. package/dist/electron-build/llm/system-prompt/strip-hibsml.js +55 -0
  325. package/dist/electron-build/llm/system-prompt/strip-hibsml.js.map +1 -0
  326. package/dist/electron-build/locales/en.js +32 -0
  327. package/dist/electron-build/locales/en.js.map +1 -0
  328. package/dist/electron-build/locales/zh.js +30 -0
  329. package/dist/electron-build/locales/zh.js.map +1 -0
  330. package/dist/electron-build/lsp/lsp-manager.js +327 -0
  331. package/dist/electron-build/lsp/lsp-manager.js.map +1 -0
  332. package/dist/electron-build/lsp/lsp-tools.js +226 -0
  333. package/dist/electron-build/lsp/lsp-tools.js.map +1 -0
  334. package/dist/electron-build/migration/external-agent-migrator.js +451 -0
  335. package/dist/electron-build/migration/external-agent-migrator.js.map +1 -0
  336. package/dist/electron-build/network/agent-network.js +775 -0
  337. package/dist/electron-build/network/agent-network.js.map +1 -0
  338. package/dist/electron-build/network/goal-event-bridge.js +62 -0
  339. package/dist/electron-build/network/goal-event-bridge.js.map +1 -0
  340. package/dist/electron-build/network/iroh-integration.js +117 -0
  341. package/dist/electron-build/network/iroh-integration.js.map +1 -0
  342. package/dist/electron-build/network/iroh-transport.js +550 -0
  343. package/dist/electron-build/network/iroh-transport.js.map +1 -0
  344. package/dist/electron-build/network/p2p.js +1103 -0
  345. package/dist/electron-build/network/p2p.js.map +1 -0
  346. package/dist/electron-build/network/storage/adapters/json-adapter.js +416 -0
  347. package/dist/electron-build/network/storage/adapters/json-adapter.js.map +1 -0
  348. package/dist/electron-build/network/storage/types.js +18 -0
  349. package/dist/electron-build/network/storage/types.js.map +1 -0
  350. package/dist/electron-build/orbitdb/agent-tools.js +402 -0
  351. package/dist/electron-build/orbitdb/agent-tools.js.map +1 -0
  352. package/dist/electron-build/orbitdb/cid-database.js +284 -0
  353. package/dist/electron-build/orbitdb/cid-database.js.map +1 -0
  354. package/dist/electron-build/orbitdb/context-store.js +99 -0
  355. package/dist/electron-build/orbitdb/context-store.js.map +1 -0
  356. package/dist/electron-build/orbitdb/ipfs-node.js +120 -0
  357. package/dist/electron-build/orbitdb/ipfs-node.js.map +1 -0
  358. package/dist/electron-build/orbitdb/kanban-store.js +299 -0
  359. package/dist/electron-build/orbitdb/kanban-store.js.map +1 -0
  360. package/dist/electron-build/orbitdb/task-store.js +155 -0
  361. package/dist/electron-build/orbitdb/task-store.js.map +1 -0
  362. package/dist/electron-build/orbitdb/trajectory-store.js +194 -0
  363. package/dist/electron-build/orbitdb/trajectory-store.js.map +1 -0
  364. package/dist/electron-build/orbitdb/ui-cid.js +77 -0
  365. package/dist/electron-build/orbitdb/ui-cid.js.map +1 -0
  366. package/dist/electron-build/pi-ecosystem-a2ui/index.js +89 -0
  367. package/dist/electron-build/pi-ecosystem-a2ui/index.js.map +1 -0
  368. package/dist/electron-build/pi-ecosystem-goals/index.js +512 -0
  369. package/dist/electron-build/pi-ecosystem-goals/index.js.map +1 -0
  370. package/dist/electron-build/pi-ecosystem-judgment/adaptive-scan.js +325 -0
  371. package/dist/electron-build/pi-ecosystem-judgment/adaptive-scan.js.map +1 -0
  372. package/dist/electron-build/pi-ecosystem-judgment/causal-judge.js +492 -0
  373. package/dist/electron-build/pi-ecosystem-judgment/causal-judge.js.map +1 -0
  374. package/dist/electron-build/pi-ecosystem-judgment/cleanup.js +167 -0
  375. package/dist/electron-build/pi-ecosystem-judgment/cleanup.js.map +1 -0
  376. package/dist/electron-build/pi-ecosystem-judgment/decision.js +321 -0
  377. package/dist/electron-build/pi-ecosystem-judgment/decision.js.map +1 -0
  378. package/dist/electron-build/pi-ecosystem-judgment/detect-hook.js +175 -0
  379. package/dist/electron-build/pi-ecosystem-judgment/detect-hook.js.map +1 -0
  380. package/dist/electron-build/pi-ecosystem-judgment/distill-prompt.js +232 -0
  381. package/dist/electron-build/pi-ecosystem-judgment/distill-prompt.js.map +1 -0
  382. package/dist/electron-build/pi-ecosystem-judgment/distillation.js +304 -0
  383. package/dist/electron-build/pi-ecosystem-judgment/distillation.js.map +1 -0
  384. package/dist/electron-build/pi-ecosystem-judgment/evolve-judgment.js +176 -0
  385. package/dist/electron-build/pi-ecosystem-judgment/evolve-judgment.js.map +1 -0
  386. package/dist/electron-build/pi-ecosystem-judgment/human-value-pipeline.js +65 -0
  387. package/dist/electron-build/pi-ecosystem-judgment/human-value-pipeline.js.map +1 -0
  388. package/dist/electron-build/pi-ecosystem-judgment/human-value-store.js +808 -0
  389. package/dist/electron-build/pi-ecosystem-judgment/human-value-store.js.map +1 -0
  390. package/dist/electron-build/pi-ecosystem-judgment/index.js +508 -0
  391. package/dist/electron-build/pi-ecosystem-judgment/index.js.map +1 -0
  392. package/dist/electron-build/pi-ecosystem-judgment/injection-gate.js +334 -0
  393. package/dist/electron-build/pi-ecosystem-judgment/injection-gate.js.map +1 -0
  394. package/dist/electron-build/pi-ecosystem-judgment/monitor-gate.js +228 -0
  395. package/dist/electron-build/pi-ecosystem-judgment/monitor-gate.js.map +1 -0
  396. package/dist/electron-build/pi-ecosystem-judgment/value-injection.js +598 -0
  397. package/dist/electron-build/pi-ecosystem-judgment/value-injection.js.map +1 -0
  398. package/dist/electron-build/pi-ecosystem-mcp/index.js +643 -0
  399. package/dist/electron-build/pi-ecosystem-mcp/index.js.map +1 -0
  400. package/dist/electron-build/pi-ecosystem-mcp/ui-tools.js +116 -0
  401. package/dist/electron-build/pi-ecosystem-mcp/ui-tools.js.map +1 -0
  402. package/dist/electron-build/pi-ecosystem-subagents/index.js +352 -0
  403. package/dist/electron-build/pi-ecosystem-subagents/index.js.map +1 -0
  404. package/dist/electron-build/security/builtin-guards.js +133 -0
  405. package/dist/electron-build/security/builtin-guards.js.map +1 -0
  406. package/dist/electron-build/security/context-router-tool.js +111 -0
  407. package/dist/electron-build/security/context-router-tool.js.map +1 -0
  408. package/dist/electron-build/security/input-scanner.js +263 -0
  409. package/dist/electron-build/security/input-scanner.js.map +1 -0
  410. package/dist/electron-build/security/react-harness.js +148 -0
  411. package/dist/electron-build/security/react-harness.js.map +1 -0
  412. package/dist/electron-build/security/tool-gate.js +291 -0
  413. package/dist/electron-build/security/tool-gate.js.map +1 -0
  414. package/dist/electron-build/setup/setup-store.js +648 -0
  415. package/dist/electron-build/setup/setup-store.js.map +1 -0
  416. package/dist/electron-build/social/channels/ChannelManager.js +444 -0
  417. package/dist/electron-build/social/channels/ChannelManager.js.map +1 -0
  418. package/dist/electron-build/social/channels/DiapChannelBridge.js +451 -0
  419. package/dist/electron-build/social/channels/DiapChannelBridge.js.map +1 -0
  420. package/dist/electron-build/social/channels/InterestMatcher.js +135 -0
  421. package/dist/electron-build/social/channels/InterestMatcher.js.map +1 -0
  422. package/dist/electron-build/social/channels/types.js +21 -0
  423. package/dist/electron-build/social/channels/types.js.map +1 -0
  424. package/dist/electron-build/social/global-shared-context.js +368 -0
  425. package/dist/electron-build/social/global-shared-context.js.map +1 -0
  426. package/dist/electron-build/social/heartbeat.js +882 -0
  427. package/dist/electron-build/social/heartbeat.js.map +1 -0
  428. package/dist/electron-build/storage/did-catalog-bridge.js +314 -0
  429. package/dist/electron-build/storage/did-catalog-bridge.js.map +1 -0
  430. package/dist/electron-build/storage/did-catalog.js +272 -0
  431. package/dist/electron-build/storage/did-catalog.js.map +1 -0
  432. package/dist/electron-build/utils/auto-update.js +140 -558
  433. package/dist/electron-build/utils/auto-update.js.map +1 -1
  434. package/dist/electron-build/utils/module-context.js +98 -0
  435. package/dist/electron-build/utils/module-context.js.map +1 -0
  436. package/dist/electron-build/utils/runtime-bootstrap.js +745 -0
  437. package/dist/electron-build/utils/runtime-bootstrap.js.map +1 -0
  438. package/dist/electron-build/utils/update-manager.js +770 -0
  439. package/dist/electron-build/utils/update-manager.js.map +1 -0
  440. package/dist/electron-build/utils/update-state.js +406 -0
  441. package/dist/electron-build/utils/update-state.js.map +1 -0
  442. package/dist/electron-build/utils/version-info.js +562 -0
  443. package/dist/electron-build/utils/version-info.js.map +1 -0
  444. package/dist/electron-build/web/i18n.js +146 -0
  445. package/dist/electron-build/web/i18n.js.map +1 -0
  446. package/dist/electron-build/web/routes-x402-info.js +232 -0
  447. package/dist/electron-build/web/routes-x402-info.js.map +1 -0
  448. package/dist/electron-build/web/server-storage.js +390 -0
  449. package/dist/electron-build/web/server-storage.js.map +1 -0
  450. package/dist/electron-build/web/server-types.js +52 -0
  451. package/dist/electron-build/web/server-types.js.map +1 -0
  452. package/dist/electron-build/web/task-deps.js +41 -0
  453. package/dist/electron-build/web/task-deps.js.map +1 -0
  454. package/dist/index.js +58 -27
  455. package/dist/llm/system-prompt/registry.js +6 -3
  456. package/dist/security/tool-gate.js +4 -0
  457. package/dist/utils/auto-update.js +138 -525
  458. package/dist/utils/module-context.js +59 -0
  459. package/dist/utils/runtime-bootstrap.js +682 -0
  460. package/dist/utils/update-cli.js +82 -0
  461. package/dist/utils/update-health.js +401 -0
  462. package/dist/utils/update-manager.js +716 -0
  463. package/dist/utils/update-state.js +353 -0
  464. package/dist/utils/version-info.js +510 -0
  465. package/dist/web/mobile-contacts.js +329 -0
  466. package/dist/web/mobile-core.js +481 -15
  467. package/dist/web/mobile.html +32 -0
  468. package/dist/web/mobile.js +139 -0
  469. package/dist/web/routes-contacts.js +420 -0
  470. package/dist/web/server.js +5 -0
  471. package/package.json +1 -1
  472. package/scripts/build-cli.js +32 -151
  473. package/scripts/postinstall.js +153 -76
@@ -1,606 +1,188 @@
1
1
  "use strict";
2
2
  /**
3
- * npm 自动更新检查器
3
+ * auto-update.ts — 启动时后台检查的**薄适配层** (2026-09-19 重写)
4
4
  *
5
- * 功能:
6
- * - 启动时(后台、节流)检查 npm 注册表是否有新版本
7
- * - 检测到新版本时自动下载并安装最新版本(可按需关闭)
8
- * - 支持增量更新(只更新有变化的包)
5
+ * 这里以前是"多套更新逻辑中的一套": 自己拼 package.json 路径、自己打 registry、
6
+ * 自己 `npm install -g`、自己重启。现在它只剩两件事:
7
+ * ① 启动时决定"要不要检查" (开关 / 节流 / 显式屏蔽)
8
+ * ② 把结论**通知**给用户
9
+ * 真正的检查 / 计划 / 执行全在 `update-manager.ts` —— 一份逻辑, 一个事实。
9
10
  *
10
- * 设计要点:
11
- * - 全局安装位置通过 `npm root -g` / `npm prefix -g` 动态探测,
12
- * 不再依赖写死的路径,兼容 nvm / homebrew / 默认 prefix。
13
- * - 运行中的包版本优先从全局安装位置(npm root -g 动态探测)读取,
14
- * 开发态下若 cwd 的 package.json 就是本包则回退到 cwd,不受任意工作目录影响。
15
- * - 检查频率受节流缓存约束(默认 24h 一次),不会每次启动都打 npm。
11
+ * **行为变更 (刻意, 2026-09-19)**: 旧默认是"发现新版本 → 自动安装 → 自动重启"。
12
+ * 新默认是"发现新版本 → 只通知"。理由: Bolloon 有长期运行 / Supervisor / 持久化任务 /
13
+ * 支付恢复, 自动替换运行时可能打断正在执行的 Goal。要自动装需显式打开
14
+ * `config.json` 的 `autoInstall: true` (再加 `autoRestart: true` 才自动重启),
15
+ * 或用 `BOLLOON_AUTO_UPDATE=1` 临时覆盖。
16
16
  */
17
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18
- if (k2 === undefined) k2 = k;
19
- var desc = Object.getOwnPropertyDescriptor(m, k);
20
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
21
- desc = { enumerable: true, get: function() { return m[k]; } };
22
- }
23
- Object.defineProperty(o, k2, desc);
24
- }) : (function(o, m, k, k2) {
25
- if (k2 === undefined) k2 = k;
26
- o[k2] = m[k];
27
- }));
28
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
29
- Object.defineProperty(o, "default", { enumerable: true, value: v });
30
- }) : function(o, v) {
31
- o["default"] = v;
32
- });
33
- var __importStar = (this && this.__importStar) || (function () {
34
- var ownKeys = function(o) {
35
- ownKeys = Object.getOwnPropertyNames || function (o) {
36
- var ar = [];
37
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
38
- return ar;
39
- };
40
- return ownKeys(o);
41
- };
42
- return function (mod) {
43
- if (mod && mod.__esModule) return mod;
44
- var result = {};
45
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
46
- __setModuleDefault(result, mod);
47
- return result;
48
- };
49
- })();
50
17
  Object.defineProperty(exports, "__esModule", { value: true });
51
18
  exports.setNotifyQuiet = setNotifyQuiet;
19
+ exports.checkResultToPackageInfo = checkResultToPackageInfo;
52
20
  exports.checkAndUpdate = checkAndUpdate;
53
21
  exports.checkForUpdates = checkForUpdates;
54
22
  exports.performUpdate = performUpdate;
55
- const child_process_1 = require("child_process");
56
- const fs = __importStar(require("fs"));
57
- const path = __importStar(require("path"));
58
- const https = __importStar(require("https"));
59
- const http = __importStar(require("http"));
60
- // ANSI 颜色
23
+ exports.compareVersionsLegacy = compareVersionsLegacy;
24
+ const update_manager_js_1 = require("./update-manager.js");
25
+ const update_state_js_1 = require("./update-state.js");
26
+ const setup_store_js_1 = require("../setup/setup-store.js");
27
+ const version_info_js_1 = require("./version-info.js");
61
28
  const RESET = '\x1b[0m';
62
- const BOLD = '\x1b[1m';
63
- const CYAN = '\x1b[36m';
64
29
  const GREEN = '\x1b[32m';
65
30
  const YELLOW = '\x1b[33m';
66
- const MAGENTA = '\x1b[35m';
67
- const PKG_NAME = '@bolloon/bolloon-agent';
68
- const BOLLOON_DIR = path.join(process.env.HOME || process.env.USERPROFILE || '/tmp', '.bolloon');
69
- const UPDATE_CACHE = path.join(BOLLOON_DIR, '.update-check.json');
70
- /** 2026-08-07: CLI 交互模式下静音自动更新通知 (避免后台检查污染 TUI 屏幕) */
31
+ const CYAN = '\x1b[36m';
32
+ /** 2026-08-07: CLI 交互模式下静音后台通知 (避免污染 TUI 屏幕) */
71
33
  let notifyQuiet = false;
72
34
  function setNotifyQuiet(v) {
73
35
  notifyQuiet = v;
74
36
  }
75
- /**
76
- * 通知用户。使用 stderr,避免在交互式 CLI 模式下 stdout 被吞掉。
77
- */
37
+ /** 通知用户。用 stderr, 避免交互式 CLI 模式下 stdout 被 Ink 接管/吞掉。 */
78
38
  function notify(msg, color = RESET) {
79
39
  if (notifyQuiet)
80
40
  return;
81
- process.stderr.write(`${color}${msg}${RESET}`);
82
- }
83
- function httpGet(url) {
84
- return new Promise((resolve, reject) => {
85
- const client = url.startsWith('https') ? https : http;
86
- const req = client.get(url, { timeout: 10000 }, (res) => {
87
- let data = '';
88
- res.on('data', (chunk) => data += chunk);
89
- res.on('end', () => resolve(data));
90
- });
91
- req.on('error', reject);
92
- req.on('timeout', () => {
93
- req.destroy();
94
- reject(new Error('请求超时'));
95
- });
96
- });
97
- }
98
- /**
99
- * 读取某目录下的 package.json 版本号
100
- */
101
- function readVersion(dir) {
102
- if (!dir)
103
- return null;
104
- const pkgPath = path.join(dir, 'package.json');
105
- try {
106
- if (fs.existsSync(pkgPath)) {
107
- const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
108
- return pkg.version || null;
109
- }
110
- }
111
- catch {
112
- // 忽略
113
- }
114
- return null;
115
- }
116
- /**
117
- * 获取 bolloon 全局安装目录(动态探测,兼容多种 npm 安装方式)。
118
- * 同时兼容 ESM(Node) 与 CJS(Electron) 上下文,不依赖 import.meta。
119
- */
120
- function getGlobalBolloonDir() {
121
- const candidates = [];
122
- // 1. npm root -g(最可靠)
123
- try {
124
- const npmRoot = (0, child_process_1.execSync)('npm root -g', { encoding: 'utf-8', timeout: 8000 }).trim();
125
- if (npmRoot)
126
- candidates.push(path.join(npmRoot, '@bolloon', 'bolloon-agent'));
127
- }
128
- catch {
129
- // 忽略
130
- }
131
- // 2. npm prefix -g
132
- try {
133
- const npmPrefix = (0, child_process_1.execSync)('npm prefix -g', { encoding: 'utf-8', timeout: 8000 }).trim();
134
- if (npmPrefix)
135
- candidates.push(path.join(npmPrefix, 'lib', 'node_modules', '@bolloon', 'bolloon-agent'));
136
- }
137
- catch {
138
- // 忽略
139
- }
140
- // 3. nvm 各版本目录
141
- const home = process.env.HOME || '';
142
- const nvmBase = path.join(home, '.nvm', 'versions', 'node');
143
- try {
144
- if (fs.existsSync(nvmBase)) {
145
- for (const ver of fs.readdirSync(nvmBase)) {
146
- candidates.push(path.join(nvmBase, ver, 'lib', 'node_modules', '@bolloon', 'bolloon-agent'));
147
- }
148
- }
149
- }
150
- catch {
151
- // 忽略
152
- }
153
- // 4. 常见写死路径兜底
154
- candidates.push(path.join(home, '.npm-global', 'lib', 'node_modules', '@bolloon', 'bolloon-agent'), '/usr/local/lib/node_modules/@bolloon/bolloon-agent', '/opt/homebrew/lib/node_modules/@bolloon/bolloon-agent', path.join(home, 'node_modules', '@bolloon', 'bolloon-agent'));
155
- for (const p of candidates) {
156
- if (fs.existsSync(path.join(p, 'package.json')))
157
- return p;
158
- }
159
- return null;
160
- }
161
- /**
162
- * 获取当前安装的包版本。
163
- * 主包优先用「全局安装位置」;开发态下若 cwd 的 package.json 就是本包则回退到 cwd。
164
- * 不再无差别回退到 cwd(避免全局启动时误读用户工作目录的版本)。
165
- */
166
- function getInstalledVersion(packageName) {
167
- if (packageName === PKG_NAME) {
168
- const fromGlobal = readVersion(getGlobalBolloonDir());
169
- if (fromGlobal)
170
- return fromGlobal;
171
- // 开发态:仅在 cwd 的 package.json 确为本包时才采用
172
- const cwdPkg = path.join(process.cwd(), 'package.json');
173
- try {
174
- if (fs.existsSync(cwdPkg)) {
175
- const data = JSON.parse(fs.readFileSync(cwdPkg, 'utf-8'));
176
- if (data.name === PKG_NAME && data.version)
177
- return data.version;
178
- }
179
- }
180
- catch {
181
- // 忽略
182
- }
183
- }
184
- // 其它包:检查本地 node_modules
185
- const packageJsonPath = findPackageJson(packageName);
186
- if (packageJsonPath) {
187
- return readVersion(path.dirname(packageJsonPath));
188
- }
189
- return null;
190
- }
191
- /**
192
- * 查找包的 package.json 路径
193
- */
194
- function findPackageJson(packageName) {
195
- const checkPaths = [
196
- path.join(process.cwd(), 'node_modules', packageName, 'package.json'),
197
- path.join(process.cwd(), 'node_modules', '@' + packageName.split('/')[0], packageName.split('/')[1] || '', 'package.json'),
198
- ];
199
- for (const p of checkPaths) {
200
- if (fs.existsSync(p))
201
- return p;
202
- }
203
- return null;
41
+ process.stderr.write(`${color}${msg}${RESET}\n`);
204
42
  }
205
- /**
206
- * 检查 npm 注册表获取最新版本
207
- */
208
- async function getLatestVersion(packageName) {
209
- try {
210
- const encodedName = encodeURIComponent(packageName);
211
- const url = `https://registry.npmjs.org/${encodedName}`;
212
- const response = await httpGet(url);
213
- const data = JSON.parse(response);
214
- return data['dist-tags']?.latest || null;
215
- }
216
- catch (e) {
217
- return null;
218
- }
219
- }
220
- /**
221
- * 比较版本号
222
- */
223
- function compareVersions(current, latest) {
224
- const norm = (v) => v.replace(/^v/, '').split('-')[0].split('.').map(Number);
225
- const currentParts = norm(current);
226
- const latestParts = norm(latest);
227
- for (let i = 0; i < Math.max(currentParts.length, latestParts.length); i++) {
228
- const c = currentParts[i] || 0;
229
- const l = latestParts[i] || 0;
230
- if (c < l)
231
- return -1;
232
- if (c > l)
233
- return 1;
234
- }
235
- return 0;
236
- }
237
- /**
238
- * 检查 bolloon 相关包是否有更新
239
- */
240
- async function checkBolloonUpdates() {
241
- const packagesToCheck = [
242
- PKG_NAME,
243
- '@bolloon/constraint-runtime',
244
- ];
245
- const outdatedPackages = [];
246
- let hasUpdate = false;
247
- let currentVersion = '';
248
- let latestVersion = '';
249
- for (const pkg of packagesToCheck) {
250
- const installed = getInstalledVersion(pkg);
251
- if (!installed)
252
- continue;
253
- if (pkg === PKG_NAME) {
254
- currentVersion = installed;
255
- }
256
- const latest = await getLatestVersion(pkg);
257
- if (latest && compareVersions(installed, latest) < 0) {
258
- hasUpdate = true;
259
- latestVersion = latest;
260
- outdatedPackages.push({
261
- name: pkg,
262
- current: installed,
263
- wanted: latest,
264
- latest,
265
- location: pkg
266
- });
267
- }
268
- }
269
- if (outdatedPackages.length === 0) {
270
- return {
271
- name: PKG_NAME,
272
- version: currentVersion,
273
- latest: currentVersion,
274
- outdated: false,
275
- packages: []
276
- };
277
- }
43
+ function checkResultToPackageInfo(r) {
44
+ const outdated = r.status === 'update_available' && !!r.latestVersion;
278
45
  return {
279
- name: PKG_NAME,
280
- version: currentVersion,
281
- latest: latestVersion,
282
- outdated: hasUpdate,
283
- packages: outdatedPackages
46
+ name: version_info_js_1.PKG_NAME,
47
+ version: r.currentVersion,
48
+ latest: r.latestVersion || r.currentVersion,
49
+ outdated,
50
+ packages: outdated
51
+ ? [{
52
+ name: version_info_js_1.PKG_NAME,
53
+ current: r.currentVersion,
54
+ wanted: r.latestVersion,
55
+ latest: r.latestVersion,
56
+ location: r.installMethod,
57
+ }]
58
+ : [],
284
59
  };
285
60
  }
286
61
  /**
287
- * 使用 npm outdated 检查所有包的更新
288
- */
289
- function checkNpmOutdated() {
290
- try {
291
- const output = (0, child_process_1.execSync)('npm outdated --json', {
292
- encoding: 'utf-8',
293
- timeout: 30000,
294
- maxBuffer: 10 * 1024 * 1024,
295
- cwd: process.cwd()
296
- });
297
- if (!output.trim())
298
- return [];
299
- const data = JSON.parse(output);
300
- const packages = [];
301
- for (const [name, info] of Object.entries(data)) {
302
- const pkg = info;
303
- packages.push({
304
- name,
305
- current: pkg.current || '0.0.0',
306
- wanted: pkg.wanted || '0.0.0',
307
- latest: pkg.latest || '0.0.0',
308
- location: pkg.location || name
309
- });
310
- }
311
- return packages;
312
- }
313
- catch (e) {
314
- // npm outdated 在没有过时包时会返回非零退出码
315
- if (e.status !== 0 && !e.message?.includes('npm outdated')) {
316
- return [];
317
- }
318
- return [];
319
- }
320
- }
321
- /**
322
- * 解析 `name` 或 `name@version` 形式,未带版本时从 npm 解析 latest,
323
- * 拼成 `name@version`,避免 npm 被本地 package.json 的 semver 约束卡住。
324
- */
325
- async function resolveTargetsWithVersion(targets) {
326
- return Promise.all(targets.map(async (spec) => {
327
- const m = spec.match(/^(.+?)@([^@]+)$/);
328
- // 形如 @scope/name@1.2.3 或 name@1.2.3 且版本以数字开头 -> 已带版本
329
- if (m && m[2] && /^\d/.test(m[2]))
330
- return spec;
331
- const latest = await getLatestVersion(spec);
332
- return latest ? `${spec}@${latest}` : spec;
333
- }));
334
- }
335
- /**
336
- * 自动更新 npm 包, 传 `name@version` 形式的目标让 npm install 不被本地
337
- * package.json 的 semver 约束卡住(旧版只传 name 时, npm 看到本地
338
- * package.json 里 "^0.3.x" 已经满足就判 up to date, 永远升不上去)
339
- */
340
- async function updatePackagesWithVersion(packagesWithVersion) {
341
- const parsed = packagesWithVersion.map(spec => {
342
- const at = spec.lastIndexOf('@');
343
- if (at <= 0)
344
- return { name: spec, version: '' };
345
- return { name: spec.slice(0, at), version: spec.slice(at + 1) };
346
- });
347
- const targets = parsed.map(p => p.name);
348
- const before = new Map();
349
- for (const p of targets)
350
- before.set(p, getInstalledVersion(p));
351
- // 用 targetsWithVersion 直接拼命令 - 包含具体版本号, 不会被本地约束拦截
352
- const args = ['npm', 'install', '-g', ...packagesWithVersion];
353
- notify(`\n${CYAN}📦 正在更新包...${RESET}\n`, RESET);
354
- try {
355
- (0, child_process_1.execSync)(args.join(' '), {
356
- encoding: 'utf-8',
357
- timeout: 300000,
358
- stdio: 'inherit',
359
- // 全局安装与 cwd 无关,用中性目录避免本地 package.json 干扰
360
- cwd: process.env.TMPDIR || '/tmp'
361
- });
362
- }
363
- catch (e) {
364
- return {
365
- success: false,
366
- updated: false,
367
- message: '更新失败',
368
- error: e.message
369
- };
370
- }
371
- // install 退出码 0 并不等于"真的升上去了" ("up to date" 也是 0)。
372
- // 重新读取磁盘版本, 只有真的达到 latest 之一才算 updated。
373
- const upgraded = [];
374
- for (const p of parsed) {
375
- const after = getInstalledVersion(p.name);
376
- const was = before.get(p.name);
377
- if (after && was && compareVersions(was, after) < 0) {
378
- upgraded.push(p.name);
379
- }
380
- }
381
- if (upgraded.length > 0) {
382
- return {
383
- success: true,
384
- updated: true,
385
- message: `已更新: ${upgraded.join(', ')}`,
386
- updatedPackages: upgraded
387
- };
388
- }
389
- return {
390
- success: true,
391
- updated: false,
392
- message: '已是最新版本,无需重启',
393
- updatedPackages: []
394
- };
395
- }
396
- /**
397
- * 自动更新 npm 包(不传版本时自动解析 latest)
398
- */
399
- async function updatePackages(packages) {
400
- const targets = packages && packages.length > 0 ? packages : [PKG_NAME];
401
- const withVersion = await resolveTargetsWithVersion(targets);
402
- return updatePackagesWithVersion(withVersion);
403
- }
404
- function loadUpdateConfig() {
405
- const def = { autoUpdate: true, autoRestart: true, checkIntervalHours: 24 };
406
- try {
407
- const cfgPath = path.join(BOLLOON_DIR, 'config.json');
408
- if (fs.existsSync(cfgPath)) {
409
- const cfg = JSON.parse(fs.readFileSync(cfgPath, 'utf-8'));
410
- if (typeof cfg.autoUpdate === 'boolean')
411
- def.autoUpdate = cfg.autoUpdate;
412
- if (typeof cfg.autoRestart === 'boolean')
413
- def.autoRestart = cfg.autoRestart;
414
- }
415
- }
416
- catch {
417
- // 忽略
418
- }
419
- return def;
420
- }
421
- function readCache() {
422
- try {
423
- if (fs.existsSync(UPDATE_CACHE)) {
424
- return JSON.parse(fs.readFileSync(UPDATE_CACHE, 'utf-8'));
425
- }
426
- }
427
- catch {
428
- // 忽略
429
- }
430
- return {};
431
- }
432
- function writeCache(patch) {
433
- try {
434
- fs.mkdirSync(BOLLOON_DIR, { recursive: true });
435
- const merged = { ...readCache(), ...patch, lastCheck: Date.now() };
436
- fs.writeFileSync(UPDATE_CACHE, JSON.stringify(merged));
437
- }
438
- catch {
439
- // 忽略
440
- }
441
- }
442
- function shouldCheckNow(cfg) {
443
- const cache = readCache();
444
- const last = cache.lastCheck || 0;
445
- const interval = cfg.checkIntervalHours * 3600 * 1000;
446
- return Date.now() - last >= interval;
447
- }
448
- /**
449
- * 判断本次启动是否应执行自动更新检查。
450
- * 显式屏蔽(--no-update / BOLLOON_SKIP_UPDATE)始终优先。
451
- * 否则依据 config.json 的 autoUpdate(默认开启)或显式允许标志。
452
- */
453
- function resolveAutoUpdatePolicy() {
454
- const blockFlag = process.argv.includes('--no-update') || process.argv.includes('--skip-update');
455
- const blockEnv = process.env.BOLLOON_SKIP_UPDATE === 'true';
456
- const allowFlag = process.argv.includes('--update-check')
457
- || process.argv.includes('--update-now')
458
- || process.argv.includes('--allow-update');
459
- const allowEnv = process.env.BOLLOON_AUTO_UPDATE === '1';
460
- const cfg = loadUpdateConfig();
461
- const blocked = blockFlag || blockEnv;
462
- const enabled = cfg.autoUpdate || allowFlag || allowEnv;
463
- return { blocked, enabled, allowFlag, allowEnv, cfg };
464
- }
465
- /**
466
- * 检查并自动更新(启动时调用)
62
+ * 启动时的检查 (后台调用)。
467
63
  *
468
- * @param opts.force 忽略节流/配置强制检查
469
- * @param opts.onUpdated 安装成功且允许自动重启时调用(由调用方提供模式相关的重启逻辑,
470
- * 例如 Electron 用 app.relaunch(),Node 用 detached 重新 spawn)。
471
- * 若未提供或 autoRestart=false,则仅提示用户手动重启。
64
+ * @param opts.force 忽略节流与开关强制检查 (手动触发)
65
+ * @param opts.onUpdated 已安装新版本且允许自动重启时调用 (调用方给模式相关的重启逻辑);
66
+ * 未提供或 autoRestart=false 时只提示用户手动重启。
472
67
  */
473
68
  async function checkAndUpdate(opts = {}) {
474
- const policy = resolveAutoUpdatePolicy();
475
- if (policy.blocked) {
69
+ const home = (0, setup_store_js_1.resolveBolloonHome)();
70
+ const blocked = process.argv.includes('--no-update')
71
+ || process.argv.includes('--skip-update')
72
+ || process.env.BOLLOON_SKIP_UPDATE === '1'
73
+ || process.env.BOLLOON_SKIP_UPDATE === 'true';
74
+ if (blocked) {
476
75
  return { hasUpdate: false, info: null, updated: false, message: '跳过更新检查(已显式禁用)' };
477
76
  }
478
- if (!policy.enabled && !opts.force) {
479
- return { hasUpdate: false, info: null, updated: false, message: '自动更新已关闭 (config.json autoUpdate=false,或设置 BOLLOON_AUTO_UPDATE=1 开启)' };
480
- }
481
- // 节流:除非显式触发或强制,否则距离上次检查不足间隔就跳过
482
- if (!opts.force && !policy.allowFlag && !policy.allowEnv && !shouldCheckNow(policy.cfg)) {
483
- return { hasUpdate: false, info: null, updated: false, message: '距上次检查不足间隔,跳过' };
77
+ const prefs = await (0, update_state_js_1.readUpdatePrefs)({ home });
78
+ const explicit = opts.force
79
+ || process.argv.includes('--update-check')
80
+ || process.argv.includes('--update-now')
81
+ || process.argv.includes('--allow-update');
82
+ if (!prefs.checkUpdates && !explicit) {
83
+ return {
84
+ hasUpdate: false, info: null, updated: false,
85
+ message: '更新检查已关闭 (config.json checkUpdates=false; BOLLOON_SKIP_UPDATE=1 也可临时关闭)',
86
+ };
484
87
  }
485
- notify(`\n${CYAN}🔍 检查更新...${RESET}`, RESET);
88
+ let r;
486
89
  try {
487
- const bolloonInfo = await checkBolloonUpdates();
488
- if (bolloonInfo && bolloonInfo.outdated) {
489
- notify(`\n${YELLOW}⚠️ 发现新版本: ${bolloonInfo.latest}${RESET}\n`, RESET);
490
- notify(` 当前版本: ${bolloonInfo.version}\n`, RESET);
491
- notify(` 最新版本: ${bolloonInfo.latest}\n\n`, RESET);
492
- // 避免对同一个版本反复自动安装失败:记录上次尝试
493
- const cache = readCache();
494
- const lastAttempt = cache.lastAttempt || {};
495
- if (lastAttempt.version === bolloonInfo.latest && lastAttempt.ok === false && !opts.force) {
496
- notify(`${YELLOW}💡 该版本上次自动更新失败,请手动运行: bolloon --update-now${RESET}\n\n`, RESET);
497
- writeCache({ lastCheck: Date.now() });
90
+ r = await (0, update_manager_js_1.checkForUpdate)({ home, force: !!explicit });
91
+ }
92
+ catch (e) {
93
+ // 检查失败**绝不**报"已是最新"
94
+ notify(`⚠ 更新检查失败: ${e?.message || e}`, YELLOW);
95
+ return { hasUpdate: false, info: null, updated: false, message: `检查失败: ${e?.message || e}` };
96
+ }
97
+ const info = checkResultToPackageInfo(r);
98
+ switch (r.status) {
99
+ case 'up_to_date':
100
+ notify(`✓ 已是最新版本 (${r.currentVersion})`, GREEN);
101
+ return { hasUpdate: false, info, updated: false, message: '已是最新版本' };
102
+ case 'update_available': {
103
+ notify(`⚠ 发现新版本: ${r.currentVersion} → ${r.latestVersion}`, YELLOW);
104
+ if (!prefs.autoInstall) {
105
+ notify(' 当前设置为**只通知不自动安装** (autoInstall=false)。更新: bolloon update plan → bolloon update now', CYAN);
498
106
  return {
499
- hasUpdate: true,
500
- info: bolloonInfo,
501
- updated: false,
502
- message: `更新 ${bolloonInfo.latest} 上次失败,需手动更新`
107
+ hasUpdate: true, info, updated: false,
108
+ message: `发现新版 ${r.latestVersion}(未自动安装;运行 bolloon update now 更新)`,
503
109
  };
504
110
  }
505
- // 自动更新(用户要求:检测到新版本包时自动更新)
506
- const targetsWithVersion = bolloonInfo.packages.map(p => `${p.name}@${p.latest}`);
507
- const result = await updatePackagesWithVersion(targetsWithVersion);
508
- if (result.success && result.updated) {
509
- writeCache({ lastAttempt: { version: bolloonInfo.latest, ok: true } });
510
- // 通知主进程更新完成
511
- process.emit('bolloon-update-complete', result);
512
- // 安装成功:按配置自动重启,或退回手动提示
513
- if (opts.onUpdated && policy.cfg.autoRestart) {
514
- notify(`\n${GREEN}✅ 已更新到 ${bolloonInfo.latest},即将自动重启以应用新版本...${RESET}\n\n`, RESET);
515
- // 调用方执行模式相关的重启(Electron: app.relaunch(); Node: detached spawn)。
516
- // 此调用预期会退出当前进程,不会返回。
111
+ notify(' 自动安装已开启 (autoInstall=true),执行更新...', CYAN);
112
+ const res = await (0, update_manager_js_1.applyUpdate)({
113
+ home, strategy: 'now',
114
+ onStage: notifyQuiet ? undefined : (s, d) => notify(` [${s}] ${d}`),
115
+ });
116
+ if (res.ok) {
117
+ try {
118
+ process.emit('bolloon-update-complete', res);
119
+ }
120
+ catch { /* 忽略 */ }
121
+ if (opts.onUpdated && prefs.autoRestart) {
122
+ notify(`✅ 已更新到 ${res.to},即将自动重启以应用新版本...`, GREEN);
123
+ // 调用方执行模式相关的重启 (Electron: app.relaunch(); Node: detached spawn)。
124
+ // 预期不会返回; 兜底 exit 防"重启后还在旧进程里"。
517
125
  opts.onUpdated();
518
- // 兜底:若 onUpdated 意外返回,则手动退出
519
126
  process.exit(0);
520
127
  }
521
- notify(`\n${GREEN}✅ 已更新到 ${bolloonInfo.latest}!请重新启动应用${RESET}\n`, RESET);
522
- notify(`${YELLOW}💡 请重新运行 bolloon 以使用新版本${RESET}\n\n`, RESET);
523
- return {
524
- hasUpdate: true,
525
- info: bolloonInfo,
526
- updated: true,
527
- message: `已更新到 ${bolloonInfo.latest}`
528
- };
529
- }
530
- else if (result.success && !result.updated) {
531
- // npm 判定已是最新(未真正升级),记录失败避免反复尝试
532
- writeCache({ lastAttempt: { version: bolloonInfo.latest, ok: false } });
533
- notify(` ${YELLOW}⚠ 已是最新(无需重启)${RESET}\n\n`, RESET);
534
- return {
535
- hasUpdate: true,
536
- info: bolloonInfo,
537
- updated: false,
538
- message: '已是最新版本'
539
- };
540
- }
541
- else {
542
- writeCache({ lastAttempt: { version: bolloonInfo.latest, ok: false } });
543
- notify(` ${YELLOW}⚠ 自动更新失败: ${result.error}${RESET}\n`, RESET);
544
- notify(`${YELLOW}💡 可手动运行: bolloon --update-now${RESET}\n\n`, RESET);
545
- return {
546
- hasUpdate: true,
547
- info: bolloonInfo,
548
- updated: false,
549
- message: `更新失败: ${result.error}`
550
- };
128
+ notify(`✅ 已更新到 ${res.to}!请重新启动应用`, GREEN);
129
+ return { hasUpdate: true, info, updated: true, message: `已更新到 ${res.to}` };
551
130
  }
131
+ notify(`⚠ 更新未成功 (${res.stage}): ${res.reason}`, YELLOW);
132
+ notify(` 旧版本仍在 (${res.from}),可继续使用;详情: bolloon update status`, YELLOW);
133
+ return { hasUpdate: true, info, updated: false, message: `更新失败: ${res.reason}` };
552
134
  }
553
- else {
554
- notify(` ${GREEN}✓${RESET} 已是最新版本 (${bolloonInfo?.version || 'unknown'})\n`, RESET);
555
- writeCache({ lastAttempt: { version: '', ok: true } });
556
- return {
557
- hasUpdate: false,
558
- info: bolloonInfo,
559
- updated: false,
560
- message: '已是最新版本'
561
- };
562
- }
563
- }
564
- catch (e) {
565
- notify(` ${YELLOW}⚠${RESET} 更新检查失败: ${e.message}\n`, RESET);
566
- return {
567
- hasUpdate: false,
568
- info: null,
569
- updated: false,
570
- message: `检查失败: ${e.message}`
571
- };
572
- }
573
- }
574
- /**
575
- * 仅检查更新,不自动安装
576
- */
135
+ // 关键: 网络失败**绝不**显示"已是最新"
136
+ case 'offline':
137
+ notify('⚠ 无法检查更新: 离线 (连不上 npm registry) — 这不代表是最新版', YELLOW);
138
+ return { hasUpdate: false, info, updated: false, message: '更新检查失败(离线)' };
139
+ case 'registry_unavailable':
140
+ notify(`⚠ 无法检查更新: registry 不可用 (${r.reason || '未知'}) — 这不代表是最新版`, YELLOW);
141
+ return { hasUpdate: false, info, updated: false, message: '更新检查失败(registry 不可用)' };
142
+ case 'unsupported_installation':
143
+ return { hasUpdate: false, info, updated: false, message: `当前安装方式不支持自动更新 (${r.installMethod})` };
144
+ case 'local_version_unknown':
145
+ notify('⚠ 读不到本地版本,跳过更新判断', YELLOW);
146
+ return { hasUpdate: false, info, updated: false, message: '读不到本地版本' };
147
+ case 'check_skipped':
148
+ default:
149
+ return { hasUpdate: false, info, updated: false, message: '距上次检查不足间隔,跳过' };
150
+ }
151
+ }
152
+ /** 仅检查, 不安装 (兼容旧调用点; 结论来自同一个 Update Manager)。 */
577
153
  async function checkForUpdates() {
578
- return await checkBolloonUpdates();
154
+ const r = await (0, update_manager_js_1.checkForUpdate)({ home: (0, setup_store_js_1.resolveBolloonHome)(), force: true });
155
+ return checkResultToPackageInfo(r);
579
156
  }
580
- /**
581
- * 手动触发更新
582
- */
583
- async function performUpdate(packages) {
584
- return await updatePackages(packages);
157
+ /** 手动执行更新 (兼容旧调用点; 现在走同一条 applyUpdate 流水线)。 */
158
+ async function performUpdate(_packages) {
159
+ const home = (0, setup_store_js_1.resolveBolloonHome)();
160
+ const res = await (0, update_manager_js_1.applyUpdate)({ home, strategy: 'now' });
161
+ return {
162
+ success: res.ok,
163
+ updated: res.ok,
164
+ message: res.ok ? `已更新到 ${res.to}` : (res.reason || '更新失败'),
165
+ updatedPackages: res.ok ? [version_info_js_1.PKG_NAME, version_info_js_1.CONSTRAINT_PKG_NAME] : [],
166
+ error: res.ok ? undefined : res.reason,
167
+ };
168
+ }
169
+ /** 版本比较 (旧导出, 转发到唯一实现)。 */
170
+ function compareVersionsLegacy(a, b) {
171
+ return (0, update_manager_js_1.compareVersions)(a, b);
585
172
  }
586
- // CLI 入口
173
+ // CLI 入口: `node dist/utils/auto-update.js [check|update]`
587
174
  if (process.argv[1]?.includes('auto-update')) {
588
175
  (async () => {
589
- const command = process.argv[2];
590
- switch (command) {
591
- case 'check':
592
- const info = await checkForUpdates();
593
- if (info) {
594
- console.log(JSON.stringify(info, null, 2));
595
- }
596
- break;
597
- case 'update':
598
- const result = await performUpdate(process.argv.slice(3));
599
- console.log(JSON.stringify(result, null, 2));
600
- break;
601
- default:
602
- await checkAndUpdate();
176
+ const cmd = process.argv[2];
177
+ if (cmd === 'check') {
178
+ console.log(JSON.stringify(await checkForUpdates(), null, 2));
179
+ }
180
+ else if (cmd === 'update') {
181
+ console.log(JSON.stringify(await performUpdate(), null, 2));
182
+ }
183
+ else {
184
+ console.log(JSON.stringify(await checkAndUpdate({ force: true }), null, 2));
603
185
  }
604
- })();
186
+ })().catch((e) => { console.error(e); process.exit(1); });
605
187
  }
606
188
  //# sourceMappingURL=auto-update.js.map