@jskit-ai/agent-docs 0.1.144 → 0.1.146

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.
@@ -107,6 +107,63 @@ at most 20 compact matches and never includes schemas. Tool arguments and
107
107
  results are byte-bounded; an oversized result returns a controlled error so it
108
108
  cannot overflow assistant transcript storage.
109
109
 
110
+ An application can keep a small critical action directly available in a large
111
+ catalog by opting it in explicitly:
112
+
113
+ ```js
114
+ extensions: {
115
+ assistant: {
116
+ alwaysAvailable: true,
117
+ preflight: ["current-time"]
118
+ }
119
+ }
120
+ ```
121
+
122
+ The catalog exposes at most eight authorized `alwaysAvailable` actions beside
123
+ the three discovery tools. Permission, surface, channel, actor, and trusted
124
+ workspace enforcement remain unchanged. Other actions still require contract
125
+ lookup before discovery-mode execution.
126
+
127
+ ## Conversation lifecycle
128
+
129
+ Tool selection, execution, correction, and recovery run silently. The client
130
+ receives tool timeline events, but assistant prose is emitted only when the
131
+ answer is complete. Progress-only responses such as “Let me query…” are
132
+ retried internally and are not stored or replayed as chat history.
133
+
134
+ The runtime permits up to 16 bounded tool rounds so catalog search, contract
135
+ lookup, and execution can complete in one turn. If ordinary tool-failure
136
+ recovery cannot finish, the runtime returns the latest successful tool result
137
+ with a 4,000-character cap, or a concise failure when there was no successful
138
+ result. Genuine round-budget exhaustion ends with exactly `Limit reached. Start
139
+ a new conversation.`
140
+
141
+ For current or relative date and time questions, the runtime instructs the
142
+ model to use an available authoritative workspace clock action. When an
143
+ authorized `preflight: ["current-time"]` action has no model-required input,
144
+ the runtime executes it before the first model completion and places its result
145
+ in model history. Mark it `alwaysAvailable` when the authorized catalog can
146
+ enter discovery mode. Trusted workspace input can still be required by the
147
+ application because JSKIT hides and injects it before execution.
148
+
149
+ The clock action and its timezone policy remain application-owned; JSKIT does
150
+ not invent a clock action or infer the current date from model knowledge. Make
151
+ that action automation-capable and available on the assistant surface if the
152
+ product needs now, today, tomorrow, or other relative-date answers.
153
+
154
+ Conversation restoration loads every transcript page needed to retain the
155
+ newest bounded transcript window, so a completed response on page two does not
156
+ disappear after navigation or remounting. The defaults are 200 entries per page
157
+ and at most 2,000 restored entries. Applications can set
158
+ `assistant.restoreMessagesPageSize` up to 500 and
159
+ `assistant.restoreMessagesMaxEntries` up to the hard 5,000-entry limit. Longer
160
+ conversations restore the newest entries rather than expanding client memory
161
+ without a bound. Each page has its own query-cache key and can be reused by a
162
+ warm remount.
163
+
164
+ Restored tool calls without matching results, and live calls still pending when
165
+ a stream ends, are shown as interrupted rather than remaining pending forever.
166
+
110
167
  ## Height and scrolling
111
168
 
112
169
  `AssistantSurfaceClientElement` owns its bounded responsive layout. Below the
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jskit-ai/agent-docs",
3
- "version": "0.1.144",
3
+ "version": "0.1.146",
4
4
  "description": "Distributed JSKIT agent references, prompts, guides, and generated reference maps.",
5
5
  "type": "module",
6
6
  "files": [
@@ -5,7 +5,7 @@
5
5
  "private": true,
6
6
  "type": "module",
7
7
  "dependencies": {
8
- "@jskit-ai/kernel": "0.1.172",
8
+ "@jskit-ai/kernel": "0.1.174",
9
9
  "json-rest-schema": "^1.0.17"
10
10
  },
11
11
  "exports": {
@@ -34,7 +34,7 @@
34
34
  "dependencies": {
35
35
  "@local/main": "0.1.0",
36
36
  "@fastify/static": "^10.1.3",
37
- "@jskit-ai/kernel": "0.1.172",
37
+ "@jskit-ai/kernel": "0.1.174",
38
38
  "@tanstack/vue-query": "^5.101.0",
39
39
  "fastify": "^5.8.5",
40
40
  "json-rest-schema": "^1.0.17",
@@ -42,12 +42,12 @@
42
42
  "vue": "^3.5.38",
43
43
  "vue-router": "^5.1.0",
44
44
  "vuetify": "^4.1.2",
45
- "@jskit-ai/http-runtime": "0.1.170"
45
+ "@jskit-ai/http-runtime": "0.1.172"
46
46
  },
47
47
  "devDependencies": {
48
- "@jskit-ai/agent-docs": "0.1.144",
49
- "@jskit-ai/config-eslint": "0.1.169",
50
- "@jskit-ai/jskit-catalog": "0.1.197",
48
+ "@jskit-ai/agent-docs": "0.1.146",
49
+ "@jskit-ai/config-eslint": "0.1.171",
50
+ "@jskit-ai/jskit-catalog": "0.1.199",
51
51
  "@playwright/test": "1.61.1",
52
52
  "@vitejs/plugin-vue": "^6.0.7",
53
53
  "eslint": "^10.8.0",
@@ -34,7 +34,7 @@
34
34
  "dependencies": {
35
35
  "@local/main": "0.1.0",
36
36
  "@fastify/static": "^10.1.3",
37
- "@jskit-ai/kernel": "0.1.172",
37
+ "@jskit-ai/kernel": "0.1.174",
38
38
  "@tanstack/vue-query": "^5.101.0",
39
39
  "fastify": "^5.8.5",
40
40
  "json-rest-schema": "^1.0.17",
@@ -42,14 +42,14 @@
42
42
  "vue": "^3.5.38",
43
43
  "vue-router": "^5.1.0",
44
44
  "vuetify": "^4.1.2",
45
- "@jskit-ai/http-runtime": "0.1.170",
45
+ "@jskit-ai/http-runtime": "0.1.172",
46
46
  "@mdi/js": "^7.4.47",
47
- "@jskit-ai/shell-web": "0.1.176"
47
+ "@jskit-ai/shell-web": "0.1.178"
48
48
  },
49
49
  "devDependencies": {
50
- "@jskit-ai/agent-docs": "0.1.144",
51
- "@jskit-ai/config-eslint": "0.1.169",
52
- "@jskit-ai/jskit-catalog": "0.1.197",
50
+ "@jskit-ai/agent-docs": "0.1.146",
51
+ "@jskit-ai/config-eslint": "0.1.171",
52
+ "@jskit-ai/jskit-catalog": "0.1.199",
53
53
  "@playwright/test": "1.61.1",
54
54
  "@vitejs/plugin-vue": "^6.0.7",
55
55
  "eslint": "^10.8.0",
@@ -9,7 +9,7 @@
9
9
  },
10
10
  "description": "App-local runtime composition and lightweight glue.",
11
11
  "dependencies": {
12
- "@jskit-ai/kernel": "0.1.172"
12
+ "@jskit-ai/kernel": "0.1.174"
13
13
  },
14
14
  "jskit": {
15
15
  "kind": "runtime",
@@ -15,7 +15,7 @@ A concrete Fastify, Vue, and JSKIT application foundation for products that do n
15
15
 
16
16
  - Id: `app/minimal-foundation`
17
17
  - Keywords: `app`, `fastify`, `foundation`, `minimal`, `server`, `vite`, `vue`
18
- - Owner: `@jskit-ai/agent-docs@0.1.144`
18
+ - Owner: `@jskit-ai/agent-docs@0.1.146`
19
19
  - Read: `node_modules/@jskit-ai/agent-docs/patterns/minimal-foundation/PATTERN.md`
20
20
  - Examples: `node_modules/@jskit-ai/agent-docs/patterns/minimal-foundation/example/`
21
21
  - Requires: `@jskit-ai/http-runtime`, `@jskit-ai/kernel`
@@ -26,7 +26,7 @@ A concrete JSKIT web application foundation with responsive shell navigation, se
26
26
 
27
27
  - Id: `app/shell-foundation`
28
28
  - Keywords: `app`, `foundation`, `material`, `navigation`, `placements`, `shell`, `vite`, `vue`
29
- - Owner: `@jskit-ai/agent-docs@0.1.144`
29
+ - Owner: `@jskit-ai/agent-docs@0.1.146`
30
30
  - Read: `node_modules/@jskit-ai/agent-docs/patterns/shell-foundation/PATTERN.md`
31
31
  - Examples: `node_modules/@jskit-ai/agent-docs/patterns/shell-foundation/example/`
32
32
  - Requires: `@jskit-ai/http-runtime`, `@jskit-ai/kernel`, `@jskit-ai/shell-web`
@@ -37,7 +37,7 @@ Configure an assistant runtime for one application surface and expose its chat a
37
37
 
38
38
  - Id: `assistant/assistant-surface`
39
39
  - Keywords: `ai`, `assistant`, `chat`, `config`, `environment`, `page`, `placement`, `settings`, `surface`
40
- - Owner: `@jskit-ai/assistant-runtime@0.1.143`
40
+ - Owner: `@jskit-ai/assistant-runtime@0.1.145`
41
41
  - Read: `node_modules/@jskit-ai/assistant-runtime/patterns/assistant-surface/PATTERN.md`
42
42
  - Examples: `node_modules/@jskit-ai/assistant-runtime/patterns/assistant-surface/example/`
43
43
  - Requires: `@jskit-ai/assistant-runtime`, `@jskit-ai/shell-web`
@@ -48,7 +48,7 @@ Compose JSKIT authentication routes, views, profile controls, and public surface
48
48
 
49
49
  - Id: `auth/auth-surface`
50
50
  - Keywords: `account`, `auth`, `login`, `logout`, `password`, `placement`, `profile`, `reset`, `surface`
51
- - Owner: `@jskit-ai/auth-web@0.1.172`
51
+ - Owner: `@jskit-ai/auth-web@0.1.174`
52
52
  - Read: `node_modules/@jskit-ai/auth-web/patterns/auth-surface/PATTERN.md`
53
53
  - Examples: `node_modules/@jskit-ai/auth-web/patterns/auth-surface/example/`
54
54
  - Requires: `@jskit-ai/auth-core`, `@jskit-ai/auth-web`, `@jskit-ai/shell-web`
@@ -59,7 +59,7 @@ Add Supabase authentication through normal npm composition, explicit environment
59
59
 
60
60
  - Id: `auth/supabase-auth`
61
61
  - Keywords: `auth`, `authentication`, `oauth`, `sessions`, `supabase`
62
- - Owner: `@jskit-ai/auth-provider-supabase-core@0.1.169`
62
+ - Owner: `@jskit-ai/auth-provider-supabase-core@0.1.171`
63
63
  - Read: `node_modules/@jskit-ai/auth-provider-supabase-core/patterns/supabase-auth/PATTERN.md`
64
64
  - Examples: `node_modules/@jskit-ai/auth-provider-supabase-core/patterns/supabase-auth/example/`
65
65
  - Requires: `@jskit-ai/auth-provider-supabase-core`
@@ -70,7 +70,7 @@ Add a protected administration surface, settings shell, and semantic navigation
70
70
 
71
71
  - Id: `console/console-surface`
72
72
  - Keywords: `admin`, `console`, `navigation`, `owner`, `placement`, `settings`, `surface`
73
- - Owner: `@jskit-ai/console-web@0.1.140`
73
+ - Owner: `@jskit-ai/console-web@0.1.142`
74
74
  - Read: `node_modules/@jskit-ai/console-web/patterns/console-surface/PATTERN.md`
75
75
  - Examples: `node_modules/@jskit-ai/console-web/patterns/console-surface/example/`
76
76
  - Requires: `@jskit-ai/console-core`, `@jskit-ai/console-web`, `@jskit-ai/shell-web`
@@ -81,7 +81,7 @@ Build a routed CRUD user interface as thin application pages over JSKIT's shared
81
81
 
82
82
  - Id: `crud/crud-screen-set`
83
83
  - Keywords: `actions`, `add`, `crud`, `delete`, `edit`, `filters`, `list`, `material`, `routes`, `view`, `vue`
84
- - Owner: `@jskit-ai/http-web@0.1.17`
84
+ - Owner: `@jskit-ai/http-web@0.1.19`
85
85
  - Read: `node_modules/@jskit-ai/http-web/patterns/crud-screen-set/PATTERN.md`
86
86
  - Examples: `node_modules/@jskit-ai/http-web/patterns/crud-screen-set/example/`
87
87
  - Requires: `@jskit-ai/http-web`, `@jskit-ai/resource-crud-core`
@@ -92,7 +92,7 @@ Build a complete application-owned CRUD server package from a migration, resourc
92
92
 
93
93
  - Id: `crud/json-api-resource-package`
94
94
  - Keywords: `actions`, `crud`, `database`, `json-api`, `migration`, `permissions`, `provider`, `repository`, `routes`, `service`
95
- - Owner: `@jskit-ai/crud-core@0.1.183`
95
+ - Owner: `@jskit-ai/crud-core@0.1.185`
96
96
  - Read: `node_modules/@jskit-ai/crud-core/patterns/json-api-resource-package/PATTERN.md`
97
97
  - Examples: `node_modules/@jskit-ai/crud-core/patterns/json-api-resource-package/example/`
98
98
  - Requires: `@jskit-ai/crud-core`, `@jskit-ai/resource-crud-core`
@@ -103,7 +103,7 @@ Define an authenticated application resource whose records belong to the current
103
103
 
104
104
  - Id: `crud/resource-contract`
105
105
  - Keywords: `authenticated`, `crud`, `database`, `owner-scoped`, `resource`, `user`
106
- - Owner: `@jskit-ai/resource-crud-core@0.1.114`
106
+ - Owner: `@jskit-ai/resource-crud-core@0.1.116`
107
107
  - Read: `node_modules/@jskit-ai/resource-crud-core/patterns/resource-contract/PATTERN.md`
108
108
  - Examples: `node_modules/@jskit-ai/resource-crud-core/patterns/resource-contract/example/`
109
109
  - Requires: `@jskit-ai/resource-crud-core`
@@ -114,7 +114,7 @@ Configure a JSKIT application for MySQL with a fixed driver, ordinary environmen
114
114
 
115
115
  - Id: `database/mysql-application`
116
116
  - Keywords: `database`, `knex`, `mariadb`, `migrations`, `mysql`, `mysql2`
117
- - Owner: `@jskit-ai/database-runtime-mysql@0.1.170`
117
+ - Owner: `@jskit-ai/database-runtime-mysql@0.1.172`
118
118
  - Read: `node_modules/@jskit-ai/database-runtime-mysql/patterns/mysql-application/PATTERN.md`
119
119
  - Examples: `node_modules/@jskit-ai/database-runtime-mysql/patterns/mysql-application/example/`
120
120
  - Requires: `@jskit-ai/database-runtime-mysql`
@@ -125,7 +125,7 @@ Configure a JSKIT application for PostgreSQL with a fixed driver, ordinary envir
125
125
 
126
126
  - Id: `database/postgres-application`
127
127
  - Keywords: `database`, `knex`, `migrations`, `pg`, `postgres`, `postgresql`
128
- - Owner: `@jskit-ai/database-runtime-postgres@0.1.169`
128
+ - Owner: `@jskit-ai/database-runtime-postgres@0.1.171`
129
129
  - Read: `node_modules/@jskit-ai/database-runtime-postgres/patterns/postgres-application/PATTERN.md`
130
130
  - Examples: `node_modules/@jskit-ai/database-runtime-postgres/patterns/postgres-application/example/`
131
131
  - Requires: `@jskit-ai/database-runtime-postgres`
@@ -136,7 +136,7 @@ Wrap a JSKIT web application in a Capacitor Android shell using native Capacitor
136
136
 
137
137
  - Id: `mobile/android-application`
138
138
  - Keywords: `android`, `capacitor`, `device`, `mobile`, `native`, `shell`, `webview`
139
- - Owner: `@jskit-ai/mobile-capacitor@0.1.107`
139
+ - Owner: `@jskit-ai/mobile-capacitor@0.1.109`
140
140
  - Read: `node_modules/@jskit-ai/mobile-capacitor/patterns/android-application/PATTERN.md`
141
141
  - Examples: `node_modules/@jskit-ai/mobile-capacitor/patterns/android-application/example/`
142
142
  - Requires: `@capacitor/android`, `@capacitor/app`, `@capacitor/cli`, `@jskit-ai/mobile-capacitor`
@@ -147,7 +147,7 @@ Add JSKIT realtime events with an optional Redis backplane and an explicit shell
147
147
 
148
148
  - Id: `realtime/realtime-application`
149
149
  - Keywords: `realtime`, `redis`, `socket.io`, `sockets`, `status`, `websocket`
150
- - Owner: `@jskit-ai/realtime@0.1.169`
150
+ - Owner: `@jskit-ai/realtime@0.1.171`
151
151
  - Read: `node_modules/@jskit-ai/realtime/patterns/realtime-application/PATTERN.md`
152
152
  - Examples: `node_modules/@jskit-ai/realtime/patterns/realtime-application/example/`
153
153
  - Requires: `@jskit-ai/realtime`, `@jskit-ai/shell-web`
@@ -158,7 +158,7 @@ Define a server feature through explicit capabilities and first-class actions, a
158
158
 
159
159
  - Id: `server/feature-package`
160
160
  - Keywords: `actions`, `feature`, `json-rest`, `knex`, `orchestration`, `package`, `provider`, `repository`, `routes`, `server`
161
- - Owner: `@jskit-ai/agent-docs@0.1.144`
161
+ - Owner: `@jskit-ai/agent-docs@0.1.146`
162
162
  - Read: `node_modules/@jskit-ai/agent-docs/patterns/feature-package/PATTERN.md`
163
163
  - Examples: `node_modules/@jskit-ai/agent-docs/patterns/feature-package/example/`
164
164
  - Requires: `@jskit-ai/kernel`
@@ -169,7 +169,7 @@ Compose the JSKIT responsive shell, semantic placements, settings navigation, an
169
169
 
170
170
  - Id: `shell/application-shell`
171
171
  - Keywords: `adaptive`, `app`, `layout`, `navigation`, `placement`, `responsive`, `settings`, `shell`
172
- - Owner: `@jskit-ai/shell-web@0.1.176`
172
+ - Owner: `@jskit-ai/shell-web@0.1.178`
173
173
  - Read: `node_modules/@jskit-ai/shell-web/patterns/application-shell/PATTERN.md`
174
174
  - Examples: `node_modules/@jskit-ai/shell-web/patterns/application-shell/example/`
175
175
  - Requires: `@jskit-ai/kernel`, `@jskit-ai/shell-web`
@@ -180,7 +180,7 @@ Add product routes and shell extensions through file routing, semantic placement
180
180
 
181
181
  - Id: `ui/page-and-placement`
182
182
  - Keywords: `component`, `navigation`, `outlet`, `page`, `placement`, `routes`, `section`, `shell`, `subpages`, `vue`
183
- - Owner: `@jskit-ai/shell-web@0.1.176`
183
+ - Owner: `@jskit-ai/shell-web@0.1.178`
184
184
  - Read: `node_modules/@jskit-ai/shell-web/patterns/page-and-placement/PATTERN.md`
185
185
  - Examples: `node_modules/@jskit-ai/shell-web/patterns/page-and-placement/example/`
186
186
  - Requires: `@jskit-ai/kernel`, `@jskit-ai/shell-web`
@@ -191,7 +191,7 @@ Compose an account settings route and profile, preference, and notification sect
191
191
 
192
192
  - Id: `users/account-settings`
193
193
  - Keywords: `account`, `notifications`, `preferences`, `profile`, `settings`, `user`, `vue`
194
- - Owner: `@jskit-ai/users-web@0.1.190`
194
+ - Owner: `@jskit-ai/users-web@0.1.192`
195
195
  - Read: `node_modules/@jskit-ai/users-web/patterns/account-settings/PATTERN.md`
196
196
  - Examples: `node_modules/@jskit-ai/users-web/patterns/account-settings/example/`
197
197
  - Requires: `@jskit-ai/shell-web`, `@jskit-ai/users-core`, `@jskit-ai/users-web`
@@ -202,7 +202,7 @@ Expose user administration and workspace-scoped member operations through app-ow
202
202
 
203
203
  - Id: `users/user-administration-server`
204
204
  - Keywords: `account`, `admin`, `member`, `repository`, `resource`, `routes`, `service`, `user`, `workspace`
205
- - Owner: `@jskit-ai/users-core@0.1.185`
205
+ - Owner: `@jskit-ai/users-core@0.1.187`
206
206
  - Read: `node_modules/@jskit-ai/users-core/patterns/user-administration-server/PATTERN.md`
207
207
  - Examples: `node_modules/@jskit-ai/users-core/patterns/user-administration-server/example/`
208
208
  - Requires: `@jskit-ai/crud-core`, `@jskit-ai/users-core`
@@ -213,7 +213,7 @@ Configure roles, workspace access policy, invitations, and app-owned invitation
213
213
 
214
214
  - Id: `workspaces/workspace-server`
215
215
  - Keywords: `access`, `invite`, `membership`, `multitenancy`, `policy`, `role`, `tenancy`, `workspace`
216
- - Owner: `@jskit-ai/workspaces-core@0.1.150`
216
+ - Owner: `@jskit-ai/workspaces-core@0.1.152`
217
217
  - Read: `node_modules/@jskit-ai/workspaces-core/patterns/workspace-server/PATTERN.md`
218
218
  - Examples: `node_modules/@jskit-ai/workspaces-core/patterns/workspace-server/example/`
219
219
  - Requires: `@jskit-ai/users-core`, `@jskit-ai/workspaces-core`
@@ -224,7 +224,7 @@ Compose workspace selection, invitation, member administration, settings, and re
224
224
 
225
225
  - Id: `workspaces/workspace-surfaces`
226
226
  - Keywords: `admin`, `invite`, `member`, `navigation`, `settings`, `surface`, `switcher`, `workspace`
227
- - Owner: `@jskit-ai/workspaces-web@0.1.151`
227
+ - Owner: `@jskit-ai/workspaces-web@0.1.153`
228
228
  - Read: `node_modules/@jskit-ai/workspaces-web/patterns/workspace-surfaces/PATTERN.md`
229
229
  - Examples: `node_modules/@jskit-ai/workspaces-web/patterns/workspace-surfaces/example/`
230
230
  - Requires: `@jskit-ai/shell-web`, `@jskit-ai/workspaces-core`, `@jskit-ai/workspaces-web`
@@ -71,6 +71,7 @@ Exports
71
71
  - `buildStreamEventError(event)`
72
72
  Local functions
73
73
  - `appendQueryParam(params, key, value)`
74
+ - `createAssistantQueryParams(query = {}, transport = null)`
74
75
  - `normalizeSurfaceHeaderValue(value)`
75
76
  - `resolveAssistantRequestHeaders(resolveSurfaceId)`
76
77
  - `resolveRequiredBasePath(resolveBasePath)`
@@ -168,6 +169,7 @@ Exports
168
169
  Exports
169
170
  - `createServiceToolCatalog(actions, { barredActionIds = [], skipActionPrefixes = [], maxDirectTools: rawMaxDirectTools = DEFAULT_MAX_DIRECT_TOOLS, discoveryPageSize: rawDiscoveryPageSize = DEFAULT_DISCOVERY_PAGE_SIZE, maxToolArgumentBytes: rawMaxToolArgumentBytes = DEFAULT_MAX_TOOL_ARGUMENT_BYTES, maxToolResultBytes: rawMaxToolResultBytes = DEFAULT_MAX_TOOL_RESULT_BYTES } = {})`
170
171
  Local functions
172
+ - `normalizePreflightIntents(value)`
171
173
  - `normalizeAssistantExtension(value)`
172
174
  - `normalizeAssistantActionExtension(action = {})`
173
175
  - `normalizeBarredEntry(value)`
@@ -216,6 +218,7 @@ Local functions
216
218
  Exports
217
219
  - `MAX_INPUT_CHARS`
218
220
  - `MAX_HISTORY_MESSAGES`
221
+ - `MAX_MESSAGE_PAGE_SIZE`
219
222
  - `assistantResource`
220
223
  - `assistantConversationOutputValidator`
221
224
 
@@ -246,6 +249,7 @@ Exports
246
249
  - `normalizeAssistantStreamEventType`
247
250
  - `MAX_INPUT_CHARS`
248
251
  - `MAX_HISTORY_MESSAGES`
252
+ - `MAX_MESSAGE_PAGE_SIZE`
249
253
  - `assistantResource`
250
254
  - `assistantConversationOutputValidator`
251
255
  - `MAX_SYSTEM_PROMPT_CHARS`
@@ -34,13 +34,8 @@ Local functions
34
34
  - `buildScopeStorageKey(scope = {})`
35
35
  - `readStoredActiveConversationId(scope = {})`
36
36
  - `writeStoredActiveConversationId(scope = {}, conversationId)`
37
- - `buildId(prefix = "id")`
38
- - `normalizeToolName(value)`
39
37
  - `normalizeConversationStatus(value)`
40
38
  - `formatConversationStartedAt(value)`
41
- - `parseToolResultPayload(value)`
42
- - `buildHistory(messages)`
43
- - `mapTranscriptEntriesToAssistantState(entries)`
44
39
  - `resolveRuntimePolicy()`
45
40
  - `createRuntimeApi({ overrideApi = null, resolveBasePath, resolveSurfaceId = null } = {})`
46
41
 
@@ -55,12 +50,28 @@ Exports
55
50
  Exports
56
51
  - `AssistantClientProvider`
57
52
 
53
+ ### `src/client/support/assistantRuntimeState.js`
54
+ Exports
55
+ - `buildHistory(messages)`
56
+ - `buildId(prefix = "id")`
57
+ - `interruptPendingToolEvents(toolEvents)`
58
+ - `mapTranscriptEntriesToAssistantState(entries)`
59
+ - `normalizeToolName(value)`
60
+
58
61
  ### `src/client/support/composerInputSupport.js`
59
62
  Exports
60
63
  - `insertTextAtSelection(source = "", selectionStart, selectionEnd, text = "")`
61
64
  Local functions
62
65
  - `normalizeSelectionBoundary(value, fallback, max)`
63
66
 
67
+ ### `src/client/support/conversationRestoreSupport.js`
68
+ Exports
69
+ - `loadConversationTranscript({ fetchPage, pageSize = DEFAULT_RESTORE_MESSAGES_PAGE_SIZE, maxEntries = DEFAULT_RESTORE_MESSAGES_MAX_ENTRIES } = {})`
70
+ - `resolveConversationRestorePolicy({ pageSize, maxEntries } = {})`
71
+ Local functions
72
+ - `normalizeBoundedPositiveInteger(value, fallback, maximum)`
73
+ - `normalizeTotalPages(value)`
74
+
64
75
  ### `src/client/support/workspaceScopeSupport.js`
65
76
  Exports
66
77
  - `EMPTY_WORKSPACE_WEB_SCOPE_SUPPORT`
@@ -162,6 +173,8 @@ Local functions
162
173
  - `normalizeStreamInput(payload = {})`
163
174
  - `hasStreamWriter(streamWriter)`
164
175
  - `isAbortError(error)`
176
+ - `requiresCurrentTime(value = "")`
177
+ - `resolvePreflightTools(toolDescriptors = [], input = "")`
165
178
  - `extractTextDelta(deltaContent)`
166
179
  - `toCompactJson(value, fallback = "{}")`
167
180
  - `buildToolContractLine(toolDescriptor = {})`
@@ -171,11 +184,9 @@ Local functions
171
184
  - `toSafeToolResultText(value)`
172
185
  - `buildToolOutcomeFallbackAnswer({ toolFailures = [], toolSuccesses = [] } = {})`
173
186
  - `sanitizeAssistantMessageText(value)`
174
- - `buildAssistantToolCallMessage({ assistantText = "", toolCalls = [] } = {})`
187
+ - `buildAssistantToolCallMessage(toolCalls = [])`
175
188
  - `parseDsmlToolCallsFromText(value = "")`
176
- - `createDsmlDeltaSanitizer()`
177
- - `consumeCompletionStream({ stream, streamWriter, emitDeltas = true, deltaSanitizer = null } = {})`
178
- - `mergeAssistantMessageText(streamedText = "", completionText = "")`
189
+ - `consumeCompletionStream(stream)`
179
190
  - `requireAssistantSurface(appConfig = {}, targetSurfaceId = "")`
180
191
  - `buildAssistantActionContext(context = {}, assistantSurface = {})`
181
192
 
@@ -206,6 +217,10 @@ Local functions
206
217
  - `buildCatalogOptions(appConfig = {}, surfaceId = "")`
207
218
  - `requireContextSurfaceId(context = {})`
208
219
 
220
+ ### `src/shared/assistantResponseText.js`
221
+ Exports
222
+ - `isAssistantProgressOnlyText(value)`
223
+
209
224
  ### `src/shared/assistantRuntimeConfig.js`
210
225
  Exports
211
226
  - `assistantRuntimeConfig`
@@ -15,7 +15,7 @@ A concrete Fastify, Vue, and JSKIT application foundation for products that do n
15
15
 
16
16
  - Id: `app/minimal-foundation`
17
17
  - Keywords: `app`, `fastify`, `foundation`, `minimal`, `server`, `vite`, `vue`
18
- - Owner: `@jskit-ai/agent-docs@0.1.144`
18
+ - Owner: `@jskit-ai/agent-docs@0.1.146`
19
19
  - Read: `node_modules/@jskit-ai/agent-docs/patterns/minimal-foundation/PATTERN.md`
20
20
  - Examples: `node_modules/@jskit-ai/agent-docs/patterns/minimal-foundation/example/`
21
21
  - Requires: `@jskit-ai/http-runtime`, `@jskit-ai/kernel`
@@ -26,7 +26,7 @@ A concrete JSKIT web application foundation with responsive shell navigation, se
26
26
 
27
27
  - Id: `app/shell-foundation`
28
28
  - Keywords: `app`, `foundation`, `material`, `navigation`, `placements`, `shell`, `vite`, `vue`
29
- - Owner: `@jskit-ai/agent-docs@0.1.144`
29
+ - Owner: `@jskit-ai/agent-docs@0.1.146`
30
30
  - Read: `node_modules/@jskit-ai/agent-docs/patterns/shell-foundation/PATTERN.md`
31
31
  - Examples: `node_modules/@jskit-ai/agent-docs/patterns/shell-foundation/example/`
32
32
  - Requires: `@jskit-ai/http-runtime`, `@jskit-ai/kernel`, `@jskit-ai/shell-web`
@@ -37,7 +37,7 @@ Configure an assistant runtime for one application surface and expose its chat a
37
37
 
38
38
  - Id: `assistant/assistant-surface`
39
39
  - Keywords: `ai`, `assistant`, `chat`, `config`, `environment`, `page`, `placement`, `settings`, `surface`
40
- - Owner: `@jskit-ai/assistant-runtime@0.1.143`
40
+ - Owner: `@jskit-ai/assistant-runtime@0.1.145`
41
41
  - Read: `node_modules/@jskit-ai/assistant-runtime/patterns/assistant-surface/PATTERN.md`
42
42
  - Examples: `node_modules/@jskit-ai/assistant-runtime/patterns/assistant-surface/example/`
43
43
  - Requires: `@jskit-ai/assistant-runtime`, `@jskit-ai/shell-web`
@@ -48,7 +48,7 @@ Compose JSKIT authentication routes, views, profile controls, and public surface
48
48
 
49
49
  - Id: `auth/auth-surface`
50
50
  - Keywords: `account`, `auth`, `login`, `logout`, `password`, `placement`, `profile`, `reset`, `surface`
51
- - Owner: `@jskit-ai/auth-web@0.1.172`
51
+ - Owner: `@jskit-ai/auth-web@0.1.174`
52
52
  - Read: `node_modules/@jskit-ai/auth-web/patterns/auth-surface/PATTERN.md`
53
53
  - Examples: `node_modules/@jskit-ai/auth-web/patterns/auth-surface/example/`
54
54
  - Requires: `@jskit-ai/auth-core`, `@jskit-ai/auth-web`, `@jskit-ai/shell-web`
@@ -59,7 +59,7 @@ Add Supabase authentication through normal npm composition, explicit environment
59
59
 
60
60
  - Id: `auth/supabase-auth`
61
61
  - Keywords: `auth`, `authentication`, `oauth`, `sessions`, `supabase`
62
- - Owner: `@jskit-ai/auth-provider-supabase-core@0.1.169`
62
+ - Owner: `@jskit-ai/auth-provider-supabase-core@0.1.171`
63
63
  - Read: `node_modules/@jskit-ai/auth-provider-supabase-core/patterns/supabase-auth/PATTERN.md`
64
64
  - Examples: `node_modules/@jskit-ai/auth-provider-supabase-core/patterns/supabase-auth/example/`
65
65
  - Requires: `@jskit-ai/auth-provider-supabase-core`
@@ -70,7 +70,7 @@ Add a protected administration surface, settings shell, and semantic navigation
70
70
 
71
71
  - Id: `console/console-surface`
72
72
  - Keywords: `admin`, `console`, `navigation`, `owner`, `placement`, `settings`, `surface`
73
- - Owner: `@jskit-ai/console-web@0.1.140`
73
+ - Owner: `@jskit-ai/console-web@0.1.142`
74
74
  - Read: `node_modules/@jskit-ai/console-web/patterns/console-surface/PATTERN.md`
75
75
  - Examples: `node_modules/@jskit-ai/console-web/patterns/console-surface/example/`
76
76
  - Requires: `@jskit-ai/console-core`, `@jskit-ai/console-web`, `@jskit-ai/shell-web`
@@ -81,7 +81,7 @@ Build a routed CRUD user interface as thin application pages over JSKIT's shared
81
81
 
82
82
  - Id: `crud/crud-screen-set`
83
83
  - Keywords: `actions`, `add`, `crud`, `delete`, `edit`, `filters`, `list`, `material`, `routes`, `view`, `vue`
84
- - Owner: `@jskit-ai/http-web@0.1.17`
84
+ - Owner: `@jskit-ai/http-web@0.1.19`
85
85
  - Read: `node_modules/@jskit-ai/http-web/patterns/crud-screen-set/PATTERN.md`
86
86
  - Examples: `node_modules/@jskit-ai/http-web/patterns/crud-screen-set/example/`
87
87
  - Requires: `@jskit-ai/http-web`, `@jskit-ai/resource-crud-core`
@@ -92,7 +92,7 @@ Build a complete application-owned CRUD server package from a migration, resourc
92
92
 
93
93
  - Id: `crud/json-api-resource-package`
94
94
  - Keywords: `actions`, `crud`, `database`, `json-api`, `migration`, `permissions`, `provider`, `repository`, `routes`, `service`
95
- - Owner: `@jskit-ai/crud-core@0.1.183`
95
+ - Owner: `@jskit-ai/crud-core@0.1.185`
96
96
  - Read: `node_modules/@jskit-ai/crud-core/patterns/json-api-resource-package/PATTERN.md`
97
97
  - Examples: `node_modules/@jskit-ai/crud-core/patterns/json-api-resource-package/example/`
98
98
  - Requires: `@jskit-ai/crud-core`, `@jskit-ai/resource-crud-core`
@@ -103,7 +103,7 @@ Define an authenticated application resource whose records belong to the current
103
103
 
104
104
  - Id: `crud/resource-contract`
105
105
  - Keywords: `authenticated`, `crud`, `database`, `owner-scoped`, `resource`, `user`
106
- - Owner: `@jskit-ai/resource-crud-core@0.1.114`
106
+ - Owner: `@jskit-ai/resource-crud-core@0.1.116`
107
107
  - Read: `node_modules/@jskit-ai/resource-crud-core/patterns/resource-contract/PATTERN.md`
108
108
  - Examples: `node_modules/@jskit-ai/resource-crud-core/patterns/resource-contract/example/`
109
109
  - Requires: `@jskit-ai/resource-crud-core`
@@ -114,7 +114,7 @@ Configure a JSKIT application for MySQL with a fixed driver, ordinary environmen
114
114
 
115
115
  - Id: `database/mysql-application`
116
116
  - Keywords: `database`, `knex`, `mariadb`, `migrations`, `mysql`, `mysql2`
117
- - Owner: `@jskit-ai/database-runtime-mysql@0.1.170`
117
+ - Owner: `@jskit-ai/database-runtime-mysql@0.1.172`
118
118
  - Read: `node_modules/@jskit-ai/database-runtime-mysql/patterns/mysql-application/PATTERN.md`
119
119
  - Examples: `node_modules/@jskit-ai/database-runtime-mysql/patterns/mysql-application/example/`
120
120
  - Requires: `@jskit-ai/database-runtime-mysql`
@@ -125,7 +125,7 @@ Configure a JSKIT application for PostgreSQL with a fixed driver, ordinary envir
125
125
 
126
126
  - Id: `database/postgres-application`
127
127
  - Keywords: `database`, `knex`, `migrations`, `pg`, `postgres`, `postgresql`
128
- - Owner: `@jskit-ai/database-runtime-postgres@0.1.169`
128
+ - Owner: `@jskit-ai/database-runtime-postgres@0.1.171`
129
129
  - Read: `node_modules/@jskit-ai/database-runtime-postgres/patterns/postgres-application/PATTERN.md`
130
130
  - Examples: `node_modules/@jskit-ai/database-runtime-postgres/patterns/postgres-application/example/`
131
131
  - Requires: `@jskit-ai/database-runtime-postgres`
@@ -136,7 +136,7 @@ Wrap a JSKIT web application in a Capacitor Android shell using native Capacitor
136
136
 
137
137
  - Id: `mobile/android-application`
138
138
  - Keywords: `android`, `capacitor`, `device`, `mobile`, `native`, `shell`, `webview`
139
- - Owner: `@jskit-ai/mobile-capacitor@0.1.107`
139
+ - Owner: `@jskit-ai/mobile-capacitor@0.1.109`
140
140
  - Read: `node_modules/@jskit-ai/mobile-capacitor/patterns/android-application/PATTERN.md`
141
141
  - Examples: `node_modules/@jskit-ai/mobile-capacitor/patterns/android-application/example/`
142
142
  - Requires: `@capacitor/android`, `@capacitor/app`, `@capacitor/cli`, `@jskit-ai/mobile-capacitor`
@@ -147,7 +147,7 @@ Add JSKIT realtime events with an optional Redis backplane and an explicit shell
147
147
 
148
148
  - Id: `realtime/realtime-application`
149
149
  - Keywords: `realtime`, `redis`, `socket.io`, `sockets`, `status`, `websocket`
150
- - Owner: `@jskit-ai/realtime@0.1.169`
150
+ - Owner: `@jskit-ai/realtime@0.1.171`
151
151
  - Read: `node_modules/@jskit-ai/realtime/patterns/realtime-application/PATTERN.md`
152
152
  - Examples: `node_modules/@jskit-ai/realtime/patterns/realtime-application/example/`
153
153
  - Requires: `@jskit-ai/realtime`, `@jskit-ai/shell-web`
@@ -158,7 +158,7 @@ Define a server feature through explicit capabilities and first-class actions, a
158
158
 
159
159
  - Id: `server/feature-package`
160
160
  - Keywords: `actions`, `feature`, `json-rest`, `knex`, `orchestration`, `package`, `provider`, `repository`, `routes`, `server`
161
- - Owner: `@jskit-ai/agent-docs@0.1.144`
161
+ - Owner: `@jskit-ai/agent-docs@0.1.146`
162
162
  - Read: `node_modules/@jskit-ai/agent-docs/patterns/feature-package/PATTERN.md`
163
163
  - Examples: `node_modules/@jskit-ai/agent-docs/patterns/feature-package/example/`
164
164
  - Requires: `@jskit-ai/kernel`
@@ -169,7 +169,7 @@ Compose the JSKIT responsive shell, semantic placements, settings navigation, an
169
169
 
170
170
  - Id: `shell/application-shell`
171
171
  - Keywords: `adaptive`, `app`, `layout`, `navigation`, `placement`, `responsive`, `settings`, `shell`
172
- - Owner: `@jskit-ai/shell-web@0.1.176`
172
+ - Owner: `@jskit-ai/shell-web@0.1.178`
173
173
  - Read: `node_modules/@jskit-ai/shell-web/patterns/application-shell/PATTERN.md`
174
174
  - Examples: `node_modules/@jskit-ai/shell-web/patterns/application-shell/example/`
175
175
  - Requires: `@jskit-ai/kernel`, `@jskit-ai/shell-web`
@@ -180,7 +180,7 @@ Add product routes and shell extensions through file routing, semantic placement
180
180
 
181
181
  - Id: `ui/page-and-placement`
182
182
  - Keywords: `component`, `navigation`, `outlet`, `page`, `placement`, `routes`, `section`, `shell`, `subpages`, `vue`
183
- - Owner: `@jskit-ai/shell-web@0.1.176`
183
+ - Owner: `@jskit-ai/shell-web@0.1.178`
184
184
  - Read: `node_modules/@jskit-ai/shell-web/patterns/page-and-placement/PATTERN.md`
185
185
  - Examples: `node_modules/@jskit-ai/shell-web/patterns/page-and-placement/example/`
186
186
  - Requires: `@jskit-ai/kernel`, `@jskit-ai/shell-web`
@@ -191,7 +191,7 @@ Compose an account settings route and profile, preference, and notification sect
191
191
 
192
192
  - Id: `users/account-settings`
193
193
  - Keywords: `account`, `notifications`, `preferences`, `profile`, `settings`, `user`, `vue`
194
- - Owner: `@jskit-ai/users-web@0.1.190`
194
+ - Owner: `@jskit-ai/users-web@0.1.192`
195
195
  - Read: `node_modules/@jskit-ai/users-web/patterns/account-settings/PATTERN.md`
196
196
  - Examples: `node_modules/@jskit-ai/users-web/patterns/account-settings/example/`
197
197
  - Requires: `@jskit-ai/shell-web`, `@jskit-ai/users-core`, `@jskit-ai/users-web`
@@ -202,7 +202,7 @@ Expose user administration and workspace-scoped member operations through app-ow
202
202
 
203
203
  - Id: `users/user-administration-server`
204
204
  - Keywords: `account`, `admin`, `member`, `repository`, `resource`, `routes`, `service`, `user`, `workspace`
205
- - Owner: `@jskit-ai/users-core@0.1.185`
205
+ - Owner: `@jskit-ai/users-core@0.1.187`
206
206
  - Read: `node_modules/@jskit-ai/users-core/patterns/user-administration-server/PATTERN.md`
207
207
  - Examples: `node_modules/@jskit-ai/users-core/patterns/user-administration-server/example/`
208
208
  - Requires: `@jskit-ai/crud-core`, `@jskit-ai/users-core`
@@ -213,7 +213,7 @@ Configure roles, workspace access policy, invitations, and app-owned invitation
213
213
 
214
214
  - Id: `workspaces/workspace-server`
215
215
  - Keywords: `access`, `invite`, `membership`, `multitenancy`, `policy`, `role`, `tenancy`, `workspace`
216
- - Owner: `@jskit-ai/workspaces-core@0.1.150`
216
+ - Owner: `@jskit-ai/workspaces-core@0.1.152`
217
217
  - Read: `node_modules/@jskit-ai/workspaces-core/patterns/workspace-server/PATTERN.md`
218
218
  - Examples: `node_modules/@jskit-ai/workspaces-core/patterns/workspace-server/example/`
219
219
  - Requires: `@jskit-ai/users-core`, `@jskit-ai/workspaces-core`
@@ -224,7 +224,7 @@ Compose workspace selection, invitation, member administration, settings, and re
224
224
 
225
225
  - Id: `workspaces/workspace-surfaces`
226
226
  - Keywords: `admin`, `invite`, `member`, `navigation`, `settings`, `surface`, `switcher`, `workspace`
227
- - Owner: `@jskit-ai/workspaces-web@0.1.151`
227
+ - Owner: `@jskit-ai/workspaces-web@0.1.153`
228
228
  - Read: `node_modules/@jskit-ai/workspaces-web/patterns/workspace-surfaces/PATTERN.md`
229
229
  - Examples: `node_modules/@jskit-ai/workspaces-web/patterns/workspace-surfaces/example/`
230
230
  - Requires: `@jskit-ai/shell-web`, `@jskit-ai/workspaces-core`, `@jskit-ai/workspaces-web`