@caupulican/pi-adaptative 0.80.79 → 0.80.81

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 (70) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/dist/core/agent-session.d.ts +15 -14
  3. package/dist/core/agent-session.d.ts.map +1 -1
  4. package/dist/core/agent-session.js +202 -9
  5. package/dist/core/agent-session.js.map +1 -1
  6. package/dist/core/cost/daily-usage.d.ts +23 -0
  7. package/dist/core/cost/daily-usage.d.ts.map +1 -0
  8. package/dist/core/cost/daily-usage.js +135 -0
  9. package/dist/core/cost/daily-usage.js.map +1 -0
  10. package/dist/core/model-router/config-diagnostics.d.ts +4 -0
  11. package/dist/core/model-router/config-diagnostics.d.ts.map +1 -0
  12. package/dist/core/model-router/config-diagnostics.js +26 -0
  13. package/dist/core/model-router/config-diagnostics.js.map +1 -0
  14. package/dist/core/model-router/intent-classifier.d.ts +3 -0
  15. package/dist/core/model-router/intent-classifier.d.ts.map +1 -0
  16. package/dist/core/model-router/intent-classifier.js +12 -0
  17. package/dist/core/model-router/intent-classifier.js.map +1 -0
  18. package/dist/core/model-router/session-buffer.d.ts +21 -0
  19. package/dist/core/model-router/session-buffer.d.ts.map +1 -0
  20. package/dist/core/model-router/session-buffer.js +20 -0
  21. package/dist/core/model-router/session-buffer.js.map +1 -0
  22. package/dist/core/model-router/status.d.ts +17 -0
  23. package/dist/core/model-router/status.d.ts.map +1 -0
  24. package/dist/core/model-router/status.js +66 -0
  25. package/dist/core/model-router/status.js.map +1 -0
  26. package/dist/core/model-router/tool-escalation.d.ts +9 -0
  27. package/dist/core/model-router/tool-escalation.d.ts.map +1 -0
  28. package/dist/core/model-router/tool-escalation.js +97 -0
  29. package/dist/core/model-router/tool-escalation.js.map +1 -0
  30. package/dist/core/resource-loader.d.ts +6 -0
  31. package/dist/core/resource-loader.d.ts.map +1 -1
  32. package/dist/core/resource-loader.js +49 -34
  33. package/dist/core/resource-loader.js.map +1 -1
  34. package/dist/core/resource-profile-equality.d.ts +5 -0
  35. package/dist/core/resource-profile-equality.d.ts.map +1 -0
  36. package/dist/core/resource-profile-equality.js +18 -0
  37. package/dist/core/resource-profile-equality.js.map +1 -0
  38. package/dist/core/settings-manager.d.ts +11 -0
  39. package/dist/core/settings-manager.d.ts.map +1 -1
  40. package/dist/core/settings-manager.js +7 -0
  41. package/dist/core/settings-manager.js.map +1 -1
  42. package/dist/core/slash-commands.d.ts.map +1 -1
  43. package/dist/core/slash-commands.js +2 -0
  44. package/dist/core/slash-commands.js.map +1 -1
  45. package/dist/main.d.ts.map +1 -1
  46. package/dist/main.js +5 -0
  47. package/dist/main.js.map +1 -1
  48. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  49. package/dist/modes/interactive/components/config-selector.js +3 -3
  50. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  51. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  52. package/dist/modes/interactive/components/footer.js +6 -1
  53. package/dist/modes/interactive/components/footer.js.map +1 -1
  54. package/dist/modes/interactive/components/settings-selector.d.ts +2 -1
  55. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  56. package/dist/modes/interactive/components/settings-selector.js +15 -0
  57. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  58. package/dist/modes/interactive/interactive-mode.d.ts +2 -0
  59. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  60. package/dist/modes/interactive/interactive-mode.js +84 -15
  61. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  62. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  63. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  64. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  65. package/examples/extensions/sandbox/package-lock.json +2 -2
  66. package/examples/extensions/sandbox/package.json +1 -1
  67. package/examples/extensions/with-deps/package-lock.json +2 -2
  68. package/examples/extensions/with-deps/package.json +1 -1
  69. package/npm-shrinkwrap.json +12 -12
  70. package/package.json +4 -4
package/CHANGELOG.md CHANGED
@@ -1,3 +1,59 @@
1
+ ## [0.80.81] - 2026-06-28
2
+
3
+ ### Added
4
+
5
+ - Added the opt-in model-router settings shape and deterministic prompt intent classifier foundation for
6
+ cheap/expensive model routing. When explicitly enabled with authenticated router models, read-only turns
7
+ temporarily use the configured cheap model and modifying turns use the configured expensive model without
8
+ persisting transient model switches; routing remains disabled by default.
9
+ - Added transcript-safe model-router escalation: cheap/research-routed turns that attempt mutating tools
10
+ discard the cheap attempt and retry the original turn on the configured expensive model instead of
11
+ letting a low-cost model perform write or execution work.
12
+ - Added active-session daily cost visibility: the footer now includes a `day:$...` total derived from
13
+ same-day session logs across default project directories, including spawned/background usage reports.
14
+ - Added a daily cost breakdown to the session info surface so users can see own/session cost,
15
+ spawned/background report cost, scanned sessions, and spawned/background report counts.
16
+ - Added model-router status to the session info surface, including enabled state, configured cheap/
17
+ expensive models, and the latest routed or escalated decision.
18
+ - Persisted model-router routing decisions as hidden custom session entries so `/session` can show a
19
+ short recent-decision history after session reloads.
20
+ - Added model-router routing activity/skip status to `/session`, including disabled, unresolved model,
21
+ unset model, and missing-auth reasons.
22
+ - Added latest model-router intent visibility to `/session` so users can audit whether the last prompt was
23
+ classified as research or modify.
24
+ - Clarified model-router `/session` status so a skipped latest prompt no longer presents an older routed
25
+ decision as the current latest decision.
26
+ - Added model-router discoverability in the interactive settings selector by showing enabled, cheap-model,
27
+ and expensive-model configuration together.
28
+ - Added a read-only settings selector cue naming `modelRouter.enabled`, `modelRouter.cheapModel`, and
29
+ `modelRouter.expensiveModel` as the editable config keys.
30
+ - Added startup diagnostics for enabled model-router configs with unset, unresolved, or unauthenticated
31
+ cheap/expensive model settings.
32
+ - Added `/usage` as a unified token, cost, background-spend, context, Auto Learn, model-router, and
33
+ manual optimization control summary.
34
+
35
+ ### Fixed
36
+
37
+ - `/exit` now behaves as a quit alias in interactive mode, and `/quit`/`/exit` bypass active streaming or
38
+ compaction queues instead of being sent to the model as normal prompts.
39
+ - The Resources submenu now handles keyboard input correctly, so Escape/Ctrl+C can cancel nested resource
40
+ menus and the CLI resource selector shuts down through the normal TUI cleanup path.
41
+ - Active-profile resource edits now compare resource filters by value, preserving the live extension
42
+ load/unload path for extension-only changes instead of falling back to an unnecessary full reload.
43
+ - Model-router classification now keeps educational question prompts such as "how do I add..." or
44
+ "what does git commit do?" on the cheap research lane while preserving explicit change requests.
45
+ - Model-router cheap-turn escalation now permits allowlisted read-only shell commands such as
46
+ `git status`, `git diff --stat`, `pwd`, and `npm view` without retrying on the expensive model.
47
+
48
+ ## [0.80.80] - 2026-06-28
49
+
50
+ ### Fixed
51
+
52
+ - Resource-profile editor now lists extensions installed under external resource roots. Previously these
53
+ extensions were loaded and active but missing from the editor's "available" list, so it showed "(none
54
+ available)" while they ran and they couldn't be blocked or allowed per profile. The editor's universe
55
+ and the loaded set now come from a single discovery source, so they always match.
56
+
1
57
  ## [0.80.79] - 2026-06-28
2
58
 
3
59
  ### Changed
@@ -1,22 +1,9 @@
1
- /**
2
- * AgentSession - Core abstraction for agent lifecycle and session management.
3
- *
4
- * This class is shared between all run modes (interactive, print, rpc).
5
- * It encapsulates:
6
- * - Agent state access
7
- * - Event subscription with automatic session persistence
8
- * - Model and thinking level management
9
- * - Compaction (manual and auto)
10
- * - Bash execution
11
- * - Session switching and branching
12
- *
13
- * Modes use this class and add their own I/O layer on top.
14
- */
15
1
  import type { Agent, AgentEvent, AgentMessage, AgentState, AgentTool, ThinkingLevel } from "@caupulican/pi-agent-core";
16
2
  import type { CacheRetention, ImageContent, Message, Model, StopReason, TextContent, Usage } from "@caupulican/pi-ai";
17
3
  import { type BashResult } from "./bash-executor.ts";
18
4
  import { type CompactionResult } from "./compaction/index.ts";
19
5
  import { type ContextGcReport } from "./context-gc.ts";
6
+ import { type DailyUsageTotals } from "./cost/daily-usage.ts";
20
7
  import { type CostGuardDecision } from "./cost-guard.ts";
21
8
  import { type ContextUsage, type ExtensionCommandContextActions, type ExtensionContext, type ExtensionErrorListener, ExtensionRunner, type ExtensionUIContext, type InputSource, type ReplacedSessionContext, type SessionStartEvent, type ShutdownHandler, type ToolDefinition, type ToolInfo } from "./extensions/index.ts";
22
9
  import { type ChannelProvider, GatewayRegistry, type JobSchedulerProvider } from "./gateways/channel-provider.ts";
@@ -289,10 +276,18 @@ export declare class AgentSession {
289
276
  private readonly _gatewayRegistry;
290
277
  /** Cache for getSpawnedUsage(), keyed by session entry count (Bug #22 — avoid O(N) per render frame). */
291
278
  private _spawnedUsageCache?;
279
+ private _dailyUsageCache?;
292
280
  /** Latest proactive cost-guard decision (#34), for the host UI to surface. Undefined when disabled. */
293
281
  private _lastCostGuardDecision?;
294
282
  /** One-shot latch so the cost guard downgrades reasoning once per over-threshold episode, not every call. */
295
283
  private _costGuardDowngraded;
284
+ /** Active model-router intent for the current transient routed turn, if any. */
285
+ private _activeModelRouterIntent?;
286
+ private _modelRouterSessionBuffer?;
287
+ private _modelRouterEscalationRequested;
288
+ private _lastModelRouterDecision?;
289
+ private _lastModelRouterSkipReason?;
290
+ private _lastModelRouterIntent?;
296
291
  /** Lazily-built skill curator (#32) over `<agentDir>/skills`. */
297
292
  private _skillCuratorInstance?;
298
293
  /** Set on dispose so in-flight background reflection bails instead of writing to a dead session (Bug #21). */
@@ -489,6 +484,10 @@ export declare class AgentSession {
489
484
  private _buildAutonomyPrompt;
490
485
  private _rebuildSystemPrompt;
491
486
  private _runAgentPrompt;
487
+ private _resolveModelRouterModelForIntent;
488
+ private _resolveModelRouterTurnModel;
489
+ getModelRouterStatus(formatLabel?: (label: string) => string): string;
490
+ private _runAgentPromptWithModelRouter;
492
491
  private _handlePostAgentRun;
493
492
  /**
494
493
  * Send a prompt to the agent.
@@ -842,6 +841,8 @@ export declare class AgentSession {
842
841
  * instead of an O(N) scan on every keystroke (Bug #22). Recomputes only when entries change.
843
842
  */
844
843
  getSpawnedUsage(): SpawnedUsageTotals;
844
+ getDailyUsageTotals(now?: Date): DailyUsageTotals;
845
+ getDailyUsageBreakdown(formatLabel?: (label: string) => string, now?: Date): string;
845
846
  /**
846
847
  * Run a one-shot LLM completion fully ISOLATED from the main session — the load-bearing
847
848
  * primitive for the native reflection engine (adaptive-agent design §6c/§7).