vibeview 0.14.2 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -421,7 +421,7 @@ var ANDROID_PRODUCTION_ARTIFACT = "android/app/build/outputs/bundle/release/*.aa
|
|
|
421
421
|
var ANDROID_PRODUCTION_COMMAND = "yarn install --immutable && cd android && ./gradlew bundleRelease";
|
|
422
422
|
var IOS_PRODUCTION_ARTIFACT = "ios/build/*.ipa";
|
|
423
423
|
function productionDefaultsFor(cwd, platform) {
|
|
424
|
-
if (platform === "android") {
|
|
424
|
+
if (platform === "android" || platform === "androidtv") {
|
|
425
425
|
return { buildCommand: ANDROID_PRODUCTION_COMMAND, artifact: ANDROID_PRODUCTION_ARTIFACT };
|
|
426
426
|
}
|
|
427
427
|
if (platform === "ios") {
|
|
@@ -711,7 +711,13 @@ function runTar(args) {
|
|
|
711
711
|
|
|
712
712
|
// src/commands/build.ts
|
|
713
713
|
var CLOUD_PLATFORMS = ["ios", "android", "tvos", "androidtv"];
|
|
714
|
-
var PRODUCTION_SIGNING_PLATFORMS = ["ios", "android"];
|
|
714
|
+
var PRODUCTION_SIGNING_PLATFORMS = ["ios", "android", "androidtv"];
|
|
715
|
+
function productionUnsupportedReason(platform) {
|
|
716
|
+
if (platform === "tvos") {
|
|
717
|
+
return "--production doesn't support tvos yet \u2014 tvOS production builds are not yet enabled";
|
|
718
|
+
}
|
|
719
|
+
return `--production doesn't support ${platform} \u2014 production signing supports ${PRODUCTION_SIGNING_PLATFORMS.join(", ")}`;
|
|
720
|
+
}
|
|
715
721
|
function isCloudPlatform(p) {
|
|
716
722
|
return CLOUD_PLATFORMS.includes(p);
|
|
717
723
|
}
|
|
@@ -921,7 +927,7 @@ async function resolveCloudPlatforms(cwd, cfgRef, opts) {
|
|
|
921
927
|
);
|
|
922
928
|
if (unsupported.length > 0) {
|
|
923
929
|
for (const p of unsupported) {
|
|
924
|
-
const reason =
|
|
930
|
+
const reason = productionUnsupportedReason(p);
|
|
925
931
|
emitCloud(opts.json, { event: "skipped", platform: p, reason });
|
|
926
932
|
if (!opts.json) console.error(chalk2.yellow(`\u26A0 skipping ${p}: ${reason}`));
|
|
927
933
|
}
|
|
@@ -932,7 +938,7 @@ async function resolveCloudPlatforms(cwd, cfgRef, opts) {
|
|
|
932
938
|
const prefix = exclusions ? `${exclusions}; ` : "";
|
|
933
939
|
fail(
|
|
934
940
|
opts,
|
|
935
|
-
`--platform all --production: ${prefix}none of the configured platforms support production signing (${PRODUCTION_SIGNING_PLATFORMS.join("
|
|
941
|
+
`--platform all --production: ${prefix}none of the configured platforms support production signing (${PRODUCTION_SIGNING_PLATFORMS.join(", ")} only)`,
|
|
936
942
|
"config_required"
|
|
937
943
|
);
|
|
938
944
|
}
|
|
@@ -980,10 +986,7 @@ function requireCloudCapable(opts, platform) {
|
|
|
980
986
|
}
|
|
981
987
|
function requireProductionCapable(opts, platform) {
|
|
982
988
|
if (opts.production && !PRODUCTION_SIGNING_PLATFORMS.includes(platform)) {
|
|
983
|
-
fail(
|
|
984
|
-
opts,
|
|
985
|
-
`--production doesn't support ${platform} \u2014 production signing supports ${PRODUCTION_SIGNING_PLATFORMS.join(" and ")}`
|
|
986
|
-
);
|
|
989
|
+
fail(opts, productionUnsupportedReason(platform));
|
|
987
990
|
}
|
|
988
991
|
}
|
|
989
992
|
function persistPickedAppId(cwd, cfg, platform, appId) {
|
package/dist/cli.js
CHANGED
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
readDevState,
|
|
14
14
|
readMetroState,
|
|
15
15
|
runAgentVerb
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-B7GWF2BT.js";
|
|
17
17
|
import {
|
|
18
18
|
ApiClient,
|
|
19
19
|
EXIT_INFRA_ERROR,
|
|
@@ -1711,16 +1711,24 @@ function defaultDeps4(client) {
|
|
|
1711
1711
|
}
|
|
1712
1712
|
var ANDROID_KIND = "android_keystore";
|
|
1713
1713
|
var IOS_KIND = "ios_distribution";
|
|
1714
|
+
var CREDENTIAL_PLATFORMS = ["ios", "android", "tvos"];
|
|
1715
|
+
function isCredentialPlatform(p) {
|
|
1716
|
+
return CREDENTIAL_PLATFORMS.includes(p);
|
|
1717
|
+
}
|
|
1714
1718
|
async function credentialsAdd(opts, deps) {
|
|
1715
1719
|
const d = deps ?? defaultDeps4(clientFor2(opts));
|
|
1716
|
-
if (!opts.platform || opts.platform
|
|
1717
|
-
throw new UsageError('--platform is required and must be "ios" or "
|
|
1720
|
+
if (!opts.platform || !isCredentialPlatform(opts.platform)) {
|
|
1721
|
+
throw new UsageError('--platform is required and must be "ios", "android", or "tvos"');
|
|
1718
1722
|
}
|
|
1723
|
+
const platform = opts.platform;
|
|
1719
1724
|
if (!opts.file) {
|
|
1720
1725
|
throw new UsageError("--file is required");
|
|
1721
1726
|
}
|
|
1722
|
-
|
|
1723
|
-
|
|
1727
|
+
const needsProfile = platform === "ios" || platform === "tvos";
|
|
1728
|
+
if (needsProfile && !opts.profile) {
|
|
1729
|
+
throw new UsageError(
|
|
1730
|
+
`--profile is required for ${platform} credentials (a .mobileprovision file)`
|
|
1731
|
+
);
|
|
1724
1732
|
}
|
|
1725
1733
|
const canPrompt = !opts.json && d.isTTY;
|
|
1726
1734
|
if (!canPrompt) {
|
|
@@ -1733,7 +1741,7 @@ async function credentialsAdd(opts, deps) {
|
|
|
1733
1741
|
const file = await d.readFile(opts.file);
|
|
1734
1742
|
const filename = basename2(opts.file);
|
|
1735
1743
|
let body;
|
|
1736
|
-
if (
|
|
1744
|
+
if (platform === "android") {
|
|
1737
1745
|
const storePassword = await d.prompt({ message: "Keystore (store) password", hidden: true });
|
|
1738
1746
|
const keyPassword = await d.prompt({ message: "Key password", hidden: true });
|
|
1739
1747
|
const keyAlias = await d.prompt({ message: "Key alias", hidden: false });
|
|
@@ -1752,7 +1760,7 @@ async function credentialsAdd(opts, deps) {
|
|
|
1752
1760
|
const p12Password = await d.prompt({ message: ".p12 password", hidden: true });
|
|
1753
1761
|
const profile = await d.readFile(opts.profile);
|
|
1754
1762
|
body = {
|
|
1755
|
-
platform
|
|
1763
|
+
platform,
|
|
1756
1764
|
kind: IOS_KIND,
|
|
1757
1765
|
name,
|
|
1758
1766
|
app: opts.app,
|
|
@@ -2227,7 +2235,10 @@ env.command("pull").description(
|
|
|
2227
2235
|
var credentials = program.command("credentials").description("Manage app-signing credentials for production cloud builds");
|
|
2228
2236
|
credentials.command("add").description(
|
|
2229
2237
|
"Add a signing credential. Prompts for passwords with hidden input \u2014 they are never accepted as flags (a flag lands in shell history and in `ps`)."
|
|
2230
|
-
).option("--token <token>", "API token (or set VIBEVIEW_API_TOKEN)").option("--platform <platform>", "ios or
|
|
2238
|
+
).option("--token <token>", "API token (or set VIBEVIEW_API_TOKEN)").option("--platform <platform>", "ios, android, or tvos").option("--file <path>", "The keystore (.jks) or certificate (.p12) file").option(
|
|
2239
|
+
"--profile <path>",
|
|
2240
|
+
"ios/tvos: the .mobileprovision file (required; tvOS profiles are distinct from iOS ones)"
|
|
2241
|
+
).option("--app <id>", "Scope to a single app (default: org-wide)").option("--name <name>", "Credential name (default: the file basename without extension)").action((opts) => credentialsAdd(opts));
|
|
2231
2242
|
credentials.command("list").description("List signing credentials (never prints key material)").option("--token <token>", "API token (or set VIBEVIEW_API_TOKEN)").option("--app <id>", "Scope to a single app (default: org-wide credentials only)").option("--json", "Print the raw credential list as a JSON array", false).action((opts) => credentialsList(opts));
|
|
2232
2243
|
credentials.command("rm <name>").description("Remove a signing credential (replace by rm then add)").option("--token <token>", "API token (or set VIBEVIEW_API_TOKEN)").option("--app <id>", "Scope to a single app (default: org-wide)").option("--json", "Print the result as one JSON line", false).action((name, opts) => credentialsRm(name, opts));
|
|
2233
2244
|
program.command("dev-status").description("Show the status of a `vibeview dev --detach` session in this project").option("--token <token>", "API token (or set VIBEVIEW_API_TOKEN)").option("--json", "Print as one JSON line", false).action((opts) => devStatus(opts));
|
|
@@ -2235,7 +2246,7 @@ program.command("dev-stop").description("Stop a `vibeview dev --detach` session
|
|
|
2235
2246
|
program.command("mcp").description(
|
|
2236
2247
|
"Run an MCP stdio server exposing the agent verbs (tap, swipe, type, ...) plus dev_start/dev_stop as tools"
|
|
2237
2248
|
).option("--token <token>", "API token (or set VIBEVIEW_API_TOKEN)").action(async (opts) => {
|
|
2238
|
-
const { runMcpServer } = await import("./server-
|
|
2249
|
+
const { runMcpServer } = await import("./server-CSXGGDJL.js");
|
|
2239
2250
|
await runMcpServer(opts);
|
|
2240
2251
|
});
|
|
2241
2252
|
program.command("agent-setup").description(
|