@localizeaso/cli 0.1.0-preview.0 → 0.1.0-preview.10
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 +7 -2
- package/package.json +8 -3
- package/packages/asc-shared/dist/monetization-boundary.d.ts +8 -8
- package/packages/asc-shared/dist/monetization-boundary.d.ts.map +1 -1
- package/packages/asc-shared/dist/monetization-boundary.js +12 -10
- package/scripts/localizeaso.mjs +180 -18
- package/scripts/review-agent.mjs +31 -7
- package/scripts/review-mcp.mjs +23 -3
- package/packages/asc-shared/dist/supabase.types.d.ts +0 -541
- package/packages/asc-shared/dist/supabase.types.d.ts.map +0 -1
- package/packages/asc-shared/dist/supabase.types.js +0 -5
package/README.md
CHANGED
|
@@ -11,10 +11,15 @@ npx @localizeaso/cli@preview --help
|
|
|
11
11
|
For local desktop or BYO-agent use, sign in once and store a local CLI session:
|
|
12
12
|
|
|
13
13
|
```sh
|
|
14
|
-
|
|
15
|
-
localizeaso
|
|
14
|
+
npx skills add Wotaso/localizeaso-agent-kit
|
|
15
|
+
npx @localizeaso/cli@preview login --staging
|
|
16
|
+
npx @localizeaso/cli@preview whoami --json
|
|
16
17
|
```
|
|
17
18
|
|
|
19
|
+
The LocalizeASO agent skill is installed through the Vercel Skills CLI from the
|
|
20
|
+
public LocalizeASO agent kit mirror. This package exposes the safe LocalizeASO
|
|
21
|
+
CLI and MCP bridge for Codex, OpenClaw, Cursor, and other coding-agent runtimes.
|
|
22
|
+
|
|
18
23
|
For VPS, CI, and hosted automation, prefer an explicit bearer token:
|
|
19
24
|
|
|
20
25
|
```sh
|
package/package.json
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@localizeaso/cli",
|
|
3
|
-
"version": "0.1.0-preview.
|
|
3
|
+
"version": "0.1.0-preview.10",
|
|
4
4
|
"description": "LocalizeASO command-line tools for agent-assisted App Store review workflows.",
|
|
5
5
|
"type": "module",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/Wotaso/LocalizeASO.git",
|
|
9
|
+
"directory": "packages/localizeaso-cli"
|
|
10
|
+
},
|
|
6
11
|
"bin": {
|
|
7
12
|
"localizeaso": "scripts/localizeaso.mjs"
|
|
8
13
|
},
|
|
@@ -17,7 +22,7 @@
|
|
|
17
22
|
"pack:dry": "npm pack --dry-run"
|
|
18
23
|
},
|
|
19
24
|
"engines": {
|
|
20
|
-
"node": ">=
|
|
25
|
+
"node": ">=20.0.0"
|
|
21
26
|
},
|
|
22
27
|
"publishConfig": {
|
|
23
28
|
"access": "public",
|
|
@@ -31,5 +36,5 @@
|
|
|
31
36
|
"codex",
|
|
32
37
|
"agents"
|
|
33
38
|
],
|
|
34
|
-
"license": "
|
|
39
|
+
"license": "MIT"
|
|
35
40
|
}
|
|
@@ -125,19 +125,19 @@ export declare const LOCALIZEASO_AGENT_PASS_PACKAGING_DECISION: {
|
|
|
125
125
|
readonly defaultPaidPlanLabel: "Agent Pass";
|
|
126
126
|
readonly freeToolRole: "acquisition_and_trust";
|
|
127
127
|
readonly recommendedFreeTool: "pricing_parity_cli";
|
|
128
|
-
readonly pricingParityCliRole: "Use pricing parity, Astro CSV import, keyword-context conversion, and
|
|
129
|
-
readonly openSourceBoundary: "Open-source local setup, keyword conversion, pricing-parity manifests, prompt/template generation, and already-approved local asc handoff helpers. Keep backend persistence, review history, consent screens, Figma apply plans, hosted AI, app slots, and hosted submit in paid LocalizeASO passes.";
|
|
128
|
+
readonly pricingParityCliRole: "Use pricing parity, Astro CSV import, keyword-context conversion, proposal templates, and one-app BYO agent onboarding as the useful free/OSS CLI wedge; charge when the user creates a persistent LocalizeASO review job with consent UI, history, Figma/apply handoffs, more app slots, or hosted submit.";
|
|
129
|
+
readonly openSourceBoundary: "Open-source local setup, keyword conversion, pricing-parity manifests, prompt/template generation, one-app BYO agent onboarding, and already-approved local asc handoff helpers. Keep backend persistence, review history, consent screens, Figma apply plans, hosted AI, additional app slots, and hosted submit in paid LocalizeASO passes.";
|
|
130
130
|
readonly primaryRevenueSurface: "Human review/consent screens with current/proposed/final diffs, keyword evidence, warnings, approval receipts, review history, Figma apply plans, app slots, local asc handoffs after approval, and optional hosted AI or hosted submit convenience.";
|
|
131
|
-
readonly freeToolIncludes: readonly ["local setup", "Astro/CSV keyword conversion", "prompt/template generation", "pricing parity manifests"];
|
|
131
|
+
readonly freeToolIncludes: readonly ["local setup", "Astro/CSV keyword conversion", "prompt/template generation", "one-app BYO agent onboarding", "pricing parity manifests"];
|
|
132
132
|
readonly byoPaidIncludes: readonly ["persistent review jobs", "human review/consent screens with diffs and signal evidence", "review history", "approval receipts", "reviewer feedback", "Figma apply plans", "app slots", "local asc handoffs after human approval"];
|
|
133
133
|
readonly hostedUpsellIncludes: readonly ["hosted submit-only pass for BYO/Codex proposals after human approval", "LocalizeASO-hosted AI proposal generation", "hosted App Store Connect upload/submit convenience after human approval", "larger app or team coverage"];
|
|
134
134
|
readonly defaultPricingModel: "one_time_or_lifetime_byo_agent_pass";
|
|
135
135
|
readonly recommendedOneTimePrices: {
|
|
136
|
-
readonly agent: "$
|
|
137
|
-
readonly submit: "$
|
|
138
|
-
readonly launch: "$
|
|
139
|
-
readonly global: "$
|
|
140
|
-
readonly portfolio: "$
|
|
136
|
+
readonly agent: "$49";
|
|
137
|
+
readonly submit: "$49";
|
|
138
|
+
readonly launch: "$99";
|
|
139
|
+
readonly global: "$249";
|
|
140
|
+
readonly portfolio: "$499";
|
|
141
141
|
};
|
|
142
142
|
readonly avoidPositioning: readonly ["usage-based LocalizeASO AI pricing for BYO Codex/AI runs", "promising hosted submit inside Agent Pass", "requiring App Store Connect credentials for proposal review"];
|
|
143
143
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"monetization-boundary.d.ts","sourceRoot":"","sources":["../src/monetization-boundary.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"monetization-boundary.d.ts","sourceRoot":"","sources":["../src/monetization-boundary.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,13 +3,14 @@ export const LOCALIZEASO_AGENT_PASS_PACKAGING_DECISION = {
|
|
|
3
3
|
defaultPaidPlanLabel: 'Agent Pass',
|
|
4
4
|
freeToolRole: 'acquisition_and_trust',
|
|
5
5
|
recommendedFreeTool: 'pricing_parity_cli',
|
|
6
|
-
pricingParityCliRole: 'Use pricing parity, Astro CSV import, keyword-context conversion, and
|
|
7
|
-
openSourceBoundary: 'Open-source local setup, keyword conversion, pricing-parity manifests, prompt/template generation, and already-approved local asc handoff helpers. Keep backend persistence, review history, consent screens, Figma apply plans, hosted AI, app slots, and hosted submit in paid LocalizeASO passes.',
|
|
6
|
+
pricingParityCliRole: 'Use pricing parity, Astro CSV import, keyword-context conversion, proposal templates, and one-app BYO agent onboarding as the useful free/OSS CLI wedge; charge when the user creates a persistent LocalizeASO review job with consent UI, history, Figma/apply handoffs, more app slots, or hosted submit.',
|
|
7
|
+
openSourceBoundary: 'Open-source local setup, keyword conversion, pricing-parity manifests, prompt/template generation, one-app BYO agent onboarding, and already-approved local asc handoff helpers. Keep backend persistence, review history, consent screens, Figma apply plans, hosted AI, additional app slots, and hosted submit in paid LocalizeASO passes.',
|
|
8
8
|
primaryRevenueSurface: 'Human review/consent screens with current/proposed/final diffs, keyword evidence, warnings, approval receipts, review history, Figma apply plans, app slots, local asc handoffs after approval, and optional hosted AI or hosted submit convenience.',
|
|
9
9
|
freeToolIncludes: [
|
|
10
10
|
'local setup',
|
|
11
11
|
'Astro/CSV keyword conversion',
|
|
12
12
|
'prompt/template generation',
|
|
13
|
+
'one-app BYO agent onboarding',
|
|
13
14
|
'pricing parity manifests',
|
|
14
15
|
],
|
|
15
16
|
byoPaidIncludes: [
|
|
@@ -30,11 +31,11 @@ export const LOCALIZEASO_AGENT_PASS_PACKAGING_DECISION = {
|
|
|
30
31
|
],
|
|
31
32
|
defaultPricingModel: 'one_time_or_lifetime_byo_agent_pass',
|
|
32
33
|
recommendedOneTimePrices: {
|
|
33
|
-
agent: '$
|
|
34
|
-
submit: '$
|
|
35
|
-
launch: '$
|
|
36
|
-
global: '$
|
|
37
|
-
portfolio: '$
|
|
34
|
+
agent: '$49',
|
|
35
|
+
submit: '$49',
|
|
36
|
+
launch: '$99',
|
|
37
|
+
global: '$249',
|
|
38
|
+
portfolio: '$499',
|
|
38
39
|
},
|
|
39
40
|
avoidPositioning: [
|
|
40
41
|
'usage-based LocalizeASO AI pricing for BYO Codex/AI runs',
|
|
@@ -76,6 +77,7 @@ function buildLocalizeAsoPackageMatrix(packaging) {
|
|
|
76
77
|
'pricing parity JSON and manifest conversion',
|
|
77
78
|
'Astro/CSV keyword context conversion',
|
|
78
79
|
'prompt and proposal-template generation from exported bundles',
|
|
80
|
+
'one-app BYO agent onboarding',
|
|
79
81
|
'already-approved local asc handoff helpers',
|
|
80
82
|
],
|
|
81
83
|
excludes: [
|
|
@@ -86,7 +88,7 @@ function buildLocalizeAsoPackageMatrix(packaging) {
|
|
|
86
88
|
'hosted AI',
|
|
87
89
|
'hosted App Store Connect submit',
|
|
88
90
|
],
|
|
89
|
-
bestFor: 'Acquisition, trust, and
|
|
91
|
+
bestFor: 'Acquisition, trust, and one-app BYO agent setup before the user creates a persisted LocalizeASO review job.',
|
|
90
92
|
},
|
|
91
93
|
{
|
|
92
94
|
id: 'agent_pass',
|
|
@@ -338,7 +340,7 @@ export function buildLocalizeAsoMonetizationBoundary(reviewKind, options = {}) {
|
|
|
338
340
|
},
|
|
339
341
|
revenueModel: {
|
|
340
342
|
defaultMotion: 'Use the free/open CLI as acquisition and trust, sell Agent Pass as the default BYO-agent product, and reserve hosted passes for LocalizeASO-paid AI or hosted App Store Connect convenience.',
|
|
341
|
-
freeSurface: 'Keep local setup, Astro CSV conversion, prompt/template generation, pricing-parity manifests, and already-approved local asc handoffs useful without checkout.',
|
|
343
|
+
freeSurface: 'Keep one-app BYO agent setup, local setup, Astro CSV conversion, prompt/template generation, pricing-parity manifests, and already-approved local asc handoffs useful without checkout.',
|
|
342
344
|
paidSurface: 'Charge for persistent review jobs, human review/consent screens with diffs and signal evidence, approval history, reviewer feedback, Figma apply plans, app slots, hosted proposal allowance, and hosted upload/submit convenience.',
|
|
343
345
|
primaryRevenueSurface: packaging.primaryRevenueSurface,
|
|
344
346
|
recommendedDefaultPlan: 'agent',
|
|
@@ -358,7 +360,7 @@ export function buildLocalizeAsoMonetizationBoundary(reviewKind, options = {}) {
|
|
|
358
360
|
valueLedger: buildLocalizeAsoValueLedger(),
|
|
359
361
|
packagingDecision: packaging,
|
|
360
362
|
recommendedOneTimePrices: packaging.recommendedOneTimePrices,
|
|
361
|
-
pricingGuidance: 'Keep the CLI/free surface useful for acquisition, sell Agent Pass for BYO human review
|
|
363
|
+
pricingGuidance: 'Keep the CLI/free surface useful for one-app BYO agent onboarding and acquisition, sell Agent Pass for BYO human review with persistent approval history, signal evidence, Figma handoffs, and app slots, offer hosted submit as a separate no-hosted-AI convenience pass, and upsell hosted AI only when LocalizeASO pays for proposal generation.',
|
|
362
364
|
appStoreConnectCredentials: 'Not required for BYO proposal generation, keyword import, or opening the human review/approval screen; only needed for hosted submit convenience or a human-run local asc handoff after explicit approval.',
|
|
363
365
|
agentInstruction: 'Use local agent-safe steps for research and proposals. Choose Agent Pass for BYO review/history/Figma handoffs, hosted submit pass for BYO proposals plus LocalizeASO App Store Connect convenience, or hosted AI pass when LocalizeASO should spend hosted AI.',
|
|
364
366
|
};
|
package/scripts/localizeaso.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
import { spawnSync } from 'node:child_process';
|
|
4
|
-
import { chmodSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
|
|
4
|
+
import { chmodSync, readFileSync, realpathSync, writeFileSync, mkdirSync } from 'node:fs';
|
|
5
5
|
import { homedir } from 'node:os';
|
|
6
6
|
import { dirname, join } from 'node:path';
|
|
7
7
|
import { fileURLToPath } from 'node:url';
|
|
@@ -14,6 +14,8 @@ const reviewMcpScript = join(__dirname, 'review-mcp.mjs');
|
|
|
14
14
|
const astroMcpExportScript = join(__dirname, 'export-astro-mcp-apps.mjs');
|
|
15
15
|
const ensureSharedBuildScript = join(__dirname, 'ensure-shared-build.mjs');
|
|
16
16
|
const DEFAULT_CLI_CONFIG_PATH = join(homedir(), '.localizeaso', 'config.json');
|
|
17
|
+
const LOCAL_BACKEND_URL = 'http://localhost:8787';
|
|
18
|
+
const LOCAL_DASHBOARD_URL = 'http://localhost:5174';
|
|
17
19
|
|
|
18
20
|
const HUMAN_ONLY_REVIEW_AGENT_COMMANDS = new Set([
|
|
19
21
|
'approve',
|
|
@@ -178,6 +180,7 @@ Usage:
|
|
|
178
180
|
Auto/start/submit aliases return JSON/CLI handoff by default; add --open,
|
|
179
181
|
or use popup/open, when the human is ready to open a browser window.
|
|
180
182
|
|
|
183
|
+
localizeaso login [--staging|--prod] [--backend URL] [--dashboard URL]
|
|
181
184
|
localizeaso login --email you@example.com --password-stdin [--backend URL] [--dashboard URL] [--staging]
|
|
182
185
|
localizeaso whoami [--json]
|
|
183
186
|
localizeaso logout
|
|
@@ -1043,6 +1046,26 @@ function cleanEnvUrl(value) {
|
|
|
1043
1046
|
return typeof value === 'string' && value.trim() ? value.trim().replace(/\/+$/, '') : '';
|
|
1044
1047
|
}
|
|
1045
1048
|
|
|
1049
|
+
function readPackageMetadata() {
|
|
1050
|
+
try {
|
|
1051
|
+
const parsed = JSON.parse(readFileSync(join(repoRoot, 'package.json'), 'utf8'));
|
|
1052
|
+
return parsed && typeof parsed === 'object' && !Array.isArray(parsed) ? parsed : {};
|
|
1053
|
+
} catch {
|
|
1054
|
+
return {};
|
|
1055
|
+
}
|
|
1056
|
+
}
|
|
1057
|
+
|
|
1058
|
+
function isPreviewNpmCliPackage() {
|
|
1059
|
+
const metadata = readPackageMetadata();
|
|
1060
|
+
return metadata.name === '@localizeaso/cli' && typeof metadata.version === 'string' && metadata.version.includes('-preview');
|
|
1061
|
+
}
|
|
1062
|
+
|
|
1063
|
+
function defaultUrls() {
|
|
1064
|
+
return isPreviewNpmCliPackage()
|
|
1065
|
+
? stagingUrls()
|
|
1066
|
+
: { backend: LOCAL_BACKEND_URL, dashboard: LOCAL_DASHBOARD_URL };
|
|
1067
|
+
}
|
|
1068
|
+
|
|
1046
1069
|
function cliConfigPath(env = process.env) {
|
|
1047
1070
|
return typeof env.LOCALIZEASO_CONFIG === 'string' && env.LOCALIZEASO_CONFIG.trim()
|
|
1048
1071
|
? env.LOCALIZEASO_CONFIG.trim()
|
|
@@ -1081,8 +1104,8 @@ function configuredToken(env = process.env) {
|
|
|
1081
1104
|
|
|
1082
1105
|
function stagingUrls() {
|
|
1083
1106
|
return {
|
|
1084
|
-
backend: 'https://
|
|
1085
|
-
dashboard: 'https://
|
|
1107
|
+
backend: 'https://api.staging.localizeaso.com',
|
|
1108
|
+
dashboard: 'https://dash.staging.localizeaso.com',
|
|
1086
1109
|
};
|
|
1087
1110
|
}
|
|
1088
1111
|
|
|
@@ -1099,19 +1122,21 @@ function unique(values) {
|
|
|
1099
1122
|
|
|
1100
1123
|
function configuredDashboardUrl(env = process.env) {
|
|
1101
1124
|
const config = readCliConfig(env);
|
|
1125
|
+
const defaults = defaultUrls();
|
|
1102
1126
|
return cleanEnvUrl(
|
|
1103
1127
|
env.LOCALIZEASO_DASHBOARD ||
|
|
1104
1128
|
env.LOCALIZEASO_DASHBOARD_URL ||
|
|
1105
1129
|
env.PUBLIC_DASHBOARD_URL ||
|
|
1106
1130
|
env.EXPO_PUBLIC_DASHBOARD_URL ||
|
|
1107
1131
|
config.dashboard ||
|
|
1132
|
+
defaults.dashboard ||
|
|
1108
1133
|
'',
|
|
1109
1134
|
);
|
|
1110
1135
|
}
|
|
1111
1136
|
|
|
1112
1137
|
function configuredBackendUrl(env = process.env) {
|
|
1113
1138
|
const config = readCliConfig(env);
|
|
1114
|
-
return cleanEnvUrl(env.LOCALIZEASO_BACKEND || config.backend ||
|
|
1139
|
+
return cleanEnvUrl(env.LOCALIZEASO_BACKEND || config.backend || defaultUrls().backend);
|
|
1115
1140
|
}
|
|
1116
1141
|
|
|
1117
1142
|
function isDashboardTestUrl(value) {
|
|
@@ -1224,11 +1249,13 @@ function printAuthUsage(command = 'login') {
|
|
|
1224
1249
|
return;
|
|
1225
1250
|
}
|
|
1226
1251
|
console.log(`Usage:
|
|
1252
|
+
localizeaso login [--staging|--prod] [--backend URL] [--dashboard URL]
|
|
1227
1253
|
localizeaso login --email you@example.com --password-stdin [--backend URL] [--dashboard URL]
|
|
1228
1254
|
localizeaso login --email you@example.com --password-stdin --staging
|
|
1229
1255
|
localizeaso login --email you@example.com --password-stdin --prod
|
|
1230
1256
|
|
|
1231
1257
|
Options:
|
|
1258
|
+
Default Open a browser-based dashboard login and wait for approval.
|
|
1232
1259
|
--email EMAIL Account email.
|
|
1233
1260
|
--password-stdin Read password from stdin.
|
|
1234
1261
|
--password VALUE Local-only convenience; avoid in shared shells.
|
|
@@ -1236,6 +1263,8 @@ Options:
|
|
|
1236
1263
|
--dashboard URL Dashboard URL for review links.
|
|
1237
1264
|
--staging Use staging defaults.
|
|
1238
1265
|
--prod Use production defaults.
|
|
1266
|
+
--no-open Print the dashboard login link without opening a browser.
|
|
1267
|
+
--timeout SECONDS Browser-login wait timeout. Defaults to 600.
|
|
1239
1268
|
--json Print machine-readable result.
|
|
1240
1269
|
`);
|
|
1241
1270
|
}
|
|
@@ -1446,6 +1475,136 @@ async function readJsonResponse(response) {
|
|
|
1446
1475
|
}
|
|
1447
1476
|
}
|
|
1448
1477
|
|
|
1478
|
+
function shouldOpenBrowser(flags = {}, env = process.env) {
|
|
1479
|
+
if (flags.open === false || flags['no-open'] === true) return false;
|
|
1480
|
+
if (env.LOCALIZEASO_DISABLE_OPEN === '1' || env.LOCALIZEASO_DISABLE_BROWSER_OPEN === '1') return false;
|
|
1481
|
+
return true;
|
|
1482
|
+
}
|
|
1483
|
+
|
|
1484
|
+
function openBrowser(url) {
|
|
1485
|
+
const command = process.platform === 'darwin'
|
|
1486
|
+
? 'open'
|
|
1487
|
+
: process.platform === 'win32'
|
|
1488
|
+
? 'cmd'
|
|
1489
|
+
: 'xdg-open';
|
|
1490
|
+
const args = process.platform === 'win32' ? ['/c', 'start', '', url] : [url];
|
|
1491
|
+
const result = spawnSync(command, args, { stdio: 'ignore' });
|
|
1492
|
+
return !result.error && result.status === 0;
|
|
1493
|
+
}
|
|
1494
|
+
|
|
1495
|
+
function delay(ms) {
|
|
1496
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
1497
|
+
}
|
|
1498
|
+
|
|
1499
|
+
function writeLoginSessionConfig({ profile, backend, dashboard, token, user, session }) {
|
|
1500
|
+
const existing = readCliConfig();
|
|
1501
|
+
const config = {
|
|
1502
|
+
...existing,
|
|
1503
|
+
profile,
|
|
1504
|
+
backend,
|
|
1505
|
+
...(dashboard ? { dashboard } : {}),
|
|
1506
|
+
token,
|
|
1507
|
+
user: user ?? null,
|
|
1508
|
+
session: {
|
|
1509
|
+
token_type: session?.token_type || 'bearer',
|
|
1510
|
+
expires_at: session?.expires_at ?? null,
|
|
1511
|
+
},
|
|
1512
|
+
updatedAt: new Date().toISOString(),
|
|
1513
|
+
};
|
|
1514
|
+
const path = writeCliConfig(config);
|
|
1515
|
+
return { config, path };
|
|
1516
|
+
}
|
|
1517
|
+
|
|
1518
|
+
async function browserLoginCommand({ flags, profile, backend, dashboard, json }) {
|
|
1519
|
+
const timeoutSeconds = Number(flags.timeout || flags['timeout-seconds'] || 600);
|
|
1520
|
+
const timeoutMs = Number.isFinite(timeoutSeconds) && timeoutSeconds > 0
|
|
1521
|
+
? timeoutSeconds * 1000
|
|
1522
|
+
: 600_000;
|
|
1523
|
+
|
|
1524
|
+
const startResponse = await fetch(`${backend}/auth/cli-device/start`, {
|
|
1525
|
+
method: 'POST',
|
|
1526
|
+
headers: { 'content-type': 'application/json' },
|
|
1527
|
+
body: JSON.stringify({ profile: profile.profile }),
|
|
1528
|
+
});
|
|
1529
|
+
const startPayload = await readJsonResponse(startResponse);
|
|
1530
|
+
const loginUrl = typeof startPayload?.loginUrl === 'string' ? startPayload.loginUrl : '';
|
|
1531
|
+
const pollIntervalMs = Number(startPayload?.pollIntervalMs || 2000);
|
|
1532
|
+
const pollEveryMs = Number.isFinite(pollIntervalMs) ? Math.max(250, pollIntervalMs) : 2000;
|
|
1533
|
+
const token = loginUrl ? new URL(loginUrl).searchParams.get('token') || '' : '';
|
|
1534
|
+
|
|
1535
|
+
if (!startResponse.ok || !loginUrl || !token) {
|
|
1536
|
+
console.error(startPayload?.error || `Could not start CLI login with HTTP ${startResponse.status}.`);
|
|
1537
|
+
return 1;
|
|
1538
|
+
}
|
|
1539
|
+
|
|
1540
|
+
const opened = shouldOpenBrowser(flags) ? openBrowser(loginUrl) : false;
|
|
1541
|
+
|
|
1542
|
+
if (json) {
|
|
1543
|
+
console.error(`Open this link to connect the LocalizeASO CLI: ${loginUrl}`);
|
|
1544
|
+
} else {
|
|
1545
|
+
console.log('Open this link to connect the LocalizeASO CLI:');
|
|
1546
|
+
console.log(loginUrl);
|
|
1547
|
+
console.log('');
|
|
1548
|
+
console.log('Waiting for dashboard approval...');
|
|
1549
|
+
}
|
|
1550
|
+
|
|
1551
|
+
const deadline = Date.now() + timeoutMs;
|
|
1552
|
+
while (Date.now() < deadline) {
|
|
1553
|
+
await delay(pollEveryMs);
|
|
1554
|
+
const pollResponse = await fetch(`${backend}/auth/cli-device/poll`, {
|
|
1555
|
+
method: 'POST',
|
|
1556
|
+
headers: { 'content-type': 'application/json' },
|
|
1557
|
+
body: JSON.stringify({ token }),
|
|
1558
|
+
});
|
|
1559
|
+
const pollPayload = await readJsonResponse(pollResponse);
|
|
1560
|
+
|
|
1561
|
+
if (pollResponse.status === 202) continue;
|
|
1562
|
+
|
|
1563
|
+
const sessionToken = typeof pollPayload?.session?.access_token === 'string'
|
|
1564
|
+
? pollPayload.session.access_token.trim()
|
|
1565
|
+
: '';
|
|
1566
|
+
if (pollResponse.ok && sessionToken) {
|
|
1567
|
+
const { config, path } = writeLoginSessionConfig({
|
|
1568
|
+
profile: profile.profile,
|
|
1569
|
+
backend,
|
|
1570
|
+
dashboard,
|
|
1571
|
+
token: sessionToken,
|
|
1572
|
+
user: pollPayload.user ?? null,
|
|
1573
|
+
session: pollPayload.session ?? null,
|
|
1574
|
+
});
|
|
1575
|
+
|
|
1576
|
+
if (json) {
|
|
1577
|
+
console.log(
|
|
1578
|
+
JSON.stringify(
|
|
1579
|
+
{
|
|
1580
|
+
kind: 'localizeaso_cli_login',
|
|
1581
|
+
ok: true,
|
|
1582
|
+
configPath: path,
|
|
1583
|
+
profile: config.profile,
|
|
1584
|
+
backend,
|
|
1585
|
+
dashboard: dashboard || null,
|
|
1586
|
+
user: config.user,
|
|
1587
|
+
tokenStored: true,
|
|
1588
|
+
},
|
|
1589
|
+
null,
|
|
1590
|
+
2,
|
|
1591
|
+
),
|
|
1592
|
+
);
|
|
1593
|
+
} else {
|
|
1594
|
+
console.log(`Logged in${config.user?.email ? ` as ${config.user.email}` : ''}.`);
|
|
1595
|
+
console.log(`Saved CLI session to ${path}.`);
|
|
1596
|
+
}
|
|
1597
|
+
return 0;
|
|
1598
|
+
}
|
|
1599
|
+
|
|
1600
|
+
console.error(pollPayload?.error || `CLI login failed with HTTP ${pollResponse.status}.`);
|
|
1601
|
+
return 1;
|
|
1602
|
+
}
|
|
1603
|
+
|
|
1604
|
+
console.error('CLI login timed out. Run localizeaso login again to create a fresh link.');
|
|
1605
|
+
return 1;
|
|
1606
|
+
}
|
|
1607
|
+
|
|
1449
1608
|
async function loginCommand(args = []) {
|
|
1450
1609
|
if (args.includes('--help') || args.includes('-h')) {
|
|
1451
1610
|
printAuthUsage('login');
|
|
@@ -1463,9 +1622,9 @@ async function loginCommand(args = []) {
|
|
|
1463
1622
|
console.error('Missing backend URL. Use --backend URL, --staging, or --prod.');
|
|
1464
1623
|
return 2;
|
|
1465
1624
|
}
|
|
1625
|
+
|
|
1466
1626
|
if (!email) {
|
|
1467
|
-
|
|
1468
|
-
return 2;
|
|
1627
|
+
return browserLoginCommand({ flags, profile, backend, dashboard, json });
|
|
1469
1628
|
}
|
|
1470
1629
|
if (!password) {
|
|
1471
1630
|
console.error('Missing password. Pipe it with --password-stdin or pass --password for local-only tests.');
|
|
@@ -1485,21 +1644,14 @@ async function loginCommand(args = []) {
|
|
|
1485
1644
|
return 1;
|
|
1486
1645
|
}
|
|
1487
1646
|
|
|
1488
|
-
const
|
|
1489
|
-
const config = {
|
|
1490
|
-
...existing,
|
|
1647
|
+
const { config, path } = writeLoginSessionConfig({
|
|
1491
1648
|
profile: profile.profile,
|
|
1492
1649
|
backend,
|
|
1493
|
-
|
|
1650
|
+
dashboard,
|
|
1494
1651
|
token,
|
|
1495
1652
|
user: payload.user ?? null,
|
|
1496
|
-
session:
|
|
1497
|
-
|
|
1498
|
-
expires_at: payload.session?.expires_at ?? null,
|
|
1499
|
-
},
|
|
1500
|
-
updatedAt: new Date().toISOString(),
|
|
1501
|
-
};
|
|
1502
|
-
const path = writeCliConfig(config);
|
|
1653
|
+
session: payload.session ?? null,
|
|
1654
|
+
});
|
|
1503
1655
|
|
|
1504
1656
|
if (json) {
|
|
1505
1657
|
console.log(
|
|
@@ -2088,7 +2240,17 @@ async function main() {
|
|
|
2088
2240
|
return runNodeScript(reviewAgentScript, mapped.args, { injectLocalDashboard: true });
|
|
2089
2241
|
}
|
|
2090
2242
|
|
|
2091
|
-
|
|
2243
|
+
function isCliEntrypoint() {
|
|
2244
|
+
const entrypoint = process.argv[1];
|
|
2245
|
+
if (!entrypoint) return false;
|
|
2246
|
+
try {
|
|
2247
|
+
return realpathSync(entrypoint) === realpathSync(fileURLToPath(import.meta.url));
|
|
2248
|
+
} catch {
|
|
2249
|
+
return import.meta.url === `file://${entrypoint}`;
|
|
2250
|
+
}
|
|
2251
|
+
}
|
|
2252
|
+
|
|
2253
|
+
if (isCliEntrypoint()) {
|
|
2092
2254
|
main()
|
|
2093
2255
|
.then((code) => {
|
|
2094
2256
|
process.exitCode = code;
|
package/scripts/review-agent.mjs
CHANGED
|
@@ -25,8 +25,10 @@ import {
|
|
|
25
25
|
suggestAsoKeywordColumnMapping,
|
|
26
26
|
} from '../packages/asc-shared/dist/index.js';
|
|
27
27
|
|
|
28
|
-
const
|
|
29
|
-
const
|
|
28
|
+
const LOCAL_BACKEND_URL = 'http://localhost:8787';
|
|
29
|
+
const LOCAL_DASHBOARD_URL = 'http://localhost:5174';
|
|
30
|
+
const STAGING_BACKEND_URL = 'https://api.staging.localizeaso.com';
|
|
31
|
+
const STAGING_DASHBOARD_URL = 'https://dash.staging.localizeaso.com';
|
|
30
32
|
const DEFAULT_CLI_CONFIG_PATH = path.join(homedir(), '.localizeaso', 'config.json');
|
|
31
33
|
const SAFE_SHELL_TOKEN_RE = /^[A-Za-z0-9_./:@%+=,-]+$/;
|
|
32
34
|
const REFINE_NEXT_AGENT_RUN_CONTEXT_BOUNDARY =
|
|
@@ -177,8 +179,8 @@ Monetization boundary:
|
|
|
177
179
|
|
|
178
180
|
Environment:
|
|
179
181
|
LOCALIZEASO_TOKEN Optional bearer token override; localizeaso login config is used when unset
|
|
180
|
-
LOCALIZEASO_BACKEND Backend URL, defaults to
|
|
181
|
-
LOCALIZEASO_DASHBOARD Dashboard URL used as fallback for
|
|
182
|
+
LOCALIZEASO_BACKEND Backend URL, defaults to local dev; npm preview builds default to staging
|
|
183
|
+
LOCALIZEASO_DASHBOARD Dashboard URL used as fallback for review links; npm preview builds default to staging
|
|
182
184
|
`);
|
|
183
185
|
}
|
|
184
186
|
|
|
@@ -1137,6 +1139,28 @@ function cliConfigPath() {
|
|
|
1137
1139
|
return process.env.LOCALIZEASO_CONFIG?.trim() || DEFAULT_CLI_CONFIG_PATH;
|
|
1138
1140
|
}
|
|
1139
1141
|
|
|
1142
|
+
function readPackageMetadata() {
|
|
1143
|
+
try {
|
|
1144
|
+
const parsed = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8'));
|
|
1145
|
+
return parsed && typeof parsed === 'object' && !Array.isArray(parsed) ? parsed : {};
|
|
1146
|
+
} catch {
|
|
1147
|
+
return {};
|
|
1148
|
+
}
|
|
1149
|
+
}
|
|
1150
|
+
|
|
1151
|
+
function isPreviewNpmCliPackage() {
|
|
1152
|
+
const metadata = readPackageMetadata();
|
|
1153
|
+
return metadata.name === '@localizeaso/cli' && typeof metadata.version === 'string' && metadata.version.includes('-preview');
|
|
1154
|
+
}
|
|
1155
|
+
|
|
1156
|
+
function defaultBackend() {
|
|
1157
|
+
return isPreviewNpmCliPackage() ? STAGING_BACKEND_URL : LOCAL_BACKEND_URL;
|
|
1158
|
+
}
|
|
1159
|
+
|
|
1160
|
+
function defaultDashboard() {
|
|
1161
|
+
return isPreviewNpmCliPackage() ? STAGING_DASHBOARD_URL : LOCAL_DASHBOARD_URL;
|
|
1162
|
+
}
|
|
1163
|
+
|
|
1140
1164
|
function readCliConfig() {
|
|
1141
1165
|
try {
|
|
1142
1166
|
const parsed = JSON.parse(readFileSync(cliConfigPath(), 'utf8'));
|
|
@@ -1155,7 +1179,7 @@ function configuredToken() {
|
|
|
1155
1179
|
|
|
1156
1180
|
function configuredBackend() {
|
|
1157
1181
|
const config = readCliConfig();
|
|
1158
|
-
return (process.env.LOCALIZEASO_BACKEND || config.backend ||
|
|
1182
|
+
return (process.env.LOCALIZEASO_BACKEND || config.backend || defaultBackend()).replace(/\/+$/, '');
|
|
1159
1183
|
}
|
|
1160
1184
|
|
|
1161
1185
|
function getConfig() {
|
|
@@ -6501,12 +6525,12 @@ function getDashboardBaseUrl() {
|
|
|
6501
6525
|
process.env.LOCALIZEASO_DASHBOARD_URL ||
|
|
6502
6526
|
process.env.PUBLIC_DASHBOARD_URL ||
|
|
6503
6527
|
process.env.EXPO_PUBLIC_DASHBOARD_URL ||
|
|
6504
|
-
|
|
6528
|
+
defaultDashboard()
|
|
6505
6529
|
).replace(/\/+$/, '');
|
|
6506
6530
|
if (process.env.NODE_ENV === 'production') return configured;
|
|
6507
6531
|
try {
|
|
6508
6532
|
const parsed = new URL(configured);
|
|
6509
|
-
if (parsed.hostname.toLowerCase().endsWith('.test')) return
|
|
6533
|
+
if (parsed.hostname.toLowerCase().endsWith('.test')) return defaultDashboard();
|
|
6510
6534
|
} catch {
|
|
6511
6535
|
return configured;
|
|
6512
6536
|
}
|
package/scripts/review-mcp.mjs
CHANGED
|
@@ -11,7 +11,9 @@ const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
|
11
11
|
const reviewAgentScript = join(__dirname, 'review-agent.mjs');
|
|
12
12
|
const localizeAsoScript = join(__dirname, 'localizeaso.mjs');
|
|
13
13
|
const astroMcpExportScript = join(__dirname, 'export-astro-mcp-apps.mjs');
|
|
14
|
-
const
|
|
14
|
+
const repoRoot = join(__dirname, '..');
|
|
15
|
+
const LOCAL_DASHBOARD_URL = 'http://localhost:5174';
|
|
16
|
+
const STAGING_DASHBOARD_URL = 'https://dash.staging.localizeaso.com';
|
|
15
17
|
|
|
16
18
|
process.stdout.on('error', (error) => {
|
|
17
19
|
if (error?.code === 'EPIPE') process.exit(0);
|
|
@@ -27,6 +29,24 @@ const {
|
|
|
27
29
|
postApprovalPathModeGuidance,
|
|
28
30
|
} = await import('../packages/asc-shared/dist/index.js');
|
|
29
31
|
|
|
32
|
+
function readPackageMetadata() {
|
|
33
|
+
try {
|
|
34
|
+
const parsed = JSON.parse(readFileSync(join(repoRoot, 'package.json'), 'utf8'));
|
|
35
|
+
return parsed && typeof parsed === 'object' && !Array.isArray(parsed) ? parsed : {};
|
|
36
|
+
} catch {
|
|
37
|
+
return {};
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function isPreviewNpmCliPackage() {
|
|
42
|
+
const metadata = readPackageMetadata();
|
|
43
|
+
return metadata.name === '@localizeaso/cli' && typeof metadata.version === 'string' && metadata.version.includes('-preview');
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function defaultDashboardUrl() {
|
|
47
|
+
return isPreviewNpmCliPackage() ? STAGING_DASHBOARD_URL : LOCAL_DASHBOARD_URL;
|
|
48
|
+
}
|
|
49
|
+
|
|
30
50
|
const protocolVersion = '2025-06-18';
|
|
31
51
|
|
|
32
52
|
const autoKeywordStartProperties = {
|
|
@@ -4449,11 +4469,11 @@ function dashboardBaseUrl() {
|
|
|
4449
4469
|
cleanString(process.env.LOCALIZEASO_DASHBOARD_URL) ||
|
|
4450
4470
|
cleanString(process.env.PUBLIC_DASHBOARD_URL) ||
|
|
4451
4471
|
cleanString(process.env.EXPO_PUBLIC_DASHBOARD_URL) ||
|
|
4452
|
-
|
|
4472
|
+
defaultDashboardUrl()).replace(/\/+$/, '');
|
|
4453
4473
|
if (process.env.NODE_ENV === 'production') return configured;
|
|
4454
4474
|
try {
|
|
4455
4475
|
const parsed = new URL(configured);
|
|
4456
|
-
if (parsed.hostname.toLowerCase().endsWith('.test')) return
|
|
4476
|
+
if (parsed.hostname.toLowerCase().endsWith('.test')) return defaultDashboardUrl();
|
|
4457
4477
|
} catch {
|
|
4458
4478
|
return configured;
|
|
4459
4479
|
}
|
|
@@ -1,541 +0,0 @@
|
|
|
1
|
-
export type Json = string | number | boolean | null | {
|
|
2
|
-
[key: string]: Json | undefined;
|
|
3
|
-
} | Json[];
|
|
4
|
-
export type Database = {
|
|
5
|
-
__InternalSupabase: {
|
|
6
|
-
PostgrestVersion: "14.1";
|
|
7
|
-
};
|
|
8
|
-
public: {
|
|
9
|
-
Tables: {
|
|
10
|
-
ai_usage: {
|
|
11
|
-
Row: {
|
|
12
|
-
created_at: string | null;
|
|
13
|
-
id: string;
|
|
14
|
-
input_tokens: number;
|
|
15
|
-
output_tokens: number;
|
|
16
|
-
period_start: string;
|
|
17
|
-
total_tokens: number;
|
|
18
|
-
updated_at: string | null;
|
|
19
|
-
user_id: string;
|
|
20
|
-
};
|
|
21
|
-
Insert: {
|
|
22
|
-
created_at?: string | null;
|
|
23
|
-
id?: string;
|
|
24
|
-
input_tokens?: number;
|
|
25
|
-
output_tokens?: number;
|
|
26
|
-
period_start: string;
|
|
27
|
-
total_tokens?: number;
|
|
28
|
-
updated_at?: string | null;
|
|
29
|
-
user_id: string;
|
|
30
|
-
};
|
|
31
|
-
Update: {
|
|
32
|
-
created_at?: string | null;
|
|
33
|
-
id?: string;
|
|
34
|
-
input_tokens?: number;
|
|
35
|
-
output_tokens?: number;
|
|
36
|
-
period_start?: string;
|
|
37
|
-
total_tokens?: number;
|
|
38
|
-
updated_at?: string | null;
|
|
39
|
-
user_id?: string;
|
|
40
|
-
};
|
|
41
|
-
Relationships: [];
|
|
42
|
-
};
|
|
43
|
-
asc_aso_keywords: {
|
|
44
|
-
Row: {
|
|
45
|
-
app_id: string;
|
|
46
|
-
created_at: string | null;
|
|
47
|
-
deleted_at: string | null;
|
|
48
|
-
difficulty: number | null;
|
|
49
|
-
id: string;
|
|
50
|
-
is_preferred: boolean;
|
|
51
|
-
keyword: string;
|
|
52
|
-
keyword_english: string | null;
|
|
53
|
-
locale: string;
|
|
54
|
-
popularity: number | null;
|
|
55
|
-
updated_at: string | null;
|
|
56
|
-
user_id: string;
|
|
57
|
-
};
|
|
58
|
-
Insert: {
|
|
59
|
-
app_id: string;
|
|
60
|
-
created_at?: string | null;
|
|
61
|
-
deleted_at?: string | null;
|
|
62
|
-
difficulty?: number | null;
|
|
63
|
-
id?: string;
|
|
64
|
-
is_preferred?: boolean;
|
|
65
|
-
keyword: string;
|
|
66
|
-
keyword_english?: string | null;
|
|
67
|
-
locale: string;
|
|
68
|
-
popularity?: number | null;
|
|
69
|
-
updated_at?: string | null;
|
|
70
|
-
user_id: string;
|
|
71
|
-
};
|
|
72
|
-
Update: {
|
|
73
|
-
app_id?: string;
|
|
74
|
-
created_at?: string | null;
|
|
75
|
-
deleted_at?: string | null;
|
|
76
|
-
difficulty?: number | null;
|
|
77
|
-
id?: string;
|
|
78
|
-
is_preferred?: boolean;
|
|
79
|
-
keyword?: string;
|
|
80
|
-
keyword_english?: string | null;
|
|
81
|
-
locale?: string;
|
|
82
|
-
popularity?: number | null;
|
|
83
|
-
updated_at?: string | null;
|
|
84
|
-
user_id?: string;
|
|
85
|
-
};
|
|
86
|
-
Relationships: [];
|
|
87
|
-
};
|
|
88
|
-
asc_app_metadata_settings: {
|
|
89
|
-
Row: {
|
|
90
|
-
app_id: string;
|
|
91
|
-
app_name: string | null;
|
|
92
|
-
create_instructions: string | null;
|
|
93
|
-
optimize_instructions: string | null;
|
|
94
|
-
whats_new_text: string | null;
|
|
95
|
-
app_title_casing: string;
|
|
96
|
-
app_title_style: string;
|
|
97
|
-
created_at: string;
|
|
98
|
-
id: string;
|
|
99
|
-
updated_at: string;
|
|
100
|
-
update_instructions: string | null;
|
|
101
|
-
user_id: string;
|
|
102
|
-
};
|
|
103
|
-
Insert: {
|
|
104
|
-
app_id: string;
|
|
105
|
-
app_name?: string | null;
|
|
106
|
-
create_instructions?: string | null;
|
|
107
|
-
optimize_instructions?: string | null;
|
|
108
|
-
whats_new_text?: string | null;
|
|
109
|
-
app_title_casing?: string;
|
|
110
|
-
app_title_style?: string;
|
|
111
|
-
created_at?: string;
|
|
112
|
-
id?: string;
|
|
113
|
-
updated_at?: string;
|
|
114
|
-
update_instructions?: string | null;
|
|
115
|
-
user_id: string;
|
|
116
|
-
};
|
|
117
|
-
Update: {
|
|
118
|
-
app_id?: string;
|
|
119
|
-
app_name?: string | null;
|
|
120
|
-
create_instructions?: string | null;
|
|
121
|
-
optimize_instructions?: string | null;
|
|
122
|
-
whats_new_text?: string | null;
|
|
123
|
-
app_title_casing?: string;
|
|
124
|
-
app_title_style?: string;
|
|
125
|
-
created_at?: string;
|
|
126
|
-
id?: string;
|
|
127
|
-
updated_at?: string;
|
|
128
|
-
update_instructions?: string | null;
|
|
129
|
-
user_id?: string;
|
|
130
|
-
};
|
|
131
|
-
Relationships: [];
|
|
132
|
-
};
|
|
133
|
-
asc_credentials: {
|
|
134
|
-
Row: {
|
|
135
|
-
created_at: string | null;
|
|
136
|
-
issuer_id: string;
|
|
137
|
-
key_id: string;
|
|
138
|
-
private_key_ciphertext: string;
|
|
139
|
-
private_key_iv: string;
|
|
140
|
-
private_key_tag: string;
|
|
141
|
-
updated_at: string | null;
|
|
142
|
-
user_id: string;
|
|
143
|
-
};
|
|
144
|
-
Insert: {
|
|
145
|
-
created_at?: string | null;
|
|
146
|
-
issuer_id: string;
|
|
147
|
-
key_id: string;
|
|
148
|
-
private_key_ciphertext: string;
|
|
149
|
-
private_key_iv: string;
|
|
150
|
-
private_key_tag: string;
|
|
151
|
-
updated_at?: string | null;
|
|
152
|
-
user_id: string;
|
|
153
|
-
};
|
|
154
|
-
Update: {
|
|
155
|
-
created_at?: string | null;
|
|
156
|
-
issuer_id?: string;
|
|
157
|
-
key_id?: string;
|
|
158
|
-
private_key_ciphertext?: string;
|
|
159
|
-
private_key_iv?: string;
|
|
160
|
-
private_key_tag?: string;
|
|
161
|
-
updated_at?: string | null;
|
|
162
|
-
user_id?: string;
|
|
163
|
-
};
|
|
164
|
-
Relationships: [];
|
|
165
|
-
};
|
|
166
|
-
asc_drafts: {
|
|
167
|
-
Row: {
|
|
168
|
-
app_id: string;
|
|
169
|
-
created_at: string | null;
|
|
170
|
-
fields: Json;
|
|
171
|
-
id: string;
|
|
172
|
-
locale: string;
|
|
173
|
-
updated_at: string | null;
|
|
174
|
-
user_id: string;
|
|
175
|
-
};
|
|
176
|
-
Insert: {
|
|
177
|
-
app_id: string;
|
|
178
|
-
created_at?: string | null;
|
|
179
|
-
fields?: Json;
|
|
180
|
-
id?: string;
|
|
181
|
-
locale: string;
|
|
182
|
-
updated_at?: string | null;
|
|
183
|
-
user_id: string;
|
|
184
|
-
};
|
|
185
|
-
Update: {
|
|
186
|
-
app_id?: string;
|
|
187
|
-
created_at?: string | null;
|
|
188
|
-
fields?: Json;
|
|
189
|
-
id?: string;
|
|
190
|
-
locale?: string;
|
|
191
|
-
updated_at?: string | null;
|
|
192
|
-
user_id?: string;
|
|
193
|
-
};
|
|
194
|
-
Relationships: [];
|
|
195
|
-
};
|
|
196
|
-
asc_push_jobs: {
|
|
197
|
-
Row: {
|
|
198
|
-
app_id: string;
|
|
199
|
-
created_at: string | null;
|
|
200
|
-
dry_run: boolean;
|
|
201
|
-
error: string | null;
|
|
202
|
-
id: string;
|
|
203
|
-
payload: Json | null;
|
|
204
|
-
result: Json | null;
|
|
205
|
-
status: string;
|
|
206
|
-
updated_at: string | null;
|
|
207
|
-
user_id: string;
|
|
208
|
-
};
|
|
209
|
-
Insert: {
|
|
210
|
-
app_id: string;
|
|
211
|
-
created_at?: string | null;
|
|
212
|
-
dry_run?: boolean;
|
|
213
|
-
error?: string | null;
|
|
214
|
-
id?: string;
|
|
215
|
-
payload?: Json | null;
|
|
216
|
-
result?: Json | null;
|
|
217
|
-
status: string;
|
|
218
|
-
updated_at?: string | null;
|
|
219
|
-
user_id: string;
|
|
220
|
-
};
|
|
221
|
-
Update: {
|
|
222
|
-
app_id?: string;
|
|
223
|
-
created_at?: string | null;
|
|
224
|
-
dry_run?: boolean;
|
|
225
|
-
error?: string | null;
|
|
226
|
-
id?: string;
|
|
227
|
-
payload?: Json | null;
|
|
228
|
-
result?: Json | null;
|
|
229
|
-
status?: string;
|
|
230
|
-
updated_at?: string | null;
|
|
231
|
-
user_id?: string;
|
|
232
|
-
};
|
|
233
|
-
Relationships: [];
|
|
234
|
-
};
|
|
235
|
-
feedback: {
|
|
236
|
-
Row: {
|
|
237
|
-
created_at: string;
|
|
238
|
-
id: string;
|
|
239
|
-
message: string;
|
|
240
|
-
screen_name: string;
|
|
241
|
-
source: string;
|
|
242
|
-
user_id: string;
|
|
243
|
-
};
|
|
244
|
-
Insert: {
|
|
245
|
-
created_at?: string;
|
|
246
|
-
id?: string;
|
|
247
|
-
message: string;
|
|
248
|
-
screen_name: string;
|
|
249
|
-
source: string;
|
|
250
|
-
user_id: string;
|
|
251
|
-
};
|
|
252
|
-
Update: {
|
|
253
|
-
created_at?: string;
|
|
254
|
-
id?: string;
|
|
255
|
-
message?: string;
|
|
256
|
-
screen_name?: string;
|
|
257
|
-
source?: string;
|
|
258
|
-
user_id?: string;
|
|
259
|
-
};
|
|
260
|
-
Relationships: [];
|
|
261
|
-
};
|
|
262
|
-
figma_localized_frames: {
|
|
263
|
-
Row: {
|
|
264
|
-
app_id: string;
|
|
265
|
-
created_at: string | null;
|
|
266
|
-
figma_file_key: string;
|
|
267
|
-
frame_height: number | null;
|
|
268
|
-
frame_width: number | null;
|
|
269
|
-
frame_x: number | null;
|
|
270
|
-
frame_y: number | null;
|
|
271
|
-
id: string;
|
|
272
|
-
locale: string;
|
|
273
|
-
localized_frame_id: string;
|
|
274
|
-
localized_frame_name: string;
|
|
275
|
-
source_frame_id: string;
|
|
276
|
-
source_frame_name: string;
|
|
277
|
-
updated_at: string | null;
|
|
278
|
-
user_id: string;
|
|
279
|
-
};
|
|
280
|
-
Insert: {
|
|
281
|
-
app_id: string;
|
|
282
|
-
created_at?: string | null;
|
|
283
|
-
figma_file_key: string;
|
|
284
|
-
frame_height?: number | null;
|
|
285
|
-
frame_width?: number | null;
|
|
286
|
-
frame_x?: number | null;
|
|
287
|
-
frame_y?: number | null;
|
|
288
|
-
id?: string;
|
|
289
|
-
locale: string;
|
|
290
|
-
localized_frame_id: string;
|
|
291
|
-
localized_frame_name: string;
|
|
292
|
-
source_frame_id: string;
|
|
293
|
-
source_frame_name: string;
|
|
294
|
-
updated_at?: string | null;
|
|
295
|
-
user_id: string;
|
|
296
|
-
};
|
|
297
|
-
Update: {
|
|
298
|
-
app_id?: string;
|
|
299
|
-
created_at?: string | null;
|
|
300
|
-
figma_file_key?: string;
|
|
301
|
-
frame_height?: number | null;
|
|
302
|
-
frame_width?: number | null;
|
|
303
|
-
frame_x?: number | null;
|
|
304
|
-
frame_y?: number | null;
|
|
305
|
-
id?: string;
|
|
306
|
-
locale?: string;
|
|
307
|
-
localized_frame_id?: string;
|
|
308
|
-
localized_frame_name?: string;
|
|
309
|
-
source_frame_id?: string;
|
|
310
|
-
source_frame_name?: string;
|
|
311
|
-
updated_at?: string | null;
|
|
312
|
-
user_id?: string;
|
|
313
|
-
};
|
|
314
|
-
Relationships: [];
|
|
315
|
-
};
|
|
316
|
-
profiles: {
|
|
317
|
-
Row: {
|
|
318
|
-
created_at: string | null;
|
|
319
|
-
email_verified: boolean;
|
|
320
|
-
email_verified_at: string | null;
|
|
321
|
-
id: string;
|
|
322
|
-
is_paid: boolean;
|
|
323
|
-
paddle_current_period_end: string | null;
|
|
324
|
-
paddle_customer_id: string | null;
|
|
325
|
-
paddle_last_event_at: string | null;
|
|
326
|
-
paddle_next_billed_at: string | null;
|
|
327
|
-
paddle_price_id: string | null;
|
|
328
|
-
paddle_status: string | null;
|
|
329
|
-
paddle_subscription_id: string | null;
|
|
330
|
-
paddle_trial_end: string | null;
|
|
331
|
-
paddle_updated_at: string | null;
|
|
332
|
-
};
|
|
333
|
-
Insert: {
|
|
334
|
-
created_at?: string | null;
|
|
335
|
-
email_verified?: boolean;
|
|
336
|
-
email_verified_at?: string | null;
|
|
337
|
-
id: string;
|
|
338
|
-
is_paid?: boolean;
|
|
339
|
-
paddle_current_period_end?: string | null;
|
|
340
|
-
paddle_customer_id?: string | null;
|
|
341
|
-
paddle_last_event_at?: string | null;
|
|
342
|
-
paddle_next_billed_at?: string | null;
|
|
343
|
-
paddle_price_id?: string | null;
|
|
344
|
-
paddle_status?: string | null;
|
|
345
|
-
paddle_subscription_id?: string | null;
|
|
346
|
-
paddle_trial_end?: string | null;
|
|
347
|
-
paddle_updated_at?: string | null;
|
|
348
|
-
};
|
|
349
|
-
Update: {
|
|
350
|
-
created_at?: string | null;
|
|
351
|
-
email_verified?: boolean;
|
|
352
|
-
email_verified_at?: string | null;
|
|
353
|
-
id?: string;
|
|
354
|
-
is_paid?: boolean;
|
|
355
|
-
paddle_current_period_end?: string | null;
|
|
356
|
-
paddle_customer_id?: string | null;
|
|
357
|
-
paddle_last_event_at?: string | null;
|
|
358
|
-
paddle_next_billed_at?: string | null;
|
|
359
|
-
paddle_price_id?: string | null;
|
|
360
|
-
paddle_status?: string | null;
|
|
361
|
-
paddle_subscription_id?: string | null;
|
|
362
|
-
paddle_trial_end?: string | null;
|
|
363
|
-
paddle_updated_at?: string | null;
|
|
364
|
-
};
|
|
365
|
-
Relationships: [];
|
|
366
|
-
};
|
|
367
|
-
user_acquisition: {
|
|
368
|
-
Row: {
|
|
369
|
-
created_at: string;
|
|
370
|
-
id: string;
|
|
371
|
-
landing_path: string | null;
|
|
372
|
-
referrer: string | null;
|
|
373
|
-
user_id: string;
|
|
374
|
-
utm_campaign: string | null;
|
|
375
|
-
utm_content: string | null;
|
|
376
|
-
utm_medium: string | null;
|
|
377
|
-
utm_source: string | null;
|
|
378
|
-
utm_term: string | null;
|
|
379
|
-
};
|
|
380
|
-
Insert: {
|
|
381
|
-
created_at?: string;
|
|
382
|
-
id?: string;
|
|
383
|
-
landing_path?: string | null;
|
|
384
|
-
referrer?: string | null;
|
|
385
|
-
user_id: string;
|
|
386
|
-
utm_campaign?: string | null;
|
|
387
|
-
utm_content?: string | null;
|
|
388
|
-
utm_medium?: string | null;
|
|
389
|
-
utm_source?: string | null;
|
|
390
|
-
utm_term?: string | null;
|
|
391
|
-
};
|
|
392
|
-
Update: {
|
|
393
|
-
created_at?: string;
|
|
394
|
-
id?: string;
|
|
395
|
-
landing_path?: string | null;
|
|
396
|
-
referrer?: string | null;
|
|
397
|
-
user_id?: string;
|
|
398
|
-
utm_campaign?: string | null;
|
|
399
|
-
utm_content?: string | null;
|
|
400
|
-
utm_medium?: string | null;
|
|
401
|
-
utm_source?: string | null;
|
|
402
|
-
utm_term?: string | null;
|
|
403
|
-
};
|
|
404
|
-
Relationships: [];
|
|
405
|
-
};
|
|
406
|
-
user_settings: {
|
|
407
|
-
Row: {
|
|
408
|
-
analytics_opt_out: boolean;
|
|
409
|
-
created_at: string;
|
|
410
|
-
updated_at: string;
|
|
411
|
-
user_id: string;
|
|
412
|
-
};
|
|
413
|
-
Insert: {
|
|
414
|
-
analytics_opt_out?: boolean;
|
|
415
|
-
created_at?: string;
|
|
416
|
-
updated_at?: string;
|
|
417
|
-
user_id: string;
|
|
418
|
-
};
|
|
419
|
-
Update: {
|
|
420
|
-
analytics_opt_out?: boolean;
|
|
421
|
-
created_at?: string;
|
|
422
|
-
updated_at?: string;
|
|
423
|
-
user_id?: string;
|
|
424
|
-
};
|
|
425
|
-
Relationships: [];
|
|
426
|
-
};
|
|
427
|
-
waitlist: {
|
|
428
|
-
Row: {
|
|
429
|
-
consent_text_version: string;
|
|
430
|
-
created_at: string;
|
|
431
|
-
email: string;
|
|
432
|
-
id: string;
|
|
433
|
-
status: string;
|
|
434
|
-
unsubscribe_token_hash: string;
|
|
435
|
-
unsubscribed_at: string | null;
|
|
436
|
-
};
|
|
437
|
-
Insert: {
|
|
438
|
-
consent_text_version: string;
|
|
439
|
-
created_at?: string;
|
|
440
|
-
email: string;
|
|
441
|
-
id?: string;
|
|
442
|
-
status?: string;
|
|
443
|
-
unsubscribe_token_hash: string;
|
|
444
|
-
unsubscribed_at?: string | null;
|
|
445
|
-
};
|
|
446
|
-
Update: {
|
|
447
|
-
consent_text_version?: string;
|
|
448
|
-
created_at?: string;
|
|
449
|
-
email?: string;
|
|
450
|
-
id?: string;
|
|
451
|
-
status?: string;
|
|
452
|
-
unsubscribe_token_hash?: string;
|
|
453
|
-
unsubscribed_at?: string | null;
|
|
454
|
-
};
|
|
455
|
-
Relationships: [];
|
|
456
|
-
};
|
|
457
|
-
};
|
|
458
|
-
Views: {
|
|
459
|
-
[_ in never]: never;
|
|
460
|
-
};
|
|
461
|
-
Functions: {
|
|
462
|
-
increment_ai_usage: {
|
|
463
|
-
Args: {
|
|
464
|
-
p_input_tokens: number;
|
|
465
|
-
p_output_tokens: number;
|
|
466
|
-
p_period_start: string;
|
|
467
|
-
p_user_id: string;
|
|
468
|
-
};
|
|
469
|
-
Returns: undefined;
|
|
470
|
-
};
|
|
471
|
-
mark_email_verified: {
|
|
472
|
-
Args: {
|
|
473
|
-
p_email_verified_at?: string | null;
|
|
474
|
-
};
|
|
475
|
-
Returns: undefined;
|
|
476
|
-
};
|
|
477
|
-
};
|
|
478
|
-
Enums: {
|
|
479
|
-
[_ in never]: never;
|
|
480
|
-
};
|
|
481
|
-
CompositeTypes: {
|
|
482
|
-
[_ in never]: never;
|
|
483
|
-
};
|
|
484
|
-
};
|
|
485
|
-
};
|
|
486
|
-
type DatabaseWithoutInternals = Omit<Database, "__InternalSupabase">;
|
|
487
|
-
type DefaultSchema = DatabaseWithoutInternals[Extract<keyof Database, "public">];
|
|
488
|
-
export type Tables<DefaultSchemaTableNameOrOptions extends keyof (DefaultSchema["Tables"] & DefaultSchema["Views"]) | {
|
|
489
|
-
schema: keyof DatabaseWithoutInternals;
|
|
490
|
-
}, TableName extends DefaultSchemaTableNameOrOptions extends {
|
|
491
|
-
schema: keyof DatabaseWithoutInternals;
|
|
492
|
-
} ? keyof (DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] & DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Views"]) : never = never> = DefaultSchemaTableNameOrOptions extends {
|
|
493
|
-
schema: keyof DatabaseWithoutInternals;
|
|
494
|
-
} ? (DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] & DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Views"])[TableName] extends {
|
|
495
|
-
Row: infer R;
|
|
496
|
-
} ? R : never : DefaultSchemaTableNameOrOptions extends keyof (DefaultSchema["Tables"] & DefaultSchema["Views"]) ? (DefaultSchema["Tables"] & DefaultSchema["Views"])[DefaultSchemaTableNameOrOptions] extends {
|
|
497
|
-
Row: infer R;
|
|
498
|
-
} ? R : never : never;
|
|
499
|
-
export type TablesInsert<DefaultSchemaTableNameOrOptions extends keyof DefaultSchema["Tables"] | {
|
|
500
|
-
schema: keyof DatabaseWithoutInternals;
|
|
501
|
-
}, TableName extends DefaultSchemaTableNameOrOptions extends {
|
|
502
|
-
schema: keyof DatabaseWithoutInternals;
|
|
503
|
-
} ? keyof DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] : never = never> = DefaultSchemaTableNameOrOptions extends {
|
|
504
|
-
schema: keyof DatabaseWithoutInternals;
|
|
505
|
-
} ? DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"][TableName] extends {
|
|
506
|
-
Insert: infer I;
|
|
507
|
-
} ? I : never : DefaultSchemaTableNameOrOptions extends keyof DefaultSchema["Tables"] ? DefaultSchema["Tables"][DefaultSchemaTableNameOrOptions] extends {
|
|
508
|
-
Insert: infer I;
|
|
509
|
-
} ? I : never : never;
|
|
510
|
-
export type TablesUpdate<DefaultSchemaTableNameOrOptions extends keyof DefaultSchema["Tables"] | {
|
|
511
|
-
schema: keyof DatabaseWithoutInternals;
|
|
512
|
-
}, TableName extends DefaultSchemaTableNameOrOptions extends {
|
|
513
|
-
schema: keyof DatabaseWithoutInternals;
|
|
514
|
-
} ? keyof DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] : never = never> = DefaultSchemaTableNameOrOptions extends {
|
|
515
|
-
schema: keyof DatabaseWithoutInternals;
|
|
516
|
-
} ? DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"][TableName] extends {
|
|
517
|
-
Update: infer U;
|
|
518
|
-
} ? U : never : DefaultSchemaTableNameOrOptions extends keyof DefaultSchema["Tables"] ? DefaultSchema["Tables"][DefaultSchemaTableNameOrOptions] extends {
|
|
519
|
-
Update: infer U;
|
|
520
|
-
} ? U : never : never;
|
|
521
|
-
export type Enums<DefaultSchemaEnumNameOrOptions extends keyof DefaultSchema["Enums"] | {
|
|
522
|
-
schema: keyof DatabaseWithoutInternals;
|
|
523
|
-
}, EnumName extends DefaultSchemaEnumNameOrOptions extends {
|
|
524
|
-
schema: keyof DatabaseWithoutInternals;
|
|
525
|
-
} ? keyof DatabaseWithoutInternals[DefaultSchemaEnumNameOrOptions["schema"]]["Enums"] : never = never> = DefaultSchemaEnumNameOrOptions extends {
|
|
526
|
-
schema: keyof DatabaseWithoutInternals;
|
|
527
|
-
} ? DatabaseWithoutInternals[DefaultSchemaEnumNameOrOptions["schema"]]["Enums"][EnumName] : DefaultSchemaEnumNameOrOptions extends keyof DefaultSchema["Enums"] ? DefaultSchema["Enums"][DefaultSchemaEnumNameOrOptions] : never;
|
|
528
|
-
export type CompositeTypes<PublicCompositeTypeNameOrOptions extends keyof DefaultSchema["CompositeTypes"] | {
|
|
529
|
-
schema: keyof DatabaseWithoutInternals;
|
|
530
|
-
}, CompositeTypeName extends PublicCompositeTypeNameOrOptions extends {
|
|
531
|
-
schema: keyof DatabaseWithoutInternals;
|
|
532
|
-
} ? keyof DatabaseWithoutInternals[PublicCompositeTypeNameOrOptions["schema"]]["CompositeTypes"] : never = never> = PublicCompositeTypeNameOrOptions extends {
|
|
533
|
-
schema: keyof DatabaseWithoutInternals;
|
|
534
|
-
} ? DatabaseWithoutInternals[PublicCompositeTypeNameOrOptions["schema"]]["CompositeTypes"][CompositeTypeName] : PublicCompositeTypeNameOrOptions extends keyof DefaultSchema["CompositeTypes"] ? DefaultSchema["CompositeTypes"][PublicCompositeTypeNameOrOptions] : never;
|
|
535
|
-
export declare const Constants: {
|
|
536
|
-
readonly public: {
|
|
537
|
-
readonly Enums: {};
|
|
538
|
-
};
|
|
539
|
-
};
|
|
540
|
-
export {};
|
|
541
|
-
//# sourceMappingURL=supabase.types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"supabase.types.d.ts","sourceRoot":"","sources":["../src/supabase.types.ts"],"names":[],"mappings":"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"}
|