@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.
- package/dist/ai-model-FM6GWCID.js +37 -0
- package/dist/ai-model-FM6GWCID.js.map +1 -0
- package/dist/chunk-2BVDAJZT.js +236 -0
- package/dist/chunk-2BVDAJZT.js.map +1 -0
- package/dist/chunk-2H7UOFLK.js +11 -0
- package/dist/chunk-2H7UOFLK.js.map +1 -0
- package/dist/chunk-7UCVPKD4.js +902 -0
- package/dist/chunk-7UCVPKD4.js.map +1 -0
- package/dist/chunk-AG3CFMYU.js +36 -0
- package/dist/chunk-AG3CFMYU.js.map +1 -0
- package/dist/chunk-CLYJHKPY.js +1131 -0
- package/dist/chunk-CLYJHKPY.js.map +1 -0
- package/dist/chunk-D5SI2PHK.js +74 -0
- package/dist/chunk-D5SI2PHK.js.map +1 -0
- package/dist/chunk-DJVUITRB.js +9084 -0
- package/dist/chunk-DJVUITRB.js.map +1 -0
- package/dist/chunk-H47NWH7N.js +4427 -0
- package/dist/chunk-H47NWH7N.js.map +1 -0
- package/dist/chunk-HQDXLWAY.js +109 -0
- package/dist/chunk-HQDXLWAY.js.map +1 -0
- package/dist/chunk-IGFCYKHC.js +1974 -0
- package/dist/chunk-IGFCYKHC.js.map +1 -0
- package/dist/chunk-RT664YIO.js +245 -0
- package/dist/chunk-RT664YIO.js.map +1 -0
- package/dist/chunk-RYIJPYM3.js +164 -0
- package/dist/chunk-RYIJPYM3.js.map +1 -0
- package/dist/chunk-TDSM3UXI.js +40 -0
- package/dist/chunk-TDSM3UXI.js.map +1 -0
- package/dist/chunk-UGPXCQY3.js +778 -0
- package/dist/chunk-UGPXCQY3.js.map +1 -0
- package/dist/chunk-VPK2MQAZ.js +589 -0
- package/dist/chunk-VPK2MQAZ.js.map +1 -0
- package/dist/chunk-WEYR56ZN.js +953 -0
- package/dist/chunk-WEYR56ZN.js.map +1 -0
- package/dist/chunk-XMFCXPYU.js +275 -0
- package/dist/chunk-XMFCXPYU.js.map +1 -0
- package/dist/chunk-Z33FCOTZ.js +251 -0
- package/dist/chunk-Z33FCOTZ.js.map +1 -0
- package/dist/cli.js +59 -0
- package/dist/cli.js.map +1 -0
- package/dist/compose-MTSIJY5D.js +547 -0
- package/dist/compose-MTSIJY5D.js.map +1 -0
- package/dist/config-ZSUNCFXR.js +9 -0
- package/dist/config-ZSUNCFXR.js.map +1 -0
- package/dist/fix-runbook-ZSBOTLC2.js +294 -0
- package/dist/fix-runbook-ZSBOTLC2.js.map +1 -0
- package/dist/google-sheets-DRWIVEVC.js +482 -0
- package/dist/google-sheets-DRWIVEVC.js.map +1 -0
- package/dist/registry-LZLYTNDJ.js +17 -0
- package/dist/registry-LZLYTNDJ.js.map +1 -0
- package/dist/runbook-data-helpers-KRR2SH76.js +16 -0
- package/dist/runbook-data-helpers-KRR2SH76.js.map +1 -0
- package/dist/runbook-executor-K7T6RJWJ.js +1480 -0
- package/dist/runbook-executor-K7T6RJWJ.js.map +1 -0
- package/dist/runbook-generator-MPXJBQ5N.js +800 -0
- package/dist/runbook-generator-MPXJBQ5N.js.map +1 -0
- package/dist/runbook-schema-3T6TP3JJ.js +35 -0
- package/dist/runbook-schema-3T6TP3JJ.js.map +1 -0
- package/dist/runbook-store-G5GUOWRR.js +11 -0
- package/dist/runbook-store-G5GUOWRR.js.map +1 -0
- package/dist/schema-5G6UQSPT.js +91 -0
- package/dist/schema-5G6UQSPT.js.map +1 -0
- package/dist/server-AG3LXQBI.js +8778 -0
- package/dist/server-AG3LXQBI.js.map +1 -0
- package/dist/tenant-ai-config-QPFEJUVJ.js +14 -0
- package/dist/tenant-ai-config-QPFEJUVJ.js.map +1 -0
- package/dist/yaml-patcher-VGUS2JGH.js +15 -0
- package/dist/yaml-patcher-VGUS2JGH.js.map +1 -0
- 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":[]}
|