@bolloon/bolloon-agent 0.1.1 → 0.1.3

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 (200) hide show
  1. package/bin/bolloon-cli.cjs +165 -0
  2. package/bin/bolloon-daemon.sh +207 -0
  3. package/bin/bolloon.cmd +11 -0
  4. package/dist/agents/constraint-layer.js +10 -15
  5. package/dist/agents/pi-sdk.js +433 -106
  6. package/dist/agents/protocol.js +82 -1
  7. package/dist/agents/subagent-manager.js +2 -2
  8. package/dist/agents/workflow-engine.js +15 -20
  9. package/dist/agents/workflow-pivot-loop.js +541 -0
  10. package/dist/bollharness/src/index.js +5 -0
  11. package/dist/bollharness/src/scripts/checks/check_adr_plan_numbering.js +6 -0
  12. package/dist/bollharness/src/scripts/checks/check_api_types.js +45 -0
  13. package/dist/bollharness/src/scripts/checks/check_artifact_link.js +146 -0
  14. package/dist/bollharness/src/scripts/checks/check_bridge_deps.js +6 -0
  15. package/dist/bollharness/src/scripts/checks/check_bugfix_binding.js +6 -0
  16. package/dist/bollharness/src/scripts/checks/check_bugfix_binding_ci.js +6 -0
  17. package/dist/bollharness/src/scripts/checks/check_doc_file_references.js +6 -0
  18. package/dist/bollharness/src/scripts/checks/check_doc_freshness.js +135 -0
  19. package/dist/bollharness/src/scripts/checks/check_doc_links.js +31 -0
  20. package/dist/bollharness/src/scripts/checks/check_file_existence_claims.js +6 -0
  21. package/dist/bollharness/src/scripts/checks/check_fragment_integrity.js +34 -0
  22. package/dist/bollharness/src/scripts/checks/check_hook_installed.js +63 -0
  23. package/dist/bollharness/src/scripts/checks/check_issue_closure.js +41 -0
  24. package/dist/bollharness/src/scripts/checks/check_mcp_parity.js +6 -0
  25. package/dist/bollharness/src/scripts/checks/check_security.js +48 -0
  26. package/dist/bollharness/src/scripts/checks/check_skill_parity.js +6 -0
  27. package/dist/bollharness/src/scripts/checks/check_versions.js +6 -0
  28. package/dist/bollharness/src/scripts/checks/finding.js +13 -0
  29. package/dist/bollharness/src/scripts/checks/next_decision_number.js +20 -0
  30. package/dist/bollharness/src/scripts/checks/regenerate_magic_docs.js +6 -0
  31. package/dist/bollharness/src/scripts/ci/detect_rebaseline_triggers.js +8 -0
  32. package/dist/bollharness/src/scripts/ci/scan_subprocess_cfg.js +8 -0
  33. package/dist/bollharness/src/scripts/ci/scan_verify_artifacts.js +8 -0
  34. package/dist/bollharness/src/scripts/ci/scan_yaml_schema.js +8 -0
  35. package/dist/bollharness/src/scripts/context_router.js +67 -0
  36. package/dist/bollharness/src/scripts/deploy-guard.js +157 -0
  37. package/dist/bollharness/src/scripts/guard-feedback.js +192 -0
  38. package/dist/bollharness/src/scripts/guard_router.js +158 -0
  39. package/dist/bollharness/src/scripts/hooks/_hook_output.js +6 -0
  40. package/dist/bollharness/src/scripts/hooks/auto-python3.js +6 -0
  41. package/dist/bollharness/src/scripts/hooks/deploy-progress-on-session-end.js +6 -0
  42. package/dist/bollharness/src/scripts/hooks/failure-analyzer.js +6 -0
  43. package/dist/bollharness/src/scripts/hooks/gate-judgment-inject.js +92 -0
  44. package/dist/bollharness/src/scripts/hooks/gate-transition-judgment.js +63 -0
  45. package/dist/bollharness/src/scripts/hooks/inbox-ack.js +6 -0
  46. package/dist/bollharness/src/scripts/hooks/inbox-inject-on-start.js +6 -0
  47. package/dist/bollharness/src/scripts/hooks/inbox-validate.js +6 -0
  48. package/dist/bollharness/src/scripts/hooks/inbox-write-ledger.js +6 -0
  49. package/dist/bollharness/src/scripts/hooks/initializer-agent.js +6 -0
  50. package/dist/bollharness/src/scripts/hooks/loop-detection.js +73 -0
  51. package/dist/bollharness/src/scripts/hooks/owner-guard.js +6 -0
  52. package/dist/bollharness/src/scripts/hooks/precompact.js +6 -0
  53. package/dist/bollharness/src/scripts/hooks/review-agent-gatekeeper.js +6 -0
  54. package/dist/bollharness/src/scripts/hooks/risk-tracker.js +108 -0
  55. package/dist/bollharness/src/scripts/hooks/sanitize-on-read.js +6 -0
  56. package/dist/bollharness/src/scripts/hooks/session-reflection.js +7 -0
  57. package/dist/bollharness/src/scripts/hooks/session-start-magic-docs.js +7 -0
  58. package/dist/bollharness/src/scripts/hooks/session-start-reset-risk.js +7 -0
  59. package/dist/bollharness/src/scripts/hooks/session-start-toolkit-reminder.js +7 -0
  60. package/dist/bollharness/src/scripts/hooks/stop-evaluator.js +157 -0
  61. package/dist/bollharness/src/scripts/hooks/tool-call-counter.js +6 -0
  62. package/dist/bollharness/src/scripts/hooks/trace-analyzer.js +10 -0
  63. package/dist/bollharness/src/scripts/install/install-trust-token.js +7 -0
  64. package/dist/bollharness/src/scripts/install/multi_project_registry.js +9 -0
  65. package/dist/bollharness/src/scripts/install/phase2_auto.js +21 -0
  66. package/dist/bollharness/src/scripts/install/pre_commit_installer.js +6 -0
  67. package/dist/bollharness/src/scripts/install/tier_selector.js +7 -0
  68. package/dist/bollharness/src/scripts/install/transcript_miner.js +7 -0
  69. package/dist/bollharness/src/scripts/lib/claim_patterns.js +10 -0
  70. package/dist/bollharness/src/scripts/lib/sanitize_patterns.js +12 -0
  71. package/dist/bollharness/src/scripts/sanitize.js +6 -0
  72. package/dist/bollharness-integration/channel-judgment-engine.js +530 -0
  73. package/dist/bollharness-integration/context-chain-router.js +383 -0
  74. package/dist/bollharness-integration/context-router-judgment.js +13 -21
  75. package/dist/bollharness-integration/context-router.js +22 -64
  76. package/dist/bollharness-integration/gate-state-machine.js +14 -19
  77. package/dist/bollharness-integration/gate-transition-hooks.js +16 -61
  78. package/dist/bollharness-integration/guard-checker.js +21 -68
  79. package/dist/bollharness-integration/index.js +14 -124
  80. package/dist/bollharness-integration/integration.js +13 -20
  81. package/dist/bollharness-integration/llm-judgment-engine.js +569 -0
  82. package/dist/bollharness-integration/skill-adapter.js +18 -64
  83. package/dist/cli-entry.js +261 -0
  84. package/dist/constraint-runtime/src/commands.js +17 -7
  85. package/dist/constraint-runtime/src/constraint/budget.js +1 -6
  86. package/dist/constraint-runtime/src/constraint/permission.js +1 -6
  87. package/dist/constraint-runtime/src/models.js +1 -3
  88. package/dist/constraint-runtime/src/tools.js +17 -7
  89. package/dist/constraints/index.js +1 -7
  90. package/dist/documents/reader.js +8 -49
  91. package/dist/heartbeat/DaemonManager.js +242 -0
  92. package/dist/heartbeat/HealthMonitor.js +285 -0
  93. package/dist/heartbeat/StartupVerifier.js +205 -0
  94. package/dist/heartbeat/Watchdog.js +168 -0
  95. package/dist/heartbeat/index.js +84 -0
  96. package/dist/heartbeat/types.js +5 -0
  97. package/dist/index.js +381 -28
  98. package/dist/llm/config-store.js +31 -57
  99. package/dist/llm/llm-judgment-client.js +389 -0
  100. package/dist/llm/pi-ai.js +9 -52
  101. package/dist/network/agent-network.js +46 -90
  102. package/dist/network/hybrid-messenger.js +125 -0
  103. package/dist/network/iroh-bootstrap.js +38 -0
  104. package/dist/network/iroh-discovery.js +145 -0
  105. package/dist/network/iroh-integration.js +9 -16
  106. package/dist/network/iroh-transport.js +10 -48
  107. package/dist/network/p2p.js +23 -62
  108. package/dist/network/storage/adapters/json-adapter.js +4 -42
  109. package/dist/network/storage/index.js +147 -0
  110. package/dist/network/storage/types.js +14 -0
  111. package/dist/pi-ecosystem/index.js +233 -0
  112. package/dist/pi-ecosystem-colony/index.js +29 -90
  113. package/dist/pi-ecosystem-goals/index.js +20 -74
  114. package/dist/pi-ecosystem-judgment/decision.js +29 -47
  115. package/dist/pi-ecosystem-judgment/distillation.js +16 -29
  116. package/dist/pi-ecosystem-judgment/human-value-store.js +13 -60
  117. package/dist/pi-ecosystem-judgment/index.js +21 -74
  118. package/dist/pi-ecosystem-judgment/value-injection.js +26 -72
  119. package/dist/pi-ecosystem-mcp/index.js +24 -78
  120. package/dist/pi-ecosystem-subagents/index.js +20 -69
  121. package/dist/social/ant-colony/AdaptiveHeartbeat.js +3 -8
  122. package/dist/social/ant-colony/PheromoneEngine.js +11 -49
  123. package/dist/social/ant-colony/index.js +6 -0
  124. package/dist/social/ant-colony/types.js +4 -8
  125. package/dist/social/channels/ChannelManager.js +8 -46
  126. package/dist/social/channels/DiapChannelBridge.js +9 -47
  127. package/dist/social/channels/InterestMatcher.js +2 -7
  128. package/dist/social/channels/channel-agent-session.js +309 -0
  129. package/dist/social/channels/channel-heartbeat-agent.js +494 -0
  130. package/dist/social/channels/diap-doc-parser.js +204 -0
  131. package/dist/social/channels/harness-workflow-integrator.js +446 -0
  132. package/dist/social/channels/index.js +9 -0
  133. package/dist/social/channels/types.js +3 -7
  134. package/dist/social/global-shared-context.js +6 -47
  135. package/dist/social/heartbeat.js +29 -72
  136. package/dist/social/persona/enhanced-persona.js +299 -0
  137. package/dist/web/client.js +302 -136
  138. package/dist/web/components/p2p/index.js +159 -9
  139. package/dist/web/components/p2p/p2p-connection.js +136 -0
  140. package/dist/web/components/p2p/p2p-manager.js +24 -0
  141. package/dist/web/components/p2p/p2p-store-memory.js +1 -1
  142. package/dist/web/components/p2p/types.js +7 -0
  143. package/dist/web/index.html +5 -0
  144. package/dist/web/style.css +118 -0
  145. package/package.json +12 -6
  146. package/scripts/build-cli.js +206 -0
  147. package/scripts/postinstall.js +153 -0
  148. package/src/agents/pi-sdk.ts +347 -28
  149. package/src/agents/protocol.ts +95 -1
  150. package/src/agents/workflow-pivot-loop.ts +674 -0
  151. package/src/bollharness/CLAUDE.md +73 -0
  152. package/src/bollharness/README.md +143 -0
  153. package/src/bollharness/README.zh-CN.md +131 -0
  154. package/src/bollharness/reference/boll-reference/scripts/hooks/stop-evaluator.md +57 -0
  155. package/src/bollharness/scripts/context-fragments/artifact-linkage.md +14 -0
  156. package/src/bollharness/scripts/context-fragments/auth-consumers.md +17 -0
  157. package/src/bollharness/scripts/context-fragments/bridge-constitution.md +13 -0
  158. package/src/bollharness/scripts/context-fragments/catalyst-distributed.md +18 -0
  159. package/src/bollharness/scripts/context-fragments/closure-checklist.md +13 -0
  160. package/src/bollharness/scripts/context-fragments/contract-consumers.md +15 -0
  161. package/src/bollharness/scripts/context-fragments/db-shared-structures.md +15 -0
  162. package/src/bollharness/scripts/context-fragments/fixed-three-layers.md +19 -0
  163. package/src/bollharness/scripts/context-fragments/general-dev-principles.md +11 -0
  164. package/src/bollharness/scripts/context-fragments/issue-first.md +8 -0
  165. package/src/bollharness/scripts/context-fragments/mcp-parity.md +16 -0
  166. package/src/bollharness/scripts/context-fragments/pi-agent-operations.md +108 -0
  167. package/src/bollharness/scripts/context-fragments/protocol-consumers.md +15 -0
  168. package/src/bollharness/scripts/context-fragments/run-events-consumers.md +15 -0
  169. package/src/bollharness/scripts/context-fragments/scene-fidelity.md +13 -0
  170. package/src/bollharness/scripts/context-fragments/truth-source-hierarchy.md +15 -0
  171. package/src/bollharness/scripts/context-fragments/two-language.md +15 -0
  172. package/src/bollharness/scripts/context-fragments/version-sources.md +14 -0
  173. package/src/bollharness/scripts/hooks/stop-evaluator.md +83 -0
  174. package/src/bollharness/templates/scaffold/CLAUDE.md +89 -0
  175. package/src/cli-entry.ts +304 -0
  176. package/src/heartbeat/DaemonManager.ts +283 -0
  177. package/src/heartbeat/HealthMonitor.ts +316 -0
  178. package/src/heartbeat/StartupVerifier.ts +223 -0
  179. package/src/heartbeat/Watchdog.ts +198 -0
  180. package/src/heartbeat/index.ts +108 -0
  181. package/src/heartbeat/types.ts +82 -0
  182. package/src/llm/config-store.ts +23 -5
  183. package/src/network/iroh-transport.ts +3 -3
  184. package/src/web/client.js +302 -136
  185. package/src/web/components/p2p/P2PModal.tsx +91 -3
  186. package/src/web/components/p2p/index.ts +171 -9
  187. package/src/web/components/p2p/p2p-connection.ts +153 -1
  188. package/src/web/components/p2p/p2p-manager.ts +39 -1
  189. package/src/web/components/p2p/p2p-store-memory.ts +1 -1
  190. package/src/web/components/p2p/p2p-tools.ts +315 -0
  191. package/src/web/components/p2p/types.ts +58 -0
  192. package/src/web/design.md +99 -0
  193. package/src/web/index.html +5 -0
  194. package/src/web/server.ts +353 -36
  195. package/src/web/style.css +118 -0
  196. package/tsconfig.cli.json +16 -0
  197. package/tsconfig.electron.json +1 -1
  198. package/tsconfig.json +1 -2
  199. package/dist/web/server.js +0 -1647
  200. package/dist/web/server.js.map +0 -1
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  /**
3
2
  * Human Value Store - 存储人类判断价值观的机制
4
3
  *
@@ -14,53 +13,8 @@
14
13
  * - outcome: 决策结果
15
14
  * - values: 提取的价值观标签
16
15
  */
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
- Object.defineProperty(exports, "__esModule", { value: true });
51
- exports.initializeValueStore = initializeValueStore;
52
- exports.storeHumanJudgment = storeHumanJudgment;
53
- exports.learnFromTrajectory = learnFromTrajectory;
54
- exports.learnFromFeedback = learnFromFeedback;
55
- exports.learnFromCorrection = learnFromCorrection;
56
- exports.loadAllJudgments = loadAllJudgments;
57
- exports.getRelevantValues = getRelevantValues;
58
- exports.getValueProfile = getValueProfile;
59
- exports.getPriorityRules = getPriorityRules;
60
- exports.getValueStats = getValueStats;
61
- exports.clearCache = clearCache;
62
- const fs = __importStar(require("fs/promises"));
63
- const path = __importStar(require("path"));
16
+ import * as fs from 'fs/promises';
17
+ import * as path from 'path';
64
18
  const VALUE_STORE_DIR = path.join(process.env.HOME || '/tmp', '.bolloon', 'human-values');
65
19
  const JUDGMENTS_FILE = path.join(VALUE_STORE_DIR, 'judgments.json');
66
20
  // In-memory cache
@@ -76,7 +30,7 @@ function generateId() {
76
30
  /**
77
31
  * 初始化存储(创建目录和空文件)
78
32
  */
79
- async function initializeValueStore() {
33
+ export async function initializeValueStore() {
80
34
  if (initialized)
81
35
  return;
82
36
  try {
@@ -98,7 +52,7 @@ async function initializeValueStore() {
98
52
  /**
99
53
  * 存储人类判断
100
54
  */
101
- async function storeHumanJudgment(judgment) {
55
+ export async function storeHumanJudgment(judgment) {
102
56
  const fullJudgment = {
103
57
  ...judgment,
104
58
  id: generateId(),
@@ -117,7 +71,7 @@ async function storeHumanJudgment(judgment) {
117
71
  /**
118
72
  * 从决策结果学习(轨迹学习)
119
73
  */
120
- async function learnFromTrajectory(trajectory) {
74
+ export async function learnFromTrajectory(trajectory) {
121
75
  // 提取价值观
122
76
  const values = extractValuesFromTrajectory(trajectory);
123
77
  return storeHumanJudgment({
@@ -140,7 +94,7 @@ async function learnFromTrajectory(trajectory) {
140
94
  /**
141
95
  * 从批准/拒绝学习
142
96
  */
143
- async function learnFromFeedback(action, approved, reason) {
97
+ export async function learnFromFeedback(action, approved, reason) {
144
98
  return storeHumanJudgment({
145
99
  decision: action,
146
100
  decision_type: approved ? 'approve' : 'reject',
@@ -158,7 +112,7 @@ async function learnFromFeedback(action, approved, reason) {
158
112
  /**
159
113
  * 从建议修正学习
160
114
  */
161
- async function learnFromCorrection(original, corrected, reason) {
115
+ export async function learnFromCorrection(original, corrected, reason) {
162
116
  return storeHumanJudgment({
163
117
  decision: corrected,
164
118
  decision_type: 'modify',
@@ -179,7 +133,7 @@ async function learnFromCorrection(original, corrected, reason) {
179
133
  /**
180
134
  * 加载所有人类判断
181
135
  */
182
- async function loadAllJudgments() {
136
+ export async function loadAllJudgments() {
183
137
  if (!initialized) {
184
138
  await initializeValueStore();
185
139
  }
@@ -200,7 +154,7 @@ async function loadAllJudgments() {
200
154
  * 获取相关价值观
201
155
  * 将 context 拆分为关键词,任意一个匹配即可
202
156
  */
203
- async function getRelevantValues(context, domain) {
157
+ export async function getRelevantValues(context, domain) {
204
158
  const judgments = await loadAllJudgments();
205
159
  const keywords = context.split(/[\s,,、]+/).filter(k => k.length >= 2);
206
160
  const contextLower = context.toLowerCase();
@@ -244,7 +198,7 @@ async function getRelevantValues(context, domain) {
244
198
  /**
245
199
  * 获取价值画像
246
200
  */
247
- async function getValueProfile(agentId) {
201
+ export async function getValueProfile(agentId) {
248
202
  if (valueProfileCache.has(agentId)) {
249
203
  return valueProfileCache.get(agentId);
250
204
  }
@@ -257,7 +211,7 @@ async function getValueProfile(agentId) {
257
211
  /**
258
212
  * 获取优先级规则
259
213
  */
260
- async function getPriorityRules() {
214
+ export async function getPriorityRules() {
261
215
  const judgments = await loadAllJudgments();
262
216
  const seen = new Set();
263
217
  return judgments
@@ -429,7 +383,7 @@ function extractValuesFromCorrection(original, corrected) {
429
383
  // ============================================================
430
384
  // 统计
431
385
  // ============================================================
432
- async function getValueStats() {
386
+ export async function getValueStats() {
433
387
  const judgments = await loadAllJudgments();
434
388
  const byType = {};
435
389
  const bySource = {};
@@ -456,8 +410,7 @@ async function getValueStats() {
456
410
  top_values: topValues
457
411
  };
458
412
  }
459
- function clearCache() {
413
+ export function clearCache() {
460
414
  judgmentCache = [];
461
415
  valueProfileCache.clear();
462
416
  }
463
- //# sourceMappingURL=human-value-store.js.map
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  /**
3
2
  * Pi Judgment Integration for Bolloon
4
3
  *
@@ -15,59 +14,8 @@
15
14
  * - High-frequency rules: Embedded in context-fragments/*.md YAML frontmatter
16
15
  * - Long-term preferences: .bolloon/judgments/*.yaml
17
16
  */
18
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
19
- if (k2 === undefined) k2 = k;
20
- var desc = Object.getOwnPropertyDescriptor(m, k);
21
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
22
- desc = { enumerable: true, get: function() { return m[k]; } };
23
- }
24
- Object.defineProperty(o, k2, desc);
25
- }) : (function(o, m, k, k2) {
26
- if (k2 === undefined) k2 = k;
27
- o[k2] = m[k];
28
- }));
29
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
30
- Object.defineProperty(o, "default", { enumerable: true, value: v });
31
- }) : function(o, v) {
32
- o["default"] = v;
33
- });
34
- var __importStar = (this && this.__importStar) || (function () {
35
- var ownKeys = function(o) {
36
- ownKeys = Object.getOwnPropertyNames || function (o) {
37
- var ar = [];
38
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
39
- return ar;
40
- };
41
- return ownKeys(o);
42
- };
43
- return function (mod) {
44
- if (mod && mod.__esModule) return mod;
45
- var result = {};
46
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
47
- __setModuleDefault(result, mod);
48
- return result;
49
- };
50
- })();
51
- Object.defineProperty(exports, "__esModule", { value: true });
52
- exports.initializeJudgmentStore = initializeJudgmentStore;
53
- exports.bootstrapJudgmentSystem = bootstrapJudgmentSystem;
54
- exports.loadJudgments = loadJudgments;
55
- exports.createJudgment = createJudgment;
56
- exports.updateJudgmentConfidence = updateJudgmentConfidence;
57
- exports.getAllJudgments = getAllJudgments;
58
- exports.getJudgmentsByType = getJudgmentsByType;
59
- exports.getJudgmentsForContext = getJudgmentsForContext;
60
- exports.calculateConfidence = calculateConfidence;
61
- exports.buildValueFunction = buildValueFunction;
62
- exports.getValueFunction = getValueFunction;
63
- exports.extractFromFragment = extractFromFragment;
64
- exports.loadFragmentJudgments = loadFragmentJudgments;
65
- exports.getCombinedJudgments = getCombinedJudgments;
66
- exports.getJudgmentStats = getJudgmentStats;
67
- exports.clearCache = clearCache;
68
- exports.resetJudgmentStore = resetJudgmentStore;
69
- const fs = __importStar(require("fs/promises"));
70
- const path = __importStar(require("path"));
17
+ import * as fs from 'fs/promises';
18
+ import * as path from 'path';
71
19
  const JUDGMENTS_DIR = path.join(process.env.HOME || '/tmp', '.bolloon', 'judgments');
72
20
  const JUDGMENT_FILES = {
73
21
  rules: path.join(JUDGMENTS_DIR, 'rules.yaml'),
@@ -85,7 +33,7 @@ function generateJudgmentId() {
85
33
  /**
86
34
  * Initialize the judgment store, creating all YAML files if they don't exist
87
35
  */
88
- async function initializeJudgmentStore() {
36
+ export async function initializeJudgmentStore() {
89
37
  if (storeInitialized)
90
38
  return;
91
39
  await fs.mkdir(JUDGMENTS_DIR, { recursive: true });
@@ -105,12 +53,12 @@ async function initializeJudgmentStore() {
105
53
  /**
106
54
  * Bootstrap the entire judgment system - initializes all stores and LLM
107
55
  */
108
- async function bootstrapJudgmentSystem() {
56
+ export async function bootstrapJudgmentSystem() {
109
57
  console.log('[Judgment] Bootstrapping judgment system...');
110
58
  await initializeJudgmentStore();
111
- const { initializeValueStore } = await Promise.resolve().then(() => __importStar(require('./human-value-store.js')));
59
+ const { initializeValueStore } = await import('./human-value-store.js');
112
60
  await initializeValueStore();
113
- const { initializeDistillation } = await Promise.resolve().then(() => __importStar(require('./distillation.js')));
61
+ const { initializeDistillation } = await import('./distillation.js');
114
62
  await initializeDistillation();
115
63
  cacheDirty = true;
116
64
  valueFunctionCache = null;
@@ -119,7 +67,7 @@ async function bootstrapJudgmentSystem() {
119
67
  /**
120
68
  * Load all judgments from YAML files
121
69
  */
122
- async function loadJudgments() {
70
+ export async function loadJudgments() {
123
71
  if (!storeInitialized) {
124
72
  await initializeJudgmentStore();
125
73
  }
@@ -158,7 +106,7 @@ async function saveJudgments(type, judgments) {
158
106
  /**
159
107
  * Create a new judgment
160
108
  */
161
- async function createJudgment(params) {
109
+ export async function createJudgment(params) {
162
110
  const judgment = {
163
111
  id: generateJudgmentId(),
164
112
  type: params.type,
@@ -181,7 +129,7 @@ async function createJudgment(params) {
181
129
  /**
182
130
  * Update judgment confidence based on feedback
183
131
  */
184
- async function updateJudgmentConfidence(id, delta, feedbackType) {
132
+ export async function updateJudgmentConfidence(id, delta, feedbackType) {
185
133
  const judgments = await loadJudgments();
186
134
  for (const [type, typeJudgments] of judgments.entries()) {
187
135
  const judgment = typeJudgments.find((j) => j.id === id);
@@ -207,7 +155,7 @@ async function updateJudgmentConfidence(id, delta, feedbackType) {
207
155
  /**
208
156
  * Get all judgments
209
157
  */
210
- async function getAllJudgments() {
158
+ export async function getAllJudgments() {
211
159
  const judgments = await loadJudgments();
212
160
  const all = [];
213
161
  for (const typeJudgments of judgments.values()) {
@@ -218,14 +166,14 @@ async function getAllJudgments() {
218
166
  /**
219
167
  * Get judgments by type
220
168
  */
221
- async function getJudgmentsByType(type) {
169
+ export async function getJudgmentsByType(type) {
222
170
  const judgments = await loadJudgments();
223
171
  return judgments.get(type) || [];
224
172
  }
225
173
  /**
226
174
  * Get judgments relevant to a context
227
175
  */
228
- async function getJudgmentsForContext(context) {
176
+ export async function getJudgmentsForContext(context) {
229
177
  const all = await getAllJudgments();
230
178
  return all.filter((j) => {
231
179
  if (!j.context)
@@ -236,7 +184,7 @@ async function getJudgmentsForContext(context) {
236
184
  /**
237
185
  * Calculate confidence score for a decision
238
186
  */
239
- function calculateConfidence(judgments) {
187
+ export function calculateConfidence(judgments) {
240
188
  if (judgments.length === 0)
241
189
  return 0.5;
242
190
  let totalSourceWeight = 0;
@@ -251,7 +199,7 @@ function calculateConfidence(judgments) {
251
199
  /**
252
200
  * Build ValueFunction from judgments
253
201
  */
254
- async function buildValueFunction(context) {
202
+ export async function buildValueFunction(context) {
255
203
  const judgments = context
256
204
  ? await getJudgmentsForContext(context)
257
205
  : await getAllJudgments();
@@ -273,7 +221,7 @@ async function buildValueFunction(context) {
273
221
  /**
274
222
  * Get cached ValueFunction
275
223
  */
276
- async function getValueFunction(context) {
224
+ export async function getValueFunction(context) {
277
225
  if (!valueFunctionCache || cacheDirty) {
278
226
  valueFunctionCache = await buildValueFunction(context);
279
227
  }
@@ -283,7 +231,7 @@ async function getValueFunction(context) {
283
231
  * Extract judgments from context fragment YAML frontmatter
284
232
  * Falls back to using file content + filename as context when no frontmatter judgment exists
285
233
  */
286
- async function extractFromFragment(fragmentPath) {
234
+ export async function extractFromFragment(fragmentPath) {
287
235
  try {
288
236
  const content = await fs.readFile(fragmentPath, 'utf-8');
289
237
  const frontmatter = extractFrontmatter(content);
@@ -330,7 +278,7 @@ async function extractFromFragment(fragmentPath) {
330
278
  /**
331
279
  * Load judgments from all context fragments
332
280
  */
333
- async function loadFragmentJudgments() {
281
+ export async function loadFragmentJudgments() {
334
282
  const FRAGMENTS_DIR = path.join(process.cwd(), 'src', 'bollharness', 'scripts', 'context-fragments');
335
283
  const fragmentJudgments = [];
336
284
  try {
@@ -350,7 +298,7 @@ async function loadFragmentJudgments() {
350
298
  /**
351
299
  * Get combined judgments (file + fragments)
352
300
  */
353
- async function getCombinedJudgments() {
301
+ export async function getCombinedJudgments() {
354
302
  const [fileJudgments, fragmentJudgments] = await Promise.all([
355
303
  getAllJudgments(),
356
304
  loadFragmentJudgments(),
@@ -537,7 +485,7 @@ function extractMarkdownContent(content) {
537
485
  /**
538
486
  * Get judgment statistics
539
487
  */
540
- async function getJudgmentStats() {
488
+ export async function getJudgmentStats() {
541
489
  const judgments = await getAllJudgments();
542
490
  const byType = {
543
491
  rule: 0,
@@ -566,7 +514,7 @@ async function getJudgmentStats() {
566
514
  /**
567
515
  * Clear judgment cache
568
516
  */
569
- function clearCache() {
517
+ export function clearCache() {
570
518
  valueFunctionCache = null;
571
519
  cacheDirty = true;
572
520
  judgmentCache = new Map();
@@ -574,8 +522,7 @@ function clearCache() {
574
522
  /**
575
523
  * Reset judgment store initialization (forces re-initialization on next use)
576
524
  */
577
- function resetJudgmentStore() {
525
+ export function resetJudgmentStore() {
578
526
  storeInitialized = false;
579
527
  clearCache();
580
528
  }
581
- //# sourceMappingURL=index.js.map
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  /**
3
2
  * Value Injection - 人类价值观注入到 LLM Prompt
4
3
  *
@@ -13,53 +12,9 @@
13
12
  * 3. 优先级规则 - 冲突时的决策倾向
14
13
  * 4. 边界条件 - 在什么情况下会改变决定
15
14
  */
16
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
17
- if (k2 === undefined) k2 = k;
18
- var desc = Object.getOwnPropertyDescriptor(m, k);
19
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
20
- desc = { enumerable: true, get: function() { return m[k]; } };
21
- }
22
- Object.defineProperty(o, k2, desc);
23
- }) : (function(o, m, k, k2) {
24
- if (k2 === undefined) k2 = k;
25
- o[k2] = m[k];
26
- }));
27
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
28
- Object.defineProperty(o, "default", { enumerable: true, value: v });
29
- }) : function(o, v) {
30
- o["default"] = v;
31
- });
32
- var __importStar = (this && this.__importStar) || (function () {
33
- var ownKeys = function(o) {
34
- ownKeys = Object.getOwnPropertyNames || function (o) {
35
- var ar = [];
36
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
37
- return ar;
38
- };
39
- return ownKeys(o);
40
- };
41
- return function (mod) {
42
- if (mod && mod.__esModule) return mod;
43
- var result = {};
44
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
45
- __setModuleDefault(result, mod);
46
- return result;
47
- };
48
- })();
49
- Object.defineProperty(exports, "__esModule", { value: true });
50
- exports.DEFAULT_INJECTION_CONFIG = void 0;
51
- exports.generateValueInjection = generateValueInjection;
52
- exports.getSituationallyRelevantJudgments = getSituationallyRelevantJudgments;
53
- exports.generateSituationalValueInjection = generateSituationalValueInjection;
54
- exports.generateSituationAwarePrompt = generateSituationAwarePrompt;
55
- exports.generateSystemPromptWithValues = generateSystemPromptWithValues;
56
- exports.generateJudgmentPromptWithValues = generateJudgmentPromptWithValues;
57
- exports.generateValueSummary = generateValueSummary;
58
- exports.detectValueConflicts = detectValueConflicts;
59
- exports.suggestBasedOnValues = suggestBasedOnValues;
60
- const human_value_store_js_1 = require("./human-value-store.js");
61
- const pi_ai_js_1 = require("../llm/pi-ai.js");
62
- exports.DEFAULT_INJECTION_CONFIG = {
15
+ import { getRelevantValues, getValueProfile, getPriorityRules } from './human-value-store.js';
16
+ import { getModel, isModelAvailable } from '../llm/pi-ai.js';
17
+ export const DEFAULT_INJECTION_CONFIG = {
63
18
  mode: 'standard',
64
19
  maxTokens: 800,
65
20
  includeExamples: true,
@@ -73,17 +28,17 @@ exports.DEFAULT_INJECTION_CONFIG = {
73
28
  /**
74
29
  * 生成价值观注入内容
75
30
  */
76
- async function generateValueInjection(context, config = {}) {
77
- const cfg = { ...exports.DEFAULT_INJECTION_CONFIG, ...config };
31
+ export async function generateValueInjection(context, config = {}) {
32
+ const cfg = { ...DEFAULT_INJECTION_CONFIG, ...config };
78
33
  const parts = [];
79
34
  // 1. 获取相关价值观
80
- const values = await (0, human_value_store_js_1.getRelevantValues)(context);
35
+ const values = await getRelevantValues(context);
81
36
  if (values.length > 0) {
82
37
  parts.push(generateValuesSection(values, cfg.mode));
83
38
  }
84
39
  // 2. 获取优先级规则
85
40
  if (cfg.includeRules) {
86
- const rules = await (0, human_value_store_js_1.getPriorityRules)();
41
+ const rules = await getPriorityRules();
87
42
  if (rules.length > 0) {
88
43
  parts.push(generateRulesSection(rules, cfg.mode));
89
44
  }
@@ -109,10 +64,10 @@ async function generateValueInjection(context, config = {}) {
109
64
  * 返回 situationalScore (0-1) 和 reason
110
65
  */
111
66
  async function scoreJudgmentRelevance(judgment, situation) {
112
- if (!(0, pi_ai_js_1.isModelAvailable)()) {
67
+ if (!isModelAvailable()) {
113
68
  return { score: 0.5, reason: 'LLM 不可用,使用默认分数' };
114
69
  }
115
- const model = (0, pi_ai_js_1.getModel)();
70
+ const model = getModel();
116
71
  const prompt = `判断以下人类判断在当前情境下的相关性。
117
72
 
118
73
  情境:${situation}
@@ -155,8 +110,8 @@ async function scoreJudgmentRelevance(judgment, situation) {
155
110
  * 使用 LLM 对所有 judgment 做情境语义匹配
156
111
  * 这是情境感知注入的核心
157
112
  */
158
- async function getSituationallyRelevantJudgments(situation, history = [], options = {}) {
159
- const { loadAllJudgments } = await Promise.resolve().then(() => __importStar(require('./human-value-store.js')));
113
+ export async function getSituationallyRelevantJudgments(situation, history = [], options = {}) {
114
+ const { loadAllJudgments } = await import('./human-value-store.js');
160
115
  const judgments = await loadAllJudgments();
161
116
  if (judgments.length === 0) {
162
117
  return [];
@@ -194,9 +149,9 @@ async function getSituationallyRelevantJudgments(situation, history = [], option
194
149
  * 生成情境感知的价值观注入
195
150
  * 使用 LLM 语义匹配而非关键词匹配
196
151
  */
197
- async function generateSituationalValueInjection(situation, history = [], options = {}) {
152
+ export async function generateSituationalValueInjection(situation, history = [], options = {}) {
198
153
  const { mode = 'standard', maxJudgments = 5, includeExamples = true, includeReasoning = true, minJudgmentCountForLLM = 3, } = options;
199
- const { loadAllJudgments } = await Promise.resolve().then(() => __importStar(require('./human-value-store.js')));
154
+ const { loadAllJudgments } = await import('./human-value-store.js');
200
155
  const totalJudgments = (await loadAllJudgments()).length;
201
156
  if (totalJudgments < minJudgmentCountForLLM) {
202
157
  const fallbackInjection = await generateValueInjection(situation, {
@@ -328,7 +283,7 @@ function generateSituationBasedExamples(matches, mode) {
328
283
  * 生成完整的基于情境的判断 Prompt
329
284
  * 这是 generateJudgmentPromptWithValues 的情境感知版本
330
285
  */
331
- async function generateSituationAwarePrompt(userInput, situation, history = [], options = {}) {
286
+ export async function generateSituationAwarePrompt(userInput, situation, history = [], options = {}) {
332
287
  const injection = await generateSituationalValueInjection(situation, history, options);
333
288
  const historyStr = history.length > 0
334
289
  ? history.slice(-5).map((m, i) => `[${i + 1}] ${m}`).join('\n')
@@ -441,7 +396,7 @@ ${judgments.slice(0, 3).map(j => `- **情况**: "${j.decision.substring(0, 50)}.
441
396
  * 获取决策例子
442
397
  */
443
398
  async function getDecisionExamples(context, limit) {
444
- const { loadAllJudgments } = await Promise.resolve().then(() => __importStar(require('./human-value-store.js')));
399
+ const { loadAllJudgments } = await import('./human-value-store.js');
445
400
  const judgments = await loadAllJudgments();
446
401
  const keywords = context.split(/[\s,,、]+/).filter(k => k.length >= 2);
447
402
  const contextLower = context.toLowerCase();
@@ -478,7 +433,7 @@ async function getDecisionExamples(context, limit) {
478
433
  /**
479
434
  * 生成完整的系统 Prompt(包含价值观注入)
480
435
  */
481
- async function generateSystemPromptWithValues(basePrompt, context, config = {}) {
436
+ export async function generateSystemPromptWithValues(basePrompt, context, config = {}) {
482
437
  const injection = await generateValueInjection(context, config);
483
438
  return `${basePrompt}
484
439
 
@@ -497,8 +452,8 @@ ${injection}
497
452
  /**
498
453
  * 生成判断用的 Prompt(包含价值观)
499
454
  */
500
- async function generateJudgmentPromptWithValues(userInput, context, history, config = {}) {
501
- const cfg = { ...exports.DEFAULT_INJECTION_CONFIG, ...config };
455
+ export async function generateJudgmentPromptWithValues(userInput, context, history, config = {}) {
456
+ const cfg = { ...DEFAULT_INJECTION_CONFIG, ...config };
502
457
  const valueInjection = await generateValueInjection(context, cfg);
503
458
  const historyStr = history.length > 0
504
459
  ? history.slice(-5).map((m, i) => `[${i + 1}] ${m}`).join('\n')
@@ -523,8 +478,8 @@ ${historyStr}
523
478
  /**
524
479
  * 生成价值摘要
525
480
  */
526
- async function generateValueSummary() {
527
- const { getValueStats } = await Promise.resolve().then(() => __importStar(require('./human-value-store.js')));
481
+ export async function generateValueSummary() {
482
+ const { getValueStats } = await import('./human-value-store.js');
528
483
  const stats = await getValueStats();
529
484
  if (stats.total_judgments === 0) {
530
485
  return '暂无价值观数据,请先通过决策学习积累判断样本。';
@@ -540,9 +495,9 @@ async function generateValueSummary() {
540
495
  /**
541
496
  * 检测价值观冲突
542
497
  */
543
- async function detectValueConflicts(decision1, decision2) {
544
- const values1 = await (0, human_value_store_js_1.getRelevantValues)(decision1);
545
- const values2 = await (0, human_value_store_js_1.getRelevantValues)(decision2);
498
+ export async function detectValueConflicts(decision1, decision2) {
499
+ const values1 = await getRelevantValues(decision1);
500
+ const values2 = await getRelevantValues(decision2);
546
501
  const conflicts = [];
547
502
  for (const v1 of values1) {
548
503
  for (const v2 of values2) {
@@ -561,9 +516,9 @@ async function detectValueConflicts(decision1, decision2) {
561
516
  /**
562
517
  * 根据价值观建议决策方向
563
518
  */
564
- async function suggestBasedOnValues(situation, options) {
565
- const profile = await (0, human_value_store_js_1.getValueProfile)('current');
566
- const values = await (0, human_value_store_js_1.getRelevantValues)(situation);
519
+ export async function suggestBasedOnValues(situation, options) {
520
+ const profile = await getValueProfile('current');
521
+ const values = await getRelevantValues(situation);
567
522
  // 简单评分
568
523
  const scores = options.map(option => {
569
524
  let score = 0;
@@ -589,4 +544,3 @@ async function suggestBasedOnValues(situation, options) {
589
544
  `建议选择"${recommended}"。`;
590
545
  return { recommended, reasoning };
591
546
  }
592
- //# sourceMappingURL=value-injection.js.map