@aigne/cli 1.26.0 → 1.26.1-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/bunwrapper.js +0 -0
- package/dist/cli.js +2 -1
- package/dist/commands/aigne.d.ts +2 -2
- package/dist/commands/aigne.js +18 -11
- package/dist/commands/app.d.ts +2 -0
- package/dist/commands/app.js +98 -0
- package/dist/commands/connect.d.ts +6 -0
- package/dist/commands/connect.js +91 -0
- package/dist/commands/create.d.ts +6 -2
- package/dist/commands/create.js +62 -58
- package/dist/commands/observe.d.ts +7 -2
- package/dist/commands/observe.js +22 -13
- package/dist/commands/run.d.ts +6 -3
- package/dist/commands/run.js +96 -81
- package/dist/commands/serve-mcp.d.ts +10 -3
- package/dist/commands/serve-mcp.js +41 -23
- package/dist/commands/test.d.ts +7 -3
- package/dist/commands/test.js +20 -14
- package/dist/utils/download.d.ts +3 -1
- package/dist/utils/download.js +2 -2
- package/dist/utils/load-aigne.d.ts +10 -1
- package/dist/utils/load-aigne.js +57 -43
- package/dist/utils/run-with-aigne.d.ts +26 -2
- package/dist/utils/run-with-aigne.js +80 -57
- package/package.json +32 -29
- package/LICENSE.md +0 -93
package/dist/bunwrapper.js
CHANGED
|
File without changes
|
package/dist/cli.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { existsSync, realpathSync, statSync } from "node:fs";
|
|
3
3
|
import chalk from "chalk";
|
|
4
4
|
import { config } from "dotenv-flow";
|
|
5
|
+
import { hideBin } from "yargs/helpers";
|
|
5
6
|
import { createAIGNECommand } from "./commands/aigne.js";
|
|
6
7
|
config({ silent: true });
|
|
7
8
|
function getAIGNEFilePath() {
|
|
@@ -16,7 +17,7 @@ function getAIGNEFilePath() {
|
|
|
16
17
|
}
|
|
17
18
|
const aigneFilePath = getAIGNEFilePath();
|
|
18
19
|
createAIGNECommand({ aigneFilePath })
|
|
19
|
-
.parseAsync([
|
|
20
|
+
.parseAsync(hideBin([...process.argv.slice(0, 2), ...process.argv.slice(aigneFilePath ? 3 : 2)]))
|
|
20
21
|
.catch((error) => {
|
|
21
22
|
console.log(""); // Add an empty line for better readability
|
|
22
23
|
console.error(`${chalk.red("Error:")} ${error.message}`);
|
package/dist/commands/aigne.d.ts
CHANGED
package/dist/commands/aigne.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import yargs from "yargs";
|
|
2
2
|
import { AIGNE_CLI_VERSION } from "../constants.js";
|
|
3
3
|
import { asciiLogo } from "../utils/ascii-logo.js";
|
|
4
|
+
import { createAppCommands } from "./app.js";
|
|
5
|
+
import { createConnectCommand } from "./connect.js";
|
|
4
6
|
import { createCreateCommand } from "./create.js";
|
|
5
7
|
import { createObservabilityCommand } from "./observe.js";
|
|
6
8
|
import { createRunCommand } from "./run.js";
|
|
@@ -8,15 +10,20 @@ import { createServeMCPCommand } from "./serve-mcp.js";
|
|
|
8
10
|
import { createTestCommand } from "./test.js";
|
|
9
11
|
export function createAIGNECommand(options) {
|
|
10
12
|
console.log(asciiLogo);
|
|
11
|
-
return
|
|
12
|
-
.
|
|
13
|
-
.
|
|
13
|
+
return yargs()
|
|
14
|
+
.scriptName("aigne")
|
|
15
|
+
.usage("CLI for AIGNE framework")
|
|
14
16
|
.version(AIGNE_CLI_VERSION)
|
|
15
|
-
.
|
|
16
|
-
.
|
|
17
|
-
.
|
|
18
|
-
.
|
|
19
|
-
.
|
|
20
|
-
.
|
|
21
|
-
.
|
|
17
|
+
.command(createRunCommand(options))
|
|
18
|
+
.command(createTestCommand(options))
|
|
19
|
+
.command(createCreateCommand())
|
|
20
|
+
.command(createServeMCPCommand(options))
|
|
21
|
+
.command(createObservabilityCommand())
|
|
22
|
+
.command(createConnectCommand())
|
|
23
|
+
.command(createAppCommands())
|
|
24
|
+
.help()
|
|
25
|
+
.alias("help", "h")
|
|
26
|
+
.alias("version", "v")
|
|
27
|
+
.showHelpOnFail(true)
|
|
28
|
+
.strict();
|
|
22
29
|
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import assert from "node:assert";
|
|
2
|
+
import { spawnSync } from "node:child_process";
|
|
3
|
+
import { mkdir, readFile, stat } from "node:fs/promises";
|
|
4
|
+
import { homedir } from "node:os";
|
|
5
|
+
import { join } from "node:path";
|
|
6
|
+
import { AIGNE } from "@aigne/core";
|
|
7
|
+
import { joinURL } from "ufo";
|
|
8
|
+
import { ZodObject, ZodString } from "zod";
|
|
9
|
+
import { availableModels } from "../constants.js";
|
|
10
|
+
import { downloadAndExtract } from "../utils/download.js";
|
|
11
|
+
import { runAgentWithAIGNE } from "../utils/run-with-aigne.js";
|
|
12
|
+
const NPM_PACKAGE_CACHE_TIME_MS = 1000 * 60 * 60 * 24; // 1 day
|
|
13
|
+
export function createAppCommands() {
|
|
14
|
+
return [
|
|
15
|
+
{
|
|
16
|
+
command: "doc-smith",
|
|
17
|
+
describe: "Generate professional documents by doc-smith",
|
|
18
|
+
aliases: ["docsmith", "doc"],
|
|
19
|
+
builder: async (yargs) => {
|
|
20
|
+
const aigne = await loadApplication({ name: "doc-smith" });
|
|
21
|
+
for (const agent of aigne.agents) {
|
|
22
|
+
yargs.command(agent.name, agent.description || "", (yargs) => {
|
|
23
|
+
const options = Object.entries(agent.inputSchema instanceof ZodObject ? agent.inputSchema.shape : {});
|
|
24
|
+
for (const [option, config] of options) {
|
|
25
|
+
yargs.option(option, {
|
|
26
|
+
// TODO: support more types
|
|
27
|
+
type: config instanceof ZodString ? "string" : "string",
|
|
28
|
+
description: config.description,
|
|
29
|
+
});
|
|
30
|
+
if (!(config.isNullable() || config.isOptional())) {
|
|
31
|
+
yargs.demandOption(option);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}, async (argv) => {
|
|
35
|
+
try {
|
|
36
|
+
await runAgentWithAIGNE(aigne, agent, { input: argv });
|
|
37
|
+
}
|
|
38
|
+
finally {
|
|
39
|
+
await aigne.shutdown();
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
yargs.version('hello world');
|
|
44
|
+
return yargs.demandCommand();
|
|
45
|
+
},
|
|
46
|
+
handler: () => { },
|
|
47
|
+
},
|
|
48
|
+
];
|
|
49
|
+
}
|
|
50
|
+
async function loadApplication({ name }) {
|
|
51
|
+
const info = await shouldDownloadNewVersion(name);
|
|
52
|
+
if (info.shouldDownload) {
|
|
53
|
+
assert(info.url, "Package URL should be defined when downloading");
|
|
54
|
+
// TODO: clean up old versions
|
|
55
|
+
await mkdir(info.dir, { recursive: true });
|
|
56
|
+
await downloadAndExtract(info.url.toString(), info.dir, { strip: 1 });
|
|
57
|
+
spawnSync("npm", ["install", "--omit", "dev"], { cwd: info.dir, stdio: "inherit" });
|
|
58
|
+
}
|
|
59
|
+
return AIGNE.load(info.dir, { models: availableModels() });
|
|
60
|
+
}
|
|
61
|
+
async function shouldDownloadNewVersion(name, { cacheTimeMs = NPM_PACKAGE_CACHE_TIME_MS } = {}) {
|
|
62
|
+
const nameWithOrg = `@aigne/${name}`;
|
|
63
|
+
const dir = join(homedir(), ".aigne", "registry.npmjs.org", nameWithOrg);
|
|
64
|
+
const s = await stat(join(dir, "package.json")).catch((error) => {
|
|
65
|
+
if (error.code === "ENOENT") {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
throw error;
|
|
69
|
+
});
|
|
70
|
+
if (!s)
|
|
71
|
+
return {
|
|
72
|
+
shouldDownload: true,
|
|
73
|
+
dir,
|
|
74
|
+
url: await getNpmTgzInfo(nameWithOrg).then((info) => info.tarballUrl),
|
|
75
|
+
};
|
|
76
|
+
const lastModified = s.mtimeMs;
|
|
77
|
+
const now = Date.now();
|
|
78
|
+
if (now - lastModified > cacheTimeMs) {
|
|
79
|
+
const version = JSON.parse(await readFile(join(dir, "package.json"), "utf-8")).version;
|
|
80
|
+
const latest = await getNpmTgzInfo(`@aigne/${name}`);
|
|
81
|
+
if (version !== latest.version) {
|
|
82
|
+
return { shouldDownload: true, url: latest.tarballUrl, dir };
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return { shouldDownload: false, dir };
|
|
86
|
+
}
|
|
87
|
+
async function getNpmTgzInfo(name) {
|
|
88
|
+
const res = await fetch(joinURL("https://registry.npmjs.org", name));
|
|
89
|
+
if (!res.ok)
|
|
90
|
+
throw new Error(`Failed to fetch package info for ${name}: ${res.statusText}`);
|
|
91
|
+
const data = await res.json();
|
|
92
|
+
const latestVersion = data["dist-tags"].latest;
|
|
93
|
+
const tarballUrl = data.versions[latestVersion].dist.tarball;
|
|
94
|
+
return {
|
|
95
|
+
version: latestVersion,
|
|
96
|
+
tarballUrl,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { readFile } from "node:fs/promises";
|
|
3
|
+
import { getUserInfo } from "@blocklet/aigne-hub/api/user";
|
|
4
|
+
import chalk from "chalk";
|
|
5
|
+
import { parse } from "yaml";
|
|
6
|
+
import { AIGNE_ENV_FILE, connectToAIGNEHub } from "../utils/load-aigne.js";
|
|
7
|
+
async function getConnectionStatus() {
|
|
8
|
+
if (!existsSync(AIGNE_ENV_FILE)) {
|
|
9
|
+
return [];
|
|
10
|
+
}
|
|
11
|
+
try {
|
|
12
|
+
const data = await readFile(AIGNE_ENV_FILE, "utf8");
|
|
13
|
+
const envs = parse(data);
|
|
14
|
+
const statusList = [];
|
|
15
|
+
for (const [host, config] of Object.entries(envs)) {
|
|
16
|
+
statusList.push({
|
|
17
|
+
host,
|
|
18
|
+
apiUrl: config.AIGNE_HUB_API_URL,
|
|
19
|
+
apiKey: config.AIGNE_HUB_API_KEY,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
return statusList;
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return [];
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
async function displayStatus(statusList) {
|
|
29
|
+
if (statusList.length === 0) {
|
|
30
|
+
console.log(chalk.yellow("No AIGNE Hub connections found."));
|
|
31
|
+
console.log("Use 'aigne connect <url>' to connect to a hub.");
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
console.log(chalk.blue("AIGNE Hub Connection Status:\n"));
|
|
35
|
+
for (const status of statusList) {
|
|
36
|
+
const userInfo = await getUserInfo({
|
|
37
|
+
baseUrl: status.apiUrl,
|
|
38
|
+
accessKey: status.apiKey,
|
|
39
|
+
}).catch((e) => {
|
|
40
|
+
console.error(e);
|
|
41
|
+
return null;
|
|
42
|
+
});
|
|
43
|
+
const statusIcon = userInfo ? chalk.green("✓") : chalk.red("✗");
|
|
44
|
+
const statusText = userInfo ? "Connected" : "Disconnected";
|
|
45
|
+
console.log(`${statusIcon} ${chalk.bold(status.host)}`);
|
|
46
|
+
console.log(` Status: ${statusText}`);
|
|
47
|
+
if (userInfo) {
|
|
48
|
+
console.log(` User: ${userInfo?.user.fullName}`);
|
|
49
|
+
console.log(` Email: ${userInfo?.user.email}`);
|
|
50
|
+
if (userInfo?.creditBalance) {
|
|
51
|
+
console.log(` Plan: ${userInfo?.creditBalance?.balance}/${userInfo?.creditBalance?.total}`);
|
|
52
|
+
}
|
|
53
|
+
console.log(` Billing URL: ${userInfo?.paymentLink}`);
|
|
54
|
+
}
|
|
55
|
+
console.log("");
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
export function createConnectCommand() {
|
|
59
|
+
return {
|
|
60
|
+
command: "connect [url]",
|
|
61
|
+
describe: "Manage AIGNE Hub connections",
|
|
62
|
+
builder: (yargs) => {
|
|
63
|
+
return yargs
|
|
64
|
+
.positional("url", {
|
|
65
|
+
describe: "URL to the AIGNE Hub server",
|
|
66
|
+
type: "string",
|
|
67
|
+
default: "https://hub.aigne.io/",
|
|
68
|
+
})
|
|
69
|
+
.command({
|
|
70
|
+
command: "status",
|
|
71
|
+
describe: "Show current connection status",
|
|
72
|
+
handler: async () => {
|
|
73
|
+
const statusList = await getConnectionStatus();
|
|
74
|
+
await displayStatus(statusList);
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
},
|
|
78
|
+
handler: async (argv) => {
|
|
79
|
+
const url = argv.url || "https://hub.aigne.io/";
|
|
80
|
+
console.log(chalk.blue(`Connecting to AIGNE Hub: ${url}`));
|
|
81
|
+
try {
|
|
82
|
+
await connectToAIGNEHub(url);
|
|
83
|
+
console.log(chalk.green("✓ Successfully connected to AIGNE Hub"));
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
console.error(chalk.red("✗ Failed to connect to AIGNE Hub:"), error.message);
|
|
87
|
+
process.exit(1);
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
}
|
|
@@ -1,2 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import type { CommandModule } from "yargs";
|
|
2
|
+
interface CreateOptions {
|
|
3
|
+
path: string;
|
|
4
|
+
}
|
|
5
|
+
export declare function createCreateCommand(): CommandModule<{}, CreateOptions>;
|
|
6
|
+
export {};
|
package/dist/commands/create.js
CHANGED
|
@@ -1,69 +1,73 @@
|
|
|
1
1
|
import { existsSync, mkdirSync, readdirSync } from "node:fs";
|
|
2
2
|
import { cp } from "node:fs/promises";
|
|
3
3
|
import { isAbsolute, join, relative, resolve } from "node:path";
|
|
4
|
-
import { Command } from "commander";
|
|
5
4
|
import inquirer from "inquirer";
|
|
6
5
|
export function createCreateCommand() {
|
|
7
|
-
return
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
6
|
+
return {
|
|
7
|
+
command: "create [path]",
|
|
8
|
+
describe: "Create a new aigne project with agent config files",
|
|
9
|
+
builder: (yargs) => {
|
|
10
|
+
return yargs.positional("path", {
|
|
11
|
+
describe: "Path to create the project directory",
|
|
12
|
+
type: "string",
|
|
13
|
+
default: ".",
|
|
14
|
+
});
|
|
15
|
+
},
|
|
16
|
+
handler: async ({ path }) => {
|
|
17
|
+
if (path === ".") {
|
|
18
|
+
const answers = await inquirer.prompt([
|
|
19
|
+
{
|
|
20
|
+
type: "input",
|
|
21
|
+
name: "projectName",
|
|
22
|
+
message: "Project name:",
|
|
23
|
+
default: path !== "." ? path : "my-aigne-project",
|
|
24
|
+
validate: (input) => {
|
|
25
|
+
if (input.trim() === "")
|
|
26
|
+
return "Project name cannot be empty.";
|
|
27
|
+
return true;
|
|
28
|
+
},
|
|
23
29
|
},
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
]);
|
|
31
|
+
path = answers.projectName;
|
|
32
|
+
}
|
|
33
|
+
path = isAbsolute(path) ? path : resolve(process.cwd(), path);
|
|
34
|
+
const isPathNotEmpty = existsSync(path) && readdirSync(path).length > 0;
|
|
35
|
+
if (isPathNotEmpty) {
|
|
36
|
+
const answers = await inquirer.prompt([
|
|
37
|
+
{
|
|
38
|
+
type: "confirm",
|
|
39
|
+
name: "overwrite",
|
|
40
|
+
message: `The directory "${path}" is not empty. Do you want to remove its contents?`,
|
|
41
|
+
default: false,
|
|
42
|
+
},
|
|
43
|
+
]);
|
|
44
|
+
if (!answers.overwrite) {
|
|
45
|
+
console.log("Operation cancelled.");
|
|
46
|
+
process.exit(0);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const templates = [{ name: "default" }];
|
|
50
|
+
const { template } = await inquirer.prompt([
|
|
32
51
|
{
|
|
33
|
-
type: "
|
|
34
|
-
name: "
|
|
35
|
-
message:
|
|
36
|
-
|
|
52
|
+
type: "list",
|
|
53
|
+
name: "template",
|
|
54
|
+
message: "Select a template:",
|
|
55
|
+
choices: templates.map((t) => t.name),
|
|
56
|
+
default: "default",
|
|
37
57
|
},
|
|
38
58
|
]);
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
59
|
+
mkdirSync(path, { recursive: true });
|
|
60
|
+
const templatePath = join(import.meta.dirname, "../../templates", template);
|
|
61
|
+
if (!existsSync(templatePath))
|
|
62
|
+
throw new Error(`Template "${template}" not found.`);
|
|
63
|
+
const files = readdirSync(templatePath);
|
|
64
|
+
for (const file of files) {
|
|
65
|
+
const source = join(templatePath, file);
|
|
66
|
+
const destination = join(path, file);
|
|
67
|
+
await cp(source, destination, { recursive: true, force: true });
|
|
42
68
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
type: "list",
|
|
48
|
-
name: "template",
|
|
49
|
-
message: "Select a template:",
|
|
50
|
-
choices: templates.map((t) => t.name),
|
|
51
|
-
default: "default",
|
|
52
|
-
},
|
|
53
|
-
]);
|
|
54
|
-
mkdirSync(path, { recursive: true });
|
|
55
|
-
const templatePath = join(import.meta.dirname, "../../templates", template);
|
|
56
|
-
if (!existsSync(templatePath))
|
|
57
|
-
throw new Error(`Template "${template}" not found.`);
|
|
58
|
-
const files = readdirSync(templatePath);
|
|
59
|
-
for (const file of files) {
|
|
60
|
-
const source = join(templatePath, file);
|
|
61
|
-
const destination = join(path, file);
|
|
62
|
-
await cp(source, destination, { recursive: true, force: true });
|
|
63
|
-
}
|
|
64
|
-
console.log("\n✅ AIGNE project created successfully!");
|
|
65
|
-
console.log(`\nTo use your new agent, run:\n cd ${relative(process.cwd(), path)} && aigne run`);
|
|
66
|
-
})
|
|
67
|
-
.showHelpAfterError(true)
|
|
68
|
-
.showSuggestionAfterError(true);
|
|
69
|
+
console.log("\n✅ AIGNE project created successfully!");
|
|
70
|
+
console.log(`\nTo use your new agent, run:\n cd ${relative(process.cwd(), path)} && aigne run`);
|
|
71
|
+
},
|
|
72
|
+
};
|
|
69
73
|
}
|
|
@@ -1,2 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import type { CommandModule } from "yargs";
|
|
2
|
+
interface ServeMCPOptions {
|
|
3
|
+
host: string;
|
|
4
|
+
port?: number;
|
|
5
|
+
}
|
|
6
|
+
export declare function createObservabilityCommand(): CommandModule<{}, ServeMCPOptions>;
|
|
7
|
+
export {};
|
package/dist/commands/observe.js
CHANGED
|
@@ -2,7 +2,6 @@ import { tryOrThrow } from "@aigne/core/utils/type-utils.js";
|
|
|
2
2
|
import { startObservabilityCLIServer } from "@aigne/observability-api/cli";
|
|
3
3
|
import getObservabilityDbPath from "@aigne/observability-api/db-path";
|
|
4
4
|
import chalk from "chalk";
|
|
5
|
-
import { Command } from "commander";
|
|
6
5
|
import detectPort from "detect-port";
|
|
7
6
|
const DEFAULT_PORT = () => tryOrThrow(() => {
|
|
8
7
|
const { PORT } = process.env;
|
|
@@ -14,16 +13,26 @@ const DEFAULT_PORT = () => tryOrThrow(() => {
|
|
|
14
13
|
return port;
|
|
15
14
|
}, (error) => new Error(`parse PORT error ${error.message}`));
|
|
16
15
|
export function createObservabilityCommand() {
|
|
17
|
-
return
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
16
|
+
return {
|
|
17
|
+
command: "observe",
|
|
18
|
+
describe: "Start the observability server",
|
|
19
|
+
builder: (yargs) => {
|
|
20
|
+
return yargs
|
|
21
|
+
.option("host", {
|
|
22
|
+
type: "string",
|
|
23
|
+
describe: "Host to run the observability server on, use 0.0.0.0 to publicly expose the server",
|
|
24
|
+
default: "localhost",
|
|
25
|
+
})
|
|
26
|
+
.option("port", {
|
|
27
|
+
type: "number",
|
|
28
|
+
describe: "Port to run the observability server on",
|
|
29
|
+
});
|
|
30
|
+
},
|
|
31
|
+
handler: async (options) => {
|
|
32
|
+
const port = await detectPort(options.port || DEFAULT_PORT());
|
|
33
|
+
const dbUrl = getObservabilityDbPath();
|
|
34
|
+
console.log("Observability database path:", chalk.greenBright(dbUrl));
|
|
35
|
+
await startObservabilityCLIServer({ port, dbUrl });
|
|
36
|
+
},
|
|
37
|
+
};
|
|
29
38
|
}
|
package/dist/commands/run.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare function createRunCommand({ aigneFilePath }?: {
|
|
1
|
+
import type { CommandModule } from "yargs";
|
|
2
|
+
export declare function createRunCommand({ aigneFilePath, }?: {
|
|
3
3
|
aigneFilePath?: string;
|
|
4
|
-
}):
|
|
4
|
+
}): CommandModule;
|
|
5
|
+
export declare function getLocalPackagePathFromUrl(url: string, { subdir }?: {
|
|
6
|
+
subdir?: string;
|
|
7
|
+
}): string;
|