@case-framework/survey-assistant 0.6.0 → 0.8.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/README.md +67 -7
- package/dist/{attachments-B0hg3vpT.mjs → attachments-BuNni5vB.mjs} +1 -1
- package/dist/{attachments-B0hg3vpT.mjs.map → attachments-BuNni5vB.mjs.map} +1 -1
- package/dist/{authoring-references-CW38pYzK.mjs → authoring-references-DbuOKerg.mjs} +13 -4
- package/dist/authoring-references-DbuOKerg.mjs.map +1 -0
- package/dist/{capabilities-DVTfogjv.d.mts → capabilities-CmeeAjEc.d.mts} +3 -4
- package/dist/capabilities-CmeeAjEc.d.mts.map +1 -0
- package/dist/capabilities-DCMA71PP.mjs +58 -0
- package/dist/capabilities-DCMA71PP.mjs.map +1 -0
- package/dist/capabilities-default.d.mts +13 -12
- package/dist/capabilities-default.d.mts.map +1 -1
- package/dist/capabilities-default.mjs +2 -414
- package/dist/{constants-BMGTgfjv.d.mts → constants-B6HzpEsx.d.mts} +7 -28
- package/dist/constants-B6HzpEsx.d.mts.map +1 -0
- package/dist/{constants-0UHGFcRJ.mjs → constants-Ct-vv9cu.mjs} +1 -1
- package/dist/{constants-0UHGFcRJ.mjs.map → constants-Ct-vv9cu.mjs.map} +1 -1
- package/dist/controller-proxy-D7uQfm5f.d.mts +65 -0
- package/dist/controller-proxy-D7uQfm5f.d.mts.map +1 -0
- package/dist/{controller-proxy-DMTqer6T.mjs → controller-proxy-DEeFl9IA.mjs} +29 -26
- package/dist/controller-proxy-DEeFl9IA.mjs.map +1 -0
- package/dist/default-fhSon2RM.mjs +760 -0
- package/dist/default-fhSon2RM.mjs.map +1 -0
- package/dist/{digest-SJmoYVaK.d.mts → digest-C39WyAWG.d.mts} +2 -3
- package/dist/digest-C39WyAWG.d.mts.map +1 -0
- package/dist/digest.d.mts +1 -1
- package/dist/digest.mjs.map +1 -1
- package/dist/{engine-CQwOAcwK.mjs → engine-nXoCWYpQ.mjs} +2821 -2018
- package/dist/engine-nXoCWYpQ.mjs.map +1 -0
- package/dist/engine.d.mts +3 -3
- package/dist/engine.mjs +3 -3
- package/dist/{fair-guidance-CRYCRxQm.mjs → fair-guidance-BmO4PswW.mjs} +1 -1
- package/dist/{fair-guidance-CRYCRxQm.mjs.map → fair-guidance-BmO4PswW.mjs.map} +1 -1
- package/dist/{index-D6nqkz0O.d.mts → index-Ciq7vHIs.d.mts} +121 -197
- package/dist/index-Ciq7vHIs.d.mts.map +1 -0
- package/dist/{index-DvTqML-0.d.mts → index-D7wT6P3t.d.mts} +294 -63
- package/dist/index-D7wT6P3t.d.mts.map +1 -0
- package/dist/index-WB5kfnz0.d.mts +348 -0
- package/dist/index-WB5kfnz0.d.mts.map +1 -0
- package/dist/{index-B0lxsAzx.d.mts → index-r5riv4md.d.mts} +50 -29
- package/dist/index-r5riv4md.d.mts.map +1 -0
- package/dist/{lifecycle-BmGAIUlv.d.mts → lifecycle-Dm8u7QFh.d.mts} +40 -18
- package/dist/lifecycle-Dm8u7QFh.d.mts.map +1 -0
- package/dist/{memory-thread-repository-CjFGVNZh.mjs → memory-thread-repository-DAnOGIB3.mjs} +89 -34
- package/dist/memory-thread-repository-DAnOGIB3.mjs.map +1 -0
- package/dist/{protocol-DJUP4gc0.mjs → protocol-CF4Bh_Ch.mjs} +182 -50
- package/dist/protocol-CF4Bh_Ch.mjs.map +1 -0
- package/dist/protocol.d.mts +4 -4
- package/dist/protocol.mjs +3 -3
- package/dist/react-C_GY-Fsc.mjs +1727 -0
- package/dist/react-C_GY-Fsc.mjs.map +1 -0
- package/dist/react-integration.d.mts +2 -2
- package/dist/react-integration.mjs +2 -2
- package/dist/react.d.mts +3 -3
- package/dist/react.mjs +3 -3
- package/dist/references/assistant-operations.md +143 -68
- package/dist/references/core-rules.md +6 -3
- package/dist/references/embedded-forms.md +34 -14
- package/dist/references/expressions.md +238 -48
- package/dist/references/fair-by-design.md +9 -9
- package/dist/references/item-types.md +306 -72
- package/dist/references/localization.md +5 -4
- package/dist/references/response-variables.md +38 -0
- package/dist/references/rich-text-content.md +60 -27
- package/dist/references/source-material-surveys.md +13 -5
- package/dist/references/survey-data-model.md +32 -9
- package/dist/{request-context-BjTHNcDd.mjs → request-context-Dg4jSwN1.mjs} +4 -10
- package/dist/request-context-Dg4jSwN1.mjs.map +1 -0
- package/dist/{request-guardrails-TmgQtqp4.mjs → request-guardrails-C0ugBOp0.mjs} +6 -5
- package/dist/request-guardrails-C0ugBOp0.mjs.map +1 -0
- package/dist/server-agent.d.mts +53 -44
- package/dist/server-agent.d.mts.map +1 -1
- package/dist/server-agent.mjs +48 -27
- package/dist/server-agent.mjs.map +1 -1
- package/dist/server-runtime.d.mts +36 -49
- package/dist/server-runtime.d.mts.map +1 -1
- package/dist/server-runtime.mjs +17 -12
- package/dist/server-runtime.mjs.map +1 -1
- package/dist/server-tasks.d.mts +2 -2
- package/dist/server-tasks.mjs +2 -313
- package/dist/server-tools.d.mts +1 -1
- package/dist/server-tools.mjs +1 -1
- package/dist/server.d.mts +13 -36
- package/dist/server.d.mts.map +1 -1
- package/dist/server.mjs +5 -5
- package/dist/server.mjs.map +1 -1
- package/dist/storage-postgres.d.mts +9 -25
- package/dist/storage-postgres.d.mts.map +1 -1
- package/dist/storage-postgres.mjs +5 -4
- package/dist/storage-postgres.mjs.map +1 -1
- package/dist/{tasks-DxzD25Zc.d.mts → tasks-B9h3LPam.d.mts} +19 -35
- package/dist/tasks-B9h3LPam.d.mts.map +1 -0
- package/dist/tasks-BZEiwgxA.mjs +396 -0
- package/dist/tasks-BZEiwgxA.mjs.map +1 -0
- package/dist/thread-documents-DrHbaXqP.d.mts +119 -0
- package/dist/thread-documents-DrHbaXqP.d.mts.map +1 -0
- package/dist/{thread-handlers-AbQbt4sX.d.mts → thread-handlers-Bef0td9N.d.mts} +10 -40
- package/dist/thread-handlers-Bef0td9N.d.mts.map +1 -0
- package/dist/{tools-CFh35R4d.mjs → tools-CEsv-WoO.mjs} +705 -578
- package/dist/tools-CEsv-WoO.mjs.map +1 -0
- package/dist/ui.css +1 -1
- package/dist/ui.d.mts +17 -55
- package/dist/ui.d.mts.map +1 -1
- package/dist/ui.mjs +759 -171
- package/dist/ui.mjs.map +1 -1
- package/docs/integration.md +51 -1
- package/package.json +49 -42
- package/dist/authoring-references-CW38pYzK.mjs.map +0 -1
- package/dist/capabilities-DVTfogjv.d.mts.map +0 -1
- package/dist/capabilities-default.mjs.map +0 -1
- package/dist/constants-BMGTgfjv.d.mts.map +0 -1
- package/dist/controller-proxy-DMTqer6T.mjs.map +0 -1
- package/dist/controller-proxy-mRvez2qw.d.mts +0 -85
- package/dist/controller-proxy-mRvez2qw.d.mts.map +0 -1
- package/dist/digest-SJmoYVaK.d.mts.map +0 -1
- package/dist/engine-CQwOAcwK.mjs.map +0 -1
- package/dist/form-authoring-kQDgC5oz.mjs +0 -155
- package/dist/form-authoring-kQDgC5oz.mjs.map +0 -1
- package/dist/index-B0lxsAzx.d.mts.map +0 -1
- package/dist/index-BS-Xjk1h.d.mts +0 -224
- package/dist/index-BS-Xjk1h.d.mts.map +0 -1
- package/dist/index-D6nqkz0O.d.mts.map +0 -1
- package/dist/index-DvTqML-0.d.mts.map +0 -1
- package/dist/lifecycle-BmGAIUlv.d.mts.map +0 -1
- package/dist/memory-thread-repository-CjFGVNZh.mjs.map +0 -1
- package/dist/protocol-DJUP4gc0.mjs.map +0 -1
- package/dist/react-Dqlmasrs.mjs +0 -768
- package/dist/react-Dqlmasrs.mjs.map +0 -1
- package/dist/request-context-BjTHNcDd.mjs.map +0 -1
- package/dist/request-guardrails-TmgQtqp4.mjs.map +0 -1
- package/dist/server-tasks.mjs.map +0 -1
- package/dist/tasks-DxzD25Zc.d.mts.map +0 -1
- package/dist/thread-documents-rmd6nyX9.d.mts +0 -107
- package/dist/thread-documents-rmd6nyX9.d.mts.map +0 -1
- package/dist/thread-handlers-AbQbt4sX.d.mts.map +0 -1
- package/dist/tools-CFh35R4d.mjs.map +0 -1
package/docs/integration.md
CHANGED
|
@@ -7,7 +7,7 @@ storage credentials, logs, and deployment policy.
|
|
|
7
7
|
|
|
8
8
|
## Compatibility and release gate
|
|
9
9
|
|
|
10
|
-
- Node.js 22.
|
|
10
|
+
- Node.js 22.22.2+ on the 22.x line, 24.15.0+ on the 24.x line, or 26.0.0+ and standard Web `Request`/`Response` route handlers.
|
|
11
11
|
- React and React DOM 19.2 or newer for `/react` and `/ui`.
|
|
12
12
|
- `@case-framework/survey-core` 0.4.2 or newer within the 0.4 line; the
|
|
13
13
|
assistant uses its browser-safe `editor/colors` entry.
|
|
@@ -73,6 +73,8 @@ roles locally:
|
|
|
73
73
|
```yaml
|
|
74
74
|
version: 1
|
|
75
75
|
activeProvider: openai
|
|
76
|
+
supportBundle:
|
|
77
|
+
enabled: true
|
|
76
78
|
providers:
|
|
77
79
|
openai:
|
|
78
80
|
type: openai
|
|
@@ -122,6 +124,13 @@ Only the active provider's secret is required. `SURVEY_ASSISTANT_ENABLED` is an
|
|
|
122
124
|
optional operational override; provider, model, role, memory, request-limit, and
|
|
123
125
|
execution policy remains document-owned.
|
|
124
126
|
|
|
127
|
+
Support-bundle export is enabled by default. Set `supportBundle.enabled: false`
|
|
128
|
+
in the configuration document to remove the built-in panel actions and reject
|
|
129
|
+
package preparation or generation calls that receive the disabled config.
|
|
130
|
+
`SURVEY_ASSISTANT_SUPPORT_BUNDLE_ENABLED` is an optional strict boolean
|
|
131
|
+
operational override. Both values are resolved by the package configuration
|
|
132
|
+
parser.
|
|
133
|
+
|
|
125
134
|
#### Optional experimental-identity rollout gate
|
|
126
135
|
|
|
127
136
|
Importing hosts can pass `requireExperimentalIdentityOptIn: true` as a third
|
|
@@ -288,9 +297,36 @@ const assistant = useSurveyEditorAssistantIntegration({
|
|
|
288
297
|
applyPolicy="auto"
|
|
289
298
|
controller={assistant.controller}
|
|
290
299
|
onSettleApply={persistAndAuditAssistantApply}
|
|
300
|
+
supportBundle={{
|
|
301
|
+
enabled: supportBundleEnabled,
|
|
302
|
+
hostBuildVersion: deploymentRelease,
|
|
303
|
+
supportEmail: "survey-support@example.org",
|
|
304
|
+
}}
|
|
291
305
|
/>;
|
|
292
306
|
```
|
|
293
307
|
|
|
308
|
+
Resolve `config.supportBundle.enabled` in server-only host code and pass that
|
|
309
|
+
boolean through the server-to-client boundary as `supportBundleEnabled`. Do not
|
|
310
|
+
send the complete runtime config to the browser because it contains
|
|
311
|
+
server-only provider credentials.
|
|
312
|
+
|
|
313
|
+
The shared task client accepts an explicit `modelId`, invocation `mode`, and
|
|
314
|
+
abort `signal` per request. The editor integration captures its selected model
|
|
315
|
+
once per task and uses it for both the request and the snapshot-scoped suggestion
|
|
316
|
+
cache. Model selection also applies when caching is disabled and to uncached
|
|
317
|
+
translation requests.
|
|
318
|
+
|
|
319
|
+
Custom thread clients implement `SurveyAssistantThreadClient`, including the
|
|
320
|
+
required `listPage({ cursor })` method. Each page returns `threads` and an optional
|
|
321
|
+
`nextCursor`; omit the cursor to read the first page.
|
|
322
|
+
|
|
323
|
+
The assistant controller requires `getSnapshot()` and
|
|
324
|
+
`applyAssistantChanges(changes)`. The session passes all authorized change sets
|
|
325
|
+
in one call, including a one-element array for a single change set. Return one
|
|
326
|
+
result per change set with its original ID, including any failed changes; the
|
|
327
|
+
session settles only when every result is applied. The shared Survey Editor
|
|
328
|
+
provides this adapter through its normal mutation and undo/redo path.
|
|
329
|
+
|
|
294
330
|
`applyPolicy` is required because immediate apply, review, and denial are
|
|
295
331
|
material host decisions. For a real editing host, `onSettleApply` should save
|
|
296
332
|
the already-applied editor state and durable audit receipts. The session remains
|
|
@@ -306,6 +342,20 @@ silently discarding a requested approval. Use `"deny"` for read-only
|
|
|
306
342
|
deployments. These policies do not remove inspection, chat, tasks, or
|
|
307
343
|
attachments.
|
|
308
344
|
|
|
345
|
+
Support bundles include the Survey Assistant package version automatically. Set
|
|
346
|
+
`supportBundle.hostBuildVersion` to the host's release tag or commit so a
|
|
347
|
+
customer export identifies the deployed application code as well. The optional
|
|
348
|
+
`supportEmail` enables the post-download email draft; it does not upload or
|
|
349
|
+
attach the bundle automatically. Do not expose credentials or other secrets in
|
|
350
|
+
these values.
|
|
351
|
+
|
|
352
|
+
When `supportBundle.enabled` is false, the package removes both the history
|
|
353
|
+
action and the error-state export action. Its preparation and generation APIs
|
|
354
|
+
also reject when passed the same disabled config. A custom export integration
|
|
355
|
+
must pass the resolved config to those APIs; the setting is not a browser
|
|
356
|
+
security boundary against arbitrary host-authored code. The size estimator
|
|
357
|
+
returns `0` and the mailto helper returns `undefined` for a disabled config.
|
|
358
|
+
|
|
309
359
|
The client carries the latest unsuccessful post-generation outcome into the
|
|
310
360
|
next request. This lets the model distinguish a server-validated draft from a
|
|
311
361
|
change that was later rejected by the editor, declined during review, or left
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@case-framework/survey-assistant",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "Shared protocol, engine, and runtime for the CASE survey assistant.",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"files": [
|
|
@@ -85,55 +85,62 @@
|
|
|
85
85
|
"./package.json": "./package.json"
|
|
86
86
|
},
|
|
87
87
|
"dependencies": {
|
|
88
|
-
"@
|
|
88
|
+
"@case-framework/survey-items": "0.2.0",
|
|
89
|
+
"@case-framework/ui-localization": "0.2.1",
|
|
89
90
|
"class-variance-authority": "^0.7.1",
|
|
90
91
|
"clsx": "^2.1.1",
|
|
91
|
-
"
|
|
92
|
+
"fflate": "^0.8.3",
|
|
93
|
+
"lucide-react": "^1.46.0",
|
|
92
94
|
"motion": "^12.42.2",
|
|
93
|
-
"
|
|
94
|
-
"shiki": "^4.3.0",
|
|
95
|
+
"shiki": "^4.4.3",
|
|
95
96
|
"streamdown": "2.5.0",
|
|
96
|
-
"tailwind-merge": "^3.
|
|
97
|
+
"tailwind-merge": "^3.7.0",
|
|
97
98
|
"tw-animate-css": "^1.4.0",
|
|
98
99
|
"use-stick-to-bottom": "^1.1.6",
|
|
99
|
-
"zod": "^4.
|
|
100
|
-
"@case-framework/ui-localization": "0.2.1"
|
|
100
|
+
"zod": "^4.6.5"
|
|
101
101
|
},
|
|
102
102
|
"devDependencies": {
|
|
103
|
-
"@ai-sdk/react": "^4.0.
|
|
104
|
-
"@
|
|
105
|
-
"@
|
|
106
|
-
"@mastra/
|
|
107
|
-
"@mastra/
|
|
108
|
-
"@mastra/
|
|
103
|
+
"@ai-sdk/react": "^4.0.96",
|
|
104
|
+
"@base-ui/react": "^1.8.0",
|
|
105
|
+
"@case-framework/survey-core": "0.8.0",
|
|
106
|
+
"@mastra/ai-sdk": "^1.10.1",
|
|
107
|
+
"@mastra/core": "^1.64.0",
|
|
108
|
+
"@mastra/memory": "^1.28.2",
|
|
109
|
+
"@mastra/pg": "^1.22.3",
|
|
109
110
|
"@tailwindcss/vite": "^4.3.2",
|
|
110
|
-
"@types/
|
|
111
|
-
"@types/
|
|
112
|
-
"@types/react": "
|
|
113
|
-
"@types/react-test-renderer": "19.
|
|
114
|
-
"ai": "^7.0.
|
|
115
|
-
"
|
|
116
|
-
"react": "~19.
|
|
117
|
-
"react-dom": "~19.
|
|
118
|
-
"react-test-renderer": "19.
|
|
119
|
-
"
|
|
120
|
-
"tsdown": "^0.21.10",
|
|
111
|
+
"@types/node": "^25.9.7",
|
|
112
|
+
"@types/react": "^19.3.0",
|
|
113
|
+
"@types/react-dom": "19.3.0",
|
|
114
|
+
"@types/react-test-renderer": "19.3.0",
|
|
115
|
+
"ai": "^7.0.93",
|
|
116
|
+
"jsdom": "^30.1.0",
|
|
117
|
+
"react": "~19.3.0",
|
|
118
|
+
"react-dom": "~19.3.0",
|
|
119
|
+
"react-test-renderer": "19.3.0",
|
|
120
|
+
"tsdown": "^0.23.0",
|
|
121
121
|
"typescript": "^6.0.3",
|
|
122
|
-
"vite": "^8.0
|
|
123
|
-
"
|
|
122
|
+
"vite": "^8.3.0",
|
|
123
|
+
"vitest": "^5.0.1"
|
|
124
124
|
},
|
|
125
125
|
"peerDependencies": {
|
|
126
|
-
"@ai-sdk/react": "^4.0.
|
|
127
|
-
"@
|
|
128
|
-
"@
|
|
129
|
-
"@mastra/
|
|
130
|
-
"@mastra/
|
|
131
|
-
"
|
|
126
|
+
"@ai-sdk/react": "^4.0.81",
|
|
127
|
+
"@base-ui/react": "^1.8.0",
|
|
128
|
+
"@case-framework/survey-core": "^0.8.0",
|
|
129
|
+
"@mastra/ai-sdk": "^1.9.1",
|
|
130
|
+
"@mastra/core": "^1.61.0",
|
|
131
|
+
"@mastra/memory": "^1.27.0",
|
|
132
|
+
"@mastra/pg": "^1.21.1",
|
|
133
|
+
"ai": "^7.0.78",
|
|
132
134
|
"react": ">=19.2.0",
|
|
133
|
-
"react-dom": ">=19.2.0"
|
|
134
|
-
"@case-framework/survey-core": "^0.6.2"
|
|
135
|
+
"react-dom": ">=19.2.0"
|
|
135
136
|
},
|
|
136
137
|
"peerDependenciesMeta": {
|
|
138
|
+
"@ai-sdk/react": {
|
|
139
|
+
"optional": true
|
|
140
|
+
},
|
|
141
|
+
"@base-ui/react": {
|
|
142
|
+
"optional": true
|
|
143
|
+
},
|
|
137
144
|
"@mastra/ai-sdk": {
|
|
138
145
|
"optional": true
|
|
139
146
|
},
|
|
@@ -146,9 +153,6 @@
|
|
|
146
153
|
"@mastra/pg": {
|
|
147
154
|
"optional": true
|
|
148
155
|
},
|
|
149
|
-
"@ai-sdk/react": {
|
|
150
|
-
"optional": true
|
|
151
|
-
},
|
|
152
156
|
"ai": {
|
|
153
157
|
"optional": true
|
|
154
158
|
},
|
|
@@ -160,15 +164,18 @@
|
|
|
160
164
|
}
|
|
161
165
|
},
|
|
162
166
|
"engines": {
|
|
163
|
-
"node": "
|
|
167
|
+
"node": "^22.22.2 || ^24.15.0 || >=26.0.0"
|
|
164
168
|
},
|
|
165
169
|
"scripts": {
|
|
166
170
|
"build": "tsdown && vite build --config vite.ui.config.ts",
|
|
167
|
-
"test": "
|
|
171
|
+
"test": "pnpm typecheck:tests && vitest run",
|
|
168
172
|
"typecheck": "tsc --noEmit",
|
|
169
173
|
"check:imports": "node scripts/check-protocol-imports.mjs",
|
|
170
174
|
"check:next-host": "node scripts/check-next-host-fixture.mjs",
|
|
171
|
-
"check": "pnpm typecheck && pnpm build && pnpm check:imports && pnpm test",
|
|
172
|
-
"check:release": "pnpm check && pnpm check:next-host"
|
|
175
|
+
"check": "pnpm typecheck && pnpm build && pnpm check:imports && pnpm test && pnpm test:integration",
|
|
176
|
+
"check:release": "pnpm check && pnpm check:next-host",
|
|
177
|
+
"typecheck:tests": "tsc --noEmit -p tsconfig.test.json",
|
|
178
|
+
"test:integration": "node --test tests/integration/runtime.test.mjs",
|
|
179
|
+
"test:postgres": "node --test tests/integration/postgres.test.mjs"
|
|
173
180
|
}
|
|
174
181
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"authoring-references-CW38pYzK.mjs","names":[],"sources":["../../../node_modules/.pnpm/tsdown@0.21.10_synckit@0.11.13_typescript@6.0.3/node_modules/tsdown/esm-shims.js","../src/server/authoring-references.ts"],"sourcesContent":["// Shim globals in esm bundle\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nconst getFilename = () => fileURLToPath(import.meta.url)\nconst getDirname = () => path.dirname(getFilename())\n\nexport const __dirname = /* @__PURE__ */ getDirname()\nexport const __filename = /* @__PURE__ */ getFilename()\n","import { readFileSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\n\nconst loadReference = (fileName: string) =>\n readFileSync(resolve(__dirname, \"references\", fileName), \"utf8\").trim();\n\nexport const surveyAuthoringReferenceTopics = [\n \"core-rules\",\n \"survey-data-model\",\n \"source-material-surveys\",\n \"localization\",\n \"rich-text-content\",\n \"item-types\",\n \"embedded-forms\",\n \"expressions\",\n \"assistant-operations\",\n \"fair-by-design\",\n \"survey-quality\",\n] as const;\n\nexport type SurveyAuthoringReferenceTopic = (typeof surveyAuthoringReferenceTopics)[number];\n\ntype SurveyAuthoringReferenceEntry = {\n title: string;\n content: string;\n loadWhen: string;\n};\n\nconst ITEM_TYPE_SECTION_HEADINGS: Readonly<Record<string, string>> = {\n group: \"group\",\n \"page-break\": \"page-break\",\n infoItem: \"infoItem\",\n choiceItem: \"choiceItem\",\n formItem: \"formItem\",\n};\n\nexport const builtInSurveyAuthoringItemTypes = Object.freeze(\n Object.keys(ITEM_TYPE_SECTION_HEADINGS),\n);\n\nconst extractLevelTwoSection = (markdown: string, heading: string): string | undefined => {\n const lines = markdown.split(\"\\n\");\n const sectionStart = lines.findIndex((line) => line.trim() === `## ${heading}`);\n if (sectionStart < 0) {\n return undefined;\n }\n\n const nextSectionOffset = lines\n .slice(sectionStart + 1)\n .findIndex((line) => line.startsWith(\"## \"));\n const sectionEnd = nextSectionOffset < 0 ? lines.length : sectionStart + 1 + nextSectionOffset;\n\n return lines.slice(sectionStart, sectionEnd).join(\"\\n\").trim();\n};\n\nexport const surveyAuthoringReferences = {\n \"core-rules\": {\n title: \"Core authoring rules\",\n content: loadReference(\"core-rules.md\"),\n loadWhen:\n \"Load when the task depends on canonical tool choice, validation/apply semantics, identifier handling, or another cross-cutting authoring rule that the current turn has not already established.\",\n },\n \"survey-data-model\": {\n title: \"Survey data model\",\n content: loadReference(\"survey-data-model.md\"),\n loadWhen:\n \"Load before reasoning about raw survey storage, hierarchy, ids, translation maps, assets, template values, or any direct survey-json-patch path whose exact location has not already been inspected and documented in the current turn.\",\n },\n \"source-material-surveys\": {\n title: \"Source-material survey implementation\",\n content: loadReference(\"source-material-surveys.md\"),\n loadWhen:\n \"Load before implementing or adapting a questionnaire, document, image, or other supplied source material so completeness, respondent-input mapping, language, and digital adaptation rules are available before the first mutation.\",\n },\n localization: {\n title: \"Survey localization\",\n content: loadReference(\"localization.md\"),\n loadWhen:\n \"Load before adding, removing, translating, or assessing a survey locale, including requests for localization completeness or locale lifecycle changes.\",\n },\n \"rich-text-content\": {\n title: \"Rich text content\",\n content: loadReference(\"rich-text-content.md\"),\n loadWhen:\n \"Load before authoring or changing meaningful formatting, links, images, headings, lists, info boxes, separators, footnotes, or existing structured rich-text content; do not load it for ordinary unformatted plain text.\",\n },\n \"item-types\": {\n title: \"Item types\",\n content: loadReference(\"item-types.md\"),\n loadWhen:\n \"Load with itemType before creating or changing an item when its configuration, response behavior, or content surfaces are not already fully specified by the current capability and focused operation contract; omit itemType only for a genuine cross-type comparison.\",\n },\n \"embedded-forms\": {\n title: \"Choice option embedded forms\",\n content: loadReference(\"embedded-forms.md\"),\n loadWhen:\n 'Load before creating or changing a choice-option follow-up or embedded form, including \"Other, specify\", option-specific inputs, embedded field groups, or embedded-form layout and translations.',\n },\n expressions: {\n title: \"Expressions\",\n content: loadReference(\"expressions.md\"),\n loadWhen:\n \"Load before the first survey_expression prepare call for expression, condition, validation-expression, prefill, or template-value work unless the exact relevant JsonExpression and mutation shapes were already supplied by a current-turn authoring reference. survey_expression context supplies currently available runtime references and value types, but it does not replace the grammar reference. Expressions are not assumed to be survey-response-only; use the references and variable sources supported by the current runtime and reference.\",\n },\n \"assistant-operations\": {\n title: \"Assistant operations\",\n content: loadReference(\"assistant-operations.md\"),\n loadWhen:\n \"Load with operationKind before the first survey_change call when the exact canonical fields of that operation are not already present in the current turn; add itemType when item-specific configuration or capability guidance is needed. Prefer compact detail and use full only for protocol debugging.\",\n },\n \"fair-by-design\": {\n title: \"FAIR-by-design survey authoring\",\n content: loadReference(\"fair-by-design.md\"),\n loadWhen:\n \"Load before advising or editing when FAIR, interoperability, harmonization, cross-study reuse, stable coding, value sets, missingness semantics, metadata, provenance, versioning, standard instruments, controlled vocabularies, or machine-readable export is material; do not impose it on ordinary authoring.\",\n },\n \"survey-quality\": {\n title: \"Survey quality review\",\n content: loadReference(\"survey-quality.md\"),\n loadWhen:\n \"Load before a substantive questionnaire-quality critique, wording or flow review, respondent-burden assessment, or recommendations about measurement quality; it is not required for a purely technical defect check.\",\n },\n} as const satisfies Record<SurveyAuthoringReferenceTopic, SurveyAuthoringReferenceEntry>;\n\nexport const formatSurveyAuthoringReferenceRoutingInstructions = (): string =>\n [\n \"Authoring-reference routing rules:\",\n \"Load a relevant focused reference before the first affected mutation or substantive advice, not after guessing a payload or learning through validator failures. Do not reload a reference when its exact relevant contract is already present in the current turn. References define stable authoring conventions and payload grammar; current survey state and currently available runtime references still come from inspection and context tools.\",\n \"For installed capability-specific references, use the capability manifest's advertised reference topics. Load a relevant topic with itemType before changing unfamiliar capability configuration or behavior.\",\n ...surveyAuthoringReferenceTopics.map(\n (topic) => `- ${topic}: ${surveyAuthoringReferences[topic].loadWhen}`,\n ),\n ].join(\"\\n\");\n\nexport const getBuiltInItemTypeAuthoringReference = (\n itemType: string,\n): { title: string; content: string } | undefined => {\n const heading = ITEM_TYPE_SECTION_HEADINGS[itemType];\n if (!heading) {\n return undefined;\n }\n\n const content = extractLevelTwoSection(surveyAuthoringReferences[\"item-types\"].content, heading);\n return content ? { title: `${heading} item type`, content } : undefined;\n};\n"],"x_google_ignoreList":[0],"mappings":";;;;AAIA,MAAM,oBAAoB,cAAc,OAAO,KAAK,IAAI;AACxD,MAAM,mBAAmB,KAAK,QAAQ,aAAa,CAAC;AAEpD,MAAa,YAA4B,4BAAY;;;ACJrD,MAAM,iBAAiB,aACrB,aAAa,QAAQ,WAAW,cAAc,SAAS,EAAE,OAAO,CAAC,MAAM;AAEzE,MAAa,iCAAiC;CAC5C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAUD,MAAM,6BAA+D;CACnE,OAAO;CACP,cAAc;CACd,UAAU;CACV,YAAY;CACZ,UAAU;CACX;AAED,MAAa,kCAAkC,OAAO,OACpD,OAAO,KAAK,2BAA2B,CACxC;AAED,MAAM,0BAA0B,UAAkB,YAAwC;CACxF,MAAM,QAAQ,SAAS,MAAM,KAAK;CAClC,MAAM,eAAe,MAAM,WAAW,SAAS,KAAK,MAAM,KAAK,MAAM,UAAU;AAC/E,KAAI,eAAe,EACjB;CAGF,MAAM,oBAAoB,MACvB,MAAM,eAAe,EAAE,CACvB,WAAW,SAAS,KAAK,WAAW,MAAM,CAAC;CAC9C,MAAM,aAAa,oBAAoB,IAAI,MAAM,SAAS,eAAe,IAAI;AAE7E,QAAO,MAAM,MAAM,cAAc,WAAW,CAAC,KAAK,KAAK,CAAC,MAAM;;AAGhE,MAAa,4BAA4B;CACvC,cAAc;EACZ,OAAO;EACP,SAAS,cAAc,gBAAgB;EACvC,UACE;EACH;CACD,qBAAqB;EACnB,OAAO;EACP,SAAS,cAAc,uBAAuB;EAC9C,UACE;EACH;CACD,2BAA2B;EACzB,OAAO;EACP,SAAS,cAAc,6BAA6B;EACpD,UACE;EACH;CACD,cAAc;EACZ,OAAO;EACP,SAAS,cAAc,kBAAkB;EACzC,UACE;EACH;CACD,qBAAqB;EACnB,OAAO;EACP,SAAS,cAAc,uBAAuB;EAC9C,UACE;EACH;CACD,cAAc;EACZ,OAAO;EACP,SAAS,cAAc,gBAAgB;EACvC,UACE;EACH;CACD,kBAAkB;EAChB,OAAO;EACP,SAAS,cAAc,oBAAoB;EAC3C,UACE;EACH;CACD,aAAa;EACX,OAAO;EACP,SAAS,cAAc,iBAAiB;EACxC,UACE;EACH;CACD,wBAAwB;EACtB,OAAO;EACP,SAAS,cAAc,0BAA0B;EACjD,UACE;EACH;CACD,kBAAkB;EAChB,OAAO;EACP,SAAS,cAAc,oBAAoB;EAC3C,UACE;EACH;CACD,kBAAkB;EAChB,OAAO;EACP,SAAS,cAAc,oBAAoB;EAC3C,UACE;EACH;CACF;AAED,MAAa,0DACX;CACE;CACA;CACA;CACA,GAAG,+BAA+B,KAC/B,UAAU,KAAK,MAAM,IAAI,0BAA0B,OAAO,WAC5D;CACF,CAAC,KAAK,KAAK;AAEd,MAAa,wCACX,aACmD;CACnD,MAAM,UAAU,2BAA2B;AAC3C,KAAI,CAAC,QACH;CAGF,MAAM,UAAU,uBAAuB,0BAA0B,cAAc,SAAS,QAAQ;AAChG,QAAO,UAAU;EAAE,OAAO,GAAG,QAAQ;EAAa;EAAS,GAAG,KAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities-DVTfogjv.d.mts","names":[],"sources":["../src/protocol/capabilities.ts"],"mappings":";;;cAGa,6BAAA,EAA6B,CAAA,CAAA,OAAA;;;;;cAM7B,6BAAA,EAA6B,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;cAS7B,2BAAA,EAA2B,CAAA,CAAA,SAAA;;;;cAK3B,4BAAA,EAA4B,CAAA,CAAA,SAAA;;;;cAS5B,+BAAA,EAA+B,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAe/B,uCAAA,EAAuC,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAKxC,uBAAA,GAA0B,CAAA,CAAE,KAAA,QAAa,6BAAA;AAAA,KACzC,uBAAA,GAA0B,CAAA,CAAE,KAAA,QAAa,6BAAA;AAAA,KACzC,qBAAA,GAAwB,CAAA,CAAE,KAAA,QAAa,2BAAA;AAAA,KACvC,sBAAA,GAAyB,CAAA,CAAE,KAAA,QAAa,4BAAA;AAAA,KAExC,yBAAA,GAA4B,CAAA,CAAE,KAAA,QAAa,+BAAA;AAAA,KAC3C,iCAAA,GAAoC,CAAA,CAAE,KAAA,QACzC,uCAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities-default.mjs","names":[],"sources":["../src/capabilities/default.ts"],"sourcesContent":["import type { AssistantContentSurface, AssistantItemTypeManifest } from \"../protocol\";\nimport { ValueType, type RawSurveyItem } from \"@case-framework/survey-core\";\nimport {\n createSurveyAssistantCapabilities,\n type AssistantItemCapabilityAdapter,\n} from \"../engine/capabilities\";\nimport { isValidSimpleFormConfig, normalizeFormAuthoringConfig } from \"../engine/form-authoring\";\n\nconst COMMON_OPERATIONS = [\n \"create-item\",\n \"update-item-key\",\n \"update-item-label\",\n \"update-item-color\",\n \"update-item-translation\",\n \"update-placed-image\",\n \"patch-item-config\",\n \"remove-item\",\n \"move-item\",\n \"survey-json-patch\",\n] satisfies AssistantItemTypeManifest[\"supportedOperations\"];\n\nconst QUESTION_CONTENT_SURFACES: AssistantContentSurface[] = [\n {\n key: \"title\",\n role: \"primary\",\n format: \"rich\",\n requiredOnCreate: true,\n aliases: [\"content\", \"label\", \"prompt\", \"question\", \"text\"],\n },\n {\n key: \"subtitle\",\n role: \"secondary\",\n format: \"rich\",\n aliases: [\"subheading\", \"subtext\"],\n },\n {\n key: \"topContent\",\n role: \"secondary\",\n format: \"rich\",\n aliases: [\"preContent\", \"preResponse\"],\n },\n {\n key: \"bottomContent\",\n role: \"secondary\",\n format: \"rich\",\n aliases: [\"postContent\", \"postResponse\"],\n },\n {\n key: \"cardFooter\",\n role: \"secondary\",\n format: \"rich\",\n aliases: [\"footer\"],\n },\n];\n\nconst FIELD_CONTENT_SURFACES: AssistantContentSurface[] = [\n \"label\",\n \"description\",\n \"error\",\n \"placeholder\",\n \"unit\",\n \"checkedLabel\",\n \"uncheckedLabel\",\n].map((key) => ({\n key: `fields.<fieldId>.${key}`,\n role: key === \"error\" ? \"validation\" : \"field\",\n format: \"rich\",\n pattern: true,\n}));\n\nconst createManifest = (\n manifest: Omit<AssistantItemTypeManifest, \"capabilityVersion\">,\n): AssistantItemTypeManifest => ({ capabilityVersion: \"1\", ...manifest });\n\nconst STRUCTURE_REFERENCE = {\n topic: \"item-types\",\n markdown:\n \"Groups are containers. Create a group without child ids, then create or move children through separate operations. Page breaks are standalone structural boundaries.\",\n};\nconst QUESTION_REFERENCE = {\n topic: \"item-types\",\n markdown:\n \"Question titles and supporting text are translations. Configuration stores response behavior; respondent-visible option and field labels use the declared dynamic content surfaces.\",\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === \"object\" && value !== null && !Array.isArray(value);\n\nconst withMaterializedConfig = (\n item: RawSurveyItem,\n defaults: Record<string, unknown>,\n): RawSurveyItem => ({\n ...item,\n config: {\n ...defaults,\n ...(isRecord(item.config) ? item.config : {}),\n },\n});\n\nconst materializeGroupCreate = (item: RawSurveyItem): RawSurveyItem =>\n withMaterializedConfig(item, { items: [], shuffleItems: false });\n\nconst materializeEmptyConfigCreate = (item: RawSurveyItem): RawSurveyItem =>\n withMaterializedConfig(item, {});\n\nconst materializeChoiceCreate = (item: RawSurveyItem): RawSurveyItem =>\n normalizeEmbeddedFormAuthoringModes({\n ...item,\n config: {\n ...(isRecord(item.config) ? item.config : {}),\n id: item.id,\n maxSelection:\n isRecord(item.config) && \"maxSelection\" in item.config ? item.config.maxSelection : 1,\n shuffleOptions:\n isRecord(item.config) && \"shuffleOptions\" in item.config\n ? item.config.shuffleOptions\n : false,\n options:\n isRecord(item.config) && Array.isArray(item.config.options) ? item.config.options : [],\n },\n });\n\nconst materializeFormCreate = (item: RawSurveyItem): RawSurveyItem => ({\n ...item,\n config: normalizeFormAuthoringConfig({\n fieldGroups: [],\n ...(isRecord(item.config) ? item.config : {}),\n id: item.id,\n }),\n});\n\nconst getFieldValueType = (field: Record<string, unknown>): ValueType => {\n switch (field.type) {\n case \"number\":\n case \"slider\":\n return ValueType.number;\n case \"datepicker\":\n return ValueType.date;\n case \"switch\":\n return ValueType.boolean;\n default:\n return ValueType.string;\n }\n};\n\nconst deriveFormResponseSlots = (config: unknown, prefix?: string): Record<string, ValueType> => {\n if (!isRecord(config) || !Array.isArray(config.fieldGroups)) {\n return {};\n }\n\n const slots: Record<string, ValueType> = {};\n for (const group of config.fieldGroups.filter(isRecord)) {\n if (!Array.isArray(group.fields)) continue;\n for (const field of group.fields.filter(isRecord)) {\n if (typeof field.key !== \"string\" || field.key.length === 0) continue;\n slots[prefix ? `${prefix}.${field.key}` : field.key] = getFieldValueType(field);\n }\n }\n return slots;\n};\n\nconst deriveChoiceResponseSlots = (item: RawSurveyItem): Record<string, ValueType> => {\n const config = isRecord(item.config) ? item.config : {};\n const responseId = typeof config.id === \"string\" && config.id.length > 0 ? config.id : item.id;\n const slots: Record<string, ValueType> = {\n [responseId]: config.maxSelection === 1 ? ValueType.reference : ValueType.referenceArray,\n };\n\n if (Array.isArray(config.options)) {\n for (const option of config.options.filter(isRecord)) {\n if (typeof option.id !== \"string\" || !option.embeddedForm) continue;\n Object.assign(slots, deriveFormResponseSlots(option.embeddedForm, `embedded.${option.id}`));\n }\n }\n return slots;\n};\n\nconst normalizeEmbeddedFormAuthoringModes = (item: RawSurveyItem): RawSurveyItem => {\n if (!isRecord(item.config) || !Array.isArray(item.config.options)) {\n return item;\n }\n\n return {\n ...item,\n config: {\n ...item.config,\n options: item.config.options.map((option) => {\n if (!isRecord(option) || !isRecord(option.embeddedForm)) {\n return option;\n }\n return {\n ...option,\n embeddedForm: normalizeFormAuthoringConfig(option.embeddedForm),\n };\n }),\n },\n };\n};\n\nconst getSimpleFormValidationIssues = (config: unknown, subject: string) =>\n isValidSimpleFormConfig(config)\n ? []\n : [\n {\n severity: \"error\" as const,\n code: \"invalid-simple-form-structure\",\n message: `${subject} with authoringMode \"simple\" must contain one single-column field group without group display behavior and exactly one supported field whose controller type matches the field type. Use authoringMode \"custom\" for any other structure.`,\n },\n ];\n\nexport const rootItemAssistantCapability: AssistantItemCapabilityAdapter = {\n manifest: createManifest({\n itemType: \"root\",\n displayName: \"Survey root\",\n description: \"The existing root container. A second root cannot be created.\",\n create: \"unsupported\",\n supportedOperations: [\"update-item-key\", \"update-item-label\", \"update-item-color\"],\n contentSurfaces: [],\n referenceTopics: [\"survey-data-model\", \"item-types\"],\n }),\n};\n\nexport const groupItemAssistantCapability: AssistantItemCapabilityAdapter = {\n manifest: createManifest({\n itemType: \"group\",\n displayName: \"Group\",\n description: \"A structural container whose children are created as separate items.\",\n defaultItemKeyPrefix: \"group\",\n create: \"deterministic\",\n supportedOperations: [...COMMON_OPERATIONS, \"reorder-items\"],\n contentSurfaces: [\n {\n key: \"title\",\n role: \"primary\",\n format: \"rich\",\n aliases: [\"content\", \"label\", \"name\", \"text\"],\n },\n ],\n referenceTopics: [\"survey-data-model\", \"item-types\"],\n }),\n references: [STRUCTURE_REFERENCE],\n normalizeCreate: materializeGroupCreate,\n};\n\nexport const pageBreakItemAssistantCapability: AssistantItemCapabilityAdapter = {\n manifest: createManifest({\n itemType: \"page-break\",\n displayName: \"Page break\",\n description: \"A structural page boundary.\",\n defaultItemKeyPrefix: \"page\",\n create: \"deterministic\",\n supportedOperations: COMMON_OPERATIONS,\n contentSurfaces: [\n {\n key: \"title\",\n role: \"primary\",\n format: \"rich\",\n aliases: [\"content\", \"label\", \"name\", \"text\"],\n },\n ],\n referenceTopics: [\"survey-data-model\", \"item-types\"],\n }),\n references: [STRUCTURE_REFERENCE],\n normalizeCreate: materializeEmptyConfigCreate,\n};\n\nexport const infoItemAssistantCapability: AssistantItemCapabilityAdapter = {\n manifest: createManifest({\n itemType: \"infoItem\",\n displayName: \"Info\",\n description: \"Display-only formatted content without a response slot.\",\n defaultItemKeyPrefix: \"info\",\n create: \"deterministic\",\n supportedOperations: COMMON_OPERATIONS,\n contentSurfaces: [\n {\n key: \"content\",\n role: \"primary\",\n format: \"rich\",\n requiredOnCreate: true,\n aliases: [\"body\", \"label\", \"prompt\", \"question\", \"text\", \"title\"],\n },\n ],\n referenceTopics: [\"item-types\", \"rich-text-content\"],\n }),\n references: [\n {\n topic: \"rich-text-content\",\n markdown:\n \"Info content uses the rich `content` surface. Markdown strings are not parsed; send structured rich text when formatting matters.\",\n },\n ],\n normalizeCreate: materializeEmptyConfigCreate,\n};\n\nexport const choiceItemAssistantCapability: AssistantItemCapabilityAdapter = {\n manifest: createManifest({\n itemType: \"choiceItem\",\n displayName: \"Choice question\",\n description: \"A single- or multiple-choice question with optional embedded forms.\",\n defaultItemKeyPrefix: \"choice\",\n create: \"deterministic\",\n supportedOperations: [\n ...COMMON_OPERATIONS,\n \"add-choice-option\",\n \"update-choice-option-label\",\n \"remove-choice-option\",\n \"reorder-choice-options\",\n \"upsert-form-field-group\",\n \"remove-form-field-group\",\n \"reorder-form-field-groups\",\n \"upsert-form-field\",\n \"remove-form-field\",\n \"move-form-field\",\n \"set-embedded-form\",\n \"remove-embedded-form\",\n ],\n contentSurfaces: [\n ...QUESTION_CONTENT_SURFACES,\n {\n key: \"options.<optionId>.label\",\n role: \"option\",\n format: \"rich\",\n pattern: true,\n },\n ...FIELD_CONTENT_SURFACES.map((surface) => ({\n ...surface,\n key: `embeddedForms.<optionId>.${surface.key}`,\n })),\n {\n key: \"embeddedForms.<optionId>.fields.<fieldId>.options.<optionId>.label\",\n role: \"option\",\n format: \"rich\",\n pattern: true,\n },\n {\n key: \"embeddedForms.<optionId>.fields.<fieldId>.validations.<validationId>.message\",\n role: \"validation\",\n format: \"rich\",\n pattern: true,\n },\n {\n key: \"embeddedForms.<optionId>.fieldGroups.<groupId>.title\",\n role: \"field\",\n format: \"rich\",\n pattern: true,\n },\n {\n key: \"embeddedForms.<optionId>.fieldGroups.<groupId>.description\",\n role: \"field\",\n format: \"rich\",\n pattern: true,\n },\n ],\n responseSlots: [{ key: \"<responseId>\", valueType: \"reference|referenceArray\" }],\n referenceTopics: [\n \"item-types\",\n \"embedded-forms\",\n \"localization\",\n \"expressions\",\n \"rich-text-content\",\n ],\n authoring: {\n compactHint:\n \"presets choice.single=maxSelection 1; choice.multiple=maxSelection null; embedded one supported field=simple; embedded blank/structured=custom\",\n configSummary:\n \"Config stores id, maxSelection, shuffleOptions, and options. Put every initial option and inline embeddedForm in create-item config; choice option operations edit only choice items already present in the live snapshot. Default an eligible one-field embedded form to authoringMode simple; use custom for blank or structured follow-ups. Embedded field content uses embeddedForms.<choiceOption.id> (case-sensitive), never the option key or embeddedForm id. Form layout values are column counts 1-4; one column makes a lone field full width.\",\n },\n }),\n references: [QUESTION_REFERENCE],\n normalizeCreate: materializeChoiceCreate,\n validateItem: (item) => {\n if (!isRecord(item.config) || !Array.isArray(item.config.options)) {\n return [];\n }\n return item.config.options.flatMap((option) =>\n isRecord(option) && isRecord(option.embeddedForm)\n ? getSimpleFormValidationIssues(option.embeddedForm, \"An embedded form\")\n : [],\n );\n },\n deriveResponseSlots: deriveChoiceResponseSlots,\n};\n\nexport const formItemAssistantCapability: AssistantItemCapabilityAdapter = {\n manifest: createManifest({\n itemType: \"formItem\",\n displayName: \"Form\",\n description: \"A form with groups, typed fields, validations, and select options.\",\n defaultItemKeyPrefix: \"form\",\n create: \"deterministic\",\n supportedOperations: [\n ...COMMON_OPERATIONS,\n \"upsert-form-field-group\",\n \"remove-form-field-group\",\n \"reorder-form-field-groups\",\n \"upsert-form-field\",\n \"remove-form-field\",\n \"move-form-field\",\n ],\n contentSurfaces: [\n ...QUESTION_CONTENT_SURFACES,\n {\n key: \"fieldGroups.<groupId>.title\",\n role: \"field\",\n format: \"rich\",\n pattern: true,\n },\n {\n key: \"fieldGroups.<groupId>.description\",\n role: \"field\",\n format: \"rich\",\n pattern: true,\n },\n ...FIELD_CONTENT_SURFACES,\n {\n key: \"fields.<fieldId>.options.<optionId>.label\",\n role: \"option\",\n format: \"rich\",\n pattern: true,\n },\n {\n key: \"fields.<fieldId>.validations.<validationId>.message\",\n role: \"validation\",\n format: \"rich\",\n pattern: true,\n },\n ],\n responseSlots: [{ key: \"<fieldKey>\", valueType: \"field-dependent\" }],\n referenceTopics: [\"item-types\", \"localization\", \"expressions\", \"rich-text-content\"],\n authoring: {\n compactHint:\n \"presets form.text=input|form.long-text=textarea|form.number=number|form.slider=slider|form.dropdown=select|form.date=datepicker|form.switch=switch; form.blank=custom\",\n configSummary:\n 'Config stores authoringMode and fieldGroups with typed fields. Use authoringMode \"simple\" only for exactly one internal group with exactly one field: text=input, long text=textarea, number=number, slider=slider, dropdown=select, date=datepicker, switch=switch. Use \"custom\" for blank or multi-field forms. Structural changes are a one-way transition to custom. The controller type must match the field type; full date uses datepicker/year-month-day. Layout values are column counts 1-4, not spans.',\n },\n }),\n references: [QUESTION_REFERENCE],\n normalizeCreate: materializeFormCreate,\n validateItem: (item) => getSimpleFormValidationIssues(item.config, \"A formItem\"),\n deriveResponseSlots: (item) => deriveFormResponseSlots(item.config),\n};\n\nexport const defaultSurveyAssistantCapabilities = [\n rootItemAssistantCapability,\n groupItemAssistantCapability,\n pageBreakItemAssistantCapability,\n infoItemAssistantCapability,\n choiceItemAssistantCapability,\n formItemAssistantCapability,\n] as const;\n\nexport const defaultSurveyAssistantCapabilitySet = createSurveyAssistantCapabilities(\n defaultSurveyAssistantCapabilities,\n);\n\nexport const getDefaultSurveyAssistantCapability = (\n itemType: string,\n): AssistantItemCapabilityAdapter | undefined =>\n defaultSurveyAssistantCapabilitySet.byItemType.get(itemType);\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants-BMGTgfjv.d.mts","names":[],"sources":["../src/server/request-context.ts","../src/server/constants.ts"],"mappings":";;;;;;;;UA2BiB,gCAAA;EACf,IAAA;AAAA;AAAA,UAGe,8BAAA;EACf,SAAA;EACA,UAAA;EACA,QAAA;EACA,QAAA;AAAA;AAAA,UAGe,6BAAA;EACf,EAAA;EACA,KAAA,WAAgB,sBAAA;EAChB,YAAA;EACA,eAAA,GAAkB,qBAAA;AAAA;AAAA,KAGR,iCAAA;EACN,MAAA;AAAA;EAEA,MAAA;EACA,oBAAA;EACA,mBAAA;AAAA;EAGA,MAAA;EACA,oBAAA;EACA,mBAAA;EACA,mBAAA;AAAA;EAGA,MAAA;EACA,oBAAA;EACA,mBAAA;EACA,gBAAA;EACA,eAAA,EAAiB,KAAA;EACjB,mBAAA;AAAA;AAAA,UAGW,6BAAA;EACf,UAAA,EAAY,gCAAA;EACZ,MAAA;EACA,SAAA,EAAW,eAAA;EACX,QAAA,EAAU,8BAAA;EACV,uBAAA;EACA,kBAAA;EACA,WAAA;EACA,kBAAA;EACA,gBAAA;EACA,kBAAA,GAAqB,iCAAA;EACrB,aAAA,GAAgB,4BAAA;EAChB,gBAAA,GAAmB,sBAAA;EACnB,gBAAA,GAAmB,8BAAA;EACnB,gBAAA,GAAmB,+BAAA;EACnB,cAAA,GAAiB,6BAAA;EACjB,oBAAA,GAAuB,2BAAA;AAAA;AAAA,cAGZ,4BAAA,GAAgC,KAAA,cAAiB,sBAAA;AAAA,cAQjD,0CAAA,GACX,KAAA,cACC,qBAAA;AAAA,cAQU,wCAAA,GACX,KAAA,cACC,2BAAA;AAAA,cAQU,uCAAA;EAA2C,OAAA;EAAA;AAAA;EAItD,OAAA,EAAS,sBAAA;EACT,QAAA,EAAU,qBAAA;AAAA,MACR,iCAAA;AAAA,cAqDS,kCAAA;EAAsC,SAAA;EAAA,QAAA;EAAA,QAAA;EAAA,sBAAA;EAAA,mBAAA;EAAA,gBAAA;EAAA,gBAAA;EAAA,cAAA;EAAA;AAAA;EAWjD,SAAA,EAAW,eAAA;EACX,QAAA,EAAU,8BAAA;EACV,QAAA,EAAU,sBAAA;EACV,sBAAA,GAAyB,qBAAA;EACzB,mBAAA,GAAsB,4BAAA;EACtB,gBAAA,GAAmB,+BAAA;EACnB,gBAAA,GAAmB,8BAAA;EACnB,cAAA,GAAiB,6BAAA;EACjB,oBAAA,GAAuB,2BAAA;AAAA,MACrB,cAAA,CAAe,6BAAA;AAAA,cAuDN,+BAAA,GACX,cAAA,EAAgB,cAAA,CAAe,6BAAA;;;;;;cCzPpB,yBAAA;AAAA,cACA,8BAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"controller-proxy-DMTqer6T.mjs","names":[],"sources":["../src/react/client-error.ts","../src/react/thread-launcher.ts","../src/react/task-client.ts","../src/react/controller-proxy.ts"],"sourcesContent":["import { parseSurveyAssistantError, type SurveyAssistantErrorCode } from \"../protocol\";\n\nexport class SurveyAssistantClientError extends Error {\n readonly code: SurveyAssistantErrorCode;\n readonly retryable: boolean;\n\n constructor(code: SurveyAssistantErrorCode, message: string, retryable = false) {\n super(message);\n this.name = \"SurveyAssistantClientError\";\n this.code = code;\n this.retryable = retryable;\n }\n}\n\nexport const readSurveyAssistantJson = async (\n response: Response,\n fallback = \"The assistant request could not be completed.\",\n) => {\n if (!response.ok) {\n const responseText = await response.text().catch(() => \"\");\n let body: unknown;\n try {\n body = responseText ? JSON.parse(responseText) : undefined;\n } catch {\n body = undefined;\n }\n const detail =\n typeof body === \"object\" &&\n body !== null &&\n \"error\" in body &&\n typeof body.error === \"string\"\n ? body.error\n : responseText.trim() || fallback;\n const parsed = parseSurveyAssistantError(\n typeof body === \"object\" &&\n body !== null &&\n \"code\" in body &&\n typeof body.code === \"string\"\n ? { code: body.code, detail }\n : detail,\n );\n const explicitRetryable =\n typeof body === \"object\" &&\n body !== null &&\n \"retryable\" in body &&\n typeof body.retryable === \"boolean\"\n ? body.retryable\n : undefined;\n const retryable =\n explicitRetryable ??\n (parsed.code === \"rate_limited\" ||\n ((parsed.code === \"request_failed\" || parsed.code === \"attachment_unavailable\") &&\n response.status >= 500));\n throw new SurveyAssistantClientError(parsed.code, parsed.detail ?? detail, retryable);\n }\n return response.json().catch(() => ({}));\n};\n","import type {\n SurveyAssistantSnapshot,\n SurveyAssistantThread,\n SurveyEditorUIContext,\n} from \"../protocol\";\nimport type { FileUIPart } from \"ai\";\n\nexport type SurveyAssistantLaunchUIContext = Partial<Omit<SurveyEditorUIContext, \"history\">>;\n\nexport interface SurveyAssistantThreadLaunch {\n /** User-visible prompt submitted as the first message in the new thread. */\n prompt: string;\n files?: FileUIPart[];\n /** Optional model used for the opening assistant turn. */\n modelId?: string;\n /** Optional manual thread title. The prompt-derived automatic title is used by default. */\n title?: string;\n /** Turn-local editor context merged into the snapshot captured when the prompt is submitted. */\n uiContext?: SurveyAssistantLaunchUIContext;\n}\n\nexport interface SurveyAssistantThreadLauncher {\n /**\n * Creates a new thread and submits its first prompt when a connected panel is ready.\n * Calls made before the panel mounts are queued.\n */\n startThread(input: SurveyAssistantThreadLaunch): Promise<SurveyAssistantThread>;\n}\n\ntype LaunchHandler = (input: SurveyAssistantThreadLaunch) => Promise<SurveyAssistantThread>;\n\ninterface PendingLaunch {\n input: SurveyAssistantThreadLaunch;\n reject(error: unknown): void;\n resolve(thread: SurveyAssistantThread): void;\n}\n\ninterface LauncherState {\n handler: LaunchHandler | null;\n pending: PendingLaunch[];\n draining: boolean;\n}\n\nconst launcherStates = new WeakMap<SurveyAssistantThreadLauncher, LauncherState>();\n\nexport const applySurveyAssistantLaunchUIContext = (\n snapshot: SurveyAssistantSnapshot | null,\n uiContext: SurveyAssistantLaunchUIContext | undefined,\n): SurveyAssistantSnapshot | null =>\n snapshot && uiContext\n ? {\n ...snapshot,\n ui: {\n ...snapshot.ui,\n ...uiContext,\n },\n }\n : snapshot;\n\nconst getLauncherState = (launcher: SurveyAssistantThreadLauncher) => {\n const state = launcherStates.get(launcher);\n if (!state) {\n throw new Error(\n \"The survey assistant thread launcher was not created by createSurveyAssistantThreadLauncher.\",\n );\n }\n return state;\n};\n\nconst drainPendingLaunches = async (state: LauncherState) => {\n if (state.draining) return;\n state.draining = true;\n try {\n while (state.handler && state.pending.length > 0) {\n const pending = state.pending.shift();\n if (!pending) continue;\n try {\n pending.resolve(await state.handler(pending.input));\n } catch (error) {\n pending.reject(error);\n }\n }\n } finally {\n state.draining = false;\n }\n};\n\nexport const createSurveyAssistantThreadLauncher = (): SurveyAssistantThreadLauncher => {\n const state: LauncherState = { handler: null, pending: [], draining: false };\n const launcher: SurveyAssistantThreadLauncher = {\n startThread(input) {\n const prompt = input.prompt.trim();\n if (!prompt && (input.files?.length ?? 0) === 0) {\n return Promise.reject(new Error(\"A survey assistant prompt or attachment is required.\"));\n }\n\n return new Promise((resolve, reject) => {\n state.pending.push({\n input: {\n ...input,\n prompt,\n ...(input.files ? { files: [...input.files] } : {}),\n ...(input.modelId ? { modelId: input.modelId.trim() } : {}),\n ...(input.title ? { title: input.title.trim() } : {}),\n },\n reject,\n resolve,\n });\n void drainPendingLaunches(state);\n });\n },\n };\n launcherStates.set(launcher, state);\n return launcher;\n};\n\nexport const connectSurveyAssistantThreadLauncher = (\n launcher: SurveyAssistantThreadLauncher,\n handler: LaunchHandler,\n) => {\n const state = getLauncherState(launcher);\n if (state.handler && state.handler !== handler) {\n throw new Error(\"A survey assistant thread launcher can only control one mounted panel.\");\n }\n state.handler = handler;\n void drainPendingLaunches(state);\n\n return () => {\n if (state.handler === handler) state.handler = null;\n };\n};\n","import {\n surveyAssistantSuggestItemKeyResultSchema,\n surveyAssistantSuggestItemLabelResultSchema,\n surveyAssistantTranslateContentResultSchema,\n type SurveyAssistantSuggestItemKeyInput,\n type SurveyAssistantSuggestItemKeyResult,\n type SurveyAssistantSuggestItemLabelInput,\n type SurveyAssistantSuggestItemLabelResult,\n type SurveyAssistantTaskContext,\n type SurveyAssistantTaskInvocationMode,\n type SurveyAssistantTranslateContentInput,\n type SurveyAssistantTranslateContentResult,\n} from \"../protocol\";\nimport { readSurveyAssistantJson } from \"./client-error\";\n\nexport interface SurveyAssistantTaskClientOptions {\n api?: string;\n getModelId?: () => string | undefined;\n resourceId?: string;\n surveyId?: string;\n}\n\nexport interface SurveyAssistantTaskExecutionOptions {\n mode?: SurveyAssistantTaskInvocationMode;\n modelId?: string;\n signal?: AbortSignal;\n}\n\nexport interface SurveyAssistantTaskClient {\n suggestItemKey(\n input: SurveyAssistantSuggestItemKeyInput,\n context: SurveyAssistantTaskContext,\n options?: SurveyAssistantTaskExecutionOptions,\n ): Promise<SurveyAssistantSuggestItemKeyResult>;\n suggestItemLabel(\n input: SurveyAssistantSuggestItemLabelInput,\n context: SurveyAssistantTaskContext,\n options?: SurveyAssistantTaskExecutionOptions,\n ): Promise<SurveyAssistantSuggestItemLabelResult>;\n translateContent(\n input: SurveyAssistantTranslateContentInput,\n context: SurveyAssistantTaskContext,\n options?: SurveyAssistantTaskExecutionOptions,\n ): Promise<SurveyAssistantTranslateContentResult>;\n}\n\nexport interface SurveyAssistantTaskExecutorRequestOptions {\n mode?: SurveyAssistantTaskInvocationMode;\n signal?: AbortSignal;\n}\n\nexport interface SurveyAssistantTaskExecutorCacheContext {\n cacheScope?: string;\n}\n\nexport interface SurveyAssistantTaskExecutor {\n suggestItemKey(\n input: SurveyAssistantSuggestItemKeyInput,\n context: SurveyAssistantTaskContext,\n options?: SurveyAssistantTaskExecutorRequestOptions,\n cache?: SurveyAssistantTaskExecutorCacheContext,\n ): Promise<SurveyAssistantSuggestItemKeyResult>;\n suggestItemLabel(\n input: SurveyAssistantSuggestItemLabelInput,\n context: SurveyAssistantTaskContext,\n options?: SurveyAssistantTaskExecutorRequestOptions,\n cache?: SurveyAssistantTaskExecutorCacheContext,\n ): Promise<SurveyAssistantSuggestItemLabelResult>;\n translateContent(\n input: SurveyAssistantTranslateContentInput,\n context: SurveyAssistantTaskContext,\n options?: SurveyAssistantTaskExecutorRequestOptions,\n cache?: SurveyAssistantTaskExecutorCacheContext,\n ): Promise<SurveyAssistantTranslateContentResult>;\n}\n\nexport const createSurveyAssistantTaskClient = ({\n api = \"/api/survey-assistant/tasks\",\n getModelId,\n resourceId,\n surveyId,\n}: SurveyAssistantTaskClientOptions = {}): SurveyAssistantTaskClient => {\n const run = async (\n taskId: \"suggest-item-key\" | \"suggest-item-label\" | \"translate-content\",\n input: unknown,\n context: SurveyAssistantTaskContext,\n options?: SurveyAssistantTaskExecutionOptions,\n ) => {\n const modelId = options?.modelId ?? getModelId?.();\n return readSurveyAssistantJson(\n await fetch(api, {\n body: JSON.stringify({\n taskId,\n input,\n context,\n ...(options?.mode ? { mode: options.mode } : {}),\n ...(modelId ? { modelId } : {}),\n ...(resourceId ? { resourceId } : {}),\n ...(surveyId ? { surveyId } : {}),\n }),\n headers: { \"content-type\": \"application/json\" },\n method: \"POST\",\n signal: options?.signal,\n }),\n \"The survey assistant task could not be completed.\",\n );\n };\n\n return {\n async suggestItemKey(input, context, options) {\n return surveyAssistantSuggestItemKeyResultSchema.parse(\n await run(\"suggest-item-key\", input, context, options),\n );\n },\n async suggestItemLabel(input, context, options) {\n return surveyAssistantSuggestItemLabelResultSchema.parse(\n await run(\"suggest-item-label\", input, context, options),\n );\n },\n async translateContent(input, context, options) {\n return surveyAssistantTranslateContentResultSchema.parse(\n await run(\"translate-content\", input, context, options),\n );\n },\n };\n};\n\nexport const createSurveyAssistantTaskExecutor = (\n options: SurveyAssistantTaskClientOptions = {},\n): SurveyAssistantTaskExecutor => {\n const client = createSurveyAssistantTaskClient(options);\n const executionOptions = (\n request?: SurveyAssistantTaskExecutorRequestOptions,\n cache?: SurveyAssistantTaskExecutorCacheContext,\n ): SurveyAssistantTaskExecutionOptions => ({\n mode: request?.mode,\n modelId: cache?.cacheScope,\n signal: request?.signal,\n });\n\n return {\n suggestItemKey: (input, context, request, cache) =>\n client.suggestItemKey(input, context, executionOptions(request, cache)),\n suggestItemLabel: (input, context, request, cache) =>\n client.suggestItemLabel(input, context, executionOptions(request, cache)),\n translateContent: (input, context, request, cache) =>\n client.translateContent(input, context, executionOptions(request, cache)),\n };\n};\n","import type { SurveyApplyResult, SurveyBatchApplyResult, SurveyChangeSet } from \"../protocol\";\nimport type { SurveyAssistantController } from \"./controller\";\n\nexport interface CreateSurveyAssistantControllerProxyOptions {\n notReadyMessage?: string;\n}\n\nexport interface SurveyAssistantControllerBridge {\n controller: SurveyAssistantController;\n setController(controller: SurveyAssistantController | null | undefined): void;\n}\n\nconst failedResult = (change: SurveyChangeSet, message: string): SurveyApplyResult => ({\n status: \"failed\",\n changeId: change.id,\n summary: change.summary,\n message,\n appliedOperations: 0,\n});\n\nexport const createSurveyAssistantControllerProxy = (\n getController: () => SurveyAssistantController | null | undefined,\n {\n notReadyMessage = \"The survey editor is not ready.\",\n }: CreateSurveyAssistantControllerProxyOptions = {},\n): SurveyAssistantController => ({\n getSnapshot: () => getController()?.getSnapshot() ?? null,\n applyAssistantChange: (change) =>\n getController()?.applyAssistantChange?.(change) ?? failedResult(change, notReadyMessage),\n applyAssistantChanges: (changes): SurveyBatchApplyResult =>\n getController()?.applyAssistantChanges?.(changes) ?? {\n results: changes.map((change) => failedResult(change, notReadyMessage)),\n },\n});\n\nexport const createSurveyAssistantControllerBridge = (\n options?: CreateSurveyAssistantControllerProxyOptions,\n): SurveyAssistantControllerBridge => {\n let currentController: SurveyAssistantController | null | undefined;\n return {\n controller: createSurveyAssistantControllerProxy(() => currentController, options),\n setController(controller) {\n currentController = controller;\n },\n };\n};\n"],"mappings":";;AAEA,IAAa,6BAAb,cAAgD,MAAM;CACpD;CACA;CAEA,YAAY,MAAgC,SAAiB,YAAY,OAAO;AAC9E,QAAM,QAAQ;AACd,OAAK,OAAO;AACZ,OAAK,OAAO;AACZ,OAAK,YAAY;;;AAIrB,MAAa,0BAA0B,OACrC,UACA,WAAW,oDACR;AACH,KAAI,CAAC,SAAS,IAAI;EAChB,MAAM,eAAe,MAAM,SAAS,MAAM,CAAC,YAAY,GAAG;EAC1D,IAAI;AACJ,MAAI;AACF,UAAO,eAAe,KAAK,MAAM,aAAa,GAAG,KAAA;UAC3C;AACN,UAAO,KAAA;;EAET,MAAM,SACJ,OAAO,SAAS,YAChB,SAAS,QACT,WAAW,QACX,OAAO,KAAK,UAAU,WAClB,KAAK,QACL,aAAa,MAAM,IAAI;EAC7B,MAAM,SAAS,0BACb,OAAO,SAAS,YACd,SAAS,QACT,UAAU,QACV,OAAO,KAAK,SAAS,WACnB;GAAE,MAAM,KAAK;GAAM;GAAQ,GAC3B,OACL;EAQD,MAAM,aANJ,OAAO,SAAS,YAChB,SAAS,QACT,eAAe,QACf,OAAO,KAAK,cAAc,YACtB,KAAK,YACL,KAAA,OAGH,OAAO,SAAS,mBACb,OAAO,SAAS,oBAAoB,OAAO,SAAS,6BACpD,SAAS,UAAU;AACzB,QAAM,IAAI,2BAA2B,OAAO,MAAM,OAAO,UAAU,QAAQ,UAAU;;AAEvF,QAAO,SAAS,MAAM,CAAC,aAAa,EAAE,EAAE;;;;ACZ1C,MAAM,iCAAiB,IAAI,SAAuD;AAElF,MAAa,uCACX,UACA,cAEA,YAAY,YACR;CACE,GAAG;CACH,IAAI;EACF,GAAG,SAAS;EACZ,GAAG;EACJ;CACF,GACD;AAEN,MAAM,oBAAoB,aAA4C;CACpE,MAAM,QAAQ,eAAe,IAAI,SAAS;AAC1C,KAAI,CAAC,MACH,OAAM,IAAI,MACR,+FACD;AAEH,QAAO;;AAGT,MAAM,uBAAuB,OAAO,UAAyB;AAC3D,KAAI,MAAM,SAAU;AACpB,OAAM,WAAW;AACjB,KAAI;AACF,SAAO,MAAM,WAAW,MAAM,QAAQ,SAAS,GAAG;GAChD,MAAM,UAAU,MAAM,QAAQ,OAAO;AACrC,OAAI,CAAC,QAAS;AACd,OAAI;AACF,YAAQ,QAAQ,MAAM,MAAM,QAAQ,QAAQ,MAAM,CAAC;YAC5C,OAAO;AACd,YAAQ,OAAO,MAAM;;;WAGjB;AACR,QAAM,WAAW;;;AAIrB,MAAa,4CAA2E;CACtF,MAAM,QAAuB;EAAE,SAAS;EAAM,SAAS,EAAE;EAAE,UAAU;EAAO;CAC5E,MAAM,WAA0C,EAC9C,YAAY,OAAO;EACjB,MAAM,SAAS,MAAM,OAAO,MAAM;AAClC,MAAI,CAAC,WAAW,MAAM,OAAO,UAAU,OAAO,EAC5C,QAAO,QAAQ,uBAAO,IAAI,MAAM,uDAAuD,CAAC;AAG1F,SAAO,IAAI,SAAS,SAAS,WAAW;AACtC,SAAM,QAAQ,KAAK;IACjB,OAAO;KACL,GAAG;KACH;KACA,GAAI,MAAM,QAAQ,EAAE,OAAO,CAAC,GAAG,MAAM,MAAM,EAAE,GAAG,EAAE;KAClD,GAAI,MAAM,UAAU,EAAE,SAAS,MAAM,QAAQ,MAAM,EAAE,GAAG,EAAE;KAC1D,GAAI,MAAM,QAAQ,EAAE,OAAO,MAAM,MAAM,MAAM,EAAE,GAAG,EAAE;KACrD;IACD;IACA;IACD,CAAC;AACG,wBAAqB,MAAM;IAChC;IAEL;AACD,gBAAe,IAAI,UAAU,MAAM;AACnC,QAAO;;AAGT,MAAa,wCACX,UACA,YACG;CACH,MAAM,QAAQ,iBAAiB,SAAS;AACxC,KAAI,MAAM,WAAW,MAAM,YAAY,QACrC,OAAM,IAAI,MAAM,yEAAyE;AAE3F,OAAM,UAAU;AACX,sBAAqB,MAAM;AAEhC,cAAa;AACX,MAAI,MAAM,YAAY,QAAS,OAAM,UAAU;;;;;ACpDnD,MAAa,mCAAmC,EAC9C,MAAM,+BACN,YACA,YACA,aACoC,EAAE,KAAgC;CACtE,MAAM,MAAM,OACV,QACA,OACA,SACA,YACG;EACH,MAAM,UAAU,SAAS,WAAW,cAAc;AAClD,SAAO,wBACL,MAAM,MAAM,KAAK;GACf,MAAM,KAAK,UAAU;IACnB;IACA;IACA;IACA,GAAI,SAAS,OAAO,EAAE,MAAM,QAAQ,MAAM,GAAG,EAAE;IAC/C,GAAI,UAAU,EAAE,SAAS,GAAG,EAAE;IAC9B,GAAI,aAAa,EAAE,YAAY,GAAG,EAAE;IACpC,GAAI,WAAW,EAAE,UAAU,GAAG,EAAE;IACjC,CAAC;GACF,SAAS,EAAE,gBAAgB,oBAAoB;GAC/C,QAAQ;GACR,QAAQ,SAAS;GAClB,CAAC,EACF,oDACD;;AAGH,QAAO;EACL,MAAM,eAAe,OAAO,SAAS,SAAS;AAC5C,UAAO,0CAA0C,MAC/C,MAAM,IAAI,oBAAoB,OAAO,SAAS,QAAQ,CACvD;;EAEH,MAAM,iBAAiB,OAAO,SAAS,SAAS;AAC9C,UAAO,4CAA4C,MACjD,MAAM,IAAI,sBAAsB,OAAO,SAAS,QAAQ,CACzD;;EAEH,MAAM,iBAAiB,OAAO,SAAS,SAAS;AAC9C,UAAO,4CAA4C,MACjD,MAAM,IAAI,qBAAqB,OAAO,SAAS,QAAQ,CACxD;;EAEJ;;AAGH,MAAa,qCACX,UAA4C,EAAE,KACd;CAChC,MAAM,SAAS,gCAAgC,QAAQ;CACvD,MAAM,oBACJ,SACA,WACyC;EACzC,MAAM,SAAS;EACf,SAAS,OAAO;EAChB,QAAQ,SAAS;EAClB;AAED,QAAO;EACL,iBAAiB,OAAO,SAAS,SAAS,UACxC,OAAO,eAAe,OAAO,SAAS,iBAAiB,SAAS,MAAM,CAAC;EACzE,mBAAmB,OAAO,SAAS,SAAS,UAC1C,OAAO,iBAAiB,OAAO,SAAS,iBAAiB,SAAS,MAAM,CAAC;EAC3E,mBAAmB,OAAO,SAAS,SAAS,UAC1C,OAAO,iBAAiB,OAAO,SAAS,iBAAiB,SAAS,MAAM,CAAC;EAC5E;;;;ACvIH,MAAM,gBAAgB,QAAyB,aAAwC;CACrF,QAAQ;CACR,UAAU,OAAO;CACjB,SAAS,OAAO;CAChB;CACA,mBAAmB;CACpB;AAED,MAAa,wCACX,eACA,EACE,kBAAkB,sCAC6B,EAAE,MACpB;CAC/B,mBAAmB,eAAe,EAAE,aAAa,IAAI;CACrD,uBAAuB,WACrB,eAAe,EAAE,uBAAuB,OAAO,IAAI,aAAa,QAAQ,gBAAgB;CAC1F,wBAAwB,YACtB,eAAe,EAAE,wBAAwB,QAAQ,IAAI,EACnD,SAAS,QAAQ,KAAK,WAAW,aAAa,QAAQ,gBAAgB,CAAC,EACxE;CACJ;AAED,MAAa,yCACX,YACoC;CACpC,IAAI;AACJ,QAAO;EACL,YAAY,2CAA2C,mBAAmB,QAAQ;EAClF,cAAc,YAAY;AACxB,uBAAoB;;EAEvB"}
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { L as SurveyAssistantThread, c as SurveyAssistantSuggestItemKeyInput, d as SurveyAssistantSuggestItemLabelResult, l as SurveyAssistantSuggestItemKeyResult, m as SurveyAssistantTaskInvocationMode, p as SurveyAssistantTaskContext, u as SurveyAssistantSuggestItemLabelInput, v as SurveyAssistantTranslateContentInput, y as SurveyAssistantTranslateContentResult } from "./index-DvTqML-0.mjs";
|
|
2
|
-
import { Tt as SurveyEditorUIContext, h as SurveyChangeSet, i as SurveyApplyResult, m as SurveyBatchApplyResult, xt as SurveyAssistantSnapshot } from "./lifecycle-BmGAIUlv.mjs";
|
|
3
|
-
import { FileUIPart } from "ai";
|
|
4
|
-
|
|
5
|
-
//#region src/react/thread-launcher.d.ts
|
|
6
|
-
type SurveyAssistantLaunchUIContext = Partial<Omit<SurveyEditorUIContext, "history">>;
|
|
7
|
-
interface SurveyAssistantThreadLaunch {
|
|
8
|
-
/** User-visible prompt submitted as the first message in the new thread. */
|
|
9
|
-
prompt: string;
|
|
10
|
-
files?: FileUIPart[];
|
|
11
|
-
/** Optional model used for the opening assistant turn. */
|
|
12
|
-
modelId?: string;
|
|
13
|
-
/** Optional manual thread title. The prompt-derived automatic title is used by default. */
|
|
14
|
-
title?: string;
|
|
15
|
-
/** Turn-local editor context merged into the snapshot captured when the prompt is submitted. */
|
|
16
|
-
uiContext?: SurveyAssistantLaunchUIContext;
|
|
17
|
-
}
|
|
18
|
-
interface SurveyAssistantThreadLauncher {
|
|
19
|
-
/**
|
|
20
|
-
* Creates a new thread and submits its first prompt when a connected panel is ready.
|
|
21
|
-
* Calls made before the panel mounts are queued.
|
|
22
|
-
*/
|
|
23
|
-
startThread(input: SurveyAssistantThreadLaunch): Promise<SurveyAssistantThread>;
|
|
24
|
-
}
|
|
25
|
-
declare const createSurveyAssistantThreadLauncher: () => SurveyAssistantThreadLauncher;
|
|
26
|
-
//#endregion
|
|
27
|
-
//#region src/react/task-client.d.ts
|
|
28
|
-
interface SurveyAssistantTaskClientOptions {
|
|
29
|
-
api?: string;
|
|
30
|
-
getModelId?: () => string | undefined;
|
|
31
|
-
resourceId?: string;
|
|
32
|
-
surveyId?: string;
|
|
33
|
-
}
|
|
34
|
-
interface SurveyAssistantTaskExecutionOptions {
|
|
35
|
-
mode?: SurveyAssistantTaskInvocationMode;
|
|
36
|
-
modelId?: string;
|
|
37
|
-
signal?: AbortSignal;
|
|
38
|
-
}
|
|
39
|
-
interface SurveyAssistantTaskClient {
|
|
40
|
-
suggestItemKey(input: SurveyAssistantSuggestItemKeyInput, context: SurveyAssistantTaskContext, options?: SurveyAssistantTaskExecutionOptions): Promise<SurveyAssistantSuggestItemKeyResult>;
|
|
41
|
-
suggestItemLabel(input: SurveyAssistantSuggestItemLabelInput, context: SurveyAssistantTaskContext, options?: SurveyAssistantTaskExecutionOptions): Promise<SurveyAssistantSuggestItemLabelResult>;
|
|
42
|
-
translateContent(input: SurveyAssistantTranslateContentInput, context: SurveyAssistantTaskContext, options?: SurveyAssistantTaskExecutionOptions): Promise<SurveyAssistantTranslateContentResult>;
|
|
43
|
-
}
|
|
44
|
-
interface SurveyAssistantTaskExecutorRequestOptions {
|
|
45
|
-
mode?: SurveyAssistantTaskInvocationMode;
|
|
46
|
-
signal?: AbortSignal;
|
|
47
|
-
}
|
|
48
|
-
interface SurveyAssistantTaskExecutorCacheContext {
|
|
49
|
-
cacheScope?: string;
|
|
50
|
-
}
|
|
51
|
-
interface SurveyAssistantTaskExecutor {
|
|
52
|
-
suggestItemKey(input: SurveyAssistantSuggestItemKeyInput, context: SurveyAssistantTaskContext, options?: SurveyAssistantTaskExecutorRequestOptions, cache?: SurveyAssistantTaskExecutorCacheContext): Promise<SurveyAssistantSuggestItemKeyResult>;
|
|
53
|
-
suggestItemLabel(input: SurveyAssistantSuggestItemLabelInput, context: SurveyAssistantTaskContext, options?: SurveyAssistantTaskExecutorRequestOptions, cache?: SurveyAssistantTaskExecutorCacheContext): Promise<SurveyAssistantSuggestItemLabelResult>;
|
|
54
|
-
translateContent(input: SurveyAssistantTranslateContentInput, context: SurveyAssistantTaskContext, options?: SurveyAssistantTaskExecutorRequestOptions, cache?: SurveyAssistantTaskExecutorCacheContext): Promise<SurveyAssistantTranslateContentResult>;
|
|
55
|
-
}
|
|
56
|
-
declare const createSurveyAssistantTaskClient: ({
|
|
57
|
-
api,
|
|
58
|
-
getModelId,
|
|
59
|
-
resourceId,
|
|
60
|
-
surveyId
|
|
61
|
-
}?: SurveyAssistantTaskClientOptions) => SurveyAssistantTaskClient;
|
|
62
|
-
declare const createSurveyAssistantTaskExecutor: (options?: SurveyAssistantTaskClientOptions) => SurveyAssistantTaskExecutor;
|
|
63
|
-
//#endregion
|
|
64
|
-
//#region src/react/controller.d.ts
|
|
65
|
-
interface SurveyAssistantController {
|
|
66
|
-
getSnapshot(): SurveyAssistantSnapshot | null;
|
|
67
|
-
applyAssistantChange?(change: SurveyChangeSet): SurveyApplyResult;
|
|
68
|
-
applyAssistantChanges?(changes: SurveyChangeSet[]): SurveyBatchApplyResult;
|
|
69
|
-
}
|
|
70
|
-
//#endregion
|
|
71
|
-
//#region src/react/controller-proxy.d.ts
|
|
72
|
-
interface CreateSurveyAssistantControllerProxyOptions {
|
|
73
|
-
notReadyMessage?: string;
|
|
74
|
-
}
|
|
75
|
-
interface SurveyAssistantControllerBridge {
|
|
76
|
-
controller: SurveyAssistantController;
|
|
77
|
-
setController(controller: SurveyAssistantController | null | undefined): void;
|
|
78
|
-
}
|
|
79
|
-
declare const createSurveyAssistantControllerProxy: (getController: () => SurveyAssistantController | null | undefined, {
|
|
80
|
-
notReadyMessage
|
|
81
|
-
}?: CreateSurveyAssistantControllerProxyOptions) => SurveyAssistantController;
|
|
82
|
-
declare const createSurveyAssistantControllerBridge: (options?: CreateSurveyAssistantControllerProxyOptions) => SurveyAssistantControllerBridge;
|
|
83
|
-
//#endregion
|
|
84
|
-
export { createSurveyAssistantThreadLauncher as _, SurveyAssistantController as a, SurveyAssistantTaskExecutionOptions as c, SurveyAssistantTaskExecutorRequestOptions as d, createSurveyAssistantTaskClient as f, SurveyAssistantThreadLauncher as g, SurveyAssistantThreadLaunch as h, createSurveyAssistantControllerProxy as i, SurveyAssistantTaskExecutor as l, SurveyAssistantLaunchUIContext as m, SurveyAssistantControllerBridge as n, SurveyAssistantTaskClient as o, createSurveyAssistantTaskExecutor as p, createSurveyAssistantControllerBridge as r, SurveyAssistantTaskClientOptions as s, CreateSurveyAssistantControllerProxyOptions as t, SurveyAssistantTaskExecutorCacheContext as u };
|
|
85
|
-
//# sourceMappingURL=controller-proxy-mRvez2qw.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"controller-proxy-mRvez2qw.d.mts","names":[],"sources":["../src/react/thread-launcher.ts","../src/react/task-client.ts","../src/react/controller.ts","../src/react/controller-proxy.ts"],"mappings":";;;;;KAOY,8BAAA,GAAiC,OAAA,CAAQ,IAAA,CAAK,qBAAA;AAAA,UAEzC,2BAAA;;EAEf,MAAA;EACA,KAAA,GAAQ,UAAA;;EAER,OAAA;EAPmD;EASnD,KAAA;EATkD;EAWlD,SAAA,GAAY,8BAAA;AAAA;AAAA,UAGG,6BAAA;EAdyC;;;AAE1D;EAiBE,WAAA,CAAY,KAAA,EAAO,2BAAA,GAA8B,OAAA,CAAQ,qBAAA;AAAA;AAAA,cA6D9C,mCAAA,QAA0C,6BAAA;;;UCxEtC,gCAAA;EACf,GAAA;EACA,UAAA;EACA,UAAA;EACA,QAAA;AAAA;AAAA,UAGe,mCAAA;EACf,IAAA,GAAO,iCAAA;EACP,OAAA;EACA,MAAA,GAAS,WAAA;AAAA;AAAA,UAGM,yBAAA;EACf,cAAA,CACE,KAAA,EAAO,kCAAA,EACP,OAAA,EAAS,0BAAA,EACT,OAAA,GAAU,mCAAA,GACT,OAAA,CAAQ,mCAAA;EACX,gBAAA,CACE,KAAA,EAAO,oCAAA,EACP,OAAA,EAAS,0BAAA,EACT,OAAA,GAAU,mCAAA,GACT,OAAA,CAAQ,qCAAA;EACX,gBAAA,CACE,KAAA,EAAO,oCAAA,EACP,OAAA,EAAS,0BAAA,EACT,OAAA,GAAU,mCAAA,GACT,OAAA,CAAQ,qCAAA;AAAA;AAAA,UAGI,yCAAA;EACf,IAAA,GAAO,iCAAA;EACP,MAAA,GAAS,WAAA;AAAA;AAAA,UAGM,uCAAA;EACf,UAAA;AAAA;AAAA,UAGe,2BAAA;EACf,cAAA,CACE,KAAA,EAAO,kCAAA,EACP,OAAA,EAAS,0BAAA,EACT,OAAA,GAAU,yCAAA,EACV,KAAA,GAAQ,uCAAA,GACP,OAAA,CAAQ,mCAAA;EACX,gBAAA,CACE,KAAA,EAAO,oCAAA,EACP,OAAA,EAAS,0BAAA,EACT,OAAA,GAAU,yCAAA,EACV,KAAA,GAAQ,uCAAA,GACP,OAAA,CAAQ,qCAAA;EACX,gBAAA,CACE,KAAA,EAAO,oCAAA,EACP,OAAA,EAAS,0BAAA,EACT,OAAA,GAAU,yCAAA,EACV,KAAA,GAAQ,uCAAA,GACP,OAAA,CAAQ,qCAAA;AAAA;AAAA,cAGA,+BAAA;EAAmC,GAAA;EAAA,UAAA;EAAA,UAAA;EAAA;AAAA,IAK7C,gCAAA,KAAwC,yBAAA;AAAA,cA8C9B,iCAAA,GACX,OAAA,GAAS,gCAAA,KACR,2BAAA;;;UC1Hc,yBAAA;EACf,WAAA,IAAe,uBAAA;EACf,oBAAA,EAAsB,MAAA,EAAQ,eAAA,GAAkB,iBAAA;EAChD,qBAAA,EAAuB,OAAA,EAAS,eAAA,KAAoB,sBAAA;AAAA;;;UCPrC,2CAAA;EACf,eAAA;AAAA;AAAA,UAGe,+BAAA;EACf,UAAA,EAAY,yBAAA;EACZ,aAAA,CAAc,UAAA,EAAY,yBAAA;AAAA;AAAA,cAWf,oCAAA,GACX,aAAA,QAAqB,yBAAA;EACrB;AAAA,IAEG,2CAAA,KACF,yBAAA;AAAA,cAUU,qCAAA,GACX,OAAA,GAAU,2CAAA,KACT,+BAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"digest-SJmoYVaK.d.mts","names":[],"sources":["../src/protocol/digest.ts"],"mappings":";;;cAEa,eAAA,GAAmB,KAAA;AAAA,cAcnB,UAAA,GAAc,KAAA;AAAA,cASd,qBAAA,GACX,QAAA,EAAU,IAAA,CAAK,iCAAA"}
|