@outlit/cli 1.7.0 → 1.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/cli.js +294 -28
  2. package/package.json +2 -2
package/dist/cli.js CHANGED
@@ -104,7 +104,7 @@ var package_default;
104
104
  var init_package = __esm(() => {
105
105
  package_default = {
106
106
  name: "@outlit/cli",
107
- version: "1.7.0",
107
+ version: "1.7.1",
108
108
  description: "CLI for Outlit customer intelligence platform",
109
109
  license: "Apache-2.0",
110
110
  repository: {
@@ -135,7 +135,7 @@ var init_package = __esm(() => {
135
135
  },
136
136
  dependencies: {
137
137
  "@clack/prompts": "^1.0.1",
138
- "@outlit/tools": "^0.2.0",
138
+ "@outlit/tools": "^0.2.1",
139
139
  citty: "^0.2.1"
140
140
  },
141
141
  devDependencies: {
@@ -1602,7 +1602,7 @@ function createOutlitClient(options) {
1602
1602
  }
1603
1603
  };
1604
1604
  }
1605
- var customerToolNames, customerSourceTypes, customerSourceTypeAliases, customerSourceTypeInputs, notificationProviderValues, customerToolContracts, customerBillingStatuses, customerFactStatuses, customerFactTypes, unsupportedCustomerFactTypes, customerFactCategories, customerIncludeSections, customerTimeframes, notificationSeverityValues, timelineChannels, timelineTimeframes, userJourneyStages, customerToolNameSet, customerSourceTypeSet, customerSourceTypeAliasMap, iso8601UtcDateTimeRegex, DEFAULT_OUTLIT_API_URL = "https://app.outlit.ai", actionToolNames, defaultAgentToolNames, sqlToolNames, analyticalAgentToolNames;
1605
+ var customerToolNames, customerSourceTypes, customerSourceTypeAliases, customerSourceTypeInputs, customerToolContracts, customerBillingStatuses, customerFactStatuses, customerFactTypes, unsupportedCustomerFactTypes, customerFactCategories, customerIncludeSections, customerTimeframes, notificationProviderValues, notificationSeverityValues, timelineChannels, timelineTimeframes, userJourneyStages, customerToolNameSet, customerSourceTypeSet, customerSourceTypeAliasMap, iso8601UtcDateTimeRegex, DEFAULT_OUTLIT_API_URL = "https://app.outlit.ai", actionToolNames, defaultAgentToolNames, sqlToolNames, analyticalAgentToolNames;
1606
1606
  var init_dist4 = __esm(() => {
1607
1607
  customerToolNames = [
1608
1608
  "outlit_list_customers",
@@ -1612,6 +1612,7 @@ var init_dist4 = __esm(() => {
1612
1612
  "outlit_list_facts",
1613
1613
  "outlit_get_fact",
1614
1614
  "outlit_get_source",
1615
+ "outlit_list_sources",
1615
1616
  "outlit_search_customer_context",
1616
1617
  "outlit_query",
1617
1618
  "outlit_schema",
@@ -1634,7 +1635,6 @@ var init_dist4 = __esm(() => {
1634
1635
  "CRM",
1635
1636
  "CRM_OPPORTUNITY"
1636
1637
  ];
1637
- notificationProviderValues = ["slack"];
1638
1638
  customerToolContracts = {
1639
1639
  outlit_list_customers: {
1640
1640
  toolName: "outlit_list_customers",
@@ -2039,6 +2039,69 @@ var init_dist4 = __esm(() => {
2039
2039
  additionalProperties: false
2040
2040
  }
2041
2041
  },
2042
+ outlit_list_sources: {
2043
+ toolName: "outlit_list_sources",
2044
+ description: "List concrete source records deterministically. Use this instead of semantic search when you need enumerated calls, emails, calendar events, support tickets, or opportunities.",
2045
+ inputSchema: {
2046
+ $schema: "https://json-schema.org/draft/2020-12/schema",
2047
+ type: "object",
2048
+ properties: {
2049
+ sourceType: {
2050
+ description: "Generic source type to list.",
2051
+ type: "string",
2052
+ enum: customerSourceTypeInputs
2053
+ },
2054
+ customer: {
2055
+ description: "Customer ID, domain, or name to scope source listing.",
2056
+ type: "string",
2057
+ minLength: 1,
2058
+ maxLength: 200
2059
+ },
2060
+ after: {
2061
+ description: "ISO 8601 datetime lower bound.",
2062
+ type: "string",
2063
+ format: "date-time",
2064
+ pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
2065
+ },
2066
+ before: {
2067
+ description: "ISO 8601 datetime upper bound.",
2068
+ type: "string",
2069
+ format: "date-time",
2070
+ pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
2071
+ },
2072
+ participant: {
2073
+ description: "Participant email or name to filter source records.",
2074
+ type: "string",
2075
+ minLength: 1,
2076
+ maxLength: 500
2077
+ },
2078
+ provider: {
2079
+ description: "Provider identifier such as gmail, gong, or google-calendar.",
2080
+ type: "string",
2081
+ minLength: 1,
2082
+ maxLength: 200
2083
+ },
2084
+ hasTranscript: {
2085
+ description: "Filter call sources by transcript presence.",
2086
+ type: "boolean"
2087
+ },
2088
+ limit: {
2089
+ description: "Results per page.",
2090
+ default: 50,
2091
+ type: "integer",
2092
+ minimum: 1,
2093
+ maximum: 100
2094
+ },
2095
+ cursor: {
2096
+ description: "Pagination cursor.",
2097
+ type: "string",
2098
+ minLength: 1,
2099
+ maxLength: 2000
2100
+ }
2101
+ },
2102
+ additionalProperties: false
2103
+ }
2104
+ },
2042
2105
  outlit_search_customer_context: {
2043
2106
  toolName: "outlit_search_customer_context",
2044
2107
  description: "Search across all known customer context using a natural-language query. Returns grouped artifact-level results for matching sources and facts. Omit customer to search across all customers in the organization.",
@@ -2210,7 +2273,7 @@ Returns column definitions and example queries for each view.`,
2210
2273
  provider: {
2211
2274
  description: "Notification provider",
2212
2275
  type: "string",
2213
- enum: notificationProviderValues
2276
+ enum: ["slack"]
2214
2277
  },
2215
2278
  channelId: {
2216
2279
  description: "Provider-specific destination channel ID",
@@ -2321,6 +2384,7 @@ Returns column definitions and example queries for each view.`,
2321
2384
  "behaviorMetrics"
2322
2385
  ];
2323
2386
  customerTimeframes = ["7d", "14d", "30d", "90d"];
2387
+ notificationProviderValues = ["slack"];
2324
2388
  notificationSeverityValues = ["low", "medium", "high"];
2325
2389
  timelineChannels = [
2326
2390
  "SDK",
@@ -2541,10 +2605,12 @@ function renderTable(headers, rows, emptyMessage = "(no results)") {
2541
2605
  function renderPaginationHint(pagination, itemCount) {
2542
2606
  if (itemCount === 0)
2543
2607
  return "";
2608
+ const total = typeof pagination.total === "number" ? pagination.total : null;
2544
2609
  if (pagination.hasMore && pagination.nextCursor) {
2545
- return `Showing ${itemCount} of ${pagination.total} total. Next page: --cursor ${pagination.nextCursor}`;
2610
+ const countLabel = total === null ? `${itemCount} results` : `${itemCount} of ${total} total`;
2611
+ return `Showing ${countLabel}. Next page: --cursor ${pagination.nextCursor}`;
2546
2612
  }
2547
- return `Showing all ${pagination.total} results.`;
2613
+ return total === null ? `Showing ${itemCount} results.` : `Showing all ${total} results.`;
2548
2614
  }
2549
2615
  var BOX;
2550
2616
  var init_table = __esm(() => {
@@ -2601,10 +2667,11 @@ async function pingApiKey(apiKey) {
2601
2667
  const message = payload?.error ?? (text.length > 0 ? text : `API error (${response.status})`);
2602
2668
  throw new Error(message);
2603
2669
  }
2670
+ return payload;
2604
2671
  }
2605
2672
  async function validateKeyOrExit(apiKey, json) {
2606
2673
  try {
2607
- await pingApiKey(apiKey);
2674
+ return await pingApiKey(apiKey);
2608
2675
  } catch (err) {
2609
2676
  return outputError({
2610
2677
  message: `API key is invalid or expired: ${errorMessage(err, "unknown error")}`,
@@ -2931,9 +2998,18 @@ var init_whoami = __esm(() => {
2931
2998
  const json = !!args.json;
2932
2999
  const credential = requireCredential(args["api-key"], json);
2933
3000
  const masked = maskKey(credential.key);
2934
- await validateKeyOrExit(credential.key, json);
3001
+ const validation = await validateKeyOrExit(credential.key, json);
2935
3002
  if (isJsonMode(json)) {
2936
- return outputResult({ key: masked, source: credential.source, valid: true });
3003
+ return outputResult({
3004
+ key: masked,
3005
+ source: credential.source,
3006
+ valid: true,
3007
+ organizationId: validation.organizationId,
3008
+ createdById: validation.createdById,
3009
+ organization: validation.organization,
3010
+ createdBy: validation.createdBy,
3011
+ apiKey: validation.apiKey
3012
+ });
2937
3013
  }
2938
3014
  process.stdout.write(`${masked} (${credential.source})
2939
3015
  `);
@@ -4877,12 +4953,183 @@ var init_facts = __esm(() => {
4877
4953
  });
4878
4954
  });
4879
4955
 
4956
+ // src/commands/sources/list.ts
4957
+ var exports_list4 = {};
4958
+ __export(exports_list4, {
4959
+ default: () => list_default4
4960
+ });
4961
+ function parseLimit(value, json) {
4962
+ if (!value)
4963
+ return;
4964
+ const limit = Number(value);
4965
+ if (!Number.isInteger(limit) || limit < 1 || limit > 100) {
4966
+ outputError({
4967
+ message: `--limit must be an integer between 1 and 100 (got: ${value})`,
4968
+ code: "invalid_input"
4969
+ }, json);
4970
+ return;
4971
+ }
4972
+ return limit;
4973
+ }
4974
+ function parseDateArg(name, value, json) {
4975
+ if (!value)
4976
+ return null;
4977
+ if (!ISO_8601_UTC_DATE_TIME_REGEX.test(value)) {
4978
+ outputError({
4979
+ message: `${name} must be a valid ISO 8601 UTC datetime`,
4980
+ code: "invalid_input"
4981
+ }, json);
4982
+ return null;
4983
+ }
4984
+ const date = new Date(value);
4985
+ if (Number.isNaN(date.getTime())) {
4986
+ outputError({
4987
+ message: `${name} must be a valid ISO 8601 datetime`,
4988
+ code: "invalid_input"
4989
+ }, json);
4990
+ return null;
4991
+ }
4992
+ return date;
4993
+ }
4994
+ var sourceTypeDescription2, ISO_8601_UTC_DATE_TIME_REGEX, list_default4;
4995
+ var init_list4 = __esm(() => {
4996
+ init_dist4();
4997
+ init_dist();
4998
+ init_auth();
4999
+ init_output2();
5000
+ init_api();
5001
+ init_output();
5002
+ sourceTypeDescription2 = `${customerSourceTypes.join(", ")} (aliases: ${customerSourceTypeAliases.join(", ")})`;
5003
+ ISO_8601_UTC_DATE_TIME_REGEX = /^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/;
5004
+ list_default4 = defineCommand2({
5005
+ meta: {
5006
+ name: "list",
5007
+ description: [
5008
+ "List concrete source records deterministically.",
5009
+ "",
5010
+ "Use this when you need enumerated calls, emails, calendar events, support tickets, or opportunities rather than semantic ranking.",
5011
+ "",
5012
+ "Examples:",
5013
+ " outlit sources list --customer acme.com --source-type CALL",
5014
+ " outlit sources list --participant alice@acme.com --source-type CALENDAR_EVENT --json",
5015
+ " outlit sources list --after 2026-01-01T00:00:00Z --limit 25",
5016
+ "",
5017
+ `Source types: ${sourceTypeDescription2}`,
5018
+ "",
5019
+ AGENT_JSON_HINT
5020
+ ].join(`
5021
+ `)
5022
+ },
5023
+ args: {
5024
+ ...authArgs,
5025
+ ...outputArgs,
5026
+ "source-type": {
5027
+ type: "string",
5028
+ description: `Source type (${sourceTypeDescription2})`
5029
+ },
5030
+ customer: {
5031
+ type: "string",
5032
+ description: "Customer UUID, domain, or name to scope source listing"
5033
+ },
5034
+ participant: {
5035
+ type: "string",
5036
+ description: "Participant email or name to filter source records"
5037
+ },
5038
+ provider: {
5039
+ type: "string",
5040
+ description: "Provider identifier such as gmail, gong, or google-calendar"
5041
+ },
5042
+ "has-transcript": {
5043
+ type: "boolean",
5044
+ description: "Only list call sources with a finalized transcript"
5045
+ },
5046
+ after: {
5047
+ type: "string",
5048
+ description: "Filter to sources occurring after this ISO 8601 datetime"
5049
+ },
5050
+ before: {
5051
+ type: "string",
5052
+ description: "Filter to sources occurring before this ISO 8601 datetime"
5053
+ },
5054
+ limit: {
5055
+ type: "string",
5056
+ description: "Results per page (1-100). Default: 50."
5057
+ },
5058
+ cursor: {
5059
+ type: "string",
5060
+ description: "Pagination cursor from a previous response (pagination.nextCursor)"
5061
+ }
5062
+ },
5063
+ async run({ args }) {
5064
+ const json = !!args.json;
5065
+ const sourceType = args["source-type"] ? normalizeCustomerSourceType(args["source-type"]) : undefined;
5066
+ if (args["source-type"] && !sourceType) {
5067
+ return outputError({
5068
+ message: `--source-type must be one of ${customerSourceTypeInputs.join(", ")}`,
5069
+ code: "invalid_input"
5070
+ }, json);
5071
+ }
5072
+ if (args["has-transcript"] && sourceType && sourceType !== "CALL") {
5073
+ return outputError({
5074
+ message: "--has-transcript can only be used with CALL sources",
5075
+ code: "invalid_input"
5076
+ }, json);
5077
+ }
5078
+ const afterDate = parseDateArg("--after", args.after, json);
5079
+ if (args.after && !afterDate)
5080
+ return;
5081
+ const beforeDate = parseDateArg("--before", args.before, json);
5082
+ if (args.before && !beforeDate)
5083
+ return;
5084
+ if (afterDate && beforeDate && afterDate.getTime() > beforeDate.getTime()) {
5085
+ return outputError({
5086
+ message: "--after must be before or equal to --before",
5087
+ code: "invalid_input"
5088
+ }, json);
5089
+ }
5090
+ const limit = parseLimit(args.limit, json);
5091
+ if (args.limit && !limit)
5092
+ return;
5093
+ const client = await getClientOrExit(args["api-key"], json);
5094
+ const params = {};
5095
+ if (sourceType)
5096
+ params.sourceType = sourceType;
5097
+ if (args.customer)
5098
+ params.customer = args.customer;
5099
+ if (args.participant)
5100
+ params.participant = args.participant;
5101
+ if (args.provider)
5102
+ params.provider = args.provider;
5103
+ if (args["has-transcript"])
5104
+ params.hasTranscript = true;
5105
+ if (args.after)
5106
+ params.after = args.after;
5107
+ if (args.before)
5108
+ params.before = args.before;
5109
+ if (limit)
5110
+ params.limit = limit;
5111
+ if (args.cursor)
5112
+ params.cursor = args.cursor;
5113
+ return runTool(client, customerToolContracts.outlit_list_sources.toolName, params, json, {
5114
+ table: {
5115
+ columns: [
5116
+ { header: "TYPE", key: "sourceType" },
5117
+ { header: "OCCURRED", key: "occurredAt" },
5118
+ { header: "TITLE", key: "title" },
5119
+ { header: "SOURCE ID", key: "sourceId" }
5120
+ ]
5121
+ }
5122
+ });
5123
+ }
5124
+ });
5125
+ });
5126
+
4880
5127
  // src/commands/sources/get.ts
4881
5128
  var exports_get3 = {};
4882
5129
  __export(exports_get3, {
4883
5130
  default: () => get_default3
4884
5131
  });
4885
- var sourceTypeDescription2, get_default3;
5132
+ var sourceTypeDescription3, get_default3;
4886
5133
  var init_get3 = __esm(() => {
4887
5134
  init_dist4();
4888
5135
  init_dist();
@@ -4890,19 +5137,21 @@ var init_get3 = __esm(() => {
4890
5137
  init_output2();
4891
5138
  init_api();
4892
5139
  init_output();
4893
- sourceTypeDescription2 = `${customerSourceTypes.join(", ")} (aliases: ${customerSourceTypeAliases.join(", ")})`;
5140
+ sourceTypeDescription3 = `${customerSourceTypes.join(", ")} (aliases: ${customerSourceTypeAliases.join(", ")})`;
4894
5141
  get_default3 = defineCommand2({
4895
5142
  meta: {
4896
5143
  name: "get",
4897
5144
  description: [
4898
5145
  "Get one exact source by source type and source id.",
5146
+ "Returns the same normalized source envelope as `sources list`, with more detailed source-specific fields when available.",
4899
5147
  "",
4900
5148
  "Examples:",
4901
5149
  " outlit sources get --source-type CALL --source-id call_123",
4902
5150
  " outlit sources get --source-type OPPORTUNITY --source-id opp_123",
4903
5151
  " outlit sources get --source-type SUPPORT_TICKET --source-id ticket_456 --json",
4904
5152
  "",
4905
- `Source types: ${sourceTypeDescription2}`,
5153
+ `Source types: ${sourceTypeDescription3}`,
5154
+ "Use `outlit sources list` when you need deterministic enumeration rather than exact lookup.",
4906
5155
  "",
4907
5156
  AGENT_JSON_HINT
4908
5157
  ].join(`
@@ -4913,7 +5162,7 @@ var init_get3 = __esm(() => {
4913
5162
  ...outputArgs,
4914
5163
  "source-type": {
4915
5164
  type: "string",
4916
- description: `Source type (${sourceTypeDescription2})`,
5165
+ description: `Source type (${sourceTypeDescription3})`,
4917
5166
  required: true
4918
5167
  },
4919
5168
  "source-id": {
@@ -4953,9 +5202,10 @@ var init_sources = __esm(() => {
4953
5202
  meta: {
4954
5203
  name: "sources",
4955
5204
  description: [
4956
- "Fetch concrete customer sources by type and id.",
5205
+ "List or fetch concrete customer source records.",
4957
5206
  "",
4958
5207
  "Subcommands:",
5208
+ " list -- list source records with deterministic filters",
4959
5209
  " get -- fetch one exact source by sourceType and sourceId",
4960
5210
  "",
4961
5211
  AGENT_JSON_HINT
@@ -4963,6 +5213,7 @@ var init_sources = __esm(() => {
4963
5213
  `)
4964
5214
  },
4965
5215
  subCommands: {
5216
+ list: () => Promise.resolve().then(() => (init_list4(), exports_list4)).then((m) => m.default),
4966
5217
  get: () => Promise.resolve().then(() => (init_get3(), exports_get3)).then((m) => m.default)
4967
5218
  }
4968
5219
  });
@@ -4973,7 +5224,7 @@ var exports_search = {};
4973
5224
  __export(exports_search, {
4974
5225
  default: () => search_default
4975
5226
  });
4976
- var sourceTypeDescription3, search_default;
5227
+ var sourceTypeDescription4, search_default;
4977
5228
  var init_search = __esm(() => {
4978
5229
  init_dist4();
4979
5230
  init_dist();
@@ -4982,7 +5233,7 @@ var init_search = __esm(() => {
4982
5233
  init_api();
4983
5234
  init_config();
4984
5235
  init_output();
4985
- sourceTypeDescription3 = `${customerSourceTypes.join(", ")} (aliases: ${customerSourceTypeAliases.join(", ")})`;
5236
+ sourceTypeDescription4 = `${customerSourceTypes.join(", ")} (aliases: ${customerSourceTypeAliases.join(", ")})`;
4986
5237
  search_default = defineCommand2({
4987
5238
  meta: {
4988
5239
  name: "search",
@@ -4990,6 +5241,7 @@ var init_search = __esm(() => {
4990
5241
  "Search customer context using natural language.",
4991
5242
  "",
4992
5243
  "Performs a semantic search over grouped source and fact results.",
5244
+ "Use `outlit sources list` when you need deterministic source enumeration rather than semantic ranking.",
4993
5245
  "Optionally scope to a specific customer with --customer.",
4994
5246
  "",
4995
5247
  "Examples:",
@@ -5029,7 +5281,7 @@ var init_search = __esm(() => {
5029
5281
  },
5030
5282
  "source-types": {
5031
5283
  type: "string",
5032
- description: `Comma-separated generic source type filter (${sourceTypeDescription3})`
5284
+ description: `Comma-separated generic source type filter (${sourceTypeDescription4})`
5033
5285
  }
5034
5286
  },
5035
5287
  async run({ args }) {
@@ -5548,17 +5800,17 @@ var init_providers = __esm(() => {
5548
5800
  });
5549
5801
 
5550
5802
  // src/commands/integrations/list.ts
5551
- var exports_list4 = {};
5552
- __export(exports_list4, {
5553
- default: () => list_default4
5803
+ var exports_list5 = {};
5804
+ __export(exports_list5, {
5805
+ default: () => list_default5
5554
5806
  });
5555
- var list_default4;
5556
- var init_list4 = __esm(() => {
5807
+ var list_default5;
5808
+ var init_list5 = __esm(() => {
5557
5809
  init_dist();
5558
5810
  init_auth();
5559
5811
  init_output2();
5560
5812
  init_api();
5561
- list_default4 = defineCommand2({
5813
+ list_default5 = defineCommand2({
5562
5814
  meta: {
5563
5815
  name: "list",
5564
5816
  description: [
@@ -6032,7 +6284,7 @@ var init_integrations = __esm(() => {
6032
6284
  `)
6033
6285
  },
6034
6286
  subCommands: {
6035
- list: () => Promise.resolve().then(() => (init_list4(), exports_list4)).then((m) => m.default),
6287
+ list: () => Promise.resolve().then(() => (init_list5(), exports_list5)).then((m) => m.default),
6036
6288
  add: () => Promise.resolve().then(() => (init_add(), exports_add)).then((m) => m.default),
6037
6289
  remove: () => Promise.resolve().then(() => (init_remove(), exports_remove)).then((m) => m.default),
6038
6290
  status: () => Promise.resolve().then(() => (init_status2(), exports_status2)).then((m) => m.default)
@@ -6237,8 +6489,8 @@ function generateFish() {
6237
6489
  }
6238
6490
  }
6239
6491
  }
6240
- return lines.join(`
6241
- `) + `
6492
+ return `${lines.join(`
6493
+ `)}
6242
6494
  `;
6243
6495
  }
6244
6496
  var JSON_F, API_KEY_F, LIMIT_F, CURSOR_F, COMMON, PAGINATED, ACTIVITY_ORDER, COMMANDS, cmdsWithSubs, leafCmds, SCRIPTS, completions_default;
@@ -6361,8 +6613,22 @@ var init_completions = __esm(() => {
6361
6613
  },
6362
6614
  {
6363
6615
  name: "sources",
6364
- desc: "Get a concrete source by type and id",
6616
+ desc: "List or fetch concrete source records",
6365
6617
  subs: [
6618
+ {
6619
+ name: "list",
6620
+ desc: "List source records",
6621
+ flags: [
6622
+ ...PAGINATED,
6623
+ { name: "--source-type", desc: "Source type" },
6624
+ { name: "--customer", desc: "Scope to customer" },
6625
+ { name: "--participant", desc: "Filter by participant" },
6626
+ { name: "--provider", desc: "Filter by provider" },
6627
+ { name: "--has-transcript", desc: "Only calls with transcripts" },
6628
+ { name: "--after", desc: "Sources after date (ISO 8601)" },
6629
+ { name: "--before", desc: "Sources before date (ISO 8601)" }
6630
+ ]
6631
+ },
6366
6632
  {
6367
6633
  name: "get",
6368
6634
  desc: "Get one exact source record",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@outlit/cli",
3
- "version": "1.7.0",
3
+ "version": "1.7.1",
4
4
  "description": "CLI for Outlit customer intelligence platform",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -31,7 +31,7 @@
31
31
  },
32
32
  "dependencies": {
33
33
  "@clack/prompts": "^1.0.1",
34
- "@outlit/tools": "^0.2.0",
34
+ "@outlit/tools": "^0.2.1",
35
35
  "citty": "^0.2.1"
36
36
  },
37
37
  "devDependencies": {