@outlit/cli 3.2.1 → 3.2.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/dist/cli.js +1024 -60
- 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: "3.2.
|
|
107
|
+
version: "3.2.3",
|
|
108
108
|
description: "CLI for querying Outlit customer context and installing agent skills",
|
|
109
109
|
license: "Apache-2.0",
|
|
110
110
|
repository: {
|
|
@@ -147,7 +147,7 @@ var init_package = __esm(() => {
|
|
|
147
147
|
},
|
|
148
148
|
dependencies: {
|
|
149
149
|
"@clack/prompts": "^1.0.1",
|
|
150
|
-
"@outlit/tools": "^2.2.
|
|
150
|
+
"@outlit/tools": "^2.2.2",
|
|
151
151
|
citty: "^0.2.1"
|
|
152
152
|
},
|
|
153
153
|
devDependencies: {
|
|
@@ -1742,6 +1742,7 @@ var init_dist4 = __esm(() => {
|
|
|
1742
1742
|
"outlit_enable_destination",
|
|
1743
1743
|
"outlit_disable_destination",
|
|
1744
1744
|
"outlit_archive_destination",
|
|
1745
|
+
"outlit_submit_feedback",
|
|
1745
1746
|
"outlit_get_integration_capabilities",
|
|
1746
1747
|
"outlit_begin_integration_setup",
|
|
1747
1748
|
"outlit_get_integration_setup_status",
|
|
@@ -1773,6 +1774,10 @@ var init_dist4 = __esm(() => {
|
|
|
1773
1774
|
ownerDomain: "customers",
|
|
1774
1775
|
title: "List Customers",
|
|
1775
1776
|
description: "Browse and filter customers. Use this to find customers by billing status, activity recency, revenue, or name. Returns a paginated list with summary info (MRR, last activity, status).",
|
|
1777
|
+
annotations: {
|
|
1778
|
+
readOnlyHint: true,
|
|
1779
|
+
destructiveHint: false
|
|
1780
|
+
},
|
|
1776
1781
|
inputSchema: {
|
|
1777
1782
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
1778
1783
|
type: "object",
|
|
@@ -2094,6 +2099,10 @@ var init_dist4 = __esm(() => {
|
|
|
2094
2099
|
ownerDomain: "users",
|
|
2095
2100
|
title: "List Users",
|
|
2096
2101
|
description: "Browse and filter users. Use this to find users by journey stage, activity recency, customer, or email/name. Returns a paginated list with activity info.",
|
|
2102
|
+
annotations: {
|
|
2103
|
+
readOnlyHint: true,
|
|
2104
|
+
destructiveHint: false
|
|
2105
|
+
},
|
|
2097
2106
|
inputSchema: {
|
|
2098
2107
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
2099
2108
|
type: "object",
|
|
@@ -2374,6 +2383,10 @@ var init_dist4 = __esm(() => {
|
|
|
2374
2383
|
ownerDomain: "users",
|
|
2375
2384
|
title: "List Workspace Users",
|
|
2376
2385
|
description: "List active workspace members who resolve to local Outlit users. Use this to discover exact user IDs for customer ownership and access commands or to browse account ownership.",
|
|
2386
|
+
annotations: {
|
|
2387
|
+
readOnlyHint: true,
|
|
2388
|
+
destructiveHint: false
|
|
2389
|
+
},
|
|
2377
2390
|
inputSchema: {
|
|
2378
2391
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
2379
2392
|
type: "object",
|
|
@@ -2561,6 +2574,10 @@ var init_dist4 = __esm(() => {
|
|
|
2561
2574
|
ownerDomain: "customers",
|
|
2562
2575
|
title: "Get Customer",
|
|
2563
2576
|
description: "Get full details for a single customer. Optionally include users, revenue, recent activity, engagement metrics, or company enrichment.",
|
|
2577
|
+
annotations: {
|
|
2578
|
+
readOnlyHint: true,
|
|
2579
|
+
destructiveHint: false
|
|
2580
|
+
},
|
|
2564
2581
|
inputSchema: {
|
|
2565
2582
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
2566
2583
|
type: "object",
|
|
@@ -3363,6 +3380,10 @@ var init_dist4 = __esm(() => {
|
|
|
3363
3380
|
ownerDomain: "customers",
|
|
3364
3381
|
title: "Get Customer Relationship",
|
|
3365
3382
|
description: "Get the bounded, evidence-backed relationship shown on a customer page. Returns a summary, categorized current statements with ISO observed-at timestamps when supported, source labels, and the compiled summary timestamp when available without raw facts, quotes, or internal status.",
|
|
3383
|
+
annotations: {
|
|
3384
|
+
readOnlyHint: true,
|
|
3385
|
+
destructiveHint: false
|
|
3386
|
+
},
|
|
3366
3387
|
inputSchema: {
|
|
3367
3388
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
3368
3389
|
type: "object",
|
|
@@ -3514,6 +3535,10 @@ var init_dist4 = __esm(() => {
|
|
|
3514
3535
|
ownerDomain: "customers",
|
|
3515
3536
|
title: "Assign Customer Owner",
|
|
3516
3537
|
description: "Assign an active workspace member as this customer’s primary owner. The former owner keeps Editor access.",
|
|
3538
|
+
annotations: {
|
|
3539
|
+
readOnlyHint: false,
|
|
3540
|
+
destructiveHint: false
|
|
3541
|
+
},
|
|
3517
3542
|
inputSchema: {
|
|
3518
3543
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
3519
3544
|
type: "object",
|
|
@@ -3570,6 +3595,10 @@ var init_dist4 = __esm(() => {
|
|
|
3570
3595
|
ownerDomain: "customers",
|
|
3571
3596
|
title: "Grant Customer Access",
|
|
3572
3597
|
description: "Share a customer with an active workspace member as a Viewer or Editor. The customer ID must be exact.",
|
|
3598
|
+
annotations: {
|
|
3599
|
+
readOnlyHint: false,
|
|
3600
|
+
destructiveHint: false
|
|
3601
|
+
},
|
|
3573
3602
|
inputSchema: {
|
|
3574
3603
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
3575
3604
|
type: "object",
|
|
@@ -3651,6 +3680,10 @@ var init_dist4 = __esm(() => {
|
|
|
3651
3680
|
ownerDomain: "customers",
|
|
3652
3681
|
title: "Update Customer Access",
|
|
3653
3682
|
description: "Change an existing customer collaborator between Viewer and Editor.",
|
|
3683
|
+
annotations: {
|
|
3684
|
+
readOnlyHint: false,
|
|
3685
|
+
destructiveHint: false
|
|
3686
|
+
},
|
|
3654
3687
|
inputSchema: {
|
|
3655
3688
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
3656
3689
|
type: "object",
|
|
@@ -3732,6 +3765,10 @@ var init_dist4 = __esm(() => {
|
|
|
3732
3765
|
ownerDomain: "customers",
|
|
3733
3766
|
title: "Revoke Customer Access",
|
|
3734
3767
|
description: "Remove a collaborator’s explicit access to a customer.",
|
|
3768
|
+
annotations: {
|
|
3769
|
+
readOnlyHint: false,
|
|
3770
|
+
destructiveHint: true
|
|
3771
|
+
},
|
|
3735
3772
|
inputSchema: {
|
|
3736
3773
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
3737
3774
|
type: "object",
|
|
@@ -3776,7 +3813,11 @@ var init_dist4 = __esm(() => {
|
|
|
3776
3813
|
commandVersion: 1,
|
|
3777
3814
|
ownerDomain: "customer-context",
|
|
3778
3815
|
title: "Get Customer Timeline",
|
|
3779
|
-
description:
|
|
3816
|
+
description: 'Get the chronological activity timeline for a customer — compact event entries by default, so unfiltered calls stay small. When channels is omitted the response covers the relationship chronology (communication, meetings, support, CRM, billing). Pass channels:["PRODUCT"] to add a weekly product-usage aggregate; set productDetail to "material" or "raw" to also return individual product events. Set includeMetadata:true only when a specific event metadata field is needed; pass sourceType/sourceId or sourceRef to outlit_get_source to read a full underlying record.',
|
|
3817
|
+
annotations: {
|
|
3818
|
+
readOnlyHint: true,
|
|
3819
|
+
destructiveHint: false
|
|
3820
|
+
},
|
|
3780
3821
|
inputSchema: {
|
|
3781
3822
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
3782
3823
|
type: "object",
|
|
@@ -3788,7 +3829,7 @@ var init_dist4 = __esm(() => {
|
|
|
3788
3829
|
description: "Customer ID or domain"
|
|
3789
3830
|
},
|
|
3790
3831
|
channels: {
|
|
3791
|
-
description:
|
|
3832
|
+
description: 'Filter by event channel. When omitted, defaults to the relationship channels COMMUNICATION, MEETING, SUPPORT, CRM, and BILLING. PRODUCT, IDENTITY, DOCUMENT, and SYSTEM are included only when listed here. Pass channels:["PRODUCT"] to read the weekly product usage aggregate, and combine with productDetail to also return individual product events.',
|
|
3792
3833
|
type: "array",
|
|
3793
3834
|
items: {
|
|
3794
3835
|
type: "string",
|
|
@@ -3805,6 +3846,19 @@ var init_dist4 = __esm(() => {
|
|
|
3805
3846
|
]
|
|
3806
3847
|
}
|
|
3807
3848
|
},
|
|
3849
|
+
productDetail: {
|
|
3850
|
+
description: 'Controls whether PRODUCT-channel rows appear in `events` when channels includes PRODUCT. "none" (default): product activity is returned only as the `product` weekly usage aggregate — no product telemetry rows. "material": also include individual product events that match the organization\'s configured value-feature event names (each keeps an `id` usable for citations); when the organization has no configured value features this returns no product rows, but the `product` aggregate is still returned. "raw": include every product event, including autocapture, pageview, feature-flag, and identity telemetry — large; request only when the aggregate and material events are insufficient.',
|
|
3851
|
+
type: "string",
|
|
3852
|
+
enum: [
|
|
3853
|
+
"none",
|
|
3854
|
+
"material",
|
|
3855
|
+
"raw"
|
|
3856
|
+
]
|
|
3857
|
+
},
|
|
3858
|
+
includeMetadata: {
|
|
3859
|
+
description: "Include each event's raw metadata/properties payload. Default false: events return compact fields only, keeping the response small. Pass true only when a specific metadata field is needed.",
|
|
3860
|
+
type: "boolean"
|
|
3861
|
+
},
|
|
3808
3862
|
eventTypes: {
|
|
3809
3863
|
description: "Filter by event type",
|
|
3810
3864
|
type: "array",
|
|
@@ -3861,7 +3915,8 @@ var init_dist4 = __esm(() => {
|
|
|
3861
3915
|
type: "object",
|
|
3862
3916
|
properties: {
|
|
3863
3917
|
id: {
|
|
3864
|
-
type: "string"
|
|
3918
|
+
type: "string",
|
|
3919
|
+
description: "Stable event identifier. Pass as timeline_event eventId when citing this event."
|
|
3865
3920
|
},
|
|
3866
3921
|
eventType: {
|
|
3867
3922
|
type: "string"
|
|
@@ -3901,7 +3956,8 @@ var init_dist4 = __esm(() => {
|
|
|
3901
3956
|
{
|
|
3902
3957
|
type: "null"
|
|
3903
3958
|
}
|
|
3904
|
-
]
|
|
3959
|
+
],
|
|
3960
|
+
description: "Bounded display summary, truncated past roughly 2 KB. Use outlit_get_source on sourceType/sourceId for the full underlying content."
|
|
3905
3961
|
},
|
|
3906
3962
|
occurredAt: {
|
|
3907
3963
|
type: "string",
|
|
@@ -3939,6 +3995,7 @@ var init_dist4 = __esm(() => {
|
|
|
3939
3995
|
]
|
|
3940
3996
|
},
|
|
3941
3997
|
sourceRef: {
|
|
3998
|
+
description: "Canonical source handle for this event, emitted only when outlit_get_source can retrieve the underlying record; omitted when the event is marked unreadable.",
|
|
3942
3999
|
type: "object",
|
|
3943
4000
|
properties: {
|
|
3944
4001
|
sourceType: {
|
|
@@ -3954,7 +4011,17 @@ var init_dist4 = __esm(() => {
|
|
|
3954
4011
|
],
|
|
3955
4012
|
additionalProperties: false
|
|
3956
4013
|
},
|
|
4014
|
+
unreadable: {
|
|
4015
|
+
description: "Present only when the event's underlying source record cannot be retrieved via outlit_get_source. Do not retry source lookups for this event.",
|
|
4016
|
+
type: "boolean",
|
|
4017
|
+
const: true
|
|
4018
|
+
},
|
|
4019
|
+
unreadableReason: {
|
|
4020
|
+
description: "Why the event's source is unreadable, e.g. unresolved_source or ambiguous_source.",
|
|
4021
|
+
type: "string"
|
|
4022
|
+
},
|
|
3957
4023
|
metadata: {
|
|
4024
|
+
description: "Raw event properties. Present only when the request set includeMetadata:true.",
|
|
3958
4025
|
type: "object",
|
|
3959
4026
|
propertyNames: {
|
|
3960
4027
|
type: "string"
|
|
@@ -3972,8 +4039,7 @@ var init_dist4 = __esm(() => {
|
|
|
3972
4039
|
"occurredAt",
|
|
3973
4040
|
"contact",
|
|
3974
4041
|
"sourceType",
|
|
3975
|
-
"sourceId"
|
|
3976
|
-
"metadata"
|
|
4042
|
+
"sourceId"
|
|
3977
4043
|
],
|
|
3978
4044
|
additionalProperties: false
|
|
3979
4045
|
}
|
|
@@ -3993,11 +4059,112 @@ var init_dist4 = __esm(() => {
|
|
|
3993
4059
|
type: "null"
|
|
3994
4060
|
}
|
|
3995
4061
|
]
|
|
4062
|
+
},
|
|
4063
|
+
effectiveLimit: {
|
|
4064
|
+
type: "integer",
|
|
4065
|
+
minimum: 1,
|
|
4066
|
+
maximum: 9007199254740991,
|
|
4067
|
+
description: "The maximum number of events a page of this response can contain. Responses can hold fewer events than requested when hosted response-size limits apply; callers should rely on pagination.hasMore/nextCursor rather than event count to detect truncation."
|
|
3996
4068
|
}
|
|
3997
4069
|
},
|
|
3998
4070
|
required: [
|
|
3999
4071
|
"hasMore",
|
|
4000
|
-
"nextCursor"
|
|
4072
|
+
"nextCursor",
|
|
4073
|
+
"effectiveLimit"
|
|
4074
|
+
],
|
|
4075
|
+
additionalProperties: false
|
|
4076
|
+
},
|
|
4077
|
+
product: {
|
|
4078
|
+
description: 'Present when the request\'s channels include PRODUCT. Weekly product usage aggregate for the requested window: value-feature event counts and distinct active users per UTC week, plus the window\'s top value-feature event names. Individual product events appear in `events` only when productDetail is "material" or "raw".',
|
|
4079
|
+
type: "object",
|
|
4080
|
+
properties: {
|
|
4081
|
+
windowStartAt: {
|
|
4082
|
+
type: "string",
|
|
4083
|
+
format: "date-time",
|
|
4084
|
+
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))$",
|
|
4085
|
+
description: "Start of the aggregate coverage window: the UTC week containing the requested start (or the earliest retained week)."
|
|
4086
|
+
},
|
|
4087
|
+
windowEndAt: {
|
|
4088
|
+
type: "string",
|
|
4089
|
+
format: "date-time",
|
|
4090
|
+
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))$",
|
|
4091
|
+
description: "End of the aggregate coverage window (the request end bound)"
|
|
4092
|
+
},
|
|
4093
|
+
weeklyBuckets: {
|
|
4094
|
+
type: "array",
|
|
4095
|
+
items: {
|
|
4096
|
+
type: "object",
|
|
4097
|
+
properties: {
|
|
4098
|
+
weekStartAt: {
|
|
4099
|
+
type: "string",
|
|
4100
|
+
format: "date-time",
|
|
4101
|
+
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))$",
|
|
4102
|
+
description: "Start of the bucket's UTC week (Monday 00:00:00Z)"
|
|
4103
|
+
},
|
|
4104
|
+
events: {
|
|
4105
|
+
type: "integer",
|
|
4106
|
+
minimum: 0,
|
|
4107
|
+
maximum: 9007199254740991,
|
|
4108
|
+
description: "Events in this week matching the organization's configured value features"
|
|
4109
|
+
},
|
|
4110
|
+
activeUsers: {
|
|
4111
|
+
type: "integer",
|
|
4112
|
+
minimum: 0,
|
|
4113
|
+
maximum: 9007199254740991,
|
|
4114
|
+
description: "Distinct users with product activity this week"
|
|
4115
|
+
}
|
|
4116
|
+
},
|
|
4117
|
+
required: [
|
|
4118
|
+
"weekStartAt",
|
|
4119
|
+
"events",
|
|
4120
|
+
"activeUsers"
|
|
4121
|
+
],
|
|
4122
|
+
additionalProperties: false
|
|
4123
|
+
},
|
|
4124
|
+
description: "UTC week buckets covering the requested window, oldest first"
|
|
4125
|
+
},
|
|
4126
|
+
topEventNames: {
|
|
4127
|
+
type: "array",
|
|
4128
|
+
items: {
|
|
4129
|
+
type: "object",
|
|
4130
|
+
properties: {
|
|
4131
|
+
eventName: {
|
|
4132
|
+
type: "string"
|
|
4133
|
+
},
|
|
4134
|
+
events: {
|
|
4135
|
+
type: "integer",
|
|
4136
|
+
minimum: 0,
|
|
4137
|
+
maximum: 9007199254740991
|
|
4138
|
+
}
|
|
4139
|
+
},
|
|
4140
|
+
required: [
|
|
4141
|
+
"eventName",
|
|
4142
|
+
"events"
|
|
4143
|
+
],
|
|
4144
|
+
additionalProperties: false
|
|
4145
|
+
},
|
|
4146
|
+
description: "Most frequent configured value-feature event names across the window"
|
|
4147
|
+
}
|
|
4148
|
+
},
|
|
4149
|
+
required: [
|
|
4150
|
+
"windowStartAt",
|
|
4151
|
+
"windowEndAt",
|
|
4152
|
+
"weeklyBuckets",
|
|
4153
|
+
"topEventNames"
|
|
4154
|
+
],
|
|
4155
|
+
additionalProperties: false
|
|
4156
|
+
},
|
|
4157
|
+
productUnavailable: {
|
|
4158
|
+
description: "Present only when channels included PRODUCT but the weekly usage aggregate could not be computed. Report product usage as unavailable — never as zero or absent usage. When configured value-feature names are still known, material product events are returned in `events` instead of the aggregate.",
|
|
4159
|
+
type: "object",
|
|
4160
|
+
properties: {
|
|
4161
|
+
reason: {
|
|
4162
|
+
type: "string",
|
|
4163
|
+
description: "Machine-readable reason the usage aggregate could not be computed"
|
|
4164
|
+
}
|
|
4165
|
+
},
|
|
4166
|
+
required: [
|
|
4167
|
+
"reason"
|
|
4001
4168
|
],
|
|
4002
4169
|
additionalProperties: false
|
|
4003
4170
|
}
|
|
@@ -4016,6 +4183,10 @@ var init_dist4 = __esm(() => {
|
|
|
4016
4183
|
ownerDomain: "customer-context",
|
|
4017
4184
|
title: "List Customer Facts",
|
|
4018
4185
|
description: "List structured facts known about a customer. Use filters like status, sourceTypes, factTypes, factCategories, and date bounds to narrow the result set. For topic-specific retrieval, use outlit_search_customer_context instead.",
|
|
4186
|
+
annotations: {
|
|
4187
|
+
readOnlyHint: true,
|
|
4188
|
+
destructiveHint: false
|
|
4189
|
+
},
|
|
4019
4190
|
inputSchema: {
|
|
4020
4191
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
4021
4192
|
type: "object",
|
|
@@ -4702,6 +4873,10 @@ CHAMPION_RISK: Historical broad relationship-risk fact retained for existing row
|
|
|
4702
4873
|
ownerDomain: "customer-context",
|
|
4703
4874
|
title: "Get Customer Fact",
|
|
4704
4875
|
description: "Get one exact fact by ID. Returns the canonical fact shape and optionally expands requested related data such as evidence.",
|
|
4876
|
+
annotations: {
|
|
4877
|
+
readOnlyHint: true,
|
|
4878
|
+
destructiveHint: false
|
|
4879
|
+
},
|
|
4705
4880
|
inputSchema: {
|
|
4706
4881
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
4707
4882
|
type: "object",
|
|
@@ -5204,6 +5379,10 @@ CHAMPION_RISK: Historical broad relationship-risk fact retained for existing row
|
|
|
5204
5379
|
ownerDomain: "customer-context",
|
|
5205
5380
|
title: "Get Source",
|
|
5206
5381
|
description: "Get one exact source record by generic sourceType and sourceId. Use this when you already know the concrete underlying source you want to inspect.",
|
|
5382
|
+
annotations: {
|
|
5383
|
+
readOnlyHint: true,
|
|
5384
|
+
destructiveHint: false
|
|
5385
|
+
},
|
|
5207
5386
|
inputSchema: {
|
|
5208
5387
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
5209
5388
|
type: "object",
|
|
@@ -5584,6 +5763,10 @@ CHAMPION_RISK: Historical broad relationship-risk fact retained for existing row
|
|
|
5584
5763
|
ownerDomain: "customer-context",
|
|
5585
5764
|
title: "List Sources",
|
|
5586
5765
|
description: "List concrete source records deterministically. Use this instead of semantic search when you need enumerated calls, emails, calendar events, support tickets, Slack conversations, or opportunities.",
|
|
5766
|
+
annotations: {
|
|
5767
|
+
readOnlyHint: true,
|
|
5768
|
+
destructiveHint: false
|
|
5769
|
+
},
|
|
5587
5770
|
inputSchema: {
|
|
5588
5771
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
5589
5772
|
type: "object",
|
|
@@ -6027,6 +6210,10 @@ CHAMPION_RISK: Historical broad relationship-risk fact retained for existing row
|
|
|
6027
6210
|
ownerDomain: "customer-context",
|
|
6028
6211
|
title: "Search Customer Context",
|
|
6029
6212
|
description: "Search across all known customer context using a natural-language query. Returns ranked artifact-level discovery previews with at most two matching excerpts per source or fact. Use outlit_get_source with a returned sourceType and sourceId when you need the canonical source contents. Omit customer to search across all customers in the organization.",
|
|
6213
|
+
annotations: {
|
|
6214
|
+
readOnlyHint: true,
|
|
6215
|
+
destructiveHint: false
|
|
6216
|
+
},
|
|
6030
6217
|
inputSchema: {
|
|
6031
6218
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
6032
6219
|
type: "object",
|
|
@@ -6816,6 +7003,10 @@ Example queries:
|
|
|
6816
7003
|
- SELECT event_name, count(*) FROM activity GROUP BY 1 ORDER BY 2 DESC LIMIT 10
|
|
6817
7004
|
- SELECT billing_status, sum(mrr_cents)/100 as mrr FROM customers GROUP BY 1
|
|
6818
7005
|
- SELECT * FROM activity WHERE customer_id = 'cust_123' ORDER BY occurred_at DESC LIMIT 50`,
|
|
7006
|
+
annotations: {
|
|
7007
|
+
readOnlyHint: true,
|
|
7008
|
+
destructiveHint: false
|
|
7009
|
+
},
|
|
6819
7010
|
inputSchema: {
|
|
6820
7011
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
6821
7012
|
type: "object",
|
|
@@ -6898,6 +7089,10 @@ Example queries:
|
|
|
6898
7089
|
|
|
6899
7090
|
Use this to discover column names, types, and descriptions before writing SQL queries.
|
|
6900
7091
|
Returns column definitions and example queries for each view.`,
|
|
7092
|
+
annotations: {
|
|
7093
|
+
readOnlyHint: true,
|
|
7094
|
+
destructiveHint: false
|
|
7095
|
+
},
|
|
6901
7096
|
inputSchema: {
|
|
6902
7097
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
6903
7098
|
type: "object",
|
|
@@ -7102,6 +7297,10 @@ Returns column definitions and example queries for each view.`,
|
|
|
7102
7297
|
ownerDomain: "destinations",
|
|
7103
7298
|
title: "List Destinations",
|
|
7104
7299
|
description: "List configured destinations using safe status fields and masked configuration only.",
|
|
7300
|
+
annotations: {
|
|
7301
|
+
readOnlyHint: true,
|
|
7302
|
+
destructiveHint: false
|
|
7303
|
+
},
|
|
7105
7304
|
inputSchema: {
|
|
7106
7305
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
7107
7306
|
type: "object",
|
|
@@ -7481,6 +7680,10 @@ Returns column definitions and example queries for each view.`,
|
|
|
7481
7680
|
ownerDomain: "destinations",
|
|
7482
7681
|
title: "Get Destination",
|
|
7483
7682
|
description: "Get one destination using safe status fields and masked configuration only.",
|
|
7683
|
+
annotations: {
|
|
7684
|
+
readOnlyHint: true,
|
|
7685
|
+
destructiveHint: false
|
|
7686
|
+
},
|
|
7484
7687
|
inputSchema: {
|
|
7485
7688
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
7486
7689
|
type: "object",
|
|
@@ -7866,6 +8069,10 @@ Returns column definitions and example queries for each view.`,
|
|
|
7866
8069
|
ownerDomain: "destinations",
|
|
7867
8070
|
title: "Create Destination",
|
|
7868
8071
|
description: "Create a Slack channel destination from an available channel.",
|
|
8072
|
+
annotations: {
|
|
8073
|
+
readOnlyHint: false,
|
|
8074
|
+
destructiveHint: false
|
|
8075
|
+
},
|
|
7869
8076
|
inputSchema: {
|
|
7870
8077
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
7871
8078
|
type: "object",
|
|
@@ -8270,6 +8477,10 @@ Returns column definitions and example queries for each view.`,
|
|
|
8270
8477
|
ownerDomain: "destinations",
|
|
8271
8478
|
title: "Update Destination",
|
|
8272
8479
|
description: "Update ordinary destination metadata. Use the dedicated enable or disable tool for lifecycle state.",
|
|
8480
|
+
annotations: {
|
|
8481
|
+
readOnlyHint: false,
|
|
8482
|
+
destructiveHint: false
|
|
8483
|
+
},
|
|
8273
8484
|
inputSchema: {
|
|
8274
8485
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
8275
8486
|
type: "object",
|
|
@@ -8669,6 +8880,10 @@ Returns column definitions and example queries for each view.`,
|
|
|
8669
8880
|
ownerDomain: "destinations",
|
|
8670
8881
|
title: "Enable Destination",
|
|
8671
8882
|
description: "Enable an ordinary destination that is ready for delivery.",
|
|
8883
|
+
annotations: {
|
|
8884
|
+
readOnlyHint: false,
|
|
8885
|
+
destructiveHint: false
|
|
8886
|
+
},
|
|
8672
8887
|
inputSchema: {
|
|
8673
8888
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
8674
8889
|
type: "object",
|
|
@@ -9054,6 +9269,10 @@ Returns column definitions and example queries for each view.`,
|
|
|
9054
9269
|
ownerDomain: "destinations",
|
|
9055
9270
|
title: "Disable Destination",
|
|
9056
9271
|
description: "Disable an ordinary non-default destination.",
|
|
9272
|
+
annotations: {
|
|
9273
|
+
readOnlyHint: false,
|
|
9274
|
+
destructiveHint: false
|
|
9275
|
+
},
|
|
9057
9276
|
inputSchema: {
|
|
9058
9277
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
9059
9278
|
type: "object",
|
|
@@ -9439,6 +9658,10 @@ Returns column definitions and example queries for each view.`,
|
|
|
9439
9658
|
ownerDomain: "destinations",
|
|
9440
9659
|
title: "Archive Destination",
|
|
9441
9660
|
description: "Archive an ordinary destination.",
|
|
9661
|
+
annotations: {
|
|
9662
|
+
readOnlyHint: false,
|
|
9663
|
+
destructiveHint: true
|
|
9664
|
+
},
|
|
9442
9665
|
inputSchema: {
|
|
9443
9666
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
9444
9667
|
type: "object",
|
|
@@ -9485,6 +9708,64 @@ Returns column definitions and example queries for each view.`,
|
|
|
9485
9708
|
additionalProperties: false
|
|
9486
9709
|
}
|
|
9487
9710
|
},
|
|
9711
|
+
outlit_submit_feedback: {
|
|
9712
|
+
toolName: "outlit_submit_feedback",
|
|
9713
|
+
commandId: "feedback.submit",
|
|
9714
|
+
commandVersion: 1,
|
|
9715
|
+
ownerDomain: "feedback",
|
|
9716
|
+
title: "Submit Product Feedback",
|
|
9717
|
+
description: "Submit product feedback to Outlit. This does not open a support ticket or promise a reply.",
|
|
9718
|
+
annotations: {
|
|
9719
|
+
readOnlyHint: false,
|
|
9720
|
+
destructiveHint: false
|
|
9721
|
+
},
|
|
9722
|
+
inputSchema: {
|
|
9723
|
+
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
9724
|
+
type: "object",
|
|
9725
|
+
properties: {
|
|
9726
|
+
body: {
|
|
9727
|
+
type: "string",
|
|
9728
|
+
minLength: 1,
|
|
9729
|
+
maxLength: 20000
|
|
9730
|
+
},
|
|
9731
|
+
area: {
|
|
9732
|
+
type: "string",
|
|
9733
|
+
minLength: 1,
|
|
9734
|
+
maxLength: 100
|
|
9735
|
+
},
|
|
9736
|
+
context: {
|
|
9737
|
+
type: "object",
|
|
9738
|
+
propertyNames: {
|
|
9739
|
+
type: "string"
|
|
9740
|
+
},
|
|
9741
|
+
additionalProperties: {}
|
|
9742
|
+
}
|
|
9743
|
+
},
|
|
9744
|
+
required: [
|
|
9745
|
+
"body"
|
|
9746
|
+
],
|
|
9747
|
+
additionalProperties: false
|
|
9748
|
+
},
|
|
9749
|
+
outputSchema: {
|
|
9750
|
+
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
9751
|
+
type: "object",
|
|
9752
|
+
properties: {
|
|
9753
|
+
id: {
|
|
9754
|
+
type: "string"
|
|
9755
|
+
},
|
|
9756
|
+
createdAt: {
|
|
9757
|
+
type: "string",
|
|
9758
|
+
format: "date-time",
|
|
9759
|
+
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))$"
|
|
9760
|
+
}
|
|
9761
|
+
},
|
|
9762
|
+
required: [
|
|
9763
|
+
"id",
|
|
9764
|
+
"createdAt"
|
|
9765
|
+
],
|
|
9766
|
+
additionalProperties: false
|
|
9767
|
+
}
|
|
9768
|
+
},
|
|
9488
9769
|
outlit_get_integration_capabilities: {
|
|
9489
9770
|
toolName: "outlit_get_integration_capabilities",
|
|
9490
9771
|
commandId: "integration.capabilities.get",
|
|
@@ -9492,6 +9773,10 @@ Returns column definitions and example queries for each view.`,
|
|
|
9492
9773
|
ownerDomain: "integrations",
|
|
9493
9774
|
title: "Get Integration Capabilities",
|
|
9494
9775
|
description: "Describe safe integration setup modes without exposing credential fields or provider configuration.",
|
|
9776
|
+
annotations: {
|
|
9777
|
+
readOnlyHint: true,
|
|
9778
|
+
destructiveHint: false
|
|
9779
|
+
},
|
|
9495
9780
|
inputSchema: {
|
|
9496
9781
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
9497
9782
|
type: "object",
|
|
@@ -9584,6 +9869,10 @@ Returns column definitions and example queries for each view.`,
|
|
|
9584
9869
|
ownerDomain: "integrations",
|
|
9585
9870
|
title: "Begin Integration Setup",
|
|
9586
9871
|
description: "Begin a short-lived browser handoff for an integration that supports browser authentication.",
|
|
9872
|
+
annotations: {
|
|
9873
|
+
readOnlyHint: false,
|
|
9874
|
+
destructiveHint: false
|
|
9875
|
+
},
|
|
9587
9876
|
inputSchema: {
|
|
9588
9877
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
9589
9878
|
type: "object",
|
|
@@ -9668,6 +9957,10 @@ Returns column definitions and example queries for each view.`,
|
|
|
9668
9957
|
ownerDomain: "integrations",
|
|
9669
9958
|
title: "Get Integration Setup Status",
|
|
9670
9959
|
description: "Check a browser setup handoff owned by the current actor.",
|
|
9960
|
+
annotations: {
|
|
9961
|
+
readOnlyHint: true,
|
|
9962
|
+
destructiveHint: false
|
|
9963
|
+
},
|
|
9671
9964
|
inputSchema: {
|
|
9672
9965
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
9673
9966
|
type: "object",
|
|
@@ -9723,6 +10016,10 @@ Returns column definitions and example queries for each view.`,
|
|
|
9723
10016
|
ownerDomain: "integrations",
|
|
9724
10017
|
title: "Get Integration Status",
|
|
9725
10018
|
description: "Get the configuration-readiness status for one integration or the public integration catalog.",
|
|
10019
|
+
annotations: {
|
|
10020
|
+
readOnlyHint: true,
|
|
10021
|
+
destructiveHint: false
|
|
10022
|
+
},
|
|
9726
10023
|
inputSchema: {
|
|
9727
10024
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
9728
10025
|
type: "object",
|
|
@@ -9818,6 +10115,10 @@ Returns column definitions and example queries for each view.`,
|
|
|
9818
10115
|
ownerDomain: "integrations",
|
|
9819
10116
|
title: "Set Up Integration",
|
|
9820
10117
|
description: "Continue integration setup through validated credentials, safe configuration, or a trusted browser handoff.",
|
|
10118
|
+
annotations: {
|
|
10119
|
+
readOnlyHint: false,
|
|
10120
|
+
destructiveHint: false
|
|
10121
|
+
},
|
|
9821
10122
|
inputSchema: {
|
|
9822
10123
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
9823
10124
|
anyOf: [
|
|
@@ -10693,6 +10994,10 @@ Returns column definitions and example queries for each view.`,
|
|
|
10693
10994
|
ownerDomain: "customer_activation",
|
|
10694
10995
|
title: "Get Customer Activation",
|
|
10695
10996
|
description: "Get the product event currently configured to activate customers and users.",
|
|
10997
|
+
annotations: {
|
|
10998
|
+
readOnlyHint: true,
|
|
10999
|
+
destructiveHint: false
|
|
11000
|
+
},
|
|
10696
11001
|
inputSchema: {
|
|
10697
11002
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
10698
11003
|
type: "object",
|
|
@@ -10738,6 +11043,10 @@ Returns column definitions and example queries for each view.`,
|
|
|
10738
11043
|
ownerDomain: "customer_activation",
|
|
10739
11044
|
title: "Preview Customer Activation",
|
|
10740
11045
|
description: "Preview the bounded recent impact of choosing a product event for customer activation without changing configuration.",
|
|
11046
|
+
annotations: {
|
|
11047
|
+
readOnlyHint: true,
|
|
11048
|
+
destructiveHint: false
|
|
11049
|
+
},
|
|
10741
11050
|
inputSchema: {
|
|
10742
11051
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
10743
11052
|
type: "object",
|
|
@@ -10930,6 +11239,10 @@ Returns column definitions and example queries for each view.`,
|
|
|
10930
11239
|
ownerDomain: "customer_activation",
|
|
10931
11240
|
title: "Update Customer Activation",
|
|
10932
11241
|
description: "Set the product event used for future customer activation, or disable event-based activation with null. This does not backfill history.",
|
|
11242
|
+
annotations: {
|
|
11243
|
+
readOnlyHint: false,
|
|
11244
|
+
destructiveHint: false
|
|
11245
|
+
},
|
|
10933
11246
|
inputSchema: {
|
|
10934
11247
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
10935
11248
|
type: "object",
|
|
@@ -10994,7 +11307,11 @@ Returns column definitions and example queries for each view.`,
|
|
|
10994
11307
|
commandVersion: 1,
|
|
10995
11308
|
ownerDomain: "settings",
|
|
10996
11309
|
title: "Get Workspace Settings",
|
|
10997
|
-
description: "Get the workspace default timezone used
|
|
11310
|
+
description: "Get the workspace default timezone and the default customer owner used as the lowest-ranked ownership source.",
|
|
11311
|
+
annotations: {
|
|
11312
|
+
readOnlyHint: true,
|
|
11313
|
+
destructiveHint: false
|
|
11314
|
+
},
|
|
10998
11315
|
inputSchema: {
|
|
10999
11316
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
11000
11317
|
type: "object",
|
|
@@ -11011,10 +11328,32 @@ Returns column definitions and example queries for each view.`,
|
|
|
11011
11328
|
defaultTimezone: {
|
|
11012
11329
|
type: "string",
|
|
11013
11330
|
minLength: 1
|
|
11331
|
+
},
|
|
11332
|
+
customerOwnership: {
|
|
11333
|
+
type: "object",
|
|
11334
|
+
properties: {
|
|
11335
|
+
defaultOwnerUserId: {
|
|
11336
|
+
anyOf: [
|
|
11337
|
+
{
|
|
11338
|
+
type: "string",
|
|
11339
|
+
minLength: 1,
|
|
11340
|
+
maxLength: 191
|
|
11341
|
+
},
|
|
11342
|
+
{
|
|
11343
|
+
type: "null"
|
|
11344
|
+
}
|
|
11345
|
+
]
|
|
11346
|
+
}
|
|
11347
|
+
},
|
|
11348
|
+
required: [
|
|
11349
|
+
"defaultOwnerUserId"
|
|
11350
|
+
],
|
|
11351
|
+
additionalProperties: false
|
|
11014
11352
|
}
|
|
11015
11353
|
},
|
|
11016
11354
|
required: [
|
|
11017
|
-
"defaultTimezone"
|
|
11355
|
+
"defaultTimezone",
|
|
11356
|
+
"customerOwnership"
|
|
11018
11357
|
],
|
|
11019
11358
|
additionalProperties: false
|
|
11020
11359
|
}
|
|
@@ -11031,7 +11370,11 @@ Returns column definitions and example queries for each view.`,
|
|
|
11031
11370
|
commandVersion: 1,
|
|
11032
11371
|
ownerDomain: "settings",
|
|
11033
11372
|
title: "Update Workspace Settings",
|
|
11034
|
-
description: "Update the workspace default timezone
|
|
11373
|
+
description: "Update the workspace default timezone (a valid IANA timezone) and/or the default customer owner (an active workspace member, or null to clear).",
|
|
11374
|
+
annotations: {
|
|
11375
|
+
readOnlyHint: false,
|
|
11376
|
+
destructiveHint: false
|
|
11377
|
+
},
|
|
11035
11378
|
inputSchema: {
|
|
11036
11379
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
11037
11380
|
type: "object",
|
|
@@ -11039,11 +11382,29 @@ Returns column definitions and example queries for each view.`,
|
|
|
11039
11382
|
defaultTimezone: {
|
|
11040
11383
|
type: "string",
|
|
11041
11384
|
minLength: 1
|
|
11385
|
+
},
|
|
11386
|
+
customerOwnership: {
|
|
11387
|
+
type: "object",
|
|
11388
|
+
properties: {
|
|
11389
|
+
defaultOwnerUserId: {
|
|
11390
|
+
anyOf: [
|
|
11391
|
+
{
|
|
11392
|
+
type: "string",
|
|
11393
|
+
minLength: 1,
|
|
11394
|
+
maxLength: 191
|
|
11395
|
+
},
|
|
11396
|
+
{
|
|
11397
|
+
type: "null"
|
|
11398
|
+
}
|
|
11399
|
+
]
|
|
11400
|
+
}
|
|
11401
|
+
},
|
|
11402
|
+
required: [
|
|
11403
|
+
"defaultOwnerUserId"
|
|
11404
|
+
],
|
|
11405
|
+
additionalProperties: false
|
|
11042
11406
|
}
|
|
11043
11407
|
},
|
|
11044
|
-
required: [
|
|
11045
|
-
"defaultTimezone"
|
|
11046
|
-
],
|
|
11047
11408
|
additionalProperties: false
|
|
11048
11409
|
},
|
|
11049
11410
|
outputSchema: {
|
|
@@ -11056,10 +11417,32 @@ Returns column definitions and example queries for each view.`,
|
|
|
11056
11417
|
defaultTimezone: {
|
|
11057
11418
|
type: "string",
|
|
11058
11419
|
minLength: 1
|
|
11420
|
+
},
|
|
11421
|
+
customerOwnership: {
|
|
11422
|
+
type: "object",
|
|
11423
|
+
properties: {
|
|
11424
|
+
defaultOwnerUserId: {
|
|
11425
|
+
anyOf: [
|
|
11426
|
+
{
|
|
11427
|
+
type: "string",
|
|
11428
|
+
minLength: 1,
|
|
11429
|
+
maxLength: 191
|
|
11430
|
+
},
|
|
11431
|
+
{
|
|
11432
|
+
type: "null"
|
|
11433
|
+
}
|
|
11434
|
+
]
|
|
11435
|
+
}
|
|
11436
|
+
},
|
|
11437
|
+
required: [
|
|
11438
|
+
"defaultOwnerUserId"
|
|
11439
|
+
],
|
|
11440
|
+
additionalProperties: false
|
|
11059
11441
|
}
|
|
11060
11442
|
},
|
|
11061
11443
|
required: [
|
|
11062
|
-
"defaultTimezone"
|
|
11444
|
+
"defaultTimezone",
|
|
11445
|
+
"customerOwnership"
|
|
11063
11446
|
],
|
|
11064
11447
|
additionalProperties: false
|
|
11065
11448
|
}
|
|
@@ -11077,6 +11460,10 @@ Returns column definitions and example queries for each view.`,
|
|
|
11077
11460
|
ownerDomain: "value_features",
|
|
11078
11461
|
title: "List Features",
|
|
11079
11462
|
description: "List configured features, exact historical usage, eligible sources, and observed event candidates.",
|
|
11463
|
+
annotations: {
|
|
11464
|
+
readOnlyHint: true,
|
|
11465
|
+
destructiveHint: false
|
|
11466
|
+
},
|
|
11080
11467
|
inputSchema: {
|
|
11081
11468
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
11082
11469
|
type: "object",
|
|
@@ -11627,6 +12014,10 @@ Returns column definitions and example queries for each view.`,
|
|
|
11627
12014
|
ownerDomain: "value_features",
|
|
11628
12015
|
title: "Create Feature",
|
|
11629
12016
|
description: "Create or idempotently return one customer-value Feature observed by one event rule.",
|
|
12017
|
+
annotations: {
|
|
12018
|
+
readOnlyHint: false,
|
|
12019
|
+
destructiveHint: false
|
|
12020
|
+
},
|
|
11630
12021
|
inputSchema: {
|
|
11631
12022
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
11632
12023
|
type: "object",
|
|
@@ -11943,6 +12334,10 @@ Returns column definitions and example queries for each view.`,
|
|
|
11943
12334
|
ownerDomain: "value_features",
|
|
11944
12335
|
title: "Archive Feature",
|
|
11945
12336
|
description: "Archive a Feature when at least one other active Feature remains.",
|
|
12337
|
+
annotations: {
|
|
12338
|
+
readOnlyHint: false,
|
|
12339
|
+
destructiveHint: true
|
|
12340
|
+
},
|
|
11946
12341
|
inputSchema: {
|
|
11947
12342
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
11948
12343
|
type: "object",
|
|
@@ -12003,6 +12398,10 @@ Returns column definitions and example queries for each view.`,
|
|
|
12003
12398
|
ownerDomain: "value_features",
|
|
12004
12399
|
title: "Get Customer Features",
|
|
12005
12400
|
description: "Read Outlit event evidence and stored non-credit Autumn feature quantities, frequency, recency, weekly coverage, and explicit links for one authorized customer. Provider totals and linked event counts remain separate.",
|
|
12401
|
+
annotations: {
|
|
12402
|
+
readOnlyHint: true,
|
|
12403
|
+
destructiveHint: false
|
|
12404
|
+
},
|
|
12006
12405
|
inputSchema: {
|
|
12007
12406
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
12008
12407
|
type: "object",
|
|
@@ -13191,6 +13590,10 @@ Returns column definitions and example queries for each view.`,
|
|
|
13191
13590
|
ownerDomain: "customers",
|
|
13192
13591
|
title: "Get Customer Credits",
|
|
13193
13592
|
description: "Read a customer's credit pools, remaining credits, provider reset dates, and deterministic daily burn rate, rate change, runway, and trend from stored data. Missing or stale evidence is explicit; no live provider calls. For individual product feature usage use outlit_get_customer_features.",
|
|
13593
|
+
annotations: {
|
|
13594
|
+
readOnlyHint: true,
|
|
13595
|
+
destructiveHint: false
|
|
13596
|
+
},
|
|
13194
13597
|
inputSchema: {
|
|
13195
13598
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
13196
13599
|
type: "object",
|
|
@@ -13353,7 +13756,7 @@ Returns column definitions and example queries for each view.`,
|
|
|
13353
13756
|
type: "null"
|
|
13354
13757
|
}
|
|
13355
13758
|
],
|
|
13356
|
-
description: "Average daily usage over the
|
|
13759
|
+
description: "Average daily usage over the trailing rate window (28 days, shrinking to the covered history with a seven-day floor). See scope before interpreting this as pool deductions."
|
|
13357
13760
|
},
|
|
13358
13761
|
scope: {
|
|
13359
13762
|
type: "string",
|
|
@@ -13362,6 +13765,58 @@ Returns column definitions and example queries for each view.`,
|
|
|
13362
13765
|
"account"
|
|
13363
13766
|
]
|
|
13364
13767
|
},
|
|
13768
|
+
rateBasis: {
|
|
13769
|
+
description: "Length of the trailing window the forecast rate averages over.",
|
|
13770
|
+
anyOf: [
|
|
13771
|
+
{
|
|
13772
|
+
type: "object",
|
|
13773
|
+
properties: {
|
|
13774
|
+
kind: {
|
|
13775
|
+
type: "string",
|
|
13776
|
+
const: "trailing"
|
|
13777
|
+
},
|
|
13778
|
+
days: {
|
|
13779
|
+
type: "integer",
|
|
13780
|
+
exclusiveMinimum: 0,
|
|
13781
|
+
maximum: 9007199254740991
|
|
13782
|
+
}
|
|
13783
|
+
},
|
|
13784
|
+
required: [
|
|
13785
|
+
"kind",
|
|
13786
|
+
"days"
|
|
13787
|
+
],
|
|
13788
|
+
additionalProperties: false
|
|
13789
|
+
},
|
|
13790
|
+
{
|
|
13791
|
+
type: "null"
|
|
13792
|
+
}
|
|
13793
|
+
]
|
|
13794
|
+
},
|
|
13795
|
+
paceSinceReset: {
|
|
13796
|
+
description: "Context-only average daily usage since the current grant period started; never the forecast rate.",
|
|
13797
|
+
anyOf: [
|
|
13798
|
+
{
|
|
13799
|
+
type: "number",
|
|
13800
|
+
minimum: 0
|
|
13801
|
+
},
|
|
13802
|
+
{
|
|
13803
|
+
type: "null"
|
|
13804
|
+
}
|
|
13805
|
+
]
|
|
13806
|
+
},
|
|
13807
|
+
periodStart: {
|
|
13808
|
+
description: "UTC day the current grant period started, when derivable from the reset interval.",
|
|
13809
|
+
anyOf: [
|
|
13810
|
+
{
|
|
13811
|
+
type: "string",
|
|
13812
|
+
format: "date",
|
|
13813
|
+
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])))$"
|
|
13814
|
+
},
|
|
13815
|
+
{
|
|
13816
|
+
type: "null"
|
|
13817
|
+
}
|
|
13818
|
+
]
|
|
13819
|
+
},
|
|
13365
13820
|
change: {
|
|
13366
13821
|
anyOf: [
|
|
13367
13822
|
{
|
|
@@ -13371,7 +13826,20 @@ Returns column definitions and example queries for each view.`,
|
|
|
13371
13826
|
type: "null"
|
|
13372
13827
|
}
|
|
13373
13828
|
],
|
|
13374
|
-
description: "Percentage change in customer-balance burn rate versus the preceding
|
|
13829
|
+
description: "Percentage change in customer-balance burn rate versus the preceding equal-length window. Null when either window is incomplete or the prior rate is zero."
|
|
13830
|
+
},
|
|
13831
|
+
changeDays: {
|
|
13832
|
+
description: "Days in each side of the percentage comparison: 28 when covered, else 7.",
|
|
13833
|
+
anyOf: [
|
|
13834
|
+
{
|
|
13835
|
+
type: "integer",
|
|
13836
|
+
exclusiveMinimum: 0,
|
|
13837
|
+
maximum: 9007199254740991
|
|
13838
|
+
},
|
|
13839
|
+
{
|
|
13840
|
+
type: "null"
|
|
13841
|
+
}
|
|
13842
|
+
]
|
|
13375
13843
|
},
|
|
13376
13844
|
days: {
|
|
13377
13845
|
anyOf: [
|
|
@@ -13445,7 +13913,7 @@ Returns column definitions and example queries for each view.`,
|
|
|
13445
13913
|
"end"
|
|
13446
13914
|
],
|
|
13447
13915
|
additionalProperties: false,
|
|
13448
|
-
description: "UTC dates for the
|
|
13916
|
+
description: "UTC dates for the rate window; end is exclusive."
|
|
13449
13917
|
},
|
|
13450
13918
|
trend: {
|
|
13451
13919
|
maxItems: 14,
|
|
@@ -13560,6 +14028,10 @@ Returns column definitions and example queries for each view.`,
|
|
|
13560
14028
|
ownerDomain: "attention",
|
|
13561
14029
|
title: "List Attention Items",
|
|
13562
14030
|
description: "List authorized open or resolved Attention items. Returns bounded customer identity, current priority, ARR importance, lifecycle timestamps, and a prepared-action URL without evidence bodies or internal agent state.",
|
|
14031
|
+
annotations: {
|
|
14032
|
+
readOnlyHint: true,
|
|
14033
|
+
destructiveHint: false
|
|
14034
|
+
},
|
|
13563
14035
|
inputSchema: {
|
|
13564
14036
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
13565
14037
|
type: "object",
|
|
@@ -13881,6 +14353,10 @@ Returns column definitions and example queries for each view.`,
|
|
|
13881
14353
|
ownerDomain: "attention",
|
|
13882
14354
|
title: "Get Attention Item",
|
|
13883
14355
|
description: "Get one authorized Attention item with its bounded current assessment, timeline, evidence summaries, and prepared-action URL. Does not return evidence IDs, quotes, email drafts, or internal agent state.",
|
|
14356
|
+
annotations: {
|
|
14357
|
+
readOnlyHint: true,
|
|
14358
|
+
destructiveHint: false
|
|
14359
|
+
},
|
|
13884
14360
|
inputSchema: {
|
|
13885
14361
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
13886
14362
|
type: "object",
|
|
@@ -14954,6 +15430,225 @@ Returns column definitions and example queries for each view.`,
|
|
|
14954
15430
|
}
|
|
14955
15431
|
]
|
|
14956
15432
|
},
|
|
15433
|
+
jevEvidence: {
|
|
15434
|
+
description: "Jev advisory model evidence scoped to this suggestion's customers. Uncalibrated and never part of eligibility, confidence, or recommended action.",
|
|
15435
|
+
anyOf: [
|
|
15436
|
+
{
|
|
15437
|
+
type: "object",
|
|
15438
|
+
properties: {
|
|
15439
|
+
computedAt: {
|
|
15440
|
+
type: "string",
|
|
15441
|
+
format: "date-time",
|
|
15442
|
+
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))$"
|
|
15443
|
+
},
|
|
15444
|
+
expiresAt: {
|
|
15445
|
+
type: "string",
|
|
15446
|
+
format: "date-time",
|
|
15447
|
+
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))$"
|
|
15448
|
+
},
|
|
15449
|
+
expired: {
|
|
15450
|
+
type: "boolean"
|
|
15451
|
+
},
|
|
15452
|
+
pairs: {
|
|
15453
|
+
minItems: 1,
|
|
15454
|
+
type: "array",
|
|
15455
|
+
items: {
|
|
15456
|
+
type: "object",
|
|
15457
|
+
properties: {
|
|
15458
|
+
incoming: {
|
|
15459
|
+
type: "object",
|
|
15460
|
+
properties: {
|
|
15461
|
+
id: {
|
|
15462
|
+
type: "string",
|
|
15463
|
+
minLength: 1,
|
|
15464
|
+
maxLength: 191
|
|
15465
|
+
},
|
|
15466
|
+
name: {
|
|
15467
|
+
type: "string",
|
|
15468
|
+
minLength: 1,
|
|
15469
|
+
maxLength: 500
|
|
15470
|
+
},
|
|
15471
|
+
domain: {
|
|
15472
|
+
anyOf: [
|
|
15473
|
+
{
|
|
15474
|
+
type: "string",
|
|
15475
|
+
minLength: 1,
|
|
15476
|
+
maxLength: 500
|
|
15477
|
+
},
|
|
15478
|
+
{
|
|
15479
|
+
type: "null"
|
|
15480
|
+
}
|
|
15481
|
+
]
|
|
15482
|
+
},
|
|
15483
|
+
type: {
|
|
15484
|
+
type: "string",
|
|
15485
|
+
enum: [
|
|
15486
|
+
"COMPANY",
|
|
15487
|
+
"INDIVIDUAL"
|
|
15488
|
+
]
|
|
15489
|
+
},
|
|
15490
|
+
status: {
|
|
15491
|
+
anyOf: [
|
|
15492
|
+
{
|
|
15493
|
+
type: "string",
|
|
15494
|
+
enum: [
|
|
15495
|
+
"PROVISIONAL",
|
|
15496
|
+
"ACTIVE",
|
|
15497
|
+
"CHURNED",
|
|
15498
|
+
"MERGED"
|
|
15499
|
+
]
|
|
15500
|
+
},
|
|
15501
|
+
{
|
|
15502
|
+
type: "null"
|
|
15503
|
+
}
|
|
15504
|
+
]
|
|
15505
|
+
},
|
|
15506
|
+
identifierCount: {
|
|
15507
|
+
type: "integer",
|
|
15508
|
+
minimum: 0,
|
|
15509
|
+
maximum: 9007199254740991
|
|
15510
|
+
},
|
|
15511
|
+
contactCount: {
|
|
15512
|
+
type: "integer",
|
|
15513
|
+
minimum: 0,
|
|
15514
|
+
maximum: 9007199254740991
|
|
15515
|
+
}
|
|
15516
|
+
},
|
|
15517
|
+
required: [
|
|
15518
|
+
"id",
|
|
15519
|
+
"name",
|
|
15520
|
+
"domain",
|
|
15521
|
+
"type",
|
|
15522
|
+
"status",
|
|
15523
|
+
"identifierCount",
|
|
15524
|
+
"contactCount"
|
|
15525
|
+
],
|
|
15526
|
+
additionalProperties: false
|
|
15527
|
+
},
|
|
15528
|
+
candidate: {
|
|
15529
|
+
type: "object",
|
|
15530
|
+
properties: {
|
|
15531
|
+
id: {
|
|
15532
|
+
type: "string",
|
|
15533
|
+
minLength: 1,
|
|
15534
|
+
maxLength: 191
|
|
15535
|
+
},
|
|
15536
|
+
name: {
|
|
15537
|
+
type: "string",
|
|
15538
|
+
minLength: 1,
|
|
15539
|
+
maxLength: 500
|
|
15540
|
+
},
|
|
15541
|
+
domain: {
|
|
15542
|
+
anyOf: [
|
|
15543
|
+
{
|
|
15544
|
+
type: "string",
|
|
15545
|
+
minLength: 1,
|
|
15546
|
+
maxLength: 500
|
|
15547
|
+
},
|
|
15548
|
+
{
|
|
15549
|
+
type: "null"
|
|
15550
|
+
}
|
|
15551
|
+
]
|
|
15552
|
+
},
|
|
15553
|
+
type: {
|
|
15554
|
+
type: "string",
|
|
15555
|
+
enum: [
|
|
15556
|
+
"COMPANY",
|
|
15557
|
+
"INDIVIDUAL"
|
|
15558
|
+
]
|
|
15559
|
+
},
|
|
15560
|
+
status: {
|
|
15561
|
+
anyOf: [
|
|
15562
|
+
{
|
|
15563
|
+
type: "string",
|
|
15564
|
+
enum: [
|
|
15565
|
+
"PROVISIONAL",
|
|
15566
|
+
"ACTIVE",
|
|
15567
|
+
"CHURNED",
|
|
15568
|
+
"MERGED"
|
|
15569
|
+
]
|
|
15570
|
+
},
|
|
15571
|
+
{
|
|
15572
|
+
type: "null"
|
|
15573
|
+
}
|
|
15574
|
+
]
|
|
15575
|
+
},
|
|
15576
|
+
identifierCount: {
|
|
15577
|
+
type: "integer",
|
|
15578
|
+
minimum: 0,
|
|
15579
|
+
maximum: 9007199254740991
|
|
15580
|
+
},
|
|
15581
|
+
contactCount: {
|
|
15582
|
+
type: "integer",
|
|
15583
|
+
minimum: 0,
|
|
15584
|
+
maximum: 9007199254740991
|
|
15585
|
+
}
|
|
15586
|
+
},
|
|
15587
|
+
required: [
|
|
15588
|
+
"id",
|
|
15589
|
+
"name",
|
|
15590
|
+
"domain",
|
|
15591
|
+
"type",
|
|
15592
|
+
"status",
|
|
15593
|
+
"identifierCount",
|
|
15594
|
+
"contactCount"
|
|
15595
|
+
],
|
|
15596
|
+
additionalProperties: false
|
|
15597
|
+
},
|
|
15598
|
+
pSameEntity: {
|
|
15599
|
+
type: "number",
|
|
15600
|
+
minimum: 0,
|
|
15601
|
+
maximum: 1
|
|
15602
|
+
},
|
|
15603
|
+
relation: {
|
|
15604
|
+
anyOf: [
|
|
15605
|
+
{
|
|
15606
|
+
type: "string",
|
|
15607
|
+
minLength: 1,
|
|
15608
|
+
maxLength: 100
|
|
15609
|
+
},
|
|
15610
|
+
{
|
|
15611
|
+
type: "null"
|
|
15612
|
+
}
|
|
15613
|
+
]
|
|
15614
|
+
},
|
|
15615
|
+
relationProbability: {
|
|
15616
|
+
anyOf: [
|
|
15617
|
+
{
|
|
15618
|
+
type: "number",
|
|
15619
|
+
minimum: 0,
|
|
15620
|
+
maximum: 1
|
|
15621
|
+
},
|
|
15622
|
+
{
|
|
15623
|
+
type: "null"
|
|
15624
|
+
}
|
|
15625
|
+
]
|
|
15626
|
+
}
|
|
15627
|
+
},
|
|
15628
|
+
required: [
|
|
15629
|
+
"incoming",
|
|
15630
|
+
"candidate",
|
|
15631
|
+
"pSameEntity",
|
|
15632
|
+
"relation",
|
|
15633
|
+
"relationProbability"
|
|
15634
|
+
],
|
|
15635
|
+
additionalProperties: false
|
|
15636
|
+
}
|
|
15637
|
+
}
|
|
15638
|
+
},
|
|
15639
|
+
required: [
|
|
15640
|
+
"computedAt",
|
|
15641
|
+
"expiresAt",
|
|
15642
|
+
"expired",
|
|
15643
|
+
"pairs"
|
|
15644
|
+
],
|
|
15645
|
+
additionalProperties: false
|
|
15646
|
+
},
|
|
15647
|
+
{
|
|
15648
|
+
type: "null"
|
|
15649
|
+
}
|
|
15650
|
+
]
|
|
15651
|
+
},
|
|
14957
15652
|
canMerge: {
|
|
14958
15653
|
type: "boolean"
|
|
14959
15654
|
},
|
|
@@ -15432,6 +16127,7 @@ Returns column definitions and example queries for each view.`,
|
|
|
15432
16127
|
"outlit_enable_destination",
|
|
15433
16128
|
"outlit_disable_destination",
|
|
15434
16129
|
"outlit_archive_destination",
|
|
16130
|
+
"outlit_submit_feedback",
|
|
15435
16131
|
"outlit_get_integration_capabilities",
|
|
15436
16132
|
"outlit_begin_integration_setup",
|
|
15437
16133
|
"outlit_get_integration_setup_status",
|
|
@@ -15480,6 +16176,7 @@ Returns column definitions and example queries for each view.`,
|
|
|
15480
16176
|
"outlit_enable_destination",
|
|
15481
16177
|
"outlit_disable_destination",
|
|
15482
16178
|
"outlit_archive_destination",
|
|
16179
|
+
"outlit_submit_feedback",
|
|
15483
16180
|
"outlit_get_integration_capabilities",
|
|
15484
16181
|
"outlit_begin_integration_setup",
|
|
15485
16182
|
"outlit_get_integration_setup_status",
|
|
@@ -19252,10 +19949,12 @@ function readCommandOutput2(command, args) {
|
|
|
19252
19949
|
return null;
|
|
19253
19950
|
}
|
|
19254
19951
|
}
|
|
19255
|
-
function
|
|
19952
|
+
function isStandaloneInstall2(argv = process.argv) {
|
|
19256
19953
|
const scriptPath = argv[1];
|
|
19257
19954
|
if (!scriptPath)
|
|
19258
19955
|
return true;
|
|
19956
|
+
if (scriptPath.startsWith("/$bunfs/") || scriptPath.startsWith("~bunfs"))
|
|
19957
|
+
return true;
|
|
19259
19958
|
const resolved = safeRealPath2(scriptPath) ?? scriptPath;
|
|
19260
19959
|
return !/\.(?:cjs|mjs|jsx?|tsx?)$/.test(resolved);
|
|
19261
19960
|
}
|
|
@@ -19281,8 +19980,11 @@ function safeRealPath2(filePath) {
|
|
|
19281
19980
|
return null;
|
|
19282
19981
|
}
|
|
19283
19982
|
}
|
|
19284
|
-
function formatUpdateCommand2(installer =
|
|
19285
|
-
|
|
19983
|
+
function formatUpdateCommand2(installer, argv = process.argv) {
|
|
19984
|
+
if (isStandaloneInstall2(argv))
|
|
19985
|
+
return STANDALONE_UPDATE_HINT2;
|
|
19986
|
+
const resolved = installer === undefined ? inferInstaller2() : installer;
|
|
19987
|
+
switch (resolved) {
|
|
19286
19988
|
case "bun":
|
|
19287
19989
|
return "bun add -g @outlit/cli";
|
|
19288
19990
|
case "npm":
|
|
@@ -19343,7 +20045,7 @@ function runUpgradeCommand(command, opts) {
|
|
|
19343
20045
|
throw new Error(`Upgrade command failed: ${command.displayCommand}`);
|
|
19344
20046
|
}
|
|
19345
20047
|
}
|
|
19346
|
-
var UPDATE_CHECK_INTERVAL_MS2, PACKAGE_NAME2 = "@outlit/cli", LATEST_VERSION_URL2 = "https://registry.npmjs.org/@outlit%2Fcli/latest";
|
|
20048
|
+
var UPDATE_CHECK_INTERVAL_MS2, PACKAGE_NAME2 = "@outlit/cli", LATEST_VERSION_URL2 = "https://registry.npmjs.org/@outlit%2Fcli/latest", STANDALONE_UPDATE_HINT2 = "re-run your original install method (for example `curl -fsSL https://outlit.ai/install.sh | bash` or `brew upgrade outlitai/tap/outlit`), or download the latest release from https://github.com/OutlitAI/outlit-sdk/releases";
|
|
19347
20049
|
var init_update2 = __esm(() => {
|
|
19348
20050
|
init_config();
|
|
19349
20051
|
init_tty();
|
|
@@ -19704,26 +20406,77 @@ function checkApiKeyPresence(credential) {
|
|
|
19704
20406
|
}
|
|
19705
20407
|
async function validateApiKey(apiKey) {
|
|
19706
20408
|
try {
|
|
19707
|
-
await pingApiKey(apiKey);
|
|
19708
|
-
|
|
20409
|
+
const validation = await pingApiKey(apiKey);
|
|
20410
|
+
const org = validation.organization?.name ?? validation.organization?.slug ?? validation.organizationId;
|
|
20411
|
+
const keyDetail = validation.apiKey ? ` · key "${validation.apiKey.name}" (${validation.apiKey.keyType})` : "";
|
|
20412
|
+
return {
|
|
20413
|
+
check: {
|
|
20414
|
+
name: "API validation",
|
|
20415
|
+
status: "pass",
|
|
20416
|
+
message: "Key is valid",
|
|
20417
|
+
detail: `Org: ${org}${keyDetail}`
|
|
20418
|
+
},
|
|
20419
|
+
validation
|
|
20420
|
+
};
|
|
19709
20421
|
} catch (err) {
|
|
19710
20422
|
if (isApiKeyValidationUnavailableError(err)) {
|
|
19711
20423
|
return {
|
|
19712
|
-
|
|
19713
|
-
|
|
19714
|
-
|
|
19715
|
-
|
|
20424
|
+
check: {
|
|
20425
|
+
name: "API validation",
|
|
20426
|
+
status: "warn",
|
|
20427
|
+
message: "API validation is temporarily unavailable",
|
|
20428
|
+
detail: "Try again shortly"
|
|
20429
|
+
},
|
|
20430
|
+
validation: null
|
|
19716
20431
|
};
|
|
19717
20432
|
}
|
|
19718
20433
|
return {
|
|
19719
|
-
|
|
19720
|
-
|
|
19721
|
-
|
|
19722
|
-
|
|
20434
|
+
check: {
|
|
20435
|
+
name: "API validation",
|
|
20436
|
+
status: "fail",
|
|
20437
|
+
message: `API rejected key: ${errorMessage(err, "unknown error")}`,
|
|
20438
|
+
detail: `Check your key at ${OUTLIT_DASHBOARD_URL}`
|
|
20439
|
+
},
|
|
20440
|
+
validation: null
|
|
19723
20441
|
};
|
|
19724
20442
|
}
|
|
19725
20443
|
}
|
|
19726
|
-
|
|
20444
|
+
function grantUsable(grant, grants, createdById) {
|
|
20445
|
+
if (!grants.includes(grant))
|
|
20446
|
+
return false;
|
|
20447
|
+
if (grant === "integrations:connect_own" && !createdById)
|
|
20448
|
+
return false;
|
|
20449
|
+
return true;
|
|
20450
|
+
}
|
|
20451
|
+
function checkPermissions(validation) {
|
|
20452
|
+
const grants = validation.authorization.grants;
|
|
20453
|
+
const createdById = validation.createdById?.trim() || null;
|
|
20454
|
+
const unavailable = COMMAND_GRANTS.filter((family) => !family.anyOf.some((grant) => grantUsable(grant, grants, createdById)));
|
|
20455
|
+
const detail = [
|
|
20456
|
+
grants.length > 0 ? `grants: ${grants.join(", ")}` : null,
|
|
20457
|
+
unavailable.length > 0 ? `unavailable to this key: ${unavailable.map((family) => family.commands).join("; ")}` : null
|
|
20458
|
+
].filter((part) => part !== null).join(" · ");
|
|
20459
|
+
return {
|
|
20460
|
+
name: "Permissions",
|
|
20461
|
+
status: unavailable.length > 0 ? "warn" : "pass",
|
|
20462
|
+
message: `${grants.length} key grant${grants.length === 1 ? "" : "s"}`,
|
|
20463
|
+
detail: detail || undefined
|
|
20464
|
+
};
|
|
20465
|
+
}
|
|
20466
|
+
async function checkIntegrations(apiKey, validation) {
|
|
20467
|
+
const grants = validation?.authorization.grants;
|
|
20468
|
+
if (grants) {
|
|
20469
|
+
const createdById = validation?.createdById?.trim() || null;
|
|
20470
|
+
const canRead = grantUsable("integrations:manage", grants, createdById) || grantUsable("integrations:connect_own", grants, createdById);
|
|
20471
|
+
if (!canRead) {
|
|
20472
|
+
return {
|
|
20473
|
+
name: "Integrations",
|
|
20474
|
+
status: "warn",
|
|
20475
|
+
message: "API key does not grant integrations access",
|
|
20476
|
+
detail: "Requires the integrations:manage grant, or integrations:connect_own on a user-created key"
|
|
20477
|
+
};
|
|
20478
|
+
}
|
|
20479
|
+
}
|
|
19727
20480
|
try {
|
|
19728
20481
|
const client = await createClient(apiKey);
|
|
19729
20482
|
const timeout = new Promise((_2, reject) => setTimeout(() => reject(new Error("Integrations check timed out")), 1e4));
|
|
@@ -19755,7 +20508,15 @@ async function checkIntegrations(apiKey) {
|
|
|
19755
20508
|
status: "pass",
|
|
19756
20509
|
message: `${ready} integration(s) ready`
|
|
19757
20510
|
};
|
|
19758
|
-
} catch {
|
|
20511
|
+
} catch (err) {
|
|
20512
|
+
if (isOutlitToolsApiError(err) && err.envelope?.code === "TOOL_CALL_FORBIDDEN") {
|
|
20513
|
+
return {
|
|
20514
|
+
name: "Integrations",
|
|
20515
|
+
status: "warn",
|
|
20516
|
+
message: "API key was denied integrations access",
|
|
20517
|
+
detail: "Requires the integrations:manage grant, or integrations:connect_own on a user-created key"
|
|
20518
|
+
};
|
|
20519
|
+
}
|
|
19759
20520
|
return {
|
|
19760
20521
|
name: "Integrations",
|
|
19761
20522
|
status: "warn",
|
|
@@ -19843,8 +20604,9 @@ function printChecks(checks) {
|
|
|
19843
20604
|
}
|
|
19844
20605
|
console.log("");
|
|
19845
20606
|
}
|
|
19846
|
-
var FAIL_SYMBOL2, STATUS_ICONS, doctor_default, agentChecks;
|
|
20607
|
+
var FAIL_SYMBOL2, STATUS_ICONS, doctor_default, COMMAND_GRANTS, agentChecks;
|
|
19847
20608
|
var init_doctor = __esm(() => {
|
|
20609
|
+
init_dist4();
|
|
19848
20610
|
init_dist();
|
|
19849
20611
|
init_auth();
|
|
19850
20612
|
init_output2();
|
|
@@ -19867,11 +20629,13 @@ var init_doctor = __esm(() => {
|
|
|
19867
20629
|
description: [
|
|
19868
20630
|
"Check CLI version, API key, connectivity, and agent detection.",
|
|
19869
20631
|
"",
|
|
19870
|
-
"Runs
|
|
20632
|
+
"Runs six checks in sequence:",
|
|
19871
20633
|
" 1. CLI version -- compares against npm registry",
|
|
19872
20634
|
" 2. API key -- checks presence and format (ok_ prefix)",
|
|
19873
20635
|
" 3. API validation -- makes a live test call to verify the key works",
|
|
19874
|
-
" 4.
|
|
20636
|
+
" 4. Permissions -- shows key grants and unavailable commands",
|
|
20637
|
+
" 5. Integrations -- checks integration readiness or explains missing access",
|
|
20638
|
+
" 6. Agent detection -- detects supported coding agents and whether the Outlit skill is installed",
|
|
19875
20639
|
"",
|
|
19876
20640
|
"Exit code: 0 if all checks pass or warn, 1 if any check fails.",
|
|
19877
20641
|
"",
|
|
@@ -19896,9 +20660,12 @@ var init_doctor = __esm(() => {
|
|
|
19896
20660
|
checks.push(checkApiKeyPresence(credential));
|
|
19897
20661
|
if (credential) {
|
|
19898
20662
|
const apiCheck = await validateApiKey(credential.key);
|
|
19899
|
-
checks.push(apiCheck);
|
|
19900
|
-
if (apiCheck.
|
|
19901
|
-
checks.push(
|
|
20663
|
+
checks.push(apiCheck.check);
|
|
20664
|
+
if (apiCheck.validation) {
|
|
20665
|
+
checks.push(checkPermissions(apiCheck.validation));
|
|
20666
|
+
}
|
|
20667
|
+
if (apiCheck.check.status !== "fail") {
|
|
20668
|
+
checks.push(await checkIntegrations(credential.key, apiCheck.validation));
|
|
19902
20669
|
}
|
|
19903
20670
|
} else {
|
|
19904
20671
|
checks.push({
|
|
@@ -19918,6 +20685,38 @@ var init_doctor = __esm(() => {
|
|
|
19918
20685
|
process.exit(1);
|
|
19919
20686
|
}
|
|
19920
20687
|
});
|
|
20688
|
+
COMMAND_GRANTS = [
|
|
20689
|
+
{
|
|
20690
|
+
commands: "customers (read), users, facts, sources, search, attention",
|
|
20691
|
+
anyOf: ["customer_intelligence:read"]
|
|
20692
|
+
},
|
|
20693
|
+
{ commands: "ws-users", anyOf: ["workspace_members:read"] },
|
|
20694
|
+
{ commands: "sql, schema", anyOf: ["analytics:read"] },
|
|
20695
|
+
{ commands: "destinations", anyOf: ["destinations:manage"] },
|
|
20696
|
+
{ commands: "features", anyOf: ["behavior_metrics:manage"] },
|
|
20697
|
+
{
|
|
20698
|
+
commands: "integrations",
|
|
20699
|
+
anyOf: ["integrations:manage", "integrations:connect_own"]
|
|
20700
|
+
},
|
|
20701
|
+
{ commands: "activation get, preview", anyOf: ["activation:read"] },
|
|
20702
|
+
{ commands: "activation update, disable", anyOf: ["activation:manage"] },
|
|
20703
|
+
{ commands: "settings get", anyOf: ["workspace_settings:read"] },
|
|
20704
|
+
{ commands: "settings update", anyOf: ["workspace_settings:manage"] },
|
|
20705
|
+
{ commands: "customers grant, revoke, owner", anyOf: ["customer_access:manage"] },
|
|
20706
|
+
{
|
|
20707
|
+
commands: "identity suggestions list",
|
|
20708
|
+
anyOf: ["customer_intelligence:read"]
|
|
20709
|
+
},
|
|
20710
|
+
{
|
|
20711
|
+
commands: "identity suggestions reject",
|
|
20712
|
+
anyOf: ["customer_identity:review"]
|
|
20713
|
+
},
|
|
20714
|
+
{
|
|
20715
|
+
commands: "customers merge (preview), customers merge-status",
|
|
20716
|
+
anyOf: ["customer_intelligence:read"]
|
|
20717
|
+
},
|
|
20718
|
+
{ commands: "customers merge --execute", anyOf: ["customer_identity:merge"] }
|
|
20719
|
+
];
|
|
19921
20720
|
agentChecks = {
|
|
19922
20721
|
"claude-code": {
|
|
19923
20722
|
name: "Claude Code",
|
|
@@ -19955,7 +20754,7 @@ var exports_upgrade = {};
|
|
|
19955
20754
|
__export(exports_upgrade, {
|
|
19956
20755
|
default: () => upgrade_default
|
|
19957
20756
|
});
|
|
19958
|
-
var
|
|
20757
|
+
var upgrade_default;
|
|
19959
20758
|
var init_upgrade = __esm(() => {
|
|
19960
20759
|
init_dist();
|
|
19961
20760
|
init_output2();
|
|
@@ -19996,10 +20795,10 @@ var init_upgrade = __esm(() => {
|
|
|
19996
20795
|
console.log(`Outlit CLI is already up to date (v${CLI_VERSION2})`);
|
|
19997
20796
|
return;
|
|
19998
20797
|
}
|
|
19999
|
-
const standalone =
|
|
20798
|
+
const standalone = isStandaloneInstall2();
|
|
20000
20799
|
const upgradeCommand = standalone ? null : getUpgradeCommand();
|
|
20001
20800
|
if (!upgradeCommand) {
|
|
20002
|
-
const message = standalone ? `Outlit CLI v${latestVersion} is available. This standalone binary cannot update itself — ${
|
|
20801
|
+
const message = standalone ? `Outlit CLI v${latestVersion} is available. This standalone binary cannot update itself — ${STANDALONE_UPDATE_HINT2}.` : `Outlit CLI v${latestVersion} is available. Could not determine how Outlit CLI was installed. Update it manually with your package manager, for example \`bun add -g @outlit/cli\` or \`npm install -g @outlit/cli\`.`;
|
|
20003
20802
|
return outputError({ message, code: standalone ? "manual_update_required" : "unknown_installer" }, json);
|
|
20004
20803
|
}
|
|
20005
20804
|
try {
|
|
@@ -20696,12 +21495,147 @@ var init_search = __esm(() => {
|
|
|
20696
21495
|
});
|
|
20697
21496
|
});
|
|
20698
21497
|
|
|
21498
|
+
// src/commands/feedback.ts
|
|
21499
|
+
var exports_feedback = {};
|
|
21500
|
+
__export(exports_feedback, {
|
|
21501
|
+
default: () => feedback_default
|
|
21502
|
+
});
|
|
21503
|
+
import { readFileSync as readFileSync4 } from "node:fs";
|
|
21504
|
+
function readTextFile(path, flag, json) {
|
|
21505
|
+
try {
|
|
21506
|
+
return readFileSync4(path, "utf-8");
|
|
21507
|
+
} catch (error) {
|
|
21508
|
+
return outputError({
|
|
21509
|
+
message: `Cannot read ${flag} file: ${errorMessage(error, "unknown error")}`,
|
|
21510
|
+
code: "file_error"
|
|
21511
|
+
}, json);
|
|
21512
|
+
}
|
|
21513
|
+
}
|
|
21514
|
+
function resolveBody(args, json) {
|
|
21515
|
+
if (args.body !== undefined && args.bodyFile !== undefined) {
|
|
21516
|
+
return outputError({ message: "Use either --body or --body-file, not both", code: "invalid_input" }, json);
|
|
21517
|
+
}
|
|
21518
|
+
const raw = args.bodyFile !== undefined ? readTextFile(args.bodyFile, "--body-file", json) : args.body;
|
|
21519
|
+
const trimmed = raw?.trim();
|
|
21520
|
+
if (!trimmed) {
|
|
21521
|
+
return outputError({ message: "Provide --body or --body-file", code: "missing_input" }, json);
|
|
21522
|
+
}
|
|
21523
|
+
if (trimmed.length > BODY_MAX_LENGTH) {
|
|
21524
|
+
return outputError({ message: `--body must be at most ${BODY_MAX_LENGTH} characters`, code: "invalid_input" }, json);
|
|
21525
|
+
}
|
|
21526
|
+
return trimmed;
|
|
21527
|
+
}
|
|
21528
|
+
function resolveArea(area, json) {
|
|
21529
|
+
if (area === undefined)
|
|
21530
|
+
return;
|
|
21531
|
+
const trimmed = area.trim();
|
|
21532
|
+
if (!trimmed) {
|
|
21533
|
+
return outputError({ message: "--area must be a non-empty string", code: "invalid_input" }, json);
|
|
21534
|
+
}
|
|
21535
|
+
if (trimmed.length > AREA_MAX_LENGTH) {
|
|
21536
|
+
return outputError({ message: `--area must be at most ${AREA_MAX_LENGTH} characters`, code: "invalid_input" }, json);
|
|
21537
|
+
}
|
|
21538
|
+
return trimmed;
|
|
21539
|
+
}
|
|
21540
|
+
function resolveContext(args, json) {
|
|
21541
|
+
if (args.context !== undefined && args.contextFile !== undefined) {
|
|
21542
|
+
return outputError({ message: "Use either --context or --context-file, not both", code: "invalid_input" }, json);
|
|
21543
|
+
}
|
|
21544
|
+
const raw = args.contextFile !== undefined ? readTextFile(args.contextFile, "--context-file", json) : args.context;
|
|
21545
|
+
if (raw === undefined)
|
|
21546
|
+
return;
|
|
21547
|
+
let parsed;
|
|
21548
|
+
try {
|
|
21549
|
+
parsed = JSON.parse(raw);
|
|
21550
|
+
} catch (error) {
|
|
21551
|
+
return outputError({
|
|
21552
|
+
message: `Invalid --context JSON: ${errorMessage(error, "parse failed")}`,
|
|
21553
|
+
code: "invalid_input"
|
|
21554
|
+
}, json);
|
|
21555
|
+
}
|
|
21556
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
21557
|
+
return outputError({ message: "--context must be a JSON object", code: "invalid_input" }, json);
|
|
21558
|
+
}
|
|
21559
|
+
if (Buffer.byteLength(JSON.stringify(parsed), "utf-8") > CONTEXT_MAX_BYTES) {
|
|
21560
|
+
return outputError({ message: "--context must serialize to at most 16 KiB", code: "invalid_input" }, json);
|
|
21561
|
+
}
|
|
21562
|
+
return parsed;
|
|
21563
|
+
}
|
|
21564
|
+
var BODY_MAX_LENGTH = 20000, AREA_MAX_LENGTH = 100, CONTEXT_MAX_BYTES, feedback_default;
|
|
21565
|
+
var init_feedback = __esm(() => {
|
|
21566
|
+
init_dist4();
|
|
21567
|
+
init_dist();
|
|
21568
|
+
init_auth();
|
|
21569
|
+
init_output2();
|
|
21570
|
+
init_api();
|
|
21571
|
+
init_output();
|
|
21572
|
+
CONTEXT_MAX_BYTES = 16 * 1024;
|
|
21573
|
+
feedback_default = defineCommand2({
|
|
21574
|
+
meta: {
|
|
21575
|
+
name: "feedback",
|
|
21576
|
+
description: [
|
|
21577
|
+
"Submit product feedback to the Outlit team: bugs, feature ideas, or agent friction.",
|
|
21578
|
+
"Feedback is product intake, not a support ticket, and does not guarantee a reply.",
|
|
21579
|
+
"Do not include secrets or unnecessary customer data.",
|
|
21580
|
+
"",
|
|
21581
|
+
"Examples:",
|
|
21582
|
+
" outlit feedback --body 'The customers merge preview did not list the losing record traits' --json",
|
|
21583
|
+
" outlit feedback --body 'Add a way to export attention items' --area attention --json",
|
|
21584
|
+
` outlit feedback --body 'SQL tool rejected a valid LIMIT clause' --context '{"surface":"cli","command":"sql"}' --json`,
|
|
21585
|
+
" outlit feedback --body-file report.md --context-file diagnostics.json --json",
|
|
21586
|
+
"",
|
|
21587
|
+
AGENT_JSON_HINT
|
|
21588
|
+
].join(`
|
|
21589
|
+
`)
|
|
21590
|
+
},
|
|
21591
|
+
args: {
|
|
21592
|
+
...authArgs,
|
|
21593
|
+
...outputArgs,
|
|
21594
|
+
body: {
|
|
21595
|
+
type: "string",
|
|
21596
|
+
description: "Feedback text: trimmed, non-empty, at most 20000 characters"
|
|
21597
|
+
},
|
|
21598
|
+
"body-file": {
|
|
21599
|
+
type: "string",
|
|
21600
|
+
description: "Path to a UTF-8 text file containing the feedback body"
|
|
21601
|
+
},
|
|
21602
|
+
area: {
|
|
21603
|
+
type: "string",
|
|
21604
|
+
description: "Optional product area label, at most 100 characters"
|
|
21605
|
+
},
|
|
21606
|
+
context: {
|
|
21607
|
+
type: "string",
|
|
21608
|
+
description: "Optional JSON object with diagnostic context, at most 16 KiB serialized. Never include secrets."
|
|
21609
|
+
},
|
|
21610
|
+
"context-file": {
|
|
21611
|
+
type: "string",
|
|
21612
|
+
description: "Path to a JSON file with diagnostic context (mutually exclusive with --context)"
|
|
21613
|
+
}
|
|
21614
|
+
},
|
|
21615
|
+
async run({ args }) {
|
|
21616
|
+
const json = !!args.json;
|
|
21617
|
+
const client = await getClientOrExit(args["api-key"], json);
|
|
21618
|
+
const body = resolveBody({ body: args.body, bodyFile: args["body-file"] }, json);
|
|
21619
|
+
const area = resolveArea(args.area, json);
|
|
21620
|
+
const context = resolveContext({ context: args.context, contextFile: args["context-file"] }, json);
|
|
21621
|
+
const input = { body };
|
|
21622
|
+
if (area !== undefined)
|
|
21623
|
+
input.area = area;
|
|
21624
|
+
if (context !== undefined)
|
|
21625
|
+
input.context = context;
|
|
21626
|
+
return runTool(client, publicToolContracts.outlit_submit_feedback.toolName, input, json, {
|
|
21627
|
+
spinnerMessage: "Submitting feedback..."
|
|
21628
|
+
});
|
|
21629
|
+
}
|
|
21630
|
+
});
|
|
21631
|
+
});
|
|
21632
|
+
|
|
20699
21633
|
// src/commands/sql.ts
|
|
20700
21634
|
var exports_sql = {};
|
|
20701
21635
|
__export(exports_sql, {
|
|
20702
21636
|
default: () => sql_default
|
|
20703
21637
|
});
|
|
20704
|
-
import { readFileSync as
|
|
21638
|
+
import { readFileSync as readFileSync5 } from "node:fs";
|
|
20705
21639
|
var publicSqlViews, sql_default;
|
|
20706
21640
|
var init_sql = __esm(() => {
|
|
20707
21641
|
init_dist4();
|
|
@@ -20755,7 +21689,7 @@ var init_sql = __esm(() => {
|
|
|
20755
21689
|
let sql;
|
|
20756
21690
|
if (args["query-file"]) {
|
|
20757
21691
|
try {
|
|
20758
|
-
sql =
|
|
21692
|
+
sql = readFileSync5(args["query-file"], "utf-8");
|
|
20759
21693
|
} catch (err) {
|
|
20760
21694
|
return outputError({
|
|
20761
21695
|
message: `Cannot read file: ${errorMessage(err, "unknown error")}`,
|
|
@@ -22770,6 +23704,18 @@ var init_completions = __esm(() => {
|
|
|
22770
23704
|
}
|
|
22771
23705
|
]
|
|
22772
23706
|
},
|
|
23707
|
+
{
|
|
23708
|
+
name: "feedback",
|
|
23709
|
+
desc: "Submit product feedback",
|
|
23710
|
+
flags: [
|
|
23711
|
+
...COMMON,
|
|
23712
|
+
{ name: "--body", desc: "Feedback text (max 20000 chars)" },
|
|
23713
|
+
{ name: "--body-file", desc: "Read feedback text from a file" },
|
|
23714
|
+
{ name: "--area", desc: "Optional product area label" },
|
|
23715
|
+
{ name: "--context", desc: "Optional JSON context object (max 16 KiB)" },
|
|
23716
|
+
{ name: "--context-file", desc: "Read JSON context object from a file" }
|
|
23717
|
+
]
|
|
23718
|
+
},
|
|
22773
23719
|
{
|
|
22774
23720
|
name: "search",
|
|
22775
23721
|
desc: "Search customer context",
|
|
@@ -23476,6 +24422,7 @@ var UPDATE_CHECK_INTERVAL_MS = 12 * 60 * 60 * 1000;
|
|
|
23476
24422
|
var PACKAGE_NAME = "@outlit/cli";
|
|
23477
24423
|
var LATEST_VERSION_URL = "https://registry.npmjs.org/@outlit%2Fcli/latest";
|
|
23478
24424
|
var INTERNAL_UPDATE_FLAG = "--internal-update-check";
|
|
24425
|
+
var STANDALONE_UPDATE_HINT = "re-run your original install method (for example `curl -fsSL https://outlit.ai/install.sh | bash` or `brew upgrade outlitai/tap/outlit`), or download the latest release from https://github.com/OutlitAI/outlit-sdk/releases";
|
|
23479
24426
|
function getUpdateCachePath() {
|
|
23480
24427
|
return join2(getConfigDir(), "update-check.json");
|
|
23481
24428
|
}
|
|
@@ -23562,6 +24509,15 @@ function readCommandOutput(command, args) {
|
|
|
23562
24509
|
return null;
|
|
23563
24510
|
}
|
|
23564
24511
|
}
|
|
24512
|
+
function isStandaloneInstall(argv = process.argv) {
|
|
24513
|
+
const scriptPath = argv[1];
|
|
24514
|
+
if (!scriptPath)
|
|
24515
|
+
return true;
|
|
24516
|
+
if (scriptPath.startsWith("/$bunfs/") || scriptPath.startsWith("~bunfs"))
|
|
24517
|
+
return true;
|
|
24518
|
+
const resolved = safeRealPath(scriptPath) ?? scriptPath;
|
|
24519
|
+
return !/\.(?:cjs|mjs|jsx?|tsx?)$/.test(resolved);
|
|
24520
|
+
}
|
|
23565
24521
|
function inferInstaller() {
|
|
23566
24522
|
const fromAgent = inferInstallerFromUserAgent(process.env.npm_config_user_agent ?? "");
|
|
23567
24523
|
if (fromAgent)
|
|
@@ -23584,8 +24540,11 @@ function safeRealPath(filePath) {
|
|
|
23584
24540
|
return null;
|
|
23585
24541
|
}
|
|
23586
24542
|
}
|
|
23587
|
-
function formatUpdateCommand(installer =
|
|
23588
|
-
|
|
24543
|
+
function formatUpdateCommand(installer, argv = process.argv) {
|
|
24544
|
+
if (isStandaloneInstall(argv))
|
|
24545
|
+
return STANDALONE_UPDATE_HINT;
|
|
24546
|
+
const resolved = installer === undefined ? inferInstaller() : installer;
|
|
24547
|
+
switch (resolved) {
|
|
23589
24548
|
case "bun":
|
|
23590
24549
|
return "bun add -g @outlit/cli";
|
|
23591
24550
|
case "npm":
|
|
@@ -23627,26 +24586,29 @@ function printCachedUpdateNotice(argv = process.argv, notify = console.error) {
|
|
|
23627
24586
|
Update with: ${notice.command}`);
|
|
23628
24587
|
return true;
|
|
23629
24588
|
}
|
|
23630
|
-
function scheduleBackgroundUpdateCheck(argv = process.argv, spawnProcess = spawn) {
|
|
24589
|
+
function scheduleBackgroundUpdateCheck(argv = process.argv, spawnProcess = spawn, execPath = process.execPath) {
|
|
23631
24590
|
if (!shouldShowUpdateNotice(argv))
|
|
23632
24591
|
return false;
|
|
23633
24592
|
if (!isUpdateCheckDue(readCachedUpdateState()))
|
|
23634
24593
|
return false;
|
|
23635
|
-
const
|
|
23636
|
-
const
|
|
23637
|
-
|
|
24594
|
+
const standalone = isStandaloneInstall(argv);
|
|
24595
|
+
const command = standalone ? execPath : argv[0];
|
|
24596
|
+
const scriptPath = standalone ? null : argv[1];
|
|
24597
|
+
if (!command || !standalone && !scriptPath)
|
|
23638
24598
|
return false;
|
|
23639
|
-
|
|
23640
|
-
detached: true,
|
|
23641
|
-
|
|
23642
|
-
|
|
23643
|
-
|
|
23644
|
-
|
|
24599
|
+
try {
|
|
24600
|
+
const child = spawnProcess(command, [...scriptPath ? [scriptPath] : [], INTERNAL_UPDATE_FLAG], { detached: true, stdio: "ignore" });
|
|
24601
|
+
child.on?.("error", () => {});
|
|
24602
|
+
child.unref?.();
|
|
24603
|
+
return true;
|
|
24604
|
+
} catch {
|
|
24605
|
+
return false;
|
|
24606
|
+
}
|
|
23645
24607
|
}
|
|
23646
24608
|
function initializeUpdateNotifier(opts) {
|
|
23647
24609
|
const argv = opts?.argv ?? process.argv;
|
|
23648
24610
|
printCachedUpdateNotice(argv, opts?.notify);
|
|
23649
|
-
scheduleBackgroundUpdateCheck(argv, opts?.spawn);
|
|
24611
|
+
scheduleBackgroundUpdateCheck(argv, opts?.spawn, opts?.execPath);
|
|
23650
24612
|
}
|
|
23651
24613
|
async function fetchLatestCliVersion() {
|
|
23652
24614
|
const response = await fetch(LATEST_VERSION_URL, { signal: AbortSignal.timeout(5000) });
|
|
@@ -23659,7 +24621,7 @@ async function fetchLatestCliVersion() {
|
|
|
23659
24621
|
}
|
|
23660
24622
|
async function runInternalUpdateCheck(opts) {
|
|
23661
24623
|
const fetchLatestVersion = opts?.fetchLatestVersion ?? fetchLatestCliVersion;
|
|
23662
|
-
const installer = opts?.installer ?? inferInstaller();
|
|
24624
|
+
const installer = isStandaloneInstall() ? null : opts?.installer ?? inferInstaller();
|
|
23663
24625
|
try {
|
|
23664
24626
|
const latestVersion = await fetchLatestVersion();
|
|
23665
24627
|
writeCachedUpdateState({
|
|
@@ -23714,6 +24676,7 @@ async function startCli() {
|
|
|
23714
24676
|
" outlit features create --source metric_source_v1_0123456789abcdef0123456789abcdef --event report_exported --key reports_exported --name 'Reports exported' --json",
|
|
23715
24677
|
" outlit customers features acme.com --weekly --json",
|
|
23716
24678
|
" outlit customers credits acme.com --json",
|
|
24679
|
+
" outlit feedback --body 'The merge preview dropped trait history' --area customers --json",
|
|
23717
24680
|
" outlit doctor --json",
|
|
23718
24681
|
"",
|
|
23719
24682
|
"For AI agents: commands auto-output JSON when stdout is piped. No --json flag needed."
|
|
@@ -23734,6 +24697,7 @@ async function startCli() {
|
|
|
23734
24697
|
facts: () => Promise.resolve().then(() => (init_facts(), exports_facts)).then((m) => m.default),
|
|
23735
24698
|
sources: () => Promise.resolve().then(() => (init_sources(), exports_sources)).then((m) => m.default),
|
|
23736
24699
|
search: () => Promise.resolve().then(() => (init_search(), exports_search)).then((m) => m.default),
|
|
24700
|
+
feedback: () => Promise.resolve().then(() => (init_feedback(), exports_feedback)).then((m) => m.default),
|
|
23737
24701
|
sql: () => Promise.resolve().then(() => (init_sql(), exports_sql)).then((m) => m.default),
|
|
23738
24702
|
schema: () => Promise.resolve().then(() => (init_schema(), exports_schema)).then((m) => m.default),
|
|
23739
24703
|
destinations: () => Promise.resolve().then(() => (init_destinations(), exports_destinations)).then((m) => m.default),
|