@agntk/core 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.
- package/README.md +227 -0
- package/dist/advanced/index.d.ts +35 -0
- package/dist/advanced/index.d.ts.map +1 -0
- package/dist/advanced/index.js +52 -0
- package/dist/advanced/index.js.map +1 -0
- package/dist/agent.d.ts +46 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +381 -0
- package/dist/agent.js.map +1 -0
- package/dist/config/defaults.d.ts +10 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +34 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/index.d.ts +7 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +11 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +54 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +222 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/schema.d.ts +912 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +119 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/constants.d.ts +17 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +23 -0
- package/dist/constants.js.map +1 -0
- package/dist/evals/assertions.d.ts +54 -0
- package/dist/evals/assertions.d.ts.map +1 -0
- package/dist/evals/assertions.js +200 -0
- package/dist/evals/assertions.js.map +1 -0
- package/dist/evals/index.d.ts +9 -0
- package/dist/evals/index.d.ts.map +1 -0
- package/dist/evals/index.js +8 -0
- package/dist/evals/index.js.map +1 -0
- package/dist/evals/runner.d.ts +34 -0
- package/dist/evals/runner.d.ts.map +1 -0
- package/dist/evals/runner.js +186 -0
- package/dist/evals/runner.js.map +1 -0
- package/dist/evals/types.d.ts +68 -0
- package/dist/evals/types.d.ts.map +1 -0
- package/dist/evals/types.js +5 -0
- package/dist/evals/types.js.map +1 -0
- package/dist/guardrails/built-ins.d.ts +48 -0
- package/dist/guardrails/built-ins.d.ts.map +1 -0
- package/dist/guardrails/built-ins.js +149 -0
- package/dist/guardrails/built-ins.js.map +1 -0
- package/dist/guardrails/index.d.ts +8 -0
- package/dist/guardrails/index.d.ts.map +1 -0
- package/dist/guardrails/index.js +7 -0
- package/dist/guardrails/index.js.map +1 -0
- package/dist/guardrails/runner.d.ts +49 -0
- package/dist/guardrails/runner.d.ts.map +1 -0
- package/dist/guardrails/runner.js +148 -0
- package/dist/guardrails/runner.js.map +1 -0
- package/dist/guardrails/types.d.ts +63 -0
- package/dist/guardrails/types.d.ts.map +1 -0
- package/dist/guardrails/types.js +22 -0
- package/dist/guardrails/types.js.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -0
- package/dist/memory/engine.d.ts +130 -0
- package/dist/memory/engine.d.ts.map +1 -0
- package/dist/memory/engine.js +227 -0
- package/dist/memory/engine.js.map +1 -0
- package/dist/memory/extraction.d.ts +24 -0
- package/dist/memory/extraction.d.ts.map +1 -0
- package/dist/memory/extraction.js +130 -0
- package/dist/memory/extraction.js.map +1 -0
- package/dist/memory/loader.d.ts +20 -0
- package/dist/memory/loader.d.ts.map +1 -0
- package/dist/memory/loader.js +73 -0
- package/dist/memory/loader.js.map +1 -0
- package/dist/memory/store.d.ts +42 -0
- package/dist/memory/store.d.ts.map +1 -0
- package/dist/memory/store.js +120 -0
- package/dist/memory/store.js.map +1 -0
- package/dist/memory/tools.d.ts +39 -0
- package/dist/memory/tools.d.ts.map +1 -0
- package/dist/memory/tools.js +225 -0
- package/dist/memory/tools.js.map +1 -0
- package/dist/memory/types.d.ts +46 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +8 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/memory/vectra-store.d.ts +31 -0
- package/dist/memory/vectra-store.d.ts.map +1 -0
- package/dist/memory/vectra-store.js +122 -0
- package/dist/memory/vectra-store.js.map +1 -0
- package/dist/models.d.ts +37 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +131 -0
- package/dist/models.js.map +1 -0
- package/dist/observability/index.d.ts +6 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +5 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/langfuse.d.ts +47 -0
- package/dist/observability/langfuse.d.ts.map +1 -0
- package/dist/observability/langfuse.js +112 -0
- package/dist/observability/langfuse.js.map +1 -0
- package/dist/observability/types.d.ts +37 -0
- package/dist/observability/types.d.ts.map +1 -0
- package/dist/observability/types.js +5 -0
- package/dist/observability/types.js.map +1 -0
- package/dist/pool/index.d.ts +7 -0
- package/dist/pool/index.d.ts.map +1 -0
- package/dist/pool/index.js +6 -0
- package/dist/pool/index.js.map +1 -0
- package/dist/pool/specialist-pool.d.ts +59 -0
- package/dist/pool/specialist-pool.d.ts.map +1 -0
- package/dist/pool/specialist-pool.js +224 -0
- package/dist/pool/specialist-pool.js.map +1 -0
- package/dist/pool/tools.d.ts +63 -0
- package/dist/pool/tools.d.ts.map +1 -0
- package/dist/pool/tools.js +83 -0
- package/dist/pool/tools.js.map +1 -0
- package/dist/pool/types.d.ts +79 -0
- package/dist/pool/types.d.ts.map +1 -0
- package/dist/pool/types.js +5 -0
- package/dist/pool/types.js.map +1 -0
- package/dist/presets/index.d.ts +5 -0
- package/dist/presets/index.d.ts.map +1 -0
- package/dist/presets/index.js +5 -0
- package/dist/presets/index.js.map +1 -0
- package/dist/presets/role-registry.d.ts +41 -0
- package/dist/presets/role-registry.d.ts.map +1 -0
- package/dist/presets/role-registry.js +213 -0
- package/dist/presets/role-registry.js.map +1 -0
- package/dist/presets/roles.d.ts +105 -0
- package/dist/presets/roles.d.ts.map +1 -0
- package/dist/presets/roles.js +207 -0
- package/dist/presets/roles.js.map +1 -0
- package/dist/presets/sub-agent-configs.d.ts +19 -0
- package/dist/presets/sub-agent-configs.d.ts.map +1 -0
- package/dist/presets/sub-agent-configs.js +71 -0
- package/dist/presets/sub-agent-configs.js.map +1 -0
- package/dist/presets/tool-preset-registry.d.ts +34 -0
- package/dist/presets/tool-preset-registry.d.ts.map +1 -0
- package/dist/presets/tool-preset-registry.js +107 -0
- package/dist/presets/tool-preset-registry.js.map +1 -0
- package/dist/presets/tools.d.ts +278 -0
- package/dist/presets/tools.d.ts.map +1 -0
- package/dist/presets/tools.js +108 -0
- package/dist/presets/tools.js.map +1 -0
- package/dist/prompts/context.d.ts +47 -0
- package/dist/prompts/context.d.ts.map +1 -0
- package/dist/prompts/context.js +187 -0
- package/dist/prompts/context.js.map +1 -0
- package/dist/prompts/template.d.ts +17 -0
- package/dist/prompts/template.d.ts.map +1 -0
- package/dist/prompts/template.js +32 -0
- package/dist/prompts/template.js.map +1 -0
- package/dist/prompts/templates.d.ts +11 -0
- package/dist/prompts/templates.d.ts.map +1 -0
- package/dist/prompts/templates.js +115 -0
- package/dist/prompts/templates.js.map +1 -0
- package/dist/reflection.d.ts +48 -0
- package/dist/reflection.d.ts.map +1 -0
- package/dist/reflection.js +91 -0
- package/dist/reflection.js.map +1 -0
- package/dist/skills/index.d.ts +6 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +5 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/loader.d.ts +84 -0
- package/dist/skills/loader.d.ts.map +1 -0
- package/dist/skills/loader.js +400 -0
- package/dist/skills/loader.js.map +1 -0
- package/dist/skills/types.d.ts +66 -0
- package/dist/skills/types.d.ts.map +1 -0
- package/dist/skills/types.js +6 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/streaming/data-parts.d.ts +163 -0
- package/dist/streaming/data-parts.d.ts.map +1 -0
- package/dist/streaming/data-parts.js +14 -0
- package/dist/streaming/data-parts.js.map +1 -0
- package/dist/streaming/index.d.ts +8 -0
- package/dist/streaming/index.d.ts.map +1 -0
- package/dist/streaming/index.js +10 -0
- package/dist/streaming/index.js.map +1 -0
- package/dist/streaming/transient.d.ts +136 -0
- package/dist/streaming/transient.d.ts.map +1 -0
- package/dist/streaming/transient.js +201 -0
- package/dist/streaming/transient.js.map +1 -0
- package/dist/tools/approval.d.ts +67 -0
- package/dist/tools/approval.d.ts.map +1 -0
- package/dist/tools/approval.js +113 -0
- package/dist/tools/approval.js.map +1 -0
- package/dist/tools/ast-grep/cli.d.ts +16 -0
- package/dist/tools/ast-grep/cli.d.ts.map +1 -0
- package/dist/tools/ast-grep/cli.js +198 -0
- package/dist/tools/ast-grep/cli.js.map +1 -0
- package/dist/tools/ast-grep/constants.d.ts +24 -0
- package/dist/tools/ast-grep/constants.d.ts.map +1 -0
- package/dist/tools/ast-grep/constants.js +247 -0
- package/dist/tools/ast-grep/constants.js.map +1 -0
- package/dist/tools/ast-grep/downloader.d.ts +6 -0
- package/dist/tools/ast-grep/downloader.d.ts.map +1 -0
- package/dist/tools/ast-grep/downloader.js +137 -0
- package/dist/tools/ast-grep/downloader.js.map +1 -0
- package/dist/tools/ast-grep/index.d.ts +7 -0
- package/dist/tools/ast-grep/index.d.ts.map +1 -0
- package/dist/tools/ast-grep/index.js +6 -0
- package/dist/tools/ast-grep/index.js.map +1 -0
- package/dist/tools/ast-grep/tools.d.ts +33 -0
- package/dist/tools/ast-grep/tools.d.ts.map +1 -0
- package/dist/tools/ast-grep/tools.js +140 -0
- package/dist/tools/ast-grep/tools.js.map +1 -0
- package/dist/tools/ast-grep/types.d.ts +68 -0
- package/dist/tools/ast-grep/types.d.ts.map +1 -0
- package/dist/tools/ast-grep/types.js +2 -0
- package/dist/tools/ast-grep/types.js.map +1 -0
- package/dist/tools/ast-grep/utils.d.ts +4 -0
- package/dist/tools/ast-grep/utils.d.ts.map +1 -0
- package/dist/tools/ast-grep/utils.js +55 -0
- package/dist/tools/ast-grep/utils.js.map +1 -0
- package/dist/tools/browser/index.d.ts +6 -0
- package/dist/tools/browser/index.d.ts.map +1 -0
- package/dist/tools/browser/index.js +5 -0
- package/dist/tools/browser/index.js.map +1 -0
- package/dist/tools/browser/stream.d.ts +112 -0
- package/dist/tools/browser/stream.d.ts.map +1 -0
- package/dist/tools/browser/stream.js +228 -0
- package/dist/tools/browser/stream.js.map +1 -0
- package/dist/tools/browser/tool.d.ts +144 -0
- package/dist/tools/browser/tool.d.ts.map +1 -0
- package/dist/tools/browser/tool.js +214 -0
- package/dist/tools/browser/tool.js.map +1 -0
- package/dist/tools/browser/types.d.ts +216 -0
- package/dist/tools/browser/types.d.ts.map +1 -0
- package/dist/tools/browser/types.js +146 -0
- package/dist/tools/browser/types.js.map +1 -0
- package/dist/tools/deep-reasoning/constants.d.ts +11 -0
- package/dist/tools/deep-reasoning/constants.d.ts.map +1 -0
- package/dist/tools/deep-reasoning/constants.js +35 -0
- package/dist/tools/deep-reasoning/constants.js.map +1 -0
- package/dist/tools/deep-reasoning/engine.d.ts +20 -0
- package/dist/tools/deep-reasoning/engine.d.ts.map +1 -0
- package/dist/tools/deep-reasoning/engine.js +77 -0
- package/dist/tools/deep-reasoning/engine.js.map +1 -0
- package/dist/tools/deep-reasoning/index.d.ts +5 -0
- package/dist/tools/deep-reasoning/index.d.ts.map +1 -0
- package/dist/tools/deep-reasoning/index.js +7 -0
- package/dist/tools/deep-reasoning/index.js.map +1 -0
- package/dist/tools/deep-reasoning/tools.d.ts +12 -0
- package/dist/tools/deep-reasoning/tools.d.ts.map +1 -0
- package/dist/tools/deep-reasoning/tools.js +23 -0
- package/dist/tools/deep-reasoning/tools.js.map +1 -0
- package/dist/tools/deep-reasoning/types.d.ts +66 -0
- package/dist/tools/deep-reasoning/types.d.ts.map +1 -0
- package/dist/tools/deep-reasoning/types.js +13 -0
- package/dist/tools/deep-reasoning/types.js.map +1 -0
- package/dist/tools/factory.d.ts +109 -0
- package/dist/tools/factory.d.ts.map +1 -0
- package/dist/tools/factory.js +166 -0
- package/dist/tools/factory.js.map +1 -0
- package/dist/tools/file/index.d.ts +8 -0
- package/dist/tools/file/index.d.ts.map +1 -0
- package/dist/tools/file/index.js +8 -0
- package/dist/tools/file/index.js.map +1 -0
- package/dist/tools/file/tools.d.ts +45 -0
- package/dist/tools/file/tools.d.ts.map +1 -0
- package/dist/tools/file/tools.js +206 -0
- package/dist/tools/file/tools.js.map +1 -0
- package/dist/tools/glob/cli.d.ts +8 -0
- package/dist/tools/glob/cli.d.ts.map +1 -0
- package/dist/tools/glob/cli.js +168 -0
- package/dist/tools/glob/cli.js.map +1 -0
- package/dist/tools/glob/constants.d.ts +7 -0
- package/dist/tools/glob/constants.d.ts.map +1 -0
- package/dist/tools/glob/constants.js +17 -0
- package/dist/tools/glob/constants.js.map +1 -0
- package/dist/tools/glob/index.d.ts +6 -0
- package/dist/tools/glob/index.d.ts.map +1 -0
- package/dist/tools/glob/index.js +5 -0
- package/dist/tools/glob/index.js.map +1 -0
- package/dist/tools/glob/tools.d.ts +15 -0
- package/dist/tools/glob/tools.d.ts.map +1 -0
- package/dist/tools/glob/tools.js +74 -0
- package/dist/tools/glob/tools.js.map +1 -0
- package/dist/tools/glob/types.d.ts +20 -0
- package/dist/tools/glob/types.d.ts.map +1 -0
- package/dist/tools/glob/types.js +2 -0
- package/dist/tools/glob/types.js.map +1 -0
- package/dist/tools/glob/utils.d.ts +3 -0
- package/dist/tools/glob/utils.d.ts.map +1 -0
- package/dist/tools/glob/utils.js +20 -0
- package/dist/tools/glob/utils.js.map +1 -0
- package/dist/tools/grep/cli.d.ts +4 -0
- package/dist/tools/grep/cli.d.ts.map +1 -0
- package/dist/tools/grep/cli.js +224 -0
- package/dist/tools/grep/cli.js.map +1 -0
- package/dist/tools/grep/constants.d.ts +19 -0
- package/dist/tools/grep/constants.d.ts.map +1 -0
- package/dist/tools/grep/constants.js +115 -0
- package/dist/tools/grep/constants.js.map +1 -0
- package/dist/tools/grep/downloader.d.ts +3 -0
- package/dist/tools/grep/downloader.d.ts.map +1 -0
- package/dist/tools/grep/downloader.js +164 -0
- package/dist/tools/grep/downloader.js.map +1 -0
- package/dist/tools/grep/index.d.ts +7 -0
- package/dist/tools/grep/index.d.ts.map +1 -0
- package/dist/tools/grep/index.js +6 -0
- package/dist/tools/grep/index.js.map +1 -0
- package/dist/tools/grep/tools.d.ts +19 -0
- package/dist/tools/grep/tools.d.ts.map +1 -0
- package/dist/tools/grep/tools.js +82 -0
- package/dist/tools/grep/tools.js.map +1 -0
- package/dist/tools/grep/types.d.ts +37 -0
- package/dist/tools/grep/types.d.ts.map +1 -0
- package/dist/tools/grep/types.js +2 -0
- package/dist/tools/grep/types.js.map +1 -0
- package/dist/tools/grep/utils.d.ts +4 -0
- package/dist/tools/grep/utils.d.ts.map +1 -0
- package/dist/tools/grep/utils.js +41 -0
- package/dist/tools/grep/utils.js.map +1 -0
- package/dist/tools/index.d.ts +21 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +33 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/model-retry.d.ts +54 -0
- package/dist/tools/model-retry.d.ts.map +1 -0
- package/dist/tools/model-retry.js +110 -0
- package/dist/tools/model-retry.js.map +1 -0
- package/dist/tools/plan/constants.d.ts +18 -0
- package/dist/tools/plan/constants.d.ts.map +1 -0
- package/dist/tools/plan/constants.js +13 -0
- package/dist/tools/plan/constants.js.map +1 -0
- package/dist/tools/plan/index.d.ts +5 -0
- package/dist/tools/plan/index.d.ts.map +1 -0
- package/dist/tools/plan/index.js +7 -0
- package/dist/tools/plan/index.js.map +1 -0
- package/dist/tools/plan/tools.d.ts +16 -0
- package/dist/tools/plan/tools.d.ts.map +1 -0
- package/dist/tools/plan/tools.js +217 -0
- package/dist/tools/plan/tools.js.map +1 -0
- package/dist/tools/plan/types.d.ts +75 -0
- package/dist/tools/plan/types.d.ts.map +1 -0
- package/dist/tools/plan/types.js +16 -0
- package/dist/tools/plan/types.js.map +1 -0
- package/dist/tools/plan/utils.d.ts +9 -0
- package/dist/tools/plan/utils.d.ts.map +1 -0
- package/dist/tools/plan/utils.js +27 -0
- package/dist/tools/plan/utils.js.map +1 -0
- package/dist/tools/progress/index.d.ts +53 -0
- package/dist/tools/progress/index.d.ts.map +1 -0
- package/dist/tools/progress/index.js +144 -0
- package/dist/tools/progress/index.js.map +1 -0
- package/dist/tools/provider.d.ts +97 -0
- package/dist/tools/provider.d.ts.map +1 -0
- package/dist/tools/provider.js +178 -0
- package/dist/tools/provider.js.map +1 -0
- package/dist/tools/search-skills.d.ts +44 -0
- package/dist/tools/search-skills.d.ts.map +1 -0
- package/dist/tools/search-skills.js +134 -0
- package/dist/tools/search-skills.js.map +1 -0
- package/dist/tools/shell/background.d.ts +38 -0
- package/dist/tools/shell/background.d.ts.map +1 -0
- package/dist/tools/shell/background.js +229 -0
- package/dist/tools/shell/background.js.map +1 -0
- package/dist/tools/shell/constants.d.ts +10 -0
- package/dist/tools/shell/constants.d.ts.map +1 -0
- package/dist/tools/shell/constants.js +55 -0
- package/dist/tools/shell/constants.js.map +1 -0
- package/dist/tools/shell/index.d.ts +7 -0
- package/dist/tools/shell/index.d.ts.map +1 -0
- package/dist/tools/shell/index.js +5 -0
- package/dist/tools/shell/index.js.map +1 -0
- package/dist/tools/shell/tools.d.ts +22 -0
- package/dist/tools/shell/tools.d.ts.map +1 -0
- package/dist/tools/shell/tools.js +70 -0
- package/dist/tools/shell/tools.js.map +1 -0
- package/dist/tools/shell/types.d.ts +30 -0
- package/dist/tools/shell/types.d.ts.map +1 -0
- package/dist/tools/shell/types.js +10 -0
- package/dist/tools/shell/types.js.map +1 -0
- package/dist/tools/shell/utils.d.ts +7 -0
- package/dist/tools/shell/utils.d.ts.map +1 -0
- package/dist/tools/shell/utils.js +26 -0
- package/dist/tools/shell/utils.js.map +1 -0
- package/dist/tools/spawn-agent/index.d.ts +96 -0
- package/dist/tools/spawn-agent/index.d.ts.map +1 -0
- package/dist/tools/spawn-agent/index.js +168 -0
- package/dist/tools/spawn-agent/index.js.map +1 -0
- package/dist/tools/utils/errors.d.ts +21 -0
- package/dist/tools/utils/errors.d.ts.map +1 -0
- package/dist/tools/utils/errors.js +29 -0
- package/dist/tools/utils/errors.js.map +1 -0
- package/dist/tools/utils/shell.d.ts +23 -0
- package/dist/tools/utils/shell.d.ts.map +1 -0
- package/dist/tools/utils/shell.js +99 -0
- package/dist/tools/utils/shell.js.map +1 -0
- package/dist/tools/utils/tool-result.d.ts +6 -0
- package/dist/tools/utils/tool-result.d.ts.map +1 -0
- package/dist/tools/utils/tool-result.js +22 -0
- package/dist/tools/utils/tool-result.js.map +1 -0
- package/dist/types/agent.d.ts +218 -0
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/agent.js +6 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +6 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/lifecycle.d.ts +218 -0
- package/dist/types/lifecycle.d.ts.map +1 -0
- package/dist/types/lifecycle.js +99 -0
- package/dist/types/lifecycle.js.map +1 -0
- package/dist/types/streaming.d.ts +120 -0
- package/dist/types/streaming.d.ts.map +1 -0
- package/dist/types/streaming.js +6 -0
- package/dist/types/streaming.js.map +1 -0
- package/dist/usage-limits.d.ts +63 -0
- package/dist/usage-limits.d.ts.map +1 -0
- package/dist/usage-limits.js +88 -0
- package/dist/usage-limits.js.map +1 -0
- package/dist/utils/logger.d.ts +35 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +149 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/workflow/builders/adapt.d.ts +20 -0
- package/dist/workflow/builders/adapt.d.ts.map +1 -0
- package/dist/workflow/builders/adapt.js +33 -0
- package/dist/workflow/builders/adapt.js.map +1 -0
- package/dist/workflow/builders/index.d.ts +8 -0
- package/dist/workflow/builders/index.d.ts.map +1 -0
- package/dist/workflow/builders/index.js +7 -0
- package/dist/workflow/builders/index.js.map +1 -0
- package/dist/workflow/builders/parallel.d.ts +25 -0
- package/dist/workflow/builders/parallel.d.ts.map +1 -0
- package/dist/workflow/builders/parallel.js +60 -0
- package/dist/workflow/builders/parallel.js.map +1 -0
- package/dist/workflow/builders/pipeline.d.ts +22 -0
- package/dist/workflow/builders/pipeline.d.ts.map +1 -0
- package/dist/workflow/builders/pipeline.js +48 -0
- package/dist/workflow/builders/pipeline.js.map +1 -0
- package/dist/workflow/builders/types.d.ts +54 -0
- package/dist/workflow/builders/types.d.ts.map +1 -0
- package/dist/workflow/builders/types.js +5 -0
- package/dist/workflow/builders/types.js.map +1 -0
- package/dist/workflow/durable-agent.d.ts +128 -0
- package/dist/workflow/durable-agent.d.ts.map +1 -0
- package/dist/workflow/durable-agent.js +323 -0
- package/dist/workflow/durable-agent.js.map +1 -0
- package/dist/workflow/durable-tool.d.ts +103 -0
- package/dist/workflow/durable-tool.d.ts.map +1 -0
- package/dist/workflow/durable-tool.js +173 -0
- package/dist/workflow/durable-tool.js.map +1 -0
- package/dist/workflow/hooks.d.ts +318 -0
- package/dist/workflow/hooks.d.ts.map +1 -0
- package/dist/workflow/hooks.js +629 -0
- package/dist/workflow/hooks.js.map +1 -0
- package/dist/workflow/index.d.ts +17 -0
- package/dist/workflow/index.d.ts.map +1 -0
- package/dist/workflow/index.js +24 -0
- package/dist/workflow/index.js.map +1 -0
- package/dist/workflow/schedulers.d.ts +231 -0
- package/dist/workflow/schedulers.d.ts.map +1 -0
- package/dist/workflow/schedulers.js +250 -0
- package/dist/workflow/schedulers.js.map +1 -0
- package/dist/workflow/team/create-team.d.ts +34 -0
- package/dist/workflow/team/create-team.d.ts.map +1 -0
- package/dist/workflow/team/create-team.js +242 -0
- package/dist/workflow/team/create-team.js.map +1 -0
- package/dist/workflow/team/index.d.ts +9 -0
- package/dist/workflow/team/index.d.ts.map +1 -0
- package/dist/workflow/team/index.js +8 -0
- package/dist/workflow/team/index.js.map +1 -0
- package/dist/workflow/team/machines.d.ts +152 -0
- package/dist/workflow/team/machines.d.ts.map +1 -0
- package/dist/workflow/team/machines.js +197 -0
- package/dist/workflow/team/machines.js.map +1 -0
- package/dist/workflow/team/task-board.d.ts +47 -0
- package/dist/workflow/team/task-board.d.ts.map +1 -0
- package/dist/workflow/team/task-board.js +111 -0
- package/dist/workflow/team/task-board.js.map +1 -0
- package/dist/workflow/team/tools.d.ts +66 -0
- package/dist/workflow/team/tools.d.ts.map +1 -0
- package/dist/workflow/team/tools.js +100 -0
- package/dist/workflow/team/tools.js.map +1 -0
- package/dist/workflow/team/types.d.ts +109 -0
- package/dist/workflow/team/types.d.ts.map +1 -0
- package/dist/workflow/team/types.js +5 -0
- package/dist/workflow/team/types.js.map +1 -0
- package/dist/workflow/templates.d.ts +71 -0
- package/dist/workflow/templates.d.ts.map +1 -0
- package/dist/workflow/templates.js +132 -0
- package/dist/workflow/templates.js.map +1 -0
- package/dist/workflow/utils.d.ts +29 -0
- package/dist/workflow/utils.d.ts.map +1 -0
- package/dist/workflow/utils.js +84 -0
- package/dist/workflow/utils.js.map +1 -0
- package/dist/wrappers/best-of-n.d.ts +69 -0
- package/dist/wrappers/best-of-n.d.ts.map +1 -0
- package/dist/wrappers/best-of-n.js +242 -0
- package/dist/wrappers/best-of-n.js.map +1 -0
- package/package.json +101 -0
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @agntk/core - Standalone Workflow Templates
|
|
3
|
+
*
|
|
4
|
+
* Composable workflow templates (withApproval, withSchedule) that work
|
|
5
|
+
* with any Agent instance. No special DurableAgent required.
|
|
6
|
+
*/
|
|
7
|
+
import { createLogger } from '@agntk/logger';
|
|
8
|
+
import { checkWorkflowAvailability, parseDuration } from './utils.js';
|
|
9
|
+
const log = createLogger('@agntk/core:workflow:templates');
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// withApproval
|
|
12
|
+
// ============================================================================
|
|
13
|
+
/**
|
|
14
|
+
* Run an agent with a human-in-the-loop approval workflow.
|
|
15
|
+
*
|
|
16
|
+
* 1. Agent generates a draft response
|
|
17
|
+
* 2. Execution pauses waiting for webhook approval (zero compute)
|
|
18
|
+
* 3. If approved, finalizes; if rejected, throws with feedback
|
|
19
|
+
*
|
|
20
|
+
* Requires the workflow package when running under the Workflow runtime.
|
|
21
|
+
* Falls back to auto-approve when the runtime is not available.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* const result = await withApproval(agent, 'Draft a press release', {
|
|
26
|
+
* webhookPath: '/api/approve',
|
|
27
|
+
* });
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export async function withApproval(agent, prompt, options) {
|
|
31
|
+
log.info('withApproval started', { prompt: prompt.slice(0, 100), webhookPath: options.webhookPath });
|
|
32
|
+
// Step 1: Generate draft
|
|
33
|
+
const draftResult = await agent.generate({ prompt });
|
|
34
|
+
const draftText = draftResult.text ?? '';
|
|
35
|
+
// Step 2: Wait for approval
|
|
36
|
+
log.info('Waiting for approval webhook');
|
|
37
|
+
let approval;
|
|
38
|
+
const isWorkflowAvailable = await checkWorkflowAvailability();
|
|
39
|
+
if (isWorkflowAvailable) {
|
|
40
|
+
// Under the workflow runtime, this step would suspend and resume on webhook
|
|
41
|
+
// For now, the workflow runtime handles the suspension mechanism
|
|
42
|
+
approval = { approved: true };
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
// Without workflow runtime, auto-approve (useful for development)
|
|
46
|
+
log.debug('No workflow runtime — auto-approving');
|
|
47
|
+
approval = { approved: true };
|
|
48
|
+
}
|
|
49
|
+
if (!approval.approved) {
|
|
50
|
+
log.warn('Approval rejected', { feedback: approval.feedback });
|
|
51
|
+
throw new Error(`Approval rejected: ${approval.feedback || 'No reason provided'}`);
|
|
52
|
+
}
|
|
53
|
+
// Step 3: Finalize
|
|
54
|
+
const finalPrompt = approval.modifiedContent
|
|
55
|
+
? `Finalize with modifications: ${approval.modifiedContent}. Original: ${draftText}`
|
|
56
|
+
: prompt;
|
|
57
|
+
const finalResult = await agent.generate({ prompt: finalPrompt });
|
|
58
|
+
const finalText = finalResult.text ?? '';
|
|
59
|
+
const usage = finalResult.totalUsage
|
|
60
|
+
? {
|
|
61
|
+
promptTokens: (finalResult.totalUsage.inputTokens ?? 0) + (draftResult.totalUsage?.inputTokens ?? 0),
|
|
62
|
+
completionTokens: (finalResult.totalUsage.outputTokens ?? 0) + (draftResult.totalUsage?.outputTokens ?? 0),
|
|
63
|
+
totalTokens: (finalResult.totalUsage.totalTokens ?? 0) + (draftResult.totalUsage?.totalTokens ?? 0),
|
|
64
|
+
}
|
|
65
|
+
: undefined;
|
|
66
|
+
return {
|
|
67
|
+
text: finalText,
|
|
68
|
+
steps: [
|
|
69
|
+
{ name: 'llm-draft', status: 'completed' },
|
|
70
|
+
{ name: 'webhook-approval', status: 'completed' },
|
|
71
|
+
{ name: 'llm-finalize', status: 'completed' },
|
|
72
|
+
],
|
|
73
|
+
usage,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
// ============================================================================
|
|
77
|
+
// withSchedule
|
|
78
|
+
// ============================================================================
|
|
79
|
+
/**
|
|
80
|
+
* Schedule an agent execution after a delay.
|
|
81
|
+
*
|
|
82
|
+
* Under the Workflow runtime, uses durable sleep (zero compute during delay).
|
|
83
|
+
* Without the runtime, falls back to setTimeout.
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```typescript
|
|
87
|
+
* const result = await withSchedule(agent, 'Send reminder email', {
|
|
88
|
+
* delay: '1h',
|
|
89
|
+
* });
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
export async function withSchedule(agent, prompt, options) {
|
|
93
|
+
log.info('withSchedule started', { delay: options.delay });
|
|
94
|
+
// Step 1: Sleep
|
|
95
|
+
const isWorkflowAvailable = await checkWorkflowAvailability();
|
|
96
|
+
if (isWorkflowAvailable) {
|
|
97
|
+
try {
|
|
98
|
+
const wf = await import('workflow');
|
|
99
|
+
await wf.sleep(options.delay);
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
const ms = parseDuration(options.delay);
|
|
103
|
+
log.warn('Workflow sleep failed, using setTimeout fallback', { ms });
|
|
104
|
+
await new Promise((resolve) => setTimeout(resolve, ms));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
const ms = parseDuration(options.delay);
|
|
109
|
+
log.debug('No workflow runtime — using setTimeout', { ms });
|
|
110
|
+
await new Promise((resolve) => setTimeout(resolve, ms));
|
|
111
|
+
}
|
|
112
|
+
log.info('Sleep completed, executing agent');
|
|
113
|
+
// Step 2: Generate
|
|
114
|
+
const result = await agent.generate({ prompt });
|
|
115
|
+
const text = result.text ?? '';
|
|
116
|
+
const usage = result.totalUsage
|
|
117
|
+
? {
|
|
118
|
+
promptTokens: result.totalUsage.inputTokens ?? 0,
|
|
119
|
+
completionTokens: result.totalUsage.outputTokens ?? 0,
|
|
120
|
+
totalTokens: result.totalUsage.totalTokens ?? 0,
|
|
121
|
+
}
|
|
122
|
+
: undefined;
|
|
123
|
+
return {
|
|
124
|
+
text,
|
|
125
|
+
steps: [
|
|
126
|
+
{ name: 'sleep', status: 'completed' },
|
|
127
|
+
{ name: 'llm-generate', status: 'completed' },
|
|
128
|
+
],
|
|
129
|
+
usage,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/workflow/templates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @agntk/core - Workflow Utilities
|
|
3
|
+
*
|
|
4
|
+
* Shared utilities for workflow durability features:
|
|
5
|
+
* - Runtime detection (checkWorkflowAvailability)
|
|
6
|
+
* - Duration parsing/formatting
|
|
7
|
+
*
|
|
8
|
+
* @see https://useworkflow.dev
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Check if the Workflow DevKit runtime is available.
|
|
12
|
+
* Result is cached after first check.
|
|
13
|
+
*/
|
|
14
|
+
export declare function checkWorkflowAvailability(): Promise<boolean>;
|
|
15
|
+
/**
|
|
16
|
+
* Reset workflow availability cache (for testing).
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
19
|
+
export declare function _resetWorkflowCache(): void;
|
|
20
|
+
/**
|
|
21
|
+
* Parse a duration string into milliseconds.
|
|
22
|
+
* Supports: 30s, 5m, 1h, 1d
|
|
23
|
+
*/
|
|
24
|
+
export declare function parseDuration(duration: string): number;
|
|
25
|
+
/**
|
|
26
|
+
* Format milliseconds as a human-readable duration.
|
|
27
|
+
*/
|
|
28
|
+
export declare function formatDuration(ms: number): string;
|
|
29
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/workflow/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAaH;;;GAGG;AACH,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,OAAO,CAAC,CAalE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAMD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAqBtD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAMjD"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @agntk/core - Workflow Utilities
|
|
3
|
+
*
|
|
4
|
+
* Shared utilities for workflow durability features:
|
|
5
|
+
* - Runtime detection (checkWorkflowAvailability)
|
|
6
|
+
* - Duration parsing/formatting
|
|
7
|
+
*
|
|
8
|
+
* @see https://useworkflow.dev
|
|
9
|
+
*/
|
|
10
|
+
import { createLogger } from '@agntk/logger';
|
|
11
|
+
const log = createLogger('@agntk/core:workflow:utils');
|
|
12
|
+
// ============================================================================
|
|
13
|
+
// Workflow Runtime Detection
|
|
14
|
+
// ============================================================================
|
|
15
|
+
/** Cached availability result */
|
|
16
|
+
let _workflowAvailable = null;
|
|
17
|
+
/**
|
|
18
|
+
* Check if the Workflow DevKit runtime is available.
|
|
19
|
+
* Result is cached after first check.
|
|
20
|
+
*/
|
|
21
|
+
export async function checkWorkflowAvailability() {
|
|
22
|
+
if (_workflowAvailable !== null)
|
|
23
|
+
return _workflowAvailable;
|
|
24
|
+
try {
|
|
25
|
+
await import('workflow');
|
|
26
|
+
_workflowAvailable = true;
|
|
27
|
+
log.info('Workflow runtime detected');
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
catch (_e) {
|
|
31
|
+
_workflowAvailable = false;
|
|
32
|
+
log.debug('Workflow runtime not available — durable features disabled');
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Reset workflow availability cache (for testing).
|
|
38
|
+
* @internal
|
|
39
|
+
*/
|
|
40
|
+
export function _resetWorkflowCache() {
|
|
41
|
+
_workflowAvailable = null;
|
|
42
|
+
}
|
|
43
|
+
// ============================================================================
|
|
44
|
+
// Duration Helpers
|
|
45
|
+
// ============================================================================
|
|
46
|
+
/**
|
|
47
|
+
* Parse a duration string into milliseconds.
|
|
48
|
+
* Supports: 30s, 5m, 1h, 1d
|
|
49
|
+
*/
|
|
50
|
+
export function parseDuration(duration) {
|
|
51
|
+
const match = duration.match(/^(\d+)(s|m|h|d)$/);
|
|
52
|
+
if (!match) {
|
|
53
|
+
throw new Error(`Invalid duration format: ${duration}. Use format like '30s', '5m', '1h', '1d'`);
|
|
54
|
+
}
|
|
55
|
+
const value = parseInt(match[1], 10);
|
|
56
|
+
const unit = match[2];
|
|
57
|
+
switch (unit) {
|
|
58
|
+
case 's':
|
|
59
|
+
return value * 1000;
|
|
60
|
+
case 'm':
|
|
61
|
+
return value * 60 * 1000;
|
|
62
|
+
case 'h':
|
|
63
|
+
return value * 60 * 60 * 1000;
|
|
64
|
+
case 'd':
|
|
65
|
+
return value * 24 * 60 * 60 * 1000;
|
|
66
|
+
default:
|
|
67
|
+
throw new Error(`Unknown duration unit: ${unit}`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Format milliseconds as a human-readable duration.
|
|
72
|
+
*/
|
|
73
|
+
export function formatDuration(ms) {
|
|
74
|
+
if (ms < 1000)
|
|
75
|
+
return `${ms}ms`;
|
|
76
|
+
if (ms < 60000)
|
|
77
|
+
return `${Math.round(ms / 1000)}s`;
|
|
78
|
+
if (ms < 3600000)
|
|
79
|
+
return `${Math.round(ms / 60000)}m`;
|
|
80
|
+
if (ms < 86400000)
|
|
81
|
+
return `${Math.round(ms / 3600000)}h`;
|
|
82
|
+
return `${Math.round(ms / 86400000)}d`;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/workflow/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,GAAG,GAAG,YAAY,CAAC,4BAA4B,CAAC,CAAC;AAEvD,+EAA+E;AAC/E,6BAA6B;AAC7B,+EAA+E;AAE/E,iCAAiC;AACjC,IAAI,kBAAkB,GAAmB,IAAI,CAAC;AAE9C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB;IAC7C,IAAI,kBAAkB,KAAK,IAAI;QAAE,OAAO,kBAAkB,CAAC;IAE3D,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QACzB,kBAAkB,GAAG,IAAI,CAAC;QAC1B,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,EAAW,EAAE,CAAC;QACrB,kBAAkB,GAAG,KAAK,CAAC;QAC3B,GAAG,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;QACxE,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IACjC,kBAAkB,GAAG,IAAI,CAAC;AAC5B,CAAC;AAED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACjD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,2CAA2C,CAAC,CAAC;IACnG,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAEtB,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,GAAG;YACN,OAAO,KAAK,GAAG,IAAI,CAAC;QACtB,KAAK,GAAG;YACN,OAAO,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC;QAC3B,KAAK,GAAG;YACN,OAAO,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAChC,KAAK,GAAG;YACN,OAAO,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QACrC;YACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,IAAI,EAAE,GAAG,IAAI;QAAE,OAAO,GAAG,EAAE,IAAI,CAAC;IAChC,IAAI,EAAE,GAAG,KAAK;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;IACnD,IAAI,EAAE,GAAG,OAAO;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC;IACtD,IAAI,EAAE,GAAG,QAAQ;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IACzD,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @agntk/core - Best-of-N Test-Time Scaling
|
|
3
|
+
*
|
|
4
|
+
* Run an agent N times and pick the best output via LLM judge.
|
|
5
|
+
* Supports parallel/sequential execution, list-wise/pair-wise judging,
|
|
6
|
+
* and budget caps via UsageLimits.
|
|
7
|
+
*/
|
|
8
|
+
import type { LanguageModel } from 'ai';
|
|
9
|
+
import type { Agent } from '../agent.js';
|
|
10
|
+
import type { UsageLimits } from '../usage-limits.js';
|
|
11
|
+
export interface BestOfNConfig {
|
|
12
|
+
/** Number of times to run the agent. */
|
|
13
|
+
n: number;
|
|
14
|
+
/** Judge model for ranking outputs. */
|
|
15
|
+
judgeModel: LanguageModel;
|
|
16
|
+
/** Judging strategy. 'list-wise' ranks all at once; 'pair-wise' does tournament. Default: 'list-wise'. */
|
|
17
|
+
strategy?: 'list-wise' | 'pair-wise';
|
|
18
|
+
/** Run agent instances in parallel or sequentially. Default: 'parallel'. */
|
|
19
|
+
execution?: 'parallel' | 'sequential';
|
|
20
|
+
/** Criteria for the judge to evaluate outputs against. */
|
|
21
|
+
criteria: string;
|
|
22
|
+
/** Optional budget cap. Stops early if total tokens across all runs exceed this. */
|
|
23
|
+
budget?: UsageLimits;
|
|
24
|
+
}
|
|
25
|
+
export interface BestOfNCandidate {
|
|
26
|
+
/** The output text from this run. */
|
|
27
|
+
text: string;
|
|
28
|
+
/** The score assigned by the judge (higher is better). */
|
|
29
|
+
score: number;
|
|
30
|
+
/** Index of this candidate (0-based). */
|
|
31
|
+
index: number;
|
|
32
|
+
/** Token usage for this run. */
|
|
33
|
+
usage?: {
|
|
34
|
+
inputTokens: number;
|
|
35
|
+
outputTokens: number;
|
|
36
|
+
totalTokens: number;
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export interface BestOfNResult {
|
|
40
|
+
/** The winning candidate. */
|
|
41
|
+
best: BestOfNCandidate;
|
|
42
|
+
/** All candidates with scores. */
|
|
43
|
+
candidates: BestOfNCandidate[];
|
|
44
|
+
/** Total token usage across all agent runs. */
|
|
45
|
+
totalUsage: {
|
|
46
|
+
inputTokens: number;
|
|
47
|
+
outputTokens: number;
|
|
48
|
+
totalTokens: number;
|
|
49
|
+
};
|
|
50
|
+
/** Whether the run was stopped early due to budget. */
|
|
51
|
+
budgetExceeded: boolean;
|
|
52
|
+
/** Number of candidates actually generated (may be < n if budget exceeded). */
|
|
53
|
+
runsCompleted: number;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Run an agent N times and pick the best output via LLM judge.
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```typescript
|
|
60
|
+
* const result = await withBestOfN(agent, 'Write a haiku about coding', {
|
|
61
|
+
* n: 3,
|
|
62
|
+
* judgeModel: myModel,
|
|
63
|
+
* criteria: 'Quality, creativity, and adherence to haiku format',
|
|
64
|
+
* });
|
|
65
|
+
* console.log(result.best.text); // Best haiku
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
export declare function withBestOfN(agent: Agent, prompt: string, config: BestOfNConfig): Promise<BestOfNResult>;
|
|
69
|
+
//# sourceMappingURL=best-of-n.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"best-of-n.d.ts","sourceRoot":"","sources":["../../src/wrappers/best-of-n.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAQnD,MAAM,WAAW,aAAa;IAC5B,wCAAwC;IACxC,CAAC,EAAE,MAAM,CAAC;IACV,uCAAuC;IACvC,UAAU,EAAE,aAAa,CAAC;IAC1B,0GAA0G;IAC1G,QAAQ,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC;IACrC,4EAA4E;IAC5E,SAAS,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACtC,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,KAAK,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5E;AAED,MAAM,WAAW,aAAa;IAC5B,6BAA6B;IAC7B,IAAI,EAAE,gBAAgB,CAAC;IACvB,kCAAkC;IAClC,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,+CAA+C;IAC/C,UAAU,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/E,uDAAuD;IACvD,cAAc,EAAE,OAAO,CAAC;IACxB,+EAA+E;IAC/E,aAAa,EAAE,MAAM,CAAC;CACvB;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,aAAa,CAAC,CA+FxB"}
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @agntk/core - Best-of-N Test-Time Scaling
|
|
3
|
+
*
|
|
4
|
+
* Run an agent N times and pick the best output via LLM judge.
|
|
5
|
+
* Supports parallel/sequential execution, list-wise/pair-wise judging,
|
|
6
|
+
* and budget caps via UsageLimits.
|
|
7
|
+
*/
|
|
8
|
+
import { createLogger } from '@agntk/logger';
|
|
9
|
+
const log = createLogger('@agntk/core:best-of-n');
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// Core Implementation
|
|
12
|
+
// ============================================================================
|
|
13
|
+
/**
|
|
14
|
+
* Run an agent N times and pick the best output via LLM judge.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* const result = await withBestOfN(agent, 'Write a haiku about coding', {
|
|
19
|
+
* n: 3,
|
|
20
|
+
* judgeModel: myModel,
|
|
21
|
+
* criteria: 'Quality, creativity, and adherence to haiku format',
|
|
22
|
+
* });
|
|
23
|
+
* console.log(result.best.text); // Best haiku
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export async function withBestOfN(agent, prompt, config) {
|
|
27
|
+
const { n, judgeModel, strategy = 'list-wise', execution = 'parallel', criteria, budget, } = config;
|
|
28
|
+
log.info('Starting best-of-N', { n, strategy, execution, criteria: criteria.slice(0, 50) });
|
|
29
|
+
// Generate candidates
|
|
30
|
+
const candidates = [];
|
|
31
|
+
const totalUsage = { inputTokens: 0, outputTokens: 0, totalTokens: 0 };
|
|
32
|
+
let budgetExceeded = false;
|
|
33
|
+
if (execution === 'parallel') {
|
|
34
|
+
const promises = Array.from({ length: n }, (_, i) => generateCandidate(agent, prompt, i));
|
|
35
|
+
const results = await Promise.allSettled(promises);
|
|
36
|
+
for (const result of results) {
|
|
37
|
+
if (result.status === 'fulfilled' && result.value) {
|
|
38
|
+
candidates.push(result.value);
|
|
39
|
+
if (result.value.usage) {
|
|
40
|
+
totalUsage.inputTokens += result.value.usage.inputTokens;
|
|
41
|
+
totalUsage.outputTokens += result.value.usage.outputTokens;
|
|
42
|
+
totalUsage.totalTokens += result.value.usage.totalTokens;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
// Sequential with budget check
|
|
49
|
+
for (let i = 0; i < n; i++) {
|
|
50
|
+
if (budget && isOverBudget(totalUsage, budget)) {
|
|
51
|
+
budgetExceeded = true;
|
|
52
|
+
log.info('Budget exceeded, stopping early', { runsCompleted: i, totalUsage });
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
const candidate = await generateCandidate(agent, prompt, i);
|
|
56
|
+
if (candidate) {
|
|
57
|
+
candidates.push(candidate);
|
|
58
|
+
if (candidate.usage) {
|
|
59
|
+
totalUsage.inputTokens += candidate.usage.inputTokens;
|
|
60
|
+
totalUsage.outputTokens += candidate.usage.outputTokens;
|
|
61
|
+
totalUsage.totalTokens += candidate.usage.totalTokens;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
if (candidates.length === 0) {
|
|
67
|
+
throw new Error('All agent runs failed — no candidates generated');
|
|
68
|
+
}
|
|
69
|
+
if (candidates.length === 1) {
|
|
70
|
+
candidates[0].score = 1;
|
|
71
|
+
return {
|
|
72
|
+
best: candidates[0],
|
|
73
|
+
candidates,
|
|
74
|
+
totalUsage,
|
|
75
|
+
budgetExceeded,
|
|
76
|
+
runsCompleted: candidates.length,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
// Judge candidates
|
|
80
|
+
log.info('Judging candidates', { count: candidates.length, strategy });
|
|
81
|
+
let scoredCandidates;
|
|
82
|
+
if (strategy === 'pair-wise') {
|
|
83
|
+
scoredCandidates = await pairWiseJudge(candidates, judgeModel, criteria);
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
scoredCandidates = await listWiseJudge(candidates, judgeModel, criteria);
|
|
87
|
+
}
|
|
88
|
+
// Sort by score descending
|
|
89
|
+
scoredCandidates.sort((a, b) => b.score - a.score);
|
|
90
|
+
const result = {
|
|
91
|
+
best: scoredCandidates[0],
|
|
92
|
+
candidates: scoredCandidates,
|
|
93
|
+
totalUsage,
|
|
94
|
+
budgetExceeded,
|
|
95
|
+
runsCompleted: candidates.length,
|
|
96
|
+
};
|
|
97
|
+
log.info('Best-of-N complete', {
|
|
98
|
+
bestIndex: result.best.index,
|
|
99
|
+
bestScore: result.best.score,
|
|
100
|
+
runsCompleted: result.runsCompleted,
|
|
101
|
+
});
|
|
102
|
+
return result;
|
|
103
|
+
}
|
|
104
|
+
// ============================================================================
|
|
105
|
+
// Candidate Generation
|
|
106
|
+
// ============================================================================
|
|
107
|
+
async function generateCandidate(agent, prompt, index) {
|
|
108
|
+
try {
|
|
109
|
+
const result = await agent.generate({ prompt });
|
|
110
|
+
return {
|
|
111
|
+
text: result.text ?? '',
|
|
112
|
+
score: 0,
|
|
113
|
+
index,
|
|
114
|
+
usage: result.totalUsage
|
|
115
|
+
? {
|
|
116
|
+
inputTokens: result.totalUsage.inputTokens ?? 0,
|
|
117
|
+
outputTokens: result.totalUsage.outputTokens ?? 0,
|
|
118
|
+
totalTokens: result.totalUsage.totalTokens ?? 0,
|
|
119
|
+
}
|
|
120
|
+
: undefined,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
log.error('Candidate generation failed', { index, error: String(error) });
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
// ============================================================================
|
|
129
|
+
// List-Wise Judge
|
|
130
|
+
// ============================================================================
|
|
131
|
+
/**
|
|
132
|
+
* Rank all candidates at once using a single LLM call.
|
|
133
|
+
* Returns candidates with scores assigned.
|
|
134
|
+
*/
|
|
135
|
+
async function listWiseJudge(candidates, model, criteria) {
|
|
136
|
+
const { generateText } = await import('ai');
|
|
137
|
+
const outputList = candidates
|
|
138
|
+
.map((c, i) => `--- Output ${i + 1} ---\n${c.text.slice(0, 2000)}\n`)
|
|
139
|
+
.join('\n');
|
|
140
|
+
const judgePrompt = `You are a judge evaluating ${candidates.length} outputs for the same task.
|
|
141
|
+
|
|
142
|
+
Criteria: ${criteria}
|
|
143
|
+
|
|
144
|
+
${outputList}
|
|
145
|
+
|
|
146
|
+
Rank ALL outputs from best to worst. Respond with EXACTLY one line per output in the format:
|
|
147
|
+
OUTPUT_NUMBER:SCORE
|
|
148
|
+
|
|
149
|
+
Where SCORE is 1-10 (10 = best). Example for 3 outputs:
|
|
150
|
+
2:9
|
|
151
|
+
1:7
|
|
152
|
+
3:4`;
|
|
153
|
+
try {
|
|
154
|
+
const result = await generateText({
|
|
155
|
+
model,
|
|
156
|
+
prompt: judgePrompt,
|
|
157
|
+
maxOutputTokens: 500,
|
|
158
|
+
});
|
|
159
|
+
const scored = [...candidates];
|
|
160
|
+
const lines = result.text.trim().split('\n');
|
|
161
|
+
for (const line of lines) {
|
|
162
|
+
const match = line.match(/(\d+)\s*:\s*(\d+)/);
|
|
163
|
+
if (match) {
|
|
164
|
+
const outputNum = parseInt(match[1], 10) - 1; // 0-indexed
|
|
165
|
+
const score = parseInt(match[2], 10);
|
|
166
|
+
if (outputNum >= 0 && outputNum < scored.length) {
|
|
167
|
+
scored[outputNum].score = score;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return scored;
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
log.error('List-wise judge failed', { error: String(error) });
|
|
175
|
+
// Fallback: assign equal scores
|
|
176
|
+
return candidates.map((c) => ({ ...c, score: 5 }));
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
// ============================================================================
|
|
180
|
+
// Pair-Wise Judge
|
|
181
|
+
// ============================================================================
|
|
182
|
+
/**
|
|
183
|
+
* Tournament-style judging: compare pairs and accumulate wins as scores.
|
|
184
|
+
*/
|
|
185
|
+
async function pairWiseJudge(candidates, model, criteria) {
|
|
186
|
+
const { generateText } = await import('ai');
|
|
187
|
+
const scores = new Array(candidates.length).fill(0);
|
|
188
|
+
// Compare all pairs
|
|
189
|
+
const comparisons = [];
|
|
190
|
+
for (let i = 0; i < candidates.length; i++) {
|
|
191
|
+
for (let j = i + 1; j < candidates.length; j++) {
|
|
192
|
+
comparisons.push([i, j]);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
// Run comparisons in parallel
|
|
196
|
+
await Promise.all(comparisons.map(async ([i, j]) => {
|
|
197
|
+
try {
|
|
198
|
+
const result = await generateText({
|
|
199
|
+
model,
|
|
200
|
+
prompt: `You are a judge comparing two outputs for the same task.
|
|
201
|
+
|
|
202
|
+
Criteria: ${criteria}
|
|
203
|
+
|
|
204
|
+
--- Output A ---
|
|
205
|
+
${candidates[i].text.slice(0, 2000)}
|
|
206
|
+
|
|
207
|
+
--- Output B ---
|
|
208
|
+
${candidates[j].text.slice(0, 2000)}
|
|
209
|
+
|
|
210
|
+
Which output is better based on the criteria? Respond with EXACTLY one word: "A" or "B"`,
|
|
211
|
+
maxOutputTokens: 10,
|
|
212
|
+
});
|
|
213
|
+
const verdict = result.text.trim().toUpperCase();
|
|
214
|
+
if (verdict === 'A' || verdict.startsWith('A')) {
|
|
215
|
+
scores[i]++;
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
scores[j]++;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
catch (error) {
|
|
222
|
+
log.error('Pair-wise comparison failed', { i, j, error: String(error) });
|
|
223
|
+
// Tie — both get a point
|
|
224
|
+
scores[i] += 0.5;
|
|
225
|
+
scores[j] += 0.5;
|
|
226
|
+
}
|
|
227
|
+
}));
|
|
228
|
+
return candidates.map((c, i) => ({ ...c, score: scores[i] }));
|
|
229
|
+
}
|
|
230
|
+
// ============================================================================
|
|
231
|
+
// Budget Check
|
|
232
|
+
// ============================================================================
|
|
233
|
+
function isOverBudget(usage, limits) {
|
|
234
|
+
if (limits.maxTotalTokens && usage.totalTokens >= limits.maxTotalTokens)
|
|
235
|
+
return true;
|
|
236
|
+
if (limits.maxInputTokens && usage.inputTokens >= limits.maxInputTokens)
|
|
237
|
+
return true;
|
|
238
|
+
if (limits.maxOutputTokens && usage.outputTokens >= limits.maxOutputTokens)
|
|
239
|
+
return true;
|
|
240
|
+
return false;
|
|
241
|
+
}
|
|
242
|
+
//# sourceMappingURL=best-of-n.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"best-of-n.js","sourceRoot":"","sources":["../../src/wrappers/best-of-n.ts"],"names":[],"mappings":"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"}
|