0xkobold 0.7.2 → 0.8.0

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 (252) hide show
  1. package/HEARTBEAT.md +239 -0
  2. package/IDENTITY.md +12 -0
  3. package/README.md +138 -4
  4. package/SOUL.md +21 -0
  5. package/dist/package.json +10 -5
  6. package/dist/src/agent/bootstrap-loader.js +295 -66
  7. package/dist/src/agent/bootstrap-loader.js.map +1 -1
  8. package/dist/src/agent/context-pruning.js +10 -5
  9. package/dist/src/agent/context-pruning.js.map +1 -1
  10. package/dist/src/agent/embedded-runner.js +29 -15
  11. package/dist/src/agent/embedded-runner.js.map +1 -1
  12. package/dist/src/agent/index.js +5 -2
  13. package/dist/src/agent/index.js.map +1 -1
  14. package/dist/src/agent/system-prompt.js +167 -20
  15. package/dist/src/agent/system-prompt.js.map +1 -1
  16. package/dist/src/agent/tools/spawn-agent.js +72 -5
  17. package/dist/src/agent/tools/spawn-agent.js.map +1 -1
  18. package/dist/src/channels/slack/webhook.js +2 -2
  19. package/dist/src/channels/slack/webhook.js.map +1 -1
  20. package/dist/src/channels/telegram/bot.js +4 -4
  21. package/dist/src/channels/telegram/bot.js.map +1 -1
  22. package/dist/src/channels/whatsapp/integration.js +4 -4
  23. package/dist/src/channels/whatsapp/integration.js.map +1 -1
  24. package/dist/src/cli/commands/gateway.js +9 -10
  25. package/dist/src/cli/commands/gateway.js.map +1 -1
  26. package/dist/src/cli/commands/init.js +90 -0
  27. package/dist/src/cli/commands/init.js.map +1 -1
  28. package/dist/src/cli/commands/setup.js +53 -0
  29. package/dist/src/cli/commands/setup.js.map +1 -1
  30. package/dist/src/cli/index.js +0 -0
  31. package/dist/src/config/unified-config.js +5 -0
  32. package/dist/src/config/unified-config.js.map +1 -1
  33. package/dist/src/cron/index.js +2 -0
  34. package/dist/src/cron/index.js.map +1 -1
  35. package/dist/src/cron/nl-parser.js +522 -0
  36. package/dist/src/cron/nl-parser.js.map +1 -0
  37. package/dist/src/cron/runner.js +6 -31
  38. package/dist/src/cron/runner.js.map +1 -1
  39. package/dist/src/event-bus/index.js.map +1 -1
  40. package/dist/src/extensions/core/agent-orchestrator-extension.js +200 -148
  41. package/dist/src/extensions/core/agent-orchestrator-extension.js.map +1 -1
  42. package/dist/src/extensions/core/diagnostics-extension.js +93 -56
  43. package/dist/src/extensions/core/diagnostics-extension.js.map +1 -1
  44. package/dist/src/extensions/core/draconic-safety-extension.js +256 -3
  45. package/dist/src/extensions/core/draconic-safety-extension.js.map +1 -1
  46. package/dist/src/extensions/core/heartbeat-extension.js +416 -150
  47. package/dist/src/extensions/core/heartbeat-extension.js.map +1 -1
  48. package/dist/src/extensions/core/{generative-agents-extension.js → learning-extension.js} +90 -128
  49. package/dist/src/extensions/core/learning-extension.js.map +1 -0
  50. package/dist/src/extensions/core/perennial-memory-extension.js +884 -87
  51. package/dist/src/extensions/core/perennial-memory-extension.js.map +1 -1
  52. package/dist/src/extensions/core/routed-ollama-extension.js +345 -0
  53. package/dist/src/extensions/core/routed-ollama-extension.js.map +1 -0
  54. package/dist/src/extensions/core/task-manager-extension.js +25 -2
  55. package/dist/src/extensions/core/task-manager-extension.js.map +1 -1
  56. package/dist/src/extensions/core/websearch-enhanced-extension.js +81 -23
  57. package/dist/src/extensions/core/websearch-enhanced-extension.js.map +1 -1
  58. package/dist/src/extensions/core/workspace-footer-extension.js +40 -63
  59. package/dist/src/extensions/core/workspace-footer-extension.js.map +1 -1
  60. package/dist/src/extensions/loader.js +5 -1
  61. package/dist/src/extensions/loader.js.map +1 -1
  62. package/dist/src/gateway/gateway-server.js +74 -3
  63. package/dist/src/gateway/gateway-server.js.map +1 -1
  64. package/dist/src/gateway/index.js +2 -2
  65. package/dist/src/gateway/index.js.map +1 -1
  66. package/dist/src/gateway/methods/agent.js +1 -1
  67. package/dist/src/gateway/methods/agent.js.map +1 -1
  68. package/dist/src/gateway/methods/index.js +4 -0
  69. package/dist/src/gateway/methods/index.js.map +1 -1
  70. package/dist/src/gateway/methods/node.js +261 -0
  71. package/dist/src/gateway/methods/node.js.map +1 -0
  72. package/dist/src/gateway/queue-modes.js +356 -0
  73. package/dist/src/gateway/queue-modes.js.map +1 -0
  74. package/dist/src/index.js +47 -6
  75. package/dist/src/index.js.map +1 -1
  76. package/dist/src/llm/community-analytics.js +569 -0
  77. package/dist/src/llm/community-analytics.js.map +1 -0
  78. package/dist/src/llm/index.js +28 -4
  79. package/dist/src/llm/index.js.map +1 -1
  80. package/dist/src/llm/model-discovery.js +335 -0
  81. package/dist/src/llm/model-discovery.js.map +1 -0
  82. package/dist/src/llm/model-popularity.js +566 -0
  83. package/dist/src/llm/model-popularity.js.map +1 -0
  84. package/dist/src/llm/model-scoring-db.js +553 -0
  85. package/dist/src/llm/model-scoring-db.js.map +1 -0
  86. package/dist/src/llm/multi-provider.js +258 -0
  87. package/dist/src/llm/multi-provider.js.map +1 -0
  88. package/dist/src/llm/ollama.js +133 -187
  89. package/dist/src/llm/ollama.js.map +1 -1
  90. package/dist/src/llm/router-commands.js +773 -0
  91. package/dist/src/llm/router-commands.js.map +1 -0
  92. package/dist/src/llm/router-core.js +600 -0
  93. package/dist/src/llm/router-core.js.map +1 -0
  94. package/dist/src/memory/checkpoint-manager.js +278 -0
  95. package/dist/src/memory/checkpoint-manager.js.map +1 -0
  96. package/dist/src/memory/conflict-detector.js +279 -0
  97. package/dist/src/memory/conflict-detector.js.map +1 -0
  98. package/dist/src/memory/context-graph.js +360 -0
  99. package/dist/src/memory/context-graph.js.map +1 -0
  100. package/dist/src/memory/dialectic/benchmark-cli.js +200 -0
  101. package/dist/src/memory/dialectic/benchmark-cli.js.map +1 -0
  102. package/dist/src/memory/dialectic/debug-reasoning.js +37 -0
  103. package/dist/src/memory/dialectic/debug-reasoning.js.map +1 -0
  104. package/dist/src/memory/dialectic/index.js +135 -0
  105. package/dist/src/memory/dialectic/index.js.map +1 -0
  106. package/dist/src/memory/dialectic/nudges.js +380 -0
  107. package/dist/src/memory/dialectic/nudges.js.map +1 -0
  108. package/dist/src/memory/dialectic/reasoning-engine.js +607 -0
  109. package/dist/src/memory/dialectic/reasoning-engine.js.map +1 -0
  110. package/dist/src/memory/dialectic/reasoning.js +390 -0
  111. package/dist/src/memory/dialectic/reasoning.js.map +1 -0
  112. package/dist/src/memory/dialectic/skill-creation.js +481 -0
  113. package/dist/src/memory/dialectic/skill-creation.js.map +1 -0
  114. package/dist/src/memory/dialectic/store.js +663 -0
  115. package/dist/src/memory/dialectic/store.js.map +1 -0
  116. package/dist/src/memory/dialectic/types.js +11 -0
  117. package/dist/src/memory/dialectic/types.js.map +1 -0
  118. package/dist/src/memory/index.js +24 -2
  119. package/dist/src/memory/index.js.map +1 -1
  120. package/dist/src/memory/memory-decay.js +350 -0
  121. package/dist/src/memory/memory-decay.js.map +1 -0
  122. package/dist/src/memory/memory-integration.js +5 -5
  123. package/dist/src/memory/memory-integration.js.map +1 -1
  124. package/dist/src/memory/migrate-memory-stream.js +97 -0
  125. package/dist/src/memory/migrate-memory-stream.js.map +1 -0
  126. package/dist/src/memory/session-memory-bridge.js +49 -5
  127. package/dist/src/memory/session-memory-bridge.js.map +1 -1
  128. package/dist/src/memory/session-store.js +123 -0
  129. package/dist/src/memory/session-store.js.map +1 -1
  130. package/dist/src/memory/smart-write-rules.js +164 -0
  131. package/dist/src/memory/smart-write-rules.js.map +1 -0
  132. package/dist/src/memory/tiered-memory.js +436 -0
  133. package/dist/src/memory/tiered-memory.js.map +1 -0
  134. package/dist/src/memory/types.js +6 -0
  135. package/dist/src/memory/types.js.map +1 -0
  136. package/dist/src/memory/verify-migration.js +99 -0
  137. package/dist/src/memory/verify-migration.js.map +1 -0
  138. package/dist/src/pi-config.js +11 -9
  139. package/dist/src/pi-config.js.map +1 -1
  140. package/dist/src/skills/conditional-skills.js +464 -0
  141. package/dist/src/skills/conditional-skills.js.map +1 -0
  142. package/dist/src/skills/index.js +5 -0
  143. package/dist/src/skills/index.js.map +1 -1
  144. package/dist/src/skills/loader.js +56 -0
  145. package/dist/src/skills/loader.js.map +1 -1
  146. package/dist/src/skills/skill-manage.js +417 -0
  147. package/dist/src/skills/skill-manage.js.map +1 -0
  148. package/dist/src/tui/commands/orchestration-commands.js +62 -0
  149. package/dist/src/tui/commands/orchestration-commands.js.map +1 -1
  150. package/package.json +10 -5
  151. package/skills/model-router-test.ts +65 -0
  152. package/dist/src/extensions/core/auto-security-scan-extension.js +0 -41
  153. package/dist/src/extensions/core/auto-security-scan-extension.js.map +0 -1
  154. package/dist/src/extensions/core/cloudflare-browser-extension.js +0 -389
  155. package/dist/src/extensions/core/cloudflare-browser-extension.js.map +0 -1
  156. package/dist/src/extensions/core/compaction-safeguard.js +0 -223
  157. package/dist/src/extensions/core/compaction-safeguard.js.map +0 -1
  158. package/dist/src/extensions/core/generative-agents-extension.js.map +0 -1
  159. package/dist/src/extensions/core/obsidian-bridge-extension.js +0 -488
  160. package/dist/src/extensions/core/obsidian-bridge-extension.js.map +0 -1
  161. package/dist/src/llm/router.js +0 -145
  162. package/dist/src/llm/router.js.map +0 -1
  163. package/skills/kobold-scan-skill/node_modules/.package-lock.json +0 -172
  164. package/skills/kobold-scan-skill/node_modules/ansi-styles/index.d.ts +0 -345
  165. package/skills/kobold-scan-skill/node_modules/ansi-styles/index.js +0 -163
  166. package/skills/kobold-scan-skill/node_modules/ansi-styles/license +0 -9
  167. package/skills/kobold-scan-skill/node_modules/ansi-styles/package.json +0 -56
  168. package/skills/kobold-scan-skill/node_modules/ansi-styles/readme.md +0 -152
  169. package/skills/kobold-scan-skill/node_modules/balanced-match/.github/FUNDING.yml +0 -2
  170. package/skills/kobold-scan-skill/node_modules/balanced-match/LICENSE.md +0 -21
  171. package/skills/kobold-scan-skill/node_modules/balanced-match/README.md +0 -97
  172. package/skills/kobold-scan-skill/node_modules/balanced-match/index.js +0 -62
  173. package/skills/kobold-scan-skill/node_modules/balanced-match/package.json +0 -48
  174. package/skills/kobold-scan-skill/node_modules/brace-expansion/.github/FUNDING.yml +0 -2
  175. package/skills/kobold-scan-skill/node_modules/brace-expansion/LICENSE +0 -21
  176. package/skills/kobold-scan-skill/node_modules/brace-expansion/README.md +0 -135
  177. package/skills/kobold-scan-skill/node_modules/brace-expansion/index.js +0 -203
  178. package/skills/kobold-scan-skill/node_modules/brace-expansion/package.json +0 -49
  179. package/skills/kobold-scan-skill/node_modules/chalk/index.d.ts +0 -415
  180. package/skills/kobold-scan-skill/node_modules/chalk/license +0 -9
  181. package/skills/kobold-scan-skill/node_modules/chalk/package.json +0 -68
  182. package/skills/kobold-scan-skill/node_modules/chalk/readme.md +0 -341
  183. package/skills/kobold-scan-skill/node_modules/chalk/source/index.js +0 -229
  184. package/skills/kobold-scan-skill/node_modules/chalk/source/templates.js +0 -134
  185. package/skills/kobold-scan-skill/node_modules/chalk/source/util.js +0 -39
  186. package/skills/kobold-scan-skill/node_modules/color-convert/CHANGELOG.md +0 -54
  187. package/skills/kobold-scan-skill/node_modules/color-convert/LICENSE +0 -21
  188. package/skills/kobold-scan-skill/node_modules/color-convert/README.md +0 -68
  189. package/skills/kobold-scan-skill/node_modules/color-convert/conversions.js +0 -839
  190. package/skills/kobold-scan-skill/node_modules/color-convert/index.js +0 -81
  191. package/skills/kobold-scan-skill/node_modules/color-convert/package.json +0 -48
  192. package/skills/kobold-scan-skill/node_modules/color-convert/route.js +0 -97
  193. package/skills/kobold-scan-skill/node_modules/color-name/LICENSE +0 -8
  194. package/skills/kobold-scan-skill/node_modules/color-name/README.md +0 -11
  195. package/skills/kobold-scan-skill/node_modules/color-name/index.js +0 -152
  196. package/skills/kobold-scan-skill/node_modules/color-name/package.json +0 -28
  197. package/skills/kobold-scan-skill/node_modules/commander/LICENSE +0 -22
  198. package/skills/kobold-scan-skill/node_modules/commander/Readme.md +0 -1129
  199. package/skills/kobold-scan-skill/node_modules/commander/esm.mjs +0 -16
  200. package/skills/kobold-scan-skill/node_modules/commander/index.js +0 -27
  201. package/skills/kobold-scan-skill/node_modules/commander/lib/argument.js +0 -147
  202. package/skills/kobold-scan-skill/node_modules/commander/lib/command.js +0 -2179
  203. package/skills/kobold-scan-skill/node_modules/commander/lib/error.js +0 -45
  204. package/skills/kobold-scan-skill/node_modules/commander/lib/help.js +0 -461
  205. package/skills/kobold-scan-skill/node_modules/commander/lib/option.js +0 -326
  206. package/skills/kobold-scan-skill/node_modules/commander/lib/suggestSimilar.js +0 -100
  207. package/skills/kobold-scan-skill/node_modules/commander/package-support.json +0 -16
  208. package/skills/kobold-scan-skill/node_modules/commander/package.json +0 -80
  209. package/skills/kobold-scan-skill/node_modules/commander/typings/index.d.ts +0 -891
  210. package/skills/kobold-scan-skill/node_modules/fs.realpath/LICENSE +0 -43
  211. package/skills/kobold-scan-skill/node_modules/fs.realpath/README.md +0 -33
  212. package/skills/kobold-scan-skill/node_modules/fs.realpath/index.js +0 -66
  213. package/skills/kobold-scan-skill/node_modules/fs.realpath/old.js +0 -303
  214. package/skills/kobold-scan-skill/node_modules/fs.realpath/package.json +0 -26
  215. package/skills/kobold-scan-skill/node_modules/glob/LICENSE +0 -15
  216. package/skills/kobold-scan-skill/node_modules/glob/README.md +0 -399
  217. package/skills/kobold-scan-skill/node_modules/glob/common.js +0 -244
  218. package/skills/kobold-scan-skill/node_modules/glob/glob.js +0 -790
  219. package/skills/kobold-scan-skill/node_modules/glob/package.json +0 -55
  220. package/skills/kobold-scan-skill/node_modules/glob/sync.js +0 -486
  221. package/skills/kobold-scan-skill/node_modules/has-flag/index.d.ts +0 -39
  222. package/skills/kobold-scan-skill/node_modules/has-flag/index.js +0 -8
  223. package/skills/kobold-scan-skill/node_modules/has-flag/license +0 -9
  224. package/skills/kobold-scan-skill/node_modules/has-flag/package.json +0 -46
  225. package/skills/kobold-scan-skill/node_modules/has-flag/readme.md +0 -89
  226. package/skills/kobold-scan-skill/node_modules/inflight/LICENSE +0 -15
  227. package/skills/kobold-scan-skill/node_modules/inflight/README.md +0 -37
  228. package/skills/kobold-scan-skill/node_modules/inflight/inflight.js +0 -54
  229. package/skills/kobold-scan-skill/node_modules/inflight/package.json +0 -29
  230. package/skills/kobold-scan-skill/node_modules/inherits/LICENSE +0 -16
  231. package/skills/kobold-scan-skill/node_modules/inherits/README.md +0 -42
  232. package/skills/kobold-scan-skill/node_modules/inherits/inherits.js +0 -9
  233. package/skills/kobold-scan-skill/node_modules/inherits/inherits_browser.js +0 -27
  234. package/skills/kobold-scan-skill/node_modules/inherits/package.json +0 -29
  235. package/skills/kobold-scan-skill/node_modules/minimatch/LICENSE +0 -15
  236. package/skills/kobold-scan-skill/node_modules/minimatch/README.md +0 -259
  237. package/skills/kobold-scan-skill/node_modules/minimatch/lib/path.js +0 -4
  238. package/skills/kobold-scan-skill/node_modules/minimatch/minimatch.js +0 -944
  239. package/skills/kobold-scan-skill/node_modules/minimatch/package.json +0 -35
  240. package/skills/kobold-scan-skill/node_modules/once/LICENSE +0 -15
  241. package/skills/kobold-scan-skill/node_modules/once/README.md +0 -79
  242. package/skills/kobold-scan-skill/node_modules/once/once.js +0 -42
  243. package/skills/kobold-scan-skill/node_modules/once/package.json +0 -33
  244. package/skills/kobold-scan-skill/node_modules/supports-color/browser.js +0 -5
  245. package/skills/kobold-scan-skill/node_modules/supports-color/index.js +0 -135
  246. package/skills/kobold-scan-skill/node_modules/supports-color/license +0 -9
  247. package/skills/kobold-scan-skill/node_modules/supports-color/package.json +0 -53
  248. package/skills/kobold-scan-skill/node_modules/supports-color/readme.md +0 -76
  249. package/skills/kobold-scan-skill/node_modules/wrappy/LICENSE +0 -15
  250. package/skills/kobold-scan-skill/node_modules/wrappy/README.md +0 -36
  251. package/skills/kobold-scan-skill/node_modules/wrappy/package.json +0 -29
  252. package/skills/kobold-scan-skill/node_modules/wrappy/wrappy.js +0 -33
@@ -0,0 +1,356 @@
1
+ /**
2
+ * Queue Modes - v0.1.0
3
+ *
4
+ * Hermes-style message queue handling:
5
+ * - steer: Interrupt mid-run, skip remaining tools
6
+ * - followup: Queue for next turn
7
+ * - collect: Batch with debounce
8
+ *
9
+ * Based on Hermes Agent queue_modes.py
10
+ */
11
+ import { EventEmitter } from "events";
12
+ const DEFAULT_CONFIG = {
13
+ defaultMode: "followup",
14
+ debounceMs: 500,
15
+ maxQueueSize: 10,
16
+ mergeMessages: true,
17
+ platformModes: {
18
+ // CLI gets steer mode for immediate interruption
19
+ cli: "steer",
20
+ // Messaging platforms use followup for safety
21
+ telegram: "followup",
22
+ discord: "followup",
23
+ whatsapp: "followup",
24
+ slack: "followup",
25
+ },
26
+ };
27
+ /**
28
+ * Message Queue Manager
29
+ *
30
+ * Handles incoming messages based on queue mode while
31
+ * the agent is processing.
32
+ */
33
+ export class MessageQueue extends EventEmitter {
34
+ config;
35
+ mode;
36
+ queue = [];
37
+ processing = false;
38
+ debounceTimer;
39
+ interruptRequested = false;
40
+ interruptMessage = null;
41
+ platform;
42
+ constructor(config = {}, platform = "cli") {
43
+ super();
44
+ this.config = { ...DEFAULT_CONFIG, ...config };
45
+ this.platform = platform;
46
+ this.mode = this.config.platformModes?.[platform] || this.config.defaultMode;
47
+ }
48
+ /**
49
+ * Set queue mode
50
+ */
51
+ setMode(mode) {
52
+ this.mode = mode;
53
+ this.emit("mode-change", mode);
54
+ }
55
+ /**
56
+ * Get current queue mode
57
+ */
58
+ getMode() {
59
+ return this.mode;
60
+ }
61
+ /**
62
+ * Start processing (agent begins)
63
+ */
64
+ startProcessing() {
65
+ this.processing = true;
66
+ this.interruptRequested = false;
67
+ this.interruptMessage = null;
68
+ this.emit("processing-start");
69
+ }
70
+ /**
71
+ * Stop processing (agent ends)
72
+ */
73
+ stopProcessing() {
74
+ this.processing = false;
75
+ this.emit("processing-stop");
76
+ // Process any queued messages
77
+ if (this.queue.length > 0) {
78
+ this.processQueue();
79
+ }
80
+ }
81
+ /**
82
+ * Check if currently processing
83
+ */
84
+ isProcessing() {
85
+ return this.processing;
86
+ }
87
+ /**
88
+ * Handle incoming message based on current mode
89
+ */
90
+ async handleMessage(message) {
91
+ switch (this.mode) {
92
+ case "steer":
93
+ await this.handleSteer(message);
94
+ break;
95
+ case "followup":
96
+ await this.handleFollowup(message);
97
+ break;
98
+ case "collect":
99
+ await this.handleCollect(message);
100
+ break;
101
+ }
102
+ }
103
+ /**
104
+ * Steer mode: Interrupt current run
105
+ *
106
+ * When agent is processing:
107
+ * - Set interrupt flag
108
+ * - Store message for immediate attention
109
+ * - Agent checks flag and aborts
110
+ */
111
+ async handleSteer(message) {
112
+ if (this.processing) {
113
+ // Signal interrupt
114
+ this.interruptRequested = true;
115
+ this.interruptMessage = message;
116
+ // Clear any queued messages (steer replaces)
117
+ this.queue = [];
118
+ this.emit("interrupt", {
119
+ message,
120
+ reason: "steer-mode-interrupt",
121
+ });
122
+ }
123
+ else {
124
+ // Not processing, emit immediately
125
+ this.emit("message", message);
126
+ }
127
+ }
128
+ /**
129
+ * Followup mode: Queue for next turn
130
+ *
131
+ * When agent is processing:
132
+ * - Add to queue
133
+ * - Process when agent finishes
134
+ */
135
+ async handleFollowup(message) {
136
+ if (this.processing) {
137
+ // Queue for later
138
+ if (this.queue.length >= this.config.maxQueueSize) {
139
+ // Remove oldest
140
+ const removed = this.queue.shift();
141
+ this.emit("queue-overflow", { removed, reason: "max-size" });
142
+ }
143
+ this.queue.push(message);
144
+ this.emit("queued", { message, queueSize: this.queue.length });
145
+ }
146
+ else {
147
+ // Not processing, emit immediately
148
+ this.emit("message", message);
149
+ }
150
+ }
151
+ /**
152
+ * Collect mode: Batch with debounce
153
+ *
154
+ * When agent is processing:
155
+ * - Collect messages
156
+ * - Wait for pause (debounce)
157
+ * - Merge into single input
158
+ * - Process when agent finishes
159
+ */
160
+ async handleCollect(message) {
161
+ // Add to queue
162
+ this.queue.push(message);
163
+ // Clear existing debounce timer
164
+ if (this.debounceTimer) {
165
+ clearTimeout(this.debounceTimer);
166
+ }
167
+ // Wait for pause
168
+ this.debounceTimer = setTimeout(() => {
169
+ this.processCollected();
170
+ }, this.config.debounceMs);
171
+ this.emit("collecting", { queueSize: this.queue.length });
172
+ }
173
+ /**
174
+ * Process collected messages
175
+ */
176
+ processCollected() {
177
+ if (this.queue.length === 0)
178
+ return;
179
+ if (this.config.mergeMessages && this.queue.length > 1) {
180
+ // Merge messages
181
+ const merged = {
182
+ id: `merged-${Date.now()}`,
183
+ content: this.queue.map(m => m.content).join("\n\n"),
184
+ platform: this.platform,
185
+ timestamp: Date.now(),
186
+ metadata: {
187
+ mergedCount: this.queue.length,
188
+ originalIds: this.queue.map(m => m.id),
189
+ },
190
+ };
191
+ this.queue = [];
192
+ this.emit("message", merged);
193
+ }
194
+ else {
195
+ // Process first, queue rest
196
+ const first = this.queue.shift();
197
+ if (first) {
198
+ this.emit("message", first);
199
+ }
200
+ // Keep rest for next turn
201
+ if (this.queue.length > 0) {
202
+ this.emit("queued", { queueSize: this.queue.length });
203
+ }
204
+ }
205
+ }
206
+ /**
207
+ * Process queued messages
208
+ */
209
+ processQueue() {
210
+ if (this.queue.length === 0)
211
+ return;
212
+ // Take all queued messages
213
+ const messages = [...this.queue];
214
+ this.queue = [];
215
+ // Merge if configured
216
+ if (this.config.mergeMessages && messages.length > 1) {
217
+ const merged = {
218
+ id: `merged-${Date.now()}`,
219
+ content: messages.map(m => m.content).join("\n\n"),
220
+ platform: this.platform,
221
+ timestamp: Date.now(),
222
+ metadata: {
223
+ mergedCount: messages.length,
224
+ originalIds: messages.map(m => m.id),
225
+ },
226
+ };
227
+ this.emit("message", merged);
228
+ }
229
+ else {
230
+ // Process each
231
+ for (const message of messages) {
232
+ this.emit("message", message);
233
+ }
234
+ }
235
+ this.emit("queue-processed", { count: messages.length });
236
+ }
237
+ /**
238
+ * Check if interrupt was requested
239
+ */
240
+ isInterruptRequested() {
241
+ return this.interruptRequested;
242
+ }
243
+ /**
244
+ * Get interrupt message
245
+ */
246
+ getInterruptMessage() {
247
+ return this.interruptMessage;
248
+ }
249
+ /**
250
+ * Clear interrupt state (after handling)
251
+ */
252
+ clearInterrupt() {
253
+ this.interruptRequested = false;
254
+ this.interruptMessage = null;
255
+ }
256
+ /**
257
+ * Get queued message count
258
+ */
259
+ getQueueSize() {
260
+ return this.queue.length;
261
+ }
262
+ /**
263
+ * Get all queued messages
264
+ */
265
+ getQueue() {
266
+ return [...this.queue];
267
+ }
268
+ /**
269
+ * Clear queue without processing
270
+ */
271
+ clearQueue() {
272
+ const count = this.queue.length;
273
+ this.queue = [];
274
+ if (this.debounceTimer) {
275
+ clearTimeout(this.debounceTimer);
276
+ }
277
+ this.emit("queue-cleared", { count });
278
+ }
279
+ }
280
+ /**
281
+ * Create a message queue instance
282
+ */
283
+ export function createMessageQueue(config, platform) {
284
+ return new MessageQueue(config, platform);
285
+ }
286
+ /**
287
+ * Interrupt handler for integrating with agent loop
288
+ */
289
+ export class InterruptHandler {
290
+ interrupted = false;
291
+ skippedTools = [];
292
+ /**
293
+ * Check interrupt flag (call from agent loop)
294
+ */
295
+ checkInterrupt() {
296
+ return this.interrupted;
297
+ }
298
+ /**
299
+ * Set interrupt (steer mode signal)
300
+ */
301
+ setInterrupt() {
302
+ this.interrupted = true;
303
+ }
304
+ /**
305
+ * Clear interrupt after handling
306
+ */
307
+ clearInterrupt() {
308
+ this.interrupted = false;
309
+ this.skippedTools = [];
310
+ }
311
+ /**
312
+ * Record skipped tool due to interrupt
313
+ */
314
+ recordSkippedTool(toolName) {
315
+ if (this.interrupted) {
316
+ this.skippedTools.push(toolName);
317
+ }
318
+ }
319
+ /**
320
+ * Get interrupt result
321
+ */
322
+ getResult() {
323
+ return {
324
+ interrupted: this.interrupted,
325
+ skippedTools: this.skippedTools,
326
+ reason: this.interrupted ? "steer-mode-interrupt" : "no-interrupt",
327
+ };
328
+ }
329
+ }
330
+ /**
331
+ * Platform-specific queue mode recommendations
332
+ */
333
+ export const PLATFORM_RECOMMENDATIONS = {
334
+ // CLI: Immediate interruption for responsive REPL
335
+ cli: "steer",
336
+ // Messaging platforms: Followup for safety
337
+ // Don't interrupt mid-task on async platforms
338
+ telegram: "followup",
339
+ discord: "followup",
340
+ slack: "followup",
341
+ whatsapp: "followup",
342
+ signal: "followup",
343
+ email: "followup",
344
+ // Cron: Collect for batched reporting
345
+ cron: "collect",
346
+ // Gateway: Followup for multi-platform safety
347
+ gateway: "followup",
348
+ };
349
+ /**
350
+ * Get recommended queue mode for platform
351
+ */
352
+ export function getRecommendedMode(platform) {
353
+ return PLATFORM_RECOMMENDATIONS[platform] || "followup";
354
+ }
355
+ export default createMessageQueue;
356
+ //# sourceMappingURL=queue-modes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue-modes.js","sourceRoot":"","sources":["../../../src/gateway/queue-modes.ts"],"names":[],"mappings":"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"}
package/dist/src/index.js CHANGED
@@ -20,8 +20,37 @@ import { ensureAuthProfilesFromConfig } from './agent/index';
20
20
  const __dirname = dirname(fileURLToPath(import.meta.url));
21
21
  const packageRoot = resolve(__dirname, '..');
22
22
  // Detect if we're running from dist/ or src/
23
- // If __dirname contains 'dist/src', we're running compiled code
23
+ // If __dirname contains 'dist', we're running compiled code
24
24
  const isRunningFromDist = __dirname.includes('dist');
25
+ // Find @0xkobold/pi-ollama from wherever it's installed
26
+ // This handles bun link global installs, npm installs, and local dev
27
+ function findOllamaExtension() {
28
+ try {
29
+ // Use import.meta.resolve to find the package from wherever it's installed
30
+ const resolved = import.meta.resolve('@0xkobold/pi-ollama');
31
+ // import.meta.resolve returns a file:// URL, convert to path
32
+ const packagePath = fileURLToPath(resolved);
33
+ // This gives us .../pi-ollama/dist/index.js or similar
34
+ // We want the dist/index.js
35
+ if (packagePath.includes('dist/index.js') || packagePath.includes('dist/index.ts')) {
36
+ return packagePath;
37
+ }
38
+ // Fallback: construct path from package root
39
+ return resolve(packagePath, 'dist/index.js');
40
+ }
41
+ catch {
42
+ // Fallback: use packageRoot-based resolution
43
+ // For bun link global install, node_modules is sibling to package, not inside dist
44
+ if (isRunningFromDist) {
45
+ // Go up from dist/src to find node_modules at package root level
46
+ // __dirname is .../node_modules/0xkobold/dist/src
47
+ // We need .../node_modules/@0xkobold/pi-ollama/dist/index.js
48
+ const globalModulesRoot = resolve(__dirname, '../../../..');
49
+ return resolve(globalModulesRoot, '@0xkobold/pi-ollama/dist/index.js');
50
+ }
51
+ return resolve(packageRoot, 'node_modules/@0xkobold/pi-ollama/dist/index.js');
52
+ }
53
+ }
25
54
  // For dist: __dirname is .../dist/src, packageRoot is .../dist
26
55
  // So we just need src/extensions/core from packageRoot
27
56
  const extensionDir = isRunningFromDist
@@ -73,9 +102,21 @@ function ext(name) {
73
102
  }
74
103
  // Verify extensions exist (for debugging)
75
104
  function verifyExtensions() {
105
+ const ollamaExtensionPath = findOllamaExtension();
106
+ // Debug: log where we found pi-ollama
107
+ if (!existsSync(ollamaExtensionPath)) {
108
+ console.error(`⚠️ pi-ollama extension not found at: ${ollamaExtensionPath}`);
109
+ console.error(` __dirname: ${__dirname}`);
110
+ console.error(` packageRoot: ${packageRoot}`);
111
+ console.error(` isRunningFromDist: ${isRunningFromDist}`);
112
+ }
76
113
  const extensions = [
77
114
  // Infrastructure
78
- // Note: ollama-extension loaded via pi-config.ts
115
+ // '--extension', ext('ollama-extension'),
116
+ // Ollama Provider Extension (npm package)
117
+ '--extension', ollamaExtensionPath,
118
+ // 🧠 Adaptive Model Router (must load after pi-ollama)
119
+ '--extension', ext('routed-ollama-extension'),
79
120
  // Core Features
80
121
  // Agent Orchestration (Unified - v0.2.0)
81
122
  // Replaces: agent-registry, subagent-extension, agent-lifecycle, agent-workspace
@@ -92,10 +133,7 @@ function verifyExtensions() {
92
133
  '--extension', ext('persona-loader-extension'),
93
134
  '--extension', ext('context-aware-extension'),
94
135
  '--extension', ext('onboarding-extension'),
95
- '--extension', ext('questionnaire-extension'),
96
136
  '--extension', ext('session-name-extension'),
97
- '--extension', ext('handoff-extension'),
98
- '--extension', ext('pi-notify-extension'),
99
137
  '--extension', ext('env-loader-extension'),
100
138
  '--extension', ext('heartbeat-extension'),
101
139
  '--extension', ext('discord-channel-extension'),
@@ -141,7 +179,7 @@ function verifyExtensions() {
141
179
  '--extension', ext('self-update-extension'),
142
180
  ];
143
181
  // Check that extensions exist
144
- const testExt = ext('config-extension');
182
+ const testExt = ext('fileops-extension');
145
183
  if (!existsSync(testExt)) {
146
184
  console.error(`⚠️ Warning: Extensions not found at ${extensionDir}`);
147
185
  console.error(` Expected: ${testExt}`);
@@ -231,6 +269,9 @@ async function main() {
231
269
  catch (err) {
232
270
  // Silent fail - not critical
233
271
  }
272
+ // Initialize Adaptive Model Router (deferred until after Ollama extension loads)
273
+ // We'll initialize it lazily on first use via the extension
274
+ console.log('💡 Model router will initialize after Ollama extension loads');
234
275
  // Build argv for pi-coding-agent: [node, script, ...extensions]
235
276
  // We must modify process.argv because pi-coding-agent reads it directly
236
277
  const originalArgv = process.argv;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}