@jskit-ai/agent-docs 0.1.193 → 0.1.195
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/guide/agent/app-extras/assistant-conversation.md +2608 -72
- package/guide/agent/app-extras/assistant-voice.md +244 -0
- package/guide/agent/app-extras/assistant.md +189 -20
- package/guide/agent/app-extras/realtime.md +6 -0
- package/guide/agent/app-setup/database-layer.md +74 -5
- package/guide/agent/app-setup/existing-application-migration.md +34 -29
- package/guide/agent/app-setup/multi-homing.md +93 -116
- package/guide/agent/framework/crud-operations.md +16 -2
- package/guide/agent/index.md +1 -0
- package/package.json +1 -1
- package/patterns/feature-package/example/booking-engine/package.json +1 -1
- package/patterns/minimal-foundation/example/package.json +4 -4
- package/patterns/shell-foundation/example/package.json +5 -5
- package/patterns/shell-foundation/example/packages/main/package.json +1 -1
- package/reference/autogen/PATTERN_INDEX.md +35 -35
- package/reference/autogen/README.md +2 -0
- package/reference/autogen/packages/assistant-core.md +974 -9
- package/reference/autogen/packages/assistant-runtime.md +126 -28
- package/reference/autogen/packages/assistant-voice-sherpa.md +82 -0
- package/reference/autogen/packages/assistant-voice.md +227 -0
- package/reference/autogen/packages/kernel.md +10 -0
- package/reference/autogen/packages/realtime.md +5 -2
- package/skills/jskit/SKILL.md +1 -1
- package/skills/jskit/references/crud-operations.md +16 -2
- package/skills/jskit/references/existing-application-migration.md +34 -29
- package/skills/jskit/references/multi-homing.md +93 -116
- package/skills/jskit/references/pattern-index.md +35 -35
- package/skills/jskit/references/patterns/app/minimal-foundation/example/package.json +4 -4
- package/skills/jskit/references/patterns/app/shell-foundation/example/package.json +5 -5
- package/skills/jskit/references/patterns/app/shell-foundation/example/packages/main/package.json +1 -1
- package/skills/jskit/references/patterns/auth/supabase-auth/example/package.json +1 -1
- package/skills/jskit/references/patterns/connectors/calendar-cli/example/package.json +4 -4
- package/skills/jskit/references/patterns/crud/json-api-resource-package/example/packages/books/package.json +2 -2
- package/skills/jskit/references/patterns/database/mysql-application/example/package.json +1 -1
- package/skills/jskit/references/patterns/database/postgres-application/example/package.json +1 -1
- package/skills/jskit/references/patterns/realtime/realtime-application/example/package.json +2 -2
- package/skills/jskit/references/patterns/server/feature-package/example/booking-engine/package.json +1 -1
- package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users/package.json +2 -2
- package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users-workspace/package.json +3 -3
- package/skills/jskit/references/patterns/workspaces/workspace-server/PATTERN.md +23 -28
|
@@ -224,33 +224,28 @@ or unresolved write.
|
|
|
224
224
|
|
|
225
225
|
### Workspace invitation transaction compatibility (workspaces-core 0.1.198)
|
|
226
226
|
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
`members.
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
The first coordinated release containing this contract includes
|
|
227
|
+
Invitation creation, acceptance and refusal now own their managed transactions:
|
|
228
|
+
|
|
229
|
+
- Replace `members.createInvite(..., { trx })` with
|
|
230
|
+
`members.prepareInvite(..., { trx })`, save the application association/receipt,
|
|
231
|
+
commit, then call `members.sendInvite(...)` without `trx`.
|
|
232
|
+
- Move related acceptance writes into
|
|
233
|
+
`pendingInvitations.registerAcceptanceParticipant(fn)` during feature setup.
|
|
234
|
+
Acceptance/refusal reject borrowed transactions; revocation can still join one.
|
|
235
|
+
- Terminal repository transitions reject accepted/revoked invitations. Mailer
|
|
236
|
+
exceptions return a fixed message to keep tokens out of provider diagnostics.
|
|
237
|
+
|
|
238
|
+
Participant writes roll back together. Preserve transaction outcomes when handling
|
|
239
|
+
errors: completion-hook failures cannot undo a commit, and expiry revocation
|
|
240
|
+
commits before returning 409. See the
|
|
241
|
+
[workspace invitation contract and example](./multi-homing.md#transactional-invitation-participation).
|
|
242
|
+
Action IDs, response shapes and schema are unchanged.
|
|
243
|
+
|
|
244
|
+
The first coordinated release includes
|
|
247
245
|
`@jskit-ai/workspaces-core@0.1.198`, `@jskit-ai/jskit-catalog@0.1.245` and
|
|
248
|
-
`@jskit-ai/agent-docs@0.1.192`.
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
that `prepareInvite`, `sendInvite` and `registerAcceptanceParticipant` are present
|
|
252
|
-
on the resolved capability. Application domain integration and real email
|
|
253
|
-
activation remain separate work.
|
|
246
|
+
`@jskit-ai/agent-docs@0.1.192`. Run `npm run jskit:update`, restart the backend,
|
|
247
|
+
and check the installed versions and methods on `workspaces.core`. Application
|
|
248
|
+
integration and real email activation remain separate work.
|
|
254
249
|
|
|
255
250
|
## 4. Adopt migrations without breaking either database history
|
|
256
251
|
|
|
@@ -261,9 +256,15 @@ historical migration when moving it so the existing Knex ledger continues to
|
|
|
261
256
|
recognize it. Basenames must be unique across the effective graph.
|
|
262
257
|
|
|
263
258
|
Keep cross-package foreign keys and other dependency-sensitive constraints in
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
the
|
|
259
|
+
application `migrations/constraints/`, the final phase of
|
|
260
|
+
`createKnexMigrationConfigFromApp()`. It uses `sortDirsSeparately: true`: root
|
|
261
|
+
`migrations/` runs before the sorted package directories, and filenames only
|
|
262
|
+
order work within their own directory. A later timestamp in a package does not
|
|
263
|
+
defer its foreign key until another package has created the parent table.
|
|
264
|
+
Follow the [database ordering and partial-failure recovery rules](https://mobily-enterprises.github.io/jskit-ai/guide/app-setup/database-layer#directory-order-comes-before-filenames),
|
|
265
|
+
including independent checks for columns and constraints after MySQL or MariaDB
|
|
266
|
+
DDL fails. Seeds are not migrations: run one explicit application-owned,
|
|
267
|
+
idempotent seed after the complete graph has migrated.
|
|
267
268
|
|
|
268
269
|
Prove both histories:
|
|
269
270
|
|
|
@@ -274,6 +275,10 @@ Prove both histories:
|
|
|
274
275
|
with the intended schema.
|
|
275
276
|
3. Run the normal migrate-then-seed entry point twice. The second run must have
|
|
276
277
|
no pending migration and the seed must be safe and stable.
|
|
278
|
+
4. In disposable fixtures, prove upgrade from the previous schema preserves
|
|
279
|
+
rows, and multi-step MySQL or MariaDB DDL resumes from partial completion
|
|
280
|
+
with the intended foreign keys enforced. Read-only ledger inspection alone
|
|
281
|
+
does not prove an upgrade or recovery.
|
|
277
282
|
|
|
278
283
|
A managed editor allocates one isolated mutable development database per
|
|
279
284
|
session. It owns creation, credentials, lifetime, and environment injection;
|
|
@@ -41,23 +41,20 @@ a policy/runtime mismatch.
|
|
|
41
41
|
|
|
42
42
|
## Transactional invitation participation
|
|
43
43
|
|
|
44
|
-
Use
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
`workspace.invite.redeem` action runs the participant. No replacement route,
|
|
49
|
-
client follow-up save or after-action event is needed.
|
|
44
|
+
Use `workspaces.core` to connect application records during the built-in
|
|
45
|
+
`workspace.invite.redeem` action. JSKIT owns tokens, invitation state and
|
|
46
|
+
membership. The application owns its reviewed person association, training,
|
|
47
|
+
access scopes and audit records.
|
|
50
48
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
49
|
+
Keep intended access in an application draft until an administrator issues an
|
|
50
|
+
invitation. Preparation creates a token and pending invitation without activating
|
|
51
|
+
membership or sending mail.
|
|
54
52
|
|
|
55
53
|
### Public server methods
|
|
56
54
|
|
|
57
|
-
These
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
validation. Do not forward arbitrary HTTP input as server composition options.
|
|
55
|
+
These server APIs require the caller to authorize creation, delivery and
|
|
56
|
+
revocation in the requested workspace. Ordinary invitation routes retain their
|
|
57
|
+
authorization and role checks. Do not pass arbitrary HTTP input as options.
|
|
61
58
|
|
|
62
59
|
| Capability method | Contract |
|
|
63
60
|
| --- | --- |
|
|
@@ -70,20 +67,18 @@ validation. Do not forward arbitrary HTTP input as server composition options.
|
|
|
70
67
|
|
|
71
68
|
`sendInvite` accepts `{ createdInviteId, inviteTokenPreview }` from preparation or
|
|
72
69
|
only `{ createdInviteId }` for a later attempt. The latter uses JSKIT's existing
|
|
73
|
-
opaque token-hash encoding without rotating the token.
|
|
74
|
-
|
|
75
|
-
|
|
70
|
+
opaque token-hash encoding without rotating the token. Empty or mismatched tokens
|
|
71
|
+
reject. Email, role, expiry and workspace display fields come from stored records.
|
|
72
|
+
The response includes
|
|
76
73
|
`createdInviteId`, `inviteTokenPreview`, `inviteUrl` and `inviteDelivery` alongside
|
|
77
|
-
the ordinary workspace/invitation-list payload.
|
|
78
|
-
|
|
79
|
-
A receipt normally needs only the exact invitation ID.
|
|
74
|
+
the ordinary workspace/invitation-list payload. Keep tokens and URLs out of logs,
|
|
75
|
+
diagnostics and administrative receipts; save the invitation ID in the receipt.
|
|
80
76
|
|
|
81
77
|
### Preparation, association, commit and controlled delivery
|
|
82
78
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
Their writes must forward the provided transaction to their repositories.
|
|
79
|
+
Declare `workspaces: "workspaces.core"` in the application's feature `requires`.
|
|
80
|
+
In this example, `reviewedPeople`, `people`, `scopes` and `audit` are application
|
|
81
|
+
services. Each forwards the supplied transaction to its repositories.
|
|
87
82
|
|
|
88
83
|
```js
|
|
89
84
|
// During application Feature.setup, before serving requests:
|
|
@@ -118,25 +113,22 @@ const prepared = await invites.withTransaction(async (trx) => {
|
|
|
118
113
|
}, options);
|
|
119
114
|
await reviewedPeople.associateInvitationAndSaveReceipt(reviewed, requestId, created.createdInviteId, options);
|
|
120
115
|
return { createdInviteId: created.createdInviteId };
|
|
121
|
-
});
|
|
116
|
+
});
|
|
122
117
|
|
|
123
118
|
const result = await members.sendInvite(workspace, actor, prepared, { context });
|
|
124
|
-
//
|
|
125
|
-
// it contains a secret token and URL as well as the nonsecret delivery outcome.
|
|
119
|
+
// Store the delivery outcome, not the token or URL in result.
|
|
126
120
|
await reviewedPeople.recordDeliveryOutcome(prepared.createdInviteId, result.inviteDelivery, { context });
|
|
127
121
|
```
|
|
128
122
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
idempotency, and does not imply exactly-once email.
|
|
123
|
+
Lock the reviewed draft/receipt and reject changed input on a reused request ID.
|
|
124
|
+
After a lost preparation response, read the receipt instead of preparing another
|
|
125
|
+
invitation. Association failure rolls back the new invitation, replacement of
|
|
126
|
+
the previous invitation, receipt and application writes. Send only after the
|
|
127
|
+
transaction resolves successfully.
|
|
135
128
|
|
|
136
|
-
|
|
137
|
-
`
|
|
138
|
-
|
|
139
|
-
committed. A test application can configure a controlled mailer:
|
|
129
|
+
With no `workspaceInviteMailer`, delivery returns `status: "mailer_unconfigured"`,
|
|
130
|
+
an explanatory `message` and an empty `providerMessageId`; the invitation remains
|
|
131
|
+
committed. Use a controlled mailer in tests; SMTP is unnecessary:
|
|
140
132
|
|
|
141
133
|
```js
|
|
142
134
|
workspaceInviteMailer: {
|
|
@@ -147,86 +139,75 @@ workspaceInviteMailer: {
|
|
|
147
139
|
}
|
|
148
140
|
```
|
|
149
141
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
before sending; revocation after sending starts cannot recall the message.
|
|
142
|
+
Renderer/mailer exceptions return `inviteDelivery.status: "failed"` with a fixed
|
|
143
|
+
message to keep provider errors from exposing tokens. Persistence is unchanged.
|
|
144
|
+
Successful mailer results retain their normalized status, message and provider
|
|
145
|
+
message ID; the default status is `sent`.
|
|
146
|
+
|
|
147
|
+
A provider may accept a message before throwing or losing its response. The
|
|
148
|
+
application must track delivery attempts and decide when to retry; email is not
|
|
149
|
+
exactly once. Revocation after sending starts cannot recall a message.
|
|
159
150
|
|
|
160
151
|
### Acceptance and failure semantics
|
|
161
152
|
|
|
162
|
-
Register one callback during feature setup
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
Acceptance
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
and
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
A
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
Keep `error.transactionOutcome` and `error.cause` when translating failures.
|
|
200
|
-
`rolledBack` confirms rollback; `committed` can indicate a completion-hook error
|
|
201
|
-
after successful persistence; `unknown` leaves the outcome unresolved. A thrown
|
|
202
|
-
error alone does not prove rollback. After-commit failures and external effects
|
|
203
|
-
cannot be included in the atomic guarantee. See
|
|
153
|
+
Register one callback during feature setup to call the required application
|
|
154
|
+
services. Non-functions throw `TypeError`; duplicate registration throws, and
|
|
155
|
+
registration closes when acceptance/refusal first begins. The callback's invite,
|
|
156
|
+
user and options are shallow frozen. JSKIT owns the transaction and passes its
|
|
157
|
+
`trx` and request `context` to the callback.
|
|
158
|
+
|
|
159
|
+
Acceptance checks authentication, recipient email, pending state and expiry under
|
|
160
|
+
workspace/invitation locks. Before calling the participant, it activates membership
|
|
161
|
+
with the stored invitation role, including when updating an existing membership.
|
|
162
|
+
The participant must use application data to check the review version, workspace,
|
|
163
|
+
current inviter authority, person eligibility, existing account link and scope
|
|
164
|
+
eligibility. Client input cannot authorize role or scope overrides.
|
|
165
|
+
|
|
166
|
+
An ordinary invitation without an application association may pass through.
|
|
167
|
+
Reject stale, revoked, conflicting or unexpectedly missing associations. Retain
|
|
168
|
+
enough review history to distinguish ordinary invitations from deleted associations.
|
|
169
|
+
|
|
170
|
+
Await every write with the same transaction and let failures propagate. The
|
|
171
|
+
callback must not commit, roll back, create transactions/savepoints or perform
|
|
172
|
+
external effects. Participant and later invitation-status failures roll back
|
|
173
|
+
membership (including its previous role/status), person/training links, scopes,
|
|
174
|
+
audit and accepted status. Invalid invitations and refusals do not call the
|
|
175
|
+
participant. Acceptance/refusal reject borrowed `options.trx`; revocation can
|
|
176
|
+
join a managed transaction or create one.
|
|
177
|
+
|
|
178
|
+
Acceptance/refusal return 401 for unauthenticated access, 403 for a recipient
|
|
179
|
+
email mismatch and 404 for a missing or handled invitation. A matching recipient's
|
|
180
|
+
expired invitation is revoked and committed before returning 409 with
|
|
181
|
+
`transactionOutcome: "committed"`, without activating membership or calling the
|
|
182
|
+
participant. A failed revocation commit retains its transaction error. Delivery
|
|
183
|
+
returns 404 for missing, foreign or handled invitations, 409 for expiry and 400
|
|
184
|
+
for a token mismatch.
|
|
185
|
+
|
|
186
|
+
Preserve `error.transactionOutcome` and `error.cause`: `rolledBack` confirms
|
|
187
|
+
rollback, `committed` can accompany a failed completion hook, and `unknown`
|
|
188
|
+
requires resolving the outcome before retrying. Errors after commit cannot undo
|
|
189
|
+
persistence. See
|
|
204
190
|
[managed transaction guidance](./existing-application-migration.md#json-rest-v2-integration).
|
|
205
191
|
|
|
206
|
-
Invitation mutations lock workspace before invitation rows
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
same workspace serialize. Database deadlocks/serialization failures remain
|
|
212
|
-
transaction errors; callbacks are not automatically replayed.
|
|
192
|
+
Invitation mutations lock workspace before invitation rows. A losing acceptance,
|
|
193
|
+
refusal, revocation or replacement cannot overwrite accepted/revoked state.
|
|
194
|
+
Replacement can create a new pending invitation after acceptance while retaining
|
|
195
|
+
the accepted invitation. Keep callbacks short: invitation changes in one workspace
|
|
196
|
+
serialize. Deadlocks/serialization failures propagate without replaying callbacks.
|
|
213
197
|
|
|
214
198
|
### Compatibility and verification
|
|
215
199
|
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
refusal, revocation and replacement in both winning orders. The package fixture
|
|
228
|
-
runs these races on native MySQL/MariaDB and PostgreSQL; SQLite skips those races
|
|
229
|
-
and is not evidence of native locking correctness.
|
|
200
|
+
Since `@jskit-ai/workspaces-core@0.1.198`, transactional `createInvite` callers
|
|
201
|
+
must use preparation followed by delivery after commit. Move related acceptance
|
|
202
|
+
writes into the participant. `markAcceptedById` and `revokeById` reject missing
|
|
203
|
+
or handled invitations. Route/action IDs, package exports and schema are unchanged.
|
|
204
|
+
|
|
205
|
+
Test through the normal redeem action: ordinary invitations, rollback after
|
|
206
|
+
application and final status writes, existing membership restoration, invalid
|
|
207
|
+
recipients/associations, controlled delivery failures and lost-response receipts.
|
|
208
|
+
The package fixture tests competing acceptance, refusal, revocation and replacement
|
|
209
|
+
in both winning orders on independent MySQL/MariaDB and PostgreSQL connections.
|
|
210
|
+
SQLite skips those races.
|
|
230
211
|
|
|
231
212
|
Use only a verified empty disposable database named
|
|
232
213
|
`jskit_repository_test_*` for native tests. The runner verifies the actual target,
|
|
@@ -239,17 +220,13 @@ node --test packages/workspaces-core/test/repositories.integration.test.js
|
|
|
239
220
|
npm run verify
|
|
240
221
|
```
|
|
241
222
|
|
|
242
|
-
|
|
243
|
-
permissions, privacy or browser integration. Publication remains a separate
|
|
244
|
-
maintainer operation. After a coordinated release is published, run the
|
|
245
|
-
application's `npm run jskit:update`, restart its backend and verify that
|
|
223
|
+
Run the application's `npm run jskit:update`, restart its backend and verify that
|
|
246
224
|
`members.prepareInvite`, `members.sendInvite` and
|
|
247
225
|
`pendingInvitations.registerAcceptanceParticipant` are functions on the installed
|
|
248
|
-
`workspaces.core` capability.
|
|
249
|
-
against that release. The first coordinated release containing this contract pairs
|
|
226
|
+
`workspaces.core` capability. The first release containing this contract pairs
|
|
250
227
|
`@jskit-ai/workspaces-core@0.1.198`, `@jskit-ai/jskit-catalog@0.1.245` and
|
|
251
|
-
`@jskit-ai/agent-docs@0.1.192`. Upgrade the coordinated dependency graph
|
|
252
|
-
|
|
228
|
+
`@jskit-ai/agent-docs@0.1.192`. Upgrade the coordinated dependency graph, then run
|
|
229
|
+
the application's identity, training, permission, privacy and browser tests.
|
|
253
230
|
|
|
254
231
|
## Browser composition
|
|
255
232
|
|
|
@@ -75,7 +75,21 @@ Migrations are immutable application source owned with their resource. Never
|
|
|
75
75
|
make a live table or a generator the sole source of truth. Inspect schemas for
|
|
76
76
|
adoption and diagnosis; inspection is optional.
|
|
77
77
|
|
|
78
|
-
|
|
79
|
-
|
|
78
|
+
Read [ordering and recovery](https://mobily-enterprises.github.io/jskit-ai/guide/app-setup/database-layer#directory-order-comes-before-filenames)
|
|
79
|
+
before schema work; check Knex configuration and ledger.
|
|
80
|
+
`createKnexMigrationConfigFromApp()` uses `sortDirsSeparately: true`: root
|
|
81
|
+
`migrations/`, sorted package directories, then `migrations/constraints/`.
|
|
82
|
+
Timestamps order only within directories. Keep tables/columns with their package;
|
|
83
|
+
put cross-package foreign keys in the final phase.
|
|
84
|
+
|
|
85
|
+
MySQL/MariaDB can leave committed DDL without a ledger entry. Check columns and
|
|
86
|
+
keys separately; `hasColumn()` is insufficient. Validate existing definitions,
|
|
87
|
+
complete missing work, and plan recovery for blocked steps. Preserve applied
|
|
88
|
+
bodies and relocated basenames. Never disable foreign-key checks or skip parents.
|
|
89
|
+
|
|
90
|
+
On the selected engine, prove fresh preparation, upgrades preserving rows,
|
|
91
|
+
partial-DDL retries, and a second preparation with no pending migrations.
|
|
92
|
+
Inspect constraints and test rejected references and delete behavior.
|
|
93
|
+
|
|
80
94
|
Do not create a workboard entry, ownership receipt, generation record, or
|
|
81
95
|
historical proof that tooling ran.
|
package/guide/agent/index.md
CHANGED
|
@@ -32,6 +32,7 @@ apply or adapt. It does not prescribe an agent host or project orchestrator.
|
|
|
32
32
|
- [Mobile Capacitor](/guide/app-extras/mobile-capacitor)
|
|
33
33
|
- [Realtime](/guide/app-extras/realtime)
|
|
34
34
|
- [Assistant](/guide/app-extras/assistant)
|
|
35
|
+
- [Voice conversations](/guide/app-extras/assistant-voice)
|
|
35
36
|
|
|
36
37
|
## How to use the guide
|
|
37
38
|
|
package/package.json
CHANGED
|
@@ -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.
|
|
37
|
+
"@jskit-ai/kernel": "0.1.223",
|
|
38
38
|
"@tanstack/vue-query": "^5.101.0",
|
|
39
39
|
"fastify": "^5.8.5",
|
|
40
40
|
"json-rest-schema": "^1.0.17",
|
|
@@ -42,13 +42,13 @@
|
|
|
42
42
|
"vue": "^3.5.43",
|
|
43
43
|
"vue-router": "^5.3.1",
|
|
44
44
|
"vuetify": "^4.1.2",
|
|
45
|
-
"@jskit-ai/http-runtime": "0.1.
|
|
45
|
+
"@jskit-ai/http-runtime": "0.1.221",
|
|
46
46
|
"@fastify/fast-json-stringify-compiler": "^5.1.0",
|
|
47
47
|
"@vue/devtools-api": "^8.2.1"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
|
-
"@jskit-ai/config-eslint": "0.1.
|
|
51
|
-
"@jskit-ai/jskit-catalog": "0.1.
|
|
50
|
+
"@jskit-ai/config-eslint": "0.1.220",
|
|
51
|
+
"@jskit-ai/jskit-catalog": "0.1.248",
|
|
52
52
|
"@playwright/test": "1.61.1",
|
|
53
53
|
"@vitejs/plugin-vue": "^6.0.7",
|
|
54
54
|
"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.
|
|
37
|
+
"@jskit-ai/kernel": "0.1.223",
|
|
38
38
|
"@tanstack/vue-query": "^5.101.0",
|
|
39
39
|
"fastify": "^5.8.5",
|
|
40
40
|
"json-rest-schema": "^1.0.17",
|
|
@@ -42,15 +42,15 @@
|
|
|
42
42
|
"vue": "^3.5.43",
|
|
43
43
|
"vue-router": "^5.3.1",
|
|
44
44
|
"vuetify": "^4.1.2",
|
|
45
|
-
"@jskit-ai/http-runtime": "0.1.
|
|
45
|
+
"@jskit-ai/http-runtime": "0.1.221",
|
|
46
46
|
"@mdi/js": "^7.4.47",
|
|
47
|
-
"@jskit-ai/shell-web": "0.1.
|
|
47
|
+
"@jskit-ai/shell-web": "0.1.227",
|
|
48
48
|
"@fastify/fast-json-stringify-compiler": "^5.1.0",
|
|
49
49
|
"@vue/devtools-api": "^8.2.1"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
|
-
"@jskit-ai/config-eslint": "0.1.
|
|
53
|
-
"@jskit-ai/jskit-catalog": "0.1.
|
|
52
|
+
"@jskit-ai/config-eslint": "0.1.220",
|
|
53
|
+
"@jskit-ai/jskit-catalog": "0.1.248",
|
|
54
54
|
"@playwright/test": "1.61.1",
|
|
55
55
|
"@vitejs/plugin-vue": "^6.0.7",
|
|
56
56
|
"eslint": "^10.8.0",
|