@nuvin/agent-core 0.1.1-rc.0 → 0.2.0-rc.2

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 (37) hide show
  1. package/dist/VERSION +2 -2
  2. package/dist/agent/index.js +1 -1
  3. package/dist/agent/metrics.d.ts +8 -0
  4. package/dist/chunk-D5IVWJHX.js +1 -1
  5. package/dist/chunk-FFIZ6TKW.js +1 -1
  6. package/dist/chunk-JQLCZGQ7.js +1 -0
  7. package/dist/chunk-NYZR4XKO.js +1 -1
  8. package/dist/chunk-WDPOWIJR.js +1 -0
  9. package/dist/chunk-X7VAACWY.js +1 -1
  10. package/dist/chunk-YNOIG4FD.js +1 -0
  11. package/dist/formats/index.js +1 -1
  12. package/dist/formats/message-format.d.ts +1 -0
  13. package/dist/hooks/index.js +1 -1
  14. package/dist/models/chat-model.d.ts +1 -0
  15. package/dist/models/github-model.d.ts +2 -0
  16. package/dist/models/index.d.ts +2 -0
  17. package/dist/models/index.js +1 -1
  18. package/dist/models/mock-model.d.ts +2 -0
  19. package/dist/models/model-cost.d.ts +5 -0
  20. package/dist/models/model-pricing-generator.d.ts +9 -0
  21. package/dist/models/model-pricing-products.d.ts +45 -0
  22. package/dist/models/model-pricing-types.d.ts +33 -0
  23. package/dist/models/model-pricing.d.ts +13 -0
  24. package/dist/models/model-pricing.generated.d.ts +23147 -0
  25. package/dist/models/openai-surfaces.d.ts +3 -0
  26. package/dist/models/routed-model.d.ts +3 -0
  27. package/dist/shared/index.js +1 -1
  28. package/dist/shared/types.d.ts +38 -7
  29. package/dist/tools/index.js +1 -1
  30. package/dist/tools/mcp-server-manager.d.ts +9 -4
  31. package/dist/tools/mcp-tool-adapter.d.ts +6 -1
  32. package/dist/tools/runtime-manager-tools.d.ts +11 -0
  33. package/dist/tools/tools.d.ts +4 -1
  34. package/package.json +2 -2
  35. package/dist/chunk-BLGBVFVX.js +0 -1
  36. package/dist/chunk-UIXQPCSN.js +0 -1
  37. package/dist/chunk-YWQXXHHU.js +0 -1
@@ -45,6 +45,9 @@ interface OpenAiChatCompletionsRequest {
45
45
  max_tokens?: number;
46
46
  reasoning_effort?: "high" | "low" | "medium" | "minimal" | "none" | "xhigh";
47
47
  stream: boolean;
48
+ stream_options?: {
49
+ include_usage: true;
50
+ };
48
51
  tools?: OpenAiChatCompletionToolDefinition[];
49
52
  response_format?: {
50
53
  type: "json_schema";
@@ -32,6 +32,7 @@ export interface RoutedModelOptions {
32
32
  model: string;
33
33
  modelIdentity?: string;
34
34
  maxTokens?: number;
35
+ pricingProviderId?: string;
35
36
  reasoning?: ReasoningConfig;
36
37
  providerAdapter: ProviderAdapter;
37
38
  providerSessionResolver?: ProviderSessionResolver;
@@ -45,6 +46,7 @@ export declare class RoutedModel implements EngineChatModel {
45
46
  readonly model: string;
46
47
  readonly modelIdentity: string;
47
48
  readonly maxTokens?: number;
49
+ readonly pricingProviderId?: string;
48
50
  protected readonly reasoning?: ReasoningConfig;
49
51
  protected readonly apiKey?: string;
50
52
  protected readonly baseUrl: string;
@@ -83,6 +85,7 @@ export declare class RoutedModel implements EngineChatModel {
83
85
  protected mapApiError(error: Error): Error;
84
86
  protected toApiError(response: Response): Promise<Error>;
85
87
  private getSurface;
88
+ protected withPricingProviderId(request: ChatRequest): ChatRequest;
86
89
  private prepareChatRequest;
87
90
  protected applyModelDefaults(request: ChatRequest): ChatRequest;
88
91
  private sendHttpSurfaceRequest;
@@ -1 +1 @@
1
- (function(_0x28b6cf,_0x313690){var _0x38bbe6={_0x10a28a:0x49b,_0x19a2ed:0x49f,_0x43e27e:0x2fd,_0x497508:0x2f5,_0x7d2cac:0x2ef,_0x4b4c9c:0x2f6,_0xe80ea9:0x2f2,_0x36c5dc:0x2f4,_0x18244b:0x2f8,_0x210343:0x2f2,_0x3d5d26:0x496,_0x5724a5:0x497,_0x2a0e1a:0x49e,_0x35e477:0x4a2,_0x3526f5:0x49d,_0x4a53b5:0x2ee,_0x32dec5:0x2f3,_0x9260f3:0x2fc,_0x12505d:0x2f9},_0x28bebd={_0x3f354a:0x17a},_0xc060d4={_0x3bca37:0x31c};function _0x3f19f4(_0x440d31,_0x2703a6,_0x12d843,_0x1c8ef5){return _0xe757(_0x440d31-_0xc060d4._0x3bca37,_0x2703a6);}function _0x364ee1(_0x14ff6d,_0x32366e,_0x4c4683,_0x569d52){return _0xe757(_0x4c4683-_0x28bebd._0x3f354a,_0x14ff6d);}var _0x595bd5=_0x28b6cf();while(!![]){try{var _0x4a9229=parseInt(_0x3f19f4(_0x38bbe6._0x10a28a,_0x38bbe6._0x19a2ed,_0x38bbe6._0x19a2ed,0x4a0))/0x1*(parseInt(_0x364ee1(_0x38bbe6._0x43e27e,0x2f5,0x2fb,_0x38bbe6._0x497508))/0x2)+-parseInt(_0x364ee1(_0x38bbe6._0x7d2cac,_0x38bbe6._0x4b4c9c,_0x38bbe6._0xe80ea9,0x2f0))/0x3*(parseInt(_0x364ee1(0x2f0,0x2f8,_0x38bbe6._0x36c5dc,0x2f8))/0x4)+-parseInt(_0x364ee1(0x2f7,0x2f5,0x2fa,_0x38bbe6._0x18244b))/0x5*(-parseInt(_0x364ee1(0x300,0x301,0x2fd,0x2fd))/0x6)+parseInt(_0x364ee1(0x2f6,_0x38bbe6._0x210343,0x2f8,0x2f6))/0x7+-parseInt(_0x3f19f4(0x499,_0x38bbe6._0x19a2ed,0x49c,0x498))/0x8*(-parseInt(_0x3f19f4(0x497,_0x38bbe6._0x3d5d26,0x495,_0x38bbe6._0x5724a5))/0x9)+parseInt(_0x3f19f4(_0x38bbe6._0x2a0e1a,_0x38bbe6._0x35e477,0x49c,_0x38bbe6._0x3526f5))/0xa+parseInt(_0x364ee1(_0x38bbe6._0x4a53b5,_0x38bbe6._0xe80ea9,_0x38bbe6._0x32dec5,0x2ef))/0xb*(-parseInt(_0x364ee1(_0x38bbe6._0x9260f3,_0x38bbe6._0x12505d,0x2f6,0x2f4))/0xc);if(_0x4a9229===_0x313690)break;else _0x595bd5['push'](_0x595bd5['shift']());}catch(_0x4800f7){_0x595bd5['push'](_0x595bd5['shift']());}}}(_0x2f30,0x76c45));function _0xe757(_0x55bbf4,_0x44a331){_0x55bbf4=_0x55bbf4-0x178;var _0x2f3055=_0x2f30();var _0xe757dc=_0x2f3055[_0x55bbf4];if(_0xe757['cPLpok']===undefined){var _0x2f47c5=function(_0x29e67b){var _0x321903='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x28f50b='',_0x3f0394='';for(var _0x1f89e0=0x0,_0x4582eb,_0x4ed472,_0x32c798=0x0;_0x4ed472=_0x29e67b['charAt'](_0x32c798++);~_0x4ed472&&(_0x4582eb=_0x1f89e0%0x4?_0x4582eb*0x40+_0x4ed472:_0x4ed472,_0x1f89e0++%0x4)?_0x28f50b+=String['fromCharCode'](0xff&_0x4582eb>>(-0x2*_0x1f89e0&0x6)):0x0){_0x4ed472=_0x321903['indexOf'](_0x4ed472);}for(var _0x3e670f=0x0,_0x37e678=_0x28f50b['length'];_0x3e670f<_0x37e678;_0x3e670f++){_0x3f0394+='%'+('00'+_0x28f50b['charCodeAt'](_0x3e670f)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3f0394);};_0xe757['GdDsmh']=_0x2f47c5,_0xe757['XhpQrj']={},_0xe757['cPLpok']=!![];}var _0x3788ea=_0x2f3055[0x0],_0x28db43=_0x55bbf4+_0x3788ea,_0x2b2057=_0xe757['XhpQrj'][_0x28db43];return!_0x2b2057?(_0xe757dc=_0xe757['GdDsmh'](_0xe757dc),_0xe757['XhpQrj'][_0x28db43]=_0xe757dc):_0xe757dc=_0x2b2057,_0xe757dc;}function _0x2f30(){var _0x2576de=['mJy3mtKXnhzMEu9LBa','mJG1Du16sLDl','nZDcsfHTAhO','mtm4nZzhthDxs2m','nty3nZeXBfvVBxjU','mtyXmJG2mhvwzvvwCW','oenzvhr6vq','ndq0odmWnhvnCNLLBa','mZeYnZmZs1HiChn2','nuL3EvDfzW','mKHpAfrvAG','mZaWmJu2mfHWA3Hwzq'];_0x2f30=function(){return _0x2576de;};return _0x2f30();}import{modelIdentityFromParts}from'../chunk-D5IVWJHX.js';import{mapAutoReasoningEffortToBudgetTokens,resolveAnthropicThinkingConfig,resolveOpenAiReasoningConfig}from'../chunk-NYZR4XKO.js';import{TurnFailedError}from'../chunk-FFIZ6TKW.js';import{OperationAbortedError,addAbortListener,isAbortError,throwIfAborted,toAbortError}from'../chunk-X7VAACWY.js';export{OperationAbortedError,TurnFailedError,addAbortListener,isAbortError,mapAutoReasoningEffortToBudgetTokens,modelIdentityFromParts,resolveAnthropicThinkingConfig,resolveOpenAiReasoningConfig,throwIfAborted,toAbortError};
1
+ (function(_0x231ab8,_0x347ff9){var _0xdbfbf2={_0x53e11f:0x22,_0x35f21b:0x1f,_0x1ce949:0x418,_0x34f7f5:0x41d,_0x6d0e3d:0x41a,_0x1467c6:0x1f,_0x2b6163:0x1a,_0x3e4e88:0x15,_0x9bbc2b:0x421,_0x1d01e5:0x12,_0x3d5118:0x17,_0x55c0ff:0x14,_0xfe3c2f:0x17,_0x5ca0b1:0x40c,_0x4cf0f3:0x17,_0x4a05cb:0x1c,_0x3b5c6f:0x19,_0x191289:0x410,_0xe921ad:0x13,_0x57e031:0x18,_0x5dec03:0x417,_0x443113:0x417,_0x5aedaf:0x413},_0x4f2f33={_0x42d435:0x179},_0x279f30={_0x4f7326:0x283};function _0x5de123(_0x5d12ab,_0x2feb84,_0x46ab7a,_0xd51d2a){return _0x494c(_0x46ab7a-_0x279f30._0x4f7326,_0x5d12ab);}var _0x513984=_0x231ab8();function _0x12a96c(_0x1caa54,_0x48adcb,_0x3a0ef6,_0x123d1d){return _0x494c(_0x48adcb- -_0x4f2f33._0x42d435,_0x123d1d);}while(!![]){try{var _0x164269=-parseInt(_0x12a96c(_0xdbfbf2._0x53e11f,_0xdbfbf2._0x35f21b,0x21,0x21))/0x1*(parseInt(_0x5de123(_0xdbfbf2._0x1ce949,_0xdbfbf2._0x34f7f5,0x419,_0xdbfbf2._0x6d0e3d))/0x2)+parseInt(_0x12a96c(_0xdbfbf2._0x1467c6,_0xdbfbf2._0x2b6163,_0xdbfbf2._0x3e4e88,_0xdbfbf2._0x2b6163))/0x3*(-parseInt(_0x5de123(0x422,0x41a,0x41c,_0xdbfbf2._0x9bbc2b))/0x4)+parseInt(_0x12a96c(_0xdbfbf2._0x1d01e5,_0xdbfbf2._0x3d5118,_0xdbfbf2._0x55c0ff,_0xdbfbf2._0xfe3c2f))/0x5+parseInt(_0x5de123(_0xdbfbf2._0x5ca0b1,0x411,0x411,0x415))/0x6+parseInt(_0x12a96c(_0xdbfbf2._0x4cf0f3,_0xdbfbf2._0x4a05cb,0x21,0x20))/0x7*(parseInt(_0x12a96c(0x20,0x1e,0x1d,0x23))/0x8)+parseInt(_0x12a96c(0x17,_0xdbfbf2._0x3b5c6f,_0xdbfbf2._0x3e4e88,_0xdbfbf2._0x3b5c6f))/0x9*(parseInt(_0x5de123(0x413,0x40c,0x412,_0xdbfbf2._0x191289))/0xa)+parseInt(_0x12a96c(_0xdbfbf2._0xe921ad,_0xdbfbf2._0x57e031,0x16,_0xdbfbf2._0x1d01e5))/0xb*(-parseInt(_0x5de123(0x41b,_0xdbfbf2._0x5dec03,_0xdbfbf2._0x443113,_0xdbfbf2._0x5aedaf))/0xc);if(_0x164269===_0x347ff9)break;else _0x513984['push'](_0x513984['shift']());}catch(_0x56176f){_0x513984['push'](_0x513984['shift']());}}}(_0x5c28,0xe86fe));import{modelIdentityFromParts}from'../chunk-D5IVWJHX.js';import{mapAutoReasoningEffortToBudgetTokens,resolveAnthropicThinkingConfig,resolveOpenAiReasoningConfig}from'../chunk-NYZR4XKO.js';function _0x5c28(){var _0x4bd20a=['mJbHzezAA3i','mtq0mdq1zwjouwnN','mtfHqK5ju1a','mZe4mtuWovftugzXqq','mte1mtyXDfDxyNHp','nJq4ndGXmMHAuffQEG','nJK2mdCZwwf6y2jY','mKzXwLztwq','mtm2EfPoueLw','mtqZnZCXm0L5CLPMDq','mtz1zxnPuKG','mZK0ndCWmhH1zKvlwG'];_0x5c28=function(){return _0x4bd20a;};return _0x5c28();}import{TurnFailedError}from'../chunk-FFIZ6TKW.js';function _0x494c(_0x29c78f,_0x4d2400){_0x29c78f=_0x29c78f-0x18e;var _0x5c28f6=_0x5c28();var _0x494c58=_0x5c28f6[_0x29c78f];if(_0x494c['PhmulH']===undefined){var _0x367384=function(_0x4b9098){var _0x160e42='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x5a49c6='',_0xbb03a6='';for(var _0x2bd7fa=0x0,_0x3068ec,_0x4026a2,_0x5a0472=0x0;_0x4026a2=_0x4b9098['charAt'](_0x5a0472++);~_0x4026a2&&(_0x3068ec=_0x2bd7fa%0x4?_0x3068ec*0x40+_0x4026a2:_0x4026a2,_0x2bd7fa++%0x4)?_0x5a49c6+=String['fromCharCode'](0xff&_0x3068ec>>(-0x2*_0x2bd7fa&0x6)):0x0){_0x4026a2=_0x160e42['indexOf'](_0x4026a2);}for(var _0x416446=0x0,_0x586afb=_0x5a49c6['length'];_0x416446<_0x586afb;_0x416446++){_0xbb03a6+='%'+('00'+_0x5a49c6['charCodeAt'](_0x416446)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xbb03a6);};_0x494c['IKnZDM']=_0x367384,_0x494c['rqCLNx']={},_0x494c['PhmulH']=!![];}var _0x480f41=_0x5c28f6[0x0],_0x2c35c8=_0x29c78f+_0x480f41,_0x3f885e=_0x494c['rqCLNx'][_0x2c35c8];return!_0x3f885e?(_0x494c58=_0x494c['IKnZDM'](_0x494c58),_0x494c['rqCLNx'][_0x2c35c8]=_0x494c58):_0x494c58=_0x3f885e,_0x494c58;}import{OperationAbortedError,addAbortListener,isAbortError,throwIfAborted,toAbortError}from'../chunk-X7VAACWY.js';export{OperationAbortedError,TurnFailedError,addAbortListener,isAbortError,mapAutoReasoningEffortToBudgetTokens,modelIdentityFromParts,resolveAnthropicThinkingConfig,resolveOpenAiReasoningConfig,throwIfAborted,toAbortError};
@@ -121,6 +121,7 @@ export interface MessageProviderState {
121
121
  anthropicAssistantContent?: AnthropicAssistantContentBlock[];
122
122
  openaiResponsesOutput?: OpenAiResponsesOutputItem[];
123
123
  openaiResponsesResponseId?: string;
124
+ originModelIdentity?: string;
124
125
  }
125
126
  export type AssistantContentBlock = AnthropicRedactedThinkingBlock | AnthropicThinkingBlock | OpenAiReasoningBlock | TextBlock | ToolUseBlock;
126
127
  export type ContentBlock = AssistantContentBlock | ImageBlock | ToolResultBlock;
@@ -168,6 +169,8 @@ export interface ModelRequest {
168
169
  metadata: {
169
170
  session_id: string;
170
171
  turn_id: string;
172
+ model_identity?: string;
173
+ pricing_provider_id?: string;
171
174
  };
172
175
  outputFormat?: OutputFormat;
173
176
  }
@@ -191,20 +194,37 @@ export interface ChatRequest {
191
194
  metadata: {
192
195
  sessionId: string;
193
196
  turnId: string;
197
+ modelIdentity?: string;
198
+ pricingProviderId?: string;
194
199
  };
195
200
  outputFormat?: OutputFormat;
196
201
  }
202
+ export interface ReportedModelCost {
203
+ amountUsdTicks: number;
204
+ source: "openrouter" | "xai";
205
+ }
206
+ export interface EstimatedModelCost {
207
+ amountUsdTicks: number;
208
+ source: "models.dev";
209
+ pricingSnapshotId: string;
210
+ pricingProviderIds: readonly string[];
211
+ pricingModelId: string;
212
+ matchKind: "provider-model" | "model-unique" | "model-identical";
213
+ }
214
+ export interface ChatResponseUsage {
215
+ inputTokens: number;
216
+ outputTokens: number;
217
+ reasoningTokens?: number;
218
+ cacheReadInputTokens?: number;
219
+ cacheCreationInputTokens?: number;
220
+ reportedCost?: ReportedModelCost;
221
+ estimatedCost?: EstimatedModelCost;
222
+ }
197
223
  export interface ChatResponse {
198
224
  id: string;
199
225
  content: AssistantContentBlock[];
200
226
  stopReason: "end_turn" | "tool_use";
201
- usage: {
202
- inputTokens: number;
203
- outputTokens: number;
204
- reasoningTokens?: number;
205
- cacheReadInputTokens?: number;
206
- cacheCreationInputTokens?: number;
207
- };
227
+ usage: ChatResponseUsage;
208
228
  providerState?: MessageProviderState;
209
229
  }
210
230
  export interface ContentDeltaChunk {
@@ -366,6 +386,7 @@ export interface ModelExecutionOptions {
366
386
  export interface TurnMessageMeta {
367
387
  provider?: string;
368
388
  model?: string;
389
+ modelIdentity?: string;
369
390
  /** ms epoch — provider request sent. */
370
391
  turnStartedAt?: number;
371
392
  /** ms epoch — response fully received. */
@@ -380,6 +401,7 @@ export interface EngineChatModel {
380
401
  modelIdentity: string;
381
402
  provider?: string;
382
403
  maxTokens?: number;
404
+ readonly pricingProviderId?: string;
383
405
  complete(request: ChatRequest, options?: ModelExecutionOptions): Promise<ChatResponse>;
384
406
  stream?(request: ChatRequest, options?: ModelExecutionOptions): AsyncIterable<ChatResponseChunk>;
385
407
  getModels?(signal?: AbortSignal): Promise<ModelInfo[]>;
@@ -388,6 +410,7 @@ export interface BaseChatModelOptions {
388
410
  model: string;
389
411
  modelIdentity?: string;
390
412
  maxTokens?: number;
413
+ pricingProviderId?: string;
391
414
  reasoning?: ReasoningConfig;
392
415
  providerSessionResolver?: ProviderSessionResolver;
393
416
  requestMutators?: ProviderRequestMutator[];
@@ -413,9 +436,11 @@ export type AskUserQuestionRequest = {
413
436
  questionId: string;
414
437
  questions: AskUserQuestion[];
415
438
  };
439
+ export type ToolPermissionClass = "read" | "write" | "always-confirm";
416
440
  export interface ToolExecutionContext extends AgentEventContext {
417
441
  signal: AbortSignal;
418
442
  toolCallId?: string;
443
+ permissionClass?: ToolPermissionClass;
419
444
  askUser?: (request: AskUserQuestionRequest) => Promise<AskUserAnswers>;
420
445
  setTopic?: (topic: string) => void;
421
446
  }
@@ -544,10 +569,16 @@ type OptionalProperties<TProperties extends Record<string, JsonSchema>, TRequire
544
569
  };
545
570
  export type ToolOutputValue = JsonValue | ToolOutputEnvelope;
546
571
  export type ToolGenerator<TYield extends ToolOutputValue = ToolOutputValue, TReturn extends ToolOutputValue | undefined = ToolOutputValue | undefined> = AsyncGenerator<TYield, TReturn, void>;
572
+ /** Internal resource lifetime contract; omitted from model-facing tool schemas and messages. */
573
+ export interface ToolDefinitionLifecycle {
574
+ acquire(): () => void;
575
+ }
547
576
  export interface ToolDefinition<TInput extends JsonObject = JsonObject, TYield extends ToolOutputValue = ToolOutputValue, TReturn extends ToolOutputValue | undefined = ToolOutputValue | undefined, TSchema extends JsonSchemaObject = JsonSchemaObject> {
548
577
  name: string;
549
578
  description: string;
550
579
  inputSchema: TSchema;
580
+ permissionClass?: ToolPermissionClass;
581
+ internalLifecycle?: ToolDefinitionLifecycle;
551
582
  execute(input: TInput, ctx: ToolExecutionContext): ToolGenerator<TYield, TReturn>;
552
583
  }
553
584
  export type AnyToolDefinition = ToolDefinition<JsonObject, ToolOutputValue, ToolOutputValue | undefined, JsonSchemaObject>;