@hypercli/gen 0.1.1
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/LICENSE +21 -0
- package/README.md +24 -0
- package/dist/actions/communication.d.ts +201 -0
- package/dist/actions/communication.d.ts.map +1 -0
- package/dist/actions/communication.js +515 -0
- package/dist/actions/communication.js.map +1 -0
- package/dist/actions/decorator.d.ts +22 -0
- package/dist/actions/decorator.d.ts.map +1 -0
- package/dist/actions/decorator.js +110 -0
- package/dist/actions/decorator.js.map +1 -0
- package/dist/actions/executor.d.ts +85 -0
- package/dist/actions/executor.d.ts.map +1 -0
- package/dist/actions/executor.js +289 -0
- package/dist/actions/executor.js.map +1 -0
- package/dist/actions/index.d.ts +14 -0
- package/dist/actions/index.d.ts.map +1 -0
- package/dist/actions/index.js +15 -0
- package/dist/actions/index.js.map +1 -0
- package/dist/actions/parameter-resolver.d.ts +54 -0
- package/dist/actions/parameter-resolver.d.ts.map +1 -0
- package/dist/actions/parameter-resolver.js +300 -0
- package/dist/actions/parameter-resolver.js.map +1 -0
- package/dist/actions/registry.d.ts +78 -0
- package/dist/actions/registry.d.ts.map +1 -0
- package/dist/actions/registry.js +221 -0
- package/dist/actions/registry.js.map +1 -0
- package/dist/actions/types.d.ts +109 -0
- package/dist/actions/types.d.ts.map +1 -0
- package/dist/actions/types.js +31 -0
- package/dist/actions/types.js.map +1 -0
- package/dist/actions/utils.d.ts +42 -0
- package/dist/actions/utils.d.ts.map +1 -0
- package/dist/actions/utils.js +144 -0
- package/dist/actions/utils.js.map +1 -0
- package/dist/ai/ai-collector.d.ts +52 -0
- package/dist/ai/ai-collector.d.ts.map +1 -0
- package/dist/ai/ai-collector.js +64 -0
- package/dist/ai/ai-collector.js.map +1 -0
- package/dist/ai/ai-config.d.ts +230 -0
- package/dist/ai/ai-config.d.ts.map +1 -0
- package/dist/ai/ai-config.js +8 -0
- package/dist/ai/ai-config.js.map +1 -0
- package/dist/ai/ai-service.d.ts +66 -0
- package/dist/ai/ai-service.d.ts.map +1 -0
- package/dist/ai/ai-service.js +198 -0
- package/dist/ai/ai-service.js.map +1 -0
- package/dist/ai/ai-variable-resolver.d.ts +59 -0
- package/dist/ai/ai-variable-resolver.d.ts.map +1 -0
- package/dist/ai/ai-variable-resolver.js +219 -0
- package/dist/ai/ai-variable-resolver.js.map +1 -0
- package/dist/ai/context-collector.d.ts +30 -0
- package/dist/ai/context-collector.d.ts.map +1 -0
- package/dist/ai/context-collector.js +158 -0
- package/dist/ai/context-collector.js.map +1 -0
- package/dist/ai/cost-tracker.d.ts +41 -0
- package/dist/ai/cost-tracker.d.ts.map +1 -0
- package/dist/ai/cost-tracker.js +131 -0
- package/dist/ai/cost-tracker.js.map +1 -0
- package/dist/ai/env.d.ts +36 -0
- package/dist/ai/env.d.ts.map +1 -0
- package/dist/ai/env.js +100 -0
- package/dist/ai/env.js.map +1 -0
- package/dist/ai/index.d.ts +17 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +25 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/model-router.d.ts +32 -0
- package/dist/ai/model-router.d.ts.map +1 -0
- package/dist/ai/model-router.js +113 -0
- package/dist/ai/model-router.js.map +1 -0
- package/dist/ai/output-validator.d.ts +24 -0
- package/dist/ai/output-validator.d.ts.map +1 -0
- package/dist/ai/output-validator.js +279 -0
- package/dist/ai/output-validator.js.map +1 -0
- package/dist/ai/prompt-assembler.d.ts +30 -0
- package/dist/ai/prompt-assembler.d.ts.map +1 -0
- package/dist/ai/prompt-assembler.js +93 -0
- package/dist/ai/prompt-assembler.js.map +1 -0
- package/dist/ai/prompt-pipeline.d.ts +63 -0
- package/dist/ai/prompt-pipeline.d.ts.map +1 -0
- package/dist/ai/prompt-pipeline.js +119 -0
- package/dist/ai/prompt-pipeline.js.map +1 -0
- package/dist/ai/prompt-template.jig +88 -0
- package/dist/ai/transports/api-transport.d.ts +12 -0
- package/dist/ai/transports/api-transport.d.ts.map +1 -0
- package/dist/ai/transports/api-transport.js +86 -0
- package/dist/ai/transports/api-transport.js.map +1 -0
- package/dist/ai/transports/command-transport.d.ts +20 -0
- package/dist/ai/transports/command-transport.d.ts.map +1 -0
- package/dist/ai/transports/command-transport.js +203 -0
- package/dist/ai/transports/command-transport.js.map +1 -0
- package/dist/ai/transports/index.d.ts +11 -0
- package/dist/ai/transports/index.d.ts.map +1 -0
- package/dist/ai/transports/index.js +10 -0
- package/dist/ai/transports/index.js.map +1 -0
- package/dist/ai/transports/resolve-transport.d.ts +15 -0
- package/dist/ai/transports/resolve-transport.d.ts.map +1 -0
- package/dist/ai/transports/resolve-transport.js +96 -0
- package/dist/ai/transports/resolve-transport.js.map +1 -0
- package/dist/ai/transports/stdout-transport.d.ts +14 -0
- package/dist/ai/transports/stdout-transport.d.ts.map +1 -0
- package/dist/ai/transports/stdout-transport.js +27 -0
- package/dist/ai/transports/stdout-transport.js.map +1 -0
- package/dist/ai/transports/types.d.ts +77 -0
- package/dist/ai/transports/types.d.ts.map +1 -0
- package/dist/ai/transports/types.js +8 -0
- package/dist/ai/transports/types.js.map +1 -0
- package/dist/commands/cookbook/info.d.ts +22 -0
- package/dist/commands/cookbook/info.d.ts.map +1 -0
- package/dist/commands/cookbook/info.js +217 -0
- package/dist/commands/cookbook/info.js.map +1 -0
- package/dist/commands/cookbook/list.d.ts +20 -0
- package/dist/commands/cookbook/list.d.ts.map +1 -0
- package/dist/commands/cookbook/list.js +133 -0
- package/dist/commands/cookbook/list.js.map +1 -0
- package/dist/commands/gen.d.ts +65 -0
- package/dist/commands/gen.d.ts.map +1 -0
- package/dist/commands/gen.js +478 -0
- package/dist/commands/gen.js.map +1 -0
- package/dist/commands/recipe/info.d.ts +18 -0
- package/dist/commands/recipe/info.d.ts.map +1 -0
- package/dist/commands/recipe/info.js +89 -0
- package/dist/commands/recipe/info.js.map +1 -0
- package/dist/commands/recipe/list.d.ts +29 -0
- package/dist/commands/recipe/list.d.ts.map +1 -0
- package/dist/commands/recipe/list.js +215 -0
- package/dist/commands/recipe/list.js.map +1 -0
- package/dist/commands/recipe/run.d.ts +44 -0
- package/dist/commands/recipe/run.d.ts.map +1 -0
- package/dist/commands/recipe/run.js +239 -0
- package/dist/commands/recipe/run.js.map +1 -0
- package/dist/commands/recipe/validate.d.ts +19 -0
- package/dist/commands/recipe/validate.d.ts.map +1 -0
- package/dist/commands/recipe/validate.js +66 -0
- package/dist/commands/recipe/validate.js.map +1 -0
- package/dist/discovery/generator-discovery.d.ts +130 -0
- package/dist/discovery/generator-discovery.d.ts.map +1 -0
- package/dist/discovery/generator-discovery.js +674 -0
- package/dist/discovery/generator-discovery.js.map +1 -0
- package/dist/discovery/index.d.ts +8 -0
- package/dist/discovery/index.d.ts.map +1 -0
- package/dist/discovery/index.js +7 -0
- package/dist/discovery/index.js.map +1 -0
- package/dist/hooks/command-not-found.d.ts +18 -0
- package/dist/hooks/command-not-found.d.ts.map +1 -0
- package/dist/hooks/command-not-found.js +182 -0
- package/dist/hooks/command-not-found.js.map +1 -0
- package/dist/hooks/suggest.d.ts +13 -0
- package/dist/hooks/suggest.d.ts.map +1 -0
- package/dist/hooks/suggest.js +28 -0
- package/dist/hooks/suggest.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/base-command.d.ts +26 -0
- package/dist/lib/base-command.d.ts.map +1 -0
- package/dist/lib/base-command.js +24 -0
- package/dist/lib/base-command.js.map +1 -0
- package/dist/lib/flags.d.ts +33 -0
- package/dist/lib/flags.d.ts.map +1 -0
- package/dist/lib/flags.js +64 -0
- package/dist/lib/flags.js.map +1 -0
- package/dist/ops/add.d.ts +4 -0
- package/dist/ops/add.d.ts.map +1 -0
- package/dist/ops/add.js +85 -0
- package/dist/ops/add.js.map +1 -0
- package/dist/ops/inject.d.ts +4 -0
- package/dist/ops/inject.d.ts.map +1 -0
- package/dist/ops/inject.js +28 -0
- package/dist/ops/inject.js.map +1 -0
- package/dist/ops/injector.d.ts +4 -0
- package/dist/ops/injector.d.ts.map +1 -0
- package/dist/ops/injector.js +68 -0
- package/dist/ops/injector.js.map +1 -0
- package/dist/ops/result.d.ts +3 -0
- package/dist/ops/result.d.ts.map +1 -0
- package/dist/ops/result.js +8 -0
- package/dist/ops/result.js.map +1 -0
- package/dist/prompts/interactive-prompts.d.ts +152 -0
- package/dist/prompts/interactive-prompts.d.ts.map +1 -0
- package/dist/prompts/interactive-prompts.js +574 -0
- package/dist/prompts/interactive-prompts.js.map +1 -0
- package/dist/recipe-engine/group-executor.d.ts +97 -0
- package/dist/recipe-engine/group-executor.d.ts.map +1 -0
- package/dist/recipe-engine/group-executor.js +293 -0
- package/dist/recipe-engine/group-executor.js.map +1 -0
- package/dist/recipe-engine/index.d.ts +112 -0
- package/dist/recipe-engine/index.d.ts.map +1 -0
- package/dist/recipe-engine/index.js +223 -0
- package/dist/recipe-engine/index.js.map +1 -0
- package/dist/recipe-engine/output-evaluator.d.ts +28 -0
- package/dist/recipe-engine/output-evaluator.d.ts.map +1 -0
- package/dist/recipe-engine/output-evaluator.js +78 -0
- package/dist/recipe-engine/output-evaluator.js.map +1 -0
- package/dist/recipe-engine/recipe-engine.d.ts +227 -0
- package/dist/recipe-engine/recipe-engine.d.ts.map +1 -0
- package/dist/recipe-engine/recipe-engine.js +1036 -0
- package/dist/recipe-engine/recipe-engine.js.map +1 -0
- package/dist/recipe-engine/step-executor.d.ts +172 -0
- package/dist/recipe-engine/step-executor.d.ts.map +1 -0
- package/dist/recipe-engine/step-executor.js +802 -0
- package/dist/recipe-engine/step-executor.js.map +1 -0
- package/dist/recipe-engine/tools/action-tool.d.ts +103 -0
- package/dist/recipe-engine/tools/action-tool.d.ts.map +1 -0
- package/dist/recipe-engine/tools/action-tool.js +473 -0
- package/dist/recipe-engine/tools/action-tool.js.map +1 -0
- package/dist/recipe-engine/tools/ai-tool.d.ts +26 -0
- package/dist/recipe-engine/tools/ai-tool.d.ts.map +1 -0
- package/dist/recipe-engine/tools/ai-tool.js +233 -0
- package/dist/recipe-engine/tools/ai-tool.js.map +1 -0
- package/dist/recipe-engine/tools/base.d.ts +214 -0
- package/dist/recipe-engine/tools/base.d.ts.map +1 -0
- package/dist/recipe-engine/tools/base.js +397 -0
- package/dist/recipe-engine/tools/base.js.map +1 -0
- package/dist/recipe-engine/tools/codemod-tool.d.ts +130 -0
- package/dist/recipe-engine/tools/codemod-tool.d.ts.map +1 -0
- package/dist/recipe-engine/tools/codemod-tool.js +786 -0
- package/dist/recipe-engine/tools/codemod-tool.js.map +1 -0
- package/dist/recipe-engine/tools/ensure-dirs-tool.d.ts +21 -0
- package/dist/recipe-engine/tools/ensure-dirs-tool.d.ts.map +1 -0
- package/dist/recipe-engine/tools/ensure-dirs-tool.js +130 -0
- package/dist/recipe-engine/tools/ensure-dirs-tool.js.map +1 -0
- package/dist/recipe-engine/tools/index.d.ts +126 -0
- package/dist/recipe-engine/tools/index.d.ts.map +1 -0
- package/dist/recipe-engine/tools/index.js +290 -0
- package/dist/recipe-engine/tools/index.js.map +1 -0
- package/dist/recipe-engine/tools/install-tool.d.ts +20 -0
- package/dist/recipe-engine/tools/install-tool.d.ts.map +1 -0
- package/dist/recipe-engine/tools/install-tool.js +194 -0
- package/dist/recipe-engine/tools/install-tool.js.map +1 -0
- package/dist/recipe-engine/tools/parallel-tool.d.ts +21 -0
- package/dist/recipe-engine/tools/parallel-tool.d.ts.map +1 -0
- package/dist/recipe-engine/tools/parallel-tool.js +134 -0
- package/dist/recipe-engine/tools/parallel-tool.js.map +1 -0
- package/dist/recipe-engine/tools/patch-tool.d.ts +21 -0
- package/dist/recipe-engine/tools/patch-tool.d.ts.map +1 -0
- package/dist/recipe-engine/tools/patch-tool.js +248 -0
- package/dist/recipe-engine/tools/patch-tool.js.map +1 -0
- package/dist/recipe-engine/tools/prompt-tool.d.ts +25 -0
- package/dist/recipe-engine/tools/prompt-tool.d.ts.map +1 -0
- package/dist/recipe-engine/tools/prompt-tool.js +162 -0
- package/dist/recipe-engine/tools/prompt-tool.js.map +1 -0
- package/dist/recipe-engine/tools/query-tool.d.ts +21 -0
- package/dist/recipe-engine/tools/query-tool.d.ts.map +1 -0
- package/dist/recipe-engine/tools/query-tool.js +249 -0
- package/dist/recipe-engine/tools/query-tool.js.map +1 -0
- package/dist/recipe-engine/tools/recipe-tool.d.ts +103 -0
- package/dist/recipe-engine/tools/recipe-tool.d.ts.map +1 -0
- package/dist/recipe-engine/tools/recipe-tool.js +617 -0
- package/dist/recipe-engine/tools/recipe-tool.js.map +1 -0
- package/dist/recipe-engine/tools/registry.d.ts +151 -0
- package/dist/recipe-engine/tools/registry.d.ts.map +1 -0
- package/dist/recipe-engine/tools/registry.js +244 -0
- package/dist/recipe-engine/tools/registry.js.map +1 -0
- package/dist/recipe-engine/tools/sequence-tool.d.ts +22 -0
- package/dist/recipe-engine/tools/sequence-tool.d.ts.map +1 -0
- package/dist/recipe-engine/tools/sequence-tool.js +122 -0
- package/dist/recipe-engine/tools/sequence-tool.js.map +1 -0
- package/dist/recipe-engine/tools/shell-tool.d.ts +25 -0
- package/dist/recipe-engine/tools/shell-tool.d.ts.map +1 -0
- package/dist/recipe-engine/tools/shell-tool.js +149 -0
- package/dist/recipe-engine/tools/shell-tool.js.map +1 -0
- package/dist/recipe-engine/tools/template-tool.d.ts +88 -0
- package/dist/recipe-engine/tools/template-tool.d.ts.map +1 -0
- package/dist/recipe-engine/tools/template-tool.js +613 -0
- package/dist/recipe-engine/tools/template-tool.js.map +1 -0
- package/dist/recipe-engine/types.d.ts +963 -0
- package/dist/recipe-engine/types.d.ts.map +1 -0
- package/dist/recipe-engine/types.js +94 -0
- package/dist/recipe-engine/types.js.map +1 -0
- package/dist/template-engines/ai-tags.d.ts +26 -0
- package/dist/template-engines/ai-tags.d.ts.map +1 -0
- package/dist/template-engines/ai-tags.js +233 -0
- package/dist/template-engines/ai-tags.js.map +1 -0
- package/dist/template-engines/index.d.ts +8 -0
- package/dist/template-engines/index.d.ts.map +1 -0
- package/dist/template-engines/index.js +8 -0
- package/dist/template-engines/index.js.map +1 -0
- package/dist/template-engines/jig-engine.d.ts +47 -0
- package/dist/template-engines/jig-engine.d.ts.map +1 -0
- package/dist/template-engines/jig-engine.js +173 -0
- package/dist/template-engines/jig-engine.js.map +1 -0
- package/dist/utils/coerce-value.d.ts +7 -0
- package/dist/utils/coerce-value.d.ts.map +1 -0
- package/dist/utils/coerce-value.js +18 -0
- package/dist/utils/coerce-value.js.map +1 -0
- package/dist/utils/diff.d.ts +8 -0
- package/dist/utils/diff.d.ts.map +1 -0
- package/dist/utils/diff.js +10 -0
- package/dist/utils/diff.js.map +1 -0
- package/dist/utils/global-packages.d.ts +11 -0
- package/dist/utils/global-packages.d.ts.map +1 -0
- package/dist/utils/global-packages.js +88 -0
- package/dist/utils/global-packages.js.map +1 -0
- package/dist/utils/pager.d.ts +6 -0
- package/dist/utils/pager.d.ts.map +1 -0
- package/dist/utils/pager.js +41 -0
- package/dist/utils/pager.js.map +1 -0
- package/help/cookbook/info.md +35 -0
- package/help/cookbook/list.md +37 -0
- package/help/gen.md +26 -0
- package/help/recipe/run.md +52 -0
- package/help/recipe/validate.md +51 -0
- package/oclif.manifest.json +580 -0
- package/package.json +120 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patch-tool.js","sourceRoot":"","sources":["../../../src/recipe-engine/tools/patch-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt Tool Implementation for Recipe Step System
|
|
3
|
+
*
|
|
4
|
+
* This tool enables interactive user prompts within recipe execution steps.
|
|
5
|
+
* It integrates with the interactive prompt system to collect user input
|
|
6
|
+
* and store it in execution context variables.
|
|
7
|
+
*/
|
|
8
|
+
import type { PromptStep, StepContext, StepExecutionOptions, StepResult } from "#recipe-engine/types";
|
|
9
|
+
import { Tool, type ToolValidationResult } from "./base.js";
|
|
10
|
+
export declare class PromptTool extends Tool<PromptStep> {
|
|
11
|
+
constructor(name?: string, options?: Record<string, any>);
|
|
12
|
+
protected onValidate(step: PromptStep, context: StepContext): Promise<ToolValidationResult>;
|
|
13
|
+
protected onExecute(step: PromptStep, context: StepContext, options?: StepExecutionOptions): Promise<StepResult>;
|
|
14
|
+
private createResult;
|
|
15
|
+
private mapPromptType;
|
|
16
|
+
private mapOptions;
|
|
17
|
+
private createValidator;
|
|
18
|
+
}
|
|
19
|
+
export declare class PromptToolFactory {
|
|
20
|
+
create(name?: string, options?: Record<string, any>): PromptTool;
|
|
21
|
+
getToolType(): "prompt";
|
|
22
|
+
validateConfig(config: Record<string, any>): ToolValidationResult;
|
|
23
|
+
}
|
|
24
|
+
export declare const promptToolFactory: PromptToolFactory;
|
|
25
|
+
//# sourceMappingURL=prompt-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-tool.d.ts","sourceRoot":"","sources":["../../../src/recipe-engine/tools/prompt-tool.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAEX,UAAU,EACV,WAAW,EACX,oBAAoB,EACpB,UAAU,EACV,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,KAAK,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAE5D,qBAAa,UAAW,SAAQ,IAAI,CAAC,UAAU,CAAC;gBACnC,IAAI,SAAgB,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM;cAInD,UAAU,CACzB,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,WAAW,GAClB,OAAO,CAAC,oBAAoB,CAAC;cA4BhB,SAAS,CACxB,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,oBAAoB,GAC5B,OAAO,CAAC,UAAU,CAAC;IA6DtB,OAAO,CAAC,YAAY;IA2BpB,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,eAAe;CAYvB;AAED,qBAAa,iBAAiB;IAC7B,MAAM,CAAC,IAAI,SAAgB,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,UAAU;IAI3E,WAAW,IAAI,QAAQ;IAIvB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,oBAAoB;CAQjE;AAED,eAAO,MAAM,iBAAiB,mBAA0B,CAAC"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt Tool Implementation for Recipe Step System
|
|
3
|
+
*
|
|
4
|
+
* This tool enables interactive user prompts within recipe execution steps.
|
|
5
|
+
* It integrates with the interactive prompt system to collect user input
|
|
6
|
+
* and store it in execution context variables.
|
|
7
|
+
*/
|
|
8
|
+
import { performInteractivePrompting } from "#prompts/interactive-prompts";
|
|
9
|
+
import { Tool } from "./base.js";
|
|
10
|
+
export class PromptTool extends Tool {
|
|
11
|
+
constructor(name = "prompt-tool", options = {}) {
|
|
12
|
+
super("prompt", name, options);
|
|
13
|
+
}
|
|
14
|
+
async onValidate(step, context) {
|
|
15
|
+
const errors = [];
|
|
16
|
+
if (!step.variable) {
|
|
17
|
+
errors.push("Target variable name is required");
|
|
18
|
+
}
|
|
19
|
+
if (step.promptType === "select" || step.promptType === "multiselect") {
|
|
20
|
+
if (!step.options || (Array.isArray(step.options) && step.options.length === 0)) {
|
|
21
|
+
errors.push(`Options are required for ${step.promptType} prompt`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return {
|
|
25
|
+
isValid: errors.length === 0,
|
|
26
|
+
errors,
|
|
27
|
+
warnings: [],
|
|
28
|
+
suggestions: [],
|
|
29
|
+
estimatedExecutionTime: 0, // Interactive time depends on user
|
|
30
|
+
resourceRequirements: {
|
|
31
|
+
memory: 0,
|
|
32
|
+
disk: 0,
|
|
33
|
+
network: false,
|
|
34
|
+
processes: 0,
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
async onExecute(step, context, options) {
|
|
39
|
+
const startTime = new Date();
|
|
40
|
+
this.debug("Executing prompt step: %s (variable: %s)", step.name, step.variable);
|
|
41
|
+
try {
|
|
42
|
+
// In non-interactive mode or dry-run, use default value if available
|
|
43
|
+
if (options?.dryRun || process.env.CI || process.env.INTERACTIVE === "false") {
|
|
44
|
+
const value = step.default;
|
|
45
|
+
this.debug("Using default value in non-interactive/dry-run mode: %o", value);
|
|
46
|
+
// Update context variables
|
|
47
|
+
context.variables[step.variable] = value;
|
|
48
|
+
return this.createResult(step, value, startTime, "completed");
|
|
49
|
+
}
|
|
50
|
+
// Convert step configuration to prompt configuration
|
|
51
|
+
const promptConfig = {
|
|
52
|
+
type: this.mapPromptType(step.promptType),
|
|
53
|
+
name: step.variable,
|
|
54
|
+
message: step.message || `Enter value for ${step.variable}`,
|
|
55
|
+
default: step.default,
|
|
56
|
+
choices: this.mapOptions(step.options),
|
|
57
|
+
validate: this.createValidator(step.validate),
|
|
58
|
+
};
|
|
59
|
+
// Execute prompt
|
|
60
|
+
// Logger in context is ActionLogger which has info/warn/error but not log
|
|
61
|
+
// We can adapt it or just pass undefined if logger shape doesn't match
|
|
62
|
+
const loggerAdapter = context.logger
|
|
63
|
+
? { log: (msg) => context.logger?.info(msg) }
|
|
64
|
+
: undefined;
|
|
65
|
+
const result = await performInteractivePrompting([promptConfig], loggerAdapter);
|
|
66
|
+
const value = result[step.variable];
|
|
67
|
+
this.debug("Prompt completed, value: %o", value);
|
|
68
|
+
// Update context variables
|
|
69
|
+
context.variables[step.variable] = value;
|
|
70
|
+
return this.createResult(step, value, startTime, "completed");
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
const endTime = new Date();
|
|
74
|
+
return {
|
|
75
|
+
status: "failed",
|
|
76
|
+
stepName: step.name,
|
|
77
|
+
toolType: "prompt",
|
|
78
|
+
startTime,
|
|
79
|
+
endTime,
|
|
80
|
+
duration: endTime.getTime() - startTime.getTime(),
|
|
81
|
+
retryCount: 0,
|
|
82
|
+
dependenciesSatisfied: true,
|
|
83
|
+
error: {
|
|
84
|
+
message: error.message,
|
|
85
|
+
code: "PROMPT_EXECUTION_ERROR",
|
|
86
|
+
cause: error,
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
createResult(step, value, startTime, status) {
|
|
92
|
+
const endTime = new Date();
|
|
93
|
+
return {
|
|
94
|
+
status,
|
|
95
|
+
stepName: step.name,
|
|
96
|
+
toolType: "prompt",
|
|
97
|
+
startTime,
|
|
98
|
+
endTime,
|
|
99
|
+
duration: endTime.getTime() - startTime.getTime(),
|
|
100
|
+
retryCount: 0,
|
|
101
|
+
dependenciesSatisfied: true,
|
|
102
|
+
toolResult: {
|
|
103
|
+
variable: step.variable,
|
|
104
|
+
value,
|
|
105
|
+
},
|
|
106
|
+
output: {
|
|
107
|
+
variable: step.variable,
|
|
108
|
+
value,
|
|
109
|
+
},
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
mapPromptType(type) {
|
|
113
|
+
switch (type) {
|
|
114
|
+
case "select":
|
|
115
|
+
return "list";
|
|
116
|
+
case "multiselect":
|
|
117
|
+
return "multiselect"; // assuming supported by prompt tool, otherwise list
|
|
118
|
+
case "confirm":
|
|
119
|
+
return "confirm";
|
|
120
|
+
default:
|
|
121
|
+
return "input";
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
mapOptions(options) {
|
|
125
|
+
if (!options)
|
|
126
|
+
return undefined;
|
|
127
|
+
if (Array.isArray(options) && typeof options[0] === "string") {
|
|
128
|
+
return options;
|
|
129
|
+
}
|
|
130
|
+
// Extract values if objects
|
|
131
|
+
return options.map((o) => o.value);
|
|
132
|
+
}
|
|
133
|
+
createValidator(validate) {
|
|
134
|
+
if (!validate)
|
|
135
|
+
return undefined;
|
|
136
|
+
// Support regex pattern validation
|
|
137
|
+
if (validate.startsWith("/") && validate.endsWith("/")) {
|
|
138
|
+
const pattern = validate.slice(1, -1);
|
|
139
|
+
const regex = new RegExp(pattern);
|
|
140
|
+
return (input) => regex.test(String(input)) || "Invalid format";
|
|
141
|
+
}
|
|
142
|
+
return undefined;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
export class PromptToolFactory {
|
|
146
|
+
create(name = "prompt-tool", options = {}) {
|
|
147
|
+
return new PromptTool(name, options);
|
|
148
|
+
}
|
|
149
|
+
getToolType() {
|
|
150
|
+
return "prompt";
|
|
151
|
+
}
|
|
152
|
+
validateConfig(config) {
|
|
153
|
+
return {
|
|
154
|
+
isValid: true,
|
|
155
|
+
errors: [],
|
|
156
|
+
warnings: [],
|
|
157
|
+
suggestions: [],
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
export const promptToolFactory = new PromptToolFactory();
|
|
162
|
+
//# sourceMappingURL=prompt-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-tool.js","sourceRoot":"","sources":["../../../src/recipe-engine/tools/prompt-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Query Tool Implementation for Recipe Step System
|
|
3
|
+
*
|
|
4
|
+
* Reads structured data files (JSON, YAML, TOML, .env) and evaluates
|
|
5
|
+
* dot-path checks or expressions against them. Results can be exported
|
|
6
|
+
* to recipe variables for use in subsequent steps.
|
|
7
|
+
*/
|
|
8
|
+
import type { QueryStep, StepContext, StepExecutionOptions, StepResult } from "#recipe-engine/types";
|
|
9
|
+
import { Tool, type ToolValidationResult } from "./base.js";
|
|
10
|
+
export declare class QueryTool extends Tool<QueryStep> {
|
|
11
|
+
constructor(name?: string, options?: Record<string, any>);
|
|
12
|
+
protected onValidate(step: QueryStep, context: StepContext): Promise<ToolValidationResult>;
|
|
13
|
+
protected onExecute(step: QueryStep, context: StepContext, options?: StepExecutionOptions): Promise<StepResult>;
|
|
14
|
+
}
|
|
15
|
+
export declare class QueryToolFactory {
|
|
16
|
+
create(name?: string, options?: Record<string, any>): QueryTool;
|
|
17
|
+
getToolType(): "query";
|
|
18
|
+
validateConfig(config: Record<string, any>): ToolValidationResult;
|
|
19
|
+
}
|
|
20
|
+
export declare const queryToolFactory: QueryToolFactory;
|
|
21
|
+
//# sourceMappingURL=query-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-tool.d.ts","sourceRoot":"","sources":["../../../src/recipe-engine/tools/query-tool.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAEX,SAAS,EACT,WAAW,EACX,oBAAoB,EACpB,UAAU,EACV,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,KAAK,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAgG5D,qBAAa,SAAU,SAAQ,IAAI,CAAC,SAAS,CAAC;gBACjC,IAAI,SAAe,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM;cAIlD,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC;cAkDhF,SAAS,CACxB,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,oBAAoB,GAC5B,OAAO,CAAC,UAAU,CAAC;CA8FtB;AAED,qBAAa,gBAAgB;IAC5B,MAAM,CAAC,IAAI,SAAe,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,SAAS;IAIzE,WAAW,IAAI,OAAO;IAItB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,oBAAoB;CAQjE;AAED,eAAO,MAAM,gBAAgB,kBAAyB,CAAC"}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Query Tool Implementation for Recipe Step System
|
|
3
|
+
*
|
|
4
|
+
* Reads structured data files (JSON, YAML, TOML, .env) and evaluates
|
|
5
|
+
* dot-path checks or expressions against them. Results can be exported
|
|
6
|
+
* to recipe variables for use in subsequent steps.
|
|
7
|
+
*/
|
|
8
|
+
import fs from "node:fs";
|
|
9
|
+
import path from "node:path";
|
|
10
|
+
import { Tool } from "./base.js";
|
|
11
|
+
/**
|
|
12
|
+
* Auto-detect file format from extension
|
|
13
|
+
*/
|
|
14
|
+
function detectFormat(filePath) {
|
|
15
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
16
|
+
switch (ext) {
|
|
17
|
+
case ".json":
|
|
18
|
+
return "json";
|
|
19
|
+
case ".yml":
|
|
20
|
+
case ".yaml":
|
|
21
|
+
return "yaml";
|
|
22
|
+
case ".toml":
|
|
23
|
+
return "toml";
|
|
24
|
+
case ".env":
|
|
25
|
+
return "env";
|
|
26
|
+
default:
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Parse a .env file into a flat key-value record
|
|
32
|
+
*/
|
|
33
|
+
function parseEnvFile(content) {
|
|
34
|
+
const result = {};
|
|
35
|
+
for (const line of content.split("\n")) {
|
|
36
|
+
const trimmed = line.trim();
|
|
37
|
+
if (!trimmed || trimmed.startsWith("#"))
|
|
38
|
+
continue;
|
|
39
|
+
const eqIndex = trimmed.indexOf("=");
|
|
40
|
+
if (eqIndex === -1)
|
|
41
|
+
continue;
|
|
42
|
+
const key = trimmed.slice(0, eqIndex).trim();
|
|
43
|
+
let value = trimmed.slice(eqIndex + 1).trim();
|
|
44
|
+
// Strip surrounding quotes
|
|
45
|
+
if ((value.startsWith('"') && value.endsWith('"')) ||
|
|
46
|
+
(value.startsWith("'") && value.endsWith("'"))) {
|
|
47
|
+
value = value.slice(1, -1);
|
|
48
|
+
}
|
|
49
|
+
result[key] = value;
|
|
50
|
+
}
|
|
51
|
+
return result;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Resolve a dot-path against an object.
|
|
55
|
+
* Supports keys with dots/special chars via bracket-like segments if needed,
|
|
56
|
+
* but the primary use case is simple dot-separated paths like "dependencies.drizzle-orm".
|
|
57
|
+
*/
|
|
58
|
+
function resolveDotPath(data, dotPath) {
|
|
59
|
+
const segments = dotPath.split(".");
|
|
60
|
+
let current = data;
|
|
61
|
+
for (const segment of segments) {
|
|
62
|
+
if (current === null || typeof current !== "object") {
|
|
63
|
+
return { exists: false, value: undefined };
|
|
64
|
+
}
|
|
65
|
+
if (!(segment in current)) {
|
|
66
|
+
return { exists: false, value: undefined };
|
|
67
|
+
}
|
|
68
|
+
current = current[segment];
|
|
69
|
+
}
|
|
70
|
+
return { exists: true, value: current };
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Parse file content based on format
|
|
74
|
+
*/
|
|
75
|
+
async function parseFile(content, format) {
|
|
76
|
+
switch (format) {
|
|
77
|
+
case "json":
|
|
78
|
+
return JSON.parse(content);
|
|
79
|
+
case "yaml": {
|
|
80
|
+
const { parse } = await import("yaml");
|
|
81
|
+
return parse(content);
|
|
82
|
+
}
|
|
83
|
+
case "toml": {
|
|
84
|
+
// Use a dynamic import; TOML parsing is optional
|
|
85
|
+
try {
|
|
86
|
+
// @ts-ignore -- optional dependency, only needed for TOML files
|
|
87
|
+
const { parse } = await import("smol-toml");
|
|
88
|
+
return parse(content);
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
throw new Error('TOML parsing requires the "smol-toml" package. Install it with: bun add smol-toml');
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
case "env":
|
|
95
|
+
return parseEnvFile(content);
|
|
96
|
+
default:
|
|
97
|
+
throw new Error(`Unsupported format: ${format}`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
export class QueryTool extends Tool {
|
|
101
|
+
constructor(name = "query-tool", options = {}) {
|
|
102
|
+
super("query", name, options);
|
|
103
|
+
}
|
|
104
|
+
async onValidate(step, context) {
|
|
105
|
+
const errors = [];
|
|
106
|
+
const warnings = [];
|
|
107
|
+
const suggestions = [];
|
|
108
|
+
if (!step.file) {
|
|
109
|
+
errors.push("File path is required");
|
|
110
|
+
}
|
|
111
|
+
if (!step.checks && !step.expression) {
|
|
112
|
+
errors.push('Either "checks" or "expression" must be specified');
|
|
113
|
+
}
|
|
114
|
+
if (step.checks && step.expression) {
|
|
115
|
+
warnings.push('Both "checks" and "expression" are specified; both will be evaluated');
|
|
116
|
+
}
|
|
117
|
+
if (step.checks) {
|
|
118
|
+
for (let i = 0; i < step.checks.length; i++) {
|
|
119
|
+
const check = step.checks[i];
|
|
120
|
+
if (!check.path) {
|
|
121
|
+
errors.push(`Check at index ${i} must have a "path"`);
|
|
122
|
+
}
|
|
123
|
+
if (!check.export && !check.exportExists) {
|
|
124
|
+
warnings.push(`Check at index ${i} has no "export" or "exportExists" — result will be discarded`);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
if (step.format && !["json", "yaml", "toml", "env"].includes(step.format)) {
|
|
129
|
+
errors.push(`Unsupported format: ${step.format}. Must be one of: json, yaml, toml, env`);
|
|
130
|
+
}
|
|
131
|
+
return {
|
|
132
|
+
isValid: errors.length === 0,
|
|
133
|
+
errors,
|
|
134
|
+
warnings,
|
|
135
|
+
suggestions,
|
|
136
|
+
estimatedExecutionTime: 100,
|
|
137
|
+
resourceRequirements: {
|
|
138
|
+
memory: 5 * 1024 * 1024,
|
|
139
|
+
disk: 0,
|
|
140
|
+
network: false,
|
|
141
|
+
processes: 0,
|
|
142
|
+
},
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
async onExecute(step, context, options) {
|
|
146
|
+
const startTime = new Date();
|
|
147
|
+
this.debug("Querying file: %s", step.file);
|
|
148
|
+
try {
|
|
149
|
+
const filePath = path.resolve(context.projectRoot, step.file);
|
|
150
|
+
const format = step.format || detectFormat(step.file);
|
|
151
|
+
if (!format) {
|
|
152
|
+
throw new Error(`Cannot detect format for "${step.file}". Specify "format" explicitly.`);
|
|
153
|
+
}
|
|
154
|
+
if (!fs.existsSync(filePath)) {
|
|
155
|
+
throw new Error(`File not found: ${step.file}`);
|
|
156
|
+
}
|
|
157
|
+
const content = fs.readFileSync(filePath, "utf-8");
|
|
158
|
+
const data = await parseFile(content, format);
|
|
159
|
+
const queryResult = {
|
|
160
|
+
file: step.file,
|
|
161
|
+
format,
|
|
162
|
+
};
|
|
163
|
+
const outputVars = {};
|
|
164
|
+
// Evaluate checks
|
|
165
|
+
if (step.checks) {
|
|
166
|
+
queryResult.checks = [];
|
|
167
|
+
for (const check of step.checks) {
|
|
168
|
+
const resolved = resolveDotPath(data, check.path);
|
|
169
|
+
queryResult.checks.push({
|
|
170
|
+
path: check.path,
|
|
171
|
+
exists: resolved.exists,
|
|
172
|
+
value: resolved.value,
|
|
173
|
+
});
|
|
174
|
+
if (check.export) {
|
|
175
|
+
outputVars[check.export] = resolved.value;
|
|
176
|
+
}
|
|
177
|
+
if (check.exportExists) {
|
|
178
|
+
outputVars[check.exportExists] =
|
|
179
|
+
resolved.exists && resolved.value !== null && resolved.value !== false;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
// Evaluate expression
|
|
184
|
+
if (step.expression) {
|
|
185
|
+
try {
|
|
186
|
+
const func = new Function("data", `return ${step.expression}`);
|
|
187
|
+
queryResult.value = func(data);
|
|
188
|
+
queryResult.expression = step.expression;
|
|
189
|
+
}
|
|
190
|
+
catch (err) {
|
|
191
|
+
throw new Error(`Expression evaluation failed: ${err.message}`);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
const endTime = new Date();
|
|
195
|
+
return {
|
|
196
|
+
status: "completed",
|
|
197
|
+
stepName: step.name,
|
|
198
|
+
toolType: "query",
|
|
199
|
+
startTime,
|
|
200
|
+
endTime,
|
|
201
|
+
duration: endTime.getTime() - startTime.getTime(),
|
|
202
|
+
retryCount: 0,
|
|
203
|
+
dependenciesSatisfied: true,
|
|
204
|
+
toolResult: queryResult,
|
|
205
|
+
output: Object.keys(outputVars).length > 0
|
|
206
|
+
? outputVars
|
|
207
|
+
: queryResult.value !== undefined
|
|
208
|
+
? { value: queryResult.value }
|
|
209
|
+
: undefined,
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
catch (error) {
|
|
213
|
+
const endTime = new Date();
|
|
214
|
+
return {
|
|
215
|
+
status: "failed",
|
|
216
|
+
stepName: step.name,
|
|
217
|
+
toolType: "query",
|
|
218
|
+
startTime,
|
|
219
|
+
endTime,
|
|
220
|
+
duration: endTime.getTime() - startTime.getTime(),
|
|
221
|
+
retryCount: 0,
|
|
222
|
+
dependenciesSatisfied: true,
|
|
223
|
+
error: {
|
|
224
|
+
message: error.message,
|
|
225
|
+
code: "QUERY_FAILED",
|
|
226
|
+
cause: error,
|
|
227
|
+
},
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
export class QueryToolFactory {
|
|
233
|
+
create(name = "query-tool", options = {}) {
|
|
234
|
+
return new QueryTool(name, options);
|
|
235
|
+
}
|
|
236
|
+
getToolType() {
|
|
237
|
+
return "query";
|
|
238
|
+
}
|
|
239
|
+
validateConfig(config) {
|
|
240
|
+
return {
|
|
241
|
+
isValid: true,
|
|
242
|
+
errors: [],
|
|
243
|
+
warnings: [],
|
|
244
|
+
suggestions: [],
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
export const queryToolFactory = new QueryToolFactory();
|
|
249
|
+
//# sourceMappingURL=query-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-tool.js","sourceRoot":"","sources":["../../../src/recipe-engine/tools/query-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recipe Tool Implementation for Recipe Step System
|
|
3
|
+
*
|
|
4
|
+
* This tool handles recipe composition by loading and executing sub-recipes as
|
|
5
|
+
* orchestrated components. It replaces complex inheritance systems with simple
|
|
6
|
+
* execution-based composition, making recipe systems intuitive and powerful.
|
|
7
|
+
*
|
|
8
|
+
* Key Features:
|
|
9
|
+
* - Recipe discovery from multiple sources (local, npm, GitHub, URLs)
|
|
10
|
+
* - Variable inheritance and override patterns
|
|
11
|
+
* - Sub-recipe execution with proper context isolation
|
|
12
|
+
* - Result aggregation and error handling
|
|
13
|
+
* - Circular dependency detection
|
|
14
|
+
* - Recipe caching for performance
|
|
15
|
+
* - Variable mapping and transformation
|
|
16
|
+
*/
|
|
17
|
+
import { type RecipeStep, type StepContext, type StepExecutionOptions, type StepResult } from "#recipe-engine/types";
|
|
18
|
+
import { Tool, type ToolValidationResult } from "./base.js";
|
|
19
|
+
/**
|
|
20
|
+
* Recipe Tool for processing recipe composition in the Recipe Step System
|
|
21
|
+
*
|
|
22
|
+
* This tool implements the core insight that composition is simpler than inheritance.
|
|
23
|
+
* Instead of complex configuration merging and template inheritance, recipes are
|
|
24
|
+
* executed as orchestrated steps that can call other recipes with clear variable
|
|
25
|
+
* passing patterns.
|
|
26
|
+
*
|
|
27
|
+
* Features:
|
|
28
|
+
* - Recipe source discovery (local files, npm packages)
|
|
29
|
+
* - Variable inheritance with clear override patterns
|
|
30
|
+
* - Sub-recipe execution with proper context management
|
|
31
|
+
* - Result aggregation from child recipes
|
|
32
|
+
* - Error handling and rollback for failed sub-recipes
|
|
33
|
+
* - Circular dependency detection with clear error messages
|
|
34
|
+
* - Recipe caching for performance optimization
|
|
35
|
+
* - Variable mapping and transformation support
|
|
36
|
+
*/
|
|
37
|
+
export declare class RecipeTool extends Tool<RecipeStep> {
|
|
38
|
+
private recipeCache;
|
|
39
|
+
private executionStack;
|
|
40
|
+
constructor(name?: string, options?: Record<string, any>);
|
|
41
|
+
/**
|
|
42
|
+
* Initialize the recipe tool
|
|
43
|
+
*/
|
|
44
|
+
protected onInitialize(): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Validate recipe step configuration
|
|
47
|
+
*/
|
|
48
|
+
protected onValidate(step: RecipeStep, context: StepContext): Promise<ToolValidationResult>;
|
|
49
|
+
/**
|
|
50
|
+
* Execute the recipe tool
|
|
51
|
+
*/
|
|
52
|
+
protected onExecute(step: RecipeStep, context: StepContext, options?: StepExecutionOptions): Promise<StepResult>;
|
|
53
|
+
/**
|
|
54
|
+
* Tool-specific cleanup logic
|
|
55
|
+
*/
|
|
56
|
+
protected onCleanup(): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* Resolve recipe identifier to configuration
|
|
59
|
+
*/
|
|
60
|
+
private resolveRecipe;
|
|
61
|
+
/**
|
|
62
|
+
* Resolve local recipe file
|
|
63
|
+
*/
|
|
64
|
+
private resolveLocalRecipe;
|
|
65
|
+
/**
|
|
66
|
+
* Resolve recipe from npm package
|
|
67
|
+
*/
|
|
68
|
+
private resolveNpmRecipe;
|
|
69
|
+
/**
|
|
70
|
+
* Build sub-recipe context with variable inheritance
|
|
71
|
+
*/
|
|
72
|
+
private buildSubRecipeContext;
|
|
73
|
+
/**
|
|
74
|
+
* Detect circular dependencies in recipe chain
|
|
75
|
+
*/
|
|
76
|
+
private detectCircularDependencies;
|
|
77
|
+
/**
|
|
78
|
+
* Normalize steps to infer tool types from shorthands
|
|
79
|
+
*/
|
|
80
|
+
private normalizeSteps;
|
|
81
|
+
/**
|
|
82
|
+
* Tool-specific cleanup logicipe configuration
|
|
83
|
+
*/
|
|
84
|
+
private validateRecipeConfig;
|
|
85
|
+
/**
|
|
86
|
+
* Check if recipe identifier is a local path
|
|
87
|
+
*/
|
|
88
|
+
private isLocalPath;
|
|
89
|
+
/**
|
|
90
|
+
* Check if recipe identifier is an npm package
|
|
91
|
+
*/
|
|
92
|
+
private isNpmPackage;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Recipe Tool Factory
|
|
96
|
+
*/
|
|
97
|
+
export declare class RecipeToolFactory {
|
|
98
|
+
create(name?: string, options?: Record<string, any>): RecipeTool;
|
|
99
|
+
getToolType(): "recipe";
|
|
100
|
+
validateConfig(config: Record<string, any>): ToolValidationResult;
|
|
101
|
+
}
|
|
102
|
+
export declare const recipeToolFactory: RecipeToolFactory;
|
|
103
|
+
//# sourceMappingURL=recipe-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recipe-tool.d.ts","sourceRoot":"","sources":["../../../src/recipe-engine/tools/recipe-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAOH,OAAO,EAIN,KAAK,UAAU,EAEf,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,KAAK,UAAU,EAEf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,KAAK,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAuD5D;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,UAAW,SAAQ,IAAI,CAAC,UAAU,CAAC;IAC/C,OAAO,CAAC,WAAW,CAAuC;IAC1D,OAAO,CAAC,cAAc,CAAgB;gBAE1B,IAAI,SAAgB,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM;IAInE;;OAEG;cACsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBtD;;OAEG;cACa,UAAU,CACzB,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,WAAW,GAClB,OAAO,CAAC,oBAAoB,CAAC;IAkHhC;;OAEG;cACa,SAAS,CACxB,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,oBAAoB,GAC5B,OAAO,CAAC,UAAU,CAAC;IAiJtB;;OAEG;cACsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAMnD;;OAEG;YACW,aAAa;IA2D3B;;OAEG;YACW,kBAAkB;IA8ChC;;OAEG;YACW,gBAAgB;IA8B9B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAsD7B;;OAEG;YACW,0BAA0B;IAsBxC;;OAEG;IACH,OAAO,CAAC,cAAc;IAmCtB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA+B5B;;OAEG;IACH,OAAO,CAAC,WAAW;IASnB;;OAEG;IACH,OAAO,CAAC,YAAY;CAMpB;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC7B,MAAM,CAAC,IAAI,SAAgB,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,UAAU;IAI3E,WAAW,IAAI,QAAQ;IAIvB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,oBAAoB;CA6BjE;AAGD,eAAO,MAAM,iBAAiB,mBAA0B,CAAC"}
|