@docyrus/docyrus 0.0.58 → 0.0.60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +46 -0
- package/agent-loader.js +1 -1
- package/agent-loader.js.map +2 -2
- package/main.js +361 -23
- package/main.js.map +2 -2
- package/package.json +1 -1
- package/resources/browser-tools/browser-click.js +74 -0
- package/resources/browser-tools/browser-client.js +236 -0
- package/resources/browser-tools/browser-close.js +19 -0
- package/resources/browser-tools/browser-console.js +73 -0
- package/resources/browser-tools/browser-content.js +36 -75
- package/resources/browser-tools/browser-cookies.js +19 -14
- package/resources/browser-tools/browser-daemon.js +452 -0
- package/resources/browser-tools/browser-devtools.js +62 -0
- package/resources/browser-tools/browser-eval.js +16 -22
- package/resources/browser-tools/browser-fill.js +70 -0
- package/resources/browser-tools/browser-info.js +13 -0
- package/resources/browser-tools/browser-nav.js +21 -22
- package/resources/browser-tools/browser-network.js +91 -0
- package/resources/browser-tools/browser-run-script.js +12 -30
- package/resources/browser-tools/browser-screenshot.js +22 -22
- package/resources/browser-tools/browser-select.js +59 -0
- package/resources/browser-tools/browser-snapshot.js +100 -0
- package/resources/browser-tools/browser-start.js +101 -85
- package/resources/browser-tools/browser-tabs.js +38 -0
- package/resources/browser-tools/browser-wait.js +50 -0
- package/resources/pi-agent/skills/docyrus-chrome-devtools-cli/SKILL.md +157 -46
- package/server-loader.js +46 -233
- package/server-loader.js.map +4 -4
- package/resources/browser-tools/browser-connect.js +0 -172
- package/resources/browser-tools/browser-pick.js +0 -143
- package/resources/pi-agent/extensions/docyrus-web-browser.ts +0 -31
- package/resources/pi-agent/shared/docyrusWebBrowserProtocol.ts +0 -169
- package/resources/pi-agent/skills/agent-browser/SKILL.md +0 -779
- package/resources/pi-agent/skills/agent-browser/references/authentication.md +0 -303
- package/resources/pi-agent/skills/agent-browser/references/commands.md +0 -295
- package/resources/pi-agent/skills/agent-browser/references/profiling.md +0 -120
- package/resources/pi-agent/skills/agent-browser/references/proxy-support.md +0 -194
- package/resources/pi-agent/skills/agent-browser/references/session-management.md +0 -193
- package/resources/pi-agent/skills/agent-browser/references/snapshot-refs.md +0 -219
- package/resources/pi-agent/skills/agent-browser/references/video-recording.md +0 -173
- package/resources/pi-agent/skills/agent-browser/templates/authenticated-session.sh +0 -105
- package/resources/pi-agent/skills/agent-browser/templates/capture-workflow.sh +0 -69
- package/resources/pi-agent/skills/agent-browser/templates/form-automation.sh +0 -62
package/main.js
CHANGED
|
@@ -139349,7 +139349,7 @@ function buildInputSchema(args2, env2, options2) {
|
|
|
139349
139349
|
// package.json
|
|
139350
139350
|
var package_default = {
|
|
139351
139351
|
name: "@docyrus/docyrus",
|
|
139352
|
-
version: "0.0.
|
|
139352
|
+
version: "0.0.60",
|
|
139353
139353
|
private: false,
|
|
139354
139354
|
description: "Docyrus API CLI",
|
|
139355
139355
|
main: "./main.js",
|
|
@@ -140733,6 +140733,31 @@ function createAuthCli(dependencies) {
|
|
|
140733
140733
|
});
|
|
140734
140734
|
}
|
|
140735
140735
|
});
|
|
140736
|
+
authCli.command("sandbox", {
|
|
140737
|
+
description: "Refresh and inject fresh authentication tokens into the active sandbox",
|
|
140738
|
+
options: external_exports.object({
|
|
140739
|
+
appId: external_exports.string().optional().describe("App ID; defaults to DOCYRUS_SANDBOX_APP_ID env var")
|
|
140740
|
+
}),
|
|
140741
|
+
run: async (context) => {
|
|
140742
|
+
const appId = context.options.appId?.trim() || getOptionalEnvValue(context.env, "DOCYRUS_SANDBOX_APP_ID");
|
|
140743
|
+
if (!appId) {
|
|
140744
|
+
throw new UserInputError(
|
|
140745
|
+
"App ID is required. Pass --appId or set the DOCYRUS_SANDBOX_APP_ID environment variable."
|
|
140746
|
+
);
|
|
140747
|
+
}
|
|
140748
|
+
const apiBaseUrl = await dependencies.environmentConfigService.getActiveApiBaseUrl();
|
|
140749
|
+
const apiClient = dependencies.createApiClient(apiBaseUrl);
|
|
140750
|
+
const response = await apiClient.request({
|
|
140751
|
+
method: "POST",
|
|
140752
|
+
path: `/ai/sandbox/app/${appId}/refreshAuth`
|
|
140753
|
+
});
|
|
140754
|
+
return await injectContext({
|
|
140755
|
+
apiBaseUrl,
|
|
140756
|
+
authStore: dependencies.authStore,
|
|
140757
|
+
payload: response.data
|
|
140758
|
+
});
|
|
140759
|
+
}
|
|
140760
|
+
});
|
|
140736
140761
|
return authCli;
|
|
140737
140762
|
}
|
|
140738
140763
|
|
|
@@ -140880,10 +140905,17 @@ function createBrowserCli(options2 = {}) {
|
|
|
140880
140905
|
args: external_exports.object({
|
|
140881
140906
|
code: external_exports.string().min(1)
|
|
140882
140907
|
}),
|
|
140908
|
+
options: external_exports.object({
|
|
140909
|
+
timeout: external_exports.number().int().positive().optional().describe("Timeout in milliseconds (default: 30000)")
|
|
140910
|
+
}),
|
|
140883
140911
|
run: async (context) => {
|
|
140912
|
+
const args2 = [context.args.code];
|
|
140913
|
+
if (context.options.timeout !== void 0) {
|
|
140914
|
+
args2.push("--timeout", String(context.options.timeout));
|
|
140915
|
+
}
|
|
140884
140916
|
return executeBrowserTool({
|
|
140885
140917
|
scriptName: "browser-eval.js",
|
|
140886
|
-
args:
|
|
140918
|
+
args: args2,
|
|
140887
140919
|
outputMode: "json",
|
|
140888
140920
|
cwd: options2.cwd,
|
|
140889
140921
|
processExecPath: options2.processExecPath,
|
|
@@ -140894,27 +140926,21 @@ function createBrowserCli(options2 = {}) {
|
|
|
140894
140926
|
});
|
|
140895
140927
|
browserCli.command("screenshot", {
|
|
140896
140928
|
description: "Capture a screenshot of the active browser tab",
|
|
140897
|
-
|
|
140898
|
-
|
|
140899
|
-
|
|
140900
|
-
args: [],
|
|
140901
|
-
outputMode: "json",
|
|
140902
|
-
cwd: options2.cwd,
|
|
140903
|
-
processExecPath: options2.processExecPath,
|
|
140904
|
-
spawnSyncFn: options2.spawnSyncFn,
|
|
140905
|
-
resolveBrowserToolsResourceRootFn: options2.resolveBrowserToolsResourceRootFn
|
|
140906
|
-
});
|
|
140907
|
-
}
|
|
140908
|
-
});
|
|
140909
|
-
browserCli.command("pick", {
|
|
140910
|
-
description: "Interactively pick DOM elements in the active browser tab",
|
|
140911
|
-
args: external_exports.object({
|
|
140912
|
-
message: external_exports.string().min(1)
|
|
140929
|
+
options: external_exports.object({
|
|
140930
|
+
full: external_exports.boolean().optional().describe("Capture full page instead of just the viewport"),
|
|
140931
|
+
base64: external_exports.boolean().optional().describe("Return base64-encoded image data instead of a file path")
|
|
140913
140932
|
}),
|
|
140914
140933
|
run: async (context) => {
|
|
140934
|
+
const args2 = [];
|
|
140935
|
+
if (context.options.full) {
|
|
140936
|
+
args2.push("--full");
|
|
140937
|
+
}
|
|
140938
|
+
if (context.options.base64) {
|
|
140939
|
+
args2.push("--base64");
|
|
140940
|
+
}
|
|
140915
140941
|
return executeBrowserTool({
|
|
140916
|
-
scriptName: "browser-
|
|
140917
|
-
args:
|
|
140942
|
+
scriptName: "browser-screenshot.js",
|
|
140943
|
+
args: args2,
|
|
140918
140944
|
outputMode: "json",
|
|
140919
140945
|
cwd: options2.cwd,
|
|
140920
140946
|
processExecPath: options2.processExecPath,
|
|
@@ -140925,10 +140951,21 @@ function createBrowserCli(options2 = {}) {
|
|
|
140925
140951
|
});
|
|
140926
140952
|
browserCli.command("cookies", {
|
|
140927
140953
|
description: "Show cookies for the active browser tab",
|
|
140928
|
-
|
|
140954
|
+
options: external_exports.object({
|
|
140955
|
+
name: external_exports.string().optional().describe("Filter cookies by exact name"),
|
|
140956
|
+
domain: external_exports.string().optional().describe("Filter cookies by domain (substring match)")
|
|
140957
|
+
}),
|
|
140958
|
+
run: async (context) => {
|
|
140959
|
+
const args2 = [];
|
|
140960
|
+
if (context.options.name) {
|
|
140961
|
+
args2.push("--name", context.options.name);
|
|
140962
|
+
}
|
|
140963
|
+
if (context.options.domain) {
|
|
140964
|
+
args2.push("--domain", context.options.domain);
|
|
140965
|
+
}
|
|
140929
140966
|
return executeBrowserTool({
|
|
140930
140967
|
scriptName: "browser-cookies.js",
|
|
140931
|
-
args:
|
|
140968
|
+
args: args2,
|
|
140932
140969
|
outputMode: "json",
|
|
140933
140970
|
cwd: options2.cwd,
|
|
140934
140971
|
processExecPath: options2.processExecPath,
|
|
@@ -140946,6 +140983,7 @@ function createBrowserCli(options2 = {}) {
|
|
|
140946
140983
|
return executeBrowserTool({
|
|
140947
140984
|
scriptName: "browser-content.js",
|
|
140948
140985
|
args: [context.args.url],
|
|
140986
|
+
outputMode: "json",
|
|
140949
140987
|
cwd: options2.cwd,
|
|
140950
140988
|
processExecPath: options2.processExecPath,
|
|
140951
140989
|
spawnSyncFn: options2.spawnSyncFn,
|
|
@@ -140985,6 +141023,286 @@ function createBrowserCli(options2 = {}) {
|
|
|
140985
141023
|
});
|
|
140986
141024
|
}
|
|
140987
141025
|
});
|
|
141026
|
+
browserCli.command("wait", {
|
|
141027
|
+
description: "Wait for a condition before proceeding",
|
|
141028
|
+
options: external_exports.object({
|
|
141029
|
+
idle: external_exports.boolean().optional().describe("Wait for network idle"),
|
|
141030
|
+
selector: external_exports.string().optional().describe("Wait for CSS selector to appear"),
|
|
141031
|
+
url: external_exports.string().optional().describe("Wait for URL to match glob pattern"),
|
|
141032
|
+
timeout: external_exports.number().int().positive().optional().describe("Maximum wait time in ms (default: 15000)")
|
|
141033
|
+
}),
|
|
141034
|
+
args: external_exports.object({
|
|
141035
|
+
ms: external_exports.string().optional().describe("Fixed delay in milliseconds")
|
|
141036
|
+
}),
|
|
141037
|
+
run: async (context) => {
|
|
141038
|
+
const args2 = [];
|
|
141039
|
+
if (context.options.idle) {
|
|
141040
|
+
args2.push("--idle");
|
|
141041
|
+
}
|
|
141042
|
+
if (context.options.selector) {
|
|
141043
|
+
args2.push("--selector", context.options.selector);
|
|
141044
|
+
}
|
|
141045
|
+
if (context.options.url) {
|
|
141046
|
+
args2.push("--url", context.options.url);
|
|
141047
|
+
}
|
|
141048
|
+
if (context.options.timeout !== void 0) {
|
|
141049
|
+
args2.push("--timeout", String(context.options.timeout));
|
|
141050
|
+
}
|
|
141051
|
+
if (context.args.ms) {
|
|
141052
|
+
args2.push(context.args.ms);
|
|
141053
|
+
}
|
|
141054
|
+
return executeBrowserTool({
|
|
141055
|
+
scriptName: "browser-wait.js",
|
|
141056
|
+
args: args2,
|
|
141057
|
+
outputMode: "json",
|
|
141058
|
+
cwd: options2.cwd,
|
|
141059
|
+
processExecPath: options2.processExecPath,
|
|
141060
|
+
spawnSyncFn: options2.spawnSyncFn,
|
|
141061
|
+
resolveBrowserToolsResourceRootFn: options2.resolveBrowserToolsResourceRootFn
|
|
141062
|
+
});
|
|
141063
|
+
}
|
|
141064
|
+
});
|
|
141065
|
+
browserCli.command("snapshot", {
|
|
141066
|
+
description: "Get a compact snapshot of page elements with refs for interaction",
|
|
141067
|
+
options: external_exports.object({
|
|
141068
|
+
all: external_exports.boolean().optional().describe("Include all elements, not just interactive ones"),
|
|
141069
|
+
selector: external_exports.string().optional().describe("Scope snapshot to a CSS selector subtree")
|
|
141070
|
+
}),
|
|
141071
|
+
run: async (context) => {
|
|
141072
|
+
const args2 = [];
|
|
141073
|
+
if (context.options.all) {
|
|
141074
|
+
args2.push("--all");
|
|
141075
|
+
}
|
|
141076
|
+
if (context.options.selector) {
|
|
141077
|
+
args2.push("--selector", context.options.selector);
|
|
141078
|
+
}
|
|
141079
|
+
return executeBrowserTool({
|
|
141080
|
+
scriptName: "browser-snapshot.js",
|
|
141081
|
+
args: args2,
|
|
141082
|
+
outputMode: "json",
|
|
141083
|
+
cwd: options2.cwd,
|
|
141084
|
+
processExecPath: options2.processExecPath,
|
|
141085
|
+
spawnSyncFn: options2.spawnSyncFn,
|
|
141086
|
+
resolveBrowserToolsResourceRootFn: options2.resolveBrowserToolsResourceRootFn
|
|
141087
|
+
});
|
|
141088
|
+
}
|
|
141089
|
+
});
|
|
141090
|
+
browserCli.command("click", {
|
|
141091
|
+
description: "Click an element by snapshot ref, CSS selector, or x,y coordinates",
|
|
141092
|
+
args: external_exports.object({
|
|
141093
|
+
target: external_exports.string().min(1).describe("Snapshot ref (@e1), CSS selector, or x coordinate"),
|
|
141094
|
+
y: external_exports.string().optional().describe("y coordinate (when using coordinate mode)")
|
|
141095
|
+
}),
|
|
141096
|
+
options: external_exports.object({
|
|
141097
|
+
timeout: external_exports.number().int().positive().optional().describe("Timeout in milliseconds (default: 5000)")
|
|
141098
|
+
}),
|
|
141099
|
+
run: async (context) => {
|
|
141100
|
+
const args2 = [context.args.target];
|
|
141101
|
+
if (context.args.y) {
|
|
141102
|
+
args2.push(context.args.y);
|
|
141103
|
+
}
|
|
141104
|
+
if (context.options.timeout !== void 0) {
|
|
141105
|
+
args2.push("--timeout", String(context.options.timeout));
|
|
141106
|
+
}
|
|
141107
|
+
return executeBrowserTool({
|
|
141108
|
+
scriptName: "browser-click.js",
|
|
141109
|
+
args: args2,
|
|
141110
|
+
outputMode: "json",
|
|
141111
|
+
cwd: options2.cwd,
|
|
141112
|
+
processExecPath: options2.processExecPath,
|
|
141113
|
+
spawnSyncFn: options2.spawnSyncFn,
|
|
141114
|
+
resolveBrowserToolsResourceRootFn: options2.resolveBrowserToolsResourceRootFn
|
|
141115
|
+
});
|
|
141116
|
+
}
|
|
141117
|
+
});
|
|
141118
|
+
browserCli.command("fill", {
|
|
141119
|
+
description: "Fill a value into an input/textarea by snapshot ref or CSS selector",
|
|
141120
|
+
args: external_exports.object({
|
|
141121
|
+
target: external_exports.string().min(1).describe("Snapshot ref (@e1) or CSS selector"),
|
|
141122
|
+
value: external_exports.string().describe("Value to type into the element")
|
|
141123
|
+
}),
|
|
141124
|
+
options: external_exports.object({
|
|
141125
|
+
timeout: external_exports.number().int().positive().optional().describe("Timeout in milliseconds (default: 5000)")
|
|
141126
|
+
}),
|
|
141127
|
+
run: async (context) => {
|
|
141128
|
+
const args2 = [context.args.target, context.args.value];
|
|
141129
|
+
if (context.options.timeout !== void 0) {
|
|
141130
|
+
args2.push("--timeout", String(context.options.timeout));
|
|
141131
|
+
}
|
|
141132
|
+
return executeBrowserTool({
|
|
141133
|
+
scriptName: "browser-fill.js",
|
|
141134
|
+
args: args2,
|
|
141135
|
+
outputMode: "json",
|
|
141136
|
+
cwd: options2.cwd,
|
|
141137
|
+
processExecPath: options2.processExecPath,
|
|
141138
|
+
spawnSyncFn: options2.spawnSyncFn,
|
|
141139
|
+
resolveBrowserToolsResourceRootFn: options2.resolveBrowserToolsResourceRootFn
|
|
141140
|
+
});
|
|
141141
|
+
}
|
|
141142
|
+
});
|
|
141143
|
+
browserCli.command("select", {
|
|
141144
|
+
description: "Select a dropdown option by snapshot ref or CSS selector",
|
|
141145
|
+
args: external_exports.object({
|
|
141146
|
+
target: external_exports.string().min(1).describe("Snapshot ref (@e1) or CSS selector"),
|
|
141147
|
+
value: external_exports.string().min(1).describe("Option text or value to select")
|
|
141148
|
+
}),
|
|
141149
|
+
options: external_exports.object({
|
|
141150
|
+
timeout: external_exports.number().int().positive().optional().describe("Timeout in milliseconds (default: 5000)")
|
|
141151
|
+
}),
|
|
141152
|
+
run: async (context) => {
|
|
141153
|
+
const args2 = [context.args.target, context.args.value];
|
|
141154
|
+
if (context.options.timeout !== void 0) {
|
|
141155
|
+
args2.push("--timeout", String(context.options.timeout));
|
|
141156
|
+
}
|
|
141157
|
+
return executeBrowserTool({
|
|
141158
|
+
scriptName: "browser-select.js",
|
|
141159
|
+
args: args2,
|
|
141160
|
+
outputMode: "json",
|
|
141161
|
+
cwd: options2.cwd,
|
|
141162
|
+
processExecPath: options2.processExecPath,
|
|
141163
|
+
spawnSyncFn: options2.spawnSyncFn,
|
|
141164
|
+
resolveBrowserToolsResourceRootFn: options2.resolveBrowserToolsResourceRootFn
|
|
141165
|
+
});
|
|
141166
|
+
}
|
|
141167
|
+
});
|
|
141168
|
+
browserCli.command("console", {
|
|
141169
|
+
description: "Capture console messages from the active page",
|
|
141170
|
+
options: external_exports.object({
|
|
141171
|
+
level: external_exports.string().optional().describe("Filter by level: log, warn, error, info, debug"),
|
|
141172
|
+
listen: external_exports.number().int().positive().optional().describe("Listen for new messages for N milliseconds")
|
|
141173
|
+
}),
|
|
141174
|
+
run: async (context) => {
|
|
141175
|
+
const args2 = [];
|
|
141176
|
+
if (context.options.level) {
|
|
141177
|
+
args2.push("--level", context.options.level);
|
|
141178
|
+
}
|
|
141179
|
+
if (context.options.listen !== void 0) {
|
|
141180
|
+
args2.push("--listen", String(context.options.listen));
|
|
141181
|
+
}
|
|
141182
|
+
return executeBrowserTool({
|
|
141183
|
+
scriptName: "browser-console.js",
|
|
141184
|
+
args: args2,
|
|
141185
|
+
outputMode: "json",
|
|
141186
|
+
cwd: options2.cwd,
|
|
141187
|
+
processExecPath: options2.processExecPath,
|
|
141188
|
+
spawnSyncFn: options2.spawnSyncFn,
|
|
141189
|
+
resolveBrowserToolsResourceRootFn: options2.resolveBrowserToolsResourceRootFn
|
|
141190
|
+
});
|
|
141191
|
+
}
|
|
141192
|
+
});
|
|
141193
|
+
browserCli.command("network", {
|
|
141194
|
+
description: "Inspect captured network requests",
|
|
141195
|
+
options: external_exports.object({
|
|
141196
|
+
method: external_exports.string().optional().describe("Filter by HTTP method (GET, POST, etc.)"),
|
|
141197
|
+
status: external_exports.string().optional().describe("Filter by status code or pattern (200, 4xx, 5xx)"),
|
|
141198
|
+
url: external_exports.string().optional().describe("Filter by URL substring"),
|
|
141199
|
+
listen: external_exports.number().int().positive().optional().describe("Listen for new requests for N milliseconds")
|
|
141200
|
+
}),
|
|
141201
|
+
run: async (context) => {
|
|
141202
|
+
const args2 = [];
|
|
141203
|
+
if (context.options.method) {
|
|
141204
|
+
args2.push("--method", context.options.method);
|
|
141205
|
+
}
|
|
141206
|
+
if (context.options.status) {
|
|
141207
|
+
args2.push("--status", context.options.status);
|
|
141208
|
+
}
|
|
141209
|
+
if (context.options.url) {
|
|
141210
|
+
args2.push("--url", context.options.url);
|
|
141211
|
+
}
|
|
141212
|
+
if (context.options.listen !== void 0) {
|
|
141213
|
+
args2.push("--listen", String(context.options.listen));
|
|
141214
|
+
}
|
|
141215
|
+
return executeBrowserTool({
|
|
141216
|
+
scriptName: "browser-network.js",
|
|
141217
|
+
args: args2,
|
|
141218
|
+
outputMode: "json",
|
|
141219
|
+
cwd: options2.cwd,
|
|
141220
|
+
processExecPath: options2.processExecPath,
|
|
141221
|
+
spawnSyncFn: options2.spawnSyncFn,
|
|
141222
|
+
resolveBrowserToolsResourceRootFn: options2.resolveBrowserToolsResourceRootFn
|
|
141223
|
+
});
|
|
141224
|
+
}
|
|
141225
|
+
});
|
|
141226
|
+
browserCli.command("devtools", {
|
|
141227
|
+
description: "Read @docyrus/devtools state, errors, issues, or console entries from the active page",
|
|
141228
|
+
args: external_exports.object({
|
|
141229
|
+
subcommand: external_exports.enum(["state", "errors", "issues", "console"]).describe("What to read: state, errors, issues, or console")
|
|
141230
|
+
}),
|
|
141231
|
+
options: external_exports.object({
|
|
141232
|
+
level: external_exports.string().optional().describe("Filter console entries by level (for console subcommand)")
|
|
141233
|
+
}),
|
|
141234
|
+
run: async (context) => {
|
|
141235
|
+
const args2 = [context.args.subcommand];
|
|
141236
|
+
if (context.options.level) {
|
|
141237
|
+
args2.push("--level", context.options.level);
|
|
141238
|
+
}
|
|
141239
|
+
return executeBrowserTool({
|
|
141240
|
+
scriptName: "browser-devtools.js",
|
|
141241
|
+
args: args2,
|
|
141242
|
+
outputMode: "json",
|
|
141243
|
+
cwd: options2.cwd,
|
|
141244
|
+
processExecPath: options2.processExecPath,
|
|
141245
|
+
spawnSyncFn: options2.spawnSyncFn,
|
|
141246
|
+
resolveBrowserToolsResourceRootFn: options2.resolveBrowserToolsResourceRootFn
|
|
141247
|
+
});
|
|
141248
|
+
}
|
|
141249
|
+
});
|
|
141250
|
+
browserCli.command("info", {
|
|
141251
|
+
description: "Get current page info: URL, title, viewport size, scroll position",
|
|
141252
|
+
run: async () => {
|
|
141253
|
+
return executeBrowserTool({
|
|
141254
|
+
scriptName: "browser-info.js",
|
|
141255
|
+
args: [],
|
|
141256
|
+
outputMode: "json",
|
|
141257
|
+
cwd: options2.cwd,
|
|
141258
|
+
processExecPath: options2.processExecPath,
|
|
141259
|
+
spawnSyncFn: options2.spawnSyncFn,
|
|
141260
|
+
resolveBrowserToolsResourceRootFn: options2.resolveBrowserToolsResourceRootFn
|
|
141261
|
+
});
|
|
141262
|
+
}
|
|
141263
|
+
});
|
|
141264
|
+
browserCli.command("tabs", {
|
|
141265
|
+
description: "List open tabs or switch to a specific tab",
|
|
141266
|
+
options: external_exports.object({
|
|
141267
|
+
switch: external_exports.number().int().optional().describe("Switch to tab by index (0-based)")
|
|
141268
|
+
}),
|
|
141269
|
+
run: async (context) => {
|
|
141270
|
+
const args2 = [];
|
|
141271
|
+
if (context.options.switch !== void 0) {
|
|
141272
|
+
args2.push("--switch", String(context.options.switch));
|
|
141273
|
+
}
|
|
141274
|
+
return executeBrowserTool({
|
|
141275
|
+
scriptName: "browser-tabs.js",
|
|
141276
|
+
args: args2,
|
|
141277
|
+
outputMode: "json",
|
|
141278
|
+
cwd: options2.cwd,
|
|
141279
|
+
processExecPath: options2.processExecPath,
|
|
141280
|
+
spawnSyncFn: options2.spawnSyncFn,
|
|
141281
|
+
resolveBrowserToolsResourceRootFn: options2.resolveBrowserToolsResourceRootFn
|
|
141282
|
+
});
|
|
141283
|
+
}
|
|
141284
|
+
});
|
|
141285
|
+
browserCli.command("close", {
|
|
141286
|
+
description: "Close the browser session",
|
|
141287
|
+
options: external_exports.object({
|
|
141288
|
+
kill: external_exports.boolean().optional().describe("Kill the local Chrome process (local mode only)")
|
|
141289
|
+
}),
|
|
141290
|
+
run: async (context) => {
|
|
141291
|
+
const args2 = [];
|
|
141292
|
+
if (context.options.kill) {
|
|
141293
|
+
args2.push("--kill");
|
|
141294
|
+
}
|
|
141295
|
+
return executeBrowserTool({
|
|
141296
|
+
scriptName: "browser-close.js",
|
|
141297
|
+
args: args2,
|
|
141298
|
+
outputMode: "json",
|
|
141299
|
+
cwd: options2.cwd,
|
|
141300
|
+
processExecPath: options2.processExecPath,
|
|
141301
|
+
spawnSyncFn: options2.spawnSyncFn,
|
|
141302
|
+
resolveBrowserToolsResourceRootFn: options2.resolveBrowserToolsResourceRootFn
|
|
141303
|
+
});
|
|
141304
|
+
}
|
|
141305
|
+
});
|
|
140988
141306
|
return browserCli;
|
|
140989
141307
|
}
|
|
140990
141308
|
|
|
@@ -151085,10 +151403,12 @@ function createReleaseCli(dependencies) {
|
|
|
151085
151403
|
options: external_exports.object({
|
|
151086
151404
|
bump: external_exports.enum(BUMP_TYPES).optional().describe("SemVer bump type (auto-detect if omitted)"),
|
|
151087
151405
|
version: external_exports.string().optional().describe("Explicit target version (e.g., 1.0.0)"),
|
|
151406
|
+
appId: external_exports.string().optional().describe("App ID for creating a release record; defaults to DOCYRUS_SANDBOX_APP_ID env var"),
|
|
151088
151407
|
dryRun: external_exports.boolean().optional().describe("Preview changes without committing"),
|
|
151089
151408
|
skipChangelog: external_exports.boolean().optional().describe("Skip changelog generation"),
|
|
151090
151409
|
skipTag: external_exports.boolean().optional().describe("Skip git tag creation"),
|
|
151091
|
-
skipGithubRelease: external_exports.boolean().optional().describe("Skip GitHub release creation")
|
|
151410
|
+
skipGithubRelease: external_exports.boolean().optional().describe("Skip GitHub release creation"),
|
|
151411
|
+
skipDbRelease: external_exports.boolean().optional().describe("Skip creating a release record in the database")
|
|
151092
151412
|
}),
|
|
151093
151413
|
run: async (context) => {
|
|
151094
151414
|
const result = await executeRelease({
|
|
@@ -151114,6 +151434,23 @@ function createReleaseCli(dependencies) {
|
|
|
151114
151434
|
` Previous: ${result.previousVersion}`,
|
|
151115
151435
|
` Commits: ${result.commitCount}`
|
|
151116
151436
|
].join("\n"));
|
|
151437
|
+
if (!context.options.skipDbRelease) {
|
|
151438
|
+
const appId = context.options.appId?.trim() || getOptionalEnvValue(context.env, "DOCYRUS_SANDBOX_APP_ID");
|
|
151439
|
+
if (appId) {
|
|
151440
|
+
const apiBaseUrl = await dependencies.environmentConfigService.getActiveApiBaseUrl();
|
|
151441
|
+
const apiClient = dependencies.createApiClient(apiBaseUrl);
|
|
151442
|
+
const releaseRecord = await apiClient.request({
|
|
151443
|
+
method: "POST",
|
|
151444
|
+
path: `/dev/apps/${appId}/releases`,
|
|
151445
|
+
body: {
|
|
151446
|
+
version: result.nextVersion,
|
|
151447
|
+
tagName: `v${result.nextVersion}`,
|
|
151448
|
+
changelog: result.changelogEntry || null
|
|
151449
|
+
}
|
|
151450
|
+
});
|
|
151451
|
+
maybePrintHuman3(context, ` Release record created: ${releaseRecord.data.id}`);
|
|
151452
|
+
}
|
|
151453
|
+
}
|
|
151117
151454
|
}
|
|
151118
151455
|
return await wrapPayload2(dependencies, result);
|
|
151119
151456
|
}
|
|
@@ -154676,6 +155013,7 @@ function createDocyrusCli(params) {
|
|
|
154676
155013
|
settingsPaths
|
|
154677
155014
|
}));
|
|
154678
155015
|
cli2.command(createReleaseCli({
|
|
155016
|
+
createApiClient,
|
|
154679
155017
|
environmentConfigService,
|
|
154680
155018
|
authStore,
|
|
154681
155019
|
settingsPaths
|