@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.
@@ -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;AAW1C;;;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;IAgJvB;;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"}
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 starts the **Device Code Flow** it will print a URL and a short code like:
40
- ```
41
- To sign in, use a web browser to open the page https://microsoft.com/devicelogin
42
- and enter the code ABCD-1234 to authenticate.
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
- Tell the user exactly that message, then wait. Once they complete login in the browser,
46
- the token is cached at `~/.ms_graph_token_cache.json` and all subsequent commands run silently.
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
- > A code and URL will appear — open the URL in your browser and enter the code."
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: OAuth2 device code flow with persistent token cache.
6
- * First time: node msgraph.js login
7
- * Subsequent: token refreshed silently from cache.
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 https = require('node:https');
15
- const fs = require('node:fs');
16
- const path = require('node:path');
17
- const os = require('node:os');
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'; // CodeMie APP
21
- const TOKEN_URL = 'https://login.microsoftonline.com/common/oauth2/v2.0/token';
22
- const DEVICE_URL = 'https://login.microsoftonline.com/common/oauth2/v2.0/devicecode';
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 = path.join(os.homedir(), '.ms_graph_token_cache.json');
33
- const GRAPH_BASE = 'https://graph.microsoft.com/v1.0';
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">&#10003; 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">&#10007; 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
- /** Returns a valid token, silently refreshing if needed. Exits if not logged in. */
164
- async function getValidToken() {
165
- const cache = loadCache();
166
- if (!cache?.access_token) {
167
- console.log('NOT_LOGGED_IN');
168
- process.exit(2);
169
- }
170
- const now = Math.floor(Date.now() / 1000);
171
- if (!cache.expires_at || now < cache.expires_at - 60) return cache.access_token;
172
- if (cache.refresh_token) {
173
- const t = await tryRefresh(cache.refresh_token, cache.username);
174
- if (t) return t;
175
- }
176
- console.log('TOKEN_EXPIRED');
177
- process.exit(2);
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
- /** Like getValidToken but returns null instead of exiting (used by status cmd). */
181
- async function tryGetToken() {
182
- const cache = loadCache();
183
- if (!cache?.access_token) return null;
184
- const now = Math.floor(Date.now() / 1000);
185
- if (!cache.expires_at || now < cache.expires_at - 60) return cache.access_token;
186
- if (cache.refresh_token) return tryRefresh(cache.refresh_token, cache.username);
187
- return null;
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
- // Device Code Flow
204
- const device = await oauthPost(DEVICE_URL, { client_id: CLIENT_ID, scope: SCOPES });
205
- if (!device.device_code) throw new Error(`Device flow failed: ${JSON.stringify(device)}`);
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
- while (Date.now() < deadline) {
215
- await new Promise(r => setTimeout(r, interval));
216
- try {
217
- const res = await oauthPost(TOKEN_URL, {
218
- client_id: CLIENT_ID,
219
- grant_type: 'urn:ietf:params:oauth:grant-type:device_code',
220
- device_code: device.device_code,
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
- console.log('Starting Microsoft authentication...');
278
- const token = await getAccessToken(true);
279
- const me = await graphGet('/me', token);
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 at: ${CACHE_FILE}`);
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
- // 1. Resolve target user's AAD ID
559
- const user = await graphGet(`/users/${args.dm}`, token, {
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
- const data = await graphGet(`/me/chats/${args.messages}/messages`, token, {
590
- $top: limit,
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 Authenticate (device code flow)
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: () => cmdLogin(),
1020
- logout: () => cmdLogout(),
1021
- status: () => cmdStatus(),
1022
- me: () => cmdMe(args),
1023
- emails: () => cmdEmails(args),
1024
- calendar: () => cmdCalendar(args),
1025
- sharepoint: () => cmdSharepoint(args),
1026
- teams: () => cmdTeams(args),
1027
- onedrive: () => cmdOnedrive(args),
1028
- people: () => cmdPeople(args),
1029
- org: () => cmdOrg(args),
1030
- onenote: () => cmdOnenote(args),
1031
- transcripts: () => cmdTranscripts(args),
1032
- help: () => { printHelp(); process.exit(0); },
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.56",
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",