@jixo/cli 0.10.1 → 0.12.0
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/cli.d.ts.map +1 -1
- package/dist/cli.js +6 -5
- package/dist/cli.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +18 -12
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/prompts/list.js +2 -2
- package/dist/commands/prompts/list.js.map +1 -1
- package/dist/commands/tasks/AiTaskTui.d.ts +22 -0
- package/dist/commands/tasks/AiTaskTui.d.ts.map +1 -0
- package/dist/commands/tasks/AiTaskTui.js +52 -0
- package/dist/commands/tasks/AiTaskTui.js.map +1 -0
- package/dist/commands/tasks/ai-tasl-tui.d.ts +22 -0
- package/dist/commands/tasks/ai-tasl-tui.d.ts.map +1 -0
- package/dist/commands/tasks/ai-tasl-tui.js +53 -0
- package/dist/commands/tasks/ai-tasl-tui.js.map +1 -0
- package/dist/commands/tasks/ai-tools.d.ts +281 -8
- package/dist/commands/tasks/ai-tools.d.ts.map +1 -1
- package/dist/commands/tasks/ai-tools.js +55 -16
- package/dist/commands/tasks/ai-tools.js.map +1 -1
- package/dist/commands/tasks/model-providers.d.ts +5 -1
- package/dist/commands/tasks/model-providers.d.ts.map +1 -1
- package/dist/commands/tasks/model-providers.js +31 -0
- package/dist/commands/tasks/model-providers.js.map +1 -1
- package/dist/commands/tasks/run-ai-task.d.ts +1 -1
- package/dist/commands/tasks/run-ai-task.d.ts.map +1 -1
- package/dist/commands/tasks/run-ai-task.js +141 -115
- package/dist/commands/tasks/run-ai-task.js.map +1 -1
- package/dist/commands/tasks/run.d.ts.map +1 -1
- package/dist/commands/tasks/run.js +24 -14
- package/dist/commands/tasks/run.js.map +1 -1
- package/dist/config.d.ts +14 -14
- package/dist/helper/ai-retry-error.d.ts +1 -1
- package/dist/helper/ai-retry-error.d.ts.map +1 -1
- package/dist/helper/ai-retry-error.js +63 -30
- package/dist/helper/ai-retry-error.js.map +1 -1
- package/dist/helper/handle-ai-error.d.ts +5 -0
- package/dist/helper/handle-ai-error.d.ts.map +1 -0
- package/dist/helper/handle-ai-error.js +122 -0
- package/dist/helper/handle-ai-error.js.map +1 -0
- package/dist/helper/logger.d.ts +3 -0
- package/dist/helper/logger.d.ts.map +1 -0
- package/dist/helper/logger.js +26 -0
- package/dist/helper/logger.js.map +1 -0
- package/dist/helper/prompts-loader.d.ts +9 -3
- package/dist/helper/prompts-loader.d.ts.map +1 -1
- package/dist/helper/prompts-loader.js +16 -16
- package/dist/helper/prompts-loader.js.map +1 -1
- package/dist/helper/resolve-ai-tasks.d.ts +24 -10
- package/dist/helper/resolve-ai-tasks.d.ts.map +1 -1
- package/dist/helper/resolve-ai-tasks.js +68 -26
- package/dist/helper/resolve-ai-tasks.js.map +1 -1
- package/dist/prompts.json +2 -2
- package/package.json +8 -3
package/dist/cli.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,MAAM,GAAU,OAAM,MAAM,EAAiB,kBAqHzD,CAAC"}
|
package/dist/cli.js
CHANGED
@@ -2,6 +2,7 @@ import { cwdResolver } from "@gaubee/node";
|
|
2
2
|
import { match, P } from "ts-pattern";
|
3
3
|
import yargs from "yargs";
|
4
4
|
import { hideBin } from "yargs/helpers";
|
5
|
+
import packageJson from "../package.json" with { type: "json" };
|
5
6
|
import { doctor } from "./commands/doctor/index.js";
|
6
7
|
import { init } from "./commands/init.js";
|
7
8
|
import { listPrompts } from "./commands/prompts/list.js";
|
@@ -10,6 +11,7 @@ import { run } from "./commands/tasks/run.js";
|
|
10
11
|
export const runCli = async (args = process.argv) => {
|
11
12
|
const cli = await yargs(hideBin(args))
|
12
13
|
.scriptName("jixo")
|
14
|
+
.version(packageJson.version)
|
13
15
|
.command("doctor", "Check the requirements for run jixo", (yargs) => yargs, () => {
|
14
16
|
doctor();
|
15
17
|
})
|
@@ -39,12 +41,11 @@ export const runCli = async (args = process.argv) => {
|
|
39
41
|
description: "Tasks are forced to run, even at 100% progress. It is suitable for running after modifying the content of the task",
|
40
42
|
})
|
41
43
|
.option("once", {
|
42
|
-
alias: "O",
|
43
44
|
type: "boolean",
|
44
|
-
description: "The task is executed only once in the loop, equal to --
|
45
|
+
description: "The task is executed only once in the loop, equal to --loop=1",
|
45
46
|
})
|
46
|
-
.option("
|
47
|
-
alias: "
|
47
|
+
.option("loop", {
|
48
|
+
alias: "L",
|
48
49
|
type: "number",
|
49
50
|
description: "The task is executed N times in the loop",
|
50
51
|
});
|
@@ -65,7 +66,7 @@ export const runCli = async (args = process.argv) => {
|
|
65
66
|
dirFilter,
|
66
67
|
force: argv.force,
|
67
68
|
loopTimes: match(argv)
|
68
|
-
.with({
|
69
|
+
.with({ loop: P.number.gt(0).select() }, (loop) => loop)
|
69
70
|
.with({ once: P.boolean.select() }, (once) => (once ? 1 : Infinity))
|
70
71
|
.otherwise(() => Infinity),
|
71
72
|
});
|
package/dist/cli.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AACzC,OAAO,EAAC,KAAK,EAAE,CAAC,EAAC,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AACtC,OAAO,EAAC,MAAM,EAAC,MAAM,4BAA4B,CAAC;AAClD,OAAO,EAAC,IAAI,EAAC,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAC,WAAW,EAAC,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAC,cAAc,EAAC,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAC,GAAG,EAAC,MAAM,yBAAyB,CAAC;AAE5C,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,EAAE,OAAiB,OAAO,CAAC,IAAI,EAAE,EAAE;IAC5D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SACnC,UAAU,CAAC,MAAM,CAAC;SAClB,OAAO,CACN,QAAQ,EACR,qCAAqC,EACrC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAChB,GAAG,EAAE;QACH,MAAM,EAAE,CAAC;IACX,CAAC,CACF;SACA,OAAO,CACN,YAAY,EACZ,2BAA2B,EAC3B,CAAC,KAAK,EAAE,EAAE;QACR,OAAO,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE;YAC7B,QAAQ,EAAE,yCAAyC;YACnD,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;IACL,CAAC,EACD,CAAC,IAAI,EAAE,EAAE;QACP,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,CAAC,CACF;SACA,OAAO,CACN,iBAAiB,EACjB,gBAAgB,EAChB,CAAC,KAAK,EAAE,EAAE;QACR,OAAO,KAAK;aACT,UAAU,CAAC,QAAQ,EAAE;YACpB,QAAQ,EAAE,qDAAqD;YAC/D,KAAK,EAAE,IAAI;YACX,OAAO,EAAE,EAAE;SACZ,CAAC;aACD,MAAM,CAAC,KAAK,EAAE;YACb,KAAK,EAAE,GAAG;YACV,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,wCAAwC;SACtD,CAAC;aACD,MAAM,CAAC,OAAO,EAAE;YACf,KAAK,EAAE,GAAG;YACV,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,oHAAoH;SAClI,CAAC;aACD,MAAM,CAAC,MAAM,EAAE;YACd,
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AACzC,OAAO,EAAC,KAAK,EAAE,CAAC,EAAC,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AACtC,OAAO,WAAW,MAAM,iBAAiB,CAAC,OAAM,IAAI,EAAE,MAAM,EAAC,CAAC;AAC9D,OAAO,EAAC,MAAM,EAAC,MAAM,4BAA4B,CAAC;AAClD,OAAO,EAAC,IAAI,EAAC,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAC,WAAW,EAAC,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAC,cAAc,EAAC,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAC,GAAG,EAAC,MAAM,yBAAyB,CAAC;AAE5C,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,EAAE,OAAiB,OAAO,CAAC,IAAI,EAAE,EAAE;IAC5D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SACnC,UAAU,CAAC,MAAM,CAAC;SAClB,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;SAC5B,OAAO,CACN,QAAQ,EACR,qCAAqC,EACrC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAChB,GAAG,EAAE;QACH,MAAM,EAAE,CAAC;IACX,CAAC,CACF;SACA,OAAO,CACN,YAAY,EACZ,2BAA2B,EAC3B,CAAC,KAAK,EAAE,EAAE;QACR,OAAO,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE;YAC7B,QAAQ,EAAE,yCAAyC;YACnD,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;IACL,CAAC,EACD,CAAC,IAAI,EAAE,EAAE;QACP,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,CAAC,CACF;SACA,OAAO,CACN,iBAAiB,EACjB,gBAAgB,EAChB,CAAC,KAAK,EAAE,EAAE;QACR,OAAO,KAAK;aACT,UAAU,CAAC,QAAQ,EAAE;YACpB,QAAQ,EAAE,qDAAqD;YAC/D,KAAK,EAAE,IAAI;YACX,OAAO,EAAE,EAAE;SACZ,CAAC;aACD,MAAM,CAAC,KAAK,EAAE;YACb,KAAK,EAAE,GAAG;YACV,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,wCAAwC;SACtD,CAAC;aACD,MAAM,CAAC,OAAO,EAAE;YACf,KAAK,EAAE,GAAG;YACV,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,oHAAoH;SAClI,CAAC;aACD,MAAM,CAAC,MAAM,EAAE;YACd,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,+DAA+D;SAC7E,CAAC;aACD,MAAM,CAAC,MAAM,EAAE;YACd,KAAK,EAAE,GAAG;YACV,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,0CAA0C;SACxD,CAAC,CAAC;IACP,CAAC,EACD,CAAC,IAAI,EAAE,EAAE;QACP,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5E,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QACD,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE;YAC/B,UAAU;YACV,SAAS;YACT,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC;iBACnB,IAAI,CAAC,EAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC;iBACrD,IAAI,CAAC,EAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;iBACjE,SAAS,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC;SAC7B,CAAC,CAAC;IACL,CAAC,CACF;SACA,OAAO,CACN,SAAS,EACT,gBAAgB,EAChB,CAAC,KAAK,EAAE,EAAE;QACR,OAAO,CACL,KAAK;YACH,EAAE;aACD,MAAM,CAAC,KAAK,EAAE;YACb,KAAK,EAAE,GAAG;YACV,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,wCAAwC;SACtD,CAAC;aACD,MAAM,CAAC,WAAW,EAAE;YACnB,KAAK,EAAE,GAAG;YACV,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,8BAA8B;SAC5C,CAAC;aACD,MAAM,CAAC,SAAS,EAAE;YACjB,KAAK,EAAE,GAAG;YACV,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,yBAAyB;SACvC,CAAC,CACL,CAAC;IACJ,CAAC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,EAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAC,CAAC,CAAC;QAChG,CAAC;aAAM,CAAC;YACN,WAAW,EAAE,CAAC;QAChB,CAAC;IACH,CAAC,CACF;SACA,MAAM,EAAE,CAAC;IACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;IAE/B,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,GAAG,CAAC,QAAQ,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,MAAM,MAAM,EAAE,CAAC;IACjB,CAAC;AACH,CAAC,CAAC","sourcesContent":["import {cwdResolver} from \"@gaubee/node\";\nimport {match, P} from \"ts-pattern\";\nimport yargs from \"yargs\";\nimport {hideBin} from \"yargs/helpers\";\nimport packageJson from \"../package.json\" with {type: \"json\"};\nimport {doctor} from \"./commands/doctor/index.js\";\nimport {init} from \"./commands/init.js\";\nimport {listPrompts} from \"./commands/prompts/list.js\";\nimport {upgradePrompts} from \"./commands/prompts/upgrade.js\";\nimport {run} from \"./commands/tasks/run.js\";\n\nexport const runCli = async (args: string[] = process.argv) => {\n const cli = await yargs(hideBin(args))\n .scriptName(\"jixo\")\n .version(packageJson.version)\n .command(\n \"doctor\",\n \"Check the requirements for run jixo\",\n (yargs) => yargs,\n () => {\n doctor();\n },\n )\n .command(\n \"init [dir]\",\n \"Create a new JIXO project\",\n (yargs) => {\n return yargs.positional(\"dir\", {\n describe: \"The directory to create the JIXO config\",\n default: \"./\",\n });\n },\n (argv) => {\n init(cwdResolver(argv.dir));\n },\n )\n .command(\n \"run [filter...]\",\n \"Run JIXO tasks\",\n (yargs) => {\n return yargs\n .positional(\"filter\", {\n describe: 'Fliter tasks by name or directory(starts with \"./\")',\n array: true,\n default: [],\n })\n .option(\"dir\", {\n alias: \"D\",\n type: \"string\",\n description: \"The project directory with JIXO config\",\n })\n .option(\"force\", {\n alias: \"F\",\n type: \"boolean\",\n description: \"Tasks are forced to run, even at 100% progress. It is suitable for running after modifying the content of the task\",\n })\n .option(\"once\", {\n type: \"boolean\",\n description: \"The task is executed only once in the loop, equal to --loop=1\",\n })\n .option(\"loop\", {\n alias: \"L\",\n type: \"number\",\n description: \"The task is executed N times in the loop\",\n });\n },\n (argv) => {\n const filters = argv.filter.map((v) => v.toString().split(/[\\s,]+/)).flat();\n const nameFilter: string[] = [];\n const dirFilter: string[] = [];\n for (const f of filters) {\n if (f.startsWith(\"./\") || f.startsWith(\"../\") || f.startsWith(\"~/\")) {\n dirFilter.push(f);\n } else {\n nameFilter.push(f);\n }\n }\n run(cwdResolver(argv.dir ?? \"\"), {\n nameFilter,\n dirFilter,\n force: argv.force,\n loopTimes: match(argv)\n .with({loop: P.number.gt(0).select()}, (loop) => loop)\n .with({once: P.boolean.select()}, (once) => (once ? 1 : Infinity))\n .otherwise(() => Infinity),\n });\n },\n )\n .command(\n \"prompts\",\n \"Manage prompts\",\n (yargs) => {\n return (\n yargs\n //\n .option(\"dir\", {\n alias: \"D\",\n type: \"string\",\n description: \"The project directory with JIXO config\",\n })\n .option(\"mirrorUrl\", {\n alias: \"M\",\n type: \"string\",\n description: \"The Url for download prompts\",\n })\n .option(\"upgrade\", {\n alias: \"U\",\n type: \"boolean\",\n description: \"Upgrade builtin prompts\",\n })\n );\n },\n async (argv) => {\n if (argv.upgrade) {\n upgradePrompts(argv.dir ? cwdResolver(argv.dir) : cwdResolver(), {mirrorUrl: argv.mirrorUrl});\n } else {\n listPrompts();\n }\n },\n )\n .strict();\n const argv = await cli.parse();\n\n if (argv._.length === 0) {\n cli.showHelp();\n console.log(\" \" + \"─\".repeat(Math.max(4, process.stdout.columns - 2)));\n await doctor();\n }\n};\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,IAAI,GAAI,KAAK,MAAM,
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,IAAI,GAAI,KAAK,MAAM,SAkD/B,CAAC"}
|
package/dist/commands/init.js
CHANGED
@@ -8,8 +8,8 @@ export const init = (dir) => {
|
|
8
8
|
const jixoDirname = path.join(dir, ".jixo");
|
9
9
|
/// 创建 .jixo 目录
|
10
10
|
fs.mkdirSync(jixoDirname, { recursive: true });
|
11
|
-
/// .jixo/readme.
|
12
|
-
const readmeTaskFilepath = path.join(jixoDirname, "readme.
|
11
|
+
/// .jixo/readme.job.md
|
12
|
+
const readmeTaskFilepath = path.join(jixoDirname, "readme.job.md");
|
13
13
|
if (!fs.existsSync(readmeTaskFilepath)) {
|
14
14
|
writeMarkdown(readmeTaskFilepath, str_trim_indent(`
|
15
15
|
<!-- 您可以自定义 readme.md 文件的格式 -->
|
@@ -18,6 +18,9 @@ export const init = (dir) => {
|
|
18
18
|
agents: ["readme-writer"],
|
19
19
|
});
|
20
20
|
}
|
21
|
+
/// .jixo/.gitignore
|
22
|
+
const gitignoreFilepath = path.join(jixoDirname, ".gitignore");
|
23
|
+
addRulesToGitIgnore(gitignoreFilepath, ["*.log.jsonl", "*.log.jsonl.txt"]);
|
21
24
|
}
|
22
25
|
/// jixo.config.json
|
23
26
|
{
|
@@ -41,17 +44,20 @@ export const init = (dir) => {
|
|
41
44
|
/// .gitignore
|
42
45
|
{
|
43
46
|
const gitignoreFilepath = path.join(dir, ".gitignore");
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
47
|
+
addRulesToGitIgnore(gitignoreFilepath, ["*.memory.json", "memory.json", ".jixo.env"]);
|
48
|
+
}
|
49
|
+
};
|
50
|
+
const addRulesToGitIgnore = (gitignoreFilepath, rules) => {
|
51
|
+
const gitignoreLines = (fs.existsSync(gitignoreFilepath) ? fs.readFileSync(gitignoreFilepath, "utf-8") : "").split(/\n+/);
|
52
|
+
let changed = false;
|
53
|
+
for (const line of rules) {
|
54
|
+
if (!gitignoreLines.includes(line)) {
|
55
|
+
gitignoreLines.unshift(line);
|
56
|
+
changed = true;
|
54
57
|
}
|
55
58
|
}
|
59
|
+
if (changed) {
|
60
|
+
fs.writeFileSync(gitignoreFilepath, gitignoreLines.join("\n"));
|
61
|
+
}
|
56
62
|
};
|
57
63
|
//# sourceMappingURL=init.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAC,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAClC,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,EAAE;IAClC,CAAC;QACC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC5C,eAAe;QACf,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;QAC7C,
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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","sourcesContent":["import {writeJson, writeMarkdown, writeText} from \"@gaubee/nodekit\";\nimport {str_trim_indent} from \"@gaubee/util\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport type {JixoConfig} from \"../config.js\";\nimport {safeEnv} from \"../env.js\";\nexport const init = (dir: string) => {\n {\n const jixoDirname = path.join(dir, \".jixo\");\n /// 创建 .jixo 目录\n fs.mkdirSync(jixoDirname, {recursive: true});\n /// .jixo/readme.job.md\n const readmeTaskFilepath = path.join(jixoDirname, \"readme.job.md\");\n if (!fs.existsSync(readmeTaskFilepath)) {\n writeMarkdown(\n readmeTaskFilepath,\n str_trim_indent(`\n <!-- 您可以自定义 readme.md 文件的格式 -->\n 请JIXO帮我生成或者追加 README 文件\n `),\n {\n agents: [\"readme-writer\"],\n },\n );\n }\n /// .jixo/.gitignore\n const gitignoreFilepath = path.join(jixoDirname, \".gitignore\");\n addRulesToGitIgnore(gitignoreFilepath, [\"*.log.jsonl\", \"*.log.jsonl.txt\"]);\n }\n /// jixo.config.json\n {\n const jixoConfigFilepath = path.join(dir, \"jixo.config.json\");\n if (!fs.existsSync(jixoConfigFilepath)) {\n writeJson(jixoConfigFilepath, {\n tasks: {type: \"dir\", dirname: \".jixo\"},\n } satisfies JixoConfig);\n }\n }\n /// .jixo.env\n {\n const jixoEnvFilepath = path.join(dir, \".jixo.env\");\n if (!fs.existsSync(jixoEnvFilepath)) {\n writeText(\n jixoEnvFilepath,\n Object.keys(safeEnv)\n .filter((key) => key.startsWith(\"JIXO_\"))\n .map((key) => `${key}=\"\"`)\n .join(\"\\n\"),\n );\n }\n }\n /// .gitignore\n {\n const gitignoreFilepath = path.join(dir, \".gitignore\");\n addRulesToGitIgnore(gitignoreFilepath, [\"*.memory.json\", \"memory.json\", \".jixo.env\"]);\n }\n};\n\nconst addRulesToGitIgnore = (gitignoreFilepath: string, rules: string[]) => {\n const gitignoreLines = (fs.existsSync(gitignoreFilepath) ? fs.readFileSync(gitignoreFilepath, \"utf-8\") : \"\").split(/\\n+/);\n let changed = false;\n for (const line of rules) {\n if (!gitignoreLines.includes(line)) {\n gitignoreLines.unshift(line);\n changed = true;\n }\n }\n if (changed) {\n fs.writeFileSync(gitignoreFilepath, gitignoreLines.join(\"\\n\"));\n }\n};\n"]}
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import { cyan, gray } from "@gaubee/nodekit";
|
2
2
|
import { obj_props } from "@gaubee/util";
|
3
|
-
import {
|
3
|
+
import { getAllPromptConfigs } from "../../helper/prompts-loader.js";
|
4
4
|
export const listPrompts = async () => {
|
5
|
-
const configs = await
|
5
|
+
const configs = await getAllPromptConfigs();
|
6
6
|
for (const key of obj_props(configs)) {
|
7
7
|
const config = configs[key];
|
8
8
|
console.log(`- ${cyan(key)}: ${gray(config.content.split("\n")[0])}...`);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/prompts/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAE,IAAI,EAAC,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AACvC,OAAO,EAAC,
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/prompts/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAE,IAAI,EAAC,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AACvC,OAAO,EAAC,mBAAmB,EAAC,MAAM,gCAAgC,CAAC;AAEnE,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,IAAI,EAAE;IACpC,MAAM,OAAO,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAC5C,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACzE,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;AACH,CAAC,CAAC","sourcesContent":["import {cyan, gray} from \"@gaubee/nodekit\";\nimport {obj_props} from \"@gaubee/util\";\nimport {getAllPromptConfigs} from \"../../helper/prompts-loader.js\";\n\nexport const listPrompts = async () => {\n const configs = await getAllPromptConfigs();\n for (const key of obj_props(configs)) {\n const config = configs[key];\n console.log(`- ${cyan(key)}: ${gray(config.content.split(\"\\n\")[0])}...`);\n if (config.data.parent.length) {\n console.log(` parent: ${config.data.parent.map(cyan).join(\", \")}`);\n }\n }\n};\n"]}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
import { type Spinner } from "@gaubee/nodekit";
|
2
|
+
import type { AiTask } from "../../helper/resolve-ai-tasks.js";
|
3
|
+
export declare class AiTaskTui {
|
4
|
+
#private;
|
5
|
+
readonly ai_task: AiTask;
|
6
|
+
readonly spinner: Spinner;
|
7
|
+
endInfo: {
|
8
|
+
prefixText: string;
|
9
|
+
text: string;
|
10
|
+
readonly suffixText: string;
|
11
|
+
};
|
12
|
+
constructor(ai_task: AiTask, spinner: Spinner);
|
13
|
+
setStatus(key: string, value: string): void;
|
14
|
+
getStatus(key: string): string | undefined;
|
15
|
+
removeStatus(key: string): boolean;
|
16
|
+
get text(): string;
|
17
|
+
set text(v: string);
|
18
|
+
get prefixText(): string;
|
19
|
+
set prefixText(v: string);
|
20
|
+
stop(): void;
|
21
|
+
}
|
22
|
+
//# sourceMappingURL=AiTaskTui.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"AiTaskTui.d.ts","sourceRoot":"","sources":["../../../src/commands/tasks/AiTaskTui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAE/D,qBAAa,SAAS;;IAYlB,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO;IAZ3B,OAAO;;;;MASF;gBAEM,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO;IAK3B,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAIpC,SAAS,CAAC,GAAG,EAAE,MAAM;IAGrB,YAAY,CAAC,GAAG,EAAE,MAAM;IAOxB,IAAI,IAAI,WAEP;IACD,IAAI,IAAI,CAAC,CAAC,QAAA,EAET;IACD,IAAI,UAAU,WAEb;IACD,IAAI,UAAU,CAAC,CAAC,QAAA,EAGf;IACD,IAAI;CAGL"}
|
@@ -0,0 +1,52 @@
|
|
1
|
+
import { gray } from "@gaubee/nodekit";
|
2
|
+
export class AiTaskTui {
|
3
|
+
ai_task;
|
4
|
+
spinner;
|
5
|
+
endInfo = (() => {
|
6
|
+
const self = this;
|
7
|
+
return {
|
8
|
+
prefixText: "",
|
9
|
+
text: "",
|
10
|
+
get suffixText() {
|
11
|
+
return `⏱️ ${gray(ms(new Date().getTime() - new Date(self.ai_task.startTime).getTime(), { long: true }))}`;
|
12
|
+
},
|
13
|
+
};
|
14
|
+
})();
|
15
|
+
constructor(ai_task, spinner) {
|
16
|
+
this.ai_task = ai_task;
|
17
|
+
this.spinner = spinner;
|
18
|
+
this.prefixText = this.spinner.prefixText;
|
19
|
+
}
|
20
|
+
#status = new Map();
|
21
|
+
setStatus(key, value) {
|
22
|
+
this.#status.set(key, value);
|
23
|
+
this.#updatePrefixText();
|
24
|
+
}
|
25
|
+
getStatus(key) {
|
26
|
+
return this.#status.get(key);
|
27
|
+
}
|
28
|
+
removeStatus(key) {
|
29
|
+
return this.#status.delete(key);
|
30
|
+
}
|
31
|
+
#prefixText = "";
|
32
|
+
#updatePrefixText = () => {
|
33
|
+
this.spinner.prefixText = `${[...this.#status.values()].join(" ")}\n${this.#prefixText}`;
|
34
|
+
};
|
35
|
+
get text() {
|
36
|
+
return this.spinner.text;
|
37
|
+
}
|
38
|
+
set text(v) {
|
39
|
+
this.spinner.text = v;
|
40
|
+
}
|
41
|
+
get prefixText() {
|
42
|
+
return this.#prefixText;
|
43
|
+
}
|
44
|
+
set prefixText(v) {
|
45
|
+
this.#prefixText = v;
|
46
|
+
this.#updatePrefixText();
|
47
|
+
}
|
48
|
+
stop() {
|
49
|
+
this.spinner.stopAndPersist(this.endInfo);
|
50
|
+
}
|
51
|
+
}
|
52
|
+
//# sourceMappingURL=AiTaskTui.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"AiTaskTui.js","sourceRoot":"","sources":["../../../src/commands/tasks/AiTaskTui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAgB,MAAM,iBAAiB,CAAC;AAIrD,MAAM,OAAO,SAAS;IAYT;IACA;IAZX,OAAO,GAAG,CAAC,GAAG,EAAE;QACd,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO;YACL,UAAU,EAAE,EAAE;YACd,IAAI,EAAE,EAAE;YACR,IAAI,UAAU;gBACZ,OAAO,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;YAC9G,CAAC;SACF,CAAC;IACJ,CAAC,CAAC,EAAE,CAAC;IACL,YACW,OAAe,EACf,OAAgB;QADhB,YAAO,GAAP,OAAO,CAAQ;QACf,YAAO,GAAP,OAAO,CAAS;QAEzB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;IAC5C,CAAC;IACD,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IACpC,SAAS,CAAC,GAAW,EAAE,KAAa;QAClC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IACD,SAAS,CAAC,GAAW;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IACD,YAAY,CAAC,GAAW;QACtB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IACD,WAAW,GAAG,EAAE,CAAC;IACjB,iBAAiB,GAAG,GAAG,EAAE;QACvB,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;IAC3F,CAAC,CAAC;IACF,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IACD,IAAI,IAAI,CAAC,CAAC;QACR,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IACD,IAAI,UAAU,CAAC,CAAC;QACd,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IACD,IAAI;QACF,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;CACF","sourcesContent":["import { gray, type Spinner } from \"@gaubee/nodekit\";\nimport type ms from \"ms\";\nimport type { AiTask } from \"../../helper/resolve-ai-tasks.js\";\n\nexport class AiTaskTui {\n endInfo = (() => {\n const self = this;\n return {\n prefixText: \"\",\n text: \"\",\n get suffixText() {\n return `⏱️ ${gray(ms(new Date().getTime() - new Date(self.ai_task.startTime).getTime(), { long: true }))}`;\n },\n };\n })();\n constructor(\n readonly ai_task: AiTask,\n readonly spinner: Spinner\n ) {\n this.prefixText = this.spinner.prefixText;\n }\n #status = new Map<string, string>();\n setStatus(key: string, value: string) {\n this.#status.set(key, value);\n this.#updatePrefixText();\n }\n getStatus(key: string) {\n return this.#status.get(key);\n }\n removeStatus(key: string) {\n return this.#status.delete(key);\n }\n #prefixText = \"\";\n #updatePrefixText = () => {\n this.spinner.prefixText = `${[...this.#status.values()].join(\" \")}\\n${this.#prefixText}`;\n };\n get text() {\n return this.spinner.text;\n }\n set text(v) {\n this.spinner.text = v;\n }\n get prefixText() {\n return this.#prefixText;\n }\n set prefixText(v) {\n this.#prefixText = v;\n this.#updatePrefixText();\n }\n stop() {\n this.spinner.stopAndPersist(this.endInfo);\n }\n}\n"]}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
import { type Spinner } from "@gaubee/nodekit";
|
2
|
+
import type { AiTask } from "../../helper/resolve-ai-tasks.js";
|
3
|
+
export declare class AiTaskTui {
|
4
|
+
#private;
|
5
|
+
readonly ai_task: AiTask;
|
6
|
+
readonly spinner: Spinner;
|
7
|
+
endInfo: {
|
8
|
+
prefixText: string;
|
9
|
+
text: string;
|
10
|
+
readonly suffixText: string;
|
11
|
+
};
|
12
|
+
constructor(ai_task: AiTask, spinner: Spinner);
|
13
|
+
setStatus(key: string, value: string): void;
|
14
|
+
getStatus(key: string): string | undefined;
|
15
|
+
removeStatus(key: string): boolean;
|
16
|
+
get text(): string;
|
17
|
+
set text(v: string);
|
18
|
+
get prefixText(): string;
|
19
|
+
set prefixText(v: string);
|
20
|
+
stop(): void;
|
21
|
+
}
|
22
|
+
//# sourceMappingURL=ai-tasl-tui.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ai-tasl-tui.d.ts","sourceRoot":"","sources":["../../../src/commands/tasks/ai-tasl-tui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,OAAO,EAAC,MAAM,iBAAiB,CAAC;AAEnD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,kCAAkC,CAAC;AAE7D,qBAAa,SAAS;;IAYlB,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO;IAZ3B,OAAO;;;;MASF;gBAEM,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO;IAK3B,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAIpC,SAAS,CAAC,GAAG,EAAE,MAAM;IAGrB,YAAY,CAAC,GAAG,EAAE,MAAM;IAOxB,IAAI,IAAI,WAEP;IACD,IAAI,IAAI,CAAC,CAAC,QAAA,EAET;IACD,IAAI,UAAU,WAEb;IACD,IAAI,UAAU,CAAC,CAAC,QAAA,EAGf;IACD,IAAI;CAGL"}
|
@@ -0,0 +1,53 @@
|
|
1
|
+
import { gray } from "@gaubee/nodekit";
|
2
|
+
import ms from "ms";
|
3
|
+
export class AiTaskTui {
|
4
|
+
ai_task;
|
5
|
+
spinner;
|
6
|
+
endInfo = (() => {
|
7
|
+
const self = this;
|
8
|
+
return {
|
9
|
+
prefixText: "",
|
10
|
+
text: "",
|
11
|
+
get suffixText() {
|
12
|
+
return `⏱️ ${gray(ms(new Date().getTime() - new Date(self.ai_task.startTime).getTime(), { long: true }))}`;
|
13
|
+
},
|
14
|
+
};
|
15
|
+
})();
|
16
|
+
constructor(ai_task, spinner) {
|
17
|
+
this.ai_task = ai_task;
|
18
|
+
this.spinner = spinner;
|
19
|
+
this.prefixText = this.spinner.prefixText;
|
20
|
+
}
|
21
|
+
#status = new Map();
|
22
|
+
setStatus(key, value) {
|
23
|
+
this.#status.set(key, value);
|
24
|
+
this.#updatePrefixText();
|
25
|
+
}
|
26
|
+
getStatus(key) {
|
27
|
+
return this.#status.get(key);
|
28
|
+
}
|
29
|
+
removeStatus(key) {
|
30
|
+
return this.#status.delete(key);
|
31
|
+
}
|
32
|
+
#prefixText = "";
|
33
|
+
#updatePrefixText = () => {
|
34
|
+
this.spinner.prefixText = `${[...this.#status.values()].join(" ")}\n${this.#prefixText}`;
|
35
|
+
};
|
36
|
+
get text() {
|
37
|
+
return this.spinner.text;
|
38
|
+
}
|
39
|
+
set text(v) {
|
40
|
+
this.spinner.text = v;
|
41
|
+
}
|
42
|
+
get prefixText() {
|
43
|
+
return this.#prefixText;
|
44
|
+
}
|
45
|
+
set prefixText(v) {
|
46
|
+
this.#prefixText = v;
|
47
|
+
this.#updatePrefixText();
|
48
|
+
}
|
49
|
+
stop() {
|
50
|
+
this.spinner.stopAndPersist(this.endInfo);
|
51
|
+
}
|
52
|
+
}
|
53
|
+
//# sourceMappingURL=ai-tasl-tui.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ai-tasl-tui.js","sourceRoot":"","sources":["../../../src/commands/tasks/ai-tasl-tui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAe,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,MAAM,IAAI,CAAC;AAGpB,MAAM,OAAO,SAAS;IAYT;IACA;IAZX,OAAO,GAAG,CAAC,GAAG,EAAE;QACd,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO;YACL,UAAU,EAAE,EAAE;YACd,IAAI,EAAE,EAAE;YACR,IAAI,UAAU;gBACZ,OAAO,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC,EAAE,CAAC;YAC5G,CAAC;SACF,CAAC;IACJ,CAAC,CAAC,EAAE,CAAC;IACL,YACW,OAAe,EACf,OAAgB;QADhB,YAAO,GAAP,OAAO,CAAQ;QACf,YAAO,GAAP,OAAO,CAAS;QAEzB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;IAC5C,CAAC;IACD,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IACpC,SAAS,CAAC,GAAW,EAAE,KAAa;QAClC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IACD,SAAS,CAAC,GAAW;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IACD,YAAY,CAAC,GAAW;QACtB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IACD,WAAW,GAAG,EAAE,CAAC;IACjB,iBAAiB,GAAG,GAAG,EAAE;QACvB,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;IAC3F,CAAC,CAAC;IACF,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IACD,IAAI,IAAI,CAAC,CAAC;QACR,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IACD,IAAI,UAAU,CAAC,CAAC;QACd,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IACD,IAAI;QACF,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;CACF","sourcesContent":["import {gray, type Spinner} from \"@gaubee/nodekit\";\nimport ms from \"ms\";\nimport type {AiTask} from \"../../helper/resolve-ai-tasks.js\";\n\nexport class AiTaskTui {\n endInfo = (() => {\n const self = this;\n return {\n prefixText: \"\",\n text: \"\",\n get suffixText() {\n return `⏱️ ${gray(ms(new Date().getTime() - new Date(self.ai_task.startTime).getTime(), {long: true}))}`;\n },\n };\n })();\n constructor(\n readonly ai_task: AiTask,\n readonly spinner: Spinner,\n ) {\n this.prefixText = this.spinner.prefixText;\n }\n #status = new Map<string, string>();\n setStatus(key: string, value: string) {\n this.#status.set(key, value);\n this.#updatePrefixText();\n }\n getStatus(key: string) {\n return this.#status.get(key);\n }\n removeStatus(key: string) {\n return this.#status.delete(key);\n }\n #prefixText = \"\";\n #updatePrefixText = () => {\n this.spinner.prefixText = `${[...this.#status.values()].join(\" \")}\\n${this.#prefixText}`;\n };\n get text() {\n return this.spinner.text;\n }\n set text(v) {\n this.spinner.text = v;\n }\n get prefixText() {\n return this.#prefixText;\n }\n set prefixText(v) {\n this.#prefixText = v;\n this.#updatePrefixText();\n }\n stop() {\n this.spinner.stopAndPersist(this.endInfo);\n }\n}\n"]}
|