@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
  * Pi Goals Integration for Bolloon
4
3
  *
@@ -12,60 +11,8 @@
12
11
  * - Workflow templates with {{args}} placeholders
13
12
  * - Churn monitoring to detect drift/stalling
14
13
  */
15
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
16
- if (k2 === undefined) k2 = k;
17
- var desc = Object.getOwnPropertyDescriptor(m, k);
18
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
19
- desc = { enumerable: true, get: function() { return m[k]; } };
20
- }
21
- Object.defineProperty(o, k2, desc);
22
- }) : (function(o, m, k, k2) {
23
- if (k2 === undefined) k2 = k;
24
- o[k2] = m[k];
25
- }));
26
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
27
- Object.defineProperty(o, "default", { enumerable: true, value: v });
28
- }) : function(o, v) {
29
- o["default"] = v;
30
- });
31
- var __importStar = (this && this.__importStar) || (function () {
32
- var ownKeys = function(o) {
33
- ownKeys = Object.getOwnPropertyNames || function (o) {
34
- var ar = [];
35
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
36
- return ar;
37
- };
38
- return ownKeys(o);
39
- };
40
- return function (mod) {
41
- if (mod && mod.__esModule) return mod;
42
- var result = {};
43
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
44
- __setModuleDefault(result, mod);
45
- return result;
46
- };
47
- })();
48
- Object.defineProperty(exports, "__esModule", { value: true });
49
- exports.createGoal = createGoal;
50
- exports.createGoalQueue = createGoalQueue;
51
- exports.getCurrentGoal = getCurrentGoal;
52
- exports.startCurrentGoal = startCurrentGoal;
53
- exports.completeCurrentGoal = completeCurrentGoal;
54
- exports.failCurrentGoal = failCurrentGoal;
55
- exports.cutoffCurrentGoal = cutoffCurrentGoal;
56
- exports.pauseCurrentGoal = pauseCurrentGoal;
57
- exports.checkBudget = checkBudget;
58
- exports.getChurnForGoal = getChurnForGoal;
59
- exports.getGoalStats = getGoalStats;
60
- exports.getQueueSummary = getQueueSummary;
61
- exports.loadGoals = loadGoals;
62
- exports.clearGoals = clearGoals;
63
- exports.compactQueue = compactQueue;
64
- exports.loadTemplates = loadTemplates;
65
- exports.createFromTemplate = createFromTemplate;
66
- exports.nudgeCurrentGoal = nudgeCurrentGoal;
67
- const fs = __importStar(require("fs/promises"));
68
- const path = __importStar(require("path"));
14
+ import * as fs from 'fs/promises';
15
+ import * as path from 'path';
69
16
  // State
70
17
  let goalQueue = [];
71
18
  let currentIndex = 0;
@@ -86,7 +33,7 @@ function generateGoalId() {
86
33
  /**
87
34
  * Create a new goal
88
35
  */
89
- async function createGoal(objective, budget, metadata) {
36
+ export async function createGoal(objective, budget, metadata) {
90
37
  const goal = {
91
38
  id: generateGoalId(),
92
39
  objective,
@@ -103,20 +50,20 @@ async function createGoal(objective, budget, metadata) {
103
50
  /**
104
51
  * Create a queue of goals
105
52
  */
106
- async function createGoalQueue(objectives, budgets) {
53
+ export async function createGoalQueue(objectives, budgets) {
107
54
  const goals = await Promise.all(objectives.map((obj, i) => createGoal(obj, budgets?.[i])));
108
55
  return goals;
109
56
  }
110
57
  /**
111
58
  * Get current goal
112
59
  */
113
- function getCurrentGoal() {
60
+ export function getCurrentGoal() {
114
61
  return goalQueue[currentIndex];
115
62
  }
116
63
  /**
117
64
  * Start current goal
118
65
  */
119
- async function startCurrentGoal() {
66
+ export async function startCurrentGoal() {
120
67
  const goal = getCurrentGoal();
121
68
  if (goal) {
122
69
  goal.status = 'in_progress';
@@ -129,7 +76,7 @@ async function startCurrentGoal() {
129
76
  /**
130
77
  * Complete current goal with result
131
78
  */
132
- async function completeCurrentGoal(result) {
79
+ export async function completeCurrentGoal(result) {
133
80
  const goal = getCurrentGoal();
134
81
  if (goal) {
135
82
  goal.status = 'completed';
@@ -154,7 +101,7 @@ async function completeCurrentGoal(result) {
154
101
  /**
155
102
  * Fail current goal
156
103
  */
157
- async function failCurrentGoal(error) {
104
+ export async function failCurrentGoal(error) {
158
105
  const goal = getCurrentGoal();
159
106
  if (goal) {
160
107
  goal.status = 'failed';
@@ -170,7 +117,7 @@ async function failCurrentGoal(error) {
170
117
  /**
171
118
  * Cutoff current goal (exceeded budget)
172
119
  */
173
- async function cutoffCurrentGoal(reason) {
120
+ export async function cutoffCurrentGoal(reason) {
174
121
  const goal = getCurrentGoal();
175
122
  if (goal) {
176
123
  goal.status = 'cutoff';
@@ -187,7 +134,7 @@ async function cutoffCurrentGoal(reason) {
187
134
  /**
188
135
  * Pause current goal
189
136
  */
190
- async function pauseCurrentGoal() {
137
+ export async function pauseCurrentGoal() {
191
138
  const goal = getCurrentGoal();
192
139
  if (goal) {
193
140
  goal.status = 'paused';
@@ -200,7 +147,7 @@ async function pauseCurrentGoal() {
200
147
  /**
201
148
  * Check budget for a goal
202
149
  */
203
- function checkBudget(goal, elapsedMs, tokensUsed) {
150
+ export function checkBudget(goal, elapsedMs, tokensUsed) {
204
151
  if (!goal.budget)
205
152
  return { exceeded: false };
206
153
  if (goal.budget.maxTimeMs && elapsedMs && elapsedMs > goal.budget.maxTimeMs) {
@@ -283,7 +230,7 @@ function addChurnEvent(goalId, type, message) {
283
230
  /**
284
231
  * Get churn events for current goal
285
232
  */
286
- function getChurnForGoal(goalId) {
233
+ export function getChurnForGoal(goalId) {
287
234
  return churnEvents.filter((e) => e.goalId === goalId);
288
235
  }
289
236
  /**
@@ -298,7 +245,7 @@ function summarizeGoal(goal) {
298
245
  /**
299
246
  * Get goal statistics
300
247
  */
301
- function getGoalStats() {
248
+ export function getGoalStats() {
302
249
  return {
303
250
  total: goalQueue.length,
304
251
  pending: goalQueue.filter((g) => g.status === 'pending').length,
@@ -312,7 +259,7 @@ function getGoalStats() {
312
259
  /**
313
260
  * Get queue summary
314
261
  */
315
- function getQueueSummary() {
262
+ export function getQueueSummary() {
316
263
  const stats = getGoalStats();
317
264
  const current = getCurrentGoal();
318
265
  let summary = `# Goal Queue\n\n`;
@@ -362,7 +309,7 @@ async function persistChurn() {
362
309
  /**
363
310
  * Load goals from disk
364
311
  */
365
- async function loadGoals() {
312
+ export async function loadGoals() {
366
313
  try {
367
314
  const data = await fs.readFile(GOALS_FILE, 'utf-8');
368
315
  const state = JSON.parse(data);
@@ -390,7 +337,7 @@ async function loadChurn() {
390
337
  /**
391
338
  * Clear all goals
392
339
  */
393
- async function clearGoals() {
340
+ export async function clearGoals() {
394
341
  goalQueue = [];
395
342
  currentIndex = 0;
396
343
  await persistGoals();
@@ -399,7 +346,7 @@ async function clearGoals() {
399
346
  /**
400
347
  * Remove completed goals and compact queue
401
348
  */
402
- async function compactQueue() {
349
+ export async function compactQueue() {
403
350
  const completed = goalQueue.filter((g) => ['completed', 'failed', 'cutoff'].includes(g.status));
404
351
  // Keep only summaries for completed goals
405
352
  goalQueue = goalQueue.filter((g) => ['pending', 'in_progress', 'paused'].includes(g.status));
@@ -411,7 +358,7 @@ async function compactQueue() {
411
358
  /**
412
359
  * Load workflow templates
413
360
  */
414
- async function loadTemplates() {
361
+ export async function loadTemplates() {
415
362
  const templates = [];
416
363
  for (const dir of [TEMPLATES_DIR, TEMPLATES_DIR_ALT]) {
417
364
  try {
@@ -477,7 +424,7 @@ function parseTemplate(name, content) {
477
424
  /**
478
425
  * Create goals from a template
479
426
  */
480
- async function createFromTemplate(templateName, args) {
427
+ export async function createFromTemplate(templateName, args) {
481
428
  const templates = await loadTemplates();
482
429
  const template = templates.find((t) => t.name === templateName);
483
430
  if (!template) {
@@ -498,7 +445,7 @@ async function createFromTemplate(templateName, args) {
498
445
  /**
499
446
  * Continue working on current goal (anti-stall)
500
447
  */
501
- async function nudgeCurrentGoal() {
448
+ export async function nudgeCurrentGoal() {
502
449
  const goal = getCurrentGoal();
503
450
  if (goal) {
504
451
  const churn = detectChurn(goal);
@@ -509,4 +456,3 @@ async function nudgeCurrentGoal() {
509
456
  }
510
457
  return goal;
511
458
  }
512
- //# sourceMappingURL=index.js.map
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  /**
3
2
  * Decision Request & Authorization Flow
4
3
  *
@@ -18,28 +17,12 @@
18
17
  * ↓
19
18
  * Execute & Archive Judgment
20
19
  */
21
- Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.setConfidenceThreshold = setConfidenceThreshold;
23
- exports.getConfidenceThreshold = getConfidenceThreshold;
24
- exports.setDefaultDecisionLevel = setDefaultDecisionLevel;
25
- exports.getDefaultDecisionLevel = getDefaultDecisionLevel;
26
- exports.evaluateDecision = evaluateDecision;
27
- exports.submitDecisionResponse = submitDecisionResponse;
28
- exports.isDecisionResponse = isDecisionResponse;
29
- exports.parseDecisionResponse = parseDecisionResponse;
30
- exports.queryInternalAgents = queryInternalAgents;
31
- exports.processHumanFeedback = processHumanFeedback;
32
- exports.getPendingDecisions = getPendingDecisions;
33
- exports.getDecisionRequest = getDecisionRequest;
34
- exports.getDecisionStats = getDecisionStats;
35
- exports.onDecisionEvent = onDecisionEvent;
36
- exports.offDecisionEvent = offDecisionEvent;
37
- const events_1 = require("events");
38
- const index_js_1 = require("./index.js");
39
- const distillation_js_1 = require("./distillation.js");
40
- const index_js_2 = require("../pi-ecosystem-colony/index.js");
41
- const index_js_3 = require("../pi-ecosystem-subagents/index.js");
42
- class DecisionEventEmitter extends events_1.EventEmitter {
20
+ import { EventEmitter } from 'events';
21
+ import { getValueFunction, calculateConfidence, } from './index.js';
22
+ import { distillInput, isJudgmentSignal, detectTrigger, processFeedback, } from './distillation.js';
23
+ import { listAnts } from '../pi-ecosystem-colony/index.js';
24
+ import { listSubagents } from '../pi-ecosystem-subagents/index.js';
25
+ class DecisionEventEmitter extends EventEmitter {
43
26
  }
44
27
  const decisionEvents = new DecisionEventEmitter();
45
28
  const decisionRequests = new Map();
@@ -51,35 +34,35 @@ function generateDecisionId() {
51
34
  /**
52
35
  * Set default confidence threshold
53
36
  */
54
- function setConfidenceThreshold(threshold) {
37
+ export function setConfidenceThreshold(threshold) {
55
38
  defaultThreshold = Math.max(0, Math.min(1, threshold));
56
39
  }
57
40
  /**
58
41
  * Get default confidence threshold
59
42
  */
60
- function getConfidenceThreshold() {
43
+ export function getConfidenceThreshold() {
61
44
  return defaultThreshold;
62
45
  }
63
46
  /**
64
47
  * Set default decision level
65
48
  */
66
- function setDefaultDecisionLevel(level) {
49
+ export function setDefaultDecisionLevel(level) {
67
50
  defaultLevel = level;
68
51
  }
69
52
  /**
70
53
  * Get default decision level
71
54
  */
72
- function getDefaultDecisionLevel() {
55
+ export function getDefaultDecisionLevel() {
73
56
  return defaultLevel;
74
57
  }
75
58
  /**
76
59
  * Evaluate a decision need and determine appropriate level
77
60
  */
78
- async function evaluateDecision(description, context, agentId, threshold) {
61
+ export async function evaluateDecision(description, context, agentId, threshold) {
79
62
  const effectiveThreshold = threshold ?? defaultThreshold;
80
- const valueFunction = await (0, index_js_1.getValueFunction)(context);
63
+ const valueFunction = await getValueFunction(context);
81
64
  const judgments = valueFunction.judgments.filter((j) => j.context?.toLowerCase().includes(context.toLowerCase()));
82
- const confidence = (0, index_js_1.calculateConfidence)(judgments);
65
+ const confidence = calculateConfidence(judgments);
83
66
  const level = determineDecisionLevel(confidence, effectiveThreshold);
84
67
  const targets = determineConsultationTargets(level);
85
68
  const request = {
@@ -134,7 +117,7 @@ function determineConsultationTargets(level) {
134
117
  /**
135
118
  * Submit a decision response
136
119
  */
137
- async function submitDecisionResponse(requestId, response) {
120
+ export async function submitDecisionResponse(requestId, response) {
138
121
  const request = decisionRequests.get(requestId);
139
122
  if (!request)
140
123
  return null;
@@ -156,7 +139,7 @@ async function submitDecisionResponse(requestId, response) {
156
139
  /**
157
140
  * Check if input is a decision response
158
141
  */
159
- function isDecisionResponse(input) {
142
+ export function isDecisionResponse(input) {
160
143
  const patterns = [
161
144
  /^(是|可以|同意|授权|执行|对|好|ok|yes|y)/i,
162
145
  /^(不|否|拒绝|不行|no|n)/i,
@@ -167,7 +150,7 @@ function isDecisionResponse(input) {
167
150
  /**
168
151
  * Parse decision response from natural language
169
152
  */
170
- function parseDecisionResponse(input) {
153
+ export function parseDecisionResponse(input) {
171
154
  const trimmed = input.trim().toLowerCase();
172
155
  if (/^(是|可以|同意|授权|执行|对|好|ok|yes|y)/.test(trimmed)) {
173
156
  return { authorized: true, content: input };
@@ -188,10 +171,10 @@ function parseDecisionResponse(input) {
188
171
  /**
189
172
  * Query internal agents (colony ants and subagents)
190
173
  */
191
- async function queryInternalAgents(request) {
174
+ export async function queryInternalAgents(request) {
192
175
  const results = [];
193
176
  if (request.targets.includes('colony_ant')) {
194
- const ants = (0, index_js_2.listAnts)().filter((a) => a.signal !== 'COMPLETE' && a.signal !== 'FAILED');
177
+ const ants = listAnts().filter((a) => a.signal !== 'COMPLETE' && a.signal !== 'FAILED');
195
178
  for (const ant of ants.slice(0, 3)) {
196
179
  const result = await consultColonyAnt(ant, request);
197
180
  if (result)
@@ -199,7 +182,7 @@ async function queryInternalAgents(request) {
199
182
  }
200
183
  }
201
184
  if (request.targets.includes('subagent')) {
202
- const subagents = (0, index_js_3.listSubagents)().filter((s) => s.status === 'running');
185
+ const subagents = listSubagents().filter((s) => s.status === 'running');
203
186
  for (const subagent of subagents.slice(0, 2)) {
204
187
  const result = await consultSubagent(subagent, request);
205
188
  if (result)
@@ -235,7 +218,7 @@ async function consultSubagent(subagent, request) {
235
218
  /**
236
219
  * Process human feedback and distill to judgment
237
220
  */
238
- async function processHumanFeedback(requestId, input) {
221
+ export async function processHumanFeedback(requestId, input) {
239
222
  const request = decisionRequests.get(requestId);
240
223
  if (!request)
241
224
  return null;
@@ -250,10 +233,10 @@ async function processHumanFeedback(requestId, input) {
250
233
  timestamp: new Date().toISOString(),
251
234
  };
252
235
  await submitDecisionResponse(requestId, response);
253
- if ((0, distillation_js_1.isJudgmentSignal)(input)) {
254
- const trigger = (0, distillation_js_1.detectTrigger)(input);
236
+ if (isJudgmentSignal(input)) {
237
+ const trigger = detectTrigger(input);
255
238
  if (trigger) {
256
- const result = await (0, distillation_js_1.distillInput)({
239
+ const result = await distillInput({
257
240
  rawInput: input,
258
241
  trigger,
259
242
  context: request.context,
@@ -275,26 +258,26 @@ async function processHumanFeedback(requestId, input) {
275
258
  : undefined,
276
259
  };
277
260
  if (feedback.judgmentId) {
278
- await (0, distillation_js_1.processFeedback)(feedback);
261
+ await processFeedback(feedback);
279
262
  }
280
263
  return request;
281
264
  }
282
265
  /**
283
266
  * Get pending decision requests
284
267
  */
285
- function getPendingDecisions() {
268
+ export function getPendingDecisions() {
286
269
  return Array.from(decisionRequests.values()).filter((r) => r.status === 'pending');
287
270
  }
288
271
  /**
289
272
  * Get decision request by ID
290
273
  */
291
- function getDecisionRequest(id) {
274
+ export function getDecisionRequest(id) {
292
275
  return decisionRequests.get(id);
293
276
  }
294
277
  /**
295
278
  * Get decision statistics
296
279
  */
297
- function getDecisionStats() {
280
+ export function getDecisionStats() {
298
281
  const requests = Array.from(decisionRequests.values());
299
282
  return {
300
283
  pending: requests.filter((r) => r.status === 'pending').length,
@@ -306,13 +289,12 @@ function getDecisionStats() {
306
289
  /**
307
290
  * Subscribe to decision events
308
291
  */
309
- function onDecisionEvent(event, callback) {
292
+ export function onDecisionEvent(event, callback) {
310
293
  decisionEvents.on(event, callback);
311
294
  }
312
295
  /**
313
296
  * Unsubscribe from decision events
314
297
  */
315
- function offDecisionEvent(event, callback) {
298
+ export function offDecisionEvent(event, callback) {
316
299
  decisionEvents.off(event, callback);
317
300
  }
318
- //# sourceMappingURL=decision.js.map
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  /**
3
2
  * Judgment Distillation Module
4
3
  *
@@ -9,19 +8,8 @@
9
8
  * ↓
10
9
  * Confidence + Evidence
11
10
  */
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.initializeDistillation = initializeDistillation;
14
- exports.detectTrigger = detectTrigger;
15
- exports.detectCorrection = detectCorrection;
16
- exports.addToTrajectory = addToTrajectory;
17
- exports.detectTrajectoryPattern = detectTrajectoryPattern;
18
- exports.distillInput = distillInput;
19
- exports.processFeedback = processFeedback;
20
- exports.isJudgmentSignal = isJudgmentSignal;
21
- exports.getTrajectoryStats = getTrajectoryStats;
22
- exports.clearTrajectory = clearTrajectory;
23
- const index_js_1 = require("./index.js");
24
- const pi_ai_js_1 = require("../llm/pi-ai.js");
11
+ import { createJudgment, updateJudgmentConfidence, } from './index.js';
12
+ import { getModel } from '../llm/pi-ai.js';
25
13
  const TRIGGER_PATTERNS = {
26
14
  explicit: [
27
15
  /不,我想要(.+)而不是(.+)/i,
@@ -42,9 +30,9 @@ let llmModel = null;
42
30
  /**
43
31
  * Initialize the distillation system
44
32
  */
45
- async function initializeDistillation() {
33
+ export async function initializeDistillation() {
46
34
  try {
47
- llmModel = (0, pi_ai_js_1.getModel)();
35
+ llmModel = getModel();
48
36
  }
49
37
  catch {
50
38
  console.warn('[Distillation] LLM model not available, using fallback');
@@ -53,7 +41,7 @@ async function initializeDistillation() {
53
41
  /**
54
42
  * Detect trigger type from human input
55
43
  */
56
- function detectTrigger(input) {
44
+ export function detectTrigger(input) {
57
45
  for (const pattern of TRIGGER_PATTERNS.explicit) {
58
46
  if (pattern.test(input)) {
59
47
  return 'explicit';
@@ -69,7 +57,7 @@ function detectTrigger(input) {
69
57
  /**
70
58
  * Check if input indicates a judgment correction
71
59
  */
72
- function detectCorrection(input) {
60
+ export function detectCorrection(input) {
73
61
  for (const pattern of TRIGGER_PATTERNS.explicit) {
74
62
  const match = input.match(pattern);
75
63
  if (match) {
@@ -86,7 +74,7 @@ function detectCorrection(input) {
86
74
  /**
87
75
  * Add to trajectory buffer
88
76
  */
89
- function addToTrajectory(agentId, action, outcome, approved) {
77
+ export function addToTrajectory(agentId, action, outcome, approved) {
90
78
  if (!trajectoryBuffer.has(agentId)) {
91
79
  trajectoryBuffer.set(agentId, []);
92
80
  }
@@ -104,7 +92,7 @@ function addToTrajectory(agentId, action, outcome, approved) {
104
92
  /**
105
93
  * Detect trajectory pattern (repeated similar actions)
106
94
  */
107
- function detectTrajectoryPattern(agentId) {
95
+ export function detectTrajectoryPattern(agentId) {
108
96
  const entries = trajectoryBuffer.get(agentId);
109
97
  if (!entries || entries.length < MIN_TRAJECTORY_COUNT)
110
98
  return null;
@@ -118,12 +106,12 @@ function detectTrajectoryPattern(agentId) {
118
106
  /**
119
107
  * Distill human input to judgment using LLM
120
108
  */
121
- async function distillInput(request) {
109
+ export async function distillInput(request) {
122
110
  const { rawInput, trigger, context, conversationHistory } = request;
123
111
  console.log(`[Distillation] Distilling input (${trigger}): ${rawInput.substring(0, 50)}...`);
124
112
  try {
125
113
  const judgment = await llmDistill(rawInput, trigger, context, conversationHistory);
126
- const created = await (0, index_js_1.createJudgment)({
114
+ const created = await createJudgment({
127
115
  type: judgment.type,
128
116
  content: judgment.content,
129
117
  source: 'human',
@@ -250,10 +238,10 @@ function inferType(input, trigger) {
250
238
  /**
251
239
  * Process feedback signal
252
240
  */
253
- async function processFeedback(signal) {
241
+ export async function processFeedback(signal) {
254
242
  const { judgmentId, type, correction } = signal;
255
243
  if (correction) {
256
- await (0, index_js_1.createJudgment)({
244
+ await createJudgment({
257
245
  type: 'rule',
258
246
  content: correction.corrected,
259
247
  source: 'human',
@@ -268,18 +256,18 @@ async function processFeedback(signal) {
268
256
  },
269
257
  });
270
258
  }
271
- await (0, index_js_1.updateJudgmentConfidence)(judgmentId, 0.1, type);
259
+ await updateJudgmentConfidence(judgmentId, 0.1, type);
272
260
  }
273
261
  /**
274
262
  * Check if human input contains judgment signal
275
263
  */
276
- function isJudgmentSignal(input) {
264
+ export function isJudgmentSignal(input) {
277
265
  return detectTrigger(input) !== null;
278
266
  }
279
267
  /**
280
268
  * Get trajectory buffer statistics
281
269
  */
282
- function getTrajectoryStats() {
270
+ export function getTrajectoryStats() {
283
271
  const stats = {};
284
272
  for (const [agentId, entries] of trajectoryBuffer.entries()) {
285
273
  const approvals = entries.filter((e) => e.approved).length;
@@ -293,7 +281,7 @@ function getTrajectoryStats() {
293
281
  /**
294
282
  * Clear trajectory buffer for agent
295
283
  */
296
- function clearTrajectory(agentId) {
284
+ export function clearTrajectory(agentId) {
297
285
  if (agentId) {
298
286
  trajectoryBuffer.delete(agentId);
299
287
  }
@@ -301,4 +289,3 @@ function clearTrajectory(agentId) {
301
289
  trajectoryBuffer.clear();
302
290
  }
303
291
  }
304
- //# sourceMappingURL=distillation.js.map