@pmate/cli 0.21.10 → 0.21.12
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/index.d.ts +97 -1
- package/dist/index.js +1040 -204
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -9435,8 +9435,8 @@ __export(index_exports, {
|
|
|
9435
9435
|
parseCommandArgs: () => parseCommandArgs
|
|
9436
9436
|
});
|
|
9437
9437
|
module.exports = __toCommonJS(index_exports);
|
|
9438
|
-
var
|
|
9439
|
-
var
|
|
9438
|
+
var import_node_fs22 = require("fs");
|
|
9439
|
+
var import_node_path27 = __toESM(require("path"));
|
|
9440
9440
|
var import_chalk4 = __toESM(require("chalk"));
|
|
9441
9441
|
|
|
9442
9442
|
// src/cli.ts
|
|
@@ -14585,9 +14585,9 @@ ${indent}\`\`\``;
|
|
|
14585
14585
|
static richTextToPlain(richText) {
|
|
14586
14586
|
return richText.map((item) => item.plain_text ?? item.text?.content ?? "").join("").trim();
|
|
14587
14587
|
}
|
|
14588
|
-
static async requestJson(
|
|
14588
|
+
static async requestJson(path28, init) {
|
|
14589
14589
|
const token = this.getToken();
|
|
14590
|
-
const response = await fetch(`${this.baseUrl}${
|
|
14590
|
+
const response = await fetch(`${this.baseUrl}${path28}`, {
|
|
14591
14591
|
method: init.method,
|
|
14592
14592
|
headers: {
|
|
14593
14593
|
Authorization: `Bearer ${token}`,
|
|
@@ -16223,8 +16223,8 @@ function descriptorPathSegments(descriptor) {
|
|
|
16223
16223
|
return ["chains", normalized.chain, "namespaces", normalized.ns, normalized.kind, normalized.name];
|
|
16224
16224
|
}
|
|
16225
16225
|
function buildPathUrl(baseUrl, pathSegments, query) {
|
|
16226
|
-
const
|
|
16227
|
-
const url = new URL(
|
|
16226
|
+
const path28 = `/${pathSegments.map((segment) => encodeURIComponent(segment)).join("/")}`;
|
|
16227
|
+
const url = new URL(path28, baseUrl);
|
|
16228
16228
|
if (query) {
|
|
16229
16229
|
for (const [key, value] of Object.entries(query)) {
|
|
16230
16230
|
url.searchParams.set(key, String(value));
|
|
@@ -17575,7 +17575,7 @@ var import_node_readline = require("readline");
|
|
|
17575
17575
|
var import_chalk3 = __toESM(require("chalk"));
|
|
17576
17576
|
var ServiceRuntimeRunner = class {
|
|
17577
17577
|
async deploy(service, options = {}) {
|
|
17578
|
-
switch (service
|
|
17578
|
+
switch (this.getType(service)) {
|
|
17579
17579
|
case "vite":
|
|
17580
17580
|
await this.deployVite(service, options);
|
|
17581
17581
|
return;
|
|
@@ -17589,12 +17589,17 @@ var ServiceRuntimeRunner = class {
|
|
|
17589
17589
|
case "python":
|
|
17590
17590
|
await this.deployScriptManaged(service);
|
|
17591
17591
|
return;
|
|
17592
|
+
case "ios":
|
|
17593
|
+
case "android":
|
|
17594
|
+
throw new Error(
|
|
17595
|
+
`Service type "${this.getType(service)}" is registry-only for now; deploy is not supported yet`
|
|
17596
|
+
);
|
|
17592
17597
|
default:
|
|
17593
|
-
throw new Error(`Unsupported
|
|
17598
|
+
throw new Error(`Unsupported service type for deploy: ${this.getType(service)}`);
|
|
17594
17599
|
}
|
|
17595
17600
|
}
|
|
17596
17601
|
async init(service, options = {}) {
|
|
17597
|
-
switch (service
|
|
17602
|
+
switch (this.getType(service)) {
|
|
17598
17603
|
case "vite":
|
|
17599
17604
|
case "static":
|
|
17600
17605
|
await this.initStaticLike(service);
|
|
@@ -17606,8 +17611,13 @@ var ServiceRuntimeRunner = class {
|
|
|
17606
17611
|
case "python":
|
|
17607
17612
|
await this.initServerApp(service, options, { ensurePackageJson: false });
|
|
17608
17613
|
return;
|
|
17614
|
+
case "ios":
|
|
17615
|
+
case "android":
|
|
17616
|
+
throw new Error(
|
|
17617
|
+
`Service type "${this.getType(service)}" is registry-only for now; init is not supported yet`
|
|
17618
|
+
);
|
|
17609
17619
|
default:
|
|
17610
|
-
throw new Error(`Unsupported
|
|
17620
|
+
throw new Error(`Unsupported service type for init: ${this.getType(service)}`);
|
|
17611
17621
|
}
|
|
17612
17622
|
}
|
|
17613
17623
|
async log(service, options = {}) {
|
|
@@ -17677,14 +17687,56 @@ var ServiceRuntimeRunner = class {
|
|
|
17677
17687
|
}
|
|
17678
17688
|
}
|
|
17679
17689
|
}
|
|
17680
|
-
|
|
17681
|
-
return
|
|
17690
|
+
isLegacy(service) {
|
|
17691
|
+
return "runtimeType" in service;
|
|
17692
|
+
}
|
|
17693
|
+
getType(service) {
|
|
17694
|
+
return this.isLegacy(service) ? service.runtimeType : service.type;
|
|
17695
|
+
}
|
|
17696
|
+
getSite(service) {
|
|
17697
|
+
if (!this.isLegacy(service) && service.site) {
|
|
17698
|
+
return service.site;
|
|
17699
|
+
}
|
|
17700
|
+
const deploy = this.isLegacy(service) ? service.deploy ?? {} : {};
|
|
17701
|
+
return {
|
|
17702
|
+
exposeType: "static-site",
|
|
17703
|
+
repository: String(deploy.repository ?? ""),
|
|
17704
|
+
dir: String(deploy.dir ?? ""),
|
|
17705
|
+
bucket: String(deploy.bucket ?? ""),
|
|
17706
|
+
domain: String(deploy.domain ?? ""),
|
|
17707
|
+
...deploy.subdomain ? { subdomain: deploy.subdomain } : {}
|
|
17708
|
+
};
|
|
17709
|
+
}
|
|
17710
|
+
getNetwork(service) {
|
|
17711
|
+
if (!this.isLegacy(service) && service.network) {
|
|
17712
|
+
return service.network;
|
|
17713
|
+
}
|
|
17714
|
+
const deploy = this.isLegacy(service) ? service.deploy ?? {} : {};
|
|
17715
|
+
const exposeType = deploy.port === void 0 ? "internal" : deploy.serviceType === "ws" ? "websocket" : "rest";
|
|
17716
|
+
return {
|
|
17717
|
+
exposeType,
|
|
17718
|
+
repository: String(deploy.repository ?? ""),
|
|
17719
|
+
dir: String(deploy.dir ?? ""),
|
|
17720
|
+
server: String(deploy.server ?? ""),
|
|
17721
|
+
...deploy.port !== void 0 ? { port: Number(deploy.port) } : {},
|
|
17722
|
+
...deploy.domain ? { domain: deploy.domain } : {},
|
|
17723
|
+
...deploy.subdomain ? { subdomain: deploy.subdomain } : {}
|
|
17724
|
+
};
|
|
17725
|
+
}
|
|
17726
|
+
getRunner(service) {
|
|
17727
|
+
if (!this.isLegacy(service) && service.runner) {
|
|
17728
|
+
return service.runner;
|
|
17729
|
+
}
|
|
17730
|
+
const deploy = this.isLegacy(service) ? service.deploy ?? {} : {};
|
|
17731
|
+
return {
|
|
17732
|
+
script: String(deploy.script ?? "")
|
|
17733
|
+
};
|
|
17682
17734
|
}
|
|
17683
17735
|
resolveRepoRoot(service, cwd) {
|
|
17684
17736
|
if (cwd) {
|
|
17685
17737
|
return import_node_path23.default.resolve(process.cwd(), cwd);
|
|
17686
17738
|
}
|
|
17687
|
-
const repository = this.
|
|
17739
|
+
const repository = this.getType(service) === "vite" || this.getType(service) === "static" ? this.getSite(service).repository?.trim() : this.getType(service) === "ios" || this.getType(service) === "android" ? void 0 : this.getNetwork(service).repository?.trim();
|
|
17688
17740
|
if (repository) {
|
|
17689
17741
|
const repoName = repository.replace(/\/+$/, "").split("/").pop()?.replace(/\.git$/i, "");
|
|
17690
17742
|
if (repoName) {
|
|
@@ -17698,9 +17750,9 @@ var ServiceRuntimeRunner = class {
|
|
|
17698
17750
|
}
|
|
17699
17751
|
resolveLocalDir(service, cwd) {
|
|
17700
17752
|
const repoRoot = this.resolveRepoRoot(service, cwd);
|
|
17701
|
-
const dir = this.
|
|
17753
|
+
const dir = this.getType(service) === "vite" || this.getType(service) === "static" ? this.getSite(service).dir?.trim() : this.getType(service) === "ios" || this.getType(service) === "android" ? void 0 : this.getNetwork(service).dir?.trim();
|
|
17702
17754
|
if (!dir) {
|
|
17703
|
-
throw new Error(`Missing
|
|
17755
|
+
throw new Error(`Missing service dir for ${service.id}`);
|
|
17704
17756
|
}
|
|
17705
17757
|
return import_node_path23.default.resolve(repoRoot, dir);
|
|
17706
17758
|
}
|
|
@@ -17720,9 +17772,10 @@ var ServiceRuntimeRunner = class {
|
|
|
17720
17772
|
if (!(0, import_node_fs18.existsSync)(distDir)) {
|
|
17721
17773
|
throw new Error(`No dist directory found at ${distDir}`);
|
|
17722
17774
|
}
|
|
17723
|
-
const
|
|
17775
|
+
const site = this.getSite(service);
|
|
17776
|
+
const bucketName = site.bucket?.trim();
|
|
17724
17777
|
if (!bucketName) {
|
|
17725
|
-
throw new Error(`Missing
|
|
17778
|
+
throw new Error(`Missing site.bucket for ${service.id}`);
|
|
17726
17779
|
}
|
|
17727
17780
|
await AliyunService.uploadDirectory(distDir, bucketName);
|
|
17728
17781
|
}
|
|
@@ -17732,29 +17785,30 @@ var ServiceRuntimeRunner = class {
|
|
|
17732
17785
|
if (!(0, import_node_fs18.existsSync)(srcDir)) {
|
|
17733
17786
|
throw new Error(`No src directory found at ${srcDir}`);
|
|
17734
17787
|
}
|
|
17735
|
-
const
|
|
17788
|
+
const site = this.getSite(service);
|
|
17789
|
+
const bucketName = site.bucket?.trim();
|
|
17736
17790
|
if (!bucketName) {
|
|
17737
|
-
throw new Error(`Missing
|
|
17791
|
+
throw new Error(`Missing site.bucket for ${service.id}`);
|
|
17738
17792
|
}
|
|
17739
17793
|
await AliyunService.uploadDirectory(srcDir, bucketName);
|
|
17740
17794
|
}
|
|
17741
17795
|
async deployNode(service) {
|
|
17742
|
-
const
|
|
17743
|
-
const server =
|
|
17744
|
-
const repository =
|
|
17796
|
+
const network = this.getNetwork(service);
|
|
17797
|
+
const server = network.server?.trim();
|
|
17798
|
+
const repository = network.repository?.trim();
|
|
17745
17799
|
if (!server) {
|
|
17746
|
-
throw new Error(`Missing
|
|
17800
|
+
throw new Error(`Missing network.server for ${service.id}`);
|
|
17747
17801
|
}
|
|
17748
17802
|
if (!repository) {
|
|
17749
|
-
throw new Error(`Missing
|
|
17803
|
+
throw new Error(`Missing network.repository for ${service.id}`);
|
|
17750
17804
|
}
|
|
17751
|
-
const port =
|
|
17805
|
+
const port = network.port;
|
|
17752
17806
|
if (port !== void 0 && (!Number.isFinite(port) || port <= 0)) {
|
|
17753
|
-
throw new Error(`Invalid
|
|
17807
|
+
throw new Error(`Invalid network.port for ${service.id}`);
|
|
17754
17808
|
}
|
|
17755
|
-
const appDir =
|
|
17809
|
+
const appDir = network.dir?.trim();
|
|
17756
17810
|
if (!appDir) {
|
|
17757
|
-
throw new Error(`Missing
|
|
17811
|
+
throw new Error(`Missing network.dir for ${service.id}`);
|
|
17758
17812
|
}
|
|
17759
17813
|
const repoDir = this.getRepoDirName(repository);
|
|
17760
17814
|
const repoUrl = this.getRepoUrl(repository);
|
|
@@ -17782,18 +17836,19 @@ var ServiceRuntimeRunner = class {
|
|
|
17782
17836
|
await this.runRemoteCommand(server, command);
|
|
17783
17837
|
}
|
|
17784
17838
|
async deployScriptManaged(service) {
|
|
17785
|
-
const
|
|
17786
|
-
const
|
|
17787
|
-
const
|
|
17788
|
-
const
|
|
17839
|
+
const network = this.getNetwork(service);
|
|
17840
|
+
const runner = this.getRunner(service);
|
|
17841
|
+
const server = network.server?.trim();
|
|
17842
|
+
const repository = network.repository?.trim();
|
|
17843
|
+
const script = runner.script?.trim();
|
|
17789
17844
|
if (!server) {
|
|
17790
|
-
throw new Error(`Missing
|
|
17845
|
+
throw new Error(`Missing network.server for ${service.id}`);
|
|
17791
17846
|
}
|
|
17792
17847
|
if (!repository) {
|
|
17793
|
-
throw new Error(`Missing
|
|
17848
|
+
throw new Error(`Missing network.repository for ${service.id}`);
|
|
17794
17849
|
}
|
|
17795
17850
|
if (!script) {
|
|
17796
|
-
throw new Error(`Missing
|
|
17851
|
+
throw new Error(`Missing runner.script for ${service.id}`);
|
|
17797
17852
|
}
|
|
17798
17853
|
const repoDir = this.getRepoDirName(repository);
|
|
17799
17854
|
const repoUrl = this.getRepoUrl(repository);
|
|
@@ -17812,43 +17867,43 @@ var ServiceRuntimeRunner = class {
|
|
|
17812
17867
|
await this.runRemoteCommand(server, command);
|
|
17813
17868
|
}
|
|
17814
17869
|
async initStaticLike(service) {
|
|
17815
|
-
const
|
|
17816
|
-
const bucketName =
|
|
17817
|
-
const baseDomain =
|
|
17870
|
+
const site = this.getSite(service);
|
|
17871
|
+
const bucketName = site.bucket?.trim();
|
|
17872
|
+
const baseDomain = site.domain?.trim();
|
|
17818
17873
|
if (!bucketName) {
|
|
17819
|
-
throw new Error(`Missing
|
|
17874
|
+
throw new Error(`Missing site.bucket for ${service.id}`);
|
|
17820
17875
|
}
|
|
17821
17876
|
if (!baseDomain) {
|
|
17822
|
-
throw new Error(`Missing
|
|
17877
|
+
throw new Error(`Missing site.domain for ${service.id}`);
|
|
17823
17878
|
}
|
|
17824
17879
|
await setupStaticSiteBucket({
|
|
17825
17880
|
bucketName,
|
|
17826
17881
|
domainName: baseDomain,
|
|
17827
|
-
subdomain:
|
|
17828
|
-
routeType: service
|
|
17882
|
+
subdomain: site.subdomain,
|
|
17883
|
+
routeType: this.getType(service) === "vite" ? "spa" : "spa"
|
|
17829
17884
|
});
|
|
17830
17885
|
}
|
|
17831
17886
|
async initServerApp(service, options, config) {
|
|
17832
|
-
const
|
|
17833
|
-
const subdomain =
|
|
17834
|
-
const port =
|
|
17835
|
-
const server =
|
|
17836
|
-
const
|
|
17887
|
+
const network = this.getNetwork(service);
|
|
17888
|
+
const subdomain = "subdomain" in network ? network.subdomain?.trim() : void 0;
|
|
17889
|
+
const port = network.port;
|
|
17890
|
+
const server = network.server?.trim();
|
|
17891
|
+
const exposeType = network.exposeType;
|
|
17837
17892
|
if (subdomain && port === void 0) {
|
|
17838
|
-
throw new Error(`Missing
|
|
17893
|
+
throw new Error(`Missing network.port for ${service.id} (required when subdomain is set)`);
|
|
17839
17894
|
}
|
|
17840
17895
|
if (subdomain && !server) {
|
|
17841
|
-
throw new Error(`Missing
|
|
17896
|
+
throw new Error(`Missing network.server for ${service.id}`);
|
|
17842
17897
|
}
|
|
17843
|
-
if (
|
|
17844
|
-
throw new Error(`Invalid
|
|
17898
|
+
if (!["rest", "rpc", "websocket", "internal"].includes(exposeType)) {
|
|
17899
|
+
throw new Error(`Invalid network.exposeType for ${service.id}`);
|
|
17845
17900
|
}
|
|
17846
17901
|
if (subdomain) {
|
|
17847
17902
|
const serverAddress = await resolveServerAddress(server);
|
|
17848
|
-
const templateName =
|
|
17903
|
+
const templateName = exposeType === "websocket" ? "nginx.ws.template" : "nginx.rest.template";
|
|
17849
17904
|
const templatePath = this.resolveTemplatePath(templateName);
|
|
17850
17905
|
const template = (0, import_node_fs18.readFileSync)(templatePath, "utf8");
|
|
17851
|
-
const host = `${subdomain}.${
|
|
17906
|
+
const host = `${subdomain}.${("domain" in network ? network.domain?.trim() : void 0) || "pmate.chat"}`;
|
|
17852
17907
|
const rendered = template.replace(/\$\{\{PORT\}\}/g, String(port)).replace(/\$\{\{HOSTS\}\}/g, host).replace(/\$\{\{HOST\}\}/g, host);
|
|
17853
17908
|
const remotePath = `/etc/nginx/sites-enabled/${subdomain}.conf`;
|
|
17854
17909
|
ui.info(`Uploading nginx config to ${server}`);
|
|
@@ -17856,7 +17911,7 @@ var ServiceRuntimeRunner = class {
|
|
|
17856
17911
|
ui.success(`Uploaded nginx config to ${server}`, remotePath);
|
|
17857
17912
|
await this.reloadNginx(server);
|
|
17858
17913
|
ui.success(`Reloaded nginx on ${server}`);
|
|
17859
|
-
const baseDomain =
|
|
17914
|
+
const baseDomain = ("domain" in network ? network.domain?.trim() : void 0) || "pmate.chat";
|
|
17860
17915
|
const existingA = await AliyunService.getARecordValue(baseDomain, subdomain);
|
|
17861
17916
|
if (existingA) {
|
|
17862
17917
|
if (existingA !== serverAddress) {
|
|
@@ -17899,18 +17954,19 @@ var ServiceRuntimeRunner = class {
|
|
|
17899
17954
|
}
|
|
17900
17955
|
}
|
|
17901
17956
|
async showScriptLogs(service) {
|
|
17902
|
-
const
|
|
17903
|
-
const
|
|
17904
|
-
const
|
|
17905
|
-
const
|
|
17957
|
+
const network = this.getNetwork(service);
|
|
17958
|
+
const runner = this.getRunner(service);
|
|
17959
|
+
const server = network.server?.trim();
|
|
17960
|
+
const repository = network.repository?.trim();
|
|
17961
|
+
const script = runner.script?.trim();
|
|
17906
17962
|
if (!server) {
|
|
17907
|
-
throw new Error(`Missing
|
|
17963
|
+
throw new Error(`Missing network.server for ${service.id}`);
|
|
17908
17964
|
}
|
|
17909
17965
|
if (!repository) {
|
|
17910
|
-
throw new Error(`Missing
|
|
17966
|
+
throw new Error(`Missing network.repository for ${service.id}`);
|
|
17911
17967
|
}
|
|
17912
17968
|
if (!script) {
|
|
17913
|
-
throw new Error(`Missing
|
|
17969
|
+
throw new Error(`Missing runner.script for ${service.id}`);
|
|
17914
17970
|
}
|
|
17915
17971
|
const repoDir = this.getRepoDirName(repository);
|
|
17916
17972
|
const scriptPath = script.startsWith("/") || script.startsWith("./") ? script : `./${script}`;
|
|
@@ -18306,9 +18362,9 @@ var ServiceRuntimeRunner = class {
|
|
|
18306
18362
|
return tokens;
|
|
18307
18363
|
}
|
|
18308
18364
|
readPathValue(source, pathExpr) {
|
|
18309
|
-
const
|
|
18365
|
+
const path28 = pathExpr.split(".").map((segment) => segment.trim()).filter(Boolean);
|
|
18310
18366
|
let cursor = source;
|
|
18311
|
-
for (const segment of
|
|
18367
|
+
for (const segment of path28) {
|
|
18312
18368
|
if (!cursor || typeof cursor !== "object" || Array.isArray(cursor)) {
|
|
18313
18369
|
return void 0;
|
|
18314
18370
|
}
|
|
@@ -18480,9 +18536,6 @@ var ServiceRegistryClient = class {
|
|
|
18480
18536
|
if (namespace && item.namespace !== namespace) {
|
|
18481
18537
|
return false;
|
|
18482
18538
|
}
|
|
18483
|
-
if (server && item.deploy?.server?.trim() !== server) {
|
|
18484
|
-
return false;
|
|
18485
|
-
}
|
|
18486
18539
|
return true;
|
|
18487
18540
|
});
|
|
18488
18541
|
}
|
|
@@ -18858,12 +18911,20 @@ var ServiceCommandHandler = class {
|
|
|
18858
18911
|
if (!payload || typeof payload !== "object") {
|
|
18859
18912
|
return;
|
|
18860
18913
|
}
|
|
18861
|
-
|
|
18862
|
-
|
|
18863
|
-
|
|
18914
|
+
let serverValue;
|
|
18915
|
+
let portValue;
|
|
18916
|
+
const network = payload.network;
|
|
18917
|
+
if (network && typeof network === "object") {
|
|
18918
|
+
serverValue = network.server;
|
|
18919
|
+
portValue = network.port;
|
|
18920
|
+
} else {
|
|
18921
|
+
const deploy = payload.deploy;
|
|
18922
|
+
if (!deploy || typeof deploy !== "object") {
|
|
18923
|
+
return;
|
|
18924
|
+
}
|
|
18925
|
+
serverValue = deploy.server;
|
|
18926
|
+
portValue = deploy.port;
|
|
18864
18927
|
}
|
|
18865
|
-
const serverValue = deploy.server;
|
|
18866
|
-
const portValue = deploy.port;
|
|
18867
18928
|
const server = typeof serverValue === "string" ? serverValue.trim() : "";
|
|
18868
18929
|
const port = typeof portValue === "number" ? portValue : typeof portValue === "string" && portValue.trim() ? Number(portValue) : void 0;
|
|
18869
18930
|
if (!server || port === void 0 || !Number.isFinite(port)) {
|
|
@@ -18871,7 +18932,8 @@ var ServiceCommandHandler = class {
|
|
|
18871
18932
|
}
|
|
18872
18933
|
const services = await registry.listServices({ server });
|
|
18873
18934
|
const conflict = services.find((service) => {
|
|
18874
|
-
|
|
18935
|
+
const servicePort = "network" in service && service.network && typeof service.network === "object" ? service.network.port : "deploy" in service && service.deploy && typeof service.deploy === "object" ? service.deploy.port : void 0;
|
|
18936
|
+
if (servicePort !== port) {
|
|
18875
18937
|
return false;
|
|
18876
18938
|
}
|
|
18877
18939
|
if (!currentService) {
|
|
@@ -19101,13 +19163,15 @@ var RoleCommandHandler = class {
|
|
|
19101
19163
|
};
|
|
19102
19164
|
|
|
19103
19165
|
// src/commands/AccountCommandHandler.ts
|
|
19166
|
+
var import_node_fs20 = require("fs");
|
|
19167
|
+
var import_node_path25 = __toESM(require("path"));
|
|
19104
19168
|
init_sessionStore();
|
|
19105
19169
|
var AccountCommandHandler = class {
|
|
19106
19170
|
async handle(args) {
|
|
19107
19171
|
const token = this.readToken();
|
|
19108
|
-
const baseUrl = this.resolveBaseUrl(args.baseUrl);
|
|
19109
19172
|
switch (args.action) {
|
|
19110
19173
|
case "view": {
|
|
19174
|
+
const baseUrl = this.resolveAuthBaseUrl(args.baseUrl);
|
|
19111
19175
|
const result = await this.request(
|
|
19112
19176
|
baseUrl,
|
|
19113
19177
|
token,
|
|
@@ -19118,6 +19182,7 @@ var AccountCommandHandler = class {
|
|
|
19118
19182
|
return;
|
|
19119
19183
|
}
|
|
19120
19184
|
case "role-list": {
|
|
19185
|
+
const baseUrl = this.resolveAuthBaseUrl(args.baseUrl);
|
|
19121
19186
|
const items = await this.request(
|
|
19122
19187
|
baseUrl,
|
|
19123
19188
|
token,
|
|
@@ -19128,6 +19193,7 @@ var AccountCommandHandler = class {
|
|
|
19128
19193
|
return;
|
|
19129
19194
|
}
|
|
19130
19195
|
case "role-add": {
|
|
19196
|
+
const baseUrl = this.resolveAuthBaseUrl(args.baseUrl);
|
|
19131
19197
|
const item = await this.request(
|
|
19132
19198
|
baseUrl,
|
|
19133
19199
|
token,
|
|
@@ -19144,6 +19210,7 @@ var AccountCommandHandler = class {
|
|
|
19144
19210
|
return;
|
|
19145
19211
|
}
|
|
19146
19212
|
case "role-remove": {
|
|
19213
|
+
const baseUrl = this.resolveAuthBaseUrl(args.baseUrl);
|
|
19147
19214
|
await this.request(
|
|
19148
19215
|
baseUrl,
|
|
19149
19216
|
token,
|
|
@@ -19158,11 +19225,79 @@ var AccountCommandHandler = class {
|
|
|
19158
19225
|
ui.success(`Removed ${args.role} for ${args.account} in ${args.namespace}`);
|
|
19159
19226
|
return;
|
|
19160
19227
|
}
|
|
19228
|
+
case "visible-app-list": {
|
|
19229
|
+
const baseUrl = this.resolveAppsBaseUrl(args.baseUrl);
|
|
19230
|
+
const result = await this.request(
|
|
19231
|
+
baseUrl,
|
|
19232
|
+
token,
|
|
19233
|
+
"GET",
|
|
19234
|
+
`/accounts/${encodeURIComponent(args.account)}/visible-apps`
|
|
19235
|
+
);
|
|
19236
|
+
this.renderStringList(result.items, args.json, "No visible apps found.");
|
|
19237
|
+
return;
|
|
19238
|
+
}
|
|
19239
|
+
case "visible-app-add": {
|
|
19240
|
+
const baseUrl = this.resolveAppsBaseUrl(args.baseUrl);
|
|
19241
|
+
const item = await this.request(
|
|
19242
|
+
baseUrl,
|
|
19243
|
+
token,
|
|
19244
|
+
"PUT",
|
|
19245
|
+
`/accounts/${encodeURIComponent(args.account)}/visible-apps/${encodePathSegment(args.app)}`
|
|
19246
|
+
);
|
|
19247
|
+
ui.success(`Added visible app ${item.appId} for ${item.ownerId}`);
|
|
19248
|
+
this.renderJson(item, args.json);
|
|
19249
|
+
return;
|
|
19250
|
+
}
|
|
19251
|
+
case "visible-app-remove": {
|
|
19252
|
+
const baseUrl = this.resolveAppsBaseUrl(args.baseUrl);
|
|
19253
|
+
const result = await this.request(
|
|
19254
|
+
baseUrl,
|
|
19255
|
+
token,
|
|
19256
|
+
"DELETE",
|
|
19257
|
+
`/accounts/${encodeURIComponent(args.account)}/visible-apps/${encodePathSegment(args.app)}`
|
|
19258
|
+
);
|
|
19259
|
+
ui.success(
|
|
19260
|
+
result.removed ? `Removed visible app ${result.appId} for ${result.ownerId}` : `Visible app ${result.appId} was already absent for ${result.ownerId}`
|
|
19261
|
+
);
|
|
19262
|
+
this.renderJson(result, args.json);
|
|
19263
|
+
return;
|
|
19264
|
+
}
|
|
19265
|
+
case "visible-app-set": {
|
|
19266
|
+
const baseUrl = this.resolveAppsBaseUrl(args.baseUrl);
|
|
19267
|
+
const items = this.resolveVisibleAppsInput(args);
|
|
19268
|
+
const result = await this.request(
|
|
19269
|
+
baseUrl,
|
|
19270
|
+
token,
|
|
19271
|
+
"PUT",
|
|
19272
|
+
`/accounts/${encodeURIComponent(args.account)}/visible-apps`,
|
|
19273
|
+
items
|
|
19274
|
+
);
|
|
19275
|
+
ui.success(`Updated visible apps for ${args.account}`);
|
|
19276
|
+
this.renderJson(result.items, args.json);
|
|
19277
|
+
return;
|
|
19278
|
+
}
|
|
19279
|
+
case "visible-app-resolve": {
|
|
19280
|
+
const baseUrl = this.resolveAppsBaseUrl(args.baseUrl);
|
|
19281
|
+
const result = await this.request(
|
|
19282
|
+
baseUrl,
|
|
19283
|
+
token,
|
|
19284
|
+
"GET",
|
|
19285
|
+
"/me/visible-apps"
|
|
19286
|
+
);
|
|
19287
|
+
this.renderJson(result.items, args.json);
|
|
19288
|
+
if (!args.json) {
|
|
19289
|
+
this.renderResolvedApps(result.items);
|
|
19290
|
+
}
|
|
19291
|
+
return;
|
|
19292
|
+
}
|
|
19161
19293
|
}
|
|
19162
19294
|
}
|
|
19163
|
-
|
|
19295
|
+
resolveAuthBaseUrl(baseUrl) {
|
|
19164
19296
|
return (baseUrl || process.env.PMATE_AUTH_API_BASE_URL || process.env.AUTH_API_BASE_URL || "https://auth-api-v2.pmate.chat").replace(/\/+$/, "");
|
|
19165
19297
|
}
|
|
19298
|
+
resolveAppsBaseUrl(baseUrl) {
|
|
19299
|
+
return (baseUrl || process.env.PMATE_APPS_API_BASE_URL || "https://apps-api.pmate.chat").replace(/\/+$/, "");
|
|
19300
|
+
}
|
|
19166
19301
|
readToken() {
|
|
19167
19302
|
return readRequiredSession({
|
|
19168
19303
|
preferredApp: DEFAULT_APP_ID,
|
|
@@ -19217,6 +19352,19 @@ var AccountCommandHandler = class {
|
|
|
19217
19352
|
});
|
|
19218
19353
|
}
|
|
19219
19354
|
}
|
|
19355
|
+
renderStringList(items, asJson, emptyMessage) {
|
|
19356
|
+
if (asJson) {
|
|
19357
|
+
ui.plain(JSON.stringify(items, null, 2));
|
|
19358
|
+
return;
|
|
19359
|
+
}
|
|
19360
|
+
if (items.length === 0) {
|
|
19361
|
+
ui.warn(emptyMessage);
|
|
19362
|
+
return;
|
|
19363
|
+
}
|
|
19364
|
+
for (const item of items) {
|
|
19365
|
+
ui.plain(item);
|
|
19366
|
+
}
|
|
19367
|
+
}
|
|
19220
19368
|
renderAccountView(items, asJson) {
|
|
19221
19369
|
if (asJson) {
|
|
19222
19370
|
ui.plain(JSON.stringify(items, null, 2));
|
|
@@ -19247,7 +19395,293 @@ var AccountCommandHandler = class {
|
|
|
19247
19395
|
}
|
|
19248
19396
|
ui.plain(JSON.stringify(value, null, 2));
|
|
19249
19397
|
}
|
|
19398
|
+
renderResolvedApps(items) {
|
|
19399
|
+
if (items.length === 0) {
|
|
19400
|
+
ui.warn("No visible apps found.");
|
|
19401
|
+
return;
|
|
19402
|
+
}
|
|
19403
|
+
for (const item of items) {
|
|
19404
|
+
ui.plain(item.id);
|
|
19405
|
+
}
|
|
19406
|
+
}
|
|
19407
|
+
resolveVisibleAppsInput(args) {
|
|
19408
|
+
if (args.apps && args.apps.length > 0) {
|
|
19409
|
+
return args.apps;
|
|
19410
|
+
}
|
|
19411
|
+
if (!args.filePath) {
|
|
19412
|
+
throw new Error("Missing visible apps input");
|
|
19413
|
+
}
|
|
19414
|
+
const absolutePath = this.resolveFilePath(args.filePath);
|
|
19415
|
+
if (!(0, import_node_fs20.existsSync)(absolutePath)) {
|
|
19416
|
+
throw new Error(`JSON file not found: ${absolutePath}`);
|
|
19417
|
+
}
|
|
19418
|
+
const raw = (0, import_node_fs20.readFileSync)(absolutePath, "utf8");
|
|
19419
|
+
let parsed;
|
|
19420
|
+
try {
|
|
19421
|
+
parsed = JSON.parse(raw);
|
|
19422
|
+
} catch (error) {
|
|
19423
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
19424
|
+
throw new Error(`Invalid JSON in ${absolutePath}: ${message}`);
|
|
19425
|
+
}
|
|
19426
|
+
if (!Array.isArray(parsed) || parsed.some((item) => typeof item !== "string")) {
|
|
19427
|
+
throw new Error(`Expected ${absolutePath} to contain a JSON string array`);
|
|
19428
|
+
}
|
|
19429
|
+
return parsed;
|
|
19430
|
+
}
|
|
19431
|
+
resolveFilePath(filePath) {
|
|
19432
|
+
return import_node_path25.default.resolve(process.cwd(), filePath);
|
|
19433
|
+
}
|
|
19434
|
+
};
|
|
19435
|
+
function encodePathSegment(value) {
|
|
19436
|
+
return value.split("/").map((segment) => encodeURIComponent(segment)).join("/");
|
|
19437
|
+
}
|
|
19438
|
+
|
|
19439
|
+
// src/commands/OrgCommandHandler.ts
|
|
19440
|
+
var import_node_fs21 = require("fs");
|
|
19441
|
+
var import_node_path26 = __toESM(require("path"));
|
|
19442
|
+
init_sessionStore();
|
|
19443
|
+
var OrgCommandHandler = class {
|
|
19444
|
+
async handle(args) {
|
|
19445
|
+
const token = this.readToken();
|
|
19446
|
+
const baseUrl = this.resolveBaseUrl(args.baseUrl);
|
|
19447
|
+
switch (args.action) {
|
|
19448
|
+
case "list": {
|
|
19449
|
+
const result = await this.request(baseUrl, token, "GET", "/orgs");
|
|
19450
|
+
this.renderJson(result.items, args.json);
|
|
19451
|
+
if (!args.json) {
|
|
19452
|
+
this.renderOrgList(result.items);
|
|
19453
|
+
}
|
|
19454
|
+
return;
|
|
19455
|
+
}
|
|
19456
|
+
case "get":
|
|
19457
|
+
case "view": {
|
|
19458
|
+
const record = await this.request(
|
|
19459
|
+
baseUrl,
|
|
19460
|
+
token,
|
|
19461
|
+
"GET",
|
|
19462
|
+
`/orgs/${encodeURIComponent(args.orgId)}`
|
|
19463
|
+
);
|
|
19464
|
+
this.renderJson(record, true);
|
|
19465
|
+
return;
|
|
19466
|
+
}
|
|
19467
|
+
case "create": {
|
|
19468
|
+
const record = await this.request(baseUrl, token, "POST", "/orgs", {
|
|
19469
|
+
id: args.orgId,
|
|
19470
|
+
displayName: args.displayName,
|
|
19471
|
+
members: args.members
|
|
19472
|
+
});
|
|
19473
|
+
ui.success(`Created org ${record.id}`);
|
|
19474
|
+
this.renderJson(record, args.json);
|
|
19475
|
+
return;
|
|
19476
|
+
}
|
|
19477
|
+
case "update": {
|
|
19478
|
+
const record = await this.request(
|
|
19479
|
+
baseUrl,
|
|
19480
|
+
token,
|
|
19481
|
+
"PATCH",
|
|
19482
|
+
`/orgs/${encodeURIComponent(args.orgId)}`,
|
|
19483
|
+
{
|
|
19484
|
+
...args.displayName !== void 0 ? { displayName: args.displayName } : {}
|
|
19485
|
+
}
|
|
19486
|
+
);
|
|
19487
|
+
ui.success(`Updated org ${record.id}`);
|
|
19488
|
+
this.renderJson(record, args.json);
|
|
19489
|
+
return;
|
|
19490
|
+
}
|
|
19491
|
+
case "disable": {
|
|
19492
|
+
const record = await this.request(
|
|
19493
|
+
baseUrl,
|
|
19494
|
+
token,
|
|
19495
|
+
"DELETE",
|
|
19496
|
+
`/orgs/${encodeURIComponent(args.orgId)}`
|
|
19497
|
+
);
|
|
19498
|
+
ui.success(`Disabled org ${record.id}`);
|
|
19499
|
+
this.renderJson(record, args.json);
|
|
19500
|
+
return;
|
|
19501
|
+
}
|
|
19502
|
+
case "member-list": {
|
|
19503
|
+
const result = await this.request(
|
|
19504
|
+
baseUrl,
|
|
19505
|
+
token,
|
|
19506
|
+
"GET",
|
|
19507
|
+
`/orgs/${encodeURIComponent(args.orgId)}/members`
|
|
19508
|
+
);
|
|
19509
|
+
this.renderStringList(result.items, args.json, "No members found.");
|
|
19510
|
+
return;
|
|
19511
|
+
}
|
|
19512
|
+
case "member-add": {
|
|
19513
|
+
const record = await this.request(
|
|
19514
|
+
baseUrl,
|
|
19515
|
+
token,
|
|
19516
|
+
"PUT",
|
|
19517
|
+
`/orgs/${encodeURIComponent(args.orgId)}/members/${encodeURIComponent(args.account)}`
|
|
19518
|
+
);
|
|
19519
|
+
ui.success(`Added ${args.account} to ${record.id}`);
|
|
19520
|
+
this.renderJson(record, args.json);
|
|
19521
|
+
return;
|
|
19522
|
+
}
|
|
19523
|
+
case "member-remove": {
|
|
19524
|
+
const record = await this.request(
|
|
19525
|
+
baseUrl,
|
|
19526
|
+
token,
|
|
19527
|
+
"DELETE",
|
|
19528
|
+
`/orgs/${encodeURIComponent(args.orgId)}/members/${encodeURIComponent(args.account)}`
|
|
19529
|
+
);
|
|
19530
|
+
ui.success(`Removed ${args.account} from ${record.id}`);
|
|
19531
|
+
this.renderJson(record, args.json);
|
|
19532
|
+
return;
|
|
19533
|
+
}
|
|
19534
|
+
case "member-set": {
|
|
19535
|
+
const accounts = this.resolveStringArrayInput(args.accounts, args.filePath, "account");
|
|
19536
|
+
const record = await this.request(
|
|
19537
|
+
baseUrl,
|
|
19538
|
+
token,
|
|
19539
|
+
"PUT",
|
|
19540
|
+
`/orgs/${encodeURIComponent(args.orgId)}/members`,
|
|
19541
|
+
accounts
|
|
19542
|
+
);
|
|
19543
|
+
ui.success(`Updated members for ${record.id}`);
|
|
19544
|
+
this.renderJson(record, args.json);
|
|
19545
|
+
return;
|
|
19546
|
+
}
|
|
19547
|
+
case "visible-app-list": {
|
|
19548
|
+
const result = await this.request(
|
|
19549
|
+
baseUrl,
|
|
19550
|
+
token,
|
|
19551
|
+
"GET",
|
|
19552
|
+
`/orgs/${encodeURIComponent(args.orgId)}/visible-apps`
|
|
19553
|
+
);
|
|
19554
|
+
this.renderStringList(result.items, args.json, "No visible apps found.");
|
|
19555
|
+
return;
|
|
19556
|
+
}
|
|
19557
|
+
case "visible-app-add": {
|
|
19558
|
+
const record = await this.request(
|
|
19559
|
+
baseUrl,
|
|
19560
|
+
token,
|
|
19561
|
+
"PUT",
|
|
19562
|
+
`/orgs/${encodeURIComponent(args.orgId)}/visible-apps/${encodePathSegment2(args.app)}`
|
|
19563
|
+
);
|
|
19564
|
+
ui.success(`Added visible app ${record.appId} to ${args.orgId}`);
|
|
19565
|
+
this.renderJson(record, args.json);
|
|
19566
|
+
return;
|
|
19567
|
+
}
|
|
19568
|
+
case "visible-app-remove": {
|
|
19569
|
+
const result = await this.request(
|
|
19570
|
+
baseUrl,
|
|
19571
|
+
token,
|
|
19572
|
+
"DELETE",
|
|
19573
|
+
`/orgs/${encodeURIComponent(args.orgId)}/visible-apps/${encodePathSegment2(args.app)}`
|
|
19574
|
+
);
|
|
19575
|
+
ui.success(
|
|
19576
|
+
result.removed ? `Removed visible app ${result.appId} from ${result.ownerId}` : `Visible app ${result.appId} was already absent from ${result.ownerId}`
|
|
19577
|
+
);
|
|
19578
|
+
this.renderJson(result, args.json);
|
|
19579
|
+
return;
|
|
19580
|
+
}
|
|
19581
|
+
case "visible-app-set": {
|
|
19582
|
+
const apps = this.resolveStringArrayInput(args.apps, args.filePath, "app ref");
|
|
19583
|
+
const result = await this.request(
|
|
19584
|
+
baseUrl,
|
|
19585
|
+
token,
|
|
19586
|
+
"PUT",
|
|
19587
|
+
`/orgs/${encodeURIComponent(args.orgId)}/visible-apps`,
|
|
19588
|
+
apps
|
|
19589
|
+
);
|
|
19590
|
+
ui.success(`Updated visible apps for ${args.orgId}`);
|
|
19591
|
+
this.renderJson(result.items, args.json);
|
|
19592
|
+
return;
|
|
19593
|
+
}
|
|
19594
|
+
}
|
|
19595
|
+
}
|
|
19596
|
+
resolveBaseUrl(baseUrl) {
|
|
19597
|
+
return (baseUrl || process.env.PMATE_APPS_API_BASE_URL || "https://apps-api.pmate.chat").replace(/\/+$/, "");
|
|
19598
|
+
}
|
|
19599
|
+
readToken() {
|
|
19600
|
+
return readRequiredSession({
|
|
19601
|
+
preferredApp: DEFAULT_APP_ID,
|
|
19602
|
+
fallbackToActiveApp: true
|
|
19603
|
+
}).token;
|
|
19604
|
+
}
|
|
19605
|
+
resolveStringArrayInput(values, filePath, itemLabel) {
|
|
19606
|
+
if (values && values.length > 0) {
|
|
19607
|
+
return values;
|
|
19608
|
+
}
|
|
19609
|
+
if (!filePath) {
|
|
19610
|
+
throw new Error(`Missing ${itemLabel} input`);
|
|
19611
|
+
}
|
|
19612
|
+
const absolutePath = import_node_path26.default.resolve(process.cwd(), filePath);
|
|
19613
|
+
if (!(0, import_node_fs21.existsSync)(absolutePath)) {
|
|
19614
|
+
throw new Error(`JSON file not found: ${absolutePath}`);
|
|
19615
|
+
}
|
|
19616
|
+
const raw = (0, import_node_fs21.readFileSync)(absolutePath, "utf8");
|
|
19617
|
+
let parsed;
|
|
19618
|
+
try {
|
|
19619
|
+
parsed = JSON.parse(raw);
|
|
19620
|
+
} catch (error) {
|
|
19621
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
19622
|
+
throw new Error(`Invalid JSON in ${absolutePath}: ${message}`);
|
|
19623
|
+
}
|
|
19624
|
+
if (!Array.isArray(parsed) || parsed.some((item) => typeof item !== "string")) {
|
|
19625
|
+
throw new Error(`Expected ${absolutePath} to contain a JSON string array`);
|
|
19626
|
+
}
|
|
19627
|
+
return parsed;
|
|
19628
|
+
}
|
|
19629
|
+
async request(baseUrl, token, method, pathname, body) {
|
|
19630
|
+
const response = await fetch(`${baseUrl}${pathname}`, {
|
|
19631
|
+
method,
|
|
19632
|
+
headers: {
|
|
19633
|
+
Authorization: `Bearer ${token}`,
|
|
19634
|
+
"Content-Type": "application/json"
|
|
19635
|
+
},
|
|
19636
|
+
...body !== void 0 ? { body: JSON.stringify(body) } : {}
|
|
19637
|
+
});
|
|
19638
|
+
let payload = null;
|
|
19639
|
+
try {
|
|
19640
|
+
payload = await response.json();
|
|
19641
|
+
} catch {
|
|
19642
|
+
payload = null;
|
|
19643
|
+
}
|
|
19644
|
+
if (!response.ok || !payload?.success) {
|
|
19645
|
+
throw new Error(payload?.message || `Request failed with status ${response.status}`);
|
|
19646
|
+
}
|
|
19647
|
+
return payload.data;
|
|
19648
|
+
}
|
|
19649
|
+
renderOrgList(items) {
|
|
19650
|
+
if (items.length === 0) {
|
|
19651
|
+
ui.warn("No orgs found.");
|
|
19652
|
+
return;
|
|
19653
|
+
}
|
|
19654
|
+
for (const item of items) {
|
|
19655
|
+
ui.info(item.id, {
|
|
19656
|
+
displayName: item.displayName,
|
|
19657
|
+
status: item.status,
|
|
19658
|
+
members: item.members
|
|
19659
|
+
});
|
|
19660
|
+
}
|
|
19661
|
+
}
|
|
19662
|
+
renderStringList(items, asJson, emptyMessage) {
|
|
19663
|
+
if (asJson) {
|
|
19664
|
+
ui.plain(JSON.stringify(items, null, 2));
|
|
19665
|
+
return;
|
|
19666
|
+
}
|
|
19667
|
+
if (items.length === 0) {
|
|
19668
|
+
ui.warn(emptyMessage);
|
|
19669
|
+
return;
|
|
19670
|
+
}
|
|
19671
|
+
for (const item of items) {
|
|
19672
|
+
ui.plain(item);
|
|
19673
|
+
}
|
|
19674
|
+
}
|
|
19675
|
+
renderJson(value, asJson) {
|
|
19676
|
+
if (!asJson) {
|
|
19677
|
+
return;
|
|
19678
|
+
}
|
|
19679
|
+
ui.plain(JSON.stringify(value, null, 2));
|
|
19680
|
+
}
|
|
19250
19681
|
};
|
|
19682
|
+
function encodePathSegment2(value) {
|
|
19683
|
+
return value.split("/").map((segment) => encodeURIComponent(segment)).join("/");
|
|
19684
|
+
}
|
|
19251
19685
|
|
|
19252
19686
|
// src/agentCommandParser.ts
|
|
19253
19687
|
init_namespacedRef();
|
|
@@ -21020,6 +21454,7 @@ function requireValue7(tokens, optionName) {
|
|
|
21020
21454
|
}
|
|
21021
21455
|
|
|
21022
21456
|
// src/accountCommandParser.ts
|
|
21457
|
+
init_namespacedRef();
|
|
21023
21458
|
function parseAccountArgs(tokens) {
|
|
21024
21459
|
const rest = [...tokens];
|
|
21025
21460
|
const action = rest.shift();
|
|
@@ -21077,6 +21512,102 @@ function parseAccountArgs(tokens) {
|
|
|
21077
21512
|
json: json2
|
|
21078
21513
|
};
|
|
21079
21514
|
}
|
|
21515
|
+
if (action === "visible-app") {
|
|
21516
|
+
const visibleAction = rest.shift();
|
|
21517
|
+
if (!visibleAction) {
|
|
21518
|
+
throw new Error("Missing account visible-app action. Use: account visible-app list|add|remove|set|resolve");
|
|
21519
|
+
}
|
|
21520
|
+
let account2;
|
|
21521
|
+
let app;
|
|
21522
|
+
const apps = [];
|
|
21523
|
+
let filePath;
|
|
21524
|
+
let baseUrl2;
|
|
21525
|
+
let json2 = false;
|
|
21526
|
+
while (rest.length > 0) {
|
|
21527
|
+
const token = rest.shift();
|
|
21528
|
+
switch (token) {
|
|
21529
|
+
case "--account":
|
|
21530
|
+
account2 = requireValue8(rest, token);
|
|
21531
|
+
break;
|
|
21532
|
+
case "--app":
|
|
21533
|
+
app = parseNamespacedRef(requireValue8(rest, token), {
|
|
21534
|
+
entityLabel: "app ref"
|
|
21535
|
+
}).fullId;
|
|
21536
|
+
apps.push(app);
|
|
21537
|
+
break;
|
|
21538
|
+
case "--file":
|
|
21539
|
+
filePath = requireValue8(rest, token);
|
|
21540
|
+
break;
|
|
21541
|
+
case "--base-url":
|
|
21542
|
+
baseUrl2 = requireValue8(rest, token);
|
|
21543
|
+
break;
|
|
21544
|
+
case "--json":
|
|
21545
|
+
json2 = true;
|
|
21546
|
+
break;
|
|
21547
|
+
default:
|
|
21548
|
+
throw new Error(`Unknown account visible-app option: ${token}`);
|
|
21549
|
+
}
|
|
21550
|
+
}
|
|
21551
|
+
if (visibleAction === "resolve") {
|
|
21552
|
+
if (account2 || app || apps.length > 0 || filePath) {
|
|
21553
|
+
throw new Error(
|
|
21554
|
+
"Usage: account visible-app resolve [--base-url <url>] [--json]"
|
|
21555
|
+
);
|
|
21556
|
+
}
|
|
21557
|
+
return {
|
|
21558
|
+
type: "account" /* Account */,
|
|
21559
|
+
action: "visible-app-resolve",
|
|
21560
|
+
baseUrl: baseUrl2,
|
|
21561
|
+
json: json2
|
|
21562
|
+
};
|
|
21563
|
+
}
|
|
21564
|
+
if (visibleAction === "list") {
|
|
21565
|
+
if (!account2) {
|
|
21566
|
+
throw new Error(
|
|
21567
|
+
"Usage: account visible-app list --account <id> [--base-url <url>] [--json]"
|
|
21568
|
+
);
|
|
21569
|
+
}
|
|
21570
|
+
return {
|
|
21571
|
+
type: "account" /* Account */,
|
|
21572
|
+
action: "visible-app-list",
|
|
21573
|
+
account: account2,
|
|
21574
|
+
baseUrl: baseUrl2,
|
|
21575
|
+
json: json2
|
|
21576
|
+
};
|
|
21577
|
+
}
|
|
21578
|
+
if (visibleAction === "add" || visibleAction === "remove") {
|
|
21579
|
+
if (!account2 || !app) {
|
|
21580
|
+
throw new Error(
|
|
21581
|
+
`Usage: account visible-app ${visibleAction} --account <id> --app <ns:app> [--base-url <url>] [--json]`
|
|
21582
|
+
);
|
|
21583
|
+
}
|
|
21584
|
+
return {
|
|
21585
|
+
type: "account" /* Account */,
|
|
21586
|
+
action: visibleAction === "add" ? "visible-app-add" : "visible-app-remove",
|
|
21587
|
+
account: account2,
|
|
21588
|
+
app,
|
|
21589
|
+
baseUrl: baseUrl2,
|
|
21590
|
+
json: json2
|
|
21591
|
+
};
|
|
21592
|
+
}
|
|
21593
|
+
if (visibleAction === "set") {
|
|
21594
|
+
if (!account2 || apps.length === 0 && !filePath || apps.length > 0 && filePath) {
|
|
21595
|
+
throw new Error(
|
|
21596
|
+
"Usage: account visible-app set --account <id> (--app <ns:app> ... | --file <path>) [--base-url <url>] [--json]"
|
|
21597
|
+
);
|
|
21598
|
+
}
|
|
21599
|
+
return {
|
|
21600
|
+
type: "account" /* Account */,
|
|
21601
|
+
action: "visible-app-set",
|
|
21602
|
+
account: account2,
|
|
21603
|
+
apps: apps.length > 0 ? apps : void 0,
|
|
21604
|
+
filePath,
|
|
21605
|
+
baseUrl: baseUrl2,
|
|
21606
|
+
json: json2
|
|
21607
|
+
};
|
|
21608
|
+
}
|
|
21609
|
+
throw new Error(`Unknown account visible-app action: ${visibleAction}`);
|
|
21610
|
+
}
|
|
21080
21611
|
if (action !== "role") {
|
|
21081
21612
|
throw new Error(`Unknown account action: ${action}`);
|
|
21082
21613
|
}
|
|
@@ -21152,6 +21683,283 @@ function requireValue8(tokens, optionName) {
|
|
|
21152
21683
|
return value;
|
|
21153
21684
|
}
|
|
21154
21685
|
|
|
21686
|
+
// src/orgCommandParser.ts
|
|
21687
|
+
init_namespacedRef();
|
|
21688
|
+
function parseOrgArgs(tokens) {
|
|
21689
|
+
const rest = [...tokens];
|
|
21690
|
+
const rawAction = rest.shift();
|
|
21691
|
+
const action = rawAction === "view" ? "view" : rawAction;
|
|
21692
|
+
if (!action) {
|
|
21693
|
+
throw new Error(
|
|
21694
|
+
"Missing org action. Use: org list|get|view|create|update|disable|member|visible-app"
|
|
21695
|
+
);
|
|
21696
|
+
}
|
|
21697
|
+
let baseUrl;
|
|
21698
|
+
let json = false;
|
|
21699
|
+
const takeSharedOptions4 = () => {
|
|
21700
|
+
while (rest.length > 0) {
|
|
21701
|
+
const token = rest[0];
|
|
21702
|
+
if (token === "--base-url") {
|
|
21703
|
+
rest.shift();
|
|
21704
|
+
baseUrl = requireValue9(rest, token);
|
|
21705
|
+
continue;
|
|
21706
|
+
}
|
|
21707
|
+
if (token === "--json") {
|
|
21708
|
+
rest.shift();
|
|
21709
|
+
json = true;
|
|
21710
|
+
continue;
|
|
21711
|
+
}
|
|
21712
|
+
break;
|
|
21713
|
+
}
|
|
21714
|
+
};
|
|
21715
|
+
if (action === "list") {
|
|
21716
|
+
takeSharedOptions4();
|
|
21717
|
+
if (rest.length > 0) {
|
|
21718
|
+
throw new Error(`Unknown org list option: ${rest[0]}`);
|
|
21719
|
+
}
|
|
21720
|
+
return { type: "org" /* Org */, action, baseUrl, json };
|
|
21721
|
+
}
|
|
21722
|
+
if (action === "get" || action === "view" || action === "disable") {
|
|
21723
|
+
const orgId = parseRequiredOrgRef(rest.shift(), action);
|
|
21724
|
+
takeSharedOptions4();
|
|
21725
|
+
if (rest.length > 0) {
|
|
21726
|
+
throw new Error(`Unknown org ${action} option: ${rest[0]}`);
|
|
21727
|
+
}
|
|
21728
|
+
return { type: "org" /* Org */, action, orgId, baseUrl, json };
|
|
21729
|
+
}
|
|
21730
|
+
if (action === "create") {
|
|
21731
|
+
const orgId = parseRequiredOrgRef(rest.shift(), action);
|
|
21732
|
+
let displayName;
|
|
21733
|
+
const members = [];
|
|
21734
|
+
while (rest.length > 0) {
|
|
21735
|
+
const token = rest.shift();
|
|
21736
|
+
switch (token) {
|
|
21737
|
+
case "--display-name":
|
|
21738
|
+
displayName = requireValue9(rest, token);
|
|
21739
|
+
break;
|
|
21740
|
+
case "--member":
|
|
21741
|
+
members.push(requireValue9(rest, token));
|
|
21742
|
+
break;
|
|
21743
|
+
case "--base-url":
|
|
21744
|
+
baseUrl = requireValue9(rest, token);
|
|
21745
|
+
break;
|
|
21746
|
+
case "--json":
|
|
21747
|
+
json = true;
|
|
21748
|
+
break;
|
|
21749
|
+
default:
|
|
21750
|
+
throw new Error(`Unknown org create option: ${token}`);
|
|
21751
|
+
}
|
|
21752
|
+
}
|
|
21753
|
+
if (!displayName) {
|
|
21754
|
+
throw new Error(
|
|
21755
|
+
"Usage: org create <ns:org> --display-name <name> [--member <id> ...] [--base-url <url>] [--json]"
|
|
21756
|
+
);
|
|
21757
|
+
}
|
|
21758
|
+
return {
|
|
21759
|
+
type: "org" /* Org */,
|
|
21760
|
+
action,
|
|
21761
|
+
orgId,
|
|
21762
|
+
displayName,
|
|
21763
|
+
members,
|
|
21764
|
+
baseUrl,
|
|
21765
|
+
json
|
|
21766
|
+
};
|
|
21767
|
+
}
|
|
21768
|
+
if (action === "update") {
|
|
21769
|
+
const orgId = parseRequiredOrgRef(rest.shift(), action);
|
|
21770
|
+
let displayName;
|
|
21771
|
+
while (rest.length > 0) {
|
|
21772
|
+
const token = rest.shift();
|
|
21773
|
+
switch (token) {
|
|
21774
|
+
case "--display-name":
|
|
21775
|
+
displayName = requireValue9(rest, token);
|
|
21776
|
+
break;
|
|
21777
|
+
case "--base-url":
|
|
21778
|
+
baseUrl = requireValue9(rest, token);
|
|
21779
|
+
break;
|
|
21780
|
+
case "--json":
|
|
21781
|
+
json = true;
|
|
21782
|
+
break;
|
|
21783
|
+
default:
|
|
21784
|
+
throw new Error(`Unknown org update option: ${token}`);
|
|
21785
|
+
}
|
|
21786
|
+
}
|
|
21787
|
+
if (displayName === void 0) {
|
|
21788
|
+
throw new Error(
|
|
21789
|
+
"Usage: org update <ns:org> --display-name <name> [--base-url <url>] [--json]"
|
|
21790
|
+
);
|
|
21791
|
+
}
|
|
21792
|
+
return {
|
|
21793
|
+
type: "org" /* Org */,
|
|
21794
|
+
action,
|
|
21795
|
+
orgId,
|
|
21796
|
+
displayName,
|
|
21797
|
+
baseUrl,
|
|
21798
|
+
json
|
|
21799
|
+
};
|
|
21800
|
+
}
|
|
21801
|
+
if (action === "member") {
|
|
21802
|
+
return parseOrgMemberArgs(rest);
|
|
21803
|
+
}
|
|
21804
|
+
if (action === "visible-app") {
|
|
21805
|
+
return parseOrgVisibleAppArgs(rest);
|
|
21806
|
+
}
|
|
21807
|
+
throw new Error(`Unknown org action: ${action}`);
|
|
21808
|
+
function parseOrgMemberArgs(memberTokens) {
|
|
21809
|
+
const subAction = memberTokens.shift();
|
|
21810
|
+
if (!subAction) {
|
|
21811
|
+
throw new Error("Missing org member action. Use: org member list|add|remove|set");
|
|
21812
|
+
}
|
|
21813
|
+
const orgId = parseRequiredOrgRef(memberTokens.shift(), `member ${subAction}`);
|
|
21814
|
+
let account;
|
|
21815
|
+
const accounts = [];
|
|
21816
|
+
let filePath;
|
|
21817
|
+
while (memberTokens.length > 0) {
|
|
21818
|
+
const token = memberTokens.shift();
|
|
21819
|
+
switch (token) {
|
|
21820
|
+
case "--account": {
|
|
21821
|
+
const value = requireValue9(memberTokens, token);
|
|
21822
|
+
account = value;
|
|
21823
|
+
accounts.push(value);
|
|
21824
|
+
break;
|
|
21825
|
+
}
|
|
21826
|
+
case "--file":
|
|
21827
|
+
filePath = requireValue9(memberTokens, token);
|
|
21828
|
+
break;
|
|
21829
|
+
case "--base-url":
|
|
21830
|
+
baseUrl = requireValue9(memberTokens, token);
|
|
21831
|
+
break;
|
|
21832
|
+
case "--json":
|
|
21833
|
+
json = true;
|
|
21834
|
+
break;
|
|
21835
|
+
default:
|
|
21836
|
+
throw new Error(`Unknown org member option: ${token}`);
|
|
21837
|
+
}
|
|
21838
|
+
}
|
|
21839
|
+
if (subAction === "list") {
|
|
21840
|
+
return { type: "org" /* Org */, action: "member-list", orgId, baseUrl, json };
|
|
21841
|
+
}
|
|
21842
|
+
if (subAction === "add" || subAction === "remove") {
|
|
21843
|
+
if (!account) {
|
|
21844
|
+
throw new Error(
|
|
21845
|
+
`Usage: org member ${subAction} <ns:org> --account <id> [--base-url <url>] [--json]`
|
|
21846
|
+
);
|
|
21847
|
+
}
|
|
21848
|
+
return {
|
|
21849
|
+
type: "org" /* Org */,
|
|
21850
|
+
action: subAction === "add" ? "member-add" : "member-remove",
|
|
21851
|
+
orgId,
|
|
21852
|
+
account,
|
|
21853
|
+
baseUrl,
|
|
21854
|
+
json
|
|
21855
|
+
};
|
|
21856
|
+
}
|
|
21857
|
+
if (subAction === "set") {
|
|
21858
|
+
if (accounts.length === 0 && !filePath || accounts.length > 0 && filePath) {
|
|
21859
|
+
throw new Error(
|
|
21860
|
+
"Usage: org member set <ns:org> (--account <id> ... | --file <path>) [--base-url <url>] [--json]"
|
|
21861
|
+
);
|
|
21862
|
+
}
|
|
21863
|
+
return {
|
|
21864
|
+
type: "org" /* Org */,
|
|
21865
|
+
action: "member-set",
|
|
21866
|
+
orgId,
|
|
21867
|
+
accounts: accounts.length > 0 ? accounts : void 0,
|
|
21868
|
+
filePath,
|
|
21869
|
+
baseUrl,
|
|
21870
|
+
json
|
|
21871
|
+
};
|
|
21872
|
+
}
|
|
21873
|
+
throw new Error(`Unknown org member action: ${subAction}`);
|
|
21874
|
+
}
|
|
21875
|
+
function parseOrgVisibleAppArgs(visibleTokens) {
|
|
21876
|
+
const subAction = visibleTokens.shift();
|
|
21877
|
+
if (!subAction) {
|
|
21878
|
+
throw new Error(
|
|
21879
|
+
"Missing org visible-app action. Use: org visible-app list|add|remove|set"
|
|
21880
|
+
);
|
|
21881
|
+
}
|
|
21882
|
+
const orgId = parseRequiredOrgRef(visibleTokens.shift(), `visible-app ${subAction}`);
|
|
21883
|
+
let app;
|
|
21884
|
+
const apps = [];
|
|
21885
|
+
let filePath;
|
|
21886
|
+
while (visibleTokens.length > 0) {
|
|
21887
|
+
const token = visibleTokens.shift();
|
|
21888
|
+
switch (token) {
|
|
21889
|
+
case "--app": {
|
|
21890
|
+
const value = parseNamespacedRef(requireValue9(visibleTokens, token), {
|
|
21891
|
+
entityLabel: "app ref"
|
|
21892
|
+
}).fullId;
|
|
21893
|
+
app = value;
|
|
21894
|
+
apps.push(value);
|
|
21895
|
+
break;
|
|
21896
|
+
}
|
|
21897
|
+
case "--file":
|
|
21898
|
+
filePath = requireValue9(visibleTokens, token);
|
|
21899
|
+
break;
|
|
21900
|
+
case "--base-url":
|
|
21901
|
+
baseUrl = requireValue9(visibleTokens, token);
|
|
21902
|
+
break;
|
|
21903
|
+
case "--json":
|
|
21904
|
+
json = true;
|
|
21905
|
+
break;
|
|
21906
|
+
default:
|
|
21907
|
+
throw new Error(`Unknown org visible-app option: ${token}`);
|
|
21908
|
+
}
|
|
21909
|
+
}
|
|
21910
|
+
if (subAction === "list") {
|
|
21911
|
+
return { type: "org" /* Org */, action: "visible-app-list", orgId, baseUrl, json };
|
|
21912
|
+
}
|
|
21913
|
+
if (subAction === "add" || subAction === "remove") {
|
|
21914
|
+
if (!app) {
|
|
21915
|
+
throw new Error(
|
|
21916
|
+
`Usage: org visible-app ${subAction} <ns:org> --app <ns:app> [--base-url <url>] [--json]`
|
|
21917
|
+
);
|
|
21918
|
+
}
|
|
21919
|
+
return {
|
|
21920
|
+
type: "org" /* Org */,
|
|
21921
|
+
action: subAction === "add" ? "visible-app-add" : "visible-app-remove",
|
|
21922
|
+
orgId,
|
|
21923
|
+
app,
|
|
21924
|
+
baseUrl,
|
|
21925
|
+
json
|
|
21926
|
+
};
|
|
21927
|
+
}
|
|
21928
|
+
if (subAction === "set") {
|
|
21929
|
+
if (apps.length === 0 && !filePath || apps.length > 0 && filePath) {
|
|
21930
|
+
throw new Error(
|
|
21931
|
+
"Usage: org visible-app set <ns:org> (--app <ns:app> ... | --file <path>) [--base-url <url>] [--json]"
|
|
21932
|
+
);
|
|
21933
|
+
}
|
|
21934
|
+
return {
|
|
21935
|
+
type: "org" /* Org */,
|
|
21936
|
+
action: "visible-app-set",
|
|
21937
|
+
orgId,
|
|
21938
|
+
apps: apps.length > 0 ? apps : void 0,
|
|
21939
|
+
filePath,
|
|
21940
|
+
baseUrl,
|
|
21941
|
+
json
|
|
21942
|
+
};
|
|
21943
|
+
}
|
|
21944
|
+
throw new Error(`Unknown org visible-app action: ${subAction}`);
|
|
21945
|
+
}
|
|
21946
|
+
}
|
|
21947
|
+
function parseRequiredOrgRef(value, action) {
|
|
21948
|
+
if (!value || value.startsWith("-")) {
|
|
21949
|
+
throw new Error(`Usage: org ${action} <ns:org>`);
|
|
21950
|
+
}
|
|
21951
|
+
return parseNamespacedRef(value, {
|
|
21952
|
+
entityLabel: "org ref"
|
|
21953
|
+
}).fullId;
|
|
21954
|
+
}
|
|
21955
|
+
function requireValue9(tokens, optionName) {
|
|
21956
|
+
const value = tokens.shift();
|
|
21957
|
+
if (!value || value.startsWith("-")) {
|
|
21958
|
+
throw new Error(`Missing value for ${optionName}`);
|
|
21959
|
+
}
|
|
21960
|
+
return value;
|
|
21961
|
+
}
|
|
21962
|
+
|
|
21155
21963
|
// src/collectCommandParser.ts
|
|
21156
21964
|
function parseCollectArgs(tokens) {
|
|
21157
21965
|
const rest = [...tokens];
|
|
@@ -21170,7 +21978,7 @@ function parseCollectArgs(tokens) {
|
|
|
21170
21978
|
const token = rest.shift();
|
|
21171
21979
|
switch (token) {
|
|
21172
21980
|
case "--source": {
|
|
21173
|
-
const value =
|
|
21981
|
+
const value = requireValue10(rest, token);
|
|
21174
21982
|
if (value !== "cc" && value !== "yelling") {
|
|
21175
21983
|
throw new Error(`Unsupported collect source: ${value}`);
|
|
21176
21984
|
}
|
|
@@ -21178,7 +21986,7 @@ function parseCollectArgs(tokens) {
|
|
|
21178
21986
|
break;
|
|
21179
21987
|
}
|
|
21180
21988
|
case "--endpoint":
|
|
21181
|
-
options.endpoint =
|
|
21989
|
+
options.endpoint = requireValue10(rest, token);
|
|
21182
21990
|
break;
|
|
21183
21991
|
default:
|
|
21184
21992
|
throw new Error(`Unknown collect option: ${token}`);
|
|
@@ -21194,7 +22002,7 @@ function parseCollectArgs(tokens) {
|
|
|
21194
22002
|
}
|
|
21195
22003
|
return { type: "collect" /* Collect */, ...options };
|
|
21196
22004
|
}
|
|
21197
|
-
function
|
|
22005
|
+
function requireValue10(tokens, optionName) {
|
|
21198
22006
|
const value = tokens.shift();
|
|
21199
22007
|
if (!value) {
|
|
21200
22008
|
throw new Error(`Missing value for ${optionName}`);
|
|
@@ -21229,7 +22037,7 @@ function parsePrepareDevArgs(tokens) {
|
|
|
21229
22037
|
close = true;
|
|
21230
22038
|
break;
|
|
21231
22039
|
case "--env": {
|
|
21232
|
-
const rawValue =
|
|
22040
|
+
const rawValue = requireValue11(rest, token);
|
|
21233
22041
|
const parsed = Number.parseInt(rawValue, 10);
|
|
21234
22042
|
if (!Number.isInteger(parsed) || parsed < 0) {
|
|
21235
22043
|
throw new Error(`Invalid --env value: ${rawValue}`);
|
|
@@ -21238,13 +22046,13 @@ function parsePrepareDevArgs(tokens) {
|
|
|
21238
22046
|
break;
|
|
21239
22047
|
}
|
|
21240
22048
|
case "--env-root":
|
|
21241
|
-
envRoot =
|
|
22049
|
+
envRoot = requireValue11(rest, token);
|
|
21242
22050
|
break;
|
|
21243
22051
|
case "--base-root":
|
|
21244
|
-
baseRoot =
|
|
22052
|
+
baseRoot = requireValue11(rest, token);
|
|
21245
22053
|
break;
|
|
21246
22054
|
case "--note":
|
|
21247
|
-
note =
|
|
22055
|
+
note = requireValue11(rest, token);
|
|
21248
22056
|
break;
|
|
21249
22057
|
case "--json":
|
|
21250
22058
|
json = true;
|
|
@@ -21280,7 +22088,7 @@ function parsePrepareDevArgs(tokens) {
|
|
|
21280
22088
|
json
|
|
21281
22089
|
};
|
|
21282
22090
|
}
|
|
21283
|
-
function
|
|
22091
|
+
function requireValue11(tokens, option) {
|
|
21284
22092
|
const value = tokens.shift();
|
|
21285
22093
|
if (!value || value.startsWith("-")) {
|
|
21286
22094
|
throw new Error(`Missing value for ${option}`);
|
|
@@ -21290,7 +22098,7 @@ function requireValue10(tokens, option) {
|
|
|
21290
22098
|
|
|
21291
22099
|
// src/index.ts
|
|
21292
22100
|
var pkg = JSON.parse(
|
|
21293
|
-
(0,
|
|
22101
|
+
(0, import_node_fs22.readFileSync)(import_node_path27.default.resolve(__dirname, "..", "package.json"), "utf8")
|
|
21294
22102
|
);
|
|
21295
22103
|
var HELP_TEXT = [
|
|
21296
22104
|
import_chalk4.default.bold(`pmate v${pkg.version}`),
|
|
@@ -21406,7 +22214,27 @@ var HELP_TEXT = [
|
|
|
21406
22214
|
` ${import_chalk4.default.gray(" role list --account <id> [--namespace <ns>] [--base-url <url>] [--json]")}`,
|
|
21407
22215
|
` ${import_chalk4.default.gray(" role add --account <id> --namespace <ns> --role <role> [--base-url <url>] [--json]")}`,
|
|
21408
22216
|
` ${import_chalk4.default.gray(" role remove --account <id> --namespace <ns> --role <role> [--base-url <url>] [--json]")}`,
|
|
22217
|
+
` ${import_chalk4.default.gray(" visible-app list --account <id> [--base-url <url>] [--json]")}`,
|
|
22218
|
+
` ${import_chalk4.default.gray(" visible-app add --account <id> --app <ns:app> [--base-url <url>] [--json]")}`,
|
|
22219
|
+
` ${import_chalk4.default.gray(" visible-app remove --account <id> --app <ns:app> [--base-url <url>] [--json]")}`,
|
|
22220
|
+
` ${import_chalk4.default.gray(" visible-app set --account <id> (--app <ns:app> ... | --file <path>) [--base-url <url>] [--json]")}`,
|
|
22221
|
+
` ${import_chalk4.default.gray(" visible-app resolve [--base-url <url>] [--json]")}`,
|
|
21409
22222
|
` ${import_chalk4.default.gray(" default base URL: https://auth-api-v2.pmate.chat")}`,
|
|
22223
|
+
` ${import_chalk4.default.cyan("org")} Manage orgs, org members, and org visible apps via apps-api`,
|
|
22224
|
+
` ${import_chalk4.default.gray(" list [--base-url <url>] [--json]")}`,
|
|
22225
|
+
` ${import_chalk4.default.gray(" get <ns:org> [--base-url <url>] [--json]")}`,
|
|
22226
|
+
` ${import_chalk4.default.gray(" create <ns:org> --display-name <name> [--member <id> ...] [--base-url <url>] [--json]")}`,
|
|
22227
|
+
` ${import_chalk4.default.gray(" update <ns:org> --display-name <name> [--base-url <url>] [--json]")}`,
|
|
22228
|
+
` ${import_chalk4.default.gray(" disable <ns:org> [--base-url <url>] [--json]")}`,
|
|
22229
|
+
` ${import_chalk4.default.gray(" member list <ns:org> [--base-url <url>] [--json]")}`,
|
|
22230
|
+
` ${import_chalk4.default.gray(" member add <ns:org> --account <id> [--base-url <url>] [--json]")}`,
|
|
22231
|
+
` ${import_chalk4.default.gray(" member remove <ns:org> --account <id> [--base-url <url>] [--json]")}`,
|
|
22232
|
+
` ${import_chalk4.default.gray(" member set <ns:org> (--account <id> ... | --file <path>) [--base-url <url>] [--json]")}`,
|
|
22233
|
+
` ${import_chalk4.default.gray(" visible-app list <ns:org> [--base-url <url>] [--json]")}`,
|
|
22234
|
+
` ${import_chalk4.default.gray(" visible-app add <ns:org> --app <ns:app> [--base-url <url>] [--json]")}`,
|
|
22235
|
+
` ${import_chalk4.default.gray(" visible-app remove <ns:org> --app <ns:app> [--base-url <url>] [--json]")}`,
|
|
22236
|
+
` ${import_chalk4.default.gray(" visible-app set <ns:org> (--app <ns:app> ... | --file <path>) [--base-url <url>] [--json]")}`,
|
|
22237
|
+
` ${import_chalk4.default.gray(" default base URL: https://apps-api.pmate.chat")}`,
|
|
21410
22238
|
` ${import_chalk4.default.cyan("store")} Manage @pmate/store namespaces, tables, and kv stores`,
|
|
21411
22239
|
` ${import_chalk4.default.gray(" namespace list [--chain <chain>] [--indexer-base-url <url>] [--json]")}`,
|
|
21412
22240
|
` ${import_chalk4.default.gray(" table list|get|exists|create|update|delete <name> [options]")}`,
|
|
@@ -21498,7 +22326,7 @@ function parseCommandArgs(args) {
|
|
|
21498
22326
|
const token = rest.shift();
|
|
21499
22327
|
switch (token) {
|
|
21500
22328
|
case "--app":
|
|
21501
|
-
app =
|
|
22329
|
+
app = requireValue12(rest, token);
|
|
21502
22330
|
break;
|
|
21503
22331
|
default:
|
|
21504
22332
|
throw new Error(`Unknown login option: ${token}`);
|
|
@@ -21575,6 +22403,9 @@ function parseCommandArgs(args) {
|
|
|
21575
22403
|
if (args.rest[0] === "account") {
|
|
21576
22404
|
return parseAccountArgs(args.rest.slice(1));
|
|
21577
22405
|
}
|
|
22406
|
+
if (args.rest[0] === "org") {
|
|
22407
|
+
return parseOrgArgs(args.rest.slice(1));
|
|
22408
|
+
}
|
|
21578
22409
|
if (args.rest[0] === "store") {
|
|
21579
22410
|
return parseStoreArgs(args.rest.slice(1));
|
|
21580
22411
|
}
|
|
@@ -21601,7 +22432,7 @@ function parseVercelArgs(tokens) {
|
|
|
21601
22432
|
const token = rest.shift();
|
|
21602
22433
|
switch (token) {
|
|
21603
22434
|
case "--scope":
|
|
21604
|
-
scope =
|
|
22435
|
+
scope = requireValue12(rest, token);
|
|
21605
22436
|
break;
|
|
21606
22437
|
default:
|
|
21607
22438
|
throw new Error(`Unknown vercel option: ${token}`);
|
|
@@ -21621,10 +22452,10 @@ function parseVercelArgs(tokens) {
|
|
|
21621
22452
|
const token = rest.shift();
|
|
21622
22453
|
switch (token) {
|
|
21623
22454
|
case "--scope":
|
|
21624
|
-
scope =
|
|
22455
|
+
scope = requireValue12(rest, token);
|
|
21625
22456
|
break;
|
|
21626
22457
|
case "--project":
|
|
21627
|
-
project =
|
|
22458
|
+
project = requireValue12(rest, token);
|
|
21628
22459
|
break;
|
|
21629
22460
|
case "--last-week":
|
|
21630
22461
|
lastWeek = true;
|
|
@@ -21655,16 +22486,16 @@ function parseAddDnsArgs(tokens) {
|
|
|
21655
22486
|
const token = rest.shift();
|
|
21656
22487
|
switch (token) {
|
|
21657
22488
|
case "--type":
|
|
21658
|
-
options.dnsType =
|
|
22489
|
+
options.dnsType = requireValue12(rest, token);
|
|
21659
22490
|
break;
|
|
21660
22491
|
case "--value":
|
|
21661
|
-
options.dnsValue =
|
|
22492
|
+
options.dnsValue = requireValue12(rest, token);
|
|
21662
22493
|
break;
|
|
21663
22494
|
case "--rr":
|
|
21664
|
-
options.dnsRr =
|
|
22495
|
+
options.dnsRr = requireValue12(rest, token);
|
|
21665
22496
|
break;
|
|
21666
22497
|
case "--ttl": {
|
|
21667
|
-
const ttlValue =
|
|
22498
|
+
const ttlValue = requireValue12(rest, token);
|
|
21668
22499
|
const ttl = Number.parseInt(ttlValue, 10);
|
|
21669
22500
|
if (!Number.isFinite(ttl) || ttl <= 0) {
|
|
21670
22501
|
throw new Error(`Invalid --ttl value: ${ttlValue}`);
|
|
@@ -21673,7 +22504,7 @@ function parseAddDnsArgs(tokens) {
|
|
|
21673
22504
|
break;
|
|
21674
22505
|
}
|
|
21675
22506
|
case "--domain":
|
|
21676
|
-
options.dnsDomain =
|
|
22507
|
+
options.dnsDomain = requireValue12(rest, token);
|
|
21677
22508
|
break;
|
|
21678
22509
|
default:
|
|
21679
22510
|
throw new Error(`Unknown add-dns option: ${token}`);
|
|
@@ -21706,13 +22537,13 @@ function parseBucketArgs(tokens) {
|
|
|
21706
22537
|
options.bucketCreate = true;
|
|
21707
22538
|
break;
|
|
21708
22539
|
case "--name":
|
|
21709
|
-
options.bucketName =
|
|
22540
|
+
options.bucketName = requireValue12(rest, token);
|
|
21710
22541
|
break;
|
|
21711
22542
|
case "--subdomain":
|
|
21712
|
-
options.bucketSubdomain =
|
|
22543
|
+
options.bucketSubdomain = requireValue12(rest, token);
|
|
21713
22544
|
break;
|
|
21714
22545
|
case "--domain":
|
|
21715
|
-
options.bucketDomain =
|
|
22546
|
+
options.bucketDomain = requireValue12(rest, token);
|
|
21716
22547
|
break;
|
|
21717
22548
|
default:
|
|
21718
22549
|
throw new Error(`Unknown bucket option: ${token}`);
|
|
@@ -21744,7 +22575,7 @@ function parseDevArgs(tokens) {
|
|
|
21744
22575
|
const token = rest.shift();
|
|
21745
22576
|
switch (token) {
|
|
21746
22577
|
case "--cwd":
|
|
21747
|
-
options.devCwd =
|
|
22578
|
+
options.devCwd = requireValue12(rest, token);
|
|
21748
22579
|
break;
|
|
21749
22580
|
default:
|
|
21750
22581
|
throw new Error(`Unknown dev option: ${token}`);
|
|
@@ -21764,7 +22595,7 @@ function parseDeleteArgs(tokens) {
|
|
|
21764
22595
|
const token = rest.shift();
|
|
21765
22596
|
switch (token) {
|
|
21766
22597
|
case "--cwd":
|
|
21767
|
-
deleteCwd =
|
|
22598
|
+
deleteCwd = requireValue12(rest, token);
|
|
21768
22599
|
break;
|
|
21769
22600
|
default:
|
|
21770
22601
|
throw new Error(`Unknown delete option: ${token}`);
|
|
@@ -21798,13 +22629,13 @@ function parseOssArgs(tokens) {
|
|
|
21798
22629
|
const token = rest.shift();
|
|
21799
22630
|
switch (token) {
|
|
21800
22631
|
case "--bucket":
|
|
21801
|
-
bucket =
|
|
22632
|
+
bucket = requireValue12(rest, token);
|
|
21802
22633
|
break;
|
|
21803
22634
|
case "--file":
|
|
21804
|
-
filePath =
|
|
22635
|
+
filePath = requireValue12(rest, token);
|
|
21805
22636
|
break;
|
|
21806
22637
|
case "--key":
|
|
21807
|
-
objectKey =
|
|
22638
|
+
objectKey = requireValue12(rest, token);
|
|
21808
22639
|
break;
|
|
21809
22640
|
default:
|
|
21810
22641
|
throw new Error(`Unknown oss option: ${token}`);
|
|
@@ -21837,7 +22668,7 @@ function parseEnvArgs(tokens) {
|
|
|
21837
22668
|
throw new Error("Only one env action is allowed.");
|
|
21838
22669
|
}
|
|
21839
22670
|
action = "set";
|
|
21840
|
-
key =
|
|
22671
|
+
key = requireValue12(rest, token);
|
|
21841
22672
|
break;
|
|
21842
22673
|
case "--list":
|
|
21843
22674
|
if (action) {
|
|
@@ -21850,17 +22681,17 @@ function parseEnvArgs(tokens) {
|
|
|
21850
22681
|
throw new Error("Only one env action is allowed.");
|
|
21851
22682
|
}
|
|
21852
22683
|
action = "delete";
|
|
21853
|
-
key =
|
|
22684
|
+
key = requireValue12(rest, token);
|
|
21854
22685
|
break;
|
|
21855
22686
|
case "--value":
|
|
21856
|
-
value =
|
|
22687
|
+
value = requireValue12(rest, token);
|
|
21857
22688
|
break;
|
|
21858
22689
|
case "--verbose":
|
|
21859
22690
|
case "-v":
|
|
21860
22691
|
verbose = true;
|
|
21861
22692
|
break;
|
|
21862
22693
|
case "--cwd":
|
|
21863
|
-
cwd =
|
|
22694
|
+
cwd = requireValue12(rest, token);
|
|
21864
22695
|
break;
|
|
21865
22696
|
default:
|
|
21866
22697
|
throw new Error(`Unknown env option: ${token}`);
|
|
@@ -21918,7 +22749,7 @@ function parseCommitArgs(tokens) {
|
|
|
21918
22749
|
push = true;
|
|
21919
22750
|
break;
|
|
21920
22751
|
case "--cwd":
|
|
21921
|
-
cwd =
|
|
22752
|
+
cwd = requireValue12(rest, token);
|
|
21922
22753
|
break;
|
|
21923
22754
|
default:
|
|
21924
22755
|
throw new Error(`Unknown commit option: ${token}`);
|
|
@@ -21934,10 +22765,10 @@ function parseSummaryArgs(tokens) {
|
|
|
21934
22765
|
const token = rest.shift();
|
|
21935
22766
|
switch (token) {
|
|
21936
22767
|
case "--pr":
|
|
21937
|
-
prRef =
|
|
22768
|
+
prRef = requireValue12(rest, token);
|
|
21938
22769
|
break;
|
|
21939
22770
|
case "--cwd":
|
|
21940
|
-
cwd =
|
|
22771
|
+
cwd = requireValue12(rest, token);
|
|
21941
22772
|
break;
|
|
21942
22773
|
default:
|
|
21943
22774
|
throw new Error(`Unknown summary option: ${token}`);
|
|
@@ -21962,13 +22793,13 @@ function parseQuizArgs(tokens) {
|
|
|
21962
22793
|
const token = rest.shift();
|
|
21963
22794
|
switch (token) {
|
|
21964
22795
|
case "--paper-id":
|
|
21965
|
-
paperId =
|
|
22796
|
+
paperId = requireValue12(rest, token);
|
|
21966
22797
|
break;
|
|
21967
22798
|
case "--base-url":
|
|
21968
|
-
apiBaseUrl =
|
|
22799
|
+
apiBaseUrl = requireValue12(rest, token);
|
|
21969
22800
|
break;
|
|
21970
22801
|
case "--link-base":
|
|
21971
|
-
linkBaseUrl =
|
|
22802
|
+
linkBaseUrl = requireValue12(rest, token);
|
|
21972
22803
|
break;
|
|
21973
22804
|
default:
|
|
21974
22805
|
throw new Error(`Unknown quiz create-draft option: ${token}`);
|
|
@@ -21994,16 +22825,16 @@ function parseQuizArgs(tokens) {
|
|
|
21994
22825
|
const token = rest.shift();
|
|
21995
22826
|
switch (token) {
|
|
21996
22827
|
case "--paper-id":
|
|
21997
|
-
paperId =
|
|
22828
|
+
paperId = requireValue12(rest, token);
|
|
21998
22829
|
break;
|
|
21999
22830
|
case "--file":
|
|
22000
|
-
filePath =
|
|
22831
|
+
filePath = requireValue12(rest, token);
|
|
22001
22832
|
break;
|
|
22002
22833
|
case "--base-url":
|
|
22003
|
-
apiBaseUrl =
|
|
22834
|
+
apiBaseUrl = requireValue12(rest, token);
|
|
22004
22835
|
break;
|
|
22005
22836
|
case "--link-base":
|
|
22006
|
-
linkBaseUrl =
|
|
22837
|
+
linkBaseUrl = requireValue12(rest, token);
|
|
22007
22838
|
break;
|
|
22008
22839
|
default:
|
|
22009
22840
|
throw new Error(`Unknown quiz update-meta option: ${token}`);
|
|
@@ -22033,16 +22864,16 @@ function parseQuizArgs(tokens) {
|
|
|
22033
22864
|
const token = rest.shift();
|
|
22034
22865
|
switch (token) {
|
|
22035
22866
|
case "--paper-id":
|
|
22036
|
-
paperId =
|
|
22867
|
+
paperId = requireValue12(rest, token);
|
|
22037
22868
|
break;
|
|
22038
22869
|
case "--file":
|
|
22039
|
-
filePath =
|
|
22870
|
+
filePath = requireValue12(rest, token);
|
|
22040
22871
|
break;
|
|
22041
22872
|
case "--base-url":
|
|
22042
|
-
apiBaseUrl =
|
|
22873
|
+
apiBaseUrl = requireValue12(rest, token);
|
|
22043
22874
|
break;
|
|
22044
22875
|
case "--link-base":
|
|
22045
|
-
linkBaseUrl =
|
|
22876
|
+
linkBaseUrl = requireValue12(rest, token);
|
|
22046
22877
|
break;
|
|
22047
22878
|
default:
|
|
22048
22879
|
throw new Error(`Unknown quiz append-step option: ${token}`);
|
|
@@ -22073,19 +22904,19 @@ function parseQuizArgs(tokens) {
|
|
|
22073
22904
|
const token = rest.shift();
|
|
22074
22905
|
switch (token) {
|
|
22075
22906
|
case "--paper-id":
|
|
22076
|
-
paperId =
|
|
22907
|
+
paperId = requireValue12(rest, token);
|
|
22077
22908
|
break;
|
|
22078
22909
|
case "--step-id":
|
|
22079
|
-
stepId =
|
|
22910
|
+
stepId = requireValue12(rest, token);
|
|
22080
22911
|
break;
|
|
22081
22912
|
case "--file":
|
|
22082
|
-
filePath =
|
|
22913
|
+
filePath = requireValue12(rest, token);
|
|
22083
22914
|
break;
|
|
22084
22915
|
case "--base-url":
|
|
22085
|
-
apiBaseUrl =
|
|
22916
|
+
apiBaseUrl = requireValue12(rest, token);
|
|
22086
22917
|
break;
|
|
22087
22918
|
case "--link-base":
|
|
22088
|
-
linkBaseUrl =
|
|
22919
|
+
linkBaseUrl = requireValue12(rest, token);
|
|
22089
22920
|
break;
|
|
22090
22921
|
default:
|
|
22091
22922
|
throw new Error(`Unknown quiz update-step option: ${token}`);
|
|
@@ -22119,16 +22950,16 @@ function parseQuizArgs(tokens) {
|
|
|
22119
22950
|
const token = rest.shift();
|
|
22120
22951
|
switch (token) {
|
|
22121
22952
|
case "--paper-id":
|
|
22122
|
-
paperId =
|
|
22953
|
+
paperId = requireValue12(rest, token);
|
|
22123
22954
|
break;
|
|
22124
22955
|
case "--step-ids":
|
|
22125
|
-
stepIdsRaw =
|
|
22956
|
+
stepIdsRaw = requireValue12(rest, token);
|
|
22126
22957
|
break;
|
|
22127
22958
|
case "--base-url":
|
|
22128
|
-
apiBaseUrl =
|
|
22959
|
+
apiBaseUrl = requireValue12(rest, token);
|
|
22129
22960
|
break;
|
|
22130
22961
|
case "--link-base":
|
|
22131
|
-
linkBaseUrl =
|
|
22962
|
+
linkBaseUrl = requireValue12(rest, token);
|
|
22132
22963
|
break;
|
|
22133
22964
|
default:
|
|
22134
22965
|
throw new Error(`Unknown quiz reorder option: ${token}`);
|
|
@@ -22161,13 +22992,13 @@ function parseQuizArgs(tokens) {
|
|
|
22161
22992
|
const token = rest.shift();
|
|
22162
22993
|
switch (token) {
|
|
22163
22994
|
case "--paper-id":
|
|
22164
|
-
paperId =
|
|
22995
|
+
paperId = requireValue12(rest, token);
|
|
22165
22996
|
break;
|
|
22166
22997
|
case "--base-url":
|
|
22167
|
-
apiBaseUrl =
|
|
22998
|
+
apiBaseUrl = requireValue12(rest, token);
|
|
22168
22999
|
break;
|
|
22169
23000
|
case "--link-base":
|
|
22170
|
-
linkBaseUrl =
|
|
23001
|
+
linkBaseUrl = requireValue12(rest, token);
|
|
22171
23002
|
break;
|
|
22172
23003
|
default:
|
|
22173
23004
|
throw new Error(`Unknown quiz activate option: ${token}`);
|
|
@@ -22192,13 +23023,13 @@ function parseQuizArgs(tokens) {
|
|
|
22192
23023
|
const token = rest.shift();
|
|
22193
23024
|
switch (token) {
|
|
22194
23025
|
case "--paper-id":
|
|
22195
|
-
paperId =
|
|
23026
|
+
paperId = requireValue12(rest, token);
|
|
22196
23027
|
break;
|
|
22197
23028
|
case "--base-url":
|
|
22198
|
-
apiBaseUrl =
|
|
23029
|
+
apiBaseUrl = requireValue12(rest, token);
|
|
22199
23030
|
break;
|
|
22200
23031
|
case "--link-base":
|
|
22201
|
-
linkBaseUrl =
|
|
23032
|
+
linkBaseUrl = requireValue12(rest, token);
|
|
22202
23033
|
break;
|
|
22203
23034
|
default:
|
|
22204
23035
|
throw new Error(`Unknown quiz view option: ${token}`);
|
|
@@ -22227,22 +23058,22 @@ function parseQuizArgs(tokens) {
|
|
|
22227
23058
|
const token = rest.shift();
|
|
22228
23059
|
switch (token) {
|
|
22229
23060
|
case "--paper-id":
|
|
22230
|
-
paperId =
|
|
23061
|
+
paperId = requireValue12(rest, token);
|
|
22231
23062
|
break;
|
|
22232
23063
|
case "--step-id":
|
|
22233
|
-
stepId =
|
|
23064
|
+
stepId = requireValue12(rest, token);
|
|
22234
23065
|
break;
|
|
22235
23066
|
case "--file":
|
|
22236
|
-
filePath =
|
|
23067
|
+
filePath = requireValue12(rest, token);
|
|
22237
23068
|
break;
|
|
22238
23069
|
case "--new-paper-id":
|
|
22239
|
-
newPaperId =
|
|
23070
|
+
newPaperId = requireValue12(rest, token);
|
|
22240
23071
|
break;
|
|
22241
23072
|
case "--base-url":
|
|
22242
|
-
apiBaseUrl =
|
|
23073
|
+
apiBaseUrl = requireValue12(rest, token);
|
|
22243
23074
|
break;
|
|
22244
23075
|
case "--link-base":
|
|
22245
|
-
linkBaseUrl =
|
|
23076
|
+
linkBaseUrl = requireValue12(rest, token);
|
|
22246
23077
|
break;
|
|
22247
23078
|
case "--activate":
|
|
22248
23079
|
activate = true;
|
|
@@ -22332,10 +23163,10 @@ function parseLinearPrArgs(tokens) {
|
|
|
22332
23163
|
const token = rest.shift();
|
|
22333
23164
|
switch (token) {
|
|
22334
23165
|
case "--account":
|
|
22335
|
-
account =
|
|
23166
|
+
account = requireValue12(rest, token);
|
|
22336
23167
|
break;
|
|
22337
23168
|
case "--cwd":
|
|
22338
|
-
cwd =
|
|
23169
|
+
cwd = requireValue12(rest, token);
|
|
22339
23170
|
break;
|
|
22340
23171
|
default:
|
|
22341
23172
|
throw new Error(`Unknown linear option: ${token}`);
|
|
@@ -22364,35 +23195,35 @@ function parseLinearCreateArgs(tokens) {
|
|
|
22364
23195
|
const token = rest.shift();
|
|
22365
23196
|
switch (token) {
|
|
22366
23197
|
case "--account":
|
|
22367
|
-
account =
|
|
23198
|
+
account = requireValue12(rest, token);
|
|
22368
23199
|
break;
|
|
22369
23200
|
case "--repl":
|
|
22370
23201
|
useRepl = true;
|
|
22371
23202
|
break;
|
|
22372
23203
|
case "--title":
|
|
22373
|
-
title =
|
|
23204
|
+
title = requireValue12(rest, token);
|
|
22374
23205
|
break;
|
|
22375
23206
|
case "--desc":
|
|
22376
23207
|
case "--description":
|
|
22377
|
-
description = decodeEscapedNewlines(
|
|
23208
|
+
description = decodeEscapedNewlines(requireValue12(rest, token));
|
|
22378
23209
|
break;
|
|
22379
23210
|
case "--team-id":
|
|
22380
|
-
teamId =
|
|
23211
|
+
teamId = requireValue12(rest, token);
|
|
22381
23212
|
break;
|
|
22382
23213
|
case "--team-key":
|
|
22383
|
-
teamKey =
|
|
23214
|
+
teamKey = requireValue12(rest, token);
|
|
22384
23215
|
break;
|
|
22385
23216
|
case "--priority":
|
|
22386
|
-
priority = parseLinearPriority(
|
|
23217
|
+
priority = parseLinearPriority(requireValue12(rest, token));
|
|
22387
23218
|
break;
|
|
22388
23219
|
case "--parent-id":
|
|
22389
|
-
parentId =
|
|
23220
|
+
parentId = requireValue12(rest, token);
|
|
22390
23221
|
break;
|
|
22391
23222
|
case "--state-id":
|
|
22392
|
-
stateId =
|
|
23223
|
+
stateId = requireValue12(rest, token);
|
|
22393
23224
|
break;
|
|
22394
23225
|
case "--cwd":
|
|
22395
|
-
cwd =
|
|
23226
|
+
cwd = requireValue12(rest, token);
|
|
22396
23227
|
break;
|
|
22397
23228
|
default:
|
|
22398
23229
|
throw new Error(`Unknown linear option: ${token}`);
|
|
@@ -22427,10 +23258,10 @@ function parseLinearWhoamiArgs(tokens) {
|
|
|
22427
23258
|
const token = rest.shift();
|
|
22428
23259
|
switch (token) {
|
|
22429
23260
|
case "--account":
|
|
22430
|
-
account =
|
|
23261
|
+
account = requireValue12(rest, token);
|
|
22431
23262
|
break;
|
|
22432
23263
|
case "--cwd":
|
|
22433
|
-
cwd =
|
|
23264
|
+
cwd = requireValue12(rest, token);
|
|
22434
23265
|
break;
|
|
22435
23266
|
default:
|
|
22436
23267
|
throw new Error(`Unknown linear option: ${token}`);
|
|
@@ -22455,10 +23286,10 @@ function parseLinearViewArgs(tokens) {
|
|
|
22455
23286
|
const token = rest.shift();
|
|
22456
23287
|
switch (token) {
|
|
22457
23288
|
case "--account":
|
|
22458
|
-
account =
|
|
23289
|
+
account = requireValue12(rest, token);
|
|
22459
23290
|
break;
|
|
22460
23291
|
case "--cwd":
|
|
22461
|
-
cwd =
|
|
23292
|
+
cwd = requireValue12(rest, token);
|
|
22462
23293
|
break;
|
|
22463
23294
|
default:
|
|
22464
23295
|
throw new Error(`Unknown linear option: ${token}`);
|
|
@@ -22493,32 +23324,32 @@ function parseLinearUpdateArgs(tokens) {
|
|
|
22493
23324
|
const token = rest.shift();
|
|
22494
23325
|
switch (token) {
|
|
22495
23326
|
case "--account":
|
|
22496
|
-
account =
|
|
23327
|
+
account = requireValue12(rest, token);
|
|
22497
23328
|
break;
|
|
22498
23329
|
case "--title":
|
|
22499
|
-
title =
|
|
23330
|
+
title = requireValue12(rest, token);
|
|
22500
23331
|
break;
|
|
22501
23332
|
case "--desc":
|
|
22502
23333
|
case "--description":
|
|
22503
|
-
description = decodeEscapedNewlines(
|
|
23334
|
+
description = decodeEscapedNewlines(requireValue12(rest, token));
|
|
22504
23335
|
break;
|
|
22505
23336
|
case "--team-id":
|
|
22506
|
-
teamId =
|
|
23337
|
+
teamId = requireValue12(rest, token);
|
|
22507
23338
|
break;
|
|
22508
23339
|
case "--team-key":
|
|
22509
|
-
teamKey =
|
|
23340
|
+
teamKey = requireValue12(rest, token);
|
|
22510
23341
|
break;
|
|
22511
23342
|
case "--priority":
|
|
22512
|
-
priority = parseLinearPriority(
|
|
23343
|
+
priority = parseLinearPriority(requireValue12(rest, token));
|
|
22513
23344
|
break;
|
|
22514
23345
|
case "--parent-id":
|
|
22515
|
-
parentId =
|
|
23346
|
+
parentId = requireValue12(rest, token);
|
|
22516
23347
|
break;
|
|
22517
23348
|
case "--state-id":
|
|
22518
|
-
stateId =
|
|
23349
|
+
stateId = requireValue12(rest, token);
|
|
22519
23350
|
break;
|
|
22520
23351
|
case "--cwd":
|
|
22521
|
-
cwd =
|
|
23352
|
+
cwd = requireValue12(rest, token);
|
|
22522
23353
|
break;
|
|
22523
23354
|
default:
|
|
22524
23355
|
throw new Error(`Unknown linear option: ${token}`);
|
|
@@ -22556,10 +23387,10 @@ function parseLinearSubIssuesArgs(tokens) {
|
|
|
22556
23387
|
const token = rest.shift();
|
|
22557
23388
|
switch (token) {
|
|
22558
23389
|
case "--account":
|
|
22559
|
-
account =
|
|
23390
|
+
account = requireValue12(rest, token);
|
|
22560
23391
|
break;
|
|
22561
23392
|
case "--cwd":
|
|
22562
|
-
cwd =
|
|
23393
|
+
cwd = requireValue12(rest, token);
|
|
22563
23394
|
break;
|
|
22564
23395
|
default:
|
|
22565
23396
|
throw new Error(`Unknown linear option: ${token}`);
|
|
@@ -22586,15 +23417,15 @@ function parseLinearCommentArgs(tokens) {
|
|
|
22586
23417
|
const token = rest.shift();
|
|
22587
23418
|
switch (token) {
|
|
22588
23419
|
case "--account":
|
|
22589
|
-
account =
|
|
23420
|
+
account = requireValue12(rest, token);
|
|
22590
23421
|
break;
|
|
22591
23422
|
case "--body":
|
|
22592
23423
|
case "--desc":
|
|
22593
23424
|
case "--description":
|
|
22594
|
-
body = decodeEscapedNewlines(
|
|
23425
|
+
body = decodeEscapedNewlines(requireValue12(rest, token));
|
|
22595
23426
|
break;
|
|
22596
23427
|
case "--cwd":
|
|
22597
|
-
cwd =
|
|
23428
|
+
cwd = requireValue12(rest, token);
|
|
22598
23429
|
break;
|
|
22599
23430
|
default:
|
|
22600
23431
|
throw new Error(`Unknown linear option: ${token}`);
|
|
@@ -22624,10 +23455,10 @@ function parseLinearCommentsArgs(tokens) {
|
|
|
22624
23455
|
const token = rest.shift();
|
|
22625
23456
|
switch (token) {
|
|
22626
23457
|
case "--account":
|
|
22627
|
-
account =
|
|
23458
|
+
account = requireValue12(rest, token);
|
|
22628
23459
|
break;
|
|
22629
23460
|
case "--cwd":
|
|
22630
|
-
cwd =
|
|
23461
|
+
cwd = requireValue12(rest, token);
|
|
22631
23462
|
break;
|
|
22632
23463
|
default:
|
|
22633
23464
|
throw new Error(`Unknown linear option: ${token}`);
|
|
@@ -22651,16 +23482,16 @@ function parseLinearCycleArgs(tokens) {
|
|
|
22651
23482
|
const token = rest.shift();
|
|
22652
23483
|
switch (token) {
|
|
22653
23484
|
case "--account":
|
|
22654
|
-
account =
|
|
23485
|
+
account = requireValue12(rest, token);
|
|
22655
23486
|
break;
|
|
22656
23487
|
case "--team-id":
|
|
22657
|
-
teamId =
|
|
23488
|
+
teamId = requireValue12(rest, token);
|
|
22658
23489
|
break;
|
|
22659
23490
|
case "--team-key":
|
|
22660
|
-
teamKey =
|
|
23491
|
+
teamKey = requireValue12(rest, token);
|
|
22661
23492
|
break;
|
|
22662
23493
|
case "--cwd":
|
|
22663
|
-
cwd =
|
|
23494
|
+
cwd = requireValue12(rest, token);
|
|
22664
23495
|
break;
|
|
22665
23496
|
default:
|
|
22666
23497
|
throw new Error(`Unknown linear option: ${token}`);
|
|
@@ -22683,10 +23514,10 @@ function parseLinearTeamsArgs(tokens) {
|
|
|
22683
23514
|
const token = rest.shift();
|
|
22684
23515
|
switch (token) {
|
|
22685
23516
|
case "--account":
|
|
22686
|
-
account =
|
|
23517
|
+
account = requireValue12(rest, token);
|
|
22687
23518
|
break;
|
|
22688
23519
|
case "--cwd":
|
|
22689
|
-
cwd =
|
|
23520
|
+
cwd = requireValue12(rest, token);
|
|
22690
23521
|
break;
|
|
22691
23522
|
default:
|
|
22692
23523
|
throw new Error(`Unknown linear option: ${token}`);
|
|
@@ -22713,16 +23544,16 @@ function parseLinearUserIssuesArgs(tokens) {
|
|
|
22713
23544
|
const token = rest.shift();
|
|
22714
23545
|
switch (token) {
|
|
22715
23546
|
case "--account":
|
|
22716
|
-
account =
|
|
23547
|
+
account = requireValue12(rest, token);
|
|
22717
23548
|
break;
|
|
22718
23549
|
case "--cycle":
|
|
22719
|
-
cycle = parseLinearCycle(
|
|
23550
|
+
cycle = parseLinearCycle(requireValue12(rest, token));
|
|
22720
23551
|
break;
|
|
22721
23552
|
case "--status":
|
|
22722
|
-
status = parseLinearStatus(
|
|
23553
|
+
status = parseLinearStatus(requireValue12(rest, token));
|
|
22723
23554
|
break;
|
|
22724
23555
|
case "--cwd":
|
|
22725
|
-
cwd =
|
|
23556
|
+
cwd = requireValue12(rest, token);
|
|
22726
23557
|
break;
|
|
22727
23558
|
default:
|
|
22728
23559
|
throw new Error(`Unknown linear option: ${token}`);
|
|
@@ -22756,28 +23587,28 @@ function parseLinearIssuesArgs(tokens) {
|
|
|
22756
23587
|
const token = rest.shift();
|
|
22757
23588
|
switch (token) {
|
|
22758
23589
|
case "--account":
|
|
22759
|
-
account =
|
|
23590
|
+
account = requireValue12(rest, token);
|
|
22760
23591
|
break;
|
|
22761
23592
|
case "--team-id":
|
|
22762
|
-
teamId =
|
|
23593
|
+
teamId = requireValue12(rest, token);
|
|
22763
23594
|
break;
|
|
22764
23595
|
case "--team-key":
|
|
22765
|
-
teamKey =
|
|
23596
|
+
teamKey = requireValue12(rest, token);
|
|
22766
23597
|
break;
|
|
22767
23598
|
case "--user":
|
|
22768
|
-
user =
|
|
23599
|
+
user = requireValue12(rest, token);
|
|
22769
23600
|
break;
|
|
22770
23601
|
case "--cycle":
|
|
22771
|
-
cycle = parseLinearCycle(
|
|
23602
|
+
cycle = parseLinearCycle(requireValue12(rest, token));
|
|
22772
23603
|
break;
|
|
22773
23604
|
case "--status":
|
|
22774
|
-
status = parseLinearStatus(
|
|
23605
|
+
status = parseLinearStatus(requireValue12(rest, token));
|
|
22775
23606
|
break;
|
|
22776
23607
|
case "--query":
|
|
22777
|
-
query =
|
|
23608
|
+
query = requireValue12(rest, token).trim();
|
|
22778
23609
|
break;
|
|
22779
23610
|
case "--limit": {
|
|
22780
|
-
const value = Number.parseInt(
|
|
23611
|
+
const value = Number.parseInt(requireValue12(rest, token), 10);
|
|
22781
23612
|
if (!Number.isInteger(value) || value < 1 || value > 250) {
|
|
22782
23613
|
throw new Error("Invalid --limit. Expected an integer between 1 and 250.");
|
|
22783
23614
|
}
|
|
@@ -22785,7 +23616,7 @@ function parseLinearIssuesArgs(tokens) {
|
|
|
22785
23616
|
break;
|
|
22786
23617
|
}
|
|
22787
23618
|
case "--cwd":
|
|
22788
|
-
cwd =
|
|
23619
|
+
cwd = requireValue12(rest, token);
|
|
22789
23620
|
break;
|
|
22790
23621
|
default:
|
|
22791
23622
|
throw new Error(`Unknown linear option: ${token}`);
|
|
@@ -22826,10 +23657,10 @@ function parseLinearLegacyArgs(tokens) {
|
|
|
22826
23657
|
useScreenshot = true;
|
|
22827
23658
|
break;
|
|
22828
23659
|
case "--account":
|
|
22829
|
-
account =
|
|
23660
|
+
account = requireValue12(rest, token);
|
|
22830
23661
|
break;
|
|
22831
23662
|
case "--cwd":
|
|
22832
|
-
cwd =
|
|
23663
|
+
cwd = requireValue12(rest, token);
|
|
22833
23664
|
break;
|
|
22834
23665
|
default:
|
|
22835
23666
|
throw new Error(`Unknown linear option: ${token}`);
|
|
@@ -22923,19 +23754,19 @@ function parseNotionArgs(tokens) {
|
|
|
22923
23754
|
const token = rest.shift();
|
|
22924
23755
|
switch (token) {
|
|
22925
23756
|
case "--parent":
|
|
22926
|
-
parentPageId =
|
|
23757
|
+
parentPageId = requireValue12(rest, token);
|
|
22927
23758
|
break;
|
|
22928
23759
|
case "--title":
|
|
22929
|
-
title =
|
|
23760
|
+
title = requireValue12(rest, token);
|
|
22930
23761
|
break;
|
|
22931
23762
|
case "--private":
|
|
22932
23763
|
isPrivate = true;
|
|
22933
23764
|
break;
|
|
22934
23765
|
case "--content":
|
|
22935
|
-
content2 =
|
|
23766
|
+
content2 = requireValue12(rest, token);
|
|
22936
23767
|
break;
|
|
22937
23768
|
case "--file":
|
|
22938
|
-
filePath2 =
|
|
23769
|
+
filePath2 = requireValue12(rest, token);
|
|
22939
23770
|
break;
|
|
22940
23771
|
default:
|
|
22941
23772
|
throw new Error(`Unknown notion option: ${token}`);
|
|
@@ -22979,10 +23810,10 @@ function parseNotionArgs(tokens) {
|
|
|
22979
23810
|
const token = rest.shift();
|
|
22980
23811
|
switch (token) {
|
|
22981
23812
|
case "--content":
|
|
22982
|
-
content =
|
|
23813
|
+
content = requireValue12(rest, token);
|
|
22983
23814
|
break;
|
|
22984
23815
|
case "--file":
|
|
22985
|
-
filePath =
|
|
23816
|
+
filePath = requireValue12(rest, token);
|
|
22986
23817
|
break;
|
|
22987
23818
|
case "--append":
|
|
22988
23819
|
append = true;
|
|
@@ -23027,11 +23858,11 @@ function parseRandomArgs(tokens) {
|
|
|
23027
23858
|
mode = "easy";
|
|
23028
23859
|
break;
|
|
23029
23860
|
case "--length":
|
|
23030
|
-
length = parsePositiveInt(
|
|
23861
|
+
length = parsePositiveInt(requireValue12(rest, token), token);
|
|
23031
23862
|
seenLength = true;
|
|
23032
23863
|
break;
|
|
23033
23864
|
case "--charset": {
|
|
23034
|
-
const value =
|
|
23865
|
+
const value = requireValue12(rest, token);
|
|
23035
23866
|
if (!["base64url", "hex", "alnum", "ascii"].includes(value)) {
|
|
23036
23867
|
throw new Error(
|
|
23037
23868
|
`Invalid --charset value: ${value}. Use base64url|hex|alnum|ascii.`
|
|
@@ -23042,18 +23873,18 @@ function parseRandomArgs(tokens) {
|
|
|
23042
23873
|
break;
|
|
23043
23874
|
}
|
|
23044
23875
|
case "--count":
|
|
23045
|
-
count = parsePositiveInt(
|
|
23876
|
+
count = parsePositiveInt(requireValue12(rest, token), token);
|
|
23046
23877
|
break;
|
|
23047
23878
|
case "--words":
|
|
23048
|
-
words = parsePositiveInt(
|
|
23879
|
+
words = parsePositiveInt(requireValue12(rest, token), token);
|
|
23049
23880
|
seenWords = true;
|
|
23050
23881
|
break;
|
|
23051
23882
|
case "--digits":
|
|
23052
|
-
digits = parseNonNegativeInt(
|
|
23883
|
+
digits = parseNonNegativeInt(requireValue12(rest, token), token);
|
|
23053
23884
|
seenDigits = true;
|
|
23054
23885
|
break;
|
|
23055
23886
|
case "--separator":
|
|
23056
|
-
separator =
|
|
23887
|
+
separator = requireValue12(rest, token);
|
|
23057
23888
|
seenSeparator = true;
|
|
23058
23889
|
break;
|
|
23059
23890
|
default:
|
|
@@ -23084,7 +23915,7 @@ function parseRandomArgs(tokens) {
|
|
|
23084
23915
|
count
|
|
23085
23916
|
};
|
|
23086
23917
|
}
|
|
23087
|
-
function
|
|
23918
|
+
function requireValue12(tokens, optionName) {
|
|
23088
23919
|
const value = tokens.shift();
|
|
23089
23920
|
if (!value) {
|
|
23090
23921
|
throw new Error(`Missing value for ${optionName}`);
|
|
@@ -23245,6 +24076,11 @@ async function main() {
|
|
|
23245
24076
|
await handler.handle(commandArgs);
|
|
23246
24077
|
return;
|
|
23247
24078
|
}
|
|
24079
|
+
case "org" /* Org */: {
|
|
24080
|
+
const handler = new OrgCommandHandler();
|
|
24081
|
+
await handler.handle(commandArgs);
|
|
24082
|
+
return;
|
|
24083
|
+
}
|
|
23248
24084
|
case "store" /* Store */: {
|
|
23249
24085
|
const handler = new StoreCommandHandler();
|
|
23250
24086
|
await handler.handle(commandArgs);
|