opena2a-cli 0.7.1 → 0.8.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 (65) hide show
  1. package/README.md +51 -603
  2. package/dist/adapters/docker.d.ts.map +1 -1
  3. package/dist/adapters/docker.js +5 -2
  4. package/dist/adapters/docker.js.map +1 -1
  5. package/dist/adapters/registry.d.ts.map +1 -1
  6. package/dist/adapters/registry.js +1 -0
  7. package/dist/adapters/registry.js.map +1 -1
  8. package/dist/adapters/types.d.ts +2 -0
  9. package/dist/adapters/types.d.ts.map +1 -1
  10. package/dist/commands/create/index.d.ts +21 -0
  11. package/dist/commands/create/index.d.ts.map +1 -0
  12. package/dist/commands/create/index.js +44 -0
  13. package/dist/commands/create/index.js.map +1 -0
  14. package/dist/commands/create/skill.d.ts +35 -0
  15. package/dist/commands/create/skill.d.ts.map +1 -0
  16. package/dist/commands/create/skill.js +250 -0
  17. package/dist/commands/create/skill.js.map +1 -0
  18. package/dist/commands/create/templates.d.ts +47 -0
  19. package/dist/commands/create/templates.d.ts.map +1 -0
  20. package/dist/commands/create/templates.js +392 -0
  21. package/dist/commands/create/templates.js.map +1 -0
  22. package/dist/commands/detect.js +2 -2
  23. package/dist/commands/detect.js.map +1 -1
  24. package/dist/commands/guard-harden.d.ts +15 -0
  25. package/dist/commands/guard-harden.d.ts.map +1 -0
  26. package/dist/commands/guard-harden.js +242 -0
  27. package/dist/commands/guard-harden.js.map +1 -0
  28. package/dist/commands/guard.d.ts +3 -1
  29. package/dist/commands/guard.d.ts.map +1 -1
  30. package/dist/commands/guard.js +25 -1
  31. package/dist/commands/guard.js.map +1 -1
  32. package/dist/commands/identity.d.ts +5 -0
  33. package/dist/commands/identity.d.ts.map +1 -1
  34. package/dist/commands/identity.js +515 -11
  35. package/dist/commands/identity.js.map +1 -1
  36. package/dist/commands/login.d.ts +24 -0
  37. package/dist/commands/login.d.ts.map +1 -0
  38. package/dist/commands/login.js +238 -0
  39. package/dist/commands/login.js.map +1 -0
  40. package/dist/commands/mcp-audit.d.ts.map +1 -1
  41. package/dist/commands/mcp-audit.js +4 -0
  42. package/dist/commands/mcp-audit.js.map +1 -1
  43. package/dist/index.js +124 -5
  44. package/dist/index.js.map +1 -1
  45. package/dist/lib/registry-client.d.ts +59 -0
  46. package/dist/lib/registry-client.d.ts.map +1 -0
  47. package/dist/lib/registry-client.js +169 -0
  48. package/dist/lib/registry-client.js.map +1 -0
  49. package/dist/semantic/command-index.json +27 -0
  50. package/dist/shield/status.d.ts.map +1 -1
  51. package/dist/shield/status.js +22 -1
  52. package/dist/shield/status.js.map +1 -1
  53. package/dist/util/aim-client.d.ts +141 -0
  54. package/dist/util/aim-client.d.ts.map +1 -0
  55. package/dist/util/aim-client.js +225 -0
  56. package/dist/util/aim-client.js.map +1 -0
  57. package/dist/util/auth.d.ts +23 -0
  58. package/dist/util/auth.d.ts.map +1 -0
  59. package/dist/util/auth.js +54 -0
  60. package/dist/util/auth.js.map +1 -0
  61. package/dist/util/server-url.d.ts +15 -0
  62. package/dist/util/server-url.d.ts.map +1 -0
  63. package/dist/util/server-url.js +42 -0
  64. package/dist/util/server-url.js.map +1 -0
  65. package/package.json +1 -1
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ /**
3
+ * Registry client -- queries the OpenA2A Registry API for trust data
4
+ * about discovered AI assets.
5
+ *
6
+ * Used by `opena2a detect --registry` to enrich local scan results with
7
+ * trust levels, publisher info, and vulnerability counts from the registry.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.clearCache = clearCache;
11
+ exports.lookupAsset = lookupAsset;
12
+ exports.batchLookup = batchLookup;
13
+ exports.assetTypeForRegistry = assetTypeForRegistry;
14
+ // ---------------------------------------------------------------------------
15
+ // Constants
16
+ // ---------------------------------------------------------------------------
17
+ const PER_ASSET_TIMEOUT_MS = 3000;
18
+ const DEFAULT_REGISTRY_BASE = 'https://api.oa2a.org';
19
+ const TRUST_LABELS = {
20
+ 0: 'Blocked',
21
+ 1: 'Warning',
22
+ 2: 'Listed',
23
+ 3: 'Scanned',
24
+ 4: 'Verified',
25
+ };
26
+ // ---------------------------------------------------------------------------
27
+ // Internal cache
28
+ // ---------------------------------------------------------------------------
29
+ const lookupCache = new Map();
30
+ // ---------------------------------------------------------------------------
31
+ // Public API
32
+ // ---------------------------------------------------------------------------
33
+ /**
34
+ * Clear the in-memory lookup cache.
35
+ * Primarily for testing; in production the cache lives for the scan duration.
36
+ */
37
+ function clearCache() {
38
+ lookupCache.clear();
39
+ }
40
+ /**
41
+ * Look up a single asset in the OpenA2A Registry.
42
+ *
43
+ * Returns a result with `registered: false` if the asset is not found,
44
+ * or `timedOut: true` if the lookup took longer than 3 seconds.
45
+ */
46
+ async function lookupAsset(name, type, registryBaseUrl) {
47
+ const cacheKey = `${name}:${type}`;
48
+ const cached = lookupCache.get(cacheKey);
49
+ if (cached)
50
+ return cached;
51
+ const baseUrl = (registryBaseUrl || DEFAULT_REGISTRY_BASE).replace(/\/+$/, '');
52
+ const searchUrl = `${baseUrl}/api/v1/registry/packages?search=${encodeURIComponent(name)}&type=${encodeURIComponent(type)}`;
53
+ const notRegistered = {
54
+ name,
55
+ type,
56
+ registered: false,
57
+ trustLevel: -1,
58
+ trustLabel: 'Not registered',
59
+ publisher: '',
60
+ vulnerabilities: 0,
61
+ status: '',
62
+ };
63
+ try {
64
+ const controller = new AbortController();
65
+ const timeout = setTimeout(() => controller.abort(), PER_ASSET_TIMEOUT_MS);
66
+ const response = await fetch(searchUrl, {
67
+ method: 'GET',
68
+ headers: { Accept: 'application/json' },
69
+ signal: controller.signal,
70
+ });
71
+ clearTimeout(timeout);
72
+ if (!response.ok) {
73
+ lookupCache.set(cacheKey, notRegistered);
74
+ return notRegistered;
75
+ }
76
+ const data = (await response.json());
77
+ if (!data.packages || !Array.isArray(data.packages) || data.packages.length === 0) {
78
+ lookupCache.set(cacheKey, notRegistered);
79
+ return notRegistered;
80
+ }
81
+ // Find exact name match (case-insensitive), fall back to first result
82
+ const exactMatch = data.packages.find((p) => p.name.toLowerCase() === name.toLowerCase());
83
+ const pkg = exactMatch || data.packages[0];
84
+ const result = {
85
+ name,
86
+ type,
87
+ registered: true,
88
+ trustLevel: pkg.trustLevel,
89
+ trustLabel: TRUST_LABELS[pkg.trustLevel] ?? `Level ${pkg.trustLevel}`,
90
+ publisher: pkg.publisherName || '',
91
+ vulnerabilities: pkg.vulnerabilityCount ?? 0,
92
+ status: pkg.status || '',
93
+ };
94
+ lookupCache.set(cacheKey, result);
95
+ return result;
96
+ }
97
+ catch (err) {
98
+ if (err instanceof DOMException && err.name === 'AbortError') {
99
+ const timedOutResult = {
100
+ name,
101
+ type,
102
+ registered: false,
103
+ trustLevel: -1,
104
+ trustLabel: 'Lookup timed out',
105
+ publisher: '',
106
+ vulnerabilities: 0,
107
+ status: '',
108
+ timedOut: true,
109
+ };
110
+ lookupCache.set(cacheKey, timedOutResult);
111
+ return timedOutResult;
112
+ }
113
+ // Network error or other failure -- treat as not registered
114
+ lookupCache.set(cacheKey, notRegistered);
115
+ return notRegistered;
116
+ }
117
+ }
118
+ /**
119
+ * Batch-query the registry for multiple assets.
120
+ *
121
+ * Runs lookups concurrently (all in parallel) and returns a Map
122
+ * keyed by "name:type".
123
+ *
124
+ * @param assets Array of { name, type } to query
125
+ * @param registryBaseUrl Base URL of the registry
126
+ * @param onProgress Optional callback invoked with (completed, total)
127
+ */
128
+ async function batchLookup(assets, registryBaseUrl, onProgress) {
129
+ const results = new Map();
130
+ if (assets.length === 0)
131
+ return results;
132
+ // Deduplicate by key
133
+ const unique = new Map();
134
+ for (const asset of assets) {
135
+ const key = `${asset.name}:${asset.type}`;
136
+ if (!unique.has(key)) {
137
+ unique.set(key, asset);
138
+ }
139
+ }
140
+ const entries = Array.from(unique.entries());
141
+ let completed = 0;
142
+ const promises = entries.map(async ([key, asset]) => {
143
+ const result = await lookupAsset(asset.name, asset.type, registryBaseUrl);
144
+ results.set(key, result);
145
+ completed++;
146
+ if (onProgress)
147
+ onProgress(completed, entries.length);
148
+ });
149
+ await Promise.all(promises);
150
+ return results;
151
+ }
152
+ /**
153
+ * Map asset category strings to registry-compatible type values.
154
+ */
155
+ function assetTypeForRegistry(category) {
156
+ switch (category) {
157
+ case 'ai-assistant':
158
+ case 'local-llm':
159
+ case 'ai-plugin':
160
+ return 'agent';
161
+ case 'mcp_server':
162
+ return 'mcp_server';
163
+ case 'ai-config':
164
+ return 'config';
165
+ default:
166
+ return category;
167
+ }
168
+ }
169
+ //# sourceMappingURL=registry-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-client.js","sourceRoot":"","sources":["../../src/lib/registry-client.ts"],"names":[],"mappings":"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"}
@@ -169,5 +169,32 @@
169
169
  "synonyms": ["settings", "preferences"],
170
170
  "domains": ["config"],
171
171
  "examples": ["change settings", "configure contribute", "set registry URL"]
172
+ },
173
+ {
174
+ "id": "login",
175
+ "path": "opena2a login",
176
+ "description": "Authenticate with an AIM server via browser-based OAuth device flow",
177
+ "tags": ["login", "auth", "authenticate", "oauth", "device", "browser", "token"],
178
+ "synonyms": ["sign in", "authenticate", "connect", "auth"],
179
+ "domains": ["identity", "server", "cloud"],
180
+ "examples": ["login to AIM", "authenticate with server", "sign in to cloud"]
181
+ },
182
+ {
183
+ "id": "logout",
184
+ "path": "opena2a logout",
185
+ "description": "Remove stored authentication credentials",
186
+ "tags": ["logout", "sign out", "disconnect", "revoke", "token"],
187
+ "synonyms": ["sign out", "disconnect", "deauth"],
188
+ "domains": ["identity", "server", "cloud"],
189
+ "examples": ["logout", "sign out", "remove credentials"]
190
+ },
191
+ {
192
+ "id": "whoami",
193
+ "path": "opena2a whoami",
194
+ "description": "Show current authentication status and server connection",
195
+ "tags": ["whoami", "status", "auth", "identity", "session"],
196
+ "synonyms": ["who am i", "auth status", "session info", "current user"],
197
+ "domains": ["identity", "server", "cloud"],
198
+ "examples": ["who am I", "am I logged in", "check auth status"]
172
199
  }
173
200
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/shield/status.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAA2C,MAAM,YAAY,CAAC;AAoJxF,wBAAgB,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,CAgFhE;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAuDlF"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/shield/status.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAA2C,MAAM,YAAY,CAAC;AAoJxF,wBAAgB,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,CAgFhE;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CA2ElF"}
@@ -261,7 +261,28 @@ function formatStatus(status, format) {
261
261
  recs.push('Integrity issues detected. Run: opena2a shield selfcheck');
262
262
  const inactiveTools = status.tools.filter(p => !p.active && p.name !== 'Registry');
263
263
  if (inactiveTools.length > 0) {
264
- recs.push(`Inactive tools: ${inactiveTools.map(p => p.name).join(', ')}`);
264
+ const toolInfo = {
265
+ 'Secretless': { desc: 'credential protection', setup: 'npx secretless-ai init' },
266
+ 'Runtime Guard (ARP)': { desc: 'runtime monitoring', setup: 'opena2a runtime init' },
267
+ 'Browser Guard': { desc: 'browser extension', setup: 'Install from opena2a.org' },
268
+ 'ConfigGuard': { desc: 'config file integrity', setup: 'opena2a guard init' },
269
+ 'AIM Core (Identity)': { desc: 'agent identity', setup: 'opena2a identity init' },
270
+ 'HackMyAgent': { desc: 'security scanning', setup: 'npx hackmyagent secure' },
271
+ };
272
+ // Build per-tool lines with description and setup command
273
+ const toolLines = ['Inactive tools:'];
274
+ for (const tool of inactiveTools) {
275
+ const info = toolInfo[tool.name];
276
+ if (info) {
277
+ const name = tool.name.padEnd(22);
278
+ const desc = info.desc.padEnd(28);
279
+ toolLines.push(` ${name}${desc}${info.setup}`);
280
+ }
281
+ else {
282
+ toolLines.push(` ${tool.name}`);
283
+ }
284
+ }
285
+ recs.push(toolLines.join('\n'));
265
286
  }
266
287
  if (recs.length > 0) {
267
288
  lines.push('');
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/shield/status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/shield/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * AIM Server HTTP Client
3
+ *
4
+ * Minimal HTTP client for communicating with the AIM (Agent Identity Management)
5
+ * server. Uses Node's built-in fetch (available in Node 18+).
6
+ *
7
+ * All methods return typed response objects or throw AimServerError on failure.
8
+ */
9
+ export interface ServerAgent {
10
+ id: string;
11
+ name: string;
12
+ displayName: string;
13
+ publicKey: string;
14
+ privateKey?: string;
15
+ apiKey?: string;
16
+ trustScore: number;
17
+ status: string;
18
+ createdAt?: string;
19
+ updatedAt?: string;
20
+ }
21
+ export interface RegisterRequest {
22
+ name: string;
23
+ displayName?: string;
24
+ description?: string;
25
+ agentType?: string;
26
+ }
27
+ export interface RegisterResponse {
28
+ agentId: string;
29
+ name: string;
30
+ displayName: string;
31
+ publicKey: string;
32
+ privateKey: string;
33
+ aimUrl: string;
34
+ status: string;
35
+ trustScore: number;
36
+ message: string;
37
+ }
38
+ export interface LoginResponse {
39
+ accessToken: string;
40
+ refreshToken: string;
41
+ }
42
+ export interface AgentListResponse {
43
+ agents: ServerAgent[];
44
+ total: number;
45
+ page: number;
46
+ pageSize: number;
47
+ }
48
+ export interface AuditLogEntry {
49
+ id: string;
50
+ agentId: string;
51
+ action: string;
52
+ resource?: string;
53
+ details?: string;
54
+ ipAddress?: string;
55
+ createdAt: string;
56
+ }
57
+ export interface AuditLogResponse {
58
+ auditLogs: AuditLogEntry[];
59
+ total: number;
60
+ page: number;
61
+ pageSize: number;
62
+ }
63
+ export interface ServerStatus {
64
+ status: string;
65
+ version?: string;
66
+ uptime?: number;
67
+ }
68
+ export interface DeviceCodeResponse {
69
+ deviceCode: string;
70
+ userCode: string;
71
+ verificationUri: string;
72
+ verificationUriComplete: string;
73
+ expiresIn: number;
74
+ interval: number;
75
+ }
76
+ export interface DeviceTokenResponse {
77
+ accessToken: string;
78
+ refreshToken: string;
79
+ tokenType: string;
80
+ expiresIn: number;
81
+ }
82
+ export interface DeviceTokenError {
83
+ error: string;
84
+ errorDescription?: string;
85
+ }
86
+ export declare class AimServerError extends Error {
87
+ readonly statusCode: number;
88
+ readonly serverMessage?: string | undefined;
89
+ constructor(message: string, statusCode: number, serverMessage?: string | undefined);
90
+ }
91
+ export declare class AimClient {
92
+ private readonly baseUrl;
93
+ private readonly timeoutMs;
94
+ private readonly apiKey?;
95
+ private readonly accessToken?;
96
+ constructor(serverUrl: string, options?: {
97
+ timeoutMs?: number;
98
+ apiKey?: string;
99
+ accessToken?: string;
100
+ });
101
+ health(): Promise<{
102
+ status: string;
103
+ }>;
104
+ status(): Promise<ServerStatus>;
105
+ register(body: RegisterRequest, apiKey: string): Promise<RegisterResponse>;
106
+ login(credentials: {
107
+ name: string;
108
+ apiKey: string;
109
+ }): Promise<LoginResponse>;
110
+ listAgents(token: string, params?: {
111
+ page?: number;
112
+ pageSize?: number;
113
+ }): Promise<AgentListResponse>;
114
+ getAgent(token: string, agentId: string): Promise<ServerAgent>;
115
+ getAuditLogs(token: string, agentId: string, params?: {
116
+ page?: number;
117
+ pageSize?: number;
118
+ }): Promise<AuditLogResponse>;
119
+ requestDeviceCode(clientId?: string): Promise<DeviceCodeResponse>;
120
+ pollDeviceToken(deviceCode: string): Promise<DeviceTokenResponse>;
121
+ refreshAccessToken(refreshToken: string): Promise<DeviceTokenResponse>;
122
+ private get;
123
+ private post;
124
+ private fetch;
125
+ private parseResponse;
126
+ }
127
+ /**
128
+ * Server connection details stored alongside the local identity.
129
+ */
130
+ export interface ServerConfig {
131
+ serverUrl: string;
132
+ agentId: string;
133
+ apiKey?: string;
134
+ accessToken?: string;
135
+ refreshToken?: string;
136
+ registeredAt: string;
137
+ }
138
+ export declare function loadServerConfig(): ServerConfig | null;
139
+ export declare function saveServerConfig(config: ServerConfig): void;
140
+ export declare function removeServerConfig(): boolean;
141
+ //# sourceMappingURL=aim-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aim-client.d.ts","sourceRoot":"","sources":["../../src/util/aim-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,225 @@
1
+ "use strict";
2
+ /**
3
+ * AIM Server HTTP Client
4
+ *
5
+ * Minimal HTTP client for communicating with the AIM (Agent Identity Management)
6
+ * server. Uses Node's built-in fetch (available in Node 18+).
7
+ *
8
+ * All methods return typed response objects or throw AimServerError on failure.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.AimClient = exports.AimServerError = void 0;
12
+ exports.loadServerConfig = loadServerConfig;
13
+ exports.saveServerConfig = saveServerConfig;
14
+ exports.removeServerConfig = removeServerConfig;
15
+ // ---------------------------------------------------------------------------
16
+ // Error
17
+ // ---------------------------------------------------------------------------
18
+ class AimServerError extends Error {
19
+ statusCode;
20
+ serverMessage;
21
+ constructor(message, statusCode, serverMessage) {
22
+ super(message);
23
+ this.statusCode = statusCode;
24
+ this.serverMessage = serverMessage;
25
+ this.name = 'AimServerError';
26
+ }
27
+ }
28
+ exports.AimServerError = AimServerError;
29
+ // ---------------------------------------------------------------------------
30
+ // Client
31
+ // ---------------------------------------------------------------------------
32
+ class AimClient {
33
+ baseUrl;
34
+ timeoutMs;
35
+ apiKey;
36
+ accessToken;
37
+ constructor(serverUrl, options) {
38
+ // Normalize: strip trailing slash
39
+ this.baseUrl = serverUrl.replace(/\/+$/, '');
40
+ this.timeoutMs = options?.timeoutMs ?? 10_000;
41
+ this.apiKey = options?.apiKey;
42
+ this.accessToken = options?.accessToken;
43
+ }
44
+ // ---- Health / Status ---------------------------------------------------
45
+ async health() {
46
+ return this.get('/health');
47
+ }
48
+ async status() {
49
+ return this.get('/api/v1/status');
50
+ }
51
+ // ---- Registration (public, requires API key header) --------------------
52
+ async register(body, apiKey) {
53
+ const serverBody = {
54
+ name: body.name,
55
+ displayName: body.displayName ?? body.name,
56
+ description: body.description ?? '',
57
+ agentType: body.agentType ?? 'custom',
58
+ };
59
+ return this.post('/api/v1/public/agents/register', serverBody, {
60
+ 'X-AIM-API-Key': apiKey,
61
+ });
62
+ }
63
+ // ---- Login -------------------------------------------------------------
64
+ async login(credentials) {
65
+ return this.post('/api/v1/public/login', credentials);
66
+ }
67
+ // ---- Agent CRUD (requires Bearer token) --------------------------------
68
+ async listAgents(token, params) {
69
+ const qs = new URLSearchParams();
70
+ if (params?.page)
71
+ qs.set('page', String(params.page));
72
+ if (params?.pageSize)
73
+ qs.set('pageSize', String(params.pageSize));
74
+ const query = qs.toString();
75
+ return this.get(`/api/v1/agents${query ? '?' + query : ''}`, token);
76
+ }
77
+ async getAgent(token, agentId) {
78
+ return this.get(`/api/v1/agents/${encodeURIComponent(agentId)}`, token);
79
+ }
80
+ async getAuditLogs(token, agentId, params) {
81
+ const qs = new URLSearchParams();
82
+ if (params?.page)
83
+ qs.set('page', String(params.page));
84
+ if (params?.pageSize)
85
+ qs.set('pageSize', String(params.pageSize));
86
+ const query = qs.toString();
87
+ return this.get(`/api/v1/agents/${encodeURIComponent(agentId)}/audit-logs${query ? '?' + query : ''}`, token);
88
+ }
89
+ // ---- Device Authorization (OAuth 2.0 Device Flow) -----------------------
90
+ async requestDeviceCode(clientId = 'opena2a-cli') {
91
+ return this.post('/api/v1/oauth/device/code', { clientId });
92
+ }
93
+ async pollDeviceToken(deviceCode) {
94
+ const headers = {
95
+ 'Accept': 'application/json',
96
+ 'Content-Type': 'application/json',
97
+ };
98
+ if (this.apiKey)
99
+ headers['X-AIM-API-Key'] = this.apiKey;
100
+ const response = await this.fetch('/api/v1/oauth/device/token', {
101
+ method: 'POST',
102
+ headers,
103
+ body: JSON.stringify({
104
+ deviceCode,
105
+ grantType: 'urn:ietf:params:oauth:grant-type:device_code',
106
+ }),
107
+ });
108
+ const text = await response.text();
109
+ const parsed = JSON.parse(text);
110
+ // Device token polling returns 400 with error field for pending/slow_down
111
+ if (!response.ok) {
112
+ if (parsed.error) {
113
+ const err = new AimServerError(parsed.error, response.status, parsed.errorDescription);
114
+ err.oauthError = parsed.error;
115
+ throw err;
116
+ }
117
+ throw new AimServerError(`AIM server returned ${response.status}: ${parsed.error ?? parsed.message ?? text}`, response.status, parsed.error ?? parsed.message);
118
+ }
119
+ return parsed;
120
+ }
121
+ async refreshAccessToken(refreshToken) {
122
+ return this.post('/api/v1/auth/refresh', { refreshToken });
123
+ }
124
+ // ---- Generic HTTP helpers -----------------------------------------------
125
+ async get(path, token) {
126
+ const headers = { 'Accept': 'application/json' };
127
+ if (token)
128
+ headers['Authorization'] = `Bearer ${token}`;
129
+ else if (this.accessToken)
130
+ headers['Authorization'] = `Bearer ${this.accessToken}`;
131
+ if (this.apiKey)
132
+ headers['X-AIM-API-Key'] = this.apiKey;
133
+ const response = await this.fetch(path, { method: 'GET', headers });
134
+ return this.parseResponse(response);
135
+ }
136
+ async post(path, body, extraHeaders) {
137
+ const headers = {
138
+ 'Accept': 'application/json',
139
+ 'Content-Type': 'application/json',
140
+ };
141
+ if (this.accessToken)
142
+ headers['Authorization'] = `Bearer ${this.accessToken}`;
143
+ if (this.apiKey)
144
+ headers['X-AIM-API-Key'] = this.apiKey;
145
+ Object.assign(headers, extraHeaders);
146
+ const response = await this.fetch(path, {
147
+ method: 'POST',
148
+ headers,
149
+ body: JSON.stringify(body),
150
+ });
151
+ return this.parseResponse(response);
152
+ }
153
+ async fetch(path, init) {
154
+ const url = `${this.baseUrl}${path}`;
155
+ const controller = new AbortController();
156
+ const timer = setTimeout(() => controller.abort(), this.timeoutMs);
157
+ try {
158
+ return await globalThis.fetch(url, { ...init, signal: controller.signal });
159
+ }
160
+ catch (err) {
161
+ if (err instanceof Error && err.name === 'AbortError') {
162
+ throw new AimServerError(`Request timed out after ${this.timeoutMs}ms: ${init.method} ${path}`, 0);
163
+ }
164
+ // Connection refused, DNS failure, etc.
165
+ const msg = err instanceof Error ? err.message : String(err);
166
+ throw new AimServerError(`Cannot connect to AIM server at ${this.baseUrl}. ${msg}`, 0, msg);
167
+ }
168
+ finally {
169
+ clearTimeout(timer);
170
+ }
171
+ }
172
+ async parseResponse(response) {
173
+ const text = await response.text();
174
+ if (!response.ok) {
175
+ let serverMsg;
176
+ try {
177
+ const parsed = JSON.parse(text);
178
+ serverMsg = parsed.error ?? parsed.message ?? text;
179
+ }
180
+ catch {
181
+ serverMsg = text;
182
+ }
183
+ throw new AimServerError(`AIM server returned ${response.status}: ${serverMsg}`, response.status, serverMsg);
184
+ }
185
+ try {
186
+ return JSON.parse(text);
187
+ }
188
+ catch {
189
+ throw new AimServerError(`Invalid JSON response from AIM server: ${text.slice(0, 200)}`, response.status);
190
+ }
191
+ }
192
+ }
193
+ exports.AimClient = AimClient;
194
+ const node_fs_1 = require("node:fs");
195
+ const node_path_1 = require("node:path");
196
+ const node_os_1 = require("node:os");
197
+ const AIM_DIR = (0, node_path_1.join)((0, node_os_1.homedir)(), '.opena2a', 'aim-core', 'identities');
198
+ function serverConfigPath() {
199
+ return (0, node_path_1.join)(AIM_DIR, 'server.json');
200
+ }
201
+ function loadServerConfig() {
202
+ const p = serverConfigPath();
203
+ if (!(0, node_fs_1.existsSync)(p))
204
+ return null;
205
+ try {
206
+ return JSON.parse((0, node_fs_1.readFileSync)(p, 'utf-8'));
207
+ }
208
+ catch {
209
+ return null;
210
+ }
211
+ }
212
+ function saveServerConfig(config) {
213
+ if (!(0, node_fs_1.existsSync)(AIM_DIR)) {
214
+ (0, node_fs_1.mkdirSync)(AIM_DIR, { recursive: true });
215
+ }
216
+ (0, node_fs_1.writeFileSync)(serverConfigPath(), JSON.stringify(config, null, 2), { encoding: 'utf-8', mode: 0o600 });
217
+ }
218
+ function removeServerConfig() {
219
+ const p = serverConfigPath();
220
+ if (!(0, node_fs_1.existsSync)(p))
221
+ return false;
222
+ (0, node_fs_1.unlinkSync)(p);
223
+ return true;
224
+ }
225
+ //# sourceMappingURL=aim-client.js.map