@jskit-ai/agent-docs 0.1.309 → 0.1.311
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-setup/authentication.md +48 -0
- package/guide/agent/app-setup/multi-homing.md +7 -1
- package/guide/agent/framework/side-effects.md +5 -1
- package/package.json +1 -1
- package/patterns/minimal-foundation/example/package.json +3 -2
- package/patterns/shell-foundation/example/package.json +4 -3
- package/reference/autogen/PATTERN_INDEX.md +33 -33
- package/reference/autogen/packages/assistant-core.md +11 -1
- package/reference/autogen/packages/auth-provider-local-core.md +4 -2
- package/reference/autogen/packages/http-web.md +5 -1
- package/reference/autogen/packages/material-web.md +18 -0
- package/reference/autogen/tooling/jskit-catalog.md +1 -0
- package/skills/jskit/references/heuristics/client-requests.md +2 -2
- package/skills/jskit/references/multi-homing.md +7 -1
- package/skills/jskit/references/pattern-index.md +33 -33
- package/skills/jskit/references/patterns/app/minimal-foundation/example/package.json +3 -2
- package/skills/jskit/references/patterns/app/shell-foundation/example/package.json +4 -3
- package/skills/jskit/references/patterns/auth/accounts-hub/example/package.json +1 -1
- package/skills/jskit/references/patterns/auth/oidc-sign-in/example/package.json +2 -2
- package/skills/jskit/references/patterns/connectors/calendar-cli/example/package.json +2 -2
- package/skills/jskit/references/patterns/crud/crud-feature-package/example/packages/books/package.json +1 -1
- package/skills/jskit/references/patterns/realtime/realtime-application/example/package.json +2 -2
- 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 +4 -4
- package/skills/jskit/references/side-effects.md +5 -1
|
@@ -210,6 +210,54 @@ composition, pass the sender as `confirmationSender` to
|
|
|
210
210
|
`resolveLocalAuthConfig()`; without one, pass
|
|
211
211
|
`createLoggedConfirmationSender(logger)`.
|
|
212
212
|
|
|
213
|
+
In a test copy (`SIDE_EFFECTS` is not `live`, see
|
|
214
|
+
[Side effects and test copies](/guide/framework/side-effects)), local auth puts
|
|
215
|
+
its own simulated sender in place of an installed
|
|
216
|
+
`auth.local.confirmation-sender`, whatever that sender does: it sends nothing,
|
|
217
|
+
logs each link for the person testing, and keeps the link out of the answer.
|
|
218
|
+
The application's sender never runs there, so no code may depend on it having
|
|
219
|
+
run, such as code that confirms a registration with the link its sender was
|
|
220
|
+
given: in a test copy that code gets no link.
|
|
221
|
+
|
|
222
|
+
An application that confirms new accounts at once while its email isn't set up
|
|
223
|
+
says so with the optional `auth.local.confirmation-mode` capability, a function
|
|
224
|
+
that receives `{ email }` for each registration that would wait for its link
|
|
225
|
+
and answers `"link"` (send the link, as without the capability) or
|
|
226
|
+
`"without-link"` (create the account and sign the person in at once, as a
|
|
227
|
+
confirmed registration does, with the `auth.local.user.registered` hook). The
|
|
228
|
+
account it creates has an address nobody proved, so answer `"without-link"`
|
|
229
|
+
only when the application accepts that. Any other answer means `"link"` and
|
|
230
|
+
logs a warning. Local auth asks only while email confirmation is on and the
|
|
231
|
+
address isn't proven already (an invitation or the first account's setup
|
|
232
|
+
code). The mode sends nothing, so a test copy keeps it and registers as the
|
|
233
|
+
live copy does, while the sender is still replaced. It does not stand in for a
|
|
234
|
+
sender: a production server still needs one, or
|
|
235
|
+
`AUTH_LOCAL_EMAIL_CONFIRMATION=false`, and `"link"` registrations are sent
|
|
236
|
+
through it. An application that never sends a link sets
|
|
237
|
+
`AUTH_LOCAL_EMAIL_CONFIRMATION=false` instead.
|
|
238
|
+
|
|
239
|
+
```js
|
|
240
|
+
import { defineProvider } from "@jskit-ai/kernel/shared/capabilities";
|
|
241
|
+
|
|
242
|
+
// Beside the application's confirmation sender, which emails the link once email is set up.
|
|
243
|
+
export const ConfirmationModeProvider = defineProvider({
|
|
244
|
+
id: "app.confirmation-mode",
|
|
245
|
+
requires: { mail: "app.mail" },
|
|
246
|
+
provides: { confirmationMode: "auth.local.confirmation-mode" },
|
|
247
|
+
/** @param {{ mail: import("@local/mail/server/types").AppMail }} capabilities */
|
|
248
|
+
setup({ mail }) {
|
|
249
|
+
/** @type {import("@jskit-ai/auth-provider-local-core/server/types").AuthLocalConfirmationMode} */
|
|
250
|
+
async function confirmationMode() {
|
|
251
|
+
return (await mail.isSetUp()) ? "link" : "without-link";
|
|
252
|
+
}
|
|
253
|
+
return { confirmationMode };
|
|
254
|
+
}
|
|
255
|
+
});
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
For direct library composition, pass it as `confirmationMode` to
|
|
259
|
+
`createLocalAuthService()`.
|
|
260
|
+
|
|
213
261
|
| Env | Default | Meaning |
|
|
214
262
|
| --- | --- | --- |
|
|
215
263
|
| `AUTH_LOCAL_EMAIL_CONFIRMATION` | on | `false` registers and signs in at once, without confirming the email. |
|
|
@@ -226,7 +226,13 @@ grows with the workspace, and a lookup per row multiplies it.
|
|
|
226
226
|
|
|
227
227
|
To send invitation email, provide the optional `workspaces.invite-mailer`
|
|
228
228
|
capability from one of the application's providers. Without one, invitations
|
|
229
|
-
are still created and delivery reports `mailer_unconfigured`.
|
|
229
|
+
are still created and delivery reports `mailer_unconfigured`. After **Send
|
|
230
|
+
invite**, the Members panel's notice follows the delivery status: `sent` says
|
|
231
|
+
the invite was sent; `simulated` (a test copy, whose `SIDE_EFFECTS` is not
|
|
232
|
+
`live`) and `mailer_unconfigured` say no email was sent; `failed` is a warning
|
|
233
|
+
that the email failed. Each of those three points to the invite link, which
|
|
234
|
+
the panel shows under the form with its **Copy** button. A status the panel
|
|
235
|
+
does not know says only that the invite was created. The mailer, typed
|
|
230
236
|
`WorkspaceInviteMailer` in `@jskit-ai/workspaces-core/server/types`, is an
|
|
231
237
|
object whose `sendWorkspaceInvite(message, options)` receives `{ inviteId,
|
|
232
238
|
email, inviteUrl, workspace, inviter, roleSid, expiresAt, locale, message }`,
|
|
@@ -31,7 +31,11 @@ purpose: any host can set it. The host sets it; a request never chooses it.
|
|
|
31
31
|
- The server logs once at startup whether it acts for real. A production server
|
|
32
32
|
that simulates logs a warning.
|
|
33
33
|
- Local-password emails (confirmation and password reset) with an installed
|
|
34
|
-
sender are logged, not sent
|
|
34
|
+
sender are logged, not sent: local auth uses its own simulated sender in
|
|
35
|
+
place of the application's, which never runs in a test copy. An application
|
|
36
|
+
that confirms new accounts at once while its email isn't set up uses
|
|
37
|
+
`auth.local.confirmation-mode`, which a test copy keeps (see
|
|
38
|
+
[Authentication](/guide/app-setup/authentication)).
|
|
35
39
|
- Workspace invitations with a provided mailer are logged. The invitation
|
|
36
40
|
answers `status: "simulated"`, and the inviter copies the link.
|
|
37
41
|
- Accounts-hub email is logged, not sent.
|
package/package.json
CHANGED
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"@local/main": "0.1.0",
|
|
36
36
|
"@fastify/static": "^10.1.3",
|
|
37
37
|
"@jskit-ai/kernel": "0.2.21",
|
|
38
|
-
"@jskit-ai/material-web": "0.1.
|
|
38
|
+
"@jskit-ai/material-web": "0.1.6",
|
|
39
39
|
"@tanstack/vue-query": "^5.101.0",
|
|
40
40
|
"fastify": "^5.12.7",
|
|
41
41
|
"pino": "^10.3.1",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"@jskit-ai/config-eslint": "0.1.251",
|
|
53
|
-
"@jskit-ai/jskit-catalog": "0.2.
|
|
53
|
+
"@jskit-ai/jskit-catalog": "0.2.63",
|
|
54
54
|
"@playwright/test": "1.61.1",
|
|
55
55
|
"@vitejs/plugin-vue": "^6.0.7",
|
|
56
56
|
"eslint": "^10.8.0",
|
|
@@ -59,6 +59,7 @@
|
|
|
59
59
|
"vitest": "^4.1.9"
|
|
60
60
|
},
|
|
61
61
|
"allowScripts": {
|
|
62
|
+
"@jskit-ai/material-web": true,
|
|
62
63
|
"fsevents@2.3.2": true,
|
|
63
64
|
"fsevents@2.3.3": true,
|
|
64
65
|
"vue-demi@0.14.10": true
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"@local/main": "0.1.0",
|
|
36
36
|
"@fastify/static": "^10.1.3",
|
|
37
37
|
"@jskit-ai/kernel": "0.2.21",
|
|
38
|
-
"@jskit-ai/material-web": "0.1.
|
|
38
|
+
"@jskit-ai/material-web": "0.1.6",
|
|
39
39
|
"@tanstack/vue-query": "^5.101.0",
|
|
40
40
|
"fastify": "^5.12.7",
|
|
41
41
|
"pino": "^10.3.1",
|
|
@@ -45,13 +45,13 @@
|
|
|
45
45
|
"vue-router": "^5.3.1",
|
|
46
46
|
"vuetify": "^4.3.0",
|
|
47
47
|
"@jskit-ai/http-runtime": "0.2.21",
|
|
48
|
-
"@jskit-ai/shell-web": "0.2.
|
|
48
|
+
"@jskit-ai/shell-web": "0.2.30",
|
|
49
49
|
"@fastify/fast-json-stringify-compiler": "^5.1.0",
|
|
50
50
|
"@vue/devtools-api": "^8.2.1"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
53
|
"@jskit-ai/config-eslint": "0.1.251",
|
|
54
|
-
"@jskit-ai/jskit-catalog": "0.2.
|
|
54
|
+
"@jskit-ai/jskit-catalog": "0.2.63",
|
|
55
55
|
"@playwright/test": "1.61.1",
|
|
56
56
|
"@vitejs/plugin-vue": "^6.0.7",
|
|
57
57
|
"eslint": "^10.8.0",
|
|
@@ -60,6 +60,7 @@
|
|
|
60
60
|
"vitest": "^4.1.9"
|
|
61
61
|
},
|
|
62
62
|
"allowScripts": {
|
|
63
|
+
"@jskit-ai/material-web": true,
|
|
63
64
|
"fsevents@2.3.2": true,
|
|
64
65
|
"fsevents@2.3.3": true,
|
|
65
66
|
"vue-demi@0.14.10": true
|
|
@@ -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.
|
|
18
|
+
- Owner: `@jskit-ai/agent-docs@0.1.311`
|
|
19
19
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/app/minimal-foundation/PATTERN.md)
|
|
20
20
|
- Examples: [example/](../../skills/jskit/references/patterns/app/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.
|
|
29
|
+
- Owner: `@jskit-ai/agent-docs@0.1.311`
|
|
30
30
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/app/shell-foundation/PATTERN.md)
|
|
31
31
|
- Examples: [example/](../../skills/jskit/references/patterns/app/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.2.
|
|
40
|
+
- Owner: `@jskit-ai/assistant-runtime@0.2.53`
|
|
41
41
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/assistant/assistant-surface/PATTERN.md)
|
|
42
42
|
- Examples: [example/](../../skills/jskit/references/patterns/assistant/assistant-surface/example/)
|
|
43
43
|
- Requires: `@jskit-ai/assistant-runtime`, `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`, `@jskit-ai/shell-web`
|
|
@@ -48,7 +48,7 @@ Run one OpenID Connect sign-in for all of an owner's apps as its own JSKIT proje
|
|
|
48
48
|
|
|
49
49
|
- Id: `auth/accounts-hub`
|
|
50
50
|
- Keywords: `accounts hub`, `auth`, `authentication`, `issuer`, `master login`, `oidc`, `openid connect`, `single sign-on`, `sso`
|
|
51
|
-
- Owner: `@jskit-ai/oidc-issuer-core@0.1.
|
|
51
|
+
- Owner: `@jskit-ai/oidc-issuer-core@0.1.31`
|
|
52
52
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/auth/accounts-hub/PATTERN.md)
|
|
53
53
|
- Examples: [example/](../../skills/jskit/references/patterns/auth/accounts-hub/example/)
|
|
54
54
|
- Requires: `@jskit-ai/oidc-issuer-core`
|
|
@@ -59,7 +59,7 @@ Compose JSKIT authentication routes, views, profile controls, and public surface
|
|
|
59
59
|
|
|
60
60
|
- Id: `auth/auth-surface`
|
|
61
61
|
- Keywords: `account`, `auth`, `login`, `logout`, `password`, `placement`, `profile`, `reset`, `surface`
|
|
62
|
-
- Owner: `@jskit-ai/auth-web@0.2.
|
|
62
|
+
- Owner: `@jskit-ai/auth-web@0.2.32`
|
|
63
63
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/auth/auth-surface/PATTERN.md)
|
|
64
64
|
- Examples: [example/](../../skills/jskit/references/patterns/auth/auth-surface/example/)
|
|
65
65
|
- Requires: `@jskit-ai/auth-core`, `@jskit-ai/auth-web`, `@jskit-ai/shell-web`
|
|
@@ -70,7 +70,7 @@ Let people sign in with the accounts they already have in an accounts hub or ano
|
|
|
70
70
|
|
|
71
71
|
- Id: `auth/oidc-sign-in`
|
|
72
72
|
- Keywords: `accounts hub`, `auth`, `authentication`, `back-channel logout`, `dynamic client registration`, `issuer`, `master login`, `oidc`, `openid connect`, `single sign-on`, `sso`
|
|
73
|
-
- Owner: `@jskit-ai/auth-provider-oidc-core@0.2.
|
|
73
|
+
- Owner: `@jskit-ai/auth-provider-oidc-core@0.2.35`
|
|
74
74
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/auth/oidc-sign-in/PATTERN.md)
|
|
75
75
|
- Examples: [example/](../../skills/jskit/references/patterns/auth/oidc-sign-in/example/)
|
|
76
76
|
- Requires: `@jskit-ai/auth-provider-oidc-core`, `@jskit-ai/auth-web`
|
|
@@ -92,7 +92,7 @@ Resolve an administrator environment key or an individual user's grant, then use
|
|
|
92
92
|
|
|
93
93
|
- Id: `connectors/ai-connections`
|
|
94
94
|
- Keywords: `ai`, `api-key`, `cli`, `environment`, `free`, `models`, `ownership`, `zai`, `zen`
|
|
95
|
-
- Owner: `@jskit-ai/connectors-catalog@0.2.
|
|
95
|
+
- Owner: `@jskit-ai/connectors-catalog@0.2.30`
|
|
96
96
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/connectors/ai-connections/PATTERN.md)
|
|
97
97
|
- Examples: [example/](../../skills/jskit/references/patterns/connectors/ai-connections/example/)
|
|
98
98
|
- Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
|
|
@@ -103,7 +103,7 @@ Compose provider operations, authorization and encrypted file storage from a CLI
|
|
|
103
103
|
|
|
104
104
|
- Id: `connectors/api-key-connection`
|
|
105
105
|
- Keywords: `api-key`, `clay`, `cli`, `clickhouse`, `connectors`, `dbt`, `files`, `firecrawl`, `granola`, `integrations`, `metrics`, `prestashop`, `resend`, `semantic-layer`, `semrush`, `x-twitter`
|
|
106
|
-
- Owner: `@jskit-ai/connectors-catalog@0.2.
|
|
106
|
+
- Owner: `@jskit-ai/connectors-catalog@0.2.30`
|
|
107
107
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/connectors/api-key-connection/PATTERN.md)
|
|
108
108
|
- Examples: [example/](../../skills/jskit/references/patterns/connectors/api-key-connection/example/)
|
|
109
109
|
- Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
|
|
@@ -114,7 +114,7 @@ Compose token-based MCP discovery and explicitly authorized tool calls using the
|
|
|
114
114
|
|
|
115
115
|
- Id: `connectors/assistant-mcp`
|
|
116
116
|
- Keywords: `assistant`, `cli`, `connectors`, `files`, `integrations`, `mcp`, `n8n`, `sanity`
|
|
117
|
-
- Owner: `@jskit-ai/connectors-catalog@0.2.
|
|
117
|
+
- Owner: `@jskit-ai/connectors-catalog@0.2.30`
|
|
118
118
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/connectors/assistant-mcp/PATTERN.md)
|
|
119
119
|
- Examples: [example/](../../skills/jskit/references/patterns/connectors/assistant-mcp/example/)
|
|
120
120
|
- Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
|
|
@@ -125,7 +125,7 @@ Configure assistant OAuth clients, then compose existing state, encrypted file g
|
|
|
125
125
|
|
|
126
126
|
- Id: `connectors/assistant-mcp-oauth`
|
|
127
127
|
- Keywords: `amplitude`, `assistant`, `atlassian`, `canva`, `cli`, `client metadata`, `confidence`, `connectors`, `figma`, `files`, `granola`, `hex`, `mcp`, `miro`, `oauth`
|
|
128
|
-
- Owner: `@jskit-ai/connectors-catalog@0.2.
|
|
128
|
+
- Owner: `@jskit-ai/connectors-catalog@0.2.30`
|
|
129
129
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/connectors/assistant-mcp-oauth/PATTERN.md)
|
|
130
130
|
- Examples: [example/](../../skills/jskit/references/patterns/connectors/assistant-mcp-oauth/example/)
|
|
131
131
|
- Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
|
|
@@ -136,7 +136,7 @@ Compose signed AWS operations, file configuration and application authorization
|
|
|
136
136
|
|
|
137
137
|
- Id: `connectors/aws-storage-queries`
|
|
138
138
|
- Keywords: `athena`, `aws`, `cli`, `connectors`, `files`, `iam`, `queries`, `s3`, `storage`, `sts`
|
|
139
|
-
- Owner: `@jskit-ai/connectors-catalog@0.2.
|
|
139
|
+
- Owner: `@jskit-ai/connectors-catalog@0.2.30`
|
|
140
140
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/connectors/aws-storage-queries/PATTERN.md)
|
|
141
141
|
- Examples: [example/](../../skills/jskit/references/patterns/connectors/aws-storage-queries/example/)
|
|
142
142
|
- Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
|
|
@@ -147,7 +147,7 @@ Compose reusable connection libraries with portable configuration, application o
|
|
|
147
147
|
|
|
148
148
|
- Id: `connectors/calendar-cli`
|
|
149
149
|
- Keywords: `calendar`, `cli`, `connectors`, `google`, `integrations`, `oauth`, `permissions`
|
|
150
|
-
- Owner: `@jskit-ai/connector-google-calendar@0.2.
|
|
150
|
+
- Owner: `@jskit-ai/connector-google-calendar@0.2.30`
|
|
151
151
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/connectors/calendar-cli/PATTERN.md)
|
|
152
152
|
- Examples: [example/](../../skills/jskit/references/patterns/connectors/calendar-cli/example/)
|
|
153
153
|
- Requires: `@jskit-ai/connector-google-calendar`, `@jskit-ai/connectors-core`, `@jskit-ai/database-runtime-mysql`
|
|
@@ -158,7 +158,7 @@ Compose the shared connector runtime for event delivery while leaving workflow c
|
|
|
158
158
|
|
|
159
159
|
- Id: `connectors/event-delivery`
|
|
160
160
|
- Keywords: `cli`, `connectors`, `events`, `files`, `inngest`, `integrations`, `workflows`
|
|
161
|
-
- Owner: `@jskit-ai/connectors-catalog@0.2.
|
|
161
|
+
- Owner: `@jskit-ai/connectors-catalog@0.2.30`
|
|
162
162
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/connectors/event-delivery/PATTERN.md)
|
|
163
163
|
- Examples: [example/](../../skills/jskit/references/patterns/connectors/event-delivery/example/)
|
|
164
164
|
- Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
|
|
@@ -169,7 +169,7 @@ Wire service-account grants, file storage, explicit message actions and public b
|
|
|
169
169
|
|
|
170
170
|
- Id: `connectors/firebase-messaging`
|
|
171
171
|
- Keywords: `cli`, `connectors`, `fcm`, `files`, `firebase`, `integrations`, `jwt`, `notifications`, `push`, `service-account`, `vapid`
|
|
172
|
-
- Owner: `@jskit-ai/connectors-catalog@0.2.
|
|
172
|
+
- Owner: `@jskit-ai/connectors-catalog@0.2.30`
|
|
173
173
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/connectors/firebase-messaging/PATTERN.md)
|
|
174
174
|
- Examples: [example/](../../skills/jskit/references/patterns/connectors/firebase-messaging/example/)
|
|
175
175
|
- Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
|
|
@@ -180,7 +180,7 @@ Compose reviewed Search campaigns with project-owned Google OAuth and portable s
|
|
|
180
180
|
|
|
181
181
|
- Id: `connectors/google-ads-search`
|
|
182
182
|
- Keywords: `ads`, `campaigns`, `cli`, `connectors`, `conversion`, `google`, `search`
|
|
183
|
-
- Owner: `@jskit-ai/connectors-catalog@0.2.
|
|
183
|
+
- Owner: `@jskit-ai/connectors-catalog@0.2.30`
|
|
184
184
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/connectors/google-ads-search/PATTERN.md)
|
|
185
185
|
- Examples: [example/](../../skills/jskit/references/patterns/connectors/google-ads-search/example/)
|
|
186
186
|
- Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
|
|
@@ -191,7 +191,7 @@ Compose provider consent, verification and encrypted file persistence from an ap
|
|
|
191
191
|
|
|
192
192
|
- Id: `connectors/oauth-connection`
|
|
193
193
|
- Keywords: `accounting`, `assistant permissions`, `books`, `cli`, `client credentials`, `connectors`, `consent`, `crm`, `databricks`, `developer token`, `fabric`, `files`, `gaql`, `google ads`, `graphql`, `integrations`, `linkedin`, `microsoft`, `oauth`, `powerpoint`, `salesforce`, `service principal`, `shopify`, `soql`, `staffing`, `tiktok`, `twitch`, `wave`, `word`, `wordpress`, `workday`, `xero`, `zoho`
|
|
194
|
-
- Owner: `@jskit-ai/connectors-catalog@0.2.
|
|
194
|
+
- Owner: `@jskit-ai/connectors-catalog@0.2.30`
|
|
195
195
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/connectors/oauth-connection/PATTERN.md)
|
|
196
196
|
- Examples: [example/](../../skills/jskit/references/patterns/connectors/oauth-connection/example/)
|
|
197
197
|
- Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
|
|
@@ -202,7 +202,7 @@ Compose a sequential catalogue batch and preserve partial success for applicatio
|
|
|
202
202
|
|
|
203
203
|
- Id: `connectors/paddle-catalogue`
|
|
204
204
|
- Keywords: `batch`, `paddle`, `payments`, `prices`, `products`
|
|
205
|
-
- Owner: `@jskit-ai/connectors-catalog@0.2.
|
|
205
|
+
- Owner: `@jskit-ai/connectors-catalog@0.2.30`
|
|
206
206
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/connectors/paddle-catalogue/PATTERN.md)
|
|
207
207
|
- Examples: [example/](../../skills/jskit/references/patterns/connectors/paddle-catalogue/example/)
|
|
208
208
|
- Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
|
|
@@ -213,7 +213,7 @@ Resolve a publishable image key deliberately and use the shared URL library in a
|
|
|
213
213
|
|
|
214
214
|
- Id: `connectors/public-image`
|
|
215
215
|
- Keywords: `cli`, `connectors`, `files`, `images`, `integrations`, `logo-dev`, `public-key`
|
|
216
|
-
- Owner: `@jskit-ai/connectors-catalog@0.2.
|
|
216
|
+
- Owner: `@jskit-ai/connectors-catalog@0.2.30`
|
|
217
217
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/connectors/public-image/PATTERN.md)
|
|
218
218
|
- Examples: [example/](../../skills/jskit/references/patterns/connectors/public-image/example/)
|
|
219
219
|
- Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
|
|
@@ -224,7 +224,7 @@ Compose file configuration, Redshift Data API operations and application query o
|
|
|
224
224
|
|
|
225
225
|
- Id: `connectors/redshift-queries`
|
|
226
226
|
- Keywords: `aws`, `cli`, `connectors`, `files`, `iam`, `provisioned`, `redshift`, `serverless`, `sql`, `warehouse`
|
|
227
|
-
- Owner: `@jskit-ai/connectors-catalog@0.2.
|
|
227
|
+
- Owner: `@jskit-ai/connectors-catalog@0.2.30`
|
|
228
228
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/connectors/redshift-queries/PATTERN.md)
|
|
229
229
|
- Examples: [example/](../../skills/jskit/references/patterns/connectors/redshift-queries/example/)
|
|
230
230
|
- Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
|
|
@@ -235,7 +235,7 @@ Use the shared scanner runtime from a CLI or a host worker with portable configu
|
|
|
235
235
|
|
|
236
236
|
- Id: `connectors/source-scanning`
|
|
237
237
|
- Keywords: `cancellation`, `cli`, `connectors`, `integrations`, `scanning`, `security`, `source`, `wiz`, `worker`
|
|
238
|
-
- Owner: `@jskit-ai/connectors-catalog@0.2.
|
|
238
|
+
- Owner: `@jskit-ai/connectors-catalog@0.2.30`
|
|
239
239
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/connectors/source-scanning/PATTERN.md)
|
|
240
240
|
- Examples: [example/](../../skills/jskit/references/patterns/connectors/source-scanning/example/)
|
|
241
241
|
- Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
|
|
@@ -246,7 +246,7 @@ Add a protected administration surface, settings shell, and semantic navigation
|
|
|
246
246
|
|
|
247
247
|
- Id: `console/console-surface`
|
|
248
248
|
- Keywords: `admin`, `console`, `navigation`, `owner`, `placement`, `settings`, `surface`
|
|
249
|
-
- Owner: `@jskit-ai/console-web@0.1.
|
|
249
|
+
- Owner: `@jskit-ai/console-web@0.1.262`
|
|
250
250
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/console/console-surface/PATTERN.md)
|
|
251
251
|
- Examples: [example/](../../skills/jskit/references/patterns/console/console-surface/example/)
|
|
252
252
|
- Requires: `@jskit-ai/console-core`, `@jskit-ai/console-web`, `@jskit-ai/shell-web`
|
|
@@ -268,7 +268,7 @@ Build a complete application-owned CRUD server package from a migration, a table
|
|
|
268
268
|
|
|
269
269
|
- Id: `crud/crud-feature-package`
|
|
270
270
|
- Keywords: `actions`, `crud`, `database`, `defineCrudFeature`, `json-api`, `migration`, `owns`, `permissions`, `repository`, `routes`, `service`, `table resource`
|
|
271
|
-
- Owner: `@jskit-ai/crud-core@0.2.
|
|
271
|
+
- Owner: `@jskit-ai/crud-core@0.2.30`
|
|
272
272
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/crud/crud-feature-package/PATTERN.md)
|
|
273
273
|
- Examples: [example/](../../skills/jskit/references/patterns/crud/crud-feature-package/example/)
|
|
274
274
|
- Requires: `@jskit-ai/crud-core`, `@jskit-ai/resource-core`, `@jskit-ai/resource-crud-core`
|
|
@@ -279,7 +279,7 @@ Build a routed CRUD user interface as thin application pages over JSKIT's shared
|
|
|
279
279
|
|
|
280
280
|
- Id: `crud/crud-screen-set`
|
|
281
281
|
- Keywords: `actions`, `add`, `crud`, `delete`, `edit`, `filters`, `list`, `material`, `routes`, `view`, `vue`
|
|
282
|
-
- Owner: `@jskit-ai/http-web@0.2.
|
|
282
|
+
- Owner: `@jskit-ai/http-web@0.2.36`
|
|
283
283
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/crud/crud-screen-set/PATTERN.md)
|
|
284
284
|
- Examples: [example/](../../skills/jskit/references/patterns/crud/crud-screen-set/example/)
|
|
285
285
|
- Requires: `@jskit-ai/http-web`, `@jskit-ai/resource-core`, `@jskit-ai/resource-crud-core`
|
|
@@ -323,7 +323,7 @@ Wrap a JSKIT web application in a Capacitor Android shell using native Capacitor
|
|
|
323
323
|
|
|
324
324
|
- Id: `mobile/android-application`
|
|
325
325
|
- Keywords: `android`, `capacitor`, `device`, `mobile`, `native`, `shell`, `webview`
|
|
326
|
-
- Owner: `@jskit-ai/mobile-capacitor@0.2.
|
|
326
|
+
- Owner: `@jskit-ai/mobile-capacitor@0.2.30`
|
|
327
327
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/mobile/android-application/PATTERN.md)
|
|
328
328
|
- Examples: [example/](../../skills/jskit/references/patterns/mobile/android-application/example/)
|
|
329
329
|
- Requires: `@capacitor/android`, `@capacitor/app`, `@capacitor/cli`, `@jskit-ai/mobile-capacitor`
|
|
@@ -334,7 +334,7 @@ Add JSKIT realtime events with an optional Redis backplane and an explicit shell
|
|
|
334
334
|
|
|
335
335
|
- Id: `realtime/realtime-application`
|
|
336
336
|
- Keywords: `realtime`, `redis`, `socket.io`, `sockets`, `status`, `websocket`
|
|
337
|
-
- Owner: `@jskit-ai/realtime@0.2.
|
|
337
|
+
- Owner: `@jskit-ai/realtime@0.2.33`
|
|
338
338
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/realtime/realtime-application/PATTERN.md)
|
|
339
339
|
- Examples: [example/](../../skills/jskit/references/patterns/realtime/realtime-application/example/)
|
|
340
340
|
- Requires: `@jskit-ai/realtime`, `@jskit-ai/shell-web`
|
|
@@ -345,7 +345,7 @@ Compose application-owned Google Publisher Tag delivery with the generic rewarde
|
|
|
345
345
|
|
|
346
346
|
- Id: `rewards/google-rewarded`
|
|
347
347
|
- Keywords: `ads`, `google`, `publisher tag`, `rewarded`, `unlock`
|
|
348
|
-
- Owner: `@jskit-ai/rewarded-web@0.2.
|
|
348
|
+
- Owner: `@jskit-ai/rewarded-web@0.2.40`
|
|
349
349
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/rewards/google-rewarded/PATTERN.md)
|
|
350
350
|
- Examples: [example/](../../skills/jskit/references/patterns/rewards/google-rewarded/example/)
|
|
351
351
|
- Requires: `@jskit-ai/rewarded-web`
|
|
@@ -356,7 +356,7 @@ Define a server feature through explicit capabilities and first-class actions, a
|
|
|
356
356
|
|
|
357
357
|
- Id: `server/feature-package`
|
|
358
358
|
- Keywords: `actions`, `aggregate`, `feature`, `handle`, `orchestration`, `owns`, `package`, `provider`, `repository`, `routes`, `server`, `table resource`
|
|
359
|
-
- Owner: `@jskit-ai/agent-docs@0.1.
|
|
359
|
+
- Owner: `@jskit-ai/agent-docs@0.1.311`
|
|
360
360
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/server/feature-package/PATTERN.md)
|
|
361
361
|
- Examples: [example/](../../skills/jskit/references/patterns/server/feature-package/example/)
|
|
362
362
|
- Requires: `@jskit-ai/kernel`
|
|
@@ -367,7 +367,7 @@ Compose the JSKIT responsive shell, semantic placements, settings navigation, an
|
|
|
367
367
|
|
|
368
368
|
- Id: `shell/application-shell`
|
|
369
369
|
- Keywords: `adaptive`, `app`, `layout`, `navigation`, `placement`, `responsive`, `settings`, `shell`
|
|
370
|
-
- Owner: `@jskit-ai/shell-web@0.2.
|
|
370
|
+
- Owner: `@jskit-ai/shell-web@0.2.30`
|
|
371
371
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/shell/application-shell/PATTERN.md)
|
|
372
372
|
- Examples: [example/](../../skills/jskit/references/patterns/shell/application-shell/example/)
|
|
373
373
|
- Requires: `@jskit-ai/kernel`, `@jskit-ai/shell-web`
|
|
@@ -378,7 +378,7 @@ Add product routes and shell extensions through file routing, semantic placement
|
|
|
378
378
|
|
|
379
379
|
- Id: `ui/page-and-placement`
|
|
380
380
|
- Keywords: `component`, `navigation`, `outlet`, `page`, `placement`, `routes`, `section`, `shell`, `subpages`, `vue`
|
|
381
|
-
- Owner: `@jskit-ai/shell-web@0.2.
|
|
381
|
+
- Owner: `@jskit-ai/shell-web@0.2.30`
|
|
382
382
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/ui/page-and-placement/PATTERN.md)
|
|
383
383
|
- Examples: [example/](../../skills/jskit/references/patterns/ui/page-and-placement/example/)
|
|
384
384
|
- Requires: `@jskit-ai/kernel`, `@jskit-ai/shell-web`
|
|
@@ -389,7 +389,7 @@ Compose an account settings route and profile, preference, notification, and sig
|
|
|
389
389
|
|
|
390
390
|
- Id: `users/account-settings`
|
|
391
391
|
- Keywords: `account`, `link provider`, `notifications`, `oauth`, `preferences`, `profile`, `settings`, `sign-in methods`, `user`, `vue`
|
|
392
|
-
- Owner: `@jskit-ai/users-web@0.2.
|
|
392
|
+
- Owner: `@jskit-ai/users-web@0.2.45`
|
|
393
393
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/users/account-settings/PATTERN.md)
|
|
394
394
|
- Examples: [example/](../../skills/jskit/references/patterns/users/account-settings/example/)
|
|
395
395
|
- Requires: `@jskit-ai/shell-web`, `@jskit-ai/users-core`, `@jskit-ai/users-web`
|
|
@@ -400,7 +400,7 @@ Expose user administration and workspace-scoped member operations through app-ow
|
|
|
400
400
|
|
|
401
401
|
- Id: `users/user-administration-server`
|
|
402
402
|
- Keywords: `account`, `admin`, `member`, `repository`, `resource`, `routes`, `service`, `user`, `workspace`
|
|
403
|
-
- Owner: `@jskit-ai/users-core@0.2.
|
|
403
|
+
- Owner: `@jskit-ai/users-core@0.2.34`
|
|
404
404
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/users/user-administration-server/PATTERN.md)
|
|
405
405
|
- Examples: [example/](../../skills/jskit/references/patterns/users/user-administration-server/example/)
|
|
406
406
|
- Requires: `@jskit-ai/crud-core`, `@jskit-ai/users-core`
|
|
@@ -411,7 +411,7 @@ Configure roles, workspace access policy, invitations, and app-owned invitation
|
|
|
411
411
|
|
|
412
412
|
- Id: `workspaces/workspace-server`
|
|
413
413
|
- Keywords: `access`, `invite`, `membership`, `multitenancy`, `policy`, `role`, `tenancy`, `workspace`
|
|
414
|
-
- Owner: `@jskit-ai/workspaces-core@0.2.
|
|
414
|
+
- Owner: `@jskit-ai/workspaces-core@0.2.34`
|
|
415
415
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/workspaces/workspace-server/PATTERN.md)
|
|
416
416
|
- Examples: [example/](../../skills/jskit/references/patterns/workspaces/workspace-server/example/)
|
|
417
417
|
- Requires: `@jskit-ai/users-core`, `@jskit-ai/workspaces-core`
|
|
@@ -422,7 +422,7 @@ Compose workspace selection, invitation, member administration, settings, and re
|
|
|
422
422
|
|
|
423
423
|
- Id: `workspaces/workspace-surfaces`
|
|
424
424
|
- Keywords: `admin`, `invite`, `member`, `navigation`, `settings`, `surface`, `switcher`, `workspace`
|
|
425
|
-
- Owner: `@jskit-ai/workspaces-web@0.2.
|
|
425
|
+
- Owner: `@jskit-ai/workspaces-web@0.2.45`
|
|
426
426
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/workspaces/workspace-surfaces/PATTERN.md)
|
|
427
427
|
- Examples: [example/](../../skills/jskit/references/patterns/workspaces/workspace-surfaces/example/)
|
|
428
428
|
- Requires: `@jskit-ai/shell-web`, `@jskit-ai/workspaces-core`, `@jskit-ai/workspaces-web`
|
|
@@ -370,6 +370,11 @@ Local functions
|
|
|
370
370
|
Exports
|
|
371
371
|
- `createClaudeCommandRun({ bound, preparation, send, interrupt })`
|
|
372
372
|
|
|
373
|
+
### `src/server/conversation/claudeEntryStop.js`
|
|
374
|
+
Exports
|
|
375
|
+
- `setClaudeTurnState(entry, state, message = "")`
|
|
376
|
+
- `stopClaudeEntryProcess(turn, reason = "", { preparing = false } = {})`
|
|
377
|
+
|
|
373
378
|
### `src/server/conversation/claudeHistory.js`
|
|
374
379
|
Exports
|
|
375
380
|
- `claudeNativeMessageId(id)`
|
|
@@ -399,7 +404,7 @@ Exports
|
|
|
399
404
|
- `type ClaudeTurnProcess`
|
|
400
405
|
Local functions
|
|
401
406
|
- `steeringRefusal(message, { messageCode, finished })`
|
|
402
|
-
- `
|
|
407
|
+
- `unsentDelivery(error)`
|
|
403
408
|
- `claudeTurnResult(entry, current)`
|
|
404
409
|
- `claudeProviderChange(frame)`
|
|
405
410
|
- `continuesClaudeTurn(frame)`
|
|
@@ -444,6 +449,8 @@ Exports
|
|
|
444
449
|
### `src/server/conversation/claudePromptDelivery.js`
|
|
445
450
|
Exports
|
|
446
451
|
- `createClaudePromptDelivery({ store, preparation, createError, onEvent, readHistory, bindAccount, ensureProcess, snapshot })`
|
|
452
|
+
Local functions
|
|
453
|
+
- `rememberPromptProcess(entry, uuid)`
|
|
447
454
|
|
|
448
455
|
### `src/server/conversation/claudeSessionCleanup.js`
|
|
449
456
|
Exports
|
|
@@ -476,6 +483,7 @@ Exports
|
|
|
476
483
|
- `type ClaudeConversationErrorFactory`
|
|
477
484
|
Local functions
|
|
478
485
|
- `nativeWorkSettled(entry)`
|
|
486
|
+
- `promptCanStillArrive(entry, uuid)`
|
|
479
487
|
- `runsNativeWork(entry)`
|
|
480
488
|
|
|
481
489
|
### `src/server/conversation/codexAccountReader.js`
|
|
@@ -1220,6 +1228,8 @@ Exports
|
|
|
1220
1228
|
- `type ConversationEntry`
|
|
1221
1229
|
- `type ConversationRequest`
|
|
1222
1230
|
- `type ConversationDelivery`
|
|
1231
|
+
Local functions
|
|
1232
|
+
- `nativeAdmission(observation)`
|
|
1223
1233
|
|
|
1224
1234
|
### `src/server/conversation/conversationEntries.js`
|
|
1225
1235
|
Exports
|
|
@@ -59,7 +59,8 @@ Local functions
|
|
|
59
59
|
### `src/server/lib/emailConfirmation.js`
|
|
60
60
|
Exports
|
|
61
61
|
- `CONFIRMATION_TOKEN_TTL_SECONDS`
|
|
62
|
-
- `
|
|
62
|
+
- `confirmEveryRegistrationByLink()`
|
|
63
|
+
- `createLocalEmailConfirmation({ backend, config, confirmationMode, confirmationSender, firstAccountSetup, invitationContextResolver, logger, passwords, profileProjector, sessions })`
|
|
63
64
|
- `createLoggedConfirmationSender(logger)`
|
|
64
65
|
- `createSimulatedConfirmationSender(logger)`
|
|
65
66
|
Local functions
|
|
@@ -184,7 +185,7 @@ Exports
|
|
|
184
185
|
|
|
185
186
|
### `src/server/lib/service.js`
|
|
186
187
|
Exports
|
|
187
|
-
- `createLocalAuthService({ backend, config, confirmationSender, firstAccountSetup: givenFirstAccountSetup = null, invitationContextResolver, logger, passwordStrategy, profileProjector, recoverySender })`
|
|
188
|
+
- `createLocalAuthService({ backend, config, confirmationMode = confirmEveryRegistrationByLink, confirmationSender, firstAccountSetup: givenFirstAccountSetup = null, invitationContextResolver, logger, passwordStrategy, profileProjector, recoverySender })`
|
|
188
189
|
|
|
189
190
|
### `src/server/lib/sessions.js`
|
|
190
191
|
Exports
|
|
@@ -235,6 +236,7 @@ Exports
|
|
|
235
236
|
- `type AuthLocalPasswordStrategy`
|
|
236
237
|
- `type AuthLocalRecoverySender`
|
|
237
238
|
- `type AuthLocalConfirmationSender`
|
|
239
|
+
- `type AuthLocalConfirmationMode`
|
|
238
240
|
- `type AuthLocalConfig`
|
|
239
241
|
- `type AuthLocalOAuthProvider`
|
|
240
242
|
- `type AuthLocalFirstAccountSetup`
|
|
@@ -268,6 +268,7 @@ Local functions
|
|
|
268
268
|
|
|
269
269
|
### `src/client/composables/runtime/operationUiHelpers.js`
|
|
270
270
|
Exports
|
|
271
|
+
- `createLoadRetryActionFactory({ errorStatus, retry, enabled = true })`
|
|
271
272
|
- `setupRouteChangeCleanup({ enabled = true, route, feedback, onClear })`
|
|
272
273
|
- `setupOperationErrorReporting({ enabled = true, source = "http-web.operation", loadError = null, notFoundError = null, loadActionFactory = noRetryAction, notFoundActionFactory = noRetryAction, loadChannel = "", notFoundChannel = "", loadSeverity = "error", notFoundSeverity = "warning", dedupeWindowMs = 2000 } = {})`
|
|
273
274
|
Local functions
|
|
@@ -311,7 +312,7 @@ Local functions
|
|
|
311
312
|
|
|
312
313
|
### `src/client/composables/runtime/useUiFeedback.js`
|
|
313
314
|
Exports
|
|
314
|
-
- `useUiFeedback({ initialType = "success", source = "http-web.ui-feedback", successChannel = "", errorChannel = "", dedupeWindowMs = 2000 } = {})`
|
|
315
|
+
- `useUiFeedback({ initialType = "success", source = "http-web.ui-feedback", successChannel = "", warningChannel = "", errorChannel = "", dedupeWindowMs = 2000 } = {})`
|
|
315
316
|
|
|
316
317
|
### `src/client/composables/runtime/useViewCore.js`
|
|
317
318
|
Exports
|
|
@@ -325,6 +326,7 @@ Exports
|
|
|
325
326
|
|
|
326
327
|
### `src/client/composables/support/errorMessageHelpers.js`
|
|
327
328
|
Exports
|
|
329
|
+
- `toLoadRefusalMessage(error)`
|
|
328
330
|
- `toQueryErrorMessage(error, fallbackMessage = "", defaultMessage = "")`
|
|
329
331
|
- `toUiErrorMessage(error, fallbackMessage = "", defaultMessage = "")`
|
|
330
332
|
- `toUiFieldErrors(error)`
|
|
@@ -384,8 +386,10 @@ Local functions
|
|
|
384
386
|
Exports
|
|
385
387
|
- `buildRequestRecoveryMeta(requestRecovery = null, defaults = {})`
|
|
386
388
|
- `hasResolvedQueryData({ query = null, data = null } = {})`
|
|
389
|
+
- `isRetryableLoadStatus(status)`
|
|
387
390
|
- `mergeQueryMeta(queryOptions = null, meta = {})`
|
|
388
391
|
- `mergeRequestRecoveryQueryMeta(queryOptions = null, requestRecovery = null, defaults = {})`
|
|
392
|
+
- `resolveLoadErrorStatus(error)`
|
|
389
393
|
Local functions
|
|
390
394
|
- `normalizeRequestRecoveryInput(requestRecovery = null)`
|
|
391
395
|
- `normalizeRequestRecoveryValue(name, value)`
|
|
@@ -53,3 +53,21 @@ Local functions
|
|
|
53
53
|
- `resolveGlyph(iconSet, spec)`
|
|
54
54
|
- `buildSymbols(iconSet)`
|
|
55
55
|
- `main()`
|
|
56
|
+
|
|
57
|
+
### `scripts/patch-vuetify-loaders.mjs`
|
|
58
|
+
Exports
|
|
59
|
+
- `ISSUE`
|
|
60
|
+
- `LOADERS`
|
|
61
|
+
- `PATCH`
|
|
62
|
+
- `TARGETS`
|
|
63
|
+
- `findVuetifyCopies(starts)`
|
|
64
|
+
- `main({ env = process.env, cwd = process.cwd(), log = console.log } = {})`
|
|
65
|
+
- `patchSource(source, loaders)`
|
|
66
|
+
- `patchVuetify(directory)`
|
|
67
|
+
Local functions
|
|
68
|
+
- `findLoaderCall(source, name)`
|
|
69
|
+
- `replaceFile(file, text)`
|
|
70
|
+
- `isFile(file)`
|
|
71
|
+
- `nearestVuetify(start)`
|
|
72
|
+
- `nestedVuetify(nodeModules)`
|
|
73
|
+
- `isEntrypoint()`
|
|
@@ -353,6 +353,7 @@ Local functions
|
|
|
353
353
|
- `preparePackageLockForInstall(projectRoot, manifests, packageLockPath)`
|
|
354
354
|
- `findImports(root, packageIds)`
|
|
355
355
|
- `installedPackageMigrations(root)`
|
|
356
|
+
- `approveInstallScripts(manifest, declared)`
|
|
356
357
|
|
|
357
358
|
### `scripts/test-budget.mjs`
|
|
358
359
|
Exports
|
|
@@ -93,14 +93,14 @@ Why this is the standard JSKIT shape:
|
|
|
93
93
|
|
|
94
94
|
Error presentation rules:
|
|
95
95
|
|
|
96
|
-
- Resource load failures should stay local to the screen with the runtime's `loadError` state and a retry action.
|
|
96
|
+
- Resource load failures should stay local to the screen with the runtime's `loadError` state and a retry action when trying again can help. The load notices of `useList()`, `useView()` and `useAddEdit()`, and the Retry buttons of `CrudListScreen`, `CrudViewScreen` and `CrudAddEditScreen`, offer Retry only after a network failure (no status), 408, 429 or a 5xx; a refusal (401, 403, 404, 422 and other 4xx) gets none. The three runtimes expose the status as `errorStatus` (0 for a network failure), so a custom screen can tell a refusal from a network failure and hide its own Retry the same way. After a refusal a screen says why rather than suggesting the connection: the runtimes' `loadRefusalMessage` is the server's own message when the error carries one, otherwise a neutral text for the kind of refusal (401, 403, 404, another 4xx), and empty when trying again can help; the three CRUD screens show it.
|
|
97
97
|
- Do not force global banners for ordinary list/view/add-edit load failures; the shell error policy treats `resource-load` as `silent` by default.
|
|
98
98
|
- Transport/connectivity failures are different from ordinary resource-load errors. `shell-web` observes the app QueryClient and reports active safe-read query failures such as `Network request failed.` or `Failed to fetch` through request recovery with a `Retry` action that calls `query.refetch()`.
|
|
99
99
|
- User-visible reads should be TanStack Query-backed through `useEndpointResource()`, `useList()`, `useView()`, `useAddEdit()`, or CRUD screen composables. Do not load panel data with raw `fetch(...)` plus manual request recovery reporting.
|
|
100
100
|
- Automatic shell request recovery is for `GET` and `HEAD` read refetches. Do not use it to replay `POST`, `PATCH`, `PUT`, or `DELETE`; saving and command screens own their mutation state and feedback.
|
|
101
101
|
- JSKIT read composables mark their Query entries with `jskit.requestRecoveryMethod`. For hand-written TanStack Query reads outside those composables, set `meta.jskit.requestRecoveryMethod` to `GET` or `HEAD`.
|
|
102
102
|
- Use `requestRecoveryLabel` on JSKIT read composables, or query meta `jskit.requestRecoveryLabel`, when the recovery banner needs a better label. Use `jskit.requestRecovery = false` only when a query owns its full connectivity recovery UI.
|
|
103
|
-
- Use `useUiFeedback()` or `useCommand()` for user-triggered action feedback. Those flows report `action-feedback`, and the app-owned shell error policy decides the channel.
|
|
103
|
+
- Use `useUiFeedback()` or `useCommand()` for user-triggered action feedback. Those flows report `action-feedback`, and the app-owned shell error policy decides the channel. An action that did its work with a catch the person must act on (an invitation created but not emailed) reports through `useUiFeedback().warning()`, not `success()`.
|
|
104
104
|
- Use explicit shell error intents only for exceptional app-level cases: `app-recoverable` for recoverable shell/runtime failures and `blocking` for failures that require user attention.
|
|
105
105
|
|
|
106
106
|
Avoid:
|
|
@@ -226,7 +226,13 @@ grows with the workspace, and a lookup per row multiplies it.
|
|
|
226
226
|
|
|
227
227
|
To send invitation email, provide the optional `workspaces.invite-mailer`
|
|
228
228
|
capability from one of the application's providers. Without one, invitations
|
|
229
|
-
are still created and delivery reports `mailer_unconfigured`.
|
|
229
|
+
are still created and delivery reports `mailer_unconfigured`. After **Send
|
|
230
|
+
invite**, the Members panel's notice follows the delivery status: `sent` says
|
|
231
|
+
the invite was sent; `simulated` (a test copy, whose `SIDE_EFFECTS` is not
|
|
232
|
+
`live`) and `mailer_unconfigured` say no email was sent; `failed` is a warning
|
|
233
|
+
that the email failed. Each of those three points to the invite link, which
|
|
234
|
+
the panel shows under the form with its **Copy** button. A status the panel
|
|
235
|
+
does not know says only that the invite was created. The mailer, typed
|
|
230
236
|
`WorkspaceInviteMailer` in `@jskit-ai/workspaces-core/server/types`, is an
|
|
231
237
|
object whose `sendWorkspaceInvite(message, options)` receives `{ inviteId,
|
|
232
238
|
email, inviteUrl, workspace, inviter, roleSid, expiresAt, locale, message }`,
|
|
@@ -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.
|
|
18
|
+
- Owner: `@jskit-ai/agent-docs@0.1.311`
|
|
19
19
|
- Read: [PATTERN.md](patterns/app/minimal-foundation/PATTERN.md)
|
|
20
20
|
- Examples: [example/](patterns/app/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.
|
|
29
|
+
- Owner: `@jskit-ai/agent-docs@0.1.311`
|
|
30
30
|
- Read: [PATTERN.md](patterns/app/shell-foundation/PATTERN.md)
|
|
31
31
|
- Examples: [example/](patterns/app/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.2.
|
|
40
|
+
- Owner: `@jskit-ai/assistant-runtime@0.2.53`
|
|
41
41
|
- Read: [PATTERN.md](patterns/assistant/assistant-surface/PATTERN.md)
|
|
42
42
|
- Examples: [example/](patterns/assistant/assistant-surface/example/)
|
|
43
43
|
- Requires: `@jskit-ai/assistant-runtime`, `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`, `@jskit-ai/shell-web`
|
|
@@ -48,7 +48,7 @@ Run one OpenID Connect sign-in for all of an owner's apps as its own JSKIT proje
|
|
|
48
48
|
|
|
49
49
|
- Id: `auth/accounts-hub`
|
|
50
50
|
- Keywords: `accounts hub`, `auth`, `authentication`, `issuer`, `master login`, `oidc`, `openid connect`, `single sign-on`, `sso`
|
|
51
|
-
- Owner: `@jskit-ai/oidc-issuer-core@0.1.
|
|
51
|
+
- Owner: `@jskit-ai/oidc-issuer-core@0.1.31`
|
|
52
52
|
- Read: [PATTERN.md](patterns/auth/accounts-hub/PATTERN.md)
|
|
53
53
|
- Examples: [example/](patterns/auth/accounts-hub/example/)
|
|
54
54
|
- Requires: `@jskit-ai/oidc-issuer-core`
|
|
@@ -59,7 +59,7 @@ Compose JSKIT authentication routes, views, profile controls, and public surface
|
|
|
59
59
|
|
|
60
60
|
- Id: `auth/auth-surface`
|
|
61
61
|
- Keywords: `account`, `auth`, `login`, `logout`, `password`, `placement`, `profile`, `reset`, `surface`
|
|
62
|
-
- Owner: `@jskit-ai/auth-web@0.2.
|
|
62
|
+
- Owner: `@jskit-ai/auth-web@0.2.32`
|
|
63
63
|
- Read: [PATTERN.md](patterns/auth/auth-surface/PATTERN.md)
|
|
64
64
|
- Examples: [example/](patterns/auth/auth-surface/example/)
|
|
65
65
|
- Requires: `@jskit-ai/auth-core`, `@jskit-ai/auth-web`, `@jskit-ai/shell-web`
|
|
@@ -70,7 +70,7 @@ Let people sign in with the accounts they already have in an accounts hub or ano
|
|
|
70
70
|
|
|
71
71
|
- Id: `auth/oidc-sign-in`
|
|
72
72
|
- Keywords: `accounts hub`, `auth`, `authentication`, `back-channel logout`, `dynamic client registration`, `issuer`, `master login`, `oidc`, `openid connect`, `single sign-on`, `sso`
|
|
73
|
-
- Owner: `@jskit-ai/auth-provider-oidc-core@0.2.
|
|
73
|
+
- Owner: `@jskit-ai/auth-provider-oidc-core@0.2.35`
|
|
74
74
|
- Read: [PATTERN.md](patterns/auth/oidc-sign-in/PATTERN.md)
|
|
75
75
|
- Examples: [example/](patterns/auth/oidc-sign-in/example/)
|
|
76
76
|
- Requires: `@jskit-ai/auth-provider-oidc-core`, `@jskit-ai/auth-web`
|
|
@@ -92,7 +92,7 @@ Resolve an administrator environment key or an individual user's grant, then use
|
|
|
92
92
|
|
|
93
93
|
- Id: `connectors/ai-connections`
|
|
94
94
|
- Keywords: `ai`, `api-key`, `cli`, `environment`, `free`, `models`, `ownership`, `zai`, `zen`
|
|
95
|
-
- Owner: `@jskit-ai/connectors-catalog@0.2.
|
|
95
|
+
- Owner: `@jskit-ai/connectors-catalog@0.2.30`
|
|
96
96
|
- Read: [PATTERN.md](patterns/connectors/ai-connections/PATTERN.md)
|
|
97
97
|
- Examples: [example/](patterns/connectors/ai-connections/example/)
|
|
98
98
|
- Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
|
|
@@ -103,7 +103,7 @@ Compose provider operations, authorization and encrypted file storage from a CLI
|
|
|
103
103
|
|
|
104
104
|
- Id: `connectors/api-key-connection`
|
|
105
105
|
- Keywords: `api-key`, `clay`, `cli`, `clickhouse`, `connectors`, `dbt`, `files`, `firecrawl`, `granola`, `integrations`, `metrics`, `prestashop`, `resend`, `semantic-layer`, `semrush`, `x-twitter`
|
|
106
|
-
- Owner: `@jskit-ai/connectors-catalog@0.2.
|
|
106
|
+
- Owner: `@jskit-ai/connectors-catalog@0.2.30`
|
|
107
107
|
- Read: [PATTERN.md](patterns/connectors/api-key-connection/PATTERN.md)
|
|
108
108
|
- Examples: [example/](patterns/connectors/api-key-connection/example/)
|
|
109
109
|
- Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
|
|
@@ -114,7 +114,7 @@ Compose token-based MCP discovery and explicitly authorized tool calls using the
|
|
|
114
114
|
|
|
115
115
|
- Id: `connectors/assistant-mcp`
|
|
116
116
|
- Keywords: `assistant`, `cli`, `connectors`, `files`, `integrations`, `mcp`, `n8n`, `sanity`
|
|
117
|
-
- Owner: `@jskit-ai/connectors-catalog@0.2.
|
|
117
|
+
- Owner: `@jskit-ai/connectors-catalog@0.2.30`
|
|
118
118
|
- Read: [PATTERN.md](patterns/connectors/assistant-mcp/PATTERN.md)
|
|
119
119
|
- Examples: [example/](patterns/connectors/assistant-mcp/example/)
|
|
120
120
|
- Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
|
|
@@ -125,7 +125,7 @@ Configure assistant OAuth clients, then compose existing state, encrypted file g
|
|
|
125
125
|
|
|
126
126
|
- Id: `connectors/assistant-mcp-oauth`
|
|
127
127
|
- Keywords: `amplitude`, `assistant`, `atlassian`, `canva`, `cli`, `client metadata`, `confidence`, `connectors`, `figma`, `files`, `granola`, `hex`, `mcp`, `miro`, `oauth`
|
|
128
|
-
- Owner: `@jskit-ai/connectors-catalog@0.2.
|
|
128
|
+
- Owner: `@jskit-ai/connectors-catalog@0.2.30`
|
|
129
129
|
- Read: [PATTERN.md](patterns/connectors/assistant-mcp-oauth/PATTERN.md)
|
|
130
130
|
- Examples: [example/](patterns/connectors/assistant-mcp-oauth/example/)
|
|
131
131
|
- Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
|
|
@@ -136,7 +136,7 @@ Compose signed AWS operations, file configuration and application authorization
|
|
|
136
136
|
|
|
137
137
|
- Id: `connectors/aws-storage-queries`
|
|
138
138
|
- Keywords: `athena`, `aws`, `cli`, `connectors`, `files`, `iam`, `queries`, `s3`, `storage`, `sts`
|
|
139
|
-
- Owner: `@jskit-ai/connectors-catalog@0.2.
|
|
139
|
+
- Owner: `@jskit-ai/connectors-catalog@0.2.30`
|
|
140
140
|
- Read: [PATTERN.md](patterns/connectors/aws-storage-queries/PATTERN.md)
|
|
141
141
|
- Examples: [example/](patterns/connectors/aws-storage-queries/example/)
|
|
142
142
|
- Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
|
|
@@ -147,7 +147,7 @@ Compose reusable connection libraries with portable configuration, application o
|
|
|
147
147
|
|
|
148
148
|
- Id: `connectors/calendar-cli`
|
|
149
149
|
- Keywords: `calendar`, `cli`, `connectors`, `google`, `integrations`, `oauth`, `permissions`
|
|
150
|
-
- Owner: `@jskit-ai/connector-google-calendar@0.2.
|
|
150
|
+
- Owner: `@jskit-ai/connector-google-calendar@0.2.30`
|
|
151
151
|
- Read: [PATTERN.md](patterns/connectors/calendar-cli/PATTERN.md)
|
|
152
152
|
- Examples: [example/](patterns/connectors/calendar-cli/example/)
|
|
153
153
|
- Requires: `@jskit-ai/connector-google-calendar`, `@jskit-ai/connectors-core`, `@jskit-ai/database-runtime-mysql`
|
|
@@ -158,7 +158,7 @@ Compose the shared connector runtime for event delivery while leaving workflow c
|
|
|
158
158
|
|
|
159
159
|
- Id: `connectors/event-delivery`
|
|
160
160
|
- Keywords: `cli`, `connectors`, `events`, `files`, `inngest`, `integrations`, `workflows`
|
|
161
|
-
- Owner: `@jskit-ai/connectors-catalog@0.2.
|
|
161
|
+
- Owner: `@jskit-ai/connectors-catalog@0.2.30`
|
|
162
162
|
- Read: [PATTERN.md](patterns/connectors/event-delivery/PATTERN.md)
|
|
163
163
|
- Examples: [example/](patterns/connectors/event-delivery/example/)
|
|
164
164
|
- Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
|
|
@@ -169,7 +169,7 @@ Wire service-account grants, file storage, explicit message actions and public b
|
|
|
169
169
|
|
|
170
170
|
- Id: `connectors/firebase-messaging`
|
|
171
171
|
- Keywords: `cli`, `connectors`, `fcm`, `files`, `firebase`, `integrations`, `jwt`, `notifications`, `push`, `service-account`, `vapid`
|
|
172
|
-
- Owner: `@jskit-ai/connectors-catalog@0.2.
|
|
172
|
+
- Owner: `@jskit-ai/connectors-catalog@0.2.30`
|
|
173
173
|
- Read: [PATTERN.md](patterns/connectors/firebase-messaging/PATTERN.md)
|
|
174
174
|
- Examples: [example/](patterns/connectors/firebase-messaging/example/)
|
|
175
175
|
- Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
|
|
@@ -180,7 +180,7 @@ Compose reviewed Search campaigns with project-owned Google OAuth and portable s
|
|
|
180
180
|
|
|
181
181
|
- Id: `connectors/google-ads-search`
|
|
182
182
|
- Keywords: `ads`, `campaigns`, `cli`, `connectors`, `conversion`, `google`, `search`
|
|
183
|
-
- Owner: `@jskit-ai/connectors-catalog@0.2.
|
|
183
|
+
- Owner: `@jskit-ai/connectors-catalog@0.2.30`
|
|
184
184
|
- Read: [PATTERN.md](patterns/connectors/google-ads-search/PATTERN.md)
|
|
185
185
|
- Examples: [example/](patterns/connectors/google-ads-search/example/)
|
|
186
186
|
- Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
|
|
@@ -191,7 +191,7 @@ Compose provider consent, verification and encrypted file persistence from an ap
|
|
|
191
191
|
|
|
192
192
|
- Id: `connectors/oauth-connection`
|
|
193
193
|
- Keywords: `accounting`, `assistant permissions`, `books`, `cli`, `client credentials`, `connectors`, `consent`, `crm`, `databricks`, `developer token`, `fabric`, `files`, `gaql`, `google ads`, `graphql`, `integrations`, `linkedin`, `microsoft`, `oauth`, `powerpoint`, `salesforce`, `service principal`, `shopify`, `soql`, `staffing`, `tiktok`, `twitch`, `wave`, `word`, `wordpress`, `workday`, `xero`, `zoho`
|
|
194
|
-
- Owner: `@jskit-ai/connectors-catalog@0.2.
|
|
194
|
+
- Owner: `@jskit-ai/connectors-catalog@0.2.30`
|
|
195
195
|
- Read: [PATTERN.md](patterns/connectors/oauth-connection/PATTERN.md)
|
|
196
196
|
- Examples: [example/](patterns/connectors/oauth-connection/example/)
|
|
197
197
|
- Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
|
|
@@ -202,7 +202,7 @@ Compose a sequential catalogue batch and preserve partial success for applicatio
|
|
|
202
202
|
|
|
203
203
|
- Id: `connectors/paddle-catalogue`
|
|
204
204
|
- Keywords: `batch`, `paddle`, `payments`, `prices`, `products`
|
|
205
|
-
- Owner: `@jskit-ai/connectors-catalog@0.2.
|
|
205
|
+
- Owner: `@jskit-ai/connectors-catalog@0.2.30`
|
|
206
206
|
- Read: [PATTERN.md](patterns/connectors/paddle-catalogue/PATTERN.md)
|
|
207
207
|
- Examples: [example/](patterns/connectors/paddle-catalogue/example/)
|
|
208
208
|
- Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
|
|
@@ -213,7 +213,7 @@ Resolve a publishable image key deliberately and use the shared URL library in a
|
|
|
213
213
|
|
|
214
214
|
- Id: `connectors/public-image`
|
|
215
215
|
- Keywords: `cli`, `connectors`, `files`, `images`, `integrations`, `logo-dev`, `public-key`
|
|
216
|
-
- Owner: `@jskit-ai/connectors-catalog@0.2.
|
|
216
|
+
- Owner: `@jskit-ai/connectors-catalog@0.2.30`
|
|
217
217
|
- Read: [PATTERN.md](patterns/connectors/public-image/PATTERN.md)
|
|
218
218
|
- Examples: [example/](patterns/connectors/public-image/example/)
|
|
219
219
|
- Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
|
|
@@ -224,7 +224,7 @@ Compose file configuration, Redshift Data API operations and application query o
|
|
|
224
224
|
|
|
225
225
|
- Id: `connectors/redshift-queries`
|
|
226
226
|
- Keywords: `aws`, `cli`, `connectors`, `files`, `iam`, `provisioned`, `redshift`, `serverless`, `sql`, `warehouse`
|
|
227
|
-
- Owner: `@jskit-ai/connectors-catalog@0.2.
|
|
227
|
+
- Owner: `@jskit-ai/connectors-catalog@0.2.30`
|
|
228
228
|
- Read: [PATTERN.md](patterns/connectors/redshift-queries/PATTERN.md)
|
|
229
229
|
- Examples: [example/](patterns/connectors/redshift-queries/example/)
|
|
230
230
|
- Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
|
|
@@ -235,7 +235,7 @@ Use the shared scanner runtime from a CLI or a host worker with portable configu
|
|
|
235
235
|
|
|
236
236
|
- Id: `connectors/source-scanning`
|
|
237
237
|
- Keywords: `cancellation`, `cli`, `connectors`, `integrations`, `scanning`, `security`, `source`, `wiz`, `worker`
|
|
238
|
-
- Owner: `@jskit-ai/connectors-catalog@0.2.
|
|
238
|
+
- Owner: `@jskit-ai/connectors-catalog@0.2.30`
|
|
239
239
|
- Read: [PATTERN.md](patterns/connectors/source-scanning/PATTERN.md)
|
|
240
240
|
- Examples: [example/](patterns/connectors/source-scanning/example/)
|
|
241
241
|
- Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
|
|
@@ -246,7 +246,7 @@ Add a protected administration surface, settings shell, and semantic navigation
|
|
|
246
246
|
|
|
247
247
|
- Id: `console/console-surface`
|
|
248
248
|
- Keywords: `admin`, `console`, `navigation`, `owner`, `placement`, `settings`, `surface`
|
|
249
|
-
- Owner: `@jskit-ai/console-web@0.1.
|
|
249
|
+
- Owner: `@jskit-ai/console-web@0.1.262`
|
|
250
250
|
- Read: [PATTERN.md](patterns/console/console-surface/PATTERN.md)
|
|
251
251
|
- Examples: [example/](patterns/console/console-surface/example/)
|
|
252
252
|
- Requires: `@jskit-ai/console-core`, `@jskit-ai/console-web`, `@jskit-ai/shell-web`
|
|
@@ -268,7 +268,7 @@ Build a complete application-owned CRUD server package from a migration, a table
|
|
|
268
268
|
|
|
269
269
|
- Id: `crud/crud-feature-package`
|
|
270
270
|
- Keywords: `actions`, `crud`, `database`, `defineCrudFeature`, `json-api`, `migration`, `owns`, `permissions`, `repository`, `routes`, `service`, `table resource`
|
|
271
|
-
- Owner: `@jskit-ai/crud-core@0.2.
|
|
271
|
+
- Owner: `@jskit-ai/crud-core@0.2.30`
|
|
272
272
|
- Read: [PATTERN.md](patterns/crud/crud-feature-package/PATTERN.md)
|
|
273
273
|
- Examples: [example/](patterns/crud/crud-feature-package/example/)
|
|
274
274
|
- Requires: `@jskit-ai/crud-core`, `@jskit-ai/resource-core`, `@jskit-ai/resource-crud-core`
|
|
@@ -279,7 +279,7 @@ Build a routed CRUD user interface as thin application pages over JSKIT's shared
|
|
|
279
279
|
|
|
280
280
|
- Id: `crud/crud-screen-set`
|
|
281
281
|
- Keywords: `actions`, `add`, `crud`, `delete`, `edit`, `filters`, `list`, `material`, `routes`, `view`, `vue`
|
|
282
|
-
- Owner: `@jskit-ai/http-web@0.2.
|
|
282
|
+
- Owner: `@jskit-ai/http-web@0.2.36`
|
|
283
283
|
- Read: [PATTERN.md](patterns/crud/crud-screen-set/PATTERN.md)
|
|
284
284
|
- Examples: [example/](patterns/crud/crud-screen-set/example/)
|
|
285
285
|
- Requires: `@jskit-ai/http-web`, `@jskit-ai/resource-core`, `@jskit-ai/resource-crud-core`
|
|
@@ -323,7 +323,7 @@ Wrap a JSKIT web application in a Capacitor Android shell using native Capacitor
|
|
|
323
323
|
|
|
324
324
|
- Id: `mobile/android-application`
|
|
325
325
|
- Keywords: `android`, `capacitor`, `device`, `mobile`, `native`, `shell`, `webview`
|
|
326
|
-
- Owner: `@jskit-ai/mobile-capacitor@0.2.
|
|
326
|
+
- Owner: `@jskit-ai/mobile-capacitor@0.2.30`
|
|
327
327
|
- Read: [PATTERN.md](patterns/mobile/android-application/PATTERN.md)
|
|
328
328
|
- Examples: [example/](patterns/mobile/android-application/example/)
|
|
329
329
|
- Requires: `@capacitor/android`, `@capacitor/app`, `@capacitor/cli`, `@jskit-ai/mobile-capacitor`
|
|
@@ -334,7 +334,7 @@ Add JSKIT realtime events with an optional Redis backplane and an explicit shell
|
|
|
334
334
|
|
|
335
335
|
- Id: `realtime/realtime-application`
|
|
336
336
|
- Keywords: `realtime`, `redis`, `socket.io`, `sockets`, `status`, `websocket`
|
|
337
|
-
- Owner: `@jskit-ai/realtime@0.2.
|
|
337
|
+
- Owner: `@jskit-ai/realtime@0.2.33`
|
|
338
338
|
- Read: [PATTERN.md](patterns/realtime/realtime-application/PATTERN.md)
|
|
339
339
|
- Examples: [example/](patterns/realtime/realtime-application/example/)
|
|
340
340
|
- Requires: `@jskit-ai/realtime`, `@jskit-ai/shell-web`
|
|
@@ -345,7 +345,7 @@ Compose application-owned Google Publisher Tag delivery with the generic rewarde
|
|
|
345
345
|
|
|
346
346
|
- Id: `rewards/google-rewarded`
|
|
347
347
|
- Keywords: `ads`, `google`, `publisher tag`, `rewarded`, `unlock`
|
|
348
|
-
- Owner: `@jskit-ai/rewarded-web@0.2.
|
|
348
|
+
- Owner: `@jskit-ai/rewarded-web@0.2.40`
|
|
349
349
|
- Read: [PATTERN.md](patterns/rewards/google-rewarded/PATTERN.md)
|
|
350
350
|
- Examples: [example/](patterns/rewards/google-rewarded/example/)
|
|
351
351
|
- Requires: `@jskit-ai/rewarded-web`
|
|
@@ -356,7 +356,7 @@ Define a server feature through explicit capabilities and first-class actions, a
|
|
|
356
356
|
|
|
357
357
|
- Id: `server/feature-package`
|
|
358
358
|
- Keywords: `actions`, `aggregate`, `feature`, `handle`, `orchestration`, `owns`, `package`, `provider`, `repository`, `routes`, `server`, `table resource`
|
|
359
|
-
- Owner: `@jskit-ai/agent-docs@0.1.
|
|
359
|
+
- Owner: `@jskit-ai/agent-docs@0.1.311`
|
|
360
360
|
- Read: [PATTERN.md](patterns/server/feature-package/PATTERN.md)
|
|
361
361
|
- Examples: [example/](patterns/server/feature-package/example/)
|
|
362
362
|
- Requires: `@jskit-ai/kernel`
|
|
@@ -367,7 +367,7 @@ Compose the JSKIT responsive shell, semantic placements, settings navigation, an
|
|
|
367
367
|
|
|
368
368
|
- Id: `shell/application-shell`
|
|
369
369
|
- Keywords: `adaptive`, `app`, `layout`, `navigation`, `placement`, `responsive`, `settings`, `shell`
|
|
370
|
-
- Owner: `@jskit-ai/shell-web@0.2.
|
|
370
|
+
- Owner: `@jskit-ai/shell-web@0.2.30`
|
|
371
371
|
- Read: [PATTERN.md](patterns/shell/application-shell/PATTERN.md)
|
|
372
372
|
- Examples: [example/](patterns/shell/application-shell/example/)
|
|
373
373
|
- Requires: `@jskit-ai/kernel`, `@jskit-ai/shell-web`
|
|
@@ -378,7 +378,7 @@ Add product routes and shell extensions through file routing, semantic placement
|
|
|
378
378
|
|
|
379
379
|
- Id: `ui/page-and-placement`
|
|
380
380
|
- Keywords: `component`, `navigation`, `outlet`, `page`, `placement`, `routes`, `section`, `shell`, `subpages`, `vue`
|
|
381
|
-
- Owner: `@jskit-ai/shell-web@0.2.
|
|
381
|
+
- Owner: `@jskit-ai/shell-web@0.2.30`
|
|
382
382
|
- Read: [PATTERN.md](patterns/ui/page-and-placement/PATTERN.md)
|
|
383
383
|
- Examples: [example/](patterns/ui/page-and-placement/example/)
|
|
384
384
|
- Requires: `@jskit-ai/kernel`, `@jskit-ai/shell-web`
|
|
@@ -389,7 +389,7 @@ Compose an account settings route and profile, preference, notification, and sig
|
|
|
389
389
|
|
|
390
390
|
- Id: `users/account-settings`
|
|
391
391
|
- Keywords: `account`, `link provider`, `notifications`, `oauth`, `preferences`, `profile`, `settings`, `sign-in methods`, `user`, `vue`
|
|
392
|
-
- Owner: `@jskit-ai/users-web@0.2.
|
|
392
|
+
- Owner: `@jskit-ai/users-web@0.2.45`
|
|
393
393
|
- Read: [PATTERN.md](patterns/users/account-settings/PATTERN.md)
|
|
394
394
|
- Examples: [example/](patterns/users/account-settings/example/)
|
|
395
395
|
- Requires: `@jskit-ai/shell-web`, `@jskit-ai/users-core`, `@jskit-ai/users-web`
|
|
@@ -400,7 +400,7 @@ Expose user administration and workspace-scoped member operations through app-ow
|
|
|
400
400
|
|
|
401
401
|
- Id: `users/user-administration-server`
|
|
402
402
|
- Keywords: `account`, `admin`, `member`, `repository`, `resource`, `routes`, `service`, `user`, `workspace`
|
|
403
|
-
- Owner: `@jskit-ai/users-core@0.2.
|
|
403
|
+
- Owner: `@jskit-ai/users-core@0.2.34`
|
|
404
404
|
- Read: [PATTERN.md](patterns/users/user-administration-server/PATTERN.md)
|
|
405
405
|
- Examples: [example/](patterns/users/user-administration-server/example/)
|
|
406
406
|
- Requires: `@jskit-ai/crud-core`, `@jskit-ai/users-core`
|
|
@@ -411,7 +411,7 @@ Configure roles, workspace access policy, invitations, and app-owned invitation
|
|
|
411
411
|
|
|
412
412
|
- Id: `workspaces/workspace-server`
|
|
413
413
|
- Keywords: `access`, `invite`, `membership`, `multitenancy`, `policy`, `role`, `tenancy`, `workspace`
|
|
414
|
-
- Owner: `@jskit-ai/workspaces-core@0.2.
|
|
414
|
+
- Owner: `@jskit-ai/workspaces-core@0.2.34`
|
|
415
415
|
- Read: [PATTERN.md](patterns/workspaces/workspace-server/PATTERN.md)
|
|
416
416
|
- Examples: [example/](patterns/workspaces/workspace-server/example/)
|
|
417
417
|
- Requires: `@jskit-ai/users-core`, `@jskit-ai/workspaces-core`
|
|
@@ -422,7 +422,7 @@ Compose workspace selection, invitation, member administration, settings, and re
|
|
|
422
422
|
|
|
423
423
|
- Id: `workspaces/workspace-surfaces`
|
|
424
424
|
- Keywords: `admin`, `invite`, `member`, `navigation`, `settings`, `surface`, `switcher`, `workspace`
|
|
425
|
-
- Owner: `@jskit-ai/workspaces-web@0.2.
|
|
425
|
+
- Owner: `@jskit-ai/workspaces-web@0.2.45`
|
|
426
426
|
- Read: [PATTERN.md](patterns/workspaces/workspace-surfaces/PATTERN.md)
|
|
427
427
|
- Examples: [example/](patterns/workspaces/workspace-surfaces/example/)
|
|
428
428
|
- Requires: `@jskit-ai/shell-web`, `@jskit-ai/workspaces-core`, `@jskit-ai/workspaces-web`
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"@local/main": "0.1.0",
|
|
36
36
|
"@fastify/static": "^10.1.3",
|
|
37
37
|
"@jskit-ai/kernel": "0.2.21",
|
|
38
|
-
"@jskit-ai/material-web": "0.1.
|
|
38
|
+
"@jskit-ai/material-web": "0.1.6",
|
|
39
39
|
"@tanstack/vue-query": "^5.101.0",
|
|
40
40
|
"fastify": "^5.12.7",
|
|
41
41
|
"pino": "^10.3.1",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"@jskit-ai/config-eslint": "0.1.251",
|
|
53
|
-
"@jskit-ai/jskit-catalog": "0.2.
|
|
53
|
+
"@jskit-ai/jskit-catalog": "0.2.63",
|
|
54
54
|
"@playwright/test": "1.61.1",
|
|
55
55
|
"@vitejs/plugin-vue": "^6.0.7",
|
|
56
56
|
"eslint": "^10.8.0",
|
|
@@ -59,6 +59,7 @@
|
|
|
59
59
|
"vitest": "^4.1.9"
|
|
60
60
|
},
|
|
61
61
|
"allowScripts": {
|
|
62
|
+
"@jskit-ai/material-web": true,
|
|
62
63
|
"fsevents@2.3.2": true,
|
|
63
64
|
"fsevents@2.3.3": true,
|
|
64
65
|
"vue-demi@0.14.10": true
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"@local/main": "0.1.0",
|
|
36
36
|
"@fastify/static": "^10.1.3",
|
|
37
37
|
"@jskit-ai/kernel": "0.2.21",
|
|
38
|
-
"@jskit-ai/material-web": "0.1.
|
|
38
|
+
"@jskit-ai/material-web": "0.1.6",
|
|
39
39
|
"@tanstack/vue-query": "^5.101.0",
|
|
40
40
|
"fastify": "^5.12.7",
|
|
41
41
|
"pino": "^10.3.1",
|
|
@@ -45,13 +45,13 @@
|
|
|
45
45
|
"vue-router": "^5.3.1",
|
|
46
46
|
"vuetify": "^4.3.0",
|
|
47
47
|
"@jskit-ai/http-runtime": "0.2.21",
|
|
48
|
-
"@jskit-ai/shell-web": "0.2.
|
|
48
|
+
"@jskit-ai/shell-web": "0.2.30",
|
|
49
49
|
"@fastify/fast-json-stringify-compiler": "^5.1.0",
|
|
50
50
|
"@vue/devtools-api": "^8.2.1"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
53
|
"@jskit-ai/config-eslint": "0.1.251",
|
|
54
|
-
"@jskit-ai/jskit-catalog": "0.2.
|
|
54
|
+
"@jskit-ai/jskit-catalog": "0.2.63",
|
|
55
55
|
"@playwright/test": "1.61.1",
|
|
56
56
|
"@vitejs/plugin-vue": "^6.0.7",
|
|
57
57
|
"eslint": "^10.8.0",
|
|
@@ -60,6 +60,7 @@
|
|
|
60
60
|
"vitest": "^4.1.9"
|
|
61
61
|
},
|
|
62
62
|
"allowScripts": {
|
|
63
|
+
"@jskit-ai/material-web": true,
|
|
63
64
|
"fsevents@2.3.2": true,
|
|
64
65
|
"fsevents@2.3.3": true,
|
|
65
66
|
"vue-demi@0.14.10": true
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
"db:migrate:status": "knex --knexfile ./knexfile.js migrate:list"
|
|
8
8
|
},
|
|
9
9
|
"dependencies": {
|
|
10
|
-
"@jskit-ai/connectors-core": "0.2.
|
|
11
|
-
"@jskit-ai/connector-google-calendar": "0.2.
|
|
10
|
+
"@jskit-ai/connectors-core": "0.2.30",
|
|
11
|
+
"@jskit-ai/connector-google-calendar": "0.2.30",
|
|
12
12
|
"@jskit-ai/database-runtime": "0.1.270",
|
|
13
13
|
"@jskit-ai/database-runtime-mysql": "0.1.268",
|
|
14
14
|
"knex": "^3.1.0"
|
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
"./shared": "./src/shared/index.js"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@jskit-ai/crud-core": "0.2.
|
|
13
|
+
"@jskit-ai/crud-core": "0.2.30",
|
|
14
14
|
"@jskit-ai/resource-crud-core": "0.1.214",
|
|
15
|
-
"@jskit-ai/users-core": "0.2.
|
|
15
|
+
"@jskit-ai/users-core": "0.2.34"
|
|
16
16
|
},
|
|
17
17
|
"jskit": {
|
|
18
18
|
"kind": "runtime",
|
|
@@ -10,14 +10,14 @@
|
|
|
10
10
|
"./shared": "./src/shared/index.js"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@jskit-ai/crud-core": "0.2.
|
|
13
|
+
"@jskit-ai/crud-core": "0.2.30",
|
|
14
14
|
"@jskit-ai/resource-crud-core": "0.1.214",
|
|
15
|
-
"@jskit-ai/users-core": "0.2.
|
|
16
|
-
"@jskit-ai/workspaces-core": "0.2.
|
|
15
|
+
"@jskit-ai/users-core": "0.2.34",
|
|
16
|
+
"@jskit-ai/workspaces-core": "0.2.34"
|
|
17
17
|
},
|
|
18
18
|
"peerDependencies": {
|
|
19
19
|
"@jskit-ai/kernel": "0.2.21",
|
|
20
|
-
"@jskit-ai/resource-runtime": "0.2.
|
|
20
|
+
"@jskit-ai/resource-runtime": "0.2.27"
|
|
21
21
|
},
|
|
22
22
|
"jskit": {
|
|
23
23
|
"kind": "runtime",
|
|
@@ -26,7 +26,11 @@ purpose: any host can set it. The host sets it; a request never chooses it.
|
|
|
26
26
|
- The server logs once at startup whether it acts for real. A production server
|
|
27
27
|
that simulates logs a warning.
|
|
28
28
|
- Local-password emails (confirmation and password reset) with an installed
|
|
29
|
-
sender are logged, not sent
|
|
29
|
+
sender are logged, not sent: local auth uses its own simulated sender in
|
|
30
|
+
place of the application's, which never runs in a test copy. An application
|
|
31
|
+
that confirms new accounts at once while its email isn't set up uses
|
|
32
|
+
`auth.local.confirmation-mode`, which a test copy keeps (see
|
|
33
|
+
[Authentication](/guide/app-setup/authentication)).
|
|
30
34
|
- Workspace invitations with a provided mailer are logged. The invitation
|
|
31
35
|
answers `status: "simulated"`, and the inviter copies the link.
|
|
32
36
|
- Accounts-hub email is logged, not sent.
|