@chatarmin/os 1.31.0 → 1.32.0

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.
@@ -74,5 +74,36 @@ export interface CompaniesClientSignalsClient {
74
74
  resolveClientSignals: (input: ResolveClientSignalsInput) => Promise<{
75
75
  updated: number;
76
76
  }>;
77
+ /** Records a client's sentiment (staff routines). 404 = company not found, 403 = non-member. */
78
+ reportClientSentiment: (input: ReportClientSentimentInput) => Promise<ClientSentimentReport>;
79
+ }
80
+ /**
81
+ * Client sentiment: how a client feels, as a staff routine read it from the client's Slack and
82
+ * email. The latest report per company (last 14 days) is the current one and shows on the CSM's
83
+ * portfolio; `ok` clears an earlier `critical`. Mirrors `packages/api/src/services/client-sentiment`.
84
+ */
85
+ export type ClientSentimentLevel = 'critical' | 'at_risk' | 'ok';
86
+ export interface ReportClientSentimentInput {
87
+ companyId?: string;
88
+ /** A product's org id for the company (e.g. the CX org id). */
89
+ externalOrgId?: string;
90
+ level: ClientSentimentLevel;
91
+ /** Why, in a sentence or two (max 1000 characters); shown to staff verbatim. */
92
+ reason: string;
93
+ /** The message or thread the judgement rests on. */
94
+ permalink?: string;
95
+ /** When the routine judged it; default now. */
96
+ reportedAt?: Date;
97
+ /** Login email of the OS member the report is recorded for (403 otherwise). */
98
+ actorEmail: string;
99
+ }
100
+ export interface ClientSentimentReport {
101
+ id: string;
102
+ companyId: string;
103
+ level: ClientSentimentLevel;
104
+ reason: string;
105
+ permalink: string | null;
106
+ reportedByEmail: string;
107
+ reportedAt: Date;
77
108
  }
78
109
  //# sourceMappingURL=client-signals-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client-signals-types.d.ts","sourceRoot":"","sources":["../../src/companies/client-signals-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAE9E;;;;GAIG;AAEH,MAAM,MAAM,gBAAgB,GAAG,YAAY,CAAA;AAC3C,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,QAAQ,CAAA;AAChD,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,WAAW,GAAG,WAAW,CAAA;AAEnE,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,kBAAkB,CAAA;IAC3B,IAAI,CAAC,EAAE,gBAAgB,CAAA;IACvB,0EAA0E;IAC1E,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,wEAAwE;IACxE,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,IAAI,EAAE,gBAAgB,CAAA;IACtB,IAAI,EAAE,gBAAgB,CAAA;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,uEAAuE;IACvE,KAAK,EAAE,MAAM,CAAA;IACb,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAA;IACb,6FAA6F;IAC7F,SAAS,EAAE,UAAU,GAAG,SAAS,CAAA;IACjC,8DAA8D;IAC9D,WAAW,EAAE,MAAM,CAAA;IACnB,oEAAoE;IACpE,UAAU,EAAE,MAAM,CAAA;IAClB,wBAAwB;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,qDAAqD;IACrD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,MAAM,EAAE,IAAI,CAAA;IACZ,MAAM,EAAE,kBAAkB,CAAA;IAC1B,UAAU,EAAE,IAAI,GAAG,IAAI,CAAA;IACvB,UAAU,EAAE,IAAI,GAAG,IAAI,CAAA;IACvB,kFAAkF;IAClF,WAAW,EAAE,oBAAoB,GAAG,IAAI,CAAA;IACxC,qDAAqD;IACrD,GAAG,EAAE,YAAY,GAAG,IAAI,CAAA;CACzB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,uFAAuF;IACvF,MAAM,EAAE,WAAW,GAAG,WAAW,CAAA;IACjC,+EAA+E;IAC/E,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,4BAA4B;IAC3C,qFAAqF;IACrF,iBAAiB,EAAE,CAAC,KAAK,CAAC,EAAE,sBAAsB,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAA;IACvF,+EAA+E;IAC/E,yBAAyB,EAAE,CAAC,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC3F,kFAAkF;IAClF,oBAAoB,EAAE,CAAC,KAAK,EAAE,yBAAyB,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACzF"}
1
+ {"version":3,"file":"client-signals-types.d.ts","sourceRoot":"","sources":["../../src/companies/client-signals-types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/companies/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,KAAK,EACV,eAAe,EAkBhB,MAAM,YAAY,CAAA;AAkDnB,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAA;AAC/D,KAAK,OAAO,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;AAE7E,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,OAAO,GACZ,eAAe,CA8KjB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/companies/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,KAAK,EACV,eAAe,EAkBhB,MAAM,YAAY,CAAA;AAoDnB,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAA;AAC/D,KAAK,OAAO,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;AAE7E,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,OAAO,GACZ,eAAe,CAoLjB"}
@@ -17,6 +17,7 @@ export function createCompaniesClient(client, call) {
17
17
  listClientSignals: (input = {}) => call('companies.listClientSignals', () => client.companies.listClientSignalsForProduct.query(input)),
18
18
  markClientSignalsNotified: (input) => call('companies.markClientSignalsNotified', () => client.companies.markClientSignalsNotifiedForProduct.mutate(input)),
19
19
  resolveClientSignals: (input) => call('companies.resolveClientSignals', () => client.companies.resolveClientSignalsForStaff.mutate(input)),
20
+ reportClientSentiment: (input) => call('companies.reportClientSentiment', () => client.companies.reportClientSentimentForStaff.mutate(input)),
20
21
  attachUsagePrice: (input) => call('companies.attachUsagePrice', () => client.companies.attachUsagePriceForStaff.mutate(input)),
21
22
  recordIntegrityDecision: (input) => call('companies.recordIntegrityDecision', () => client.companies.recordIntegrityDecisionForStaff.mutate(input)),
22
23
  listIntegrityDecisions: (input) => call('companies.listIntegrityDecisions', () => client.companies.listIntegrityDecisionsForProduct.query(input)),
@@ -0,0 +1,8 @@
1
+ import type { AppRouter } from '@chatarmin/api/trpc-types';
2
+ import type { createTRPCClient } from '@trpc/client';
3
+ import type { CsmClient } from './types.js';
4
+ type SdkClient = ReturnType<typeof createTRPCClient<AppRouter>>;
5
+ type SdkCall = <T>(operation: string, action: () => Promise<T>) => Promise<T>;
6
+ export declare function createCsmClient(client: SdkClient, call: SdkCall): CsmClient;
7
+ export {};
8
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/csm/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,KAAK,EAAE,SAAS,EAAyD,MAAM,YAAY,CAAA;AAElG,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAA;AAC/D,KAAK,OAAO,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;AAE7E,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,GAAG,SAAS,CAe3E"}
@@ -0,0 +1,7 @@
1
+ export function createCsmClient(client, call) {
2
+ return {
3
+ getPortfolio: (input) => call('csm.getPortfolio', () => client.csmPortfolio.summaryForStaff.query(input)),
4
+ listAttention: (input) => call('csm.listAttention', () => client.csmPortfolio.attentionForStaff.query(input)),
5
+ listClients: (input) => call('csm.listClients', () => client.csmPortfolio.clientsForStaff.query(input)),
6
+ };
7
+ }
@@ -0,0 +1,3 @@
1
+ export { createCsmClient } from './client.js';
2
+ export type * from './types.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/csm/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,mBAAmB,YAAY,CAAA"}
@@ -0,0 +1 @@
1
+ export { createCsmClient } from './client.js';
@@ -0,0 +1,202 @@
1
+ import type { UsageSignal } from '../companies/activity-types.js';
2
+ /**
3
+ * A CSM's portfolio: the numbers and the clients that need action, the same as the "My portfolio"
4
+ * page in OS. Mirrors `packages/api/src/services/csm-portfolio`. Money in minor units (cents);
5
+ * rates as ratios (1 = 100 %), null without an opening base.
6
+ */
7
+ export type PortfolioPeriod = 'mtd' | 'qtd' | 'last_30d' | 'last_12m';
8
+ export interface PortfolioCsm {
9
+ memberId: string;
10
+ userId: string;
11
+ name: string | null;
12
+ email: string;
13
+ }
14
+ export interface PortfolioMrr {
15
+ totalCents: number;
16
+ /** Fixed: committed subscription MRR. */
17
+ committedCents: number;
18
+ /** Variable: usage-based MRR. */
19
+ usageCents: number;
20
+ }
21
+ export interface PortfolioRetention {
22
+ nrrPct: number | null;
23
+ grrPct: number | null;
24
+ churnRatePct: number | null;
25
+ }
26
+ export interface PortfolioSummary {
27
+ csm: PortfolioCsm;
28
+ period: {
29
+ key: PortfolioPeriod;
30
+ from: Date;
31
+ to: Date;
32
+ };
33
+ /** Live: the CSM's active clients today. */
34
+ clients: number;
35
+ mrr: PortfolioMrr;
36
+ /** Attributed: clients the CSM owned during the period (daily snapshots). */
37
+ retention: PortfolioRetention;
38
+ /** Committed MRR movements over the period. */
39
+ waterfall: {
40
+ openingMrrCents: number;
41
+ newBusinessCents: number;
42
+ expansionCents: number;
43
+ reactivationCents: number;
44
+ contractionCents: number;
45
+ churnCents: number;
46
+ closingMrrCents: number;
47
+ };
48
+ /** Clients with a message waiting for our reply for more than an hour (tracked waits). */
49
+ unanswered: {
50
+ clients: number;
51
+ oldestSince: Date | null;
52
+ };
53
+ /**
54
+ * Tracked from new messages on (no backfill), in calendar time. A wait is a client message a
55
+ * person wrote that expects our reply (auto-replies, newsletters and bulk mail never count);
56
+ * our team's next human message in the conversation answers it.
57
+ */
58
+ responsiveness: {
59
+ /** The organization's first tracked wait; null before any. */
60
+ trackingSince: Date | null;
61
+ waitsAnswered: number;
62
+ waitsOpen: number;
63
+ firstResponseSeconds: {
64
+ median: number | null;
65
+ avg: number | null;
66
+ p90: number | null;
67
+ };
68
+ /** Conversations waiting for our reply for more than an hour. */
69
+ waitingConversations: number;
70
+ };
71
+ /** By the client's primary product (its oldest product link); productId null = no product. */
72
+ byProduct: Array<PortfolioRetention & {
73
+ productId: string | null;
74
+ productName: string | null;
75
+ clients: number;
76
+ mrr: PortfolioMrr;
77
+ }>;
78
+ renewals: {
79
+ windowDays: number;
80
+ totalMrrCents: number;
81
+ companies: Array<{
82
+ companyId: string;
83
+ companyName: string;
84
+ contractEndAt: Date;
85
+ /** The contract end's calendar day (YYYY-MM-DD). */
86
+ contractEndOn: string;
87
+ daysLeft: number;
88
+ mrrCents: number;
89
+ }>;
90
+ };
91
+ asOf: Date;
92
+ }
93
+ /** Most urgent first; the order ranks clients. */
94
+ export type AttentionReasonKind = 'unanswered' | 'sentiment' | 'promise_due' | 'billing_finding' | 'usage_drop' | 'payment_overdue' | 'renewal_due';
95
+ export type AttentionReason =
96
+ /** Client messages waiting for our reply for more than an hour (tracked waits). */
97
+ {
98
+ kind: 'unanswered';
99
+ since: Date;
100
+ conversations: number;
101
+ }
102
+ /** The latest sentiment report (last 14 days) says critical or at risk. */
103
+ | {
104
+ kind: 'sentiment';
105
+ since: Date;
106
+ level: 'critical' | 'at_risk';
107
+ reason: string;
108
+ permalink: string | null;
109
+ }
110
+ /** Commitments our team made that are due today or earlier. */
111
+ | {
112
+ kind: 'promise_due';
113
+ since: Date;
114
+ /** All due commitments; `commitments` holds the oldest (up to 10). */
115
+ total: number;
116
+ commitments: Array<{
117
+ id: string;
118
+ quote: string;
119
+ dueOn: Date;
120
+ permalink: string | null;
121
+ }>;
122
+ }
123
+ /** Open high/medium billing integrity findings. */
124
+ | {
125
+ kind: 'billing_finding';
126
+ since: Date;
127
+ /** All open findings; `findings` holds the oldest (up to 10). */
128
+ total: number;
129
+ findings: Array<{
130
+ id: string;
131
+ code: string;
132
+ severity: string;
133
+ message: string;
134
+ }>;
135
+ } | {
136
+ kind: 'usage_drop';
137
+ since: null;
138
+ signals: UsageSignal[];
139
+ } | {
140
+ kind: 'payment_overdue';
141
+ since: null;
142
+ overdueInvoices: number;
143
+ overdueAmountCents: number;
144
+ maxDaysOverdue: number;
145
+ }
146
+ /** The contract ends within 60 days. */
147
+ | {
148
+ kind: 'renewal_due';
149
+ since: null;
150
+ contractEndAt: Date;
151
+ contractEndOn: string;
152
+ daysLeft: number;
153
+ };
154
+ export interface AttentionItem {
155
+ companyId: string;
156
+ companyName: string;
157
+ mrrCents: number;
158
+ reasons: AttentionReason[];
159
+ /** The oldest dated reason. */
160
+ oldestSince: Date | null;
161
+ }
162
+ export interface PortfolioAttention {
163
+ /** Ranked: most urgent reason, then MRR at stake. */
164
+ items: AttentionItem[];
165
+ counts: Record<AttentionReasonKind, number>;
166
+ asOf: Date;
167
+ }
168
+ export interface PortfolioClient {
169
+ companyId: string;
170
+ companyName: string;
171
+ /** Linked products, by name. */
172
+ products: string[];
173
+ mrrCents: number;
174
+ /** Last message in either direction. */
175
+ lastContactAt: Date | null;
176
+ /** The client is waiting for our reply since then; null = nothing unanswered. */
177
+ unrepliedSinceAt: Date | null;
178
+ contractEndAt: Date | null;
179
+ /** The contract end's calendar day (YYYY-MM-DD). */
180
+ contractEndOn: string | null;
181
+ }
182
+ export interface GetPortfolioInput {
183
+ /** The CSM's OS login email (404 when no member has it). */
184
+ csmEmail: string;
185
+ /** Default `mtd` (month to date, in the organization's timezone). */
186
+ period?: PortfolioPeriod;
187
+ }
188
+ export interface CsmClient {
189
+ /** The CSM's numbers: clients, MRR, NRR/GRR/churn, response times, per product, renewals. */
190
+ getPortfolio: (input: GetPortfolioInput) => Promise<PortfolioSummary>;
191
+ /** The CSM's clients that need action now, ranked, with the facts behind each reason. */
192
+ listAttention: (input: {
193
+ csmEmail: string;
194
+ }) => Promise<PortfolioAttention>;
195
+ /** The CSM's active clients, highest MRR first. */
196
+ listClients: (input: {
197
+ csmEmail: string;
198
+ }) => Promise<{
199
+ clients: PortfolioClient[];
200
+ }>;
201
+ }
202
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/csm/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
package/dist/index.d.ts CHANGED
@@ -7,6 +7,7 @@ import { type BillingClient } from "./billing/index.js";
7
7
  import { type DealsClient } from "./deals/index.js";
8
8
  import { type FeaturesClient } from "./features/index.js";
9
9
  import { type OnboardingClient } from "./onboarding/index.js";
10
+ import { type CsmClient } from "./csm/index.js";
10
11
  import type { OnboardInput, OnboardResult } from "./onboard-types.js";
11
12
  export { webhooks, constructProductWebhookEvent, generateTestWebhookHeaders, OsWebhookSignatureVerificationError, WEBHOOK_ID_HEADER, WEBHOOK_SIGNATURE_HEADER, WEBHOOK_TIMESTAMP_HEADER, } from "./webhooks/index.js";
12
13
  export type { ConstructProductWebhookEventOptions, ProductWebhookEventPayload, ProductWebhookHeaders, VerifiedProductWebhookEvent, } from "./webhooks/index.js";
@@ -14,6 +15,7 @@ export type { CompaniesClient, CompanyAssignee, CompanyAssignees, CreateCompanyI
14
15
  export type * from "./companies/integrity-types.js";
15
16
  export type * from "./companies/client-signals-types.js";
16
17
  export type * from "./companies/activity-types.js";
18
+ export type * from "./csm/types.js";
17
19
  export type { ChannelLinkType, ChannelsClient, LinkChannelInput, LinkChannelResult, LinkThreadInput, LinkThreadResult, UpdateChannelLinkInput, UpdateChannelLinkResult, } from "./channels/index.js";
18
20
  export type * from "./deals/index.js";
19
21
  export type * from "./billing/client-revenue-types.js";
@@ -186,6 +188,8 @@ export declare class ChatarminOS {
186
188
  get companies(): CompaniesClient;
187
189
  /** Won-deal onboarding: redeem a client's signup token (`os_invite`) for your product. */
188
190
  get onboarding(): OnboardingClient;
191
+ /** A CSM's portfolio by OS login email: the numbers and the clients that need action now. */
192
+ get csm(): CsmClient;
189
193
  get channels(): ChannelsClient;
190
194
  /**
191
195
  * Contact management operations.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAG1D,OAAO,EAAyB,KAAK,eAAe,EAA2B,MAAM,sBAAsB,CAAA;AAC3G,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACvE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC/E,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAC5E,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACtE,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAI/E,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACrF,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAErE,OAAO,EACL,QAAQ,EACR,4BAA4B,EAC5B,0BAA0B,EAC1B,mCAAmC,EACnC,iBAAiB,EACjB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EACV,mCAAmC,EACnC,0BAA0B,EAC1B,qBAAqB,EACrB,2BAA2B,GAC5B,MAAM,qBAAqB,CAAA;AAE5B,YAAY,EACV,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,cAAc,EACd,yBAAyB,EACzB,0BAA0B,EAC1B,wBAAwB,EACxB,yBAAyB,EACzB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,yBAAyB,EACzB,wBAAwB,EACxB,kCAAkC,EAClC,mCAAmC,EACnC,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,sBAAsB,CAAA;AAC7B,mBAAmB,gCAAgC,CAAA;AACnD,mBAAmB,qCAAqC,CAAA;AACxD,mBAAmB,+BAA+B,CAAA;AAClD,mBAAmB,gBAAgB,CAAA;AACnC,YAAY,EACV,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,qBAAqB,CAAA;AAC5B,mBAAmB,kBAAkB,CAAA;AACrC,mBAAmB,mCAAmC,CAAA;AACtD,YAAY,EACV,aAAa,EACb,qBAAqB,EACrB,eAAe,EACf,qBAAqB,EACrB,0BAA0B,EAC1B,kBAAkB,EAClB,mBAAmB,EACnB,+BAA+B,EAC/B,8BAA8B,EAC9B,+BAA+B,EAC/B,uBAAuB,EACvB,aAAa,EACb,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,iBAAiB,EACjB,yBAAyB,EACzB,6BAA6B,EAC7B,aAAa,EACb,0BAA0B,EAC1B,2BAA2B,EAC3B,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,qBAAqB,EACrB,WAAW,GACZ,MAAM,oBAAoB,CAAA;AAC3B,YAAY,EACV,4BAA4B,EAC5B,kCAAkC,EAClC,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,iCAAiC,EACjC,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,2BAA2B,EAC3B,qBAAqB,EACrB,sBAAsB,EACtB,cAAc,EACd,sBAAsB,GACvB,MAAM,qBAAqB,CAAA;AAM5B;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAA;IAEd;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAGD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAA;IACjB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;CACnD;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAA;IACb,mBAAmB;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,0CAA0C;IAC1C,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,UAAU,EAAE,OAAO,CAAA;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,KAAK,EAAE,OAAO,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,iCAAiC;IACjC,QAAQ,EAAE,KAAK,CAAC;QACd,KAAK,EAAE,MAAM,CAAA;QACb,EAAE,EAAE,MAAM,CAAA;QACV,KAAK,EAAE,OAAO,CAAA;KACf,CAAC,CAAA;CACH;AAED,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACrE,OAAO,EAAE,gBAAgB,EAAE,KAAK,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAC5E,mBAAmB,uBAAuB,CAAA;AAM1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,qBAAa,WAAW;IACtB,MAAM,CAAC,QAAQ;;;MAAW;IAE1B,OAAO,CAAC,MAAM,CAAgD;YAChD,IAAI;IAclB;;;;;;;;;;;;;;;OAeG;gBACS,MAAM,EAAE,iBAAiB;IAoBrC;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,IAAI,SAAS,IAAI,eAAe,CAE/B;IAED,0FAA0F;IAC1F,IAAI,UAAU,IAAI,gBAAgB,CAEjC;IAED,6FAA6F;IAC7F,IAAI,GAAG,IAAI,SAAS,CAEnB;IAED,IAAI,QAAQ,IAAI,cAAc,CAE7B;IAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,IAAI,QAAQ;QAIR;;;;;;;;;;;;;;;;;;;;;;;;;WAyBG;wBACa;YAAE,SAAS,EAAE,MAAM,CAAA;SAAE,GAAG,YAAY;;;;;;;;;;;;;QAKpD;;;;;;;;;;;;;;;;;;;;;;WAsBG;4BACiB;YAClB,SAAS,EAAE,MAAM,CAAA;YACjB,QAAQ,EAAE,YAAY,EAAE,CAAA;SACzB,KAAG,OAAO,CAAC,iBAAiB,CAAC;QAS9B;;;;;;;;;;;;;;;WAeG;0BACe,MAAM;;;;;;;;;;;;QAKxB;;WAEG;wBACa;YACd,SAAS,EAAE,MAAM,CAAA;YACjB,SAAS,CAAC,EAAE,MAAM,CAAA;YAClB,KAAK,CAAC,EAAE,MAAM,CAAA;YACd,IAAI,CAAC,EAAE,MAAM,CAAA;YACb,IAAI,CAAC,EAAE,MAAM,CAAA;YACb,SAAS,CAAC,EAAE,OAAO,CAAA;SACpB;;;;;;;;;;;;QAKD;;WAEG;wBACa;YACd,SAAS,EAAE,MAAM,CAAA;YACjB,SAAS,CAAC,EAAE,MAAM,CAAA;YAClB,KAAK,CAAC,EAAE,MAAM,CAAA;SACf;;;;MAKJ;IAMD;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,IAAI,QAAQ,IAAI,cAAc,CAE7B;IAMD,6EAA6E;IAC7E,IAAI,OAAO,IAAI,aAAa,CAE3B;IAED,4EAA4E;IAC5E,IAAI,KAAK,IAAI,WAAW,CAEvB;IAMD;;;;;;;;;;;;;;;OAeG;IACH,IAAI,KAAK,IAAI,WAAW,CAEvB;IAMD;;;;;;;;;;;;;;;;;;;OAmBG;IACH,IAAI,aAAa;QAIb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA6BG;2BACgB,MAAM,WAAW,cAAc;;;;;QASlD;;;;;;;;;;;;;;;;;;;WAmBG;;;;;;;;;;;;;;;;;;;;QAMH;;;;;;;;;;;;;;;;;;;;;;;WAuBG;4BACiB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAK7B;IAMD;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,IAAI,KAAK;QAIL;;;;;;;;;;;WAWG;;;;;;;;;;;;;;;;;;;;QAMH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAsCG;wBACa,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAKtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA8BG;0BACe,MAAM,WAAW,cAAc;;;;;MASpD;IAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiFG;IACG,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;CAS3D;AAGD,YAAY,EAAE,SAAS,EAAE,CAAA;AAGzB,eAAe,WAAW,CAAA"}
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { TRPCClientError, createTRPCClient, httpBatchLink } from "@trpc/client";
2
2
  import superjson from "superjson";
3
- import { createCompaniesClient, } from "./companies/index.js";
3
+ import { createCompaniesClient } from "./companies/index.js";
4
4
  import { createLinksClient } from "./links/client.js";
5
- import { createChannelsClient, } from "./channels/index.js";
5
+ import { createChannelsClient } from "./channels/index.js";
6
6
  import { createBillingClient } from "./billing/index.js";
7
7
  import { createDealsClient } from "./deals/index.js";
8
8
  import { createFeaturesClient } from "./features/index.js";
@@ -10,6 +10,7 @@ import { webhooks } from "./webhooks/index.js";
10
10
  import { toChatarminOSError } from "./errors.js";
11
11
  import { runOnboardFlow } from "./onboard-flow.js";
12
12
  import { createOnboardingClient } from "./onboarding/index.js";
13
+ import { createCsmClient } from "./csm/index.js";
13
14
  export { webhooks, constructProductWebhookEvent, generateTestWebhookHeaders, OsWebhookSignatureVerificationError, WEBHOOK_ID_HEADER, WEBHOOK_SIGNATURE_HEADER, WEBHOOK_TIMESTAMP_HEADER, } from "./webhooks/index.js";
14
15
  export { ChatarminOSError } from "./errors.js";
15
16
  // ============================================================================
@@ -137,6 +138,10 @@ export class ChatarminOS {
137
138
  get onboarding() {
138
139
  return createOnboardingClient(this.client, this.call.bind(this));
139
140
  }
141
+ /** A CSM's portfolio by OS login email: the numbers and the clients that need action now. */
142
+ get csm() {
143
+ return createCsmClient(this.client, this.call.bind(this));
144
+ }
140
145
  get channels() {
141
146
  return createChannelsClient(this.client, this.call.bind(this));
142
147
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chatarmin/os",
3
- "version": "1.31.0",
3
+ "version": "1.32.0",
4
4
  "description": "Type-safe SDK for ChatarminOS - Customer & Subscription Management",
5
5
  "type": "module",
6
6
  "publishConfig": {