ummaya 0.2.9 → 0.2.10

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 (63) hide show
  1. package/npm-shrinkwrap.json +2 -2
  2. package/package.json +1 -1
  3. package/pyproject.toml +2 -2
  4. package/tui/package.json +1 -1
  5. package/tui/src/bridge/bridgeEnabled.ts +1 -1
  6. package/tui/src/commands/chrome/chrome.tsx +3 -4
  7. package/tui/src/commands/createMovedToPluginCommand.ts +1 -1
  8. package/tui/src/commands/extra-usage/extra-usage-core.ts +2 -4
  9. package/tui/src/commands/insights.ts +5 -4
  10. package/tui/src/commands/install-github-app/ApiKeyStep.tsx +1 -2
  11. package/tui/src/commands/install-github-app/ExistingWorkflowStep.tsx +1 -1
  12. package/tui/src/commands/install-github-app/InstallAppStep.tsx +1 -1
  13. package/tui/src/commands/install-github-app/install-github-app.tsx +2 -2
  14. package/tui/src/commands/install-github-app/setupGitHubActions.ts +2 -2
  15. package/tui/src/commands/install-slack-app/install-slack-app.ts +1 -1
  16. package/tui/src/commands/mobile/mobile.tsx +3 -3
  17. package/tui/src/commands/stickers/stickers.ts +1 -1
  18. package/tui/src/commands/upgrade/upgrade.tsx +3 -4
  19. package/tui/src/components/ClaudeInChromeOnboarding.tsx +2 -3
  20. package/tui/src/components/Feedback.tsx +8 -2
  21. package/tui/src/components/FeedbackSurvey/submitTranscriptShare.ts +7 -2
  22. package/tui/src/components/Passes/Passes.tsx +1 -1
  23. package/tui/src/components/WorkflowMultiselectDialog.tsx +1 -1
  24. package/tui/src/components/messages/AssistantTextMessage.tsx +1 -2
  25. package/tui/src/constants/github-app.ts +19 -26
  26. package/tui/src/constants/oauth.ts +28 -59
  27. package/tui/src/constants/product.ts +6 -6
  28. package/tui/src/entrypoints/sdk/coreSchemas.ts +1 -1
  29. package/tui/src/services/analytics/firstPartyEventLogger.ts +0 -3
  30. package/tui/src/services/analytics/firstPartyEventLoggingExporter.ts +34 -12
  31. package/tui/src/services/analytics/growthbook.ts +17 -16
  32. package/tui/src/services/api/filesApi.ts +4 -14
  33. package/tui/src/services/api/metricsOptOut.ts +20 -1
  34. package/tui/src/services/mcp/channelNotification.ts +1 -1
  35. package/tui/src/services/mcp/officialRegistry.ts +5 -1
  36. package/tui/src/services/mcp/useManageMCPConnections.ts +1 -1
  37. package/tui/src/services/mcp/utils.ts +2 -2
  38. package/tui/src/services/tokenEstimation.ts +0 -1
  39. package/tui/src/tools/AgentTool/built-in/claudeCodeGuideAgent.ts +6 -6
  40. package/tui/src/tools/McpAuthTool/McpAuthTool.ts +1 -1
  41. package/tui/src/tools/RemoteTriggerTool/RemoteTriggerTool.ts +1 -1
  42. package/tui/src/tools/RemoteTriggerTool/prompt.ts +2 -2
  43. package/tui/src/tools/WebFetchTool/preapproved.ts +0 -4
  44. package/tui/src/tools/WebFetchTool/utils.ts +15 -11
  45. package/tui/src/upstreamproxy/upstreamproxy.ts +9 -15
  46. package/tui/src/utils/autoUpdater.ts +4 -1
  47. package/tui/src/utils/claudeInChrome/mcpServer.ts +1 -1
  48. package/tui/src/utils/claudeInChrome/setup.ts +1 -1
  49. package/tui/src/utils/claudeInChrome/toolRendering.tsx +1 -2
  50. package/tui/src/utils/desktopDeepLink.ts +18 -18
  51. package/tui/src/utils/fastMode.ts +1 -1
  52. package/tui/src/utils/http.ts +1 -5
  53. package/tui/src/utils/ide.ts +6 -5
  54. package/tui/src/utils/model/providers.ts +6 -10
  55. package/tui/src/utils/modelCost.ts +0 -2
  56. package/tui/src/utils/nativeInstaller/download.ts +15 -17
  57. package/tui/src/utils/plugins/installCounts.ts +4 -11
  58. package/tui/src/utils/plugins/officialMarketplaceGcs.ts +5 -18
  59. package/tui/src/utils/releaseNotes.ts +2 -2
  60. package/tui/src/utils/settings/types.ts +1 -1
  61. package/tui/src/utils/statusNoticeDefinitions.tsx +3 -3
  62. package/tui/src/utils/telemetry/bigqueryExporter.ts +20 -13
  63. package/uv.lock +1 -1
@@ -1,13 +1,3 @@
1
- /**
2
- * inc-5046: fetch the official marketplace from a GCS mirror instead of
3
- * git-cloning GitHub on every startup.
4
- *
5
- * Backend (anthropic#317037) publishes a marketplace-only zip alongside the
6
- * titanium squashfs, keyed by base repo SHA. This module fetches the `latest`
7
- * pointer, compares against a local sentinel, and downloads+extracts the zip
8
- * when there's a new SHA. Callers decide fallback behavior on failure.
9
- */
10
-
11
1
  import axios from 'axios'
12
2
  import { chmod, mkdir, readFile, rename, rm, writeFile } from 'fs/promises'
13
3
  import { dirname, join, resolve, sep } from 'path'
@@ -20,13 +10,7 @@ import { errorMessage, getErrnoCode } from '../errors.js'
20
10
 
21
11
  type SafeString = AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS
22
12
 
23
- // CDN-fronted domain for the public GCS bucket (same bucket the native
24
- // binary ships from — nativeInstaller/download.ts:24 uses the raw GCS URL).
25
- // `{sha}.zip` is content-addressed so CDN can cache it indefinitely;
26
- // `latest` has Cache-Control: max-age=300 so CDN staleness is bounded.
27
- // Backend (anthropic#317037) populates this prefix.
28
- const GCS_BASE =
29
- 'https://downloads.claude.ai/claude-code-releases/plugins/claude-plugins-official'
13
+ const GCS_BASE = process.env.UMMAYA_OFFICIAL_MARKETPLACE_BASE_URL?.trim()
30
14
 
31
15
  // Zip arc paths are seed-dir-relative (marketplaces/claude-plugins-official/…)
32
16
  // so the titanium seed machinery can use the same zip. Strip this prefix when
@@ -48,6 +32,9 @@ export async function fetchOfficialMarketplaceFromGcs(
48
32
  installLocation: string,
49
33
  marketplacesCacheDir: string,
50
34
  ): Promise<string | null> {
35
+ if (!GCS_BASE) {
36
+ return null
37
+ }
51
38
  // Defense in depth: this function does `rm(installLocation, {recursive})`
52
39
  // during the atomic swap. A corrupted known_marketplaces.json (gh-32793 —
53
40
  // Windows path read on WSL, literal tilde, manual edit) could point at the
@@ -158,7 +145,7 @@ export async function fetchOfficialMarketplaceFromGcs(
158
145
  // values below are static enums or a git SHA — not code/filepaths/PII.
159
146
  logEvent('tengu_plugin_remote_fetch', {
160
147
  source: 'marketplace_gcs' as SafeString,
161
- host: 'downloads.claude.ai' as SafeString,
148
+ host: new URL(GCS_BASE).host as SafeString,
162
149
  is_official: true,
163
150
  outcome: outcome as SafeString,
164
151
  duration_ms: Math.round(performance.now() - start),
@@ -26,9 +26,9 @@ const MAX_RELEASE_NOTES_SHOWN = 5
26
26
  * 3. Next time the user starts Claude, the cached changelog is available immediately
27
27
  */
28
28
  export const CHANGELOG_URL =
29
- 'https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md'
29
+ 'https://github.com/umyunsang/UMMAYA/blob/main/CHANGELOG.md'
30
30
  const RAW_CHANGELOG_URL =
31
- 'https://raw.githubusercontent.com/anthropics/claude-code/refs/heads/main/CHANGELOG.md'
31
+ 'https://raw.githubusercontent.com/umyunsang/UMMAYA/refs/heads/main/CHANGELOG.md'
32
32
 
33
33
  /**
34
34
  * Get the path for the cached changelog file.
@@ -887,7 +887,7 @@ export const SettingsSchema = lazySchema(() =>
887
887
  .string()
888
888
  .optional()
889
889
  .describe(
890
- 'Display name for the assistant, shown in the claude.ai session list',
890
+ 'Display name for the assistant, shown in the UMMAYA remote session list',
891
891
  ),
892
892
  }
893
893
  : {}),
@@ -125,13 +125,13 @@ const bothAuthMethodsNotice: StatusNoticeDefinition = {
125
125
  <Box flexDirection="column" marginLeft={3}>
126
126
  <Text color="warning">
127
127
  · Trying to use{' '}
128
- {authTokenInfo.source === 'claude.ai' ? 'claude.ai' : authTokenInfo.source}
128
+ {authTokenInfo.source === 'claude.ai' ? 'UMMAYA remote auth' : authTokenInfo.source}
129
129
  ?{' '}
130
- {apiKeySource === 'ANTHROPIC_API_KEY' ? 'Unset the ANTHROPIC_API_KEY environment variable, or claude /logout then say "No" to the API key approval before login.' : apiKeySource === 'apiKeyHelper' ? 'Unset the apiKeyHelper setting.' : 'claude /logout'}
130
+ {apiKeySource === 'ANTHROPIC_API_KEY' ? 'Unset the ANTHROPIC_API_KEY environment variable, or run ummaya /logout then say "No" to the API key approval before login.' : apiKeySource === 'apiKeyHelper' ? 'Unset the apiKeyHelper setting.' : 'ummaya /logout'}
131
131
  </Text>
132
132
  <Text color="warning">
133
133
  · Trying to use {apiKeySource}?{' '}
134
- {authTokenInfo.source === 'claude.ai' ? 'claude /logout to sign out of claude.ai.' : `Unset the ${authTokenInfo.source} environment variable.`}
134
+ {authTokenInfo.source === 'claude.ai' ? 'ummaya /logout to sign out of UMMAYA remote auth.' : `Unset the ${authTokenInfo.source} environment variable.`}
135
135
  </Text>
136
136
  </Box>
137
137
  </Box>;
@@ -37,25 +37,26 @@ type InternalMetricsPayload = {
37
37
  metrics: Metric[]
38
38
  }
39
39
 
40
+ function getMetricsExportEndpoint(): string | undefined {
41
+ const baseUrl =
42
+ process.env.UMMAYA_METRICS_BASE_URL ??
43
+ (process.env.USER_TYPE === 'ant'
44
+ ? process.env.ANT_CLAUDE_CODE_METRICS_ENDPOINT
45
+ : undefined)
46
+ const trimmed = baseUrl?.trim()
47
+ return trimmed
48
+ ? `${trimmed.replace(/\/$/, '')}/api/claude_code/metrics`
49
+ : undefined
50
+ }
51
+
40
52
  export class BigQueryMetricsExporter implements PushMetricExporter {
41
- private readonly endpoint: string
53
+ private readonly endpoint: string | undefined
42
54
  private readonly timeout: number
43
55
  private pendingExports: Promise<void>[] = []
44
56
  private isShutdown = false
45
57
 
46
58
  constructor(options: { timeout?: number } = {}) {
47
- const defaultEndpoint = 'https://api.anthropic.com/api/claude_code/metrics'
48
-
49
- if (
50
- process.env.USER_TYPE === 'ant' &&
51
- process.env.ANT_CLAUDE_CODE_METRICS_ENDPOINT
52
- ) {
53
- this.endpoint =
54
- process.env.ANT_CLAUDE_CODE_METRICS_ENDPOINT +
55
- '/api/claude_code/metrics'
56
- } else {
57
- this.endpoint = defaultEndpoint
58
- }
59
+ this.endpoint = getMetricsExportEndpoint()
59
60
 
60
61
  this.timeout = options.timeout || 5000
61
62
  }
@@ -101,6 +102,12 @@ export class BigQueryMetricsExporter implements PushMetricExporter {
101
102
  return
102
103
  }
103
104
 
105
+ if (!this.endpoint) {
106
+ logForDebugging('BigQuery metrics export: endpoint not configured')
107
+ resultCallback({ code: ExportResultCode.SUCCESS })
108
+ return
109
+ }
110
+
104
111
  // Check organization-level metrics opt-out
105
112
  const metricsStatus = await checkMetricsEnabled()
106
113
  if (!metricsStatus.enabled) {
package/uv.lock CHANGED
@@ -3052,7 +3052,7 @@ wheels = [
3052
3052
 
3053
3053
  [[package]]
3054
3054
  name = "ummaya"
3055
- version = "0.2.9"
3055
+ version = "0.2.10"
3056
3056
  source = { editable = "." }
3057
3057
  dependencies = [
3058
3058
  { name = "defusedxml" },