praxis-agent 0.16.0 → 0.17.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 (43) hide show
  1. package/README.md +11 -5
  2. package/dist/application/background-agent-manager.d.ts +7 -1
  3. package/dist/application/background-agent-manager.js +148 -5
  4. package/dist/application/metered-model-completion.d.ts +15 -0
  5. package/dist/application/metered-model-completion.js +76 -0
  6. package/dist/application/model-compactor.js +25 -1
  7. package/dist/application/session-cost-tracker.d.ts +50 -0
  8. package/dist/application/session-cost-tracker.js +254 -0
  9. package/dist/application/session-service.d.ts +13 -0
  10. package/dist/application/session-service.js +594 -69
  11. package/dist/application/subagent-service.d.ts +11 -1
  12. package/dist/application/subagent-service.js +41 -1
  13. package/dist/application/tool-use-summary.d.ts +7 -2
  14. package/dist/application/tool-use-summary.js +42 -10
  15. package/dist/application/workflow-manager.d.ts +9 -4
  16. package/dist/application/workflow-manager.js +151 -7
  17. package/dist/cli/interactive.d.ts +5 -1
  18. package/dist/cli/interactive.js +227 -15
  19. package/dist/cli/protocol.d.ts +11 -0
  20. package/dist/cli/protocol.js +16 -1
  21. package/dist/cli/tui/claude-command-inventory.d.ts +27 -27
  22. package/dist/cli/tui/claude-command-inventory.js +26 -26
  23. package/dist/cli/tui/config-dashboard.d.ts +2 -9
  24. package/dist/cli/tui/config-dashboard.js +6 -6
  25. package/dist/cli/tui/cost-summary.d.ts +34 -0
  26. package/dist/cli/tui/cost-summary.js +192 -0
  27. package/dist/cli/tui/doctor-dashboard.d.ts +15 -0
  28. package/dist/cli/tui/doctor-dashboard.js +81 -0
  29. package/dist/cli/tui/slash-commands.js +10 -0
  30. package/dist/cli.d.ts +2 -0
  31. package/dist/cli.js +192 -15
  32. package/dist/core/compaction.d.ts +2 -0
  33. package/dist/core/runtime.d.ts +38 -1
  34. package/dist/core/runtime.js +265 -11
  35. package/dist/persistence/claude-cost-state-store.d.ts +48 -0
  36. package/dist/persistence/claude-cost-state-store.js +335 -0
  37. package/dist/providers/anthropic-compatible.js +34 -9
  38. package/dist/providers/fallback-provider.d.ts +2 -1
  39. package/dist/providers/fallback-provider.js +28 -3
  40. package/dist/tools/line-changes.d.ts +8 -0
  41. package/dist/tools/line-changes.js +35 -0
  42. package/dist/tools/local-tools.js +30 -1
  43. package/package.json +2 -1
@@ -11,9 +11,11 @@ import { type ContextAssembler } from '../core/context.js';
11
11
  import type { ClaudeExtensionCatalog } from '../extensions/claude-extensions.js';
12
12
  import type { ClaudeHookRunner } from '../hooks/claude-hooks.js';
13
13
  import { type TranscriptParseIssue } from '../persistence/claude-transcript-store.js';
14
+ import type { ClaudeCostStateStore } from '../persistence/claude-cost-state-store.js';
14
15
  import { type AgentPermissionMode } from './subagent-service.js';
15
16
  import { type WorkflowTaskSnapshot } from './workflow-manager.js';
16
17
  import type { WorkspaceContext } from './session-worktree.js';
18
+ import { type ClaudeSessionCostSnapshot } from './session-cost-tracker.js';
17
19
  import type { ClaudeInteractiveToolManager } from '../tools/claude-interactive-tools.js';
18
20
  import type { ClaudePermissionMode } from '../permissions/claude-permission-resolver.js';
19
21
  import type { ClaudeMcpRuntime, ClaudeMcpServerStatus, ClaudeMcpToolInspection } from '../mcp/claude-mcp-tools.js';
@@ -75,6 +77,7 @@ export interface ClaudeSessionServiceOptions {
75
77
  fileRewindRoots?: readonly string[];
76
78
  interactiveTools?: ClaudeInteractiveToolManager;
77
79
  mcp?: ClaudeMcpRuntime;
80
+ costStateStore?: Pick<ClaudeCostStateStore, 'load' | 'save'>;
78
81
  }
79
82
  export interface SessionRunResult {
80
83
  sessionId: string;
@@ -90,6 +93,9 @@ export interface SideQuestionResult {
90
93
  text: string;
91
94
  usage: ModelUsage;
92
95
  costUsd?: number;
96
+ modelUsage?: Readonly<Record<string, ModelUsage>>;
97
+ durationApiMs?: number;
98
+ durationApiWithoutRetriesMs?: number;
93
99
  }
94
100
  export interface SideQuestionForkResult {
95
101
  agentId: string;
@@ -158,6 +164,9 @@ export declare class ClaudeSessionService {
158
164
  private readonly downloadedFileResourceSessions;
159
165
  private activeProvider;
160
166
  private mcpClosePromise;
167
+ private readonly sessionCostTrackers;
168
+ private activeCostSessionId;
169
+ private closeCostSavePromise;
161
170
  private runtimeCwd;
162
171
  constructor(options: ClaudeSessionServiceOptions);
163
172
  nextScheduledPrompt(signal?: AbortSignal): Promise<import("./scheduled-prompt-manager.js").ScheduledPrompt | null>;
@@ -204,6 +213,10 @@ export declare class ClaudeSessionService {
204
213
  rewindFiles(sessionId: string, userMessageId: string): Promise<void>;
205
214
  rewindPoints(sessionId: string): Promise<RewindPoint[]>;
206
215
  setPermissionMode(sessionId: string, permissionMode: ClaudePermissionMode): Promise<void>;
216
+ private activateSessionCostTracker;
217
+ private persistActiveSessionCost;
218
+ private recordAuxiliaryMetrics;
219
+ costSnapshot(sessionId: string): Promise<ClaudeSessionCostSnapshot>;
207
220
  private executeTurn;
208
221
  private ensureFileResources;
209
222
  private translationContext;