@anna-ai/cli 0.1.46 → 0.1.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{account-BBMYzSH7.js → account-CPnwqXeh.js} +1 -1
- package/dist/{app-bundle-upload-BNBH9x6a.js → app-bundle-upload-Ca0r-kPy.js} +2 -2
- package/dist/{apps-BQcbrExH.js → apps-CzqMRLbS.js} +4 -2
- package/dist/{apps-DlVsVHQ5.js → apps-HbfURK6y.js} +8 -1
- package/dist/{apps-cut-BQHvzBpJ.js → apps-cut-BhTJwILv.js} +7 -7
- package/dist/{apps-destructive-BVjpOxNF.js → apps-destructive-PlaU93EX.js} +1 -1
- package/dist/{apps-discard-CFQWOr9x.js → apps-discard-CFi-GzpU.js} +7 -7
- package/dist/apps-grants-DqaX8UTy.js +70 -0
- package/dist/apps-publish-4IIbF2xr.js +17 -0
- package/dist/{apps-publish-DFKd-Egv.js → apps-publish-8N9x4VEM.js} +5 -5
- package/dist/{apps-push-Bpv100k_.js → apps-push-CnSeLwdo.js} +9 -9
- package/dist/{apps-release-Goi4Psmt.js → apps-release-DGQv6DDl.js} +2 -2
- package/dist/{apps-rename-slug-qKXdUDDn.js → apps-rename-slug-CCEU_7JJ.js} +2 -2
- package/dist/{apps-status-BVIL6DYc.js → apps-status-C4Cxc2DF.js} +6 -1
- package/dist/{apps-submit-review-BmPjkoe9.js → apps-submit-review--hZFZRJ3.js} +9 -3
- package/dist/{apps-sync-meta-Ch3kECAO.js → apps-sync-meta-DnFwFNl5.js} +3 -3
- package/dist/{apps-versions-DfapYfW-.js → apps-versions-C7NzG5Dk.js} +10 -5
- package/dist/cli.js +23 -23
- package/dist/{dev-ClCDRplP.js → dev-Bfv3WQC0.js} +2 -2
- package/dist/dev-CnDh2_7r.js +4 -0
- package/dist/{dev-app-cache-B3Wa5t6X.js → dev-app-cache-Dw2JESld.js} +9 -2
- package/dist/{executa-dev-CSzM-Oha.js → executa-dev-DYO87dzg.js} +2 -2
- package/dist/{executa-install-CM4x4doq.js → executa-install-DAposiBw.js} +1 -1
- package/dist/executa-install-LaAOSkY0.js +7 -0
- package/dist/{executa-publish-DRK9wla1.js → executa-publish-6awuH4Ma.js} +3 -3
- package/dist/{executa-publish-DiyLvmyl.js → executa-publish-BKnsUoZq.js} +2 -2
- package/dist/{executa-upload-binaries-pCHYUcie.js → executa-upload-binaries-DwWQ18Dq.js} +1 -1
- package/dist/{executa-upload-binaries-BRjsS5Xx.js → executa-upload-binaries-FWM2yXfB.js} +2 -2
- package/dist/{listing-meta-DvxLn9NY.js → listing-meta-DgweMStT.js} +2 -4
- package/dist/{manifest-DZyXkzg5.js → manifest-B_DjigtQ.js} +1 -2
- package/dist/{publish-D2c3F4GL.js → publish-D5O5JKRb.js} +7 -7
- package/dist/{working-orchestration-Ny4fR7gv.js → working-orchestration-CpBJLs50.js} +4 -4
- package/package.json +1 -1
- package/templates/minimal/app.json +1 -2
- package/dist/apps-grants-baOFOxnO.js +0 -34
- package/dist/apps-publish-zeKU-9TE.js +0 -17
- package/dist/dev-C251jRh2.js +0 -4
- package/dist/executa-install-V5fSZRdO.js +0 -7
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./credentials-BTv2IfUZ.js";
|
|
2
|
-
import { setDeveloperHandle } from "./apps-
|
|
2
|
+
import { setDeveloperHandle } from "./apps-HbfURK6y.js";
|
|
3
3
|
import { CliError } from "./client-sMzq2PWG.js";
|
|
4
4
|
import { reportError, resolveClient } from "./_lifecycle-shared-_9BzQ9Y2.js";
|
|
5
5
|
import { bold, dim, green, red } from "kleur/colors";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { finalizeBundle, finalizeWorkingBundle, getBundle, initBundle, initWorkingBundle, uploadBundleFile, uploadWorkingBundleFile } from "./apps-
|
|
1
|
+
import { finalizeBundle, finalizeWorkingBundle, getBundle, initBundle, initWorkingBundle, uploadBundleFile, uploadWorkingBundleFile } from "./apps-HbfURK6y.js";
|
|
2
2
|
import { CliError } from "./client-sMzq2PWG.js";
|
|
3
|
-
import { canonicalize } from "./executa-publish-
|
|
3
|
+
import { canonicalize } from "./executa-publish-BKnsUoZq.js";
|
|
4
4
|
import { join, relative, sep } from "node:path";
|
|
5
5
|
import { readFileSync, readdirSync, statSync } from "node:fs";
|
|
6
6
|
import { createHash } from "node:crypto";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./credentials-BTv2IfUZ.js";
|
|
2
|
-
import { listMyApps } from "./apps-
|
|
2
|
+
import { listMyApps } from "./apps-HbfURK6y.js";
|
|
3
3
|
import "./client-sMzq2PWG.js";
|
|
4
4
|
import { resolveClient, withErrorHandling } from "./_lifecycle-shared-_9BzQ9Y2.js";
|
|
5
5
|
import { bold, cyan, dim, green, magenta, red, yellow } from "kleur/colors";
|
|
@@ -30,6 +30,7 @@ async function runAppsList(opts) {
|
|
|
30
30
|
name: a.name,
|
|
31
31
|
status: a.status,
|
|
32
32
|
is_dev: a.is_dev ?? false,
|
|
33
|
+
review_candidate_version: a.review_candidate_version ?? null,
|
|
33
34
|
updated_at: a.updated_at ?? null
|
|
34
35
|
}))
|
|
35
36
|
}, null, 2));
|
|
@@ -42,7 +43,8 @@ async function runAppsList(opts) {
|
|
|
42
43
|
}
|
|
43
44
|
for (const a of apps) {
|
|
44
45
|
const dev = a.is_dev ? " " + yellow("[dev]") : "";
|
|
45
|
-
|
|
46
|
+
const inReview = a.review_candidate_version ? " " + yellow(`(v${a.review_candidate_version} in review)`) : "";
|
|
47
|
+
console.log(` ${statusTag(a.status)}${dev} ${bold(a.slug)} ${dim(`(id=${a.id})`)}${inReview}`);
|
|
46
48
|
if (a.name && a.name !== a.slug) console.log(` ${dim(a.name)}`);
|
|
47
49
|
}
|
|
48
50
|
return 0;
|
|
@@ -133,6 +133,13 @@ async function getAppGrants(client, appId) {
|
|
|
133
133
|
});
|
|
134
134
|
return r.status === 404 ? null : r.data;
|
|
135
135
|
}
|
|
136
|
+
async function getAppPermissions(client, appId) {
|
|
137
|
+
const r = await client.request({
|
|
138
|
+
path: `/api/v1/apps/${appId}/permissions`,
|
|
139
|
+
allowStatuses: [404]
|
|
140
|
+
});
|
|
141
|
+
return r.status === 404 ? null : r.data;
|
|
142
|
+
}
|
|
136
143
|
/**
|
|
137
144
|
* Set (or rename) the caller's developer handle — the per-developer
|
|
138
145
|
* namespace for `@handle/slug` public app refs.
|
|
@@ -263,4 +270,4 @@ async function finalizeWorkingBundle(client, appId, skipRemoteCheck = false) {
|
|
|
263
270
|
}
|
|
264
271
|
|
|
265
272
|
//#endregion
|
|
266
|
-
export { archiveApp, createApp, createVersion, cutWorkingDraft, deleteApp, deleteWorkingDraft, finalizeBundle, finalizeWorkingBundle, findAppBySlug, getApp, getAppGrants, getBundle, getWorkingDraft, initBundle, initWorkingBundle, listMyApps, listVersions, patchApp, publishVersion, setDeveloperHandle, submitForReview, unarchiveApp, unpublishApp, uploadAppLogo, uploadAppScreenshot, uploadBundleFile, uploadWorkingBundleFile, upsertWorkingDraft };
|
|
273
|
+
export { archiveApp, createApp, createVersion, cutWorkingDraft, deleteApp, deleteWorkingDraft, finalizeBundle, finalizeWorkingBundle, findAppBySlug, getApp, getAppGrants, getAppPermissions, getBundle, getWorkingDraft, initBundle, initWorkingBundle, listMyApps, listVersions, patchApp, publishVersion, setDeveloperHandle, submitForReview, unarchiveApp, unpublishApp, uploadAppLogo, uploadAppScreenshot, uploadBundleFile, uploadWorkingBundleFile, upsertWorkingDraft };
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { canonicalHost } from "./credentials-BTv2IfUZ.js";
|
|
2
2
|
import "./nexus-root-BlPwOusj.js";
|
|
3
|
-
import { cutWorkingDraft } from "./apps-
|
|
3
|
+
import { cutWorkingDraft } from "./apps-HbfURK6y.js";
|
|
4
4
|
import { CliError } from "./client-sMzq2PWG.js";
|
|
5
5
|
import { resolveClient, withErrorHandling } from "./_lifecycle-shared-_9BzQ9Y2.js";
|
|
6
6
|
import { readExecutaIdentity } from "./executa-cache-BFoUtb4J.js";
|
|
7
7
|
import { readExecutasLock, writeExecutasLock } from "./bundled-executas-BRyQkI9u.js";
|
|
8
|
-
import { loadAppManifest, loadExecutaManifest } from "./manifest-
|
|
8
|
+
import { loadAppManifest, loadExecutaManifest } from "./manifest-B_DjigtQ.js";
|
|
9
9
|
import "./executas-CvQY_w2U.js";
|
|
10
|
-
import "./executa-publish-
|
|
10
|
+
import "./executa-publish-BKnsUoZq.js";
|
|
11
11
|
import "./binary-upload-DVhQ0uY0.js";
|
|
12
|
-
import { uploadExecutaBinaries } from "./executa-upload-binaries-
|
|
13
|
-
import "./dev-
|
|
14
|
-
import "./executa-install-
|
|
12
|
+
import { uploadExecutaBinaries } from "./executa-upload-binaries-DwWQ18Dq.js";
|
|
13
|
+
import "./dev-Bfv3WQC0.js";
|
|
14
|
+
import "./executa-install-DAposiBw.js";
|
|
15
15
|
import "./app-cache-Cr3tKbux.js";
|
|
16
|
-
import { resolveAppBySlugOrCache } from "./working-orchestration-
|
|
16
|
+
import { resolveAppBySlugOrCache } from "./working-orchestration-CpBJLs50.js";
|
|
17
17
|
import { resolve } from "node:path";
|
|
18
18
|
import { existsSync } from "node:fs";
|
|
19
19
|
import { bold, cyan, dim, green, yellow } from "kleur/colors";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./credentials-BTv2IfUZ.js";
|
|
2
|
-
import { archiveApp, deleteApp, findAppBySlug, unarchiveApp, unpublishApp } from "./apps-
|
|
2
|
+
import { archiveApp, deleteApp, findAppBySlug, unarchiveApp, unpublishApp } from "./apps-HbfURK6y.js";
|
|
3
3
|
import { CliError } from "./client-sMzq2PWG.js";
|
|
4
4
|
import { resolveClient, withErrorHandling } from "./_lifecycle-shared-_9BzQ9Y2.js";
|
|
5
5
|
import { ensureDestructiveAllowed } from "./confirm-ChZAVrZe.js";
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import "./credentials-BTv2IfUZ.js";
|
|
2
2
|
import "./nexus-root-BlPwOusj.js";
|
|
3
|
-
import { deleteWorkingDraft, getWorkingDraft } from "./apps-
|
|
3
|
+
import { deleteWorkingDraft, getWorkingDraft } from "./apps-HbfURK6y.js";
|
|
4
4
|
import "./client-sMzq2PWG.js";
|
|
5
5
|
import { resolveClient, withErrorHandling } from "./_lifecycle-shared-_9BzQ9Y2.js";
|
|
6
6
|
import "./executa-cache-BFoUtb4J.js";
|
|
7
7
|
import "./bundled-executas-BRyQkI9u.js";
|
|
8
|
-
import "./manifest-
|
|
8
|
+
import "./manifest-B_DjigtQ.js";
|
|
9
9
|
import "./executas-CvQY_w2U.js";
|
|
10
|
-
import "./executa-publish-
|
|
10
|
+
import "./executa-publish-BKnsUoZq.js";
|
|
11
11
|
import "./binary-upload-DVhQ0uY0.js";
|
|
12
|
-
import "./executa-upload-binaries-
|
|
13
|
-
import "./dev-
|
|
14
|
-
import "./executa-install-
|
|
12
|
+
import "./executa-upload-binaries-DwWQ18Dq.js";
|
|
13
|
+
import "./dev-Bfv3WQC0.js";
|
|
14
|
+
import "./executa-install-DAposiBw.js";
|
|
15
15
|
import "./app-cache-Cr3tKbux.js";
|
|
16
|
-
import { resolveAppBySlugOrCache } from "./working-orchestration-
|
|
16
|
+
import { resolveAppBySlugOrCache } from "./working-orchestration-CpBJLs50.js";
|
|
17
17
|
import { dim, green, yellow } from "kleur/colors";
|
|
18
18
|
|
|
19
19
|
//#region src/commands/apps-discard.ts
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import "./credentials-BTv2IfUZ.js";
|
|
2
|
+
import { findAppBySlug, getAppGrants, getAppPermissions } from "./apps-HbfURK6y.js";
|
|
3
|
+
import { CliError } from "./client-sMzq2PWG.js";
|
|
4
|
+
import { resolveClient, withErrorHandling } from "./_lifecycle-shared-_9BzQ9Y2.js";
|
|
5
|
+
import { bold, cyan, dim, yellow } from "kleur/colors";
|
|
6
|
+
|
|
7
|
+
//#region src/commands/apps-grants.ts
|
|
8
|
+
/** Pick the `*_grant` sections off a bundled executa's custom_config. */
|
|
9
|
+
function executaGrantSections(ex) {
|
|
10
|
+
const cfg = ex.custom_config;
|
|
11
|
+
if (!cfg || typeof cfg !== "object") return {};
|
|
12
|
+
const out = {};
|
|
13
|
+
for (const [k, v] of Object.entries(cfg)) if (k.endsWith("_grant")) out[k] = v;
|
|
14
|
+
return out;
|
|
15
|
+
}
|
|
16
|
+
async function runAppsGrants(opts) {
|
|
17
|
+
return withErrorHandling(async () => {
|
|
18
|
+
const { client, host } = resolveClient({ account: opts.account });
|
|
19
|
+
const app = await findAppBySlug(client, opts.slug);
|
|
20
|
+
if (!app) throw new CliError(`no app with slug "${opts.slug}" on ${host}`, 5);
|
|
21
|
+
const perms = await getAppPermissions(client, app.id);
|
|
22
|
+
const grants = perms?.app ?? await getAppGrants(client, app.id);
|
|
23
|
+
if (opts.json) {
|
|
24
|
+
console.log(JSON.stringify({
|
|
25
|
+
host,
|
|
26
|
+
app_id: app.id,
|
|
27
|
+
slug: app.slug,
|
|
28
|
+
grants,
|
|
29
|
+
...perms ? {
|
|
30
|
+
executa_grants: (perms.executas ?? []).map((ex) => ({
|
|
31
|
+
name: ex.name,
|
|
32
|
+
executa_id: ex.executa_id,
|
|
33
|
+
is_enabled: ex.is_enabled,
|
|
34
|
+
...executaGrantSections(ex)
|
|
35
|
+
})),
|
|
36
|
+
satisfied: perms.satisfied ?? true,
|
|
37
|
+
missing: perms.missing ?? []
|
|
38
|
+
} : {}
|
|
39
|
+
}, null, 2));
|
|
40
|
+
return 0;
|
|
41
|
+
}
|
|
42
|
+
console.log(bold(cyan(`apps/${app.slug}`)) + " " + dim(`grants`));
|
|
43
|
+
if (!grants) {
|
|
44
|
+
console.log(dim(" (no grants endpoint data available)"));
|
|
45
|
+
return 0;
|
|
46
|
+
}
|
|
47
|
+
console.log(JSON.stringify(grants, null, 2));
|
|
48
|
+
if (perms) {
|
|
49
|
+
const executas = perms.executas ?? [];
|
|
50
|
+
if (executas.length > 0) {
|
|
51
|
+
console.log(bold(cyan("bundled executa grants")));
|
|
52
|
+
for (const ex of executas) {
|
|
53
|
+
console.log(` ${String(ex.name ?? ex.executa_id)}:`);
|
|
54
|
+
const sections = executaGrantSections(ex);
|
|
55
|
+
if (Object.keys(sections).length === 0) console.log(dim(" (no grants configured)"));
|
|
56
|
+
else for (const [k, v] of Object.entries(sections)) console.log(` ${k}: ${JSON.stringify(v)}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
const missing = perms.missing ?? [];
|
|
60
|
+
if (missing.length > 0) {
|
|
61
|
+
console.log(yellow("! missing grants (enable in the Anna dashboard permissions modal):"));
|
|
62
|
+
for (const m of missing) console.log(yellow(` - ${m}`));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return 0;
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
//#endregion
|
|
70
|
+
export { runAppsGrants };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import "./credentials-BTv2IfUZ.js";
|
|
2
|
+
import "./apps-HbfURK6y.js";
|
|
3
|
+
import "./client-sMzq2PWG.js";
|
|
4
|
+
import "./_lifecycle-shared-_9BzQ9Y2.js";
|
|
5
|
+
import "./executa-cache-BFoUtb4J.js";
|
|
6
|
+
import "./bundled-executas-BRyQkI9u.js";
|
|
7
|
+
import "./manifest-B_DjigtQ.js";
|
|
8
|
+
import "./executas-CvQY_w2U.js";
|
|
9
|
+
import "./executa-publish-BKnsUoZq.js";
|
|
10
|
+
import "./binary-upload-DVhQ0uY0.js";
|
|
11
|
+
import "./executa-upload-binaries-DwWQ18Dq.js";
|
|
12
|
+
import "./app-cache-Cr3tKbux.js";
|
|
13
|
+
import "./listing-meta-DgweMStT.js";
|
|
14
|
+
import "./app-bundle-upload-Ca0r-kPy.js";
|
|
15
|
+
import { runAppsPublish } from "./apps-publish-8N9x4VEM.js";
|
|
16
|
+
|
|
17
|
+
export { runAppsPublish };
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { canonicalHost } from "./credentials-BTv2IfUZ.js";
|
|
2
|
-
import { createApp, createVersion, findAppBySlug, getApp } from "./apps-
|
|
2
|
+
import { createApp, createVersion, findAppBySlug, getApp } from "./apps-HbfURK6y.js";
|
|
3
3
|
import { CliError } from "./client-sMzq2PWG.js";
|
|
4
4
|
import { resolveClient, withErrorHandling } from "./_lifecycle-shared-_9BzQ9Y2.js";
|
|
5
5
|
import { parseExecutaIdOverrides, readExecutasLock, substituteBundledRefs, validateBundledHandles, writeBundleToolIdSidecar, writeExecutasLock } from "./bundled-executas-BRyQkI9u.js";
|
|
6
|
-
import { loadAppManifest } from "./manifest-
|
|
7
|
-
import { bumpVersion, bundleHash, manifestHash, rewriteVersion, runExecutaPublish } from "./executa-publish-
|
|
6
|
+
import { loadAppManifest } from "./manifest-B_DjigtQ.js";
|
|
7
|
+
import { bumpVersion, bundleHash, manifestHash, rewriteVersion, runExecutaPublish } from "./executa-publish-BKnsUoZq.js";
|
|
8
8
|
import { appCacheMatches, readAppIdentity, writeAppIdentity } from "./app-cache-Cr3tKbux.js";
|
|
9
|
-
import { syncAppListingMeta } from "./listing-meta-
|
|
10
|
-
import { isExistingDir, uploadAppBundle } from "./app-bundle-upload-
|
|
9
|
+
import { syncAppListingMeta } from "./listing-meta-DgweMStT.js";
|
|
10
|
+
import { isExistingDir, uploadAppBundle } from "./app-bundle-upload-Ca0r-kPy.js";
|
|
11
11
|
import { resolve } from "node:path";
|
|
12
12
|
import { bold, cyan, dim, green, yellow } from "kleur/colors";
|
|
13
13
|
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import "./credentials-BTv2IfUZ.js";
|
|
2
2
|
import "./nexus-root-BlPwOusj.js";
|
|
3
|
-
import { getApp, getWorkingDraft, upsertWorkingDraft } from "./apps-
|
|
3
|
+
import { getApp, getWorkingDraft, upsertWorkingDraft } from "./apps-HbfURK6y.js";
|
|
4
4
|
import { CliError } from "./client-sMzq2PWG.js";
|
|
5
5
|
import { resolveClient, withErrorHandling } from "./_lifecycle-shared-_9BzQ9Y2.js";
|
|
6
6
|
import "./executa-cache-BFoUtb4J.js";
|
|
7
7
|
import "./bundled-executas-BRyQkI9u.js";
|
|
8
|
-
import { loadAppManifest } from "./manifest-
|
|
8
|
+
import { loadAppManifest } from "./manifest-B_DjigtQ.js";
|
|
9
9
|
import "./executas-CvQY_w2U.js";
|
|
10
|
-
import { bumpVersion, bundleHash, manifestHash, rewriteVersion } from "./executa-publish-
|
|
10
|
+
import { bumpVersion, bundleHash, manifestHash, rewriteVersion } from "./executa-publish-BKnsUoZq.js";
|
|
11
11
|
import "./binary-upload-DVhQ0uY0.js";
|
|
12
|
-
import "./executa-upload-binaries-
|
|
13
|
-
import "./dev-
|
|
14
|
-
import "./executa-install-
|
|
12
|
+
import "./executa-upload-binaries-DwWQ18Dq.js";
|
|
13
|
+
import "./dev-Bfv3WQC0.js";
|
|
14
|
+
import "./executa-install-DAposiBw.js";
|
|
15
15
|
import "./app-cache-Cr3tKbux.js";
|
|
16
|
-
import { installLocalBundledShims, resolveAppIdentity, resolveBundledExecutas } from "./working-orchestration-
|
|
17
|
-
import { syncAppListingMeta } from "./listing-meta-
|
|
18
|
-
import { isExistingDir, uploadWorkingBundle } from "./app-bundle-upload-
|
|
16
|
+
import { installLocalBundledShims, resolveAppIdentity, resolveBundledExecutas } from "./working-orchestration-CpBJLs50.js";
|
|
17
|
+
import { syncAppListingMeta } from "./listing-meta-DgweMStT.js";
|
|
18
|
+
import { isExistingDir, uploadWorkingBundle } from "./app-bundle-upload-Ca0r-kPy.js";
|
|
19
19
|
import { resolve } from "node:path";
|
|
20
20
|
import { bold, cyan, dim, green, yellow } from "kleur/colors";
|
|
21
21
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { canonicalHost } from "./credentials-BTv2IfUZ.js";
|
|
2
|
-
import { findAppBySlug, getApp, getBundle, listVersions, publishVersion } from "./apps-
|
|
2
|
+
import { findAppBySlug, getApp, getBundle, listVersions, publishVersion } from "./apps-HbfURK6y.js";
|
|
3
3
|
import { CliError } from "./client-sMzq2PWG.js";
|
|
4
4
|
import { resolveClient, withErrorHandling } from "./_lifecycle-shared-_9BzQ9Y2.js";
|
|
5
5
|
import { readAppIdentity } from "./app-cache-Cr3tKbux.js";
|
|
@@ -59,7 +59,7 @@ async function runAppsRelease(opts) {
|
|
|
59
59
|
if (!target) {
|
|
60
60
|
if (opts.allowCreate) {
|
|
61
61
|
if (!opts.json) console.log(yellow(`version ${opts.version} not found remotely; running 'apps publish' first (--allow-create)…`));
|
|
62
|
-
const { runAppsPublish } = await import("./apps-publish-
|
|
62
|
+
const { runAppsPublish } = await import("./apps-publish-4IIbF2xr.js");
|
|
63
63
|
const code = await runAppsPublish({
|
|
64
64
|
cwd: opts.cwd,
|
|
65
65
|
account: opts.account,
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import "./credentials-BTv2IfUZ.js";
|
|
2
|
-
import { findAppBySlug, patchApp } from "./apps-
|
|
2
|
+
import { findAppBySlug, patchApp } from "./apps-HbfURK6y.js";
|
|
3
3
|
import { CliError } from "./client-sMzq2PWG.js";
|
|
4
4
|
import { reportError, resolveClient } from "./_lifecycle-shared-_9BzQ9Y2.js";
|
|
5
|
-
import { loadAppManifest } from "./manifest-
|
|
5
|
+
import { loadAppManifest } from "./manifest-B_DjigtQ.js";
|
|
6
6
|
import { readAppIdentity, writeAppIdentity } from "./app-cache-Cr3tKbux.js";
|
|
7
7
|
import { writeFileSync } from "node:fs";
|
|
8
8
|
import { bold, dim, green, red, yellow } from "kleur/colors";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./credentials-BTv2IfUZ.js";
|
|
2
|
-
import { findAppBySlug, getApp, listVersions } from "./apps-
|
|
2
|
+
import { findAppBySlug, getApp, listVersions } from "./apps-HbfURK6y.js";
|
|
3
3
|
import { CliError } from "./client-sMzq2PWG.js";
|
|
4
4
|
import { resolveClient, withErrorHandling } from "./_lifecycle-shared-_9BzQ9Y2.js";
|
|
5
5
|
import { bold, cyan, dim, green, red, yellow } from "kleur/colors";
|
|
@@ -23,6 +23,7 @@ async function runAppsStatus(opts) {
|
|
|
23
23
|
visibility: full.visibility ?? null,
|
|
24
24
|
is_published: full.is_published ?? false,
|
|
25
25
|
review_message: full.review_message ?? null,
|
|
26
|
+
review_candidate_version: full.review_candidate_version ?? null,
|
|
26
27
|
latest_version: latest ? {
|
|
27
28
|
id: latest.id,
|
|
28
29
|
version: latest.version,
|
|
@@ -39,6 +40,10 @@ async function runAppsStatus(opts) {
|
|
|
39
40
|
console.log(` ${dim("status :")} ${colorStatus(full.status)}` + (full.is_published ? " " + green("[published]") : ""));
|
|
40
41
|
if (latest) console.log(` ${dim("latest :")} v${latest.version} (id=${latest.id}, published=${latest.published_at ?? "—"})`);
|
|
41
42
|
else console.log(` ${dim("latest :")} ${dim("(no versions yet)")}`);
|
|
43
|
+
if (full.review_candidate_version) {
|
|
44
|
+
const isReleaseReview = (full.status || "").toUpperCase() === "PUBLISHED";
|
|
45
|
+
console.log(` ${dim("in review :")} ${yellow(`v${full.review_candidate_version}`)} ${dim(isReleaseReview ? "(release under review — awaiting admin approval)" : "(pinned at submit-review)")}`);
|
|
46
|
+
}
|
|
42
47
|
if (full.review_message) console.log(` ${dim("reviewer :")} ${full.review_message}`);
|
|
43
48
|
console.log(` ${dim("versions :")} ${versions.length} total`);
|
|
44
49
|
return 0;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { canonicalHost } from "./credentials-BTv2IfUZ.js";
|
|
2
|
-
import { findAppBySlug, getApp, submitForReview } from "./apps-
|
|
2
|
+
import { findAppBySlug, getApp, submitForReview } from "./apps-HbfURK6y.js";
|
|
3
3
|
import { CliError } from "./client-sMzq2PWG.js";
|
|
4
4
|
import { resolveClient, withErrorHandling } from "./_lifecycle-shared-_9BzQ9Y2.js";
|
|
5
5
|
import { readAppIdentity } from "./app-cache-Cr3tKbux.js";
|
|
6
6
|
import { resolve } from "node:path";
|
|
7
|
-
import { bold, cyan, green } from "kleur/colors";
|
|
7
|
+
import { bold, cyan, dim, green } from "kleur/colors";
|
|
8
8
|
|
|
9
9
|
//#region src/commands/apps-submit-review.ts
|
|
10
10
|
async function runAppsSubmitReview(opts) {
|
|
@@ -26,17 +26,23 @@ async function runAppsSubmitReview(opts) {
|
|
|
26
26
|
}
|
|
27
27
|
const app = await submitForReview(client, appId);
|
|
28
28
|
const finalApp = await getApp(client, appId);
|
|
29
|
+
const candidate = app.review_candidate_version ?? finalApp.review_candidate_version ?? null;
|
|
29
30
|
if (opts.json) {
|
|
30
31
|
console.log(JSON.stringify({
|
|
31
32
|
host,
|
|
32
33
|
app_id: appId,
|
|
33
34
|
slug: serverSlug,
|
|
34
|
-
status: finalApp.status
|
|
35
|
+
status: finalApp.status,
|
|
36
|
+
review_candidate_version: candidate
|
|
35
37
|
}, null, 2));
|
|
36
38
|
return 0;
|
|
37
39
|
}
|
|
38
40
|
console.log(green(`✓ apps/${serverSlug}: submitted for review`));
|
|
39
41
|
console.log(bold(cyan(`status: ${app.status ?? finalApp.status}`)));
|
|
42
|
+
if (candidate) {
|
|
43
|
+
console.log(`under review: ${bold(`v${candidate}`)}`);
|
|
44
|
+
console.log(dim("versions cut after this point are NOT part of this review round — re-run `apps submit-review` to re-pin to the newest cut"));
|
|
45
|
+
}
|
|
40
46
|
return 0;
|
|
41
47
|
});
|
|
42
48
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { canonicalHost } from "./credentials-BTv2IfUZ.js";
|
|
2
|
-
import { findAppBySlug, getApp } from "./apps-
|
|
2
|
+
import { findAppBySlug, getApp } from "./apps-HbfURK6y.js";
|
|
3
3
|
import { CliError } from "./client-sMzq2PWG.js";
|
|
4
4
|
import { resolveClient, withErrorHandling } from "./_lifecycle-shared-_9BzQ9Y2.js";
|
|
5
|
-
import { loadAppManifest } from "./manifest-
|
|
5
|
+
import { loadAppManifest } from "./manifest-B_DjigtQ.js";
|
|
6
6
|
import { readAppIdentity } from "./app-cache-Cr3tKbux.js";
|
|
7
|
-
import { syncAppListingMeta } from "./listing-meta-
|
|
7
|
+
import { syncAppListingMeta } from "./listing-meta-DgweMStT.js";
|
|
8
8
|
import { resolve } from "node:path";
|
|
9
9
|
import { bold, cyan, dim, green } from "kleur/colors";
|
|
10
10
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import "./credentials-BTv2IfUZ.js";
|
|
2
|
-
import { findAppBySlug, listVersions } from "./apps-
|
|
2
|
+
import { findAppBySlug, listVersions } from "./apps-HbfURK6y.js";
|
|
3
3
|
import { CliError } from "./client-sMzq2PWG.js";
|
|
4
4
|
import { resolveClient, withErrorHandling } from "./_lifecycle-shared-_9BzQ9Y2.js";
|
|
5
|
-
import { bold, cyan, dim, green } from "kleur/colors";
|
|
5
|
+
import { bold, cyan, dim, green, red, yellow } from "kleur/colors";
|
|
6
6
|
|
|
7
7
|
//#region src/commands/apps-versions.ts
|
|
8
8
|
async function runAppsVersions(opts) {
|
|
@@ -16,12 +16,14 @@ async function runAppsVersions(opts) {
|
|
|
16
16
|
host,
|
|
17
17
|
app_id: app.id,
|
|
18
18
|
slug: app.slug,
|
|
19
|
+
review_candidate_version: app.review_candidate_version ?? null,
|
|
19
20
|
versions: versions.map((v) => ({
|
|
20
21
|
id: v.id,
|
|
21
22
|
version: v.version,
|
|
22
23
|
is_latest: v.is_latest ?? false,
|
|
23
24
|
published_at: v.published_at ?? null,
|
|
24
|
-
created_at: v.created_at ?? null
|
|
25
|
+
created_at: v.created_at ?? null,
|
|
26
|
+
release_review_state: v.release_review_state ?? null
|
|
25
27
|
}))
|
|
26
28
|
}, null, 2));
|
|
27
29
|
return 0;
|
|
@@ -32,9 +34,12 @@ async function runAppsVersions(opts) {
|
|
|
32
34
|
return 0;
|
|
33
35
|
}
|
|
34
36
|
for (const v of versions) {
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
+
const inReview = v.version === app.review_candidate_version;
|
|
38
|
+
const tag = v.is_latest ? green("[latest]") : inReview ? yellow("[review]") : dim(" ");
|
|
39
|
+
const rereview = v.release_review_state === "pending" ? " " + yellow("(re-review pending)") : v.release_review_state === "rejected" ? " " + red("(re-review rejected)") : "";
|
|
40
|
+
console.log(` ${tag} v${v.version} ${dim(`(id=${v.id}, published=${v.published_at ?? "—"})`)}${rereview}`);
|
|
37
41
|
}
|
|
42
|
+
if (app.status.toUpperCase() === "PUBLISHED" && !versions.some((v) => v.is_latest)) console.log(yellow(" ! app is PUBLISHED but no version is released — ") + yellow("new installs will fail; run `anna-app apps release <version>`"));
|
|
38
43
|
return 0;
|
|
39
44
|
});
|
|
40
45
|
}
|
package/dist/cli.js
CHANGED
|
@@ -474,7 +474,7 @@ program.command("validate").description("Run schema + ACL checks on a manifest+b
|
|
|
474
474
|
process.exit(code);
|
|
475
475
|
});
|
|
476
476
|
program.command("dev").description("Run a local harness (in-process dispatcher + iframe + SSE relay)").option("--manifest <path>", "manifest.json path", "manifest.json").option("--bundle <dir>", "bundle directory (default: ./bundle)").option("--slug <slug>", "App slug (overrides manifest.slug/name)").option("--view <name>", "View name to open (default: manifest default)").option("--matrix-nexus-root <path>", "matrix-nexus checkout (auto-detected if omitted; can also use $ANNA_NEXUS_ROOT)").option("--port <number>", "HTTP port", "5180").option("--user-id <id>", "Harness user_id", "1").option("--cwd <dir>", "Project root (default: cwd)").option("--no-watch", "Disable bundle file watcher (default: enabled)").option("--executa <spec>", "Explicit executa registration; repeatable. Spec: comma-separated key=value (dir=<path>[,tool_id=<id>][,type=python|node|go|binary][,command=\"<argv>\"]). When only `dir=` is given, the executa is auto-detected from executa.json / pyproject.toml / package.json / go.mod. Overrides directory auto-discovery under <manifest-dir>/executas/.", (val, prev) => prev ? [...prev, val] : [val]).option("--no-llm", "Disable LLM bridge (anna.llm/agent return llm_disabled)").option("--mock-llm <fixture>", "Serve canned LLM responses from a JSONL fixture").option("--llm-account <host>", "Saved account host to use (default: current)").option("--llm-app-slug <slug>", "Override the manifest slug used to register / look up the dev AnnaApp (default: manifest.slug)").option("--storage <mode>", "Storage backend: \"legacy\" (in-memory runtime_state, default) or \"aps\" (real nexus APS via /api/v1/storage/* — requires `anna-app login`).", "legacy").option("--web <mode>", "Web backend: \"local\" (keyless ddgs + stdlib fetcher, free, default) or \"real\" (platform web service via /api/v1/copilot/app/web/* — production provider chain + normal CU billing; requires `anna-app login`).", "local").action(async (opts) => {
|
|
477
|
-
const { runDev, parseExecutaSpec } = await import("./dev-
|
|
477
|
+
const { runDev, parseExecutaSpec } = await import("./dev-CnDh2_7r.js");
|
|
478
478
|
const cwd = opts.cwd ?? process.cwd();
|
|
479
479
|
let executas;
|
|
480
480
|
if (opts.executa && opts.executa.length > 0) {
|
|
@@ -561,7 +561,7 @@ program.command("whoami").description("Show the current account (and any others)
|
|
|
561
561
|
});
|
|
562
562
|
const account = program.command("account").description("Manage your developer account (handle / namespace)");
|
|
563
563
|
account.command("set-handle <handle>").description("Set or rename your developer handle — the @handle namespace your apps publish under (@handle/slug). Required before creating your first app.").option("--host <url>", "Account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (handle, opts) => {
|
|
564
|
-
const { runAccountSetHandle } = await import("./account-
|
|
564
|
+
const { runAccountSetHandle } = await import("./account-CPnwqXeh.js");
|
|
565
565
|
const code = await runAccountSetHandle({
|
|
566
566
|
handle,
|
|
567
567
|
account: opts.host,
|
|
@@ -597,7 +597,7 @@ executa.command("register").description("Register a HARNESS AnnaApp(kind=executa
|
|
|
597
597
|
process.exit(code);
|
|
598
598
|
});
|
|
599
599
|
executa.command("install").description("Install a local-dev shim for an Executa under its minted tool_id so the Agent can discover it via 'Rediscover Local' (for distribution_type: local). Resolves the tool_id from .anna/executa.json (written by `executa publish` / `apps push`) unless --tool-id is given.").option("--dir <path>", "Executa project dir (default: CWD)").option("--tool-id <id>", "Install the shim under this exact id (default: minted id from .anna/executa.json, else executa.json tool_id)").option("--bin-dir <path>", "Install dir for the shim (default: ~/.anna/executa/bin)").option("--force", "Overwrite an existing shim of the same name", false).option("--json", "Emit machine-readable JSON", false).action(async (opts) => {
|
|
600
|
-
const { runExecutaInstall } = await import("./executa-install-
|
|
600
|
+
const { runExecutaInstall } = await import("./executa-install-LaAOSkY0.js");
|
|
601
601
|
const code = await runExecutaInstall({
|
|
602
602
|
dir: opts.dir,
|
|
603
603
|
toolId: opts.toolId,
|
|
@@ -608,7 +608,7 @@ executa.command("install").description("Install a local-dev shim for an Executa
|
|
|
608
608
|
process.exit(code);
|
|
609
609
|
});
|
|
610
610
|
executa.command("dev").description("Run one Executa plugin in isolation (REPL or one-shot describe/invoke)").option("--dir <path>", "Executa project dir (default: CWD)").option("--spec <spec>", "Override discovery: comma-separated key=value (tool_id=...,type=...,command=\"...\")").option("--describe", "Print MANIFEST and exit", false).option("--health", "Print health and exit", false).option("--invoke <tool>", "Invoke one tool and exit").option("--args <json>", "JSON object passed as tool arguments", "{}").option("--json", "One-shot: emit compact JSON (no banners)", false).option("--no-sampling", "Hard-disable sampling reverse RPC (returns sampling_disabled)").option("--mock-sampling <fixture>", "Serve canned sampling responses from a JSONL fixture (offline)").option("--sampling-unsupported-format", "Simulate a model without json_schema support — exercises responseFormat onUnsupported branches (-32010 / downgrade)").option("--app-slug <slug>", "Forward sampling to nexus on behalf of this dev AnnaApp slug").option("--sampling-account <host>", "Saved account host for nexus sampling (default: current)").option("--no-agent", "Hard-disable agent reverse RPC (returns agent_not_granted)").option("--mock-agent <fixture>", "Serve canned agent/* responses from a JSONL fixture (offline)").option("--agent-account <host>", "Saved account host for nexus agent (default: --sampling-account or current)").option("--storage <mode>", "Storage backend: off | memory | mock | real (default: memory)").option("--mock-storage <fixture>", "Serve canned storage/* + files/* responses from a JSONL fixture").option("--storage-account <host>", "Saved account host for nexus storage (default: --sampling-account or current)").option("--storage-scopes <list>", "Comma-separated scopes for real storage tokens (default: user,app,tool)").option("--no-image", "Hard-disable image reverse RPC (returns image_not_granted)").option("--mock-image <fixture>", "Serve canned image/generate + image/edit responses from a JSONL fixture").option("--image-account <host>", "Saved account host for nexus image (default: --sampling-account or current)").option("--no-upload", "Hard-disable host/uploadFile reverse RPC (returns upload_not_granted)").option("--mock-upload <fixture>", "Serve canned host/uploadFile responses from a JSONL fixture").option("--upload-account <host>", "Saved account host for nexus uploads (default: --sampling-account or current)").action(async (opts) => {
|
|
611
|
-
const { runExecutaDev } = await import("./executa-dev-
|
|
611
|
+
const { runExecutaDev } = await import("./executa-dev-DYO87dzg.js");
|
|
612
612
|
const storageMode = opts.storage === void 0 ? void 0 : (() => {
|
|
613
613
|
const m = opts.storage;
|
|
614
614
|
if (m === "off" || m === "memory" || m === "mock" || m === "real") return m;
|
|
@@ -646,14 +646,14 @@ executa.command("dev").description("Run one Executa plugin in isolation (REPL or
|
|
|
646
646
|
});
|
|
647
647
|
const apps = program.command("apps").description("Anna App publish lifecycle commands");
|
|
648
648
|
apps.command("list").description("List the Anna Apps you authored, with lifecycle status").option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (opts) => {
|
|
649
|
-
const { runAppsList } = await import("./apps-
|
|
649
|
+
const { runAppsList } = await import("./apps-CzqMRLbS.js");
|
|
650
650
|
process.exit(await runAppsList({
|
|
651
651
|
account: opts.account,
|
|
652
652
|
json: opts.json
|
|
653
653
|
}));
|
|
654
654
|
});
|
|
655
655
|
apps.command("rename-slug <new-slug>").description("Rename an app's public slug (DRAFT/REJECTED, never-published, zero installs only). Updates local app.json + .anna/app.json on success.").option("--cwd <dir>", "Project root (default: cwd)").option("--manifest <path>", "manifest.json path", "manifest.json").option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (newSlug, opts) => {
|
|
656
|
-
const { runAppsRenameSlug } = await import("./apps-rename-slug-
|
|
656
|
+
const { runAppsRenameSlug } = await import("./apps-rename-slug-CCEU_7JJ.js");
|
|
657
657
|
process.exit(await runAppsRenameSlug({
|
|
658
658
|
newSlug,
|
|
659
659
|
cwd: opts.cwd,
|
|
@@ -671,7 +671,7 @@ apps.command("publish").description("Publish or update an Anna App (manifest.jso
|
|
|
671
671
|
console.error(`✗ --bump must be patch|minor|major (got: ${opts.bump})`);
|
|
672
672
|
process.exit(2);
|
|
673
673
|
}
|
|
674
|
-
const { runAppsPublish } = await import("./apps-publish-
|
|
674
|
+
const { runAppsPublish } = await import("./apps-publish-4IIbF2xr.js");
|
|
675
675
|
process.exit(await runAppsPublish({
|
|
676
676
|
cwd: opts.cwd,
|
|
677
677
|
manifest: opts.manifest,
|
|
@@ -705,7 +705,7 @@ apps.command("push").description("Upsert the mutable working draft (manifest + b
|
|
|
705
705
|
process.exit(2);
|
|
706
706
|
}
|
|
707
707
|
}
|
|
708
|
-
const { runAppsPush } = await import("./apps-push-
|
|
708
|
+
const { runAppsPush } = await import("./apps-push-CnSeLwdo.js");
|
|
709
709
|
process.exit(await runAppsPush({
|
|
710
710
|
cwd: opts.cwd,
|
|
711
711
|
manifest: opts.manifest,
|
|
@@ -725,7 +725,7 @@ apps.command("push").description("Upsert the mutable working draft (manifest + b
|
|
|
725
725
|
}));
|
|
726
726
|
});
|
|
727
727
|
apps.command("cut <version>").description("Snapshot the working draft into an immutable version (freeze deps)").option("--changelog <text>", "Override the working draft changelog for this version").option("--slug <slug>", "App slug (default: resolve from .anna/app.json cache)").option("--cwd <dir>", "Project root for identity cache (default: cwd)").option("--dry-run", "Resolve target but don't cut", false).option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (version, opts) => {
|
|
728
|
-
const { runAppsCut } = await import("./apps-cut-
|
|
728
|
+
const { runAppsCut } = await import("./apps-cut-BhTJwILv.js");
|
|
729
729
|
process.exit(await runAppsCut({
|
|
730
730
|
version,
|
|
731
731
|
changelog: opts.changelog,
|
|
@@ -737,7 +737,7 @@ apps.command("cut <version>").description("Snapshot the working draft into an im
|
|
|
737
737
|
}));
|
|
738
738
|
});
|
|
739
739
|
apps.command("discard").description("Drop the mutable working draft (leaves cut versions intact)").option("--slug <slug>", "App slug (default: resolve from .anna/app.json cache)").option("--cwd <dir>", "Project root for identity cache (default: cwd)").option("--dry-run", "Resolve target but don't discard", false).option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (opts) => {
|
|
740
|
-
const { runAppsDiscard } = await import("./apps-discard-
|
|
740
|
+
const { runAppsDiscard } = await import("./apps-discard-CFi-GzpU.js");
|
|
741
741
|
process.exit(await runAppsDiscard({
|
|
742
742
|
slug: opts.slug,
|
|
743
743
|
cwd: opts.cwd,
|
|
@@ -747,7 +747,7 @@ apps.command("discard").description("Drop the mutable working draft (leaves cut
|
|
|
747
747
|
}));
|
|
748
748
|
});
|
|
749
749
|
apps.command("release <version>").description("Freeze & publish an existing remote version (go live)").option("--slug <slug>", "App slug (default: resolve from .anna/app.json cache)").option("--cwd <dir>", "Project root for identity cache (default: cwd)").option("--allow-create", "If the version isn't on the server, run 'apps publish' first, then release", false).option("--dry-run", "Resolve target + pre-flight but don't publish", false).option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (version, opts) => {
|
|
750
|
-
const { runAppsRelease } = await import("./apps-release-
|
|
750
|
+
const { runAppsRelease } = await import("./apps-release-DGQv6DDl.js");
|
|
751
751
|
process.exit(await runAppsRelease({
|
|
752
752
|
version,
|
|
753
753
|
slug: opts.slug,
|
|
@@ -759,7 +759,7 @@ apps.command("release <version>").description("Freeze & publish an existing remo
|
|
|
759
759
|
}));
|
|
760
760
|
});
|
|
761
761
|
apps.command("sync-meta").description("Push mutable store metadata (name/tagline/…) from the manifest").option("--cwd <dir>", "Project root (default: cwd)").option("--manifest <path>", "manifest.json path", "manifest.json").option("--logo <path>", "Local logo file to upload (overrides app.json logo_file)").option("--dry-run", "Print the metadata diff but don't PATCH", false).option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (opts) => {
|
|
762
|
-
const { runAppsSyncMeta } = await import("./apps-sync-meta-
|
|
762
|
+
const { runAppsSyncMeta } = await import("./apps-sync-meta-DnFwFNl5.js");
|
|
763
763
|
process.exit(await runAppsSyncMeta({
|
|
764
764
|
cwd: opts.cwd,
|
|
765
765
|
manifest: opts.manifest,
|
|
@@ -770,7 +770,7 @@ apps.command("sync-meta").description("Push mutable store metadata (name/tagline
|
|
|
770
770
|
}));
|
|
771
771
|
});
|
|
772
772
|
apps.command("submit-review [slug]").description("Move an app into review (DRAFT/REJECTED → PENDING_REVIEW)").option("--cwd <dir>", "Project root for identity cache (default: cwd)").option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (slug, opts) => {
|
|
773
|
-
const { runAppsSubmitReview } = await import("./apps-submit-review
|
|
773
|
+
const { runAppsSubmitReview } = await import("./apps-submit-review--hZFZRJ3.js");
|
|
774
774
|
process.exit(await runAppsSubmitReview({
|
|
775
775
|
slug,
|
|
776
776
|
cwd: opts.cwd,
|
|
@@ -779,7 +779,7 @@ apps.command("submit-review [slug]").description("Move an app into review (DRAFT
|
|
|
779
779
|
}));
|
|
780
780
|
});
|
|
781
781
|
apps.command("status <slug>").description("Show server-known state for one Anna App").option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (slug, opts) => {
|
|
782
|
-
const { runAppsStatus } = await import("./apps-status-
|
|
782
|
+
const { runAppsStatus } = await import("./apps-status-C4Cxc2DF.js");
|
|
783
783
|
process.exit(await runAppsStatus({
|
|
784
784
|
slug,
|
|
785
785
|
account: opts.account,
|
|
@@ -787,7 +787,7 @@ apps.command("status <slug>").description("Show server-known state for one Anna
|
|
|
787
787
|
}));
|
|
788
788
|
});
|
|
789
789
|
apps.command("versions <slug>").description("List all server versions of one Anna App").option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (slug, opts) => {
|
|
790
|
-
const { runAppsVersions } = await import("./apps-versions-
|
|
790
|
+
const { runAppsVersions } = await import("./apps-versions-C7NzG5Dk.js");
|
|
791
791
|
process.exit(await runAppsVersions({
|
|
792
792
|
slug,
|
|
793
793
|
account: opts.account,
|
|
@@ -795,7 +795,7 @@ apps.command("versions <slug>").description("List all server versions of one Ann
|
|
|
795
795
|
}));
|
|
796
796
|
});
|
|
797
797
|
apps.command("grants <slug>").description("Show currently granted scopes/quota for one Anna App").option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (slug, opts) => {
|
|
798
|
-
const { runAppsGrants } = await import("./apps-grants-
|
|
798
|
+
const { runAppsGrants } = await import("./apps-grants-DqaX8UTy.js");
|
|
799
799
|
process.exit(await runAppsGrants({
|
|
800
800
|
slug,
|
|
801
801
|
account: opts.account,
|
|
@@ -803,7 +803,7 @@ apps.command("grants <slug>").description("Show currently granted scopes/quota f
|
|
|
803
803
|
}));
|
|
804
804
|
});
|
|
805
805
|
apps.command("unpublish <slug>").description("Flip a PUBLISHED app back to APPROVED (private)").option("--yes", "Acknowledge the destructive operation", false).option("--confirm <slug>", "Slug confirmation (must match target)").option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (slug, opts) => {
|
|
806
|
-
const { runAppsUnpublish } = await import("./apps-destructive-
|
|
806
|
+
const { runAppsUnpublish } = await import("./apps-destructive-PlaU93EX.js");
|
|
807
807
|
process.exit(await runAppsUnpublish({
|
|
808
808
|
slug,
|
|
809
809
|
yes: opts.yes,
|
|
@@ -813,7 +813,7 @@ apps.command("unpublish <slug>").description("Flip a PUBLISHED app back to APPRO
|
|
|
813
813
|
}));
|
|
814
814
|
});
|
|
815
815
|
apps.command("archive <slug>").description("Archive an Anna App (hides it from end users)").option("--yes", "Acknowledge the destructive operation", false).option("--confirm <slug>", "Slug confirmation (must match target)").option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (slug, opts) => {
|
|
816
|
-
const { runAppsArchive } = await import("./apps-destructive-
|
|
816
|
+
const { runAppsArchive } = await import("./apps-destructive-PlaU93EX.js");
|
|
817
817
|
process.exit(await runAppsArchive({
|
|
818
818
|
slug,
|
|
819
819
|
yes: opts.yes,
|
|
@@ -823,7 +823,7 @@ apps.command("archive <slug>").description("Archive an Anna App (hides it from e
|
|
|
823
823
|
}));
|
|
824
824
|
});
|
|
825
825
|
apps.command("unarchive <slug>").description("Restore an archived Anna App back to APPROVED").option("--yes", "Acknowledge the operation", false).option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (slug, opts) => {
|
|
826
|
-
const { runAppsUnarchive } = await import("./apps-destructive-
|
|
826
|
+
const { runAppsUnarchive } = await import("./apps-destructive-PlaU93EX.js");
|
|
827
827
|
process.exit(await runAppsUnarchive({
|
|
828
828
|
slug,
|
|
829
829
|
yes: opts.yes,
|
|
@@ -832,7 +832,7 @@ apps.command("unarchive <slug>").description("Restore an archived Anna App back
|
|
|
832
832
|
}));
|
|
833
833
|
});
|
|
834
834
|
apps.command("delete <slug>").description("Hard-delete an Anna App (refused by server if installs exist)").option("--yes", "Acknowledge the destructive operation", false).option("--confirm <slug>", "Slug confirmation (must match target)").option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (slug, opts) => {
|
|
835
|
-
const { runAppsDelete } = await import("./apps-destructive-
|
|
835
|
+
const { runAppsDelete } = await import("./apps-destructive-PlaU93EX.js");
|
|
836
836
|
process.exit(await runAppsDelete({
|
|
837
837
|
slug,
|
|
838
838
|
yes: opts.yes,
|
|
@@ -873,7 +873,7 @@ executa.command("publish").description("Mint or update an Executa (executa.json
|
|
|
873
873
|
console.error(`✗ --bump must be patch|minor|major (got: ${opts.bump})`);
|
|
874
874
|
process.exit(2);
|
|
875
875
|
}
|
|
876
|
-
const { runExecutaPublish } = await import("./executa-publish-
|
|
876
|
+
const { runExecutaPublish } = await import("./executa-publish-6awuH4Ma.js");
|
|
877
877
|
process.exit(await runExecutaPublish({
|
|
878
878
|
cwd: opts.cwd,
|
|
879
879
|
manifest: opts.manifest,
|
|
@@ -887,7 +887,7 @@ executa.command("publish").description("Mint or update an Executa (executa.json
|
|
|
887
887
|
}));
|
|
888
888
|
});
|
|
889
889
|
executa.command("upload-binaries").description("Push the local binary_artifacts declared in executa.json straight to the platform CDN (no public source URL needed — works for private repos). Requires a minted identity (.anna/executa.json from `executa publish` / `apps push`) or --tool-id.").option("--dir <path>", "Executa project dir (default: CWD)").option("--dry-run", "Hash artifacts + validate the plan server-side without uploading", false).option("--oidc", "Mint the upload token from the GitHub Actions OIDC id-token instead of a PAT (zero long-term secrets; needs `permissions: id-token: write` and a registered trusted publisher)", false).option("--tool-id <id>", "Explicit tool_id (skip the identity cache)").option("--host <url>", "Nexus host (required with --oidc unless ANNA_APP_HOST is set)").option("--account <host>", "Saved account host (default: current)").option("--json", "Emit machine-readable JSON", false).action(async (opts) => {
|
|
890
|
-
const { runExecutaUploadBinaries } = await import("./executa-upload-binaries-
|
|
890
|
+
const { runExecutaUploadBinaries } = await import("./executa-upload-binaries-FWM2yXfB.js");
|
|
891
891
|
process.exit(await runExecutaUploadBinaries({
|
|
892
892
|
dir: opts.dir,
|
|
893
893
|
dryRun: opts.dryRun,
|
|
@@ -1001,7 +1001,7 @@ program.command("publish").description("Auto-detect cwd and publish (apps publis
|
|
|
1001
1001
|
console.error(`✗ --bump must be patch|minor|major (got: ${opts.bump})`);
|
|
1002
1002
|
process.exit(2);
|
|
1003
1003
|
}
|
|
1004
|
-
const { runTopLevelPublish } = await import("./publish-
|
|
1004
|
+
const { runTopLevelPublish } = await import("./publish-D5O5JKRb.js");
|
|
1005
1005
|
process.exit(await runTopLevelPublish({
|
|
1006
1006
|
cwd: opts.cwd,
|
|
1007
1007
|
bump: opts.bump,
|
|
@@ -175,7 +175,7 @@ async function runDev(opts) {
|
|
|
175
175
|
*/
|
|
176
176
|
async function resolveRealLlm(args) {
|
|
177
177
|
const { getAccount } = await import("./credentials-Chkoidh5.js");
|
|
178
|
-
const { ensureDevAppRegistered } = await import("./dev-app-cache-
|
|
178
|
+
const { ensureDevAppRegistered } = await import("./dev-app-cache-Dw2JESld.js");
|
|
179
179
|
const acc = getAccount(args.account);
|
|
180
180
|
if (!acc) {
|
|
181
181
|
console.error(red("✗ no developer PAT on disk — run `anna-app login --host <nexus-url>` first.\n (or use `--no-llm` / `--mock-llm <fixture>` to develop offline.)"));
|
|
@@ -204,7 +204,7 @@ async function resolveRealLlm(args) {
|
|
|
204
204
|
account: args.account,
|
|
205
205
|
appSlug: entry.slug,
|
|
206
206
|
onAppSlugNotFound: async () => {
|
|
207
|
-
const { invalidateDevAppCache } = await import("./dev-app-cache-
|
|
207
|
+
const { invalidateDevAppCache } = await import("./dev-app-cache-Dw2JESld.js");
|
|
208
208
|
invalidateDevAppCache(args.cwd);
|
|
209
209
|
const fresh = getAccount(args.account);
|
|
210
210
|
if (!fresh) throw new Error("PAT not found while re-registering dev app — run `anna-app login` again");
|
|
@@ -16,8 +16,12 @@ const CACHE_FILE = "dev-app.json";
|
|
|
16
16
|
* 2 — server now writes the full dev grant bundle (llm + image + upload);
|
|
17
17
|
* re-register so pre-existing dev apps pick up `upload_grant` /
|
|
18
18
|
* `image_grant` (fixes host/uploadFile → APP_NOT_GRANTED, forum #159)
|
|
19
|
+
* 3 — server widened `llm_grant.allowed_tools` from [] to the full
|
|
20
|
+
* sandbox tool registry (nexus 1.1.0-beta.115, forum #192); stale
|
|
21
|
+
* rows made every sandbox session resolve zero tools
|
|
22
|
+
* (granted_tools: [] + NO_TOOLS_AVAILABLE, forum #225)
|
|
19
23
|
*/
|
|
20
|
-
const DEV_APP_CACHE_VERSION =
|
|
24
|
+
const DEV_APP_CACHE_VERSION = 3;
|
|
21
25
|
function cachePath(cwd) {
|
|
22
26
|
return resolve(cwd, CACHE_DIR, CACHE_FILE);
|
|
23
27
|
}
|
|
@@ -136,8 +140,11 @@ const EXECUTA_CACHE_FILE = "dev-executa.json";
|
|
|
136
140
|
* 1 — initial (llm_grant only)
|
|
137
141
|
* 2 — adds image_grant + upload_grant; fixes `allowedPurposes` to
|
|
138
142
|
* protocol whitelist {image_input,image_reference,user_artifact}
|
|
143
|
+
* 3 — server widened `llm_grant.allowed_tools` from [] to the full
|
|
144
|
+
* sandbox tool registry (nexus 1.1.0-beta.115, forum #192); same
|
|
145
|
+
* staleness as DEV_APP_CACHE_VERSION 3 for the from_sampling path
|
|
139
146
|
*/
|
|
140
|
-
const EXECUTA_CACHE_VERSION =
|
|
147
|
+
const EXECUTA_CACHE_VERSION = 3;
|
|
141
148
|
function executaCachePath(cwd) {
|
|
142
149
|
return resolve(cwd, CACHE_DIR, EXECUTA_CACHE_FILE);
|
|
143
150
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./nexus-root-BlPwOusj.js";
|
|
2
|
-
import { parseExecutaSpec } from "./dev-
|
|
2
|
+
import { parseExecutaSpec } from "./dev-Bfv3WQC0.js";
|
|
3
3
|
import { isAbsolute, resolve } from "node:path";
|
|
4
4
|
import { existsSync } from "node:fs";
|
|
5
5
|
import { bold, cyan, dim, green, red, yellow } from "kleur/colors";
|
|
@@ -35,7 +35,7 @@ async function runExecutaDev(opts) {
|
|
|
35
35
|
const oneShot = !!(opts.describe || opts.health || opts.invoke);
|
|
36
36
|
const quiet = oneShot && (opts.json ?? false);
|
|
37
37
|
const { getAccount } = await import("./credentials-Chkoidh5.js");
|
|
38
|
-
const { ensureDevExecutaRegistered } = await import("./dev-app-cache-
|
|
38
|
+
const { ensureDevExecutaRegistered } = await import("./dev-app-cache-Dw2JESld.js");
|
|
39
39
|
const needsRealMint = !opts.noSampling && !opts.mockSampling || !opts.noAgent && !opts.mockAgent || !opts.noImage && !opts.mockImage || !opts.noUpload && !opts.mockUpload || opts.storage === "real";
|
|
40
40
|
let effectiveAppSlug = opts.appSlug;
|
|
41
41
|
let autoRegistered = false;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { readExecutaIdentity } from "./executa-cache-BFoUtb4J.js";
|
|
2
|
-
import { parseExecutaSpec } from "./dev-
|
|
2
|
+
import { parseExecutaSpec } from "./dev-Bfv3WQC0.js";
|
|
3
3
|
import { isAbsolute, join, resolve } from "node:path";
|
|
4
4
|
import { chmodSync, existsSync, mkdirSync, writeFileSync } from "node:fs";
|
|
5
5
|
import { bold, cyan, dim, green, red, yellow } from "kleur/colors";
|
|
@@ -2,10 +2,10 @@ import "./credentials-BTv2IfUZ.js";
|
|
|
2
2
|
import "./client-sMzq2PWG.js";
|
|
3
3
|
import "./_lifecycle-shared-_9BzQ9Y2.js";
|
|
4
4
|
import "./executa-cache-BFoUtb4J.js";
|
|
5
|
-
import "./manifest-
|
|
5
|
+
import "./manifest-B_DjigtQ.js";
|
|
6
6
|
import "./executas-CvQY_w2U.js";
|
|
7
|
-
import { runExecutaPublish } from "./executa-publish-
|
|
7
|
+
import { runExecutaPublish } from "./executa-publish-BKnsUoZq.js";
|
|
8
8
|
import "./binary-upload-DVhQ0uY0.js";
|
|
9
|
-
import "./executa-upload-binaries-
|
|
9
|
+
import "./executa-upload-binaries-DwWQ18Dq.js";
|
|
10
10
|
|
|
11
11
|
export { runExecutaPublish };
|
|
@@ -2,9 +2,9 @@ import { canonicalHost } from "./credentials-BTv2IfUZ.js";
|
|
|
2
2
|
import { CliError } from "./client-sMzq2PWG.js";
|
|
3
3
|
import { resolveClient, withErrorHandling } from "./_lifecycle-shared-_9BzQ9Y2.js";
|
|
4
4
|
import { executaCacheMatches, invalidateExecutaCache, mintIdempotencyKey, readExecutaIdentity, writeExecutaIdentity } from "./executa-cache-BFoUtb4J.js";
|
|
5
|
-
import { loadExecutaManifest } from "./manifest-
|
|
5
|
+
import { loadExecutaManifest } from "./manifest-B_DjigtQ.js";
|
|
6
6
|
import { commitDraft, createDraft, getMySkill, getMyTool, listToolVersions, publishToolVersion, setSkillVisibility, setToolVisibility, updateMySkill, updateMyTool } from "./executas-CvQY_w2U.js";
|
|
7
|
-
import { uploadExecutaBinaries } from "./executa-upload-binaries-
|
|
7
|
+
import { uploadExecutaBinaries } from "./executa-upload-binaries-DwWQ18Dq.js";
|
|
8
8
|
import { join, relative, resolve, sep } from "node:path";
|
|
9
9
|
import { readFileSync, readdirSync, statSync, writeFileSync } from "node:fs";
|
|
10
10
|
import { bold, cyan, dim, green, yellow } from "kleur/colors";
|
|
@@ -2,7 +2,7 @@ import { canonicalHost } from "./credentials-BTv2IfUZ.js";
|
|
|
2
2
|
import { CliError } from "./client-sMzq2PWG.js";
|
|
3
3
|
import { resolveClient, withErrorHandling } from "./_lifecycle-shared-_9BzQ9Y2.js";
|
|
4
4
|
import { readExecutaIdentity } from "./executa-cache-BFoUtb4J.js";
|
|
5
|
-
import { loadExecutaManifest } from "./manifest-
|
|
5
|
+
import { loadExecutaManifest } from "./manifest-B_DjigtQ.js";
|
|
6
6
|
import { fetchGitHubIdToken, finalizeBinaryUpload, initBinaryUpload, mintUploadSession, mintUploadSessionViaOidc, uploadBinaryPart } from "./binary-upload-DVhQ0uY0.js";
|
|
7
7
|
import { isAbsolute, resolve } from "node:path";
|
|
8
8
|
import { closeSync, createReadStream, existsSync, openSync, readSync, statSync } from "node:fs";
|
|
@@ -2,8 +2,8 @@ import "./credentials-BTv2IfUZ.js";
|
|
|
2
2
|
import "./client-sMzq2PWG.js";
|
|
3
3
|
import "./_lifecycle-shared-_9BzQ9Y2.js";
|
|
4
4
|
import "./executa-cache-BFoUtb4J.js";
|
|
5
|
-
import "./manifest-
|
|
5
|
+
import "./manifest-B_DjigtQ.js";
|
|
6
6
|
import "./binary-upload-DVhQ0uY0.js";
|
|
7
|
-
import { expandArtifactPath, resolveArtifactPlan, runExecutaUploadBinaries, uploadExecutaBinaries, uploadPlannedParts } from "./executa-upload-binaries-
|
|
7
|
+
import { expandArtifactPath, resolveArtifactPlan, runExecutaUploadBinaries, uploadExecutaBinaries, uploadPlannedParts } from "./executa-upload-binaries-DwWQ18Dq.js";
|
|
8
8
|
|
|
9
9
|
export { runExecutaUploadBinaries };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { patchApp, uploadAppLogo, uploadAppScreenshot } from "./apps-
|
|
1
|
+
import { patchApp, uploadAppLogo, uploadAppScreenshot } from "./apps-HbfURK6y.js";
|
|
2
2
|
import { CliError } from "./client-sMzq2PWG.js";
|
|
3
3
|
import { extname, resolve } from "node:path";
|
|
4
4
|
import { existsSync, readFileSync } from "node:fs";
|
|
@@ -39,8 +39,7 @@ const LISTING_META_LIMITS = {
|
|
|
39
39
|
cover_url: 500,
|
|
40
40
|
homepage_url: 500,
|
|
41
41
|
support_url: 500,
|
|
42
|
-
privacy_url: 500
|
|
43
|
-
pricing_model: 20
|
|
42
|
+
privacy_url: 500
|
|
44
43
|
};
|
|
45
44
|
function checkListingLimit(key, value) {
|
|
46
45
|
const max = LISTING_META_LIMITS[key];
|
|
@@ -74,7 +73,6 @@ function buildMeta(manifest) {
|
|
|
74
73
|
addClearable("homepage_url", manifest.homepageUrl);
|
|
75
74
|
addClearable("support_url", manifest.supportUrl);
|
|
76
75
|
addClearable("privacy_url", manifest.privacyUrl);
|
|
77
|
-
add("pricing_model", manifest.pricingModel);
|
|
78
76
|
return meta;
|
|
79
77
|
}
|
|
80
78
|
/**
|
|
@@ -78,8 +78,7 @@ function loadAppManifest(cwd, manifestPath) {
|
|
|
78
78
|
screenshots: pickMetaArray("screenshots"),
|
|
79
79
|
homepageUrl: pickClearableMeta("homepage_url"),
|
|
80
80
|
supportUrl: pickClearableMeta("support_url"),
|
|
81
|
-
privacyUrl: pickClearableMeta("privacy_url")
|
|
82
|
-
pricingModel: pickMeta("pricing_model")
|
|
81
|
+
privacyUrl: pickClearableMeta("privacy_url")
|
|
83
82
|
};
|
|
84
83
|
}
|
|
85
84
|
const HANDLE_RE = /^[a-z0-9][a-z0-9-]{0,62}$/;
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import "./credentials-BTv2IfUZ.js";
|
|
2
|
-
import "./apps-
|
|
2
|
+
import "./apps-HbfURK6y.js";
|
|
3
3
|
import { CliError } from "./client-sMzq2PWG.js";
|
|
4
4
|
import { withErrorHandling } from "./_lifecycle-shared-_9BzQ9Y2.js";
|
|
5
5
|
import "./executa-cache-BFoUtb4J.js";
|
|
6
6
|
import "./bundled-executas-BRyQkI9u.js";
|
|
7
|
-
import "./manifest-
|
|
7
|
+
import "./manifest-B_DjigtQ.js";
|
|
8
8
|
import "./executas-CvQY_w2U.js";
|
|
9
|
-
import { runExecutaPublish } from "./executa-publish-
|
|
9
|
+
import { runExecutaPublish } from "./executa-publish-BKnsUoZq.js";
|
|
10
10
|
import "./binary-upload-DVhQ0uY0.js";
|
|
11
|
-
import "./executa-upload-binaries-
|
|
11
|
+
import "./executa-upload-binaries-DwWQ18Dq.js";
|
|
12
12
|
import "./app-cache-Cr3tKbux.js";
|
|
13
|
-
import "./listing-meta-
|
|
14
|
-
import "./app-bundle-upload-
|
|
15
|
-
import { runAppsPublish } from "./apps-publish-
|
|
13
|
+
import "./listing-meta-DgweMStT.js";
|
|
14
|
+
import "./app-bundle-upload-Ca0r-kPy.js";
|
|
15
|
+
import { runAppsPublish } from "./apps-publish-8N9x4VEM.js";
|
|
16
16
|
import { resolve } from "node:path";
|
|
17
17
|
import { existsSync } from "node:fs";
|
|
18
18
|
import { red, yellow } from "kleur/colors";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { canonicalHost } from "./credentials-BTv2IfUZ.js";
|
|
2
|
-
import { createApp, findAppBySlug, getApp } from "./apps-
|
|
2
|
+
import { createApp, findAppBySlug, getApp } from "./apps-HbfURK6y.js";
|
|
3
3
|
import { CliError } from "./client-sMzq2PWG.js";
|
|
4
4
|
import { parseExecutaIdOverrides, readExecutasLock, substituteBundledRefs, validateBundledHandles, writeBundleToolIdSidecar, writeExecutasLock } from "./bundled-executas-BRyQkI9u.js";
|
|
5
|
-
import { loadExecutaManifest } from "./manifest-
|
|
6
|
-
import { runExecutaPublish } from "./executa-publish-
|
|
7
|
-
import { runExecutaInstall } from "./executa-install-
|
|
5
|
+
import { loadExecutaManifest } from "./manifest-B_DjigtQ.js";
|
|
6
|
+
import { runExecutaPublish } from "./executa-publish-BKnsUoZq.js";
|
|
7
|
+
import { runExecutaInstall } from "./executa-install-DAposiBw.js";
|
|
8
8
|
import { appCacheMatches, readAppIdentity, writeAppIdentity } from "./app-cache-Cr3tKbux.js";
|
|
9
9
|
import { join, resolve } from "node:path";
|
|
10
10
|
import { dim, green, yellow } from "kleur/colors";
|
package/package.json
CHANGED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import "./credentials-BTv2IfUZ.js";
|
|
2
|
-
import { findAppBySlug, getAppGrants } from "./apps-DlVsVHQ5.js";
|
|
3
|
-
import { CliError } from "./client-sMzq2PWG.js";
|
|
4
|
-
import { resolveClient, withErrorHandling } from "./_lifecycle-shared-_9BzQ9Y2.js";
|
|
5
|
-
import { bold, cyan, dim } from "kleur/colors";
|
|
6
|
-
|
|
7
|
-
//#region src/commands/apps-grants.ts
|
|
8
|
-
async function runAppsGrants(opts) {
|
|
9
|
-
return withErrorHandling(async () => {
|
|
10
|
-
const { client, host } = resolveClient({ account: opts.account });
|
|
11
|
-
const app = await findAppBySlug(client, opts.slug);
|
|
12
|
-
if (!app) throw new CliError(`no app with slug "${opts.slug}" on ${host}`, 5);
|
|
13
|
-
const grants = await getAppGrants(client, app.id);
|
|
14
|
-
if (opts.json) {
|
|
15
|
-
console.log(JSON.stringify({
|
|
16
|
-
host,
|
|
17
|
-
app_id: app.id,
|
|
18
|
-
slug: app.slug,
|
|
19
|
-
grants
|
|
20
|
-
}, null, 2));
|
|
21
|
-
return 0;
|
|
22
|
-
}
|
|
23
|
-
console.log(bold(cyan(`apps/${app.slug}`)) + " " + dim(`grants`));
|
|
24
|
-
if (!grants) {
|
|
25
|
-
console.log(dim(" (no grants endpoint data available)"));
|
|
26
|
-
return 0;
|
|
27
|
-
}
|
|
28
|
-
console.log(JSON.stringify(grants, null, 2));
|
|
29
|
-
return 0;
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
//#endregion
|
|
34
|
-
export { runAppsGrants };
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import "./credentials-BTv2IfUZ.js";
|
|
2
|
-
import "./apps-DlVsVHQ5.js";
|
|
3
|
-
import "./client-sMzq2PWG.js";
|
|
4
|
-
import "./_lifecycle-shared-_9BzQ9Y2.js";
|
|
5
|
-
import "./executa-cache-BFoUtb4J.js";
|
|
6
|
-
import "./bundled-executas-BRyQkI9u.js";
|
|
7
|
-
import "./manifest-DZyXkzg5.js";
|
|
8
|
-
import "./executas-CvQY_w2U.js";
|
|
9
|
-
import "./executa-publish-DiyLvmyl.js";
|
|
10
|
-
import "./binary-upload-DVhQ0uY0.js";
|
|
11
|
-
import "./executa-upload-binaries-pCHYUcie.js";
|
|
12
|
-
import "./app-cache-Cr3tKbux.js";
|
|
13
|
-
import "./listing-meta-DvxLn9NY.js";
|
|
14
|
-
import "./app-bundle-upload-BNBH9x6a.js";
|
|
15
|
-
import { runAppsPublish } from "./apps-publish-DFKd-Egv.js";
|
|
16
|
-
|
|
17
|
-
export { runAppsPublish };
|
package/dist/dev-C251jRh2.js
DELETED