@longzai-intelligence-cli/core 0.0.14 → 0.0.16
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 +0 -23
- package/dist/index.js +2 -2
- package/package.json +13 -15
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import "./rolldown-runtime-BqT_7tdF.js";
|
|
2
1
|
import { Command, Command as Command$1 } from "commander";
|
|
3
2
|
import * as z from "zod";
|
|
4
|
-
//#region src/contracts.d.ts
|
|
5
3
|
/**
|
|
6
4
|
* 能力契约定义
|
|
7
5
|
*
|
|
@@ -211,8 +209,6 @@ type ProgressController = {
|
|
|
211
209
|
* 输出格式类型
|
|
212
210
|
*/
|
|
213
211
|
type OutputFormat = 'text' | 'json';
|
|
214
|
-
//#endregion
|
|
215
|
-
//#region src/provider.d.ts
|
|
216
212
|
/**
|
|
217
213
|
* 设置当前交互 provider(由 createCli 或消费方入口注入)
|
|
218
214
|
*
|
|
@@ -237,8 +233,6 @@ declare function getInteractionProvider(): InteractionProvider;
|
|
|
237
233
|
* @returns 当前生效的着色 provider
|
|
238
234
|
*/
|
|
239
235
|
declare function getColorProvider(): ColorProvider;
|
|
240
|
-
//#endregion
|
|
241
|
-
//#region src/create-cli.d.ts
|
|
242
236
|
/**
|
|
243
237
|
* createCli 工厂的配置选项
|
|
244
238
|
*/
|
|
@@ -295,8 +289,6 @@ type CreateCliOptions = {
|
|
|
295
289
|
* @returns commander Command 实例
|
|
296
290
|
*/
|
|
297
291
|
declare function createCli(options: CreateCliOptions): Command$1;
|
|
298
|
-
//#endregion
|
|
299
|
-
//#region src/version.d.ts
|
|
300
292
|
/**
|
|
301
293
|
* 获取 CLI 版本号
|
|
302
294
|
*
|
|
@@ -309,8 +301,6 @@ declare function createCli(options: CreateCliOptions): Command$1;
|
|
|
309
301
|
* @returns CLI 版本号字符串
|
|
310
302
|
*/
|
|
311
303
|
declare const getCliVersion: () => string;
|
|
312
|
-
//#endregion
|
|
313
|
-
//#region src/output.d.ts
|
|
314
304
|
/**
|
|
315
305
|
* 输出格式化器
|
|
316
306
|
*
|
|
@@ -385,8 +375,6 @@ declare class OutputFormatter {
|
|
|
385
375
|
* @returns 输出格式类型
|
|
386
376
|
*/
|
|
387
377
|
declare function parseOutputFormat(format?: string): OutputFormat;
|
|
388
|
-
//#endregion
|
|
389
|
-
//#region src/tui.d.ts
|
|
390
378
|
/**
|
|
391
379
|
* 交互层模块函数
|
|
392
380
|
*
|
|
@@ -468,8 +456,6 @@ declare const log: {
|
|
|
468
456
|
*/
|
|
469
457
|
step(message: string): void;
|
|
470
458
|
};
|
|
471
|
-
//#endregion
|
|
472
|
-
//#region src/progress.d.ts
|
|
473
459
|
/**
|
|
474
460
|
* 进度条能力(交互无关、平台无关)
|
|
475
461
|
*
|
|
@@ -480,8 +466,6 @@ declare const log: {
|
|
|
480
466
|
* @returns 进度条控制器
|
|
481
467
|
*/
|
|
482
468
|
declare function progressBar(total?: number): ProgressController;
|
|
483
|
-
//#endregion
|
|
484
|
-
//#region src/log-format.d.ts
|
|
485
469
|
/**
|
|
486
470
|
* 日志格式化能力
|
|
487
471
|
*
|
|
@@ -564,8 +548,6 @@ declare function formatLogEntry(entry: LogEntry): string;
|
|
|
564
548
|
* @returns 扁平化后的键值对(所有值为 string)
|
|
565
549
|
*/
|
|
566
550
|
declare function flattenObject(obj: Record<string, unknown>, prefix?: string): Record<string, string>;
|
|
567
|
-
//#endregion
|
|
568
|
-
//#region src/storage.d.ts
|
|
569
551
|
/**
|
|
570
552
|
* 通用 JSON 文件持久化
|
|
571
553
|
*
|
|
@@ -649,8 +631,6 @@ declare class JsonStorage<T> {
|
|
|
649
631
|
*/
|
|
650
632
|
update(predicate: Predicate<T>, updater: Updater<T>): boolean;
|
|
651
633
|
}
|
|
652
|
-
//#endregion
|
|
653
|
-
//#region src/id.d.ts
|
|
654
634
|
/**
|
|
655
635
|
* 带前缀的唯一 ID 生成
|
|
656
636
|
*
|
|
@@ -664,8 +644,6 @@ declare class JsonStorage<T> {
|
|
|
664
644
|
* @returns 唯一 ID 字符串
|
|
665
645
|
*/
|
|
666
646
|
declare function generateId(prefix: string): string;
|
|
667
|
-
//#endregion
|
|
668
|
-
//#region src/define-command.d.ts
|
|
669
647
|
/**
|
|
670
648
|
* 选项声明(commander 选项签名 + 是否带默认值)
|
|
671
649
|
*/
|
|
@@ -784,5 +762,4 @@ declare function resolveCommandParent(program: Command$1, parentName: string): C
|
|
|
784
762
|
* @param spec - 命令参数规格
|
|
785
763
|
*/
|
|
786
764
|
declare function defineCommand<T extends z.ZodType>(program: Command$1, spec: CommandSpec<T>): void;
|
|
787
|
-
//#endregion
|
|
788
765
|
export { type ColorProvider, type Command, type CommandSpec, type ConfirmOptions, type CreateCliOptions, type InteractionProvider, JsonStorage, type LogEntry, type LogLevel, type LogToolset, type OptionDecl, type OutputFormat, OutputFormatter, type ProgressController, type SelectOption, type SpinnerController, type TextInputOptions, confirm, createCli, defineCommand, flattenObject, formatLevel, formatLogEntry, formatTimestamp, generateId, getCliVersion, getColorProvider, getInteractionProvider, log, note, parseOutputFormat, progressBar, resolveCommandParent, select, setColorProvider, setInteractionProvider, spinner, textInput };
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import"./rolldown-runtime-BqT_7tdF.js";import{createNodeLogger as e}from"@longzai-intelligence-logger/node";import{Command as t}from"commander";import{existsSync as n,mkdirSync as r,readFileSync as i,writeFileSync as a}from"node:fs";import{dirname as o,join as s}from"node:path";import{fileURLToPath as c}from"node:url";import
|
|
1
|
+
import"./rolldown-runtime-BqT_7tdF.js";import{createNodeLogger as e}from"@longzai-intelligence-logger/node";import{Command as t}from"commander";import{existsSync as n,mkdirSync as r,readFileSync as i,writeFileSync as a}from"node:fs";import{dirname as o,join as s}from"node:path";import{fileURLToPath as c}from"node:url";import{ensureError as l}from"@longzai-intelligence-error/utils";import*as u from"zod";let d;function f(){return d??=e(`@longzai-intelligence-cli/core/provider`),d}const p={red:e=>e,green:e=>e,yellow:e=>e,blue:e=>e,cyan:e=>e,magenta:e=>e,gray:e=>e,bold:e=>e,dim:e=>e};let m={select:async(e,t)=>t[0]?.value??``,textInput:async(e,t)=>t?.defaultValue??``,confirm:async(e,t)=>t?.defaultValue??!1,spinner:()=>({start:e=>f().info(e),stop:e=>f().info(e)}),note:(e,t)=>{t?f().info(`${t}: ${e}`):f().info(e)},log:{info:e=>f().info(e),success:e=>f().info(e),warn:e=>f().warn(e),error:e=>f().error(e),step:e=>f().info(e)}},h=p;function g(e){m=e}function _(e){h=e}function v(){return m}function y(){return h}function b(e){return typeof e==`object`&&!!e&&(!(`name`in e)||typeof e.name==`string`)&&`version`in e&&typeof e.version==`string`}const x=()=>{let e=process.env.CLI_VERSION;if(typeof e==`string`&&e.length>0)return e;try{let e=s(o(c(import.meta.url)),`..`,`package.json`),t=JSON.parse(i(e,`utf-8`));if(b(t)&&t.name===`@longzai-intelligence-cli/core`)return t.version}catch{}return`0.0.0`};function S(e){let n=e.version??x();e.interaction&&g(e.interaction),e.color&&_(e.color);let r=new t;return r.name(e.name).version(n,`-v, --version`,`输出 ${e.name} 的版本号`),e.description&&r.description(e.description),r}let C;function w(){return C??=e(`@longzai-intelligence-cli/core/output`),C}var T=class{format;constructor(e=`text`){this.format=e}get colors(){return y()}success(e,t){this.format===`json`?w().info(JSON.stringify({success:!0,data:e},null,2)):w().info(t?this.colors.green(t):this.colors.green(this.formatData(e)))}error(e){if(this.format===`json`){let t=l(e),n={message:t.message,name:t.name};w().info(JSON.stringify({success:!1,error:n},null,2))}else{let t=l(e).message;w().error(this.colors.red(`错误: ${t}`))}}info(e){this.format===`json`?w().info(JSON.stringify({success:!0,message:e},null,2)):w().info(this.colors.blue(e))}warn(e){this.format===`json`?w().info(JSON.stringify({success:!0,warning:e},null,2)):w().info(this.colors.yellow(e))}table(e,t){if(this.format===`json`){let n=t.map(t=>{let n={};return e.forEach((e,r)=>{n[e]=t[r]??``}),n});w().info(JSON.stringify({success:!0,data:n},null,2))}else{let n=e.map((e,n)=>Math.min(60,Math.max(e.length,...t.map(e=>(e[n]??``).length))));w().info(e.map((e,t)=>this.colors.bold(e.padEnd(n[t]??0))).join(` `)),w().info(n.map(e=>`─`.repeat(e??0)).join(` `));for(let e of t)w().info(e.map((e,t)=>{let r=n[t]??0,i=e??``;return i.length>r?i.slice(0,Math.max(0,r-1))+`…`:i.padEnd(r)}).join(` `))}}formatData(e){return typeof e==`string`?e:typeof e==`number`||typeof e==`boolean`?String(e):JSON.stringify(e,null,2)}};function E(e){return e===`json`?`json`:`text`}async function D(e,t){return v().select(e,t)}async function O(e,t){return v().textInput(e,t)}async function k(e,t){return v().confirm(e,t)}function A(){return v().spinner()}function j(e,t){v().note(e,t)}const M={info(e){v().log.info(e)},success(e){v().log.success(e)},warn(e){v().log.warn(e)},error(e){v().log.error(e)},step(e){v().log.step(e)}};let N;function P(){return N??=e(`@longzai-intelligence-cli/core/progress`),N}function F(e=100){let t=-1;return{update(e,n){let r=Math.max(0,Math.min(100,e)),i=Math.round(r/100*30),a=`█`.repeat(i)+`░`.repeat(30-i);if(e!==t){t=e;let i=n?` ${n}`:``;process.stdout.write(`\r${y().blue(a)} ${r.toFixed(0)}%${i}`),r>=100&&process.stdout.write(`
|
|
2
2
|
`)}},done(e){process.stdout.write(`
|
|
3
|
-
`),e&&
|
|
3
|
+
`),e&&P().info(y().green(`✓ ${e}`))}}}const I={debug:`gray`,error:`red`,fatal:`red`,info:`green`,trace:`gray`,warn:`yellow`};function L(e){try{return new Date(e).toLocaleString(`zh-CN`,{day:`2-digit`,hour:`2-digit`,hour12:!1,minute:`2-digit`,month:`2-digit`,second:`2-digit`,year:`numeric`})}catch{return e}}function R(e){let t=e.toLowerCase(),n=e.toUpperCase().padEnd(5),r=I[t]??`green`;return y()[r](n)}function z(e){let t=y(),n=[];return e.timestamp!==void 0&&n.push(t.gray(L(e.timestamp))),n.push(R(e.level??`info`)),e.serviceName!==void 0&&e.serviceName!==``&&n.push(t.blue(`[${e.serviceName}]`)),n.push(e.message??String(e.message??``)),e.metadata!==void 0&&typeof e.metadata==`object`&&Object.keys(e.metadata).length>0&&n.push(t.gray(JSON.stringify(e.metadata))),n.join(` `)}function B(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function V(e,t=``){let n={};for(let[r,i]of Object.entries(e)){let e=t===``?r:`${t}.${r}`;B(i)?Object.assign(n,V(i,e)):n[e]=String(i??``)}return n}const H=u.array(u.unknown());function U(e){return H.safeParse(e).success}var W=class{filePath;constructor(e){this.filePath=e;let t=o(e);n(t)||r(t,{recursive:!0}),n(e)||a(e,`[]`,`utf-8`)}read(){try{let e=i(this.filePath,`utf-8`),t=JSON.parse(e);return U(t)?t:[]}catch{return[]}}write(e){let t=o(this.filePath);n(t)||r(t,{recursive:!0}),a(this.filePath,JSON.stringify(e,null,2),`utf-8`)}add(e){let t=this.read();t.push(e),this.write(t)}find(e){return this.read().find(e)}remove(e){let t=this.read(),n=t.filter(t=>!e(t));return n.length!==t.length&&(this.write(n),!0)}update(e,t){let n=this.read(),r=!1,i=n.map(n=>e(n)?(r=!0,t(n)):n);return r&&this.write(i),r}};function G(e){return`${e}_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,8)}`}let K;function q(){return K??=e(`@longzai-intelligence-cli/core/define-command`),K}function J(e,t){let n=e.commands.find(e=>e.name()===t);return n===void 0?e.command(t):n}function Y(e,t){if(t.length===1){let n=t[0];if(n===void 0)throw Error(`defineCommand: segments 为空,无法解析命令名`);return e.command(n)}let[n,...r]=t;if(n===void 0)throw Error(`defineCommand: segments 首段为空,无法解析父命令名`);let i=r.pop();if(i===void 0)throw Error(`defineCommand: segments 末段为空,无法解析子命令名`);let a=J(e,n);for(let e of r)a=J(a,e);return a.command(i)}function X(e,n){let r=Y(e,n.name.split(` `).filter(e=>e.length>0));n.description&&r.description(n.description);for(let e of n.arguments??[])e.description?r.argument(e.signature,e.description):r.argument(e.signature);for(let e of n.options??[])e.defaultValue===void 0?r.option(e.flags,e.description??``):r.option(e.flags,e.description??``,e.defaultValue);r.action(async(...e)=>{let r=e[e.length-1];if(!(r instanceof t))return;let i=r.opts(),a=r.args,o=n.schema.safeParse(i);if(!o.success){let e=o.error.issues.map(e=>e.message).join(`, `);q().error(y().red(`参数校验失败: ${e}`)),v().log.error(`参数校验失败: ${e}`),process.exit(1)}await n.action(o.data,a)})}export{W as JsonStorage,T as OutputFormatter,k as confirm,S as createCli,X as defineCommand,V as flattenObject,R as formatLevel,z as formatLogEntry,L as formatTimestamp,G as generateId,x as getCliVersion,y as getColorProvider,v as getInteractionProvider,M as log,j as note,E as parseOutputFormat,F as progressBar,J as resolveCommandParent,D as select,_ as setColorProvider,g as setInteractionProvider,A as spinner,O as textInput};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@longzai-intelligence-cli/core",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.16",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Longzai Intelligence CLI 核心契约与平台无关能力",
|
|
6
6
|
"keywords": [
|
|
@@ -27,22 +27,20 @@
|
|
|
27
27
|
"build": "lzi-builder",
|
|
28
28
|
"build:prod": "NODE_ENV=production bun run build",
|
|
29
29
|
"prepublishOnly": "bun run build:prod",
|
|
30
|
-
"typecheck": "
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"test:watch": "bun test --watch",
|
|
38
|
-
"test:coverage": "bun test --coverage",
|
|
39
|
-
"clean": "lzi-dev-cli clean"
|
|
30
|
+
"typecheck": "lzi-typecheck",
|
|
31
|
+
"lint": "lzi-lint lint",
|
|
32
|
+
"lint:fix": "lzi-lint fix",
|
|
33
|
+
"test": "lzi-bun test",
|
|
34
|
+
"test:watch": "lzi-bun test --watch",
|
|
35
|
+
"test:coverage": "lzi-bun test --coverage",
|
|
36
|
+
"clean": "lzi-dev-tools clean"
|
|
40
37
|
},
|
|
41
38
|
"dependencies": {
|
|
42
|
-
"@longzai-intelligence-builder/utils": "^0.2.
|
|
43
|
-
"@longzai-intelligence-
|
|
44
|
-
"
|
|
45
|
-
"
|
|
39
|
+
"@longzai-intelligence-builder/utils": "^0.2.28",
|
|
40
|
+
"@longzai-intelligence-error/utils": "^0.2.0",
|
|
41
|
+
"@longzai-intelligence-logger/node": "^0.1.11",
|
|
42
|
+
"commander": "^15.0.0",
|
|
43
|
+
"zod": "^4.6.7"
|
|
46
44
|
},
|
|
47
45
|
"devDependencies": {}
|
|
48
46
|
}
|