@refrainai/cli 0.4.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.
Files changed (69) hide show
  1. package/dist/ai-model-FM6GWCID.js +37 -0
  2. package/dist/ai-model-FM6GWCID.js.map +1 -0
  3. package/dist/chunk-2BVDAJZT.js +236 -0
  4. package/dist/chunk-2BVDAJZT.js.map +1 -0
  5. package/dist/chunk-2H7UOFLK.js +11 -0
  6. package/dist/chunk-2H7UOFLK.js.map +1 -0
  7. package/dist/chunk-7UCVPKD4.js +902 -0
  8. package/dist/chunk-7UCVPKD4.js.map +1 -0
  9. package/dist/chunk-AG3CFMYU.js +36 -0
  10. package/dist/chunk-AG3CFMYU.js.map +1 -0
  11. package/dist/chunk-CLYJHKPY.js +1131 -0
  12. package/dist/chunk-CLYJHKPY.js.map +1 -0
  13. package/dist/chunk-D5SI2PHK.js +74 -0
  14. package/dist/chunk-D5SI2PHK.js.map +1 -0
  15. package/dist/chunk-DJVUITRB.js +9084 -0
  16. package/dist/chunk-DJVUITRB.js.map +1 -0
  17. package/dist/chunk-H47NWH7N.js +4427 -0
  18. package/dist/chunk-H47NWH7N.js.map +1 -0
  19. package/dist/chunk-HQDXLWAY.js +109 -0
  20. package/dist/chunk-HQDXLWAY.js.map +1 -0
  21. package/dist/chunk-IGFCYKHC.js +1974 -0
  22. package/dist/chunk-IGFCYKHC.js.map +1 -0
  23. package/dist/chunk-RT664YIO.js +245 -0
  24. package/dist/chunk-RT664YIO.js.map +1 -0
  25. package/dist/chunk-RYIJPYM3.js +164 -0
  26. package/dist/chunk-RYIJPYM3.js.map +1 -0
  27. package/dist/chunk-TDSM3UXI.js +40 -0
  28. package/dist/chunk-TDSM3UXI.js.map +1 -0
  29. package/dist/chunk-UGPXCQY3.js +778 -0
  30. package/dist/chunk-UGPXCQY3.js.map +1 -0
  31. package/dist/chunk-VPK2MQAZ.js +589 -0
  32. package/dist/chunk-VPK2MQAZ.js.map +1 -0
  33. package/dist/chunk-WEYR56ZN.js +953 -0
  34. package/dist/chunk-WEYR56ZN.js.map +1 -0
  35. package/dist/chunk-XMFCXPYU.js +275 -0
  36. package/dist/chunk-XMFCXPYU.js.map +1 -0
  37. package/dist/chunk-Z33FCOTZ.js +251 -0
  38. package/dist/chunk-Z33FCOTZ.js.map +1 -0
  39. package/dist/cli.js +59 -0
  40. package/dist/cli.js.map +1 -0
  41. package/dist/compose-MTSIJY5D.js +547 -0
  42. package/dist/compose-MTSIJY5D.js.map +1 -0
  43. package/dist/config-ZSUNCFXR.js +9 -0
  44. package/dist/config-ZSUNCFXR.js.map +1 -0
  45. package/dist/fix-runbook-ZSBOTLC2.js +294 -0
  46. package/dist/fix-runbook-ZSBOTLC2.js.map +1 -0
  47. package/dist/google-sheets-DRWIVEVC.js +482 -0
  48. package/dist/google-sheets-DRWIVEVC.js.map +1 -0
  49. package/dist/registry-LZLYTNDJ.js +17 -0
  50. package/dist/registry-LZLYTNDJ.js.map +1 -0
  51. package/dist/runbook-data-helpers-KRR2SH76.js +16 -0
  52. package/dist/runbook-data-helpers-KRR2SH76.js.map +1 -0
  53. package/dist/runbook-executor-K7T6RJWJ.js +1480 -0
  54. package/dist/runbook-executor-K7T6RJWJ.js.map +1 -0
  55. package/dist/runbook-generator-MPXJBQ5N.js +800 -0
  56. package/dist/runbook-generator-MPXJBQ5N.js.map +1 -0
  57. package/dist/runbook-schema-3T6TP3JJ.js +35 -0
  58. package/dist/runbook-schema-3T6TP3JJ.js.map +1 -0
  59. package/dist/runbook-store-G5GUOWRR.js +11 -0
  60. package/dist/runbook-store-G5GUOWRR.js.map +1 -0
  61. package/dist/schema-5G6UQSPT.js +91 -0
  62. package/dist/schema-5G6UQSPT.js.map +1 -0
  63. package/dist/server-AG3LXQBI.js +8778 -0
  64. package/dist/server-AG3LXQBI.js.map +1 -0
  65. package/dist/tenant-ai-config-QPFEJUVJ.js +14 -0
  66. package/dist/tenant-ai-config-QPFEJUVJ.js.map +1 -0
  67. package/dist/yaml-patcher-VGUS2JGH.js +15 -0
  68. package/dist/yaml-patcher-VGUS2JGH.js.map +1 -0
  69. package/package.json +37 -0
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ DEFAULT_MODEL_ID,
4
+ DEFAULT_PROVIDER,
5
+ PROVIDER_DEFAULT_MODELS,
6
+ buildModelFactory,
7
+ getModel,
8
+ getModelId,
9
+ getModelOverrides,
10
+ getModelProvider,
11
+ initModel,
12
+ initModelExplicit,
13
+ isRetryableError,
14
+ runWithModelContext,
15
+ trackedGenerateObject,
16
+ trackedGenerateText,
17
+ withAIRetry
18
+ } from "./chunk-UGPXCQY3.js";
19
+ import "./chunk-2H7UOFLK.js";
20
+ export {
21
+ DEFAULT_MODEL_ID,
22
+ DEFAULT_PROVIDER,
23
+ PROVIDER_DEFAULT_MODELS,
24
+ buildModelFactory,
25
+ getModel,
26
+ getModelId,
27
+ getModelOverrides,
28
+ getModelProvider,
29
+ initModel,
30
+ initModelExplicit,
31
+ isRetryableError,
32
+ runWithModelContext,
33
+ trackedGenerateObject,
34
+ trackedGenerateText,
35
+ withAIRetry
36
+ };
37
+ //# sourceMappingURL=ai-model-FM6GWCID.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,236 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ cancel,
4
+ t
5
+ } from "./chunk-7UCVPKD4.js";
6
+ import {
7
+ PROVIDER_DEFAULT_MODELS
8
+ } from "./chunk-UGPXCQY3.js";
9
+
10
+ // src/cli/config-helpers.ts
11
+ import { readFile } from "fs/promises";
12
+ function getRawArgs() {
13
+ const rawArgs = process.argv.slice(2);
14
+ return rawArgs[0] === "--" ? rawArgs.slice(1) : rawArgs;
15
+ }
16
+ async function readContextFile(path) {
17
+ return readFile(path, "utf-8");
18
+ }
19
+ function validateNotifyMode(raw) {
20
+ if (!raw) return void 0;
21
+ const valid = ["slack", "teams", "discord"];
22
+ if (!valid.includes(raw)) {
23
+ cancel(`--notify must be one of: ${valid.join(", ")}`);
24
+ process.exit(1);
25
+ }
26
+ return raw;
27
+ }
28
+ var VALID_PROVIDERS = [
29
+ "anthropic",
30
+ "openai",
31
+ "openai-compatible",
32
+ "google",
33
+ "azure",
34
+ "bedrock",
35
+ "vertex"
36
+ ];
37
+ function parseModelConfig(values) {
38
+ const modelId = values.model ?? process.env.AI_MODEL_ID;
39
+ const rawProvider = values["model-provider"] ?? process.env.AI_MODEL_PROVIDER;
40
+ const baseURL = values["model-base-url"] ?? process.env.OPENAI_COMPATIBLE_BASE_URL;
41
+ const modelSelector = values["model-selector"];
42
+ const modelExtraction = values["model-extraction"];
43
+ const modelExploration = values["model-exploration"];
44
+ const modelReview = values["model-review"];
45
+ const modelFallback = values["model-fallback"];
46
+ const modelVision = values["model-vision"];
47
+ const modelExplorationLight = values["model-exploration-light"];
48
+ if (!rawProvider) {
49
+ cancel(t("cli.providerRequired"));
50
+ process.exit(1);
51
+ }
52
+ const provider = rawProvider;
53
+ if (!VALID_PROVIDERS.includes(provider)) {
54
+ cancel(`--model-provider \u306F ${VALID_PROVIDERS.join(" / ")} \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`);
55
+ process.exit(1);
56
+ }
57
+ const modelOverrides = buildModelOverrides({ modelSelector, modelExtraction, modelExploration, modelReview, modelFallback, modelVision, modelExplorationLight });
58
+ return {
59
+ modelId: modelId ?? PROVIDER_DEFAULT_MODELS[provider],
60
+ provider,
61
+ baseURL,
62
+ apiKey: process.env.OPENAI_COMPATIBLE_API_KEY,
63
+ // Bedrock
64
+ bedrockRegion: process.env.AWS_REGION,
65
+ bedrockAccessKeyId: process.env.AWS_ACCESS_KEY_ID,
66
+ bedrockSecretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
67
+ bedrockSessionToken: process.env.AWS_SESSION_TOKEN,
68
+ // Vertex
69
+ vertexProject: process.env.GOOGLE_VERTEX_PROJECT,
70
+ vertexLocation: process.env.GOOGLE_VERTEX_LOCATION,
71
+ // Azure
72
+ azureResourceName: process.env.AZURE_RESOURCE_NAME,
73
+ azureApiVersion: process.env.AZURE_API_VERSION,
74
+ modelOverrides
75
+ };
76
+ }
77
+ function buildModelOverrides(opts) {
78
+ const overrides = {};
79
+ if (opts.modelSelector) overrides.selector = opts.modelSelector;
80
+ if (opts.modelExtraction) overrides.extraction = opts.modelExtraction;
81
+ if (opts.modelExploration) overrides.exploration = opts.modelExploration;
82
+ if (opts.modelExplorationLight) overrides["exploration-light"] = opts.modelExplorationLight;
83
+ if (opts.modelReview) overrides.review = opts.modelReview;
84
+ if (opts.modelFallback) overrides.fallback = opts.modelFallback;
85
+ if (opts.modelVision) overrides.vision = opts.modelVision;
86
+ return Object.keys(overrides).length > 0 ? overrides : void 0;
87
+ }
88
+
89
+ // src/cli/help.ts
90
+ var GENERATE_HELP = `Usage: refrain generate [options]
91
+
92
+ Generate a runbook YAML by exploring a website with AI
93
+
94
+ Required:
95
+ --url <url> Start URL
96
+ --goal <text> Goal to achieve
97
+ --output <path> Output YAML path
98
+ --context <path> Context markdown file path
99
+
100
+ Options:
101
+ --headless <bool> Run in headless mode (default: true)
102
+ --screenshots <path> Screenshot output directory
103
+ --secrets <path> Secrets JSON file path
104
+ --max-iterations <num> Max exploration iterations (default: 20)
105
+ --step-delay <ms> Delay between steps in ms (default: 500)
106
+ --stall-check-interval <secs> Stall detection interval in seconds (default: 3)
107
+ --history-window <num> History window size (default: 10)
108
+ --max-failures <num> Max consecutive failures (default: 3)
109
+ --no-snapshot-filter Disable snapshot filtering
110
+ --debug-log <path> Debug log output path
111
+ --debug Enable debug console output
112
+ --video <path> Video recording output directory
113
+ --locale <lang> Locale (en / ja)
114
+ --stealth Enable stealth mode
115
+ --proxy <url> Proxy URL
116
+ --skill <name>,<name> Skill names (comma-separated)
117
+
118
+ AI Model:
119
+ --model <id> AI model ID (default: claude-sonnet-4-6)
120
+ --model-provider <provider> Provider (anthropic / openai / openai-compatible / google / azure / bedrock / vertex)
121
+ --model-base-url <url> Base URL for openai-compatible provider
122
+ --model-selector <id> Override model for selector resolution
123
+ --model-extraction <id> Override model for data extraction
124
+ --model-exploration <id> Override model for exploration
125
+ --model-review <id> Override model for review
126
+ --model-fallback <id> Override model for fallback
127
+ --model-exploration-light <id> Override model for light exploration
128
+ --enable-multi-model Enable multi-model mode
129
+
130
+ Examples:
131
+ $ refrain generate --url https://example.com --goal "Log in and view dashboard" --output ./runbook.yaml --context ./context.md
132
+ $ refrain generate --url https://example.com --goal "Search for products" --output ./search.yaml --context ./context.md --headless false
133
+ $ refrain generate --url https://example.com --goal "Create an order" --output ./order.yaml --context ./context.md --secrets ./secrets.json --model gpt-4o --model-provider openai`;
134
+ var EXECUTE_HELP = `Usage: refrain execute [options]
135
+
136
+ Execute a runbook YAML to automate browser operations
137
+
138
+ Required:
139
+ --runbook <path> Runbook YAML path
140
+ --context <path> Context markdown file path
141
+
142
+ Options:
143
+ --headless <bool> Run in headless mode (default: true)
144
+ --step-delay <ms> Delay between steps in ms
145
+ --screenshots <path> Screenshot output directory
146
+ --skip-confirmation Skip approval prompts
147
+ --data <path> CSV/JSON data file for batch execution
148
+ --secrets <path> Secrets JSON file path
149
+ --debug-log <path> Debug log output path
150
+ --debug Enable debug console output
151
+ --output-dir <path> Output directory for extracted data
152
+ --video <path> Video recording output directory
153
+ --locale <lang> Locale (en / ja)
154
+ --stealth Enable stealth mode
155
+ --proxy <url> Proxy URL
156
+ --skill <name>,<name> Skill names (comma-separated)
157
+ --report Force report generation
158
+
159
+ Approval & Notification:
160
+ --approval-mode <mode> Approval mode (web / slack / teams / discord)
161
+ --approval-timeout <ms> Approval timeout in ms
162
+ --notify <mode> Completion notification (slack / teams / discord)
163
+
164
+ Self-Healing:
165
+ --self-heal Enable self-healing mode
166
+ --max-retries <num> Max retries (self-heal default: 5)
167
+ --retry-warning-threshold <num> Retry warning threshold (self-heal default: 3)
168
+ --enable-selector-cache Enable selector cache
169
+ --enable-agent-fallback Enable agent fallback
170
+ --enable-vision-fallback Enable vision fallback
171
+
172
+ Plan:
173
+ --api-key <key> API key
174
+
175
+ AI Model:
176
+ --model <id> AI model ID (default: claude-sonnet-4-6)
177
+ --model-provider <provider> Provider (anthropic / openai / openai-compatible / google / azure / bedrock / vertex)
178
+ --model-base-url <url> Base URL for openai-compatible provider
179
+ --model-selector <id> Override model for selector resolution
180
+ --model-extraction <id> Override model for data extraction
181
+ --model-review <id> Override model for review
182
+ --model-fallback <id> Override model for fallback
183
+ --model-vision <id> Override model for vision
184
+
185
+ Examples:
186
+ $ refrain execute --runbook ./runbook.yaml --context ./context.md --headless false
187
+ $ refrain execute --runbook ./runbook.yaml --context ./context.md --data ./users.csv
188
+ $ refrain execute --runbook ./runbook.yaml --context ./context.md --self-heal
189
+ $ refrain execute --runbook ./runbook.yaml --context ./context.md --approval-mode slack --notify slack`;
190
+ var FIX_RUNBOOK_HELP = `Usage: refrain fix-runbook [options]
191
+
192
+ Apply fix suggestions from an execution report to a runbook
193
+
194
+ Required:
195
+ --runbook <path> Runbook YAML path
196
+ --report <path> Execution report path
197
+
198
+ Options:
199
+ --locale <lang> Locale (en / ja)
200
+
201
+ AI Model:
202
+ --model <id> AI model ID (default: claude-sonnet-4-6)
203
+ --model-provider <provider> Provider (anthropic / openai / openai-compatible / google / azure / bedrock / vertex)
204
+ --model-base-url <url> Base URL for openai-compatible provider
205
+ --model-review <id> Override model for review
206
+
207
+ Examples:
208
+ $ refrain fix-runbook --runbook ./runbook.yaml --report ./report.md
209
+ $ refrain fix-runbook --runbook ./runbook.yaml --report ./report.md --model gpt-4o --model-provider openai`;
210
+ var commandHelp = {
211
+ generate: GENERATE_HELP,
212
+ execute: EXECUTE_HELP,
213
+ "fix-runbook": FIX_RUNBOOK_HELP
214
+ };
215
+ function printCommandHelp(command) {
216
+ const help = commandHelp[command];
217
+ if (!help) return false;
218
+ console.log(help);
219
+ return true;
220
+ }
221
+ function checkHelpFlag(command) {
222
+ const args = process.argv.slice(2);
223
+ if (args.includes("--help") || args.includes("-h")) {
224
+ printCommandHelp(command);
225
+ process.exit(0);
226
+ }
227
+ }
228
+
229
+ export {
230
+ getRawArgs,
231
+ readContextFile,
232
+ validateNotifyMode,
233
+ parseModelConfig,
234
+ checkHelpFlag
235
+ };
236
+ //# sourceMappingURL=chunk-2BVDAJZT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/cli/config-helpers.ts","../../../src/cli/help.ts"],"sourcesContent":["/**\n * cli/config-helpers --- CLI引数パースの共通ヘルパー\n */\n\nimport { readFile } from \"node:fs/promises\";\nimport { cancel } from \"./prompts\";\nimport type { AIModelConfig, ModelProvider, ModelPurpose } from \"../harness/ai-model\";\nimport { PROVIDER_DEFAULT_MODELS } from \"../harness/ai-model\";\nimport { t } from \"../i18n\";\n\n/** process.argv から先頭の \"--\" を除去して引数を取得 */\nexport function getRawArgs(): string[] {\n const rawArgs = process.argv.slice(2);\n return rawArgs[0] === \"--\" ? rawArgs.slice(1) : rawArgs;\n}\n\n/** context markdown ファイルの読み込み(path は呼び出し元でバリデーション済み) */\nexport async function readContextFile(path: string): Promise<string> {\n return readFile(path, \"utf-8\");\n}\n\n/** --notify のバリデーション */\nexport function validateNotifyMode(raw?: string): \"slack\" | \"teams\" | \"discord\" | undefined {\n if (!raw) return undefined;\n const valid = [\"slack\", \"teams\", \"discord\"];\n if (!valid.includes(raw)) {\n cancel(`--notify must be one of: ${valid.join(\", \")}`);\n process.exit(1);\n }\n return raw as \"slack\" | \"teams\" | \"discord\";\n}\n\nconst VALID_PROVIDERS: ModelProvider[] = [\n \"anthropic\", \"openai\", \"openai-compatible\", \"google\", \"azure\", \"bedrock\", \"vertex\",\n];\n\n/** モデル関連のCLI引数 + 環境変数 → AIModelConfig を生成 */\nexport function parseModelConfig(values: {\n model?: string;\n \"model-provider\"?: string;\n \"model-base-url\"?: string;\n \"model-selector\"?: string;\n \"model-extraction\"?: string;\n \"model-exploration\"?: string;\n \"model-review\"?: string;\n \"model-fallback\"?: string;\n \"model-vision\"?: string;\n \"model-exploration-light\"?: string;\n}): AIModelConfig {\n const modelId = values.model ?? process.env.AI_MODEL_ID;\n const rawProvider = values[\"model-provider\"] ?? process.env.AI_MODEL_PROVIDER;\n const baseURL = values[\"model-base-url\"] ?? process.env.OPENAI_COMPATIBLE_BASE_URL;\n const modelSelector = values[\"model-selector\"];\n const modelExtraction = values[\"model-extraction\"];\n const modelExploration = values[\"model-exploration\"];\n const modelReview = values[\"model-review\"];\n const modelFallback = values[\"model-fallback\"];\n const modelVision = values[\"model-vision\"];\n const modelExplorationLight = values[\"model-exploration-light\"];\n\n // provider 必須\n if (!rawProvider) {\n cancel(t(\"cli.providerRequired\"));\n process.exit(1);\n }\n\n // provider バリデーション\n const provider = rawProvider as ModelProvider;\n if (!VALID_PROVIDERS.includes(provider)) {\n cancel(`--model-provider は ${VALID_PROVIDERS.join(\" / \")} を指定してください`);\n process.exit(1);\n }\n\n // 用途別オーバーライドの構築\n const modelOverrides = buildModelOverrides({ modelSelector, modelExtraction, modelExploration, modelReview, modelFallback, modelVision, modelExplorationLight });\n\n return {\n modelId: modelId ?? PROVIDER_DEFAULT_MODELS[provider],\n provider,\n baseURL,\n apiKey: process.env.OPENAI_COMPATIBLE_API_KEY,\n // Bedrock\n bedrockRegion: process.env.AWS_REGION,\n bedrockAccessKeyId: process.env.AWS_ACCESS_KEY_ID,\n bedrockSecretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,\n bedrockSessionToken: process.env.AWS_SESSION_TOKEN,\n // Vertex\n vertexProject: process.env.GOOGLE_VERTEX_PROJECT,\n vertexLocation: process.env.GOOGLE_VERTEX_LOCATION,\n // Azure\n azureResourceName: process.env.AZURE_RESOURCE_NAME,\n azureApiVersion: process.env.AZURE_API_VERSION,\n modelOverrides,\n };\n}\n\n/** --model-* から用途別オーバーライドを構築 */\nfunction buildModelOverrides(opts: {\n modelSelector?: string;\n modelExtraction?: string;\n modelExploration?: string;\n modelExplorationLight?: string;\n modelReview?: string;\n modelFallback?: string;\n modelVision?: string;\n}): Partial<Record<ModelPurpose, string>> | undefined {\n const overrides: Partial<Record<ModelPurpose, string>> = {};\n if (opts.modelSelector) overrides.selector = opts.modelSelector;\n if (opts.modelExtraction) overrides.extraction = opts.modelExtraction;\n if (opts.modelExploration) overrides.exploration = opts.modelExploration;\n if (opts.modelExplorationLight) overrides[\"exploration-light\"] = opts.modelExplorationLight;\n if (opts.modelReview) overrides.review = opts.modelReview;\n if (opts.modelFallback) overrides.fallback = opts.modelFallback;\n if (opts.modelVision) overrides.vision = opts.modelVision;\n return Object.keys(overrides).length > 0 ? overrides : undefined;\n}\n","/**\n * CLI コマンド別ヘルプテキスト\n */\n\nconst GENERATE_HELP = `Usage: refrain generate [options]\n\nGenerate a runbook YAML by exploring a website with AI\n\nRequired:\n --url <url> Start URL\n --goal <text> Goal to achieve\n --output <path> Output YAML path\n --context <path> Context markdown file path\n\nOptions:\n --headless <bool> Run in headless mode (default: true)\n --screenshots <path> Screenshot output directory\n --secrets <path> Secrets JSON file path\n --max-iterations <num> Max exploration iterations (default: 20)\n --step-delay <ms> Delay between steps in ms (default: 500)\n --stall-check-interval <secs> Stall detection interval in seconds (default: 3)\n --history-window <num> History window size (default: 10)\n --max-failures <num> Max consecutive failures (default: 3)\n --no-snapshot-filter Disable snapshot filtering\n --debug-log <path> Debug log output path\n --debug Enable debug console output\n --video <path> Video recording output directory\n --locale <lang> Locale (en / ja)\n --stealth Enable stealth mode\n --proxy <url> Proxy URL\n --skill <name>,<name> Skill names (comma-separated)\n\nAI Model:\n --model <id> AI model ID (default: claude-sonnet-4-6)\n --model-provider <provider> Provider (anthropic / openai / openai-compatible / google / azure / bedrock / vertex)\n --model-base-url <url> Base URL for openai-compatible provider\n --model-selector <id> Override model for selector resolution\n --model-extraction <id> Override model for data extraction\n --model-exploration <id> Override model for exploration\n --model-review <id> Override model for review\n --model-fallback <id> Override model for fallback\n --model-exploration-light <id> Override model for light exploration\n --enable-multi-model Enable multi-model mode\n\nExamples:\n $ refrain generate --url https://example.com --goal \"Log in and view dashboard\" --output ./runbook.yaml --context ./context.md\n $ refrain generate --url https://example.com --goal \"Search for products\" --output ./search.yaml --context ./context.md --headless false\n $ refrain generate --url https://example.com --goal \"Create an order\" --output ./order.yaml --context ./context.md --secrets ./secrets.json --model gpt-4o --model-provider openai`;\n\nconst EXECUTE_HELP = `Usage: refrain execute [options]\n\nExecute a runbook YAML to automate browser operations\n\nRequired:\n --runbook <path> Runbook YAML path\n --context <path> Context markdown file path\n\nOptions:\n --headless <bool> Run in headless mode (default: true)\n --step-delay <ms> Delay between steps in ms\n --screenshots <path> Screenshot output directory\n --skip-confirmation Skip approval prompts\n --data <path> CSV/JSON data file for batch execution\n --secrets <path> Secrets JSON file path\n --debug-log <path> Debug log output path\n --debug Enable debug console output\n --output-dir <path> Output directory for extracted data\n --video <path> Video recording output directory\n --locale <lang> Locale (en / ja)\n --stealth Enable stealth mode\n --proxy <url> Proxy URL\n --skill <name>,<name> Skill names (comma-separated)\n --report Force report generation\n\nApproval & Notification:\n --approval-mode <mode> Approval mode (web / slack / teams / discord)\n --approval-timeout <ms> Approval timeout in ms\n --notify <mode> Completion notification (slack / teams / discord)\n\nSelf-Healing:\n --self-heal Enable self-healing mode\n --max-retries <num> Max retries (self-heal default: 5)\n --retry-warning-threshold <num> Retry warning threshold (self-heal default: 3)\n --enable-selector-cache Enable selector cache\n --enable-agent-fallback Enable agent fallback\n --enable-vision-fallback Enable vision fallback\n\nPlan:\n --api-key <key> API key\n\nAI Model:\n --model <id> AI model ID (default: claude-sonnet-4-6)\n --model-provider <provider> Provider (anthropic / openai / openai-compatible / google / azure / bedrock / vertex)\n --model-base-url <url> Base URL for openai-compatible provider\n --model-selector <id> Override model for selector resolution\n --model-extraction <id> Override model for data extraction\n --model-review <id> Override model for review\n --model-fallback <id> Override model for fallback\n --model-vision <id> Override model for vision\n\nExamples:\n $ refrain execute --runbook ./runbook.yaml --context ./context.md --headless false\n $ refrain execute --runbook ./runbook.yaml --context ./context.md --data ./users.csv\n $ refrain execute --runbook ./runbook.yaml --context ./context.md --self-heal\n $ refrain execute --runbook ./runbook.yaml --context ./context.md --approval-mode slack --notify slack`;\n\nconst FIX_RUNBOOK_HELP = `Usage: refrain fix-runbook [options]\n\nApply fix suggestions from an execution report to a runbook\n\nRequired:\n --runbook <path> Runbook YAML path\n --report <path> Execution report path\n\nOptions:\n --locale <lang> Locale (en / ja)\n\nAI Model:\n --model <id> AI model ID (default: claude-sonnet-4-6)\n --model-provider <provider> Provider (anthropic / openai / openai-compatible / google / azure / bedrock / vertex)\n --model-base-url <url> Base URL for openai-compatible provider\n --model-review <id> Override model for review\n\nExamples:\n $ refrain fix-runbook --runbook ./runbook.yaml --report ./report.md\n $ refrain fix-runbook --runbook ./runbook.yaml --report ./report.md --model gpt-4o --model-provider openai`;\n\nconst commandHelp: Record<string, string> = {\n generate: GENERATE_HELP,\n execute: EXECUTE_HELP,\n \"fix-runbook\": FIX_RUNBOOK_HELP,\n};\n\n/**\n * コマンド別ヘルプを出力する。対応コマンドなら true を返す。\n */\nexport function printCommandHelp(command: string): boolean {\n const help = commandHelp[command];\n if (!help) return false;\n console.log(help);\n return true;\n}\n\n/**\n * process.argv に --help / -h が含まれていればヘルプを表示して exit する。\n * 各コマンドの parseArgs() 冒頭で呼ぶ。\n */\nexport function checkHelpFlag(command: string): void {\n const args = process.argv.slice(2);\n if (args.includes(\"--help\") || args.includes(\"-h\")) {\n printCommandHelp(command);\n process.exit(0);\n }\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env node
2
+ var __defProp = Object.defineProperty;
3
+ var __export = (target, all) => {
4
+ for (var name in all)
5
+ __defProp(target, name, { get: all[name], enumerable: true });
6
+ };
7
+
8
+ export {
9
+ __export
10
+ };
11
+ //# sourceMappingURL=chunk-2H7UOFLK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}