@jskit-ai/agent-docs 0.1.290 → 0.1.292

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.
Files changed (37) hide show
  1. package/guide/agent/app-setup/existing-application-migration.md +1 -1
  2. package/guide/agent/framework/data-access.md +309 -22
  3. package/guide/agent/framework/material-3.md +40 -39
  4. package/guide/agent/framework/sanity-checks.md +19 -12
  5. package/package.json +1 -1
  6. package/patterns/feature-package/example/booking-engine/package.json +1 -1
  7. package/patterns/minimal-foundation/example/package.json +4 -4
  8. package/patterns/shell-foundation/example/package.json +5 -5
  9. package/patterns/shell-foundation/example/packages/main/package.json +1 -1
  10. package/reference/autogen/PATTERN_INDEX.md +38 -38
  11. package/reference/autogen/packages/agent-runtime.md +4 -0
  12. package/reference/autogen/packages/crud-core.md +1 -1
  13. package/reference/autogen/packages/kernel.md +1 -1
  14. package/reference/autogen/packages/resource-core.md +1 -0
  15. package/reference/autogen/packages/resource-runtime.md +39 -3
  16. package/reference/autogen/packages/workspaces-core.md +0 -2
  17. package/reference/autogen/tooling/jskit-catalog.md +30 -10
  18. package/skills/jskit/references/data-access.md +309 -22
  19. package/skills/jskit/references/existing-application-migration.md +1 -1
  20. package/skills/jskit/references/heuristics/ui-testing.md +6 -3
  21. package/skills/jskit/references/material-3.md +40 -39
  22. package/skills/jskit/references/pattern-index.md +38 -38
  23. package/skills/jskit/references/patterns/app/minimal-foundation/example/package.json +4 -4
  24. package/skills/jskit/references/patterns/app/shell-foundation/example/package.json +5 -5
  25. package/skills/jskit/references/patterns/app/shell-foundation/example/packages/main/package.json +1 -1
  26. package/skills/jskit/references/patterns/auth/accounts-hub/example/package.json +3 -3
  27. package/skills/jskit/references/patterns/auth/oidc-sign-in/example/package.json +2 -2
  28. package/skills/jskit/references/patterns/auth/supabase-auth/example/package.json +1 -1
  29. package/skills/jskit/references/patterns/connectors/calendar-cli/example/package.json +4 -4
  30. package/skills/jskit/references/patterns/crud/crud-feature-package/example/packages/books/package.json +3 -3
  31. package/skills/jskit/references/patterns/database/mysql-application/example/package.json +2 -2
  32. package/skills/jskit/references/patterns/database/postgres-application/example/package.json +2 -2
  33. package/skills/jskit/references/patterns/realtime/realtime-application/example/package.json +2 -2
  34. package/skills/jskit/references/patterns/server/feature-package/example/booking-engine/package.json +1 -1
  35. package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users/package.json +3 -3
  36. package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users-workspace/package.json +6 -6
  37. package/skills/jskit/references/sanity-checks.md +19 -12
@@ -179,9 +179,9 @@ Exactly this, and nothing more:
179
179
  `createVuetify(createMaterialVuetifyOptions(theme))` with
180
180
  `createMaterialVuetifyOptions` from `@jskit-ai/material-web/client`, importing
181
181
  `@jskit-ai/material-web/client/material.css`. JSKIT generates the light and
182
- dark schemes from the seed at startup (Material Color Utilities
183
- `SchemeTonalSpot`, every role in kebab-case such as `surface-container-low`,
184
- plus success, warning and info with their containers), with
182
+ dark schemes from the seed at startup (every role in kebab-case such as
183
+ `surface-container-low`, plus success, warning and info with their
184
+ containers), with
185
185
  `defaultTheme: "system"` so the person's light, dark or system preference
186
186
  applies. The `md3` blueprint and JSKIT's Material 3 Vuetify defaults live in
187
187
  material-web; an app keeps no defaults file and never hand-picks a colour. The
@@ -205,6 +205,12 @@ Exactly this, and nothing more:
205
205
  Symbols has no brand marks (Google, GitHub, a payment network): a brand's
206
206
  logo is the brand's own artwork, a content image or SVG used as its owner
207
207
  publishes it, not an icon alias.
208
+ - **Components:** a Vuetify component chosen at run time is imported and
209
+ passed: `import { VDialog } from "vuetify/components"`, then `:is="VDialog"`
210
+ or `h(VDialog)`. A JSKIT app registers none globally, so one named as a
211
+ string (`resolveComponent("v-dialog")`, `is="v-dialog"`) renders nothing
212
+ (`ui/vuetify-by-name`). A prop a JSKIT package lists as removed (its
213
+ `jskit.metadata.ui.removedProps` and CHANGELOG) fails `ui/removed-prop`.
208
214
 
209
215
  ## Exact sizes
210
216
 
@@ -255,14 +261,9 @@ dialog, chip or FAB.
255
261
  file, such as a CSV export), `disabled`, `loading` or `color` (`error` for a
256
262
  destructive one); attributes such as `target` reach its button. On compact
257
263
  widths the bar shows the single `primary` action (a form's Save) and puts
258
- every other action in its "More actions" menu, where `overflow` actions
259
- always are. The bar's own items (top-right placements such as tools, a
260
- notification bell and the account avatar) stay while they fit beside the
261
- whole title; those that don't follow the actions into the menu, farthest
262
- from the corner first, and the item nearest the corner stays unless the
263
- `primary` action takes its place. An item keeps running while it is in the
264
- menu, closed or open, so its live count, its panel or a floating button it
265
- shows elsewhere on the page stay. Medium and wider bars show them all.
264
+ the other actions, and the top-right items that don't fit beside the title,
265
+ in its "More actions" menu, where `overflow` actions always are; medium and
266
+ wider bars show them all.
266
267
  - **Window size classes:** compact under 600 (navigation bar), medium 600–839
267
268
  (navigation rail), expanded 840–1199 and large from 1200 (drawer), read from
268
269
  `useShellWindowSizeClass()`
@@ -275,12 +276,17 @@ dialog, chip or FAB.
275
276
  starter registers it as `local.main.ui.section-tab-link-item`), and the page
276
277
  draws one tab row, `display: flex; overflow-x: auto` over a 1dp
277
278
  `outline-variant` bottom border. `ShellTabLinkItem` is the navigation bar's
278
- destination; placed in a page it draws a section tab.
279
+ destination; placed in a page it draws a section tab. material.css draws an
280
+ app's own `v-bottom-navigation` the same way, keeping its colour props.
279
281
 
280
282
  ## Colour
281
283
 
282
284
  - Use semantic roles through Vuetify props, classes and
283
285
  `rgb(var(--v-theme-<role>))`; never a raw colour value in a component.
286
+ - Text in an `on-*` role uses its class or a `color` prop
287
+ (`class="text-on-surface-variant"`, `<v-icon color="on-surface-variant">`);
288
+ an app colour's is `class="on-partner"`, which `bg-partner` already sets.
289
+ Never lower text emphasis with an opacity or `text-medium-emphasis`.
284
290
  - Status chips use `color="success"` (or `warning`, `info`, `error`) or the
285
291
  container roles (`success-container` with `on-success-container`), and each
286
292
  status meaning has its own hue. Never communicate status, selection, validation, or permission through
@@ -313,9 +319,11 @@ dialog, chip or FAB.
313
319
  actions in the bar's overflow menu, never in the content; the record's
314
320
  next workflow step is the one filled button, shown in context rather than a
315
321
  row of mostly disabled actions.
316
- - **Form:** the bar's close (X) cancels and Save is its filled action. Fields
317
- use `hideDetails: "auto"`. Nothing moves under a finger: a multi-select chip
318
- field keeps its input width when it loses focus. A pick-one-of-N choice is a
322
+ - **Form:** the bar's close (X) cancels and Save is its filled action. A
323
+ field keeps its message line (no `hide-details`, no margin under it), so an
324
+ error appears in place; a field outside a form (search, filter) sets
325
+ `hide-details`. Nothing moves under a finger: a multi-select
326
+ chip field keeps its input width when it loses focus. A pick-one-of-N choice is a
319
327
  segmented button (`v-btn-toggle`, drawn by JSKIT, with 12dp segment sides as
320
328
  in any `v-btn-group`) with `role="radiogroup"` and
321
329
  `role="radio"`/`aria-checked` buttons.
@@ -349,11 +357,9 @@ dialog, chip or FAB.
349
357
  field. A user-triggered command uses JSKIT's shared action
350
358
  feedback/snackbar path. Never insert a transient command-error alert above
351
359
  page content where it shifts the working layout.
352
- - A snackbar never covers the FAB or the actions it reports on. `ShellErrorHost`
353
- centres it above the navigation bar on compact windows and starts it at the
354
- content's start edge, at most half its width, on wider ones. A FAB takes
355
- layout room (`<v-fab app layout>`, as `ShellPrimaryAction`'s does), so the
356
- snackbar shows above it.
360
+ - A snackbar never covers the FAB or the actions it reports on: `ShellErrorHost`
361
+ places it, and a FAB takes layout room (`<v-fab app layout>`, as
362
+ `ShellPrimaryAction`'s does), so the snackbar shows above it.
357
363
 
358
364
  ## Adaptive layout
359
365
 
@@ -369,16 +375,14 @@ Two commands read application source (no server, no browser) and print each
369
375
  finding with its file, line, rule and the section of this page:
370
376
 
371
377
  ```bash
372
- npx jskit check # in every app's verify: fails on any nav/* rule
373
- npx jskit check m3 # the whole app: src/ and packages/
378
+ npx jskit check # in every app's verify: fails on any nav/*, m3/* or ui/* finding
379
+ npx jskit check m3 # these rules alone, the whole app: src/ and packages/
374
380
  npx jskit check m3 src/pages/home/books # a section
375
381
  npx jskit check m3 $(git diff --name-only --diff-filter=d main) # changed files
376
382
  ```
377
383
 
378
- Plain `jskit check` fails on the [navigation rules](#forbidden-in-app-code).
379
- `jskit check m3` lists those and the visual rules below. The visual rules are a
380
- report until every JSKIT app has been converted to them; the JSKIT release after
381
- that makes plain `jskit check`, and so every app's verify, fail on them too:
384
+ Both fail on the [navigation rules](#forbidden-in-app-code) and on these;
385
+ nothing excuses a `ui/*` finding:
382
386
 
383
387
  | Rule | Finds |
384
388
  |---|---|
@@ -388,12 +392,12 @@ that makes plain `jskit check`, and so every app's verify, fail on them too:
388
392
  | `m3/outlined-card` | `variant="outlined"` or `border` on a card or sheet |
389
393
  | `m3/mdi-icon` | `mdi-*` icon strings and `@mdi/js` imports |
390
394
  | `m3/fixed-button-height` | `height`/`min-height` on buttons, in props, styles or CSS |
395
+ | `ui/vuetify-by-name` | a Vuetify component named as a string for Vue to resolve |
396
+ | `ui/removed-prop` | a prop the installed JSKIT package lists as removed from that component |
391
397
 
392
398
  Tests, fixtures, server code and migrations are not checked. A clean check is
393
- necessary, not sufficient: it cannot see layout, spacing or contrast. A
394
- [UI pass](ui-pass.md) is the guard for those, because it looks at every
395
- affected screen at three widths in light and dark; an editor that runs one
396
- automatically after each plan keeps that guard on every change.
399
+ necessary, not sufficient: layout, spacing and contrast need a
400
+ [UI pass](ui-pass.md), every affected screen at three widths in light and dark.
397
401
 
398
402
  ### Exceptions
399
403
 
@@ -402,16 +406,13 @@ Take the approved route first; none needs an exception:
402
406
  - **Brand or partner colours** are theme custom colours, used by name:
403
407
  `colors: { partner: "#0A7D3E" }` in `src/theme/index.js`, then
404
408
  `<v-chip color="partner">`. A hex string is harmonized toward the seed; a
405
- colour that must keep its hue is `{ value: "#F5C518", blend: false }`
406
- (Material Theme Builder's Blend switched off), with the same four roles.
409
+ colour that must keep its hue is `{ value: "#F5C518", blend: false }`, with
410
+ the same four roles.
407
411
  - **Content colours**, colours that are content rather than UI, keep one
408
- value in both schemes: an identity palette a person picks and the server
409
- stores, avatar and illustration artwork, brand marks (a language's
410
- file-type tint), fixed chart series, QR codes, colours written into
411
- exported files. They are named exports of plain hex values in
412
- `src/theme/palettes.js`, used as they are, never for UI chrome (a theme
413
- colour is toned per scheme, so it can't keep an identity the same).
414
- Components read them through bindings:
412
+ value in both schemes: an identity palette a person picks, artwork, brand
413
+ marks, fixed chart series, QR codes, colours in exported files. They are
414
+ named exports of plain hex values in `src/theme/palettes.js`, used as they
415
+ are, never for UI chrome. Components read them through bindings:
415
416
 
416
417
  ```vue
417
418
  <script setup>
@@ -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.290`
18
+ - Owner: `@jskit-ai/agent-docs@0.1.292`
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.290`
29
+ - Owner: `@jskit-ai/agent-docs@0.1.292`
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.36`
40
+ - Owner: `@jskit-ai/assistant-runtime@0.2.38`
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.24`
51
+ - Owner: `@jskit-ai/oidc-issuer-core@0.1.25`
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.22`
62
+ - Owner: `@jskit-ai/auth-web@0.2.23`
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.24`
73
+ - Owner: `@jskit-ai/auth-provider-oidc-core@0.2.25`
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`
@@ -81,7 +81,7 @@ Add Supabase authentication through normal npm composition, explicit environment
81
81
 
82
82
  - Id: `auth/supabase-auth`
83
83
  - Keywords: `auth`, `authentication`, `oauth`, `sessions`, `supabase`
84
- - Owner: `@jskit-ai/auth-provider-supabase-core@0.2.18`
84
+ - Owner: `@jskit-ai/auth-provider-supabase-core@0.2.19`
85
85
  - Read: [PATTERN.md](patterns/auth/supabase-auth/PATTERN.md)
86
86
  - Examples: [example/](patterns/auth/supabase-auth/example/)
87
87
  - Requires: `@jskit-ai/auth-provider-supabase-core`
@@ -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.20`
95
+ - Owner: `@jskit-ai/connectors-catalog@0.2.22`
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.20`
106
+ - Owner: `@jskit-ai/connectors-catalog@0.2.22`
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.20`
117
+ - Owner: `@jskit-ai/connectors-catalog@0.2.22`
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.20`
128
+ - Owner: `@jskit-ai/connectors-catalog@0.2.22`
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.20`
139
+ - Owner: `@jskit-ai/connectors-catalog@0.2.22`
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.20`
150
+ - Owner: `@jskit-ai/connector-google-calendar@0.2.22`
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.20`
161
+ - Owner: `@jskit-ai/connectors-catalog@0.2.22`
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.20`
172
+ - Owner: `@jskit-ai/connectors-catalog@0.2.22`
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.20`
183
+ - Owner: `@jskit-ai/connectors-catalog@0.2.22`
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.20`
194
+ - Owner: `@jskit-ai/connectors-catalog@0.2.22`
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.20`
205
+ - Owner: `@jskit-ai/connectors-catalog@0.2.22`
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.20`
216
+ - Owner: `@jskit-ai/connectors-catalog@0.2.22`
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.20`
227
+ - Owner: `@jskit-ai/connectors-catalog@0.2.22`
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.20`
238
+ - Owner: `@jskit-ai/connectors-catalog@0.2.22`
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.247`
249
+ - Owner: `@jskit-ai/console-web@0.1.249`
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`
@@ -257,7 +257,7 @@ Define an application table resource whose records belong to the current user, a
257
257
 
258
258
  - Id: `crud/crud-contract`
259
259
  - Keywords: `authenticated`, `crud`, `database`, `owner-scoped`, `resource`, `table`, `user`
260
- - Owner: `@jskit-ai/resource-crud-core@0.1.207`
260
+ - Owner: `@jskit-ai/resource-crud-core@0.1.208`
261
261
  - Read: [PATTERN.md](patterns/crud/crud-contract/PATTERN.md)
262
262
  - Examples: [example/](patterns/crud/crud-contract/example/)
263
263
  - Requires: `@jskit-ai/resource-core`, `@jskit-ai/resource-crud-core`
@@ -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.20`
271
+ - Owner: `@jskit-ai/crud-core@0.2.22`
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.25`
282
+ - Owner: `@jskit-ai/http-web@0.2.26`
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`
@@ -290,7 +290,7 @@ Configure a JSKIT application for MySQL with a fixed driver, ordinary environmen
290
290
 
291
291
  - Id: `database/mysql-application`
292
292
  - Keywords: `database`, `knex`, `mariadb`, `migrations`, `mysql`, `mysql2`
293
- - Owner: `@jskit-ai/database-runtime-mysql@0.1.263`
293
+ - Owner: `@jskit-ai/database-runtime-mysql@0.1.264`
294
294
  - Read: [PATTERN.md](patterns/database/mysql-application/PATTERN.md)
295
295
  - Examples: [example/](patterns/database/mysql-application/example/)
296
296
  - Requires: `@jskit-ai/database-runtime-mysql`
@@ -301,7 +301,7 @@ Configure a JSKIT application for PostgreSQL with a fixed driver, ordinary envir
301
301
 
302
302
  - Id: `database/postgres-application`
303
303
  - Keywords: `database`, `knex`, `migrations`, `pg`, `postgres`, `postgresql`
304
- - Owner: `@jskit-ai/database-runtime-postgres@0.1.262`
304
+ - Owner: `@jskit-ai/database-runtime-postgres@0.1.263`
305
305
  - Read: [PATTERN.md](patterns/database/postgres-application/PATTERN.md)
306
306
  - Examples: [example/](patterns/database/postgres-application/example/)
307
307
  - Requires: `@jskit-ai/database-runtime-postgres`
@@ -312,7 +312,7 @@ Describe one database table once (its fields, columns, ownership, search and sor
312
312
 
313
313
  - Id: `database/table-resource`
314
314
  - Keywords: `database`, `defaultTo`, `defineTableResource`, `lockVersionField`, `lookup`, `ownership`, `owns`, `resource`, `system`, `table`, `workspace_or_shared`
315
- - Owner: `@jskit-ai/resource-core@0.1.207`
315
+ - Owner: `@jskit-ai/resource-core@0.1.208`
316
316
  - Read: [PATTERN.md](patterns/database/table-resource/PATTERN.md)
317
317
  - Examples: [example/](patterns/database/table-resource/example/)
318
318
  - Requires: `@jskit-ai/resource-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.20`
326
+ - Owner: `@jskit-ai/mobile-capacitor@0.2.21`
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.23`
337
+ - Owner: `@jskit-ai/realtime@0.2.24`
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.25`
348
+ - Owner: `@jskit-ai/rewarded-web@0.2.27`
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.290`
359
+ - Owner: `@jskit-ai/agent-docs@0.1.292`
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.20`
370
+ - Owner: `@jskit-ai/shell-web@0.2.21`
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.20`
381
+ - Owner: `@jskit-ai/shell-web@0.2.21`
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.30`
392
+ - Owner: `@jskit-ai/users-web@0.2.32`
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.21`
403
+ - Owner: `@jskit-ai/users-core@0.2.23`
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.21`
414
+ - Owner: `@jskit-ai/workspaces-core@0.2.23`
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.30`
425
+ - Owner: `@jskit-ai/workspaces-web@0.2.32`
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`
@@ -34,8 +34,8 @@
34
34
  "dependencies": {
35
35
  "@local/main": "0.1.0",
36
36
  "@fastify/static": "^10.1.3",
37
- "@jskit-ai/kernel": "0.2.16",
38
- "@jskit-ai/material-web": "0.1.4",
37
+ "@jskit-ai/kernel": "0.2.17",
38
+ "@jskit-ai/material-web": "0.1.5",
39
39
  "@tanstack/vue-query": "^5.101.0",
40
40
  "fastify": "^5.12.7",
41
41
  "pino": "^10.3.1",
@@ -44,13 +44,13 @@
44
44
  "vue": "^3.5.44",
45
45
  "vue-router": "^5.3.1",
46
46
  "vuetify": "^4.3.0",
47
- "@jskit-ai/http-runtime": "0.2.16",
47
+ "@jskit-ai/http-runtime": "0.2.17",
48
48
  "@fastify/fast-json-stringify-compiler": "^5.1.0",
49
49
  "@vue/devtools-api": "^8.2.1"
50
50
  },
51
51
  "devDependencies": {
52
52
  "@jskit-ai/config-eslint": "0.1.248",
53
- "@jskit-ai/jskit-catalog": "0.2.42",
53
+ "@jskit-ai/jskit-catalog": "0.2.44",
54
54
  "@playwright/test": "1.61.1",
55
55
  "@vitejs/plugin-vue": "^6.0.7",
56
56
  "eslint": "^10.8.0",
@@ -34,8 +34,8 @@
34
34
  "dependencies": {
35
35
  "@local/main": "0.1.0",
36
36
  "@fastify/static": "^10.1.3",
37
- "@jskit-ai/kernel": "0.2.16",
38
- "@jskit-ai/material-web": "0.1.4",
37
+ "@jskit-ai/kernel": "0.2.17",
38
+ "@jskit-ai/material-web": "0.1.5",
39
39
  "@tanstack/vue-query": "^5.101.0",
40
40
  "fastify": "^5.12.7",
41
41
  "pino": "^10.3.1",
@@ -44,14 +44,14 @@
44
44
  "vue": "^3.5.44",
45
45
  "vue-router": "^5.3.1",
46
46
  "vuetify": "^4.3.0",
47
- "@jskit-ai/http-runtime": "0.2.16",
48
- "@jskit-ai/shell-web": "0.2.20",
47
+ "@jskit-ai/http-runtime": "0.2.17",
48
+ "@jskit-ai/shell-web": "0.2.21",
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.248",
54
- "@jskit-ai/jskit-catalog": "0.2.42",
54
+ "@jskit-ai/jskit-catalog": "0.2.44",
55
55
  "@playwright/test": "1.61.1",
56
56
  "@vitejs/plugin-vue": "^6.0.7",
57
57
  "eslint": "^10.8.0",
@@ -9,7 +9,7 @@
9
9
  },
10
10
  "description": "App-local runtime composition and lightweight glue.",
11
11
  "dependencies": {
12
- "@jskit-ai/kernel": "0.2.16"
12
+ "@jskit-ai/kernel": "0.2.17"
13
13
  },
14
14
  "jskit": {
15
15
  "kind": "runtime",
@@ -2,8 +2,8 @@
2
2
  "private": true,
3
3
  "type": "module",
4
4
  "dependencies": {
5
- "@jskit-ai/database-runtime": "0.1.265",
6
- "@jskit-ai/database-runtime-mysql": "0.1.263",
7
- "@jskit-ai/oidc-issuer-core": "0.1.24"
5
+ "@jskit-ai/database-runtime": "0.1.266",
6
+ "@jskit-ai/database-runtime-mysql": "0.1.264",
7
+ "@jskit-ai/oidc-issuer-core": "0.1.25"
8
8
  }
9
9
  }
@@ -2,7 +2,7 @@
2
2
  "private": true,
3
3
  "type": "module",
4
4
  "dependencies": {
5
- "@jskit-ai/auth-provider-oidc-core": "0.2.24",
6
- "@jskit-ai/auth-web": "0.2.22"
5
+ "@jskit-ai/auth-provider-oidc-core": "0.2.25",
6
+ "@jskit-ai/auth-web": "0.2.23"
7
7
  }
8
8
  }
@@ -2,6 +2,6 @@
2
2
  "private": true,
3
3
  "type": "module",
4
4
  "dependencies": {
5
- "@jskit-ai/auth-provider-supabase-core": "0.2.18"
5
+ "@jskit-ai/auth-provider-supabase-core": "0.2.19"
6
6
  }
7
7
  }
@@ -7,10 +7,10 @@
7
7
  "db:migrate:status": "knex --knexfile ./knexfile.js migrate:list"
8
8
  },
9
9
  "dependencies": {
10
- "@jskit-ai/connectors-core": "0.2.20",
11
- "@jskit-ai/connector-google-calendar": "0.2.20",
12
- "@jskit-ai/database-runtime": "0.1.265",
13
- "@jskit-ai/database-runtime-mysql": "0.1.263",
10
+ "@jskit-ai/connectors-core": "0.2.22",
11
+ "@jskit-ai/connector-google-calendar": "0.2.22",
12
+ "@jskit-ai/database-runtime": "0.1.266",
13
+ "@jskit-ai/database-runtime-mysql": "0.1.264",
14
14
  "knex": "^3.1.0"
15
15
  }
16
16
  }
@@ -9,9 +9,9 @@
9
9
  "./shared": "./src/shared/index.js"
10
10
  },
11
11
  "dependencies": {
12
- "@jskit-ai/crud-core": "0.2.20",
13
- "@jskit-ai/resource-core": "0.1.207",
14
- "@jskit-ai/resource-crud-core": "0.1.207"
12
+ "@jskit-ai/crud-core": "0.2.22",
13
+ "@jskit-ai/resource-core": "0.1.208",
14
+ "@jskit-ai/resource-crud-core": "0.1.208"
15
15
  },
16
16
  "jskit": {
17
17
  "kind": "runtime",
@@ -9,7 +9,7 @@
9
9
  "test": "jskit test --databases"
10
10
  },
11
11
  "dependencies": {
12
- "@jskit-ai/database-runtime": "0.1.265",
13
- "@jskit-ai/database-runtime-mysql": "0.1.263"
12
+ "@jskit-ai/database-runtime": "0.1.266",
13
+ "@jskit-ai/database-runtime-mysql": "0.1.264"
14
14
  }
15
15
  }