@bolloon/bolloon-agent 0.1.0 → 0.1.1

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 (431) hide show
  1. package/package.json +1 -1
  2. package/dist/constraint-runtime/tests/agent.test.js +0 -16
  3. package/dist/constraint-runtime/tests/constraint.test.js +0 -41
  4. package/dist/constraint-runtime/tests/skill.test.js +0 -19
  5. package/dist/constraint-runtime/tests/thinking.test.js +0 -22
  6. package/dist/electron-preload.js +0 -15
  7. package/dist/electron-preload.js.map +0 -1
  8. package/dist/electron.js +0 -206
  9. package/dist/electron.js.map +0 -1
  10. package/dist/test/constraint-layer.test.js +0 -164
  11. package/dist/test/global-shared-context.test.js +0 -315
  12. package/dist/test/pi-sdk.test.js +0 -47
  13. package/dist/test/set-persona.test.js +0 -38
  14. package/dist/test/subagent-manager.test.js +0 -276
  15. package/dist/test/workflow-engine.test.js +0 -87
  16. package/dist/workflows/collaboration.js +0 -374
  17. package/dist/workflows/index.js +0 -54
  18. package/docs/agent-communication.md +0 -333
  19. package/docs/plans/2026-05-15-document-agent-design.md +0 -479
  20. package/docs/plans/2026-05-15-document-agent-implementation-plan.md +0 -792
  21. package/docs/plans/2026-05-16-chat-ui-design.md +0 -86
  22. package/docs/plans/2026-05-16-constraint-runtime-design.md +0 -106
  23. package/docs/plans/2026-05-16-constraint-runtime-implementation.md +0 -441
  24. package/docs//346/225/260/345/255/246/350/276/205/345/212/251/346/231/272/350/203/275/344/275/223-/346/240/270/345/277/203/346/225/210/346/236/234/345/256/232/344/271/211.md +0 -287
  25. package/src/bollharness/.boll/CLAUDE.md.template +0 -34
  26. package/src/bollharness/.boll/MANIFEST.yaml +0 -213
  27. package/src/bollharness/.boll/active-review-agents/.gitkeep +0 -0
  28. package/src/bollharness/.boll/agents/review-base.yaml +0 -108
  29. package/src/bollharness/.boll/deploy-allowlist.yaml +0 -38
  30. package/src/bollharness/.boll/inbox/schema/message-v1.json +0 -99
  31. package/src/bollharness/.boll/install-staging/.gitkeep +0 -0
  32. package/src/bollharness/.boll/issue-adapter.yaml +0 -31
  33. package/src/bollharness/.boll/plugins/boll-mode-toolkit/contracts/mode-contract.md +0 -85
  34. package/src/bollharness/.boll/plugins/boll-review-toolkit/contracts/evidence-packet-schema.json +0 -102
  35. package/src/bollharness/.boll/plugins/boll-review-toolkit/contracts/review-contract.yaml +0 -247
  36. package/src/bollharness/.boll/rules/backend-routes.md +0 -31
  37. package/src/bollharness/.boll/rules/closure-semantics.md +0 -30
  38. package/src/bollharness/.boll/rules/env-vars.md +0 -32
  39. package/src/bollharness/.boll/rules/hanis-protocol.md +0 -145
  40. package/src/bollharness/.boll/rules/repo-structure.md +0 -42
  41. package/src/bollharness/.boll/rules/review-agent-isolation.md +0 -73
  42. package/src/bollharness/.boll/rules/source-of-truth.md +0 -33
  43. package/src/bollharness/.boll/settings.json +0 -180
  44. package/src/bollharness/.boll/settings.json.template +0 -31
  45. package/src/bollharness/.boll/skills/arch/SKILL.md +0 -372
  46. package/src/bollharness/.boll/skills/bug-pipeline/SKILL.md +0 -168
  47. package/src/bollharness/.boll/skills/bug-triage/SKILL.md +0 -161
  48. package/src/bollharness/.boll/skills/context-chains/SKILL.md +0 -250
  49. package/src/bollharness/.boll/skills/context-chains/context-chain-index.md +0 -48
  50. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/code_change_extractor.ts +0 -142
  51. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/debugging_extractor.ts +0 -126
  52. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/design_extractor.ts +0 -148
  53. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/planning_extractor.ts +0 -162
  54. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/question_extractor.ts +0 -116
  55. package/src/bollharness/.boll/skills/context-chains/work-type-extractors/review_extractor.ts +0 -136
  56. package/src/bollharness/.boll/skills/crystal-learn/SKILL.md +0 -93
  57. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-0.md +0 -34
  58. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-1.md +0 -34
  59. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-2.md +0 -35
  60. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-3.md +0 -34
  61. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-4.md +0 -43
  62. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-5.md +0 -34
  63. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-6.md +0 -37
  64. package/src/bollharness/.boll/skills/crystal-learn/invariants/INV-7.md +0 -46
  65. package/src/bollharness/.boll/skills/guardian-fixer/PROMPT.md +0 -415
  66. package/src/bollharness/.boll/skills/guardian-fixer/SKILL.md +0 -320
  67. package/src/bollharness/.boll/skills/harness-dev/SKILL.md +0 -93
  68. package/src/bollharness/.boll/skills/harness-dev/examples/README.md +0 -227
  69. package/src/bollharness/.boll/skills/harness-dev-handoff/SKILL.md +0 -165
  70. package/src/bollharness/.boll/skills/harness-eng/SKILL.md +0 -110
  71. package/src/bollharness/.boll/skills/harness-eng-test/SKILL.md +0 -79
  72. package/src/bollharness/.boll/skills/harness-lab/SKILL.md +0 -170
  73. package/src/bollharness/.boll/skills/harness-ops/SKILL.md +0 -57
  74. package/src/bollharness/.boll/skills/harness-voice/SKILL.md +0 -183
  75. package/src/bollharness/.boll/skills/judgment/SKILL.md +0 -115
  76. package/src/bollharness/.boll/skills/lead/SKILL.md +0 -245
  77. package/src/bollharness/.boll/skills/lead/install-wow-harness.md +0 -77
  78. package/src/bollharness/.boll/skills/lead/ref-review-sop.md +0 -91
  79. package/src/bollharness/.boll/skills/lead/ref-stages.md +0 -129
  80. package/src/bollharness/.boll/skills/skill-discovery/SKILL.md +0 -169
  81. package/src/bollharness/.boll/skills/task-arch/SKILL.md +0 -106
  82. package/src/bollharness/.boll/skills/toolkit/SKILL.md +0 -57
  83. package/src/bollharness/.boll/tasks/.gitkeep +0 -0
  84. package/src/bollharness/.boll/toolkit-index.yaml +0 -112
  85. package/src/bollharness/.claude/agents/review-base.yaml +0 -108
  86. package/src/bollharness/.claude/plugins/boll-mode-toolkit/.claude-plugin/plugin.json +0 -44
  87. package/src/bollharness/.claude/plugins/boll-review-toolkit/.claude-plugin/plugin.json +0 -24
  88. package/src/bollharness/.claude/plugins/boll-review-toolkit/contracts/evidence-packet-schema.json +0 -102
  89. package/src/bollharness/.claude/plugins/boll-review-toolkit/contracts/review-contract.yaml +0 -247
  90. package/src/bollharness/.claude/settings.json +0 -157
  91. package/src/bollharness/.claude/skills/arch/SKILL.md +0 -64
  92. package/src/bollharness/.claude/skills/crystal-learn/SKILL.md +0 -93
  93. package/src/bollharness/.claude/skills/guardian-fixer/PROMPT.md +0 -44
  94. package/src/bollharness/.claude/skills/guardian-fixer/SKILL.md +0 -324
  95. package/src/bollharness/.claude/skills/harness-dev/SKILL.md +0 -93
  96. package/src/bollharness/.claude/skills/harness-dev/examples/README.md +0 -17
  97. package/src/bollharness/.claude/skills/harness-dev-handoff/SKILL.md +0 -165
  98. package/src/bollharness/.claude/skills/harness-eng/SKILL.md +0 -183
  99. package/src/bollharness/.claude/skills/harness-eng-test/SKILL.md +0 -57
  100. package/src/bollharness/.claude/skills/harness-ops/SKILL.md +0 -57
  101. package/src/bollharness/.claude/skills/harness-voice/SKILL.md +0 -84
  102. package/src/bollharness/.claude/skills/lead/INDEX.md +0 -28
  103. package/src/bollharness/.claude/skills/lead/SKILL.md +0 -24
  104. package/src/bollharness/.claude/skills/lead/install-wow-harness.md +0 -77
  105. package/src/bollharness/.claude/skills/lead/ref-review-sop.md +0 -48
  106. package/src/bollharness/.claude/skills/lead/ref-stages.md +0 -58
  107. package/src/bollharness/.claude/skills/plan-lock/SKILL.md +0 -74
  108. package/src/bollharness/.claude/skills/skill-discovery/SKILL.md +0 -120
  109. package/src/bollharness/.claude/skills/task-arch/SKILL.md +0 -106
  110. package/src/bollharness/.claude/skills/toolkit/SKILL.md +0 -57
  111. package/src/bollharness/.claude/skills/toolkit/list.sh +0 -92
  112. package/src/bollharness/.githooks/pre-commit +0 -21
  113. package/src/bollharness/.github/workflows/ci.yml +0 -88
  114. package/src/bollharness/CLAUDE.md +0 -73
  115. package/src/bollharness/README.md +0 -143
  116. package/src/bollharness/README.zh-CN.md +0 -131
  117. package/src/bollharness/docs/decisions/ADR-030-guard-signal-protocol-and-governance-reload.md +0 -1076
  118. package/src/bollharness/docs/decisions/ADR-038-harness-optimization-strategy.md +0 -2039
  119. package/src/bollharness/docs/decisions/ADR-041-codex-claude-code-division-of-labor.md +0 -128
  120. package/src/bollharness/docs/decisions/ADR-H1-crystal-learn-revival.md +0 -188
  121. package/src/bollharness/docs/decisions/ADR-H2-identity-isolation.md +0 -183
  122. package/src/bollharness/docs/decisions/ADR-H3-memory-scope.md +0 -133
  123. package/src/bollharness/docs/decisions/ADR-H4-prompt-governance.md +0 -146
  124. package/src/bollharness/docs/decisions/ADR-H5-gate-quantization.md +0 -212
  125. package/src/bollharness/docs/decisions/ADR-H6-state-file-health.md +0 -211
  126. package/src/bollharness/docs/decisions/ADR-H8-issue-and-doc-compliance.md +0 -202
  127. package/src/bollharness/docs/decisions/ADR-H9-mailbox.md +0 -231
  128. package/src/bollharness/docs/decisions/PLAN-H1-crystal-learn-revival.md +0 -270
  129. package/src/bollharness/docs/decisions/PLAN-H2-identity-isolation.md +0 -291
  130. package/src/bollharness/docs/decisions/PLAN-H3-memory-scope.md +0 -228
  131. package/src/bollharness/docs/decisions/PLAN-H4-prompt-governance.md +0 -227
  132. package/src/bollharness/docs/decisions/PLAN-H5-gate-quantization.md +0 -239
  133. package/src/bollharness/docs/decisions/PLAN-H6-state-file-health.md +0 -325
  134. package/src/bollharness/docs/decisions/PLAN-H8-issue-and-doc-compliance.md +0 -242
  135. package/src/bollharness/docs/decisions/PLAN-H9-mailbox.md +0 -378
  136. package/src/bollharness/docs/launch-article-en.md +0 -276
  137. package/src/bollharness/docs/launch-article-zh.md +0 -305
  138. package/src/bollharness/docs/practice.html +0 -356
  139. package/src/bollharness/docs/practice.md +0 -82
  140. package/src/bollharness/docs/research/round-1/README.md +0 -11
  141. package/src/bollharness/docs/research/round-2/README.md +0 -11
  142. package/src/bollharness/docs/research/round-3/README.md +0 -11
  143. package/src/bollharness/docs/research/round-4/README.md +0 -11
  144. package/src/bollharness/docs/research/round-5/README.md +0 -11
  145. package/src/bollharness/docs/research/round-6/README.md +0 -11
  146. package/src/bollharness/package-lock.json +0 -48
  147. package/src/bollharness/reference/boll-reference/.claude/rules/backend-routes.md +0 -268
  148. package/src/bollharness/reference/boll-reference/.claude/rules/bridge.md +0 -20
  149. package/src/bollharness/reference/boll-reference/.claude/rules/closure-semantics.md +0 -30
  150. package/src/bollharness/reference/boll-reference/.claude/rules/coaching.md +0 -13
  151. package/src/bollharness/reference/boll-reference/.claude/rules/env-vars.md +0 -50
  152. package/src/bollharness/reference/boll-reference/.claude/rules/hackathon.md +0 -12
  153. package/src/bollharness/reference/boll-reference/.claude/rules/repo-structure.md +0 -184
  154. package/src/bollharness/reference/boll-reference/.claude/rules/review-agent-isolation.md +0 -112
  155. package/src/bollharness/reference/boll-reference/.claude/rules/scenes.md +0 -12
  156. package/src/bollharness/reference/boll-reference/.claude/skills/arch/SKILL.md +0 -551
  157. package/src/bollharness/reference/boll-reference/.claude/skills/boll-animation/SKILL.md +0 -26
  158. package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/SKILL.md +0 -227
  159. package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/agents/openai.yaml +0 -4
  160. package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/references/bridge-failure-taxonomy.md +0 -142
  161. package/src/bollharness/reference/boll-reference/.claude/skills/boll-bridge/references/bridge-validation-ladder.md +0 -107
  162. package/src/bollharness/reference/boll-reference/.claude/skills/boll-crystal/SKILL.md +0 -893
  163. package/src/bollharness/reference/boll-reference/.claude/skills/boll-crystal-learn/SKILL.md +0 -89
  164. package/src/bollharness/reference/boll-reference/.claude/skills/boll-dev/SKILL.md +0 -93
  165. package/src/bollharness/reference/boll-reference/.claude/skills/boll-dev/examples/README.md +0 -209
  166. package/src/bollharness/reference/boll-reference/.claude/skills/boll-dev-handoff/SKILL.md +0 -165
  167. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng/SKILL.md +0 -110
  168. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-frontend/SKILL.md +0 -203
  169. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-hdc/SKILL.md +0 -27
  170. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-orchestrator/SKILL.md +0 -28
  171. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-prompt/SKILL.md +0 -27
  172. package/src/bollharness/reference/boll-reference/.claude/skills/boll-eng-test/SKILL.md +0 -79
  173. package/src/bollharness/reference/boll-reference/.claude/skills/boll-lab/SKILL.md +0 -372
  174. package/src/bollharness/reference/boll-reference/.claude/skills/boll-run/SKILL.md +0 -437
  175. package/src/bollharness/reference/boll-reference/.claude/skills/boll-ux-appstore/SKILL.md +0 -27
  176. package/src/bollharness/reference/boll-reference/.claude/skills/boll-voice/SKILL.md +0 -442
  177. package/src/bollharness/reference/boll-reference/.claude/skills/guardian-fixer/PROMPT.md +0 -421
  178. package/src/bollharness/reference/boll-reference/.claude/skills/guardian-fixer/SKILL.md +0 -326
  179. package/src/bollharness/reference/boll-reference/.claude/skills/lead/SKILL.md +0 -155
  180. package/src/bollharness/reference/boll-reference/.claude/skills/lead/ref-review-sop.md +0 -91
  181. package/src/bollharness/reference/boll-reference/.claude/skills/lead/ref-stages.md +0 -129
  182. package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-preview.png +0 -0
  183. package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-v2.png +0 -0
  184. package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-v3.png +0 -0
  185. package/src/bollharness/reference/boll-reference/.claude/skills/nature-designer/output/skill-map-v4.png +0 -0
  186. package/src/bollharness/reference/boll-reference/.claude/skills/plan-lock/SKILL.md +0 -425
  187. package/src/bollharness/reference/boll-reference/.claude/skills/plan-lock/ref-three-checks.md +0 -62
  188. package/src/bollharness/reference/boll-reference/.claude/skills/plan-lock/ref-wp-templates.md +0 -78
  189. package/src/bollharness/reference/boll-reference/.claude/skills/task-arch/SKILL.md +0 -76
  190. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-graph/SKILL.md +0 -57
  191. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-graph/beads-graph.sh +0 -153
  192. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-init/SKILL.md +0 -52
  193. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-init/beads-auto-link.sh +0 -76
  194. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-sync/SKILL.md +0 -50
  195. package/src/bollharness/reference/boll-reference/.claude/skills/vibedevteam-sync/beads-sync-proj.sh +0 -108
  196. package/src/bollharness/reference/boll-reference/docs/architecture/AGENT-PROFILE.md +0 -151
  197. package/src/bollharness/reference/boll-reference/docs/architecture/COST-STRUCTURE.md +0 -56
  198. package/src/bollharness/reference/boll-reference/docs/architecture/INDEX.md +0 -76
  199. package/src/bollharness/reference/boll-reference/docs/architecture/MODULE1-INTENT-FIELD.md +0 -116
  200. package/src/bollharness/reference/boll-reference/docs/architecture/MODULE2-CRYSTALLIZATION.md +0 -200
  201. package/src/bollharness/reference/boll-reference/docs/architecture/PRINCIPLES.md +0 -84
  202. package/src/bollharness/reference/boll-reference/docs/architecture/PROTOCOL-CORE.md +0 -209
  203. package/src/bollharness/reference/boll-reference/docs/architecture/VISION.md +0 -181
  204. package/src/bollharness/reference/boll-reference/docs/architecture/discussions/D-01-MARKET-SCENE-PROTOCOL.md +0 -754
  205. package/src/bollharness/reference/boll-reference/scripts/hooks/stop-evaluator.md +0 -57
  206. package/src/bollharness/scripts/context-fragments/artifact-linkage.md +0 -14
  207. package/src/bollharness/scripts/context-fragments/auth-consumers.md +0 -17
  208. package/src/bollharness/scripts/context-fragments/bridge-constitution.md +0 -13
  209. package/src/bollharness/scripts/context-fragments/catalyst-distributed.md +0 -18
  210. package/src/bollharness/scripts/context-fragments/closure-checklist.md +0 -13
  211. package/src/bollharness/scripts/context-fragments/contract-consumers.md +0 -15
  212. package/src/bollharness/scripts/context-fragments/db-shared-structures.md +0 -15
  213. package/src/bollharness/scripts/context-fragments/fixed-three-layers.md +0 -19
  214. package/src/bollharness/scripts/context-fragments/general-dev-principles.md +0 -11
  215. package/src/bollharness/scripts/context-fragments/issue-first.md +0 -8
  216. package/src/bollharness/scripts/context-fragments/mcp-parity.md +0 -16
  217. package/src/bollharness/scripts/context-fragments/pi-agent-operations.md +0 -74
  218. package/src/bollharness/scripts/context-fragments/protocol-consumers.md +0 -15
  219. package/src/bollharness/scripts/context-fragments/run-events-consumers.md +0 -15
  220. package/src/bollharness/scripts/context-fragments/scene-fidelity.md +0 -13
  221. package/src/bollharness/scripts/context-fragments/truth-source-hierarchy.md +0 -15
  222. package/src/bollharness/scripts/context-fragments/two-language.md +0 -15
  223. package/src/bollharness/scripts/context-fragments/version-sources.md +0 -14
  224. package/src/bollharness/scripts/hooks/stop-evaluator.md +0 -83
  225. package/src/bollharness/templates/scaffold/.boll/guard/.gitkeep +0 -0
  226. package/src/bollharness/templates/scaffold/.boll/metrics/.gitkeep +0 -0
  227. package/src/bollharness/templates/scaffold/.boll/state/.gitkeep +0 -0
  228. package/src/bollharness/templates/scaffold/CLAUDE.md +0 -89
  229. package/src/bollharness/templates/scaffold/docs/INDEX.md +0 -3
  230. package/src/bollharness/templates/scaffold/docs/decisions/ADR_TEMPLATE.md +0 -38
  231. package/src/bollharness/templates/scaffold/docs/decisions/PLAN_TEMPLATE.md +0 -45
  232. package/src/bollharness/templates/scaffold/docs/decisions/tasks/.gitkeep +0 -2
  233. package/src/bollharness/templates/scaffold/docs/issues/.gitkeep +0 -0
  234. package/src/bollharness/templates/scaffold/docs/issues/GUARD_ISSUE_TEMPLATE.md +0 -35
  235. package/src/bollharness/templates/scaffold/docs/issues/ISSUE_TEMPLATE.md +0 -51
  236. package/src/bollharness/tsconfig.json +0 -26
  237. package/src/constraint-runtime/package-lock.json +0 -48
  238. package/src/constraint-runtime/package.json +0 -34
  239. package/src/constraint-runtime/src/_archive_helper.ts +0 -16
  240. package/src/constraint-runtime/src/agent/coordinator.ts +0 -71
  241. package/src/constraint-runtime/src/agent/index.ts +0 -1
  242. package/src/constraint-runtime/src/assistant/index.ts +0 -15
  243. package/src/constraint-runtime/src/bootstrap/index.ts +0 -15
  244. package/src/constraint-runtime/src/bootstrap_graph.ts +0 -17
  245. package/src/constraint-runtime/src/bridge/index.ts +0 -15
  246. package/src/constraint-runtime/src/buddy/index.ts +0 -15
  247. package/src/constraint-runtime/src/cli/index.ts +0 -15
  248. package/src/constraint-runtime/src/command_graph.ts +0 -20
  249. package/src/constraint-runtime/src/commands.ts +0 -83
  250. package/src/constraint-runtime/src/components/index.ts +0 -15
  251. package/src/constraint-runtime/src/constants/index.ts +0 -15
  252. package/src/constraint-runtime/src/constraint/budget.ts +0 -25
  253. package/src/constraint-runtime/src/constraint/index.ts +0 -3
  254. package/src/constraint-runtime/src/constraint/permission.ts +0 -28
  255. package/src/constraint-runtime/src/context.ts +0 -45
  256. package/src/constraint-runtime/src/coordinator/index.ts +0 -15
  257. package/src/constraint-runtime/src/cost_hook.ts +0 -6
  258. package/src/constraint-runtime/src/cost_tracker.ts +0 -9
  259. package/src/constraint-runtime/src/deferred_init.ts +0 -18
  260. package/src/constraint-runtime/src/direct_modes.ts +0 -13
  261. package/src/constraint-runtime/src/dynamic-tool-loader.ts +0 -115
  262. package/src/constraint-runtime/src/entrypoints/index.ts +0 -15
  263. package/src/constraint-runtime/src/execution_registry.ts +0 -41
  264. package/src/constraint-runtime/src/history.ts +0 -16
  265. package/src/constraint-runtime/src/hooks/index.ts +0 -15
  266. package/src/constraint-runtime/src/index.ts +0 -28
  267. package/src/constraint-runtime/src/ink.ts +0 -4
  268. package/src/constraint-runtime/src/keybindings/index.ts +0 -15
  269. package/src/constraint-runtime/src/memdir/index.ts +0 -15
  270. package/src/constraint-runtime/src/migrations/index.ts +0 -15
  271. package/src/constraint-runtime/src/models.ts +0 -49
  272. package/src/constraint-runtime/src/moreright/index.ts +0 -15
  273. package/src/constraint-runtime/src/native_ts/index.ts +0 -15
  274. package/src/constraint-runtime/src/output_styles/index.ts +0 -15
  275. package/src/constraint-runtime/src/parity_audit.ts +0 -23
  276. package/src/constraint-runtime/src/plugins/index.ts +0 -15
  277. package/src/constraint-runtime/src/port_manifest.ts +0 -20
  278. package/src/constraint-runtime/src/prefetch.ts +0 -17
  279. package/src/constraint-runtime/src/query.ts +0 -7
  280. package/src/constraint-runtime/src/reference_data/archive_surface_snapshot.json +0 -63
  281. package/src/constraint-runtime/src/reference_data/commands_snapshot.json +0 -1037
  282. package/src/constraint-runtime/src/reference_data/subsystems/OpenCLI.json +0 -10
  283. package/src/constraint-runtime/src/reference_data/subsystems/PolymarketSDK.json +0 -12
  284. package/src/constraint-runtime/src/reference_data/subsystems/SafeSDK.json +0 -14
  285. package/src/constraint-runtime/src/reference_data/subsystems/assistant.json +0 -8
  286. package/src/constraint-runtime/src/reference_data/subsystems/bootstrap.json +0 -8
  287. package/src/constraint-runtime/src/reference_data/subsystems/bridge.json +0 -32
  288. package/src/constraint-runtime/src/reference_data/subsystems/buddy.json +0 -13
  289. package/src/constraint-runtime/src/reference_data/subsystems/cli.json +0 -26
  290. package/src/constraint-runtime/src/reference_data/subsystems/components.json +0 -32
  291. package/src/constraint-runtime/src/reference_data/subsystems/constants.json +0 -28
  292. package/src/constraint-runtime/src/reference_data/subsystems/coordinator.json +0 -8
  293. package/src/constraint-runtime/src/reference_data/subsystems/entrypoints.json +0 -15
  294. package/src/constraint-runtime/src/reference_data/subsystems/hooks.json +0 -32
  295. package/src/constraint-runtime/src/reference_data/subsystems/keybindings.json +0 -21
  296. package/src/constraint-runtime/src/reference_data/subsystems/memdir.json +0 -15
  297. package/src/constraint-runtime/src/reference_data/subsystems/migrations.json +0 -18
  298. package/src/constraint-runtime/src/reference_data/subsystems/moreright.json +0 -8
  299. package/src/constraint-runtime/src/reference_data/subsystems/native_ts.json +0 -11
  300. package/src/constraint-runtime/src/reference_data/subsystems/outputStyles.json +0 -8
  301. package/src/constraint-runtime/src/reference_data/subsystems/plugins.json +0 -9
  302. package/src/constraint-runtime/src/reference_data/subsystems/remote.json +0 -11
  303. package/src/constraint-runtime/src/reference_data/subsystems/schemas.json +0 -8
  304. package/src/constraint-runtime/src/reference_data/subsystems/screens.json +0 -10
  305. package/src/constraint-runtime/src/reference_data/subsystems/server.json +0 -10
  306. package/src/constraint-runtime/src/reference_data/subsystems/services.json +0 -32
  307. package/src/constraint-runtime/src/reference_data/subsystems/skills.json +0 -27
  308. package/src/constraint-runtime/src/reference_data/subsystems/state.json +0 -13
  309. package/src/constraint-runtime/src/reference_data/subsystems/types.json +0 -18
  310. package/src/constraint-runtime/src/reference_data/subsystems/upstreamproxy.json +0 -9
  311. package/src/constraint-runtime/src/reference_data/subsystems/utils.json +0 -32
  312. package/src/constraint-runtime/src/reference_data/subsystems/vim.json +0 -12
  313. package/src/constraint-runtime/src/reference_data/subsystems/voice.json +0 -8
  314. package/src/constraint-runtime/src/reference_data/tools_snapshot.json +0 -1042
  315. package/src/constraint-runtime/src/remote/index.ts +0 -15
  316. package/src/constraint-runtime/src/remote_runtime.ts +0 -17
  317. package/src/constraint-runtime/src/runtime/index.ts +0 -1
  318. package/src/constraint-runtime/src/runtime/session.ts +0 -42
  319. package/src/constraint-runtime/src/schemas/index.ts +0 -15
  320. package/src/constraint-runtime/src/screens/index.ts +0 -15
  321. package/src/constraint-runtime/src/server/index.ts +0 -15
  322. package/src/constraint-runtime/src/services/index.ts +0 -15
  323. package/src/constraint-runtime/src/session_store.ts +0 -32
  324. package/src/constraint-runtime/src/setup.ts +0 -50
  325. package/src/constraint-runtime/src/skills/index.ts +0 -1
  326. package/src/constraint-runtime/src/skills/skill-registry.ts +0 -40
  327. package/src/constraint-runtime/src/state/index.ts +0 -15
  328. package/src/constraint-runtime/src/system_init.ts +0 -21
  329. package/src/constraint-runtime/src/thinking/engine.ts +0 -61
  330. package/src/constraint-runtime/src/thinking/index.ts +0 -1
  331. package/src/constraint-runtime/src/tool_pool.ts +0 -20
  332. package/src/constraint-runtime/src/tools/OpenCLI/execAdapter.ts +0 -12
  333. package/src/constraint-runtime/src/tools/OpenCLI/listAdapters.ts +0 -12
  334. package/src/constraint-runtime/src/tools/OpenCLI/runCommand.ts +0 -13
  335. package/src/constraint-runtime/src/tools/PolymarketSDK/cancelOrder.ts +0 -10
  336. package/src/constraint-runtime/src/tools/PolymarketSDK/createOrder.ts +0 -13
  337. package/src/constraint-runtime/src/tools/PolymarketSDK/getMarket.ts +0 -14
  338. package/src/constraint-runtime/src/tools/PolymarketSDK/getOrders.ts +0 -10
  339. package/src/constraint-runtime/src/tools/PolymarketSDK/listMarkets.ts +0 -24
  340. package/src/constraint-runtime/src/tools/SafeSDK/confirmTransaction.ts +0 -13
  341. package/src/constraint-runtime/src/tools/SafeSDK/createTransaction.ts +0 -23
  342. package/src/constraint-runtime/src/tools/SafeSDK/deploySafe.ts +0 -12
  343. package/src/constraint-runtime/src/tools/SafeSDK/executeTransaction.ts +0 -12
  344. package/src/constraint-runtime/src/tools/SafeSDK/getBalance.ts +0 -10
  345. package/src/constraint-runtime/src/tools/SafeSDK/getPendingTransactions.ts +0 -10
  346. package/src/constraint-runtime/src/tools/SafeSDK/proposeTransaction.ts +0 -14
  347. package/src/constraint-runtime/src/tools/WalletTools/autoPay.ts +0 -58
  348. package/src/constraint-runtime/src/tools/WalletTools/createWallet.ts +0 -19
  349. package/src/constraint-runtime/src/tools/WalletTools/getBalance.ts +0 -28
  350. package/src/constraint-runtime/src/tools/WalletTools/importWallet.ts +0 -34
  351. package/src/constraint-runtime/src/tools/WalletTools/sendTransaction.ts +0 -50
  352. package/src/constraint-runtime/src/tools/WalletTools/signMessage.ts +0 -23
  353. package/src/constraint-runtime/src/tools/WalletTools/transferToken.ts +0 -49
  354. package/src/constraint-runtime/src/tools.ts +0 -100
  355. package/src/constraint-runtime/src/transcript.ts +0 -23
  356. package/src/constraint-runtime/src/types/index.ts +0 -15
  357. package/src/constraint-runtime/src/upstream_proxy/index.ts +0 -15
  358. package/src/constraint-runtime/src/utils/index.ts +0 -15
  359. package/src/constraint-runtime/src/vim/index.ts +0 -15
  360. package/src/constraint-runtime/src/voice/index.ts +0 -15
  361. package/src/constraint-runtime/tests/agent.test.ts +0 -20
  362. package/src/constraint-runtime/tests/constraint.test.ts +0 -47
  363. package/src/constraint-runtime/tests/skill.test.ts +0 -23
  364. package/src/constraint-runtime/tests/thinking.test.ts +0 -28
  365. package/src/constraint-runtime/tsconfig.json +0 -13
  366. package/src/pi-ecosystem/index.ts +0 -453
  367. package/src/pi-ecosystem-colony/index.ts +0 -482
  368. package/src/pi-ecosystem-goals/index.ts +0 -585
  369. package/src/pi-ecosystem-judgment/decision.ts +0 -431
  370. package/src/pi-ecosystem-judgment/distillation.ts +0 -398
  371. package/src/pi-ecosystem-judgment/human-value-store.ts +0 -580
  372. package/src/pi-ecosystem-judgment/index.ts +0 -678
  373. package/src/pi-ecosystem-judgment/value-injection.ts +0 -744
  374. package/src/pi-ecosystem-mcp/index.ts +0 -427
  375. package/src/pi-ecosystem-subagents/index.ts +0 -408
  376. package/src/test/ai-judgment-test.ts +0 -92
  377. package/src/test/bollharness-integration.test.ts +0 -398
  378. package/src/test/channel-agent-multi-dialogue.ts +0 -265
  379. package/src/test/channel-heartbeat-agent-test.ts +0 -244
  380. package/src/test/constraint-layer.test.ts +0 -191
  381. package/src/test/diap-identity-test.ts +0 -222
  382. package/src/test/diap-quick-test.ts +0 -73
  383. package/src/test/global-shared-context.test.ts +0 -393
  384. package/src/test/harness-judgment-injection.test.ts +0 -353
  385. package/src/test/harness-workflow-integrator-test.ts +0 -285
  386. package/src/test/human-value-store.test.ts +0 -316
  387. package/src/test/hybrid-integration-test.ts +0 -126
  388. package/src/test/hybrid-messenger-verify.ts +0 -68
  389. package/src/test/iroh-bistream-debug.ts +0 -50
  390. package/src/test/iroh-communication.test.ts +0 -81
  391. package/src/test/iroh-debug-test.ts +0 -69
  392. package/src/test/iroh-diap-test.ts +0 -90
  393. package/src/test/iroh-direct-connect.ts +0 -65
  394. package/src/test/iroh-e2e-fixed.ts +0 -106
  395. package/src/test/iroh-e2e-same-process.ts +0 -83
  396. package/src/test/iroh-e2e.ts +0 -83
  397. package/src/test/iroh-final-e2e.ts +0 -84
  398. package/src/test/iroh-relay-test.ts +0 -46
  399. package/src/test/iroh-simple-test.ts +0 -49
  400. package/src/test/iroh-transport-verify.ts +0 -60
  401. package/src/test/iroh-transport.test.ts +0 -47
  402. package/src/test/iroh-two-nodes.ts +0 -87
  403. package/src/test/iroh-verify.ts +0 -55
  404. package/src/test/judgment-decision.test.ts +0 -373
  405. package/src/test/llm-judgment-integration.test.ts +0 -257
  406. package/src/test/p2p-agent-complex-dialogue.ts +0 -490
  407. package/src/test/p2p-agent-dialogue.ts +0 -423
  408. package/src/test/p2p-agent-full-bidirectional.ts +0 -686
  409. package/src/test/p2p-agent-harness-flow.ts +0 -562
  410. package/src/test/p2p-agent-harness-single.ts +0 -175
  411. package/src/test/p2p-ai-dialogue-test.ts +0 -374
  412. package/src/test/p2p-cid-connect-test.ts +0 -245
  413. package/src/test/p2p-connect-receiver.ts +0 -85
  414. package/src/test/p2p-iroh-test.ts +0 -214
  415. package/src/test/p2p-minimal-test.ts +0 -264
  416. package/src/test/p2p-node-1.ts +0 -172
  417. package/src/test/p2p-node-2.ts +0 -172
  418. package/src/test/p2p-server.ts +0 -335
  419. package/src/test/p2p-two-nodes-test.ts +0 -542
  420. package/src/test/pi-sdk.test.ts +0 -47
  421. package/src/test/set-persona.ts +0 -56
  422. package/src/test/simple.test.ts +0 -11
  423. package/src/test/storage-integration.test.ts +0 -191
  424. package/src/test/subagent-manager.test.ts +0 -392
  425. package/src/test/test-gate-flow.test.ts +0 -92
  426. package/src/test/workflow-engine.test.ts +0 -101
  427. package/src/web/design.md +0 -99
  428. package/src/workflows/collaboration.ts +0 -455
  429. package/src/workflows/index.ts +0 -64
  430. package/vitest.config.ts +0 -12
  431. package//346/203/263/346/263/225.md +0 -79
@@ -1,744 +0,0 @@
1
- /**
2
- * Value Injection - 人类价值观注入到 LLM Prompt
3
- *
4
- * 核心思想:
5
- * - 不只给 LLM 规则,而是给 LLM "做决定的人"的价值观
6
- * - 价值观通过具体的决策例子体现,而非抽象原则
7
- * - 让 LLM 理解"为什么会这样决定"而非"应该怎么做"
8
- *
9
- * 注入方式:
10
- * 1. 价值观标签 - 告诉 LLM 这个人重视什么
11
- * 2. 决策例子 - 具体的人类判断样本
12
- * 3. 优先级规则 - 冲突时的决策倾向
13
- * 4. 边界条件 - 在什么情况下会改变决定
14
- */
15
-
16
- import {
17
- getRelevantValues,
18
- getValueProfile,
19
- getPriorityRules,
20
- type ValueTag,
21
- type ValueProfile,
22
- type PriorityRule,
23
- type HumanJudgment
24
- } from './human-value-store.js';
25
- import { getModel, isModelAvailable } from '../llm/pi-ai.js';
26
-
27
- export interface ValueInjectionConfig {
28
- // 注入模式
29
- mode: 'concise' | 'standard' | 'detailed';
30
-
31
- // 最大注入内容长度
32
- maxTokens: number;
33
-
34
- // 是否包含决策例子
35
- includeExamples: boolean;
36
-
37
- // 是否包含优先级规则
38
- includeRules: boolean;
39
-
40
- // 是否包含边界条件
41
- includeBoundaries: boolean;
42
-
43
- // 价值观来源
44
- source: 'current-user' | 'team' | 'project' | 'all';
45
- }
46
-
47
- export const DEFAULT_INJECTION_CONFIG: ValueInjectionConfig = {
48
- mode: 'standard',
49
- maxTokens: 800,
50
- includeExamples: true,
51
- includeRules: true,
52
- includeBoundaries: true,
53
- source: 'current-user'
54
- };
55
-
56
- // ============================================================
57
- // 价值观注入生成
58
- // ============================================================
59
-
60
- /**
61
- * 生成价值观注入内容
62
- */
63
- export async function generateValueInjection(
64
- context: string,
65
- config: Partial<ValueInjectionConfig> = {}
66
- ): Promise<string> {
67
- const cfg = { ...DEFAULT_INJECTION_CONFIG, ...config };
68
-
69
- const parts: string[] = [];
70
-
71
- // 1. 获取相关价值观
72
- const values = await getRelevantValues(context);
73
- if (values.length > 0) {
74
- parts.push(generateValuesSection(values, cfg.mode));
75
- }
76
-
77
- // 2. 获取优先级规则
78
- if (cfg.includeRules) {
79
- const rules = await getPriorityRules();
80
- if (rules.length > 0) {
81
- parts.push(generateRulesSection(rules, cfg.mode));
82
- }
83
- }
84
-
85
- // 3. 获取决策例子
86
- if (cfg.includeExamples) {
87
- const examples = await getDecisionExamples(context, 3);
88
- if (examples.length > 0) {
89
- parts.push(generateExamplesSection(examples, cfg.mode));
90
- }
91
- }
92
-
93
- // 组合并截断到最大长度
94
- let injection = parts.join('\n\n');
95
-
96
- // 简单截断(实际应该用 token 计数)
97
- const maxChars = cfg.maxTokens * 4; // 粗略估计
98
- if (injection.length > maxChars) {
99
- injection = injection.substring(0, maxChars) + '\n... (价值观注入已截断)';
100
- }
101
-
102
- return injection;
103
- }
104
-
105
- // ============================================================
106
- // 情境感知价值观注入(LLM 语义匹配)
107
- // ============================================================
108
-
109
- export interface SituationMatch {
110
- judgment: HumanJudgment;
111
- situationalScore: number; // LLM 判断的当前情境相关度 0-1
112
- dynamicConfidence: number; // situationalScore × historicalConfidence
113
- relevanceReason: string; // LLM 给出的相关原因
114
- }
115
-
116
- export interface SituationalInjectionResult {
117
- matches: SituationMatch[];
118
- injection: string;
119
- situation: string;
120
- matchedCount: number;
121
- }
122
-
123
- /**
124
- * 使用 LLM 判断一条 judgment 在当前情境下的相关性
125
- * 返回 situationalScore (0-1) 和 reason
126
- */
127
- async function scoreJudgmentRelevance(
128
- judgment: HumanJudgment,
129
- situation: string
130
- ): Promise<{ score: number; reason: string }> {
131
- if (!isModelAvailable()) {
132
- return { score: 0.5, reason: 'LLM 不可用,使用默认分数' };
133
- }
134
-
135
- const model = getModel();
136
-
137
- const prompt = `判断以下人类判断在当前情境下的相关性。
138
-
139
- 情境:${situation}
140
-
141
- 历史判断:
142
- - 决策:${judgment.decision}
143
- - 理由:${judgment.reasons.join('; ')}
144
- - 价值观:${judgment.values_derived.map(v => `${v.value}(${v.category})`).join(', ')}
145
- - 领域:${judgment.context?.domain || '未指定'}
146
- - 决定类型:${judgment.decision_type}
147
-
148
- 请判断这个历史判断对理解当前情境有多大帮助。考虑:
149
- 1. 情境是否相似?(相似 = 相关)
150
- 2. 价值观是否适用于当前情境?
151
- 3. 这个判断能帮助理解用户的决策倾向吗?
152
-
153
- 请用 JSON 格式输出:
154
- {
155
- "score": 0.0-1.0 的相关性分数(0 = 完全不相关,1 = 高度相关),
156
- "reason": 一句话说明为什么相关或不相关
157
- }
158
-
159
- 直接输出 JSON,不需要解释。`;
160
-
161
- try {
162
- const result = await model.chat(prompt, '');
163
- const reply = result.reply.trim();
164
-
165
- const jsonMatch = reply.match(/\{[\s\S]*?\}/);
166
- if (jsonMatch) {
167
- const parsed = JSON.parse(jsonMatch[0]);
168
- const score = Math.max(0, Math.min(1, parseFloat(parsed.score) || 0));
169
- return { score, reason: parsed.reason || '' };
170
- }
171
- } catch {
172
- // fall through
173
- }
174
-
175
- return { score: 0.5, reason: '解析失败,使用默认分数' };
176
- }
177
-
178
- /**
179
- * 使用 LLM 对所有 judgment 做情境语义匹配
180
- * 这是情境感知注入的核心
181
- */
182
- export async function getSituationallyRelevantJudgments(
183
- situation: string,
184
- history: string[] = [],
185
- options: {
186
- maxJudgments?: number;
187
- minScore?: number;
188
- } = {}
189
- ): Promise<SituationMatch[]> {
190
- const { loadAllJudgments } = await import('./human-value-store.js');
191
- const judgments = await loadAllJudgments();
192
-
193
- if (judgments.length === 0) {
194
- return [];
195
- }
196
-
197
- const { maxJudgments = 10, minScore = 0.3 } = options;
198
-
199
- const historyText = history.length > 0
200
- ? `对话历史:\n${history.slice(-3).map((h, i) => `[${i + 1}] ${h}`).join('\n')}`
201
- : '无对话历史';
202
-
203
- const batchSize = 5;
204
- const results: SituationMatch[] = [];
205
-
206
- for (let i = 0; i < judgments.length; i += batchSize) {
207
- const batch = judgments.slice(i, i + batchSize);
208
- const batchPromises = batch.map(async (j): Promise<SituationMatch> => {
209
- const { score, reason } = await scoreJudgmentRelevance(j, situation);
210
- const dynamicConfidence = score * j.metadata.confidence;
211
-
212
- return {
213
- judgment: j,
214
- situationalScore: score,
215
- dynamicConfidence,
216
- relevanceReason: reason,
217
- };
218
- });
219
-
220
- const batchResults = await Promise.all(batchPromises);
221
- results.push(...batchResults);
222
-
223
- if (i + batchSize < judgments.length) {
224
- await new Promise(r => setTimeout(r, 50));
225
- }
226
- }
227
-
228
- return results
229
- .filter(m => m.situationalScore >= minScore)
230
- .sort((a, b) => b.dynamicConfidence - a.dynamicConfidence)
231
- .slice(0, maxJudgments);
232
- }
233
-
234
- /**
235
- * 生成情境感知的价值观注入
236
- * 使用 LLM 语义匹配而非关键词匹配
237
- */
238
- export async function generateSituationalValueInjection(
239
- situation: string,
240
- history: string[] = [],
241
- options: {
242
- mode?: ValueInjectionConfig['mode'];
243
- maxJudgments?: number;
244
- includeExamples?: boolean;
245
- includeReasoning?: boolean;
246
- minJudgmentCountForLLM?: number;
247
- } = {}
248
- ): Promise<SituationalInjectionResult> {
249
- const {
250
- mode = 'standard',
251
- maxJudgments = 5,
252
- includeExamples = true,
253
- includeReasoning = true,
254
- minJudgmentCountForLLM = 3,
255
- } = options;
256
-
257
- const { loadAllJudgments } = await import('./human-value-store.js');
258
- const totalJudgments = (await loadAllJudgments()).length;
259
-
260
- if (totalJudgments < minJudgmentCountForLLM) {
261
- const fallbackInjection = await generateValueInjection(situation, {
262
- mode,
263
- maxTokens: 600,
264
- includeExamples: true,
265
- includeRules: true,
266
- });
267
-
268
- return {
269
- matches: [],
270
- injection: fallbackInjection,
271
- situation,
272
- matchedCount: 0,
273
- };
274
- }
275
-
276
- const matches = await getSituationallyRelevantJudgments(situation, history, {
277
- maxJudgments,
278
- minScore: 0.3,
279
- });
280
-
281
- if (matches.length === 0) {
282
- return {
283
- matches: [],
284
- injection: '',
285
- situation,
286
- matchedCount: 0,
287
- };
288
- }
289
-
290
- const parts: string[] = [];
291
-
292
- const situationHeader = mode === 'concise'
293
- ? `## 当前情境\n${situation}`
294
- : `## 当前决策情境\n\n${situation}`;
295
-
296
- parts.push(situationHeader);
297
-
298
- if (mode !== 'concise') {
299
- const matchSummary = matches.map(m =>
300
- ` - "${m.judgment.decision}"(相关度 ${(m.situationalScore * 100).toFixed(0)}%)`
301
- ).join('\n');
302
- parts.push(`\n匹配的判断(共 ${matches.length} 条):\n${matchSummary}`);
303
- }
304
-
305
- const topMatches = matches.slice(0, 3);
306
-
307
- if (includeReasoning && mode !== 'concise') {
308
- const reasoningLines = ['\n## 判断相关性说明\n'];
309
- for (const m of topMatches) {
310
- reasoningLines.push(`**"${m.judgment.decision.substring(0, 30)}..."**`);
311
- reasoningLines.push(` 相关度: ${(m.situationalScore * 100).toFixed(0)}%(${m.relevanceReason})`);
312
- reasoningLines.push('');
313
- }
314
- parts.push(reasoningLines.join('\n'));
315
- }
316
-
317
- const valuesSection = generateSituationBasedValues(topMatches, mode);
318
- if (valuesSection) {
319
- parts.push(valuesSection);
320
- }
321
-
322
- if (includeExamples) {
323
- const examplesSection = generateSituationBasedExamples(topMatches, mode);
324
- if (examplesSection) {
325
- parts.push(examplesSection);
326
- }
327
- }
328
-
329
- let injection = parts.join('\n');
330
-
331
- const maxChars = 800 * 4;
332
- if (injection.length > maxChars) {
333
- injection = injection.substring(0, maxChars) + '\n...(价值观注入已截断)';
334
- }
335
-
336
- return {
337
- matches,
338
- injection,
339
- situation,
340
- matchedCount: matches.length,
341
- };
342
- }
343
-
344
- function generateSituationBasedValues(matches: SituationMatch[], mode: ValueInjectionConfig['mode']): string {
345
- if (mode === 'concise') {
346
- const top = matches.slice(0, 3);
347
- return `\n## 适用的价值观\n${top.map(m =>
348
- `- ${m.judgment.values_derived[0]?.value || '一般偏好'} (${(m.dynamicConfidence * 100).toFixed(0)}% 置信度)`
349
- ).join('\n')}`;
350
- }
351
-
352
- const lines = ['\n## 当前情境下适用的价值观\n'];
353
- lines.push('基于历史判断,这些价值观在当前决策中最重要:\n');
354
-
355
- const aggregatedValues = new Map<string, { weight: number; count: number; category: string }>();
356
- for (const m of matches) {
357
- for (const v of m.judgment.values_derived) {
358
- const key = v.value;
359
- const existing = aggregatedValues.get(key);
360
- if (existing) {
361
- existing.weight = Math.min(1, existing.weight + v.weight * m.situationalScore);
362
- existing.count++;
363
- } else {
364
- aggregatedValues.set(key, {
365
- weight: v.weight * m.situationalScore,
366
- count: 1,
367
- category: v.category,
368
- });
369
- }
370
- }
371
- }
372
-
373
- const sorted = Array.from(aggregatedValues.entries())
374
- .sort((a, b) => b[1].weight - a[1].weight);
375
-
376
- for (let i = 0; i < Math.min(sorted.length, 5); i++) {
377
- const [value, { weight, count }] = sorted[i];
378
- const stars = '★'.repeat(Math.ceil(weight * 5));
379
- lines.push(`${i + 1}. **${value}** ${stars} (${(weight * 100).toFixed(0)}% 相关度)`);
380
- }
381
-
382
- return lines.join('\n');
383
- }
384
-
385
- function generateSituationBasedExamples(matches: SituationMatch[], mode: ValueInjectionConfig['mode']): string {
386
- const examples = matches
387
- .filter(m => m.judgment.decision_type !== 'modify')
388
- .slice(0, 3);
389
-
390
- if (examples.length === 0) return '';
391
-
392
- if (mode === 'concise') {
393
- return `\n## 类似决策参考\n${examples.map(e =>
394
- `- ${e.judgment.decision_type === 'approve' ? '✅' : '❌'} "${e.judgment.decision.substring(0, 30)}..."`
395
- ).join('\n')}`;
396
- }
397
-
398
- const lines = ['\n## 类似的历史决策参考\n'];
399
- lines.push('以下是你过去在类似情境下做出的决策,可作为参考:\n');
400
-
401
- for (const e of examples) {
402
- const emoji = e.judgment.decision_type === 'approve' ? '✅' :
403
- e.judgment.decision_type === 'reject' ? '❌' : '📝';
404
- lines.push(`### ${emoji} ${e.judgment.decision.substring(0, 50)}`);
405
- if (e.relevanceReason) {
406
- lines.push(` 相关原因: ${e.relevanceReason}`);
407
- }
408
- if (e.judgment.reasons.length > 0) {
409
- lines.push(` 理由: ${e.judgment.reasons[0]}`);
410
- }
411
- lines.push('');
412
- }
413
-
414
- return lines.join('\n');
415
- }
416
-
417
- /**
418
- * 生成完整的基于情境的判断 Prompt
419
- * 这是 generateJudgmentPromptWithValues 的情境感知版本
420
- */
421
- export async function generateSituationAwarePrompt(
422
- userInput: string,
423
- situation: string,
424
- history: string[] = [],
425
- options: {
426
- mode?: ValueInjectionConfig['mode'];
427
- includeExamples?: boolean;
428
- maxJudgments?: number;
429
- } = {}
430
- ): Promise<string> {
431
- const injection = await generateSituationalValueInjection(
432
- situation,
433
- history,
434
- options
435
- );
436
-
437
- const historyStr = history.length > 0
438
- ? history.slice(-5).map((m, i) => `[${i + 1}] ${m}`).join('\n')
439
- : '无';
440
-
441
- const matchInfo = injection.matchedCount > 0
442
- ? `\n已从 ${injection.matchedCount} 条历史判断中匹配到相关价值观。`
443
- : '\n未找到相关历史判断。';
444
-
445
- return `${injection.injection}${matchInfo}
446
-
447
- ---
448
-
449
- 【当前输入】
450
- ${userInput}
451
-
452
- 【对话历史】
453
- ${historyStr}
454
-
455
- ---
456
-
457
- 请基于以上情境相关的价值观和历史判断,分析当前输入并给出决策建议。`;
458
- }
459
-
460
- /**
461
- * 生成价值观部分
462
- */
463
- function generateValuesSection(values: ValueTag[], mode: ValueInjectionConfig['mode']): string {
464
- if (mode === 'concise') {
465
- const topValues = values.slice(0, 3);
466
- return `## 决策者价值观
467
- ${topValues.map(v => `- 重视 ${v.value} (${(v.weight * 100).toFixed(0)}% 权重)`).join('\n')}`;
468
- }
469
-
470
- if (mode === 'detailed') {
471
- return `## 决策者的价值观体系
472
-
473
- 这个人的决策反映了以下价值观优先级:
474
-
475
- ${values.map(v => {
476
- const stars = '★'.repeat(Math.ceil(v.weight * 5));
477
- return `### ${v.category}: ${v.value}
478
- 权重: ${stars} (${(v.weight * 100).toFixed(0)}%)
479
- - 决策时会优先考虑这个价值
480
- `;
481
- }).join('\n')}`;
482
- }
483
-
484
- // standard mode
485
- return `## 决策者重视的价值观
486
-
487
- 优先级排序:
488
- ${values.slice(0, 5).map((v, i) => `${i + 1}. ${v.value} (${(v.weight * 100).toFixed(0)}% 权重)`).join('\n')}
489
-
490
- 这些价值观将影响判断结果。`;
491
- }
492
-
493
- /**
494
- * 生成优先级规则部分
495
- */
496
- function generateRulesSection(rules: PriorityRule[], mode: ValueInjectionConfig['mode']): string {
497
- if (mode === 'concise') {
498
- return `## 决策倾向
499
- ${rules.slice(0, 3).map(r => `- ${r.when} → 偏好 ${r.prefer}`).join('\n')}`;
500
- }
501
-
502
- if (mode === 'detailed') {
503
- return `## 决策优先级规则
504
-
505
- 当遇到以下情况时,决策者会这样选择:
506
-
507
- ${rules.slice(0, 5).map((r, i) => `### 规则 ${i + 1}: ${r.when}
508
- - 偏好: ${r.prefer}
509
- - 理由: ${r.reason}
510
- - 置信度: ${(r.weight * 100).toFixed(0)}%
511
- `).join('\n')}`;
512
- }
513
-
514
- // standard mode
515
- return `## 决策优先级
516
-
517
- 在价值冲突时,以下优先级生效:
518
-
519
- ${rules.slice(0, 4).map(r => `- **${r.when}**: ${r.prefer}(因为 ${r.reason})`).join('\n')}`;
520
- }
521
-
522
- /**
523
- * 生成决策例子部分
524
- */
525
- function generateExamplesSection(judgments: HumanJudgment[], mode: ValueInjectionConfig['mode']): string {
526
- if (mode === 'concise') {
527
- return `## 历史决策
528
- ${judgments.slice(0, 2).map(j => `- "${j.decision.substring(0, 40)}..." → ${j.decision_type}(理由: ${j.reasons[0] || '无'})`).join('\n')}`;
529
- }
530
-
531
- if (mode === 'detailed') {
532
- return `## 历史决策样本(学习自真实判断)
533
-
534
- 以下是决策者过去做出的具体判断,每个都反映了其价值观:
535
-
536
- ${judgments.map((j, i) => `### 决策 ${i + 1}
537
- **情境**: ${j.decision}
538
- **决定**: ${j.decision_type}
539
- **理由**: ${j.reasons.join('; ') || '未说明'}
540
- **价值观**: ${j.values_derived.map(v => v.value).join(', ') || '未提取'}
541
- **结果**: ${j.outcome?.approved ? '✅ 成功' : '❌ 未成功'}
542
- `).join('\n\n')}`;
543
- }
544
-
545
- // standard mode
546
- return `## 类似情况的历史决策
547
-
548
- 决策者在以下情况做过类似判断:
549
-
550
- ${judgments.slice(0, 3).map(j => `- **情况**: "${j.decision.substring(0, 50)}..."
551
- **决定**: ${j.decision_type}
552
- **理由**: ${j.reasons[0] || '未说明'}
553
- `).join('\n\n')}`;
554
- }
555
-
556
- /**
557
- * 获取决策例子
558
- */
559
- async function getDecisionExamples(context: string, limit: number): Promise<HumanJudgment[]> {
560
- const { loadAllJudgments } = await import('./human-value-store.js');
561
- const judgments = await loadAllJudgments();
562
-
563
- const keywords = context.split(/[\s,,、]+/).filter(k => k.length >= 2);
564
- const contextLower = context.toLowerCase();
565
-
566
- const scored = judgments.map(j => {
567
- let score = 0;
568
- const decisionLower = j.decision.toLowerCase();
569
- const reasonsLower = j.reasons.map(r => r.toLowerCase());
570
-
571
- if (keywords.length === 0) {
572
- if (decisionLower.includes(contextLower)) score += 2;
573
- if (reasonsLower.some(r => r.includes(contextLower))) score += 1;
574
- } else {
575
- if (keywords.some(kw => decisionLower.includes(kw.toLowerCase()))) score += 2;
576
- if (keywords.some(kw => reasonsLower.some(r => r.includes(kw.toLowerCase())))) score += 1;
577
- }
578
-
579
- if (j.values_derived.some(v => contextLower.includes(v.value.toLowerCase()))) score += 1;
580
- score *= j.metadata.confidence;
581
-
582
- return { judgment: j, score };
583
- });
584
-
585
- return scored
586
- .filter(s => s.score > 0)
587
- .sort((a, b) => b.score - a.score)
588
- .slice(0, limit)
589
- .map(s => s.judgment);
590
- }
591
-
592
- // ============================================================
593
- // Prompt 注入
594
- // ============================================================
595
-
596
- /**
597
- * 生成完整的系统 Prompt(包含价值观注入)
598
- */
599
- export async function generateSystemPromptWithValues(
600
- basePrompt: string,
601
- context: string,
602
- config: Partial<ValueInjectionConfig> = {}
603
- ): Promise<string> {
604
- const injection = await generateValueInjection(context, config);
605
-
606
- return `${basePrompt}
607
-
608
- ---
609
-
610
- ## 决策参考(来自真实人类判断)
611
-
612
- 以下信息来自对人类决策的学习,在判断时应该参考这些价值观和决策模式:
613
-
614
- ${injection}
615
-
616
- ---
617
-
618
- 请在做出判断时,结合上述价值观和决策模式进行思考。`;
619
- }
620
-
621
- /**
622
- * 生成判断用的 Prompt(包含价值观)
623
- */
624
- export async function generateJudgmentPromptWithValues(
625
- userInput: string,
626
- context: string,
627
- history: string[],
628
- config: Partial<ValueInjectionConfig> = {}
629
- ): Promise<string> {
630
- const cfg = { ...DEFAULT_INJECTION_CONFIG, ...config };
631
- const valueInjection = await generateValueInjection(context, cfg);
632
-
633
- const historyStr = history.length > 0
634
- ? history.slice(-5).map((m, i) => `[${i + 1}] ${m}`).join('\n')
635
- : '无';
636
-
637
- return `${valueInjection}
638
-
639
- ---
640
-
641
- 【当前输入】
642
- ${userInput}
643
-
644
- 【对话历史】
645
- ${historyStr}
646
-
647
- ---
648
-
649
- 请基于以上价值观和历史对话,分析当前输入并给出判断。`;
650
- }
651
-
652
- // ============================================================
653
- // 辅助函数
654
- // ============================================================
655
-
656
- /**
657
- * 生成价值摘要
658
- */
659
- export async function generateValueSummary(): Promise<string> {
660
- const { getValueStats } = await import('./human-value-store.js');
661
- const stats = await getValueStats();
662
-
663
- if (stats.total_judgments === 0) {
664
- return '暂无价值观数据,请先通过决策学习积累判断样本。';
665
- }
666
-
667
- const topValuesStr = stats.top_values
668
- .slice(0, 5)
669
- .map(v => `${v.value}(${(v.weight * 100).toFixed(0)}%)`)
670
- .join(', ');
671
-
672
- return `已学习 ${stats.total_judgments} 个判断样本。` +
673
- `核心价值观: ${topValuesStr}。` +
674
- `判断类型分布: ${Object.entries(stats.by_type).map(([k, v]) => `${k}:${v}`).join(', ')}。`;
675
- }
676
-
677
- /**
678
- * 检测价值观冲突
679
- */
680
- export async function detectValueConflicts(
681
- decision1: string,
682
- decision2: string
683
- ): Promise<{ hasConflict: boolean; conflicts: string[] }> {
684
- const values1 = await getRelevantValues(decision1);
685
- const values2 = await getRelevantValues(decision2);
686
-
687
- const conflicts: string[] = [];
688
-
689
- for (const v1 of values1) {
690
- for (const v2 of values2) {
691
- if (v1.category === v2.category && v1.value !== v2.value) {
692
- if (Math.abs(v1.weight - v2.weight) > 0.3) {
693
- conflicts.push(`${v1.category}: ${v1.value} vs ${v2.value}`);
694
- }
695
- }
696
- }
697
- }
698
-
699
- return {
700
- hasConflict: conflicts.length > 0,
701
- conflicts
702
- };
703
- }
704
-
705
- /**
706
- * 根据价值观建议决策方向
707
- */
708
- export async function suggestBasedOnValues(
709
- situation: string,
710
- options: string[]
711
- ): Promise<{ recommended: string; reasoning: string }> {
712
- const profile = await getValueProfile('current');
713
- const values = await getRelevantValues(situation);
714
-
715
- // 简单评分
716
- const scores = options.map(option => {
717
- let score = 0;
718
- const optionLower = option.toLowerCase();
719
-
720
- // 匹配价值观
721
- for (const v of values) {
722
- if (optionLower.includes(v.value)) {
723
- score += v.weight;
724
- }
725
- // 匹配优先规则
726
- if (optionLower.includes('quality') || optionLower.includes('安全')) {
727
- score += profile.quality_focus * 0.3;
728
- }
729
- if (optionLower.includes('fast') || optionLower.includes('快速')) {
730
- score += profile.efficiency_focus * 0.3;
731
- }
732
- }
733
-
734
- return score;
735
- });
736
-
737
- const bestIndex = scores.indexOf(Math.max(...scores));
738
- const recommended = options[bestIndex];
739
-
740
- const reasoning = `基于你的价值观(优先: ${values.slice(0, 3).map(v => v.value).join(', ')}),` +
741
- `建议选择"${recommended}"。`;
742
-
743
- return { recommended, reasoning };
744
- }