@jskit-ai/agent-docs 0.1.239 → 0.1.241

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 (51) hide show
  1. package/guide/agent/app-extras/assistant-conversation.md +11 -6
  2. package/guide/agent/app-setup/authentication.md +28 -2
  3. package/guide/agent/app-setup/existing-application-migration.md +5 -3
  4. package/guide/agent/app-setup/initial-scaffolding.md +4 -1
  5. package/guide/agent/app-setup/run-an-accounts-hub.md +152 -0
  6. package/guide/agent/app-setup/sign-in-through-oidc-issuer.md +148 -0
  7. package/guide/agent/app-setup/upgrading-jskit.md +13 -0
  8. package/guide/agent/framework/application-operations.md +3 -0
  9. package/guide/agent/framework/ui-operations.md +24 -0
  10. package/guide/agent/index.md +2 -0
  11. package/package.json +1 -1
  12. package/patterns/feature-package/example/booking-engine/package.json +1 -1
  13. package/patterns/minimal-foundation/example/package.json +3 -3
  14. package/patterns/shell-foundation/example/package.json +4 -4
  15. package/patterns/shell-foundation/example/packages/main/package.json +1 -1
  16. package/reference/autogen/KERNEL_MAP.md +1 -0
  17. package/reference/autogen/PATTERN_INDEX.md +57 -35
  18. package/reference/autogen/README.md +2 -0
  19. package/reference/autogen/packages/auth-core.md +1 -0
  20. package/reference/autogen/packages/auth-provider-oidc-core.md +144 -0
  21. package/reference/autogen/packages/auth-web.md +16 -0
  22. package/reference/autogen/packages/kernel.md +6 -1
  23. package/reference/autogen/packages/oidc-issuer-core.md +201 -0
  24. package/reference/autogen/packages/shell-web.md +3 -0
  25. package/reference/autogen/tooling/jskit-release.md +1 -0
  26. package/skills/jskit/references/app-operations.md +3 -0
  27. package/skills/jskit/references/existing-application-migration.md +5 -3
  28. package/skills/jskit/references/pattern-index.md +57 -35
  29. package/skills/jskit/references/patterns/app/minimal-foundation/example/package.json +3 -3
  30. package/skills/jskit/references/patterns/app/shell-foundation/example/package.json +4 -4
  31. package/skills/jskit/references/patterns/app/shell-foundation/example/packages/main/package.json +1 -1
  32. package/skills/jskit/references/patterns/auth/accounts-hub/PATTERN.md +97 -0
  33. package/skills/jskit/references/patterns/auth/accounts-hub/example/.env.example +10 -0
  34. package/skills/jskit/references/patterns/auth/accounts-hub/example/package.json +8 -0
  35. package/skills/jskit/references/patterns/auth/accounts-hub/example/server/hubPaths.js +7 -0
  36. package/skills/jskit/references/patterns/auth/auth-surface/PATTERN.md +33 -11
  37. package/skills/jskit/references/patterns/auth/oidc-sign-in/PATTERN.md +87 -0
  38. package/skills/jskit/references/patterns/auth/oidc-sign-in/example/.env.example +13 -0
  39. package/skills/jskit/references/patterns/auth/oidc-sign-in/example/package.json +8 -0
  40. package/skills/jskit/references/patterns/auth/supabase-auth/example/package.json +1 -1
  41. package/skills/jskit/references/patterns/connectors/calendar-cli/example/package.json +4 -4
  42. package/skills/jskit/references/patterns/connectors/oauth-connection/PATTERN.md +25 -0
  43. package/skills/jskit/references/patterns/crud/json-api-resource-package/example/packages/books/package.json +2 -2
  44. package/skills/jskit/references/patterns/database/mysql-application/example/package.json +1 -1
  45. package/skills/jskit/references/patterns/database/postgres-application/example/package.json +1 -1
  46. package/skills/jskit/references/patterns/realtime/realtime-application/example/package.json +2 -2
  47. package/skills/jskit/references/patterns/server/feature-package/example/booking-engine/package.json +1 -1
  48. package/skills/jskit/references/patterns/shell/application-shell/PATTERN.md +9 -0
  49. package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users/package.json +2 -2
  50. package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users-workspace/package.json +3 -3
  51. package/skills/jskit/references/ui-operations.md +24 -0
@@ -0,0 +1,201 @@
1
+ # packages/oidc-issuer-core
2
+
3
+ Generated by `npm run agent-docs:build`.
4
+ Do not edit manually.
5
+
6
+ Generated inventory for `packages/oidc-issuer-core`.
7
+ Use this on demand; do not load the full index at startup.
8
+
9
+ ## Scope
10
+ - Source: `packages/oidc-issuer-core/**/*{.js,.mjs,.cjs,.vue}`
11
+ - Excludes: `test/`, `tests/`, `__tests__/`, `*.test.*`, `*.spec.*`, `*.vitest.*`, `node_modules/`, `dist/`, `coverage/`, `docs/`, `.vitepress/cache/`, `.vitepress/dist/`
12
+
13
+ ## Sections
14
+
15
+ ### src
16
+
17
+ ### `src/server/accounts.js`
18
+ Exports
19
+ - `ACCOUNTS_TABLE`
20
+ - `AccountError`
21
+ - `LOCK_AFTER_FAILURES`
22
+ - `createAccountStore(knex, { now = () => new Date() } = {})`
23
+ - `isEmail(value)`
24
+ - `normalizeEmail(value)`
25
+ - `passwordProblem(password)`
26
+ Local functions
27
+ - `isCommonPassword(password)`
28
+ - `displayNameFor(value, email)`
29
+ - `passwordRecord(row)`
30
+ - `passwordColumns(record)`
31
+ - `toAccount(row)`
32
+
33
+ ### `src/server/adapter.js`
34
+ Exports
35
+ - `MODELS_TABLE`
36
+ - `createKnexAdapterClass(knex, { now = () => new Date() } = {})`
37
+ - `deleteExpiredModels(knex, { now = () => new Date() } = {})`
38
+ Local functions
39
+ - `toDate(value)`
40
+ - `isExpired(row, now)`
41
+
42
+ ### `src/server/clients.js`
43
+ Exports
44
+ - `CLIENTS_TABLE`
45
+ - `RegistrationError`
46
+ - `createClientStore(knex, { now = () => new Date() } = {})`
47
+ - `isDevelopmentOrigin(origin, patterns)`
48
+ - `validateRegistrationMetadata(body)`
49
+ Local functions
50
+ - `invalid(description)`
51
+ - `originOf(uri, field)`
52
+ - `globToRegExp(pattern)`
53
+ - `assertOnlyValue(body, field, value)`
54
+
55
+ ### `src/server/config.js`
56
+ Exports
57
+ - `HubConfigError`
58
+ - `isLoopbackHostname(hostname)`
59
+ - `resolveHubConfig(env = {}, { appRoot = "" } = {})`
60
+ Local functions
61
+ - `text(value)`
62
+ - `resolveIssuer(env, isProduction)`
63
+ - `readOrCreateDevSecret(appRoot)`
64
+ - `resolveSecret(env, { isProduction, appRoot })`
65
+ - `parseDevOriginPatterns(value)`
66
+ - `resolveMail(env, { isProduction })`
67
+ - `resolveGoogle(env)`
68
+
69
+ ### `src/server/crypto.js`
70
+ Exports
71
+ - `constantEquals(left, right)`
72
+ - `createAccountId()`
73
+ - `decrypt(key, sealed)`
74
+ - `deriveKey(secret, purpose, length = 32)`
75
+ - `encrypt(key, plaintext)`
76
+ - `hashPassword(password)`
77
+ - `randomToken(bytes = 32)`
78
+ - `sha256(value)`
79
+ - `verifyPassword(password, record)`
80
+
81
+ ### `src/server/emailTokens.js`
82
+ Exports
83
+ - `createEmailTokenStore(knex, { now = () => new Date() } = {})`
84
+
85
+ ### `src/server/google.js`
86
+ Exports
87
+ - `GOOGLE_ENDPOINTS`
88
+ - `createGoogleSignIn({ google, issuer, Adapter, endpoints = GOOGLE_ENDPOINTS, fetchImpl = globalThis.fetch })`
89
+
90
+ ### `src/server/http.js`
91
+ Exports
92
+ - `HubError`
93
+ - `appendCookie(reply, cookie)`
94
+ - `clientIp(request)`
95
+ - `escapeHtml(value)`
96
+ - `hubPage({ title, heading, body, content = "" })`
97
+ - `parseCookies(header)`
98
+ - `serializeCookie(name, value, { maxAge, secure, path = "/", httpOnly = true, sameSite = "Lax" })`
99
+
100
+ ### `src/server/hubRoutes.js`
101
+ Exports
102
+ - `registerHubRoutes(app, hub)`
103
+ Local functions
104
+ - `accountView(account)`
105
+ - `appView(row)`
106
+ - `isLoopbackRequest(request)`
107
+
108
+ ### `src/server/hubSessions.js`
109
+ Exports
110
+ - `createHubSessionStore(knex, { now = () => new Date() } = {})`
111
+ - `createSettingStore(knex)`
112
+ - `hubSessionCookieName(config)`
113
+
114
+ ### `src/server/importAccounts.js`
115
+ Exports
116
+ - `describeImport(result, { apply })`
117
+ - `importAccounts({ knex, text, apply = false, now })`
118
+ Local functions
119
+ - `parseLine(line)`
120
+ - `samePassword(existing, row)`
121
+
122
+ ### `src/server/index.js`
123
+ Exports
124
+ - `HubConfigError`
125
+ - `resolveHubConfig`
126
+ - `hashPassword`
127
+ - `verifyPassword`
128
+ - `describeImport`
129
+ - `importAccounts`
130
+ - `HUB_GLOBAL_PATHS`
131
+ - `createOidcIssuer`
132
+ - `runPreviewIdentityCommand`
133
+
134
+ ### `src/server/issuer.js`
135
+ Exports
136
+ - `HUB_GLOBAL_PATHS`
137
+ - `createOidcIssuer({ knex, env = process.env, logger = console, mailer = null, now = () => new Date(), appRoot = "", googleEndpoints = GOOGLE_ENDPOINTS, fetchImpl = globalThis.fetch })`
138
+ Local functions
139
+ - `isHubPath(url)`
140
+ - `bearerToken(request)`
141
+ - `sendRegistrationError(reply, error)`
142
+ - `onProviderStatus(reply, matches, action)`
143
+ - `parseJsonBody(buffer)`
144
+
145
+ ### `src/server/mailer.js`
146
+ Exports
147
+ - `composeMessage({ heading, body, actionLabel, actionUrl, footer })`
148
+ - `createMailer({ mail, logger, isProduction, fetchImpl = globalThis.fetch })`
149
+
150
+ ### `src/server/oidcProvider.js`
151
+ Exports
152
+ - `ACTIVE_STATUSES`
153
+ - `HUB_SCOPES`
154
+ - `createOidcProvider({ config, jwks, Adapter, accounts, clients, hasHubSession, onEndSession })`
155
+ Local functions
156
+ - `interactionPath(uid)`
157
+ - `interactionsPolicy(hasHubSession)`
158
+
159
+ ### `src/server/previewIdentity.js`
160
+ Exports
161
+ - `executePreviewIdentityRequest(request, { env = process.env, fetchImpl = globalThis.fetch } = {})`
162
+ - `runPreviewIdentityCommand({ env = process.env, fetchImpl = globalThis.fetch, stdin = process.stdin, stdout = process.stdout } = {})`
163
+ Local functions
164
+ - `failure(requestId, code, message, statusCode = 400)`
165
+ - `readInput(stream)`
166
+ - `localOrigin(value)`
167
+ - `setCookies(response)`
168
+
169
+ ### `src/server/providers/OidcIssuerProvider.js`
170
+ Exports
171
+ - `OidcIssuerProvider`
172
+
173
+ ### `src/server/rateLimits.js`
174
+ Exports
175
+ - `createRateLimiter(knex, { now = () => new Date() } = {})`
176
+
177
+ ### `src/server/signingKeys.js`
178
+ Exports
179
+ - `createSigningKeyStore(knex, { secret, now = () => new Date() })`
180
+
181
+ ### bin
182
+
183
+ ### `bin/jskit-oidc-issuer.js`
184
+ Exports
185
+ - None
186
+ Local functions
187
+ - `loadDotEnv()`
188
+ - `withKnex(work)`
189
+ - `main(argv)`
190
+
191
+ ### migrations
192
+
193
+ ### `migrations/oidc_issuer_initial.cjs`
194
+ Exports
195
+ - None
196
+
197
+ ### patterns
198
+
199
+ ### `patterns/accounts-hub/example/server/hubPaths.js`
200
+ Exports
201
+ - `hubGlobalUiPaths(runtimeGlobalUiPaths = [])`
@@ -59,6 +59,9 @@ Exports
59
59
  Exports
60
60
  - None
61
61
  Local functions
62
+ - `readLayoutRect()`
63
+ - `publishInlineBannerHeight(height = 0)`
64
+ - `stopObservingBanners()`
62
65
  - `isSameSnackbarEntry(left = null, right = null)`
63
66
  - `hasSnackbarEntry(entry = null)`
64
67
  - `openNextSnackbarEntry()`
@@ -68,6 +68,7 @@ Local functions
68
68
  - `releaseCommitMessage(entries)`
69
69
  - `publishRelease(records, { cwd: repoRoot, dryRun, registry })`
70
70
  - `publishCommand(options)`
71
+ - `forgetPinnedLockEntries(repoRoot, names)`
71
72
  - `installReleasedPins(repoRoot, { attempts = 20, delayMs = Number(process.env.JSKIT_RELEASE_RETRY_DELAY_MS || 30_000) } = {})`
72
73
  - `pinCommand({ cwd: repoRoot, from, dryRun, noCommit })`
73
74
 
@@ -85,6 +85,9 @@ the npm installation.
85
85
 
86
86
  Do not add auth, users, workspaces, console, sample data, databases, or AI
87
87
  capabilities unless the product choice requires them.
88
+ When accounts are required, `auth/auth-surface` includes the managed-preview
89
+ login as standard: add `tools/preview-identity` and its `#### Preview identity`
90
+ Outputs block together with the rest of the surface.
88
91
 
89
92
  ## Author database-backed CRUD
90
93
 
@@ -311,9 +311,11 @@ Do not conflate these identities:
311
311
  application profile and required workspace membership already exist. It does
312
312
  not synthesize any of them as a side effect.
313
313
 
314
- For a managed preview, retain the app-owned `tools/preview-identity`
315
- executable and declare it under `#### Preview identity` in the web-presented
316
- Vibe64 `Outputs` target. JSKIT owns the executable/library pattern, Vibe64 owns
314
+ An application with accounts has the standard managed-preview login: retain
315
+ the app-owned `tools/preview-identity` executable, or add it from
316
+ `auth/auth-surface` when it is missing, and declare it under
317
+ `#### Preview identity` in the web-presented Vibe64 `Outputs` target exactly as
318
+ that pattern shows. JSKIT owns the executable/library pattern, Vibe64 owns
317
319
  the declaration's grammar and runtime behavior, and Genesis transports the
318
320
  consumer-owned section without interpreting it. The executable calls the
319
321
  `@jskit-ai/auth-web` server-side managed-preview library; it does not need a
@@ -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.239`
18
+ - Owner: `@jskit-ai/agent-docs@0.1.241`
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.239`
29
+ - Owner: `@jskit-ai/agent-docs@0.1.241`
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,29 +37,51 @@ Configure an assistant runtime for one application surface and expose its chat a
37
37
 
38
38
  - Id: `assistant/assistant-surface`
39
39
  - Keywords: `ai`, `assistant`, `chat`, `config`, `environment`, `page`, `placement`, `settings`, `surface`
40
- - Owner: `@jskit-ai/assistant-runtime@0.1.232`
40
+ - Owner: `@jskit-ai/assistant-runtime@0.1.233`
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`
44
44
 
45
+ ## Accounts hub
46
+
47
+ Run one OpenID Connect sign-in for all of an owner's apps as its own JSKIT project, with production apps approved by the owner.
48
+
49
+ - Id: `auth/accounts-hub`
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.0`
52
+ - Read: [PATTERN.md](patterns/auth/accounts-hub/PATTERN.md)
53
+ - Examples: [example/](patterns/auth/accounts-hub/example/)
54
+ - Requires: `@jskit-ai/oidc-issuer-core`
55
+
45
56
  ## Authentication surface
46
57
 
47
58
  Compose JSKIT authentication routes, views, profile controls, and public surface configuration without generated source.
48
59
 
49
60
  - Id: `auth/auth-surface`
50
61
  - Keywords: `account`, `auth`, `login`, `logout`, `password`, `placement`, `profile`, `reset`, `surface`
51
- - Owner: `@jskit-ai/auth-web@0.1.245`
62
+ - Owner: `@jskit-ai/auth-web@0.1.246`
52
63
  - Read: [PATTERN.md](patterns/auth/auth-surface/PATTERN.md)
53
64
  - Examples: [example/](patterns/auth/auth-surface/example/)
54
65
  - Requires: `@jskit-ai/auth-core`, `@jskit-ai/auth-web`, `@jskit-ai/shell-web`
55
66
 
67
+ ## Sign in through an OIDC issuer
68
+
69
+ Let people sign in with the accounts they already have in an accounts hub or another OpenID Connect issuer, instead of app-local passwords.
70
+
71
+ - Id: `auth/oidc-sign-in`
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.1.0`
74
+ - Read: [PATTERN.md](patterns/auth/oidc-sign-in/PATTERN.md)
75
+ - Examples: [example/](patterns/auth/oidc-sign-in/example/)
76
+ - Requires: `@jskit-ai/auth-provider-oidc-core`, `@jskit-ai/auth-web`
77
+
56
78
  ## Supabase authentication
57
79
 
58
80
  Add Supabase authentication through normal npm composition, explicit environment values, and app-owned auth policy.
59
81
 
60
82
  - Id: `auth/supabase-auth`
61
83
  - Keywords: `auth`, `authentication`, `oauth`, `sessions`, `supabase`
62
- - Owner: `@jskit-ai/auth-provider-supabase-core@0.1.241`
84
+ - Owner: `@jskit-ai/auth-provider-supabase-core@0.1.242`
63
85
  - Read: [PATTERN.md](patterns/auth/supabase-auth/PATTERN.md)
64
86
  - Examples: [example/](patterns/auth/supabase-auth/example/)
65
87
  - Requires: `@jskit-ai/auth-provider-supabase-core`
@@ -70,7 +92,7 @@ Resolve an administrator environment key or an individual user's grant, then use
70
92
 
71
93
  - Id: `connectors/ai-connections`
72
94
  - Keywords: `ai`, `api-key`, `cli`, `environment`, `free`, `models`, `ownership`, `zai`, `zen`
73
- - Owner: `@jskit-ai/connectors-catalog@0.1.62`
95
+ - Owner: `@jskit-ai/connectors-catalog@0.1.63`
74
96
  - Read: [PATTERN.md](patterns/connectors/ai-connections/PATTERN.md)
75
97
  - Examples: [example/](patterns/connectors/ai-connections/example/)
76
98
  - Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
@@ -81,7 +103,7 @@ Compose provider operations, authorization and encrypted file storage from a CLI
81
103
 
82
104
  - Id: `connectors/api-key-connection`
83
105
  - Keywords: `api-key`, `clay`, `cli`, `clickhouse`, `connectors`, `dbt`, `files`, `firecrawl`, `granola`, `integrations`, `metrics`, `prestashop`, `resend`, `semantic-layer`, `semrush`, `x-twitter`
84
- - Owner: `@jskit-ai/connectors-catalog@0.1.62`
106
+ - Owner: `@jskit-ai/connectors-catalog@0.1.63`
85
107
  - Read: [PATTERN.md](patterns/connectors/api-key-connection/PATTERN.md)
86
108
  - Examples: [example/](patterns/connectors/api-key-connection/example/)
87
109
  - Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
@@ -92,7 +114,7 @@ Compose token-based MCP discovery and explicitly authorized tool calls using the
92
114
 
93
115
  - Id: `connectors/assistant-mcp`
94
116
  - Keywords: `assistant`, `cli`, `connectors`, `files`, `integrations`, `mcp`, `n8n`, `sanity`
95
- - Owner: `@jskit-ai/connectors-catalog@0.1.62`
117
+ - Owner: `@jskit-ai/connectors-catalog@0.1.63`
96
118
  - Read: [PATTERN.md](patterns/connectors/assistant-mcp/PATTERN.md)
97
119
  - Examples: [example/](patterns/connectors/assistant-mcp/example/)
98
120
  - Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
@@ -103,7 +125,7 @@ Configure assistant OAuth clients, then compose existing state, encrypted file g
103
125
 
104
126
  - Id: `connectors/assistant-mcp-oauth`
105
127
  - Keywords: `amplitude`, `assistant`, `atlassian`, `canva`, `cli`, `client metadata`, `confidence`, `connectors`, `figma`, `files`, `granola`, `hex`, `mcp`, `miro`, `oauth`
106
- - Owner: `@jskit-ai/connectors-catalog@0.1.62`
128
+ - Owner: `@jskit-ai/connectors-catalog@0.1.63`
107
129
  - Read: [PATTERN.md](patterns/connectors/assistant-mcp-oauth/PATTERN.md)
108
130
  - Examples: [example/](patterns/connectors/assistant-mcp-oauth/example/)
109
131
  - Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
@@ -114,7 +136,7 @@ Compose signed AWS operations, file configuration and application authorization
114
136
 
115
137
  - Id: `connectors/aws-storage-queries`
116
138
  - Keywords: `athena`, `aws`, `cli`, `connectors`, `files`, `iam`, `queries`, `s3`, `storage`, `sts`
117
- - Owner: `@jskit-ai/connectors-catalog@0.1.62`
139
+ - Owner: `@jskit-ai/connectors-catalog@0.1.63`
118
140
  - Read: [PATTERN.md](patterns/connectors/aws-storage-queries/PATTERN.md)
119
141
  - Examples: [example/](patterns/connectors/aws-storage-queries/example/)
120
142
  - Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
@@ -125,7 +147,7 @@ Compose reusable connection libraries with portable configuration, application o
125
147
 
126
148
  - Id: `connectors/calendar-cli`
127
149
  - Keywords: `calendar`, `cli`, `connectors`, `google`, `integrations`, `oauth`, `permissions`
128
- - Owner: `@jskit-ai/connector-google-calendar@0.1.61`
150
+ - Owner: `@jskit-ai/connector-google-calendar@0.1.62`
129
151
  - Read: [PATTERN.md](patterns/connectors/calendar-cli/PATTERN.md)
130
152
  - Examples: [example/](patterns/connectors/calendar-cli/example/)
131
153
  - Requires: `@jskit-ai/connector-google-calendar`, `@jskit-ai/connectors-core`, `@jskit-ai/database-runtime-mysql`
@@ -136,7 +158,7 @@ Compose the shared connector runtime for event delivery while leaving workflow c
136
158
 
137
159
  - Id: `connectors/event-delivery`
138
160
  - Keywords: `cli`, `connectors`, `events`, `files`, `inngest`, `integrations`, `workflows`
139
- - Owner: `@jskit-ai/connectors-catalog@0.1.62`
161
+ - Owner: `@jskit-ai/connectors-catalog@0.1.63`
140
162
  - Read: [PATTERN.md](patterns/connectors/event-delivery/PATTERN.md)
141
163
  - Examples: [example/](patterns/connectors/event-delivery/example/)
142
164
  - Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
@@ -147,7 +169,7 @@ Wire service-account grants, file storage, explicit message actions and public b
147
169
 
148
170
  - Id: `connectors/firebase-messaging`
149
171
  - Keywords: `cli`, `connectors`, `fcm`, `files`, `firebase`, `integrations`, `jwt`, `notifications`, `push`, `service-account`, `vapid`
150
- - Owner: `@jskit-ai/connectors-catalog@0.1.62`
172
+ - Owner: `@jskit-ai/connectors-catalog@0.1.63`
151
173
  - Read: [PATTERN.md](patterns/connectors/firebase-messaging/PATTERN.md)
152
174
  - Examples: [example/](patterns/connectors/firebase-messaging/example/)
153
175
  - Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
@@ -158,7 +180,7 @@ Compose reviewed Search campaigns with project-owned Google OAuth and portable s
158
180
 
159
181
  - Id: `connectors/google-ads-search`
160
182
  - Keywords: `ads`, `campaigns`, `cli`, `connectors`, `conversion`, `google`, `search`
161
- - Owner: `@jskit-ai/connectors-catalog@0.1.62`
183
+ - Owner: `@jskit-ai/connectors-catalog@0.1.63`
162
184
  - Read: [PATTERN.md](patterns/connectors/google-ads-search/PATTERN.md)
163
185
  - Examples: [example/](patterns/connectors/google-ads-search/example/)
164
186
  - Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
@@ -169,7 +191,7 @@ Compose provider consent, verification and encrypted file persistence from an ap
169
191
 
170
192
  - Id: `connectors/oauth-connection`
171
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`
172
- - Owner: `@jskit-ai/connectors-catalog@0.1.62`
194
+ - Owner: `@jskit-ai/connectors-catalog@0.1.63`
173
195
  - Read: [PATTERN.md](patterns/connectors/oauth-connection/PATTERN.md)
174
196
  - Examples: [example/](patterns/connectors/oauth-connection/example/)
175
197
  - Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
@@ -180,7 +202,7 @@ Compose a sequential catalogue batch and preserve partial success for applicatio
180
202
 
181
203
  - Id: `connectors/paddle-catalogue`
182
204
  - Keywords: `batch`, `paddle`, `payments`, `prices`, `products`
183
- - Owner: `@jskit-ai/connectors-catalog@0.1.62`
205
+ - Owner: `@jskit-ai/connectors-catalog@0.1.63`
184
206
  - Read: [PATTERN.md](patterns/connectors/paddle-catalogue/PATTERN.md)
185
207
  - Examples: [example/](patterns/connectors/paddle-catalogue/example/)
186
208
  - Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
@@ -191,7 +213,7 @@ Resolve a publishable image key deliberately and use the shared URL library in a
191
213
 
192
214
  - Id: `connectors/public-image`
193
215
  - Keywords: `cli`, `connectors`, `files`, `images`, `integrations`, `logo-dev`, `public-key`
194
- - Owner: `@jskit-ai/connectors-catalog@0.1.62`
216
+ - Owner: `@jskit-ai/connectors-catalog@0.1.63`
195
217
  - Read: [PATTERN.md](patterns/connectors/public-image/PATTERN.md)
196
218
  - Examples: [example/](patterns/connectors/public-image/example/)
197
219
  - Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
@@ -202,7 +224,7 @@ Compose file configuration, Redshift Data API operations and application query o
202
224
 
203
225
  - Id: `connectors/redshift-queries`
204
226
  - Keywords: `aws`, `cli`, `connectors`, `files`, `iam`, `provisioned`, `redshift`, `serverless`, `sql`, `warehouse`
205
- - Owner: `@jskit-ai/connectors-catalog@0.1.62`
227
+ - Owner: `@jskit-ai/connectors-catalog@0.1.63`
206
228
  - Read: [PATTERN.md](patterns/connectors/redshift-queries/PATTERN.md)
207
229
  - Examples: [example/](patterns/connectors/redshift-queries/example/)
208
230
  - Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
@@ -213,7 +235,7 @@ Use the shared scanner runtime from a CLI or a host worker with portable configu
213
235
 
214
236
  - Id: `connectors/source-scanning`
215
237
  - Keywords: `cancellation`, `cli`, `connectors`, `integrations`, `scanning`, `security`, `source`, `wiz`, `worker`
216
- - Owner: `@jskit-ai/connectors-catalog@0.1.62`
238
+ - Owner: `@jskit-ai/connectors-catalog@0.1.63`
217
239
  - Read: [PATTERN.md](patterns/connectors/source-scanning/PATTERN.md)
218
240
  - Examples: [example/](patterns/connectors/source-scanning/example/)
219
241
  - Requires: `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`
@@ -224,7 +246,7 @@ Add a protected administration surface, settings shell, and semantic navigation
224
246
 
225
247
  - Id: `console/console-surface`
226
248
  - Keywords: `admin`, `console`, `navigation`, `owner`, `placement`, `settings`, `surface`
227
- - Owner: `@jskit-ai/console-web@0.1.213`
249
+ - Owner: `@jskit-ai/console-web@0.1.214`
228
250
  - Read: [PATTERN.md](patterns/console/console-surface/PATTERN.md)
229
251
  - Examples: [example/](patterns/console/console-surface/example/)
230
252
  - Requires: `@jskit-ai/console-core`, `@jskit-ai/console-web`, `@jskit-ai/shell-web`
@@ -235,7 +257,7 @@ Build a routed CRUD user interface as thin application pages over JSKIT's shared
235
257
 
236
258
  - Id: `crud/crud-screen-set`
237
259
  - Keywords: `actions`, `add`, `crud`, `delete`, `edit`, `filters`, `list`, `material`, `routes`, `view`, `vue`
238
- - Owner: `@jskit-ai/http-web@0.1.90`
260
+ - Owner: `@jskit-ai/http-web@0.1.91`
239
261
  - Read: [PATTERN.md](patterns/crud/crud-screen-set/PATTERN.md)
240
262
  - Examples: [example/](patterns/crud/crud-screen-set/example/)
241
263
  - Requires: `@jskit-ai/http-web`, `@jskit-ai/resource-crud-core`
@@ -246,7 +268,7 @@ Build a complete application-owned CRUD server package from a migration, resourc
246
268
 
247
269
  - Id: `crud/json-api-resource-package`
248
270
  - Keywords: `actions`, `crud`, `database`, `json-api`, `migration`, `permissions`, `provider`, `repository`, `routes`, `service`
249
- - Owner: `@jskit-ai/crud-core@0.1.255`
271
+ - Owner: `@jskit-ai/crud-core@0.1.256`
250
272
  - Read: [PATTERN.md](patterns/crud/json-api-resource-package/PATTERN.md)
251
273
  - Examples: [example/](patterns/crud/json-api-resource-package/example/)
252
274
  - Requires: `@jskit-ai/crud-core`, `@jskit-ai/resource-crud-core`
@@ -257,7 +279,7 @@ Define an authenticated application resource whose records belong to the current
257
279
 
258
280
  - Id: `crud/resource-contract`
259
281
  - Keywords: `authenticated`, `crud`, `database`, `owner-scoped`, `resource`, `user`
260
- - Owner: `@jskit-ai/resource-crud-core@0.1.186`
282
+ - Owner: `@jskit-ai/resource-crud-core@0.1.187`
261
283
  - Read: [PATTERN.md](patterns/crud/resource-contract/PATTERN.md)
262
284
  - Examples: [example/](patterns/crud/resource-contract/example/)
263
285
  - Requires: `@jskit-ai/resource-crud-core`
@@ -268,7 +290,7 @@ Configure a JSKIT application for MySQL with a fixed driver, ordinary environmen
268
290
 
269
291
  - Id: `database/mysql-application`
270
292
  - Keywords: `database`, `knex`, `mariadb`, `migrations`, `mysql`, `mysql2`
271
- - Owner: `@jskit-ai/database-runtime-mysql@0.1.242`
293
+ - Owner: `@jskit-ai/database-runtime-mysql@0.1.243`
272
294
  - Read: [PATTERN.md](patterns/database/mysql-application/PATTERN.md)
273
295
  - Examples: [example/](patterns/database/mysql-application/example/)
274
296
  - Requires: `@jskit-ai/database-runtime-mysql`
@@ -279,7 +301,7 @@ Configure a JSKIT application for PostgreSQL with a fixed driver, ordinary envir
279
301
 
280
302
  - Id: `database/postgres-application`
281
303
  - Keywords: `database`, `knex`, `migrations`, `pg`, `postgres`, `postgresql`
282
- - Owner: `@jskit-ai/database-runtime-postgres@0.1.241`
304
+ - Owner: `@jskit-ai/database-runtime-postgres@0.1.242`
283
305
  - Read: [PATTERN.md](patterns/database/postgres-application/PATTERN.md)
284
306
  - Examples: [example/](patterns/database/postgres-application/example/)
285
307
  - Requires: `@jskit-ai/database-runtime-postgres`
@@ -290,7 +312,7 @@ Wrap a JSKIT web application in a Capacitor Android shell using native Capacitor
290
312
 
291
313
  - Id: `mobile/android-application`
292
314
  - Keywords: `android`, `capacitor`, `device`, `mobile`, `native`, `shell`, `webview`
293
- - Owner: `@jskit-ai/mobile-capacitor@0.1.180`
315
+ - Owner: `@jskit-ai/mobile-capacitor@0.1.181`
294
316
  - Read: [PATTERN.md](patterns/mobile/android-application/PATTERN.md)
295
317
  - Examples: [example/](patterns/mobile/android-application/example/)
296
318
  - Requires: `@capacitor/android`, `@capacitor/app`, `@capacitor/cli`, `@jskit-ai/mobile-capacitor`
@@ -301,7 +323,7 @@ Add JSKIT realtime events with an optional Redis backplane and an explicit shell
301
323
 
302
324
  - Id: `realtime/realtime-application`
303
325
  - Keywords: `realtime`, `redis`, `socket.io`, `sockets`, `status`, `websocket`
304
- - Owner: `@jskit-ai/realtime@0.1.242`
326
+ - Owner: `@jskit-ai/realtime@0.1.243`
305
327
  - Read: [PATTERN.md](patterns/realtime/realtime-application/PATTERN.md)
306
328
  - Examples: [example/](patterns/realtime/realtime-application/example/)
307
329
  - Requires: `@jskit-ai/realtime`, `@jskit-ai/shell-web`
@@ -312,7 +334,7 @@ Compose application-owned Google Publisher Tag delivery with the generic rewarde
312
334
 
313
335
  - Id: `rewards/google-rewarded`
314
336
  - Keywords: `ads`, `google`, `publisher tag`, `rewarded`, `unlock`
315
- - Owner: `@jskit-ai/rewarded-web@0.1.181`
337
+ - Owner: `@jskit-ai/rewarded-web@0.1.182`
316
338
  - Read: [PATTERN.md](patterns/rewards/google-rewarded/PATTERN.md)
317
339
  - Examples: [example/](patterns/rewards/google-rewarded/example/)
318
340
  - Requires: `@jskit-ai/rewarded-web`
@@ -323,7 +345,7 @@ Define a server feature through explicit capabilities and first-class actions, a
323
345
 
324
346
  - Id: `server/feature-package`
325
347
  - Keywords: `actions`, `feature`, `json-rest`, `knex`, `orchestration`, `package`, `provider`, `repository`, `routes`, `server`
326
- - Owner: `@jskit-ai/agent-docs@0.1.239`
348
+ - Owner: `@jskit-ai/agent-docs@0.1.241`
327
349
  - Read: [PATTERN.md](patterns/server/feature-package/PATTERN.md)
328
350
  - Examples: [example/](patterns/server/feature-package/example/)
329
351
  - Requires: `@jskit-ai/kernel`
@@ -334,7 +356,7 @@ Compose the JSKIT responsive shell, semantic placements, settings navigation, an
334
356
 
335
357
  - Id: `shell/application-shell`
336
358
  - Keywords: `adaptive`, `app`, `layout`, `navigation`, `placement`, `responsive`, `settings`, `shell`
337
- - Owner: `@jskit-ai/shell-web@0.1.249`
359
+ - Owner: `@jskit-ai/shell-web@0.1.250`
338
360
  - Read: [PATTERN.md](patterns/shell/application-shell/PATTERN.md)
339
361
  - Examples: [example/](patterns/shell/application-shell/example/)
340
362
  - Requires: `@jskit-ai/kernel`, `@jskit-ai/shell-web`
@@ -345,7 +367,7 @@ Add product routes and shell extensions through file routing, semantic placement
345
367
 
346
368
  - Id: `ui/page-and-placement`
347
369
  - Keywords: `component`, `navigation`, `outlet`, `page`, `placement`, `routes`, `section`, `shell`, `subpages`, `vue`
348
- - Owner: `@jskit-ai/shell-web@0.1.249`
370
+ - Owner: `@jskit-ai/shell-web@0.1.250`
349
371
  - Read: [PATTERN.md](patterns/ui/page-and-placement/PATTERN.md)
350
372
  - Examples: [example/](patterns/ui/page-and-placement/example/)
351
373
  - Requires: `@jskit-ai/kernel`, `@jskit-ai/shell-web`
@@ -356,7 +378,7 @@ Compose an account settings route and profile, preference, and notification sect
356
378
 
357
379
  - Id: `users/account-settings`
358
380
  - Keywords: `account`, `notifications`, `preferences`, `profile`, `settings`, `user`, `vue`
359
- - Owner: `@jskit-ai/users-web@0.1.263`
381
+ - Owner: `@jskit-ai/users-web@0.1.264`
360
382
  - Read: [PATTERN.md](patterns/users/account-settings/PATTERN.md)
361
383
  - Examples: [example/](patterns/users/account-settings/example/)
362
384
  - Requires: `@jskit-ai/shell-web`, `@jskit-ai/users-core`, `@jskit-ai/users-web`
@@ -367,7 +389,7 @@ Expose user administration and workspace-scoped member operations through app-ow
367
389
 
368
390
  - Id: `users/user-administration-server`
369
391
  - Keywords: `account`, `admin`, `member`, `repository`, `resource`, `routes`, `service`, `user`, `workspace`
370
- - Owner: `@jskit-ai/users-core@0.1.257`
392
+ - Owner: `@jskit-ai/users-core@0.1.258`
371
393
  - Read: [PATTERN.md](patterns/users/user-administration-server/PATTERN.md)
372
394
  - Examples: [example/](patterns/users/user-administration-server/example/)
373
395
  - Requires: `@jskit-ai/crud-core`, `@jskit-ai/users-core`
@@ -378,7 +400,7 @@ Configure roles, workspace access policy, invitations, and app-owned invitation
378
400
 
379
401
  - Id: `workspaces/workspace-server`
380
402
  - Keywords: `access`, `invite`, `membership`, `multitenancy`, `policy`, `role`, `tenancy`, `workspace`
381
- - Owner: `@jskit-ai/workspaces-core@0.1.222`
403
+ - Owner: `@jskit-ai/workspaces-core@0.1.223`
382
404
  - Read: [PATTERN.md](patterns/workspaces/workspace-server/PATTERN.md)
383
405
  - Examples: [example/](patterns/workspaces/workspace-server/example/)
384
406
  - Requires: `@jskit-ai/users-core`, `@jskit-ai/workspaces-core`
@@ -389,7 +411,7 @@ Compose workspace selection, invitation, member administration, settings, and re
389
411
 
390
412
  - Id: `workspaces/workspace-surfaces`
391
413
  - Keywords: `admin`, `invite`, `member`, `navigation`, `settings`, `surface`, `switcher`, `workspace`
392
- - Owner: `@jskit-ai/workspaces-web@0.1.224`
414
+ - Owner: `@jskit-ai/workspaces-web@0.1.225`
393
415
  - Read: [PATTERN.md](patterns/workspaces/workspace-surfaces/PATTERN.md)
394
416
  - Examples: [example/](patterns/workspaces/workspace-surfaces/example/)
395
417
  - Requires: `@jskit-ai/shell-web`, `@jskit-ai/workspaces-core`, `@jskit-ai/workspaces-web`
@@ -34,7 +34,7 @@
34
34
  "dependencies": {
35
35
  "@local/main": "0.1.0",
36
36
  "@fastify/static": "^10.1.3",
37
- "@jskit-ai/kernel": "0.1.244",
37
+ "@jskit-ai/kernel": "0.1.245",
38
38
  "@tanstack/vue-query": "^5.101.0",
39
39
  "fastify": "^5.8.5",
40
40
  "json-rest-schema": "^1.0.17",
@@ -42,13 +42,13 @@
42
42
  "vue": "^3.5.44",
43
43
  "vue-router": "^5.3.1",
44
44
  "vuetify": "^4.1.2",
45
- "@jskit-ai/http-runtime": "0.1.242",
45
+ "@jskit-ai/http-runtime": "0.1.243",
46
46
  "@fastify/fast-json-stringify-compiler": "^5.1.0",
47
47
  "@vue/devtools-api": "^8.2.1"
48
48
  },
49
49
  "devDependencies": {
50
50
  "@jskit-ai/config-eslint": "0.1.241",
51
- "@jskit-ai/jskit-catalog": "0.1.292",
51
+ "@jskit-ai/jskit-catalog": "0.1.294",
52
52
  "@playwright/test": "1.61.1",
53
53
  "@vitejs/plugin-vue": "^6.0.7",
54
54
  "eslint": "^10.8.0",
@@ -34,7 +34,7 @@
34
34
  "dependencies": {
35
35
  "@local/main": "0.1.0",
36
36
  "@fastify/static": "^10.1.3",
37
- "@jskit-ai/kernel": "0.1.244",
37
+ "@jskit-ai/kernel": "0.1.245",
38
38
  "@tanstack/vue-query": "^5.101.0",
39
39
  "fastify": "^5.8.5",
40
40
  "json-rest-schema": "^1.0.17",
@@ -42,15 +42,15 @@
42
42
  "vue": "^3.5.44",
43
43
  "vue-router": "^5.3.1",
44
44
  "vuetify": "^4.1.2",
45
- "@jskit-ai/http-runtime": "0.1.242",
45
+ "@jskit-ai/http-runtime": "0.1.243",
46
46
  "@mdi/js": "^7.4.47",
47
- "@jskit-ai/shell-web": "0.1.249",
47
+ "@jskit-ai/shell-web": "0.1.250",
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.241",
53
- "@jskit-ai/jskit-catalog": "0.1.292",
53
+ "@jskit-ai/jskit-catalog": "0.1.294",
54
54
  "@playwright/test": "1.61.1",
55
55
  "@vitejs/plugin-vue": "^6.0.7",
56
56
  "eslint": "^10.8.0",
@@ -9,7 +9,7 @@
9
9
  },
10
10
  "description": "App-local runtime composition and lightweight glue.",
11
11
  "dependencies": {
12
- "@jskit-ai/kernel": "0.1.244"
12
+ "@jskit-ai/kernel": "0.1.245"
13
13
  },
14
14
  "jskit": {
15
15
  "kind": "runtime",