@undefineds.co/linx 0.3.5 → 0.3.8

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/README.md +58 -23
  2. package/dist/generated/version.js +1 -1
  3. package/dist/generated/version.js.map +1 -1
  4. package/dist/index.js +336 -162
  5. package/dist/index.js.map +1 -1
  6. package/dist/lib/account-session.js +4 -8
  7. package/dist/lib/account-session.js.map +1 -1
  8. package/dist/lib/ai-command.js +228 -178
  9. package/dist/lib/ai-command.js.map +1 -1
  10. package/dist/lib/auto-mode/archive.js +38 -7
  11. package/dist/lib/auto-mode/archive.js.map +1 -1
  12. package/dist/lib/auto-mode/auth.js.map +1 -1
  13. package/dist/lib/auto-mode/display.js +71 -45
  14. package/dist/lib/auto-mode/display.js.map +1 -1
  15. package/dist/lib/auto-mode/format.js +9 -7
  16. package/dist/lib/auto-mode/format.js.map +1 -1
  17. package/dist/lib/auto-mode/hooks/claude.js +12 -2
  18. package/dist/lib/auto-mode/hooks/claude.js.map +1 -1
  19. package/dist/lib/auto-mode/hooks/codex.js +17 -7
  20. package/dist/lib/auto-mode/hooks/codex.js.map +1 -1
  21. package/dist/lib/auto-mode/hooks/index.js +28 -8
  22. package/dist/lib/auto-mode/hooks/index.js.map +1 -1
  23. package/dist/lib/auto-mode/pod-ai.js +20 -37
  24. package/dist/lib/auto-mode/pod-ai.js.map +1 -1
  25. package/dist/lib/auto-mode/pod-approval.js +124 -195
  26. package/dist/lib/auto-mode/pod-approval.js.map +1 -1
  27. package/dist/lib/auto-mode/pod-persistence.js +169 -90
  28. package/dist/lib/auto-mode/pod-persistence.js.map +1 -1
  29. package/dist/lib/auto-mode/runner.js +683 -81
  30. package/dist/lib/auto-mode/runner.js.map +1 -1
  31. package/dist/lib/auto-mode/secretary.js +186 -41
  32. package/dist/lib/auto-mode/secretary.js.map +1 -1
  33. package/dist/lib/auto-mode-command.js +32 -32
  34. package/dist/lib/auto-mode-command.js.map +1 -1
  35. package/dist/lib/chat-api.js +242 -50
  36. package/dist/lib/chat-api.js.map +1 -1
  37. package/dist/lib/codex-plugin/bridge.js +164 -17
  38. package/dist/lib/codex-plugin/bridge.js.map +1 -1
  39. package/dist/lib/codex-plugin/codex-native-proxy.js +370 -34
  40. package/dist/lib/codex-plugin/codex-native-proxy.js.map +1 -1
  41. package/dist/lib/credentials-store.js +33 -42
  42. package/dist/lib/credentials-store.js.map +1 -1
  43. package/dist/lib/linx-cloud-errors.js +61 -0
  44. package/dist/lib/linx-cloud-errors.js.map +1 -0
  45. package/dist/lib/linx-tui-contract.js +8 -5
  46. package/dist/lib/linx-tui-contract.js.map +1 -1
  47. package/dist/lib/login-command.js +9 -2
  48. package/dist/lib/login-command.js.map +1 -1
  49. package/dist/lib/models.js +3 -20
  50. package/dist/lib/models.js.map +1 -1
  51. package/dist/lib/oidc-auth.js +143 -17
  52. package/dist/lib/oidc-auth.js.map +1 -1
  53. package/dist/lib/oidc-session-storage.js +2 -6
  54. package/dist/lib/oidc-session-storage.js.map +1 -1
  55. package/dist/lib/pi-adapter/auto-input-controller.js +988 -0
  56. package/dist/lib/pi-adapter/auto-input-controller.js.map +1 -0
  57. package/dist/lib/pi-adapter/backend-command.js +2 -0
  58. package/dist/lib/pi-adapter/backend-command.js.map +1 -0
  59. package/dist/lib/pi-adapter/backend-credentials.js +80 -0
  60. package/dist/lib/pi-adapter/backend-credentials.js.map +1 -0
  61. package/dist/lib/pi-adapter/branding.js +246 -108
  62. package/dist/lib/pi-adapter/branding.js.map +1 -1
  63. package/dist/lib/pi-adapter/control-state.js +72 -0
  64. package/dist/lib/pi-adapter/control-state.js.map +1 -0
  65. package/dist/lib/pi-adapter/interactive.js +2634 -30
  66. package/dist/lib/pi-adapter/interactive.js.map +1 -1
  67. package/dist/lib/pi-adapter/pod-approval.js +382 -210
  68. package/dist/lib/pi-adapter/pod-approval.js.map +1 -1
  69. package/dist/lib/pi-adapter/pod-mirror-mapping.js +71 -17
  70. package/dist/lib/pi-adapter/pod-mirror-mapping.js.map +1 -1
  71. package/dist/lib/pi-adapter/pod-mirror.js +531 -64
  72. package/dist/lib/pi-adapter/pod-mirror.js.map +1 -1
  73. package/dist/lib/pi-adapter/pod-native.js +81 -85
  74. package/dist/lib/pi-adapter/pod-native.js.map +1 -1
  75. package/dist/lib/pi-adapter/pod-status-output.js +54 -0
  76. package/dist/lib/pi-adapter/pod-status-output.js.map +1 -0
  77. package/dist/lib/pi-adapter/runtime.js +458 -228
  78. package/dist/lib/pi-adapter/runtime.js.map +1 -1
  79. package/dist/lib/pi-adapter/session-control.js +509 -0
  80. package/dist/lib/pi-adapter/session-control.js.map +1 -0
  81. package/dist/lib/pi-adapter/session.js +35 -22
  82. package/dist/lib/pi-adapter/session.js.map +1 -1
  83. package/dist/lib/pi-adapter/stream.js +89 -32
  84. package/dist/lib/pi-adapter/stream.js.map +1 -1
  85. package/dist/lib/pi-adapter/sync-recovery.js +89 -0
  86. package/dist/lib/pi-adapter/sync-recovery.js.map +1 -0
  87. package/dist/lib/pi-adapter/web-fetch.js +13 -14
  88. package/dist/lib/pi-adapter/web-fetch.js.map +1 -1
  89. package/dist/lib/pod-chat-store.js +254 -78
  90. package/dist/lib/pod-chat-store.js.map +1 -1
  91. package/dist/lib/pod-data-session.js +156 -35
  92. package/dist/lib/pod-data-session.js.map +1 -1
  93. package/dist/lib/solid-auth-store.js +27 -0
  94. package/dist/lib/solid-auth-store.js.map +1 -0
  95. package/dist/lib/solid-auth.js +2 -4
  96. package/dist/lib/solid-auth.js.map +1 -1
  97. package/dist/lib/solid-client-credentials-login.js +100 -0
  98. package/dist/lib/solid-client-credentials-login.js.map +1 -0
  99. package/dist/lib/solid-local-store.js +31 -0
  100. package/dist/lib/solid-local-store.js.map +1 -0
  101. package/dist/lib/symphony/archive.js +328 -18
  102. package/dist/lib/symphony/archive.js.map +1 -1
  103. package/dist/lib/symphony/pod-projection.js +2222 -0
  104. package/dist/lib/symphony/pod-projection.js.map +1 -0
  105. package/dist/lib/symphony-command.js +602 -178
  106. package/dist/lib/symphony-command.js.map +1 -1
  107. package/dist/lib/sync-checkpoint-store.js +74 -0
  108. package/dist/lib/sync-checkpoint-store.js.map +1 -0
  109. package/dist/skills/symphony/SKILL.md +665 -0
  110. package/package.json +15 -9
  111. package/vendor/agent-runtime/dist/agent-runtime.d.ts +137 -0
  112. package/vendor/agent-runtime/dist/agent-runtime.js +211 -0
  113. package/vendor/agent-runtime/dist/auto-mode.d.ts +78 -13
  114. package/vendor/agent-runtime/dist/auto-mode.js +288 -31
  115. package/vendor/agent-runtime/dist/control-plane.d.ts +28 -0
  116. package/vendor/agent-runtime/dist/control-plane.js +79 -0
  117. package/vendor/agent-runtime/dist/file-sync.d.ts +157 -0
  118. package/vendor/agent-runtime/dist/file-sync.js +314 -0
  119. package/vendor/agent-runtime/dist/index.d.ts +7 -0
  120. package/vendor/agent-runtime/dist/index.js +7 -0
  121. package/vendor/agent-runtime/dist/reconciler.d.ts +117 -0
  122. package/vendor/agent-runtime/dist/reconciler.js +361 -0
  123. package/vendor/agent-runtime/dist/symphony.d.ts +128 -8
  124. package/vendor/agent-runtime/dist/symphony.js +362 -57
  125. package/vendor/agent-runtime/dist/sync.d.ts +271 -0
  126. package/vendor/agent-runtime/dist/sync.js +550 -0
  127. package/vendor/agent-runtime/dist/thread-reconciler-controller.d.ts +58 -0
  128. package/vendor/agent-runtime/dist/thread-reconciler-controller.js +137 -0
  129. package/vendor/agent-runtime/dist/turn-controller.js +2 -2
  130. package/vendor/agent-runtime/dist/wake-scheduler.d.ts +67 -0
  131. package/vendor/agent-runtime/dist/wake-scheduler.js +194 -0
  132. package/vendor/agent-runtime/package.json +8 -1
  133. package/vendor/pi-web-access/CHANGELOG.md +387 -0
  134. package/vendor/pi-web-access/LICENSE +21 -0
  135. package/vendor/pi-web-access/README.md +352 -0
  136. package/vendor/pi-web-access/activity.ts +101 -0
  137. package/vendor/pi-web-access/banner.png +0 -0
  138. package/vendor/pi-web-access/chrome-cookies.ts +322 -0
  139. package/vendor/pi-web-access/code-search.ts +107 -0
  140. package/vendor/pi-web-access/curator-page.ts +3359 -0
  141. package/vendor/pi-web-access/curator-server.ts +605 -0
  142. package/vendor/pi-web-access/exa.ts +520 -0
  143. package/vendor/pi-web-access/extract.ts +641 -0
  144. package/vendor/pi-web-access/gemini-api.ts +112 -0
  145. package/vendor/pi-web-access/gemini-search.ts +361 -0
  146. package/vendor/pi-web-access/gemini-url-context.ts +126 -0
  147. package/vendor/pi-web-access/gemini-web-config.ts +52 -0
  148. package/vendor/pi-web-access/gemini-web.ts +396 -0
  149. package/vendor/pi-web-access/github-api.ts +196 -0
  150. package/vendor/pi-web-access/github-extract.ts +634 -0
  151. package/vendor/pi-web-access/index.ts +2346 -0
  152. package/vendor/pi-web-access/package.json +45 -0
  153. package/vendor/pi-web-access/pdf-extract.ts +192 -0
  154. package/vendor/pi-web-access/perplexity.ts +195 -0
  155. package/vendor/pi-web-access/pi-web-fetch-demo.mp4 +0 -0
  156. package/vendor/pi-web-access/rsc-extract.ts +338 -0
  157. package/vendor/pi-web-access/skills/librarian/SKILL.md +195 -0
  158. package/vendor/pi-web-access/storage.ts +72 -0
  159. package/vendor/pi-web-access/summary-review.ts +276 -0
  160. package/vendor/pi-web-access/test/gemini-web-cookie-opt-in.test.mjs +41 -0
  161. package/vendor/pi-web-access/test/pdf-extract.test.mjs +95 -0
  162. package/vendor/pi-web-access/utils.ts +44 -0
  163. package/vendor/pi-web-access/video-extract.ts +378 -0
  164. package/vendor/pi-web-access/youtube-extract.ts +310 -0
  165. package/dist/lib/pi-adapter/auth.js +0 -68
  166. package/dist/lib/pi-adapter/auth.js.map +0 -1
  167. package/dist/lib/pi-adapter/pod-tools.js +0 -140
  168. package/dist/lib/pi-adapter/pod-tools.js.map +0 -1
  169. package/dist/skills/drizzle-solid/SKILL.md +0 -340
  170. package/dist/skills/pod-storage/SKILL.md +0 -100
  171. package/dist/skills/solid-modeling/SKILL.md +0 -274
  172. package/dist/skills/xpod-componentsjs/SKILL.md +0 -284
@@ -1,16 +1,6 @@
1
1
  import { chmodSync, existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync } from 'node:fs';
2
- import { homedir } from 'node:os';
3
- import { join } from 'node:path';
4
- import { isLinxClientCredentialsSecrets, LINX_CONFIG_FILE_NAME, LINX_HOME_DIRNAME, LINX_SECRETS_FILE_NAME, parseLinxClientConfig, parseLinxClientSecrets, } from '@undefineds.co/models/client';
5
- function linxDir() {
6
- return join(homedir(), LINX_HOME_DIRNAME);
7
- }
8
- export function getConfigPath() {
9
- return join(linxDir(), LINX_CONFIG_FILE_NAME);
10
- }
11
- export function getSecretsPath() {
12
- return join(linxDir(), LINX_SECRETS_FILE_NAME);
13
- }
2
+ import { isLinxClientCredentialsSecrets, parseLinxClientConfig, parseLinxClientSecrets, } from '@undefineds.co/models/client';
3
+ import { getSolidAuthCredentialsPath, getSolidAuthDir } from './solid-auth-store.js';
14
4
  function readJson(filePath) {
15
5
  try {
16
6
  return JSON.parse(readFileSync(filePath, 'utf-8'));
@@ -19,22 +9,38 @@ function readJson(filePath) {
19
9
  return null;
20
10
  }
21
11
  }
22
- function credentialDirs() {
23
- return [linxDir()];
12
+ function parseStoredCredentialsEnvelope(raw) {
13
+ const config = parseLinxClientConfig(raw);
14
+ if (!config || typeof raw !== 'object' || raw === null || !('secrets' in raw)) {
15
+ return null;
16
+ }
17
+ const secrets = parseLinxClientSecrets(raw.secrets);
18
+ if (!secrets) {
19
+ return null;
20
+ }
21
+ return {
22
+ url: config.url,
23
+ webId: config.webId,
24
+ authType: config.authType,
25
+ sourceDir: getSolidAuthDir(),
26
+ secrets,
27
+ };
24
28
  }
25
29
  export function saveCredentials(creds) {
26
- const dir = linxDir();
30
+ const dir = getSolidAuthDir();
27
31
  mkdirSync(dir, { recursive: true });
28
- writeFileSync(getConfigPath(), `${JSON.stringify({ url: creds.url, webId: creds.webId, authType: creds.authType }, null, 2)}\n`, 'utf-8');
29
- chmodSync(getConfigPath(), 0o644);
30
- writeFileSync(getSecretsPath(), `${JSON.stringify(creds.secrets, null, 2)}\n`, 'utf-8');
31
- chmodSync(getSecretsPath(), 0o600);
32
+ writeFileSync(getSolidAuthCredentialsPath(), `${JSON.stringify({
33
+ url: creds.url,
34
+ webId: creds.webId,
35
+ authType: creds.authType,
36
+ secrets: creds.secrets,
37
+ }, null, 2)}\n`, 'utf-8');
38
+ chmodSync(getSolidAuthCredentialsPath(), 0o600);
32
39
  }
33
40
  export function clearCredentials() {
34
- for (const path of [getConfigPath(), getSecretsPath()]) {
35
- if (existsSync(path)) {
36
- unlinkSync(path);
37
- }
41
+ const path = getSolidAuthCredentialsPath();
42
+ if (existsSync(path)) {
43
+ unlinkSync(path);
38
44
  }
39
45
  }
40
46
  export function isClientCredentials(secrets) {
@@ -56,25 +62,10 @@ export function getOidcOAuthSecrets(creds) {
56
62
  : null;
57
63
  }
58
64
  export function loadCredentials() {
59
- for (const sourceDir of credentialDirs()) {
60
- const configPath = join(sourceDir, LINX_CONFIG_FILE_NAME);
61
- const secretsPath = join(sourceDir, LINX_SECRETS_FILE_NAME);
62
- if (!existsSync(configPath) || !existsSync(secretsPath)) {
63
- continue;
64
- }
65
- const config = parseLinxClientConfig(readJson(configPath));
66
- const secrets = parseLinxClientSecrets(readJson(secretsPath));
67
- if (!config || !secrets) {
68
- continue;
69
- }
70
- return {
71
- url: config.url,
72
- webId: config.webId,
73
- authType: config.authType,
74
- sourceDir,
75
- secrets,
76
- };
65
+ const path = getSolidAuthCredentialsPath();
66
+ if (!existsSync(path)) {
67
+ return null;
77
68
  }
78
- return null;
69
+ return parseStoredCredentialsEnvelope(readJson(path));
79
70
  }
80
71
  //# sourceMappingURL=credentials-store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"credentials-store.js","sourceRoot":"","sources":["../../src/lib/credentials-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"credentials-store.js","sourceRoot":"","sources":["../../src/lib/credentials-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ export function normalizeMisclassifiedCloudCompletionPodTimeoutMessage(errorOrMessage) {
2
+ const message = stripAnsi(errorOrMessage instanceof Error ? errorOrMessage.message : String(errorOrMessage));
3
+ const match = message.match(/LinX Pod request timed out after (\d+)s:\s+\w+\s+(https?:\/\/[^\s"'<>]+)/);
4
+ if (!match) {
5
+ return null;
6
+ }
7
+ const [, seconds, rawUrl] = match;
8
+ try {
9
+ const target = new URL(trimTrailingPunctuation(rawUrl));
10
+ if (!isCloudChatCompletionsPath(target.pathname)) {
11
+ return null;
12
+ }
13
+ }
14
+ catch {
15
+ return null;
16
+ }
17
+ return formatLinxCloudTransientMessage(`Request exceeded ${seconds}s.`);
18
+ }
19
+ export function formatLinxCliErrorMessage(errorOrMessage) {
20
+ return normalizeMisclassifiedCloudCompletionPodTimeoutMessage(errorOrMessage)
21
+ ?? (errorOrMessage instanceof Error ? errorOrMessage.message : String(errorOrMessage));
22
+ }
23
+ export function formatLinxCloudTransientMessage(detail) {
24
+ const suffix = detail?.trim();
25
+ return suffix
26
+ ? `LinX Cloud is temporarily unavailable. ${suffix} Please retry shortly.`
27
+ : 'LinX Cloud is temporarily unavailable. Please retry shortly.';
28
+ }
29
+ export function isLinxCloudTransientMessage(errorOrMessage) {
30
+ const normalized = stripAnsi(errorOrMessage instanceof Error ? errorOrMessage.message : String(errorOrMessage)).toLowerCase();
31
+ return normalized.includes('linx cloud is temporarily unavailable')
32
+ || normalized.includes('chat request failed (500): fetch failed')
33
+ || normalized.includes('outgoing request timed out')
34
+ || (normalized.includes('502') && normalized.includes('bad gateway'))
35
+ || (normalized.includes('503') && normalized.includes('service unavailable'))
36
+ || (normalized.includes('504') && normalized.includes('gateway timeout'));
37
+ }
38
+ export function isLinxCloudAuthExpiredMessage(errorOrMessage) {
39
+ const normalized = stripAnsi(errorOrMessage instanceof Error ? errorOrMessage.message : String(errorOrMessage)).toLowerCase();
40
+ return normalized.includes('linx cloud login expired')
41
+ || normalized.includes('invalid solid token')
42
+ || (normalized.includes('401') && normalized.includes('unauthorized'));
43
+ }
44
+ function isCloudChatCompletionsPath(pathname) {
45
+ const segments = normalizePathname(pathname).split('/').filter(Boolean);
46
+ return segments.length >= 3
47
+ && /^v\d+$/.test(segments.at(-3) ?? '')
48
+ && segments.at(-2) === 'chat'
49
+ && segments.at(-1) === 'completions';
50
+ }
51
+ function normalizePathname(pathname) {
52
+ const normalized = pathname.endsWith('/') ? pathname : `${pathname}/`;
53
+ return normalized.replace(/\/{2,}/g, '/');
54
+ }
55
+ function stripAnsi(text) {
56
+ return text.replace(/\x1b\[[0-?]*[ -/]*[@-~]/g, '');
57
+ }
58
+ function trimTrailingPunctuation(url) {
59
+ return url.replace(/[),.;:!?]+$/g, '');
60
+ }
61
+ //# sourceMappingURL=linx-cloud-errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linx-cloud-errors.js","sourceRoot":"","sources":["../../src/lib/linx-cloud-errors.ts"],"names":[],"mappings":"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"}
@@ -10,16 +10,19 @@ export const LINX_TUI_RUNNING_FOOTER_HINT = `ctrl+c interrupt · ${LINX_TUI_KEYM
10
10
  export const LINX_TUI_RUNNING_DRAFT_HINT = 'enter steer · shift+enter newline · alt+enter follow-up';
11
11
  export const LINX_TUI_AUTO_MODE_HEADER_HINT = ' enter send | ctrl+l model | alt+up restore | ctrl+o tools | ctrl+c clear / double quit ';
12
12
  export const LINX_TUI_AUTO_MODE_READY_NOTE = `Use ${LINX_TUI_KEYMAP_COMMAND} for ${LINX_TUI_KEYMAP_LABEL}. Type ${LINX_TUI_EXIT_COMMAND} to leave this session.`;
13
- export const LINX_TUI_AUTO_MODE_HELP_ACTIVITY = `Keymap: enter send · ctrl+l model · /manual|/smart|/auto · ${LINX_TUI_EXIT_COMMAND}`;
13
+ export const LINX_TUI_AUTO_MODE_HELP_ACTIVITY = `Keymap: enter send · ctrl+l model · /auto on|off|status · /goal <peer-command> · /rewind [turns] · ${LINX_TUI_EXIT_COMMAND}`;
14
14
  export const LINX_TUI_AUTO_MODE_HELP_TEXT = [
15
15
  `${LINX_TUI_KEYMAP_COMMAND} ${LINX_TUI_KEYMAP_LABEL}`,
16
16
  `${LINX_TUI_LOGIN_COMMAND} refresh LinX Cloud login`,
17
17
  `${LINX_TUI_LOGOUT_COMMAND} clear LinX Cloud login`,
18
- `${LINX_TUI_EXIT_COMMAND} exit auto-mode session`,
18
+ `${LINX_TUI_EXIT_COMMAND} leave this session`,
19
19
  '/model <id> switch backend model',
20
- '/manual wait for user approval',
21
- '/smart let AI secretary handle clear low-risk approvals',
22
- '/auto enable automatic AI secretary approvals',
20
+ '/auto status show whether auto is active',
21
+ '/auto on let Secretary drive and ask when blocked',
22
+ '/auto off return to direct user-driven chat',
23
+ '/goal <peer-command> send a goal command to the current chat peer',
24
+ '/rewind [turns] move the active session branch before recent user turns',
25
+ '/symphony on|off|status switch current chat peer: Secretary vs worker/backend',
23
26
  '/debug on|off protocol view',
24
27
  '',
25
28
  ].join('\n');
@@ -1 +1 @@
1
- {"version":3,"file":"linx-tui-contract.js","sourceRoot":"","sources":["../../src/lib/linx-tui-contract.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAU,CAAA;AACjD,MAAM,CAAC,MAAM,qBAAqB,GAAG,QAAQ,CAAA;AAC7C,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAO,CAAA;AAC5C,MAAM,CAAC,MAAM,sBAAsB,GAAG,QAAQ,CAAA;AAC9C,MAAM,CAAC,MAAM,uBAAuB,GAAG,SAAS,CAAA;AAEhD,MAAM,CAAC,MAAM,0BAA0B,GAAG,gBAAgB,uBAAuB,IAAI,qBAAqB,MAAM,qBAAqB,EAAE,CAAA;AACvI,MAAM,CAAC,MAAM,0BAA0B,GAAG,+BAA+B,uBAAuB,IAAI,qBAAqB,MAAM,qBAAqB,EAAE,CAAA;AACtJ,MAAM,CAAC,MAAM,yBAAyB,GAAG,wDAAwD,CAAA;AACjG,MAAM,CAAC,MAAM,4BAA4B,GAAG,sBAAsB,uBAAuB,IAAI,qBAAqB,MAAM,qBAAqB,EAAE,CAAA;AAC/I,MAAM,CAAC,MAAM,2BAA2B,GAAG,yDAAyD,CAAA;AACpG,MAAM,CAAC,MAAM,8BAA8B,GAAG,0FAA0F,CAAA;AACxI,MAAM,CAAC,MAAM,6BAA6B,GAAG,OAAO,uBAAuB,QAAQ,qBAAqB,UAAU,qBAAqB,yBAAyB,CAAA;AAChK,MAAM,CAAC,MAAM,gCAAgC,GAAG,8DAA8D,qBAAqB,EAAE,CAAA;AACrI,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,GAAG,uBAAuB,IAAI,qBAAqB,EAAE;IACrD,GAAG,sBAAsB,2BAA2B;IACpD,GAAG,uBAAuB,yBAAyB;IACnD,GAAG,qBAAqB,yBAAyB;IACjD,kCAAkC;IAClC,gCAAgC;IAChC,yDAAyD;IACzD,+CAA+C;IAC/C,6BAA6B;IAC7B,EAAE;CACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA"}
1
+ {"version":3,"file":"linx-tui-contract.js","sourceRoot":"","sources":["../../src/lib/linx-tui-contract.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAU,CAAA;AACjD,MAAM,CAAC,MAAM,qBAAqB,GAAG,QAAQ,CAAA;AAC7C,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAO,CAAA;AAC5C,MAAM,CAAC,MAAM,sBAAsB,GAAG,QAAQ,CAAA;AAC9C,MAAM,CAAC,MAAM,uBAAuB,GAAG,SAAS,CAAA;AAEhD,MAAM,CAAC,MAAM,0BAA0B,GAAG,gBAAgB,uBAAuB,IAAI,qBAAqB,MAAM,qBAAqB,EAAE,CAAA;AACvI,MAAM,CAAC,MAAM,0BAA0B,GAAG,+BAA+B,uBAAuB,IAAI,qBAAqB,MAAM,qBAAqB,EAAE,CAAA;AACtJ,MAAM,CAAC,MAAM,yBAAyB,GAAG,wDAAwD,CAAA;AACjG,MAAM,CAAC,MAAM,4BAA4B,GAAG,sBAAsB,uBAAuB,IAAI,qBAAqB,MAAM,qBAAqB,EAAE,CAAA;AAC/I,MAAM,CAAC,MAAM,2BAA2B,GAAG,yDAAyD,CAAA;AACpG,MAAM,CAAC,MAAM,8BAA8B,GAAG,0FAA0F,CAAA;AACxI,MAAM,CAAC,MAAM,6BAA6B,GAAG,OAAO,uBAAuB,QAAQ,qBAAqB,UAAU,qBAAqB,yBAAyB,CAAA;AAChK,MAAM,CAAC,MAAM,gCAAgC,GAAG,sGAAsG,qBAAqB,EAAE,CAAA;AAC7K,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,GAAG,uBAAuB,IAAI,qBAAqB,EAAE;IACrD,GAAG,sBAAsB,2BAA2B;IACpD,GAAG,uBAAuB,yBAAyB;IACnD,GAAG,qBAAqB,qBAAqB;IAC7C,kCAAkC;IAClC,0CAA0C;IAC1C,mDAAmD;IACnD,6CAA6C;IAC7C,mEAAmE;IACnE,yEAAyE;IACzE,+EAA+E;IAC/E,6BAA6B;IAC7B,EAAE;CACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA"}
@@ -11,9 +11,10 @@ export async function runLinxLoginCommand(argv, deps = {}) {
11
11
  const doPromptText = deps.promptText ?? promptText;
12
12
  const write = deps.write ?? ((chunk) => process.stdout.write(chunk));
13
13
  let browserLoginStarted = false;
14
+ const forceFresh = argv.fresh === true || argv.force === true;
14
15
  const result = await doBrowserConsentLogin({
15
16
  issuerUrl: argv.url,
16
- forceFresh: true,
17
+ forceFresh,
17
18
  onAuthUrl(url) {
18
19
  browserLoginStarted = true;
19
20
  write('Opening LinX Cloud login in your browser...\n');
@@ -39,7 +40,7 @@ export function runLinxLogoutCommand(deps = {}) {
39
40
  clearAccountSession();
40
41
  clearCredentials();
41
42
  clearOidcSessionStorage();
42
- write('Logged out. Local LinX credentials removed.\n');
43
+ write('Logged out. Local Solid auth credentials removed.\n');
43
44
  }
44
45
  export const loginCommand = {
45
46
  command: 'login',
@@ -50,6 +51,12 @@ export const loginCommand = {
50
51
  type: 'string',
51
52
  default: resolveAccountBaseUrl(),
52
53
  description: 'Solid / account issuer URL',
54
+ })
55
+ .option('fresh', {
56
+ alias: 'force',
57
+ type: 'boolean',
58
+ default: false,
59
+ description: 'Ignore saved LinX OIDC session and start a fresh browser consent flow',
53
60
  }),
54
61
  handler: async (argv) => {
55
62
  await runLinxLoginCommand(argv);
@@ -1 +1 @@
1
- {"version":3,"file":"login-command.js","sourceRoot":"","sources":["../../src/lib/login-command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"login-command.js","sourceRoot":"","sources":["../../src/lib/login-command.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,6 @@
1
- import { aiConfigProviderRef, aiConfigModelUri, aiConfigProviderUri, aiModelResource, aiModelTable, aiProviderResource, aiProviderTable, approvalResource, approvalTable, auditTable, buildAIConfigDisconnectPlan, buildAIConfigMutationPlan, buildAIConfigProviderStateMap, credentialResource, credentialTable, createPodStorage, ContactType, auditResource, agentResource, agentTable, applySolidComunicaPatches, chatResource, chatTable, contactTable, drizzle, eq, getAIConfigProviderFamilyIds, getAIConfigProviderMetadata, getDefaultAIConfigCredentialId, getBuiltinModels as getSharedBuiltinModels, grantResource, grantTable, inboxNotificationResource, inboxNotificationTable, initSolidResources, initSolidTables, podSchema, extractChatIdFromChatRef, extractSessionIdFromSessionRef, extractThreadIdFromThreadRef, solidResources, solidSchema, messageResource, messageTable, sessionResource, sessionTable, normalizeAIConfigProviderId, normalizeAIConfigResourceId, sameAIConfigProviderFamily, selectAIConfigCredential, sessionRepository, threadResource, threadTable, } from '@undefineds.co/models';
2
- function buildResourceSubjectPath(resource, row) {
3
- return resource.resolveUri(resource.buildId(row));
4
- }
5
- export function buildApprovalSubjectPath(approvalId, createdAt = new Date()) {
6
- return buildResourceSubjectPath(approvalResource, { id: approvalId, createdAt });
7
- }
8
- export function buildAuditSubjectPath(auditId, createdAt = new Date()) {
9
- return buildResourceSubjectPath(auditResource, { id: auditId, createdAt });
10
- }
11
- export function buildGrantSubjectPath(grantId) {
12
- return buildResourceSubjectPath(grantResource, { id: grantId });
13
- }
14
- export function buildSessionResourceId(sessionId, createdAt = new Date()) {
15
- return sessionResource.buildId({ id: sessionId, createdAt });
16
- }
17
- export function buildSessionSubjectPath(sessionId, createdAt = new Date()) {
18
- return sessionResource.resolveUri(buildSessionResourceId(sessionId, createdAt));
19
- }
20
- export { ContactType, agentResource, agentTable, applySolidComunicaPatches, aiConfigModelUri, aiConfigProviderRef, aiConfigProviderUri, aiModelResource, aiModelTable, aiProviderResource, aiProviderTable, approvalResource, approvalTable, auditTable, buildAIConfigDisconnectPlan, buildAIConfigMutationPlan, buildAIConfigProviderStateMap, chatResource, chatTable, contactTable, createPodStorage, credentialResource, credentialTable, auditResource, drizzle, eq, getAIConfigProviderFamilyIds, getAIConfigProviderMetadata, getDefaultAIConfigCredentialId, grantResource, grantTable, inboxNotificationResource, inboxNotificationTable, extractChatIdFromChatRef, extractSessionIdFromSessionRef, extractThreadIdFromThreadRef, solidSchema, solidResources, initSolidResources, initSolidTables, podSchema, messageResource, messageTable, sessionResource, sessionTable, normalizeAIConfigProviderId, normalizeAIConfigResourceId, sameAIConfigProviderFamily, selectAIConfigCredential, sessionRepository, threadResource, threadTable, };
1
+ import { getBuiltinModels as getSharedBuiltinModels, } from '@undefineds.co/models/discovery';
2
+ import { aiConfigProviderRef, aiConfigModelUri, aiConfigProviderUri, aiConfigRepository, aiModelResource, aiModelTable, aiProviderResource, aiProviderTable, approvalResource, approvalTable, auditTable, buildAIConfigDisconnectPlan, buildAIConfigMutationPlan, buildAIConfigProviderStateMap, chatRepository, credentialResource, credentialTable, ContactClass, ContactType, auditResource, agentResource, agentTable, applySolidComunicaPatches, chatResource, chatTable, contactResource, contactTable, drizzle, eq, getAIConfigProviderFamilyIds, getAIConfigProviderIdsForBackend, getAIConfigProviderCatalog, getAIConfigProviderMetadata, getDefaultAIConfigCredentialId, grantResource, grantTable, ideaResource, inboxNotificationResource, inboxNotificationTable, initSolidResources, initSolidTables, extractSessionIdFromSessionRef, solidResources, solidSchema, messageResource, messageTable, issueResource, issueTable, taskResource, taskTable, deliveryResource, deliveryTable, runResource, runStepResource, runTable, runStepTable, sessionResource, sessionTable, skillResource, skillTable, normalizeAIConfigProviderId, normalizeAIConfigResourceId, sameAIConfigProviderFamily, selectAIConfigCredential, selectAIConfigCredentialForBackend, sessionRepository, threadRepository, threadResource, threadTable, } from '@undefineds.co/models';
3
+ export { ContactClass, ContactType, agentResource, agentTable, applySolidComunicaPatches, aiConfigModelUri, aiConfigProviderRef, aiConfigProviderUri, aiConfigRepository, aiModelResource, aiModelTable, aiProviderResource, aiProviderTable, approvalResource, approvalTable, auditTable, buildAIConfigDisconnectPlan, buildAIConfigMutationPlan, buildAIConfigProviderStateMap, chatRepository, chatResource, chatTable, contactResource, contactTable, credentialResource, credentialTable, auditResource, drizzle, eq, getAIConfigProviderFamilyIds, getAIConfigProviderIdsForBackend, getAIConfigProviderCatalog, getAIConfigProviderMetadata, getDefaultAIConfigCredentialId, grantResource, grantTable, ideaResource, inboxNotificationResource, inboxNotificationTable, extractSessionIdFromSessionRef, solidSchema, solidResources, initSolidResources, initSolidTables, messageResource, messageTable, issueResource, issueTable, taskResource, taskTable, deliveryResource, deliveryTable, runResource, runStepResource, runTable, runStepTable, sessionResource, sessionTable, skillResource, skillTable, normalizeAIConfigProviderId, normalizeAIConfigResourceId, sameAIConfigProviderFamily, selectAIConfigCredential, selectAIConfigCredentialForBackend, sessionRepository, threadRepository, threadResource, threadTable, };
21
4
  export function getBuiltinModels() {
22
5
  return getSharedBuiltinModels();
23
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/lib/models.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/lib/models.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,IAAI,sBAAsB,GAC3C,MAAM,iCAAiC,CAAA;AAExC,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,2BAA2B,EAC3B,yBAAyB,EACzB,6BAA6B,EAC7B,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,WAAW,EACX,aAAa,EACb,aAAa,EACb,UAAU,EACV,yBAAyB,EACzB,YAAY,EACZ,SAAS,EACT,eAAe,EACf,YAAY,EACZ,OAAO,EACP,EAAE,EACF,4BAA4B,EAC5B,gCAAgC,EAChC,0BAA0B,EAC1B,2BAA2B,EAC3B,8BAA8B,EAC9B,aAAa,EACb,UAAU,EACV,YAAY,EACZ,yBAAyB,EACzB,sBAAsB,EACtB,kBAAkB,EAClB,eAAe,EACf,8BAA8B,EAC9B,cAAc,EACd,WAAW,EACX,eAAe,EACf,YAAY,EACZ,aAAa,EACb,UAAU,EACV,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,aAAa,EACb,UAAU,EACV,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,wBAAwB,EACxB,kCAAkC,EAClC,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,WAAW,GA4BZ,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACL,YAAY,EACZ,WAAW,EACX,aAAa,EACb,UAAU,EACV,yBAAyB,EACzB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,2BAA2B,EAC3B,yBAAyB,EACzB,6BAA6B,EAC7B,cAAc,EACd,YAAY,EACZ,SAAS,EACT,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,OAAO,EACP,EAAE,EACF,4BAA4B,EAC5B,gCAAgC,EAChC,0BAA0B,EAC1B,2BAA2B,EAC3B,8BAA8B,EAC9B,aAAa,EACb,UAAU,EACV,YAAY,EACZ,yBAAyB,EACzB,sBAAsB,EACtB,8BAA8B,EAC9B,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,YAAY,EACZ,aAAa,EACb,UAAU,EACV,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,aAAa,EACb,UAAU,EACV,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,wBAAwB,EACxB,kCAAkC,EAClC,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,WAAW,GACZ,CAAA;AA+BD,MAAM,UAAU,gBAAgB;IAC9B,OAAO,sBAAsB,EAAE,CAAA;AACjC,CAAC"}
@@ -3,16 +3,17 @@ import { execFile } from 'node:child_process';
3
3
  import { promisify } from 'node:util';
4
4
  import { EVENTS, getSessionFromStorage, refreshSession, Session, } from '@inrupt/solid-client-authn-node';
5
5
  import { isLinxOidcOAuthSecrets, resolveLinxCloudAccountBaseUrl } from '@undefineds.co/models/client';
6
- import { saveAccountSession } from './account-session.js';
7
- import { loadCredentials, saveCredentials } from './credentials-store.js';
8
- import { createOidcSessionStorage } from './oidc-session-storage.js';
6
+ import { clearAccountSession, saveAccountSession } from './account-session.js';
7
+ import { clearCredentials, loadCredentials, saveCredentials } from './credentials-store.js';
8
+ import { clearOidcSessionStorage, createOidcSessionStorage } from './oidc-session-storage.js';
9
9
  const execFileAsync = promisify(execFile);
10
10
  const DEFAULT_CALLBACK_HOST = '127.0.0.1';
11
11
  const DEFAULT_CALLBACK_PATH = '/auth/callback';
12
12
  const DEFAULT_CLIENT_NAME = 'LinX CLI';
13
+ const TRANSIENT_OIDC_REMOTE_STATUS_CODES = new Set([502, 503, 504]);
13
14
  export async function ensureBrowserConsentLogin(options = {}) {
14
15
  if (!options.forceFresh) {
15
- const reused = await reuseExistingBrowserConsentLogin(options).catch(() => null);
16
+ const reused = await reuseExistingBrowserConsentLogin(options);
16
17
  if (reused) {
17
18
  return {
18
19
  ...reused,
@@ -20,6 +21,9 @@ export async function ensureBrowserConsentLogin(options = {}) {
20
21
  };
21
22
  }
22
23
  }
24
+ if (options.forceFresh) {
25
+ clearOidcSessionStorage();
26
+ }
23
27
  const fresh = await loginWithBrowserConsent(options);
24
28
  return {
25
29
  ...fresh,
@@ -99,17 +103,29 @@ export async function restoreStoredOidcSession(credentials, options = {}) {
99
103
  const storage = createOidcSessionStorage();
100
104
  const sessionId = await resolveStoredOidcSessionId(storage, credentials.webId, credentials.url);
101
105
  if (!sessionId) {
106
+ if (options.forceRefresh) {
107
+ clearStoredOidcLoginState();
108
+ throw new LinxOidcLoginExpiredError('Stored OIDC session is missing.');
109
+ }
102
110
  return null;
103
111
  }
104
112
  const session = await getSessionFromStorage(sessionId, {
105
113
  storage,
106
114
  refreshSession: false,
115
+ }).catch((error) => {
116
+ throw normalizeOidcSessionRefreshError(error);
107
117
  });
108
118
  if (!session) {
119
+ if (options.forceRefresh) {
120
+ clearStoredOidcLoginState();
121
+ throw new LinxOidcLoginExpiredError('Stored OIDC session cannot be restored.');
122
+ }
109
123
  return null;
110
124
  }
111
125
  if (options.forceRefresh || !session.info.isLoggedIn) {
112
- await refreshSession(session, { storage });
126
+ await refreshSession(session, { storage }).catch((error) => {
127
+ throw normalizeOidcSessionRefreshError(error);
128
+ });
113
129
  }
114
130
  return session.info.isLoggedIn ? session : null;
115
131
  }
@@ -358,8 +374,21 @@ async function reuseExistingBrowserConsentLogin(options) {
358
374
  if (requestedIssuer !== storedIssuer) {
359
375
  return null;
360
376
  }
361
- const accessToken = await getOidcAccessToken(stored, { forceRefresh: options.forceRefreshExisting });
377
+ let accessToken;
378
+ try {
379
+ // Reuse is valid only after a real server refresh. Local expiry/WebID checks
380
+ // are insufficient when an account was deleted and recreated with the same WebID.
381
+ accessToken = await getOidcAccessToken(stored, { forceRefresh: true });
382
+ }
383
+ catch (error) {
384
+ if (isOidcLoginExpiredError(error)) {
385
+ clearStoredOidcLoginState();
386
+ return null;
387
+ }
388
+ throw error;
389
+ }
362
390
  if (!accessToken || !isLinxOidcOAuthSecrets(stored.secrets)) {
391
+ clearStoredOidcLoginState();
363
392
  return null;
364
393
  }
365
394
  return {
@@ -392,23 +421,30 @@ async function refreshStoredOidcSession(credentials, secrets) {
392
421
  const storage = createOidcSessionStorage();
393
422
  const sessionId = await resolveStoredOidcSessionId(storage, credentials.webId, credentials.url);
394
423
  if (!sessionId) {
395
- return null;
424
+ clearStoredOidcLoginState();
425
+ throw new LinxOidcLoginExpiredError('Stored OIDC session is missing.');
396
426
  }
397
427
  const session = await getSessionFromStorage(sessionId, {
398
428
  storage,
399
429
  refreshSession: false,
430
+ }).catch((error) => {
431
+ throw normalizeOidcSessionRefreshError(error);
400
432
  });
401
433
  if (!session) {
402
- return null;
434
+ clearStoredOidcLoginState();
435
+ throw new LinxOidcLoginExpiredError('Stored OIDC session cannot be restored.');
403
436
  }
404
437
  let refreshedTokenSet = null;
405
438
  session.events.on(EVENTS.NEW_TOKENS, (tokenSet) => {
406
439
  refreshedTokenSet = tokenSet;
407
440
  });
408
- await refreshSession(session, { storage });
441
+ await refreshSession(session, { storage }).catch((error) => {
442
+ throw normalizeOidcSessionRefreshError(error);
443
+ });
409
444
  const nextTokenSet = refreshedTokenSet;
410
445
  if (!nextTokenSet?.accessToken) {
411
- return null;
446
+ clearStoredOidcLoginState();
447
+ throw new LinxOidcLoginExpiredError('Stored OIDC session refresh did not return an access token.');
412
448
  }
413
449
  secrets.oidcRefreshToken = nextTokenSet.refreshToken ?? secrets.oidcRefreshToken;
414
450
  secrets.oidcAccessToken = nextTokenSet.accessToken;
@@ -456,7 +492,8 @@ async function resolveStoredOidcSessionId(storage, webId, issuerUrl) {
456
492
  const parsed = JSON.parse(stored);
457
493
  const sessionWebId = typeof parsed.webId === 'string' ? parsed.webId : null;
458
494
  const sessionIssuer = typeof parsed.issuer === 'string' ? parsed.issuer.replace(/\/+$/, '') : null;
459
- if (sessionWebId === webId && sessionIssuer === normalizedIssuer) {
495
+ const sessionUsesDpop = parsed.dpop === true || parsed.dpop === 'true';
496
+ if (sessionWebId === webId && sessionIssuer === normalizedIssuer && !sessionUsesDpop) {
460
497
  return sessionId;
461
498
  }
462
499
  }
@@ -500,11 +537,7 @@ async function waitForManualRedirect(onCallback, manualRedirectUrl, signal) {
500
537
  await new Promise(() => undefined);
501
538
  return;
502
539
  }
503
- if (signal?.aborted) {
504
- return;
505
- }
506
- if (!requestUrl) {
507
- await new Promise(() => undefined);
540
+ if (signal?.aborted || !requestUrl) {
508
541
  return;
509
542
  }
510
543
  assertOidcCallbackDidNotReturnError(requestUrl);
@@ -530,17 +563,110 @@ export class LinxOidcLoginExpiredError extends Error {
530
563
  this.cause = cause;
531
564
  }
532
565
  }
566
+ export class LinxOidcTransientRemoteError extends Error {
567
+ transientRemote = true;
568
+ status;
569
+ constructor(cause) {
570
+ const status = resolveOidcTransientRemoteStatus(cause);
571
+ const detail = status ? fallbackOidcTransientStatusMessage(status) : 'Service Unavailable';
572
+ super(status
573
+ ? `LinX Cloud is temporarily unavailable (${status}): ${detail}. Your login was not cleared; retry shortly.`
574
+ : 'LinX Cloud is temporarily unavailable. Your login was not cleared; retry shortly.');
575
+ this.name = 'LinxOidcTransientRemoteError';
576
+ if (status !== null)
577
+ this.status = status;
578
+ if (cause !== undefined)
579
+ this.cause = cause;
580
+ }
581
+ }
582
+ export function clearStoredOidcLoginState() {
583
+ clearAccountSession();
584
+ clearCredentials();
585
+ clearOidcSessionStorage();
586
+ }
533
587
  export function isOidcLoginExpiredError(error) {
534
588
  if (error instanceof LinxOidcLoginExpiredError)
535
589
  return true;
536
590
  if (typeof error === 'object' && error !== null && 'authExpired' in error && error.authExpired === true)
537
591
  return true;
592
+ if (isOidcTransientRemoteError(error))
593
+ return false;
538
594
  const message = error instanceof Error ? error.message : String(error);
539
595
  const normalized = message.toLowerCase();
540
596
  return normalized.includes('linx cloud login expired')
541
597
  || normalized.includes('invalid refresh credentials')
542
598
  || normalized.includes('missing static client secret')
543
599
  || normalized.includes('invalid_client')
544
- || normalized.includes('invalid_grant');
600
+ || normalized.includes('invalid_grant')
601
+ || normalized.includes('invalid_redirect_uri')
602
+ || normalized.includes('unauthorized_client');
603
+ }
604
+ export function isOidcTransientRemoteError(error) {
605
+ if (error instanceof LinxOidcTransientRemoteError)
606
+ return true;
607
+ if (typeof error === 'object' && error !== null && 'transientRemote' in error && error.transientRemote === true)
608
+ return true;
609
+ return resolveOidcTransientRemoteStatus(error) !== null;
610
+ }
611
+ function normalizeOidcSessionRefreshError(error) {
612
+ if (isOidcTransientRemoteError(error)) {
613
+ return new LinxOidcTransientRemoteError(error);
614
+ }
615
+ if (isOidcLoginExpiredError(error)) {
616
+ clearStoredOidcLoginState();
617
+ return new LinxOidcLoginExpiredError(error);
618
+ }
619
+ return error instanceof Error ? error : new Error(String(error));
620
+ }
621
+ function resolveOidcTransientRemoteStatus(error) {
622
+ if (typeof error === 'object' && error !== null) {
623
+ const candidates = [
624
+ error.status,
625
+ error.statusCode,
626
+ error.response?.status,
627
+ error.cause?.status,
628
+ error.cause?.statusCode,
629
+ ];
630
+ for (const candidate of candidates) {
631
+ if (typeof candidate === 'number' && TRANSIENT_OIDC_REMOTE_STATUS_CODES.has(candidate)) {
632
+ return candidate;
633
+ }
634
+ if (typeof candidate === 'string') {
635
+ const parsed = Number.parseInt(candidate, 10);
636
+ if (TRANSIENT_OIDC_REMOTE_STATUS_CODES.has(parsed)) {
637
+ return parsed;
638
+ }
639
+ }
640
+ }
641
+ }
642
+ const message = error instanceof Error ? error.message : String(error);
643
+ const normalized = message.toLowerCase();
644
+ if (normalized.includes('502') && normalized.includes('bad gateway')) {
645
+ return 502;
646
+ }
647
+ if (normalized.includes('503') && normalized.includes('service unavailable')) {
648
+ return 503;
649
+ }
650
+ if (normalized.includes('504') && normalized.includes('gateway timeout')) {
651
+ return 504;
652
+ }
653
+ if (normalized.includes('expected 200 ok') && normalized.includes('bad gateway')) {
654
+ return 502;
655
+ }
656
+ return null;
657
+ }
658
+ function fallbackOidcTransientStatusMessage(status) {
659
+ switch (status) {
660
+ case 502:
661
+ return 'Bad Gateway';
662
+ case 503:
663
+ return 'Service Unavailable';
664
+ case 504:
665
+ return 'Gateway Timeout';
666
+ default:
667
+ return 'Service Unavailable';
668
+ }
545
669
  }
670
+ export const __testReuseExistingBrowserConsentLogin = reuseExistingBrowserConsentLogin;
671
+ export const __testNormalizeOidcSessionRefreshError = normalizeOidcSessionRefreshError;
546
672
  //# sourceMappingURL=oidc-auth.js.map