@agentage/cli 0.1.19 → 0.3.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.
Files changed (272) hide show
  1. package/README.md +111 -199
  2. package/dist/cli.js +21 -244
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/agents.d.ts +3 -0
  5. package/dist/commands/agents.d.ts.map +1 -0
  6. package/dist/commands/agents.js +78 -0
  7. package/dist/commands/agents.js.map +1 -0
  8. package/dist/commands/daemon-cmd.d.ts +3 -0
  9. package/dist/commands/daemon-cmd.d.ts.map +1 -0
  10. package/dist/commands/daemon-cmd.js +26 -0
  11. package/dist/commands/daemon-cmd.js.map +1 -0
  12. package/dist/commands/login.d.ts +2 -1
  13. package/dist/commands/login.d.ts.map +1 -1
  14. package/dist/commands/login.js +68 -57
  15. package/dist/commands/login.js.map +1 -1
  16. package/dist/commands/logout.d.ts +2 -1
  17. package/dist/commands/logout.d.ts.map +1 -1
  18. package/dist/commands/logout.js +22 -21
  19. package/dist/commands/logout.js.map +1 -1
  20. package/dist/commands/logs.d.ts +3 -0
  21. package/dist/commands/logs.d.ts.map +1 -0
  22. package/dist/commands/logs.js +45 -0
  23. package/dist/commands/logs.js.map +1 -0
  24. package/dist/commands/machines.d.ts +3 -0
  25. package/dist/commands/machines.d.ts.map +1 -0
  26. package/dist/commands/machines.js +56 -0
  27. package/dist/commands/machines.js.map +1 -0
  28. package/dist/commands/run.d.ts +2 -1
  29. package/dist/commands/run.d.ts.map +1 -1
  30. package/dist/commands/run.js +166 -22
  31. package/dist/commands/run.js.map +1 -1
  32. package/dist/commands/runs.d.ts +3 -0
  33. package/dist/commands/runs.d.ts.map +1 -0
  34. package/dist/commands/runs.js +73 -0
  35. package/dist/commands/runs.js.map +1 -0
  36. package/dist/commands/status.d.ts +3 -0
  37. package/dist/commands/status.d.ts.map +1 -0
  38. package/dist/commands/status.js +44 -0
  39. package/dist/commands/status.js.map +1 -0
  40. package/dist/daemon/config.d.ts +32 -0
  41. package/dist/daemon/config.d.ts.map +1 -0
  42. package/dist/daemon/config.js +64 -0
  43. package/dist/daemon/config.js.map +1 -0
  44. package/dist/daemon/daemon.d.ts +8 -0
  45. package/dist/daemon/daemon.d.ts.map +1 -0
  46. package/dist/daemon/daemon.js +106 -0
  47. package/dist/daemon/daemon.js.map +1 -0
  48. package/dist/daemon/logger.d.ts +10 -0
  49. package/dist/daemon/logger.d.ts.map +1 -0
  50. package/dist/daemon/logger.js +41 -0
  51. package/dist/daemon/logger.js.map +1 -0
  52. package/dist/daemon/routes.d.ts +7 -0
  53. package/dist/daemon/routes.d.ts.map +1 -0
  54. package/dist/daemon/routes.js +189 -0
  55. package/dist/daemon/routes.js.map +1 -0
  56. package/dist/daemon/run-manager.d.ts +13 -0
  57. package/dist/daemon/run-manager.d.ts.map +1 -0
  58. package/dist/daemon/run-manager.js +119 -0
  59. package/dist/daemon/run-manager.js.map +1 -0
  60. package/dist/daemon/server.d.ts +11 -0
  61. package/dist/daemon/server.d.ts.map +1 -0
  62. package/dist/daemon/server.js +59 -0
  63. package/dist/daemon/server.js.map +1 -0
  64. package/dist/daemon/websocket.d.ts +4 -0
  65. package/dist/daemon/websocket.d.ts.map +1 -0
  66. package/dist/daemon/websocket.js +88 -0
  67. package/dist/daemon/websocket.js.map +1 -0
  68. package/dist/daemon-entry.d.ts +2 -0
  69. package/dist/daemon-entry.d.ts.map +1 -0
  70. package/dist/daemon-entry.js +50 -0
  71. package/dist/daemon-entry.js.map +1 -0
  72. package/dist/discovery/code-factory.d.ts +3 -0
  73. package/dist/discovery/code-factory.d.ts.map +1 -0
  74. package/dist/discovery/code-factory.js +32 -0
  75. package/dist/discovery/code-factory.js.map +1 -0
  76. package/dist/discovery/markdown-factory.d.ts +3 -0
  77. package/dist/discovery/markdown-factory.d.ts.map +1 -0
  78. package/dist/discovery/markdown-factory.js +63 -0
  79. package/dist/discovery/markdown-factory.js.map +1 -0
  80. package/dist/discovery/scanner.d.ts +3 -0
  81. package/dist/discovery/scanner.d.ts.map +1 -0
  82. package/dist/discovery/scanner.js +50 -0
  83. package/dist/discovery/scanner.js.map +1 -0
  84. package/dist/hub/auth-callback.d.ts +4 -0
  85. package/dist/hub/auth-callback.d.ts.map +1 -0
  86. package/dist/hub/auth-callback.js +75 -0
  87. package/dist/hub/auth-callback.js.map +1 -0
  88. package/dist/hub/auth.d.ts +21 -0
  89. package/dist/hub/auth.d.ts.map +1 -0
  90. package/dist/hub/auth.js +26 -0
  91. package/dist/hub/auth.js.map +1 -0
  92. package/dist/hub/hub-client.d.ts +33 -0
  93. package/dist/hub/hub-client.d.ts.map +1 -0
  94. package/dist/hub/hub-client.js +64 -0
  95. package/dist/hub/hub-client.js.map +1 -0
  96. package/dist/hub/hub-sync.d.ts +9 -0
  97. package/dist/hub/hub-sync.d.ts.map +1 -0
  98. package/dist/hub/hub-sync.js +150 -0
  99. package/dist/hub/hub-sync.js.map +1 -0
  100. package/dist/hub/hub-ws.d.ts +7 -0
  101. package/dist/hub/hub-ws.d.ts.map +1 -0
  102. package/dist/hub/hub-ws.js +105 -0
  103. package/dist/hub/hub-ws.js.map +1 -0
  104. package/dist/hub/reconnection.d.ts +13 -0
  105. package/dist/hub/reconnection.d.ts.map +1 -0
  106. package/dist/hub/reconnection.js +39 -0
  107. package/dist/hub/reconnection.js.map +1 -0
  108. package/dist/index.d.ts +2 -2
  109. package/dist/index.d.ts.map +1 -1
  110. package/dist/index.js +1 -8
  111. package/dist/index.js.map +1 -1
  112. package/dist/utils/daemon-client.d.ts +5 -0
  113. package/dist/utils/daemon-client.d.ts.map +1 -0
  114. package/dist/utils/daemon-client.js +44 -0
  115. package/dist/utils/daemon-client.js.map +1 -0
  116. package/dist/utils/ensure-daemon.d.ts +2 -0
  117. package/dist/utils/ensure-daemon.d.ts.map +1 -0
  118. package/dist/utils/ensure-daemon.js +7 -0
  119. package/dist/utils/ensure-daemon.js.map +1 -0
  120. package/dist/utils/render.d.ts +3 -0
  121. package/dist/utils/render.d.ts.map +1 -0
  122. package/dist/utils/render.js +84 -0
  123. package/dist/utils/render.js.map +1 -0
  124. package/dist/utils/version.d.ts +1 -9
  125. package/dist/utils/version.d.ts.map +1 -1
  126. package/dist/utils/version.js +4 -32
  127. package/dist/utils/version.js.map +1 -1
  128. package/package.json +47 -54
  129. package/.github/copilot-instructions.md +0 -126
  130. package/.github/dependabot.yml +0 -41
  131. package/.github/workflows/ci.yml +0 -50
  132. package/.github/workflows/publish.yml +0 -170
  133. package/dist/cli.test.d.ts +0 -2
  134. package/dist/cli.test.d.ts.map +0 -1
  135. package/dist/cli.test.js +0 -67
  136. package/dist/cli.test.js.map +0 -1
  137. package/dist/commands/init.d.ts +0 -8
  138. package/dist/commands/init.d.ts.map +0 -1
  139. package/dist/commands/init.js +0 -39
  140. package/dist/commands/init.js.map +0 -1
  141. package/dist/commands/init.test.d.ts +0 -2
  142. package/dist/commands/init.test.d.ts.map +0 -1
  143. package/dist/commands/init.test.js +0 -79
  144. package/dist/commands/init.test.js.map +0 -1
  145. package/dist/commands/install.d.ts +0 -8
  146. package/dist/commands/install.d.ts.map +0 -1
  147. package/dist/commands/install.js +0 -90
  148. package/dist/commands/install.js.map +0 -1
  149. package/dist/commands/install.test.d.ts +0 -2
  150. package/dist/commands/install.test.d.ts.map +0 -1
  151. package/dist/commands/install.test.js +0 -172
  152. package/dist/commands/install.test.js.map +0 -1
  153. package/dist/commands/list.d.ts +0 -2
  154. package/dist/commands/list.d.ts.map +0 -1
  155. package/dist/commands/list.js +0 -145
  156. package/dist/commands/list.js.map +0 -1
  157. package/dist/commands/list.test.d.ts +0 -2
  158. package/dist/commands/list.test.d.ts.map +0 -1
  159. package/dist/commands/list.test.js +0 -120
  160. package/dist/commands/list.test.js.map +0 -1
  161. package/dist/commands/login.test.d.ts +0 -2
  162. package/dist/commands/login.test.d.ts.map +0 -1
  163. package/dist/commands/login.test.js +0 -157
  164. package/dist/commands/login.test.js.map +0 -1
  165. package/dist/commands/logout.test.d.ts +0 -2
  166. package/dist/commands/logout.test.d.ts.map +0 -1
  167. package/dist/commands/logout.test.js +0 -49
  168. package/dist/commands/logout.test.js.map +0 -1
  169. package/dist/commands/publish.d.ts +0 -10
  170. package/dist/commands/publish.d.ts.map +0 -1
  171. package/dist/commands/publish.js +0 -138
  172. package/dist/commands/publish.js.map +0 -1
  173. package/dist/commands/publish.test.d.ts +0 -2
  174. package/dist/commands/publish.test.d.ts.map +0 -1
  175. package/dist/commands/publish.test.js +0 -307
  176. package/dist/commands/publish.test.js.map +0 -1
  177. package/dist/commands/run.test.d.ts +0 -2
  178. package/dist/commands/run.test.d.ts.map +0 -1
  179. package/dist/commands/run.test.js +0 -73
  180. package/dist/commands/run.test.js.map +0 -1
  181. package/dist/commands/search.d.ts +0 -8
  182. package/dist/commands/search.d.ts.map +0 -1
  183. package/dist/commands/search.js +0 -41
  184. package/dist/commands/search.js.map +0 -1
  185. package/dist/commands/search.test.d.ts +0 -2
  186. package/dist/commands/search.test.d.ts.map +0 -1
  187. package/dist/commands/search.test.js +0 -138
  188. package/dist/commands/search.test.js.map +0 -1
  189. package/dist/commands/update.d.ts +0 -8
  190. package/dist/commands/update.d.ts.map +0 -1
  191. package/dist/commands/update.js +0 -28
  192. package/dist/commands/update.js.map +0 -1
  193. package/dist/commands/update.test.d.ts +0 -2
  194. package/dist/commands/update.test.d.ts.map +0 -1
  195. package/dist/commands/update.test.js +0 -134
  196. package/dist/commands/update.test.js.map +0 -1
  197. package/dist/commands/whoami.d.ts +0 -2
  198. package/dist/commands/whoami.d.ts.map +0 -1
  199. package/dist/commands/whoami.js +0 -55
  200. package/dist/commands/whoami.js.map +0 -1
  201. package/dist/commands/whoami.test.d.ts +0 -2
  202. package/dist/commands/whoami.test.d.ts.map +0 -1
  203. package/dist/commands/whoami.test.js +0 -119
  204. package/dist/commands/whoami.test.js.map +0 -1
  205. package/dist/index.test.d.ts +0 -2
  206. package/dist/index.test.d.ts.map +0 -1
  207. package/dist/index.test.js +0 -17
  208. package/dist/index.test.js.map +0 -1
  209. package/dist/schemas/agent.schema.d.ts +0 -22
  210. package/dist/schemas/agent.schema.d.ts.map +0 -1
  211. package/dist/schemas/agent.schema.js +0 -9
  212. package/dist/schemas/agent.schema.js.map +0 -1
  213. package/dist/schemas/agent.schema.test.d.ts +0 -2
  214. package/dist/schemas/agent.schema.test.d.ts.map +0 -1
  215. package/dist/schemas/agent.schema.test.js +0 -80
  216. package/dist/schemas/agent.schema.test.js.map +0 -1
  217. package/dist/services/auth.service.d.ts +0 -10
  218. package/dist/services/auth.service.d.ts.map +0 -1
  219. package/dist/services/auth.service.js +0 -99
  220. package/dist/services/auth.service.js.map +0 -1
  221. package/dist/services/auth.service.test.d.ts +0 -2
  222. package/dist/services/auth.service.test.d.ts.map +0 -1
  223. package/dist/services/auth.service.test.js +0 -218
  224. package/dist/services/auth.service.test.js.map +0 -1
  225. package/dist/services/registry.service.d.ts +0 -13
  226. package/dist/services/registry.service.d.ts.map +0 -1
  227. package/dist/services/registry.service.js +0 -74
  228. package/dist/services/registry.service.js.map +0 -1
  229. package/dist/services/registry.service.test.d.ts +0 -2
  230. package/dist/services/registry.service.test.d.ts.map +0 -1
  231. package/dist/services/registry.service.test.js +0 -222
  232. package/dist/services/registry.service.test.js.map +0 -1
  233. package/dist/types/config.types.d.ts +0 -177
  234. package/dist/types/config.types.d.ts.map +0 -1
  235. package/dist/types/config.types.js +0 -22
  236. package/dist/types/config.types.js.map +0 -1
  237. package/dist/types/lockfile.types.d.ts +0 -1
  238. package/dist/types/lockfile.types.d.ts.map +0 -1
  239. package/dist/types/lockfile.types.js +0 -2
  240. package/dist/types/lockfile.types.js.map +0 -1
  241. package/dist/types/registry.types.d.ts +0 -65
  242. package/dist/types/registry.types.d.ts.map +0 -1
  243. package/dist/types/registry.types.js +0 -2
  244. package/dist/types/registry.types.js.map +0 -1
  245. package/dist/utils/agent-parser.d.ts +0 -26
  246. package/dist/utils/agent-parser.d.ts.map +0 -1
  247. package/dist/utils/agent-parser.js +0 -45
  248. package/dist/utils/agent-parser.js.map +0 -1
  249. package/dist/utils/agent-parser.test.d.ts +0 -2
  250. package/dist/utils/agent-parser.test.d.ts.map +0 -1
  251. package/dist/utils/agent-parser.test.js +0 -102
  252. package/dist/utils/agent-parser.test.js.map +0 -1
  253. package/dist/utils/config.d.ts +0 -21
  254. package/dist/utils/config.d.ts.map +0 -1
  255. package/dist/utils/config.js +0 -99
  256. package/dist/utils/config.js.map +0 -1
  257. package/dist/utils/config.test.d.ts +0 -2
  258. package/dist/utils/config.test.d.ts.map +0 -1
  259. package/dist/utils/config.test.js +0 -214
  260. package/dist/utils/config.test.js.map +0 -1
  261. package/dist/utils/lockfile.d.ts +0 -1
  262. package/dist/utils/lockfile.d.ts.map +0 -1
  263. package/dist/utils/lockfile.js +0 -2
  264. package/dist/utils/lockfile.js.map +0 -1
  265. package/dist/utils/lockfile.test.d.ts +0 -1
  266. package/dist/utils/lockfile.test.d.ts.map +0 -1
  267. package/dist/utils/lockfile.test.js +0 -7
  268. package/dist/utils/lockfile.test.js.map +0 -1
  269. package/dist/utils/version.test.d.ts +0 -2
  270. package/dist/utils/version.test.d.ts.map +0 -1
  271. package/dist/utils/version.test.js +0 -30
  272. package/dist/utils/version.test.js.map +0 -1
@@ -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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"}
@@ -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"}
@@ -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
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=config.test.d.ts.map
@@ -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":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,WAAW,EACX,cAAc,EACd,cAAc,EACd,UAAU,EACV,UAAU,GACX,MAAM,aAAa,CAAC;AAGrB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACzB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEhB,MAAM,SAAS,GAAG,KAA0C,CAAC;AAC7D,MAAM,YAAY,GAAG,QAAgD,CAAC;AACtE,MAAM,aAAa,GAAG,SAAkD,CAAC;AACzE,MAAM,MAAM,GAAG,EAAoC,CAAC;AACpD,MAAM,WAAW,GAAG,OAA8C,CAAC;AAEnE,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,WAAW,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;QAE9C,OAAO,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;QACzC,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,MAAM,MAAM,GAAmB;gBAC7B,IAAI,EAAE;oBACJ,KAAK,EAAE,YAAY;oBACnB,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE;iBAC/C;aACF,CAAC;YACF,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YAEvD,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;YAElC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC/B,MAAM,CAAC,YAAY,CAAC,CAAC,oBAAoB,CACvC,sCAAsC,EACtC,OAAO,CACR,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,YAAY,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YAEpD,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;YAElC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;YACpE,YAAY,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;YAE/C,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;YAElC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,SAAS,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YACvC,aAAa,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAE3C,MAAM,MAAM,GAAmB;gBAC7B,IAAI,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE;aAC9B,CAAC;YAEF,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;YAEzB,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,0BAA0B,EAAE;gBACjE,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;YACH,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CACxC,sCAAsC,EACtC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAC/B,OAAO,CACR,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;YACvC,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAEpC,MAAM,WAAW,EAAE,CAAC;YAEpB,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CACjC,sCAAsC,CACvC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YAE9C,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;YACrD,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,4BAA4B,CAAC;YAEjE,MAAM,MAAM,GAAG,MAAM,cAAc,EAAE,CAAC;YAEtC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,MAAM,GAAmB;gBAC7B,QAAQ,EAAE,EAAE,GAAG,EAAE,4BAA4B,EAAE;aAChD,CAAC;YACF,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YAEvD,MAAM,MAAM,GAAG,MAAM,cAAc,EAAE,CAAC;YAEtC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,YAAY,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YAEpD,MAAM,MAAM,GAAG,MAAM,cAAc,EAAE,CAAC;YAEtC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;YACrD,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,WAAW,CAAC;YAE9C,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;YAEpC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,MAAM,GAAmB;gBAC7B,IAAI,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;aAChC,CAAC;YACF,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YAEvD,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;YAEpC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,YAAY,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YAEpD,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;YAEpC,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/D,MAAM,MAAM,GAAmB;gBAC7B,IAAI,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE;aACtD,CAAC;YACF,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YAEvD,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;YAEpC,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;YACjE,MAAM,MAAM,GAAmB;gBAC7B,IAAI,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE;aACtD,CAAC;YACF,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YAEvD,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;YAEpC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/D,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;YACjE,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACrC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,WAAW,CAAC;YAE9C,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC;YAErC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvD,YAAY,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YAEpD,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC;YAErC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;YACrD,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/D,MAAM,MAAM,GAAmB;gBAC7B,IAAI,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE;aACtD,CAAC;YACF,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YAEvD,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC;YAErC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;YACjE,MAAM,MAAM,GAAmB;gBAC7B,IAAI,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE;aACtD,CAAC;YACF,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YAEvD,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC;YAErC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,MAAM,MAAM,GAAmB;gBAC7B,QAAQ,EAAE,6BAA6B;aACxC,CAAC;YACF,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YAEvD,MAAM,MAAM,GAAG,MAAM,WAAW,EAAE,CAAC;YAEnC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YAEnD,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;YACpE,YAAY,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YACpD,SAAS,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YACvC,aAAa,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAE3C,MAAM,MAAM,GAAG,MAAM,WAAW,EAAE,CAAC;YAGnC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAEzC,MAAM,CAAC,aAAa,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACzC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAW,CACvB,CAAC;YACpB,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;YAChE,MAAM,MAAM,GAAmB;gBAC7B,QAAQ,EAAE,0BAA0B;aACrC,CAAC;YACF,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YAEvD,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;YACpC,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;YAEpC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC9B,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- //# sourceMappingURL=lockfile.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lockfile.d.ts","sourceRoot":"","sources":["../../src/utils/lockfile.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- "use strict";
2
- //# sourceMappingURL=lockfile.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lockfile.js","sourceRoot":"","sources":["../../src/utils/lockfile.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- //# sourceMappingURL=lockfile.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lockfile.test.d.ts","sourceRoot":"","sources":["../../src/utils/lockfile.test.ts"],"names":[],"mappings":""}
@@ -1,7 +0,0 @@
1
- "use strict";
2
- describe('lockfile', () => {
3
- it('should be implemented', () => {
4
- expect(true).toBe(true);
5
- });
6
- });
7
- //# sourceMappingURL=lockfile.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lockfile.test.js","sourceRoot":"","sources":["../../src/utils/lockfile.test.ts"],"names":[],"mappings":";AAAA,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAE/B,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=version.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"version.test.d.ts","sourceRoot":"","sources":["../../src/utils/version.test.ts"],"names":[],"mappings":""}
@@ -1,30 +0,0 @@
1
- import { PACKAGE_NAME, checkForUpdates } from './version.js';
2
- describe('version utils', () => {
3
- describe('PACKAGE_NAME', () => {
4
- test('should be @agentage/cli', () => {
5
- expect(PACKAGE_NAME).toBe('@agentage/cli');
6
- });
7
- });
8
- describe('checkForUpdates', () => {
9
- test('should return updateAvailable false when versions match', async () => {
10
- const result = await checkForUpdates('0.1.8');
11
- if (result.latestVersion === '0.1.8') {
12
- expect(result.updateAvailable).toBe(false);
13
- }
14
- expect(result.currentVersion).toBe('0.1.8');
15
- });
16
- test('should return updateAvailable true when versions differ', async () => {
17
- const result = await checkForUpdates('0.0.1');
18
- if (result.latestVersion !== 'unknown') {
19
- expect(result.updateAvailable).toBe(true);
20
- }
21
- expect(result.currentVersion).toBe('0.0.1');
22
- });
23
- test('should handle unknown latest version gracefully', async () => {
24
- const result = await checkForUpdates('1.0.0');
25
- expect(result.currentVersion).toBe('1.0.0');
26
- expect(typeof result.updateAvailable).toBe('boolean');
27
- });
28
- });
29
- });
30
- //# sourceMappingURL=version.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"version.test.js","sourceRoot":"","sources":["../../src/utils/version.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE7D,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACnC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,IAAI,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YACzE,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;YAE9C,IAAI,MAAM,CAAC,aAAa,KAAK,OAAO,EAAE,CAAC;gBACrC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7C,CAAC;YACD,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YACzE,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;YAE9C,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;gBACvC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5C,CAAC;YACD,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YACjE,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,CAAC,OAAO,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}