0xkobold 0.4.3 → 0.5.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 (130) hide show
  1. package/README.md +226 -383
  2. package/dist/package.json +13 -4
  3. package/dist/src/agent/DraconicCapabilityRouter.js +556 -0
  4. package/dist/src/agent/DraconicCapabilityRouter.js.map +1 -0
  5. package/dist/src/agent/DraconicErrorClassifier.js +606 -0
  6. package/dist/src/agent/DraconicErrorClassifier.js.map +1 -0
  7. package/dist/src/agent/DraconicRunRegistry.js +460 -0
  8. package/dist/src/agent/DraconicRunRegistry.js.map +1 -0
  9. package/dist/src/agent/DraconicTokenPredictor.js +500 -0
  10. package/dist/src/agent/DraconicTokenPredictor.js.map +1 -0
  11. package/dist/src/agent/embedded-runner.js +3 -2
  12. package/dist/src/agent/embedded-runner.js.map +1 -1
  13. package/dist/src/cli/commands/doctor.js +199 -0
  14. package/dist/src/cli/commands/doctor.js.map +1 -0
  15. package/dist/src/cli/commands/migrate-from-openclaw.js +39 -0
  16. package/dist/src/cli/commands/migrate-from-openclaw.js.map +1 -0
  17. package/dist/src/cli/commands/migrate.js +6 -4
  18. package/dist/src/cli/commands/migrate.js.map +1 -1
  19. package/dist/src/cli/program.js +3 -1
  20. package/dist/src/cli/program.js.map +1 -1
  21. package/dist/src/config/unified-config.js +195 -0
  22. package/dist/src/config/unified-config.js.map +1 -0
  23. package/dist/src/cron/notifications.js +1 -1
  24. package/dist/src/cron/notifications.js.map +1 -1
  25. package/dist/src/cron/runner.js +9 -3
  26. package/dist/src/cron/runner.js.map +1 -1
  27. package/dist/src/event-bus/index.js +3 -1
  28. package/dist/src/event-bus/index.js.map +1 -1
  29. package/dist/src/extensions/community/draconic-messenger-wrapper.js +35 -0
  30. package/dist/src/extensions/community/draconic-messenger-wrapper.js.map +1 -0
  31. package/dist/src/extensions/community/draconic-subagents-wrapper.js +115 -0
  32. package/dist/src/extensions/community/draconic-subagents-wrapper.js.map +1 -0
  33. package/dist/src/extensions/core/compaction-safeguard-v2.js +95 -0
  34. package/dist/src/extensions/core/compaction-safeguard-v2.js.map +1 -0
  35. package/dist/src/extensions/core/compaction-safeguard.js +206 -137
  36. package/dist/src/extensions/core/compaction-safeguard.js.map +1 -1
  37. package/dist/src/extensions/core/config-extension.js +122 -0
  38. package/dist/src/extensions/core/config-extension.js.map +1 -0
  39. package/dist/src/extensions/core/draconic-hoard-extension.js +194 -0
  40. package/dist/src/extensions/core/draconic-hoard-extension.js.map +1 -0
  41. package/dist/src/extensions/core/draconic-lair-extension.js +146 -0
  42. package/dist/src/extensions/core/draconic-lair-extension.js.map +1 -0
  43. package/dist/src/extensions/core/draconic-safety-extension.js +402 -0
  44. package/dist/src/extensions/core/draconic-safety-extension.js.map +1 -0
  45. package/dist/src/extensions/core/ext-manager.js +40 -0
  46. package/dist/src/extensions/core/ext-manager.js.map +1 -0
  47. package/dist/src/extensions/core/gateway-extension.js +413 -624
  48. package/dist/src/extensions/core/gateway-extension.js.map +1 -1
  49. package/dist/src/extensions/core/generative-agents-extension.js +704 -0
  50. package/dist/src/extensions/core/generative-agents-extension.js.map +1 -0
  51. package/dist/src/extensions/core/memory-bootstrap-extension.js +279 -0
  52. package/dist/src/extensions/core/memory-bootstrap-extension.js.map +1 -0
  53. package/dist/src/extensions/core/ollama-extension.js +442 -0
  54. package/dist/src/extensions/core/ollama-extension.js.map +1 -0
  55. package/dist/src/extensions/core/ollama-router-extension.js +34 -93
  56. package/dist/src/extensions/core/ollama-router-extension.js.map +1 -1
  57. package/dist/src/extensions/core/perennial-memory-extension.js +5 -2
  58. package/dist/src/extensions/core/perennial-memory-extension.js.map +1 -1
  59. package/dist/src/extensions/core/persona-loader-extension.js +41 -15
  60. package/dist/src/extensions/core/persona-loader-extension.js.map +1 -1
  61. package/dist/src/extensions/core/pi-notify-extension.js +6 -0
  62. package/dist/src/extensions/core/pi-notify-extension.js.map +1 -1
  63. package/dist/src/extensions/core/session-bridge-extension.js +8 -72
  64. package/dist/src/extensions/core/session-bridge-extension.js.map +1 -1
  65. package/dist/src/extensions/core/tui-integration-extension-fixed.js +3 -0
  66. package/dist/src/extensions/core/tui-integration-extension-fixed.js.map +1 -0
  67. package/dist/src/extensions/core/tui-integration-extension.js +984 -0
  68. package/dist/src/extensions/core/tui-integration-extension.js.map +1 -0
  69. package/dist/src/gateway/persistence/AgentStore.js +399 -0
  70. package/dist/src/gateway/persistence/AgentStore.js.map +1 -0
  71. package/dist/src/gateway/persistence/index.js +9 -0
  72. package/dist/src/gateway/persistence/index.js.map +1 -0
  73. package/dist/src/hoard/DraconicHoardSystem.js +465 -0
  74. package/dist/src/hoard/DraconicHoardSystem.js.map +1 -0
  75. package/dist/src/index.js +7 -5
  76. package/dist/src/index.js.map +1 -1
  77. package/dist/src/infra/DraconicConnectionPool.js +492 -0
  78. package/dist/src/infra/DraconicConnectionPool.js.map +1 -0
  79. package/dist/src/lair/DraconicLairSystem.js +387 -0
  80. package/dist/src/lair/DraconicLairSystem.js.map +1 -0
  81. package/dist/src/llm/ollama.js +143 -99
  82. package/dist/src/llm/ollama.js.map +1 -1
  83. package/dist/src/migration/openclaw.js +5 -5
  84. package/dist/src/migration/openclaw.js.map +1 -1
  85. package/dist/src/pi-config.js +52 -27
  86. package/dist/src/pi-config.js.map +1 -1
  87. package/dist/src/sessions/SessionManager.js +416 -0
  88. package/dist/src/sessions/SessionManager.js.map +1 -0
  89. package/dist/src/sessions/SessionStore.js +580 -0
  90. package/dist/src/sessions/SessionStore.js.map +1 -0
  91. package/dist/src/sessions/UnifiedSessionBridge.js +394 -0
  92. package/dist/src/sessions/UnifiedSessionBridge.js.map +1 -0
  93. package/dist/src/sessions/index.js +15 -0
  94. package/dist/src/sessions/index.js.map +1 -0
  95. package/dist/src/sessions/migration/index.js +156 -0
  96. package/dist/src/sessions/migration/index.js.map +1 -0
  97. package/dist/src/sessions/types.js +8 -0
  98. package/dist/src/sessions/types.js.map +1 -0
  99. package/dist/src/skills/framework.js +1 -1
  100. package/dist/src/skills/framework.js.map +1 -1
  101. package/dist/src/tui/commands/final-functions.js +39 -0
  102. package/dist/src/tui/commands/final-functions.js.map +1 -0
  103. package/dist/src/tui/commands/natural-language-commands.js +231 -0
  104. package/dist/src/tui/commands/natural-language-commands.js.map +1 -0
  105. package/dist/src/tui/commands/orchestration-commands.js +340 -0
  106. package/dist/src/tui/commands/orchestration-commands.js.map +1 -0
  107. package/dist/src/tui/commands/orchestration-final-section.js +84 -0
  108. package/dist/src/tui/commands/orchestration-final-section.js.map +1 -0
  109. package/dist/src/tui/components/agent-tree-overlay.js +210 -0
  110. package/dist/src/tui/components/agent-tree-overlay.js.map +1 -0
  111. package/dist/src/tui/components/agent-tree-panel.js +229 -0
  112. package/dist/src/tui/components/agent-tree-panel.js.map +1 -0
  113. package/dist/src/tui/components/sidebar.js +82 -0
  114. package/dist/src/tui/components/sidebar.js.map +1 -0
  115. package/dist/src/tui/components/status-bar.js +115 -0
  116. package/dist/src/tui/components/status-bar.js.map +1 -0
  117. package/dist/src/tui/components/tree-header.js +85 -0
  118. package/dist/src/tui/components/tree-header.js.map +1 -0
  119. package/dist/src/tui/draconic-tui.js +291 -0
  120. package/dist/src/tui/draconic-tui.js.map +1 -0
  121. package/dist/src/tui/index.js +93 -0
  122. package/dist/src/tui/index.js.map +1 -0
  123. package/dist/src/tui/pi-tui-integration.js +260 -0
  124. package/dist/src/tui/pi-tui-integration.js.map +1 -0
  125. package/dist/src/utils/nl-patterns.js +145 -0
  126. package/dist/src/utils/nl-patterns.js.map +1 -0
  127. package/package.json +13 -4
  128. package/scripts/migrate-from-openclaw.sh +498 -0
  129. package/HEARTBEAT.md +0 -121
  130. package/USAGE.md +0 -191
@@ -0,0 +1,500 @@
1
+ /**
2
+ * 🔮 Draconic Token Predictor
3
+ *
4
+ * Superior to OpenClaw (which has no prediction):
5
+ * - Estimates tokens before API call
6
+ * - Prevents context overflow pro-actively
7
+ * - Suggests actions (proceed/compact/split)
8
+ * - Model-aware pricing
9
+ *
10
+ * "Predict the future, control the present"
11
+ */
12
+ /**
13
+ * 🐉 Draconic Token Predictor
14
+ *
15
+ * Superior to OpenClaw: Predicts BEFORE sending
16
+ */
17
+ export class DraconicTokenPredictor {
18
+ // Model-specific tokenization characteristics
19
+ modelCharacteristics = new Map([
20
+ // Anthropic Models
21
+ [
22
+ "claude-3-opus",
23
+ {
24
+ tokensPerChar: 0.25, // ~4 chars per token
25
+ tokensPerWord: 1.3,
26
+ overheadPerMessage: 4,
27
+ overheadPerTool: 10,
28
+ outputMultiplier: 2.0,
29
+ },
30
+ ],
31
+ [
32
+ "claude-3-sonnet",
33
+ {
34
+ tokensPerChar: 0.25,
35
+ tokensPerWord: 1.3,
36
+ overheadPerMessage: 4,
37
+ overheadPerTool: 10,
38
+ outputMultiplier: 1.5,
39
+ },
40
+ ],
41
+ // OpenAI Models
42
+ [
43
+ "gpt-4",
44
+ {
45
+ tokensPerChar: 0.25,
46
+ tokensPerWord: 1.3,
47
+ overheadPerMessage: 3,
48
+ overheadPerTool: 8,
49
+ outputMultiplier: 1.8,
50
+ },
51
+ ],
52
+ [
53
+ "gpt-4-turbo",
54
+ {
55
+ tokensPerChar: 0.25,
56
+ tokensPerWord: 1.3,
57
+ overheadPerMessage: 3,
58
+ overheadPerTool: 8,
59
+ outputMultiplier: 1.5,
60
+ },
61
+ ],
62
+ // Ollama Models (Llama-based)
63
+ [
64
+ "llama3.1",
65
+ {
66
+ tokensPerChar: 0.25,
67
+ tokensPerWord: 1.3,
68
+ overheadPerMessage: 3,
69
+ overheadPerTool: 8,
70
+ outputMultiplier: 1.5,
71
+ },
72
+ ],
73
+ [
74
+ "llama3.1:8b",
75
+ {
76
+ tokensPerChar: 0.25,
77
+ tokensPerWord: 1.3,
78
+ overheadPerMessage: 3,
79
+ overheadPerTool: 8,
80
+ outputMultiplier: 1.2,
81
+ },
82
+ ],
83
+ [
84
+ "llama3.1:70b",
85
+ {
86
+ tokensPerChar: 0.25,
87
+ tokensPerWord: 1.3,
88
+ overheadPerMessage: 3,
89
+ overheadPerTool: 8,
90
+ outputMultiplier: 1.8,
91
+ },
92
+ ],
93
+ [
94
+ "llama3.2",
95
+ {
96
+ tokensPerChar: 0.25,
97
+ tokensPerWord: 1.3,
98
+ overheadPerMessage: 3,
99
+ overheadPerTool: 8,
100
+ outputMultiplier: 1.3,
101
+ },
102
+ ],
103
+ [
104
+ "qwen2.5",
105
+ {
106
+ tokensPerChar: 0.25,
107
+ tokensPerWord: 1.3,
108
+ overheadPerMessage: 3,
109
+ overheadPerTool: 8,
110
+ outputMultiplier: 1.4,
111
+ },
112
+ ],
113
+ [
114
+ "qwen2.5:14b",
115
+ {
116
+ tokensPerChar: 0.25,
117
+ tokensPerWord: 1.3,
118
+ overheadPerMessage: 3,
119
+ overheadPerTool: 8,
120
+ outputMultiplier: 1.5,
121
+ },
122
+ ],
123
+ [
124
+ "mistral",
125
+ {
126
+ tokensPerChar: 0.25,
127
+ tokensPerWord: 1.3,
128
+ overheadPerMessage: 3,
129
+ overheadPerTool: 8,
130
+ outputMultiplier: 1.4,
131
+ },
132
+ ],
133
+ [
134
+ "mistral-nemo",
135
+ {
136
+ tokensPerChar: 0.25,
137
+ tokensPerWord: 1.3,
138
+ overheadPerMessage: 3,
139
+ overheadPerTool: 8,
140
+ outputMultiplier: 1.3,
141
+ },
142
+ ],
143
+ [
144
+ "gemma2",
145
+ {
146
+ tokensPerChar: 0.25,
147
+ tokensPerWord: 1.3,
148
+ overheadPerMessage: 3,
149
+ overheadPerTool: 8,
150
+ outputMultiplier: 1.3,
151
+ },
152
+ ],
153
+ [
154
+ "deepseek-coder",
155
+ {
156
+ tokensPerChar: 0.25,
157
+ tokensPerWord: 1.3,
158
+ overheadPerMessage: 4,
159
+ overheadPerTool: 10,
160
+ outputMultiplier: 1.8,
161
+ },
162
+ ],
163
+ [
164
+ "deepseek-coder-v2",
165
+ {
166
+ tokensPerChar: 0.25,
167
+ tokensPerWord: 1.3,
168
+ overheadPerMessage: 4,
169
+ overheadPerTool: 10,
170
+ outputMultiplier: 2.0,
171
+ },
172
+ ],
173
+ // Cloud Ollama Models
174
+ [
175
+ "llama3.1:cloud",
176
+ {
177
+ tokensPerChar: 0.25,
178
+ tokensPerWord: 1.3,
179
+ overheadPerMessage: 3,
180
+ overheadPerTool: 8,
181
+ outputMultiplier: 1.5,
182
+ },
183
+ ],
184
+ [
185
+ "llama3.2:cloud",
186
+ {
187
+ tokensPerChar: 0.25,
188
+ tokensPerWord: 1.3,
189
+ overheadPerMessage: 3,
190
+ overheadPerTool: 8,
191
+ outputMultiplier: 1.3,
192
+ },
193
+ ],
194
+ [
195
+ "qwen2.5:cloud",
196
+ {
197
+ tokensPerChar: 0.25,
198
+ tokensPerWord: 1.3,
199
+ overheadPerMessage: 3,
200
+ overheadPerTool: 8,
201
+ outputMultiplier: 1.4,
202
+ },
203
+ ],
204
+ [
205
+ "minimax-m2.5:cloud",
206
+ {
207
+ tokensPerChar: 0.25,
208
+ tokensPerWord: 1.3,
209
+ overheadPerMessage: 3,
210
+ overheadPerTool: 8,
211
+ outputMultiplier: 1.4,
212
+ },
213
+ ],
214
+ [
215
+ "kimi-k2.5:cloud",
216
+ {
217
+ tokensPerChar: 0.25,
218
+ tokensPerWord: 1.3,
219
+ overheadPerMessage: 4,
220
+ overheadPerTool: 10,
221
+ outputMultiplier: 1.8,
222
+ },
223
+ ],
224
+ // Default for unknown Ollama models
225
+ [
226
+ "ollama",
227
+ {
228
+ tokensPerChar: 0.25,
229
+ tokensPerWord: 1.3,
230
+ overheadPerMessage: 3,
231
+ overheadPerTool: 8,
232
+ outputMultiplier: 1.3,
233
+ },
234
+ ],
235
+ [
236
+ "default",
237
+ {
238
+ tokensPerChar: 0.3,
239
+ tokensPerWord: 1.5,
240
+ overheadPerMessage: 3,
241
+ overheadPerTool: 8,
242
+ outputMultiplier: 1.5,
243
+ },
244
+ ],
245
+ ]);
246
+ // Model pricing (per 1K tokens)
247
+ // Ollama models are free (local compute only)
248
+ modelPricing = new Map([
249
+ // Anthropic Models
250
+ ["claude-3-opus", { input: 15.0, output: 75.0, currency: "USD" }],
251
+ ["claude-3-sonnet", { input: 3.0, output: 15.0, currency: "USD" }],
252
+ ["claude-3-haiku", { input: 0.25, output: 1.25, currency: "USD" }],
253
+ // OpenAI Models
254
+ ["gpt-4", { input: 30.0, output: 60.0, currency: "USD" }],
255
+ ["gpt-4-turbo", { input: 10.0, output: 30.0, currency: "USD" }],
256
+ ["gpt-3.5-turbo", { input: 0.5, output: 1.5, currency: "USD" }],
257
+ // Ollama Models (Free - Local compute)
258
+ ["llama3.1", { input: 0.0, output: 0.0, currency: "LOCAL" }],
259
+ ["llama3.1:8b", { input: 0.0, output: 0.0, currency: "LOCAL" }],
260
+ ["llama3.1:70b", { input: 0.0, output: 0.0, currency: "LOCAL" }],
261
+ ["llama3.2", { input: 0.0, output: 0.0, currency: "LOCAL" }],
262
+ ["qwen2.5", { input: 0.0, output: 0.0, currency: "LOCAL" }],
263
+ ["qwen2.5:14b", { input: 0.0, output: 0.0, currency: "LOCAL" }],
264
+ ["mistral", { input: 0.0, output: 0.0, currency: "LOCAL" }],
265
+ ["mistral-nemo", { input: 0.0, output: 0.0, currency: "LOCAL" }],
266
+ ["gemma2", { input: 0.0, output: 0.0, currency: "LOCAL" }],
267
+ ["deepseek-coder", { input: 0.0, output: 0.0, currency: "LOCAL" }],
268
+ ["deepseek-coder-v2", { input: 0.0, output: 0.0, currency: "LOCAL" }],
269
+ // Cloud Ollama Models
270
+ ["llama3.1:cloud", { input: 0.0, output: 0.0, currency: "LOCAL" }],
271
+ ["llama3.2:cloud", { input: 0.0, output: 0.0, currency: "LOCAL" }],
272
+ ["qwen2.5:cloud", { input: 0.0, output: 0.0, currency: "LOCAL" }],
273
+ ["minimax-m2.5:cloud", { input: 0.0, output: 0.0, currency: "LOCAL" }],
274
+ ["kimi-k2.5:cloud", { input: 0.0, output: 0.0, currency: "LOCAL" }],
275
+ ["ollama", { input: 0.0, output: 0.0, currency: "LOCAL" }],
276
+ ["default", { input: 3.0, output: 6.0, currency: "USD" }],
277
+ ]);
278
+ static instance = null;
279
+ static getInstance() {
280
+ if (!DraconicTokenPredictor.instance) {
281
+ DraconicTokenPredictor.instance = new DraconicTokenPredictor();
282
+ }
283
+ return DraconicTokenPredictor.instance;
284
+ }
285
+ /**
286
+ * Estimate tokens for a request
287
+ * OpenClaw does NOT have this - it just sends and hopes
288
+ */
289
+ estimate(input) {
290
+ const characteristics = this.getModelCharacteristics(input.model);
291
+ // Calculate input tokens
292
+ const systemTokens = this.estimateTokens(input.systemPrompt ?? "", characteristics);
293
+ const historyTokens = input.history.reduce((sum, msg) => {
294
+ const contentTokens = this.estimateTokens(msg.content || "", characteristics);
295
+ return sum + contentTokens + characteristics.overheadPerMessage;
296
+ }, 0);
297
+ const currentTokens = this.estimateTokens(input.currentPrompt, characteristics) +
298
+ characteristics.overheadPerMessage;
299
+ const totalInput = systemTokens + historyTokens + currentTokens;
300
+ // Calculate output estimate
301
+ const outputStrategy = this.getOutputEstimate(input.expectedOutputLength ?? "medium", currentTokens, characteristics);
302
+ // Context analysis
303
+ const used = totalInput;
304
+ const remaining = input.contextWindow - used;
305
+ const percent = (used / input.contextWindow) * 100;
306
+ // Decide action
307
+ const suggestion = this.suggestAction(percent, remaining, outputStrategy.expected);
308
+ // Cost calculation
309
+ const pricing = this.getModelPricing(input.model);
310
+ const cost = this.calculateCost(totalInput, outputStrategy, pricing);
311
+ return {
312
+ input: {
313
+ total: totalInput,
314
+ system: systemTokens,
315
+ history: historyTokens,
316
+ currentPrompt: currentTokens,
317
+ },
318
+ output: outputStrategy,
319
+ contextWindow: {
320
+ total: input.contextWindow,
321
+ used,
322
+ remaining,
323
+ percent,
324
+ },
325
+ willFit: suggestion.willFit,
326
+ suggestedAction: suggestion.action,
327
+ reason: suggestion.reason,
328
+ cost,
329
+ };
330
+ }
331
+ /**
332
+ * Estimate tokens for text
333
+ * Uses character-based approximation (fast) with word fallback
334
+ */
335
+ estimateTokens(text, characteristics) {
336
+ // Character-based estimate (most accurate for quick estimation)
337
+ const charTokens = Math.ceil(text.length * characteristics.tokensPerChar);
338
+ // Word-based estimate (backup)
339
+ const wordCount = text.split(/\s+/).filter((w) => w.length > 0).length;
340
+ const wordTokens = Math.ceil(wordCount * characteristics.tokensPerWord);
341
+ // Use character estimate as primary (more reliable for code)
342
+ // Average with word estimate for accuracy
343
+ return Math.round((charTokens * 0.7 + wordTokens * 0.3));
344
+ }
345
+ /**
346
+ * Get output token estimates
347
+ */
348
+ getOutputEstimate(length, inputTokens, characteristics) {
349
+ const baseMultiplier = {
350
+ short: 0.5,
351
+ medium: 1.0,
352
+ long: 3.0,
353
+ very_long: 8.0,
354
+ }[length];
355
+ const expectedMultiplier = characteristics.outputMultiplier * baseMultiplier;
356
+ const expected = Math.round(inputTokens * expectedMultiplier);
357
+ return {
358
+ min: Math.round(expected * 0.2), // Could be very short
359
+ expected,
360
+ max: Math.round(expected * 3), // Could expand significantly
361
+ confidence: {
362
+ short: 0.9, // More predictable
363
+ medium: 0.8,
364
+ long: 0.6, // Less predictable
365
+ very_long: 0.4, // Hard to predict
366
+ }[length],
367
+ };
368
+ }
369
+ /**
370
+ * Suggest action based on context usage
371
+ */
372
+ suggestAction(percent, remaining, expectedOutput) {
373
+ if (percent >= 100) {
374
+ return {
375
+ willFit: false,
376
+ action: "abort",
377
+ reason: `Context window exceeded (${percent.toFixed(1)}%). Cannot proceed.`,
378
+ };
379
+ }
380
+ if (percent > 95) {
381
+ return {
382
+ willFit: false,
383
+ action: "compact",
384
+ reason: `Context at ${percent.toFixed(1)}% - emergency compaction needed.`,
385
+ };
386
+ }
387
+ if (percent > 85) {
388
+ return {
389
+ willFit: false,
390
+ action: "compact",
391
+ reason: `Context at ${percent.toFixed(1)}% - compaction recommended.`,
392
+ };
393
+ }
394
+ if (remaining < expectedOutput) {
395
+ return {
396
+ willFit: false,
397
+ action: "split",
398
+ reason: `Only ${remaining} tokens left but expect ${expectedOutput} output. Split request.`,
399
+ };
400
+ }
401
+ if (percent > 70) {
402
+ return {
403
+ willFit: true,
404
+ action: "proceed",
405
+ reason: `Context at ${percent.toFixed(1)}% - will fit but monitor closely.`,
406
+ };
407
+ }
408
+ return {
409
+ willFit: true,
410
+ action: "proceed",
411
+ reason: `Context at ${percent.toFixed(1)}% - safe to proceed.`,
412
+ };
413
+ }
414
+ /**
415
+ * Calculate cost estimate
416
+ */
417
+ calculateCost(inputTokens, output, pricing) {
418
+ const inputCost = (inputTokens / 1000) * pricing.input;
419
+ const outputMin = (output.min / 1000) * pricing.output;
420
+ const outputExpected = (output.expected / 1000) * pricing.output;
421
+ const outputMax = (output.max / 1000) * pricing.output;
422
+ return {
423
+ currency: pricing.currency,
424
+ input: Math.round(inputCost * 10000) / 10000,
425
+ output: {
426
+ min: Math.round(outputMin * 10000) / 10000,
427
+ expected: Math.round(outputExpected * 10000) / 10000,
428
+ max: Math.round(outputMax * 10000) / 10000,
429
+ },
430
+ total: {
431
+ min: Math.round((inputCost + outputMin) * 10000) / 10000,
432
+ expected: Math.round((inputCost + outputExpected) * 10000) / 10000,
433
+ max: Math.round((inputCost + outputMax) * 10000) / 10000,
434
+ },
435
+ };
436
+ }
437
+ /**
438
+ * Quick estimate (for rapid checks)
439
+ */
440
+ quickEstimate(text, model) {
441
+ const characteristics = this.getModelCharacteristics(model);
442
+ return this.estimateTokens(text, characteristics);
443
+ }
444
+ /**
445
+ * Estimate multiple messages
446
+ */
447
+ estimateMessages(messages, model) {
448
+ const characteristics = this.getModelCharacteristics(model);
449
+ const byMessage = messages.map((m) => this.estimateTokens(m.content || "", characteristics));
450
+ const total = byMessage.reduce((a, b) => a + b, 0);
451
+ return { total, byMessage };
452
+ }
453
+ /**
454
+ * Get model characteristics
455
+ */
456
+ getModelCharacteristics(model) {
457
+ // Find best match
458
+ for (const [key, value] of this.modelCharacteristics) {
459
+ if (model.toLowerCase().includes(key)) {
460
+ return value;
461
+ }
462
+ }
463
+ return this.modelCharacteristics.get("default");
464
+ }
465
+ /**
466
+ * Get model pricing
467
+ */
468
+ getModelPricing(model) {
469
+ for (const [key, value] of this.modelPricing) {
470
+ if (model.toLowerCase().includes(key)) {
471
+ return value;
472
+ }
473
+ }
474
+ return this.modelPricing.get("default");
475
+ }
476
+ /**
477
+ * Estimate if compaction is needed
478
+ */
479
+ shouldCompact(estimate) {
480
+ return estimate.suggestedAction === "compact" || estimate.suggestedAction === "abort";
481
+ }
482
+ /**
483
+ * Estimate how much to compact
484
+ */
485
+ getCompactionTarget(estimate) {
486
+ const targetPercent = 50; // Aim for 50% usage
487
+ const targetTokens = (estimate.contextWindow.total * targetPercent) / 100;
488
+ return Math.max(0, estimate.contextWindow.used - targetTokens);
489
+ }
490
+ }
491
+ // Singleton
492
+ export const getDraconicTokenPredictor = DraconicTokenPredictor.getInstance;
493
+ // Convenience functions
494
+ export function estimateTokens(text, model = "default") {
495
+ return getDraconicTokenPredictor().quickEstimate(text, model);
496
+ }
497
+ export function estimateMessages(messages, model) {
498
+ return getDraconicTokenPredictor().estimateMessages(messages, model);
499
+ }
500
+ //# sourceMappingURL=DraconicTokenPredictor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DraconicTokenPredictor.js","sourceRoot":"","sources":["../../../src/agent/DraconicTokenPredictor.ts"],"names":[],"mappings":"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"}
@@ -32,7 +32,8 @@ export async function runEmbeddedAgent(config) {
32
32
  tools: config.extensions?.flatMap(e => e.tools || []),
33
33
  });
34
34
  console.log(`[Embedded] System prompt: ${systemPrompt.length} chars`);
35
- // 4. TODO: Integrate with pi-coding-agent
35
+ // 4. TODO(v0.5.2+): Integrate with pi-coding-agent SDK
36
+ // This requires SDK linkage and is a larger architectural change
36
37
  // const { session } = await createAgentSession({
37
38
  // cwd: config.cwd,
38
39
  // // ... other config
@@ -65,7 +66,7 @@ export async function runEmbeddedAgent(config) {
65
66
  * Check if embedded mode is available
66
67
  */
67
68
  export function isEmbeddedModeAvailable() {
68
- // TODO: Check if pi-coding-agent SDK is properly linked
69
+ // TODO(v0.6.0): Check if pi-coding-agent SDK is properly linked
69
70
  return true;
70
71
  }
71
72
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"embedded-runner.js","sourceRoot":"","sources":["../../../src/agent/embedded-runner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAA8B,MAAM,oBAAoB,CAAC;AAqBnF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAyB;IAEzB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,GAAG,CAAC;IAEvD,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,yBAAyB,YAAY,EAAE,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC;IAE5D,kCAAkC;IAClC,MAAM,sBAAsB,CAAC,YAAY,CAAC,CAAC;IAE3C,uDAAuD;IACvD,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,qBAAqB,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,kBAAkB,CAAC,CAAC;IAEhG,gCAAgC;IAChC,MAAM,YAAY,GAAG,iBAAiB,CAAC;QACrC,UAAU,EAAE,SAAS,EAAE,eAAe;QACtC,cAAc;QACd,SAAS,EAAE,YAAY;QACvB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;KACtD,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,6BAA6B,YAAY,CAAC,MAAM,QAAQ,CAAC,CAAC;IAEtE,0CAA0C;IAC1C,iDAAiD;IACjD,qBAAqB;IACrB,wBAAwB;IACxB,MAAM;IACN,GAAG;IACH,gCAAgC;IAChC,6DAA6D;IAC7D,gDAAgD;IAChD,EAAE;IACF,SAAS;IACT,sDAAsD;IAEtD,kCAAkC;IAClC,MAAM,eAAe,GAAsB;QACzC,IAAI,EAAE,gCAAgC;YAChC,2BAA2B;YAC3B,cAAc;iBACX,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;iBACrB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,SAAS,CAAC;iBACzC,IAAI,CAAC,IAAI,CAAC;QACnB,SAAS,EAAE,EAAE;QACb,QAAQ,EAAE;YACR,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YAChC,MAAM,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,iBAAiB;SACnD;KACF,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,2BAA2B,eAAe,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,CAAC;IAE9E,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,wDAAwD;IACxD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,YAAoB;IACzD,MAAM,sBAAsB,CAAC,YAAY,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;AACvE,CAAC"}
1
+ {"version":3,"file":"embedded-runner.js","sourceRoot":"","sources":["../../../src/agent/embedded-runner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAA8B,MAAM,oBAAoB,CAAC;AAqBnF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAyB;IAEzB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,GAAG,CAAC;IAEvD,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,yBAAyB,YAAY,EAAE,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC;IAE5D,kCAAkC;IAClC,MAAM,sBAAsB,CAAC,YAAY,CAAC,CAAC;IAE3C,uDAAuD;IACvD,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,qBAAqB,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,kBAAkB,CAAC,CAAC;IAEhG,gCAAgC;IAChC,MAAM,YAAY,GAAG,iBAAiB,CAAC;QACrC,UAAU,EAAE,SAAS,EAAE,eAAe;QACtC,cAAc;QACd,SAAS,EAAE,YAAY;QACvB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;KACtD,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,6BAA6B,YAAY,CAAC,MAAM,QAAQ,CAAC,CAAC;IAEtE,uDAAuD;IACvD,iEAAiE;IACjE,iDAAiD;IACjD,qBAAqB;IACrB,wBAAwB;IACxB,MAAM;IACN,GAAG;IACH,gCAAgC;IAChC,6DAA6D;IAC7D,gDAAgD;IAChD,EAAE;IACF,SAAS;IACT,sDAAsD;IAEtD,kCAAkC;IAClC,MAAM,eAAe,GAAsB;QACzC,IAAI,EAAE,gCAAgC;YAChC,2BAA2B;YAC3B,cAAc;iBACX,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;iBACrB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,SAAS,CAAC;iBACzC,IAAI,CAAC,IAAI,CAAC;QACnB,SAAS,EAAE,EAAE;QACb,QAAQ,EAAE;YACR,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YAChC,MAAM,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,iBAAiB;SACnD;KACF,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,2BAA2B,eAAe,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,CAAC;IAE9E,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,gEAAgE;IAChE,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,YAAoB;IACzD,MAAM,sBAAsB,CAAC,YAAY,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;AACvE,CAAC"}