@easynet/agent-tool 1.0.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 (157) hide show
  1. package/README.md +103 -0
  2. package/dist/chunk-3YLVPZRJ.cjs +32 -0
  3. package/dist/chunk-3YLVPZRJ.cjs.map +1 -0
  4. package/dist/chunk-AXUNV4MK.js +28 -0
  5. package/dist/chunk-AXUNV4MK.js.map +1 -0
  6. package/dist/chunk-BM4EVYI5.js +1069 -0
  7. package/dist/chunk-BM4EVYI5.js.map +1 -0
  8. package/dist/chunk-P3UEAZHK.cjs +171 -0
  9. package/dist/chunk-P3UEAZHK.cjs.map +1 -0
  10. package/dist/chunk-RPAMQCFH.js +167 -0
  11. package/dist/chunk-RPAMQCFH.js.map +1 -0
  12. package/dist/chunk-Z7TGIG77.cjs +1108 -0
  13. package/dist/chunk-Z7TGIG77.cjs.map +1 -0
  14. package/dist/cli.cjs +154 -0
  15. package/dist/cli.cjs.map +1 -0
  16. package/dist/cli.d.ts +10 -0
  17. package/dist/cli.d.ts.map +1 -0
  18. package/dist/cli.js +147 -0
  19. package/dist/cli.js.map +1 -0
  20. package/dist/codegen/build.d.ts +23 -0
  21. package/dist/codegen/build.d.ts.map +1 -0
  22. package/dist/codegen/generator.d.ts +15 -0
  23. package/dist/codegen/generator.d.ts.map +1 -0
  24. package/dist/codegen/index.d.ts +21 -0
  25. package/dist/codegen/index.d.ts.map +1 -0
  26. package/dist/codegen/init.d.ts +17 -0
  27. package/dist/codegen/init.d.ts.map +1 -0
  28. package/dist/codegen/run.d.ts +19 -0
  29. package/dist/codegen/run.d.ts.map +1 -0
  30. package/dist/codegen/scan/scanN8n.d.ts +17 -0
  31. package/dist/codegen/scan/scanN8n.d.ts.map +1 -0
  32. package/dist/codegen/scan/scanSkill.d.ts +17 -0
  33. package/dist/codegen/scan/scanSkill.d.ts.map +1 -0
  34. package/dist/codegen/scan/scanTools.d.ts +31 -0
  35. package/dist/codegen/scan/scanTools.d.ts.map +1 -0
  36. package/dist/codegen/scan/scanner.d.ts +26 -0
  37. package/dist/codegen/scan/scanner.d.ts.map +1 -0
  38. package/dist/codegen/scan/schemaFromTs.d.ts +16 -0
  39. package/dist/codegen/scan/schemaFromTs.d.ts.map +1 -0
  40. package/dist/codegen/types.d.ts +81 -0
  41. package/dist/codegen/types.d.ts.map +1 -0
  42. package/dist/core.cjs +20 -0
  43. package/dist/core.cjs.map +1 -0
  44. package/dist/core.d.ts +8 -0
  45. package/dist/core.d.ts.map +1 -0
  46. package/dist/core.js +3 -0
  47. package/dist/core.js.map +1 -0
  48. package/dist/discovery/MCPProcessManager.d.ts +57 -0
  49. package/dist/discovery/MCPProcessManager.d.ts.map +1 -0
  50. package/dist/discovery/errors.d.ts +13 -0
  51. package/dist/discovery/errors.d.ts.map +1 -0
  52. package/dist/discovery/load/LangChainLoader.d.ts +7 -0
  53. package/dist/discovery/load/LangChainLoader.d.ts.map +1 -0
  54. package/dist/discovery/load/MCPLoader.d.ts +8 -0
  55. package/dist/discovery/load/MCPLoader.d.ts.map +1 -0
  56. package/dist/discovery/load/N8nLoader.d.ts +25 -0
  57. package/dist/discovery/load/N8nLoader.d.ts.map +1 -0
  58. package/dist/discovery/load/SkillLoader.d.ts +20 -0
  59. package/dist/discovery/load/SkillLoader.d.ts.map +1 -0
  60. package/dist/discovery/load/SkillManifest.d.ts +79 -0
  61. package/dist/discovery/load/SkillManifest.d.ts.map +1 -0
  62. package/dist/discovery/load/SkillMdParser.d.ts +31 -0
  63. package/dist/discovery/load/SkillMdParser.d.ts.map +1 -0
  64. package/dist/discovery/load/index.d.ts +6 -0
  65. package/dist/discovery/load/index.d.ts.map +1 -0
  66. package/dist/discovery/load/resolveEntry.d.ts +7 -0
  67. package/dist/discovery/load/resolveEntry.d.ts.map +1 -0
  68. package/dist/discovery/scan/DirectoryScanner.d.ts +37 -0
  69. package/dist/discovery/scan/DirectoryScanner.d.ts.map +1 -0
  70. package/dist/discovery/scan/scanUtil.d.ts +16 -0
  71. package/dist/discovery/scan/scanUtil.d.ts.map +1 -0
  72. package/dist/discovery/types.d.ts +99 -0
  73. package/dist/discovery/types.d.ts.map +1 -0
  74. package/dist/index.cjs +3014 -0
  75. package/dist/index.cjs.map +1 -0
  76. package/dist/index.d.ts +68 -0
  77. package/dist/index.d.ts.map +1 -0
  78. package/dist/index.js +2778 -0
  79. package/dist/index.js.map +1 -0
  80. package/dist/llm/AgentLLMAdapter.d.ts +27 -0
  81. package/dist/llm/AgentLLMAdapter.d.ts.map +1 -0
  82. package/dist/llm/LangChainToolsHub.d.ts +31 -0
  83. package/dist/llm/LangChainToolsHub.d.ts.map +1 -0
  84. package/dist/llm/OpenAICompatibleClient.d.ts +64 -0
  85. package/dist/llm/OpenAICompatibleClient.d.ts.map +1 -0
  86. package/dist/llm/ReActAgent.d.ts +35 -0
  87. package/dist/llm/ReActAgent.d.ts.map +1 -0
  88. package/dist/llm-export.cjs +20 -0
  89. package/dist/llm-export.cjs.map +1 -0
  90. package/dist/llm-export.d.ts +9 -0
  91. package/dist/llm-export.d.ts.map +1 -0
  92. package/dist/llm-export.js +3 -0
  93. package/dist/llm-export.js.map +1 -0
  94. package/dist/mcp/MCPClientAdapter.d.ts +34 -0
  95. package/dist/mcp/MCPClientAdapter.d.ts.map +1 -0
  96. package/dist/mcp/connectMCP.d.ts +47 -0
  97. package/dist/mcp/connectMCP.d.ts.map +1 -0
  98. package/dist/mcp/index.d.ts +10 -0
  99. package/dist/mcp/index.d.ts.map +1 -0
  100. package/dist/mcp/registerMCPTools.d.ts +24 -0
  101. package/dist/mcp/registerMCPTools.d.ts.map +1 -0
  102. package/dist/observability/EventLog.d.ts +60 -0
  103. package/dist/observability/EventLog.d.ts.map +1 -0
  104. package/dist/observability/Logger.d.ts +33 -0
  105. package/dist/observability/Logger.d.ts.map +1 -0
  106. package/dist/observability/Metrics.d.ts +70 -0
  107. package/dist/observability/Metrics.d.ts.map +1 -0
  108. package/dist/observability/Tracing.d.ts +69 -0
  109. package/dist/observability/Tracing.d.ts.map +1 -0
  110. package/dist/registry/ToolRegistry.d.ts +68 -0
  111. package/dist/registry/ToolRegistry.d.ts.map +1 -0
  112. package/dist/report/AgentReportGenerator.d.ts +53 -0
  113. package/dist/report/AgentReportGenerator.d.ts.map +1 -0
  114. package/dist/report/agent-report-template.html +362 -0
  115. package/dist/report/index.d.ts +3 -0
  116. package/dist/report/index.d.ts.map +1 -0
  117. package/dist/report/types.d.ts +101 -0
  118. package/dist/report/types.d.ts.map +1 -0
  119. package/dist/runAgent.d.ts +37 -0
  120. package/dist/runAgent.d.ts.map +1 -0
  121. package/dist/runtime/Budget.d.ts +63 -0
  122. package/dist/runtime/Budget.d.ts.map +1 -0
  123. package/dist/runtime/Evidence.d.ts +19 -0
  124. package/dist/runtime/Evidence.d.ts.map +1 -0
  125. package/dist/runtime/PTCRuntime.d.ts +115 -0
  126. package/dist/runtime/PTCRuntime.d.ts.map +1 -0
  127. package/dist/runtime/PTCRuntimeObservability.d.ts +26 -0
  128. package/dist/runtime/PTCRuntimeObservability.d.ts.map +1 -0
  129. package/dist/runtime/PTCRuntimePipeline.d.ts +62 -0
  130. package/dist/runtime/PTCRuntimePipeline.d.ts.map +1 -0
  131. package/dist/runtime/PolicyEngine.d.ts +67 -0
  132. package/dist/runtime/PolicyEngine.d.ts.map +1 -0
  133. package/dist/runtime/Retry.d.ts +33 -0
  134. package/dist/runtime/Retry.d.ts.map +1 -0
  135. package/dist/runtime/SchemaValidator.d.ts +42 -0
  136. package/dist/runtime/SchemaValidator.d.ts.map +1 -0
  137. package/dist/templates/mcp-server.js +48 -0
  138. package/dist/templates/n8n-invoker.js +11 -0
  139. package/dist/templates/skill-invoker.js +11 -0
  140. package/dist/templates/tool-index.js +9 -0
  141. package/dist/toolDescriptor.d.ts +38 -0
  142. package/dist/toolDescriptor.d.ts.map +1 -0
  143. package/dist/types/Events.d.ts +99 -0
  144. package/dist/types/Events.d.ts.map +1 -0
  145. package/dist/types/ToolIntent.d.ts +40 -0
  146. package/dist/types/ToolIntent.d.ts.map +1 -0
  147. package/dist/types/ToolResult.d.ts +30 -0
  148. package/dist/types/ToolResult.d.ts.map +1 -0
  149. package/dist/types/ToolSpec.d.ts +99 -0
  150. package/dist/types/ToolSpec.d.ts.map +1 -0
  151. package/dist/types/index.d.ts +6 -0
  152. package/dist/types/index.d.ts.map +1 -0
  153. package/extensions/examples/README.md +40 -0
  154. package/extensions/examples/scripts/agent-tool-react-stock.mjs +30 -0
  155. package/extensions/examples/tools/instruction-only/skill/SKILL.md +26 -0
  156. package/extensions/examples/tools/web-search/mcp/mcp.json +8 -0
  157. package/package.json +122 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolRegistry.d.ts","sourceRoot":"","sources":["../../src/registry/ToolRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAE3E;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,sCAAsC;IACtC,YAAY,CAAC,EAAE,UAAU,EAAE,CAAC;IAC5B,qBAAqB;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA+B;IACrD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkC;IAC3D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoC;IAE9D;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAM9B;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI;IAMrC;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAQjC;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIvC;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,eAAe,GAAG,QAAQ,EAAE;IA0C1C;;OAEG;IACH,IAAI,IAAI,MAAM,EAAE;IAIhB;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,QAAQ,IAAI,QAAQ,EAAE;IAItB;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,SAAS;IAsBjB,OAAO,CAAC,WAAW;CAQpB"}
@@ -0,0 +1,53 @@
1
+ import type { AgentReportData, AgentReportStep, CollectStreamStepsOptions, CollectStreamStepsResult, RunAgentWithReportOptions, RunAgentWithReportResult, StreamableAgent, WriteReportFromStreamOptions } from "./types.js";
2
+ /** Path to the default HTML template (dist/report/ when built, src/report/ in dev). */
3
+ export declare const DEFAULT_REPORT_TEMPLATE_PATH: string;
4
+ /**
5
+ * Generate an HTML report from template and data.
6
+ * Uses the built-in HTML template file when templatePath is not provided.
7
+ *
8
+ * @param data - Report data (prompts, markdown, steps)
9
+ * @param options.outputPath - Path to write the HTML file (required)
10
+ * @param options.templatePath - Path to a custom HTML template (optional; uses built-in file if not set)
11
+ * @returns Path to the written file
12
+ */
13
+ export declare function generateAgentReport(data: AgentReportData, options: {
14
+ outputPath: string;
15
+ templatePath?: string;
16
+ }): string;
17
+ /**
18
+ * Serialize a stream chunk value for the report (messages and metadata to plain JSON).
19
+ */
20
+ export declare function serializeStepOutput(value: unknown): unknown;
21
+ /**
22
+ * Format a step for console progress (e.g. "[1] agent | tools → foo | tokens: in=10 out=5").
23
+ */
24
+ export declare function formatStepProgress(step: AgentReportStep): string;
25
+ /**
26
+ * Consume an agent stream and collect steps. Optionally call onStep for each step (e.g. progress logging).
27
+ * Also captures the last AI message content for use as report body when no reportPath is provided.
28
+ *
29
+ * @param stream - AsyncIterable from agent.stream()
30
+ * @param options.onStep - Called for each step
31
+ * @returns Collected steps and last AI content
32
+ */
33
+ export declare function collectStreamSteps(stream: AsyncIterable<Record<string, unknown>>, options?: CollectStreamStepsOptions): Promise<CollectStreamStepsResult>;
34
+ /**
35
+ * Run an agent stream, collect steps, optionally read report file and write HTML report.
36
+ * Use this to support progress callbacks and HTML report generation at the framework level.
37
+ *
38
+ * @param agent - Agent with .stream(input, config) (e.g. LangChain createAgent())
39
+ * @param input - Input to agent.stream()
40
+ * @param options - systemPrompt, userPrompt, reportPath, htmlReportPath, templatePath, streamConfig, onStep
41
+ * @returns { steps, reportMarkdown, htmlPath? }
42
+ */
43
+ export declare function runAgentWithReport(agent: StreamableAgent, input: unknown, options: RunAgentWithReportOptions): Promise<RunAgentWithReportResult>;
44
+ /**
45
+ * Consume an agent stream and optionally write the HTML report.
46
+ * Use this with regular LangChain usage: get the stream from agent.stream(), then pass it here.
47
+ *
48
+ * @param stream - Stream from agent.stream(input, config)
49
+ * @param options - systemPrompt, userPrompt, reportPath?, htmlReportPath?, templatePath?, onStep?
50
+ * @returns { steps, reportMarkdown, htmlPath? }
51
+ */
52
+ export declare function writeReportFromStream(stream: AsyncIterable<Record<string, unknown>>, options: WriteReportFromStreamOptions): Promise<RunAgentWithReportResult>;
53
+ //# sourceMappingURL=AgentReportGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentReportGenerator.d.ts","sourceRoot":"","sources":["../../src/report/AgentReportGenerator.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EACzB,wBAAwB,EACxB,eAAe,EACf,4BAA4B,EAC7B,MAAM,YAAY,CAAC;AASpB,uFAAuF;AACvF,eAAO,MAAM,4BAA4B,QAKrC,CAAC;AAEL;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GACrD,MAAM,CASR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAsB3D;AAeD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAiBhE;AA0DD;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAC9C,OAAO,CAAC,EAAE,yBAAyB,GAClC,OAAO,CAAC,wBAAwB,CAAC,CA0CnC;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,wBAAwB,CAAC,CA6BnC;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAC9C,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,wBAAwB,CAAC,CA4BnC"}
@@ -0,0 +1,362 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>Agent Run Report</title>
7
+ <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
8
+ <link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.1/font/bootstrap-icons.css" rel="stylesheet">
9
+ <style>
10
+ :root {
11
+ --report-bg: #f0f4f8;
12
+ --report-surface: #ffffff;
13
+ --report-border: #e2e6ea;
14
+ --report-border-light: #eef0f2;
15
+ --report-text: #2c3e50;
16
+ --report-text-muted: #5c6b7a;
17
+ --report-accent: #2563eb;
18
+ --report-accent-hover: #1d4ed8;
19
+ --report-accent-bg: #eff6ff;
20
+ --report-secondary: #059669;
21
+ --report-secondary-bg: #ecfdf5;
22
+ --report-code-bg: #f1f5f9;
23
+ --report-prompt-bg: #f8fafc;
24
+ --report-heading: #1e40af;
25
+ --report-heading-alt: #047857;
26
+ --report-tint: #e0e7ff;
27
+ --report-table-head: #dbeafe;
28
+ --report-table-head-text: #1e3a8a;
29
+ }
30
+ body {
31
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
32
+ background: var(--report-bg);
33
+ color: var(--report-text);
34
+ font-size: 15px;
35
+ line-height: 1.55;
36
+ }
37
+ .report-header {
38
+ background: linear-gradient(135deg, #ffffff 0%, #f0f9ff 100%);
39
+ border-bottom: 3px solid var(--report-accent);
40
+ box-shadow: 0 1px 3px rgba(37, 99, 235, 0.08);
41
+ }
42
+ .report-title {
43
+ font-weight: 600;
44
+ color: var(--report-accent);
45
+ font-size: 1.1rem;
46
+ letter-spacing: -0.01em;
47
+ }
48
+ .report-header .form-label {
49
+ color: var(--report-secondary);
50
+ font-weight: 600;
51
+ letter-spacing: 0.02em;
52
+ }
53
+ .prompt-block {
54
+ background: var(--report-prompt-bg);
55
+ border: 1px solid var(--report-tint);
56
+ border-left: 4px solid var(--report-accent);
57
+ border-radius: 6px;
58
+ font-size: 0.9rem;
59
+ word-break: break-word;
60
+ color: var(--report-text);
61
+ }
62
+ .prompt-block.markdown-body { white-space: normal; padding: 1rem 1.25rem; }
63
+ .nav-tabs {
64
+ border-bottom: 2px solid var(--report-border);
65
+ }
66
+ .nav-tabs .nav-link {
67
+ color: var(--report-text-muted);
68
+ font-weight: 500;
69
+ border: none;
70
+ padding: 0.5rem 1rem 0.6rem;
71
+ margin-bottom: -2px;
72
+ }
73
+ .nav-tabs .nav-link:hover { color: var(--report-accent); }
74
+ .nav-tabs .nav-link.active {
75
+ color: var(--report-accent);
76
+ border-bottom: 2px solid var(--report-accent);
77
+ background: var(--report-accent-bg);
78
+ }
79
+ .card {
80
+ background: var(--report-surface);
81
+ border: 1px solid var(--report-border-light);
82
+ border-radius: 8px;
83
+ box-shadow: 0 1px 3px rgba(0,0,0,0.06);
84
+ }
85
+ .card-header {
86
+ background: var(--report-surface);
87
+ border-bottom: 1px solid var(--report-tint);
88
+ color: var(--report-heading);
89
+ font-weight: 600;
90
+ }
91
+ .step-tree { list-style: none; padding-left: 0; }
92
+ .step-tree .step-item {
93
+ padding: 0.5rem 0.75rem;
94
+ border-radius: 4px;
95
+ cursor: pointer;
96
+ border-left: 3px solid transparent;
97
+ color: var(--report-text);
98
+ }
99
+ .step-tree .step-item:hover { background: var(--report-accent-bg); }
100
+ .step-tree .step-item.active {
101
+ background: var(--report-accent-bg);
102
+ border-left-color: var(--report-accent);
103
+ }
104
+ .step-tree .step-item .step-node { font-weight: 500; }
105
+ .step-tree .step-item .step-meta { font-size: 0.8rem; color: var(--report-text-muted); }
106
+ .detail-panel {
107
+ background: var(--report-surface);
108
+ border-radius: 6px;
109
+ border: 1px solid var(--report-border-light);
110
+ min-height: 200px;
111
+ }
112
+ .detail-section { margin-bottom: 1rem; }
113
+ .detail-section h6 {
114
+ color: var(--report-secondary);
115
+ font-weight: 600;
116
+ margin-bottom: 0.5rem;
117
+ font-size: 0.8rem;
118
+ text-transform: uppercase;
119
+ letter-spacing: 0.03em;
120
+ }
121
+ .detail-pre {
122
+ background: var(--report-code-bg);
123
+ border: 1px solid var(--report-tint);
124
+ padding: 1rem 1.25rem;
125
+ border-radius: 4px;
126
+ font-size: 0.8rem;
127
+ overflow-x: auto;
128
+ max-height: 400px;
129
+ overflow-y: auto;
130
+ color: var(--report-text);
131
+ }
132
+ .markdown-body {
133
+ padding: 1.5rem 1.75rem;
134
+ color: var(--report-text);
135
+ font-size: 1rem;
136
+ line-height: 1.6;
137
+ }
138
+ .markdown-body h1 {
139
+ font-size: 1.375rem;
140
+ font-weight: 600;
141
+ color: var(--report-heading);
142
+ margin: 0 0 0.25rem 0;
143
+ line-height: 1.3;
144
+ }
145
+ .markdown-body h1 + p {
146
+ font-size: 0.9375rem;
147
+ color: var(--report-text-muted);
148
+ margin-top: 0;
149
+ margin-bottom: 1.25rem;
150
+ }
151
+ .markdown-body h2 {
152
+ font-size: 1.125rem;
153
+ font-weight: 600;
154
+ color: var(--report-heading);
155
+ margin: 1.5rem 0 0.5rem 0;
156
+ padding-bottom: 0.25rem;
157
+ border-bottom: 2px solid var(--report-tint);
158
+ }
159
+ .markdown-body h3 {
160
+ font-size: 1.0625rem;
161
+ font-weight: 600;
162
+ color: var(--report-heading-alt);
163
+ margin: 1.25rem 0 0.4rem 0;
164
+ }
165
+ .markdown-body h4 { font-size: 1rem; font-weight: 600; margin: 1rem 0 0.35rem 0; color: var(--report-heading-alt); }
166
+ .markdown-body p {
167
+ margin: 0 0 0.75rem 0;
168
+ font-size: 1rem;
169
+ }
170
+ .markdown-body ul, .markdown-body ol { margin: 0 0 0.75rem 0; padding-left: 1.5rem; }
171
+ .markdown-body li { margin-bottom: 0.25rem; }
172
+ .markdown-body table {
173
+ font-size: 0.9375rem;
174
+ margin: 0.75rem 0;
175
+ border-collapse: collapse;
176
+ width: 100%;
177
+ }
178
+ .markdown-body th, .markdown-body td {
179
+ padding: 0.5rem 0.75rem;
180
+ border: 1px solid var(--report-tint);
181
+ text-align: left;
182
+ }
183
+ .markdown-body th {
184
+ font-weight: 600;
185
+ background: var(--report-table-head);
186
+ color: var(--report-table-head-text);
187
+ border-color: var(--report-accent);
188
+ }
189
+ .markdown-body tbody tr:nth-child(even) { background: var(--report-secondary-bg); }
190
+ .markdown-body pre, .markdown-body code {
191
+ background: var(--report-code-bg);
192
+ border: 1px solid var(--report-tint);
193
+ border-radius: 4px;
194
+ color: var(--report-text);
195
+ font-size: 0.875rem;
196
+ }
197
+ .markdown-body pre { padding: 1rem 1.25rem; overflow-x: auto; }
198
+ .empty-state { color: var(--report-text-muted); text-align: center; padding: 2rem; }
199
+ </style>
200
+ </head>
201
+ <body>
202
+ <div class="report-header py-3 px-4">
203
+ <h5 class="report-title mb-3">Agent Run Report</h5>
204
+ <div class="row g-3">
205
+ <div class="col-12">
206
+ <label class="form-label small text-muted text-uppercase">System Prompt</label>
207
+ <div class="prompt-block markdown-body" id="system-prompt"></div>
208
+ </div>
209
+ <div class="col-12">
210
+ <label class="form-label small text-muted text-uppercase">User Prompt</label>
211
+ <div class="prompt-block markdown-body" id="user-prompt"></div>
212
+ </div>
213
+ </div>
214
+ </div>
215
+
216
+ <div class="container-fluid py-3">
217
+ <ul class="nav nav-tabs mb-3" role="tablist">
218
+ <li class="nav-item">
219
+ <a class="nav-link active" data-bs-toggle="tab" href="#tab-report">Report</a>
220
+ </li>
221
+ <li class="nav-item">
222
+ <a class="nav-link" data-bs-toggle="tab" href="#tab-debug">Debug</a>
223
+ </li>
224
+ </ul>
225
+
226
+ <div class="tab-content">
227
+ <div class="tab-pane fade show active" id="tab-report">
228
+ <div class="card border-0 shadow-sm">
229
+ <div class="card-body markdown-body" id="report-markdown"></div>
230
+ </div>
231
+ </div>
232
+ <div class="tab-pane fade" id="tab-debug">
233
+ <div class="row g-3">
234
+ <div class="col-md-4">
235
+ <div class="card border-0 shadow-sm h-100">
236
+ <div class="card-header bg-white border-bottom py-2">
237
+ <span class="fw-semibold">Steps</span>
238
+ </div>
239
+ <div class="card-body p-0 overflow-auto" style="max-height: 70vh;">
240
+ <ul class="step-tree list-unstyled mb-0 p-2" id="step-tree"></ul>
241
+ </div>
242
+ </div>
243
+ </div>
244
+ <div class="col-md-8">
245
+ <div class="card border-0 shadow-sm h-100">
246
+ <div class="card-header bg-white border-bottom py-2">
247
+ <span class="fw-semibold">Step Detail</span>
248
+ <span class="text-muted small ms-2" id="step-detail-title"></span>
249
+ </div>
250
+ <div class="card-body detail-panel">
251
+ <div id="step-detail-empty" class="empty-state">Select a step</div>
252
+ <div id="step-detail-content" class="d-none">
253
+ <div class="detail-section">
254
+ <h6>Input</h6>
255
+ <pre class="detail-pre mb-0" id="step-input"></pre>
256
+ </div>
257
+ <div class="detail-section">
258
+ <h6>Output</h6>
259
+ <pre class="detail-pre mb-0" id="step-output"></pre>
260
+ </div>
261
+ </div>
262
+ </div>
263
+ </div>
264
+ </div>
265
+ </div>
266
+ </div>
267
+ </div>
268
+ </div>
269
+
270
+ <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
271
+ <script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
272
+ <script type="application/json" id="agent-report-data">__REPORT_DATA__</script>
273
+ <script>
274
+ (function() {
275
+ const el = document.getElementById('agent-report-data');
276
+ const raw = el && el.textContent ? el.textContent.trim() : '{}';
277
+ let data = {};
278
+ try {
279
+ data = raw === '' ? {} : JSON.parse(raw);
280
+ } catch (e) {
281
+ console.error('Invalid report data', e);
282
+ }
283
+
284
+ const systemPrompt = data.systemPrompt || '';
285
+ const userPrompt = data.userPrompt || '';
286
+ const reportMarkdown = data.reportMarkdown || '';
287
+ const steps = Array.isArray(data.steps) ? data.steps : [];
288
+
289
+ const markdownOpts = { gfm: true, breaks: true };
290
+ function renderMarkdown(elId, text, fallback) {
291
+ const el = document.getElementById(elId);
292
+ if (!el) return;
293
+ const content = (text || '').trim();
294
+ if (!content) {
295
+ el.innerHTML = fallback ? '<p class="text-muted">' + fallback + '</p>' : '';
296
+ return;
297
+ }
298
+ if (typeof marked !== 'undefined') {
299
+ el.innerHTML = marked.parse(content, markdownOpts);
300
+ } else {
301
+ el.textContent = content;
302
+ }
303
+ }
304
+ renderMarkdown('system-prompt', systemPrompt, '(none)');
305
+ renderMarkdown('user-prompt', userPrompt, '(none)');
306
+
307
+ if (reportMarkdown) {
308
+ if (typeof marked !== 'undefined') {
309
+ document.getElementById('report-markdown').innerHTML = marked.parse(reportMarkdown, markdownOpts);
310
+ } else {
311
+ document.getElementById('report-markdown').textContent = reportMarkdown;
312
+ }
313
+ } else {
314
+ document.getElementById('report-markdown').innerHTML = '<p class="text-muted">No report content.</p>';
315
+ }
316
+
317
+ const treeEl = document.getElementById('step-tree');
318
+ const detailTitle = document.getElementById('step-detail-title');
319
+ const detailEmpty = document.getElementById('step-detail-empty');
320
+ const detailContent = document.getElementById('step-detail-content');
321
+ const inputPre = document.getElementById('step-input');
322
+ const outputPre = document.getElementById('step-output');
323
+
324
+ steps.forEach(function(s, i) {
325
+ const li = document.createElement('li');
326
+ li.className = 'step-item';
327
+ li.dataset.index = String(i);
328
+ const node = s.node || '?';
329
+ const meta = [];
330
+ if (s.toolCalls && s.toolCalls.length) meta.push(s.toolCalls.map(function(t) { return t.name; }).join(', '));
331
+ if (s.usage) meta.push('tokens: ' + (s.usage.total_tokens || (s.usage.input_tokens + s.usage.output_tokens) || '-'));
332
+ li.innerHTML = '<span class="step-node">[' + (i + 1) + '] ' + escapeHtml(node) + '</span>' +
333
+ (meta.length ? '<div class="step-meta mt-1">' + escapeHtml(meta.join(' | ')) + '</div>' : '');
334
+ li.addEventListener('click', function() {
335
+ document.querySelectorAll('.step-tree .step-item.active').forEach(function(x) { x.classList.remove('active'); });
336
+ li.classList.add('active');
337
+ detailEmpty.classList.add('d-none');
338
+ detailContent.classList.remove('d-none');
339
+ detailTitle.textContent = 'Step ' + (i + 1) + ' — ' + node;
340
+ inputPre.textContent = formatJson(s.input);
341
+ outputPre.textContent = formatJson(s.output);
342
+ });
343
+ treeEl.appendChild(li);
344
+ });
345
+
346
+ function escapeHtml(str) {
347
+ const div = document.createElement('div');
348
+ div.textContent = str;
349
+ return div.innerHTML;
350
+ }
351
+ function formatJson(obj) {
352
+ if (obj === undefined || obj === null) return '(none)';
353
+ try {
354
+ return JSON.stringify(obj, null, 2);
355
+ } catch (e) {
356
+ return String(obj);
357
+ }
358
+ }
359
+ })();
360
+ </script>
361
+ </body>
362
+ </html>
@@ -0,0 +1,3 @@
1
+ export { generateAgentReport, serializeStepOutput, formatStepProgress, collectStreamSteps, runAgentWithReport, writeReportFromStream, } from "./AgentReportGenerator.js";
2
+ export type { AgentReportData, AgentReportStep, StreamableAgent, CollectStreamStepsOptions, CollectStreamStepsResult, RunAgentWithReportOptions, RunAgentWithReportResult, WriteReportFromStreamOptions, } from "./types.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/report/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,eAAe,EACf,eAAe,EACf,eAAe,EACf,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EACzB,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,YAAY,CAAC"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Step data for the agent run report (serializable).
3
+ */
4
+ export interface AgentReportStep {
5
+ stepIndex: number;
6
+ node: string;
7
+ input?: unknown;
8
+ output?: unknown;
9
+ toolCalls?: Array<{
10
+ name: string;
11
+ args?: Record<string, unknown>;
12
+ }>;
13
+ usage?: {
14
+ input_tokens?: number;
15
+ output_tokens?: number;
16
+ total_tokens?: number;
17
+ prompt_tokens?: number;
18
+ completion_tokens?: number;
19
+ };
20
+ }
21
+ /**
22
+ * Data passed to the HTML report template.
23
+ */
24
+ export interface AgentReportData {
25
+ systemPrompt: string;
26
+ userPrompt: string;
27
+ reportMarkdown: string;
28
+ steps: AgentReportStep[];
29
+ }
30
+ /**
31
+ * Agent-like interface: has stream(input, config) returning AsyncIterable.
32
+ */
33
+ export interface StreamableAgent {
34
+ stream(input: unknown, config?: {
35
+ recursionLimit?: number;
36
+ [key: string]: unknown;
37
+ }): Promise<AsyncIterable<Record<string, unknown>>>;
38
+ }
39
+ /**
40
+ * Options for collecting steps from an agent stream.
41
+ */
42
+ export interface CollectStreamStepsOptions {
43
+ /** Called for each step (e.g. to log progress). */
44
+ onStep?: (step: AgentReportStep) => void;
45
+ }
46
+ /**
47
+ * Result of collectStreamSteps (steps plus last AI message content for report tab).
48
+ */
49
+ export interface CollectStreamStepsResult {
50
+ steps: AgentReportStep[];
51
+ /** Last AI message content from the stream (for Report tab when no reportPath). */
52
+ lastAiContent: string;
53
+ }
54
+ /**
55
+ * Options for runAgentWithReport.
56
+ */
57
+ export interface RunAgentWithReportOptions {
58
+ /** System prompt (for report header and HTML). */
59
+ systemPrompt: string;
60
+ /** User prompt (for report header and HTML). */
61
+ userPrompt: string;
62
+ /** Path to markdown report file to read after run (optional). */
63
+ reportPath?: string;
64
+ /** Path to write the HTML report (required if writing report). */
65
+ htmlReportPath?: string;
66
+ /** Path to HTML template (optional). */
67
+ templatePath?: string;
68
+ /** Passed to agent.stream(input, streamConfig). */
69
+ streamConfig?: {
70
+ recursionLimit?: number;
71
+ [key: string]: unknown;
72
+ };
73
+ /** Called for each step during stream (e.g. console progress). */
74
+ onStep?: (step: AgentReportStep) => void;
75
+ }
76
+ /**
77
+ * Result of runAgentWithReport and writeReportFromStream.
78
+ */
79
+ export interface RunAgentWithReportResult {
80
+ steps: AgentReportStep[];
81
+ reportMarkdown: string;
82
+ htmlPath?: string;
83
+ }
84
+ /**
85
+ * Options for writeReportFromStream (pass stream from agent.stream() to generate report).
86
+ */
87
+ export interface WriteReportFromStreamOptions {
88
+ /** System prompt (for report header and HTML). */
89
+ systemPrompt: string;
90
+ /** User prompt (for report header and HTML). */
91
+ userPrompt: string;
92
+ /** Path to markdown report file to read after stream ends (optional). */
93
+ reportPath?: string;
94
+ /** Path to write the HTML report (optional). */
95
+ htmlReportPath?: string;
96
+ /** Path to custom HTML template (optional; uses built-in if not set). */
97
+ templatePath?: string;
98
+ /** Called for each step while consuming the stream (e.g. console progress). */
99
+ onStep?: (step: AgentReportStep) => void;
100
+ }
101
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/report/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC;IACpE,KAAK,CAAC,EAAE;QACN,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,eAAe,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,CACJ,KAAK,EAAE,OAAO,EACd,MAAM,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAC3D,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;CACpD;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,mDAAmD;IACnD,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,mFAAmF;IACnF,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,kDAAkD;IAClD,YAAY,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kEAAkE;IAClE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,YAAY,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IACnE,kEAAkE;IAClE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,kDAAkD;IAClD,YAAY,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;CAC1C"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Run ReAct agent using agent.yaml: llm section from agent-llm, tools from builtin + example.
3
+ * Use: runAgent(agentYamlPath, task, options).
4
+ */
5
+ import type { ReActAgentRunOptions, ReActAgentRunResult } from "./llm/ReActAgent.js";
6
+ export interface AgentRunConfig {
7
+ /** Path to agent.yaml (default: cwd/agent.yaml) */
8
+ configPath?: string;
9
+ /** User task (instruction) */
10
+ task: string;
11
+ /** System prompt (optional) */
12
+ systemPrompt?: string;
13
+ /** ReAct run options (maxSteps, timeoutMs) */
14
+ runOptions?: ReActAgentRunOptions;
15
+ /** Sandbox root for core tools (default: cwd) */
16
+ sandboxRoot?: string;
17
+ /** Allowed hosts for HTTP/SSRF (default: ["*"]) */
18
+ allowedHosts?: string[];
19
+ }
20
+ export interface AgentRunResult extends ReActAgentRunResult {
21
+ }
22
+ /** Minimal agent.yaml shape: llm section (agent-llm format), optional tools list. */
23
+ export interface AgentYamlShape {
24
+ llm?: unknown;
25
+ tools?: string[] | Record<string, unknown>;
26
+ mode?: string;
27
+ }
28
+ /**
29
+ * Load agent.yaml and return parsed llm section and optional tools.
30
+ */
31
+ export declare function loadAgentConfig(configPath: string): AgentYamlShape;
32
+ /**
33
+ * Run the ReAct agent: load agent.yaml llm section → create LLM from agent-llm →
34
+ * wrap with adapter → run ReActAgent with builtin + example tools.
35
+ */
36
+ export declare function runAgent(configPath: string, task: string, options?: Omit<AgentRunConfig, "configPath" | "task">): Promise<AgentRunResult>;
37
+ //# sourceMappingURL=runAgent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runAgent.d.ts","sourceRoot":"","sources":["../src/runAgent.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,OAAO,KAAK,EAAqB,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAexG,MAAM,WAAW,cAAc;IAC7B,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,cAAe,SAAQ,mBAAmB;CAAG;AAE9D,qFAAqF;AACrF,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAKD;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,CAMlE;AA0BD;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,YAAY,GAAG,MAAM,CAAC,GACpD,OAAO,CAAC,cAAc,CAAC,CA6DzB"}
@@ -0,0 +1,63 @@
1
+ import { type CircuitBreakerPolicy, type BulkheadPolicy } from "cockatiel";
2
+ /**
3
+ * Budget configuration for a tool or global scope.
4
+ */
5
+ export interface BudgetOptions {
6
+ /** Default timeout in ms for tool invocations */
7
+ defaultTimeoutMs?: number;
8
+ /** Max concurrent invocations per tool */
9
+ maxConcurrency?: number;
10
+ /** Rate limit: max calls per window */
11
+ rateLimit?: {
12
+ maxCalls: number;
13
+ windowMs: number;
14
+ };
15
+ /** Circuit breaker config */
16
+ circuitBreaker?: {
17
+ /** Number of consecutive failures before opening */
18
+ threshold: number;
19
+ /** Half-open reset time in ms */
20
+ halfOpenAfterMs: number;
21
+ };
22
+ }
23
+ /**
24
+ * Budget manager that provides timeout, rate limiting, concurrency control,
25
+ * and circuit breaker per tool.
26
+ */
27
+ export declare class BudgetManager {
28
+ private readonly defaultTimeoutMs;
29
+ private readonly bulkheads;
30
+ private readonly circuitBreakers;
31
+ private readonly rateLimiters;
32
+ private readonly options;
33
+ constructor(options?: BudgetOptions);
34
+ /**
35
+ * Get effective timeout for a tool invocation.
36
+ */
37
+ getTimeout(_toolName: string, contextTimeoutMs?: number): number;
38
+ /**
39
+ * Check rate limit for a tool. Returns true if allowed.
40
+ */
41
+ checkRateLimit(toolName: string): boolean;
42
+ /**
43
+ * Get or create a bulkhead (concurrency limiter) for a tool.
44
+ */
45
+ getBulkhead(toolName: string): BulkheadPolicy | undefined;
46
+ /**
47
+ * Get or create a circuit breaker for a tool.
48
+ */
49
+ getCircuitBreaker(toolName: string): CircuitBreakerPolicy | undefined;
50
+ /**
51
+ * Execute a function within budget constraints (bulkhead + circuit breaker).
52
+ */
53
+ execute<T>(toolName: string, fn: () => Promise<T>): Promise<T>;
54
+ /**
55
+ * Reset all policies for a tool (useful for testing).
56
+ */
57
+ reset(toolName: string): void;
58
+ /**
59
+ * Reset all policies globally.
60
+ */
61
+ resetAll(): void;
62
+ }
63
+ //# sourceMappingURL=Budget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Budget.d.ts","sourceRoot":"","sources":["../../src/runtime/Budget.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACpB,MAAM,WAAW,CAAC;AAEnB;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,iDAAiD;IACjD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,0CAA0C;IAC1C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uCAAuC;IACvC,SAAS,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,6BAA6B;IAC7B,cAAc,CAAC,EAAE;QACf,oDAAoD;QACpD,SAAS,EAAE,MAAM,CAAC;QAClB,iCAAiC;QACjC,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAiCD;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqC;IAC/D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA2C;IAC3E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkC;IAC/D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;gBAE5B,OAAO,GAAE,aAAkB;IAKvC;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM;IAIhE;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAazC;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAUzD;;OAEG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;IAarE;;OAEG;IACG,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAmBpE;;OAEG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAM7B;;OAEG;IACH,QAAQ,IAAI,IAAI;CAKjB"}
@@ -0,0 +1,19 @@
1
+ import type { ToolSpec } from "../types/ToolSpec.js";
2
+ import type { ExecContext } from "../types/ToolIntent.js";
3
+ import type { Evidence } from "../types/ToolResult.js";
4
+ /**
5
+ * Options for building evidence from a tool invocation.
6
+ */
7
+ export interface BuildEvidenceOptions {
8
+ spec: ToolSpec;
9
+ args: unknown;
10
+ result: unknown;
11
+ raw?: unknown;
12
+ ctx: ExecContext;
13
+ durationMs?: number;
14
+ }
15
+ /**
16
+ * Build evidence records from a tool invocation result.
17
+ */
18
+ export declare function buildEvidence(options: BuildEvidenceOptions): Evidence[];
19
+ //# sourceMappingURL=Evidence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Evidence.d.ts","sourceRoot":"","sources":["../../src/runtime/Evidence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,WAAW,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,QAAQ,EAAE,CAgDvE"}