@jixo/cli 0.11.0 → 0.13.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 +41 -67
- package/dist/cli.js.map +1 -1
- package/dist/commands/daemon.d.ts +5 -0
- package/dist/commands/daemon.d.ts.map +1 -0
- package/dist/commands/daemon.js +20 -0
- package/dist/commands/daemon.js.map +1 -0
- package/dist/commands/doctor/config.d.ts.map +1 -1
- package/dist/commands/doctor/config.js +5 -18
- package/dist/commands/doctor/config.js.map +1 -1
- package/dist/commands/doctor/doctor.d.ts +1 -16
- package/dist/commands/doctor/doctor.d.ts.map +1 -1
- package/dist/commands/doctor/doctor.js +85 -52
- package/dist/commands/doctor/doctor.js.map +1 -1
- package/dist/commands/doctor/index.d.ts +1 -1
- package/dist/commands/doctor/index.d.ts.map +1 -1
- package/dist/commands/doctor/index.js +0 -11
- package/dist/commands/doctor/index.js.map +1 -1
- package/dist/commands/doctor/types.d.ts +17 -2
- package/dist/commands/doctor/types.d.ts.map +1 -1
- package/dist/commands/doctor/types.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +32 -49
- package/dist/commands/init.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 +4 -10
- package/dist/commands/tasks/ai-tools.d.ts.map +1 -1
- package/dist/commands/tasks/ai-tools.js +15 -11
- 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.map +1 -1
- package/dist/commands/tasks/run-ai-task.js +110 -126
- package/dist/commands/tasks/run-ai-task.js.map +1 -1
- package/dist/commands/tasks/run.d.ts +9 -6
- package/dist/commands/tasks/run.d.ts.map +1 -1
- package/dist/commands/tasks/run.js +38 -84
- package/dist/commands/tasks/run.js.map +1 -1
- package/dist/config.d.ts +5 -196
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +9 -21
- package/dist/config.js.map +1 -1
- package/dist/env.d.ts +2 -13
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +3 -13
- package/dist/env.js.map +1 -1
- package/dist/helper/handle-ai-error.js +1 -1
- package/dist/helper/handle-ai-error.js.map +1 -1
- 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/resolve-ai-tasks.d.ts +7 -6
- package/dist/helper/resolve-ai-tasks.d.ts.map +1 -1
- package/dist/helper/resolve-ai-tasks.js +22 -19
- package/dist/helper/resolve-ai-tasks.js.map +1 -1
- package/dist/prompts.json +2 -14
- package/package.json +14 -10
|
@@ -4,13 +4,13 @@ export interface ToolCheckConfig {
|
|
|
4
4
|
/** User-friendly name for display purposes (e.g., "PNPM Package Manager") */
|
|
5
5
|
displayName: string;
|
|
6
6
|
/** The command to execute to get the version (e.g., "pnpm --version") */
|
|
7
|
-
versionCommand
|
|
7
|
+
versionCommand?: string;
|
|
8
8
|
/**
|
|
9
9
|
* A regular expression to parse the version string from the command's output.
|
|
10
10
|
* It MUST have at least one capturing group, which should capture the version string.
|
|
11
11
|
* Example: For "pnpm 10.11.0", regex could be /pnpm\s+([\d.]+)/ or simply /([\d.]+)/
|
|
12
12
|
*/
|
|
13
|
-
versionParseRegex
|
|
13
|
+
versionParseRegex?: RegExp;
|
|
14
14
|
/**
|
|
15
15
|
* The minimum required version (Semantic Versioning string).
|
|
16
16
|
* If undefined, only existence is checked.
|
|
@@ -27,4 +27,19 @@ export interface ToolCheckConfig {
|
|
|
27
27
|
optional?: boolean;
|
|
28
28
|
}
|
|
29
29
|
export type DoctorConfig = ToolCheckConfig[];
|
|
30
|
+
export interface ToolCheckResult {
|
|
31
|
+
id: string;
|
|
32
|
+
displayName: string;
|
|
33
|
+
exists: boolean;
|
|
34
|
+
version?: string;
|
|
35
|
+
requiredVersion?: string;
|
|
36
|
+
meetsVersionRequirement: boolean;
|
|
37
|
+
isOptional: boolean;
|
|
38
|
+
message: string;
|
|
39
|
+
installationHint?: string;
|
|
40
|
+
}
|
|
41
|
+
export interface DoctorReport {
|
|
42
|
+
overallSuccess: boolean;
|
|
43
|
+
results: ToolCheckResult[];
|
|
44
|
+
}
|
|
30
45
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/commands/doctor/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/commands/doctor/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,mEAAmE;IACnE,EAAE,EAAE,MAAM,CAAC;IAEX,6EAA6E;IAC7E,WAAW,EAAE,MAAM,CAAC;IAEpB,yEAAyE;IACzE,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;AAE7C,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uBAAuB,EAAE,OAAO,CAAC;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/commands/doctor/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/commands/doctor/types.ts"],"names":[],"mappings":"AAAA,2CAA2C","sourcesContent":["// types.ts (or directly in your doctor.ts)\n\nexport interface ToolCheckConfig {\n /** A unique identifier for this check (e.g., 'pnpm', 'uvx-cli') */\n id: string;\n\n /** User-friendly name for display purposes (e.g., \"PNPM Package Manager\") */\n displayName: string;\n\n /** The command to execute to get the version (e.g., \"pnpm --version\") */\n versionCommand?: string;\n\n /**\n * A regular expression to parse the version string from the command's output.\n * It MUST have at least one capturing group, which should capture the version string.\n * Example: For \"pnpm 10.11.0\", regex could be /pnpm\\s+([\\d.]+)/ or simply /([\\d.]+)/\n */\n versionParseRegex?: RegExp;\n\n /**\n * The minimum required version (Semantic Versioning string).\n * If undefined, only existence is checked.\n */\n minVersion?: string;\n\n /**\n * Optional: A hint or URL for installation if the tool is missing or version is too low.\n */\n installationHint?: string;\n\n /**\n * Optional: If true, a failure for this tool won't cause the overall doctor check to fail.\n * It will still be reported. Defaults to false.\n */\n optional?: boolean;\n}\n\nexport type DoctorConfig = ToolCheckConfig[];\n\nexport interface ToolCheckResult {\n id: string;\n displayName: string;\n exists: boolean;\n version?: string; // Actual version found\n requiredVersion?: string; // From config\n meetsVersionRequirement: boolean; // True if version >= minVersion or if minVersion not set & exists\n isOptional: boolean;\n message: string;\n installationHint?: string;\n}\n\nexport interface DoctorReport {\n overallSuccess: boolean;\n results: ToolCheckResult[];\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,IAAI,GAAI,KAAK,MAAM,SA8B/B,CAAC"}
|
package/dist/commands/init.js
CHANGED
|
@@ -1,57 +1,40 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { writeText } from "@gaubee/nodekit";
|
|
2
2
|
import { str_trim_indent } from "@gaubee/util";
|
|
3
3
|
import fs from "node:fs";
|
|
4
4
|
import path from "node:path";
|
|
5
|
-
import { safeEnv } from "../env.js";
|
|
6
5
|
export const init = (dir) => {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
6
|
+
// Create .jixo directory
|
|
7
|
+
const jixoDir = path.join(dir, ".jixo");
|
|
8
|
+
fs.mkdirSync(jixoDir, { recursive: true });
|
|
9
|
+
// Create .jixo.env file
|
|
10
|
+
const jixoEnvFilepath = path.join(dir, ".jixo.env");
|
|
11
|
+
if (!fs.existsSync(jixoEnvFilepath)) {
|
|
12
|
+
writeText(jixoEnvFilepath, str_trim_indent(`
|
|
13
|
+
# JIXO Core Service Configuration
|
|
14
|
+
JIXO_CORE_URL=http://localhost:4111
|
|
15
|
+
JIXO_API_KEY=
|
|
16
|
+
|
|
17
|
+
# LLM Provider API Keys (to be used by jixo-core)
|
|
18
|
+
# ANTHROPIC_API_KEY=
|
|
19
|
+
# GOOGLE_API_KEY=
|
|
20
|
+
# OPENAI_API_KEY=
|
|
21
|
+
`));
|
|
22
|
+
console.log(`✅ Created configuration template at: ${jixoEnvFilepath}`);
|
|
21
23
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
{
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
writeText(jixoEnvFilepath, Object.keys(safeEnv)
|
|
36
|
-
.filter((key) => key.startsWith("JIXO_"))
|
|
37
|
-
.map((key) => `${key}=""`)
|
|
38
|
-
.join("\n"));
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
/// .gitignore
|
|
42
|
-
{
|
|
43
|
-
const gitignoreFilepath = path.join(dir, ".gitignore");
|
|
44
|
-
const gitignoreLines = (fs.existsSync(gitignoreFilepath) ? fs.readFileSync(gitignoreFilepath, "utf-8") : "").split(/\n+/);
|
|
45
|
-
let changed = false;
|
|
46
|
-
for (const line of ["*.memory.json", "memory.json", ".jixo.env"]) {
|
|
47
|
-
if (!gitignoreLines.includes(line)) {
|
|
48
|
-
gitignoreLines.unshift(line);
|
|
49
|
-
changed = true;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
if (changed) {
|
|
53
|
-
fs.writeFileSync(gitignoreFilepath, gitignoreLines.join("\n"));
|
|
54
|
-
}
|
|
24
|
+
// Update root .gitignore
|
|
25
|
+
const gitignoreFilepath = path.join(dir, ".gitignore");
|
|
26
|
+
addRulesToGitIgnore(gitignoreFilepath, [".jixo.env", ".jixo/memory/"]);
|
|
27
|
+
console.log(`✅ Updated .gitignore`);
|
|
28
|
+
console.log("\nJIXO initialized successfully!");
|
|
29
|
+
};
|
|
30
|
+
const addRulesToGitIgnore = (gitignoreFilepath, rules) => {
|
|
31
|
+
const existingRules = fs.existsSync(gitignoreFilepath) ? fs.readFileSync(gitignoreFilepath, "utf-8").split("\n") : [];
|
|
32
|
+
let changed = false;
|
|
33
|
+
const newRules = rules.filter((rule) => !existingRules.includes(rule));
|
|
34
|
+
if (newRules.length > 0) {
|
|
35
|
+
fs.appendFileSync(gitignoreFilepath, "\n# JIXO\n" + newRules.join("\n") + "\n");
|
|
36
|
+
changed = true;
|
|
55
37
|
}
|
|
38
|
+
return changed;
|
|
56
39
|
};
|
|
57
40
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,EAAE;IAClC,yBAAyB;IACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACxC,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;IAEzC,wBAAwB;IACxB,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACpD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACpC,SAAS,CACP,eAAe,EACf,eAAe,CAAC;;;;;;;;;OASf,CAAC,CACH,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,wCAAwC,eAAe,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,yBAAyB;IACzB,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IACvD,mBAAmB,CAAC,iBAAiB,EAAE,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IAEpC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,iBAAyB,EAAE,KAAe,EAAE,EAAE;IACzE,MAAM,aAAa,GAAG,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtH,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAEvE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,cAAc,CAAC,iBAAiB,EAAE,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAChF,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC","sourcesContent":["import {writeText} from \"@gaubee/nodekit\";\nimport {str_trim_indent} from \"@gaubee/util\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\n\nexport const init = (dir: string) => {\n // Create .jixo directory\n const jixoDir = path.join(dir, \".jixo\");\n fs.mkdirSync(jixoDir, {recursive: true});\n\n // Create .jixo.env file\n const jixoEnvFilepath = path.join(dir, \".jixo.env\");\n if (!fs.existsSync(jixoEnvFilepath)) {\n writeText(\n jixoEnvFilepath,\n str_trim_indent(`\n # JIXO Core Service Configuration\n JIXO_CORE_URL=http://localhost:4111\n JIXO_API_KEY=\n\n # LLM Provider API Keys (to be used by jixo-core)\n # ANTHROPIC_API_KEY=\n # GOOGLE_API_KEY=\n # OPENAI_API_KEY=\n `),\n );\n console.log(`✅ Created configuration template at: ${jixoEnvFilepath}`);\n }\n\n // Update root .gitignore\n const gitignoreFilepath = path.join(dir, \".gitignore\");\n addRulesToGitIgnore(gitignoreFilepath, [\".jixo.env\", \".jixo/memory/\"]);\n console.log(`✅ Updated .gitignore`);\n\n console.log(\"\\nJIXO initialized successfully!\");\n};\n\nconst addRulesToGitIgnore = (gitignoreFilepath: string, rules: string[]) => {\n const existingRules = fs.existsSync(gitignoreFilepath) ? fs.readFileSync(gitignoreFilepath, \"utf-8\").split(\"\\n\") : [];\n let changed = false;\n const newRules = rules.filter((rule) => !existingRules.includes(rule));\n\n if (newRules.length > 0) {\n fs.appendFileSync(gitignoreFilepath, \"\\n# JIXO\\n\" + newRules.join(\"\\n\") + \"\\n\");\n changed = true;\n }\n return changed;\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"]}
|
|
@@ -789,22 +789,16 @@ export declare const tools: {
|
|
|
789
789
|
}>, void | ((this: unknown) => any)>;
|
|
790
790
|
git: (repo: string) => Promise<ToolSet>;
|
|
791
791
|
jixo: (ai_task: AiTask) => {
|
|
792
|
-
jixo_log_lock: import("ai").Tool<
|
|
792
|
+
jixo_log_lock: import("ai").Tool<unknown, {
|
|
793
793
|
type: string;
|
|
794
794
|
filepath: string;
|
|
795
795
|
content: string;
|
|
796
796
|
}>;
|
|
797
|
-
jixo_log_unlock: import("ai").Tool<
|
|
797
|
+
jixo_log_unlock: import("ai").Tool<unknown, {
|
|
798
798
|
type: string;
|
|
799
799
|
}>;
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
}, {
|
|
803
|
-
type: string;
|
|
804
|
-
}>;
|
|
805
|
-
get_jixo_skill: import("ai").Tool<{
|
|
806
|
-
name: string;
|
|
807
|
-
}, any>;
|
|
800
|
+
jixo_tasks_exit: import("ai").Tool<unknown, unknown>;
|
|
801
|
+
get_jixo_skill: any;
|
|
808
802
|
};
|
|
809
803
|
};
|
|
810
804
|
//# sourceMappingURL=ai-tools.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-tools.d.ts","sourceRoot":"","sources":["../../../src/commands/tasks/ai-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAwD,KAAK,OAAO,EAAC,MAAM,IAAI,CAAC;AAEvF,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,kCAAkC,CAAC;AAE7D,eAAO,MAAM,KAAK;sBAGD,MAAM;8BAeM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"ai-tools.d.ts","sourceRoot":"","sources":["../../../src/commands/tasks/ai-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAwD,KAAK,OAAO,EAAC,MAAM,IAAI,CAAC;AAEvF,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,kCAAkC,CAAC;AAE7D,eAAO,MAAM,KAAK;sBAGD,MAAM;8BAeM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAmDjB,MAAM;oBAkBH,MAAM;;;;;;;;;;;;CAgD1B,CAAC"}
|
|
@@ -10,8 +10,8 @@ export const tools = {
|
|
|
10
10
|
return map_get_or_put_async(map, cwd, async () => {
|
|
11
11
|
const mcpClient = await createMCPClient({
|
|
12
12
|
transport: new Experimental_StdioMCPTransport({
|
|
13
|
-
command: "
|
|
14
|
-
args: ["
|
|
13
|
+
command: "pnpm",
|
|
14
|
+
args: ["mcp-fs", cwd],
|
|
15
15
|
}),
|
|
16
16
|
});
|
|
17
17
|
const tools = await mcpClient.tools();
|
|
@@ -40,8 +40,10 @@ export const tools = {
|
|
|
40
40
|
pnpm: func_remember(async () => {
|
|
41
41
|
const mcpClient = await createMCPClient({
|
|
42
42
|
transport: new Experimental_StdioMCPTransport({
|
|
43
|
-
command: "pnpx",
|
|
44
|
-
args: ["@jixo/mcp-pnpm"],
|
|
43
|
+
// command: "pnpx",
|
|
44
|
+
// args: ["@jixo/mcp-pnpm"],
|
|
45
|
+
command: "pnpm",
|
|
46
|
+
args: ["mcp-pnpm"],
|
|
45
47
|
}),
|
|
46
48
|
});
|
|
47
49
|
const tools = await mcpClient.tools();
|
|
@@ -87,8 +89,6 @@ export const tools = {
|
|
|
87
89
|
const configs = getAllPromptConfigs();
|
|
88
90
|
const allSkillMap = getAllSkillMap();
|
|
89
91
|
return (ai_task) => {
|
|
90
|
-
// return map_get_or_put_async(map, ai_task.name, async () => {
|
|
91
|
-
// });
|
|
92
92
|
return {
|
|
93
93
|
get_jixo_skill: tool({
|
|
94
94
|
description: "Get the JIXO skill prompt by name",
|
|
@@ -109,6 +109,7 @@ export const tools = {
|
|
|
109
109
|
description: "Lock the log file for writing, will return log file content",
|
|
110
110
|
parameters: z.object({}),
|
|
111
111
|
execute: async () => {
|
|
112
|
+
ai_task.reloadLog();
|
|
112
113
|
return { type: "success", filepath: ai_task.log.filepath, content: ai_task.log.content };
|
|
113
114
|
},
|
|
114
115
|
}),
|
|
@@ -119,11 +120,14 @@ export const tools = {
|
|
|
119
120
|
return { type: "success" };
|
|
120
121
|
},
|
|
121
122
|
}),
|
|
122
|
-
|
|
123
|
-
description: "Exit the
|
|
124
|
-
parameters: z.object({
|
|
125
|
-
|
|
126
|
-
|
|
123
|
+
jixo_tasks_exit: tool({
|
|
124
|
+
description: "Exit the tasks.",
|
|
125
|
+
parameters: z.object({
|
|
126
|
+
code: z.number({ description: "Exit code: 0 is Success; 1 is Error; 2 is No Tasks" }),
|
|
127
|
+
reason: z.string({ description: "Exit reasons that provide human-readable information" }),
|
|
128
|
+
}),
|
|
129
|
+
execute: async ({ code, reason }) => {
|
|
130
|
+
ai_task.exit(code, reason);
|
|
127
131
|
return { type: "success" };
|
|
128
132
|
},
|
|
129
133
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-tools.js","sourceRoot":"","sources":["../../../src/commands/tasks/ai-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,aAAa,EAAE,oBAAoB,EAAC,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAC,4BAA4B,IAAI,eAAe,EAAE,IAAI,EAAe,MAAM,IAAI,CAAC;AACvF,OAAO,EAAC,8BAA8B,EAAC,MAAM,cAAc,CAAC;AAC5D,OAAO,CAAC,MAAM,KAAK,CAAC;AACpB,OAAO,EAAC,mBAAmB,EAAE,cAAc,EAAC,MAAM,gCAAgC,CAAC;AAGnF,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,UAAU,EAAE,SAAS,CAAC,GAAG,EAAE;QACzB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAmB,CAAC;QACvC,OAAO,CAAC,GAAW,EAAE,EAAE;YACrB,OAAO,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,IAAI,EAAE;gBAC/C,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC;oBACtC,SAAS,EAAE,IAAI,8BAA8B,CAAC;wBAC5C,OAAO,EAAE,MAAM;wBACf,IAAI,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"ai-tools.js","sourceRoot":"","sources":["../../../src/commands/tasks/ai-tools.ts"],"names":[],"mappings":"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","sourcesContent":["import {func_lazy, func_remember, map_get_or_put_async} from \"@gaubee/util\";\nimport {experimental_createMCPClient as createMCPClient, tool, type ToolSet} from \"ai\";\nimport {Experimental_StdioMCPTransport} from \"ai/mcp-stdio\";\nimport z from \"zod\";\nimport {getAllPromptConfigs, getAllSkillMap} from \"../../helper/prompts-loader.js\";\nimport type {AiTask} from \"../../helper/resolve-ai-tasks.js\";\n\nexport const tools = {\n fileSystem: func_lazy(() => {\n const map = new Map<string, ToolSet>();\n return (cwd: string) => {\n return map_get_or_put_async(map, cwd, async () => {\n const mcpClient = await createMCPClient({\n transport: new Experimental_StdioMCPTransport({\n command: \"pnpm\",\n args: [\"mcp-fs\", cwd],\n }),\n });\n const tools = await mcpClient.tools();\n return tools;\n });\n };\n }),\n memory: func_lazy(() => {\n const map = new Map<string, ToolSet>();\n return (memory_filepath: string) => {\n return map_get_or_put_async(map, memory_filepath, async () => {\n const mcpClient = await createMCPClient({\n transport: new Experimental_StdioMCPTransport({\n command: \"pnpx\",\n args: [\"@modelcontextprotocol/server-memory\"],\n env: {\n MEMORY_FILE_PATH: memory_filepath,\n },\n }),\n });\n const tools = await mcpClient.tools();\n return tools;\n });\n };\n }),\n pnpm: func_remember(async () => {\n const mcpClient = await createMCPClient({\n transport: new Experimental_StdioMCPTransport({\n // command: \"pnpx\",\n // args: [\"@jixo/mcp-pnpm\"],\n command: \"pnpm\",\n args: [\"mcp-pnpm\"],\n }),\n });\n const tools = await mcpClient.tools();\n return tools;\n }),\n sequentialThinking: func_remember(async () => {\n const mcpClient = await createMCPClient({\n transport: new Experimental_StdioMCPTransport({\n command: \"pnpx\",\n args: [\"@modelcontextprotocol/server-sequential-thinking\"],\n }),\n });\n const tools = await mcpClient.tools();\n return tools;\n }),\n fetch: func_remember(async () => {\n const mcpClient = await createMCPClient({\n transport: new Experimental_StdioMCPTransport({\n command: \"uvx\",\n args: [\"mcp-server-fetch\"],\n }),\n });\n const tools = await mcpClient.tools();\n return tools;\n }),\n git: func_lazy(() => {\n const map = new Map<string, ToolSet>();\n\n return (repo: string) => {\n return map_get_or_put_async(map, repo, async () => {\n const mcpClient = await createMCPClient({\n transport: new Experimental_StdioMCPTransport({\n command: \"uvx\",\n args: [\"mcp-server-git\", \"--repository\", repo],\n }),\n });\n const tools = await mcpClient.tools();\n return tools;\n });\n };\n }),\n\n jixo: func_lazy(() => {\n // const map = new Map<string, ToolSet>();\n const configs = getAllPromptConfigs();\n const allSkillMap = getAllSkillMap();\n return (ai_task: AiTask) => {\n return {\n get_jixo_skill: tool({\n description: \"Get the JIXO skill prompt by name\",\n parameters: z.object({\n name: z.string().describe(\"The name to get the skill for\"),\n }),\n execute: async ({name}) => {\n if (name in allSkillMap) {\n return Reflect.get(configs, name);\n }\n return {type: \"error\", message: \"Skill not found\"};\n },\n }),\n ...(() => {\n // TODO: use process shared lock-manager\n return {\n jixo_log_lock: tool({\n description: \"Lock the log file for writing, will return log file content\",\n parameters: z.object({}),\n execute: async () => {\n ai_task.reloadLog();\n return {type: \"success\", filepath: ai_task.log.filepath, content: ai_task.log.content};\n },\n }),\n jixo_log_unlock: tool({\n description: \"Unlock the log file, for other locker can read the log file and then write.\",\n parameters: z.object({}),\n execute: async () => {\n return {type: \"success\"};\n },\n }),\n jixo_tasks_exit: tool({\n description: \"Exit the tasks.\",\n parameters: z.object({\n code: z.number({description: \"Exit code: 0 is Success; 1 is Error; 2 is No Tasks\"}),\n reason: z.string({description: \"Exit reasons that provide human-readable information\"}),\n }),\n execute: async ({code, reason}) => {\n ai_task.exit(code, reason);\n return {type: \"success\"};\n },\n }),\n };\n })(),\n };\n };\n }),\n};\n"]}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
+
import { type OpenAIProvider } from "@ai-sdk/openai";
|
|
1
2
|
export declare const providers: {
|
|
2
3
|
readonly deepseek: import("@ai-sdk/deepseek").DeepSeekProvider;
|
|
3
4
|
readonly anthropic: import("@ai-sdk/anthropic").AnthropicProvider;
|
|
4
5
|
readonly google: import("@ai-sdk/google").GoogleGenerativeAIProvider;
|
|
5
|
-
readonly openai:
|
|
6
|
+
readonly openai: OpenAIProvider;
|
|
6
7
|
readonly xai: import("@ai-sdk/xai").XaiProvider;
|
|
7
8
|
readonly deepinfra: import("@ai-sdk/deepinfra").DeepInfraProvider;
|
|
8
9
|
};
|
|
10
|
+
type LanguageModelV2 = ReturnType<OpenAIProvider>;
|
|
11
|
+
export declare const getModel: (model?: string) => LanguageModelV2;
|
|
12
|
+
export {};
|
|
9
13
|
//# sourceMappingURL=model-providers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-providers.d.ts","sourceRoot":"","sources":["../../../src/commands/tasks/model-providers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"model-providers.d.ts","sourceRoot":"","sources":["../../../src/commands/tasks/model-providers.ts"],"names":[],"mappings":"AAIA,OAAO,EAAe,KAAK,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAOjE,eAAO,MAAM,SAAS;;;;;;;CA2CpB,CAAC;AAEH,KAAK,eAAe,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;AAClD,eAAO,MAAM,QAAQ,GAAI,QAAQ,MAAM,KAAG,eA6BzC,CAAC"}
|
|
@@ -5,6 +5,7 @@ import { createGoogleGenerativeAI } from "@ai-sdk/google";
|
|
|
5
5
|
import { createOpenAI } from "@ai-sdk/openai";
|
|
6
6
|
import { createXai } from "@ai-sdk/xai";
|
|
7
7
|
import { obj_lazify } from "@gaubee/util";
|
|
8
|
+
import { match, P } from "ts-pattern";
|
|
8
9
|
import { safeEnv } from "../../env.js";
|
|
9
10
|
// const wrapper = (provider:)
|
|
10
11
|
export const providers = obj_lazify({
|
|
@@ -50,4 +51,34 @@ export const providers = obj_lazify({
|
|
|
50
51
|
});
|
|
51
52
|
},
|
|
52
53
|
});
|
|
54
|
+
export const getModel = (model) => {
|
|
55
|
+
return match(model)
|
|
56
|
+
.with(P.string.startsWith("deepseek-"), (model) => providers.deepseek(model))
|
|
57
|
+
.with(P.string.startsWith("gemini-"), (model) => providers.google(model))
|
|
58
|
+
.with(P.string.startsWith("o3-"), P.string.startsWith("o1-"), P.string.startsWith("gpt-"), (model) => providers.openai(model))
|
|
59
|
+
.with(P.string.startsWith("claude-"), (model) => providers.anthropic(model))
|
|
60
|
+
.with(P.string.startsWith("grok-"), (model) => providers.xai(model))
|
|
61
|
+
.with(P.string.includes("/"), (model) => providers.deepinfra(model))
|
|
62
|
+
.otherwise(() => {
|
|
63
|
+
if (safeEnv.JIXO_DEEPSEEK_API_KEY) {
|
|
64
|
+
return providers.deepseek("deepseek-reasoner");
|
|
65
|
+
}
|
|
66
|
+
if (safeEnv.JIXO_GOOGLE_API_KEY) {
|
|
67
|
+
return providers.google("gemini-2.5-pro-preview-05-06");
|
|
68
|
+
}
|
|
69
|
+
if (safeEnv.JIXO_OPENAI_API_KEY) {
|
|
70
|
+
return providers.openai("o3-mini");
|
|
71
|
+
}
|
|
72
|
+
if (safeEnv.JIXO_ANTHROPIC_API_KEY) {
|
|
73
|
+
return providers.anthropic("claude-4-sonnet-20250514");
|
|
74
|
+
}
|
|
75
|
+
if (safeEnv.JIXO_XAI_API_KEY) {
|
|
76
|
+
return providers.xai("grok-3-beta");
|
|
77
|
+
}
|
|
78
|
+
if (safeEnv.JIXO_DEEPINFRA_API_KEY) {
|
|
79
|
+
return providers.deepinfra("meta-llama/Meta-Llama-3.1-405B-Instruct");
|
|
80
|
+
}
|
|
81
|
+
return providers.deepseek("deepseek-reasoner");
|
|
82
|
+
});
|
|
83
|
+
};
|
|
53
84
|
//# sourceMappingURL=model-providers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-providers.js","sourceRoot":"","sources":["../../../src/commands/tasks/model-providers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAC,wBAAwB,EAAC,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"model-providers.js","sourceRoot":"","sources":["../../../src/commands/tasks/model-providers.ts"],"names":[],"mappings":"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","sourcesContent":["import {createAnthropic} from \"@ai-sdk/anthropic\";\nimport {createDeepInfra} from \"@ai-sdk/deepinfra\";\nimport {createDeepSeek} from \"@ai-sdk/deepseek\";\nimport {createGoogleGenerativeAI} from \"@ai-sdk/google\";\nimport {createOpenAI, type OpenAIProvider} from \"@ai-sdk/openai\";\nimport {createXai} from \"@ai-sdk/xai\";\nimport {obj_lazify} from \"@gaubee/util\";\nimport {match, P} from \"ts-pattern\";\nimport {safeEnv} from \"../../env.js\";\n\n// const wrapper = (provider:)\nexport const providers = obj_lazify({\n get deepseek() {\n return createDeepSeek({\n baseURL: safeEnv.JIXO_DEEPSEEK_BASE_URL || undefined,\n apiKey: safeEnv.JIXO_DEEPSEEK_API_KEY,\n });\n },\n get anthropic() {\n // const bashTool = anthropic.tools.bash_20250124({\n // execute: async ({command, restart}) => execSync(command).toString(),\n // });\n\n const provider = createAnthropic({\n baseURL: safeEnv.JIXO_ANTHROPIC_BASE_URL || undefined,\n apiKey: safeEnv.JIXO_ANTHROPIC_API_KEY,\n });\n return provider;\n },\n get google() {\n return createGoogleGenerativeAI({\n baseURL: safeEnv.JIXO_GOOGLE_BASE_URL || undefined,\n apiKey: safeEnv.JIXO_GOOGLE_API_KEY,\n });\n },\n get openai() {\n return createOpenAI({\n baseURL: safeEnv.JIXO_OPENAI_BASE_URL || undefined,\n apiKey: safeEnv.JIXO_OPENAI_API_KEY,\n organization: safeEnv.JIXO_OPENAI_ORGANIZATION || undefined,\n });\n },\n get xai() {\n return createXai({\n baseURL: safeEnv.JIXO_XAI_BASE_URL || undefined,\n apiKey: safeEnv.JIXO_XAI_API_KEY,\n });\n },\n get deepinfra() {\n return createDeepInfra({\n baseURL: safeEnv.JIXO_DEEPINFRA_BASE_URL || undefined,\n apiKey: safeEnv.JIXO_DEEPINFRA_API_KEY,\n });\n },\n});\n\ntype LanguageModelV2 = ReturnType<OpenAIProvider>;\nexport const getModel = (model?: string): LanguageModelV2 => {\n return match(model)\n .with(P.string.startsWith(\"deepseek-\"), (model) => providers.deepseek(model))\n .with(P.string.startsWith(\"gemini-\"), (model) => providers.google(model))\n .with(P.string.startsWith(\"o3-\"), P.string.startsWith(\"o1-\"), P.string.startsWith(\"gpt-\"), (model) => providers.openai(model))\n .with(P.string.startsWith(\"claude-\"), (model) => providers.anthropic(model))\n .with(P.string.startsWith(\"grok-\"), (model) => providers.xai(model))\n .with(P.string.includes(\"/\"), (model) => providers.deepinfra(model))\n .otherwise(() => {\n if (safeEnv.JIXO_DEEPSEEK_API_KEY) {\n return providers.deepseek(\"deepseek-reasoner\");\n }\n if (safeEnv.JIXO_GOOGLE_API_KEY) {\n return providers.google(\"gemini-2.5-pro-preview-05-06\");\n }\n if (safeEnv.JIXO_OPENAI_API_KEY) {\n return providers.openai(\"o3-mini\");\n }\n if (safeEnv.JIXO_ANTHROPIC_API_KEY) {\n return providers.anthropic(\"claude-4-sonnet-20250514\");\n }\n if (safeEnv.JIXO_XAI_API_KEY) {\n return providers.xai(\"grok-3-beta\");\n }\n if (safeEnv.JIXO_DEEPINFRA_API_KEY) {\n return providers.deepinfra(\"meta-llama/Meta-Llama-3.1-405B-Instruct\");\n }\n return providers.deepseek(\"deepseek-reasoner\");\n });\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-ai-task.d.ts","sourceRoot":"","sources":["../../../src/commands/tasks/run-ai-task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,SAAS,
|
|
1
|
+
{"version":3,"file":"run-ai-task.d.ts","sourceRoot":"","sources":["../../../src/commands/tasks/run-ai-task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,SAAS,EAA0C,MAAM,iBAAiB,CAAC;AAW/F,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,kCAAkC,CAAC;AAO7D,eAAO,MAAM,SAAS,GAAU,SAAS,MAAM,EAAE,WAAW,MAAM,EAAE,UAAU,SAAS,EAAE,EAAE,iBAAiB,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,kBAwCtI,CAAC"}
|