xiaotime 0.1.1 → 0.2.1

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
@@ -1,15 +1,26 @@
1
1
  /**
2
- * Discord OAuth login flow for xiaotime CLI.
2
+ * OAuth login flow for the xiaotime CLI.
3
3
  *
4
- * xiaotime login:
5
- * 1. POST /oauth/discord/cli/init → pending_id + auth_url
6
- * 2. Open browser to auth_url
7
- * 3. Poll /oauth/discord/cli/token?pending_id=... until complete
4
+ * SPRINT-PLATFORM-TERMINAL-DEVELOPER-MAX-MIGRATION-1 (#6097) PR2.
5
+ * Defaults to Google OAuth (the platform's standard identity provider
6
+ * post-Discord deprecation). Discord remains usable for one observation
7
+ * window via XIAOTIME_OAUTH_PROVIDER=discord, then will be removed in a
8
+ * follow-up PR after Google has run clean.
9
+ *
10
+ * xiaotime login (provider=google):
11
+ * 1. POST /oauth/google/cli/init → pending_id + auth_url
12
+ * 2. Open browser to auth_url (Google consent screen)
13
+ * 3. Poll /oauth/google/cli/token?pending_id=... until complete
8
14
  * 4. Store cli_token in ~/.xiaotime/credentials.json
15
+ *
16
+ * xiaotime login (provider=discord, legacy):
17
+ * Same shape, hits /oauth/discord/cli/{init,token} instead.
9
18
  */
10
19
  interface Credentials {
11
20
  token: string;
21
+ provider?: "discord" | "google";
12
22
  discord_username?: string;
23
+ google_email?: string;
13
24
  issued_at: string;
14
25
  }
15
26
  export declare function loadCredentials(): Credentials | null;
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAUH,UAAU,WAAW;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,eAAe,IAAI,WAAW,GAAG,IAAI,CAOpD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAMxD;AAED,wBAAgB,QAAQ,IAAI,MAAM,CAOjC;AAED,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAiC9C"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAcH,UAAU,WAAW;IACnB,KAAK,EAAE,MAAM,CAAC;IAMd,QAAQ,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAgBD,wBAAgB,eAAe,IAAI,WAAW,GAAG,IAAI,CAOpD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAMxD;AAED,wBAAgB,QAAQ,IAAI,MAAM,CAOjC;AAED,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAuC9C"}
package/dist/auth.js CHANGED
@@ -1,12 +1,21 @@
1
1
  "use strict";
2
2
  /**
3
- * Discord OAuth login flow for xiaotime CLI.
3
+ * OAuth login flow for the xiaotime CLI.
4
4
  *
5
- * xiaotime login:
6
- * 1. POST /oauth/discord/cli/init → pending_id + auth_url
7
- * 2. Open browser to auth_url
8
- * 3. Poll /oauth/discord/cli/token?pending_id=... until complete
5
+ * SPRINT-PLATFORM-TERMINAL-DEVELOPER-MAX-MIGRATION-1 (#6097) PR2.
6
+ * Defaults to Google OAuth (the platform's standard identity provider
7
+ * post-Discord deprecation). Discord remains usable for one observation
8
+ * window via XIAOTIME_OAUTH_PROVIDER=discord, then will be removed in a
9
+ * follow-up PR after Google has run clean.
10
+ *
11
+ * xiaotime login (provider=google):
12
+ * 1. POST /oauth/google/cli/init → pending_id + auth_url
13
+ * 2. Open browser to auth_url (Google consent screen)
14
+ * 3. Poll /oauth/google/cli/token?pending_id=... until complete
9
15
  * 4. Store cli_token in ~/.xiaotime/credentials.json
16
+ *
17
+ * xiaotime login (provider=discord, legacy):
18
+ * Same shape, hits /oauth/discord/cli/{init,token} instead.
10
19
  */
11
20
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
12
21
  if (k2 === undefined) k2 = k;
@@ -49,9 +58,22 @@ exports.runLogin = runLogin;
49
58
  const fs = __importStar(require("fs"));
50
59
  const os = __importStar(require("os"));
51
60
  const path = __importStar(require("path"));
61
+ // SPRINT-#6097 PR2 follow-up: OAuth init/poll endpoints live on the
62
+ // MAIN orchestrator (AUTH_URL), not on terminal-orchestrator
63
+ // (ORCHESTRATOR_URL). 0.2.0 collapsed the two by mistake; restored
64
+ // in 0.2.1.
52
65
  const config_js_1 = require("./config.js");
53
66
  const CREDENTIALS_DIR = path.join(os.homedir(), ".xiaotime");
54
67
  const CREDENTIALS_FILE = path.join(CREDENTIALS_DIR, "credentials.json");
68
+ function selectedProvider() {
69
+ const raw = (process.env.XIAOTIME_OAUTH_PROVIDER || "").trim().toLowerCase();
70
+ if (raw === "discord")
71
+ return "discord";
72
+ // Any other value (including empty / typos) → google. Reasoning:
73
+ // typos shouldn't silently route through the deprecated Discord
74
+ // flow; the explicit opt-in is the only way back to Discord.
75
+ return "google";
76
+ }
55
77
  function loadCredentials() {
56
78
  try {
57
79
  const raw = fs.readFileSync(CREDENTIALS_FILE, "utf-8");
@@ -77,9 +99,13 @@ function getToken() {
77
99
  return creds.token;
78
100
  }
79
101
  async function runLogin() {
80
- console.log("Connecting to xiaotime...\n");
102
+ const provider = selectedProvider();
103
+ const providerLabel = provider === "discord" ? "Discord" : "Google";
104
+ const initPath = `/oauth/${provider}/cli/init`;
105
+ const tokenPath = `/oauth/${provider}/cli/token`;
106
+ console.log(`Connecting to xiaotime (${providerLabel} login)...\n`);
81
107
  // Step 1: init
82
- const initRes = await fetch(`${config_js_1.AUTH_URL}/oauth/discord/cli/init`, {
108
+ const initRes = await fetch(`${config_js_1.AUTH_URL}${initPath}`, {
83
109
  method: "POST",
84
110
  });
85
111
  if (!initRes.ok) {
@@ -88,27 +114,28 @@ async function runLogin() {
88
114
  }
89
115
  const { pending_id, auth_url } = await initRes.json();
90
116
  // Step 2: open browser
91
- console.log("Opening browser for Discord login...");
117
+ console.log(`Opening browser for ${providerLabel} login...`);
92
118
  console.log(` ${auth_url}\n`);
93
119
  console.log("If the browser does not open, copy the URL above and paste it into your browser.\n");
94
120
  openBrowser(auth_url);
95
121
  // Step 3: poll
96
122
  console.log("Waiting for authentication...");
97
- const token = await pollForToken(pending_id);
123
+ const token = await pollForToken(pending_id, tokenPath);
98
124
  // Step 4: save
99
125
  saveCredentials({
100
126
  token,
127
+ provider,
101
128
  issued_at: new Date().toISOString(),
102
129
  });
103
130
  console.log("\n✓ Logged in. You can now run: xiaotime dev\n");
104
131
  }
105
- async function pollForToken(pendingId, timeoutMs = 120_000) {
132
+ async function pollForToken(pendingId, tokenPath, timeoutMs = 120_000) {
106
133
  const deadline = Date.now() + timeoutMs;
107
134
  const interval = 2000;
108
135
  while (Date.now() < deadline) {
109
136
  await sleep(interval);
110
137
  try {
111
- const res = await fetch(`${config_js_1.AUTH_URL}/oauth/discord/cli/token?pending_id=${encodeURIComponent(pendingId)}`);
138
+ const res = await fetch(`${config_js_1.AUTH_URL}${tokenPath}?pending_id=${encodeURIComponent(pendingId)}`);
112
139
  if (!res.ok) {
113
140
  // 410 = expired
114
141
  const body = await res.json();
package/dist/auth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -1,5 +1,23 @@
1
1
  /**
2
2
  * Runtime configuration from environment variables.
3
+ *
4
+ * Two different hosts are involved:
5
+ * - ORCHESTRATOR_URL: terminal-orchestrator, where the `xiaotime dev`
6
+ * session lives (REST + WebSocket). The cli_token is presented to
7
+ * this host as the x-api-key header.
8
+ * - AUTH_URL: the main orchestrator, where the OAuth init/poll
9
+ * endpoints live (/oauth/{discord,google}/cli/{init,token}).
10
+ *
11
+ * The two hosts are intentionally separate today: terminal-orchestrator
12
+ * lives at terminal.xiaotime.ai (its own Caddy block), the main
13
+ * orchestrator at api.xiaotime.ai (or apid.xiaotime.ai on dev). The
14
+ * OAuth callback redirect URI is registered on the Google + Discord
15
+ * OAuth clients at the main orchestrator's host, so login MUST go
16
+ * there.
17
+ *
18
+ * Bug history: 0.2.0 collapsed AUTH_URL into ORCHESTRATOR_URL by
19
+ * mistake, so `xiaotime login` hit terminal.xiaotime.ai/oauth/... and
20
+ * got 404. Restored in 0.2.1 (#6097 PR2 follow-up).
3
21
  */
4
22
  export declare const ORCHESTRATOR_URL: string;
5
23
  export declare const AUTH_URL: string;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,eAAO,MAAM,gBAAgB,QAC4C,CAAC;AAG1E,eAAO,MAAM,QAAQ,QACuC,CAAC;AAQ7D,eAAO,MAAM,MAAM,QAA4B,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,eAAO,MAAM,gBAAgB,QAC4C,CAAC;AAK1E,eAAO,MAAM,QAAQ,QACuC,CAAC;AAQ7D,eAAO,MAAM,MAAM,QAA4B,CAAC"}
package/dist/config.js CHANGED
@@ -1,12 +1,32 @@
1
1
  "use strict";
2
2
  /**
3
3
  * Runtime configuration from environment variables.
4
+ *
5
+ * Two different hosts are involved:
6
+ * - ORCHESTRATOR_URL: terminal-orchestrator, where the `xiaotime dev`
7
+ * session lives (REST + WebSocket). The cli_token is presented to
8
+ * this host as the x-api-key header.
9
+ * - AUTH_URL: the main orchestrator, where the OAuth init/poll
10
+ * endpoints live (/oauth/{discord,google}/cli/{init,token}).
11
+ *
12
+ * The two hosts are intentionally separate today: terminal-orchestrator
13
+ * lives at terminal.xiaotime.ai (its own Caddy block), the main
14
+ * orchestrator at api.xiaotime.ai (or apid.xiaotime.ai on dev). The
15
+ * OAuth callback redirect URI is registered on the Google + Discord
16
+ * OAuth clients at the main orchestrator's host, so login MUST go
17
+ * there.
18
+ *
19
+ * Bug history: 0.2.0 collapsed AUTH_URL into ORCHESTRATOR_URL by
20
+ * mistake, so `xiaotime login` hit terminal.xiaotime.ai/oauth/... and
21
+ * got 404. Restored in 0.2.1 (#6097 PR2 follow-up).
4
22
  */
5
23
  Object.defineProperty(exports, "__esModule", { value: true });
6
24
  exports.WS_URL = exports.AUTH_URL = exports.ORCHESTRATOR_URL = void 0;
7
- // Terminal orchestrator — handles dev sessions (WebSocket + REST)
25
+ // Terminal orchestrator — handles dev sessions (WebSocket + REST).
8
26
  exports.ORCHESTRATOR_URL = process.env.XIAOTIME_ORCHESTRATOR_URL || "https://terminal.xiaotime.ai";
9
- // Main orchestrator — handles Discord OAuth login flow
27
+ // Main orchestrator — handles the OAuth login flow (init + token poll).
28
+ // Defaults to prod; override with XIAOTIME_AUTH_URL=https://apid.xiaotime.ai
29
+ // when testing against dev.
10
30
  exports.AUTH_URL = process.env.XIAOTIME_AUTH_URL || "https://api.xiaotime.ai";
11
31
  function toWsUrl(url) {
12
32
  const parsed = new URL(url);
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,kEAAkE;AACrD,QAAA,gBAAgB,GAC3B,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,8BAA8B,CAAC;AAE1E,uDAAuD;AAC1C,QAAA,QAAQ,GACnB,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,yBAAyB,CAAC;AAE7D,SAAS,OAAO,CAAC,GAAW;IAC1B,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IAChE,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC9C,CAAC;AAEY,QAAA,MAAM,GAAG,OAAO,CAAC,wBAAgB,CAAC,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;;AAEH,mEAAmE;AACtD,QAAA,gBAAgB,GAC3B,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,8BAA8B,CAAC;AAE1E,wEAAwE;AACxE,6EAA6E;AAC7E,4BAA4B;AACf,QAAA,QAAQ,GACnB,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,yBAAyB,CAAC;AAE7D,SAAS,OAAO,CAAC,GAAW;IAC1B,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IAChE,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC9C,CAAC;AAEY,QAAA,MAAM,GAAG,OAAO,CAAC,wBAAgB,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xiaotime",
3
- "version": "0.1.1",
3
+ "version": "0.2.1",
4
4
  "description": "Xiaotime Developer — persistent-memory AI coding assistant",
5
5
  "bin": {
6
6
  "xiaotime": "./dist/index.js"
@@ -16,12 +16,11 @@
16
16
  },
17
17
  "dependencies": {
18
18
  "ws": "^8.18.0",
19
- "diff": "^5.2.0",
19
+ "diff": "^9.0.0",
20
20
  "chalk": "^4.1.2"
21
21
  },
22
22
  "devDependencies": {
23
23
  "@types/ws": "^8.5.12",
24
- "@types/diff": "^5.2.3",
25
24
  "@types/node": "^22.0.0",
26
25
  "typescript": "^5.7.0",
27
26
  "ts-node": "^10.9.2"