@bolloon/bolloon-agent 0.2.2 → 0.2.4

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 (134) hide show
  1. package/bin/bolloon-cli.cjs +15 -4
  2. package/bin/ipfs +0 -0
  3. package/dist/agents/parse-tool-call.js +304 -0
  4. package/dist/agents/pi-sdk.js +201 -291
  5. package/dist/agents/react-loop.js +120 -0
  6. package/dist/agents/session-store.js +157 -0
  7. package/dist/agents/tool-registry.js +136 -0
  8. package/dist/agents/workflow-pivot-loop.js +40 -0
  9. package/dist/bollharness/src/index.js +5 -0
  10. package/dist/bollharness/src/scripts/checks/check_adr_plan_numbering.js +6 -0
  11. package/dist/bollharness/src/scripts/checks/check_api_types.js +45 -0
  12. package/dist/bollharness/src/scripts/checks/check_artifact_link.js +146 -0
  13. package/dist/bollharness/src/scripts/checks/check_bridge_deps.js +6 -0
  14. package/dist/bollharness/src/scripts/checks/check_bugfix_binding.js +6 -0
  15. package/dist/bollharness/src/scripts/checks/check_bugfix_binding_ci.js +6 -0
  16. package/dist/bollharness/src/scripts/checks/check_doc_file_references.js +6 -0
  17. package/dist/bollharness/src/scripts/checks/check_doc_freshness.js +135 -0
  18. package/dist/bollharness/src/scripts/checks/check_doc_links.js +31 -0
  19. package/dist/bollharness/src/scripts/checks/check_file_existence_claims.js +6 -0
  20. package/dist/bollharness/src/scripts/checks/check_fragment_integrity.js +34 -0
  21. package/dist/bollharness/src/scripts/checks/check_hook_installed.js +63 -0
  22. package/dist/bollharness/src/scripts/checks/check_issue_closure.js +41 -0
  23. package/dist/bollharness/src/scripts/checks/check_mcp_parity.js +6 -0
  24. package/dist/bollharness/src/scripts/checks/check_security.js +48 -0
  25. package/dist/bollharness/src/scripts/checks/check_skill_parity.js +6 -0
  26. package/dist/bollharness/src/scripts/checks/check_versions.js +6 -0
  27. package/dist/bollharness/src/scripts/checks/finding.js +13 -0
  28. package/dist/bollharness/src/scripts/checks/next_decision_number.js +20 -0
  29. package/dist/bollharness/src/scripts/checks/regenerate_magic_docs.js +6 -0
  30. package/dist/bollharness/src/scripts/ci/detect_rebaseline_triggers.js +8 -0
  31. package/dist/bollharness/src/scripts/ci/scan_subprocess_cfg.js +8 -0
  32. package/dist/bollharness/src/scripts/ci/scan_verify_artifacts.js +8 -0
  33. package/dist/bollharness/src/scripts/ci/scan_yaml_schema.js +8 -0
  34. package/dist/bollharness/src/scripts/context_router.js +67 -0
  35. package/dist/bollharness/src/scripts/deploy-guard.js +157 -0
  36. package/dist/bollharness/src/scripts/guard-feedback.js +192 -0
  37. package/dist/bollharness/src/scripts/guard_router.js +158 -0
  38. package/dist/bollharness/src/scripts/hooks/_hook_output.js +6 -0
  39. package/dist/bollharness/src/scripts/hooks/auto-python3.js +6 -0
  40. package/dist/bollharness/src/scripts/hooks/deploy-progress-on-session-end.js +6 -0
  41. package/dist/bollharness/src/scripts/hooks/failure-analyzer.js +6 -0
  42. package/dist/bollharness/src/scripts/hooks/gate-judgment-inject.js +92 -0
  43. package/dist/bollharness/src/scripts/hooks/gate-transition-judgment.js +63 -0
  44. package/dist/bollharness/src/scripts/hooks/inbox-ack.js +6 -0
  45. package/dist/bollharness/src/scripts/hooks/inbox-inject-on-start.js +6 -0
  46. package/dist/bollharness/src/scripts/hooks/inbox-validate.js +6 -0
  47. package/dist/bollharness/src/scripts/hooks/inbox-write-ledger.js +6 -0
  48. package/dist/bollharness/src/scripts/hooks/initializer-agent.js +6 -0
  49. package/dist/bollharness/src/scripts/hooks/loop-detection.js +73 -0
  50. package/dist/bollharness/src/scripts/hooks/owner-guard.js +6 -0
  51. package/dist/bollharness/src/scripts/hooks/precompact.js +6 -0
  52. package/dist/bollharness/src/scripts/hooks/review-agent-gatekeeper.js +6 -0
  53. package/dist/bollharness/src/scripts/hooks/risk-tracker.js +108 -0
  54. package/dist/bollharness/src/scripts/hooks/sanitize-on-read.js +6 -0
  55. package/dist/bollharness/src/scripts/hooks/session-reflection.js +7 -0
  56. package/dist/bollharness/src/scripts/hooks/session-start-magic-docs.js +7 -0
  57. package/dist/bollharness/src/scripts/hooks/session-start-reset-risk.js +7 -0
  58. package/dist/bollharness/src/scripts/hooks/session-start-toolkit-reminder.js +7 -0
  59. package/dist/bollharness/src/scripts/hooks/stop-evaluator.js +157 -0
  60. package/dist/bollharness/src/scripts/hooks/tool-call-counter.js +6 -0
  61. package/dist/bollharness/src/scripts/hooks/trace-analyzer.js +10 -0
  62. package/dist/bollharness/src/scripts/install/install-trust-token.js +7 -0
  63. package/dist/bollharness/src/scripts/install/multi_project_registry.js +9 -0
  64. package/dist/bollharness/src/scripts/install/phase2_auto.js +21 -0
  65. package/dist/bollharness/src/scripts/install/pre_commit_installer.js +6 -0
  66. package/dist/bollharness/src/scripts/install/tier_selector.js +7 -0
  67. package/dist/bollharness/src/scripts/install/transcript_miner.js +7 -0
  68. package/dist/bollharness/src/scripts/lib/claim_patterns.js +10 -0
  69. package/dist/bollharness/src/scripts/lib/sanitize_patterns.js +12 -0
  70. package/dist/bollharness/src/scripts/sanitize.js +6 -0
  71. package/dist/constraint-runtime/src/tools/PolymarketSDK/cancelOrder.js +6 -0
  72. package/dist/constraint-runtime/src/tools/PolymarketSDK/createOrder.js +6 -0
  73. package/dist/constraint-runtime/src/tools/PolymarketSDK/getMarket.js +5 -0
  74. package/dist/constraint-runtime/src/tools/PolymarketSDK/getOrders.js +6 -0
  75. package/dist/constraint-runtime/src/tools/PolymarketSDK/listMarkets.js +4 -0
  76. package/dist/constraint-runtime/src/tools/SafeSDK/deploySafe.js +6 -0
  77. package/dist/constraint-runtime/src/tools/WalletTools/autoPay.js +29 -0
  78. package/dist/constraint-runtime/src/tools/WalletTools/createWallet.js +10 -0
  79. package/dist/constraint-runtime/src/tools/WalletTools/getBalance.js +13 -0
  80. package/dist/constraint-runtime/src/tools/WalletTools/importWallet.js +22 -0
  81. package/dist/constraint-runtime/src/tools/WalletTools/sendTransaction.js +25 -0
  82. package/dist/constraint-runtime/src/tools/WalletTools/signMessage.js +10 -0
  83. package/dist/constraint-runtime/src/tools/WalletTools/transferToken.js +25 -0
  84. package/dist/electron/config.js.map +1 -0
  85. package/dist/electron/dialogs.js.map +1 -0
  86. package/dist/electron/first-run.js.map +1 -0
  87. package/dist/electron/ipc.js.map +1 -0
  88. package/dist/electron/logger.js.map +1 -0
  89. package/dist/electron/main.js.map +1 -0
  90. package/dist/electron/menu.js.map +1 -0
  91. package/dist/electron/paths.js.map +1 -0
  92. package/dist/electron/server.js.map +1 -0
  93. package/dist/electron/tray.js.map +1 -0
  94. package/dist/electron/window.js.map +1 -0
  95. package/dist/electron-preload.js +29 -0
  96. package/dist/electron-preload.js.map +1 -0
  97. package/dist/electron.js +5 -0
  98. package/dist/electron.js.map +1 -0
  99. package/dist/llm/config-store.js +24 -8
  100. package/dist/llm/pi-ai.js +33 -19
  101. package/dist/web/server.js +16 -1
  102. package/dist/workflows/collaboration.js +374 -0
  103. package/dist/workflows/index.js +54 -0
  104. package/package.json +12 -3
  105. package/CLAUDE.md +0 -3
  106. package/build/icon.icns +0 -0
  107. package/build/icon.ico +0 -0
  108. package/build/icon.png +0 -0
  109. package/build/tray.png +0 -0
  110. package/build/trayTemplate.png +0 -0
  111. package/ios/App/App/AppDelegate.swift +0 -49
  112. package/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png +0 -0
  113. package/ios/App/App/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -14
  114. package/ios/App/App/Assets.xcassets/Contents.json +0 -6
  115. package/ios/App/App/Assets.xcassets/Splash.imageset/Contents.json +0 -23
  116. package/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-1.png +0 -0
  117. package/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-2.png +0 -0
  118. package/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732.png +0 -0
  119. package/ios/App/App/Base.lproj/LaunchScreen.storyboard +0 -32
  120. package/ios/App/App/Base.lproj/Main.storyboard +0 -19
  121. package/ios/App/App/Info.plist +0 -88
  122. package/ios/App/App.xcodeproj/project.pbxproj +0 -376
  123. package/ios/App/App.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  124. package/ios/App/CapApp-SPM/Package.swift +0 -25
  125. package/ios/App/CapApp-SPM/README.md +0 -5
  126. package/ios/App/CapApp-SPM/Sources/CapApp-SPM/CapApp-SPM.swift +0 -1
  127. package/ios/debug.xcconfig +0 -1
  128. package/scripts/auto-evolve-oneshot.sh +0 -155
  129. package/scripts/auto-evolve-snapshot.sh +0 -136
  130. package/scripts/build-app-bundle.cjs +0 -170
  131. package/scripts/build-cli.js +0 -216
  132. package/scripts/detect-schema-changes.sh +0 -48
  133. package/scripts/lefthook-helper.sh +0 -69
  134. package/scripts/postinstall.js +0 -153
@@ -0,0 +1,22 @@
1
+ export async function importWallet(params) {
2
+ if (!params.mnemonic && !params.privateKey) {
3
+ throw new Error('Either mnemonic or privateKey must be provided');
4
+ }
5
+ const { ethers } = await import('ethers');
6
+ if (params.mnemonic) {
7
+ const wallet = ethers.Wallet.fromPhrase(params.mnemonic);
8
+ return {
9
+ address: wallet.address,
10
+ privateKey: wallet.privateKey,
11
+ source: 'mnemonic',
12
+ };
13
+ }
14
+ else {
15
+ const wallet = new ethers.Wallet(params.privateKey);
16
+ return {
17
+ address: wallet.address,
18
+ privateKey: wallet.privateKey,
19
+ source: 'privateKey',
20
+ };
21
+ }
22
+ }
@@ -0,0 +1,25 @@
1
+ import { Wallet, JsonRpcProvider } from 'ethers';
2
+ export async function sendTransaction(params) {
3
+ const rpcUrl = params.rpcUrl ?? 'https://eth.llamarpc.com';
4
+ const provider = new JsonRpcProvider(rpcUrl);
5
+ const wallet = new Wallet(params.privateKey, provider);
6
+ const tx = {
7
+ to: params.to,
8
+ value: BigInt(params.value),
9
+ data: params.data ? `0x${params.data}` : undefined,
10
+ gasLimit: params.gasLimit ? BigInt(params.gasLimit) : undefined,
11
+ maxFeePerGas: params.maxFeePerGas ? BigInt(params.maxFeePerGas) : undefined,
12
+ maxPriorityFeePerGas: params.maxPriorityFeePerGas ? BigInt(params.maxPriorityFeePerGas) : undefined,
13
+ };
14
+ const response = await wallet.sendTransaction(tx);
15
+ const receipt = await response.wait();
16
+ return {
17
+ hash: response.hash,
18
+ from: wallet.address,
19
+ to: params.to,
20
+ value: params.value,
21
+ status: receipt?.status === 1 ? 'success' : 'failed',
22
+ blockNumber: receipt?.blockNumber,
23
+ gasUsed: receipt?.gasUsed?.toString(),
24
+ };
25
+ }
@@ -0,0 +1,10 @@
1
+ import { Wallet } from 'ethers';
2
+ export async function signMessage(params) {
3
+ const wallet = new Wallet(params.privateKey);
4
+ const signature = await wallet.signMessage(params.message);
5
+ return {
6
+ address: wallet.address,
7
+ message: params.message,
8
+ signature,
9
+ };
10
+ }
@@ -0,0 +1,25 @@
1
+ import { Wallet, Contract } from 'ethers';
2
+ const ERC20_ABI = [
3
+ 'function transfer(address to, uint256 amount) returns (bool)',
4
+ 'function decimals() view returns (uint8)',
5
+ 'function symbol() view returns (string)',
6
+ ];
7
+ export async function transferToken(params) {
8
+ const rpcUrl = params.rpcUrl ?? 'https://eth.llamarpc.com';
9
+ const provider = new JsonRpcProvider(rpcUrl);
10
+ const wallet = new Wallet(params.privateKey, provider);
11
+ const tokenContract = new Contract(params.tokenAddress, ERC20_ABI, wallet);
12
+ const decimals = params.decimals ?? (await tokenContract.decimals());
13
+ const amount = BigInt(params.amount) * BigInt(10) ** BigInt(decimals);
14
+ const tx = await tokenContract.transfer(params.to, amount);
15
+ const receipt = await tx.wait();
16
+ return {
17
+ hash: tx.hash,
18
+ from: wallet.address,
19
+ to: params.to,
20
+ tokenAddress: params.tokenAddress,
21
+ amount: params.amount,
22
+ status: receipt?.status === 1 ? 'success' : 'failed',
23
+ };
24
+ }
25
+ import { JsonRpcProvider } from 'ethers';
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/electron/config.ts"],"names":[],"mappings":";;;AAcA,sCAIC;AAlBD;;GAEG;AACH,uCAA+B;AAElB,QAAA,YAAY,GAAG,KAAK,CAAC;AAClC,2DAA2D;AAC9C,QAAA,YAAY,GAAG,WAAW,CAAC;AAE3B,QAAA,6BAA6B,GAAG,MAAM,CAAC;AAEvC,QAAA,mBAAmB,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACnD,QAAA,eAAe,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAE3D,SAAgB,aAAa;IAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IAC1D,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAClC,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAY,CAAC;AACrE,CAAC;AAEY,QAAA,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,IAAI,CAAC,cAAG,CAAC,UAAU,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialogs.js","sourceRoot":"","sources":["../../src/electron/dialogs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"first-run.js","sourceRoot":"","sources":["../../src/electron/first-run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipc.js","sourceRoot":"","sources":["../../src/electron/ipc.ts"],"names":[],"mappings":";;AAQA,0CAWC;AAnBD;;;GAGG;AACH,uCAA+C;AAC/C,mCAA+C;AAC/C,qCAA+B;AAE/B,SAAgB,eAAe;IAC7B,kBAAO,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,cAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IAEtD,kBAAO,CAAC,MAAM,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,IAAA,mBAAW,GAAE,CAAC,CAAC;IAC1D,kBAAO,CAAC,MAAM,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,IAAA,eAAO,GAAE,CAAC,CAAC,CAAC,uBAAuB;IAEzE,kBAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,GAAW,EAAE,EAAE;QAC5D,MAAM,gBAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,IAAA,YAAG,EAAC,8BAA8B,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/electron/logger.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmDA,kBAkBC;AArED;;;;;;GAMG;AACH,uCAAyB;AAEzB,mCAA+C;AAE/C,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAClC,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,yBAAyB;AAEhD,IAAI,WAAW,GAAG,CAAC,CAAC;AACpB,IAAI,WAAW,GAAG,KAAK,CAAC;AAExB,SAAS,aAAa;IACpB,IAAI,WAAW;QAAE,OAAO;IACxB,WAAW,GAAG,IAAI,CAAC;IACnB,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,IAAA,eAAO,GAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC;YACH,WAAW,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAA,mBAAW,GAAE,CAAC,CAAC,IAAI,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,WAAW,GAAG,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,4BAA4B;QAC5B,WAAW,GAAG,CAAC,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED,SAAS,MAAM;IACb,MAAM,OAAO,GAAG,IAAA,mBAAW,GAAE,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,GAAG,OAAO,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,GAAG,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;YACtB,IAAI,CAAC;gBAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC;QACxD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC;gBAAC,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IACD,IAAI,CAAC;QAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,OAAO,IAAI,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC1E,WAAW,GAAG,CAAC,CAAC;AAClB,CAAC;AAID,SAAgB,GAAG,CAAC,OAAe,EAAE,QAAkB,MAAM;IAC3D,aAAa,EAAE,CAAC;IAChB,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACpC,MAAM,IAAI,GAAG,IAAI,EAAE,MAAM,KAAK,KAAK,OAAO,IAAI,CAAC;IAE/C,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS;QAAE,MAAM,EAAE,CAAC;IAEpD,IAAI,CAAC;QACH,EAAE,CAAC,cAAc,CAAC,IAAA,mBAAW,GAAE,EAAE,IAAI,CAAC,CAAC;QACvC,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC;IAC7B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,0BAA0B;QAC1B,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;SAChD,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;;QACnD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACnC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/electron/main.ts"],"names":[],"mappings":";;AAAA;;;;GAIG;AACH,uCAA8C;AAC9C,qCAA+B;AAC/B,qCAA4E;AAC5E,qCAAyC;AACzC,iCAAwC;AACxC,iCAAiD;AACjD,+BAAwC;AACxC,uCAA8C;AAC9C,2CAAqE;AAErE,IAAA,YAAG,EAAC,qBAAqB,CAAC,CAAC;AAE3B,OAAO;AACP,MAAM,UAAU,GAAG,cAAG,CAAC,yBAAyB,EAAE,CAAC;AACnD,IAAI,CAAC,UAAU,EAAE,CAAC;IAChB,IAAA,YAAG,EAAC,YAAY,CAAC,CAAC;IAClB,cAAG,CAAC,IAAI,EAAE,CAAC;AACb,CAAC;AAED,cAAG,CAAC,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC7B,IAAA,wBAAe,GAAE,CAAC;AACpB,CAAC,CAAC,CAAC;AAEH,cAAG,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;IAC9B,IAAA,YAAG,EAAC,cAAc,CAAC,CAAC;IACpB,IAAA,qBAAe,GAAE,CAAC;IAClB,IAAA,2BAAiB,GAAE,CAAC;IACpB,IAAA,+BAAmB,GAAE,CAAC;IACtB,IAAA,qBAAc,EAAC,sBAAa,CAAC,CAAC;IAC9B,IAAA,iBAAU,EAAC,sBAAa,CAAC,CAAC;IAE1B,MAAM,IAAA,yBAAgB,GAAE,CAAC;IAEzB,0BAA0B;IAC1B,MAAM,GAAG,GAAG,IAAA,sBAAa,GAAE,CAAC;IAC5B,IAAI,GAAG,EAAE,CAAC;QACR,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,EAAE;YAC3C,KAAK,IAAA,6BAAiB,EAAC,GAAG,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,cAAG,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE;QAC5B,8BAA8B;QAC9B,IAAI,wBAAa,CAAC,aAAa,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAA,yBAAgB,GAAE,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,cAAG,CAAC,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAC/B,IAAA,YAAG,EAAC,SAAS,CAAC,CAAC;IACf,IAAA,kBAAW,GAAE,CAAC;IACd,IAAA,sBAAa,GAAE,CAAC;IAChB,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,cAAG,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,cAAG,CAAC,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;IACzB,IAAA,YAAG,EAAC,QAAQ,CAAC,CAAC;IACd,IAAA,kBAAW,GAAE,CAAC;IACd,IAAA,sBAAa,GAAE,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,IAAA,YAAG,EAAC,UAAU,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu.js","sourceRoot":"","sources":["../../src/electron/menu.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/electron/paths.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,0BAEC;AAED,kCAEC;AAED,0BAEC;AAED,kCAEC;AAED,4CAEC;AAGD,8CAKC;AAtCD;;;;;;;GAOG;AACH,uCAA+B;AAC/B,uCAAyB;AACzB,2CAA6B;AAE7B,SAAgB,OAAO;IACrB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AAC7C,CAAC;AAED,SAAgB,WAAW;IACzB,OAAO,cAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACjC,CAAC;AAED,SAAgB,OAAO;IACrB,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED,SAAgB,WAAW;IACzB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC;AAC7C,CAAC;AAED,SAAgB,gBAAgB;IAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,yBAAyB,CAAC,CAAC;AAC7D,CAAC;AAED,wEAAwE;AACxE,SAAgB,iBAAiB;IAC/B,IAAI,cAAG,CAAC,UAAU,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,cAAG,CAAC,UAAU,EAAE,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/electron/server.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,kDAEC;AAED,sCAMC;AAED,wCA2DC;AApFD;;;;;GAKG;AACH,iDAAoD;AACpD,2CAA6B;AAC7B,qCAA+B;AAC/B,qCAAuE;AAEvE,IAAI,gBAAgB,GAAwB,IAAI,CAAC;AAEjD,SAAgB,mBAAmB;IACjC,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,SAAgB,aAAa;IAC3B,IAAI,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;QACjD,IAAA,YAAG,EAAC,cAAc,CAAC,CAAC;QACpB,gBAAgB,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;IACD,gBAAgB,GAAG,IAAI,CAAC;AAC1B,CAAC;AAED,SAAgB,cAAc,CAAC,aAAqB;IAClD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;QACpE,IAAA,YAAG,EAAC,iBAAiB,YAAY,EAAE,CAAC,CAAC;QAErC,uEAAuE;QACvE,8DAA8D;QAC9D,gBAAgB,GAAG,IAAA,qBAAK,EAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE;YACzD,GAAG,EAAE;gBACH,GAAG,OAAO,CAAC,GAAG;gBACd,oBAAoB,EAAE,GAAG;gBACzB,QAAQ,EAAE,YAAY;gBACtB,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC;gBAC3B,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC;gBACpC,YAAY,EAAE,qBAAY;aAC3B;YACD,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC;QAEH,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,IAAI,UAAU,GAAG,EAAE,CAAC;QAEpB,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACnD,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;YAC5C,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;YAClD,IAAI,CAAC,EAAE,CAAC;gBACN,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACtC,IAAA,YAAG,EAAC,mBAAmB,UAAU,eAAe,aAAa,GAAG,CAAC,CAAC;gBAClE,OAAO,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;YAChC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACnD,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;YAChD,IAAA,YAAG,EAAC,sBAAsB,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEH,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACnC,IAAA,YAAG,EAAC,gBAAgB,GAAG,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;YAC5C,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YAC3C,IAAA,YAAG,EAAC,mBAAmB,IAAI,WAAW,MAAM,EAAE,CAAC,CAAC;YAChD,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAChC,IAAA,YAAG,EAAC,mBAAmB,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YAC9D,CAAC;YACD,gBAAgB,GAAG,IAAI,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;gBACjD,IAAA,YAAG,EAAC,gBAAgB,sCAA6B,KAAK,EAAE,OAAO,CAAC,CAAC;gBACjE,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;YAClD,CAAC;QACH,CAAC,EAAE,sCAA6B,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tray.js","sourceRoot":"","sources":["../../src/electron/tray.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCA,gCAuCC;AAED,kCAKC;AA/ED;;;;;;;;GAQG;AACH,uCAAuE;AACvE,2CAA6B;AAC7B,uCAAyB;AACzB,mCAA4C;AAC5C,qCAA+B;AAI/B,IAAI,YAAY,GAAgB,IAAI,CAAC;AAErC,SAAS,YAAY;IACnB,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC;IAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC;IACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAA,yBAAiB,GAAE,EAAE,IAAI,CAAC,CAAC;IAEtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,IAAA,YAAG,EAAC,WAAW,QAAQ,WAAW,EAAE,MAAM,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,GAAG,GAAG,sBAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,KAAK;QAAE,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACtC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAgB,UAAU,CAAC,aAAwB;IACjD,IAAI,YAAY;QAAE,OAAO;IAEzB,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,IAAI,CAAC,IAAI;QAAE,OAAO;IAElB,YAAY,GAAG,IAAI,eAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,YAAY,CAAC,UAAU,CAAC,kBAAkB,cAAG,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAE9D,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,MAAM,CAAC,GAAG,aAAa,EAAE,CAAC;QAC1B,IAAI,CAAC,CAAC;YAAE,OAAO;QACf,IAAI,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC;YACnC,CAAC,CAAC,IAAI,EAAE,CAAC;QACX,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,CAAC,WAAW,EAAE;gBAAE,CAAC,CAAC,OAAO,EAAE,CAAC;YACjC,CAAC,CAAC,IAAI,EAAE,CAAC;YACT,CAAC,CAAC,KAAK,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,eAAI,CAAC,iBAAiB,CAAC;QAClC,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE;QAC/C,EAAE,IAAI,EAAE,WAAW,EAAE;QACrB;YACE,KAAK,EAAE,MAAM;YACb,KAAK,EAAE,GAAG,EAAE;gBACV,IAAA,YAAG,EAAC,WAAW,CAAC,CAAC;gBACjB,cAAG,CAAC,IAAI,EAAE,CAAC;YACb,CAAC;SACF;KACF,CAAC,CAAC;IAEH,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAElC,6CAA6C;IAC7C,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC;AAED,SAAgB,WAAW;IACzB,IAAI,YAAY,EAAE,CAAC;QACjB,YAAY,CAAC,OAAO,EAAE,CAAC;QACvB,YAAY,GAAG,IAAI,CAAC;IACtB,CAAC;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"window.js","sourceRoot":"","sources":["../../src/electron/window.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,sCAEC;AAED,4CAmDC;AAED,0CAKC;AAzED;;GAEG;AACH,uCAAgD;AAChD,2CAA6B;AAC7B,qCAA+B;AAC/B,qCAAsF;AACtF,qCAA0C;AAE1C,IAAI,UAAU,GAAyB,IAAI,CAAC;AAE5C,SAAgB,aAAa;IAC3B,OAAO,UAAU,CAAC;AACpB,CAAC;AAEM,KAAK,UAAU,gBAAgB;IACpC,IAAA,YAAG,EAAC,UAAU,CAAC,CAAC;IAChB,UAAU,GAAG,IAAI,wBAAa,CAAC;QAC7B,KAAK,EAAE,4BAAmB,CAAC,KAAK;QAChC,MAAM,EAAE,4BAAmB,CAAC,MAAM;QAClC,QAAQ,EAAE,wBAAe,CAAC,KAAK;QAC/B,SAAS,EAAE,wBAAe,CAAC,MAAM;QACjC,KAAK,EAAE,eAAe;QACtB,cAAc,EAAE;YACd,eAAe,EAAE,KAAK;YACtB,gBAAgB,EAAE,IAAI;YACtB,OAAO,EAAE,KAAK,EAAE,sCAAsC;YACtD,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,qBAAqB,CAAC;SAC3D;QACD,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;IAEH,IAAI,cAAK,EAAE,CAAC;QACV,+DAA+D;QAC/D,MAAM,IAAI,GAAG,IAAA,sBAAa,GAAE,CAAC;QAC7B,UAAU,CAAC,OAAO,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;QAC/C,UAAU,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,IAAA,YAAG,EAAC,iBAAiB,CAAC,CAAC;YACvB,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,IAAA,uBAAc,EAAC,IAAA,sBAAa,GAAE,CAAC,CAAC;YACnE,UAAU,CAAC,OAAO,CAAC,oBAAoB,UAAU,EAAE,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAA,YAAG,EAAC,YAAa,GAAa,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;YACnD,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,UAAU,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE;QACpC,UAAU,EAAE,IAAI,EAAE,CAAC;QACnB,IAAA,YAAG,EAAC,OAAO,CAAC,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,2BAA2B;IAC3B,UAAU,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;QACtD,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5D,gBAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QAC3B,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,IAAA,YAAG,EAAC,QAAQ,CAAC,CAAC;AAChB,CAAC;AAED,SAAgB,eAAe;IAC7B,IAAI,CAAC,UAAU;QAAE,OAAO;IACxB,IAAI,UAAU,CAAC,WAAW,EAAE;QAAE,UAAU,CAAC,OAAO,EAAE,CAAC;IACnD,UAAU,CAAC,IAAI,EAAE,CAAC;IAClB,UAAU,CAAC,KAAK,EAAE,CAAC;AACrB,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Electron Preload 脚本
3
+ * 在渲染进程和主进程之间建立安全的通信桥梁
4
+ * contextIsolation: true, nodeIntegration: false — 只能通过这里暴露的 API 触达主进程
5
+ */
6
+ import { contextBridge, ipcRenderer } from 'electron';
7
+ contextBridge.exposeInMainWorld('electronAPI', {
8
+ // === 原有 (保留) ===
9
+ getVersion: () => ipcRenderer.invoke('get-version'),
10
+ getUserDataPath: () => ipcRenderer.invoke('get-user-data-path'),
11
+ openExternal: (url) => ipcRenderer.invoke('open-external', url),
12
+ // === 新增: 数据目录 ===
13
+ getDataPath: () => ipcRenderer.invoke('get-data-path'),
14
+ // === 新增: 文件 dialog ===
15
+ openFile: (opts) => ipcRenderer.invoke('dialog:open-file', opts),
16
+ saveFile: (opts) => ipcRenderer.invoke('dialog:save-file', opts),
17
+ openDirectory: (opts) => ipcRenderer.invoke('dialog:open-directory', opts),
18
+ // === 新增: 文件系统 (限大小, 主进程守卫) ===
19
+ readTextFile: (opts) => ipcRenderer.invoke('fs:read-text-file', opts),
20
+ writeTextFile: (opts) => ipcRenderer.invoke('fs:write-text-file', opts),
21
+ pathExists: (opts) => ipcRenderer.invoke('fs:path-exists', opts),
22
+ // === 新增: 首启引导 ===
23
+ getFirstRunSeen: () => ipcRenderer.invoke('first-run:seen'),
24
+ markFirstRunSeen: () => ipcRenderer.invoke('first-run:mark-seen'),
25
+ getDataPathSync: () => ipcRenderer.invoke('first-run:data-dir'),
26
+ getLogsPathSync: () => ipcRenderer.invoke('first-run:logs-dir'),
27
+ // === 元数据 ===
28
+ platform: process.platform,
29
+ });
@@ -0,0 +1 @@
1
+ {"version":3,"file":"electron-preload.js","sourceRoot":"","sources":["../src/electron-preload.ts"],"names":[],"mappings":";;AAAA;;;;GAIG;AACH,uCAAwE;AAIxE,wBAAa,CAAC,iBAAiB,CAAC,aAAa,EAAE;IAC7C,kBAAkB;IAClB,UAAU,EAAE,GAAG,EAAE,CAAC,sBAAW,CAAC,MAAM,CAAC,aAAa,CAAC;IACnD,eAAe,EAAE,GAAG,EAAE,CAAC,sBAAW,CAAC,MAAM,CAAC,oBAAoB,CAAC;IAC/D,YAAY,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,sBAAW,CAAC,MAAM,CAAC,eAAe,EAAE,GAAG,CAAC;IAEvE,mBAAmB;IACnB,WAAW,EAAE,GAAG,EAAE,CAAC,sBAAW,CAAC,MAAM,CAAC,eAAe,CAAC;IAEtD,wBAAwB;IACxB,QAAQ,EAAE,CAAC,IAAU,EAAE,EAAE,CAAC,sBAAW,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC;IACtE,QAAQ,EAAE,CAAC,IAAU,EAAE,EAAE,CAAC,sBAAW,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC;IACtE,aAAa,EAAE,CAAC,IAAU,EAAE,EAAE,CAAC,sBAAW,CAAC,MAAM,CAAC,uBAAuB,EAAE,IAAI,CAAC;IAEhF,gCAAgC;IAChC,YAAY,EAAE,CAAC,IAAyC,EAAE,EAAE,CAC1D,sBAAW,CAAC,MAAM,CAAC,mBAAmB,EAAE,IAAI,CAAC;IAC/C,aAAa,EAAE,CAAC,IAA0D,EAAE,EAAE,CAC5E,sBAAW,CAAC,MAAM,CAAC,oBAAoB,EAAE,IAAI,CAAC;IAChD,UAAU,EAAE,CAAC,IAAsB,EAAE,EAAE,CAAC,sBAAW,CAAC,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC;IAElF,mBAAmB;IACnB,eAAe,EAAE,GAAG,EAAE,CAAC,sBAAW,CAAC,MAAM,CAAC,gBAAgB,CAAC;IAC3D,gBAAgB,EAAE,GAAG,EAAE,CAAC,sBAAW,CAAC,MAAM,CAAC,qBAAqB,CAAC;IACjE,eAAe,EAAE,GAAG,EAAE,CAAC,sBAAW,CAAC,MAAM,CAAC,oBAAoB,CAAC;IAC/D,eAAe,EAAE,GAAG,EAAE,CAAC,sBAAW,CAAC,MAAM,CAAC,oBAAoB,CAAC;IAE/D,cAAc;IACd,QAAQ,EAAE,OAAO,CAAC,QAAQ;CAC3B,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Electron 入口 shim — 真正逻辑在 src/electron/main.ts
3
+ * (保留 src/electron.ts 平铺入口, 不动 package.json 的 dist/electron.js 解析)
4
+ */
5
+ import './electron/main';
@@ -0,0 +1 @@
1
+ {"version":3,"file":"electron.js","sourceRoot":"","sources":["../src/electron.ts"],"names":[],"mappings":";;AAAA;;;GAGG;AACH,2BAAyB"}
@@ -11,7 +11,7 @@ export const DEFAULT_PROVIDER_CONFIGS = {
11
11
  enabled: false,
12
12
  apiKey: '',
13
13
  baseUrl: 'https://api.openai.com/v1',
14
- model: 'gpt-4',
14
+ model: 'gpt-5.5',
15
15
  temperature: 0.7,
16
16
  maxTokens: 4096,
17
17
  requiresApiKey: true
@@ -20,7 +20,7 @@ export const DEFAULT_PROVIDER_CONFIGS = {
20
20
  enabled: false,
21
21
  apiKey: '',
22
22
  baseUrl: 'https://api.anthropic.com/v1',
23
- model: 'claude-3-5-sonnet-20241022',
23
+ model: 'claude-sonnet-4-5-20250929',
24
24
  temperature: 0.7,
25
25
  maxTokens: 4096,
26
26
  requiresApiKey: true
@@ -29,7 +29,7 @@ export const DEFAULT_PROVIDER_CONFIGS = {
29
29
  enabled: false,
30
30
  apiKey: '',
31
31
  baseUrl: 'https://openrouter.ai/api/v1',
32
- model: 'anthropic/claude-3.5-sonnet',
32
+ model: 'anthropic/claude-sonnet-4.5',
33
33
  temperature: 0.7,
34
34
  maxTokens: 4096,
35
35
  requiresApiKey: true
@@ -38,7 +38,7 @@ export const DEFAULT_PROVIDER_CONFIGS = {
38
38
  enabled: false,
39
39
  apiKey: '',
40
40
  baseUrl: 'https://generativelanguage.googleapis.com/v1beta',
41
- model: 'gemini-2.0-flash',
41
+ model: 'gemini-3.5-pro',
42
42
  temperature: 0.7,
43
43
  maxTokens: 4096,
44
44
  requiresApiKey: true
@@ -97,6 +97,16 @@ export const DEFAULT_PROVIDER_CONFIGS = {
97
97
  maxTokens: 4096,
98
98
  requiresApiKey: true
99
99
  },
100
+ // 小米 MiMo (openai 兼容) — 默认 base URL https://api.xiaomi.com/v1
101
+ mimo: {
102
+ enabled: false,
103
+ apiKey: '',
104
+ baseUrl: 'https://api.xiaomi.com/v1',
105
+ model: 'mimo-v2.5-pro',
106
+ temperature: 0.7,
107
+ maxTokens: 4096,
108
+ requiresApiKey: true
109
+ },
100
110
  local: {
101
111
  enabled: false,
102
112
  apiKey: '',
@@ -108,10 +118,10 @@ export const DEFAULT_PROVIDER_CONFIGS = {
108
118
  }
109
119
  };
110
120
  export const PROVIDER_INFO = {
111
- openai: { name: 'OpenAI', description: 'GPT-4, GPT-3.5 等模型', requiresApiKey: true, models: ['gpt-4', 'gpt-4o', 'gpt-4o-mini', 'gpt-4-turbo', 'gpt-3.5-turbo'] },
112
- anthropic: { name: 'Anthropic', description: 'Claude 3.5 系列模型', requiresApiKey: true, models: ['claude-3-5-sonnet-20241022', 'claude-3-5-haiku-20241022', 'claude-3-opus-20240229'] },
113
- openrouter: { name: 'OpenRouter', description: '聚合多个 AI 供应商', requiresApiKey: true },
114
- gemini: { name: 'Google Gemini', description: 'Gemini 系列模型', requiresApiKey: true, models: ['gemini-2.0-flash', 'gemini-1.5-pro', 'gemini-1.5-flash'] },
121
+ openai: { name: 'OpenAI', description: 'GPT-4, GPT-3.5 等模型', requiresApiKey: true, models: ['gpt-4.1', 'gpt-4o', 'gpt-4o-mini', 'gpt-4-turbo', 'gpt-3.5-turbo'] },
122
+ anthropic: { name: 'Anthropic', description: 'Claude 3.5+ 系列模型', requiresApiKey: true, models: ['claude-sonnet-4-5-20250929', 'claude-3-5-sonnet-20241022', 'claude-3-5-haiku-20241022', 'claude-3-opus-20240229'] },
123
+ openrouter: { name: 'OpenRouter', description: '聚合多个 AI 供应商', requiresApiKey: true, models: ['anthropic/claude-sonnet-4.5', 'anthropic/claude-3.5-sonnet'] },
124
+ gemini: { name: 'Google Gemini', description: 'Gemini 系列模型', requiresApiKey: true, models: ['gemini-2.5-pro', 'gemini-2.0-flash', 'gemini-1.5-pro', 'gemini-1.5-flash'] },
115
125
  ollama: { name: 'Ollama', description: '本地 LLM 运行框架', requiresApiKey: false },
116
126
  minimax: {
117
127
  name: 'MiniMax',
@@ -123,6 +133,7 @@ export const PROVIDER_INFO = {
123
133
  kimi: { name: 'Kimi (月之暗面)', description: 'Moonshot 长上下文模型', requiresApiKey: true, models: ['moonshot-v1-8k', 'moonshot-v1-32k', 'moonshot-v1-128k'] },
124
134
  glm: { name: 'GLM (智谱)', description: '智谱 ChatGLM 系列模型', requiresApiKey: true, models: ['glm-4-flash', 'glm-4', 'glm-4-plus', 'glm-4-air', 'glm-4-airx'] },
125
135
  qwen: { name: 'Qwen (通义千问)', description: '阿里云通义千问系列', requiresApiKey: true, models: ['qwen-plus', 'qwen-max', 'qwen-turbo', 'qwen-long'] },
136
+ mimo: { name: 'MiMo (小米)', description: '小米 MiMo V2 系列 (openai 兼容)', requiresApiKey: true, models: ['mimo-v2.5-pro', 'mimo-v2-pro', 'mimo-v2-omni', 'mimo-v2-flash', 'mimo-v2.5-pro-ultraspeed'] },
126
137
  local: { name: '本地模型', description: '本地部署的模型服务', requiresApiKey: false }
127
138
  };
128
139
  function getDefaultConfig() {
@@ -154,6 +165,9 @@ function getDefaultConfig() {
154
165
  if (process.env.QWEN_API_KEY || process.env.DASHSCOPE_API_KEY) {
155
166
  envConfigs.qwen = { ...DEFAULT_PROVIDER_CONFIGS.qwen, enabled: true, apiKey: process.env.QWEN_API_KEY || process.env.DASHSCOPE_API_KEY || '' };
156
167
  }
168
+ if (process.env.MIMO_API_KEY) {
169
+ envConfigs.mimo = { ...DEFAULT_PROVIDER_CONFIGS.mimo, enabled: true, apiKey: process.env.MIMO_API_KEY };
170
+ }
157
171
  if (process.env.OLLAMA_BASE_URL) {
158
172
  envConfigs.ollama = { ...DEFAULT_PROVIDER_CONFIGS.ollama, enabled: true, baseUrl: process.env.OLLAMA_BASE_URL };
159
173
  }
@@ -176,6 +190,8 @@ function getDefaultConfig() {
176
190
  activeProvider = 'glm';
177
191
  else if (process.env.QWEN_API_KEY || process.env.DASHSCOPE_API_KEY)
178
192
  activeProvider = 'qwen';
193
+ else if (process.env.MIMO_API_KEY)
194
+ activeProvider = 'mimo';
179
195
  else if (process.env.OLLAMA_BASE_URL)
180
196
  activeProvider = 'ollama';
181
197
  const providers = { ...DEFAULT_PROVIDER_CONFIGS };
package/dist/llm/pi-ai.js CHANGED
@@ -94,7 +94,7 @@ export class PiAIModel {
94
94
  maxTokens: 16384, // 2026-06-17: 提到 16384 — agent 注入 16K+ system prompt + 8K tool defs 时, 8K 撞上限返回空 content (见 memory: bolloon-llm-empty-large-prompt)
95
95
  signal,
96
96
  });
97
- return { reply: response };
97
+ return { reply: response.reply, toolCalls: response.toolCalls };
98
98
  }
99
99
  catch (error) {
100
100
  // abort 不当作错误, 透传一个 sentinel 让上层能识别
@@ -122,8 +122,8 @@ export class PiAIModel {
122
122
  ],
123
123
  temperature: 0.7
124
124
  });
125
- const qualityScore = this.estimateQuality(text, response);
126
- return { summary: response, qualityScore };
125
+ const qualityScore = this.estimateQuality(text, response.reply);
126
+ return { summary: response.reply, qualityScore };
127
127
  }
128
128
  catch (error) {
129
129
  console.error('PiAI summarize error:', error);
@@ -143,7 +143,7 @@ export class PiAIModel {
143
143
  ],
144
144
  temperature: 0.8
145
145
  });
146
- return response;
146
+ return response.reply;
147
147
  }
148
148
  catch (error) {
149
149
  console.error('PiAI improve error:', error);
@@ -191,6 +191,7 @@ export class PiAIModel {
191
191
  case 'kimi':
192
192
  case 'glm':
193
193
  case 'qwen':
194
+ case 'mimo':
194
195
  return this.callOpenAI(finalMessages, temperature, maxTokens, signal);
195
196
  case 'anthropic':
196
197
  return this.callAnthropic(finalMessages, temperature, maxTokens, signal);
@@ -221,6 +222,7 @@ export class PiAIModel {
221
222
  kimi: process.env.KIMI_API_KEY || process.env.MOONSHOT_API_KEY || '',
222
223
  glm: process.env.GLM_API_KEY || process.env.ZHIPU_API_KEY || '',
223
224
  qwen: process.env.QWEN_API_KEY || process.env.DASHSCOPE_API_KEY || '',
225
+ mimo: process.env.MIMO_API_KEY || '',
224
226
  local: ''
225
227
  };
226
228
  return envVars[this.provider] || '';
@@ -241,22 +243,26 @@ export class PiAIModel {
241
243
  kimi: process.env.KIMI_BASE_URL || process.env.MOONSHOT_BASE_URL || 'https://api.moonshot.cn/v1',
242
244
  glm: process.env.GLM_BASE_URL || process.env.ZHIPU_BASE_URL || 'https://open.bigmodel.cn/api/paas/v4',
243
245
  qwen: process.env.QWEN_BASE_URL || process.env.DASHSCOPE_BASE_URL || 'https://dashscope.aliyuncs.com/compatible-mode/v1',
246
+ // 小米 MiMo: 走 OpenAI 兼容 API, 官方 endpoint
247
+ mimo: process.env.MIMO_BASE_URL || 'https://api.xiaomi.com/v1',
244
248
  local: 'http://localhost:11434'
245
249
  };
246
250
  return baseUrls[this.provider];
247
251
  }
248
252
  mapModel() {
249
253
  const modelMap = {
250
- openai: this.config.model || process.env.OPENAI_MODEL || 'gpt-4',
251
- anthropic: this.config.model || 'claude-3-5-sonnet-20241022',
254
+ openai: this.config.model || process.env.OPENAI_MODEL || 'gpt-4.1',
255
+ anthropic: this.config.model || 'claude-sonnet-4-5-20250929',
252
256
  ollama: this.config.model || 'llama3.2',
253
- openrouter: this.config.model || 'anthropic/claude-3.5-sonnet',
254
- gemini: this.config.model || 'gemini-2.0-flash',
257
+ openrouter: this.config.model || 'anthropic/claude-sonnet-4.5',
258
+ gemini: this.config.model || 'gemini-2.5-pro',
255
259
  minimax: this.config.model || process.env.MINIMAX_MODEL || 'MiniMax-M3',
256
260
  deepseek: this.config.model || process.env.DEEPSEEK_MODEL || 'deepseek-chat',
257
261
  kimi: this.config.model || process.env.KIMI_MODEL || process.env.MOONSHOT_MODEL || 'moonshot-v1-8k',
258
262
  glm: this.config.model || process.env.GLM_MODEL || process.env.ZHIPU_MODEL || 'glm-4-flash',
259
263
  qwen: this.config.model || process.env.QWEN_MODEL || process.env.DASHSCOPE_MODEL || 'qwen-plus',
264
+ // 小米 MiMo (openai 兼容) — env override 优先, 默认 mimo-v2.5-pro
265
+ mimo: this.config.model || process.env.MIMO_MODEL || 'mimo-v2.5-pro',
260
266
  local: this.config.model || 'llama3.2'
261
267
  };
262
268
  return modelMap[this.provider];
@@ -290,24 +296,28 @@ export class PiAIModel {
290
296
  signal: this.combinedSignal(signal),
291
297
  });
292
298
  if (!response.ok) {
293
- throw new Error(`OpenAI API error: ${response.status}`);
299
+ const errBody = await response.text().catch(() => '(no body)');
300
+ console.log(`[pi-ai DEBUG] OpenAI 错误 ${response.status}: ${errBody.slice(0, 500)}`);
301
+ console.log(`[pi-ai DEBUG] 请求体: model=${requestBody.model}, messages=${requestBody.messages?.length}, max_tokens=${requestBody.max_tokens}, baseUrl=${this.getBaseUrl()}`);
302
+ throw new Error(`OpenAI API error: ${response.status} ${errBody.slice(0, 300)}`);
294
303
  }
295
304
  const data = await response.json();
296
305
  const choice = data.choices?.[0];
297
306
  const content = choice?.message?.content || '';
307
+ const toolCalls = choice?.message?.tool_calls;
298
308
  lastFinishReason = choice?.finish_reason || '';
299
309
  if (content) {
300
310
  if (lastFinishReason === 'length') {
301
311
  console.warn(`[pi-ai] hit max_tokens ceiling (model=${this.mapModel()}, max_tokens=${maxTokens}) — caller should trim prompt or raise cap`);
302
312
  }
303
- return content;
313
+ return { reply: content, toolCalls: toolCalls && toolCalls.length > 0 ? toolCalls : undefined };
304
314
  }
305
315
  // 空 content: 200 但 content="" → minimax 上游偶发, 退避后重试
306
316
  console.warn(`[pi-ai] attempt ${attempt + 1}/3: 空 content (finish_reason=${lastFinishReason}), 退避 1.5s 重试`);
307
317
  await new Promise(resolve => setTimeout(resolve, 1500));
308
318
  }
309
319
  console.warn(`[pi-ai] 3 次重试都返回空 content (finish_reason=${lastFinishReason})`);
310
- return ''; // 返回空让上层看到 [AI 服务调用失败]
320
+ return { reply: '' }; // 返回空让上层看到 [AI 服务调用失败]
311
321
  }
312
322
  async callAnthropic(messages, temperature, maxTokens, signal) {
313
323
  const apiKey = this.getApiKey();
@@ -337,7 +347,7 @@ export class PiAIModel {
337
347
  throw new Error(`Anthropic API error: ${response.status}`);
338
348
  }
339
349
  const data = await response.json();
340
- return data.content?.[0]?.text || '';
350
+ return { reply: data.content?.[0]?.text || '' };
341
351
  }
342
352
  async callOllama(messages, temperature, signal) {
343
353
  const response = await fetch(`${this.getBaseUrl()}/api/chat`, {
@@ -357,7 +367,7 @@ export class PiAIModel {
357
367
  throw new Error(`Ollama API error: ${response.status}`);
358
368
  }
359
369
  const data = await response.json();
360
- return data.message?.content || '';
370
+ return { reply: data.message?.content || '' };
361
371
  }
362
372
  async callOpenRouter(messages, temperature, maxTokens, signal) {
363
373
  const apiKey = this.getApiKey();
@@ -384,7 +394,7 @@ export class PiAIModel {
384
394
  throw new Error(`OpenRouter API error: ${response.status}`);
385
395
  }
386
396
  const data = await response.json();
387
- return data.choices?.[0]?.message?.content || '';
397
+ return { reply: data.choices?.[0]?.message?.content || '' };
388
398
  }
389
399
  async callGemini(messages, temperature, maxTokens, signal) {
390
400
  const apiKey = this.getApiKey();
@@ -417,7 +427,7 @@ export class PiAIModel {
417
427
  throw new Error(`Gemini API error: ${response.status}`);
418
428
  }
419
429
  const data = await response.json();
420
- return data.candidates?.[0]?.content?.parts?.[0]?.text || '';
430
+ return { reply: data.candidates?.[0]?.content?.parts?.[0]?.text || '' };
421
431
  }
422
432
  async callLocal(messages, temperature, signal) {
423
433
  return this.callOllama(messages, temperature, signal);
@@ -565,20 +575,24 @@ function detectProvider() {
565
575
  return 'glm';
566
576
  if (process.env.QWEN_API_KEY || process.env.DASHSCOPE_API_KEY)
567
577
  return 'qwen';
578
+ if (process.env.MIMO_API_KEY)
579
+ return 'mimo';
568
580
  return 'openai';
569
581
  }
570
582
  function detectModel(provider) {
571
583
  const defaults = {
572
- openai: 'gpt-4',
573
- anthropic: 'claude-3-5-sonnet-20241022',
584
+ openai: 'gpt-4.1',
585
+ anthropic: 'claude-sonnet-4-5-20250929',
574
586
  ollama: 'llama3.2',
575
- openrouter: 'anthropic/claude-3.5-sonnet',
576
- gemini: 'gemini-2.0-flash',
587
+ openrouter: 'anthropic/claude-sonnet-4.5',
588
+ gemini: 'gemini-2.5-pro',
577
589
  minimax: 'MiniMax-M3',
578
590
  deepseek: 'deepseek-chat',
579
591
  kimi: 'moonshot-v1-8k',
580
592
  glm: 'glm-4-flash',
581
593
  qwen: 'qwen-plus',
594
+ // 小米 MiMo 默认走最新旗舰版 (v2.5-Pro); 2026-06 当前公开版
595
+ mimo: 'mimo-v2.5-pro',
582
596
  local: 'llama3.2'
583
597
  };
584
598
  return defaults[provider];
@@ -1480,8 +1480,11 @@ export async function createWebServer(port = 3000, options = {}) {
1480
1480
  runState.running = true;
1481
1481
  runState.abortController = new AbortController();
1482
1482
  broadcastQueueUpdate(channelId);
1483
+ // 2026-07-01 (v0.2.5): hoist sessionKey 到 try 外, 让 finally 块的 saveCurrentSession 能用
1484
+ const sessionKey = `${channelId}:${currentSessionId}`;
1485
+ let agent = null;
1483
1486
  try {
1484
- const agent = await getAgentForChannel(channelId, realChannelDid, realChannelName, realChannelDidDoc);
1487
+ agent = await getAgentForChannel(channelId, realChannelDid, realChannelName, realChannelDidDoc);
1485
1488
  let fullResponse = '';
1486
1489
  // P0.5: 注入门回传的 usedIds, 落 session message metadata, UI 可查
1487
1490
  let usedJudgmentIds = [];
@@ -1816,6 +1819,18 @@ export async function createWebServer(port = 3000, options = {}) {
1816
1819
  runState.running = false;
1817
1820
  runState.abortController = null;
1818
1821
  broadcastQueueUpdate(channelId);
1822
+ // 2026-07-01 (v0.2.5): 持久化当前 messageHistory — 让 web 用户跨刷新保留对话.
1823
+ // saveCurrentSession 失败静默, 不阻塞 channel 状态清理.
1824
+ // saveCurrentSession 内部走 SessionStore (默认 ~/.bolloon/sessions/cache/<sessionKey>.json).
1825
+ // agent 可能在 try 抛错后仍为 null (getAgentForChannel 失败), null-guard 跳过 save.
1826
+ if (agent) {
1827
+ try {
1828
+ await agent.saveCurrentSession(sessionKey);
1829
+ }
1830
+ catch (saveErr) {
1831
+ console.warn(`[web] saveCurrentSession failed (non-fatal): ${saveErr?.message?.slice(0, 100)}`);
1832
+ }
1833
+ }
1819
1834
  }
1820
1835
  });
1821
1836
  // ---------- 频道元数据后台修复队列 ----------