@parity-app/cli 0.7.3 → 0.7.5
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/bin.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { c as CodedError, d as errorDetails, f as readErrorDetails, i as jsonText, l as closest, s as plainObject, t as checkData, u as errorCodes } from "./schema-CemdtCeF.mjs";
|
|
3
|
-
import { _ as requests, a as describeExec, c as describeProps, f as setCaller, g as requestJsonSchema, h as replies, i as describeConsole, l as describeStatus, m as readRequest, n as describeAccessibility, o as describeModes, p as mcpCallerName, r as describeComponents, s as describeProblems, t as call, u as describeTokens, v as skillRequest } from "./client-
|
|
3
|
+
import { _ as requests, a as describeExec, c as describeProps, f as setCaller, g as requestJsonSchema, h as replies, i as describeConsole, l as describeStatus, m as readRequest, n as describeAccessibility, o as describeModes, p as mcpCallerName, r as describeComponents, s as describeProblems, t as call, u as describeTokens, v as skillRequest } from "./client-D6bpjpy-.mjs";
|
|
4
4
|
import { mkdir, readFile, readdir, writeFile } from "node:fs/promises";
|
|
5
5
|
import { dirname, join, normalize, relative, resolve, sep } from "node:path";
|
|
6
6
|
import { parseArgs } from "node:util";
|
|
@@ -144,7 +144,7 @@ const executeOperation = {
|
|
|
144
144
|
/** Discovery uses the same contract, with just the two historical MCP field aliases. */
|
|
145
145
|
inputSchema: discoverySchema,
|
|
146
146
|
async run(input, send) {
|
|
147
|
-
return execResponse(await send("exec", executeRequest(input), "tab"
|
|
147
|
+
return execResponse(await send("exec", executeRequest(input), "tab"));
|
|
148
148
|
}
|
|
149
149
|
};
|
|
150
150
|
// src/check.ts
|
|
@@ -160,7 +160,7 @@ const appErrorsFile = jsonText(z.record(z.string(), z.string()));
|
|
|
160
160
|
*/
|
|
161
161
|
async function runCheck(library, options) {
|
|
162
162
|
if (!library) throw new Error("parity lib check <library> [--tab t] [--mode m]");
|
|
163
|
-
const { componentNode, generateId, librarySource, withLibraryContext } = await import("./src-
|
|
163
|
+
const { componentNode, generateId, librarySource, withLibraryContext } = await import("./src-Btr2eWdT.mjs");
|
|
164
164
|
const { newestEntries, registryDir } = await import("./src-Q382DbAK.mjs");
|
|
165
165
|
const entry = (await newestEntries()).find((item) => item.manifest.id === library);
|
|
166
166
|
if (!entry) throw new Error(`The registry has no library "${library}"`);
|
|
@@ -470,7 +470,8 @@ function describeReport(report) {
|
|
|
470
470
|
* An operation whose canonical result is built from the app's checked answer, given the checked request. A request's
|
|
471
471
|
* error points at the field, since an operation's fields are flat.
|
|
472
472
|
*/
|
|
473
|
-
function mapped(method,
|
|
473
|
+
function mapped(method, result, options = {}) {
|
|
474
|
+
const input = requests[method];
|
|
474
475
|
const fields = Object.keys(input.shape);
|
|
475
476
|
const routing = routingFor(fields);
|
|
476
477
|
return {
|
|
@@ -479,7 +480,7 @@ function mapped(method, input, reply, result, options = {}) {
|
|
|
479
480
|
routing,
|
|
480
481
|
async run(given, send) {
|
|
481
482
|
const request = readRequest(input, given, 1);
|
|
482
|
-
return result(await send(method, request, routing
|
|
483
|
+
return result(await send(method, request, routing), request);
|
|
483
484
|
},
|
|
484
485
|
failed: options.failed ?? (() => false),
|
|
485
486
|
structured: options.structured ?? ((value) => Object.fromEntries(Object.entries(value)))
|
|
@@ -492,8 +493,8 @@ function routingFor(fields) {
|
|
|
492
493
|
return "copies";
|
|
493
494
|
}
|
|
494
495
|
/** An operation whose canonical result is the app's answer. */
|
|
495
|
-
function operation(method,
|
|
496
|
-
return mapped(method,
|
|
496
|
+
function operation(method, options = {}) {
|
|
497
|
+
return mapped(method, (answer) => answer, options);
|
|
497
498
|
}
|
|
498
499
|
/** The first `count` items, with how many there were, so a reply says when it left some out. */
|
|
499
500
|
function bounded(items, count, keep = "first") {
|
|
@@ -518,18 +519,18 @@ z.looseObject({
|
|
|
518
519
|
...truncation
|
|
519
520
|
});
|
|
520
521
|
const operations = {
|
|
521
|
-
tabs: mapped("tabs",
|
|
522
|
-
state: operation("state"
|
|
523
|
-
status: operation("status"
|
|
524
|
-
modes: operation("modes"
|
|
525
|
-
open: operation("open"
|
|
526
|
-
screenshot: mapped("screenshot",
|
|
522
|
+
tabs: mapped("tabs", (tabs) => ({ tabs })),
|
|
523
|
+
state: operation("state"),
|
|
524
|
+
status: operation("status"),
|
|
525
|
+
modes: operation("modes"),
|
|
526
|
+
open: operation("open"),
|
|
527
|
+
screenshot: mapped("screenshot", (reply) => execResponse(reply, Object.keys(requests.screenshot.shape)), {
|
|
527
528
|
failed: executionFailed,
|
|
528
529
|
structured: structuredExec
|
|
529
530
|
}),
|
|
530
|
-
problems: operation("problems",
|
|
531
|
-
accessibility: operation("accessibility",
|
|
532
|
-
console: mapped("console",
|
|
531
|
+
problems: operation("problems", { failed: (result) => result.problems.length > 0 }),
|
|
532
|
+
accessibility: operation("accessibility", { failed: (result) => result.findings.length > 0 }),
|
|
533
|
+
console: mapped("console", ({ tab, entries }, request) => {
|
|
533
534
|
const { items, total, truncated } = bounded(entries, request.limit, "last");
|
|
534
535
|
return {
|
|
535
536
|
tab,
|
|
@@ -538,7 +539,7 @@ const operations = {
|
|
|
538
539
|
truncated
|
|
539
540
|
};
|
|
540
541
|
}),
|
|
541
|
-
tokens: mapped("tokens",
|
|
542
|
+
tokens: mapped("tokens", (tokens, request) => {
|
|
542
543
|
const { items, total, truncated } = bounded(tokens, request.limit);
|
|
543
544
|
return {
|
|
544
545
|
tokens: items,
|
|
@@ -546,8 +547,8 @@ const operations = {
|
|
|
546
547
|
truncated
|
|
547
548
|
};
|
|
548
549
|
}),
|
|
549
|
-
components: operation("components"
|
|
550
|
-
props: operation("props"
|
|
550
|
+
components: operation("components"),
|
|
551
|
+
props: operation("props")
|
|
551
552
|
};
|
|
552
553
|
const skillOperation = {
|
|
553
554
|
inputSchema: requestJsonSchema(skillRequest),
|
|
@@ -886,9 +886,10 @@ function setCaller(name, session = false) {
|
|
|
886
886
|
* in `@parity-app/agent/routing`, and returns its answer once `reply` has checked it. Fails with a clear message, and a
|
|
887
887
|
* code, when no copy is running, none has the project, or the call fails: the app's own code when it gives one.
|
|
888
888
|
*/
|
|
889
|
-
async function call(method,
|
|
889
|
+
async function call(method, given, routing) {
|
|
890
|
+
const params = given;
|
|
890
891
|
const copies = await runningCopies();
|
|
891
|
-
if (routing === "copies") return answer(
|
|
892
|
+
if (routing === "copies") return answer(replies[method], openTabs(copies), "tabs");
|
|
892
893
|
const target = route(copies, routing === "open" ? {
|
|
893
894
|
kind: "open",
|
|
894
895
|
root: String(params.root)
|
|
@@ -909,7 +910,7 @@ async function call(method, params, routing, reply) {
|
|
|
909
910
|
return send(target.copy.entry, method, target.tab ? {
|
|
910
911
|
...params,
|
|
911
912
|
tab: target.tab.id
|
|
912
|
-
} : params
|
|
913
|
+
} : params);
|
|
913
914
|
}
|
|
914
915
|
/** A folder's real path, through any link, or the folder as named when it can't be read. */
|
|
915
916
|
function real(path) {
|
|
@@ -951,17 +952,18 @@ async function runningCopies() {
|
|
|
951
952
|
/** What a copy has open and when it was last used; just its tabs from an app too old to say more. */
|
|
952
953
|
async function reportOf(entry) {
|
|
953
954
|
try {
|
|
954
|
-
return await send(entry, "copy", {},
|
|
955
|
+
return await send(entry, "copy", {}, 5e3);
|
|
955
956
|
} catch (error) {
|
|
956
957
|
if (!(error instanceof CodedError) || error.details.code !== "app_error") return void 0;
|
|
957
958
|
try {
|
|
958
|
-
return { tabs: await send(entry, "tabs", {},
|
|
959
|
+
return { tabs: await send(entry, "tabs", {}, 5e3) };
|
|
959
960
|
} catch {
|
|
960
961
|
return;
|
|
961
962
|
}
|
|
962
963
|
}
|
|
963
964
|
}
|
|
964
|
-
|
|
965
|
+
/** Asks one copy, and returns its answer once the method's schema in `contracts.ts` has checked it. */
|
|
966
|
+
async function send(entry, method, params, timeout) {
|
|
965
967
|
let response;
|
|
966
968
|
try {
|
|
967
969
|
response = await fetch(`${entry.url}/rpc`, {
|
|
@@ -986,7 +988,7 @@ async function send(entry, method, params, reply, timeout) {
|
|
|
986
988
|
}
|
|
987
989
|
const body = answer(jsonText(rpcReply), await response.text(), method);
|
|
988
990
|
if (body.error !== void 0) throw new CodedError(body.error, readErrorDetails(body.details) ?? { code: "app_error" });
|
|
989
|
-
return answer(
|
|
991
|
+
return answer(replies[method], body.result, method);
|
|
990
992
|
}
|
|
991
993
|
/** The app's answer to `method` once `schema` has checked it, or `app_error` saying what this CLI couldn't read. */
|
|
992
994
|
function answer(schema, value, method) {
|
package/dist/index.d.mts
CHANGED
|
@@ -594,6 +594,16 @@ declare const replies: {
|
|
|
594
594
|
}, z.core.$loose>>;
|
|
595
595
|
}, z.core.$loose>;
|
|
596
596
|
};
|
|
597
|
+
/**
|
|
598
|
+
* Each RPC method's params, as the CLI sends them once its request schema has read them, and its answer (PAR-564). The
|
|
599
|
+
* CLI client asks by it and the app's dispatch answers by it, so a shape that drifts on either side fails to compile.
|
|
600
|
+
* `copy` takes nothing.
|
|
601
|
+
*/
|
|
602
|
+
type AgentMethods = { [M in keyof typeof replies]: {
|
|
603
|
+
params: M extends keyof typeof requests ? z.output<(typeof requests)[M]> : Record<string, never>;
|
|
604
|
+
result: z.output<(typeof replies)[M]>;
|
|
605
|
+
}; };
|
|
606
|
+
type AgentMethod = keyof AgentMethods;
|
|
597
607
|
declare const tabsResult: z.ZodObject<{
|
|
598
608
|
tabs: z.ZodArray<z.ZodObject<{
|
|
599
609
|
id: z.ZodString;
|
|
@@ -788,7 +798,7 @@ export type Routing = "tab" | "open" | "copies";
|
|
|
788
798
|
* in `@parity-app/agent/routing`, and returns its answer once `reply` has checked it. Fails with a clear message, and a
|
|
789
799
|
* code, when no copy is running, none has the project, or the call fails: the app's own code when it gives one.
|
|
790
800
|
*/
|
|
791
|
-
export declare function call<
|
|
801
|
+
export declare function call<M extends AgentMethod>(method: M, given: AgentMethods[M]["params"], routing: Routing): Promise<AgentMethods[M]["result"]>;
|
|
792
802
|
/** A readable account of an exec call, for terminals and for agents. */
|
|
793
803
|
export declare function describeExec(result: ExecResponse): string;
|
|
794
804
|
/** Where a tab's edits stand: the revision, what's applied and undoable, what's on disk, and what failed to write. */
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { t as call, n as describeAccessibility, r as describeComponents, i as describeConsole, a as describeExec, o as describeModes, s as describeProblems, c as describeProps, l as describeStatus, u as describeTokens, d as registry, f as setCaller } from "./client-
|
|
1
|
+
export { t as call, n as describeAccessibility, r as describeComponents, i as describeConsole, a as describeExec, o as describeModes, s as describeProblems, c as describeProps, l as describeStatus, u as describeTokens, d as registry, f as setCaller } from "./client-D6bpjpy-.mjs";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./schema-CemdtCeF.mjs";
|
|
2
|
-
import "./client-
|
|
2
|
+
import "./client-D6bpjpy-.mjs";
|
|
3
3
|
export { t as componentNode, D as generateId, n as librarySource, i as withLibraryContext } from "./src-DjSCuWcT.mjs";
|
|
4
4
|
import "./src-B9VW36v9.mjs";
|
|
5
5
|
import "./src-Bf12xdm5.mjs";
|