@noodleseed/one 0.177.0 → 0.179.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.
- package/dist/commands/solutions-activity.d.ts.map +1 -1
- package/dist/commands/solutions-activity.js +9 -35
- package/dist/commands/solutions-activity.js.map +1 -1
- package/dist/commands/solutions-conversations.d.ts.map +1 -1
- package/dist/commands/solutions-conversations.js +65 -6
- package/dist/commands/solutions-conversations.js.map +1 -1
- package/dist/commands/solutions-history.d.ts +9 -0
- package/dist/commands/solutions-history.d.ts.map +1 -0
- package/dist/commands/solutions-history.js +166 -0
- package/dist/commands/solutions-history.js.map +1 -0
- package/dist/commands/solutions-ops.d.ts.map +1 -1
- package/dist/commands/solutions-ops.js +3 -0
- package/dist/commands/solutions-ops.js.map +1 -1
- package/dist/commands/whatsapp-ops.d.ts.map +1 -1
- package/dist/commands/whatsapp-ops.js +0 -7
- package/dist/commands/whatsapp-ops.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js +14 -0
- package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
- package/node_modules/@noodle-borg/assistant-gateway/dist/public-surface.d.ts +6 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/public-surface.js +5 -2
- package/node_modules/@noodle-borg/assistant-gateway/package.json +1 -1
- package/node_modules/@noodle-borg/authoring/dist/assistant.d.ts +18 -0
- package/node_modules/@noodle-borg/authoring/dist/assistant.js +14 -1
- package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-channels.js +0 -3
- package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-solution-conversations.js +50 -5
- package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-solution-history.js +82 -0
- package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-solutions.js +3 -42
- package/node_modules/@noodle-borg/compiler/dist/manifest/schema.d.ts +8 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/schema.js +7 -0
- package/node_modules/@noodle-borg/service/dist/application-activity.js +76 -21
- package/node_modules/@noodle-borg/service/dist/application-history-settings.js +108 -0
- package/node_modules/@noodle-borg/service/dist/assistant-composition.js +11 -2
- package/node_modules/@noodle-borg/service/dist/business-information/contracts.d.ts +3 -1
- package/node_modules/@noodle-borg/service/dist/business-information/workspace-permissions.js +1 -0
- package/node_modules/@noodle-borg/service/dist/channels/composition.js +10 -1
- package/node_modules/@noodle-borg/service/dist/channels/provider.js +13 -13
- package/node_modules/@noodle-borg/service/dist/channels/runtime.js +31 -5
- package/node_modules/@noodle-borg/service/dist/conversation-history/capture.js +63 -7
- package/node_modules/@noodle-borg/service/dist/conversation-history/contracts.js +13 -0
- package/node_modules/@noodle-borg/service/dist/conversation-history/customer.js +118 -0
- package/node_modules/@noodle-borg/service/dist/conversation-history/operator.js +147 -24
- package/node_modules/@noodle-borg/service/dist/conversation-history/preview.js +43 -0
- package/node_modules/@noodle-borg/service/dist/routes/assistant-conversations.js +52 -0
- package/node_modules/@noodle-borg/service/dist/routes/assistant-dispatch.js +6 -0
- package/node_modules/@noodle-borg/service/dist/routes/assistant-elevation.js +3 -0
- package/node_modules/@noodle-borg/service/dist/routes/assistant-interaction-stream.js +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-interactions.js +6 -11
- package/node_modules/@noodle-borg/service/dist/routes/assistant-public-session.js +6 -0
- package/node_modules/@noodle-borg/service/dist/routes/assistant-route-http.js +16 -0
- package/node_modules/@noodle-borg/service/dist/routes/assistant.js +5 -17
- package/node_modules/@noodle-borg/service/dist/routes/business-information-activity.js +6 -5
- package/node_modules/@noodle-borg/service/dist/routes/business-information-conversations.js +67 -13
- package/node_modules/@noodle-borg/service/dist/routes/business-information-dispatch.js +4 -2
- package/node_modules/@noodle-borg/service/dist/routes/business-information-paths.js +4 -2
- package/node_modules/@noodle-borg/service/dist/routes/business-information.js +4 -0
- package/node_modules/@noodle-borg/service/dist/routes/whatsapp.js +0 -10
- package/node_modules/@noodle-borg/service/dist/service-history-projections.js +35 -4
- package/node_modules/@noodle-borg/service/dist/service-resource-cleanup.js +32 -0
- package/node_modules/@noodle-borg/service/dist/service.js +4 -3
- package/node_modules/@noodle-borg/service/package.json +1 -1
- package/node_modules/@noodle-borg/wire-contracts/dist/application-activity.d.ts +0 -28
- package/node_modules/@noodle-borg/wire-contracts/dist/application-activity.js +0 -18
- package/node_modules/@noodle-borg/wire-contracts/dist/application-history-settings.d.ts +190 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/application-history-settings.js +92 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/assistant.d.ts +3 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/assistant.js +6 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/conversation-history.d.ts +182 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/conversation-history.js +78 -2
- package/node_modules/@noodle-borg/wire-contracts/dist/index.d.ts +1 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/index.js +1 -0
- package/node_modules/@noodleseed/assistant/README.md +19 -0
- package/node_modules/@noodleseed/assistant/package.json +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solutions-activity.d.ts","sourceRoot":"","sources":["../../src/commands/solutions-activity.ts"],"names":[],"mappings":"
|
|
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,
|
|
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>
|
|
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,
|
|
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
|
-
(!
|
|
37
|
-
args.positional.length !==
|
|
31
|
+
(!isPage && family !== 'preview') ||
|
|
32
|
+
args.positional.length !== 2)
|
|
38
33
|
return fail('A supported action, installation and --org are required.');
|
|
39
|
-
if (
|
|
40
|
-
(
|
|
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
|
|
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 ${
|
|
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":"AAAA,OAAO,EACL,2CAA2C,EAC3C,8CAA8C,
|
|
1
|
+
{"version":3,"file":"solutions-activity.js","sourceRoot":"","sources":["../../src/commands/solutions-activity.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solutions-conversations.d.ts","sourceRoot":"","sources":["../../src/commands/solutions-conversations.ts"],"names":[],"mappings":"
|
|
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,CAmMjB"}
|
|
@@ -1,9 +1,20 @@
|
|
|
1
|
-
import { ConversationExportClientResponseSchema, ConversationForgetClientResponseSchema, ConversationIdSchema, ConversationListClientResponseSchema, ConversationShowClientResponseSchema, } from '@noodle-borg/wire-contracts';
|
|
1
|
+
import { ConversationExportClientResponseSchema, ConversationForgetClientResponseSchema, ConversationIdSchema, ConversationListClientResponseSchema, ConversationReviewRequestSchema, ConversationShowClientResponseSchema, } 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';
|
|
5
|
-
const USAGE = 'noodle solutions conversations <list|show|export|forget> <installation> --org <org> [--conversation <id> | --customer <ref> | --participant <ref>] [--confirm]';
|
|
6
|
-
const ACTIONS = ['list', 'show', 'export', 'forget'];
|
|
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
|
+
};
|
|
7
18
|
/** Staff projection of conversation history; every read and erasure is audited by the service. */
|
|
8
19
|
export async function runSolutionConversations(rest, env, home, options = {}) {
|
|
9
20
|
const args = parseCommandFlags(rest, {
|
|
@@ -14,6 +25,8 @@ export async function runSolutionConversations(rest, env, home, options = {}) {
|
|
|
14
25
|
'--limit': 'limit',
|
|
15
26
|
'--cursor': 'cursor',
|
|
16
27
|
'--channel': 'channel',
|
|
28
|
+
'--status': 'status',
|
|
29
|
+
'--text': 'text',
|
|
17
30
|
'--conversation': 'conversation',
|
|
18
31
|
'--customer': 'customer',
|
|
19
32
|
'--participant': 'participant',
|
|
@@ -30,11 +43,28 @@ export async function runSolutionConversations(rest, env, home, options = {}) {
|
|
|
30
43
|
return fail('--org is required.');
|
|
31
44
|
const action = family;
|
|
32
45
|
const paging = action === 'list' || action === 'export';
|
|
46
|
+
const reviewing = action === 'review' || action === 'note';
|
|
33
47
|
const selectors = [args.conversation, args.customer, args.participant].filter((value) => value !== undefined);
|
|
34
48
|
if ((!paging && (args.limit ?? args.cursor ?? args.channel) !== undefined) ||
|
|
49
|
+
(!paging && action !== 'review' && args.status !== undefined) ||
|
|
50
|
+
(action !== 'note' && args.text !== undefined) ||
|
|
35
51
|
(action !== 'forget' && (args.confirm || args.customer || args.participant)) ||
|
|
36
52
|
(paging && args.conversation !== undefined))
|
|
37
|
-
return fail('Paging flags apply to list and export; --conversation to show and forget; --customer, --participant and --confirm to forget.');
|
|
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
|
+
}
|
|
38
68
|
const maximum = action === 'export' ? 25 : 100;
|
|
39
69
|
const limit = args.limit === undefined ? undefined : Number(args.limit);
|
|
40
70
|
if (limit !== undefined && (!Number.isInteger(limit) || limit < 1 || limit > maximum))
|
|
@@ -83,6 +113,8 @@ export async function runSolutionConversations(rest, env, home, options = {}) {
|
|
|
83
113
|
query.set('cursor', args.cursor);
|
|
84
114
|
if (args.channel !== undefined)
|
|
85
115
|
query.set('channel', args.channel);
|
|
116
|
+
if (status !== undefined)
|
|
117
|
+
query.set('status', status);
|
|
86
118
|
const response = await serviceJson(`${base}${action === 'export' ? '/export' : ''}${query.size ? `?${query}` : ''}`, resolved.token, {}, request);
|
|
87
119
|
const exported = action === 'export'
|
|
88
120
|
? ConversationExportClientResponseSchema.parse(response).data
|
|
@@ -92,6 +124,11 @@ export async function runSolutionConversations(rest, env, home, options = {}) {
|
|
|
92
124
|
printJsonOk(data);
|
|
93
125
|
else
|
|
94
126
|
console.log([
|
|
127
|
+
...('preview' in data && data.preview
|
|
128
|
+
? [
|
|
129
|
+
`Preview environment: conversations are kept for ${data.preview.retentionDays} days.`,
|
|
130
|
+
]
|
|
131
|
+
: []),
|
|
95
132
|
...(exported
|
|
96
133
|
? exported.conversations.flatMap((row) => [line(row), ...row.items.map(itemLine)])
|
|
97
134
|
: data.conversations.map(line)),
|
|
@@ -105,7 +142,26 @@ export async function runSolutionConversations(rest, env, home, options = {}) {
|
|
|
105
142
|
if (args.json)
|
|
106
143
|
printJsonOk({ conversation });
|
|
107
144
|
else
|
|
108
|
-
console.log([
|
|
145
|
+
console.log([
|
|
146
|
+
line(conversation),
|
|
147
|
+
...conversation.items.map(itemLine),
|
|
148
|
+
...conversation.notes.map((note) => ` ${note.at} note ${note.author}: ${note.text}`),
|
|
149
|
+
`Removed automatically on ${conversation.expiresAt}.`,
|
|
150
|
+
].join('\n'));
|
|
151
|
+
}
|
|
152
|
+
else if (review) {
|
|
153
|
+
const response = await serviceJson(`${base}/${encodeURIComponent(String(args.conversation))}`, resolved.token, {
|
|
154
|
+
method: 'PATCH',
|
|
155
|
+
headers: { 'content-type': 'application/json' },
|
|
156
|
+
body: JSON.stringify(review),
|
|
157
|
+
}, request);
|
|
158
|
+
const { conversation } = ConversationShowClientResponseSchema.parse(response).data;
|
|
159
|
+
if (args.json)
|
|
160
|
+
printJsonOk({ conversation });
|
|
161
|
+
else
|
|
162
|
+
console.log(action === 'review'
|
|
163
|
+
? `Conversation ${conversation.id} marked ${label(conversation.reviewStatus)}.`
|
|
164
|
+
: `Conversation ${conversation.id} now has ${conversation.notes.length} private note(s); customers never see notes.`);
|
|
109
165
|
}
|
|
110
166
|
else {
|
|
111
167
|
const response = await serviceJson(`${base}/forget`, resolved.token, {
|
|
@@ -127,7 +183,10 @@ export async function runSolutionConversations(rest, env, home, options = {}) {
|
|
|
127
183
|
}
|
|
128
184
|
function line(row) {
|
|
129
185
|
const subject = row.subject.ref === undefined ? row.subject.kind : `${row.subject.kind} ${row.subject.ref}`;
|
|
130
|
-
return `${row.lastMessageAt} ${row.channel} ${subject} ${row.itemCount} item(s) ${row.id}`;
|
|
186
|
+
return `${row.lastMessageAt} ${row.channel} ${subject} ${label(row.reviewStatus)} ${row.itemCount} item(s) ${row.id}`;
|
|
187
|
+
}
|
|
188
|
+
function label(status) {
|
|
189
|
+
return STATUS_LABELS[status ?? 'new'] ?? String(status);
|
|
131
190
|
}
|
|
132
191
|
function itemLine(item) {
|
|
133
192
|
return item.kind === 'message'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solutions-conversations.js","sourceRoot":"","sources":["../../src/commands/solutions-conversations.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sCAAsC,EACtC,sCAAsC,EAEtC,oBAAoB,EACpB,oCAAoC,
|
|
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":"AAAA,OAAO,EACL,8CAA8C,EAC9C,kDAAkD,EAClD,2CAA2C,GAC5C,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EACL,YAAY,EAEZ,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,UAAU,GACX,MAAM,aAAa,CAAC;AAErB,MAAM,KAAK,GACT,sQAAsQ,CAAC;AACzQ,MAAM,QAAQ,GAAG;IACf,eAAe,EAAE,iBAAiB;IAClC,iBAAiB,EAAE,mBAAmB;IACtC,QAAQ,EAAE,UAAU;CACZ,CAAC;AAGX;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAuB,EACvB,GAAsB,EACtB,IAAoB,EACpB,UAAiD,EAAE;IAEnD,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,EAAE;QACnC,MAAM,EAAE;YACN,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,SAAS;YACtB,cAAc,EAAE,WAAW;YAC3B,qBAAqB,EAAE,kBAAkB;YACzC,iBAAiB,EAAE,cAAc;YACjC,qBAAqB,EAAE,kBAAkB;YACzC,iBAAiB,EAAE,eAAe;YAClC,oBAAoB,EAAE,iBAAiB;YACvC,uBAAuB,EAAE,mBAAmB;YAC5C,YAAY,EAAE,UAAU;SACzB;QACD,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE;KACvD,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,CAAC,OAAe,EAAE,EAAE,CAC/B,eAAe,CAAC,mBAAmB,EAAE,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9E,IAAI,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;IACvD,IACE,MAAM,KAAK,UAAU;QACrB,CAAC,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,KAAK,CAAC;QACtC,CAAC,YAAY;QACb,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;QAE5B,OAAO,IAAI,CAAC,yDAAyD,CAAC,CAAC;IACzE,IAAI,CAAC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG;QACd,IAAI,CAAC,gBAAgB;QACrB,IAAI,CAAC,YAAY;QACjB,IAAI,CAAC,gBAAgB;QACrB,IAAI,CAAC,aAAa;QAClB,IAAI,CAAC,eAAe;QACpB,IAAI,CAAC,iBAAiB;QACtB,IAAI,CAAC,QAAQ;KACd,CAAC;IACF,IAAI,MAAM,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;QACpF,OAAO,IAAI,CAAC,4DAA4D,CAAC,CAAC;IAC5E,IAAI,MAA+E,CAAC;IACpF,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;YACzE,OAAO,IAAI,CAAC,kEAAkE,CAAC,CAAC;QAClF,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK;YAClE,OAAO,IAAI,CAAC,0EAA0E,CAAC,CAAC;QAC1F,MAAM,OAAO,GAAoD,EAAE,CAAC;QACpE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YACxB,IAAI,KAAK,KAAK,SAAS;gBAAE,SAAS;YAClC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK;gBAAE,OAAO,IAAI,CAAC,oCAAoC,CAAC,CAAC;YACzF,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC;QAChC,CAAC;QACD,MAAM,MAAM,GAAG,2CAA2C,CAAC,SAAS,CAAC;YACnE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACvF,GAAG,CAAC,IAAI,CAAC,gBAAgB,KAAK,SAAS;gBACrC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC;YACxE,GAAG,CAAC,IAAI,CAAC,aAAa,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;SAC1D,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,OAAO;YACjB,OAAO,IAAI,CACT,4IAA4I,CAC7I,CAAC;QACJ,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;IACvB,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAAC;QAC9C,WAAW,EAAE,IAAI,CAAC,OAAO;QACzB,QAAQ,EAAE,IAAI,CAAC,SAAS;QACxB,GAAG;QACH,IAAI;KACL,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,KAAK;QAAE,OAAO,eAAe,CAAC,mBAAmB,EAAE,YAAY,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5F,MAAM,GAAG,GAAG,GAAG,QAAQ,CAAC,UAAU,YAAY,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,2BAA2B,kBAAkB,CAAC,YAAY,CAAC,mBAAmB,CAAC;IACzJ,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;IAC3C,MAAM,GAAG,GAAG,KAAK,EAAE,IAAa,EAAE,EAAE,CAClC,kDAAkD,CAAC,KAAK,CACtD,MAAM,WAAW,CACf,GAAG,EACH,QAAQ,CAAC,KAAK,IAAI,EAAE,EACpB;QACE,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,EACD,OAAO,CACR,CACF,CAAC,IAAI,CAAC;IACT,IAAI,CAAC;QACH,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,8CAA8C,CAAC,KAAK,CAC/D,MAAM,WAAW,CAAU,GAAG,EAAE,QAAQ,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,CAAC,CAC7D,CAAC,IAAI,CAAC;YACP,IAAI,IAAI,CAAC,IAAI;gBAAE,WAAW,CAAC,IAAI,CAAC,CAAC;;gBAC5B,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YACjC,OAAO,IAAI,CAAC,EAAE,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YACvD,IAAI,OAAO,CAAC,qBAAqB;gBAC/B,OAAO,eAAe,CACpB,mBAAmB,EACnB,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC,EACpC,IAAI,CAAC,IAAI,CACV,CAAC;QACN,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,IAAI,CAAC,IAAI;YAAE,WAAW,CAAC,KAAK,CAAC,CAAC;;YAEhC,OAAO,CAAC,GAAG,CACT;gBACE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;gBACxB,GAAG,CAAC,KAAK,CAAC,qBAAqB;oBAC7B,CAAC,CAAC;wBACE,GAAG,KAAK,CAAC,MAAM,CAAC,aAAa,wBAAwB,KAAK,CAAC,MAAM,CAAC,KAAK,kEAAkE;qBAC1I;oBACH,CAAC,CAAC,EAAE,CAAC;aACR,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;QACJ,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,eAAe,CACpB,mBAAmB,EACnB,cAAc,CAAC,mBAAmB,EAAE,KAAK,EAAE,KAAK,CAAC,EACjD,IAAI,CAAC,IAAI,CACV,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAgD;IAC5E,MAAM,OAAO,GAAG,2DAA2D,MAAM,CAAC,aAAa,wBAAwB,MAAM,CAAC,KAAK,0FAA0F,CAAC;IAC9N,OAAO;QACL,IAAI,EAAE,uBAAuB;QAC7B,OAAO;QACP,KAAK,EAAE,OAAO;QACd,GAAG,EAAE,iEAAiE;QACtE,IAAI,EAAE,gFAAgF;QACtF,QAAQ,EAAE,IAAI,CAAC,KAAK;KACrB,CAAC;AACJ,CAAC;AAED,MAAM,cAAc,GAAG;IACrB,aAAa,EAAE,gBAAgB;IAC/B,oBAAoB,EAAE,uBAAuB;IAC7C,eAAe,EAAE,UAAU;CACnB,CAAC;AAEX,SAAS,QAAQ,CAAC,IAAc;IAC9B,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IACzC,MAAM,OAAO,GAAG,CAAC,EAAW,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACrD,OAAO;QACL,aAAa,QAAQ,CAAC,aAAa,yBAAyB,QAAQ,CAAC,WAAW,aAAa,QAAQ,CAAC,WAAW,GAAG;QACpH,aAAa,CAAC,KAAK,KAAK,IAAI;YAC1B,CAAC,CAAC,kBAAkB,aAAa,CAAC,aAAa,UAAU;YACzD,CAAC,CAAC,aAAa,CAAC,KAAK,KAAK,KAAK;gBAC7B,CAAC,CAAC,qBAAqB;gBACvB,CAAC,CAAC,yEAAyE;QAC/E,+BAA+B,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,eAAe,CAAC,yBAAyB,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,iBAAiB,CAAC,cAAc,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG;QAC9M,GAAG,CAAC,aAAa,CAAC,qBAAqB;YACrC,CAAC,CAAC;gBACE,gEAAgE,aAAa,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;aAC5J;YACH,CAAC,CAAC,EAAE,CAAC;QACP,aAAa,IAAI,CAAC,QAAQ,EAAE;QAC5B,IAAI,CAAC,OAAO;YACV,CAAC,CAAC,sDAAsD;YACxD,CAAC,CAAC,0BAA0B;KAC/B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -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;
|
|
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"}
|
|
@@ -8,6 +8,7 @@ import { runSolutionConnections } from './solutions-connections.js';
|
|
|
8
8
|
import { runSolutionConversations } from './solutions-conversations.js';
|
|
9
9
|
import { runSolutionOperations } from './solutions-coordination.js';
|
|
10
10
|
import { runSolutionDrafts } from './solutions-drafts.js';
|
|
11
|
+
import { runSolutionHistory } from './solutions-history.js';
|
|
11
12
|
import { runSolutionInstallationOptions } from './solutions-installation-options.js';
|
|
12
13
|
import { runSolutionNativeLifecycle } from './solutions-native-lifecycle.js';
|
|
13
14
|
import { runSolutionOnboarding } from './solutions-onboarding.js';
|
|
@@ -99,6 +100,8 @@ export async function runSolutions(rest, env, home, options = {}) {
|
|
|
99
100
|
return runSolutionOperations(rest.slice(1), env, home, options);
|
|
100
101
|
if (rest[0] === 'activity')
|
|
101
102
|
return runSolutionActivity(rest.slice(1), env, home, options);
|
|
103
|
+
if (rest[0] === 'history')
|
|
104
|
+
return runSolutionHistory(rest.slice(1), env, home, options);
|
|
102
105
|
if (rest[0] === 'conversations')
|
|
103
106
|
return runSolutionConversations(rest.slice(1), env, home, options);
|
|
104
107
|
if (rest[0] === 'connections')
|