@codemieai/code 0.0.56 → 0.0.57
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/core/AgentCLI.d.ts.map +1 -1
- package/dist/agents/core/AgentCLI.js +17 -0
- package/dist/agents/core/AgentCLI.js.map +1 -1
- package/dist/agents/plugins/claude/plugin/skills/msgraph/SKILL.md +10 -8
- package/dist/agents/plugins/claude/plugin/skills/msgraph/scripts/msgraph.js +297 -149
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentCLI.d.ts","sourceRoot":"","sources":["../../../src/agents/core/AgentCLI.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"AgentCLI.d.ts","sourceRoot":"","sources":["../../../src/agents/core/AgentCLI.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAa1C;;;GAGG;AACH,qBAAa,QAAQ;IAIP,OAAO,CAAC,OAAO;IAH3B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,OAAO,CAAmB;gBAEd,OAAO,EAAE,YAAY;IASzC;;OAEG;IACH,OAAO,CAAC,WAAW;IAWnB;;OAEG;IACH,OAAO,CAAC,YAAY;IA6DpB;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAQlC;;OAEG;YACW,SAAS;IAiKvB;;OAEG;YACW,iBAAiB;IA8B/B;;OAEG;YACW,UAAU;IAyExB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA4B9B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAWxB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAgD7B;;OAEG;IACG,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAGzC"}
|
|
@@ -3,6 +3,8 @@ import { readFileSync } from 'fs';
|
|
|
3
3
|
import { join } from 'path';
|
|
4
4
|
import chalk from 'chalk';
|
|
5
5
|
import { ConfigLoader } from '../../utils/config.js';
|
|
6
|
+
import { ensureApiBase, DEFAULT_CODEMIE_BASE_URL } from '../../providers/core/codemie-auth-helpers.js';
|
|
7
|
+
import { JWTTemplate } from '../../providers/plugins/jwt/jwt.template.js';
|
|
6
8
|
import { logger } from '../../utils/logger.js';
|
|
7
9
|
import { getDirname } from '../../utils/paths.js';
|
|
8
10
|
import { BUILTIN_AGENT_NAME } from '../registry.js';
|
|
@@ -148,6 +150,21 @@ export class AgentCLI {
|
|
|
148
150
|
if (options.jwtToken) {
|
|
149
151
|
process.env.CODEMIE_JWT_TOKEN = options.jwtToken;
|
|
150
152
|
process.env.CODEMIE_AUTH_METHOD = 'jwt';
|
|
153
|
+
const hasNoConfig = !options.provider
|
|
154
|
+
&& !(await ConfigLoader.hasGlobalConfig())
|
|
155
|
+
&& !(await ConfigLoader.hasLocalConfig(process.cwd()));
|
|
156
|
+
if (hasNoConfig) {
|
|
157
|
+
config.provider = 'bearer-auth';
|
|
158
|
+
if (!config.model) {
|
|
159
|
+
config.model = JWTTemplate.recommendedModels?.[0];
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
if (!config.baseUrl) {
|
|
163
|
+
config.baseUrl = config.codeMieUrl
|
|
164
|
+
? ensureApiBase(config.codeMieUrl)
|
|
165
|
+
: ensureApiBase(DEFAULT_CODEMIE_BASE_URL);
|
|
166
|
+
}
|
|
167
|
+
config.authMethod = 'jwt';
|
|
151
168
|
}
|
|
152
169
|
// Validate essential configuration
|
|
153
170
|
const missingFields = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentCLI.js","sourceRoot":"","sources":["../../../src/agents/core/AgentCLI.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AgentCLI.js","sourceRoot":"","sources":["../../../src/agents/core/AgentCLI.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,14 +36,15 @@ node ${CLAUDE_PLUGIN_ROOT}/skills/msgraph/scripts/msgraph.js status
|
|
|
36
36
|
node ${CLAUDE_PLUGIN_ROOT}/skills/msgraph/scripts/msgraph.js login
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
This
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
```
|
|
39
|
+
This opens the **system browser** for Microsoft authentication (PKCE flow). If the browser
|
|
40
|
+
does not open automatically, a URL will be printed in the terminal — navigate to it manually.
|
|
41
|
+
After successful sign-in, the token is cached at `~/.ms_graph_token_cache.json` and all
|
|
42
|
+
subsequent commands run silently.
|
|
44
43
|
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
Use `--force` to re-authenticate even when already logged in:
|
|
45
|
+
```bash
|
|
46
|
+
node ${CLAUDE_PLUGIN_ROOT}/skills/msgraph/scripts/msgraph.js login --force
|
|
47
|
+
```
|
|
47
48
|
|
|
48
49
|
### When NOT logged in or token expired
|
|
49
50
|
|
|
@@ -53,7 +54,8 @@ If status returns `NOT_LOGGED_IN` or `TOKEN_EXPIRED`, tell the user:
|
|
|
53
54
|
> ```
|
|
54
55
|
> node ${CLAUDE_PLUGIN_ROOT}/skills/msgraph/scripts/msgraph.js login
|
|
55
56
|
> ```
|
|
56
|
-
>
|
|
57
|
+
> Your browser will open for Microsoft sign-in. If it doesn't open automatically, a URL
|
|
58
|
+
> will appear in the terminal — navigate to it to complete authentication."
|
|
57
59
|
|
|
58
60
|
---
|
|
59
61
|
|
|
@@ -2,24 +2,40 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* msgraph.js — Microsoft Graph API CLI for Claude Code skill
|
|
4
4
|
*
|
|
5
|
-
* Authentication:
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* Authentication: Authorization Code + PKCE via system browser.
|
|
6
|
+
* The browser-based flow allows the Microsoft Enterprise SSO plug-in (macOS/
|
|
7
|
+
* Intune) and WAM (Windows/Azure AD join) to attach device claims to the
|
|
8
|
+
* Entra ID sign-in, satisfying Conditional Access Policies that require
|
|
9
|
+
* managed/compliant devices.
|
|
10
|
+
*
|
|
11
|
+
* First time: node msgraph.js login (opens browser)
|
|
12
|
+
* Subsequent: token refreshed silently from cache
|
|
13
|
+
*
|
|
14
|
+
* Prerequisites for device claims (CAP compliance):
|
|
15
|
+
* - App registration must have http://localhost as a Mobile and desktop
|
|
16
|
+
* applications redirect URI (loopback matching per RFC 8252).
|
|
17
|
+
* - macOS: device enrolled in Intune + Microsoft Enterprise SSO Extension
|
|
18
|
+
* deployed via MDM profile.
|
|
19
|
+
* - Windows: device Azure AD joined (WAM handles it automatically).
|
|
8
20
|
*
|
|
9
21
|
* Dependencies: node >= 18 (built-in modules only — zero npm installs needed)
|
|
10
22
|
*/
|
|
11
23
|
|
|
12
24
|
'use strict';
|
|
13
25
|
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
const
|
|
26
|
+
const crypto = require('node:crypto');
|
|
27
|
+
const http = require('node:http');
|
|
28
|
+
const https = require('node:https');
|
|
29
|
+
const fs = require('node:fs');
|
|
30
|
+
const path = require('node:path');
|
|
31
|
+
const os = require('node:os');
|
|
32
|
+
const { execFile } = require('node:child_process');
|
|
18
33
|
|
|
19
34
|
// ── Config ────────────────────────────────────────────────────────────────────
|
|
20
|
-
const CLIENT_ID = '3d7688c6-f449-4d04-8b0d-57d94818e922';
|
|
21
|
-
const
|
|
22
|
-
const
|
|
35
|
+
const CLIENT_ID = '3d7688c6-f449-4d04-8b0d-57d94818e922';
|
|
36
|
+
const TENANT = 'common';
|
|
37
|
+
const AUTH_URL = `https://login.microsoftonline.com/${TENANT}/oauth2/v2.0/authorize`;
|
|
38
|
+
const TOKEN_URL = `https://login.microsoftonline.com/${TENANT}/oauth2/v2.0/token`;
|
|
23
39
|
const SCOPES = [
|
|
24
40
|
'User.Read', 'Mail.Read', 'Mail.Send',
|
|
25
41
|
'Calendars.Read', 'Calendars.ReadWrite',
|
|
@@ -29,8 +45,9 @@ const SCOPES = [
|
|
|
29
45
|
'People.Read', 'Contacts.Read', 'offline_access',
|
|
30
46
|
'Notes.Read', 'Notes.ReadWrite',
|
|
31
47
|
].join(' ');
|
|
32
|
-
const CACHE_FILE
|
|
33
|
-
const GRAPH_BASE
|
|
48
|
+
const CACHE_FILE = path.join(os.homedir(), '.ms_graph_token_cache.json');
|
|
49
|
+
const GRAPH_BASE = 'https://graph.microsoft.com/v1.0';
|
|
50
|
+
const TIMEOUT_MS = 5 * 60 * 1000;
|
|
34
51
|
|
|
35
52
|
// ── HTTP Helpers ──────────────────────────────────────────────────────────────
|
|
36
53
|
function httpsRequest(urlStr, options = {}, body = null) {
|
|
@@ -94,7 +111,6 @@ async function graphPost(endpoint, token, body) {
|
|
|
94
111
|
return res.body ? JSON.parse(res.body) : {};
|
|
95
112
|
}
|
|
96
113
|
|
|
97
|
-
/** Download file content, following 302 redirects (Graph uses CDN redirects). */
|
|
98
114
|
function graphDownload(endpoint, token) {
|
|
99
115
|
function fetch(url, auth) {
|
|
100
116
|
return new Promise((resolve, reject) => {
|
|
@@ -138,6 +154,75 @@ function saveCache(data) {
|
|
|
138
154
|
fs.writeFileSync(CACHE_FILE, JSON.stringify(data, null, 2), { mode: 0o600 });
|
|
139
155
|
}
|
|
140
156
|
|
|
157
|
+
// ── PKCE helpers ──────────────────────────────────────────────────────────────
|
|
158
|
+
function generatePKCE() {
|
|
159
|
+
const verifier = crypto.randomBytes(32).toString('base64url');
|
|
160
|
+
const challenge = crypto.createHash('sha256').update(verifier).digest('base64url');
|
|
161
|
+
return { verifier, challenge };
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
function openBrowser(url) {
|
|
165
|
+
const cb = err => {
|
|
166
|
+
if (err) console.error(`Warning: could not open browser automatically: ${err.message}`);
|
|
167
|
+
};
|
|
168
|
+
if (process.platform === 'win32') {
|
|
169
|
+
execFile('cmd', ['/c', 'start', '', url], cb);
|
|
170
|
+
} else {
|
|
171
|
+
execFile(process.platform === 'darwin' ? 'open' : 'xdg-open', [url], cb);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
function startLocalServer() {
|
|
176
|
+
return new Promise((resolve, reject) => {
|
|
177
|
+
const server = http.createServer();
|
|
178
|
+
server.listen(0, 'localhost', () => {
|
|
179
|
+
const { port } = server.address();
|
|
180
|
+
const waitForCode = () => new Promise((res, rej) => {
|
|
181
|
+
const timer = setTimeout(() => {
|
|
182
|
+
server.close();
|
|
183
|
+
rej(new Error('Authentication timed out (5 minutes). Run login again.'));
|
|
184
|
+
}, TIMEOUT_MS);
|
|
185
|
+
|
|
186
|
+
server.on('request', (req, response) => {
|
|
187
|
+
const url = new URL(req.url, `http://localhost:${port}`);
|
|
188
|
+
const code = url.searchParams.get('code');
|
|
189
|
+
const state = url.searchParams.get('state');
|
|
190
|
+
const error = url.searchParams.get('error');
|
|
191
|
+
const desc = url.searchParams.get('error_description');
|
|
192
|
+
|
|
193
|
+
if (!code && !error) {
|
|
194
|
+
response.writeHead(404);
|
|
195
|
+
response.end();
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
clearTimeout(timer);
|
|
200
|
+
const html = code
|
|
201
|
+
? `<!DOCTYPE html><html><head><title>Login successful</title></head><body style="font-family:sans-serif;padding:40px">
|
|
202
|
+
<h2 style="color:#107c10">✓ Authentication successful</h2>
|
|
203
|
+
<p>You can close this tab and return to the terminal.</p>
|
|
204
|
+
<script>window.close();</script>
|
|
205
|
+
</body></html>`
|
|
206
|
+
: `<!DOCTYPE html><html><head><title>Login failed</title></head><body style="font-family:sans-serif;padding:40px">
|
|
207
|
+
<h2 style="color:#d13438">✗ Authentication failed</h2>
|
|
208
|
+
<p><strong>${error || 'Unknown error'}</strong></p>
|
|
209
|
+
<p>${desc || ''}</p>
|
|
210
|
+
</body></html>`;
|
|
211
|
+
|
|
212
|
+
response.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
|
|
213
|
+
response.end(html, () => {
|
|
214
|
+
server.close();
|
|
215
|
+
if (code) res({ code, state });
|
|
216
|
+
else rej(new Error(`Auth error: ${error}${desc ? ' — ' + desc : ''}`));
|
|
217
|
+
});
|
|
218
|
+
});
|
|
219
|
+
});
|
|
220
|
+
resolve({ port, waitForCode });
|
|
221
|
+
});
|
|
222
|
+
server.on('error', reject);
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
|
|
141
226
|
// ── Authentication ────────────────────────────────────────────────────────────
|
|
142
227
|
async function tryRefresh(refreshTkn, username) {
|
|
143
228
|
try {
|
|
@@ -160,31 +245,54 @@ async function tryRefresh(refreshTkn, username) {
|
|
|
160
245
|
return null;
|
|
161
246
|
}
|
|
162
247
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
const
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
}
|
|
248
|
+
async function pkceLogin(forcePrompt = false) {
|
|
249
|
+
const { verifier, challenge } = generatePKCE();
|
|
250
|
+
const state = crypto.randomBytes(16).toString('hex');
|
|
251
|
+
const { port, waitForCode } = await startLocalServer();
|
|
252
|
+
const redirectUri = `http://localhost:${port}`;
|
|
253
|
+
|
|
254
|
+
const authParams = new URLSearchParams({
|
|
255
|
+
client_id: CLIENT_ID,
|
|
256
|
+
response_type: 'code',
|
|
257
|
+
redirect_uri: redirectUri,
|
|
258
|
+
scope: SCOPES,
|
|
259
|
+
state,
|
|
260
|
+
code_challenge: challenge,
|
|
261
|
+
code_challenge_method: 'S256',
|
|
262
|
+
prompt: forcePrompt ? 'login' : 'select_account',
|
|
263
|
+
});
|
|
179
264
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
265
|
+
const fullAuthUrl = `${AUTH_URL}?${authParams}`;
|
|
266
|
+
console.log('\nOpening browser for Microsoft authentication...');
|
|
267
|
+
console.log('If the browser does not open, navigate to:\n');
|
|
268
|
+
console.log(` ${fullAuthUrl}\n`);
|
|
269
|
+
openBrowser(fullAuthUrl);
|
|
270
|
+
console.log('Waiting for authentication (timeout: 5 minutes)...');
|
|
271
|
+
|
|
272
|
+
const { code, state: returnedState } = await waitForCode();
|
|
273
|
+
if (returnedState !== state) throw new Error('State mismatch — possible CSRF. Login aborted.');
|
|
274
|
+
|
|
275
|
+
process.stdout.write('Exchanging authorization code for tokens...');
|
|
276
|
+
const tokens = await oauthPost(TOKEN_URL, {
|
|
277
|
+
client_id: CLIENT_ID,
|
|
278
|
+
grant_type: 'authorization_code',
|
|
279
|
+
code,
|
|
280
|
+
redirect_uri: redirectUri,
|
|
281
|
+
code_verifier: verifier,
|
|
282
|
+
scope: SCOPES,
|
|
283
|
+
});
|
|
284
|
+
console.log(' done.');
|
|
285
|
+
|
|
286
|
+
if (!tokens.access_token) throw new Error(`Token exchange failed: ${JSON.stringify(tokens)}`);
|
|
287
|
+
|
|
288
|
+
const me = await graphGet('/me', tokens.access_token, { $select: 'userPrincipalName,displayName,id' });
|
|
289
|
+
saveCache({
|
|
290
|
+
access_token: tokens.access_token,
|
|
291
|
+
refresh_token: tokens.refresh_token || '',
|
|
292
|
+
expires_at: Math.floor(Date.now() / 1000) + (tokens.expires_in || 3600),
|
|
293
|
+
username: me.userPrincipalName || '',
|
|
294
|
+
});
|
|
295
|
+
return { token: tokens.access_token, me };
|
|
188
296
|
}
|
|
189
297
|
|
|
190
298
|
async function getAccessToken(forceLogin = false) {
|
|
@@ -199,46 +307,21 @@ async function getAccessToken(forceLogin = false) {
|
|
|
199
307
|
}
|
|
200
308
|
}
|
|
201
309
|
}
|
|
310
|
+
const { token } = await pkceLogin();
|
|
311
|
+
return token;
|
|
312
|
+
}
|
|
202
313
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
console.log('\n' + '='.repeat(60));
|
|
208
|
-
console.log(device.message);
|
|
209
|
-
console.log('='.repeat(60) + '\n');
|
|
210
|
-
|
|
211
|
-
const interval = (device.interval || 5) * 1000;
|
|
212
|
-
const deadline = Date.now() + (device.expires_in || 900) * 1000;
|
|
314
|
+
async function getValidToken() {
|
|
315
|
+
return getAccessToken(false);
|
|
316
|
+
}
|
|
213
317
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
});
|
|
222
|
-
if (res.access_token) {
|
|
223
|
-
const me = await graphGet('/me', res.access_token, { $select: 'userPrincipalName' });
|
|
224
|
-
saveCache({
|
|
225
|
-
access_token: res.access_token,
|
|
226
|
-
refresh_token: res.refresh_token || '',
|
|
227
|
-
expires_at: Math.floor(Date.now() / 1000) + (res.expires_in || 3600),
|
|
228
|
-
username: me.userPrincipalName || '',
|
|
229
|
-
});
|
|
230
|
-
return res.access_token;
|
|
231
|
-
}
|
|
232
|
-
} catch (err) {
|
|
233
|
-
let body = {};
|
|
234
|
-
try { body = JSON.parse(err.responseBody || '{}'); } catch {}
|
|
235
|
-
if (body.error === 'authorization_pending') continue;
|
|
236
|
-
if (body.error === 'slow_down') { await new Promise(r => setTimeout(r, 5000)); continue; }
|
|
237
|
-
if (body.error === 'expired_token') throw new Error('Device code expired. Run login again.');
|
|
238
|
-
throw err;
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
throw new Error('Authentication timed out.');
|
|
318
|
+
async function tryGetToken() {
|
|
319
|
+
const cache = loadCache();
|
|
320
|
+
if (!cache?.access_token) return null;
|
|
321
|
+
const now = Math.floor(Date.now() / 1000);
|
|
322
|
+
if (!cache.expires_at || now < cache.expires_at - 60) return cache.access_token;
|
|
323
|
+
if (cache.refresh_token) return tryRefresh(cache.refresh_token, cache.username);
|
|
324
|
+
return null;
|
|
242
325
|
}
|
|
243
326
|
|
|
244
327
|
// ── Formatters ────────────────────────────────────────────────────────────────
|
|
@@ -273,13 +356,20 @@ function pad(str, len) {
|
|
|
273
356
|
}
|
|
274
357
|
|
|
275
358
|
// ── Commands ──────────────────────────────────────────────────────────────────
|
|
276
|
-
async function cmdLogin() {
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
359
|
+
async function cmdLogin(args) {
|
|
360
|
+
const cache = loadCache();
|
|
361
|
+
if (cache?.access_token) {
|
|
362
|
+
const now = Math.floor(Date.now() / 1000);
|
|
363
|
+
if (cache.expires_at && now < cache.expires_at - 60 && !args.force) {
|
|
364
|
+
console.log(`Already logged in as: ${cache.username}`);
|
|
365
|
+
console.log('Use --force to re-authenticate.');
|
|
366
|
+
return;
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
const { token, me } = await pkceLogin(!!args.force);
|
|
280
370
|
console.log(`\nLogged in as: ${me.displayName} <${me.userPrincipalName}>`);
|
|
281
|
-
console.log(`User ID: ${me.id}`);
|
|
282
|
-
console.log(`Token cached
|
|
371
|
+
console.log(`User ID : ${me.id}`);
|
|
372
|
+
console.log(`Token cached: ${CACHE_FILE}`);
|
|
283
373
|
}
|
|
284
374
|
|
|
285
375
|
function cmdLogout() {
|
|
@@ -526,12 +616,6 @@ async function cmdTeams(args) {
|
|
|
526
616
|
return;
|
|
527
617
|
}
|
|
528
618
|
|
|
529
|
-
// ── NEW: resolve a person's AAD user ID from their email/UPN ──────────────
|
|
530
|
-
// Usage: teams --lookup-user someone@company.com
|
|
531
|
-
// Shows AAD ID, display name, title, and the expected oneOnOne chat ID pattern.
|
|
532
|
-
// Note: oneOnOne chat IDs follow the pattern 19:ID1_ID2@unq.gbl.spaces
|
|
533
|
-
// where the IDs appear in the order Teams assigned them (not guaranteed sort order).
|
|
534
|
-
// Always verify by listing --chats and matching the target user's ID fragment.
|
|
535
619
|
if (args.lookupUser) {
|
|
536
620
|
const user = await graphGet(`/users/${args.lookupUser}`, token, {
|
|
537
621
|
$select: 'id,displayName,userPrincipalName,jobTitle,department',
|
|
@@ -550,32 +634,16 @@ async function cmdTeams(args) {
|
|
|
550
634
|
return;
|
|
551
635
|
}
|
|
552
636
|
|
|
553
|
-
// ── NEW: send a DM directly by email address ──────────────────────────────
|
|
554
|
-
// Usage: teams --dm someone@company.com --send "hello"
|
|
555
|
-
// Resolves the user's AAD ID, finds their oneOnOne chat from the chat list,
|
|
556
|
-
// and sends the message. More reliable than guessing the chat ID.
|
|
557
637
|
if (args.dm && args.send) {
|
|
558
|
-
|
|
559
|
-
const
|
|
560
|
-
$select: 'id,displayName',
|
|
561
|
-
});
|
|
562
|
-
|
|
563
|
-
// 2. List chats and find the oneOnOne chat containing the target user's ID
|
|
564
|
-
const chatsData = await graphGet('/me/chats', token, {
|
|
565
|
-
$top: 50,
|
|
566
|
-
$select: 'id,topic,chatType',
|
|
567
|
-
});
|
|
638
|
+
const user = await graphGet(`/users/${args.dm}`, token, { $select: 'id,displayName' });
|
|
639
|
+
const chatsData = await graphGet('/me/chats', token, { $top: 50, $select: 'id,topic,chatType' });
|
|
568
640
|
const chats = chatsData.value || [];
|
|
569
|
-
const directChat = chats.find(c =>
|
|
570
|
-
c.chatType === 'oneOnOne' && c.id.includes(user.id)
|
|
571
|
-
);
|
|
572
|
-
|
|
641
|
+
const directChat = chats.find(c => c.chatType === 'oneOnOne' && c.id.includes(user.id));
|
|
573
642
|
if (!directChat) {
|
|
574
643
|
console.error(`No existing direct chat found with ${user.displayName} (${args.dm}).`);
|
|
575
644
|
console.error(`They may need to message you first, or check --chats list manually.`);
|
|
576
645
|
process.exit(1);
|
|
577
646
|
}
|
|
578
|
-
|
|
579
647
|
const res = await graphPost(`/me/chats/${directChat.id}/messages`, token, {
|
|
580
648
|
body: { content: args.send },
|
|
581
649
|
});
|
|
@@ -583,12 +651,9 @@ async function cmdTeams(args) {
|
|
|
583
651
|
return;
|
|
584
652
|
}
|
|
585
653
|
|
|
586
|
-
// ── FIXED: $select is NOT supported by the Teams chat messages endpoint ───
|
|
587
|
-
// The Graph API returns HTTP 400 if $select is used here. Pass $top only.
|
|
588
654
|
if (args.messages) {
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
});
|
|
655
|
+
// Graph returns HTTP 400 if $select is used on the Teams messages endpoint — pass $top only.
|
|
656
|
+
const data = await graphGet(`/me/chats/${args.messages}/messages`, token, { $top: limit });
|
|
592
657
|
const msgs = data.value || [];
|
|
593
658
|
if (args.json) { console.log(JSON.stringify(msgs, null, 2)); return; }
|
|
594
659
|
console.log(`\nMessages in chat ${args.messages.slice(0, 20)}...:`);
|
|
@@ -622,8 +687,6 @@ async function cmdTeams(args) {
|
|
|
622
687
|
async function cmdTranscripts(args) {
|
|
623
688
|
const token = await getValidToken();
|
|
624
689
|
|
|
625
|
-
// Search calendar events by date + optional subject keyword, then resolve meeting IDs + transcripts
|
|
626
|
-
// Usage: transcripts --start 2026-03-06 [--end 2026-03-06] [--subject "keyword"]
|
|
627
690
|
if (args.list || (!args.meeting && !args.download)) {
|
|
628
691
|
const startDate = args.start || new Date(Date.now() - 7 * 86400 * 1000).toISOString().slice(0, 10);
|
|
629
692
|
const endDate = args.end || startDate;
|
|
@@ -649,7 +712,6 @@ async function cmdTranscripts(args) {
|
|
|
649
712
|
console.log(`\nMeeting: ${e.subject}`);
|
|
650
713
|
console.log(`Start : ${fmtDt(e.start?.dateTime)}`);
|
|
651
714
|
const joinUrl = e.onlineMeeting.joinUrl;
|
|
652
|
-
// Resolve to online meeting object via joinWebUrl
|
|
653
715
|
let meetingId = null;
|
|
654
716
|
try {
|
|
655
717
|
const om = await graphGet('/me/onlineMeetings', token, {
|
|
@@ -689,7 +751,6 @@ async function cmdTranscripts(args) {
|
|
|
689
751
|
return;
|
|
690
752
|
}
|
|
691
753
|
|
|
692
|
-
// List transcripts for a specific meeting ID
|
|
693
754
|
if (args.meeting && !args.transcript) {
|
|
694
755
|
const data = await graphGet(`/me/onlineMeetings/${args.meeting}/transcripts`, token);
|
|
695
756
|
const transcripts = data.value || [];
|
|
@@ -701,7 +762,6 @@ async function cmdTranscripts(args) {
|
|
|
701
762
|
return;
|
|
702
763
|
}
|
|
703
764
|
|
|
704
|
-
// Download transcript content
|
|
705
765
|
if (args.meeting && args.transcript) {
|
|
706
766
|
const contentType = args.vtt ? 'text/vtt' : 'text/plain';
|
|
707
767
|
const url = `${GRAPH_BASE}/me/onlineMeetings/${args.meeting}/transcripts/${args.transcript}/content`;
|
|
@@ -812,6 +872,107 @@ async function cmdPeople(args) {
|
|
|
812
872
|
}
|
|
813
873
|
}
|
|
814
874
|
|
|
875
|
+
function cmdClaims(args) {
|
|
876
|
+
const cache = loadCache();
|
|
877
|
+
if (!cache?.access_token) {
|
|
878
|
+
console.log('NOT_LOGGED_IN — run: node msgraph.js login');
|
|
879
|
+
process.exit(2);
|
|
880
|
+
}
|
|
881
|
+
|
|
882
|
+
let payload;
|
|
883
|
+
try {
|
|
884
|
+
const parts = cache.access_token.split('.');
|
|
885
|
+
if (parts.length !== 3) throw new Error('Not a JWT');
|
|
886
|
+
payload = JSON.parse(Buffer.from(parts[1], 'base64url').toString('utf8'));
|
|
887
|
+
} catch {
|
|
888
|
+
console.error('Error: could not decode cached token.');
|
|
889
|
+
process.exit(1);
|
|
890
|
+
}
|
|
891
|
+
|
|
892
|
+
if (args.json) {
|
|
893
|
+
console.log(JSON.stringify(payload, null, 2));
|
|
894
|
+
return;
|
|
895
|
+
}
|
|
896
|
+
|
|
897
|
+
const tty = process.stdout.isTTY;
|
|
898
|
+
const c = {
|
|
899
|
+
reset: tty ? '\x1b[0m' : '',
|
|
900
|
+
bold: tty ? '\x1b[1m' : '',
|
|
901
|
+
dim: tty ? '\x1b[2m' : '',
|
|
902
|
+
cyan: tty ? '\x1b[36m' : '',
|
|
903
|
+
green: tty ? '\x1b[32m' : '',
|
|
904
|
+
red: tty ? '\x1b[31m' : '',
|
|
905
|
+
yellow: tty ? '\x1b[33m' : '',
|
|
906
|
+
white: tty ? '\x1b[97m' : '',
|
|
907
|
+
gray: tty ? '\x1b[90m' : '',
|
|
908
|
+
};
|
|
909
|
+
|
|
910
|
+
const W = 54;
|
|
911
|
+
const line = () => `${c.gray}${'─'.repeat(W)}${c.reset}`;
|
|
912
|
+
const section = label => `\n${c.bold}${c.cyan} ${label}${c.reset}\n${line()}`;
|
|
913
|
+
const row = (label, value, color = c.white) =>
|
|
914
|
+
` ${c.gray}${label.padEnd(12)}${c.reset} ${color}${value}${c.reset}`;
|
|
915
|
+
const absent = `${c.dim}(not present)${c.reset}`;
|
|
916
|
+
|
|
917
|
+
const now = Math.floor(Date.now() / 1000);
|
|
918
|
+
const expTs = payload.exp || 0;
|
|
919
|
+
const iatTs = payload.iat || 0;
|
|
920
|
+
const secsLeft = expTs - now;
|
|
921
|
+
const minsLeft = Math.floor(secsLeft / 60);
|
|
922
|
+
const expStr = expTs
|
|
923
|
+
? new Date(expTs * 1000).toISOString().slice(0, 19).replace('T', ' ')
|
|
924
|
+
: 'N/A';
|
|
925
|
+
const iatStr = iatTs
|
|
926
|
+
? new Date(iatTs * 1000).toISOString().slice(0, 19).replace('T', ' ')
|
|
927
|
+
: 'N/A';
|
|
928
|
+
const expiryHint = secsLeft > 0
|
|
929
|
+
? `${c.dim} (expires in ${minsLeft}m)${c.reset}`
|
|
930
|
+
: `${c.red} (EXPIRED)${c.reset}`;
|
|
931
|
+
|
|
932
|
+
const deviceId = payload.deviceid || payload.device_id || null;
|
|
933
|
+
const upn = payload.upn || payload.unique_name || 'N/A';
|
|
934
|
+
|
|
935
|
+
console.log(`\n${c.bold}${c.cyan}╭${'─'.repeat(W)}╮${c.reset}`);
|
|
936
|
+
console.log(`${c.bold}${c.cyan}│${c.reset} ${c.bold}Token Claims${c.reset} ${c.gray}${upn.slice(0, W - 16).padEnd(W - 14)}${c.cyan}│${c.reset}`);
|
|
937
|
+
console.log(`${c.bold}${c.cyan}╰${'─'.repeat(W)}╯${c.reset}`);
|
|
938
|
+
|
|
939
|
+
console.log(section('IDENTITY'));
|
|
940
|
+
console.log(row('UPN', upn));
|
|
941
|
+
console.log(row('Object ID', payload.oid || 'N/A', c.gray));
|
|
942
|
+
console.log(row('Tenant ID', payload.tid || 'N/A', c.gray));
|
|
943
|
+
console.log(row('Issued', iatStr, c.dim));
|
|
944
|
+
console.log(row('Expires', expStr) + expiryHint);
|
|
945
|
+
|
|
946
|
+
console.log(section('DEVICE CLAIMS'));
|
|
947
|
+
if (deviceId) {
|
|
948
|
+
console.log(row('Device ID', deviceId, c.green) + ` ${c.green}✓ present${c.reset}`);
|
|
949
|
+
} else {
|
|
950
|
+
console.log(row('Device ID', '(not present)', c.red) + ` ${c.red}✗${c.reset}`);
|
|
951
|
+
console.log(`\n ${c.yellow}⚠ Device claims are missing.${c.reset}`);
|
|
952
|
+
console.log(` ${c.dim} SSO Extension may not be deployed, or this device${c.reset}`);
|
|
953
|
+
console.log(` ${c.dim} is not registered in Entra ID.${c.reset}`);
|
|
954
|
+
}
|
|
955
|
+
console.log(row('Join Type', payload.join_type || absent));
|
|
956
|
+
console.log(row('MDM URL', payload.mdm_compliance_url || absent));
|
|
957
|
+
|
|
958
|
+
console.log(section('AUTH METHODS'));
|
|
959
|
+
const amrList = Array.isArray(payload.amr) ? payload.amr : (payload.amr || '').split(',');
|
|
960
|
+
const amrFmt = amrList.map(m => `${c.bold}${m.trim()}${c.reset}`).join(` ${c.gray}·${c.reset} `);
|
|
961
|
+
console.log(` ${amrFmt}`);
|
|
962
|
+
|
|
963
|
+
console.log(section('SCOPES'));
|
|
964
|
+
const scopes = (payload.scp || '').split(' ').filter(Boolean).sort();
|
|
965
|
+
const colWidth = 26;
|
|
966
|
+
const cols = 2;
|
|
967
|
+
for (let i = 0; i < scopes.length; i += cols) {
|
|
968
|
+
const row2 = scopes.slice(i, i + cols)
|
|
969
|
+
.map(s => `${c.dim}•${c.reset} ${s.padEnd(colWidth)}`)
|
|
970
|
+
.join(' ');
|
|
971
|
+
console.log(` ${row2}`);
|
|
972
|
+
}
|
|
973
|
+
console.log('');
|
|
974
|
+
}
|
|
975
|
+
|
|
815
976
|
async function cmdOrg(args) {
|
|
816
977
|
const token = await getValidToken();
|
|
817
978
|
|
|
@@ -836,7 +997,6 @@ async function cmdOrg(args) {
|
|
|
836
997
|
return;
|
|
837
998
|
}
|
|
838
999
|
|
|
839
|
-
// Default: show org context
|
|
840
1000
|
try {
|
|
841
1001
|
const mgr = await graphGet('/me/manager', token);
|
|
842
1002
|
console.log(`Manager: ${mgr.displayName}`);
|
|
@@ -938,7 +1098,7 @@ async function cmdOnenote(args) {
|
|
|
938
1098
|
// ── CLI Parser ────────────────────────────────────────────────────────────────
|
|
939
1099
|
function parseArgs(argv) {
|
|
940
1100
|
const BOOL = new Set(['json','unread','sites','chats','teamsList','contacts',
|
|
941
|
-
'manager','reports','availability','notebooks','list','vtt','help']);
|
|
1101
|
+
'manager','reports','availability','notebooks','list','vtt','help','force']);
|
|
942
1102
|
const args = { _: [] };
|
|
943
1103
|
let i = 0;
|
|
944
1104
|
while (i < argv.length) {
|
|
@@ -965,9 +1125,10 @@ function printHelp() {
|
|
|
965
1125
|
Usage: node ${name} <command> [options]
|
|
966
1126
|
|
|
967
1127
|
Auth:
|
|
968
|
-
login
|
|
1128
|
+
login [--force] Authenticate via browser (PKCE flow)
|
|
969
1129
|
logout Remove cached credentials
|
|
970
1130
|
status Check login status
|
|
1131
|
+
claims [--json] Decode cached JWT — identity, device claims, auth methods
|
|
971
1132
|
|
|
972
1133
|
Data:
|
|
973
1134
|
me [--json] Your profile
|
|
@@ -986,24 +1147,10 @@ Data:
|
|
|
986
1147
|
onenote [--notebooks] [--sections NOTEBOOK_ID] [--pages SECTION_ID]
|
|
987
1148
|
[--read PAGE_ID] [--search QUERY] [--limit N] [--json]
|
|
988
1149
|
[--create TITLE --section SECTION_ID [--body CONTENT]]
|
|
1150
|
+
transcripts [--start YYYY-MM-DD] [--end YYYY-MM-DD] [--subject KEYWORD]
|
|
1151
|
+
[--meeting ID] [--transcript ID] [--output FILE] [--vtt]
|
|
989
1152
|
|
|
990
1153
|
Add --json to any command for machine-readable output.
|
|
991
|
-
|
|
992
|
-
Examples:
|
|
993
|
-
node ${name} login
|
|
994
|
-
node ${name} emails --limit 20
|
|
995
|
-
node ${name} emails --send user@corp.com --subject "Hi" --body "Hello"
|
|
996
|
-
node ${name} calendar --create "Standup" --start 2024-03-15T09:00 --end 2024-03-15T09:30
|
|
997
|
-
node ${name} teams --chats
|
|
998
|
-
node ${name} teams --lookup-user alice@corp.com
|
|
999
|
-
node ${name} teams --dm alice@corp.com --send "Hello from the avatar!"
|
|
1000
|
-
node ${name} onedrive --upload report.pdf --dest "Documents/report.pdf"
|
|
1001
|
-
node ${name} onenote --notebooks
|
|
1002
|
-
node ${name} onenote --sections NOTEBOOK_ID
|
|
1003
|
-
node ${name} onenote --pages SECTION_ID
|
|
1004
|
-
node ${name} onenote --read PAGE_ID
|
|
1005
|
-
node ${name} onenote --search "meeting notes"
|
|
1006
|
-
node ${name} onenote --create "My Note" --section SECTION_ID --body "Content here"
|
|
1007
1154
|
`);
|
|
1008
1155
|
}
|
|
1009
1156
|
|
|
@@ -1016,20 +1163,21 @@ async function main() {
|
|
|
1016
1163
|
const args = parseArgs(argv.slice(1));
|
|
1017
1164
|
|
|
1018
1165
|
const COMMANDS = {
|
|
1019
|
-
login:
|
|
1020
|
-
logout:
|
|
1021
|
-
status:
|
|
1022
|
-
me:
|
|
1023
|
-
emails:
|
|
1024
|
-
calendar:
|
|
1025
|
-
sharepoint:
|
|
1026
|
-
teams:
|
|
1027
|
-
onedrive:
|
|
1028
|
-
people:
|
|
1029
|
-
org:
|
|
1030
|
-
onenote:
|
|
1031
|
-
transcripts:
|
|
1032
|
-
|
|
1166
|
+
login: () => cmdLogin(args),
|
|
1167
|
+
logout: () => cmdLogout(),
|
|
1168
|
+
status: () => cmdStatus(),
|
|
1169
|
+
me: () => cmdMe(args),
|
|
1170
|
+
emails: () => cmdEmails(args),
|
|
1171
|
+
calendar: () => cmdCalendar(args),
|
|
1172
|
+
sharepoint: () => cmdSharepoint(args),
|
|
1173
|
+
teams: () => cmdTeams(args),
|
|
1174
|
+
onedrive: () => cmdOnedrive(args),
|
|
1175
|
+
people: () => cmdPeople(args),
|
|
1176
|
+
org: () => cmdOrg(args),
|
|
1177
|
+
onenote: () => cmdOnenote(args),
|
|
1178
|
+
transcripts: () => cmdTranscripts(args),
|
|
1179
|
+
claims: () => cmdClaims(args),
|
|
1180
|
+
help: () => { printHelp(); process.exit(0); },
|
|
1033
1181
|
};
|
|
1034
1182
|
|
|
1035
1183
|
if (!COMMANDS[command]) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codemieai/code",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.57",
|
|
4
4
|
"description": "Unified AI coding assistant CLI - Manage Claude Code, Gemini & custom agents. Multi-provider support (OpenAI, Azure, LiteLLM, SSO). Built-in LangGraph agent with file operations & git integration.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|