kagent-ts 0.1.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 (143) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +395 -0
  3. package/dist/compression/interface.d.ts +26 -0
  4. package/dist/compression/interface.d.ts.map +1 -0
  5. package/dist/compression/interface.js +3 -0
  6. package/dist/compression/interface.js.map +1 -0
  7. package/dist/compression/sliding-window.d.ts +21 -0
  8. package/dist/compression/sliding-window.d.ts.map +1 -0
  9. package/dist/compression/sliding-window.js +55 -0
  10. package/dist/compression/sliding-window.js.map +1 -0
  11. package/dist/compression/types.d.ts +12 -0
  12. package/dist/compression/types.d.ts.map +1 -0
  13. package/dist/compression/types.js +3 -0
  14. package/dist/compression/types.js.map +1 -0
  15. package/dist/context/context-manager.d.ts +76 -0
  16. package/dist/context/context-manager.d.ts.map +1 -0
  17. package/dist/context/context-manager.js +132 -0
  18. package/dist/context/context-manager.js.map +1 -0
  19. package/dist/context/types.d.ts +35 -0
  20. package/dist/context/types.d.ts.map +1 -0
  21. package/dist/context/types.js +3 -0
  22. package/dist/context/types.js.map +1 -0
  23. package/dist/core/agent.d.ts +288 -0
  24. package/dist/core/agent.d.ts.map +1 -0
  25. package/dist/core/agent.js +398 -0
  26. package/dist/core/agent.js.map +1 -0
  27. package/dist/core/hooks.d.ts +34 -0
  28. package/dist/core/hooks.d.ts.map +1 -0
  29. package/dist/core/hooks.js +3 -0
  30. package/dist/core/hooks.js.map +1 -0
  31. package/dist/core/plan-solve-agent.d.ts +114 -0
  32. package/dist/core/plan-solve-agent.d.ts.map +1 -0
  33. package/dist/core/plan-solve-agent.js +450 -0
  34. package/dist/core/plan-solve-agent.js.map +1 -0
  35. package/dist/core/react-agent.d.ts +52 -0
  36. package/dist/core/react-agent.d.ts.map +1 -0
  37. package/dist/core/react-agent.js +266 -0
  38. package/dist/core/react-agent.js.map +1 -0
  39. package/dist/core/response-schema.d.ts +91 -0
  40. package/dist/core/response-schema.d.ts.map +1 -0
  41. package/dist/core/response-schema.js +292 -0
  42. package/dist/core/response-schema.js.map +1 -0
  43. package/dist/core/types.d.ts +6 -0
  44. package/dist/core/types.d.ts.map +1 -0
  45. package/dist/core/types.js +3 -0
  46. package/dist/core/types.js.map +1 -0
  47. package/dist/index.d.ts +39 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +67 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/llm/interface.d.ts +87 -0
  52. package/dist/llm/interface.d.ts.map +1 -0
  53. package/dist/llm/interface.js +3 -0
  54. package/dist/llm/interface.js.map +1 -0
  55. package/dist/llm/openai-provider.d.ts +92 -0
  56. package/dist/llm/openai-provider.d.ts.map +1 -0
  57. package/dist/llm/openai-provider.js +262 -0
  58. package/dist/llm/openai-provider.js.map +1 -0
  59. package/dist/messages/message.d.ts +50 -0
  60. package/dist/messages/message.d.ts.map +1 -0
  61. package/dist/messages/message.js +87 -0
  62. package/dist/messages/message.js.map +1 -0
  63. package/dist/messages/types.d.ts +31 -0
  64. package/dist/messages/types.d.ts.map +1 -0
  65. package/dist/messages/types.js +14 -0
  66. package/dist/messages/types.js.map +1 -0
  67. package/dist/preferences/preference-manager.d.ts +88 -0
  68. package/dist/preferences/preference-manager.d.ts.map +1 -0
  69. package/dist/preferences/preference-manager.js +196 -0
  70. package/dist/preferences/preference-manager.js.map +1 -0
  71. package/dist/preferences/types.d.ts +27 -0
  72. package/dist/preferences/types.d.ts.map +1 -0
  73. package/dist/preferences/types.js +3 -0
  74. package/dist/preferences/types.js.map +1 -0
  75. package/dist/session/session-manager.d.ts +56 -0
  76. package/dist/session/session-manager.d.ts.map +1 -0
  77. package/dist/session/session-manager.js +156 -0
  78. package/dist/session/session-manager.js.map +1 -0
  79. package/dist/session/session-types.d.ts +51 -0
  80. package/dist/session/session-types.d.ts.map +1 -0
  81. package/dist/session/session-types.js +3 -0
  82. package/dist/session/session-types.js.map +1 -0
  83. package/dist/skills/file-skill-loader.d.ts +88 -0
  84. package/dist/skills/file-skill-loader.d.ts.map +1 -0
  85. package/dist/skills/file-skill-loader.js +365 -0
  86. package/dist/skills/file-skill-loader.js.map +1 -0
  87. package/dist/skills/index.d.ts +4 -0
  88. package/dist/skills/index.d.ts.map +1 -0
  89. package/dist/skills/index.js +10 -0
  90. package/dist/skills/index.js.map +1 -0
  91. package/dist/skills/skill-manager.d.ts +133 -0
  92. package/dist/skills/skill-manager.d.ts.map +1 -0
  93. package/dist/skills/skill-manager.js +310 -0
  94. package/dist/skills/skill-manager.js.map +1 -0
  95. package/dist/skills/types.d.ts +42 -0
  96. package/dist/skills/types.d.ts.map +1 -0
  97. package/dist/skills/types.js +3 -0
  98. package/dist/skills/types.js.map +1 -0
  99. package/dist/tools/builtin/edit-file.d.ts +12 -0
  100. package/dist/tools/builtin/edit-file.d.ts.map +1 -0
  101. package/dist/tools/builtin/edit-file.js +123 -0
  102. package/dist/tools/builtin/edit-file.js.map +1 -0
  103. package/dist/tools/builtin/glob-search.d.ts +11 -0
  104. package/dist/tools/builtin/glob-search.d.ts.map +1 -0
  105. package/dist/tools/builtin/glob-search.js +264 -0
  106. package/dist/tools/builtin/glob-search.js.map +1 -0
  107. package/dist/tools/builtin/grep-search.d.ts +14 -0
  108. package/dist/tools/builtin/grep-search.d.ts.map +1 -0
  109. package/dist/tools/builtin/grep-search.js +264 -0
  110. package/dist/tools/builtin/grep-search.js.map +1 -0
  111. package/dist/tools/builtin/index.d.ts +21 -0
  112. package/dist/tools/builtin/index.d.ts.map +1 -0
  113. package/dist/tools/builtin/index.js +53 -0
  114. package/dist/tools/builtin/index.js.map +1 -0
  115. package/dist/tools/builtin/read-file.d.ts +11 -0
  116. package/dist/tools/builtin/read-file.d.ts.map +1 -0
  117. package/dist/tools/builtin/read-file.js +122 -0
  118. package/dist/tools/builtin/read-file.js.map +1 -0
  119. package/dist/tools/builtin/write-file.d.ts +10 -0
  120. package/dist/tools/builtin/write-file.d.ts.map +1 -0
  121. package/dist/tools/builtin/write-file.js +89 -0
  122. package/dist/tools/builtin/write-file.js.map +1 -0
  123. package/dist/tools/circuit-breaker.d.ts +77 -0
  124. package/dist/tools/circuit-breaker.d.ts.map +1 -0
  125. package/dist/tools/circuit-breaker.js +102 -0
  126. package/dist/tools/circuit-breaker.js.map +1 -0
  127. package/dist/tools/error-tracker.d.ts +116 -0
  128. package/dist/tools/error-tracker.d.ts.map +1 -0
  129. package/dist/tools/error-tracker.js +484 -0
  130. package/dist/tools/error-tracker.js.map +1 -0
  131. package/dist/tools/tool-registry.d.ts +87 -0
  132. package/dist/tools/tool-registry.d.ts.map +1 -0
  133. package/dist/tools/tool-registry.js +188 -0
  134. package/dist/tools/tool-registry.js.map +1 -0
  135. package/dist/tools/types.d.ts +95 -0
  136. package/dist/tools/types.d.ts.map +1 -0
  137. package/dist/tools/types.js +14 -0
  138. package/dist/tools/types.js.map +1 -0
  139. package/dist/utils/token-counter.d.ts +31 -0
  140. package/dist/utils/token-counter.d.ts.map +1 -0
  141. package/dist/utils/token-counter.js +105 -0
  142. package/dist/utils/token-counter.js.map +1 -0
  143. package/package.json +56 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-schema.js","sourceRoot":"","sources":["../../src/core/response-schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Re-export Tool from the tools module.
3
+ * It now lives in src/tools/types.ts alongside the circuit breaker system.
4
+ */
5
+ export type { Tool } from "../tools/types";
6
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,YAAY,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,39 @@
1
+ export { Agent } from "./core/agent";
2
+ export type { AgentConfig } from "./core/agent";
3
+ export { ReActAgent } from "./core/react-agent";
4
+ export type { ReActAgentConfig } from "./core/react-agent";
5
+ export { PlanSolveAgent } from "./core/plan-solve-agent";
6
+ export type { PlanSolveAgentConfig } from "./core/plan-solve-agent";
7
+ export type { Tool } from "./core/types";
8
+ export type { AgentHooks } from "./core/hooks";
9
+ export { parseReActResponse, STRUCTURED_OUTPUT_INSTRUCTIONS, parsePlanSolveResponse, PLAN_SOLVE_INSTRUCTIONS, } from "./core/response-schema";
10
+ export type { ReActResponse, ReActReasoning, ReActFinalAnswer, PlanSolveResponse, } from "./core/response-schema";
11
+ export { ToolRegistry } from "./tools/tool-registry";
12
+ export { CircuitBreaker } from "./tools/circuit-breaker";
13
+ export type { CircuitBreakerConfig } from "./tools/circuit-breaker";
14
+ export { BreakerState } from "./tools/types";
15
+ export type { BreakerStatus } from "./tools/types";
16
+ export { ToolErrorTracker, categorizeError } from "./tools/error-tracker";
17
+ export type { ErrorTrackerConfig } from "./tools/error-tracker";
18
+ export type { ToolErrorTrace, TraceEvent, ErrorTraceSummary } from "./tools/types";
19
+ export { BUILTIN_TOOLS, registerAllBuiltinTools, ReadFileTool, WriteFileTool, EditFileTool, GrepSearchTool, GlobSearchTool, } from "./tools/builtin/index";
20
+ export { SkillManager, FileSkillLoader, parseFrontmatter, parseKeywords } from "./skills/index";
21
+ export type { Skill, SkillStatus } from "./skills/types";
22
+ export { Message } from "./messages/message";
23
+ export { Role } from "./messages/types";
24
+ export type { MessageData, ToolCall } from "./messages/types";
25
+ export type { LLMProvider, LLMResponse } from "./llm/interface";
26
+ export { OpenAIProvider, LLMNetworkError, isNetworkError } from "./llm/openai-provider";
27
+ export type { OpenAIConfig, OpenAIRetryConfig, NetworkErrorCause } from "./llm/openai-provider";
28
+ export { ContextManager } from "./context/context-manager";
29
+ export type { ContextConfig, ContextState } from "./context/types";
30
+ export type { CompressionStrategy, CompressionResult } from "./compression/interface";
31
+ export { SlidingWindowCompression } from "./compression/sliding-window";
32
+ export type { CompressionConfig } from "./compression/types";
33
+ export { PreferenceManager } from "./preferences/preference-manager";
34
+ export type { Preferences, PreferenceManagerConfig } from "./preferences/types";
35
+ export { SessionManager } from "./session/session-manager";
36
+ export type { SessionManagerConfig } from "./session/session-manager";
37
+ export type { SessionState, SessionStatus, AgentType, PlanSolveSessionState, } from "./session/session-types";
38
+ export { countTokens, countMessageTokens } from "./utils/token-counter";
39
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,YAAY,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,YAAY,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACzC,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C,OAAO,EACL,kBAAkB,EAClB,8BAA8B,EAC9B,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,YAAY,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGnD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC1E,YAAY,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGnF,OAAO,EACL,aAAa,EACb,uBAAuB,EACvB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,cAAc,EACd,cAAc,GACf,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAChG,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGzD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG9D,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACxF,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAIhG,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGnE,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACtF,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAG7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,YAAY,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAGhF,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,YAAY,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,YAAY,EACV,YAAY,EACZ,aAAa,EACb,SAAS,EACT,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.countMessageTokens = exports.countTokens = exports.SessionManager = exports.PreferenceManager = exports.SlidingWindowCompression = exports.ContextManager = exports.isNetworkError = exports.LLMNetworkError = exports.OpenAIProvider = exports.Role = exports.Message = exports.parseKeywords = exports.parseFrontmatter = exports.FileSkillLoader = exports.SkillManager = exports.GlobSearchTool = exports.GrepSearchTool = exports.EditFileTool = exports.WriteFileTool = exports.ReadFileTool = exports.registerAllBuiltinTools = exports.BUILTIN_TOOLS = exports.categorizeError = exports.ToolErrorTracker = exports.BreakerState = exports.CircuitBreaker = exports.ToolRegistry = exports.PLAN_SOLVE_INSTRUCTIONS = exports.parsePlanSolveResponse = exports.STRUCTURED_OUTPUT_INSTRUCTIONS = exports.parseReActResponse = exports.PlanSolveAgent = exports.ReActAgent = exports.Agent = void 0;
4
+ // Core Agent
5
+ var agent_1 = require("./core/agent");
6
+ Object.defineProperty(exports, "Agent", { enumerable: true, get: function () { return agent_1.Agent; } });
7
+ var react_agent_1 = require("./core/react-agent");
8
+ Object.defineProperty(exports, "ReActAgent", { enumerable: true, get: function () { return react_agent_1.ReActAgent; } });
9
+ var plan_solve_agent_1 = require("./core/plan-solve-agent");
10
+ Object.defineProperty(exports, "PlanSolveAgent", { enumerable: true, get: function () { return plan_solve_agent_1.PlanSolveAgent; } });
11
+ // Response schema — structured JSON output from LLM
12
+ var response_schema_1 = require("./core/response-schema");
13
+ Object.defineProperty(exports, "parseReActResponse", { enumerable: true, get: function () { return response_schema_1.parseReActResponse; } });
14
+ Object.defineProperty(exports, "STRUCTURED_OUTPUT_INSTRUCTIONS", { enumerable: true, get: function () { return response_schema_1.STRUCTURED_OUTPUT_INSTRUCTIONS; } });
15
+ Object.defineProperty(exports, "parsePlanSolveResponse", { enumerable: true, get: function () { return response_schema_1.parsePlanSolveResponse; } });
16
+ Object.defineProperty(exports, "PLAN_SOLVE_INSTRUCTIONS", { enumerable: true, get: function () { return response_schema_1.PLAN_SOLVE_INSTRUCTIONS; } });
17
+ // Tools — circuit breaker & registry
18
+ var tool_registry_1 = require("./tools/tool-registry");
19
+ Object.defineProperty(exports, "ToolRegistry", { enumerable: true, get: function () { return tool_registry_1.ToolRegistry; } });
20
+ var circuit_breaker_1 = require("./tools/circuit-breaker");
21
+ Object.defineProperty(exports, "CircuitBreaker", { enumerable: true, get: function () { return circuit_breaker_1.CircuitBreaker; } });
22
+ var types_1 = require("./tools/types");
23
+ Object.defineProperty(exports, "BreakerState", { enumerable: true, get: function () { return types_1.BreakerState; } });
24
+ // Tool error tracker — observability for tool failure chains
25
+ var error_tracker_1 = require("./tools/error-tracker");
26
+ Object.defineProperty(exports, "ToolErrorTracker", { enumerable: true, get: function () { return error_tracker_1.ToolErrorTracker; } });
27
+ Object.defineProperty(exports, "categorizeError", { enumerable: true, get: function () { return error_tracker_1.categorizeError; } });
28
+ // Built-in file tools
29
+ var index_1 = require("./tools/builtin/index");
30
+ Object.defineProperty(exports, "BUILTIN_TOOLS", { enumerable: true, get: function () { return index_1.BUILTIN_TOOLS; } });
31
+ Object.defineProperty(exports, "registerAllBuiltinTools", { enumerable: true, get: function () { return index_1.registerAllBuiltinTools; } });
32
+ Object.defineProperty(exports, "ReadFileTool", { enumerable: true, get: function () { return index_1.ReadFileTool; } });
33
+ Object.defineProperty(exports, "WriteFileTool", { enumerable: true, get: function () { return index_1.WriteFileTool; } });
34
+ Object.defineProperty(exports, "EditFileTool", { enumerable: true, get: function () { return index_1.EditFileTool; } });
35
+ Object.defineProperty(exports, "GrepSearchTool", { enumerable: true, get: function () { return index_1.GrepSearchTool; } });
36
+ Object.defineProperty(exports, "GlobSearchTool", { enumerable: true, get: function () { return index_1.GlobSearchTool; } });
37
+ // Skills — progressive disclosure
38
+ var index_2 = require("./skills/index");
39
+ Object.defineProperty(exports, "SkillManager", { enumerable: true, get: function () { return index_2.SkillManager; } });
40
+ Object.defineProperty(exports, "FileSkillLoader", { enumerable: true, get: function () { return index_2.FileSkillLoader; } });
41
+ Object.defineProperty(exports, "parseFrontmatter", { enumerable: true, get: function () { return index_2.parseFrontmatter; } });
42
+ Object.defineProperty(exports, "parseKeywords", { enumerable: true, get: function () { return index_2.parseKeywords; } });
43
+ // Messages
44
+ var message_1 = require("./messages/message");
45
+ Object.defineProperty(exports, "Message", { enumerable: true, get: function () { return message_1.Message; } });
46
+ var types_2 = require("./messages/types");
47
+ Object.defineProperty(exports, "Role", { enumerable: true, get: function () { return types_2.Role; } });
48
+ var openai_provider_1 = require("./llm/openai-provider");
49
+ Object.defineProperty(exports, "OpenAIProvider", { enumerable: true, get: function () { return openai_provider_1.OpenAIProvider; } });
50
+ Object.defineProperty(exports, "LLMNetworkError", { enumerable: true, get: function () { return openai_provider_1.LLMNetworkError; } });
51
+ Object.defineProperty(exports, "isNetworkError", { enumerable: true, get: function () { return openai_provider_1.isNetworkError; } });
52
+ // Context
53
+ var context_manager_1 = require("./context/context-manager");
54
+ Object.defineProperty(exports, "ContextManager", { enumerable: true, get: function () { return context_manager_1.ContextManager; } });
55
+ var sliding_window_1 = require("./compression/sliding-window");
56
+ Object.defineProperty(exports, "SlidingWindowCompression", { enumerable: true, get: function () { return sliding_window_1.SlidingWindowCompression; } });
57
+ // User preferences
58
+ var preference_manager_1 = require("./preferences/preference-manager");
59
+ Object.defineProperty(exports, "PreferenceManager", { enumerable: true, get: function () { return preference_manager_1.PreferenceManager; } });
60
+ // Session persistence & network resilience
61
+ var session_manager_1 = require("./session/session-manager");
62
+ Object.defineProperty(exports, "SessionManager", { enumerable: true, get: function () { return session_manager_1.SessionManager; } });
63
+ // Utils
64
+ var token_counter_1 = require("./utils/token-counter");
65
+ Object.defineProperty(exports, "countTokens", { enumerable: true, get: function () { return token_counter_1.countTokens; } });
66
+ Object.defineProperty(exports, "countMessageTokens", { enumerable: true, get: function () { return token_counter_1.countMessageTokens; } });
67
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,aAAa;AACb,sCAAqC;AAA5B,8FAAA,KAAK,OAAA;AAEd,kDAAgD;AAAvC,yGAAA,UAAU,OAAA;AAEnB,4DAAyD;AAAhD,kHAAA,cAAc,OAAA;AAKvB,oDAAoD;AACpD,0DAKgC;AAJ9B,qHAAA,kBAAkB,OAAA;AAClB,iIAAA,8BAA8B,OAAA;AAC9B,yHAAA,sBAAsB,OAAA;AACtB,0HAAA,uBAAuB,OAAA;AASzB,qCAAqC;AACrC,uDAAqD;AAA5C,6GAAA,YAAY,OAAA;AACrB,2DAAyD;AAAhD,iHAAA,cAAc,OAAA;AAEvB,uCAA6C;AAApC,qGAAA,YAAY,OAAA;AAGrB,6DAA6D;AAC7D,uDAA0E;AAAjE,iHAAA,gBAAgB,OAAA;AAAE,gHAAA,eAAe,OAAA;AAI1C,sBAAsB;AACtB,+CAQ+B;AAP7B,sGAAA,aAAa,OAAA;AACb,gHAAA,uBAAuB,OAAA;AACvB,qGAAA,YAAY,OAAA;AACZ,sGAAA,aAAa,OAAA;AACb,qGAAA,YAAY,OAAA;AACZ,uGAAA,cAAc,OAAA;AACd,uGAAA,cAAc,OAAA;AAGhB,kCAAkC;AAClC,wCAAgG;AAAvF,qGAAA,YAAY,OAAA;AAAE,wGAAA,eAAe,OAAA;AAAE,yGAAA,gBAAgB,OAAA;AAAE,sGAAA,aAAa,OAAA;AAGvE,WAAW;AACX,8CAA6C;AAApC,kGAAA,OAAO,OAAA;AAChB,0CAAwC;AAA/B,6FAAA,IAAI,OAAA;AAKb,yDAAwF;AAA/E,iHAAA,cAAc,OAAA;AAAE,kHAAA,eAAe,OAAA;AAAE,iHAAA,cAAc,OAAA;AAIxD,UAAU;AACV,6DAA2D;AAAlD,iHAAA,cAAc,OAAA;AAKvB,+DAAwE;AAA/D,0HAAA,wBAAwB,OAAA;AAGjC,mBAAmB;AACnB,uEAAqE;AAA5D,uHAAA,iBAAiB,OAAA;AAG1B,2CAA2C;AAC3C,6DAA2D;AAAlD,iHAAA,cAAc,OAAA;AASvB,QAAQ;AACR,uDAAwE;AAA/D,4GAAA,WAAW,OAAA;AAAE,mHAAA,kBAAkB,OAAA"}
@@ -0,0 +1,87 @@
1
+ import { Tool } from "../tools/types";
2
+ import { MessageData } from "../messages/types";
3
+ /**
4
+ * Response returned by an LLM provider after a chat call.
5
+ */
6
+ export interface LLMResponse {
7
+ content: string;
8
+ tool_calls?: Array<{
9
+ id: string;
10
+ type: "function";
11
+ function: {
12
+ name: string;
13
+ arguments: string;
14
+ };
15
+ }>;
16
+ usage?: {
17
+ prompt_tokens: number;
18
+ completion_tokens: number;
19
+ total_tokens: number;
20
+ };
21
+ }
22
+ /**
23
+ * A streaming chunk from the LLM, containing partial content or tool call data.
24
+ */
25
+ export interface LLMStreamChunk {
26
+ type: "chunk";
27
+ /** Partial text content delta (may be empty string). */
28
+ content?: string;
29
+ /** Partial tool call deltas, identified by index. */
30
+ tool_calls?: Array<{
31
+ /** Index of the tool call in the overall list (used to correlate deltas). */
32
+ index: number;
33
+ /** Tool call id (typically appears only in the first delta for a given index). */
34
+ id?: string;
35
+ function?: {
36
+ name?: string;
37
+ arguments?: string;
38
+ };
39
+ }>;
40
+ }
41
+ /**
42
+ * Terminal event emitted after all streaming chunks have been consumed.
43
+ */
44
+ export interface LLMStreamDone {
45
+ type: "done";
46
+ /** Usage statistics, if available from the provider. */
47
+ usage?: {
48
+ prompt_tokens: number;
49
+ completion_tokens: number;
50
+ total_tokens: number;
51
+ };
52
+ }
53
+ /** Union of all possible stream event types. */
54
+ export type LLMStreamEvent = LLMStreamChunk | LLMStreamDone;
55
+ /**
56
+ * Abstract interface for LLM providers.
57
+ * Concrete implementations (e.g., OpenAI, Anthropic) implement this.
58
+ */
59
+ export interface LLMProvider {
60
+ /** The model identifier (e.g. "gpt-4o", "gpt-4o-mini"). */
61
+ readonly model: string;
62
+ /**
63
+ * Send a chat completion request (non-streaming).
64
+ * @param messages The conversation messages so far.
65
+ * @param tools Optional tool definitions for function calling.
66
+ */
67
+ chat(messages: MessageData[], tools?: Tool[]): Promise<LLMResponse>;
68
+ /**
69
+ * Send a chat completion request and yield events as they arrive.
70
+ *
71
+ * Yields {@link LLMStreamChunk} events for each delta, followed by a
72
+ * single {@link LLMStreamDone} event when the stream completes.
73
+ *
74
+ * @param messages The conversation messages so far.
75
+ * @param tools Optional tool definitions for function calling.
76
+ */
77
+ chatStream(messages: MessageData[], tools?: Tool[]): AsyncIterable<LLMStreamEvent>;
78
+ /**
79
+ * Count tokens in a text string.
80
+ * Uses tiktoken (by model name) when available, falling back to heuristic estimation.
81
+ *
82
+ * @param text The text to tokenize.
83
+ * @param model Optional model override. Defaults to the provider's own model.
84
+ */
85
+ getTokenCount(text: string, model?: string): number;
86
+ }
87
+ //# sourceMappingURL=interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/llm/interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,KAAK,CAAC;QACjB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,UAAU,CAAC;QACjB,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM,CAAC;YACb,SAAS,EAAE,MAAM,CAAC;SACnB,CAAC;KACH,CAAC,CAAC;IACH,KAAK,CAAC,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,UAAU,CAAC,EAAE,KAAK,CAAC;QACjB,6EAA6E;QAC7E,KAAK,EAAE,MAAM,CAAC;QACd,kFAAkF;QAClF,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,QAAQ,CAAC,EAAE;YACT,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,SAAS,CAAC,EAAE,MAAM,CAAC;SACpB,CAAC;KACH,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,KAAK,CAAC,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,gDAAgD;AAChD,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG,aAAa,CAAC;AAE5D;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,2DAA2D;IAC3D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB;;;;OAIG;IACH,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAEpE;;;;;;;;OAQG;IACH,UAAU,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC;IAEnF;;;;;;OAMG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACrD"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/llm/interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,92 @@
1
+ import { LLMProvider, LLMResponse, LLMStreamEvent } from "./interface";
2
+ import { MessageData } from "../messages/types";
3
+ import { Tool } from "../tools/types";
4
+ /**
5
+ * Categories of network-related LLM failures.
6
+ */
7
+ export type NetworkErrorCause = "timeout" | "connection_refused" | "connection_reset" | "dns_error" | "rate_limit" | "server_error" | "aborted" | "unknown_network";
8
+ /**
9
+ * Thrown by the LLM provider when all retry attempts for a network-related
10
+ * failure have been exhausted. The agent catches this to save a checkpoint
11
+ * and guide the user to resume their session.
12
+ */
13
+ export declare class LLMNetworkError extends Error {
14
+ readonly cause: NetworkErrorCause;
15
+ constructor(message: string, cause: NetworkErrorCause);
16
+ }
17
+ /**
18
+ * Check whether an error is network-related and thus retryable.
19
+ */
20
+ export declare function isNetworkError(error: unknown): boolean;
21
+ export interface OpenAIRetryConfig {
22
+ /** Max retry attempts for network errors (default: 3). */
23
+ maxRetries?: number;
24
+ /** Initial backoff delay in ms (default: 1000). */
25
+ baseDelayMs?: number;
26
+ /** Maximum backoff delay in ms (default: 30000). */
27
+ maxDelayMs?: number;
28
+ }
29
+ /**
30
+ * Configuration options for the OpenAI LLM provider.
31
+ */
32
+ export interface OpenAIConfig {
33
+ apiKey: string;
34
+ model?: string;
35
+ temperature?: number;
36
+ maxTokens?: number;
37
+ baseURL?: string;
38
+ /** Retry configuration for network resilience. */
39
+ retry?: OpenAIRetryConfig;
40
+ /** Request timeout in ms (default: none — SDK default ~10 min). */
41
+ timeout?: number;
42
+ }
43
+ /**
44
+ * OpenAI implementation of the LLMProvider interface.
45
+ * Uses the official `openai` npm package.
46
+ *
47
+ * Features:
48
+ * - Tool/function calling support
49
+ * - Network error retry with exponential backoff
50
+ * - Configurable timeout
51
+ * - Token counting via tiktoken (with model-aware encoding)
52
+ */
53
+ export declare class OpenAIProvider implements LLMProvider {
54
+ readonly model: string;
55
+ private client;
56
+ private temperature;
57
+ private maxTokens;
58
+ private retryConfig;
59
+ private timeout;
60
+ constructor(config: OpenAIConfig);
61
+ chat(messages: MessageData[], tools?: Tool[]): Promise<LLMResponse>;
62
+ /**
63
+ * Streaming chat completion.
64
+ *
65
+ * Yields content and tool call deltas as they arrive from the API,
66
+ * then emits a single `"done"` event with usage statistics (when available).
67
+ *
68
+ * Note: The retry logic only covers the initial connection. If the stream
69
+ * drops mid-response, the consumer sees an incomplete stream and the
70
+ * agent's outer loop handles the error on the next LLM call.
71
+ */
72
+ chatStream(messages: MessageData[], tools?: Tool[]): AsyncIterable<LLMStreamEvent>;
73
+ /**
74
+ * Count tokens using tiktoken (with model-aware encoding) when available.
75
+ * Falls back to character-based estimation if tiktoken is not installed.
76
+ *
77
+ * @param text The text to tokenize.
78
+ * @param model Optional model override. Defaults to this provider's model.
79
+ */
80
+ getTokenCount(text: string, model?: string): number;
81
+ /**
82
+ * Wrap an async operation with network-error retry logic.
83
+ *
84
+ * Retry strategy:
85
+ * - Only network-related errors (timeout, connection reset, 429, 5xx) are retried.
86
+ * - Uses exponential backoff with full jitter: delay = base * 2^attempt * random(0.5, 1.0).
87
+ * - Non-retryable errors (401, 400, abort) propagate immediately.
88
+ * - After all retries are exhausted, throws `LLMNetworkError`.
89
+ */
90
+ private withRetry;
91
+ }
92
+ //# sourceMappingURL=openai-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-provider.d.ts","sourceRoot":"","sources":["../../src/llm/openai-provider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAKtC;;GAEG;AACH,MAAM,MAAM,iBAAiB,GACzB,SAAS,GACT,oBAAoB,GACpB,kBAAkB,GAClB,WAAW,GACX,YAAY,GACZ,cAAc,GACd,SAAS,GACT,iBAAiB,CAAC;AAEtB;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IACxC,SAAgB,KAAK,EAAE,iBAAiB,CAAC;gBAE7B,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB;CAKtD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CA0BtD;AAuBD,MAAM,WAAW,iBAAiB;IAChC,0DAA0D;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAID;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAID;;;;;;;;;GASG;AACH,qBAAa,cAAe,YAAW,WAAW;IAChD,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,OAAO,CAAqB;gBAExB,MAAM,EAAE,YAAY;IAgB1B,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IA+CzE;;;;;;;;;OASG;IACI,UAAU,CACf,QAAQ,EAAE,WAAW,EAAE,EACvB,KAAK,CAAC,EAAE,IAAI,EAAE,GACb,aAAa,CAAC,cAAc,CAAC;IAuEhC;;;;;;OAMG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;IAMnD;;;;;;;;OAQG;YACW,SAAS;CAgCxB"}
@@ -0,0 +1,262 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.OpenAIProvider = exports.LLMNetworkError = void 0;
7
+ exports.isNetworkError = isNetworkError;
8
+ const openai_1 = __importDefault(require("openai"));
9
+ const token_counter_1 = require("../utils/token-counter");
10
+ /**
11
+ * Thrown by the LLM provider when all retry attempts for a network-related
12
+ * failure have been exhausted. The agent catches this to save a checkpoint
13
+ * and guide the user to resume their session.
14
+ */
15
+ class LLMNetworkError extends Error {
16
+ cause;
17
+ constructor(message, cause) {
18
+ super(message);
19
+ this.name = "LLMNetworkError";
20
+ this.cause = cause;
21
+ }
22
+ }
23
+ exports.LLMNetworkError = LLMNetworkError;
24
+ /**
25
+ * Check whether an error is network-related and thus retryable.
26
+ */
27
+ function isNetworkError(error) {
28
+ if (error instanceof LLMNetworkError)
29
+ return true;
30
+ if (error instanceof openai_1.default.APIError) {
31
+ // 429 (rate-limit) and 5xx (server) are retryable
32
+ if (error.status === 429)
33
+ return true;
34
+ if (error.status !== undefined && error.status >= 500 && error.status < 600)
35
+ return true;
36
+ return false;
37
+ }
38
+ if (error instanceof Error) {
39
+ const msg = error.message.toLowerCase();
40
+ return (msg.includes("timeout") ||
41
+ msg.includes("econnrefused") ||
42
+ msg.includes("econnreset") ||
43
+ msg.includes("enotfound") ||
44
+ msg.includes("fetch failed") ||
45
+ msg.includes("network") ||
46
+ msg.includes("socket hang up") ||
47
+ msg.includes("econnaborted") ||
48
+ msg.includes("abort"));
49
+ }
50
+ return false;
51
+ }
52
+ /**
53
+ * Map a raw error to its NetworkErrorCause category.
54
+ */
55
+ function classifyError(error) {
56
+ if (error instanceof openai_1.default.APIError) {
57
+ if (error.status === 429)
58
+ return "rate_limit";
59
+ if (error.status !== undefined && error.status >= 500)
60
+ return "server_error";
61
+ }
62
+ if (error instanceof Error) {
63
+ const msg = error.message.toLowerCase();
64
+ if (msg.includes("abort"))
65
+ return "aborted";
66
+ if (msg.includes("timeout"))
67
+ return "timeout";
68
+ if (msg.includes("econnrefused"))
69
+ return "connection_refused";
70
+ if (msg.includes("econnreset"))
71
+ return "connection_reset";
72
+ if (msg.includes("enotfound") || msg.includes("dns"))
73
+ return "dns_error";
74
+ }
75
+ return "unknown_network";
76
+ }
77
+ // ─── OpenAIProvider ────────────────────────────────────────────────────────
78
+ /**
79
+ * OpenAI implementation of the LLMProvider interface.
80
+ * Uses the official `openai` npm package.
81
+ *
82
+ * Features:
83
+ * - Tool/function calling support
84
+ * - Network error retry with exponential backoff
85
+ * - Configurable timeout
86
+ * - Token counting via tiktoken (with model-aware encoding)
87
+ */
88
+ class OpenAIProvider {
89
+ model;
90
+ client;
91
+ temperature;
92
+ maxTokens;
93
+ retryConfig;
94
+ timeout;
95
+ constructor(config) {
96
+ this.client = new openai_1.default({
97
+ apiKey: config.apiKey,
98
+ baseURL: config.baseURL,
99
+ });
100
+ this.model = config.model ?? "gpt-4o";
101
+ this.temperature = config.temperature ?? 0.7;
102
+ this.maxTokens = config.maxTokens ?? 4096;
103
+ this.timeout = config.timeout;
104
+ this.retryConfig = {
105
+ maxRetries: config.retry?.maxRetries ?? 3,
106
+ baseDelayMs: config.retry?.baseDelayMs ?? 1000,
107
+ maxDelayMs: config.retry?.maxDelayMs ?? 30000,
108
+ };
109
+ }
110
+ async chat(messages, tools) {
111
+ // Convert internal Tool definitions to OpenAI tool format
112
+ const openaiTools = tools?.map((t) => ({
113
+ type: "function",
114
+ function: {
115
+ name: t.name,
116
+ description: t.description,
117
+ parameters: t.parameters,
118
+ },
119
+ }));
120
+ const response = await this.withRetry(() => this.client.chat.completions.create({
121
+ model: this.model,
122
+ messages: messages,
123
+ temperature: this.temperature,
124
+ max_tokens: this.maxTokens,
125
+ tools: openaiTools,
126
+ }, { timeout: this.timeout }));
127
+ const choice = response.choices[0];
128
+ const message = choice.message;
129
+ return {
130
+ content: message.content ?? "",
131
+ tool_calls: message.tool_calls?.map((tc) => ({
132
+ id: tc.id,
133
+ type: "function",
134
+ function: {
135
+ name: tc.function.name,
136
+ arguments: tc.function.arguments,
137
+ },
138
+ })),
139
+ usage: response.usage
140
+ ? {
141
+ prompt_tokens: response.usage.prompt_tokens,
142
+ completion_tokens: response.usage.completion_tokens,
143
+ total_tokens: response.usage.total_tokens,
144
+ }
145
+ : undefined,
146
+ };
147
+ }
148
+ /**
149
+ * Streaming chat completion.
150
+ *
151
+ * Yields content and tool call deltas as they arrive from the API,
152
+ * then emits a single `"done"` event with usage statistics (when available).
153
+ *
154
+ * Note: The retry logic only covers the initial connection. If the stream
155
+ * drops mid-response, the consumer sees an incomplete stream and the
156
+ * agent's outer loop handles the error on the next LLM call.
157
+ */
158
+ async *chatStream(messages, tools) {
159
+ const openaiTools = tools?.map((t) => ({
160
+ type: "function",
161
+ function: {
162
+ name: t.name,
163
+ description: t.description,
164
+ parameters: t.parameters,
165
+ },
166
+ }));
167
+ // Retry only the initial stream creation — not mid-stream drops.
168
+ // Use async wrapper so TypeScript treats APIPromise → Promise correctly.
169
+ const stream = await this.withRetry(async () => (await this.client.chat.completions.create({
170
+ model: this.model,
171
+ messages: messages,
172
+ temperature: this.temperature,
173
+ max_tokens: this.maxTokens,
174
+ tools: openaiTools,
175
+ stream: true,
176
+ stream_options: { include_usage: true },
177
+ }, { timeout: this.timeout })));
178
+ let emittedDone = false;
179
+ for await (const chunk of stream) {
180
+ const delta = chunk.choices?.[0]?.delta;
181
+ if (delta?.content) {
182
+ yield { type: "chunk", content: delta.content };
183
+ }
184
+ if (delta?.tool_calls) {
185
+ yield {
186
+ type: "chunk",
187
+ tool_calls: delta.tool_calls.map((tc) => ({
188
+ index: tc.index,
189
+ id: tc.id,
190
+ function: tc.function
191
+ ? { name: tc.function.name, arguments: tc.function.arguments }
192
+ : undefined,
193
+ })),
194
+ };
195
+ }
196
+ // The final chunk may carry usage when stream_options.include_usage is set.
197
+ if (chunk.usage) {
198
+ emittedDone = true;
199
+ yield {
200
+ type: "done",
201
+ usage: {
202
+ prompt_tokens: chunk.usage.prompt_tokens,
203
+ completion_tokens: chunk.usage.completion_tokens,
204
+ total_tokens: chunk.usage.total_tokens,
205
+ },
206
+ };
207
+ }
208
+ }
209
+ // Always yield a done event — providers that don't support usage still need
210
+ // a terminal signal so consumers know the stream is complete.
211
+ if (!emittedDone) {
212
+ yield { type: "done" };
213
+ }
214
+ }
215
+ /**
216
+ * Count tokens using tiktoken (with model-aware encoding) when available.
217
+ * Falls back to character-based estimation if tiktoken is not installed.
218
+ *
219
+ * @param text The text to tokenize.
220
+ * @param model Optional model override. Defaults to this provider's model.
221
+ */
222
+ getTokenCount(text, model) {
223
+ return (0, token_counter_1.countTokens)(text, model ?? this.model);
224
+ }
225
+ // ─── Private Helpers ────────────────────────────────────────────────────
226
+ /**
227
+ * Wrap an async operation with network-error retry logic.
228
+ *
229
+ * Retry strategy:
230
+ * - Only network-related errors (timeout, connection reset, 429, 5xx) are retried.
231
+ * - Uses exponential backoff with full jitter: delay = base * 2^attempt * random(0.5, 1.0).
232
+ * - Non-retryable errors (401, 400, abort) propagate immediately.
233
+ * - After all retries are exhausted, throws `LLMNetworkError`.
234
+ */
235
+ async withRetry(fn) {
236
+ const { maxRetries, baseDelayMs, maxDelayMs } = this.retryConfig;
237
+ let lastError;
238
+ for (let attempt = 0; attempt <= maxRetries; attempt++) {
239
+ try {
240
+ return await fn();
241
+ }
242
+ catch (error) {
243
+ lastError = error;
244
+ // Non-network errors propagate immediately (e.g. invalid API key)
245
+ if (!isNetworkError(error))
246
+ throw error;
247
+ if (attempt >= maxRetries)
248
+ break; // all retries exhausted
249
+ // Exponential backoff with full jitter
250
+ const delay = Math.min(baseDelayMs * Math.pow(2, attempt) * (0.5 + Math.random() * 0.5), maxDelayMs);
251
+ // eslint-disable-next-line @typescript-eslint/no-loop-func
252
+ await new Promise((resolve) => setTimeout(resolve, delay));
253
+ }
254
+ }
255
+ // All retries exhausted — wrap the final error
256
+ const cause = classifyError(lastError);
257
+ const message = lastError instanceof Error ? lastError.message : String(lastError);
258
+ throw new LLMNetworkError(message, cause);
259
+ }
260
+ }
261
+ exports.OpenAIProvider = OpenAIProvider;
262
+ //# sourceMappingURL=openai-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-provider.js","sourceRoot":"","sources":["../../src/llm/openai-provider.ts"],"names":[],"mappings":"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"}