@noodleseed/one 0.176.0 → 0.178.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.
Files changed (73) hide show
  1. package/dist/commands/solutions-activity.d.ts.map +1 -1
  2. package/dist/commands/solutions-activity.js +9 -35
  3. package/dist/commands/solutions-activity.js.map +1 -1
  4. package/dist/commands/solutions-conversations.d.ts +6 -0
  5. package/dist/commands/solutions-conversations.d.ts.map +1 -0
  6. package/dist/commands/solutions-conversations.js +191 -0
  7. package/dist/commands/solutions-conversations.js.map +1 -0
  8. package/dist/commands/solutions-history.d.ts +9 -0
  9. package/dist/commands/solutions-history.d.ts.map +1 -0
  10. package/dist/commands/solutions-history.js +166 -0
  11. package/dist/commands/solutions-history.js.map +1 -0
  12. package/dist/commands/solutions-ops.d.ts.map +1 -1
  13. package/dist/commands/solutions-ops.js +6 -0
  14. package/dist/commands/solutions-ops.js.map +1 -1
  15. package/dist/commands/whatsapp-ops.d.ts.map +1 -1
  16. package/dist/commands/whatsapp-ops.js +0 -7
  17. package/dist/commands/whatsapp-ops.js.map +1 -1
  18. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +1 -1
  19. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js +14 -0
  20. package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
  21. package/node_modules/@noodle-borg/assistant-gateway/dist/public-surface.d.ts +6 -0
  22. package/node_modules/@noodle-borg/assistant-gateway/dist/public-surface.js +5 -2
  23. package/node_modules/@noodle-borg/assistant-gateway/package.json +1 -1
  24. package/node_modules/@noodle-borg/authoring/dist/assistant.d.ts +18 -0
  25. package/node_modules/@noodle-borg/authoring/dist/assistant.js +14 -1
  26. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-channels.js +0 -3
  27. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-solution-conversations.js +142 -0
  28. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-solution-history.js +82 -0
  29. package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-solutions.js +5 -42
  30. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.d.ts +8 -0
  31. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.js +7 -0
  32. package/node_modules/@noodle-borg/service/dist/application-activity.js +76 -21
  33. package/node_modules/@noodle-borg/service/dist/application-history-settings.js +108 -0
  34. package/node_modules/@noodle-borg/service/dist/assistant-composition.js +11 -2
  35. package/node_modules/@noodle-borg/service/dist/channels/composition.js +10 -1
  36. package/node_modules/@noodle-borg/service/dist/channels/provider.js +40 -4
  37. package/node_modules/@noodle-borg/service/dist/channels/runtime.js +31 -5
  38. package/node_modules/@noodle-borg/service/dist/conversation-history/capture.js +63 -7
  39. package/node_modules/@noodle-borg/service/dist/conversation-history/contracts.js +13 -0
  40. package/node_modules/@noodle-borg/service/dist/conversation-history/customer.js +118 -0
  41. package/node_modules/@noodle-borg/service/dist/conversation-history/operator.js +293 -0
  42. package/node_modules/@noodle-borg/service/dist/routes/assistant-conversations.js +52 -0
  43. package/node_modules/@noodle-borg/service/dist/routes/assistant-dispatch.js +6 -0
  44. package/node_modules/@noodle-borg/service/dist/routes/assistant-elevation.js +3 -0
  45. package/node_modules/@noodle-borg/service/dist/routes/assistant-interaction-stream.js +2 -1
  46. package/node_modules/@noodle-borg/service/dist/routes/assistant-interactions.js +6 -11
  47. package/node_modules/@noodle-borg/service/dist/routes/assistant-public-session.js +6 -0
  48. package/node_modules/@noodle-borg/service/dist/routes/assistant-route-http.js +16 -0
  49. package/node_modules/@noodle-borg/service/dist/routes/assistant.js +5 -17
  50. package/node_modules/@noodle-borg/service/dist/routes/business-information-activity.js +6 -5
  51. package/node_modules/@noodle-borg/service/dist/routes/business-information-conversations.js +90 -0
  52. package/node_modules/@noodle-borg/service/dist/routes/business-information-dispatch.js +7 -2
  53. package/node_modules/@noodle-borg/service/dist/routes/business-information-paths.js +20 -2
  54. package/node_modules/@noodle-borg/service/dist/routes/business-information.js +4 -0
  55. package/node_modules/@noodle-borg/service/dist/routes/whatsapp.js +0 -10
  56. package/node_modules/@noodle-borg/service/dist/service-history-projections.js +52 -0
  57. package/node_modules/@noodle-borg/service/dist/service-resource-cleanup.js +32 -0
  58. package/node_modules/@noodle-borg/service/dist/service.js +6 -9
  59. package/node_modules/@noodle-borg/service/package.json +1 -1
  60. package/node_modules/@noodle-borg/wire-contracts/dist/application-activity.d.ts +0 -28
  61. package/node_modules/@noodle-borg/wire-contracts/dist/application-activity.js +0 -18
  62. package/node_modules/@noodle-borg/wire-contracts/dist/application-history-settings.d.ts +190 -0
  63. package/node_modules/@noodle-borg/wire-contracts/dist/application-history-settings.js +92 -0
  64. package/node_modules/@noodle-borg/wire-contracts/dist/assistant.d.ts +3 -0
  65. package/node_modules/@noodle-borg/wire-contracts/dist/assistant.js +6 -0
  66. package/node_modules/@noodle-borg/wire-contracts/dist/conversation-history.d.ts +523 -0
  67. package/node_modules/@noodle-borg/wire-contracts/dist/conversation-history.js +192 -0
  68. package/node_modules/@noodle-borg/wire-contracts/dist/index.d.ts +2 -0
  69. package/node_modules/@noodle-borg/wire-contracts/dist/index.js +2 -0
  70. package/node_modules/@noodle-borg/wire-contracts/dist/whatsapp.d.ts +2 -2
  71. package/node_modules/@noodleseed/assistant/README.md +19 -0
  72. package/node_modules/@noodleseed/assistant/package.json +1 -1
  73. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"solutions-activity.d.ts","sourceRoot":"","sources":["../../src/commands/solutions-activity.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAoBnD,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,IAAI,EAAE,cAAc,EACpB,OAAO,GAAE;IAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CAAO,GAClD,OAAO,CAAC,MAAM,CAAC,CA+IjB"}
1
+ {"version":3,"file":"solutions-activity.d.ts","sourceRoot":"","sources":["../../src/commands/solutions-activity.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAoBnD,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,IAAI,EAAE,cAAc,EACpB,OAAO,GAAE;IAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CAAO,GAClD,OAAO,CAAC,MAAM,CAAC,CA0GjB"}
@@ -1,4 +1,4 @@
1
- import { ApplicationActivityListClientResponseSchema, ApplicationActivityPreviewClientResponseSchema, ApplicationActivitySettingsClientResponseSchema, ApplicationActivitySettingsSaveRequestSchema, } from '@noodle-borg/wire-contracts';
1
+ import { ApplicationActivityListClientResponseSchema, ApplicationActivityPreviewClientResponseSchema, } from '@noodle-borg/wire-contracts';
2
2
  import { resolveControlPlaneToken, serviceJson } from '../control-plane.js';
3
3
  import { EXIT, printJsonOk } from './output.js';
4
4
  import { authRequired, parseCommandFlags, printCliFailure, serviceFailure, usageError, } from './shared.js';
@@ -18,38 +18,26 @@ export async function runSolutionActivity(rest, env, home, options = {}) {
18
18
  '--auth-token': 'authToken',
19
19
  '--limit': 'limit',
20
20
  '--cursor': 'cursor',
21
- '--expected-revision': 'expectedRevision',
22
- '--retention-days': 'retentionDays',
23
21
  },
24
22
  booleans: { '--json': 'json' },
25
23
  });
26
- const fail = (message) => printCliFailure('solutions activity', usageError(message, 'noodle solutions activity <list|export|preview> <installation> --org <org> | settings <get|set> <installation> --org <org>'), args.json);
24
+ const fail = (message) => printCliFailure('solutions activity', usageError(message, 'noodle solutions activity <list|export|preview> <installation> --org <org>'), args.json);
27
25
  if (args.parseError)
28
26
  return fail(args.parseError);
29
- const [family, second, third] = args.positional;
27
+ const [family, installation] = args.positional;
30
28
  const isPage = family === 'list' || family === 'export';
31
- const direct = isPage || family === 'preview';
32
- const action = direct ? family : second;
33
- const installation = direct ? second : third;
34
29
  if (!installation ||
35
30
  !args.org ||
36
- (!direct && (family !== 'settings' || !['get', 'set'].includes(action ?? ''))) ||
37
- args.positional.length !== (direct ? 2 : 3))
31
+ (!isPage && family !== 'preview') ||
32
+ args.positional.length !== 2)
38
33
  return fail('A supported action, installation and --org are required.');
39
- if ((!isPage && (args.limit !== undefined || args.cursor !== undefined)) ||
40
- (action !== 'set' && (args.expectedRevision !== undefined || args.retentionDays !== undefined)))
41
- return fail('Paging flags apply only to list and export; retention and revision apply only to settings set.');
34
+ if (!isPage && (args.limit !== undefined || args.cursor !== undefined))
35
+ return fail('Paging flags apply only to list and export.');
42
36
  const limit = args.limit === undefined ? undefined : Number(args.limit);
43
37
  if (limit !== undefined && (!Number.isInteger(limit) || limit < 1 || limit > 100))
44
38
  return fail('--limit must be an integer from 1 to 100.');
45
39
  if (args.cursor !== undefined && (args.cursor.length === 0 || args.cursor.length > 2048))
46
40
  return fail('--cursor must be a bounded opaque cursor.');
47
- const save = ApplicationActivitySettingsSaveRequestSchema.safeParse({
48
- expectedRevision: args.expectedRevision,
49
- retentionDays: Number(args.retentionDays),
50
- });
51
- if (action === 'set' && !save.success)
52
- return fail('settings set requires --expected-revision from settings get and --retention-days from 1 to 365, within your plan maximum.');
53
41
  const resolved = await resolveControlPlaneToken({
54
42
  serviceFlag: args.service,
55
43
  authFlag: args.authToken,
@@ -78,7 +66,7 @@ export async function runSolutionActivity(rest, env, home, options = {}) {
78
66
  ...(data.nextCursor === undefined ? [] : [`Next cursor: ${data.nextCursor}`]),
79
67
  ].join('\n'));
80
68
  }
81
- else if (family === 'preview') {
69
+ else {
82
70
  const response = await serviceJson(`${base}/preview`, resolved.token, {}, options.fetchImpl ?? fetch);
83
71
  const data = ApplicationActivityPreviewClientResponseSchema.parse(response).data;
84
72
  if (args.json)
@@ -93,24 +81,10 @@ export async function runSolutionActivity(rest, env, home, options = {}) {
93
81
  'Counts cover current visible terminal evidence only; future operations are not forecast.',
94
82
  ].join('\n'));
95
83
  }
96
- else {
97
- const response = await serviceJson(`${base}/settings`, resolved.token, action === 'set' && save.success
98
- ? {
99
- method: 'PATCH',
100
- headers: { 'content-type': 'application/json' },
101
- body: JSON.stringify(save.data),
102
- }
103
- : {}, options.fetchImpl ?? fetch);
104
- const data = ApplicationActivitySettingsClientResponseSchema.parse(response).data;
105
- if (args.json)
106
- printJsonOk(data);
107
- else
108
- console.log(`Activity retention: ${data.retentionDays} day(s); plan maximum: ${data.maximumDays}.\nRevision: ${data.revision}\n${data.canEdit ? 'Administrators can change retention.' : 'Read-only for your role.'}`);
109
- }
110
84
  return EXIT.OK;
111
85
  }
112
86
  catch (error) {
113
- return printCliFailure('solutions activity', serviceFailure('solutions activity', error, `noodle solutions activity ${direct ? family : 'settings get'} <installation> --org <org>`), args.json);
87
+ return printCliFailure('solutions activity', serviceFailure('solutions activity', error, `noodle solutions activity ${family} <installation> --org <org>`), args.json);
114
88
  }
115
89
  }
116
90
  //# sourceMappingURL=solutions-activity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"solutions-activity.js","sourceRoot":"","sources":["../../src/commands/solutions-activity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"solutions-activity.js","sourceRoot":"","sources":["../../src/commands/solutions-activity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { ConfigLocation } from '../config.js';
2
+ /** Staff projection of conversation history; every read and erasure is audited by the service. */
3
+ export declare function runSolutionConversations(rest: readonly string[], env: NodeJS.ProcessEnv, home: ConfigLocation, options?: {
4
+ readonly fetchImpl?: typeof fetch;
5
+ }): Promise<number>;
6
+ //# sourceMappingURL=solutions-conversations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solutions-conversations.d.ts","sourceRoot":"","sources":["../../src/commands/solutions-conversations.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AA4CnD,kGAAkG;AAClG,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,IAAI,EAAE,cAAc,EACpB,OAAO,GAAE;IAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CAAO,GAClD,OAAO,CAAC,MAAM,CAAC,CA8LjB"}
@@ -0,0 +1,191 @@
1
+ import { ConversationExportClientResponseSchema, ConversationForgetClientResponseSchema, ConversationIdSchema, ConversationListClientResponseSchema, ConversationReviewRequestSchema, ConversationShowClientResponseSchema, } from '@noodle-borg/wire-contracts';
2
+ import { resolveControlPlaneToken, serviceJson } from '../control-plane.js';
3
+ import { EXIT, printJsonOk } from './output.js';
4
+ import { authRequired, parseCommandFlags, printCliFailure, serviceFailure, usageError, } from './shared.js';
5
+ const USAGE = 'noodle solutions conversations <list|show|review|note|export|forget> <installation> --org <org> [--conversation <id> | --customer <ref> | --participant <ref>] [--status <new|needs-attention|reviewed>] [--text <note>] [--confirm]';
6
+ const ACTIONS = ['list', 'show', 'review', 'note', 'export', 'forget'];
7
+ /** CLI spellings of the wire review statuses. */
8
+ const STATUSES = {
9
+ new: 'new',
10
+ 'needs-attention': 'needs_attention',
11
+ reviewed: 'reviewed',
12
+ };
13
+ const STATUS_LABELS = {
14
+ new: 'new',
15
+ needs_attention: 'needs attention',
16
+ reviewed: 'reviewed',
17
+ };
18
+ /** Staff projection of conversation history; every read and erasure is audited by the service. */
19
+ export async function runSolutionConversations(rest, env, home, options = {}) {
20
+ const args = parseCommandFlags(rest, {
21
+ values: {
22
+ '--org': 'org',
23
+ '--service': 'service',
24
+ '--auth-token': 'authToken',
25
+ '--limit': 'limit',
26
+ '--cursor': 'cursor',
27
+ '--channel': 'channel',
28
+ '--status': 'status',
29
+ '--text': 'text',
30
+ '--conversation': 'conversation',
31
+ '--customer': 'customer',
32
+ '--participant': 'participant',
33
+ },
34
+ booleans: { '--json': 'json', '--confirm': 'confirm' },
35
+ });
36
+ const fail = (message) => printCliFailure('solutions conversations', usageError(message, USAGE), args.json);
37
+ if (args.parseError)
38
+ return fail(args.parseError);
39
+ const [family, installation] = args.positional;
40
+ if (!ACTIONS.includes(family) || !installation || args.positional.length !== 2)
41
+ return fail('A supported action and one installation are required.');
42
+ if (!args.org)
43
+ return fail('--org is required.');
44
+ const action = family;
45
+ const paging = action === 'list' || action === 'export';
46
+ const reviewing = action === 'review' || action === 'note';
47
+ const selectors = [args.conversation, args.customer, args.participant].filter((value) => value !== undefined);
48
+ if ((!paging && (args.limit ?? args.cursor ?? args.channel) !== undefined) ||
49
+ (!paging && action !== 'review' && args.status !== undefined) ||
50
+ (action !== 'note' && args.text !== undefined) ||
51
+ (action !== 'forget' && (args.confirm || args.customer || args.participant)) ||
52
+ (paging && args.conversation !== undefined))
53
+ return fail('Paging flags apply to list and export; --status to list, export and review; --text to note; --conversation to show, review, note and forget; --customer, --participant and --confirm to forget.');
54
+ const status = args.status === undefined ? undefined : STATUSES[args.status];
55
+ if (args.status !== undefined && status === undefined)
56
+ return fail('--status must be new, needs-attention or reviewed.');
57
+ let review;
58
+ if (reviewing) {
59
+ if (!ConversationIdSchema.safeParse(args.conversation).success)
60
+ return fail(`${action} requires --conversation with an id from conversations list.`);
61
+ const parsed = ConversationReviewRequestSchema.safeParse(action === 'review' ? { reviewStatus: status } : { note: args.text });
62
+ if (!parsed.success)
63
+ return fail(action === 'review'
64
+ ? 'review requires --status new, needs-attention or reviewed.'
65
+ : 'note requires --text of 1 to 2000 characters.');
66
+ review = parsed.data;
67
+ }
68
+ const maximum = action === 'export' ? 25 : 100;
69
+ const limit = args.limit === undefined ? undefined : Number(args.limit);
70
+ if (limit !== undefined && (!Number.isInteger(limit) || limit < 1 || limit > maximum))
71
+ return fail(`--limit must be an integer from 1 to ${maximum}.`);
72
+ if (args.cursor !== undefined && (args.cursor.length === 0 || args.cursor.length > 2048))
73
+ return fail('--cursor must be a bounded opaque cursor.');
74
+ if (args.channel !== undefined && args.channel !== 'website' && args.channel !== 'whatsapp')
75
+ return fail('--channel must be website or whatsapp.');
76
+ if (action === 'show' && !ConversationIdSchema.safeParse(args.conversation).success)
77
+ return fail('show requires --conversation with an id from conversations list.');
78
+ let forget;
79
+ if (action === 'forget') {
80
+ if (selectors.length !== 1)
81
+ return fail('forget requires exactly one of --conversation, --customer or --participant.');
82
+ if (args.conversation !== undefined &&
83
+ !ConversationIdSchema.safeParse(args.conversation).success)
84
+ return fail('--conversation must be an id from conversations list.');
85
+ if (!args.confirm)
86
+ return fail('--confirm is required to permanently erase conversation history.');
87
+ forget =
88
+ args.conversation !== undefined
89
+ ? { conversationId: args.conversation }
90
+ : {
91
+ subject: {
92
+ kind: args.customer !== undefined ? 'customer' : 'participant',
93
+ ref: String(args.customer ?? args.participant),
94
+ },
95
+ };
96
+ }
97
+ const resolved = await resolveControlPlaneToken({
98
+ serviceFlag: args.service,
99
+ authFlag: args.authToken,
100
+ env,
101
+ home,
102
+ });
103
+ if (!resolved.token)
104
+ return printCliFailure('solutions conversations', authRequired(), args.json);
105
+ const base = `${resolved.serviceUrl}/v1/orgs/${encodeURIComponent(args.org)}/solution-installations/${encodeURIComponent(installation)}/conversations`;
106
+ const request = options.fetchImpl ?? fetch;
107
+ try {
108
+ if (paging) {
109
+ const query = new URLSearchParams();
110
+ if (limit !== undefined)
111
+ query.set('limit', String(limit));
112
+ if (args.cursor !== undefined)
113
+ query.set('cursor', args.cursor);
114
+ if (args.channel !== undefined)
115
+ query.set('channel', args.channel);
116
+ if (status !== undefined)
117
+ query.set('status', status);
118
+ const response = await serviceJson(`${base}${action === 'export' ? '/export' : ''}${query.size ? `?${query}` : ''}`, resolved.token, {}, request);
119
+ const exported = action === 'export'
120
+ ? ConversationExportClientResponseSchema.parse(response).data
121
+ : undefined;
122
+ const data = exported ?? ConversationListClientResponseSchema.parse(response).data;
123
+ if (args.json)
124
+ printJsonOk(data);
125
+ else
126
+ console.log([
127
+ ...(exported
128
+ ? exported.conversations.flatMap((row) => [line(row), ...row.items.map(itemLine)])
129
+ : data.conversations.map(line)),
130
+ ...(data.conversations.length === 0 ? ['No conversations in this page.'] : []),
131
+ ...(data.nextCursor === undefined ? [] : [`Next cursor: ${data.nextCursor}`]),
132
+ ].join('\n'));
133
+ }
134
+ else if (action === 'show') {
135
+ const response = await serviceJson(`${base}/${encodeURIComponent(String(args.conversation))}`, resolved.token, {}, request);
136
+ const { conversation } = ConversationShowClientResponseSchema.parse(response).data;
137
+ if (args.json)
138
+ printJsonOk({ conversation });
139
+ else
140
+ console.log([
141
+ line(conversation),
142
+ ...conversation.items.map(itemLine),
143
+ ...conversation.notes.map((note) => ` ${note.at} note ${note.author}: ${note.text}`),
144
+ `Removed automatically on ${conversation.expiresAt}.`,
145
+ ].join('\n'));
146
+ }
147
+ else if (review) {
148
+ const response = await serviceJson(`${base}/${encodeURIComponent(String(args.conversation))}`, resolved.token, {
149
+ method: 'PATCH',
150
+ headers: { 'content-type': 'application/json' },
151
+ body: JSON.stringify(review),
152
+ }, request);
153
+ const { conversation } = ConversationShowClientResponseSchema.parse(response).data;
154
+ if (args.json)
155
+ printJsonOk({ conversation });
156
+ else
157
+ console.log(action === 'review'
158
+ ? `Conversation ${conversation.id} marked ${label(conversation.reviewStatus)}.`
159
+ : `Conversation ${conversation.id} now has ${conversation.notes.length} private note(s); customers never see notes.`);
160
+ }
161
+ else {
162
+ const response = await serviceJson(`${base}/forget`, resolved.token, {
163
+ method: 'POST',
164
+ headers: { 'content-type': 'application/json' },
165
+ body: JSON.stringify(forget),
166
+ }, request);
167
+ const { forgotten } = ConversationForgetClientResponseSchema.parse(response).data;
168
+ if (args.json)
169
+ printJsonOk({ forgotten });
170
+ else
171
+ console.log(`Erased ${forgotten.conversations} conversation(s) and ${forgotten.items} message or outcome item(s).`);
172
+ }
173
+ return EXIT.OK;
174
+ }
175
+ catch (error) {
176
+ return printCliFailure('solutions conversations', serviceFailure('solutions conversations', error, USAGE), args.json);
177
+ }
178
+ }
179
+ function line(row) {
180
+ const subject = row.subject.ref === undefined ? row.subject.kind : `${row.subject.kind} ${row.subject.ref}`;
181
+ return `${row.lastMessageAt} ${row.channel} ${subject} ${label(row.reviewStatus)} ${row.itemCount} item(s) ${row.id}`;
182
+ }
183
+ function label(status) {
184
+ return STATUS_LABELS[status ?? 'new'] ?? String(status);
185
+ }
186
+ function itemLine(item) {
187
+ return item.kind === 'message'
188
+ ? ` ${item.at} ${item.role}: ${item.text}`
189
+ : ` ${item.at} outcome ${item.tool}: ${item.status}`;
190
+ }
191
+ //# sourceMappingURL=solutions-conversations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solutions-conversations.js","sourceRoot":"","sources":["../../src/commands/solutions-conversations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { ConfigLocation } from '../config.js';
2
+ /**
3
+ * One installation history setting (ADR 0241 decision 6). A change that shortens or turns off
4
+ * conversation history first runs as a dry run and needs --confirm once its effect is shown.
5
+ */
6
+ export declare function runSolutionHistory(rest: readonly string[], env: NodeJS.ProcessEnv, home: ConfigLocation, options?: {
7
+ readonly fetchImpl?: typeof fetch;
8
+ }): Promise<number>;
9
+ //# sourceMappingURL=solutions-history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solutions-history.d.ts","sourceRoot":"","sources":["../../src/commands/solutions-history.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAqBnD;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,IAAI,EAAE,cAAc,EACpB,OAAO,GAAE;IAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CAAO,GAClD,OAAO,CAAC,MAAM,CAAC,CAgIjB"}
@@ -0,0 +1,166 @@
1
+ import { ApplicationHistorySettingsClientResponseSchema, ApplicationHistorySettingsSaveClientResponseSchema, ApplicationHistorySettingsSaveRequestSchema, } from '@noodle-borg/wire-contracts';
2
+ import { resolveControlPlaneToken, serviceJson } from '../control-plane.js';
3
+ import { EXIT, printJsonOk } from './output.js';
4
+ import { authRequired, parseCommandFlags, printCliFailure, serviceFailure, usageError, } from './shared.js';
5
+ const USAGE = 'noodle solutions history settings <get|set> <installation> --org <org> [--activity-days <n>] [--conversation-days <n> | --conversations off] [--website-visitors on|off] [--signed-in-customers on|off] [--whatsapp on|off] [--expected-revision <hash>] [--confirm]';
6
+ const SWITCHES = {
7
+ websiteVisitors: 'websiteVisitors',
8
+ signedInCustomers: 'signedInCustomers',
9
+ whatsapp: 'whatsapp',
10
+ };
11
+ /**
12
+ * One installation history setting (ADR 0241 decision 6). A change that shortens or turns off
13
+ * conversation history first runs as a dry run and needs --confirm once its effect is shown.
14
+ */
15
+ export async function runSolutionHistory(rest, env, home, options = {}) {
16
+ const args = parseCommandFlags(rest, {
17
+ values: {
18
+ '--org': 'org',
19
+ '--service': 'service',
20
+ '--auth-token': 'authToken',
21
+ '--expected-revision': 'expectedRevision',
22
+ '--activity-days': 'activityDays',
23
+ '--conversation-days': 'conversationDays',
24
+ '--conversations': 'conversations',
25
+ '--website-visitors': 'websiteVisitors',
26
+ '--signed-in-customers': 'signedInCustomers',
27
+ '--whatsapp': 'whatsapp',
28
+ },
29
+ booleans: { '--json': 'json', '--confirm': 'confirm' },
30
+ });
31
+ const fail = (message) => printCliFailure('solutions history', usageError(message, USAGE), args.json);
32
+ if (args.parseError)
33
+ return fail(args.parseError);
34
+ const [family, action, installation] = args.positional;
35
+ if (family !== 'settings' ||
36
+ (action !== 'get' && action !== 'set') ||
37
+ !installation ||
38
+ args.positional.length !== 3)
39
+ return fail('Use settings get or settings set with one installation.');
40
+ if (!args.org)
41
+ return fail('--org is required.');
42
+ const changes = [
43
+ args.expectedRevision,
44
+ args.activityDays,
45
+ args.conversationDays,
46
+ args.conversations,
47
+ args.websiteVisitors,
48
+ args.signedInCustomers,
49
+ args.whatsapp,
50
+ ];
51
+ if (action === 'get' && (args.confirm || changes.some((value) => value !== undefined)))
52
+ return fail('settings get takes no change, revision or --confirm flags.');
53
+ let change;
54
+ if (action === 'set') {
55
+ if (args.conversationDays !== undefined && args.conversations !== undefined)
56
+ return fail('Use either --conversation-days or --conversations off, not both.');
57
+ if (args.conversations !== undefined && args.conversations !== 'off')
58
+ return fail('--conversations accepts only off; use --conversation-days to turn it on.');
59
+ const sources = {};
60
+ for (const key of Object.values(SWITCHES)) {
61
+ const value = args[key];
62
+ if (value === undefined)
63
+ continue;
64
+ if (value !== 'on' && value !== 'off')
65
+ return fail(`Channel switches accept on or off.`);
66
+ sources[key] = value === 'on';
67
+ }
68
+ const parsed = ApplicationHistorySettingsSaveRequestSchema.safeParse({
69
+ expectedRevision: args.expectedRevision,
70
+ ...(args.activityDays === undefined ? {} : { activityDays: Number(args.activityDays) }),
71
+ ...(args.conversationDays === undefined
72
+ ? {}
73
+ : { conversations: { retentionDays: Number(args.conversationDays) } }),
74
+ ...(args.conversations === 'off' ? { conversations: 'off' } : {}),
75
+ ...(Object.keys(sources).length === 0 ? {} : { sources }),
76
+ });
77
+ if (!parsed.success)
78
+ return fail('settings set requires --expected-revision from settings get and at least one change; durations are 1 to 365 days within your plan maximum.');
79
+ change = parsed.data;
80
+ }
81
+ const resolved = await resolveControlPlaneToken({
82
+ serviceFlag: args.service,
83
+ authFlag: args.authToken,
84
+ env,
85
+ home,
86
+ });
87
+ if (!resolved.token)
88
+ return printCliFailure('solutions history', authRequired(), args.json);
89
+ const url = `${resolved.serviceUrl}/v1/orgs/${encodeURIComponent(args.org)}/solution-installations/${encodeURIComponent(installation)}/history/settings`;
90
+ const request = options.fetchImpl ?? fetch;
91
+ const put = async (body) => ApplicationHistorySettingsSaveClientResponseSchema.parse(await serviceJson(url, resolved.token ?? '', {
92
+ method: 'PUT',
93
+ headers: { 'content-type': 'application/json' },
94
+ body: JSON.stringify(body),
95
+ }, request)).data;
96
+ try {
97
+ if (!change) {
98
+ const data = ApplicationHistorySettingsClientResponseSchema.parse(await serviceJson(url, resolved.token, {}, request)).data;
99
+ if (args.json)
100
+ printJsonOk(data);
101
+ else
102
+ console.log(describe(data));
103
+ return EXIT.OK;
104
+ }
105
+ if (!args.confirm) {
106
+ const preview = await put({ ...change, dryRun: true });
107
+ if (preview.shortensConversations)
108
+ return printCliFailure('solutions history', confirmationRequired(preview.impact), args.json);
109
+ }
110
+ const saved = await put(change);
111
+ if (args.json)
112
+ printJsonOk(saved);
113
+ else
114
+ console.log([
115
+ describe(saved.settings),
116
+ ...(saved.shortensConversations
117
+ ? [
118
+ `${saved.impact.conversations} conversation(s) and ${saved.impact.items} item(s) outside the new window were hidden and will be removed.`,
119
+ ]
120
+ : []),
121
+ ].join('\n'));
122
+ return EXIT.OK;
123
+ }
124
+ catch (error) {
125
+ return printCliFailure('solutions history', serviceFailure('solutions history', error, USAGE), args.json);
126
+ }
127
+ }
128
+ function confirmationRequired(impact) {
129
+ const message = `This change shortens or turns off conversation history: ${impact.conversations} conversation(s) and ${impact.items} item(s) would be hidden now and removed; a longer duration later does not restore them.`;
130
+ return {
131
+ code: 'confirmation_required',
132
+ message,
133
+ cause: message,
134
+ fix: 'Review the effect, then re-run the same command with --confirm.',
135
+ next: 'noodle solutions history settings set <installation> --org <org> ... --confirm',
136
+ exitCode: EXIT.USAGE,
137
+ };
138
+ }
139
+ const SURFACE_LABELS = {
140
+ publicWebsite: 'public website',
141
+ authenticatedWebsite: 'authenticated website',
142
+ publicMessaging: 'WhatsApp',
143
+ };
144
+ function describe(data) {
145
+ const { activity, conversations } = data;
146
+ const channel = (on) => (on ? 'on' : 'off');
147
+ return [
148
+ `Activity: ${activity.retentionDays} day(s); plan maximum ${activity.maximumDays}, default ${activity.defaultDays}.`,
149
+ conversations.state === 'on'
150
+ ? `Conversations: ${conversations.retentionDays} day(s).`
151
+ : conversations.state === 'off'
152
+ ? 'Conversations: off.'
153
+ : 'Conversations: not enabled; set --conversation-days to start recording.',
154
+ `Recording: website visitors ${channel(conversations.sources.websiteVisitors)}, signed-in customers ${channel(conversations.sources.signedInCustomers)}, WhatsApp ${channel(conversations.sources.whatsapp)}.`,
155
+ ...(conversations.disabledByApplication
156
+ ? [
157
+ `Never kept by the application (history: false in server.ts): ${conversations.disabledByApplication.map((surface) => SURFACE_LABELS[surface]).join(', ')}.`,
158
+ ]
159
+ : []),
160
+ `Revision: ${data.revision}`,
161
+ data.canEdit
162
+ ? 'Owners and Administrators can change these settings.'
163
+ : 'Read-only for your role.',
164
+ ].join('\n');
165
+ }
166
+ //# sourceMappingURL=solutions-history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solutions-history.js","sourceRoot":"","sources":["../../src/commands/solutions-history.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"solutions-ops.d.ts","sourceRoot":"","sources":["../../src/commands/solutions-ops.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAenD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CACnC;AA2GD,gFAAgF;AAChF,wBAAsB,YAAY,CAChC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,IAAI,EAAE,cAAc,EACpB,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,MAAM,CAAC,CA6NjB"}
1
+ {"version":3,"file":"solutions-ops.d.ts","sourceRoot":"","sources":["../../src/commands/solutions-ops.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAiBnD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CACnC;AA2GD,gFAAgF;AAChF,wBAAsB,YAAY,CAChC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,IAAI,EAAE,cAAc,EACpB,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,MAAM,CAAC,CAgOjB"}
@@ -5,8 +5,10 @@ import { EXIT, printJsonOk } from './output.js';
5
5
  import { authRequired, printCliFailure, serviceFailure, usageError } from './shared.js';
6
6
  import { runSolutionActivity } from './solutions-activity.js';
7
7
  import { runSolutionConnections } from './solutions-connections.js';
8
+ import { runSolutionConversations } from './solutions-conversations.js';
8
9
  import { runSolutionOperations } from './solutions-coordination.js';
9
10
  import { runSolutionDrafts } from './solutions-drafts.js';
11
+ import { runSolutionHistory } from './solutions-history.js';
10
12
  import { runSolutionInstallationOptions } from './solutions-installation-options.js';
11
13
  import { runSolutionNativeLifecycle } from './solutions-native-lifecycle.js';
12
14
  import { runSolutionOnboarding } from './solutions-onboarding.js';
@@ -98,6 +100,10 @@ export async function runSolutions(rest, env, home, options = {}) {
98
100
  return runSolutionOperations(rest.slice(1), env, home, options);
99
101
  if (rest[0] === 'activity')
100
102
  return runSolutionActivity(rest.slice(1), env, home, options);
103
+ if (rest[0] === 'history')
104
+ return runSolutionHistory(rest.slice(1), env, home, options);
105
+ if (rest[0] === 'conversations')
106
+ return runSolutionConversations(rest.slice(1), env, home, options);
101
107
  if (rest[0] === 'connections')
102
108
  return runSolutionConnections(rest.slice(1), env, home, options);
103
109
  if (rest[0] === 'installation-options')