@polardbx/pxbaas 0.1.0-beta.1 → 0.1.0-beta.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 +224 -0
- package/dist/app/local-index.d.ts +70 -0
- package/dist/app/local-index.d.ts.map +1 -0
- package/dist/app/local-index.js +140 -0
- package/dist/app/local-index.js.map +1 -0
- package/dist/app/preflight.d.ts +24 -1
- package/dist/app/preflight.d.ts.map +1 -1
- package/dist/app/preflight.js +47 -11
- package/dist/app/preflight.js.map +1 -1
- package/dist/app/spec-lint.d.ts.map +1 -1
- package/dist/app/spec-lint.js +16 -0
- package/dist/app/spec-lint.js.map +1 -1
- package/dist/app/templates.d.ts +24 -0
- package/dist/app/templates.d.ts.map +1 -1
- package/dist/app/templates.js.map +1 -1
- package/dist/cli/help-guides.d.ts +17 -0
- package/dist/cli/help-guides.d.ts.map +1 -0
- package/dist/cli/help-guides.js +132 -0
- package/dist/cli/help-guides.js.map +1 -0
- package/dist/cli/root.d.ts.map +1 -1
- package/dist/cli/root.js +6 -0
- package/dist/cli/root.js.map +1 -1
- package/dist/commands/app/index.d.ts.map +1 -1
- package/dist/commands/app/index.js +687 -47
- package/dist/commands/app/index.js.map +1 -1
- package/dist/commands/completion/index.d.ts.map +1 -1
- package/dist/commands/completion/index.js +5 -1
- package/dist/commands/completion/index.js.map +1 -1
- package/dist/commands/data/index.d.ts +52 -0
- package/dist/commands/data/index.d.ts.map +1 -1
- package/dist/commands/data/index.js +201 -39
- package/dist/commands/data/index.js.map +1 -1
- package/dist/commands/db/index.d.ts +15 -0
- package/dist/commands/db/index.d.ts.map +1 -1
- package/dist/commands/db/index.js +200 -55
- package/dist/commands/db/index.js.map +1 -1
- package/dist/commands/functions/new.d.ts +4 -0
- package/dist/commands/functions/new.d.ts.map +1 -1
- package/dist/commands/functions/new.js +24 -9
- package/dist/commands/functions/new.js.map +1 -1
- package/dist/commands/gen/index.d.ts.map +1 -1
- package/dist/commands/gen/index.js +13 -10
- package/dist/commands/gen/index.js.map +1 -1
- package/dist/commands/guide/index.d.ts +8 -0
- package/dist/commands/guide/index.d.ts.map +1 -0
- package/dist/commands/guide/index.js +20 -0
- package/dist/commands/guide/index.js.map +1 -0
- package/dist/commands/instance/index.d.ts.map +1 -1
- package/dist/commands/instance/index.js +120 -0
- package/dist/commands/instance/index.js.map +1 -1
- package/dist/commands/login/index.d.ts.map +1 -1
- package/dist/commands/login/index.js +23 -63
- package/dist/commands/login/index.js.map +1 -1
- package/dist/commands/profile/import-env.d.ts +7 -2
- package/dist/commands/profile/import-env.d.ts.map +1 -1
- package/dist/commands/profile/import-env.js +141 -16
- package/dist/commands/profile/import-env.js.map +1 -1
- package/dist/commands/profile/index.d.ts.map +1 -1
- package/dist/commands/profile/index.js +16 -1
- package/dist/commands/profile/index.js.map +1 -1
- package/dist/commands/skill/index.d.ts.map +1 -1
- package/dist/commands/skill/index.js +89 -14
- package/dist/commands/skill/index.js.map +1 -1
- package/dist/commands/storage/index.d.ts.map +1 -1
- package/dist/commands/storage/index.js +209 -7
- package/dist/commands/storage/index.js.map +1 -1
- package/dist/commands/tenant/index.d.ts +19 -0
- package/dist/commands/tenant/index.d.ts.map +1 -0
- package/dist/commands/tenant/index.js +667 -0
- package/dist/commands/tenant/index.js.map +1 -0
- package/dist/commands/whoami/index.js +19 -0
- package/dist/commands/whoami/index.js.map +1 -1
- package/dist/credentials/credential-store.d.ts +30 -1
- package/dist/credentials/credential-store.d.ts.map +1 -1
- package/dist/credentials/credential-store.js +114 -12
- package/dist/credentials/credential-store.js.map +1 -1
- package/dist/credentials/env-file.d.ts +48 -7
- package/dist/credentials/env-file.d.ts.map +1 -1
- package/dist/credentials/env-file.js +91 -16
- package/dist/credentials/env-file.js.map +1 -1
- package/dist/credentials/index.d.ts +2 -0
- package/dist/credentials/index.d.ts.map +1 -1
- package/dist/credentials/index.js +2 -0
- package/dist/credentials/index.js.map +1 -1
- package/dist/credentials/jwt-introspect.d.ts +7 -0
- package/dist/credentials/jwt-introspect.d.ts.map +1 -1
- package/dist/credentials/jwt-introspect.js.map +1 -1
- package/dist/credentials/masker.d.ts +3 -0
- package/dist/credentials/masker.d.ts.map +1 -1
- package/dist/credentials/masker.js +3 -0
- package/dist/credentials/masker.js.map +1 -1
- package/dist/credentials/profile.d.ts +12 -0
- package/dist/credentials/profile.d.ts.map +1 -1
- package/dist/credentials/profile.js +23 -0
- package/dist/credentials/profile.js.map +1 -1
- package/dist/credentials/tty-guard.d.ts +10 -0
- package/dist/credentials/tty-guard.d.ts.map +1 -1
- package/dist/credentials/tty-guard.js +32 -0
- package/dist/credentials/tty-guard.js.map +1 -1
- package/dist/db/apply-schema.d.ts +98 -11
- package/dist/db/apply-schema.d.ts.map +1 -1
- package/dist/db/apply-schema.js +247 -80
- package/dist/db/apply-schema.js.map +1 -1
- package/dist/db/introspect.d.ts +54 -0
- package/dist/db/introspect.d.ts.map +1 -0
- package/dist/db/introspect.js +140 -0
- package/dist/db/introspect.js.map +1 -0
- package/dist/db/sql-file.d.ts +55 -0
- package/dist/db/sql-file.d.ts.map +1 -1
- package/dist/db/sql-file.js +417 -0
- package/dist/db/sql-file.js.map +1 -1
- package/dist/instance/zero-whitelist.d.ts +39 -0
- package/dist/instance/zero-whitelist.d.ts.map +1 -0
- package/dist/instance/zero-whitelist.js +67 -0
- package/dist/instance/zero-whitelist.js.map +1 -0
- package/dist/main.js +26 -3
- package/dist/main.js.map +1 -1
- package/dist/skill/agents-md.d.ts +25 -0
- package/dist/skill/agents-md.d.ts.map +1 -0
- package/dist/skill/agents-md.js +62 -0
- package/dist/skill/agents-md.js.map +1 -0
- package/dist/skill/hosts.d.ts +31 -7
- package/dist/skill/hosts.d.ts.map +1 -1
- package/dist/skill/hosts.js +65 -7
- package/dist/skill/hosts.js.map +1 -1
- package/dist/skill/installer.d.ts +15 -3
- package/dist/skill/installer.d.ts.map +1 -1
- package/dist/skill/installer.js +62 -24
- package/dist/skill/installer.js.map +1 -1
- package/dist/tenant/bundle.d.ts +66 -0
- package/dist/tenant/bundle.d.ts.map +1 -0
- package/dist/tenant/bundle.js +132 -0
- package/dist/tenant/bundle.js.map +1 -0
- package/dist/tenant/guide.d.ts +50 -0
- package/dist/tenant/guide.d.ts.map +1 -0
- package/dist/tenant/guide.js +152 -0
- package/dist/tenant/guide.js.map +1 -0
- package/dist/tenant/probe.d.ts +65 -0
- package/dist/tenant/probe.d.ts.map +1 -0
- package/dist/tenant/probe.js +159 -0
- package/dist/tenant/probe.js.map +1 -0
- package/dist/tenant/verify.d.ts +37 -0
- package/dist/tenant/verify.d.ts.map +1 -0
- package/dist/tenant/verify.js +132 -0
- package/dist/tenant/verify.js.map +1 -0
- package/dist/version.d.ts +29 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +65 -0
- package/dist/version.js.map +1 -0
- package/package.json +3 -3
- package/skills/pxbaas-app-spec/SKILL.md +4 -2
- package/skills/pxbaas-app-spec/references/deploy-options.md +3 -2
- package/skills/pxbaas-app-spec/references/runtime-contract.md +2 -2
- package/skills/pxbaas-app-spec/references/templates-examples.md +7 -4
- package/skills/pxbaas-cli/SKILL.md +26 -8
- package/skills/pxbaas-cli/references/app-deploy.md +46 -3
- package/skills/pxbaas-cli/references/auth-and-credentials.md +30 -2
- package/skills/pxbaas-cli/references/data-postgrest.md +19 -3
- package/skills/pxbaas-cli/references/db-and-meta.md +17 -0
- package/skills/pxbaas-cli/references/multi-tenant-apps.md +35 -4
- package/skills/pxbaas-cli/references/provision.md +16 -1
- package/skills/pxbaas-cli/references/safety-and-two-phase.md +42 -13
- package/skills/pxbaas-cli/references/tenant-admin.md +122 -0
- package/skills/pxbaas-cli/references/troubleshooting.md +4 -1
- package/templates/webapp/csr-bff/db/rls.json +13 -0
- package/templates/webapp/csr-bff/db/schema.sql +8 -28
- package/templates/webapp/manifest.json +131 -8
- package/templates/webapp/react-vite-hono/backend/index.ts +21 -4
- package/templates/webapp/ssr-blog/db/rls.json +13 -0
- package/templates/webapp/ssr-blog/db/schema.sql +8 -28
- package/templates/webapp/ssr-hono/backend/index.ts +50 -31
- package/templates/webapp/ssr-shop/db/rls.json +16 -0
- package/templates/webapp/ssr-shop/db/schema.sql +12 -42
- package/dist/commands/login/login.d.ts +0 -3
- package/dist/commands/login/login.d.ts.map +0 -1
- package/dist/commands/login/login.js +0 -185
- package/dist/commands/login/login.js.map +0 -1
- /package/templates/webapp/vanilla-static/frontend/{app.js → dist/app.js} +0 -0
- /package/templates/webapp/vanilla-static/frontend/{index.html → dist/index.html} +0 -0
- /package/templates/webapp/vanilla-static/frontend/{style.css → dist/style.css} +0 -0
|
@@ -1,27 +1,38 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* pxbaas profile import <env-file>
|
|
3
3
|
*
|
|
4
|
-
* 直接从一个 Supabase/BaaS 惯例的 .env
|
|
4
|
+
* 直接从一个 Supabase/BaaS 惯例的 .env 文件导入实例凭据并落库为 profile,
|
|
5
5
|
* 免去把 URL / anon key / service key 拆出来再拼 stdin 登录命令。
|
|
6
6
|
*
|
|
7
7
|
* 与 login 共用 commitProfileCredentials(JWT 过期校验 + 租户一致性校验 + keyring 存储)。
|
|
8
8
|
* 密钥来自文件而非 argv/shell history,因此该命令可被 agent 非交互执行。
|
|
9
|
-
*
|
|
9
|
+
* 多租户实例按 DEFAULT_TENANT_ID + TENANT_* 建 multi-tenant profile;全局键不导入
|
|
10
|
+
* ——见 resolveLoginFromEnv。
|
|
11
|
+
*
|
|
12
|
+
* 失败分支(多租户但缺租户级凭据)不再只是拒绝:先做本地诊断,再用一次**临时只读**
|
|
13
|
+
* 探测判断本机能否打开租户管理面,据此分流到「管理员自助路径」或「申请清单」。
|
|
14
|
+
* 该分支绝不创建租户,也绝不把文件里的 DASHBOARD_* 落库。
|
|
10
15
|
*/
|
|
11
16
|
import { readFile } from 'node:fs/promises';
|
|
12
|
-
import {
|
|
17
|
+
import { CredentialStore, ProfileManager, commitProfileCredentials, computeFingerprint, formatError, formatSuccess, formatWarning, parseEnvText, resolveAdminFromEnv, resolveLoginFromEnv, TenantCredentialGapError, } from '../../credentials/index.js';
|
|
18
|
+
import { diagnoseTenantCredentialGap, renderAdminPath, renderRequestChecklist, tryProbeFromEnv, } from '../../tenant/guide.js';
|
|
13
19
|
export function registerProfileImportCommand(profileCmd, program) {
|
|
14
20
|
profileCmd
|
|
15
21
|
.command('import <env-file>')
|
|
16
|
-
.description('Import
|
|
22
|
+
.description('Import an instance profile from a .env file (non-interactive)')
|
|
17
23
|
.option('--name <profile>', 'Profile name to create/overwrite (default: --profile or "default")')
|
|
18
24
|
.option('--intranet', 'Prefer SUPABASE_INTRANET_URL over the public endpoint')
|
|
25
|
+
.option('--with-admin', 'Also bind DASHBOARD_USERNAME/DASHBOARD_PASSWORD as platform admin credentials (verified against the gateway first)')
|
|
19
26
|
.option('--json', 'Output in JSON format')
|
|
20
27
|
.action(async (envFile, options) => {
|
|
21
28
|
try {
|
|
22
29
|
await handleProfileImport(envFile, options, program);
|
|
23
30
|
}
|
|
24
31
|
catch (error) {
|
|
32
|
+
if (error instanceof TenantCredentialGapError) {
|
|
33
|
+
await handleTenantGap(error, envFile, options, program);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
25
36
|
const message = error instanceof Error ? error.message : String(error);
|
|
26
37
|
if (options.json || program.opts().json) {
|
|
27
38
|
console.log(JSON.stringify({ status: 'error', message }, null, 2));
|
|
@@ -34,18 +45,10 @@ export function registerProfileImportCommand(profileCmd, program) {
|
|
|
34
45
|
});
|
|
35
46
|
}
|
|
36
47
|
async function handleProfileImport(envFile, options, program) {
|
|
37
|
-
|
|
38
|
-
try {
|
|
39
|
-
text = await readFile(envFile, 'utf-8');
|
|
40
|
-
}
|
|
41
|
-
catch (err) {
|
|
42
|
-
const reason = err instanceof Error ? err.message : String(err);
|
|
43
|
-
throw new Error(`Failed to read env file '${envFile}': ${reason}`);
|
|
44
|
-
}
|
|
45
|
-
const env = parseEnvText(text);
|
|
48
|
+
const env = parseEnvText(await readEnvText(envFile));
|
|
46
49
|
const fields = resolveLoginFromEnv(env, { intranet: options.intranet });
|
|
47
|
-
// profile 名优先级:--name >
|
|
48
|
-
const profileName = options.name || program.opts().profile || 'default';
|
|
50
|
+
// profile 名优先级:--name > --profile(尾置或前置)> 'default'
|
|
51
|
+
const profileName = options.name || options.profile || program.opts().profile || 'default';
|
|
49
52
|
const result = await commitProfileCredentials({
|
|
50
53
|
profileName,
|
|
51
54
|
endpoint: fields.endpoint,
|
|
@@ -53,6 +56,12 @@ async function handleProfileImport(envFile, options, program) {
|
|
|
53
56
|
anonKey: fields.anonKey,
|
|
54
57
|
serviceRoleKey: fields.serviceRoleKey,
|
|
55
58
|
});
|
|
59
|
+
const skippedGlobalKeys = fields.skippedGlobalKeys ?? [];
|
|
60
|
+
const globalKeysNote = skippedGlobalKeys.length > 0
|
|
61
|
+
? `${skippedGlobalKeys.join(' / ')} present in the env file but NOT imported ` +
|
|
62
|
+
'(a profile stores tenant-level keys only; global keys are for platform-level ops)'
|
|
63
|
+
: undefined;
|
|
64
|
+
const adminOutcome = await maybeBindAdminCredentials(env, options, result.endpoint, profileName);
|
|
56
65
|
if (options.json || program.opts().json) {
|
|
57
66
|
const output = {
|
|
58
67
|
status: 'success',
|
|
@@ -65,6 +74,9 @@ async function handleProfileImport(envFile, options, program) {
|
|
|
65
74
|
sources: fields.sources,
|
|
66
75
|
anonKeyFingerprint: result.anonKeyFingerprint,
|
|
67
76
|
serviceKeyFingerprint: result.serviceKeyFingerprint,
|
|
77
|
+
globalKeysImported: skippedGlobalKeys.length === 0,
|
|
78
|
+
...(globalKeysNote ? { skippedGlobalKeys, note: globalKeysNote } : {}),
|
|
79
|
+
...(adminOutcome ? { admin: adminOutcome } : {}),
|
|
68
80
|
};
|
|
69
81
|
console.log(JSON.stringify(output, null, 2));
|
|
70
82
|
}
|
|
@@ -72,10 +84,123 @@ async function handleProfileImport(envFile, options, program) {
|
|
|
72
84
|
console.log(formatSuccess(`Imported profile from env file: ${profileName}`));
|
|
73
85
|
console.log(` Env file: ${envFile}`);
|
|
74
86
|
console.log(` Endpoint: ${result.endpoint} (from ${fields.sources.endpoint})`);
|
|
75
|
-
console.log(` Tenant ID: ${result.tenantId || '(single-tenant)'}`
|
|
87
|
+
console.log(` Tenant ID: ${result.tenantId || '(single-tenant)'}` +
|
|
88
|
+
(fields.sources.tenantId ? ` (from ${fields.sources.tenantId})` : ''));
|
|
76
89
|
console.log(` Mode: ${result.mode}`);
|
|
77
90
|
console.log(` Anon Key: ${result.anonKeyFingerprint} (from ${fields.sources.anonKey})`);
|
|
78
91
|
console.log(` Service Key: ${result.serviceKeyFingerprint} (from ${fields.sources.serviceRoleKey})`);
|
|
92
|
+
if (globalKeysNote) {
|
|
93
|
+
console.log(` Note: ${globalKeysNote}`);
|
|
94
|
+
}
|
|
95
|
+
if (adminOutcome?.note) {
|
|
96
|
+
console.log(` Admin: ${adminOutcome.note}`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* 管理凭据默认**不外吸**:文件里有 DASHBOARD_* 时只报告"存在但未导入"。
|
|
102
|
+
* 只有显式 --with-admin 才导入,且导入前必须先用它探通一次租户管理面——存进一把
|
|
103
|
+
* 不通的口令,会让后续每条管理命令都 401 且难以归因(与"拒绝保存过期密钥"同理)。
|
|
104
|
+
*/
|
|
105
|
+
async function maybeBindAdminCredentials(env, options, endpoint, profileName) {
|
|
106
|
+
const admin = resolveAdminFromEnv(env);
|
|
107
|
+
if (!admin) {
|
|
108
|
+
return options.withAdmin
|
|
109
|
+
? { bound: false, note: 'no DASHBOARD_USERNAME/DASHBOARD_PASSWORD pair found in this env file' }
|
|
110
|
+
: undefined;
|
|
111
|
+
}
|
|
112
|
+
if (!options.withAdmin) {
|
|
113
|
+
return {
|
|
114
|
+
bound: false,
|
|
115
|
+
note: `${admin.sources.username} / ${admin.sources.password} present but NOT imported ` +
|
|
116
|
+
'(platform admin credentials are never absorbed silently; pass --with-admin to bind them)',
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
const probe = await tryProbeFromEnv(env, endpoint);
|
|
120
|
+
if (!probe?.adminCapable) {
|
|
121
|
+
return {
|
|
122
|
+
bound: false,
|
|
123
|
+
note: `--with-admin refused: these dashboard credentials could not open the tenant admin channel (${probe?.status ?? 'probe unavailable'}). Tenant keys were imported normally.`,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
const store = new CredentialStore();
|
|
127
|
+
await store.setAdminCredentials(profileName, {
|
|
128
|
+
username: admin.username,
|
|
129
|
+
password: admin.password,
|
|
130
|
+
storedAt: new Date().toISOString(),
|
|
131
|
+
});
|
|
132
|
+
const profiles = new ProfileManager();
|
|
133
|
+
const profile = await profiles.getProfile(profileName);
|
|
134
|
+
if (profile)
|
|
135
|
+
await profiles.setProfile({ ...profile, adminCapable: true });
|
|
136
|
+
return {
|
|
137
|
+
bound: true,
|
|
138
|
+
note: `platform admin credentials bound (user=${admin.username.slice(0, 2)}***, pass=${computeFingerprint(admin.password)})`,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
/** 多租户缺租户级凭据:诊断 → 分流指引 → 退出 1,并明确"什么都没创建、什么都没导入"。 */
|
|
142
|
+
async function handleTenantGap(error, envFile, options, program) {
|
|
143
|
+
const env = parseEnvText(await readEnvText(envFile));
|
|
144
|
+
const diagnostics = diagnoseTenantCredentialGap(env, { envFile });
|
|
145
|
+
const probe = await tryProbeFromEnv(env, diagnostics.endpoint);
|
|
146
|
+
const adminRoute = Boolean(probe?.adminCapable);
|
|
147
|
+
if (options.json || program.opts().json) {
|
|
148
|
+
console.log(JSON.stringify({
|
|
149
|
+
status: 'error',
|
|
150
|
+
code: 'TENANT_CREDENTIAL_GAP',
|
|
151
|
+
message: error.message,
|
|
152
|
+
missing: error.missing,
|
|
153
|
+
nothingWasCreated: true,
|
|
154
|
+
nothingWasImported: true,
|
|
155
|
+
diagnostics,
|
|
156
|
+
adminChannel: probe
|
|
157
|
+
? { status: probe.status, adminCapable: probe.adminCapable, detail: probe.detail }
|
|
158
|
+
: { status: 'no-dashboard-credentials-in-env', adminCapable: false },
|
|
159
|
+
route: adminRoute ? 'admin-self-service' : 'request-from-admin',
|
|
160
|
+
nextSteps: adminRoute
|
|
161
|
+
? [
|
|
162
|
+
`pxbaas tenant login --endpoint ${diagnostics.endpoint ?? '<gateway url>'}`,
|
|
163
|
+
'pxbaas tenant ls --json',
|
|
164
|
+
`pxbaas tenant keys ${diagnostics.defaultTenantId ?? '<tenant-id>'} --as-profile`,
|
|
165
|
+
`pxbaas tenant keys ${diagnostics.defaultTenantId ?? '<tenant-id>'} --bundle ./<tenant>.pxbaas.env`,
|
|
166
|
+
]
|
|
167
|
+
: [
|
|
168
|
+
'Ask the instance administrator for this tenant’s anon key and service role key.',
|
|
169
|
+
'A tenant-level key’s JWT payload carries a tenant_id claim; a platform-global key does not and cannot reach tenant resources.',
|
|
170
|
+
],
|
|
171
|
+
}, null, 2));
|
|
172
|
+
process.exit(1);
|
|
173
|
+
}
|
|
174
|
+
console.error(formatError(error.message));
|
|
175
|
+
console.error('');
|
|
176
|
+
console.error('Diagnosis of this env file:');
|
|
177
|
+
console.error(` MULTI_TENANT_MODE = ${diagnostics.multiTenantMode ?? '(absent)'}`);
|
|
178
|
+
console.error(` DEFAULT_TENANT_ID = ${diagnostics.defaultTenantId ?? '(absent)'}`);
|
|
179
|
+
console.error(` tenant-level keys = ${diagnostics.tenantLevelKeysPresent.length ? diagnostics.tenantLevelKeysPresent.join(', ') : 'NONE'}`);
|
|
180
|
+
for (const finding of diagnostics.keyFindings) {
|
|
181
|
+
console.error(` ${finding.variable.padEnd(26)} ${finding.fingerprint} ${finding.note}`);
|
|
182
|
+
}
|
|
183
|
+
console.error(` admin creds present = ${diagnostics.adminCredentialsPresent ? 'yes (NOT imported)' : 'no'}`);
|
|
184
|
+
console.error('');
|
|
185
|
+
console.error('Nothing was created and nothing was imported.');
|
|
186
|
+
console.error('');
|
|
187
|
+
if (adminRoute && probe) {
|
|
188
|
+
console.error(renderAdminPath(diagnostics, probe));
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
console.error(renderRequestChecklist(diagnostics));
|
|
192
|
+
}
|
|
193
|
+
console.error('');
|
|
194
|
+
console.error(formatWarning('If you ARE the instance administrator, start with: pxbaas tenant login --endpoint <gateway url>'));
|
|
195
|
+
process.exit(1);
|
|
196
|
+
}
|
|
197
|
+
async function readEnvText(envFile) {
|
|
198
|
+
try {
|
|
199
|
+
return await readFile(envFile, 'utf-8');
|
|
200
|
+
}
|
|
201
|
+
catch (err) {
|
|
202
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
203
|
+
throw new Error(`Failed to read env file '${envFile}': ${reason}`);
|
|
79
204
|
}
|
|
80
205
|
}
|
|
81
206
|
//# sourceMappingURL=import-env.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-env.js","sourceRoot":"","sources":["../../../src/commands/profile/import-env.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"import-env.js","sourceRoot":"","sources":["../../../src/commands/profile/import-env.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/profile/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/profile/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiD7D"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { ProfileManager, formatSuccess, formatError, } from '../../credentials/index.js';
|
|
1
|
+
import { CredentialStore, ProfileManager, formatSuccess, formatError, } from '../../credentials/index.js';
|
|
2
|
+
import { registerProfileImportCommand } from './import-env.js';
|
|
2
3
|
export function registerProfileCommand(program) {
|
|
3
4
|
const profileCmd = program
|
|
4
5
|
.command('profile')
|
|
@@ -45,6 +46,8 @@ export function registerProfileCommand(program) {
|
|
|
45
46
|
process.exit(1);
|
|
46
47
|
}
|
|
47
48
|
});
|
|
49
|
+
// profile import <env-file>
|
|
50
|
+
registerProfileImportCommand(profileCmd, program);
|
|
48
51
|
}
|
|
49
52
|
async function handleProfileLs(program) {
|
|
50
53
|
const profileManager = new ProfileManager();
|
|
@@ -95,15 +98,27 @@ async function handleProfileRm(name, program) {
|
|
|
95
98
|
if (!deleted) {
|
|
96
99
|
throw new Error(`Profile not found: ${name}`);
|
|
97
100
|
}
|
|
101
|
+
// 删 profile 必须连带删掉它的敏感项,否则租户密钥/管理凭据会变成钥匙串里
|
|
102
|
+
// 既看不见也删不掉的孤儿(profile 名已经不存在,再没有命令能定位它们)。
|
|
103
|
+
const secrets = await new CredentialStore().deleteAllForProfile(name);
|
|
98
104
|
const output = {
|
|
99
105
|
profile: name,
|
|
100
106
|
status: 'removed',
|
|
107
|
+
credentialsRemoved: secrets.credentialsRemoved,
|
|
108
|
+
adminCredentialsRemoved: secrets.adminRemoved,
|
|
101
109
|
};
|
|
102
110
|
if (program.opts().json) {
|
|
103
111
|
console.log(JSON.stringify(output, null, 2));
|
|
104
112
|
}
|
|
105
113
|
else {
|
|
106
114
|
console.log(formatSuccess(`Removed profile: ${name}`));
|
|
115
|
+
if (secrets.credentialsRemoved || secrets.adminRemoved) {
|
|
116
|
+
const what = [
|
|
117
|
+
secrets.credentialsRemoved ? 'API keys' : null,
|
|
118
|
+
secrets.adminRemoved ? 'dashboard credentials' : null,
|
|
119
|
+
].filter(Boolean).join(' and ');
|
|
120
|
+
console.log(` Also removed stored ${what}.`);
|
|
121
|
+
}
|
|
107
122
|
}
|
|
108
123
|
}
|
|
109
124
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/profile/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EACd,aAAa,EACb,WAAW,GACZ,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/profile/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/skill/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/skill/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2D5D"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { formatError, formatSuccess, formatWarning } from '../../credentials/index.js';
|
|
2
2
|
import { SkillManager } from '../../skill/installer.js';
|
|
3
|
-
import { isHostName, SUPPORTED_HOSTS } from '../../skill/hosts.js';
|
|
3
|
+
import { isHostName, isProjectHost, PROJECT_HOSTS, PROJECT_SKILL_DIR, SUPPORTED_HOSTS, } from '../../skill/hosts.js';
|
|
4
|
+
import { agentsMdBlockPresent, removeAgentsMdBlock, upsertAgentsMdBlock, } from '../../skill/agents-md.js';
|
|
4
5
|
/**
|
|
5
6
|
* `pxbaas skill` — install/list/remove ALL bundled Agent Skills (pxbaas-cli,
|
|
6
7
|
* pxbaas-app-spec, ...) into supported Agent hosts (~/.qoder, ~/.claude,
|
|
@@ -17,12 +18,14 @@ export function registerSkillCommands(program) {
|
|
|
17
18
|
skillCmd
|
|
18
19
|
.command('install')
|
|
19
20
|
.description('Install/update all bundled skills into an Agent host skills directory')
|
|
20
|
-
.option('--host <host>', `Target host (${SUPPORTED_HOSTS.join('|')})`)
|
|
21
|
-
.option('--all', 'Install to every detected host')
|
|
21
|
+
.option('--host <host>', `Target host (${SUPPORTED_HOSTS.join('|')}; project scope also: ${PROJECT_HOSTS.filter((h) => !SUPPORTED_HOSTS.includes(h)).join('|')})`)
|
|
22
|
+
.option('--all', 'Install to every detected host (user scope; excludes the neutral "agents" location)')
|
|
23
|
+
.option('--scope <scope>', 'Install scope: user (~/.<host>/skills, default) or project (repo-level convention)')
|
|
22
24
|
.option('--dir <path>', 'Custom skills-root directory (each skill goes under <dir>/<skill>)')
|
|
23
25
|
.option('--skill <name>', 'Install only this bundled skill (default: all)')
|
|
24
26
|
.option('--dry-run', 'Show what would be written without touching disk')
|
|
25
27
|
.option('--force', 'Back up and overwrite a foreign (non-baas) directory')
|
|
28
|
+
.option('--agents-md', 'With --scope project: also write/update the managed pxbaas block in AGENTS.md')
|
|
26
29
|
.option('--json', 'Output in JSON format')
|
|
27
30
|
.action(async (options) => {
|
|
28
31
|
try {
|
|
@@ -49,12 +52,14 @@ export function registerSkillCommands(program) {
|
|
|
49
52
|
skillCmd
|
|
50
53
|
.command('remove')
|
|
51
54
|
.description('Remove bundled skills from a host (only baas-managed dirs; two-phase)')
|
|
52
|
-
.option('--host <host>', `Target host (${SUPPORTED_HOSTS.join('|')})`)
|
|
53
|
-
.option('--all', 'Remove from every detected host')
|
|
55
|
+
.option('--host <host>', `Target host (${SUPPORTED_HOSTS.join('|')}; project scope also: ${PROJECT_HOSTS.filter((h) => !SUPPORTED_HOSTS.includes(h)).join('|')})`)
|
|
56
|
+
.option('--all', 'Remove from every detected host (user scope)')
|
|
57
|
+
.option('--scope <scope>', 'Remove scope: user (default) or project')
|
|
54
58
|
.option('--dir <path>', 'Custom skills-root directory to remove from')
|
|
55
59
|
.option('--skill <name>', 'Remove only this bundled skill (default: all)')
|
|
56
60
|
.option('--dry-run', 'Preview what would be removed')
|
|
57
61
|
.option('--confirm', 'Actually perform the removal (required to delete)')
|
|
62
|
+
.option('--agents-md', 'With --scope project --confirm: also remove the managed pxbaas block from AGENTS.md')
|
|
58
63
|
.option('--json', 'Output in JSON format')
|
|
59
64
|
.action(async (options) => {
|
|
60
65
|
try {
|
|
@@ -75,14 +80,28 @@ function handleError(error, json) {
|
|
|
75
80
|
}
|
|
76
81
|
process.exit(1);
|
|
77
82
|
}
|
|
78
|
-
function resolveHost(host) {
|
|
83
|
+
function resolveHost(host, scope) {
|
|
79
84
|
if (!host)
|
|
80
85
|
return undefined;
|
|
86
|
+
if (scope === 'project') {
|
|
87
|
+
if (!isProjectHost(host)) {
|
|
88
|
+
throw new Error(`Unsupported project-scope host "${host}". Supported: ${PROJECT_HOSTS.join(', ')}.`);
|
|
89
|
+
}
|
|
90
|
+
return host;
|
|
91
|
+
}
|
|
81
92
|
if (!isHostName(host)) {
|
|
82
93
|
throw new Error(`Unsupported host "${host}". Supported: ${SUPPORTED_HOSTS.join(', ')}.`);
|
|
83
94
|
}
|
|
84
95
|
return host;
|
|
85
96
|
}
|
|
97
|
+
function parseScope(scope) {
|
|
98
|
+
if (!scope)
|
|
99
|
+
return 'user';
|
|
100
|
+
if (scope !== 'user' && scope !== 'project') {
|
|
101
|
+
throw new Error(`Invalid --scope "${scope}". Supported: user, project.`);
|
|
102
|
+
}
|
|
103
|
+
return scope;
|
|
104
|
+
}
|
|
86
105
|
function isJson(options, program) {
|
|
87
106
|
return Boolean(options.json || program.opts().json);
|
|
88
107
|
}
|
|
@@ -95,7 +114,8 @@ function emit(results, json, output) {
|
|
|
95
114
|
return;
|
|
96
115
|
}
|
|
97
116
|
for (const r of results) {
|
|
98
|
-
const
|
|
117
|
+
const scopeTag = r.scope && r.scope !== 'user' ? `:${r.scope}` : '';
|
|
118
|
+
const line = `${r.host}${scopeTag}/${r.skill}: ${r.status} -> ${r.targetDir}`;
|
|
99
119
|
if (r.status === 'error' || r.status === 'skipped-foreign') {
|
|
100
120
|
console.log(formatWarning(line + (r.reason ? ` (${r.reason})` : '')));
|
|
101
121
|
}
|
|
@@ -112,10 +132,39 @@ function emit(results, json, output) {
|
|
|
112
132
|
}
|
|
113
133
|
async function handleInstall(options, program) {
|
|
114
134
|
const json = isJson(options, program);
|
|
135
|
+
const scope = parseScope(options.scope);
|
|
136
|
+
if (options.agentsMd && scope !== 'project') {
|
|
137
|
+
throw new Error('--agents-md requires --scope project.');
|
|
138
|
+
}
|
|
115
139
|
const manager = await SkillManager.create();
|
|
116
|
-
const targets = manager.resolveTargets({
|
|
140
|
+
const targets = manager.resolveTargets({
|
|
141
|
+
host: resolveHost(options.host, scope),
|
|
142
|
+
all: options.all,
|
|
143
|
+
dir: options.dir,
|
|
144
|
+
scope,
|
|
145
|
+
});
|
|
117
146
|
const results = await manager.install(targets, { dryRun: options.dryRun, force: options.force, skills: skillFilter(options.skill) });
|
|
118
|
-
|
|
147
|
+
let agentsMd;
|
|
148
|
+
if (options.agentsMd && !options.dryRun) {
|
|
149
|
+
const dirs = [...new Set(targets
|
|
150
|
+
.filter((t) => isProjectHost(t.host))
|
|
151
|
+
.map((t) => PROJECT_SKILL_DIR[t.host]))];
|
|
152
|
+
agentsMd = await upsertAgentsMdBlock(process.cwd(), [
|
|
153
|
+
`- pxbaas skills: ${dirs.join(', ')}`,
|
|
154
|
+
'- Run `pxbaas guide` for the end-to-end develop/deploy/verify/share workflow.',
|
|
155
|
+
]);
|
|
156
|
+
}
|
|
157
|
+
emit(results, json, {
|
|
158
|
+
action: 'install',
|
|
159
|
+
scope,
|
|
160
|
+
dryRun: Boolean(options.dryRun),
|
|
161
|
+
skills: await manager.bundledSkills(),
|
|
162
|
+
...(agentsMd ? { agentsMd } : {}),
|
|
163
|
+
results,
|
|
164
|
+
});
|
|
165
|
+
if (agentsMd && !json) {
|
|
166
|
+
console.log(formatSuccess(`AGENTS.md block ${agentsMd.created ? 'created' : 'updated'}: ${agentsMd.path}`));
|
|
167
|
+
}
|
|
119
168
|
if (results.some((r) => r.status === 'error'))
|
|
120
169
|
process.exit(1);
|
|
121
170
|
}
|
|
@@ -123,27 +172,53 @@ async function handleList(options, program) {
|
|
|
123
172
|
const json = isJson(options, program);
|
|
124
173
|
const manager = await SkillManager.create();
|
|
125
174
|
const bundled = await manager.bundledSkills();
|
|
126
|
-
const results = await manager.list();
|
|
175
|
+
const results = [...(await manager.list()), ...(await manager.listProject())];
|
|
176
|
+
const agentsMd = await agentsMdBlockPresent(process.cwd());
|
|
127
177
|
if (json) {
|
|
128
|
-
console.log(JSON.stringify({ action: 'list', skills: bundled, results }, null, 2));
|
|
178
|
+
console.log(JSON.stringify({ action: 'list', skills: bundled, agentsMd, results }, null, 2));
|
|
129
179
|
return;
|
|
130
180
|
}
|
|
131
181
|
console.log(`Bundled skills: ${bundled.join(', ')}`);
|
|
182
|
+
console.log(`AGENTS.md managed block: ${agentsMd ? 'present' : 'absent'}`);
|
|
132
183
|
if (results.length === 0) {
|
|
133
184
|
console.log(formatWarning('No supported host directories detected.'));
|
|
134
185
|
return;
|
|
135
186
|
}
|
|
136
187
|
for (const r of results) {
|
|
188
|
+
const scopeTag = r.scope && r.scope !== 'user' ? `:${r.scope}` : '';
|
|
137
189
|
const detail = r.status === 'installed' ? ` (v${r.skillVersion}, ${r.installedAt})` : '';
|
|
138
|
-
console.log(`${r.host}/${r.skill}: ${r.status}${detail} -> ${r.targetDir}`);
|
|
190
|
+
console.log(`${r.host}${scopeTag}/${r.skill}: ${r.status}${detail} -> ${r.targetDir}`);
|
|
139
191
|
}
|
|
140
192
|
}
|
|
141
193
|
async function handleRemove(options, program) {
|
|
142
194
|
const json = isJson(options, program);
|
|
195
|
+
const scope = parseScope(options.scope);
|
|
196
|
+
if (options.agentsMd && scope !== 'project') {
|
|
197
|
+
throw new Error('--agents-md requires --scope project.');
|
|
198
|
+
}
|
|
143
199
|
const manager = await SkillManager.create();
|
|
144
|
-
const targets = manager.resolveTargets({
|
|
200
|
+
const targets = manager.resolveTargets({
|
|
201
|
+
host: resolveHost(options.host, scope),
|
|
202
|
+
all: options.all,
|
|
203
|
+
dir: options.dir,
|
|
204
|
+
scope,
|
|
205
|
+
});
|
|
145
206
|
const results = await manager.remove(targets, { dryRun: options.dryRun, confirm: options.confirm, skills: skillFilter(options.skill) });
|
|
146
|
-
|
|
207
|
+
let agentsMd;
|
|
208
|
+
if (options.agentsMd && options.confirm && !options.dryRun) {
|
|
209
|
+
agentsMd = await removeAgentsMdBlock(process.cwd());
|
|
210
|
+
}
|
|
211
|
+
emit(results, json, {
|
|
212
|
+
action: 'remove',
|
|
213
|
+
scope,
|
|
214
|
+
dryRun: Boolean(options.dryRun),
|
|
215
|
+
confirm: Boolean(options.confirm),
|
|
216
|
+
...(agentsMd ? { agentsMd } : {}),
|
|
217
|
+
results,
|
|
218
|
+
});
|
|
219
|
+
if (agentsMd && !json && agentsMd.removed) {
|
|
220
|
+
console.log(formatSuccess(`AGENTS.md block removed: ${agentsMd.path}`));
|
|
221
|
+
}
|
|
147
222
|
if (!options.confirm && !options.dryRun && results.some((r) => r.status === 'dry-run')) {
|
|
148
223
|
console.error(formatWarning('Preview only. Re-run with --confirm to remove.'));
|
|
149
224
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/skill/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACvF,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/skill/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8DpC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmF9D"}
|