@acorex-platform/extension-ai-voice-shell-client 0.0.21
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/fesm2022/acorex-platform-extension-ai-voice-shell-client-contracts.mjs +164 -0
- package/fesm2022/acorex-platform-extension-ai-voice-shell-client-contracts.mjs.map +1 -0
- package/fesm2022/acorex-platform-extension-ai-voice-shell-client.mjs +1026 -0
- package/fesm2022/acorex-platform-extension-ai-voice-shell-client.mjs.map +1 -0
- package/package.json +28 -0
- package/types/acorex-platform-extension-ai-voice-shell-client-contracts.d.ts +186 -0
- package/types/acorex-platform-extension-ai-voice-shell-client.d.ts +176 -0
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
//#region ----- Types -----
|
|
2
|
+
//#endregion
|
|
3
|
+
//#region ----- Parsing -----
|
|
4
|
+
const AI_TOOL_TAG = 'ai-tool';
|
|
5
|
+
function asStringArray(value) {
|
|
6
|
+
if (!Array.isArray(value)) {
|
|
7
|
+
return undefined;
|
|
8
|
+
}
|
|
9
|
+
const items = value.filter((item) => typeof item === 'string' && item.trim().length > 0);
|
|
10
|
+
return items.length > 0 ? items : undefined;
|
|
11
|
+
}
|
|
12
|
+
function asBoolean(value) {
|
|
13
|
+
return typeof value === 'boolean' ? value : undefined;
|
|
14
|
+
}
|
|
15
|
+
function asSafetyKind(value) {
|
|
16
|
+
if (value === 'read-only' || value === 'mutating' || value === 'destructive') {
|
|
17
|
+
return value;
|
|
18
|
+
}
|
|
19
|
+
if (value === 'mutation') {
|
|
20
|
+
return 'mutating';
|
|
21
|
+
}
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
function asExecutionMode(value) {
|
|
25
|
+
if (value === 'backend' || value === 'frontend' || value === 'both') {
|
|
26
|
+
return value;
|
|
27
|
+
}
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Parses catalog `aiMetadataJson` into the AI-compatible operation contract.
|
|
32
|
+
* Returns `null` when the JSON is missing or invalid.
|
|
33
|
+
*/
|
|
34
|
+
function parseAiCompatibleOperationMeta(aiMetadataJson) {
|
|
35
|
+
if (!aiMetadataJson?.trim()) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
try {
|
|
39
|
+
const raw = JSON.parse(aiMetadataJson);
|
|
40
|
+
if (raw == null || typeof raw !== 'object' || Array.isArray(raw)) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
const safetyRaw = raw['safety'] != null && typeof raw['safety'] === 'object' && !Array.isArray(raw['safety'])
|
|
44
|
+
? raw['safety']
|
|
45
|
+
: undefined;
|
|
46
|
+
const voiceRaw = raw['voice'] != null && typeof raw['voice'] === 'object' && !Array.isArray(raw['voice'])
|
|
47
|
+
? raw['voice']
|
|
48
|
+
: undefined;
|
|
49
|
+
const usageRaw = raw['usage'] != null && typeof raw['usage'] === 'object' && !Array.isArray(raw['usage'])
|
|
50
|
+
? raw['usage']
|
|
51
|
+
: undefined;
|
|
52
|
+
const meta = {};
|
|
53
|
+
if (typeof raw['toolName'] === 'string' && raw['toolName'].trim()) {
|
|
54
|
+
meta.toolName = raw['toolName'].trim();
|
|
55
|
+
}
|
|
56
|
+
if (typeof raw['shortDescription'] === 'string' && raw['shortDescription'].trim()) {
|
|
57
|
+
meta.shortDescription = raw['shortDescription'].trim();
|
|
58
|
+
}
|
|
59
|
+
if (typeof raw['instruction'] === 'string' && raw['instruction'].trim()) {
|
|
60
|
+
meta.instruction = raw['instruction'].trim();
|
|
61
|
+
}
|
|
62
|
+
const tags = asStringArray(raw['tags']);
|
|
63
|
+
if (tags) {
|
|
64
|
+
meta.tags = tags;
|
|
65
|
+
}
|
|
66
|
+
const executionMode = asExecutionMode(raw['executionMode']);
|
|
67
|
+
if (executionMode) {
|
|
68
|
+
meta.executionMode = executionMode;
|
|
69
|
+
}
|
|
70
|
+
if (safetyRaw) {
|
|
71
|
+
meta.safety = {
|
|
72
|
+
kind: asSafetyKind(safetyRaw['kind']),
|
|
73
|
+
sideEffects: asBoolean(safetyRaw['sideEffects']),
|
|
74
|
+
requiresConfirmation: asBoolean(safetyRaw['requiresConfirmation']),
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
if (voiceRaw) {
|
|
78
|
+
meta.voice = {
|
|
79
|
+
speakInputSummary: asBoolean(voiceRaw['speakInputSummary']),
|
|
80
|
+
confirmPromptKey: typeof voiceRaw['confirmPromptKey'] === 'string' && voiceRaw['confirmPromptKey'].trim()
|
|
81
|
+
? voiceRaw['confirmPromptKey'].trim()
|
|
82
|
+
: undefined,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
const followUpTools = asStringArray(raw['followUpTools']) ?? asStringArray(usageRaw?.['followUpTools']);
|
|
86
|
+
if (followUpTools) {
|
|
87
|
+
meta.followUpTools = followUpTools;
|
|
88
|
+
}
|
|
89
|
+
if (usageRaw) {
|
|
90
|
+
meta.usage = {
|
|
91
|
+
whenToUse: asStringArray(usageRaw['whenToUse']),
|
|
92
|
+
avoidWhen: asStringArray(usageRaw['avoidWhen']),
|
|
93
|
+
followUpTools: asStringArray(usageRaw['followUpTools']),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
return meta;
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* True when catalog metadata opts the operation into the AI tool surface
|
|
104
|
+
* (`ai-tool` tag, matching existing `commandRowExposedForAi` tag check).
|
|
105
|
+
*/
|
|
106
|
+
function isAiCompatibleOperationMeta(meta) {
|
|
107
|
+
return Array.isArray(meta?.tags) && meta.tags.includes(AI_TOOL_TAG);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* True when a catalog row should be exposed as an AI-compatible tool.
|
|
111
|
+
* Matches `commandRowExposedForAi`: `capabilities` includes `ai`, or `aiMetadataJson` has the `ai-tool` tag.
|
|
112
|
+
*/
|
|
113
|
+
function isAiCompatibleCatalogRow(row) {
|
|
114
|
+
if (!row) {
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
const caps = row.capabilities;
|
|
118
|
+
if (Array.isArray(caps)) {
|
|
119
|
+
if (caps.some((c) => String(c).toLowerCase() === 'ai')) {
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
else if (typeof caps === 'string' && caps.trim()) {
|
|
124
|
+
const parts = caps.split(',').map((s) => s.trim().toLowerCase());
|
|
125
|
+
if (parts.includes('ai')) {
|
|
126
|
+
return true;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return isAiCompatibleOperationMeta(parseAiCompatibleOperationMeta(row.aiMetadataJson));
|
|
130
|
+
}
|
|
131
|
+
//#endregion
|
|
132
|
+
|
|
133
|
+
//#region ----- Types -----
|
|
134
|
+
//#endregion
|
|
135
|
+
|
|
136
|
+
//#region ----- Types -----
|
|
137
|
+
//#endregion
|
|
138
|
+
|
|
139
|
+
//#region ----- Types -----
|
|
140
|
+
//#endregion
|
|
141
|
+
|
|
142
|
+
//#region ----- Constants -----
|
|
143
|
+
/** Runtime command that opens the central voice void dialog. */
|
|
144
|
+
const AXE_AI_VOICE_SHELL_OPEN_COMMAND = 'AiVoiceShell:Open';
|
|
145
|
+
/** Assessment interview capability id (registered by assessment-management). */
|
|
146
|
+
const AXE_ASSESSMENT_QUESTIONNAIRE_VOICE_CAPABILITY_ID = 'assessment-questionnaire-interview';
|
|
147
|
+
const ASSESSMENT_FIND_CASE_FOR_VOICE_FILL_COMMAND = 'Assessment:FindCaseForVoiceFill';
|
|
148
|
+
const ASSESSMENT_START_HEADLESS_QUESTIONNAIRE_COMMAND = 'Assessment:StartHeadlessQuestionnaire';
|
|
149
|
+
const ASSESSMENT_NEXT_QUESTIONNAIRE_QUESTION_COMMAND = 'Assessment:NextQuestionnaireQuestion';
|
|
150
|
+
const ASSESSMENT_APPLY_QUESTIONNAIRE_ANSWER_COMMAND = 'Assessment:ApplyQuestionnaireAnswer';
|
|
151
|
+
const ASSESSMENT_SAVE_QUESTIONNAIRE_DRAFT_COMMAND = 'Assessment:SaveQuestionnaireDraft';
|
|
152
|
+
const ASSESSMENT_SUBMIT_QUESTIONNAIRE_COMMAND = 'Assessment:SubmitQuestionnaire';
|
|
153
|
+
const ASSESSMENT_CANCEL_QUESTIONNAIRE_COMMAND = 'Assessment:CancelQuestionnaire';
|
|
154
|
+
//#endregion
|
|
155
|
+
|
|
156
|
+
//#region ----- Contracts barrel -----
|
|
157
|
+
//#endregion
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Generated bundle index. Do not edit.
|
|
161
|
+
*/
|
|
162
|
+
|
|
163
|
+
export { ASSESSMENT_APPLY_QUESTIONNAIRE_ANSWER_COMMAND, ASSESSMENT_CANCEL_QUESTIONNAIRE_COMMAND, ASSESSMENT_FIND_CASE_FOR_VOICE_FILL_COMMAND, ASSESSMENT_NEXT_QUESTIONNAIRE_QUESTION_COMMAND, ASSESSMENT_SAVE_QUESTIONNAIRE_DRAFT_COMMAND, ASSESSMENT_START_HEADLESS_QUESTIONNAIRE_COMMAND, ASSESSMENT_SUBMIT_QUESTIONNAIRE_COMMAND, AXE_AI_VOICE_SHELL_OPEN_COMMAND, AXE_ASSESSMENT_QUESTIONNAIRE_VOICE_CAPABILITY_ID, isAiCompatibleCatalogRow, isAiCompatibleOperationMeta, parseAiCompatibleOperationMeta };
|
|
164
|
+
//# sourceMappingURL=acorex-platform-extension-ai-voice-shell-client-contracts.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-extension-ai-voice-shell-client-contracts.mjs","sources":["../../../../libs/extensions/ai/voice-shell/contracts/src/ai-compatible-operation.types.ts","../../../../libs/extensions/ai/voice-shell/contracts/src/voice-capability.types.ts","../../../../libs/extensions/ai/voice-shell/contracts/src/voice-shell.types.ts","../../../../libs/extensions/ai/voice-shell/contracts/src/voice-transport.types.ts","../../../../libs/extensions/ai/voice-shell/contracts/src/voice-shell.constants.ts","../../../../libs/extensions/ai/voice-shell/contracts/src/index.ts","../../../../libs/extensions/ai/voice-shell/contracts/src/acorex-platform-extension-ai-voice-shell-client-contracts.ts"],"sourcesContent":["//#region ----- Types -----\n\n/** Where an AI-compatible command or query runs. */\nexport type AXPAiCompatibleExecutionMode = 'backend' | 'frontend' | 'both';\n\n/** Safety classification for AI-compatible operations. */\nexport type AXPAiCompatibleSafetyKind = 'read-only' | 'mutating' | 'destructive';\n\nexport interface AXPAiCompatibleSafetyMeta {\n kind?: AXPAiCompatibleSafetyKind;\n sideEffects?: boolean;\n requiresConfirmation?: boolean;\n}\n\n/** Optional voice-shell hints stored in catalog `aiMetadataJson`. */\nexport interface AXPAiCompatibleVoiceMeta {\n speakInputSummary?: boolean;\n confirmPromptKey?: string;\n}\n\n/**\n * Formal AI-compatible command/query contract (parsed from catalog `aiMetadataJson`).\n * Aligns with existing `ai` sidecar fields plus optional voice hints.\n */\nexport interface AXPAiCompatibleOperationMeta {\n toolName?: string;\n shortDescription?: string;\n instruction?: string;\n tags?: string[];\n executionMode?: AXPAiCompatibleExecutionMode;\n safety?: AXPAiCompatibleSafetyMeta;\n voice?: AXPAiCompatibleVoiceMeta;\n followUpTools?: string[];\n usage?: {\n whenToUse?: string[];\n avoidWhen?: string[];\n followUpTools?: string[];\n };\n}\n\n//#endregion\n\n//#region ----- Parsing -----\n\nconst AI_TOOL_TAG = 'ai-tool';\n\nfunction asStringArray(value: unknown): string[] | undefined {\n if (!Array.isArray(value)) {\n return undefined;\n }\n const items = value.filter((item): item is string => typeof item === 'string' && item.trim().length > 0);\n return items.length > 0 ? items : undefined;\n}\n\nfunction asBoolean(value: unknown): boolean | undefined {\n return typeof value === 'boolean' ? value : undefined;\n}\n\nfunction asSafetyKind(value: unknown): AXPAiCompatibleSafetyKind | undefined {\n if (value === 'read-only' || value === 'mutating' || value === 'destructive') {\n return value;\n }\n if (value === 'mutation') {\n return 'mutating';\n }\n return undefined;\n}\n\nfunction asExecutionMode(value: unknown): AXPAiCompatibleExecutionMode | undefined {\n if (value === 'backend' || value === 'frontend' || value === 'both') {\n return value;\n }\n return undefined;\n}\n\n/**\n * Parses catalog `aiMetadataJson` into the AI-compatible operation contract.\n * Returns `null` when the JSON is missing or invalid.\n */\nexport function parseAiCompatibleOperationMeta(\n aiMetadataJson: string | undefined | null,\n): AXPAiCompatibleOperationMeta | null {\n if (!aiMetadataJson?.trim()) {\n return null;\n }\n try {\n const raw = JSON.parse(aiMetadataJson) as Record<string, unknown>;\n if (raw == null || typeof raw !== 'object' || Array.isArray(raw)) {\n return null;\n }\n const safetyRaw =\n raw['safety'] != null && typeof raw['safety'] === 'object' && !Array.isArray(raw['safety'])\n ? (raw['safety'] as Record<string, unknown>)\n : undefined;\n const voiceRaw =\n raw['voice'] != null && typeof raw['voice'] === 'object' && !Array.isArray(raw['voice'])\n ? (raw['voice'] as Record<string, unknown>)\n : undefined;\n const usageRaw =\n raw['usage'] != null && typeof raw['usage'] === 'object' && !Array.isArray(raw['usage'])\n ? (raw['usage'] as Record<string, unknown>)\n : undefined;\n\n const meta: AXPAiCompatibleOperationMeta = {};\n if (typeof raw['toolName'] === 'string' && raw['toolName'].trim()) {\n meta.toolName = raw['toolName'].trim();\n }\n if (typeof raw['shortDescription'] === 'string' && raw['shortDescription'].trim()) {\n meta.shortDescription = raw['shortDescription'].trim();\n }\n if (typeof raw['instruction'] === 'string' && raw['instruction'].trim()) {\n meta.instruction = raw['instruction'].trim();\n }\n const tags = asStringArray(raw['tags']);\n if (tags) {\n meta.tags = tags;\n }\n const executionMode = asExecutionMode(raw['executionMode']);\n if (executionMode) {\n meta.executionMode = executionMode;\n }\n if (safetyRaw) {\n meta.safety = {\n kind: asSafetyKind(safetyRaw['kind']),\n sideEffects: asBoolean(safetyRaw['sideEffects']),\n requiresConfirmation: asBoolean(safetyRaw['requiresConfirmation']),\n };\n }\n if (voiceRaw) {\n meta.voice = {\n speakInputSummary: asBoolean(voiceRaw['speakInputSummary']),\n confirmPromptKey:\n typeof voiceRaw['confirmPromptKey'] === 'string' && voiceRaw['confirmPromptKey'].trim()\n ? voiceRaw['confirmPromptKey'].trim()\n : undefined,\n };\n }\n const followUpTools = asStringArray(raw['followUpTools']) ?? asStringArray(usageRaw?.['followUpTools']);\n if (followUpTools) {\n meta.followUpTools = followUpTools;\n }\n if (usageRaw) {\n meta.usage = {\n whenToUse: asStringArray(usageRaw['whenToUse']),\n avoidWhen: asStringArray(usageRaw['avoidWhen']),\n followUpTools: asStringArray(usageRaw['followUpTools']),\n };\n }\n return meta;\n } catch {\n return null;\n }\n}\n\n/**\n * True when catalog metadata opts the operation into the AI tool surface\n * (`ai-tool` tag, matching existing `commandRowExposedForAi` tag check).\n */\nexport function isAiCompatibleOperationMeta(meta: AXPAiCompatibleOperationMeta | null | undefined): boolean {\n return Array.isArray(meta?.tags) && meta.tags.includes(AI_TOOL_TAG);\n}\n\n/**\n * True when a catalog row should be exposed as an AI-compatible tool.\n * Matches `commandRowExposedForAi`: `capabilities` includes `ai`, or `aiMetadataJson` has the `ai-tool` tag.\n */\nexport function isAiCompatibleCatalogRow(row: {\n capabilities?: string | string[] | null;\n aiMetadataJson?: string | null;\n} | null | undefined): boolean {\n if (!row) {\n return false;\n }\n const caps = row.capabilities;\n if (Array.isArray(caps)) {\n if (caps.some((c) => String(c).toLowerCase() === 'ai')) {\n return true;\n }\n } else if (typeof caps === 'string' && caps.trim()) {\n const parts = caps.split(',').map((s) => s.trim().toLowerCase());\n if (parts.includes('ai')) {\n return true;\n }\n }\n return isAiCompatibleOperationMeta(parseAiCompatibleOperationMeta(row.aiMetadataJson));\n}\n\n//#endregion\n","//#region ----- Types -----\n\n/** Intent payload used to discover a voice capability. */\nexport interface AXPVoiceCapabilityIntent {\n text?: string;\n context?: Record<string, unknown>;\n}\n\n/** Spoken / display prompt returned by interview-style capabilities. */\nexport interface AXPVoicePrompt {\n sessionId: string;\n spokenPrompt: string;\n titleText?: string;\n answerKey?: string;\n widgetKind?: string;\n options?: Array<{ id: string; label: string }>;\n isRequired?: boolean;\n allowSkip?: boolean;\n comment?: { enabled: boolean; required: boolean };\n progress?: { answered: number; totalVisible: number };\n captureStrategy?: 'voice' | 'micro-capture' | 'unsupported';\n}\n\nexport type AXPVoiceNextPromptResult = AXPVoicePrompt | { done: true; sessionId: string; spokenPrompt: string };\n\nexport interface AXPVoiceApplyResult {\n ok: boolean;\n sessionId: string;\n errorCode?: string;\n spokenMessage?: string;\n requiresConfirmation?: boolean;\n next?: AXPVoiceNextPromptResult;\n}\n\nexport interface AXPVoiceSubmitResult {\n ok: boolean;\n sessionId?: string;\n spokenMessage?: string;\n errors?: Array<{ answerKey: string; message: string }>;\n}\n\nexport interface AXPVoiceSaveDraftResult {\n sessionId: string;\n spokenMessage?: string;\n}\n\n/**\n * Platform port implemented by domain modules (assessment is the first).\n * The voice shell talks only to this interface — never to viewer internals.\n */\nexport interface AXPVoiceCapabilityProvider {\n readonly id: string;\n readonly titleKey: string;\n canHandle(intent: AXPVoiceCapabilityIntent): boolean | Promise<boolean>;\n startSession(input: unknown): Promise<{ sessionId: string; spokenPrompt?: string }>;\n nextPrompt?(sessionId: string): Promise<AXPVoiceNextPromptResult>;\n applyInput?(sessionId: string, input: unknown): Promise<AXPVoiceApplyResult>;\n saveDraft?(sessionId: string): Promise<AXPVoiceSaveDraftResult | void>;\n submit?(sessionId: string): Promise<AXPVoiceSubmitResult>;\n cancel?(sessionId: string): Promise<void>;\n}\n\n//#endregion\n","//#region ----- Types -----\n\n/** Primary interaction mode of the central voice command shell. */\nexport type AXPVoiceShellMode = 'command' | 'interview' | 'confirm' | 'capture';\n\n/** Visual / animation state of the void dialog. */\nexport type AXPVoiceShellUiState =\n | 'idle'\n | 'listening'\n | 'thinking'\n | 'speaking'\n | 'confirm'\n | 'error'\n | 'capture';\n\nexport interface AXPVoiceShellConfirmRequest {\n prompt: string;\n confirmLabelKey?: string;\n cancelLabelKey?: string;\n}\n\nexport interface AXPVoiceShellOpenOptions {\n /** Optional spoken or typed kickoff utterance. */\n initialText?: string;\n /** Skip discovery and start this capability (e.g. assessment interview). */\n capabilityId?: string;\n /** Domain start payload forwarded to {@link AXPVoiceCapabilityProvider.startSession}. */\n startInput?: unknown;\n}\n\nexport interface AXPVoiceShellTranscriptTurn {\n role: 'user' | 'assistant';\n text: string;\n}\n\n//#endregion\n","//#region ----- Types -----\n\n/** Speech-to-text result from the interaction transport. */\nexport interface AXPVoiceSttResult {\n text: string;\n}\n\n/** Text-to-speech result from the interaction transport. */\nexport interface AXPVoiceTtsResult {\n fileId?: string;\n objectUrl?: string;\n text: string;\n}\n\n/**\n * Swappable interaction channel (v1 HTTP+SSE / commands; later realtime or WebRTC).\n * Domain APIs stay transport-agnostic.\n */\nexport interface AXPVoiceInteractionTransport {\n readonly id: string;\n transcribe(audio: Blob, options?: { language?: string }): Promise<AXPVoiceSttResult>;\n synthesize(text: string): Promise<AXPVoiceTtsResult>;\n runAssist?(prompt: string, context?: Record<string, unknown>): Promise<{ text: string }>;\n}\n\n//#endregion\n","//#region ----- Constants -----\n\n/** Runtime command that opens the central voice void dialog. */\nexport const AXE_AI_VOICE_SHELL_OPEN_COMMAND = 'AiVoiceShell:Open' as const;\n\n/** Assessment interview capability id (registered by assessment-management). */\nexport const AXE_ASSESSMENT_QUESTIONNAIRE_VOICE_CAPABILITY_ID =\n 'assessment-questionnaire-interview' as const;\n\nexport const ASSESSMENT_FIND_CASE_FOR_VOICE_FILL_COMMAND = 'Assessment:FindCaseForVoiceFill' as const;\nexport const ASSESSMENT_START_HEADLESS_QUESTIONNAIRE_COMMAND =\n 'Assessment:StartHeadlessQuestionnaire' as const;\nexport const ASSESSMENT_NEXT_QUESTIONNAIRE_QUESTION_COMMAND =\n 'Assessment:NextQuestionnaireQuestion' as const;\nexport const ASSESSMENT_APPLY_QUESTIONNAIRE_ANSWER_COMMAND =\n 'Assessment:ApplyQuestionnaireAnswer' as const;\nexport const ASSESSMENT_SAVE_QUESTIONNAIRE_DRAFT_COMMAND = 'Assessment:SaveQuestionnaireDraft' as const;\nexport const ASSESSMENT_SUBMIT_QUESTIONNAIRE_COMMAND = 'Assessment:SubmitQuestionnaire' as const;\nexport const ASSESSMENT_CANCEL_QUESTIONNAIRE_COMMAND = 'Assessment:CancelQuestionnaire' as const;\n\n//#endregion\n","//#region ----- Contracts barrel -----\n\nexport * from './ai-compatible-operation.types';\nexport * from './voice-capability.types';\nexport * from './voice-shell.types';\nexport * from './voice-transport.types';\nexport * from './voice-shell.constants';\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|