newmark-agent 0.5.14 → 0.5.15

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 (64) hide show
  1. package/dist/conversation-utility-host.bundle.cjs +3373 -1900
  2. package/dist/conversation-utility-host.js +1 -1
  3. package/dist/core/agent.d.ts +105 -14
  4. package/dist/core/agent.js +658 -104
  5. package/dist/core/agentKernel/agent.d.ts +1 -0
  6. package/dist/core/agentKernel/agent.js +9 -0
  7. package/dist/core/agentKernelDiagnostics.d.ts +4 -6
  8. package/dist/core/agentKernelDiagnostics.js +12 -9
  9. package/dist/core/agentKernelRunner.d.ts +5 -0
  10. package/dist/core/agentKernelRunner.js +236 -85
  11. package/dist/core/autoRouter.js +16 -3
  12. package/dist/core/conversationCommandState.d.ts +17 -0
  13. package/dist/core/conversationCommandState.js +140 -0
  14. package/dist/core/conversationKernel.d.ts +25 -4
  15. package/dist/core/conversationKernel.js +347 -83
  16. package/dist/core/conversationListEvent.d.ts +6 -0
  17. package/dist/core/conversationListEvent.js +14 -0
  18. package/dist/core/electronUtilityAgentClient.d.ts +4 -1
  19. package/dist/core/electronUtilityAgentClient.js +4 -4
  20. package/dist/core/electronUtilityRuntimePool.d.ts +8 -2
  21. package/dist/core/electronUtilityRuntimePool.js +11 -5
  22. package/dist/core/installUpdate.js +41 -29
  23. package/dist/core/providerUsageAccounting.d.ts +47 -0
  24. package/dist/core/providerUsageAccounting.js +71 -0
  25. package/dist/core/requestContextEstimate.d.ts +18 -0
  26. package/dist/core/requestContextEstimate.js +54 -0
  27. package/dist/core/subagent.d.ts +89 -5
  28. package/dist/core/subagent.js +264 -41
  29. package/dist/core/subagentCommunication.d.ts +43 -0
  30. package/dist/core/subagentCommunication.js +167 -0
  31. package/dist/core/types.d.ts +32 -1
  32. package/dist/core/utilityAgentProtocol.d.ts +4 -0
  33. package/dist/core/workEventCoalescer.js +4 -1
  34. package/dist/core/wslAgentClient.d.ts +18 -5
  35. package/dist/core/wslAgentClient.js +79 -27
  36. package/dist/core/wslAgentProtocol.d.ts +7 -0
  37. package/dist/core/wslAgentRuntimePool.d.ts +8 -2
  38. package/dist/core/wslAgentRuntimePool.js +19 -6
  39. package/dist/core/wslRuntimeProcessTree.d.ts +10 -0
  40. package/dist/core/wslRuntimeProcessTree.js +104 -0
  41. package/dist/llm/provider.d.ts +5 -12
  42. package/dist/llm/provider.js +148 -267
  43. package/dist/main.js +582 -356
  44. package/dist/preload.js +3 -3
  45. package/dist/providers/chat-completions.adapter.d.ts +2 -0
  46. package/dist/providers/chat-completions.adapter.js +84 -36
  47. package/dist/providers/provider-adapter.d.ts +2 -0
  48. package/dist/providers/provider-events.d.ts +23 -14
  49. package/dist/providers/provider-events.js +148 -43
  50. package/dist/providers/provider-headers.d.ts +7 -3
  51. package/dist/providers/provider-headers.js +109 -39
  52. package/dist/providers/provider-request-compat.d.ts +6 -0
  53. package/dist/providers/provider-request-compat.js +37 -0
  54. package/dist/providers/responses.adapter.d.ts +2 -0
  55. package/dist/providers/responses.adapter.js +192 -126
  56. package/dist/server.d.ts +9 -2
  57. package/dist/server.js +100 -24
  58. package/dist/tools/index.js +17 -1
  59. package/dist/ui/index.html +2374 -616
  60. package/dist/ui/lucide-sprite.svg +7 -0
  61. package/dist/ui/startup.html +6 -6
  62. package/dist/wsl-agent-host.bundle.cjs +3381 -1906
  63. package/dist/wsl-agent-host.js +9 -4
  64. package/package.json +23 -4
@@ -50,6 +50,7 @@ export declare class Agent {
50
50
  message: AgentMessage;
51
51
  queueMode: 'steer' | 'followUp';
52
52
  }>;
53
+ removeQueuedMessages(predicate: (message: unknown, queueMode: 'steer' | 'followUp') => boolean): number;
53
54
  waitForIdle(): Promise<void>;
54
55
  abort(): void;
55
56
  prompt(message: string | AgentMessage | AgentMessage[], images?: ImageContent[]): Promise<void>;
@@ -54,6 +54,11 @@ class PendingMessageQueue {
54
54
  this.messages = [];
55
55
  return all;
56
56
  }
57
+ removeWhere(predicate) {
58
+ const before = this.messages.length;
59
+ this.messages = this.messages.filter(message => !predicate(message));
60
+ return before - this.messages.length;
61
+ }
57
62
  clear() { this.messages = []; }
58
63
  open() { this.accepting = true; }
59
64
  closeAndDrain() {
@@ -121,6 +126,10 @@ class Agent {
121
126
  ...this.followUpQueue.drainAll().map(message => ({ message, queueMode: 'followUp' })),
122
127
  ];
123
128
  }
129
+ removeQueuedMessages(predicate) {
130
+ return this.steeringQueue.removeWhere(message => predicate(message, 'steer'))
131
+ + this.followUpQueue.removeWhere(message => predicate(message, 'followUp'));
132
+ }
124
133
  waitForIdle() { return this.activeRun?.promise || Promise.resolve(); }
125
134
  abort() { this.activeRun?.abortController.abort(); }
126
135
  async prompt(message, images) {
@@ -1,3 +1,5 @@
1
+ import { type UsageNormalizationOptions } from '../providers/provider-events';
2
+ import type { StreamToken } from './types';
1
3
  export type AgentKernelDiagnosticEvent = {
2
4
  type: 'request_context';
3
5
  at: string;
@@ -22,6 +24,7 @@ export type AgentKernelDiagnosticEvent = {
22
24
  };
23
25
  export declare function setAgentKernelDiagnosticSink(sink: ((event: AgentKernelDiagnosticEvent) => void) | null): void;
24
26
  export declare function agentKernelDiagnosticsEnabled(): boolean;
27
+ export declare function agentKernelDiagnosticsRequested(): boolean;
25
28
  export declare function emitRequestContextDiagnostic(input: {
26
29
  conversationId?: string;
27
30
  systemPrompt?: string;
@@ -39,10 +42,5 @@ export declare function emitProviderUsageDiagnostic(input: {
39
42
  }): Extract<AgentKernelDiagnosticEvent, {
40
43
  type: 'provider_usage';
41
44
  }>;
42
- export declare function extractProviderUsage(payload: unknown): {
43
- input: number;
44
- output: number;
45
- cacheRead: number;
46
- cacheWrite: number;
47
- };
45
+ export declare function extractProviderUsage(payload: unknown, options?: UsageNormalizationOptions): NonNullable<StreamToken['usage']>;
48
46
  //# sourceMappingURL=agentKernelDiagnostics.d.ts.map
@@ -2,10 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.setAgentKernelDiagnosticSink = setAgentKernelDiagnosticSink;
4
4
  exports.agentKernelDiagnosticsEnabled = agentKernelDiagnosticsEnabled;
5
+ exports.agentKernelDiagnosticsRequested = agentKernelDiagnosticsRequested;
5
6
  exports.emitRequestContextDiagnostic = emitRequestContextDiagnostic;
6
7
  exports.emitProviderUsageDiagnostic = emitProviderUsageDiagnostic;
7
8
  exports.extractProviderUsage = extractProviderUsage;
8
9
  const crypto_1 = require("crypto");
10
+ const provider_events_1 = require("../providers/provider-events");
9
11
  let diagnosticSink = null;
10
12
  function setAgentKernelDiagnosticSink(sink) {
11
13
  diagnosticSink = sink;
@@ -13,6 +15,9 @@ function setAgentKernelDiagnosticSink(sink) {
13
15
  function agentKernelDiagnosticsEnabled() {
14
16
  return process.env.NEWMARK_KERNEL_DIAGNOSTICS === '1';
15
17
  }
18
+ function agentKernelDiagnosticsRequested() {
19
+ return diagnosticSink !== null || agentKernelDiagnosticsEnabled();
20
+ }
16
21
  function emitRequestContextDiagnostic(input) {
17
22
  const systemPrompt = String(input.systemPrompt || '');
18
23
  const messages = Array.isArray(input.messages) ? input.messages : [];
@@ -55,16 +60,14 @@ function emitProviderUsageDiagnostic(input) {
55
60
  console.error(`[NewmarkKernelDiagnostic] ${JSON.stringify(event)}`);
56
61
  return event;
57
62
  }
58
- function extractProviderUsage(payload) {
59
- const root = payload && typeof payload === 'object' ? payload : {};
60
- const usage = root.usage && typeof root.usage === 'object' ? root.usage : root;
61
- const inputDetails = usage.input_tokens_details || usage.prompt_tokens_details || {};
62
- const cacheCreation = usage.cache_creation_input_tokens ?? usage.cache_write_input_tokens ?? inputDetails.cache_write_tokens;
63
+ function extractProviderUsage(payload, options = {}) {
64
+ const usage = (0, provider_events_1.normalizeProviderUsage)(payload, options);
63
65
  return {
64
- input: boundedCount(usage.input_tokens ?? usage.prompt_tokens ?? usage.input),
65
- output: boundedCount(usage.output_tokens ?? usage.completion_tokens ?? usage.output),
66
- cacheRead: boundedCount(usage.cache_read_input_tokens ?? usage.cached_input_tokens ?? inputDetails.cached_tokens ?? inputDetails.cache_read_tokens),
67
- cacheWrite: boundedCount(cacheCreation),
66
+ input: usage?.inputTokens ?? 0,
67
+ output: usage?.outputTokens ?? 0,
68
+ cacheRead: usage?.cacheReadTokens ?? 0,
69
+ cacheWrite: usage?.cacheWriteTokens ?? 0,
70
+ reported: usage?.reported ?? { input: false, output: false, cacheRead: false, cacheWrite: false },
68
71
  };
69
72
  }
70
73
  function fingerprint(value) {
@@ -120,6 +120,11 @@ declare class ToolProvisionSession {
120
120
  constructor(catalog: unknown[], initial: unknown[]);
121
121
  reconcile(catalog: unknown[], initial: unknown[]): void;
122
122
  currentDefinitions(): unknown[];
123
+ snapshot(): {
124
+ initialTools: string[];
125
+ provisionedTools: string[];
126
+ };
127
+ restore(initial: string[], provisioned: string[]): void;
123
128
  metrics(): ToolProvisionMetrics;
124
129
  provision(params: unknown): ToolProvisionResult;
125
130
  private search;