@moda-ai/cli 1.55.1 → 1.55.3

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/README.md CHANGED
@@ -32,6 +32,30 @@ export MODA_API_KEY="moda_sk_..."
32
32
 
33
33
  Get your API key from [moda.dev/settings](https://moda.dev/settings).
34
34
 
35
+ ### Read-only keys
36
+
37
+ Turn on **Read-only** when you create a key in Settings → Ingestion keys. A
38
+ read-only key works with every read command (`overview`, `search`, `context`,
39
+ `problems`, ...) but the API rejects writes (`false-positive`, `signals create`,
40
+ `problem-feedback`, `ask`, ...) with 403, and it cannot ingest data. Use one for
41
+ agents and evaluations that should never change anything.
42
+
43
+ ### Platform admin keys
44
+
45
+ Platform admins can create `moda_pk_` keys on the admin page (`/admin/api-keys`).
46
+ They are not tied to an organization, so name one on each run:
47
+
48
+ ```bash
49
+ export MODA_API_KEY="moda_pk_..."
50
+ export MODA_TENANT_ID="<organization-id>"
51
+ moda overview
52
+ moda users --tenant-id=<organization-id> # tenant-scoped commands also take --tenant-id
53
+ ```
54
+
55
+ They are read-only by default and stop working when the owner loses platform
56
+ admin access. Usage is not counted in the organization's CLI analytics. Ordinary
57
+ `moda_sk_` keys cannot choose another organization: the API rejects them with 403.
58
+
35
59
  ## Diagnostics
36
60
 
37
61
  `moda doctor --online` checks configuration and cloud data flow. Experimental
@@ -19,8 +19,9 @@ import {
19
19
  require_typescript,
20
20
  resolvePromptSource,
21
21
  safePromptEvidencePath,
22
- scanHarness
23
- } from "./cli-9250ckvg.js";
22
+ scanHarness,
23
+ setPlatformTenantOverride
24
+ } from "./cli-9v0c1xe1.js";
24
25
  import {
25
26
  SKILL_SOURCE_HARNESS,
26
27
  SKILL_SOURCE_INTEGRATION_BUNDLED,
@@ -33,7 +34,7 @@ import {
33
34
  import {
34
35
  isAuthSessionValid,
35
36
  loadAuthSession
36
- } from "./cli-kxwm7y62.js";
37
+ } from "./cli-t5v7mhvj.js";
37
38
  import {
38
39
  CliInputError,
39
40
  EXIT_ERROR,
@@ -52,7 +53,7 @@ import {
52
53
  resolveTenantId,
53
54
  secretFilePathFromRef,
54
55
  validateConfig
55
- } from "./cli-ac3p2byq.js";
56
+ } from "./cli-zp7a97sp.js";
56
57
  import {
57
58
  __commonJS,
58
59
  __require,
@@ -5606,6 +5607,7 @@ async function runPromptAb(flags, profileOptions, context) {
5606
5607
  if (!tenantId) {
5607
5608
  throw new Error("Missing tenant id. Run `moda init` or pass --tenant-id=<id>.");
5608
5609
  }
5610
+ setPlatformTenantOverride(tenantId);
5609
5611
  const baselineSource = flags.baseline || flags["baseline-file"] || flags["baseline-key"];
5610
5612
  const candidateSource = flags.candidate || flags["candidate-file"] || flags["candidate-key"];
5611
5613
  if (!baselineSource || !candidateSource) {
@@ -6749,7 +6751,7 @@ async function runPromptSyncExclusive(flags, profileOptions, options) {
6749
6751
  const analyzedDefinitions = new Map;
6750
6752
  if (flags["no-analyze"] !== "true") {
6751
6753
  options.onProgress?.("Analyzing prompt sources before sync.");
6752
- const { analyzeHarnessPrompts } = await import("./harness-sd44jsaw.js");
6754
+ const { analyzeHarnessPrompts } = await import("./harness-x6kaz47j.js");
6753
6755
  const result = await analyzeHarnessPrompts({
6754
6756
  rootDir: process.cwd(),
6755
6757
  existing: established.flatMap((prompt) => prompt.sourceDefinition ? [prompt.sourceDefinition.source] : []),
@@ -7079,7 +7081,7 @@ async function migratePromptManifest(options = {}) {
7079
7081
  let addedSources = [];
7080
7082
  let pendingSources = [];
7081
7083
  if (options.discover) {
7082
- const { analyzeHarnessPrompts } = await import("./harness-sd44jsaw.js");
7084
+ const { analyzeHarnessPrompts } = await import("./harness-x6kaz47j.js");
7083
7085
  const result = await analyzeHarnessPrompts({
7084
7086
  rootDir: root,
7085
7087
  existing: manifest.sources,
@@ -25,7 +25,7 @@ import {
25
25
  resolveTenantId,
26
26
  shouldInventoryFile,
27
27
  stringOption
28
- } from "./cli-ac3p2byq.js";
28
+ } from "./cli-zp7a97sp.js";
29
29
  import {
30
30
  __commonJS,
31
31
  __require,
@@ -177899,6 +177899,31 @@ import { confirm as confirm2, select } from "@inquirer/prompts";
177899
177899
  import { readFileSync } from "node:fs";
177900
177900
  import { resolve } from "node:path";
177901
177901
 
177902
+ // src/api-key-headers.ts
177903
+ var PLATFORM_API_KEY_PREFIX = "moda_pk_";
177904
+ var TENANT_HEADER = "x-moda-tenant-id";
177905
+ function isPlatformApiKey(key) {
177906
+ return Boolean(key?.startsWith(PLATFORM_API_KEY_PREFIX));
177907
+ }
177908
+ var platformTenantOverride;
177909
+ function setPlatformTenantOverride(tenantId) {
177910
+ platformTenantOverride = tenantId;
177911
+ }
177912
+ var TENANT_PATH = /\/tenants\/([^/?#]+)/;
177913
+ function tenantFromUrl(url) {
177914
+ const match = url ? TENANT_PATH.exec(url) : null;
177915
+ return match ? decodeURIComponent(match[1]) : undefined;
177916
+ }
177917
+ function apiKeyHeaders(key, options = {}, url) {
177918
+ const headers = { "x-api-key": key };
177919
+ if (isPlatformApiKey(key)) {
177920
+ const tenantId = tenantFromUrl(url) || platformTenantOverride || resolveTenantId(options);
177921
+ if (tenantId)
177922
+ headers[TENANT_HEADER] = tenantId;
177923
+ }
177924
+ return headers;
177925
+ }
177926
+
177902
177927
  // src/api-client.ts
177903
177928
  var REQUEST_TIMEOUT_MS = 30000;
177904
177929
  var MAX_RETRIES = 3;
@@ -178006,7 +178031,7 @@ async function callModaAPI(url, options, profileOptions = {}, requestOptions = {
178006
178031
  const response = await fetch(url, {
178007
178032
  ...options,
178008
178033
  headers: {
178009
- "x-api-key": resolveApiKey(profileOptions) ?? "",
178034
+ ...apiKeyHeaders(resolveApiKey(profileOptions) ?? "", profileOptions, url),
178010
178035
  "Content-Type": "application/json",
178011
178036
  ...options.headers ?? {},
178012
178037
  ...connectionClose ? { Connection: "close" } : {}
@@ -178077,6 +178102,8 @@ function requireTenant(context) {
178077
178102
  if (!tenantId) {
178078
178103
  throw new CliInputError("Could not determine the tenant.", "Use a signed API key (it names its tenant), set MODA_TENANT_ID, or pass --tenant-id=<id>.");
178079
178104
  }
178105
+ if (isPlatformApiKey(key))
178106
+ setPlatformTenantOverride(tenantId);
178080
178107
  return tenantId;
178081
178108
  }
178082
178109
  function assertFlags(command, flags, allowed) {
@@ -184870,7 +184897,7 @@ async function runHarnessCommand(context) {
184870
184897
  throw new CliInputError("Focused remote prompt analysis is not supported yet.", "Use local --analyst=claude|codex|cursor|local-scan, or drop --concern for a full remote report.");
184871
184898
  }
184872
184899
  if (context.flags["github-actions"] === "true") {
184873
- const { runGithubActionsAnalyze } = await import("./harness-github-actions-075xzdvp.js");
184900
+ const { runGithubActionsAnalyze } = await import("./harness-github-actions-5syjp1sz.js");
184874
184901
  const result = await runGithubActionsAnalyze(rootDir, {
184875
184902
  writeReport: (report2) => {
184876
184903
  const normalized = normalizeHarnessReport(report2);
@@ -188915,4 +188942,4 @@ function hashText(text) {
188915
188942
  return createHash4("sha256").update(text).digest("hex");
188916
188943
  }
188917
188944
 
188918
- export { ApiError, callDataAPI, callControlAPI, getApiRequestCount, resetApiRequestCount, $isSeq, $parseDocument, $stringify, require_typescript, inspectCodeSelectors, inspectPythonSelectors, resolvePromptSource, backfillPromptSource, HARNESS_REPORT_PATH, HARNESS_REPORT_APPROVAL_PATH, HARNESS_ANALYZE_CONCERNS, validateHarnessReport, readHarnessReport, normalizeHarnessReport, hashHarnessReport, hashStableJson, assertFlags, assertPositionals, runUsersCommand, runUserCommand, runProblemReopenCommand, runSignalsManagementCommand, SIGNALS_MANAGEMENT_SUBCOMMANDS, unknownSignalsSubcommandError, shouldColorTerminalOutput, terminalStyles, stripAnsi2 as stripAnsi, renderMarkdownForTerminal, startRemoteAnalyze, pollRemoteAnalyzeUntilDone, isRecoverableRemoteRun, checkPromptMapping, safePromptEvidencePath, discoverHarnessPromptSources, renderDoctorHuman, renderStatusHuman, renderInitBanner, renderInitStep, renderInitNote, renderInitSetupPlan, renderInitComplete, runHarnessCommand, writeHarnessAnalyzeResult, emitWrittenArtifacts, analyzeHarnessPrompts, repairExternalAnalystReport, deriveRelationshipsFromGraph, mergeDeterministicArtifacts, describeCodingAgentEvent, analystEventProgress, isRetryableExternalAnalystFailure, sleep, summarizeInvalidAnalystReport, isDeterministicLocalAnalyst, resolveHarnessAnalyzeConcern, detectAvailableCodingAgents, codingAgentDisplayName, runCodingAgent, resolveAnalystModel, renderExternalHarnessAnalystPrompt, CONCERN_CANDIDATE_KINDS, SEED_CANDIDATE_KIND_LABELS, renderAnalystCandidateLines, renderAnalystSeedLines, truncateText, scanHarness, summarizeHarness, buildSourceSnapshot, writeHumanProgress, readHarnessSyncState, describeSyncIdentity, describeSyncTenantLabel, findFresherHarnessReports, writeHarnessArtifacts, assertHarnessGraphSyncQuality, graphForSync, inventoryFiles, numericEnv, numericEnvAllowZero, computeDeterministicFloor, stableId2 as stableId, titleFromId2 as titleFromId, promptNameFromPath };
188945
+ export { isPlatformApiKey, setPlatformTenantOverride, apiKeyHeaders, ApiError, callDataAPI, callControlAPI, getApiRequestCount, resetApiRequestCount, $isSeq, $parseDocument, $stringify, require_typescript, inspectCodeSelectors, inspectPythonSelectors, resolvePromptSource, backfillPromptSource, HARNESS_REPORT_PATH, HARNESS_REPORT_APPROVAL_PATH, HARNESS_ANALYZE_CONCERNS, validateHarnessReport, readHarnessReport, normalizeHarnessReport, hashHarnessReport, hashStableJson, assertFlags, assertPositionals, runUsersCommand, runUserCommand, runProblemReopenCommand, runSignalsManagementCommand, SIGNALS_MANAGEMENT_SUBCOMMANDS, unknownSignalsSubcommandError, shouldColorTerminalOutput, terminalStyles, stripAnsi2 as stripAnsi, renderMarkdownForTerminal, startRemoteAnalyze, pollRemoteAnalyzeUntilDone, isRecoverableRemoteRun, checkPromptMapping, safePromptEvidencePath, discoverHarnessPromptSources, renderDoctorHuman, renderStatusHuman, renderInitBanner, renderInitStep, renderInitNote, renderInitSetupPlan, renderInitComplete, runHarnessCommand, writeHarnessAnalyzeResult, emitWrittenArtifacts, analyzeHarnessPrompts, repairExternalAnalystReport, deriveRelationshipsFromGraph, mergeDeterministicArtifacts, describeCodingAgentEvent, analystEventProgress, isRetryableExternalAnalystFailure, sleep, summarizeInvalidAnalystReport, isDeterministicLocalAnalyst, resolveHarnessAnalyzeConcern, detectAvailableCodingAgents, codingAgentDisplayName, runCodingAgent, resolveAnalystModel, renderExternalHarnessAnalystPrompt, CONCERN_CANDIDATE_KINDS, SEED_CANDIDATE_KIND_LABELS, renderAnalystCandidateLines, renderAnalystSeedLines, truncateText, scanHarness, summarizeHarness, buildSourceSnapshot, writeHumanProgress, readHarnessSyncState, describeSyncIdentity, describeSyncTenantLabel, findFresherHarnessReports, writeHarnessArtifacts, assertHarnessGraphSyncQuality, graphForSync, inventoryFiles, numericEnv, numericEnvAllowZero, computeDeterministicFloor, stableId2 as stableId, titleFromId2 as titleFromId, promptNameFromPath };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  authFetch,
3
3
  getCachedLoginContext
4
- } from "./cli-kxwm7y62.js";
4
+ } from "./cli-t5v7mhvj.js";
5
5
  import {
6
6
  CliAccessError,
7
7
  CliInputError,
@@ -15,7 +15,7 @@ import {
15
15
  resolveTenantIdFromActiveProfile,
16
16
  saveCliConfig,
17
17
  writeSecretJsonFile
18
- } from "./cli-ac3p2byq.js";
18
+ } from "./cli-zp7a97sp.js";
19
19
 
20
20
  // src/init/tenant.ts
21
21
  import { randomUUID } from "node:crypto";
@@ -7,7 +7,7 @@ import {
7
7
  saveProfileConfig,
8
8
  secretFilePathFromRef,
9
9
  writeSecretJsonFile
10
- } from "./cli-ac3p2byq.js";
10
+ } from "./cli-zp7a97sp.js";
11
11
  import {
12
12
  __require
13
13
  } from "./cli-0v6na3yp.js";
@@ -804,6 +804,7 @@ var SECRET_KEYS = new Set([
804
804
  ]);
805
805
  var SECRET_PATTERNS = [
806
806
  { pattern: /\bmoda_sk_[A-Za-z0-9_-]+\b/g, prefixLength: 8 },
807
+ { pattern: /\bmoda_pk_[A-Za-z0-9_-]+\b/g, prefixLength: 8 },
807
808
  { pattern: /\bmoda_ct_[A-Za-z0-9_-]+\b/g, prefixLength: 8 },
808
809
  { pattern: /\bBearer\s+([A-Za-z0-9._~+/-]+=*)\b/gi, prefixLength: 8 },
809
810
  { pattern: /\beyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g, prefixLength: 8 },
package/dist/cli.js CHANGED
@@ -8,13 +8,14 @@ import {
8
8
  runPromptsCommand,
9
9
  runSkillsCommand,
10
10
  runStatusCommand
11
- } from "./cli-a2jq9yd5.js";
11
+ } from "./cli-73v8mqh1.js";
12
12
  import"./cli-mm48br00.js";
13
13
  import {
14
14
  ApiError,
15
15
  HARNESS_REPORT_APPROVAL_PATH,
16
16
  HARNESS_REPORT_PATH,
17
17
  SIGNALS_MANAGEMENT_SUBCOMMANDS,
18
+ apiKeyHeaders,
18
19
  assertFlags,
19
20
  assertPositionals,
20
21
  callControlAPI,
@@ -23,6 +24,7 @@ import {
23
24
  graphForSync,
24
25
  hashHarnessReport,
25
26
  hashStableJson,
27
+ isPlatformApiKey,
26
28
  readHarnessReport,
27
29
  readHarnessSyncState,
28
30
  renderMarkdownForTerminal,
@@ -32,13 +34,14 @@ import {
32
34
  runSignalsManagementCommand,
33
35
  runUserCommand,
34
36
  runUsersCommand,
37
+ setPlatformTenantOverride,
35
38
  shouldColorTerminalOutput,
36
39
  stripAnsi,
37
40
  summarizeHarness,
38
41
  terminalStyles,
39
42
  unknownSignalsSubcommandError,
40
43
  validateHarnessReport
41
- } from "./cli-9250ckvg.js";
44
+ } from "./cli-9v0c1xe1.js";
42
45
  import"./cli-ssfq84k5.js";
43
46
  import {
44
47
  authFetch,
@@ -47,7 +50,7 @@ import {
47
50
  loadAuthSession,
48
51
  login,
49
52
  revokeCliSessionToken
50
- } from "./cli-kxwm7y62.js";
53
+ } from "./cli-t5v7mhvj.js";
51
54
  import {
52
55
  AGENT_ERROR_CODES,
53
56
  CliAccessError,
@@ -98,7 +101,7 @@ import {
98
101
  validateConfig,
99
102
  wasOutputCancelled,
100
103
  writeSecretJsonFile
101
- } from "./cli-ac3p2byq.js";
104
+ } from "./cli-zp7a97sp.js";
102
105
  import {
103
106
  __require
104
107
  } from "./cli-0v6na3yp.js";
@@ -601,7 +604,8 @@ function frustrationsFromEmotions(response) {
601
604
  const pagination = asRecord(response.pagination) ?? {};
602
605
  const byFamily = asRecord(summary.by_family) ?? {};
603
606
  const totalAnalyzed = asNumber(summary.conversations_analyzed) ?? 0;
604
- const frustrated = asNumber(byFamily.frustration) ?? 0;
607
+ const byFamilyConversations = asRecord(summary.conversations_by_family);
608
+ const frustrated = asNumber(byFamilyConversations?.frustration) ?? asNumber(byFamily.frustration) ?? 0;
605
609
  const frustrations = response.detections.map((item) => asRecord(item)).filter((row) => row !== null && (row.family === undefined || row.family === "frustration")).map(({ conversation_context, score, is_detected, ...row }) => ({
606
610
  ...row,
607
611
  is_frustrated: is_detected === true,
@@ -3345,6 +3349,8 @@ function requireTenant(context) {
3345
3349
  if (!tenantId) {
3346
3350
  throw new CliInputError("Could not determine the tenant.", "Use a signed API key (it names its tenant), set MODA_TENANT_ID, or pass --tenant-id=<id>.");
3347
3351
  }
3352
+ if (isPlatformApiKey(key))
3353
+ setPlatformTenantOverride(tenantId);
3348
3354
  return tenantId;
3349
3355
  }
3350
3356
  function intFlag(name, value, min, max) {
@@ -3581,7 +3587,7 @@ async function sendCliUsageTelemetry(input) {
3581
3587
  await fetch(`${resolveModaBaseUrl()}/api/v1/data/cli-usage`, {
3582
3588
  method: "POST",
3583
3589
  headers: {
3584
- "x-api-key": input.apiKey,
3590
+ ...apiKeyHeaders(input.apiKey),
3585
3591
  "Content-Type": "application/json"
3586
3592
  },
3587
3593
  body: JSON.stringify({
@@ -4814,7 +4820,7 @@ async function probeApiKey(key, options = {}) {
4814
4820
  try {
4815
4821
  response = await fetch(`${resolveModaBaseUrl(options)}/api/v1/data/overview`, {
4816
4822
  method: "GET",
4817
- headers: { "x-api-key": key },
4823
+ headers: apiKeyHeaders(key, options),
4818
4824
  signal: AbortSignal.timeout(PROBE_TIMEOUT_MS)
4819
4825
  });
4820
4826
  } catch (error) {
@@ -6158,7 +6164,7 @@ async function streamAsk(options) {
6158
6164
  response = await fetchImpl(url, {
6159
6165
  method: "POST",
6160
6166
  headers: {
6161
- "x-api-key": resolveApiKey(profileOptions2) ?? "",
6167
+ ...apiKeyHeaders(resolveApiKey(profileOptions2) ?? "", profileOptions2),
6162
6168
  "Content-Type": "application/json",
6163
6169
  Accept: "text/event-stream"
6164
6170
  },
@@ -10264,7 +10270,7 @@ var commandRegistry = createCommandRegistry([
10264
10270
  resetApiRequestCountBeforeRun: true,
10265
10271
  telemetry: "result",
10266
10272
  handler: async (context) => {
10267
- const { runInit } = await import("./index-hn9t95tr.js");
10273
+ const { runInit } = await import("./index-sfaacvs0.js");
10268
10274
  if (context.outputMode === "agent-stream") {
10269
10275
  context.output.writeEvent({
10270
10276
  event: "started",
@@ -10305,7 +10311,7 @@ var commandRegistry = createCommandRegistry([
10305
10311
  resetApiRequestCountBeforeRun: true,
10306
10312
  telemetry: "result-and-error",
10307
10313
  handler: async (context) => {
10308
- const { runProvision } = await import("./provision-d1dfj6as.js");
10314
+ const { runProvision } = await import("./provision-mdvjnhqb.js");
10309
10315
  return runProvision(context, {
10310
10316
  resumeCommand: buildResumeCommand("provision", context.rawFlags)
10311
10317
  });
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  buildSourceSnapshot
3
- } from "./cli-9250ckvg.js";
4
- import"./cli-ac3p2byq.js";
3
+ } from "./cli-9v0c1xe1.js";
4
+ import"./cli-zp7a97sp.js";
5
5
  import"./cli-0v6na3yp.js";
6
6
 
7
7
  // src/harness-github-actions.ts
@@ -42,8 +42,8 @@ import {
42
42
  writeHarnessAnalyzeResult,
43
43
  writeHarnessArtifacts,
44
44
  writeHumanProgress
45
- } from "./cli-9250ckvg.js";
46
- import"./cli-ac3p2byq.js";
45
+ } from "./cli-9v0c1xe1.js";
46
+ import"./cli-zp7a97sp.js";
47
47
  import"./cli-0v6na3yp.js";
48
48
  export {
49
49
  writeHumanProgress,
@@ -3,7 +3,7 @@ import {
3
3
  initPrompts,
4
4
  runPromptSync,
5
5
  runSkillSync
6
- } from "./cli-a2jq9yd5.js";
6
+ } from "./cli-73v8mqh1.js";
7
7
  import"./cli-mm48br00.js";
8
8
  import {
9
9
  codingAgentDisplayName,
@@ -23,7 +23,7 @@ import {
23
23
  runHarnessCommand,
24
24
  startRemoteAnalyze,
25
25
  stripAnsi
26
- } from "./cli-9250ckvg.js";
26
+ } from "./cli-9v0c1xe1.js";
27
27
  import {
28
28
  bundledSkillsDir,
29
29
  installIntegrationSkill,
@@ -35,14 +35,14 @@ import {
35
35
  } from "./cli-ssfq84k5.js";
36
36
  import {
37
37
  selectTenantAndCreateKey
38
- } from "./cli-sq6g0tk5.js";
38
+ } from "./cli-jmsgv705.js";
39
39
  import {
40
40
  ConnectCodeError,
41
41
  connectWithCode,
42
42
  loadAuthSession,
43
43
  loadToken,
44
44
  login
45
- } from "./cli-kxwm7y62.js";
45
+ } from "./cli-t5v7mhvj.js";
46
46
  import {
47
47
  CliAuthError,
48
48
  CliInputError,
@@ -50,7 +50,7 @@ import {
50
50
  createCommandContext,
51
51
  resolveIngestUrl,
52
52
  resolveModaBaseUrl
53
- } from "./cli-ac3p2byq.js";
53
+ } from "./cli-zp7a97sp.js";
54
54
  import"./cli-0v6na3yp.js";
55
55
 
56
56
  // src/init/index.ts
@@ -5,8 +5,8 @@ import {
5
5
  inspectCodeSelectors,
6
6
  inspectPythonSelectors,
7
7
  safePromptEvidencePath
8
- } from "./cli-9250ckvg.js";
9
- import"./cli-ac3p2byq.js";
8
+ } from "./cli-9v0c1xe1.js";
9
+ import"./cli-zp7a97sp.js";
10
10
  import {
11
11
  __commonJS,
12
12
  __toESM
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  selectTenantAndCreateKey
3
- } from "./cli-sq6g0tk5.js";
3
+ } from "./cli-jmsgv705.js";
4
4
  import {
5
5
  loadAuthSession
6
- } from "./cli-kxwm7y62.js";
6
+ } from "./cli-t5v7mhvj.js";
7
7
  import {
8
8
  CliAuthError,
9
9
  resolveIngestUrl,
10
10
  resolveModaBaseUrl,
11
11
  stringOption
12
- } from "./cli-ac3p2byq.js";
12
+ } from "./cli-zp7a97sp.js";
13
13
  import"./cli-0v6na3yp.js";
14
14
 
15
15
  // src/provision.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moda-ai/cli",
3
- "version": "1.55.1",
3
+ "version": "1.55.3",
4
4
  "description": "CLI for Moda - AI agent analytics and observability",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schema_version": "moda.skill_index.v1",
3
- "bundled_at": "2026-10-13T00:08:16.766Z",
4
- "cli_version": "1.55.1",
3
+ "bundled_at": "2026-10-13T07:13:30.060Z",
4
+ "cli_version": "1.55.3",
5
5
  "skills": [
6
6
  {
7
7
  "id": "integration-cloudflare-think",