@agentage/cli 0.1.18 → 0.2.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/README.md +107 -190
- package/dist/cli.js +20 -244
- package/dist/cli.js.map +1 -1
- package/dist/commands/agents.d.ts +3 -0
- package/dist/commands/agents.d.ts.map +1 -0
- package/dist/commands/agents.js +45 -0
- package/dist/commands/agents.js.map +1 -0
- package/dist/commands/daemon-cmd.d.ts +3 -0
- package/dist/commands/daemon-cmd.d.ts.map +1 -0
- package/dist/commands/daemon-cmd.js +26 -0
- package/dist/commands/daemon-cmd.js.map +1 -0
- package/dist/commands/login.d.ts +2 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +8 -65
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.d.ts +2 -1
- package/dist/commands/logout.d.ts.map +1 -1
- package/dist/commands/logout.js +7 -26
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/logs.d.ts +3 -0
- package/dist/commands/logs.d.ts.map +1 -0
- package/dist/commands/logs.js +45 -0
- package/dist/commands/logs.js.map +1 -0
- package/dist/commands/machines.d.ts +3 -0
- package/dist/commands/machines.d.ts.map +1 -0
- package/dist/commands/machines.js +14 -0
- package/dist/commands/machines.js.map +1 -0
- package/dist/commands/run.d.ts +2 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +71 -27
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/runs.d.ts +3 -0
- package/dist/commands/runs.d.ts.map +1 -0
- package/dist/commands/runs.js +73 -0
- package/dist/commands/runs.js.map +1 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +34 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/daemon/config.d.ts +32 -0
- package/dist/daemon/config.d.ts.map +1 -0
- package/dist/daemon/config.js +57 -0
- package/dist/daemon/config.js.map +1 -0
- package/dist/daemon/daemon.d.ts +8 -0
- package/dist/daemon/daemon.d.ts.map +1 -0
- package/dist/daemon/daemon.js +106 -0
- package/dist/daemon/daemon.js.map +1 -0
- package/dist/daemon/logger.d.ts +10 -0
- package/dist/daemon/logger.d.ts.map +1 -0
- package/dist/daemon/logger.js +41 -0
- package/dist/daemon/logger.js.map +1 -0
- package/dist/daemon/routes.d.ts +7 -0
- package/dist/daemon/routes.d.ts.map +1 -0
- package/dist/daemon/routes.js +102 -0
- package/dist/daemon/routes.js.map +1 -0
- package/dist/daemon/run-manager.d.ts +13 -0
- package/dist/daemon/run-manager.d.ts.map +1 -0
- package/dist/daemon/run-manager.js +119 -0
- package/dist/daemon/run-manager.js.map +1 -0
- package/dist/daemon/server.d.ts +11 -0
- package/dist/daemon/server.d.ts.map +1 -0
- package/dist/daemon/server.js +59 -0
- package/dist/daemon/server.js.map +1 -0
- package/dist/daemon/websocket.d.ts +4 -0
- package/dist/daemon/websocket.d.ts.map +1 -0
- package/dist/daemon/websocket.js +88 -0
- package/dist/daemon/websocket.js.map +1 -0
- package/dist/daemon-entry.d.ts +2 -0
- package/dist/daemon-entry.d.ts.map +1 -0
- package/dist/daemon-entry.js +45 -0
- package/dist/daemon-entry.js.map +1 -0
- package/dist/discovery/code-factory.d.ts +3 -0
- package/dist/discovery/code-factory.d.ts.map +1 -0
- package/dist/discovery/code-factory.js +32 -0
- package/dist/discovery/code-factory.js.map +1 -0
- package/dist/discovery/markdown-factory.d.ts +3 -0
- package/dist/discovery/markdown-factory.d.ts.map +1 -0
- package/dist/discovery/markdown-factory.js +63 -0
- package/dist/discovery/markdown-factory.js.map +1 -0
- package/dist/discovery/scanner.d.ts +3 -0
- package/dist/discovery/scanner.d.ts.map +1 -0
- package/dist/discovery/scanner.js +50 -0
- package/dist/discovery/scanner.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -8
- package/dist/index.js.map +1 -1
- package/dist/utils/daemon-client.d.ts +5 -0
- package/dist/utils/daemon-client.d.ts.map +1 -0
- package/dist/utils/daemon-client.js +44 -0
- package/dist/utils/daemon-client.js.map +1 -0
- package/dist/utils/ensure-daemon.d.ts +2 -0
- package/dist/utils/ensure-daemon.d.ts.map +1 -0
- package/dist/utils/ensure-daemon.js +7 -0
- package/dist/utils/ensure-daemon.js.map +1 -0
- package/dist/utils/render.d.ts +3 -0
- package/dist/utils/render.d.ts.map +1 -0
- package/dist/utils/render.js +84 -0
- package/dist/utils/render.js.map +1 -0
- package/package.json +45 -58
- package/dist/cli.test.d.ts +0 -2
- package/dist/cli.test.d.ts.map +0 -1
- package/dist/cli.test.js +0 -67
- package/dist/cli.test.js.map +0 -1
- package/dist/commands/init.d.ts +0 -8
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js +0 -39
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/init.test.d.ts +0 -2
- package/dist/commands/init.test.d.ts.map +0 -1
- package/dist/commands/init.test.js +0 -79
- package/dist/commands/init.test.js.map +0 -1
- package/dist/commands/install.d.ts +0 -8
- package/dist/commands/install.d.ts.map +0 -1
- package/dist/commands/install.js +0 -90
- package/dist/commands/install.js.map +0 -1
- package/dist/commands/install.test.d.ts +0 -2
- package/dist/commands/install.test.d.ts.map +0 -1
- package/dist/commands/install.test.js +0 -172
- package/dist/commands/install.test.js.map +0 -1
- package/dist/commands/list.d.ts +0 -2
- package/dist/commands/list.d.ts.map +0 -1
- package/dist/commands/list.js +0 -145
- package/dist/commands/list.js.map +0 -1
- package/dist/commands/list.test.d.ts +0 -2
- package/dist/commands/list.test.d.ts.map +0 -1
- package/dist/commands/list.test.js +0 -120
- package/dist/commands/list.test.js.map +0 -1
- package/dist/commands/login.test.d.ts +0 -2
- package/dist/commands/login.test.d.ts.map +0 -1
- package/dist/commands/login.test.js +0 -157
- package/dist/commands/login.test.js.map +0 -1
- package/dist/commands/logout.test.d.ts +0 -2
- package/dist/commands/logout.test.d.ts.map +0 -1
- package/dist/commands/logout.test.js +0 -49
- package/dist/commands/logout.test.js.map +0 -1
- package/dist/commands/publish.d.ts +0 -10
- package/dist/commands/publish.d.ts.map +0 -1
- package/dist/commands/publish.js +0 -138
- package/dist/commands/publish.js.map +0 -1
- package/dist/commands/publish.test.d.ts +0 -2
- package/dist/commands/publish.test.d.ts.map +0 -1
- package/dist/commands/publish.test.js +0 -307
- package/dist/commands/publish.test.js.map +0 -1
- package/dist/commands/run.test.d.ts +0 -2
- package/dist/commands/run.test.d.ts.map +0 -1
- package/dist/commands/run.test.js +0 -105
- package/dist/commands/run.test.js.map +0 -1
- package/dist/commands/search.d.ts +0 -8
- package/dist/commands/search.d.ts.map +0 -1
- package/dist/commands/search.js +0 -41
- package/dist/commands/search.js.map +0 -1
- package/dist/commands/search.test.d.ts +0 -2
- package/dist/commands/search.test.d.ts.map +0 -1
- package/dist/commands/search.test.js +0 -138
- package/dist/commands/search.test.js.map +0 -1
- package/dist/commands/update.d.ts +0 -8
- package/dist/commands/update.d.ts.map +0 -1
- package/dist/commands/update.js +0 -28
- package/dist/commands/update.js.map +0 -1
- package/dist/commands/update.test.d.ts +0 -2
- package/dist/commands/update.test.d.ts.map +0 -1
- package/dist/commands/update.test.js +0 -134
- package/dist/commands/update.test.js.map +0 -1
- package/dist/commands/whoami.d.ts +0 -2
- package/dist/commands/whoami.d.ts.map +0 -1
- package/dist/commands/whoami.js +0 -55
- package/dist/commands/whoami.js.map +0 -1
- package/dist/commands/whoami.test.d.ts +0 -2
- package/dist/commands/whoami.test.d.ts.map +0 -1
- package/dist/commands/whoami.test.js +0 -119
- package/dist/commands/whoami.test.js.map +0 -1
- package/dist/index.test.d.ts +0 -2
- package/dist/index.test.d.ts.map +0 -1
- package/dist/index.test.js +0 -17
- package/dist/index.test.js.map +0 -1
- package/dist/schemas/agent.schema.d.ts +0 -22
- package/dist/schemas/agent.schema.d.ts.map +0 -1
- package/dist/schemas/agent.schema.js +0 -9
- package/dist/schemas/agent.schema.js.map +0 -1
- package/dist/schemas/agent.schema.test.d.ts +0 -2
- package/dist/schemas/agent.schema.test.d.ts.map +0 -1
- package/dist/schemas/agent.schema.test.js +0 -80
- package/dist/schemas/agent.schema.test.js.map +0 -1
- package/dist/services/auth.service.d.ts +0 -10
- package/dist/services/auth.service.d.ts.map +0 -1
- package/dist/services/auth.service.js +0 -99
- package/dist/services/auth.service.js.map +0 -1
- package/dist/services/auth.service.test.d.ts +0 -2
- package/dist/services/auth.service.test.d.ts.map +0 -1
- package/dist/services/auth.service.test.js +0 -218
- package/dist/services/auth.service.test.js.map +0 -1
- package/dist/services/registry.service.d.ts +0 -13
- package/dist/services/registry.service.d.ts.map +0 -1
- package/dist/services/registry.service.js +0 -74
- package/dist/services/registry.service.js.map +0 -1
- package/dist/services/registry.service.test.d.ts +0 -2
- package/dist/services/registry.service.test.d.ts.map +0 -1
- package/dist/services/registry.service.test.js +0 -222
- package/dist/services/registry.service.test.js.map +0 -1
- package/dist/types/config.types.d.ts +0 -177
- package/dist/types/config.types.d.ts.map +0 -1
- package/dist/types/config.types.js +0 -22
- package/dist/types/config.types.js.map +0 -1
- package/dist/types/registry.types.d.ts +0 -65
- package/dist/types/registry.types.d.ts.map +0 -1
- package/dist/types/registry.types.js +0 -2
- package/dist/types/registry.types.js.map +0 -1
- package/dist/utils/agent-parser.d.ts +0 -26
- package/dist/utils/agent-parser.d.ts.map +0 -1
- package/dist/utils/agent-parser.js +0 -45
- package/dist/utils/agent-parser.js.map +0 -1
- package/dist/utils/agent-parser.test.d.ts +0 -2
- package/dist/utils/agent-parser.test.d.ts.map +0 -1
- package/dist/utils/agent-parser.test.js +0 -102
- package/dist/utils/agent-parser.test.js.map +0 -1
- package/dist/utils/config.d.ts +0 -21
- package/dist/utils/config.d.ts.map +0 -1
- package/dist/utils/config.js +0 -99
- package/dist/utils/config.js.map +0 -1
- package/dist/utils/config.test.d.ts +0 -2
- package/dist/utils/config.test.d.ts.map +0 -1
- package/dist/utils/config.test.js +0 -214
- package/dist/utils/config.test.js.map +0 -1
- package/dist/utils/version.d.ts +0 -10
- package/dist/utils/version.d.ts.map +0 -1
- package/dist/utils/version.js +0 -33
- package/dist/utils/version.js.map +0 -1
- package/dist/utils/version.test.d.ts +0 -2
- package/dist/utils/version.test.d.ts.map +0 -1
- package/dist/utils/version.test.js +0 -30
- package/dist/utils/version.test.js.map +0 -1
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
export interface AgentFrontmatter {
|
|
2
|
-
name?: string;
|
|
3
|
-
description?: string;
|
|
4
|
-
version?: string;
|
|
5
|
-
tools?: string[];
|
|
6
|
-
handoffs?: string[];
|
|
7
|
-
'argument-hint'?: string;
|
|
8
|
-
'mcp-servers'?: Record<string, unknown>;
|
|
9
|
-
[key: string]: unknown;
|
|
10
|
-
}
|
|
11
|
-
export interface ParsedAgent {
|
|
12
|
-
frontmatter: AgentFrontmatter;
|
|
13
|
-
content: string;
|
|
14
|
-
body: string;
|
|
15
|
-
}
|
|
16
|
-
export declare const extractFrontmatter: (content: string) => AgentFrontmatter;
|
|
17
|
-
export declare const parseAgentFile: (content: string) => ParsedAgent;
|
|
18
|
-
export declare const readAgentFile: (filePath: string) => Promise<ParsedAgent>;
|
|
19
|
-
export declare const generateDateVersion: () => string;
|
|
20
|
-
export declare const isValidAgentName: (name: string) => boolean;
|
|
21
|
-
export declare const parseAgentIdentifier: (identifier: string) => {
|
|
22
|
-
owner?: string;
|
|
23
|
-
name?: string;
|
|
24
|
-
version?: string;
|
|
25
|
-
};
|
|
26
|
-
//# sourceMappingURL=agent-parser.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-parser.d.ts","sourceRoot":"","sources":["../../src/utils/agent-parser.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,gBAAgB,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAKD,eAAO,MAAM,kBAAkB,GAAI,SAAS,MAAM,KAAG,gBAWpD,CAAC;AAKF,eAAO,MAAM,cAAc,GAAI,SAAS,MAAM,KAAG,WAUhD,CAAC;AAKF,eAAO,MAAM,aAAa,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC,WAAW,CAGzE,CAAC;AAKF,eAAO,MAAM,mBAAmB,QAAO,MAGtC,CAAC;AAKF,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,KAAG,OACM,CAAC;AAKvD,eAAO,MAAM,oBAAoB,GAC/B,YAAY,MAAM,KACjB;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAcnD,CAAC"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { readFile } from 'fs/promises';
|
|
2
|
-
import { parse } from 'yaml';
|
|
3
|
-
export const extractFrontmatter = (content) => {
|
|
4
|
-
const match = content.match(/^---\n([\s\S]*?)\n---/);
|
|
5
|
-
if (!match) {
|
|
6
|
-
return {};
|
|
7
|
-
}
|
|
8
|
-
try {
|
|
9
|
-
return parse(match[1]);
|
|
10
|
-
}
|
|
11
|
-
catch {
|
|
12
|
-
return {};
|
|
13
|
-
}
|
|
14
|
-
};
|
|
15
|
-
export const parseAgentFile = (content) => {
|
|
16
|
-
const frontmatter = extractFrontmatter(content);
|
|
17
|
-
const bodyMatch = content.match(/^---\n[\s\S]*?\n---\n?([\s\S]*)$/);
|
|
18
|
-
const body = bodyMatch ? bodyMatch[1].trim() : content;
|
|
19
|
-
return {
|
|
20
|
-
frontmatter,
|
|
21
|
-
content,
|
|
22
|
-
body,
|
|
23
|
-
};
|
|
24
|
-
};
|
|
25
|
-
export const readAgentFile = async (filePath) => {
|
|
26
|
-
const content = await readFile(filePath, 'utf-8');
|
|
27
|
-
return parseAgentFile(content);
|
|
28
|
-
};
|
|
29
|
-
export const generateDateVersion = () => {
|
|
30
|
-
const now = new Date();
|
|
31
|
-
return now.toISOString().split('T')[0];
|
|
32
|
-
};
|
|
33
|
-
export const isValidAgentName = (name) => /^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$/.test(name);
|
|
34
|
-
export const parseAgentIdentifier = (identifier) => {
|
|
35
|
-
const [fullName, version] = identifier.split('@');
|
|
36
|
-
const parts = fullName.split('/');
|
|
37
|
-
if (parts.length === 1) {
|
|
38
|
-
return { name: parts[0], version };
|
|
39
|
-
}
|
|
40
|
-
if (parts.length === 2) {
|
|
41
|
-
return { owner: parts[0], name: parts[1], version };
|
|
42
|
-
}
|
|
43
|
-
return {};
|
|
44
|
-
};
|
|
45
|
-
//# sourceMappingURL=agent-parser.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-parser.js","sourceRoot":"","sources":["../../src/utils/agent-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAsB7B,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAe,EAAoB,EAAE;IACtE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACrD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAqB,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC,CAAC;AAKF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAe,EAAe,EAAE;IAC7D,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACpE,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IAEvD,OAAO;QACL,WAAW;QACX,OAAO;QACP,IAAI;KACL,CAAC;AACJ,CAAC,CAAC;AAKF,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,QAAgB,EAAwB,EAAE;IAC5E,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClD,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC,CAAC;AAKF,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAW,EAAE;IAC9C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC,CAAC;AAKF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAW,EAAE,CACxD,yCAAyC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAKvD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,UAAkB,EACmC,EAAE;IACvD,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAElC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAEvB,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;IACrC,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;IACtD,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-parser.test.d.ts","sourceRoot":"","sources":["../../src/utils/agent-parser.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import { extractFrontmatter, generateDateVersion, isValidAgentName, parseAgentFile, parseAgentIdentifier, } from './agent-parser.js';
|
|
2
|
-
describe('agent-parser', () => {
|
|
3
|
-
describe('extractFrontmatter', () => {
|
|
4
|
-
test('extracts valid frontmatter', () => {
|
|
5
|
-
const content = `---
|
|
6
|
-
name: test-agent
|
|
7
|
-
description: A test agent
|
|
8
|
-
version: 2025-11-30
|
|
9
|
-
---
|
|
10
|
-
You are a helpful assistant.`;
|
|
11
|
-
const result = extractFrontmatter(content);
|
|
12
|
-
expect(result.name).toBe('test-agent');
|
|
13
|
-
expect(result.description).toBe('A test agent');
|
|
14
|
-
expect(result.version).toBe('2025-11-30');
|
|
15
|
-
});
|
|
16
|
-
test('returns empty object for missing frontmatter', () => {
|
|
17
|
-
const content = 'Just plain text without frontmatter';
|
|
18
|
-
const result = extractFrontmatter(content);
|
|
19
|
-
expect(result).toEqual({});
|
|
20
|
-
});
|
|
21
|
-
test('returns empty object for invalid YAML', () => {
|
|
22
|
-
const content = `---
|
|
23
|
-
invalid: yaml: content: here
|
|
24
|
-
---
|
|
25
|
-
Body`;
|
|
26
|
-
const result = extractFrontmatter(content);
|
|
27
|
-
expect(result).toEqual({});
|
|
28
|
-
});
|
|
29
|
-
});
|
|
30
|
-
describe('parseAgentFile', () => {
|
|
31
|
-
test('parses full agent file', () => {
|
|
32
|
-
const content = `---
|
|
33
|
-
name: my-agent
|
|
34
|
-
model: gpt-4
|
|
35
|
-
---
|
|
36
|
-
You are a helpful assistant.
|
|
37
|
-
|
|
38
|
-
## Instructions
|
|
39
|
-
Be kind and helpful.`;
|
|
40
|
-
const result = parseAgentFile(content);
|
|
41
|
-
expect(result.frontmatter.name).toBe('my-agent');
|
|
42
|
-
expect(result.frontmatter.model).toBe('gpt-4');
|
|
43
|
-
expect(result.content).toBe(content);
|
|
44
|
-
expect(result.body).toContain('You are a helpful assistant.');
|
|
45
|
-
expect(result.body).toContain('## Instructions');
|
|
46
|
-
});
|
|
47
|
-
test('handles content without frontmatter', () => {
|
|
48
|
-
const content = 'Just plain text';
|
|
49
|
-
const result = parseAgentFile(content);
|
|
50
|
-
expect(result.frontmatter).toEqual({});
|
|
51
|
-
expect(result.body).toBe(content);
|
|
52
|
-
});
|
|
53
|
-
});
|
|
54
|
-
describe('generateDateVersion', () => {
|
|
55
|
-
test('generates date in YYYY-MM-DD format', () => {
|
|
56
|
-
const version = generateDateVersion();
|
|
57
|
-
expect(version).toMatch(/^\d{4}-\d{2}-\d{2}$/);
|
|
58
|
-
});
|
|
59
|
-
});
|
|
60
|
-
describe('isValidAgentName', () => {
|
|
61
|
-
test('accepts valid names', () => {
|
|
62
|
-
expect(isValidAgentName('my-agent')).toBe(true);
|
|
63
|
-
expect(isValidAgentName('agent123')).toBe(true);
|
|
64
|
-
expect(isValidAgentName('a')).toBe(true);
|
|
65
|
-
expect(isValidAgentName('test-agent-v2')).toBe(true);
|
|
66
|
-
});
|
|
67
|
-
test('rejects invalid names', () => {
|
|
68
|
-
expect(isValidAgentName('My-Agent')).toBe(false);
|
|
69
|
-
expect(isValidAgentName('-agent')).toBe(false);
|
|
70
|
-
expect(isValidAgentName('agent-')).toBe(false);
|
|
71
|
-
expect(isValidAgentName('agent_name')).toBe(false);
|
|
72
|
-
expect(isValidAgentName('')).toBe(false);
|
|
73
|
-
});
|
|
74
|
-
});
|
|
75
|
-
describe('parseAgentIdentifier', () => {
|
|
76
|
-
test('parses owner/name format', () => {
|
|
77
|
-
const result = parseAgentIdentifier('owner/my-agent');
|
|
78
|
-
expect(result).toEqual({
|
|
79
|
-
owner: 'owner',
|
|
80
|
-
name: 'my-agent',
|
|
81
|
-
version: undefined,
|
|
82
|
-
});
|
|
83
|
-
});
|
|
84
|
-
test('parses owner/name@version format', () => {
|
|
85
|
-
const result = parseAgentIdentifier('owner/my-agent@2025-11-30');
|
|
86
|
-
expect(result).toEqual({
|
|
87
|
-
owner: 'owner',
|
|
88
|
-
name: 'my-agent',
|
|
89
|
-
version: '2025-11-30',
|
|
90
|
-
});
|
|
91
|
-
});
|
|
92
|
-
test('parses name-only format', () => {
|
|
93
|
-
const result = parseAgentIdentifier('my-agent');
|
|
94
|
-
expect(result).toEqual({ name: 'my-agent', version: undefined });
|
|
95
|
-
});
|
|
96
|
-
test('parses name@version format', () => {
|
|
97
|
-
const result = parseAgentIdentifier('my-agent@1.0.0');
|
|
98
|
-
expect(result).toEqual({ name: 'my-agent', version: '1.0.0' });
|
|
99
|
-
});
|
|
100
|
-
});
|
|
101
|
-
});
|
|
102
|
-
//# sourceMappingURL=agent-parser.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-parser.test.js","sourceRoot":"","sources":["../../src/utils/agent-parser.test.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/config.d.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { AgentageConfig } from '../types/config.types.js';
|
|
2
|
-
export declare const DEFAULT_REGISTRY_URL = "https://dev.agentage.io";
|
|
3
|
-
export declare const getConfigDir: () => string;
|
|
4
|
-
export declare const getConfigPath: () => string;
|
|
5
|
-
export declare const loadConfig: () => Promise<AgentageConfig>;
|
|
6
|
-
export declare const saveConfig: (config: AgentageConfig) => Promise<void>;
|
|
7
|
-
export declare const clearConfig: () => Promise<void>;
|
|
8
|
-
export declare const getRegistryUrl: () => Promise<string>;
|
|
9
|
-
export declare const isTokenExpired: (expiresAt: string | undefined) => boolean;
|
|
10
|
-
export declare const getAuthToken: () => Promise<string | undefined>;
|
|
11
|
-
export type AuthStatus = {
|
|
12
|
-
status: 'authenticated';
|
|
13
|
-
token: string;
|
|
14
|
-
} | {
|
|
15
|
-
status: 'expired';
|
|
16
|
-
} | {
|
|
17
|
-
status: 'not_authenticated';
|
|
18
|
-
};
|
|
19
|
-
export declare const getAuthStatus: () => Promise<AuthStatus>;
|
|
20
|
-
export declare const getDeviceId: () => Promise<string>;
|
|
21
|
-
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAwB,MAAM,0BAA0B,CAAC;AAKhF,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAK9D,eAAO,MAAM,YAAY,QAAO,MAAsC,CAAC;AAKvE,eAAO,MAAM,aAAa,QAAO,MAA6C,CAAC;AAK/E,eAAO,MAAM,UAAU,QAAa,OAAO,CAAC,cAAc,CAUzD,CAAC;AAKF,eAAO,MAAM,UAAU,GAAU,QAAQ,cAAc,KAAG,OAAO,CAAC,IAAI,CASrE,CAAC;AAKF,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,IAAI,CAOhD,CAAC;AAKF,eAAO,MAAM,cAAc,QAAa,OAAO,CAAC,MAAM,CAUrD,CAAC;AAKF,eAAO,MAAM,cAAc,GAAI,WAAW,MAAM,GAAG,SAAS,KAAG,OAM9D,CAAC;AAMF,eAAO,MAAM,YAAY,QAAa,OAAO,CAAC,MAAM,GAAG,SAAS,CAmB/D,CAAC;AAKF,MAAM,MAAM,UAAU,GAClB;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GACrB;IAAE,MAAM,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAKpC,eAAO,MAAM,aAAa,QAAa,OAAO,CAAC,UAAU,CAmBxD,CAAC;AAuBF,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,MAAM,CAalD,CAAC"}
|
package/dist/utils/config.js
DELETED
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import { createHash } from 'crypto';
|
|
2
|
-
import { mkdir, readFile, rm, writeFile } from 'fs/promises';
|
|
3
|
-
import { arch, homedir, hostname, platform } from 'os';
|
|
4
|
-
import { dirname, join } from 'path';
|
|
5
|
-
import { agentageConfigSchema } from '../types/config.types.js';
|
|
6
|
-
export const DEFAULT_REGISTRY_URL = 'https://dev.agentage.io';
|
|
7
|
-
export const getConfigDir = () => join(homedir(), '.agentage');
|
|
8
|
-
export const getConfigPath = () => join(getConfigDir(), 'config.json');
|
|
9
|
-
export const loadConfig = async () => {
|
|
10
|
-
try {
|
|
11
|
-
const configPath = getConfigPath();
|
|
12
|
-
const content = await readFile(configPath, 'utf-8');
|
|
13
|
-
const parsed = JSON.parse(content);
|
|
14
|
-
return agentageConfigSchema.parse(parsed);
|
|
15
|
-
}
|
|
16
|
-
catch {
|
|
17
|
-
return {};
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
export const saveConfig = async (config) => {
|
|
21
|
-
const configPath = getConfigPath();
|
|
22
|
-
const configDir = dirname(configPath);
|
|
23
|
-
await mkdir(configDir, { recursive: true });
|
|
24
|
-
await writeFile(configPath, JSON.stringify(config, null, 2), 'utf-8');
|
|
25
|
-
};
|
|
26
|
-
export const clearConfig = async () => {
|
|
27
|
-
try {
|
|
28
|
-
const configPath = getConfigPath();
|
|
29
|
-
await rm(configPath);
|
|
30
|
-
}
|
|
31
|
-
catch {
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
export const getRegistryUrl = async () => {
|
|
35
|
-
const envUrl = process.env.AGENTAGE_REGISTRY_URL;
|
|
36
|
-
if (envUrl) {
|
|
37
|
-
return envUrl;
|
|
38
|
-
}
|
|
39
|
-
const config = await loadConfig();
|
|
40
|
-
return config.registry?.url || DEFAULT_REGISTRY_URL;
|
|
41
|
-
};
|
|
42
|
-
export const isTokenExpired = (expiresAt) => {
|
|
43
|
-
if (!expiresAt) {
|
|
44
|
-
return false;
|
|
45
|
-
}
|
|
46
|
-
const expiryDate = new Date(expiresAt);
|
|
47
|
-
return expiryDate <= new Date();
|
|
48
|
-
};
|
|
49
|
-
export const getAuthToken = async () => {
|
|
50
|
-
const envToken = process.env.AGENTAGE_AUTH_TOKEN;
|
|
51
|
-
if (envToken) {
|
|
52
|
-
return envToken;
|
|
53
|
-
}
|
|
54
|
-
const config = await loadConfig();
|
|
55
|
-
if (config.auth?.token) {
|
|
56
|
-
if (isTokenExpired(config.auth.expiresAt)) {
|
|
57
|
-
return undefined;
|
|
58
|
-
}
|
|
59
|
-
return config.auth.token;
|
|
60
|
-
}
|
|
61
|
-
return undefined;
|
|
62
|
-
};
|
|
63
|
-
export const getAuthStatus = async () => {
|
|
64
|
-
const envToken = process.env.AGENTAGE_AUTH_TOKEN;
|
|
65
|
-
if (envToken) {
|
|
66
|
-
return { status: 'authenticated', token: envToken };
|
|
67
|
-
}
|
|
68
|
-
const config = await loadConfig();
|
|
69
|
-
if (!config.auth?.token) {
|
|
70
|
-
return { status: 'not_authenticated' };
|
|
71
|
-
}
|
|
72
|
-
if (isTokenExpired(config.auth.expiresAt)) {
|
|
73
|
-
return { status: 'expired' };
|
|
74
|
-
}
|
|
75
|
-
return { status: 'authenticated', token: config.auth.token };
|
|
76
|
-
};
|
|
77
|
-
const generateDeviceFingerprint = async () => {
|
|
78
|
-
try {
|
|
79
|
-
const { machineIdSync } = await import('node-machine-id');
|
|
80
|
-
const machineId = machineIdSync();
|
|
81
|
-
const osInfo = `${platform()}-${arch()}-${hostname()}`;
|
|
82
|
-
const data = `${machineId}|${osInfo}`;
|
|
83
|
-
return createHash('sha256').update(data).digest('hex').slice(0, 32);
|
|
84
|
-
}
|
|
85
|
-
catch {
|
|
86
|
-
const osInfo = `${platform()}-${arch()}-${hostname()}-${Date.now()}`;
|
|
87
|
-
return createHash('sha256').update(osInfo).digest('hex').slice(0, 32);
|
|
88
|
-
}
|
|
89
|
-
};
|
|
90
|
-
export const getDeviceId = async () => {
|
|
91
|
-
const config = await loadConfig();
|
|
92
|
-
if (config.deviceId) {
|
|
93
|
-
return config.deviceId;
|
|
94
|
-
}
|
|
95
|
-
const deviceId = await generateDeviceFingerprint();
|
|
96
|
-
await saveConfig({ ...config, deviceId });
|
|
97
|
-
return deviceId;
|
|
98
|
-
};
|
|
99
|
-
//# sourceMappingURL=config.js.map
|
package/dist/utils/config.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.test.d.ts","sourceRoot":"","sources":["../../src/utils/config.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,214 +0,0 @@
|
|
|
1
|
-
import { mkdir, readFile, rm, writeFile } from 'fs/promises';
|
|
2
|
-
import { homedir } from 'os';
|
|
3
|
-
import { clearConfig, DEFAULT_REGISTRY_URL, getAuthStatus, getAuthToken, getConfigDir, getConfigPath, getDeviceId, getRegistryUrl, isTokenExpired, loadConfig, saveConfig, } from './config.js';
|
|
4
|
-
jest.mock('fs/promises');
|
|
5
|
-
jest.mock('os');
|
|
6
|
-
const mockMkdir = mkdir;
|
|
7
|
-
const mockReadFile = readFile;
|
|
8
|
-
const mockWriteFile = writeFile;
|
|
9
|
-
const mockRm = rm;
|
|
10
|
-
const mockHomedir = homedir;
|
|
11
|
-
describe('config utils', () => {
|
|
12
|
-
beforeEach(() => {
|
|
13
|
-
jest.clearAllMocks();
|
|
14
|
-
mockHomedir.mockReturnValue('/home/testuser');
|
|
15
|
-
delete process.env.AGENTAGE_REGISTRY_URL;
|
|
16
|
-
delete process.env.AGENTAGE_AUTH_TOKEN;
|
|
17
|
-
});
|
|
18
|
-
describe('getConfigDir', () => {
|
|
19
|
-
it('returns the correct config directory path', () => {
|
|
20
|
-
expect(getConfigDir()).toBe('/home/testuser/.agentage');
|
|
21
|
-
});
|
|
22
|
-
});
|
|
23
|
-
describe('getConfigPath', () => {
|
|
24
|
-
it('returns the correct config file path', () => {
|
|
25
|
-
expect(getConfigPath()).toBe('/home/testuser/.agentage/config.json');
|
|
26
|
-
});
|
|
27
|
-
});
|
|
28
|
-
describe('loadConfig', () => {
|
|
29
|
-
it('returns parsed config when file exists', async () => {
|
|
30
|
-
const config = {
|
|
31
|
-
auth: {
|
|
32
|
-
token: 'test-token',
|
|
33
|
-
user: { id: '123', email: 'test@example.com' },
|
|
34
|
-
},
|
|
35
|
-
};
|
|
36
|
-
mockReadFile.mockResolvedValue(JSON.stringify(config));
|
|
37
|
-
const result = await loadConfig();
|
|
38
|
-
expect(result).toEqual(config);
|
|
39
|
-
expect(mockReadFile).toHaveBeenCalledWith('/home/testuser/.agentage/config.json', 'utf-8');
|
|
40
|
-
});
|
|
41
|
-
it('returns empty config when file does not exist', async () => {
|
|
42
|
-
mockReadFile.mockRejectedValue(new Error('ENOENT'));
|
|
43
|
-
const result = await loadConfig();
|
|
44
|
-
expect(result).toEqual({});
|
|
45
|
-
});
|
|
46
|
-
it('returns empty config when file contains invalid JSON', async () => {
|
|
47
|
-
mockReadFile.mockResolvedValue('invalid json');
|
|
48
|
-
const result = await loadConfig();
|
|
49
|
-
expect(result).toEqual({});
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
describe('saveConfig', () => {
|
|
53
|
-
it('creates directory and writes config file', async () => {
|
|
54
|
-
mockMkdir.mockResolvedValue(undefined);
|
|
55
|
-
mockWriteFile.mockResolvedValue(undefined);
|
|
56
|
-
const config = {
|
|
57
|
-
auth: { token: 'test-token' },
|
|
58
|
-
};
|
|
59
|
-
await saveConfig(config);
|
|
60
|
-
expect(mockMkdir).toHaveBeenCalledWith('/home/testuser/.agentage', {
|
|
61
|
-
recursive: true,
|
|
62
|
-
});
|
|
63
|
-
expect(mockWriteFile).toHaveBeenCalledWith('/home/testuser/.agentage/config.json', JSON.stringify(config, null, 2), 'utf-8');
|
|
64
|
-
});
|
|
65
|
-
});
|
|
66
|
-
describe('clearConfig', () => {
|
|
67
|
-
it('removes the config file', async () => {
|
|
68
|
-
mockRm.mockResolvedValue(undefined);
|
|
69
|
-
await clearConfig();
|
|
70
|
-
expect(mockRm).toHaveBeenCalledWith('/home/testuser/.agentage/config.json');
|
|
71
|
-
});
|
|
72
|
-
it('ignores error if file does not exist', async () => {
|
|
73
|
-
mockRm.mockRejectedValue(new Error('ENOENT'));
|
|
74
|
-
await expect(clearConfig()).resolves.not.toThrow();
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
describe('getRegistryUrl', () => {
|
|
78
|
-
it('returns environment variable when set', async () => {
|
|
79
|
-
process.env.AGENTAGE_REGISTRY_URL = 'https://custom.registry.io';
|
|
80
|
-
const result = await getRegistryUrl();
|
|
81
|
-
expect(result).toBe('https://custom.registry.io');
|
|
82
|
-
});
|
|
83
|
-
it('returns config value when no env var', async () => {
|
|
84
|
-
const config = {
|
|
85
|
-
registry: { url: 'https://config.registry.io' },
|
|
86
|
-
};
|
|
87
|
-
mockReadFile.mockResolvedValue(JSON.stringify(config));
|
|
88
|
-
const result = await getRegistryUrl();
|
|
89
|
-
expect(result).toBe('https://config.registry.io');
|
|
90
|
-
});
|
|
91
|
-
it('returns default when no env var or config', async () => {
|
|
92
|
-
mockReadFile.mockRejectedValue(new Error('ENOENT'));
|
|
93
|
-
const result = await getRegistryUrl();
|
|
94
|
-
expect(result).toBe(DEFAULT_REGISTRY_URL);
|
|
95
|
-
});
|
|
96
|
-
});
|
|
97
|
-
describe('getAuthToken', () => {
|
|
98
|
-
it('returns environment variable when set', async () => {
|
|
99
|
-
process.env.AGENTAGE_AUTH_TOKEN = 'env-token';
|
|
100
|
-
const result = await getAuthToken();
|
|
101
|
-
expect(result).toBe('env-token');
|
|
102
|
-
});
|
|
103
|
-
it('returns config value when no env var', async () => {
|
|
104
|
-
const config = {
|
|
105
|
-
auth: { token: 'config-token' },
|
|
106
|
-
};
|
|
107
|
-
mockReadFile.mockResolvedValue(JSON.stringify(config));
|
|
108
|
-
const result = await getAuthToken();
|
|
109
|
-
expect(result).toBe('config-token');
|
|
110
|
-
});
|
|
111
|
-
it('returns undefined when no token available', async () => {
|
|
112
|
-
mockReadFile.mockRejectedValue(new Error('ENOENT'));
|
|
113
|
-
const result = await getAuthToken();
|
|
114
|
-
expect(result).toBeUndefined();
|
|
115
|
-
});
|
|
116
|
-
it('returns undefined when token is expired', async () => {
|
|
117
|
-
const pastDate = new Date(Date.now() - 86400000).toISOString();
|
|
118
|
-
const config = {
|
|
119
|
-
auth: { token: 'expired-token', expiresAt: pastDate },
|
|
120
|
-
};
|
|
121
|
-
mockReadFile.mockResolvedValue(JSON.stringify(config));
|
|
122
|
-
const result = await getAuthToken();
|
|
123
|
-
expect(result).toBeUndefined();
|
|
124
|
-
});
|
|
125
|
-
it('returns token when not expired', async () => {
|
|
126
|
-
const futureDate = new Date(Date.now() + 86400000).toISOString();
|
|
127
|
-
const config = {
|
|
128
|
-
auth: { token: 'valid-token', expiresAt: futureDate },
|
|
129
|
-
};
|
|
130
|
-
mockReadFile.mockResolvedValue(JSON.stringify(config));
|
|
131
|
-
const result = await getAuthToken();
|
|
132
|
-
expect(result).toBe('valid-token');
|
|
133
|
-
});
|
|
134
|
-
});
|
|
135
|
-
describe('isTokenExpired', () => {
|
|
136
|
-
it('returns false when expiresAt is undefined', () => {
|
|
137
|
-
expect(isTokenExpired(undefined)).toBe(false);
|
|
138
|
-
});
|
|
139
|
-
it('returns true when token is expired', () => {
|
|
140
|
-
const pastDate = new Date(Date.now() - 86400000).toISOString();
|
|
141
|
-
expect(isTokenExpired(pastDate)).toBe(true);
|
|
142
|
-
});
|
|
143
|
-
it('returns false when token is not expired', () => {
|
|
144
|
-
const futureDate = new Date(Date.now() + 86400000).toISOString();
|
|
145
|
-
expect(isTokenExpired(futureDate)).toBe(false);
|
|
146
|
-
});
|
|
147
|
-
it('returns true when token just expired', () => {
|
|
148
|
-
const now = new Date().toISOString();
|
|
149
|
-
expect(isTokenExpired(now)).toBe(true);
|
|
150
|
-
});
|
|
151
|
-
});
|
|
152
|
-
describe('getAuthStatus', () => {
|
|
153
|
-
it('returns authenticated with env token', async () => {
|
|
154
|
-
process.env.AGENTAGE_AUTH_TOKEN = 'env-token';
|
|
155
|
-
const result = await getAuthStatus();
|
|
156
|
-
expect(result).toEqual({ status: 'authenticated', token: 'env-token' });
|
|
157
|
-
});
|
|
158
|
-
it('returns not_authenticated when no token', async () => {
|
|
159
|
-
mockReadFile.mockRejectedValue(new Error('ENOENT'));
|
|
160
|
-
const result = await getAuthStatus();
|
|
161
|
-
expect(result).toEqual({ status: 'not_authenticated' });
|
|
162
|
-
});
|
|
163
|
-
it('returns expired when token is expired', async () => {
|
|
164
|
-
const pastDate = new Date(Date.now() - 86400000).toISOString();
|
|
165
|
-
const config = {
|
|
166
|
-
auth: { token: 'expired-token', expiresAt: pastDate },
|
|
167
|
-
};
|
|
168
|
-
mockReadFile.mockResolvedValue(JSON.stringify(config));
|
|
169
|
-
const result = await getAuthStatus();
|
|
170
|
-
expect(result).toEqual({ status: 'expired' });
|
|
171
|
-
});
|
|
172
|
-
it('returns authenticated when token is valid', async () => {
|
|
173
|
-
const futureDate = new Date(Date.now() + 86400000).toISOString();
|
|
174
|
-
const config = {
|
|
175
|
-
auth: { token: 'valid-token', expiresAt: futureDate },
|
|
176
|
-
};
|
|
177
|
-
mockReadFile.mockResolvedValue(JSON.stringify(config));
|
|
178
|
-
const result = await getAuthStatus();
|
|
179
|
-
expect(result).toEqual({ status: 'authenticated', token: 'valid-token' });
|
|
180
|
-
});
|
|
181
|
-
});
|
|
182
|
-
describe('getDeviceId', () => {
|
|
183
|
-
it('returns existing device ID from config', async () => {
|
|
184
|
-
const config = {
|
|
185
|
-
deviceId: 'existing-device-id-12345678',
|
|
186
|
-
};
|
|
187
|
-
mockReadFile.mockResolvedValue(JSON.stringify(config));
|
|
188
|
-
const result = await getDeviceId();
|
|
189
|
-
expect(result).toBe('existing-device-id-12345678');
|
|
190
|
-
expect(mockWriteFile).not.toHaveBeenCalled();
|
|
191
|
-
});
|
|
192
|
-
it('generates and saves new device ID when not in config', async () => {
|
|
193
|
-
mockReadFile.mockRejectedValue(new Error('ENOENT'));
|
|
194
|
-
mockMkdir.mockResolvedValue(undefined);
|
|
195
|
-
mockWriteFile.mockResolvedValue(undefined);
|
|
196
|
-
const result = await getDeviceId();
|
|
197
|
-
expect(result).toMatch(/^[a-f0-9]{32}$/);
|
|
198
|
-
expect(mockWriteFile).toHaveBeenCalled();
|
|
199
|
-
const savedConfig = JSON.parse(mockWriteFile.mock.calls[0][1]);
|
|
200
|
-
expect(savedConfig.deviceId).toBe(result);
|
|
201
|
-
});
|
|
202
|
-
it('returns consistent device ID on subsequent calls', async () => {
|
|
203
|
-
const config = {
|
|
204
|
-
deviceId: 'consistent-device-id-abc',
|
|
205
|
-
};
|
|
206
|
-
mockReadFile.mockResolvedValue(JSON.stringify(config));
|
|
207
|
-
const result1 = await getDeviceId();
|
|
208
|
-
const result2 = await getDeviceId();
|
|
209
|
-
expect(result1).toBe(result2);
|
|
210
|
-
expect(result1).toBe('consistent-device-id-abc');
|
|
211
|
-
});
|
|
212
|
-
});
|
|
213
|
-
});
|
|
214
|
-
//# sourceMappingURL=config.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.test.js","sourceRoot":"","sources":["../../src/utils/config.test.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/version.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export declare const PACKAGE_NAME = "@agentage/cli";
|
|
2
|
-
export declare const getInstalledVersion: () => Promise<string>;
|
|
3
|
-
export declare const getLatestVersion: () => Promise<string>;
|
|
4
|
-
export interface VersionCheckResult {
|
|
5
|
-
currentVersion: string;
|
|
6
|
-
latestVersion: string;
|
|
7
|
-
updateAvailable: boolean;
|
|
8
|
-
}
|
|
9
|
-
export declare const checkForUpdates: (currentVersion: string) => Promise<VersionCheckResult>;
|
|
10
|
-
//# sourceMappingURL=version.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/utils/version.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAE5C,eAAO,MAAM,mBAAmB,QAAa,OAAO,CAAC,MAAM,CAQ1D,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAa,OAAO,CAAC,MAAM,CAOvD,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,eAAO,MAAM,eAAe,GAC1B,gBAAgB,MAAM,KACrB,OAAO,CAAC,kBAAkB,CAU5B,CAAC"}
|
package/dist/utils/version.js
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { exec } from 'child_process';
|
|
2
|
-
import { promisify } from 'util';
|
|
3
|
-
const execAsync = promisify(exec);
|
|
4
|
-
export const PACKAGE_NAME = '@agentage/cli';
|
|
5
|
-
export const getInstalledVersion = async () => {
|
|
6
|
-
try {
|
|
7
|
-
const { stdout } = await execAsync(`npm list -g ${PACKAGE_NAME} --json`);
|
|
8
|
-
const data = JSON.parse(stdout);
|
|
9
|
-
return data.dependencies?.[PACKAGE_NAME]?.version || 'unknown';
|
|
10
|
-
}
|
|
11
|
-
catch {
|
|
12
|
-
return 'unknown';
|
|
13
|
-
}
|
|
14
|
-
};
|
|
15
|
-
export const getLatestVersion = async () => {
|
|
16
|
-
try {
|
|
17
|
-
const { stdout } = await execAsync(`npm view ${PACKAGE_NAME} version`);
|
|
18
|
-
return stdout.trim();
|
|
19
|
-
}
|
|
20
|
-
catch {
|
|
21
|
-
return 'unknown';
|
|
22
|
-
}
|
|
23
|
-
};
|
|
24
|
-
export const checkForUpdates = async (currentVersion) => {
|
|
25
|
-
const latestVersion = await getLatestVersion();
|
|
26
|
-
const updateAvailable = latestVersion !== 'unknown' && latestVersion !== currentVersion;
|
|
27
|
-
return {
|
|
28
|
-
currentVersion,
|
|
29
|
-
latestVersion,
|
|
30
|
-
updateAvailable,
|
|
31
|
-
};
|
|
32
|
-
};
|
|
33
|
-
//# sourceMappingURL=version.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/utils/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAElC,MAAM,CAAC,MAAM,YAAY,GAAG,eAAe,CAAC;AAE5C,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,IAAqB,EAAE;IAC7D,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,eAAe,YAAY,SAAS,CAAC,CAAC;QACzE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,IAAI,SAAS,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,IAAqB,EAAE;IAC1D,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,YAAY,YAAY,UAAU,CAAC,CAAC;QACvE,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC,CAAC;AAQF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAClC,cAAsB,EACO,EAAE;IAC/B,MAAM,aAAa,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAC/C,MAAM,eAAe,GACnB,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,cAAc,CAAC;IAElE,OAAO;QACL,cAAc;QACd,aAAa;QACb,eAAe;KAChB,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"version.test.d.ts","sourceRoot":"","sources":["../../src/utils/version.test.ts"],"names":[],"mappings":""}
|