@agent-coder/cli 0.1.2 → 0.1.4

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/auth.d.ts CHANGED
@@ -2,6 +2,10 @@
2
2
  * Authentication module - handles browser OAuth flow.
3
3
  */
4
4
  import { Credentials } from "./config.js";
5
+ /**
6
+ * Refresh an expired token using the refresh token.
7
+ */
8
+ export declare function refreshCredentials(): Promise<Credentials | null>;
5
9
  /**
6
10
  * Start OAuth login flow.
7
11
  * Opens browser to web app, which handles OAuth and redirects back with tokens.
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,WAAW,EAAkE,MAAM,aAAa,CAAC;AAK1G;;;GAGG;AACH,wBAAsB,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC,CA+ElD;AAED,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAG5C;AAED,wBAAgB,cAAc,IAAI,WAAW,GAAG,IAAI,CAEnD"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,WAAW,EAAkE,MAAM,aAAa,CAAC;AAuC1G;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAuCtE;AAED;;;GAGG;AACH,wBAAsB,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC,CAyFlD;AAED,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAG5C;AAED,wBAAgB,cAAc,IAAI,WAAW,GAAG,IAAI,CAEnD"}
package/dist/auth.js CHANGED
@@ -6,6 +6,61 @@ import open from "open";
6
6
  import { saveCredentials, loadCredentials, clearCredentials, loadConfig } from "./config.js";
7
7
  const CALLBACK_PORT = 9876;
8
8
  const CALLBACK_PATH = "/auth/callback";
9
+ /**
10
+ * Exchange an ID token for a custom token via Cloud Function.
11
+ * This allows the agent to sign in with Firebase Client SDK.
12
+ */
13
+ async function exchangeToken(idToken) {
14
+ const config = loadConfig();
15
+ const response = await fetch(`${config.functionsUrl}/exchangeToken`, {
16
+ method: "POST",
17
+ headers: { "Content-Type": "application/json" },
18
+ body: JSON.stringify({ idToken }),
19
+ });
20
+ if (!response.ok) {
21
+ const error = await response.json().catch(() => ({ error: "Unknown error" }));
22
+ throw new Error(error.error || "Failed to exchange token");
23
+ }
24
+ return response.json();
25
+ }
26
+ /**
27
+ * Refresh an expired token using the refresh token.
28
+ */
29
+ export async function refreshCredentials() {
30
+ const credentials = loadCredentials();
31
+ if (!credentials?.refreshToken) {
32
+ return null;
33
+ }
34
+ const config = loadConfig();
35
+ try {
36
+ const response = await fetch(`${config.functionsUrl}/refreshToken`, {
37
+ method: "POST",
38
+ headers: { "Content-Type": "application/json" },
39
+ body: JSON.stringify({ refreshToken: credentials.refreshToken }),
40
+ });
41
+ if (!response.ok) {
42
+ console.error("Failed to refresh token");
43
+ return null;
44
+ }
45
+ const data = await response.json();
46
+ // Exchange the new ID token for a custom token
47
+ const { customToken } = await exchangeToken(data.idToken);
48
+ const newCredentials = {
49
+ uid: data.uid || credentials.uid,
50
+ email: data.email || credentials.email,
51
+ displayName: credentials.displayName,
52
+ accessToken: customToken, // Store custom token for Firebase auth
53
+ refreshToken: data.refreshToken || credentials.refreshToken,
54
+ expiresAt: Date.now() + parseInt(data.expiresIn || "3600", 10) * 1000,
55
+ };
56
+ saveCredentials(newCredentials);
57
+ return newCredentials;
58
+ }
59
+ catch (error) {
60
+ console.error("Error refreshing credentials:", error);
61
+ return null;
62
+ }
63
+ }
9
64
  /**
10
65
  * Start OAuth login flow.
11
66
  * Opens browser to web app, which handles OAuth and redirects back with tokens.
@@ -37,19 +92,29 @@ export async function login() {
37
92
  reject(new Error("Missing required parameters from callback"));
38
93
  return;
39
94
  }
40
- const credentials = {
41
- uid,
42
- email: email || null,
43
- displayName: displayName || null,
44
- accessToken,
45
- refreshToken: refreshToken || "",
46
- expiresAt: Date.now() + parseInt(expiresIn || "3600", 10) * 1000,
47
- };
48
- saveCredentials(credentials);
49
- res.writeHead(200, { "Content-Type": "text/html" });
50
- res.end(successPage(displayName || email || "User"));
51
- server.close();
52
- resolve(credentials);
95
+ // Exchange ID token for custom token (async)
96
+ exchangeToken(accessToken)
97
+ .then(({ customToken }) => {
98
+ const credentials = {
99
+ uid,
100
+ email: email || null,
101
+ displayName: displayName || null,
102
+ accessToken: customToken, // Store custom token for Firebase auth
103
+ refreshToken: refreshToken || "",
104
+ expiresAt: Date.now() + parseInt(expiresIn || "3600", 10) * 1000,
105
+ };
106
+ saveCredentials(credentials);
107
+ res.writeHead(200, { "Content-Type": "text/html" });
108
+ res.end(successPage(displayName || email || "User"));
109
+ server.close();
110
+ resolve(credentials);
111
+ })
112
+ .catch((err) => {
113
+ res.writeHead(500, { "Content-Type": "text/html" });
114
+ res.end(errorPage(`Token exchange failed: ${err.message}`));
115
+ server.close();
116
+ reject(err);
117
+ });
53
118
  }
54
119
  else {
55
120
  res.writeHead(404);
package/dist/auth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAmC,MAAM,WAAW,CAAC;AAC1E,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAe,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE1G,MAAM,aAAa,GAAG,IAAI,CAAC;AAC3B,MAAM,aAAa,GAAG,gBAAgB,CAAC;AAEvC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK;IACzB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAE5B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,GAAoB,EAAE,GAAmB,EAAE,EAAE;YACxE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,oBAAoB,aAAa,EAAE,CAAC,CAAC;YAEzE,IAAI,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;gBACnC,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBACxD,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBAC1D,MAAM,GAAG,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACxC,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC5C,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBACxD,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACpD,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAE5C,IAAI,KAAK,EAAE,CAAC;oBACV,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;oBACpD,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;oBAC1B,MAAM,CAAC,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;oBACzB,OAAO;gBACT,CAAC;gBAED,IAAI,CAAC,WAAW,IAAI,CAAC,GAAG,EAAE,CAAC;oBACzB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;oBACpD,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,sCAAsC,CAAC,CAAC,CAAC;oBAC3D,MAAM,CAAC,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC,CAAC;oBAC/D,OAAO;gBACT,CAAC;gBAED,MAAM,WAAW,GAAgB;oBAC/B,GAAG;oBACH,KAAK,EAAE,KAAK,IAAI,IAAI;oBACpB,WAAW,EAAE,WAAW,IAAI,IAAI;oBAChC,WAAW;oBACX,YAAY,EAAE,YAAY,IAAI,EAAE;oBAChC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,SAAS,IAAI,MAAM,EAAE,EAAE,CAAC,GAAG,IAAI;iBACjE,CAAC;gBAEF,eAAe,CAAC,WAAW,CAAC,CAAC;gBAE7B,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;gBACpD,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,IAAI,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC;gBAErD,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,WAAW,CAAC,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACnB,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACvB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,EAAE;YAChC,MAAM,QAAQ,GAAG,GAAG,MAAM,CAAC,MAAM,8BAA8B,aAAa,iBAAiB,kBAAkB,CAAC,aAAa,CAAC,EAAE,CAAC;YAEjI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;gBACxB,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;YACvD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACzB,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,0BAA0B;QAC1B,UAAU,CAAC,GAAG,EAAE;YACd,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC;QACvD,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM;IAC1B,gBAAgB,EAAE,CAAC;IACnB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,eAAe,EAAE,CAAC;AAC3B,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAwC4B,IAAI;;;;QAIjC,CAAC;AACT,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;uBA2Bc,KAAK;;;;QAIpB,CAAC;AACT,CAAC"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -5,6 +5,7 @@ export declare const DATA_DIR: string;
5
5
  export declare const CONFIG_FILE: string;
6
6
  export declare const CREDENTIALS_FILE: string;
7
7
  export declare const DEFAULT_WEB_URL: string;
8
+ export declare const DEFAULT_FUNCTIONS_URL: string;
8
9
  export interface Credentials {
9
10
  uid: string;
10
11
  email: string | null;
@@ -15,6 +16,7 @@ export interface Credentials {
15
16
  }
16
17
  export interface Config {
17
18
  webUrl: string;
19
+ functionsUrl: string;
18
20
  serverId: string;
19
21
  serverName: string;
20
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,eAAO,MAAM,QAAQ,QAAyC,CAAC;AAC/D,eAAO,MAAM,WAAW,QAAqC,CAAC;AAC9D,eAAO,MAAM,gBAAgB,QAA0C,CAAC;AAGxE,eAAO,MAAM,eAAe,QAA+D,CAAC;AAE5F,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAQD,wBAAgB,UAAU,IAAI,MAAM,CAoBnC;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAG/C;AAED,wBAAgB,eAAe,IAAI,WAAW,GAAG,IAAI,CAiBpD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAGxD;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAIvC;AAED,wBAAgB,UAAU,IAAI,OAAO,CAGpC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,eAAO,MAAM,QAAQ,QAAyC,CAAC;AAC/D,eAAO,MAAM,WAAW,QAAqC,CAAC;AAC9D,eAAO,MAAM,gBAAgB,QAA0C,CAAC;AAKxE,eAAO,MAAM,eAAe,QAAmE,CAAC;AAChG,eAAO,MAAM,qBAAqB,QAAkG,CAAC;AAKrI,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAQD,wBAAgB,UAAU,IAAI,MAAM,CAsCnC;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAG/C;AAED,wBAAgB,eAAe,IAAI,WAAW,GAAG,IAAI,CAiBpD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAGxD;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAIvC;AAED,wBAAgB,UAAU,IAAI,OAAO,CAGpC"}
package/dist/config.js CHANGED
@@ -9,7 +9,12 @@ export const DATA_DIR = path.join(os.homedir(), ".agentcoder");
9
9
  export const CONFIG_FILE = path.join(DATA_DIR, "config.json");
10
10
  export const CREDENTIALS_FILE = path.join(DATA_DIR, "credentials.json");
11
11
  // Default URLs (your hosted service)
12
- export const DEFAULT_WEB_URL = process.env.AGENTCODER_WEB_URL || "https://agentcoder.space";
12
+ // Note: agentcoder.space is the static landing page (GitHub Pages)
13
+ // app.agentcoder.space is the Firebase web app with auth
14
+ export const DEFAULT_WEB_URL = process.env.AGENTCODER_WEB_URL || "https://app.agentcoder.space";
15
+ export const DEFAULT_FUNCTIONS_URL = process.env.AGENTCODER_FUNCTIONS_URL || "https://us-central1-agent-coder-ai.cloudfunctions.net";
16
+ // Old URLs that should be migrated
17
+ const DEPRECATED_WEB_URLS = ["https://agentcoder.space"];
13
18
  function ensureDataDir() {
14
19
  if (!existsSync(DATA_DIR)) {
15
20
  mkdirSync(DATA_DIR, { recursive: true });
@@ -19,7 +24,21 @@ export function loadConfig() {
19
24
  ensureDataDir();
20
25
  if (existsSync(CONFIG_FILE)) {
21
26
  try {
22
- return JSON.parse(readFileSync(CONFIG_FILE, "utf-8"));
27
+ const config = JSON.parse(readFileSync(CONFIG_FILE, "utf-8"));
28
+ // Migrate deprecated URLs and fill missing fields
29
+ let needsSave = false;
30
+ if (DEPRECATED_WEB_URLS.includes(config.webUrl)) {
31
+ config.webUrl = DEFAULT_WEB_URL;
32
+ needsSave = true;
33
+ }
34
+ if (!config.functionsUrl) {
35
+ config.functionsUrl = DEFAULT_FUNCTIONS_URL;
36
+ needsSave = true;
37
+ }
38
+ if (needsSave) {
39
+ saveConfig(config);
40
+ }
41
+ return config;
23
42
  }
24
43
  catch {
25
44
  // Fall through to defaults
@@ -28,6 +47,7 @@ export function loadConfig() {
28
47
  // Generate default config
29
48
  const config = {
30
49
  webUrl: DEFAULT_WEB_URL,
50
+ functionsUrl: DEFAULT_FUNCTIONS_URL,
31
51
  serverId: `${os.hostname()}-${Math.random().toString(36).slice(2, 10)}`,
32
52
  serverName: os.hostname(),
33
53
  };
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"firebase.d.ts","sourceRoot":"","sources":["../src/firebase.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAIL,IAAI,EAEL,MAAM,eAAe,CAAC;AACvB,OAAO,EAEL,SAAS,EACT,UAAU,EACV,GAAG,EACH,UAAU,EACV,SAAS,EACT,MAAM,EACN,KAAK,EACL,KAAK,EACL,eAAe,EACf,WAAW,EACZ,MAAM,oBAAoB,CAAC;AAgB5B,wBAAsB,kBAAkB,IAAI,OAAO,CAAC;IAAE,EAAE,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC,CAiCjF;AAED,wBAAgB,KAAK,IAAI,SAAS,CAGjC;AAED,wBAAgB,cAAc,IAAI,IAAI,GAAG,IAAI,CAE5C;AAGD,eAAO,MAAM,KAAK;6BACS,MAAM;0BACT,MAAM;yBACP,MAAM,WAAW,MAAM;4BAEpB,MAAM,WAAW,MAAM;2BAExB,MAAM,WAAW,MAAM,aAAa,MAAM;4BAEzC,MAAM,WAAW,MAAM,aAAa,MAAM;2BAE3C,MAAM;0BACP,MAAM,YAAY,MAAM;CAE/C,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;AACzF,YAAY,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"firebase.d.ts","sourceRoot":"","sources":["../src/firebase.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAIL,IAAI,EAEL,MAAM,eAAe,CAAC;AACvB,OAAO,EAEL,SAAS,EACT,UAAU,EACV,GAAG,EACH,UAAU,EACV,SAAS,EACT,MAAM,EACN,KAAK,EACL,KAAK,EACL,eAAe,EACf,WAAW,EACZ,MAAM,oBAAoB,CAAC;AAiB5B,wBAAsB,kBAAkB,IAAI,OAAO,CAAC;IAAE,EAAE,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC,CAsDjF;AAED,wBAAgB,KAAK,IAAI,SAAS,CAGjC;AAED,wBAAgB,cAAc,IAAI,IAAI,GAAG,IAAI,CAE5C;AAGD,eAAO,MAAM,KAAK;6BACS,MAAM;0BACT,MAAM;yBACP,MAAM,WAAW,MAAM;4BAEpB,MAAM,WAAW,MAAM;2BAExB,MAAM,WAAW,MAAM,aAAa,MAAM;4BAEzC,MAAM,WAAW,MAAM,aAAa,MAAM;2BAE3C,MAAM;0BACP,MAAM,YAAY,MAAM;CAE/C,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;AACzF,YAAY,EAAE,WAAW,EAAE,CAAC"}
package/dist/firebase.js CHANGED
@@ -6,6 +6,7 @@ import { initializeApp } from "firebase/app";
6
6
  import { getAuth, signInWithCustomToken, onAuthStateChanged, } from "firebase/auth";
7
7
  import { getFirestore, collection, doc, onSnapshot, updateDoc, addDoc, query, where, serverTimestamp, } from "firebase/firestore";
8
8
  import { loadCredentials } from "./config.js";
9
+ import { refreshCredentials } from "./auth.js";
9
10
  // Firebase config - bundled with the agent
10
11
  // These are client-side keys, safe to include
11
12
  const firebaseConfig = {
@@ -18,17 +19,24 @@ let auth = null;
18
19
  let db = null;
19
20
  let currentUser = null;
20
21
  export async function initializeFirebase() {
21
- const credentials = loadCredentials();
22
+ let credentials = loadCredentials();
22
23
  if (!credentials) {
23
24
  throw new Error("Not logged in. Run 'agentcoder login' first.");
24
25
  }
26
+ // Check if token is expired or about to expire (within 5 minutes)
27
+ const expiresIn = credentials.expiresAt - Date.now();
28
+ if (expiresIn < 5 * 60 * 1000) {
29
+ console.log("Token expired or expiring soon, refreshing...");
30
+ const newCredentials = await refreshCredentials();
31
+ if (!newCredentials) {
32
+ throw new Error("Session expired. Please run 'agentcoder login' again.");
33
+ }
34
+ credentials = newCredentials;
35
+ }
25
36
  // Initialize Firebase app
26
37
  app = initializeApp(firebaseConfig);
27
38
  auth = getAuth(app);
28
39
  db = getFirestore(app);
29
- // Sign in with the stored credentials
30
- // Note: We need to handle token refresh properly
31
- // For now, we'll use the access token to authenticate via a custom approach
32
40
  return new Promise((resolve, reject) => {
33
41
  // Listen for auth state changes
34
42
  const unsubscribe = onAuthStateChanged(auth, (user) => {
@@ -38,12 +46,27 @@ export async function initializeFirebase() {
38
46
  resolve({ db: db, user });
39
47
  }
40
48
  });
41
- // Try to sign in with the stored token
42
- // This requires the token to be a valid Firebase ID token or custom token
49
+ // Sign in with the custom token (obtained during login or refresh)
43
50
  signInWithCustomToken(auth, credentials.accessToken)
44
51
  .catch((error) => {
45
52
  unsubscribe();
46
- reject(new Error(`Authentication failed: ${error.message}`));
53
+ // If custom token is invalid/expired, try refreshing
54
+ if (error.code === "auth/invalid-custom-token") {
55
+ refreshCredentials()
56
+ .then((newCreds) => {
57
+ if (!newCreds) {
58
+ reject(new Error("Session expired. Please run 'agentcoder login' again."));
59
+ return;
60
+ }
61
+ return signInWithCustomToken(auth, newCreds.accessToken);
62
+ })
63
+ .catch((refreshError) => {
64
+ reject(new Error(`Authentication failed: ${refreshError.message}`));
65
+ });
66
+ }
67
+ else {
68
+ reject(new Error(`Authentication failed: ${error.message}`));
69
+ }
47
70
  });
48
71
  });
49
72
  }
@@ -1 +1 @@
1
- {"version":3,"file":"firebase.js","sourceRoot":"","sources":["../src/firebase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"firebase.js","sourceRoot":"","sources":["../src/firebase.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -5,7 +5,7 @@
5
5
  * to connect directly to Firestore and process agent commands locally via tmux.
6
6
  * No service account required - just login with your account.
7
7
  */
8
- export { login, logout, getCredentials } from "./auth.js";
8
+ export { login, logout, getCredentials, refreshCredentials } from "./auth.js";
9
9
  export { loadConfig, saveConfig, isLoggedIn, type Config, type Credentials } from "./config.js";
10
10
  export { initializeFirebase, getDb, getCurrentUser, paths } from "./firebase.js";
11
11
  export { FirestoreWatcher } from "./watcher.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC"}
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@
5
5
  * to connect directly to Firestore and process agent commands locally via tmux.
6
6
  * No service account required - just login with your account.
7
7
  */
8
- export { login, logout, getCredentials } from "./auth.js";
8
+ export { login, logout, getCredentials, refreshCredentials } from "./auth.js";
9
9
  export { loadConfig, saveConfig, isLoggedIn } from "./config.js";
10
10
  export { initializeFirebase, getDb, getCurrentUser, paths } from "./firebase.js";
11
11
  export { FirestoreWatcher } from "./watcher.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAiC,MAAM,aAAa,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAiC,MAAM,aAAa,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-coder/cli",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "AgentCoder - Run AI coding agents on your machine",
5
5
  "type": "module",
6
6
  "bin": {