neoagent 2.3.1-beta.104 → 2.3.1-beta.106

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/lib/manager.js CHANGED
@@ -813,27 +813,14 @@ async function cmdLoginClaudeCode() {
813
813
  // and fall back to 80 if everything else is occupied.
814
814
  const http = require('http');
815
815
  const { URL: NodeURL } = require('url');
816
- const net = require('net');
817
816
 
818
- const clientId = 'https://claude.ai/oauth/claude-code-client-metadata';
819
- const SCOPES = 'user:inference user:profile org:create_api_key user:sessions:claude_code offline_access';
817
+ const clientId = '9d1c250a-e61b-44d9-88ed-5944d1962f5e';
818
+ const SCOPES = 'user:inference user:profile org:create_api_key user:sessions:claude_code user:mcp_servers';
820
819
 
821
- // Find a free port (prefer high ports to avoid permission issues; fall back to 80)
822
- const preferredPorts = [65432, 58080, 54321, 49152, 80];
823
- let redirectPort = null;
824
-
825
- for (const p of preferredPorts) {
826
- const free = await new Promise((res) => {
827
- const probe = net.createServer();
828
- probe.listen(p, '127.0.0.1', () => { probe.close(() => res(true)); });
829
- probe.on('error', () => res(false));
830
- });
831
- if (free) { redirectPort = p; break; }
832
- }
833
-
834
- if (!redirectPort) throw new Error('Could not find a free local port for the OAuth callback.');
835
-
836
- const redirectUri = `http://127.0.0.1${redirectPort === 80 ? '' : `:${redirectPort}`}/callback`;
820
+ // The registered redirect URIs are http://localhost/callback and http://127.0.0.1/callback
821
+ // (port 80). The OAuth server validates the URI exactly, so we must use port 80.
822
+ const redirectPort = 80;
823
+ const redirectUri = 'http://127.0.0.1/callback';
837
824
 
838
825
  // Generate PKCE verifier and challenge
839
826
  const codeVerifier = crypto.randomBytes(48).toString('base64url');
@@ -844,7 +831,7 @@ async function cmdLoginClaudeCode() {
844
831
 
845
832
  const state = crypto.randomBytes(16).toString('hex');
846
833
 
847
- const authUrl = new URL('https://claude.ai/oauth/authorize');
834
+ const authUrl = new URL('https://platform.claude.com/oauth/authorize');
848
835
  authUrl.searchParams.set('response_type', 'code');
849
836
  authUrl.searchParams.set('client_id', clientId);
850
837
  authUrl.searchParams.set('redirect_uri', redirectUri);
@@ -908,17 +895,20 @@ async function cmdLoginClaudeCode() {
908
895
  }
909
896
  });
910
897
 
911
- server.listen(redirectPort, '127.0.0.1', () => {
912
- logInfo(`Waiting for authorization callback on port ${redirectPort}...`);
898
+ server.listen(80, '127.0.0.1', () => {
899
+ logInfo('Waiting for OAuth callback on http://127.0.0.1/callback ...');
913
900
  });
914
901
  server.on('error', (err) => {
915
902
  clearTimeout(timeout);
916
- reject(new Error(`Could not start local redirect server: ${err.message}`));
903
+ const hint = err.code === 'EACCES'
904
+ ? 'Port 80 requires elevated privileges. Try: sudo neoagent login claude-code'
905
+ : err.message;
906
+ reject(new Error(`Could not start OAuth callback server: ${hint}`));
917
907
  });
918
908
  });
919
909
 
920
910
  logInfo('Exchanging authorization code for access token...');
921
- const tokenRes = await fetch('https://claude.ai/oauth/token', {
911
+ const tokenRes = await fetch('https://platform.claude.com/v1/oauth/token', {
922
912
  method: 'POST',
923
913
  headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },
924
914
  body: JSON.stringify({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "neoagent",
3
- "version": "2.3.1-beta.104",
3
+ "version": "2.3.1-beta.106",
4
4
  "description": "Proactive personal AI agent with no limits",
5
5
  "license": "MIT",
6
6
  "main": "server/index.js",
@@ -1 +1 @@
1
- 2f506dae7123235dcafdcda0f78d6a13
1
+ 8b69095a62416840b1cd8a399280a82a
@@ -37,6 +37,6 @@ _flutter.buildConfig = {"engineRevision":"42d3d75a56efe1a2e9902f52dc8006099c45d9
37
37
 
38
38
  _flutter.loader.load({
39
39
  serviceWorkerSettings: {
40
- serviceWorkerVersion: "2650676693" /* Flutter's service worker is deprecated and will be removed in a future Flutter release. */
40
+ serviceWorkerVersion: "1912156582" /* Flutter's service worker is deprecated and will be removed in a future Flutter release. */
41
41
  }
42
42
  });
@@ -129338,7 +129338,7 @@ r===$&&A.b()
129338
129338
  o.push(A.ii(p,A.iY(!1,new A.a3(B.tM,A.dT(new A.cI(B.he,new A.a5V(r,p),p),p,p),p),!1,B.I,!0),p,p,0,0,0,p))}r=!1
129339
129339
  if(!s.ay)if(!s.ch){r=s.e
129340
129340
  r===$&&A.b()
129341
- r=B.b.t("mpacvqjv-54ec71e").length!==0&&r.b}if(r){r=s.d
129341
+ r=B.b.t("mpadhay8-6029559").length!==0&&r.b}if(r){r=s.d
129342
129342
  r===$&&A.b()
129343
129343
  r=r.ag&&!r.V?84:0
129344
129344
  q=s.e
@@ -134146,7 +134146,7 @@ $S:236}
134146
134146
  A.Ys.prototype={}
134147
134147
  A.Rr.prototype={
134148
134148
  mT(a){var s=this
134149
- if(B.b.t("mpacvqjv-54ec71e").length===0||s.a!=null)return
134149
+ if(B.b.t("mpadhay8-6029559").length===0||s.a!=null)return
134150
134150
  s.A5()
134151
134151
  s.a=A.q1(B.PP,new A.b58(s))},
134152
134152
  A5(){var s=0,r=A.l(t.H),q,p=2,o=[],n=this,m,l,k,j,i,h,g,f
@@ -134164,7 +134164,7 @@ if(!t.f.b(k)){s=1
134164
134164
  break}i=J.Z(k,"buildId")
134165
134165
  h=i==null?null:B.b.t(J.r(i))
134166
134166
  j=h==null?"":h
134167
- if(J.bm(j)===0||J.d(j,"mpacvqjv-54ec71e")){s=1
134167
+ if(J.bm(j)===0||J.d(j,"mpadhay8-6029559")){s=1
134168
134168
  break}n.b=!0
134169
134169
  n.D()
134170
134170
  p=2
@@ -134181,7 +134181,7 @@ case 2:return A.i(o.at(-1),r)}})
134181
134181
  return A.k($async$A5,r)},
134182
134182
  vb(){var s=0,r=A.l(t.H),q,p=2,o=[],n=this,m,l,k,j,i,h,g,f,e,d,c,b,a,a0,a1
134183
134183
  var $async$vb=A.h(function(a2,a3){if(a2===1){o.push(a3)
134184
- s=p}for(;;)switch(s){case 0:if(B.b.t("mpacvqjv-54ec71e").length===0||n.c){s=1
134184
+ s=p}for(;;)switch(s){case 0:if(B.b.t("mpadhay8-6029559").length===0||n.c){s=1
134185
134185
  break}n.c=!0
134186
134186
  n.D()
134187
134187
  p=4