@zenalexa/unicli 0.217.3 → 0.218.1
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/AGENTS.md +51 -194
- package/README.md +2 -2
- package/README.zh-CN.md +2 -2
- package/dist/bin/unicli-mcp.d.ts +10 -0
- package/dist/bin/unicli-mcp.d.ts.map +1 -0
- package/dist/bin/unicli-mcp.js +10 -0
- package/dist/bin/unicli-mcp.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +12 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/auth.d.ts +1 -0
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +250 -0
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/dev.js +1 -0
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/health.d.ts.map +1 -1
- package/dist/commands/health.js +1 -0
- package/dist/commands/health.js.map +1 -1
- package/dist/commands/lint.d.ts.map +1 -1
- package/dist/commands/lint.js +15 -6
- package/dist/commands/lint.js.map +1 -1
- package/dist/commands/repair.d.ts +1 -0
- package/dist/commands/repair.d.ts.map +1 -1
- package/dist/commands/repair.js +103 -61
- package/dist/commands/repair.js.map +1 -1
- package/dist/engine/chromium-cookies-platform.d.ts +69 -0
- package/dist/engine/chromium-cookies-platform.d.ts.map +1 -0
- package/dist/engine/chromium-cookies-platform.js +315 -0
- package/dist/engine/chromium-cookies-platform.js.map +1 -0
- package/dist/engine/chromium-cookies-types.d.ts +26 -0
- package/dist/engine/chromium-cookies-types.d.ts.map +1 -0
- package/dist/engine/chromium-cookies-types.js +16 -0
- package/dist/engine/chromium-cookies-types.js.map +1 -0
- package/dist/engine/chromium-cookies.d.ts +56 -0
- package/dist/engine/chromium-cookies.d.ts.map +1 -0
- package/dist/engine/chromium-cookies.js +361 -0
- package/dist/engine/chromium-cookies.js.map +1 -0
- package/dist/engine/cookies.d.ts +13 -5
- package/dist/engine/cookies.d.ts.map +1 -1
- package/dist/engine/cookies.js +55 -9
- package/dist/engine/cookies.js.map +1 -1
- package/dist/engine/executor.d.ts +8 -0
- package/dist/engine/executor.d.ts.map +1 -1
- package/dist/engine/executor.js +1 -1
- package/dist/engine/executor.js.map +1 -1
- package/dist/engine/kernel/execute.d.ts.map +1 -1
- package/dist/engine/kernel/execute.js +1 -0
- package/dist/engine/kernel/execute.js.map +1 -1
- package/dist/engine/repair/quarantine-discovery.d.ts +25 -0
- package/dist/engine/repair/quarantine-discovery.d.ts.map +1 -0
- package/dist/engine/repair/quarantine-discovery.js +78 -0
- package/dist/engine/repair/quarantine-discovery.js.map +1 -0
- package/dist/engine/steps/navigate.d.ts +1 -1
- package/dist/engine/steps/navigate.d.ts.map +1 -1
- package/dist/engine/steps/navigate.js +5 -1
- package/dist/engine/steps/navigate.js.map +1 -1
- package/dist/engine/template.d.ts +14 -4
- package/dist/engine/template.d.ts.map +1 -1
- package/dist/engine/template.js +93 -65
- package/dist/engine/template.js.map +1 -1
- package/dist/engine/verify-row-shape.d.ts +17 -0
- package/dist/engine/verify-row-shape.d.ts.map +1 -0
- package/dist/engine/verify-row-shape.js +36 -0
- package/dist/engine/verify-row-shape.js.map +1 -0
- package/dist/fast-path/handlers/adapter.d.ts +15 -0
- package/dist/fast-path/handlers/adapter.d.ts.map +1 -0
- package/dist/fast-path/handlers/adapter.js +169 -0
- package/dist/fast-path/handlers/adapter.js.map +1 -0
- package/dist/fast-path/handlers/discovery.d.ts +14 -0
- package/dist/fast-path/handlers/discovery.d.ts.map +1 -0
- package/dist/fast-path/handlers/discovery.js +280 -0
- package/dist/fast-path/handlers/discovery.js.map +1 -0
- package/dist/fast-path/manifest.d.ts +47 -0
- package/dist/fast-path/manifest.d.ts.map +1 -0
- package/dist/fast-path/manifest.js +32 -0
- package/dist/fast-path/manifest.js.map +1 -0
- package/dist/fast-path/parsed-argv.d.ts +16 -0
- package/dist/fast-path/parsed-argv.d.ts.map +1 -0
- package/dist/fast-path/parsed-argv.js +6 -0
- package/dist/fast-path/parsed-argv.js.map +1 -0
- package/dist/fast-path/policy.d.ts +25 -0
- package/dist/fast-path/policy.d.ts.map +1 -0
- package/dist/fast-path/policy.js +96 -0
- package/dist/fast-path/policy.js.map +1 -0
- package/dist/fast-path/render.d.ts +26 -0
- package/dist/fast-path/render.d.ts.map +1 -0
- package/dist/fast-path/render.js +200 -0
- package/dist/fast-path/render.js.map +1 -0
- package/dist/fast-path.d.ts +8 -10
- package/dist/fast-path.d.ts.map +1 -1
- package/dist/fast-path.js +66 -810
- package/dist/fast-path.js.map +1 -1
- package/dist/manifest.json +7 -6
- package/dist/transport/adapters/cdp-browser.d.ts +6 -6
- package/dist/transport/adapters/cdp-browser.js +7 -7
- package/dist/transport/adapters/cdp-browser.js.map +1 -1
- package/dist/transport/adapters/subprocess.d.ts +4 -4
- package/dist/transport/adapters/subprocess.js +4 -4
- package/package.json +22 -8
- package/server.json +44 -0
- package/skills/README.md +39 -0
- package/skills/talk-normal/SKILL.md +25 -0
- package/skills/talk-normal/prompt.md +35 -0
- package/skills/unicli/SKILL.md +389 -0
- package/skills/unicli/references/auth.md +188 -0
- package/skills/unicli/references/output.md +238 -0
- package/skills/unicli/references/sites.md +259 -0
- package/skills/unicli-browser/SKILL.md +99 -0
- package/skills/unicli-claude-code/SKILL.md +172 -0
- package/skills/unicli-explorer/SKILL.md +90 -0
- package/skills/unicli-hermes/SKILL.md +83 -0
- package/skills/unicli-oneshot/SKILL.md +59 -0
- package/skills/unicli-operate/SKILL.md +113 -0
- package/skills/unicli-repair/SKILL.md +209 -0
- package/skills/unicli-repair/references/error-codes.md +149 -0
- package/skills/unicli-repair/references/yaml-patches.md +321 -0
- package/skills/unicli-smart-search/SKILL.md +80 -0
- package/skills/unicli-usage/SKILL.md +65 -0
- package/src/adapters/adguardhome/rules.yaml +1 -1
- package/src/adapters/adguardhome/stats.yaml +1 -1
- package/src/adapters/adguardhome/status.yaml +1 -1
- package/src/adapters/apple-music/rate-album.yaml +1 -2
- package/src/adapters/arxiv/trending.yaml +1 -1
- package/src/adapters/az/account.yaml +1 -1
- package/src/adapters/coupang/hot.yaml +2 -1
- package/src/adapters/ctrip/hot.yaml +2 -1
- package/src/adapters/ctrip/search.yaml +2 -1
- package/src/adapters/douban/top250.yaml +1 -1
- package/src/adapters/figma/export-selected.yaml +1 -2
- package/src/adapters/gcloud/projects.yaml +1 -1
- package/src/adapters/github-trending/developers.yaml +1 -1
- package/src/adapters/github-trending/weekly.yaml +1 -1
- package/src/adapters/homebrew/search.yaml +1 -1
- package/src/adapters/imdb/top.yaml +1 -1
- package/src/adapters/itch-io/popular.yaml +1 -1
- package/src/adapters/itch-io/top.yaml +1 -1
- package/src/adapters/mastodon/timeline.yaml +1 -1
- package/src/adapters/openrouter/search.yaml +1 -1
- package/src/adapters/pypi/search.yaml +2 -1
- package/src/adapters/sspai/hot.yaml +4 -1
- package/src/adapters/sspai/latest.yaml +3 -3
- package/src/adapters/tieba/hot.yaml +1 -1
- package/src/adapters/wikipedia/today.yaml +1 -1
- package/src/adapters/zoom/toggle-mute.yaml +1 -2
- package/dist/engine/yaml-runner.d.ts +0 -11
- package/dist/engine/yaml-runner.d.ts.map +0 -1
- package/dist/engine/yaml-runner.js +0 -18
- package/dist/engine/yaml-runner.js.map +0 -1
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated manifest reader — the discovery-only fast path consumes
|
|
3
|
+
* `dist/manifest.json` instead of loading every adapter through Commander.
|
|
4
|
+
*
|
|
5
|
+
* Keep this module side-effect free: the entry decides whether absence of
|
|
6
|
+
* the manifest is fatal or simply means "no fast path; fall through to the
|
|
7
|
+
* full Commander tree".
|
|
8
|
+
*/
|
|
9
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
10
|
+
import { dirname, join } from "node:path";
|
|
11
|
+
import { fileURLToPath } from "node:url";
|
|
12
|
+
export function manifestPath() {
|
|
13
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
14
|
+
const candidates = [
|
|
15
|
+
join(here, "manifest.json"),
|
|
16
|
+
join(here, "..", "dist", "manifest.json"),
|
|
17
|
+
join(here, "..", "..", "dist", "manifest.json"),
|
|
18
|
+
];
|
|
19
|
+
const found = candidates.find((candidate) => existsSync(candidate));
|
|
20
|
+
if (!found) {
|
|
21
|
+
throw new Error("Missing dist/manifest.json. Run: npm run build:manifest");
|
|
22
|
+
}
|
|
23
|
+
return found;
|
|
24
|
+
}
|
|
25
|
+
export function readManifest() {
|
|
26
|
+
return JSON.parse(readFileSync(manifestPath(), "utf8"));
|
|
27
|
+
}
|
|
28
|
+
export function isMissingManifestError(error) {
|
|
29
|
+
return (error instanceof Error &&
|
|
30
|
+
error.message.includes("Missing dist/manifest.json"));
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/fast-path/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AA2CzC,MAAM,UAAU,YAAY;IAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC;QAC3B,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,CAAC;QACzC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,CAAC;KAChD,CAAC;IACF,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IACpE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,MAAM,CAAC,CAAa,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,OAAO,CACL,KAAK,YAAY,KAAK;QACtB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CACrD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The parsed-argv shape consumed by every fast-path handler. Lives in its
|
|
3
|
+
* own file so handlers do not have to take a circular import on the entry.
|
|
4
|
+
*/
|
|
5
|
+
import type { OutputFormat } from "../types.js";
|
|
6
|
+
export type ParsedArgv = {
|
|
7
|
+
command?: string;
|
|
8
|
+
rest: string[];
|
|
9
|
+
format?: OutputFormat;
|
|
10
|
+
dryRun: boolean;
|
|
11
|
+
permissionProfile?: string;
|
|
12
|
+
yes: boolean;
|
|
13
|
+
rememberApproval: boolean;
|
|
14
|
+
record: boolean;
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=parsed-argv.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parsed-argv.d.ts","sourceRoot":"","sources":["../../src/fast-path/parsed-argv.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,GAAG,EAAE,OAAO,CAAC;IACb,gBAAgB,EAAE,OAAO,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parsed-argv.js","sourceRoot":"","sources":["../../src/fast-path/parsed-argv.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Operation-policy gate evaluation for the fast path.
|
|
3
|
+
*
|
|
4
|
+
* Wraps `engine/operation-policy.ts` with the manifest-driven inputs needed
|
|
5
|
+
* by `describe`, `--dry-run`, and pre-execution policy gates. On configuration
|
|
6
|
+
* errors, prints a structured envelope and exits with USAGE_ERROR.
|
|
7
|
+
*/
|
|
8
|
+
import { type OperationPolicy } from "../engine/operation-policy.js";
|
|
9
|
+
import { type TargetSurface } from "../types.js";
|
|
10
|
+
import type { ManifestCommand } from "./manifest.js";
|
|
11
|
+
import type { ParsedArgv } from "./parsed-argv.js";
|
|
12
|
+
import { type Io } from "./render.js";
|
|
13
|
+
export declare function hasStoredApproval(key: string): boolean;
|
|
14
|
+
export declare function evaluateManifestOperationPolicy(input: {
|
|
15
|
+
parsed: ParsedArgv;
|
|
16
|
+
io: Io;
|
|
17
|
+
site: string;
|
|
18
|
+
commandName: string;
|
|
19
|
+
command: ManifestCommand;
|
|
20
|
+
adapterType: string;
|
|
21
|
+
targetSurface: TargetSurface;
|
|
22
|
+
adapterPath: string;
|
|
23
|
+
startedAt: number;
|
|
24
|
+
}): OperationPolicy | null;
|
|
25
|
+
//# sourceMappingURL=policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/fast-path/policy.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,+BAA+B,CAAC;AAQvC,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,EAAqB,MAAM,aAAa,CAAC;AAEzD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAsBtD;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE;IACrD,MAAM,EAAE,UAAU,CAAC;IACnB,EAAE,EAAE,EAAE,CAAC;IACP,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,eAAe,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,aAAa,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,eAAe,GAAG,IAAI,CAmEzB"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Operation-policy gate evaluation for the fast path.
|
|
3
|
+
*
|
|
4
|
+
* Wraps `engine/operation-policy.ts` with the manifest-driven inputs needed
|
|
5
|
+
* by `describe`, `--dry-run`, and pre-execution policy gates. On configuration
|
|
6
|
+
* errors, prints a structured envelope and exits with USAGE_ERROR.
|
|
7
|
+
*/
|
|
8
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
9
|
+
import { createApprovalStore, isStoredApproval, } from "../engine/approval-store.js";
|
|
10
|
+
import { evaluateOperationPolicy, InvalidPermissionProfileError, } from "../engine/operation-policy.js";
|
|
11
|
+
import { applyDenyRuleToPolicy, findDenyRuleForPolicySync, PermissionRulesConfigError, } from "../engine/permission-rules.js";
|
|
12
|
+
import { defaultErrorNextActions } from "../output/next-actions.js";
|
|
13
|
+
import { format, detectFormat } from "../output/formatter.js";
|
|
14
|
+
import { ExitCode } from "../types.js";
|
|
15
|
+
import { emitStderrAndExit } from "./render.js";
|
|
16
|
+
export function hasStoredApproval(key) {
|
|
17
|
+
const store = createApprovalStore();
|
|
18
|
+
if (!existsSync(store.path))
|
|
19
|
+
return false;
|
|
20
|
+
try {
|
|
21
|
+
const raw = readFileSync(store.path, "utf-8");
|
|
22
|
+
const lines = raw.split(/\r?\n/);
|
|
23
|
+
for (let i = lines.length - 1; i >= 0; i -= 1) {
|
|
24
|
+
const line = lines[i];
|
|
25
|
+
if (line.trim().length === 0)
|
|
26
|
+
continue;
|
|
27
|
+
try {
|
|
28
|
+
const entry = JSON.parse(line);
|
|
29
|
+
if (isStoredApproval(entry) && entry.key === key) {
|
|
30
|
+
return entry.decision === "allow";
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
export function evaluateManifestOperationPolicy(input) {
|
|
44
|
+
try {
|
|
45
|
+
const policyInput = {
|
|
46
|
+
site: input.site,
|
|
47
|
+
command: input.commandName,
|
|
48
|
+
description: input.command.description,
|
|
49
|
+
adapterType: input.adapterType,
|
|
50
|
+
targetSurface: input.targetSurface,
|
|
51
|
+
strategy: input.command.strategy,
|
|
52
|
+
domain: input.command.domain,
|
|
53
|
+
base: input.command.base,
|
|
54
|
+
browser: input.command.browser === true,
|
|
55
|
+
args: input.command.args,
|
|
56
|
+
profile: input.parsed.permissionProfile,
|
|
57
|
+
approved: input.parsed.yes,
|
|
58
|
+
};
|
|
59
|
+
const policy = evaluateOperationPolicy(policyInput);
|
|
60
|
+
const denyRule = findDenyRuleForPolicySync(policy);
|
|
61
|
+
if (denyRule)
|
|
62
|
+
return applyDenyRuleToPolicy(policy, denyRule);
|
|
63
|
+
if (policy.enforcement === "needs_approval" &&
|
|
64
|
+
hasStoredApproval(policy.approval_memory.key)) {
|
|
65
|
+
return evaluateOperationPolicy({
|
|
66
|
+
...policyInput,
|
|
67
|
+
approvalSource: "memory",
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
return policy;
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
if (!(error instanceof InvalidPermissionProfileError ||
|
|
74
|
+
error instanceof PermissionRulesConfigError)) {
|
|
75
|
+
throw error;
|
|
76
|
+
}
|
|
77
|
+
emitStderrAndExit(input.io, format([], input.command.columns, detectFormat(input.parsed.format), {
|
|
78
|
+
command: `${input.site}.${input.commandName}`,
|
|
79
|
+
duration_ms: Date.now() - input.startedAt,
|
|
80
|
+
surface: input.targetSurface,
|
|
81
|
+
error: {
|
|
82
|
+
code: "invalid_input",
|
|
83
|
+
message: error.message,
|
|
84
|
+
adapter_path: input.adapterPath,
|
|
85
|
+
step: 0,
|
|
86
|
+
suggestion: error instanceof PermissionRulesConfigError
|
|
87
|
+
? error.suggestion
|
|
88
|
+
: "use one of: open, confirm, locked",
|
|
89
|
+
retryable: false,
|
|
90
|
+
},
|
|
91
|
+
next_actions: defaultErrorNextActions(input.site, input.commandName, "invalid_input"),
|
|
92
|
+
}), ExitCode.USAGE_ERROR);
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/fast-path/policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Argv tokenisation, schema generation, and envelope rendering helpers
|
|
3
|
+
* shared by every fast-path handler.
|
|
4
|
+
*
|
|
5
|
+
* Pure utilities only — no manifest or policy IO. Handlers compose these
|
|
6
|
+
* with `manifest.ts` and `policy.ts`.
|
|
7
|
+
*/
|
|
8
|
+
import { type OutputFormat } from "../types.js";
|
|
9
|
+
import type { ManifestArg } from "./manifest.js";
|
|
10
|
+
export type Io = {
|
|
11
|
+
stdout: (text: string) => void;
|
|
12
|
+
stderr: (text: string) => void;
|
|
13
|
+
};
|
|
14
|
+
export declare const DEFAULT_IO: Io;
|
|
15
|
+
export declare function emitStderrAndExit(io: Io, text: string, code: number): void;
|
|
16
|
+
export declare function isOutputFormat(value: string): value is OutputFormat;
|
|
17
|
+
export declare function isHelpToken(value: string): boolean;
|
|
18
|
+
export declare function jsonSchemaType(type: ManifestArg["type"]): string;
|
|
19
|
+
export declare function argsToJsonSchema(args: ManifestArg[]): Record<string, unknown>;
|
|
20
|
+
export declare function buildExample(args: ManifestArg[]): Record<string, unknown>;
|
|
21
|
+
export declare function buildChannels(site: string, command: string, args: ManifestArg[]): Record<string, string>;
|
|
22
|
+
export declare function summarizeArgs(args?: ManifestArg[]): Array<Record<string, unknown>>;
|
|
23
|
+
export declare function coerceArgValue(value: unknown, type: ManifestArg["type"]): unknown;
|
|
24
|
+
export declare function resolveDryRunArgs(schema: ManifestArg[] | undefined, tokens: string[]): Record<string, unknown> | null;
|
|
25
|
+
export declare function emit(io: Io, data: unknown[] | Record<string, unknown>, columns: string[] | undefined, fmt: OutputFormat | undefined, command: string, startedAt: number): void;
|
|
26
|
+
//# sourceMappingURL=render.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/fast-path/render.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,MAAM,EAAE,GAAG;IACf,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,EAGxB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAO1E;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,YAAY,CASnE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAElD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,CAWhE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA2B7E;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA0BzE;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,WAAW,EAAE,GAClB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmBxB;AAED,wBAAgB,aAAa,CAC3B,IAAI,GAAE,WAAW,EAAO,GACvB,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAOhC;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,GACxB,OAAO,CAeT;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,EAAE,YAAK,EAC1B,MAAM,EAAE,MAAM,EAAE,GACf,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAgDhC;AAED,wBAAgB,IAAI,CAClB,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzC,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,EAC7B,GAAG,EAAE,YAAY,GAAG,SAAS,EAC7B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,IAAI,CAQN"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Argv tokenisation, schema generation, and envelope rendering helpers
|
|
3
|
+
* shared by every fast-path handler.
|
|
4
|
+
*
|
|
5
|
+
* Pure utilities only — no manifest or policy IO. Handlers compose these
|
|
6
|
+
* with `manifest.ts` and `policy.ts`.
|
|
7
|
+
*/
|
|
8
|
+
import { writeSync } from "node:fs";
|
|
9
|
+
import { format, detectFormat } from "../output/formatter.js";
|
|
10
|
+
export const DEFAULT_IO = {
|
|
11
|
+
stdout: (text) => process.stdout.write(`${text}\n`),
|
|
12
|
+
stderr: (text) => process.stderr.write(`${text}\n`),
|
|
13
|
+
};
|
|
14
|
+
export function emitStderrAndExit(io, text, code) {
|
|
15
|
+
if (io === DEFAULT_IO) {
|
|
16
|
+
writeSync(process.stderr.fd, `${text}\n`);
|
|
17
|
+
process.exit(code);
|
|
18
|
+
}
|
|
19
|
+
io.stderr(text);
|
|
20
|
+
process.exitCode = code;
|
|
21
|
+
}
|
|
22
|
+
export function isOutputFormat(value) {
|
|
23
|
+
return (value === "json" ||
|
|
24
|
+
value === "yaml" ||
|
|
25
|
+
value === "md" ||
|
|
26
|
+
value === "csv" ||
|
|
27
|
+
value === "compact" ||
|
|
28
|
+
value === "table");
|
|
29
|
+
}
|
|
30
|
+
export function isHelpToken(value) {
|
|
31
|
+
return value === "-h" || value === "--help" || value === "help";
|
|
32
|
+
}
|
|
33
|
+
export function jsonSchemaType(type) {
|
|
34
|
+
switch (type) {
|
|
35
|
+
case "int":
|
|
36
|
+
return "integer";
|
|
37
|
+
case "float":
|
|
38
|
+
return "number";
|
|
39
|
+
case "bool":
|
|
40
|
+
return "boolean";
|
|
41
|
+
default:
|
|
42
|
+
return "string";
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export function argsToJsonSchema(args) {
|
|
46
|
+
const properties = {};
|
|
47
|
+
const required = [];
|
|
48
|
+
for (const arg of args) {
|
|
49
|
+
const prop = {
|
|
50
|
+
type: jsonSchemaType(arg.type),
|
|
51
|
+
};
|
|
52
|
+
if (arg.description)
|
|
53
|
+
prop.description = arg.description;
|
|
54
|
+
if (arg.default !== undefined)
|
|
55
|
+
prop.default = arg.default;
|
|
56
|
+
if (arg.choices && arg.choices.length > 0)
|
|
57
|
+
prop.enum = arg.choices;
|
|
58
|
+
if (arg.format)
|
|
59
|
+
prop.format = arg.format;
|
|
60
|
+
if (arg["x-unicli-kind"])
|
|
61
|
+
prop["x-unicli-kind"] = arg["x-unicli-kind"];
|
|
62
|
+
if (arg["x-unicli-accepts"]) {
|
|
63
|
+
prop["x-unicli-accepts"] = arg["x-unicli-accepts"];
|
|
64
|
+
}
|
|
65
|
+
properties[arg.name] = prop;
|
|
66
|
+
if (arg.required)
|
|
67
|
+
required.push(arg.name);
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
71
|
+
type: "object",
|
|
72
|
+
properties,
|
|
73
|
+
required,
|
|
74
|
+
additionalProperties: true,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
export function buildExample(args) {
|
|
78
|
+
const example = {};
|
|
79
|
+
for (const arg of args) {
|
|
80
|
+
if (arg.default !== undefined) {
|
|
81
|
+
example[arg.name] = arg.default;
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
if (arg.choices && arg.choices.length > 0) {
|
|
85
|
+
example[arg.name] = arg.choices[0];
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
switch (arg.type) {
|
|
89
|
+
case "int":
|
|
90
|
+
example[arg.name] = 10;
|
|
91
|
+
break;
|
|
92
|
+
case "float":
|
|
93
|
+
example[arg.name] = 0.5;
|
|
94
|
+
break;
|
|
95
|
+
case "bool":
|
|
96
|
+
example[arg.name] = false;
|
|
97
|
+
break;
|
|
98
|
+
default:
|
|
99
|
+
example[arg.name] = `<${arg.name}>`;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return example;
|
|
103
|
+
}
|
|
104
|
+
export function buildChannels(site, command, args) {
|
|
105
|
+
const positionals = args
|
|
106
|
+
.filter((arg) => arg.positional)
|
|
107
|
+
.map((arg) => (arg.required ? `<${arg.name}>` : `[${arg.name}]`))
|
|
108
|
+
.join(" ");
|
|
109
|
+
const options = args
|
|
110
|
+
.filter((arg) => !arg.positional)
|
|
111
|
+
.map((arg) => `[--${arg.name} <${arg.type ?? "value"}>]`)
|
|
112
|
+
.join(" ");
|
|
113
|
+
const shell = `unicli ${site} ${command}` +
|
|
114
|
+
(positionals ? ` ${positionals}` : "") +
|
|
115
|
+
(options ? ` ${options}` : "");
|
|
116
|
+
return {
|
|
117
|
+
shell: shell.trim(),
|
|
118
|
+
args_file: `unicli ${site} ${command} --args-file <path.json>`,
|
|
119
|
+
stdin: `echo '{...}' | unicli ${site} ${command}`,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
export function summarizeArgs(args = []) {
|
|
123
|
+
return args.map((arg) => ({
|
|
124
|
+
name: arg.name,
|
|
125
|
+
type: arg.type ?? "str",
|
|
126
|
+
required: arg.required === true,
|
|
127
|
+
positional: arg.positional === true,
|
|
128
|
+
}));
|
|
129
|
+
}
|
|
130
|
+
export function coerceArgValue(value, type) {
|
|
131
|
+
if (type === "int") {
|
|
132
|
+
const parsed = parseInt(String(value), 10);
|
|
133
|
+
return Number.isNaN(parsed) ? value : parsed;
|
|
134
|
+
}
|
|
135
|
+
if (type === "float") {
|
|
136
|
+
const parsed = parseFloat(String(value));
|
|
137
|
+
return Number.isNaN(parsed) ? value : parsed;
|
|
138
|
+
}
|
|
139
|
+
if (type === "bool") {
|
|
140
|
+
if (typeof value === "boolean")
|
|
141
|
+
return value;
|
|
142
|
+
const text = String(value).toLowerCase();
|
|
143
|
+
return text === "1" || text === "true" || text === "yes";
|
|
144
|
+
}
|
|
145
|
+
return value;
|
|
146
|
+
}
|
|
147
|
+
export function resolveDryRunArgs(schema = [], tokens) {
|
|
148
|
+
const values = {};
|
|
149
|
+
for (const arg of schema) {
|
|
150
|
+
if (arg.default !== undefined)
|
|
151
|
+
values[arg.name] = arg.default;
|
|
152
|
+
}
|
|
153
|
+
const positionals = schema.filter((arg) => arg.positional);
|
|
154
|
+
let positionalIndex = 0;
|
|
155
|
+
for (let i = 0; i < tokens.length; i += 1) {
|
|
156
|
+
const token = tokens[i];
|
|
157
|
+
if (token.startsWith("--")) {
|
|
158
|
+
const eqIdx = token.indexOf("=");
|
|
159
|
+
const name = eqIdx === -1 ? token.slice(2) : token.slice(2, Math.max(2, eqIdx));
|
|
160
|
+
const arg = schema.find((candidate) => candidate.name === name);
|
|
161
|
+
if (!arg) {
|
|
162
|
+
if (eqIdx === -1 && tokens[i + 1] && !tokens[i + 1].startsWith("-")) {
|
|
163
|
+
i += 1;
|
|
164
|
+
}
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
let raw;
|
|
168
|
+
if (arg.type === "bool" && eqIdx === -1) {
|
|
169
|
+
raw = true;
|
|
170
|
+
}
|
|
171
|
+
else if (eqIdx !== -1) {
|
|
172
|
+
raw = token.slice(eqIdx + 1);
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
raw = tokens[i + 1];
|
|
176
|
+
i += 1;
|
|
177
|
+
}
|
|
178
|
+
values[arg.name] = coerceArgValue(raw, arg.type);
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
const arg = positionals[positionalIndex];
|
|
182
|
+
if (arg) {
|
|
183
|
+
values[arg.name] = coerceArgValue(token, arg.type);
|
|
184
|
+
positionalIndex += 1;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
for (const arg of schema) {
|
|
188
|
+
if (arg.required && values[arg.name] === undefined)
|
|
189
|
+
return null;
|
|
190
|
+
}
|
|
191
|
+
return values;
|
|
192
|
+
}
|
|
193
|
+
export function emit(io, data, columns, fmt, command, startedAt) {
|
|
194
|
+
io.stdout(format(data, columns, detectFormat(fmt), {
|
|
195
|
+
command,
|
|
196
|
+
duration_ms: Date.now() - startedAt,
|
|
197
|
+
surface: "web",
|
|
198
|
+
}));
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=render.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/fast-path/render.ts"],"names":[],"mappings":"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"}
|
package/dist/fast-path.d.ts
CHANGED
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
2
|
+
* @owner src/fast-path.ts
|
|
3
|
+
* @does Argv parsing and dispatch for discovery surfaces (list/search/describe/repair, plus pre-Commander adapter dry-run, policy gate, and site help).
|
|
4
|
+
* @needs ./fast-path/{manifest,parsed-argv,render,policy,handlers/discovery,handlers/adapter}, ./types (OutputFormat)
|
|
5
|
+
* @feeds src/main.ts (dispatched before the full Commander tree loads)
|
|
6
|
+
* @breaks Missing dist/manifest.json → returns false so caller falls through to Commander; structured errors propagate via emitStderrAndExit.
|
|
7
7
|
*/
|
|
8
|
-
type Io
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
};
|
|
8
|
+
import { type Io } from "./fast-path/render.js";
|
|
9
|
+
export type { Io } from "./fast-path/render.js";
|
|
10
|
+
export type { ParsedArgv } from "./fast-path/parsed-argv.js";
|
|
12
11
|
export declare function tryRunFastPath(argv?: string[], io?: Io): boolean;
|
|
13
|
-
export {};
|
|
14
12
|
//# sourceMappingURL=fast-path.d.ts.map
|
package/dist/fast-path.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fast-path.d.ts","sourceRoot":"","sources":["../src/fast-path.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"fast-path.d.ts","sourceRoot":"","sources":["../src/fast-path.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAgBH,OAAO,EAAc,KAAK,EAAE,EAAkB,MAAM,uBAAuB,CAAC;AAE5E,YAAY,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAC;AAChD,YAAY,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAwG7D,wBAAgB,cAAc,CAC5B,IAAI,WAAe,EACnB,EAAE,GAAE,EAAe,GAClB,OAAO,CAuBT"}
|