@nuvin/agent-core 0.2.0-rc.8 → 0.2.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.
- package/dist/VERSION +2 -2
- package/dist/agent/index.js +1 -1
- package/dist/chunk-D5IVWJHX.js +1 -1
- package/dist/chunk-FFIZ6TKW.js +1 -1
- package/dist/chunk-GAZGO6N7.js +1 -0
- package/dist/chunk-IUZALP6K.js +1 -1
- package/dist/chunk-KIIEBXJF.js +1 -0
- package/dist/chunk-LIE76IJA.js +1 -1
- package/dist/chunk-X7VAACWY.js +1 -1
- package/dist/chunk-YNOIG4FD.js +1 -1
- package/dist/formats/index.js +1 -1
- package/dist/hooks/index.js +1 -1
- package/dist/models/index.d.ts +1 -0
- package/dist/models/index.js +1 -1
- package/dist/shared/index.js +1 -1
- package/dist/shared/types.d.ts +25 -7
- package/dist/tools/{internal-tool-runtime.d.ts → core/internal-tool-runtime.d.ts} +1 -1
- package/dist/tools/core/mock-tool-runtime.d.ts +3 -0
- package/dist/tools/core/runtime-manager-tools.d.ts +132 -0
- package/dist/tools/{tool-output-offload.d.ts → core/tool-output-offload.d.ts} +1 -1
- package/dist/tools/{tools.d.ts → core/tools.d.ts} +1 -1
- package/dist/tools/file-editing/anchored-file-edit.d.ts +53 -0
- package/dist/tools/file-editing/anchored-file-errors.d.ts +5 -0
- package/dist/tools/file-editing/anchored-file-operations.d.ts +38 -0
- package/dist/tools/file-editing/anchored-file-read.d.ts +37 -0
- package/dist/tools/file-editing/atomic-file-write.d.ts +19 -0
- package/dist/tools/file-editing/file-edit-tool.d.ts +166 -0
- package/dist/tools/file-editing/file-mutation-coordinator.d.ts +13 -0
- package/dist/tools/{file-new-tool.d.ts → file-editing/file-new-tool.d.ts} +5 -2
- package/dist/tools/file-editing/file-observation-store.d.ts +40 -0
- package/dist/tools/{file-read-tool.d.ts → file-editing/file-read-tool.d.ts} +8 -2
- package/dist/tools/file-editing/file-snapshot.d.ts +16 -0
- package/dist/tools/file-editing/hashline-file-edit-adapter.d.ts +19 -0
- package/dist/tools/file-editing/structured-file-edit-adapter.d.ts +94 -0
- package/dist/tools/file-editing/workspace-paths.d.ts +20 -0
- package/dist/tools/index.d.ts +43 -34
- package/dist/tools/index.js +1 -1
- package/dist/tools/{mcp-connection-generation.d.ts → mcp/mcp-connection-generation.d.ts} +1 -1
- package/dist/tools/mcp/mcp-tool-adapter.d.ts +72 -0
- package/dist/tools/{glob-tool.d.ts → search/glob-tool.d.ts} +2 -2
- package/dist/tools/{grep-tool.d.ts → search/grep-tool.d.ts} +2 -2
- package/dist/tools/{ls-tool.d.ts → search/ls-tool.d.ts} +2 -2
- package/dist/tools/{view-file-tool.d.ts → search/view-file-tool.d.ts} +2 -2
- package/dist/tools/{ask-user-tool.d.ts → session/ask-user-tool.d.ts} +4 -4
- package/dist/tools/{lsp-tool.d.ts → session/lsp-tool.d.ts} +5 -5
- package/dist/tools/{skill-tool.d.ts → session/skill-tool.d.ts} +2 -2
- package/dist/tools/{todo-write-tool.d.ts → session/todo-write-tool.d.ts} +2 -2
- package/dist/tools/session/update-topic-tool.d.ts +12 -0
- package/dist/tools/{bash-output-tool.d.ts → shell/bash-output-tool.d.ts} +2 -2
- package/dist/tools/{bash-tool.d.ts → shell/bash-tool.d.ts} +5 -5
- package/dist/tools/{command-tool.d.ts → shell/command-tool.d.ts} +2 -2
- package/dist/tools/{kill-shell-tool.d.ts → shell/kill-shell-tool.d.ts} +2 -2
- package/dist/tools/{web-fetch-tool.d.ts → web/web-fetch-tool.d.ts} +2 -2
- package/dist/tools/{web-search-tool.d.ts → web/web-search-tool.d.ts} +2 -2
- package/package.json +3 -2
- package/dist/chunk-A4CS4HLK.js +0 -1
- package/dist/tools/file-edit-tool.d.ts +0 -34
- package/dist/tools/mcp-tool-adapter.d.ts +0 -72
- package/dist/tools/mock-tool-runtime.d.ts +0 -3
- package/dist/tools/runtime-manager-tools.d.ts +0 -79
- package/dist/tools/update-topic-tool.d.ts +0 -12
- package/dist/tools/workspace-paths.d.ts +0 -5
- /package/dist/tools/{file-mutation.d.ts → file-editing/file-mutation.d.ts} +0 -0
- /package/dist/tools/{mcp-oauth-provider.d.ts → mcp/mcp-oauth-provider.d.ts} +0 -0
- /package/dist/tools/{mcp-safe-error-provenance.d.ts → mcp/mcp-safe-error-provenance.d.ts} +0 -0
- /package/dist/tools/{mcp-safe-error.d.ts → mcp/mcp-safe-error.d.ts} +0 -0
- /package/dist/tools/{mcp-server-manager.d.ts → mcp/mcp-server-manager.d.ts} +0 -0
- /package/dist/tools/{grep-engine.d.ts → search/grep-engine.d.ts} +0 -0
- /package/dist/tools/{ripgrep.d.ts → search/ripgrep.d.ts} +0 -0
- /package/dist/tools/{background-process-registry.d.ts → shell/background-process-registry.d.ts} +0 -0
- /package/dist/tools/{bash-internals.d.ts → shell/bash-internals.d.ts} +0 -0
- /package/dist/tools/{process-tree-termination.d.ts → shell/process-tree-termination.d.ts} +0 -0
- /package/dist/tools/{terminal-output-normalizer.d.ts → shell/terminal-output-normalizer.d.ts} +0 -0
- /package/dist/tools/{safe-fetch.d.ts → web/safe-fetch.d.ts} +0 -0
package/dist/shared/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x26ff1a,_0x289c81){const _0x397676={_0x40615f:0xe8,_0x41a750:0xe7,_0x353743:0xe0,_0xa5ffd0:0xe1,_0x2543d2:0x479,_0x4a2857:0xf7,_0x18cc06:0xf1,_0x7d2aed:0x46b,_0xa7175a:0x458,_0x10f36f:0xe4,_0x1eba56:0xea,_0x224c7d:0x46d,_0x9f0269:0x473},_0x4e519a={_0xf85db6:0x3c8},_0x9121d5={_0x3b372b:0x18d};function _0x3cc5c9(_0x4b5400,_0x56e1fc,_0x1cb1a6,_0x510978){return _0x24d9(_0x4b5400- -_0x9121d5._0x3b372b,_0x56e1fc);}const _0x1f5b93=_0x26ff1a();function _0x156eae(_0x5aadb3,_0x1c022b,_0x3a2d41,_0x223733){return _0x24d9(_0x3a2d41-_0x4e519a._0xf85db6,_0x5aadb3);}while(!![]){try{const _0x3456b8=-parseInt(_0x3cc5c9(-_0x397676._0x40615f,-_0x397676._0x41a750,-_0x397676._0x353743,-_0x397676._0xa5ffd0))/0x1+parseInt(_0x156eae(_0x397676._0x2543d2,0x473,0x474,0x47b))/0x2+-parseInt(_0x3cc5c9(-0xf0,-_0x397676._0x40615f,-_0x397676._0x4a2857,-_0x397676._0x18cc06))/0x3*(parseInt(_0x156eae(0x46c,_0x397676._0x7d2aed,0x468,0x467))/0x4)+parseInt(_0x156eae(_0x397676._0xa7175a,0x460,0x462,0x466))/0x5+parseInt(_0x3cc5c9(-_0x397676._0x10f36f,-_0x397676._0x1eba56,-0xdb,-0xe8))/0x6+parseInt(_0x3cc5c9(-0xe9,-0xe8,-0xdf,-0xe9))/0x7+parseInt(_0x156eae(0x46c,0x467,0x467,0x46a))/0x8*(parseInt(_0x156eae(0x477,_0x397676._0x224c7d,_0x397676._0x9f0269,0x46c))/0x9);if(_0x3456b8===_0x289c81)break;else _0x1f5b93['push'](_0x1f5b93['shift']());}catch(_0x31097e){_0x1f5b93['push'](_0x1f5b93['shift']());}}}(_0x3222,0x3c762));import{modelIdentityFromParts}from'../chunk-D5IVWJHX.js';function _0x24d9(_0x5a9121,_0x275fd1){_0x5a9121=_0x5a9121-0x9a;const _0x322244=_0x3222();let _0x24d943=_0x322244[_0x5a9121];if(_0x24d9['ApGnul']===undefined){var _0x352f70=function(_0x69bb97){const _0x451100='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x418d85='',_0x16febf='';for(let _0x24fb75=0x0,_0xcb0c63,_0x295dda,_0x29cb62=0x0;_0x295dda=_0x69bb97['charAt'](_0x29cb62++);~_0x295dda&&(_0xcb0c63=_0x24fb75%0x4?_0xcb0c63*0x40+_0x295dda:_0x295dda,_0x24fb75++%0x4)?_0x418d85+=String['fromCharCode'](0xff&_0xcb0c63>>(-0x2*_0x24fb75&0x6)):0x0){_0x295dda=_0x451100['indexOf'](_0x295dda);}for(let _0x54d39c=0x0,_0x443488=_0x418d85['length'];_0x54d39c<_0x443488;_0x54d39c++){_0x16febf+='%'+('00'+_0x418d85['charCodeAt'](_0x54d39c)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x16febf);};_0x24d9['RMVWeh']=_0x352f70,_0x24d9['pXKqSB']={},_0x24d9['ApGnul']=!![];}const _0x25ebce=_0x322244[0x0],_0x43d619=_0x5a9121+_0x25ebce,_0x1ede3f=_0x24d9['pXKqSB'][_0x43d619];return!_0x1ede3f?(_0x24d943=_0x24d9['RMVWeh'](_0x24d943),_0x24d9['pXKqSB'][_0x43d619]=_0x24d943):_0x24d943=_0x1ede3f,_0x24d943;}function _0x3222(){const _0x13fea=['ntK0nZC2ruPpvNbk','mZCYmtu0sfPTuwjZ','CMvZB2X2zq','CMvHC29U','ChvZAa','mtKXody2mLndB2vVtW','AxngAw5PDgu','nte1ndnmCu56AhK','ndi0mdz6zMPOu3e','ode4mJe1yNDfrMTm','C3bSAwnL','CMvTB3zLqwjVCNrmAxn0zw5LCG','otGXotLnC0DsBMm','C2HPzNq','nda4wxfxtMno','mZjLA0zdAgO','ywjVCNrLza','y2fUy2vSBgvK','Aw5KzxHpzG'];_0x3222=function(){return _0x13fea;};return _0x3222();}import{resolveAnthropicReasoningConfig,resolveOpenAiReasoningConfig}from'../chunk-IUZALP6K.js';import{TurnFailedError}from'../chunk-FFIZ6TKW.js';import{OperationAbortedError,addAbortListener,isAbortError,throwIfAborted,toAbortError}from'../chunk-X7VAACWY.js';function createAbortAwareSemaphore(_0x418d85){const _0x174853={_0x2a77d5:0x231},_0xab26eb={_0x34ce67:0x48e,_0x3806f9:0x485},_0xbd5bad={_0x5e775a:0xff,_0x54193c:0x262,_0x10ff3b:0x158},_0x21b548={_0x1bbe83:0x8,_0xf1ae38:0x9,_0x30fd53:0x11,_0x55c8d6:0x5,_0x7a6d64:0xb},_0x31fed8={_0x1ae3d7:0x1b9};if(!Number[_0x33c326(_0x174853._0x2a77d5,0x239,0x23d,0x230)](_0x418d85)||!Number['isInteger'](_0x418d85)||_0x418d85<=0x0)throw new Error('maxConcurrency\x20must\x20be\x20a\x20finite\x20positive\x20integer');let _0x16febf=0x0;const _0x24fb75=[];function _0x33c326(_0x29a3ec,_0x41f1ec,_0x24a95a,_0x3b8447){return _0x24d9(_0x41f1ec-0x18f,_0x3b8447);}const _0xcb0c63=()=>{let _0x29cb62=![];return()=>{if(_0x29cb62)return;_0x29cb62=!![],_0x16febf-=0x1,_0x295dda();};},_0x295dda=()=>{const _0x513670={_0x33f1f3:0x16f,_0xa9ec3b:0x222,_0xcd865c:0x161};function _0x48ab7b(_0x335619,_0x4f95c1,_0x3a8af7,_0x2aaefa){return _0x33c326(_0x335619-_0x513670._0x33f1f3,_0x4f95c1- -_0x513670._0xa9ec3b,_0x3a8af7-_0x513670._0xcd865c,_0x2aaefa);}function _0x3cf211(_0x2e9bb0,_0x22ac69,_0x1ace7f,_0x15548e){return _0x33c326(_0x2e9bb0-_0x31fed8._0x1ae3d7,_0x22ac69- -0xb0,_0x1ace7f-0x11b,_0x15548e);}while(_0x24fb75['length']>0x0){const _0x54d39c=_0x24fb75[_0x48ab7b(0x12,0xb,0x7,_0x21b548._0x1bbe83)]();if(!_0x54d39c||_0x54d39c['cancelled'])continue;_0x54d39c[_0x48ab7b(0xa,0xf,_0x21b548._0xf1ae38,_0x21b548._0x30fd53)]=!![],_0x54d39c[_0x48ab7b(_0x21b548._0x55c8d6,0x9,0x8,_0x21b548._0x7a6d64)](),_0x16febf+=0x1,_0x54d39c[_0x48ab7b(0xc,0x13,0x10,0xc)](_0xcb0c63());return;}};return{'acquire'(_0x443488){const _0x58075a={_0x101b6b:0x2c0,_0x1c422a:0x1d0,_0x1b9f73:0x1d6},_0x83632c={_0x2ee822:0x110,_0x3dc952:0x119,_0x4c14d8:0x10d,_0x22e9ac:0x269,_0x92155a:0x271,_0x5ec57a:0x275,_0x924143:0x11b,_0x215bc0:0x110,_0x2b64c6:0x113},_0xe04a0d={_0x155202:0x150};if(_0x443488?.[_0x275a35(_0xab26eb._0x34ce67,0x48a,0x487,0x488)])return Promise['reject'](toAbortError(_0x443488['reason']));function _0x275a35(_0x8693e5,_0x464c14,_0x1d480d,_0x5683be){return _0x33c326(_0x8693e5-0x13e,_0x5683be-0x258,_0x1d480d-0x9a,_0x464c14);}if(_0x16febf<_0x418d85)return _0x16febf+=0x1,Promise[_0x275a35(0x48b,_0xab26eb._0x3806f9,0x493,0x48d)](_0xcb0c63());function _0x2696d8(_0x39b4ec,_0x57af20,_0x417400,_0x228bfa){return _0x33c326(_0x39b4ec-_0xbd5bad._0x5e775a,_0x417400- -_0xbd5bad._0x54193c,_0x417400-_0xbd5bad._0x10ff3b,_0x228bfa);}return new Promise((_0x2621f7,_0x4d1dce)=>{const _0x29565a={_0x3afff0:0xd5},_0x1a7d49={'resolve':_0x2621f7,'reject':_0x4d1dce,'cancelled':![],'removeAbortListener':()=>{}};_0x24fb75[_0x59b0f5(0x2b6,0x2c5,_0x58075a._0x101b6b,0x2bc)](_0x1a7d49);function _0x59b0f5(_0x5e9cb4,_0x5d58ef,_0x53098a,_0x51d0fa){return _0x275a35(_0x5e9cb4-0x155,_0x5d58ef,_0x53098a-_0xe04a0d._0x155202,_0x51d0fa- -0x1d3);}function _0x33b2ab(_0x30a5e9,_0x20c4bd,_0x43f686,_0x24d1f6){return _0x2696d8(_0x30a5e9-0x156,_0x20c4bd-_0x29565a._0x3afff0,_0x43f686-0x20d,_0x20c4bd);}_0x1a7d49[_0x33b2ab(_0x58075a._0x1c422a,0x1e0,_0x58075a._0x1b9f73,0x1ce)]=addAbortListener(_0x443488,()=>{const _0x198a9d={_0x2302f6:0x196,_0x60383b:0x13},_0x496f1c={_0x4961bb:0x13b,_0x455112:0xcf};if(_0x1a7d49[_0x41c919(-_0x83632c._0x2ee822,-_0x83632c._0x3dc952,-0x114,-_0x83632c._0x4c14d8)])return;function _0x56061a(_0x4920f3,_0x19fdb3,_0x20eb40,_0x275eed){return _0x33b2ab(_0x4920f3-_0x496f1c._0x4961bb,_0x275eed,_0x20eb40-0x93,_0x275eed-_0x496f1c._0x455112);}function _0x41c919(_0x29ae47,_0x477dc1,_0x3161b2,_0x6ebf7c){return _0x59b0f5(_0x29ae47-_0x198a9d._0x2302f6,_0x477dc1,_0x3161b2-_0x198a9d._0x60383b,_0x3161b2- -0x3ca);}_0x1a7d49['cancelled']=!![],_0x1a7d49[_0x56061a(0x264,0x265,0x269,0x261)]();const _0x33c15b=_0x24fb75[_0x56061a(_0x83632c._0x22e9ac,_0x83632c._0x92155a,0x270,_0x83632c._0x5ec57a)](_0x1a7d49);if(_0x33c15b>=0x0)_0x24fb75[_0x41c919(-0x116,-_0x83632c._0x924143,-0x11b,-0x120)](_0x33c15b,0x1);_0x1a7d49['reject'](toAbortError(_0x443488?.[_0x41c919(-_0x83632c._0x215bc0,-0x105,-0x10f,-_0x83632c._0x2b64c6)]));});});}};}export{OperationAbortedError,TurnFailedError,addAbortListener,createAbortAwareSemaphore,isAbortError,modelIdentityFromParts,resolveAnthropicReasoningConfig,resolveOpenAiReasoningConfig,throwIfAborted,toAbortError};
|
package/dist/shared/types.d.ts
CHANGED
|
@@ -4,9 +4,10 @@ export interface JsonObject {
|
|
|
4
4
|
}
|
|
5
5
|
export type JsonValue = JsonObject | JsonPrimitive | JsonValue[];
|
|
6
6
|
export type JsonSchemaType = "array" | "boolean" | "number" | "object" | "string";
|
|
7
|
-
export interface JsonSchemaString {
|
|
7
|
+
export interface JsonSchemaString<TEnum extends readonly string[] | undefined = readonly string[] | undefined> {
|
|
8
8
|
type: "string";
|
|
9
9
|
description?: string;
|
|
10
|
+
enum?: TEnum;
|
|
10
11
|
}
|
|
11
12
|
export interface JsonSchemaNumber {
|
|
12
13
|
type: "number";
|
|
@@ -22,8 +23,12 @@ export interface JsonSchemaObject<TProperties extends Record<string, JsonSchema>
|
|
|
22
23
|
type: "object";
|
|
23
24
|
properties: TProperties;
|
|
24
25
|
required?: TRequired;
|
|
26
|
+
additionalProperties?: boolean;
|
|
25
27
|
}
|
|
26
|
-
export
|
|
28
|
+
export interface JsonSchemaAnyOf<TVariants extends readonly JsonSchema[] = readonly JsonSchema[]> {
|
|
29
|
+
anyOf: TVariants;
|
|
30
|
+
}
|
|
31
|
+
export type JsonSchema = JsonSchemaAnyOf | JsonSchemaArray | JsonSchemaBoolean | JsonSchemaNumber | JsonSchemaObject | JsonSchemaString;
|
|
27
32
|
export interface TextBlock {
|
|
28
33
|
type: "text";
|
|
29
34
|
text: string;
|
|
@@ -272,6 +277,9 @@ export interface OpenAiReasoningSummaryDeltaChunk {
|
|
|
272
277
|
outputIndex: number;
|
|
273
278
|
summaryIndex: number;
|
|
274
279
|
}
|
|
280
|
+
export interface ProviderStreamResetChunk {
|
|
281
|
+
type: "provider_stream_reset";
|
|
282
|
+
}
|
|
275
283
|
export interface ProviderRetryChunk {
|
|
276
284
|
type: "provider_retry";
|
|
277
285
|
attempt: number;
|
|
@@ -285,7 +293,7 @@ export interface DoneChunk {
|
|
|
285
293
|
type: "done";
|
|
286
294
|
response: ChatResponse;
|
|
287
295
|
}
|
|
288
|
-
export type ChatResponseChunk = AnthropicSignatureDeltaChunk | AnthropicThinkingDeltaChunk | ContentDeltaChunk | DoneChunk | OpenAiReasoningDeltaChunk | OpenAiReasoningSummaryDeltaChunk | ProviderRetryChunk | ToolUseDeltaChunk;
|
|
296
|
+
export type ChatResponseChunk = AnthropicSignatureDeltaChunk | AnthropicThinkingDeltaChunk | ContentDeltaChunk | DoneChunk | OpenAiReasoningDeltaChunk | OpenAiReasoningSummaryDeltaChunk | ProviderStreamResetChunk | ProviderRetryChunk | ToolUseDeltaChunk;
|
|
289
297
|
export interface ModelLimits {
|
|
290
298
|
contextWindow?: number;
|
|
291
299
|
maxOutput?: number;
|
|
@@ -549,8 +557,14 @@ export interface AgentTurnCompleteEvent {
|
|
|
549
557
|
state: TurnState;
|
|
550
558
|
}
|
|
551
559
|
export interface AgentProviderRetryEvent extends ProviderRetryChunk {
|
|
560
|
+
assistantMessageId: string;
|
|
561
|
+
}
|
|
562
|
+
export interface AgentProviderStreamResetEvent {
|
|
563
|
+
type: "provider_stream_reset";
|
|
564
|
+
assistantMessageId: string;
|
|
565
|
+
reasoningMessageId: string;
|
|
552
566
|
}
|
|
553
|
-
export type AgentLifecycleEvent = AgentAssistantChunkEvent | AgentAssistantMessageEvent | AgentFinalMessageEvent | AgentModelRequestEvent | AgentModelResponseEvent | AgentProviderRetryEvent | AgentReasoningChunkEvent | AgentReasoningMessageEvent | AgentToolCallEvent | AgentToolUseChunkEvent | AgentToolUseMessageEvent | AgentToolResultEvent | AgentToolResultMessageEvent | AgentTurnCompleteEvent | AgentUserMessageEvent;
|
|
567
|
+
export type AgentLifecycleEvent = AgentAssistantChunkEvent | AgentAssistantMessageEvent | AgentFinalMessageEvent | AgentModelRequestEvent | AgentModelResponseEvent | AgentProviderRetryEvent | AgentProviderStreamResetEvent | AgentReasoningChunkEvent | AgentReasoningMessageEvent | AgentToolCallEvent | AgentToolUseChunkEvent | AgentToolUseMessageEvent | AgentToolResultEvent | AgentToolResultMessageEvent | AgentTurnCompleteEvent | AgentUserMessageEvent;
|
|
554
568
|
export type AgentEvent = AgentLifecycleEvent | ToolRuntimeEvent;
|
|
555
569
|
export type ToolRuntimeDispatchDecision = {
|
|
556
570
|
action: "reject";
|
|
@@ -579,10 +593,14 @@ export interface ToolRuntime {
|
|
|
579
593
|
executeCalls(toolCalls: ToolUseBlock[], ctx: ToolExecutionContext): Promise<ToolResult[]>;
|
|
580
594
|
execute(toolCall: ToolUseBlock, ctx: ToolExecutionContext): Promise<ToolResult>;
|
|
581
595
|
}
|
|
582
|
-
export type InferJsonSchema<TSchema extends JsonSchema> = TSchema extends JsonSchemaString ? string : TSchema extends JsonSchemaNumber ? number : TSchema extends JsonSchemaBoolean ? boolean : TSchema extends JsonSchemaArray<infer TItem> ? InferJsonSchema<TItem>[] : TSchema extends JsonSchemaObject<infer TProperties, infer TRequired> ? Expand<RequiredProperties<TProperties, TRequired> & OptionalProperties<TProperties, TRequired>> : never;
|
|
596
|
+
export type InferJsonSchema<TSchema extends JsonSchema> = TSchema extends JsonSchemaAnyOf<infer TVariants> ? JsonSchema extends TVariants[number] ? JsonValue : InferJsonSchemaAnyOf<TVariants> : TSchema extends JsonSchemaString<infer TEnum> ? TEnum extends readonly string[] ? TEnum[number] : string : TSchema extends JsonSchemaNumber ? number : TSchema extends JsonSchemaBoolean ? boolean : TSchema extends JsonSchemaArray<infer TItem> ? InferJsonSchema<TItem>[] : TSchema extends JsonSchemaObject<infer TProperties, infer TRequired> ? Expand<RequiredProperties<TProperties, TRequired> & OptionalProperties<TProperties, TRequired>> : never;
|
|
583
597
|
type Expand<TValue> = TValue extends infer TObject ? {
|
|
584
598
|
[TKey in keyof TObject]: TObject[TKey];
|
|
585
599
|
} : never;
|
|
600
|
+
type JsonSchemaObjectPropertyKeys<TSchema extends JsonSchema> = TSchema extends JsonSchemaObject<infer TProperties> ? Extract<keyof TProperties, string> : never;
|
|
601
|
+
type InferJsonSchemaAnyOfVariant<TVariant extends JsonSchema, TAllVariants extends JsonSchema> = TVariant extends JsonSchemaObject<infer TProperties, infer TRequired> ? Expand<RequiredProperties<TProperties, TRequired> & OptionalProperties<TProperties, TRequired> & (TVariant["additionalProperties"] extends false ? Partial<Record<Exclude<JsonSchemaObjectPropertyKeys<TAllVariants>, keyof TProperties>, never>> : Record<never, never>)> : InferJsonSchema<TVariant>;
|
|
602
|
+
type InferJsonSchemaAnyOfVariants<TVariant extends JsonSchema, TAllVariants extends JsonSchema> = TVariant extends JsonSchema ? InferJsonSchemaAnyOfVariant<TVariant, TAllVariants> : never;
|
|
603
|
+
type InferJsonSchemaAnyOf<TVariants extends readonly JsonSchema[]> = InferJsonSchemaAnyOfVariants<TVariants[number], TVariants[number]>;
|
|
586
604
|
type RequiredKeyUnion<TRequired extends readonly string[] | undefined> = TRequired extends readonly string[] ? TRequired[number] : never;
|
|
587
605
|
type OptionalKeyUnion<TProperties extends Record<string, JsonSchema>, TRequired extends readonly string[] | undefined> = Exclude<keyof TProperties, RequiredKeyUnion<TRequired>>;
|
|
588
606
|
type RequiredProperties<TProperties extends Record<string, JsonSchema>, TRequired extends readonly string[] | undefined> = {
|
|
@@ -597,7 +615,7 @@ export type ToolGenerator<TYield extends ToolOutputValue = ToolOutputValue, TRet
|
|
|
597
615
|
export interface ToolDefinitionLifecycle {
|
|
598
616
|
acquire(): () => void;
|
|
599
617
|
}
|
|
600
|
-
export interface ToolDefinition<TInput extends
|
|
618
|
+
export interface ToolDefinition<TInput extends object = JsonObject, TYield extends ToolOutputValue = ToolOutputValue, TReturn extends ToolOutputValue | undefined = ToolOutputValue | undefined, TSchema extends JsonSchemaObject = JsonSchemaObject> {
|
|
601
619
|
name: string;
|
|
602
620
|
description: string;
|
|
603
621
|
inputSchema: TSchema;
|
|
@@ -605,7 +623,7 @@ export interface ToolDefinition<TInput extends JsonObject = JsonObject, TYield e
|
|
|
605
623
|
internalLifecycle?: ToolDefinitionLifecycle;
|
|
606
624
|
execute(input: TInput, ctx: ToolExecutionContext): ToolGenerator<TYield, TReturn>;
|
|
607
625
|
}
|
|
608
|
-
export type AnyToolDefinition = ToolDefinition<
|
|
626
|
+
export type AnyToolDefinition = ToolDefinition<object, ToolOutputValue, ToolOutputValue | undefined, JsonSchemaObject>;
|
|
609
627
|
export type TransformableStage = "afterModelResponse" | "afterToolResult" | "beforeAssistantAppend" | "beforeFinalOutput" | "beforeModelRequest" | "beforeToolExecution" | "beforeToolResultAppend" | "onUserMessage";
|
|
610
628
|
export type ObserverOnlyStage = "afterMessageAppend" | "afterTurnComplete";
|
|
611
629
|
export type Stage = ObserverOnlyStage | TransformableStage;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AnyToolDefinition, ToolRuntime, ToolRuntimeEventHandler, ToolRuntimeToolCallHandler } from "
|
|
1
|
+
import type { AnyToolDefinition, ToolRuntime, ToolRuntimeEventHandler, ToolRuntimeToolCallHandler } from "../../shared/types.ts";
|
|
2
2
|
interface InternalToolRuntimeOptions {
|
|
3
3
|
onEvent?: ToolRuntimeEventHandler;
|
|
4
4
|
onToolCall?: ToolRuntimeToolCallHandler;
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { Agent } from "../../agent/agent.ts";
|
|
2
|
+
import type { AbortAwareSemaphore } from "../../shared/abort-aware-semaphore.ts";
|
|
3
|
+
import type { AgentDefinitionFactoryContext, AgentOptions } from "../../shared/types.ts";
|
|
4
|
+
export declare const MODEL_TIERS: readonly ["fast", "balanced", "powerful"];
|
|
5
|
+
export type ModelTier = (typeof MODEL_TIERS)[number];
|
|
6
|
+
export interface DelegatedAgentFactoryContext extends AgentDefinitionFactoryContext {
|
|
7
|
+
parentSessionId: string;
|
|
8
|
+
runId: string;
|
|
9
|
+
signal: AbortSignal;
|
|
10
|
+
modelTier?: ModelTier;
|
|
11
|
+
}
|
|
12
|
+
export type DelegatedRoutingMetadata = {
|
|
13
|
+
requestedModelTier: ModelTier;
|
|
14
|
+
agentModelSet?: string;
|
|
15
|
+
resolvedModelIdentity: string;
|
|
16
|
+
};
|
|
17
|
+
export type DelegatedAgentResolution = {
|
|
18
|
+
options: AgentOptions;
|
|
19
|
+
routing?: DelegatedRoutingMetadata;
|
|
20
|
+
};
|
|
21
|
+
export declare class DelegatedResolutionError extends Error {
|
|
22
|
+
readonly requestedModelTier: ModelTier;
|
|
23
|
+
readonly agentModelSet?: string;
|
|
24
|
+
readonly selector?: string;
|
|
25
|
+
constructor(message: string, metadata: {
|
|
26
|
+
requestedModelTier: ModelTier;
|
|
27
|
+
agentModelSet?: string;
|
|
28
|
+
selector?: string;
|
|
29
|
+
}, options?: ErrorOptions);
|
|
30
|
+
}
|
|
31
|
+
type DelegatedAgentFactoryResult = AgentOptions | DelegatedAgentResolution;
|
|
32
|
+
export type DelegatedRunOutcome = Readonly<{
|
|
33
|
+
status: "completed" | "failed" | "aborted";
|
|
34
|
+
errorMessage?: string;
|
|
35
|
+
}>;
|
|
36
|
+
export interface DelegatedRunLifecycleHooks {
|
|
37
|
+
start(agent: Agent, context: DelegatedAgentFactoryContext): Promise<void>;
|
|
38
|
+
finish(context: DelegatedAgentFactoryContext, outcome: DelegatedRunOutcome): Promise<void>;
|
|
39
|
+
}
|
|
40
|
+
export type DelegatedAgentDefinition = AgentOptions | ((ctx: DelegatedAgentFactoryContext) => DelegatedAgentFactoryResult | Promise<DelegatedAgentFactoryResult>);
|
|
41
|
+
export interface CreateDelegationToolsOptions {
|
|
42
|
+
agents?: Record<string, DelegatedAgentDefinition>;
|
|
43
|
+
lifecycle?: DelegatedRunLifecycleHooks;
|
|
44
|
+
semaphore?: AbortAwareSemaphore;
|
|
45
|
+
/** Register an active child for shared tool refresh; returns its cleanup callback. */
|
|
46
|
+
registerActiveAgent?: (agent: Agent, context: DelegatedAgentFactoryContext) => () => void;
|
|
47
|
+
registerActiveRun?: (entry: {
|
|
48
|
+
runId: string;
|
|
49
|
+
abortController: AbortController;
|
|
50
|
+
completion: Promise<void>;
|
|
51
|
+
}) => () => void;
|
|
52
|
+
/** Render a resolved child prompt immediately before constructing its Agent. */
|
|
53
|
+
renderSystemPrompt?: (systemPrompt: string) => string;
|
|
54
|
+
/**
|
|
55
|
+
* Idempotent delegated-resource release (e.g. the run's observation store),
|
|
56
|
+
* invoked from the outer `finally` on EVERY terminal path: success, abort,
|
|
57
|
+
* factory rejection, `Agent` construction failure, and registration failure.
|
|
58
|
+
* The runtime wires this to its idempotent per-run store release, so the
|
|
59
|
+
* delegation factory's own failure-release may safely converge here.
|
|
60
|
+
*/
|
|
61
|
+
releaseAgentResources?: (context: DelegatedAgentFactoryContext) => void;
|
|
62
|
+
}
|
|
63
|
+
export declare function resolveDelegatedAgentOptions(definition: DelegatedAgentDefinition, ctx: DelegatedAgentFactoryContext): Promise<DelegatedAgentResolution>;
|
|
64
|
+
export declare function createAssignTaskTool(options: CreateDelegationToolsOptions): import("../../shared/types.ts").ToolDefinition<{
|
|
65
|
+
description: string;
|
|
66
|
+
agentId: string;
|
|
67
|
+
nickname: string;
|
|
68
|
+
task: string;
|
|
69
|
+
modelTier: "fast" | "balanced" | "powerful";
|
|
70
|
+
}, import("../../shared/types.ts").ToolOutputEnvelope, import("../../shared/types.ts").ToolOutputEnvelope, {
|
|
71
|
+
type: "object";
|
|
72
|
+
properties: {
|
|
73
|
+
agentId: {
|
|
74
|
+
type: "string";
|
|
75
|
+
description: string;
|
|
76
|
+
};
|
|
77
|
+
description: {
|
|
78
|
+
type: "string";
|
|
79
|
+
description: string;
|
|
80
|
+
};
|
|
81
|
+
nickname: {
|
|
82
|
+
type: "string";
|
|
83
|
+
description: string;
|
|
84
|
+
};
|
|
85
|
+
task: {
|
|
86
|
+
type: "string";
|
|
87
|
+
description: string;
|
|
88
|
+
};
|
|
89
|
+
modelTier: {
|
|
90
|
+
type: "string";
|
|
91
|
+
enum: ("fast" | "balanced" | "powerful")[];
|
|
92
|
+
description: string;
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
required: string[];
|
|
96
|
+
}>;
|
|
97
|
+
export declare const createDelegateToAgentTool: typeof createAssignTaskTool;
|
|
98
|
+
export declare function createDelegationTools(options: CreateDelegationToolsOptions): import("../../shared/types.ts").ToolDefinition<{
|
|
99
|
+
description: string;
|
|
100
|
+
agentId: string;
|
|
101
|
+
nickname: string;
|
|
102
|
+
task: string;
|
|
103
|
+
modelTier: "fast" | "balanced" | "powerful";
|
|
104
|
+
}, import("../../shared/types.ts").ToolOutputEnvelope, import("../../shared/types.ts").ToolOutputEnvelope, {
|
|
105
|
+
type: "object";
|
|
106
|
+
properties: {
|
|
107
|
+
agentId: {
|
|
108
|
+
type: "string";
|
|
109
|
+
description: string;
|
|
110
|
+
};
|
|
111
|
+
description: {
|
|
112
|
+
type: "string";
|
|
113
|
+
description: string;
|
|
114
|
+
};
|
|
115
|
+
nickname: {
|
|
116
|
+
type: "string";
|
|
117
|
+
description: string;
|
|
118
|
+
};
|
|
119
|
+
task: {
|
|
120
|
+
type: "string";
|
|
121
|
+
description: string;
|
|
122
|
+
};
|
|
123
|
+
modelTier: {
|
|
124
|
+
type: "string";
|
|
125
|
+
enum: ("fast" | "balanced" | "powerful")[];
|
|
126
|
+
description: string;
|
|
127
|
+
};
|
|
128
|
+
};
|
|
129
|
+
required: string[];
|
|
130
|
+
}>[];
|
|
131
|
+
export {};
|
|
132
|
+
//# sourceMappingURL=runtime-manager-tools.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AnyToolDefinition, InferJsonSchema, JsonObject, JsonSchemaObject, JsonValue, ToolDefinition, ToolDefinitionLifecycle, ToolExecutionContext, ToolOutputEnvelope, ToolOutputValue, ToolPermissionClass, ToolResultChunk, ToolResultContent, ToolSchema } from "
|
|
1
|
+
import type { AnyToolDefinition, InferJsonSchema, JsonObject, JsonSchemaObject, JsonValue, ToolDefinition, ToolDefinitionLifecycle, ToolExecutionContext, ToolOutputEnvelope, ToolOutputValue, ToolPermissionClass, ToolResultChunk, ToolResultContent, ToolSchema } from "../../shared/types.ts";
|
|
2
2
|
export declare function normalizeToolOutputValue(output: ToolOutputValue): ToolResultChunk;
|
|
3
3
|
export declare function createToolOutput(output: string, structured?: JsonObject, content?: ToolResultContent): ToolOutputEnvelope;
|
|
4
4
|
export declare class ToolExecutionError extends Error {
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { Stats } from "node:fs";
|
|
2
|
+
import type { ToolExecutionContext, ToolOutputEnvelope } from "../../shared/types.ts";
|
|
3
|
+
import { type CanonicalFileEditBlock, type CanonicalFileOperation } from "./anchored-file-operations.ts";
|
|
4
|
+
import type { FileMutationCoordinator } from "./file-mutation-coordinator.ts";
|
|
5
|
+
import type { FileObservationStore } from "./file-observation-store.ts";
|
|
6
|
+
import { type AnchoredFileEditMode } from "./structured-file-edit-adapter.ts";
|
|
7
|
+
/**
|
|
8
|
+
* Upper bound on the canonical preview text an edit may produce. Authored
|
|
9
|
+
* replacement content is already bounded by the adapters; this bound also
|
|
10
|
+
* caps source-derived `oldText` when a huge range is deleted/replaced so the
|
|
11
|
+
* approval preview stays small enough to audit.
|
|
12
|
+
*/
|
|
13
|
+
export declare const MAX_ANCHORED_PREVIEW_BYTES: number;
|
|
14
|
+
export interface CanonicalFileEditPreview {
|
|
15
|
+
mode: AnchoredFileEditMode;
|
|
16
|
+
filePath: string;
|
|
17
|
+
canonicalPath: string;
|
|
18
|
+
tag: string;
|
|
19
|
+
digest: string;
|
|
20
|
+
operationCount: number;
|
|
21
|
+
operations: readonly CanonicalFileOperation[];
|
|
22
|
+
blocks: readonly CanonicalFileEditBlock[];
|
|
23
|
+
}
|
|
24
|
+
export interface AnchoredFileEditEnvironment {
|
|
25
|
+
defaultCwd: string;
|
|
26
|
+
allowedDirs: readonly string[];
|
|
27
|
+
observations: FileObservationStore;
|
|
28
|
+
mutations: FileMutationCoordinator;
|
|
29
|
+
outputBudgetBytes: number;
|
|
30
|
+
}
|
|
31
|
+
export interface AnchoredFileEditStructuredResult {
|
|
32
|
+
preview: CanonicalFileEditPreview;
|
|
33
|
+
beforeDigest: string;
|
|
34
|
+
afterDigest: string;
|
|
35
|
+
beforeTag: string;
|
|
36
|
+
afterTag: string;
|
|
37
|
+
bytesWritten: number;
|
|
38
|
+
dryRun: boolean;
|
|
39
|
+
operationCount: number;
|
|
40
|
+
tokenClassification: "edit";
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Filesystem seams for under-lock execution tests. Production callers omit the
|
|
44
|
+
* argument and receive the default Node filesystem backed by `atomicReplaceFile`.
|
|
45
|
+
*/
|
|
46
|
+
export interface AnchoredFileEditFileSystem {
|
|
47
|
+
readFile(path: string): Promise<Buffer>;
|
|
48
|
+
stat(path: string): Promise<Stats>;
|
|
49
|
+
atomicWrite(target: string, bytes: Uint8Array, mode: number): Promise<void>;
|
|
50
|
+
}
|
|
51
|
+
export declare function prepareAnchoredFileEditApproval(mode: AnchoredFileEditMode, input: unknown, sessionId: string, environment: Omit<AnchoredFileEditEnvironment, "mutations">): Promise<CanonicalFileEditPreview>;
|
|
52
|
+
export declare function executeAnchoredFileEdit(mode: AnchoredFileEditMode, input: unknown, context: ToolExecutionContext, environment: AnchoredFileEditEnvironment, fileSystem?: AnchoredFileEditFileSystem): Promise<ToolOutputEnvelope>;
|
|
53
|
+
//# sourceMappingURL=anchored-file-edit.d.ts.map
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { JsonValue } from "../../shared/types.ts";
|
|
2
|
+
import { ToolExecutionError } from "../core/tools.ts";
|
|
3
|
+
export type AnchoredFileErrorCode = "invalid_patch" | "unknown_snapshot" | "ambiguous_snapshot_tag" | "stale_snapshot" | "unseen_lines" | "invalid_range" | "overlapping_operations" | "no_change" | "write_failed" | "post_write_drift";
|
|
4
|
+
export declare function createAnchoredFileError(code: AnchoredFileErrorCode, message: string, structured?: Record<string, JsonValue>): ToolExecutionError;
|
|
5
|
+
//# sourceMappingURL=anchored-file-errors.d.ts.map
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { NormalizedFileSnapshot } from "./file-snapshot.ts";
|
|
2
|
+
export type CanonicalFileOperation = {
|
|
3
|
+
operation: "replace";
|
|
4
|
+
startLine: number;
|
|
5
|
+
endLine: number;
|
|
6
|
+
content: string;
|
|
7
|
+
} | {
|
|
8
|
+
operation: "delete";
|
|
9
|
+
startLine: number;
|
|
10
|
+
endLine: number;
|
|
11
|
+
} | {
|
|
12
|
+
operation: "insert";
|
|
13
|
+
position: "before" | "after";
|
|
14
|
+
line: number;
|
|
15
|
+
content: string;
|
|
16
|
+
};
|
|
17
|
+
export interface FileEditLineNumbers {
|
|
18
|
+
oldStartLine: number;
|
|
19
|
+
oldEndLine: number;
|
|
20
|
+
newStartLine: number;
|
|
21
|
+
newEndLine: number;
|
|
22
|
+
oldLineCount: number;
|
|
23
|
+
newLineCount: number;
|
|
24
|
+
}
|
|
25
|
+
export interface CanonicalFileEditBlock {
|
|
26
|
+
oldText: string;
|
|
27
|
+
newText: string;
|
|
28
|
+
lineNumbers: FileEditLineNumbers;
|
|
29
|
+
}
|
|
30
|
+
export interface PreparedCanonicalFileEdit {
|
|
31
|
+
afterText: string;
|
|
32
|
+
operations: readonly CanonicalFileOperation[];
|
|
33
|
+
blocks: readonly CanonicalFileEditBlock[];
|
|
34
|
+
requiredLines: readonly number[];
|
|
35
|
+
payloadDigest: string;
|
|
36
|
+
}
|
|
37
|
+
export declare function prepareCanonicalFileEdit(snapshot: NormalizedFileSnapshot, observedLines: ReadonlySet<number>, operations: readonly CanonicalFileOperation[]): PreparedCanonicalFileEdit;
|
|
38
|
+
//# sourceMappingURL=anchored-file-operations.d.ts.map
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { NormalizedFileSnapshot } from "./file-snapshot.ts";
|
|
2
|
+
export interface AnchoredReadFormatRequest {
|
|
3
|
+
displayPath: string;
|
|
4
|
+
snapshot: NormalizedFileSnapshot;
|
|
5
|
+
lineStart?: number;
|
|
6
|
+
lineEnd?: number;
|
|
7
|
+
maxBytes: number;
|
|
8
|
+
}
|
|
9
|
+
export interface AnchoredReadFormatResult {
|
|
10
|
+
output: string;
|
|
11
|
+
displayedLines: readonly number[];
|
|
12
|
+
lineStart?: number;
|
|
13
|
+
lineEnd?: number;
|
|
14
|
+
truncated: boolean;
|
|
15
|
+
nextLineStart?: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Format a normalized snapshot as byte-bounded `N:text` rows under a
|
|
19
|
+
* `[displayPath#TAG]` header.
|
|
20
|
+
*
|
|
21
|
+
* Bytes for the header and the deterministic truncation guidance are reserved
|
|
22
|
+
* before any numbered row is accepted, so the returned text never grows large
|
|
23
|
+
* enough for a later output-offload transformer to remove rows. Rows are never
|
|
24
|
+
* split: a row is accepted only when it and the worst-case guidance fit the
|
|
25
|
+
* budget. The displayed range follows exact FileRead's clamping/ordering.
|
|
26
|
+
* Provenance is returned separately (`displayedLines`) so the caller records
|
|
27
|
+
* exactly what the model saw after final formatting.
|
|
28
|
+
*/
|
|
29
|
+
export declare function formatAnchoredFileRead(request: AnchoredReadFormatRequest): AnchoredReadFormatResult;
|
|
30
|
+
/**
|
|
31
|
+
* True when `text` renders within `maxColumns` terminal display columns.
|
|
32
|
+
* Width is measured with `string-width` (grapheme-aware display width), never
|
|
33
|
+
* JavaScript string length, so CJK, combining marks, and emoji sequences are
|
|
34
|
+
* counted the way a terminal renders them.
|
|
35
|
+
*/
|
|
36
|
+
export declare function isWithinDisplayColumns(text: string, maxColumns: number): boolean;
|
|
37
|
+
//# sourceMappingURL=anchored-file-read.d.ts.map
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface AtomicFileSystem {
|
|
2
|
+
writeFile(path: string, bytes: Uint8Array, options: {
|
|
3
|
+
mode: number;
|
|
4
|
+
}): Promise<void>;
|
|
5
|
+
chmod(path: string, mode: number): Promise<void>;
|
|
6
|
+
rename(from: string, to: string): Promise<void>;
|
|
7
|
+
rm(path: string, options: {
|
|
8
|
+
force: true;
|
|
9
|
+
}): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Atomically replace `target` with `bytes`, preserving permission mode.
|
|
13
|
+
*
|
|
14
|
+
* Writes an unguessable same-directory temporary file, applies `mode & 0o7777`,
|
|
15
|
+
* renames it over the target, and unconditionally removes the temporary path
|
|
16
|
+
* in `finally` so every write/chmod/rename failure still cleans up.
|
|
17
|
+
*/
|
|
18
|
+
export declare function atomicReplaceFile(target: string, bytes: Uint8Array, mode: number, fileSystem?: AtomicFileSystem): Promise<void>;
|
|
19
|
+
//# sourceMappingURL=atomic-file-write.d.ts.map
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import type { FileMutationCoordinator } from "./file-mutation-coordinator.ts";
|
|
2
|
+
import type { FileObservationStore } from "./file-observation-store.ts";
|
|
3
|
+
import { type FileEditMode } from "./structured-file-edit-adapter.ts";
|
|
4
|
+
export interface FileEditToolOptions {
|
|
5
|
+
allowedDirs?: readonly string[];
|
|
6
|
+
defaultCwd?: string;
|
|
7
|
+
name?: string;
|
|
8
|
+
mode?: FileEditMode;
|
|
9
|
+
observations?: FileObservationStore;
|
|
10
|
+
mutations?: FileMutationCoordinator;
|
|
11
|
+
outputBudgetBytes?: number;
|
|
12
|
+
}
|
|
13
|
+
export declare function createFileEditTool(options?: FileEditToolOptions): import("../../shared/types.ts").ToolDefinition<{
|
|
14
|
+
tag: string;
|
|
15
|
+
filePath: string;
|
|
16
|
+
operations: ({
|
|
17
|
+
content: string;
|
|
18
|
+
operation: "replace";
|
|
19
|
+
startLine: number;
|
|
20
|
+
endLine: number;
|
|
21
|
+
line?: undefined;
|
|
22
|
+
position?: undefined;
|
|
23
|
+
} | {
|
|
24
|
+
operation: "delete";
|
|
25
|
+
startLine: number;
|
|
26
|
+
endLine: number;
|
|
27
|
+
content?: undefined;
|
|
28
|
+
line?: undefined;
|
|
29
|
+
position?: undefined;
|
|
30
|
+
} | {
|
|
31
|
+
content: string;
|
|
32
|
+
line: number;
|
|
33
|
+
position: "before" | "after";
|
|
34
|
+
operation: "insert";
|
|
35
|
+
startLine?: undefined;
|
|
36
|
+
endLine?: undefined;
|
|
37
|
+
})[];
|
|
38
|
+
description?: string | undefined;
|
|
39
|
+
dryRun?: boolean | undefined;
|
|
40
|
+
} | {
|
|
41
|
+
patch: string;
|
|
42
|
+
description?: string | undefined;
|
|
43
|
+
dryRun?: boolean | undefined;
|
|
44
|
+
}, import("../../shared/types.ts").ToolOutputEnvelope, undefined, {
|
|
45
|
+
readonly type: "object";
|
|
46
|
+
readonly properties: {
|
|
47
|
+
readonly filePath: {
|
|
48
|
+
readonly type: "string";
|
|
49
|
+
};
|
|
50
|
+
readonly tag: {
|
|
51
|
+
readonly type: "string";
|
|
52
|
+
};
|
|
53
|
+
readonly description: {
|
|
54
|
+
readonly type: "string";
|
|
55
|
+
};
|
|
56
|
+
readonly operations: {
|
|
57
|
+
readonly type: "array";
|
|
58
|
+
readonly items: {
|
|
59
|
+
readonly anyOf: readonly [{
|
|
60
|
+
readonly type: "object";
|
|
61
|
+
readonly properties: {
|
|
62
|
+
readonly operation: {
|
|
63
|
+
readonly type: "string";
|
|
64
|
+
readonly enum: readonly ["replace"];
|
|
65
|
+
};
|
|
66
|
+
readonly startLine: {
|
|
67
|
+
readonly type: "number";
|
|
68
|
+
};
|
|
69
|
+
readonly endLine: {
|
|
70
|
+
readonly type: "number";
|
|
71
|
+
};
|
|
72
|
+
readonly content: {
|
|
73
|
+
readonly type: "string";
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
readonly required: readonly ["operation", "startLine", "endLine", "content"];
|
|
77
|
+
readonly additionalProperties: false;
|
|
78
|
+
}, {
|
|
79
|
+
readonly type: "object";
|
|
80
|
+
readonly properties: {
|
|
81
|
+
readonly operation: {
|
|
82
|
+
readonly type: "string";
|
|
83
|
+
readonly enum: readonly ["delete"];
|
|
84
|
+
};
|
|
85
|
+
readonly startLine: {
|
|
86
|
+
readonly type: "number";
|
|
87
|
+
};
|
|
88
|
+
readonly endLine: {
|
|
89
|
+
readonly type: "number";
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
readonly required: readonly ["operation", "startLine", "endLine"];
|
|
93
|
+
readonly additionalProperties: false;
|
|
94
|
+
}, {
|
|
95
|
+
readonly type: "object";
|
|
96
|
+
readonly properties: {
|
|
97
|
+
readonly operation: {
|
|
98
|
+
readonly type: "string";
|
|
99
|
+
readonly enum: readonly ["insert"];
|
|
100
|
+
};
|
|
101
|
+
readonly position: {
|
|
102
|
+
readonly type: "string";
|
|
103
|
+
readonly enum: readonly ["before", "after"];
|
|
104
|
+
};
|
|
105
|
+
readonly line: {
|
|
106
|
+
readonly type: "number";
|
|
107
|
+
};
|
|
108
|
+
readonly content: {
|
|
109
|
+
readonly type: "string";
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
readonly required: readonly ["operation", "position", "line", "content"];
|
|
113
|
+
readonly additionalProperties: false;
|
|
114
|
+
}];
|
|
115
|
+
};
|
|
116
|
+
};
|
|
117
|
+
readonly dryRun: {
|
|
118
|
+
readonly type: "boolean";
|
|
119
|
+
};
|
|
120
|
+
};
|
|
121
|
+
readonly required: readonly ["filePath", "tag", "operations"];
|
|
122
|
+
readonly additionalProperties: false;
|
|
123
|
+
} | {
|
|
124
|
+
readonly type: "object";
|
|
125
|
+
readonly properties: {
|
|
126
|
+
readonly patch: {
|
|
127
|
+
readonly type: "string";
|
|
128
|
+
};
|
|
129
|
+
readonly description: {
|
|
130
|
+
readonly type: "string";
|
|
131
|
+
};
|
|
132
|
+
readonly dryRun: {
|
|
133
|
+
readonly type: "boolean";
|
|
134
|
+
};
|
|
135
|
+
};
|
|
136
|
+
readonly required: readonly ["patch"];
|
|
137
|
+
readonly additionalProperties: false;
|
|
138
|
+
}> | import("../../shared/types.ts").ToolDefinition<{
|
|
139
|
+
filePath: string;
|
|
140
|
+
oldText: string;
|
|
141
|
+
newText: string;
|
|
142
|
+
description?: string | undefined;
|
|
143
|
+
dryRun?: boolean | undefined;
|
|
144
|
+
}, import("../../shared/types.ts").ToolOutputEnvelope, undefined, {
|
|
145
|
+
type: "object";
|
|
146
|
+
properties: {
|
|
147
|
+
filePath: {
|
|
148
|
+
type: "string";
|
|
149
|
+
};
|
|
150
|
+
description: {
|
|
151
|
+
type: "string";
|
|
152
|
+
description: string;
|
|
153
|
+
};
|
|
154
|
+
oldText: {
|
|
155
|
+
type: "string";
|
|
156
|
+
};
|
|
157
|
+
newText: {
|
|
158
|
+
type: "string";
|
|
159
|
+
};
|
|
160
|
+
dryRun: {
|
|
161
|
+
type: "boolean";
|
|
162
|
+
};
|
|
163
|
+
};
|
|
164
|
+
required: readonly ["filePath", "oldText", "newText"];
|
|
165
|
+
}>;
|
|
166
|
+
//# sourceMappingURL=file-edit-tool.d.ts.map
|