@thinkingai/ae-cli 6.0.22 → 6.0.27

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.
Files changed (172) hide show
  1. package/dist/{auth-RDN6D5HU.js → auth-7TQRGLBC.js} +13 -15
  2. package/dist/auth-MEJ642P4.js +13 -0
  3. package/dist/chunk-2NDGFQHW.js +190 -0
  4. package/dist/{chunk-5FBLRSMU.js → chunk-7QQ4233A.js} +3 -3
  5. package/dist/{chunk-U6QPKCN3.js → chunk-AJTH7LT3.js} +10 -116
  6. package/dist/chunk-BXMXMUD7.js +254 -0
  7. package/dist/chunk-C4DH76LX.js +59 -0
  8. package/dist/chunk-GWZ5MYWE.js +209 -0
  9. package/dist/{chunk-E34XH4GW.js → chunk-KCA6BA5D.js} +8 -8
  10. package/dist/{chunk-XE2PI5DS.js → chunk-KGJQCYVC.js} +1 -1
  11. package/dist/chunk-LG5YT7P7.js +59 -0
  12. package/dist/{chunk-2W7HULUD.js → chunk-MDJGDI6K.js} +2 -2
  13. package/dist/{chunk-H52CSLJW.js → chunk-R77JT7XD.js} +53 -6
  14. package/dist/{chunk-WPXHCP4A.js → chunk-YCLVYFK7.js} +52 -9
  15. package/dist/{chunk-4EUZRJPO.js → chunk-YNQFYBDB.js} +102 -14
  16. package/dist/{chunk-YACCPUNQ.js → chunk-ZAOL36CG.js} +1 -1
  17. package/dist/cli-token-TVQRSE46.js +18 -0
  18. package/dist/{client-VTJMUZ4O.js → client-2643Z5AG.js} +3 -3
  19. package/dist/{config-2SDTLGOC.js → config-ZVPARN4R.js} +4 -9
  20. package/dist/index.js +27 -24
  21. package/dist/{metadata-JZ2OTWBK.js → metadata-IPSPQBX3.js} +56 -65
  22. package/dist/metadata-N5REJ7R7.js +411 -0
  23. package/dist/{model-ZYMRN4VS.js → model-T3KZJWLW.js} +2 -2
  24. package/dist/{raw-NGYHAL3F.js → raw-OHSUK42D.js} +4 -4
  25. package/dist/{sync-JVLX6TGW.js → sync-ULT5SECP.js} +3 -3
  26. package/dist/{te-agent-QPZTLHPH.js → te-agent-QLIVKRUN.js} +1146 -61
  27. package/dist/{te-analysis-WWX3Z6RP.js → te-analysis-2U5EPXQC.js} +1213 -341
  28. package/dist/te-analysis-QMZ2UH7F.js +2419 -0
  29. package/dist/{te-audience-UXGHUVBB.js → te-audience-PVMKQAFH.js} +5 -5
  30. package/dist/te-audience-XMRMVD2V.js +599 -0
  31. package/dist/{te-common-7XXH73MF.js → te-common-CFGQXTFV.js} +5 -5
  32. package/dist/te-common-SDB3O2QG.js +130 -0
  33. package/dist/{te-community-QKE67HR2.js → te-community-6A7LKYUH.js} +5 -5
  34. package/dist/te-community-GMWFGILT.js +687 -0
  35. package/dist/te-dataops-6LIPYNGH.js +1864 -0
  36. package/dist/{te-dataops-6W7NNYST.js → te-dataops-Z53CTG2U.js} +90 -68
  37. package/dist/{te-engage-NCFAQFX3.js → te-engage-AGREUOW7.js} +30 -15
  38. package/dist/te-engage-MIIUKY6M.js +1525 -0
  39. package/dist/{te-kb-K5BQYUCM.js → te-kb-KQJ53M3A.js} +4 -4
  40. package/dist/{te-meta-LJZBOSMO.js → te-meta-QLANJ4B4.js} +5 -5
  41. package/dist/te-meta-TOA6FWDE.js +595 -0
  42. package/dist/{te-team-DHK5R7MV.js → te-team-TQGMNHQQ.js} +5 -5
  43. package/package.json +3 -1
  44. package/skills/ae-agent/SKILL.md +158 -189
  45. package/skills/ae-agent/references/accept-skill-share.md +39 -0
  46. package/skills/ae-agent/references/add-attachment.md +57 -0
  47. package/skills/ae-agent/references/add-mcp.md +75 -0
  48. package/skills/ae-agent/references/add-model.md +70 -0
  49. package/skills/ae-agent/references/add-skill.md +71 -0
  50. package/skills/ae-agent/references/approve-skill.md +41 -0
  51. package/skills/ae-agent/references/attachment-stats.md +50 -0
  52. package/skills/ae-agent/references/auto-provision-mcp-credentials.md +57 -0
  53. package/skills/ae-agent/references/cancel-skill-submission.md +39 -0
  54. package/skills/ae-agent/references/copy-skill.md +53 -0
  55. package/skills/ae-agent/references/create-agent.md +71 -0
  56. package/skills/ae-agent/references/create-automation.md +99 -0
  57. package/skills/ae-agent/references/del-agent.md +38 -0
  58. package/skills/ae-agent/references/del-attachment.md +35 -0
  59. package/skills/ae-agent/references/del-mcp.md +35 -0
  60. package/skills/ae-agent/references/del-model.md +37 -0
  61. package/skills/ae-agent/references/del-skill-asset.md +41 -0
  62. package/skills/ae-agent/references/del-skill-reference.md +41 -0
  63. package/skills/ae-agent/references/del-skill-script.md +41 -0
  64. package/skills/ae-agent/references/del-skill.md +36 -0
  65. package/skills/ae-agent/references/edit-skill.md +64 -0
  66. package/skills/ae-agent/references/get-agent.md +37 -0
  67. package/skills/ae-agent/references/get-skill-content.md +36 -0
  68. package/skills/ae-agent/references/list-agents.md +40 -0
  69. package/skills/ae-agent/references/list-attachments.md +42 -0
  70. package/skills/ae-agent/references/list-automations.md +41 -0
  71. package/skills/ae-agent/references/list-mcp-credentials.md +65 -0
  72. package/skills/ae-agent/references/list-mcp-market.md +58 -0
  73. package/skills/ae-agent/references/list-mcps.md +37 -0
  74. package/skills/ae-agent/references/list-models.md +38 -0
  75. package/skills/ae-agent/references/list-skill-assets.md +35 -0
  76. package/skills/ae-agent/references/list-skill-market.md +59 -0
  77. package/skills/ae-agent/references/list-skill-references.md +36 -0
  78. package/skills/ae-agent/references/list-skill-scripts.md +35 -0
  79. package/skills/ae-agent/references/list-skill-shares.md +49 -0
  80. package/skills/ae-agent/references/list-skill-submissions.md +45 -0
  81. package/skills/ae-agent/references/list-skills.md +37 -0
  82. package/skills/ae-agent/references/mcp-auth-disconnect.md +50 -0
  83. package/skills/ae-agent/references/mcp-auth-start.md +61 -0
  84. package/skills/ae-agent/references/mcp-auth-status.md +56 -0
  85. package/skills/ae-agent/references/mcp-stats.md +68 -0
  86. package/skills/ae-agent/references/mcp-token.md +63 -0
  87. package/skills/ae-agent/references/mcp-tools.md +55 -0
  88. package/skills/ae-agent/references/read-skill-asset.md +51 -0
  89. package/skills/ae-agent/references/read-skill-reference.md +50 -0
  90. package/skills/ae-agent/references/read-skill-script.md +51 -0
  91. package/skills/ae-agent/references/reject-skill-share.md +37 -0
  92. package/skills/ae-agent/references/reject-skill.md +42 -0
  93. package/skills/ae-agent/references/rescan-skills.md +44 -0
  94. package/skills/ae-agent/references/set-mcp-credential.md +67 -0
  95. package/skills/ae-agent/references/set-mcp-meta.md +52 -0
  96. package/skills/ae-agent/references/set-skill-meta.md +51 -0
  97. package/skills/ae-agent/references/share-skill.md +50 -0
  98. package/skills/ae-agent/references/submit-skill.md +51 -0
  99. package/skills/ae-agent/references/test-model.md +61 -0
  100. package/skills/ae-agent/references/toggle-mcp.md +39 -0
  101. package/skills/ae-agent/references/toggle-model.md +37 -0
  102. package/skills/ae-agent/references/toggle-skill.md +37 -0
  103. package/skills/ae-agent/references/update-agent.md +71 -0
  104. package/skills/ae-agent/references/update-automation.md +83 -0
  105. package/skills/ae-agent/references/update-mcp.md +79 -0
  106. package/skills/ae-agent/references/update-model.md +77 -0
  107. package/skills/ae-agent/references/upload-skill-asset.md +49 -0
  108. package/skills/ae-agent/references/upload-skill-reference.md +51 -0
  109. package/skills/ae-agent/references/upload-skill-script.md +49 -0
  110. package/skills/ae-agent/references/upload-skill.md +89 -0
  111. package/skills/ae-analysis/SKILL.md +53 -25
  112. package/skills/ae-analysis/references/analysis_gateway_assets.md +129 -0
  113. package/skills/ae-analysis/references/artifact_download.md +17 -0
  114. package/skills/ae-analysis/references/bi_panel_copy.md +15 -0
  115. package/skills/ae-analysis/references/bi_panel_create.md +15 -0
  116. package/skills/ae-analysis/references/bi_panel_delete.md +15 -0
  117. package/skills/ae-analysis/references/bi_panel_get.md +18 -0
  118. package/skills/ae-analysis/references/bi_panel_list.md +15 -0
  119. package/skills/ae-analysis/references/bi_panel_page_data_export.md +25 -0
  120. package/skills/ae-analysis/references/bi_panel_page_data_run.md +15 -0
  121. package/skills/ae-analysis/references/bi_panel_share.md +15 -0
  122. package/skills/ae-analysis/references/bi_panel_update.md +15 -0
  123. package/skills/ae-analysis/references/dashboard_abnormal_get.md +15 -0
  124. package/skills/ae-analysis/references/dashboard_copy.md +17 -0
  125. package/skills/ae-analysis/references/dashboard_create.md +15 -0
  126. package/skills/ae-analysis/references/dashboard_daily_report_send.md +17 -0
  127. package/skills/ae-analysis/references/dashboard_daily_report_update.md +17 -0
  128. package/skills/ae-analysis/references/dashboard_definition_export.md +33 -0
  129. package/skills/ae-analysis/references/dashboard_definition_import.md +15 -0
  130. package/skills/ae-analysis/references/dashboard_delete.md +15 -0
  131. package/skills/ae-analysis/references/dashboard_freeze.md +15 -0
  132. package/skills/ae-analysis/references/dashboard_get.md +15 -0
  133. package/skills/ae-analysis/references/dashboard_handover.md +15 -0
  134. package/skills/ae-analysis/references/dashboard_list.md +15 -0
  135. package/skills/ae-analysis/references/dashboard_report_data_export.md +25 -0
  136. package/skills/ae-analysis/references/dashboard_report_data_run.md +15 -0
  137. package/skills/ae-analysis/references/dashboard_share.md +15 -0
  138. package/skills/ae-analysis/references/dashboard_share_info.md +15 -0
  139. package/skills/ae-analysis/references/dashboard_task_status.md +15 -0
  140. package/skills/ae-analysis/references/dashboard_update.md +16 -0
  141. package/skills/ae-analysis/references/favorite_add.md +15 -0
  142. package/skills/ae-analysis/references/favorite_remove.md +15 -0
  143. package/skills/ae-analysis/references/folder_create.md +15 -0
  144. package/skills/ae-analysis/references/folder_delete.md +15 -0
  145. package/skills/ae-analysis/references/folder_members.md +15 -0
  146. package/skills/ae-analysis/references/folder_share.md +15 -0
  147. package/skills/ae-analysis/references/project_space_create.md +15 -0
  148. package/skills/ae-analysis/references/project_space_delete.md +15 -0
  149. package/skills/ae-analysis/references/project_space_get.md +18 -0
  150. package/skills/ae-analysis/references/project_space_list.md +15 -0
  151. package/skills/ae-analysis/references/project_space_members.md +15 -0
  152. package/skills/ae-analysis/references/project_space_share.md +15 -0
  153. package/skills/ae-analysis/references/public_link_create.md +15 -0
  154. package/skills/ae-analysis/references/public_link_delete.md +15 -0
  155. package/skills/ae-analysis/references/public_link_list.md +15 -0
  156. package/skills/ae-analysis/references/public_link_offline.md +15 -0
  157. package/skills/ae-analysis/references/public_link_update.md +15 -0
  158. package/skills/ae-analysis/references/query_cancel.md +15 -0
  159. package/skills/ae-analysis/references/run_inspect.md +22 -0
  160. package/skills/ae-dataops/references/dataops-flow-create.md +2 -2
  161. package/skills/ae-dataops/references/dataops-flow-monitor.md +3 -3
  162. package/skills/ae-dataops/references/dataops-integration.md +1 -0
  163. package/skills/ae-engage/references/flow-node-config-schema.md +32 -8
  164. package/skills/ae-engage/references/save-flow.md +65 -29
  165. package/skills/ae-engage/references/validate-flow-node-config.md +28 -10
  166. package/skills/ae-generate-tracking-plan/SKILL.md +9 -7
  167. package/skills/ae-metadata/references/metadata_data_table_csv_write.md +5 -3
  168. package/skills/ae-metadata/references/metadata_data_table_sql_write.md +5 -4
  169. package/skills/ae-metadata/references/metadata_property_dimension_table_create_and_bind_csv.md +5 -3
  170. package/dist/auth-I2G7OAU2.js +0 -19
  171. package/dist/chunk-FPE5LGVU.js +0 -105
  172. package/dist/cli-token-6AGEDJF4.js +0 -14
@@ -1,26 +1,25 @@
1
1
  import {
2
2
  printError,
3
3
  printOutput
4
- } from "./chunk-YACCPUNQ.js";
4
+ } from "./chunk-ZAOL36CG.js";
5
5
  import {
6
6
  clearCliToken,
7
7
  mintCliToken
8
- } from "./chunk-FPE5LGVU.js";
8
+ } from "./chunk-2NDGFQHW.js";
9
9
  import {
10
10
  clear,
11
- clearToken,
12
- getAuthStatus,
13
11
  load,
14
12
  resolveHost,
15
13
  save
16
- } from "./chunk-U6QPKCN3.js";
14
+ } from "./chunk-AJTH7LT3.js";
17
15
  import {
18
16
  getFallbackCliToken,
19
17
  loadConfig,
20
18
  logger,
19
+ normalizeUrl,
21
20
  removeHost,
22
21
  saveConfig
23
- } from "./chunk-WPXHCP4A.js";
22
+ } from "./chunk-YCLVYFK7.js";
24
23
 
25
24
  // src/core/device-auth.ts
26
25
  import { execFileSync } from "child_process";
@@ -234,13 +233,14 @@ function resolveAuthHost(program, opts) {
234
233
  }
235
234
  function activateHostAfterLogin(host, explicitHostOverride) {
236
235
  if (!explicitHostOverride) return;
236
+ const normalized = normalizeUrl(host);
237
237
  const config = loadConfig();
238
- if (!config.hosts[host]) {
239
- config.hosts[host] = { label: host };
238
+ if (!config.hosts[normalized]) {
239
+ config.hosts[normalized] = { label: normalized };
240
240
  }
241
- config.activeHost = host;
241
+ config.activeHost = normalized;
242
242
  saveConfig(config);
243
- logger.info(`Active host set to ${host} after login`);
243
+ logger.info(`Active host set to ${normalized} after login`);
244
244
  }
245
245
  async function persistDeviceTokens(host, tokens) {
246
246
  const DEFAULT_EXPIRES_IN = 72e3;
@@ -369,15 +369,14 @@ function registerAuth(program) {
369
369
  authenticated: true,
370
370
  host,
371
371
  source: "sandbox-cli-token",
372
- hasCliToken: true
372
+ hasCliToken: true,
373
+ note: "sandbox-provisioned cli-token.json; no user access token in secure-store"
373
374
  },
374
375
  program.opts().format || "json"
375
376
  );
376
377
  return;
377
378
  }
378
- const tokenStatus = getAuthStatus(host);
379
- const authenticated = tokenStatus.authenticated;
380
- printOutput({ authenticated, host, source: tokenStatus.source ?? "none" }, program.opts().format || "json");
379
+ printOutput({ authenticated: false, host, source: "none" }, program.opts().format || "json");
381
380
  });
382
381
  auth.command("logout").description("Clear stored credentials (access token, CLI token, and host config) for a host (--host or active host)").option("--host <url>", HOST_OPTION_DESC).action((opts) => {
383
382
  const host = resolveAuthHost(program, opts);
@@ -386,7 +385,6 @@ function registerAuth(program) {
386
385
  process.exit(1);
387
386
  }
388
387
  clearCliToken(host);
389
- clearToken(host);
390
388
  clear(host);
391
389
  removeHost(host);
392
390
  process.stderr.write(`[ae-cli] Credentials and config cleared for ${host}
@@ -0,0 +1,13 @@
1
+ import {
2
+ getToken,
3
+ invalidateAccessTokenForRetry,
4
+ resolveHost,
5
+ validateToken
6
+ } from "./chunk-AJTH7LT3.js";
7
+ import "./chunk-YCLVYFK7.js";
8
+ export {
9
+ getToken,
10
+ invalidateAccessTokenForRetry,
11
+ resolveHost,
12
+ validateToken
13
+ };
@@ -0,0 +1,190 @@
1
+ import {
2
+ getToken,
3
+ load,
4
+ loadCliToken,
5
+ save
6
+ } from "./chunk-AJTH7LT3.js";
7
+ import {
8
+ getActiveHost,
9
+ getConfigDir,
10
+ getFallbackCliToken,
11
+ listHosts,
12
+ logger,
13
+ normalizeUrl,
14
+ safeJsonParse,
15
+ safeReadJsonFile
16
+ } from "./chunk-YCLVYFK7.js";
17
+
18
+ // src/core/cli-token.ts
19
+ import fs from "fs";
20
+ import path from "path";
21
+ var CLI_TOKEN_GENERATE_PATH = "/v1/ta/cli/token/generate";
22
+ var _cliTokenCache = /* @__PURE__ */ new Map();
23
+ var _renewedLocalDateByHost = /* @__PURE__ */ new Map();
24
+ var _renewInFlightByHost = /* @__PURE__ */ new Map();
25
+ function renewHostKey(hostUrl) {
26
+ return normalizeUrl(hostUrl);
27
+ }
28
+ function renewStateFilePath() {
29
+ return path.join(getConfigDir(), "cli-token-renew.json");
30
+ }
31
+ function localRenewDate(now = /* @__PURE__ */ new Date()) {
32
+ const y = now.getFullYear();
33
+ const m = String(now.getMonth() + 1).padStart(2, "0");
34
+ const d = String(now.getDate()).padStart(2, "0");
35
+ return `${y}-${m}-${d}`;
36
+ }
37
+ function loadRenewStore() {
38
+ try {
39
+ const file = renewStateFilePath();
40
+ if (!fs.existsSync(file)) return {};
41
+ const data = safeReadJsonFile(file);
42
+ if (!data || typeof data !== "object" || Array.isArray(data)) return {};
43
+ return data;
44
+ } catch {
45
+ return {};
46
+ }
47
+ }
48
+ function saveRenewStore(store) {
49
+ const dir = getConfigDir();
50
+ if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });
51
+ const file = renewStateFilePath();
52
+ if (Object.keys(store).length === 0) {
53
+ try {
54
+ fs.unlinkSync(file);
55
+ } catch {
56
+ }
57
+ return;
58
+ }
59
+ fs.writeFileSync(file, JSON.stringify(store, null, 2), { encoding: "utf8" });
60
+ try {
61
+ fs.chmodSync(file, 384);
62
+ } catch {
63
+ }
64
+ }
65
+ function clearRenewState(hostUrl) {
66
+ if (hostUrl) {
67
+ const key = renewHostKey(hostUrl);
68
+ _renewedLocalDateByHost.delete(key);
69
+ _renewInFlightByHost.delete(key);
70
+ if (key !== hostUrl) {
71
+ _renewedLocalDateByHost.delete(hostUrl);
72
+ _renewInFlightByHost.delete(hostUrl);
73
+ }
74
+ const store = loadRenewStore();
75
+ let changed = false;
76
+ for (const k of /* @__PURE__ */ new Set([key, hostUrl])) {
77
+ if (store[k]) {
78
+ delete store[k];
79
+ changed = true;
80
+ }
81
+ }
82
+ if (changed) {
83
+ saveRenewStore(store);
84
+ }
85
+ return;
86
+ }
87
+ _renewedLocalDateByHost.clear();
88
+ _renewInFlightByHost.clear();
89
+ saveRenewStore({});
90
+ }
91
+ async function generateCliToken(hostUrl) {
92
+ const accessToken = await getToken(hostUrl);
93
+ const base = hostUrl.replace(/\/+$/, "");
94
+ const url = `${base}${CLI_TOKEN_GENERATE_PATH}`;
95
+ const resp = await fetch(url, {
96
+ method: "GET",
97
+ headers: {
98
+ "Authorization": `bearer ${accessToken}`
99
+ }
100
+ });
101
+ if (!resp.ok) {
102
+ throw new Error(`CLI token generate HTTP error: ${resp.status} ${resp.statusText}`);
103
+ }
104
+ const data = safeJsonParse(await resp.text());
105
+ if (data.return_code !== 0) {
106
+ throw new Error(`CLI token generate error: ${data.return_message || "unknown"} (code: ${data.return_code})`);
107
+ }
108
+ const cliToken = data.data?.userSecret;
109
+ if (!cliToken) {
110
+ throw new Error("CLI token generate error: empty userSecret in response");
111
+ }
112
+ return cliToken;
113
+ }
114
+ function persistCliTokenIfPossible(hostUrl, cliToken) {
115
+ const existing = load(hostUrl);
116
+ if (!existing) {
117
+ logger.info(`cli-token: no secure-store session for ${hostUrl}, keeping token in-process only`);
118
+ return;
119
+ }
120
+ save(hostUrl, { ...existing, cliToken });
121
+ }
122
+ function clearPersistedCliToken(hostUrl) {
123
+ const existing = load(hostUrl);
124
+ if (existing?.cliToken) {
125
+ save(hostUrl, { ...existing, cliToken: void 0 });
126
+ }
127
+ }
128
+ async function getCliToken(hostOverride) {
129
+ const hostUrl = hostOverride || getActiveHost();
130
+ let token = _cliTokenCache.get(hostUrl);
131
+ if (!token) {
132
+ const storedToken = loadCliToken(hostUrl);
133
+ if (storedToken) {
134
+ _cliTokenCache.set(hostUrl, storedToken);
135
+ logger.info(`Using persisted CLI token (secure-store) for ${hostUrl}`);
136
+ token = storedToken;
137
+ }
138
+ }
139
+ if (!token) {
140
+ const fallbackToken = getFallbackCliToken(hostUrl);
141
+ if (fallbackToken) {
142
+ _cliTokenCache.set(hostUrl, fallbackToken);
143
+ logger.info(`Using sandbox-provisioned CLI token (fallback file) for ${hostUrl}`);
144
+ token = fallbackToken;
145
+ }
146
+ }
147
+ if (!token) {
148
+ token = await mintCliToken(hostUrl);
149
+ }
150
+ return token;
151
+ }
152
+ async function mintCliToken(hostUrl) {
153
+ logger.info(`Generating CLI token for ${hostUrl}`);
154
+ const cliToken = await generateCliToken(hostUrl);
155
+ _cliTokenCache.set(hostUrl, cliToken);
156
+ persistCliTokenIfPossible(hostUrl, cliToken);
157
+ logger.info(`CLI token generated, cached, and persisted for ${hostUrl}`);
158
+ return cliToken;
159
+ }
160
+ function clearCliToken(hostUrl) {
161
+ if (hostUrl) {
162
+ _cliTokenCache.delete(hostUrl);
163
+ clearPersistedCliToken(hostUrl);
164
+ clearRenewState(hostUrl);
165
+ return;
166
+ }
167
+ _cliTokenCache.clear();
168
+ clearRenewState();
169
+ for (const { url } of listHosts()) {
170
+ clearPersistedCliToken(url);
171
+ }
172
+ }
173
+ function setCliTokenManual(token, hostUrl) {
174
+ _cliTokenCache.set(hostUrl, token);
175
+ persistCliTokenIfPossible(hostUrl, token);
176
+ logger.info(`CLI token set for ${hostUrl}`);
177
+ }
178
+ function _resetRenewMemoryForTest() {
179
+ _renewedLocalDateByHost.clear();
180
+ _renewInFlightByHost.clear();
181
+ }
182
+
183
+ export {
184
+ localRenewDate,
185
+ getCliToken,
186
+ mintCliToken,
187
+ clearCliToken,
188
+ setCliTokenManual,
189
+ _resetRenewMemoryForTest
190
+ };
@@ -1,18 +1,18 @@
1
1
  import {
2
2
  getAnalysisMappingPathForClusterMode
3
- } from "./chunk-XE2PI5DS.js";
3
+ } from "./chunk-KGJQCYVC.js";
4
4
  import {
5
5
  PermissionError
6
6
  } from "./chunk-NOO24N7W.js";
7
7
  import {
8
8
  clearCliToken,
9
9
  getCliToken
10
- } from "./chunk-FPE5LGVU.js";
10
+ } from "./chunk-2NDGFQHW.js";
11
11
  import {
12
12
  getActiveHost,
13
13
  logger,
14
14
  safeJsonParse
15
- } from "./chunk-WPXHCP4A.js";
15
+ } from "./chunk-YCLVYFK7.js";
16
16
 
17
17
  // src/core/mcp.ts
18
18
  async function permissionMessage(resp) {
@@ -2,13 +2,9 @@ import {
2
2
  getActiveHost,
3
3
  getConfigDir,
4
4
  logger,
5
- safeJsonParse,
6
- safeReadJsonFile
7
- } from "./chunk-WPXHCP4A.js";
8
-
9
- // src/core/auth.ts
10
- import fs2 from "fs";
11
- import path2 from "path";
5
+ normalizeUrl,
6
+ safeJsonParse
7
+ } from "./chunk-YCLVYFK7.js";
12
8
 
13
9
  // src/core/secure-store.ts
14
10
  import crypto from "crypto";
@@ -236,24 +232,8 @@ var SecureStoreAuthError = class extends Error {
236
232
  };
237
233
 
238
234
  // src/core/auth.ts
239
- var TOKENS_FILE = path2.join(getConfigDir(), "tokens.json");
240
- var LEGACY_MCP_TOKENS_FILE = path2.join(getConfigDir(), "mcp-tokens.json");
241
- var LEGACY_DIR = path2.join(process.env.HOME || "", ".te-mcp");
242
- (function removeLegacyMcpTokens() {
243
- try {
244
- if (fs2.existsSync(LEGACY_MCP_TOKENS_FILE)) {
245
- fs2.rmSync(LEGACY_MCP_TOKENS_FILE);
246
- logger.info("auth: removed legacy mcp-tokens.json (plaintext MCP token file)");
247
- }
248
- } catch {
249
- }
250
- })();
251
- function ensureDir() {
252
- const dir = getConfigDir();
253
- if (!fs2.existsSync(dir)) fs2.mkdirSync(dir, { recursive: true });
254
- }
255
235
  function resolveHost(hostOverride) {
256
- if (hostOverride) return hostOverride;
236
+ if (hostOverride) return normalizeUrl(hostOverride);
257
237
  return getActiveHost();
258
238
  }
259
239
  async function validateToken(token, hostUrl) {
@@ -270,89 +250,11 @@ async function validateToken(token, hostUrl) {
270
250
  return false;
271
251
  }
272
252
  }
273
- function loadAllTokens() {
274
- try {
275
- const legacyTokens = path2.join(LEGACY_DIR, "tokens.json");
276
- if (fs2.existsSync(legacyTokens) && !fs2.existsSync(TOKENS_FILE)) {
277
- const data = safeReadJsonFile(legacyTokens);
278
- const migrated = {};
279
- for (const [key, val] of Object.entries(data)) {
280
- const url = key.startsWith("http") ? key : `https://${key}`;
281
- migrated[url] = val;
282
- }
283
- ensureDir();
284
- fs2.writeFileSync(TOKENS_FILE, JSON.stringify(migrated, null, 2));
285
- return migrated;
286
- }
287
- if (fs2.existsSync(TOKENS_FILE)) {
288
- const data = safeReadJsonFile(TOKENS_FILE);
289
- if (data && typeof data === "object" && !Array.isArray(data) && Object.keys(data).length === 0) {
290
- try {
291
- fs2.unlinkSync(TOKENS_FILE);
292
- } catch {
293
- }
294
- return {};
295
- }
296
- let needsMigration = false;
297
- const migrated = {};
298
- for (const [key, val] of Object.entries(data)) {
299
- if (!key.startsWith("http")) {
300
- migrated[`https://${key}`] = val;
301
- needsMigration = true;
302
- } else {
303
- migrated[key] = val;
304
- }
305
- }
306
- if (needsMigration) {
307
- fs2.writeFileSync(TOKENS_FILE, JSON.stringify(migrated, null, 2));
308
- return migrated;
309
- }
310
- return data;
311
- }
312
- } catch {
313
- }
314
- return {};
315
- }
316
- function saveAllTokens(tokens) {
317
- ensureDir();
318
- if (Object.keys(tokens).length === 0) {
319
- try {
320
- fs2.unlinkSync(TOKENS_FILE);
321
- } catch {
322
- }
323
- return;
324
- }
325
- fs2.writeFileSync(TOKENS_FILE, JSON.stringify(tokens, null, 2));
326
- try {
327
- fs2.chmodSync(TOKENS_FILE, 384);
328
- } catch {
329
- }
330
- }
331
- function loadToken(hostUrl) {
332
- const tokens = loadAllTokens();
333
- const entry = tokens[hostUrl];
334
- if (!entry || !entry.token) return null;
335
- return { host: hostUrl, token: entry.token, updatedAt: entry.updatedAt };
336
- }
337
- function saveToken(token, hostUrl) {
338
- const tokens = loadAllTokens();
339
- tokens[hostUrl] = { token, updatedAt: (/* @__PURE__ */ new Date()).toISOString() };
340
- saveAllTokens(tokens);
341
- logger.info(`Token saved for ${hostUrl}`);
342
- }
343
- function clearToken(hostUrl) {
344
- const tokens = loadAllTokens();
345
- delete tokens[hostUrl];
346
- saveAllTokens(tokens);
347
- }
348
- function getAuthStatus(hostUrl) {
349
- const cached = loadToken(hostUrl);
350
- if (cached) {
351
- const ageMs = Date.now() - new Date(cached.updatedAt).getTime();
352
- const hours = Math.round(ageMs / 36e5);
353
- return { authenticated: true, host: hostUrl, tokenAge: `${hours}h ago`, source: "cache" };
354
- }
355
- return { authenticated: false, host: hostUrl };
253
+ function invalidateAccessTokenForRetry(hostUrl) {
254
+ const payload = load(hostUrl);
255
+ if (!payload) return;
256
+ save(hostUrl, { ...payload, accessExpiresAt: (/* @__PURE__ */ new Date(0)).toISOString() });
257
+ logger.info(`auth: marked access token stale for retry on ${hostUrl}`);
356
258
  }
357
259
  async function getToken(hostUrl) {
358
260
  if (!hostUrl) {
@@ -361,11 +263,6 @@ async function getToken(hostUrl) {
361
263
  Run: ae-cli config set-host <url>`
362
264
  );
363
265
  }
364
- const cached = loadToken(hostUrl);
365
- if (cached && cached.token) {
366
- logger.info(`Using cached token for ${hostUrl}`);
367
- return cached.token;
368
- }
369
266
  try {
370
267
  const secureToken = await getValidAccessToken(hostUrl);
371
268
  logger.info(`Using secure-store token for ${hostUrl}`);
@@ -391,9 +288,6 @@ export {
391
288
  SecureStoreAuthError,
392
289
  resolveHost,
393
290
  validateToken,
394
- loadToken,
395
- saveToken,
396
- clearToken,
397
- getAuthStatus,
291
+ invalidateAccessTokenForRetry,
398
292
  getToken
399
293
  };