@jskit-ai/agent-docs 0.1.138 → 0.1.140
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/guide/agent/app-extras/assistant.md +76 -0
- package/guide/agent/app-setup/existing-application-migration.md +12 -6
- package/guide/agent/app-setup/quickstart.md +5 -3
- package/guide/agent/app-setup/upgrading-jskit.md +110 -0
- package/guide/agent/index.md +5 -3
- package/package.json +1 -1
- package/patterns/feature-package/example/booking-engine/package.json +1 -1
- package/patterns/minimal-foundation/example/package.json +8 -5
- package/patterns/shell-foundation/example/package.json +9 -6
- package/patterns/shell-foundation/example/packages/main/package.json +1 -1
- package/reference/autogen/PATTERN_INDEX.md +20 -20
- package/reference/autogen/packages/assistant-core.md +27 -1
- package/reference/autogen/packages/crud-core.md +10 -1
- package/reference/autogen/packages/http-runtime.md +1 -0
- package/reference/autogen/tooling/jskit-catalog.md +41 -0
- package/skills/jskit/references/existing-application-migration.md +12 -6
- package/skills/jskit/references/pattern-index.md +20 -20
|
@@ -37,6 +37,82 @@ Workspace scope is valid only when both the runtime and its settings surface
|
|
|
37
37
|
are workspace-aware. Requests must retain the selected workspace through the
|
|
38
38
|
server action boundary.
|
|
39
39
|
|
|
40
|
+
## Action tools
|
|
41
|
+
|
|
42
|
+
The assistant reads automation-capable actions from `runtime.actions`. It keeps
|
|
43
|
+
the typing user's actor, permissions, target surface, and workspace context,
|
|
44
|
+
then executes through `runtime.actions.execute()` with the `automation`
|
|
45
|
+
channel. When workspace context resolves `workspaceSlug`, the tool schema hides
|
|
46
|
+
that field and execution overwrites any model-supplied value with the trusted
|
|
47
|
+
context value.
|
|
48
|
+
|
|
49
|
+
An action is available as a tool only when it has an input contract and a
|
|
50
|
+
truthful model-facing output contract. Ordinary actions use their normal
|
|
51
|
+
`output`. An action whose native result needs a different model-facing shape
|
|
52
|
+
can declare the adapter-specific contract and transformation explicitly:
|
|
53
|
+
|
|
54
|
+
```js
|
|
55
|
+
{
|
|
56
|
+
input,
|
|
57
|
+
output: null,
|
|
58
|
+
extensions: {
|
|
59
|
+
assistant: {
|
|
60
|
+
description: "List books.",
|
|
61
|
+
output: booksResource.operations.list.output,
|
|
62
|
+
transformResult(result, { input, context }) {
|
|
63
|
+
return toAssistantBookList(result, { input, context });
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
The assistant validates the transformed result against
|
|
71
|
+
`extensions.assistant.output` before returning it to the model. Generated
|
|
72
|
+
JSON:API CRUD actions supply these assistant contracts and transformations
|
|
73
|
+
automatically; their native action and HTTP result shapes do not change.
|
|
74
|
+
|
|
75
|
+
Generated list and view actions use JSON:API query shapes directly. `include`
|
|
76
|
+
is a comma-separated string, and `fields` is keyed by resource type:
|
|
77
|
+
|
|
78
|
+
```json
|
|
79
|
+
{
|
|
80
|
+
"include": "pet",
|
|
81
|
+
"fields": {
|
|
82
|
+
"bookings": ["petId"],
|
|
83
|
+
"pets": ["name"]
|
|
84
|
+
},
|
|
85
|
+
"limit": 5
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Sparse primary fields remain sparse in the result. Requested included records
|
|
90
|
+
use the resource's lookup container and relationship name, for example
|
|
91
|
+
`items[0].lookups.pet.name`. Invalid array forms such as `include: ["pet"]` or
|
|
92
|
+
`fields: ["pet.name"]` are rejected with field-specific shape guidance.
|
|
93
|
+
Applications do not need an assistant discovery or CRUD transformation bridge.
|
|
94
|
+
|
|
95
|
+
Up to 32 authorized actions remain direct tools. For a larger authorized
|
|
96
|
+
catalog, the runtime automatically exposes compact paged action search, exact
|
|
97
|
+
one-action contract lookup, and contract-gated execution tools. Search returns
|
|
98
|
+
at most 20 compact matches and never includes schemas. Tool arguments and
|
|
99
|
+
results are byte-bounded; an oversized result returns a controlled error so it
|
|
100
|
+
cannot overflow assistant transcript storage.
|
|
101
|
+
|
|
102
|
+
## Height and scrolling
|
|
103
|
+
|
|
104
|
+
`AssistantSurfaceClientElement` owns its bounded responsive layout. Below the
|
|
105
|
+
medium breakpoint the sidebar column is absent and the compact conversation
|
|
106
|
+
control remains available; at medium and expanded widths the non-wrapping 8/4
|
|
107
|
+
chat and sidebar layout is visible. Long conversations scroll inside the
|
|
108
|
+
message panel while the composer remains in view.
|
|
109
|
+
|
|
110
|
+
Do not deep-override `.assistant-layout`, `.assistant-main-col`, or
|
|
111
|
+
`.assistant-side-col`. A normal page can mount the public element directly. If
|
|
112
|
+
the product deliberately embeds it in a shorter flex pane, that app-owned pane
|
|
113
|
+
must have a definite height and `min-height: 0` so its child is allowed to
|
|
114
|
+
shrink.
|
|
115
|
+
|
|
40
116
|
## Verification
|
|
41
117
|
|
|
42
118
|
Run migrations, load assistant and settings pages through normal navigation,
|
|
@@ -53,8 +53,12 @@ generic CRUD merely to make the structure look uniform.
|
|
|
53
53
|
Use the installed JSKIT pattern index and package metadata to select the
|
|
54
54
|
smallest complete package set. Plan the top-level dependencies and their
|
|
55
55
|
ordinary npm closure before changing the lockfile, then install that planned
|
|
56
|
-
closure once. Review `package.json` and the lockfile as source changes.
|
|
57
|
-
|
|
56
|
+
closure once. Review `package.json` and the lockfile as source changes. Adopt
|
|
57
|
+
the supported package-graph scripts and run `npm run jskit:update` before
|
|
58
|
+
changing application source; see the **Upgrade JSKIT** guide in the agent docs.
|
|
59
|
+
The updater aligns root and workspace declarations to one published release
|
|
60
|
+
cohort, installs once at the project root, and verifies the resulting lockfile.
|
|
61
|
+
It does not regenerate or synchronize application source.
|
|
58
62
|
|
|
59
63
|
Model product domains through `defineFeature()` when they own a real capability
|
|
60
64
|
or operation boundary. A Feature declares stable named `requires`, optional
|
|
@@ -78,10 +82,12 @@ still have callers and tests.
|
|
|
78
82
|
|
|
79
83
|
Audit application `AGENTS.md` files, ordinary documentation, npm scripts, CI,
|
|
80
84
|
and package metadata as well as executable source. There is no supported
|
|
81
|
-
`jskit doctor` command or general JSKIT authoring CLI.
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
+
`jskit doctor` command or general JSKIT source-authoring CLI. The supported
|
|
86
|
+
`jskit update` and `jskit check` commands own only the installed package graph;
|
|
87
|
+
they do not author, regenerate, or certify application source. Replace stale
|
|
88
|
+
doctor or authoring instructions with current-state checks owned by runtime
|
|
89
|
+
startup, the client build, migration status and disposable rebuilds, the
|
|
90
|
+
application's normal verification script, and Playwright.
|
|
85
91
|
|
|
86
92
|
## 3. Choose the narrowest server seam that owns each behavior
|
|
87
93
|
|
|
@@ -46,9 +46,11 @@ database product may need a local auth provider, auth UI, users, and one
|
|
|
46
46
|
database runtime. A public single-user tool may need none of those.
|
|
47
47
|
|
|
48
48
|
Inspect package details and patterns before modifying the package graph. Apply
|
|
49
|
-
one coherent dependency plan, then run `npm install` once
|
|
50
|
-
|
|
51
|
-
|
|
49
|
+
one coherent dependency plan, then run `npm install` once and `npm run
|
|
50
|
+
jskit:check`. Use `npm run jskit:update` for later coordinated framework
|
|
51
|
+
upgrades; see [Upgrade JSKIT](/guide/app-setup/upgrading-jskit). Environment
|
|
52
|
+
values come from the selected technology contract. They are not product
|
|
53
|
+
questions and must not be copied into committed source.
|
|
52
54
|
|
|
53
55
|
## Build the first product operation
|
|
54
56
|
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
<!-- Generated by `npm run agent-docs:build` from `packages/agent-docs/site/guide/app-setup/upgrading-jskit.md`. Do not edit manually. -->
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
title: Upgrade JSKIT
|
|
5
|
+
description: Keep root and workspace package declarations on one published JSKIT release cohort and enforce it in CI.
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Upgrade JSKIT
|
|
9
|
+
|
|
10
|
+
JSKIT packages are released as one coordinated catalog. Upgrade the whole
|
|
11
|
+
declared graph together; do not update an assistant, shell, web runtime, or
|
|
12
|
+
workspace package in isolation.
|
|
13
|
+
|
|
14
|
+
## Add the supported project commands
|
|
15
|
+
|
|
16
|
+
Current application foundations already contain these entries. For an older
|
|
17
|
+
application, add the catalog and scripts at the project root:
|
|
18
|
+
|
|
19
|
+
```json
|
|
20
|
+
{
|
|
21
|
+
"scripts": {
|
|
22
|
+
"jskit:update": "npx --yes @jskit-ai/jskit-catalog@latest update",
|
|
23
|
+
"jskit:check": "jskit check"
|
|
24
|
+
},
|
|
25
|
+
"devDependencies": {
|
|
26
|
+
"@jskit-ai/jskit-catalog": "<current exact version>"
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
If a legacy application still declares the retired authoring CLI, remove it
|
|
32
|
+
first:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
npm uninstall --save-dev @jskit-ai/jskit-cli
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Then install the catalog once and let the updater select its exact coordinated
|
|
39
|
+
version:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
npm install --save-dev --save-exact @jskit-ai/jskit-catalog@latest
|
|
43
|
+
npm run jskit:update
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
The updater rejects unknown JSKIT packages and private JSKIT overrides during
|
|
47
|
+
preflight, before changing any manifest.
|
|
48
|
+
|
|
49
|
+
`jskit:update` reads the latest published catalog, discovers the root manifest
|
|
50
|
+
and npm workspaces, and preflights every declared `@jskit-ai/*` package. It then
|
|
51
|
+
updates all matching dependency, development-dependency, peer-dependency, and
|
|
52
|
+
optional-dependency declarations as one validated manifest set. Non-JSKIT
|
|
53
|
+
dependencies are unchanged. It installs once from the root and checks the new
|
|
54
|
+
`package-lock.json` before succeeding.
|
|
55
|
+
|
|
56
|
+
If writing one manifest fails, the updater restores any manifests already
|
|
57
|
+
replaced. If `npm install` fails because of registry access or a real peer
|
|
58
|
+
conflict, the aligned manifests remain visible for repair; resolve the reported
|
|
59
|
+
problem and rerun `npm run jskit:update`.
|
|
60
|
+
|
|
61
|
+
## Enforce the graph in CI
|
|
62
|
+
|
|
63
|
+
Run this after `npm ci`, and include it in the application's normal verifier:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
npm run jskit:check
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
For example:
|
|
70
|
+
|
|
71
|
+
```json
|
|
72
|
+
{
|
|
73
|
+
"scripts": {
|
|
74
|
+
"verify": "npm run jskit:check && npm run lint && npm test && npm run build"
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
The check fails when:
|
|
80
|
+
|
|
81
|
+
- a root or workspace JSKIT declaration differs from the installed coordinated
|
|
82
|
+
catalog;
|
|
83
|
+
- resolved JSKIT packages use stale, unknown, or multiple release versions;
|
|
84
|
+
- a shared singleton client package has a private nested installation;
|
|
85
|
+
- a JSKIT override tries to force a private graph;
|
|
86
|
+
- a declared package has no lockfile installation, or the lockfile is missing.
|
|
87
|
+
|
|
88
|
+
Shared client owners such as the kernel, HTTP runtime, shell, auth web runtime,
|
|
89
|
+
realtime runtime, and assistant runtime use exact peer dependencies where they
|
|
90
|
+
must share application state. A partial upgrade can therefore fail during npm
|
|
91
|
+
installation instead of silently nesting a second client stack.
|
|
92
|
+
|
|
93
|
+
## Application migration
|
|
94
|
+
|
|
95
|
+
The updater changes package manifests and the lockfile only. It does not
|
|
96
|
+
regenerate routes, resources, pages, migrations, or application-owned source.
|
|
97
|
+
Review the diff, run the normal database migration command if the selected
|
|
98
|
+
release contains database migrations, then run the full application verifier.
|
|
99
|
+
|
|
100
|
+
For the native assistant action and responsive layout fixes, updating the
|
|
101
|
+
packages and lockfile is sufficient. No application regeneration or database
|
|
102
|
+
migration is required. Remove temporary app-local action discovery/execution
|
|
103
|
+
bridges, JSON:API result transformers, `patch-package` patches, and deep
|
|
104
|
+
`.assistant-*` layout overrides that duplicated those framework owners. Keep
|
|
105
|
+
the public assistant surface id and normal page composition unchanged.
|
|
106
|
+
|
|
107
|
+
Commit `package.json`, every changed workspace manifest, and
|
|
108
|
+
`package-lock.json` together. Do not hand-edit one JSKIT version after the
|
|
109
|
+
updater succeeds; select a different published cohort only through a catalog
|
|
110
|
+
that advertises it.
|
package/guide/agent/index.md
CHANGED
|
@@ -10,6 +10,7 @@ apply or adapt. It does not prescribe an agent host or project orchestrator.
|
|
|
10
10
|
|
|
11
11
|
- [Quickstart](/guide/app-setup/quickstart)
|
|
12
12
|
- [Application foundations](/guide/app-setup/initial-scaffolding)
|
|
13
|
+
- [Upgrade JSKIT](/guide/app-setup/upgrading-jskit)
|
|
13
14
|
- [Migrate an existing application](/guide/app-setup/existing-application-migration)
|
|
14
15
|
- [A more interesting shell](/guide/app-setup/a-more-interesting-shell)
|
|
15
16
|
- [Authentication](/guide/app-setup/authentication)
|
|
@@ -31,6 +32,7 @@ capabilities selected by the product. For implementation, the installed JSKIT
|
|
|
31
32
|
skill routes the agent to package-owned `PATTERN.md` files and the smallest
|
|
32
33
|
relevant public API reference.
|
|
33
34
|
|
|
34
|
-
There are no generator
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
There are no source-generator chapters. Package-owned patterns replace their
|
|
36
|
+
useful source examples; questionnaire, mutation, and provenance machinery is
|
|
37
|
+
not part of JSKIT. The supported `jskit update` and `jskit check` commands own
|
|
38
|
+
only dependency manifests and lockfile conformance.
|
package/package.json
CHANGED
|
@@ -24,12 +24,14 @@
|
|
|
24
24
|
"test": "node --test",
|
|
25
25
|
"test:client": "vitest run tests/client",
|
|
26
26
|
"test:e2e": "playwright test tests/e2e",
|
|
27
|
-
"
|
|
27
|
+
"jskit:update": "npx --yes @jskit-ai/jskit-catalog@latest update",
|
|
28
|
+
"jskit:check": "jskit check",
|
|
29
|
+
"verify": "npm run jskit:check && npm run lint && npm run test && npm run test:client && npm run build"
|
|
28
30
|
},
|
|
29
31
|
"dependencies": {
|
|
30
32
|
"@local/main": "file:packages/main",
|
|
31
33
|
"@fastify/static": "^10.1.3",
|
|
32
|
-
"@jskit-ai/kernel": "0.1.
|
|
34
|
+
"@jskit-ai/kernel": "0.1.168",
|
|
33
35
|
"@tanstack/vue-query": "^5.101.0",
|
|
34
36
|
"fastify": "^5.8.5",
|
|
35
37
|
"json-rest-schema": "^1.0.17",
|
|
@@ -37,11 +39,12 @@
|
|
|
37
39
|
"vue": "^3.5.38",
|
|
38
40
|
"vue-router": "^5.1.0",
|
|
39
41
|
"vuetify": "^4.1.2",
|
|
40
|
-
"@jskit-ai/http-runtime": "0.1.
|
|
42
|
+
"@jskit-ai/http-runtime": "0.1.166"
|
|
41
43
|
},
|
|
42
44
|
"devDependencies": {
|
|
43
|
-
"@jskit-ai/agent-docs": "0.1.
|
|
44
|
-
"@jskit-ai/config-eslint": "0.1.
|
|
45
|
+
"@jskit-ai/agent-docs": "0.1.140",
|
|
46
|
+
"@jskit-ai/config-eslint": "0.1.165",
|
|
47
|
+
"@jskit-ai/jskit-catalog": "0.1.193",
|
|
45
48
|
"@playwright/test": "1.61.1",
|
|
46
49
|
"@vitejs/plugin-vue": "^6.0.7",
|
|
47
50
|
"eslint": "^10.8.0",
|
|
@@ -24,12 +24,14 @@
|
|
|
24
24
|
"test": "node --test",
|
|
25
25
|
"test:client": "vitest run tests/client",
|
|
26
26
|
"test:e2e": "playwright test tests/e2e",
|
|
27
|
-
"
|
|
27
|
+
"jskit:update": "npx --yes @jskit-ai/jskit-catalog@latest update",
|
|
28
|
+
"jskit:check": "jskit check",
|
|
29
|
+
"verify": "npm run jskit:check && npm run lint && npm run test && npm run test:client && npm run build"
|
|
28
30
|
},
|
|
29
31
|
"dependencies": {
|
|
30
32
|
"@local/main": "file:packages/main",
|
|
31
33
|
"@fastify/static": "^10.1.3",
|
|
32
|
-
"@jskit-ai/kernel": "0.1.
|
|
34
|
+
"@jskit-ai/kernel": "0.1.168",
|
|
33
35
|
"@tanstack/vue-query": "^5.101.0",
|
|
34
36
|
"fastify": "^5.8.5",
|
|
35
37
|
"json-rest-schema": "^1.0.17",
|
|
@@ -37,13 +39,14 @@
|
|
|
37
39
|
"vue": "^3.5.38",
|
|
38
40
|
"vue-router": "^5.1.0",
|
|
39
41
|
"vuetify": "^4.1.2",
|
|
40
|
-
"@jskit-ai/http-runtime": "0.1.
|
|
42
|
+
"@jskit-ai/http-runtime": "0.1.166",
|
|
41
43
|
"@mdi/js": "^7.4.47",
|
|
42
|
-
"@jskit-ai/shell-web": "0.1.
|
|
44
|
+
"@jskit-ai/shell-web": "0.1.172"
|
|
43
45
|
},
|
|
44
46
|
"devDependencies": {
|
|
45
|
-
"@jskit-ai/agent-docs": "0.1.
|
|
46
|
-
"@jskit-ai/config-eslint": "0.1.
|
|
47
|
+
"@jskit-ai/agent-docs": "0.1.140",
|
|
48
|
+
"@jskit-ai/config-eslint": "0.1.165",
|
|
49
|
+
"@jskit-ai/jskit-catalog": "0.1.193",
|
|
47
50
|
"@playwright/test": "1.61.1",
|
|
48
51
|
"@vitejs/plugin-vue": "^6.0.7",
|
|
49
52
|
"eslint": "^10.8.0",
|
|
@@ -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.140`
|
|
19
19
|
- Read: `node_modules/@jskit-ai/agent-docs/patterns/minimal-foundation/PATTERN.md`
|
|
20
20
|
- Examples: `node_modules/@jskit-ai/agent-docs/patterns/minimal-foundation/example/`
|
|
21
21
|
- Requires: `@jskit-ai/http-runtime`, `@jskit-ai/kernel`
|
|
@@ -26,7 +26,7 @@ A concrete JSKIT web application foundation with responsive shell navigation, se
|
|
|
26
26
|
|
|
27
27
|
- Id: `app/shell-foundation`
|
|
28
28
|
- Keywords: `app`, `foundation`, `material`, `navigation`, `placements`, `shell`, `vite`, `vue`
|
|
29
|
-
- Owner: `@jskit-ai/agent-docs@0.1.
|
|
29
|
+
- Owner: `@jskit-ai/agent-docs@0.1.140`
|
|
30
30
|
- Read: `node_modules/@jskit-ai/agent-docs/patterns/shell-foundation/PATTERN.md`
|
|
31
31
|
- Examples: `node_modules/@jskit-ai/agent-docs/patterns/shell-foundation/example/`
|
|
32
32
|
- Requires: `@jskit-ai/http-runtime`, `@jskit-ai/kernel`, `@jskit-ai/shell-web`
|
|
@@ -37,7 +37,7 @@ Configure an assistant runtime for one application surface and expose its chat a
|
|
|
37
37
|
|
|
38
38
|
- Id: `assistant/assistant-surface`
|
|
39
39
|
- Keywords: `ai`, `assistant`, `chat`, `config`, `environment`, `page`, `placement`, `settings`, `surface`
|
|
40
|
-
- Owner: `@jskit-ai/assistant-runtime@0.1.
|
|
40
|
+
- Owner: `@jskit-ai/assistant-runtime@0.1.139`
|
|
41
41
|
- Read: `node_modules/@jskit-ai/assistant-runtime/patterns/assistant-surface/PATTERN.md`
|
|
42
42
|
- Examples: `node_modules/@jskit-ai/assistant-runtime/patterns/assistant-surface/example/`
|
|
43
43
|
- Requires: `@jskit-ai/assistant-runtime`, `@jskit-ai/shell-web`
|
|
@@ -48,7 +48,7 @@ Compose JSKIT authentication routes, views, profile controls, and public surface
|
|
|
48
48
|
|
|
49
49
|
- Id: `auth/auth-surface`
|
|
50
50
|
- Keywords: `account`, `auth`, `login`, `logout`, `password`, `placement`, `profile`, `reset`, `surface`
|
|
51
|
-
- Owner: `@jskit-ai/auth-web@0.1.
|
|
51
|
+
- Owner: `@jskit-ai/auth-web@0.1.168`
|
|
52
52
|
- Read: `node_modules/@jskit-ai/auth-web/patterns/auth-surface/PATTERN.md`
|
|
53
53
|
- Examples: `node_modules/@jskit-ai/auth-web/patterns/auth-surface/example/`
|
|
54
54
|
- Requires: `@jskit-ai/auth-core`, `@jskit-ai/auth-web`, `@jskit-ai/shell-web`
|
|
@@ -59,7 +59,7 @@ Add Supabase authentication through normal npm composition, explicit environment
|
|
|
59
59
|
|
|
60
60
|
- Id: `auth/supabase-auth`
|
|
61
61
|
- Keywords: `auth`, `authentication`, `oauth`, `sessions`, `supabase`
|
|
62
|
-
- Owner: `@jskit-ai/auth-provider-supabase-core@0.1.
|
|
62
|
+
- Owner: `@jskit-ai/auth-provider-supabase-core@0.1.165`
|
|
63
63
|
- Read: `node_modules/@jskit-ai/auth-provider-supabase-core/patterns/supabase-auth/PATTERN.md`
|
|
64
64
|
- Examples: `node_modules/@jskit-ai/auth-provider-supabase-core/patterns/supabase-auth/example/`
|
|
65
65
|
- Requires: `@jskit-ai/auth-provider-supabase-core`
|
|
@@ -70,7 +70,7 @@ Add a protected administration surface, settings shell, and semantic navigation
|
|
|
70
70
|
|
|
71
71
|
- Id: `console/console-surface`
|
|
72
72
|
- Keywords: `admin`, `console`, `navigation`, `owner`, `placement`, `settings`, `surface`
|
|
73
|
-
- Owner: `@jskit-ai/console-web@0.1.
|
|
73
|
+
- Owner: `@jskit-ai/console-web@0.1.136`
|
|
74
74
|
- Read: `node_modules/@jskit-ai/console-web/patterns/console-surface/PATTERN.md`
|
|
75
75
|
- Examples: `node_modules/@jskit-ai/console-web/patterns/console-surface/example/`
|
|
76
76
|
- Requires: `@jskit-ai/console-core`, `@jskit-ai/console-web`, `@jskit-ai/shell-web`
|
|
@@ -81,7 +81,7 @@ Build a routed CRUD user interface as thin application pages over JSKIT's shared
|
|
|
81
81
|
|
|
82
82
|
- Id: `crud/crud-screen-set`
|
|
83
83
|
- Keywords: `actions`, `add`, `crud`, `delete`, `edit`, `filters`, `list`, `material`, `routes`, `view`, `vue`
|
|
84
|
-
- Owner: `@jskit-ai/http-web@0.1.
|
|
84
|
+
- Owner: `@jskit-ai/http-web@0.1.13`
|
|
85
85
|
- Read: `node_modules/@jskit-ai/http-web/patterns/crud-screen-set/PATTERN.md`
|
|
86
86
|
- Examples: `node_modules/@jskit-ai/http-web/patterns/crud-screen-set/example/`
|
|
87
87
|
- Requires: `@jskit-ai/http-web`, `@jskit-ai/resource-crud-core`
|
|
@@ -92,7 +92,7 @@ Build a complete application-owned CRUD server package from a migration, resourc
|
|
|
92
92
|
|
|
93
93
|
- Id: `crud/json-api-resource-package`
|
|
94
94
|
- Keywords: `actions`, `crud`, `database`, `json-api`, `migration`, `permissions`, `provider`, `repository`, `routes`, `service`
|
|
95
|
-
- Owner: `@jskit-ai/crud-core@0.1.
|
|
95
|
+
- Owner: `@jskit-ai/crud-core@0.1.179`
|
|
96
96
|
- Read: `node_modules/@jskit-ai/crud-core/patterns/json-api-resource-package/PATTERN.md`
|
|
97
97
|
- Examples: `node_modules/@jskit-ai/crud-core/patterns/json-api-resource-package/example/`
|
|
98
98
|
- Requires: `@jskit-ai/crud-core`, `@jskit-ai/resource-crud-core`
|
|
@@ -103,7 +103,7 @@ Define an authenticated application resource whose records belong to the current
|
|
|
103
103
|
|
|
104
104
|
- Id: `crud/resource-contract`
|
|
105
105
|
- Keywords: `authenticated`, `crud`, `database`, `owner-scoped`, `resource`, `user`
|
|
106
|
-
- Owner: `@jskit-ai/resource-crud-core@0.1.
|
|
106
|
+
- Owner: `@jskit-ai/resource-crud-core@0.1.110`
|
|
107
107
|
- Read: `node_modules/@jskit-ai/resource-crud-core/patterns/resource-contract/PATTERN.md`
|
|
108
108
|
- Examples: `node_modules/@jskit-ai/resource-crud-core/patterns/resource-contract/example/`
|
|
109
109
|
- Requires: `@jskit-ai/resource-crud-core`
|
|
@@ -114,7 +114,7 @@ Configure a JSKIT application for MySQL with a fixed driver, ordinary environmen
|
|
|
114
114
|
|
|
115
115
|
- Id: `database/mysql-application`
|
|
116
116
|
- Keywords: `database`, `knex`, `mariadb`, `migrations`, `mysql`, `mysql2`
|
|
117
|
-
- Owner: `@jskit-ai/database-runtime-mysql@0.1.
|
|
117
|
+
- Owner: `@jskit-ai/database-runtime-mysql@0.1.166`
|
|
118
118
|
- Read: `node_modules/@jskit-ai/database-runtime-mysql/patterns/mysql-application/PATTERN.md`
|
|
119
119
|
- Examples: `node_modules/@jskit-ai/database-runtime-mysql/patterns/mysql-application/example/`
|
|
120
120
|
- Requires: `@jskit-ai/database-runtime-mysql`
|
|
@@ -125,7 +125,7 @@ Configure a JSKIT application for PostgreSQL with a fixed driver, ordinary envir
|
|
|
125
125
|
|
|
126
126
|
- Id: `database/postgres-application`
|
|
127
127
|
- Keywords: `database`, `knex`, `migrations`, `pg`, `postgres`, `postgresql`
|
|
128
|
-
- Owner: `@jskit-ai/database-runtime-postgres@0.1.
|
|
128
|
+
- Owner: `@jskit-ai/database-runtime-postgres@0.1.165`
|
|
129
129
|
- Read: `node_modules/@jskit-ai/database-runtime-postgres/patterns/postgres-application/PATTERN.md`
|
|
130
130
|
- Examples: `node_modules/@jskit-ai/database-runtime-postgres/patterns/postgres-application/example/`
|
|
131
131
|
- Requires: `@jskit-ai/database-runtime-postgres`
|
|
@@ -136,7 +136,7 @@ Wrap a JSKIT web application in a Capacitor Android shell using native Capacitor
|
|
|
136
136
|
|
|
137
137
|
- Id: `mobile/android-application`
|
|
138
138
|
- Keywords: `android`, `capacitor`, `device`, `mobile`, `native`, `shell`, `webview`
|
|
139
|
-
- Owner: `@jskit-ai/mobile-capacitor@0.1.
|
|
139
|
+
- Owner: `@jskit-ai/mobile-capacitor@0.1.103`
|
|
140
140
|
- Read: `node_modules/@jskit-ai/mobile-capacitor/patterns/android-application/PATTERN.md`
|
|
141
141
|
- Examples: `node_modules/@jskit-ai/mobile-capacitor/patterns/android-application/example/`
|
|
142
142
|
- Requires: `@capacitor/android`, `@capacitor/app`, `@capacitor/cli`, `@jskit-ai/mobile-capacitor`
|
|
@@ -147,7 +147,7 @@ Add JSKIT realtime events with an optional Redis backplane and an explicit shell
|
|
|
147
147
|
|
|
148
148
|
- Id: `realtime/realtime-application`
|
|
149
149
|
- Keywords: `realtime`, `redis`, `socket.io`, `sockets`, `status`, `websocket`
|
|
150
|
-
- Owner: `@jskit-ai/realtime@0.1.
|
|
150
|
+
- Owner: `@jskit-ai/realtime@0.1.165`
|
|
151
151
|
- Read: `node_modules/@jskit-ai/realtime/patterns/realtime-application/PATTERN.md`
|
|
152
152
|
- Examples: `node_modules/@jskit-ai/realtime/patterns/realtime-application/example/`
|
|
153
153
|
- Requires: `@jskit-ai/realtime`, `@jskit-ai/shell-web`
|
|
@@ -158,7 +158,7 @@ Define a server feature through explicit capabilities and first-class actions, a
|
|
|
158
158
|
|
|
159
159
|
- Id: `server/feature-package`
|
|
160
160
|
- Keywords: `actions`, `feature`, `json-rest`, `knex`, `orchestration`, `package`, `provider`, `repository`, `routes`, `server`
|
|
161
|
-
- Owner: `@jskit-ai/agent-docs@0.1.
|
|
161
|
+
- Owner: `@jskit-ai/agent-docs@0.1.140`
|
|
162
162
|
- Read: `node_modules/@jskit-ai/agent-docs/patterns/feature-package/PATTERN.md`
|
|
163
163
|
- Examples: `node_modules/@jskit-ai/agent-docs/patterns/feature-package/example/`
|
|
164
164
|
- Requires: `@jskit-ai/kernel`
|
|
@@ -169,7 +169,7 @@ Compose the JSKIT responsive shell, semantic placements, settings navigation, an
|
|
|
169
169
|
|
|
170
170
|
- Id: `shell/application-shell`
|
|
171
171
|
- Keywords: `adaptive`, `app`, `layout`, `navigation`, `placement`, `responsive`, `settings`, `shell`
|
|
172
|
-
- Owner: `@jskit-ai/shell-web@0.1.
|
|
172
|
+
- Owner: `@jskit-ai/shell-web@0.1.172`
|
|
173
173
|
- Read: `node_modules/@jskit-ai/shell-web/patterns/application-shell/PATTERN.md`
|
|
174
174
|
- Examples: `node_modules/@jskit-ai/shell-web/patterns/application-shell/example/`
|
|
175
175
|
- Requires: `@jskit-ai/kernel`, `@jskit-ai/shell-web`
|
|
@@ -180,7 +180,7 @@ Add product routes and shell extensions through file routing, semantic placement
|
|
|
180
180
|
|
|
181
181
|
- Id: `ui/page-and-placement`
|
|
182
182
|
- Keywords: `component`, `navigation`, `outlet`, `page`, `placement`, `routes`, `section`, `shell`, `subpages`, `vue`
|
|
183
|
-
- Owner: `@jskit-ai/shell-web@0.1.
|
|
183
|
+
- Owner: `@jskit-ai/shell-web@0.1.172`
|
|
184
184
|
- Read: `node_modules/@jskit-ai/shell-web/patterns/page-and-placement/PATTERN.md`
|
|
185
185
|
- Examples: `node_modules/@jskit-ai/shell-web/patterns/page-and-placement/example/`
|
|
186
186
|
- Requires: `@jskit-ai/kernel`, `@jskit-ai/shell-web`
|
|
@@ -191,7 +191,7 @@ Compose an account settings route and profile, preference, and notification sect
|
|
|
191
191
|
|
|
192
192
|
- Id: `users/account-settings`
|
|
193
193
|
- Keywords: `account`, `notifications`, `preferences`, `profile`, `settings`, `user`, `vue`
|
|
194
|
-
- Owner: `@jskit-ai/users-web@0.1.
|
|
194
|
+
- Owner: `@jskit-ai/users-web@0.1.186`
|
|
195
195
|
- Read: `node_modules/@jskit-ai/users-web/patterns/account-settings/PATTERN.md`
|
|
196
196
|
- Examples: `node_modules/@jskit-ai/users-web/patterns/account-settings/example/`
|
|
197
197
|
- Requires: `@jskit-ai/shell-web`, `@jskit-ai/users-core`, `@jskit-ai/users-web`
|
|
@@ -202,7 +202,7 @@ Expose user administration and workspace-scoped member operations through app-ow
|
|
|
202
202
|
|
|
203
203
|
- Id: `users/user-administration-server`
|
|
204
204
|
- Keywords: `account`, `admin`, `member`, `repository`, `resource`, `routes`, `service`, `user`, `workspace`
|
|
205
|
-
- Owner: `@jskit-ai/users-core@0.1.
|
|
205
|
+
- Owner: `@jskit-ai/users-core@0.1.181`
|
|
206
206
|
- Read: `node_modules/@jskit-ai/users-core/patterns/user-administration-server/PATTERN.md`
|
|
207
207
|
- Examples: `node_modules/@jskit-ai/users-core/patterns/user-administration-server/example/`
|
|
208
208
|
- Requires: `@jskit-ai/crud-core`, `@jskit-ai/users-core`
|
|
@@ -213,7 +213,7 @@ Configure roles, workspace access policy, invitations, and app-owned invitation
|
|
|
213
213
|
|
|
214
214
|
- Id: `workspaces/workspace-server`
|
|
215
215
|
- Keywords: `access`, `invite`, `membership`, `multitenancy`, `policy`, `role`, `tenancy`, `workspace`
|
|
216
|
-
- Owner: `@jskit-ai/workspaces-core@0.1.
|
|
216
|
+
- Owner: `@jskit-ai/workspaces-core@0.1.146`
|
|
217
217
|
- Read: `node_modules/@jskit-ai/workspaces-core/patterns/workspace-server/PATTERN.md`
|
|
218
218
|
- Examples: `node_modules/@jskit-ai/workspaces-core/patterns/workspace-server/example/`
|
|
219
219
|
- Requires: `@jskit-ai/users-core`, `@jskit-ai/workspaces-core`
|
|
@@ -224,7 +224,7 @@ Compose workspace selection, invitation, member administration, settings, and re
|
|
|
224
224
|
|
|
225
225
|
- Id: `workspaces/workspace-surfaces`
|
|
226
226
|
- Keywords: `admin`, `invite`, `member`, `navigation`, `settings`, `surface`, `switcher`, `workspace`
|
|
227
|
-
- Owner: `@jskit-ai/workspaces-web@0.1.
|
|
227
|
+
- Owner: `@jskit-ai/workspaces-web@0.1.147`
|
|
228
228
|
- Read: `node_modules/@jskit-ai/workspaces-web/patterns/workspace-surfaces/PATTERN.md`
|
|
229
229
|
- Examples: `node_modules/@jskit-ai/workspaces-web/patterns/workspace-surfaces/example/`
|
|
230
230
|
- Requires: `@jskit-ai/shell-web`, `@jskit-ai/workspaces-core`, `@jskit-ai/workspaces-web`
|
|
@@ -166,7 +166,7 @@ Exports
|
|
|
166
166
|
|
|
167
167
|
### `src/server/lib/serviceToolCatalog.js`
|
|
168
168
|
Exports
|
|
169
|
-
- `createServiceToolCatalog(actions, { barredActionIds = [], skipActionPrefixes = [] } = {})`
|
|
169
|
+
- `createServiceToolCatalog(actions, { barredActionIds = [], skipActionPrefixes = [], maxDirectTools: rawMaxDirectTools = DEFAULT_MAX_DIRECT_TOOLS, discoveryPageSize: rawDiscoveryPageSize = DEFAULT_DISCOVERY_PAGE_SIZE, maxToolArgumentBytes: rawMaxToolArgumentBytes = DEFAULT_MAX_TOOL_ARGUMENT_BYTES, maxToolResultBytes: rawMaxToolResultBytes = DEFAULT_MAX_TOOL_RESULT_BYTES } = {})`
|
|
170
170
|
Local functions
|
|
171
171
|
- `normalizeAssistantExtension(value)`
|
|
172
172
|
- `normalizeAssistantActionExtension(action = {})`
|
|
@@ -176,6 +176,18 @@ Local functions
|
|
|
176
176
|
- `sanitizeToolName(value)`
|
|
177
177
|
- `resolveUniqueToolName(baseName, used)`
|
|
178
178
|
- `parseToolPayload(argumentsText)`
|
|
179
|
+
- `normalizeNonNegativeInteger(value, fallback)`
|
|
180
|
+
- `normalizePositiveInteger(value, fallback)`
|
|
181
|
+
- `serializedByteLength(value)`
|
|
182
|
+
- `createToolError(status, code, message)`
|
|
183
|
+
- `ensureSerializedSize(value, maxBytes, { code = "assistant_tool_result_too_large", label = "Tool result" } = {})`
|
|
184
|
+
- `ensureToolArgumentsSize(argumentsText, maxBytes)`
|
|
185
|
+
- `normalizeActionLookupKey(actionId, version)`
|
|
186
|
+
- `normalizeDiscoveryQuery(value)`
|
|
187
|
+
- `encodeDiscoveryCursor(offset, query)`
|
|
188
|
+
- `decodeDiscoveryCursor(value, query)`
|
|
189
|
+
- `truncateDescription(value, maxLength = 240)`
|
|
190
|
+
- `resolveValidationFailureMessage(error)`
|
|
179
191
|
- `canInvokeMethod(permission, context)`
|
|
180
192
|
- `normalizePermissionSpec(permission)`
|
|
181
193
|
- `stripWorkspaceSlugFromSchema(schema, context = {})`
|
|
@@ -292,3 +304,17 @@ Exports
|
|
|
292
304
|
### `src/shared/support/positiveInteger.js`
|
|
293
305
|
Exports
|
|
294
306
|
- `toPositiveInteger(value, fallback = 0)`
|
|
307
|
+
|
|
308
|
+
### fixtures
|
|
309
|
+
|
|
310
|
+
### `fixtures/responsive-assistant/App.vue`
|
|
311
|
+
Exports
|
|
312
|
+
- None
|
|
313
|
+
|
|
314
|
+
### `fixtures/responsive-assistant/main.js`
|
|
315
|
+
Exports
|
|
316
|
+
- None
|
|
317
|
+
|
|
318
|
+
### `fixtures/responsive-assistant/vite.config.mjs`
|
|
319
|
+
Exports
|
|
320
|
+
- None
|
|
@@ -77,6 +77,15 @@ Exports
|
|
|
77
77
|
- `createCrudJsonApiActions({ namespace, resource, repository = null, service, surface, permissionForOperation, permissionForAction = permissionForOperation, operations = CRUD_OPERATION_NAMES, scopeInputValidator = null, scopeInputKeys = [], listFilterQueryValidator = null, operationLifecycle = {}, operationInputs = {}, actions: additionalActionDefinitions = {}, dependencies = {} } = {})`
|
|
78
78
|
- `normalizeCrudOperationLifecycle(value = {})`
|
|
79
79
|
Local functions
|
|
80
|
+
- `isRecord(value)`
|
|
81
|
+
- `normalizeOptionalCursor(value)`
|
|
82
|
+
- `resolveAssistantResultValue(result)`
|
|
83
|
+
- `resolveSchemaFieldDefinitions(definition = null)`
|
|
84
|
+
- `createProjectionRecordSchema(recordSchema, { lookupContainerKey = "", relationshipEntries = [] } = {})`
|
|
85
|
+
- `createProjectionOutputDefinition(output, operation, relationshipEntries, lookupContainerKey)`
|
|
86
|
+
- `createCrudAssistantTransport(resource, operation, relationshipEntries, lookupContainerKey)`
|
|
87
|
+
- `transformCrudAssistantResult(operation, result, { input = {}, resource, relationshipEntries = [], lookupContainerKey = "" } = {})`
|
|
88
|
+
- `createCrudAssistantExtension(resource, namespace, operation)`
|
|
80
89
|
- `createActionInput(resource, operation, scopeInputValidator = null, listFilterQueryValidator = null, operationInputs = {})`
|
|
81
90
|
- `omitInputKeys(input = {}, keys = [])`
|
|
82
91
|
- `createLifecycleContext(value = {})`
|
|
@@ -285,10 +294,10 @@ Local functions
|
|
|
285
294
|
### `src/server/routeContracts.js`
|
|
286
295
|
Exports
|
|
287
296
|
- `createCrudJsonApiRouteContracts({ resource = {}, routeParamsValidator = null, operations = ["list", "view", "create", "update", "delete"], operationInputs = {}, listSearchQueryValidator = defaultListSearchQueryValidator, lookupIncludeQueryValidator = defaultLookupIncludeQueryValidator, listFilterQueryValidator = null } = {})`
|
|
297
|
+
- `resolveJsonApiRelationshipEntries(definition = null)`
|
|
288
298
|
Local functions
|
|
289
299
|
- `isRecord(value)`
|
|
290
300
|
- `resolveSchemaFieldDefinitions(definition = null)`
|
|
291
|
-
- `resolveJsonApiRelationshipEntries(definition = null)`
|
|
292
301
|
- `readOwnValue(source = {}, key = "")`
|
|
293
302
|
- `resolveLookupContainer(record = {}, lookupContainerKey = "")`
|
|
294
303
|
- `resolveRelationshipValueSource(record = {}, entry = {}, { lookupContainerKey = "", preferLookup = false } = {})`
|
|
@@ -185,6 +185,7 @@ Exports
|
|
|
185
185
|
- `encodeJsonApiResourceQueryObject`
|
|
186
186
|
- `decodeJsonApiResourceQueryObject`
|
|
187
187
|
- `createJsonApiResourceQueryTransportSchema`
|
|
188
|
+
- `decodeJsonApiResourceResponse`
|
|
188
189
|
- `JSON_API_ERROR_DOCUMENT_SCHEMA`
|
|
189
190
|
- `createJsonApiResourceObjectTransportSchema`
|
|
190
191
|
- `createJsonApiResourceRequestBodyTransportSchema`
|
|
@@ -22,10 +22,23 @@ Local functions
|
|
|
22
22
|
- `toSortedUniqueStrings(values)`
|
|
23
23
|
- `fileExists(absolutePath)`
|
|
24
24
|
- `collectPackageRoots(packagesRoot)`
|
|
25
|
+
- `normalizeWorkspacePatterns(value)`
|
|
26
|
+
- `createWorkspaceSegmentPattern(segment = "")`
|
|
27
|
+
- `expandWorkspacePattern(repoRoot, workspacePattern = "")`
|
|
28
|
+
- `collectReleasePackageVersions(repoRoot)`
|
|
25
29
|
- `readJson(absolutePath)`
|
|
26
30
|
- `buildCatalog({ repoRoot, packagesRoot, outputPath })`
|
|
27
31
|
- `main()`
|
|
28
32
|
|
|
33
|
+
### `scripts/jskit.mjs`
|
|
34
|
+
Exports
|
|
35
|
+
- `isCliEntrypoint(argvPath = process.argv[1])`
|
|
36
|
+
- `main(argv = process.argv.slice(2))`
|
|
37
|
+
- `parseArgs(argv = [])`
|
|
38
|
+
- `usage()`
|
|
39
|
+
Local functions
|
|
40
|
+
- `readCatalog()`
|
|
41
|
+
|
|
29
42
|
### `scripts/pattern-assets.mjs`
|
|
30
43
|
Exports
|
|
31
44
|
- `PATTERN_DOCUMENT_NAME`
|
|
@@ -44,6 +57,33 @@ Local functions
|
|
|
44
57
|
- `directoryExists(directoryPath)`
|
|
45
58
|
- `collectFiles(rootDirectory)`
|
|
46
59
|
|
|
60
|
+
### `scripts/project-packages.mjs`
|
|
61
|
+
Exports
|
|
62
|
+
- `CATALOG_PACKAGE_ID`
|
|
63
|
+
- `CHECK_SCRIPT`
|
|
64
|
+
- `DEPENDENCY_FIELDS`
|
|
65
|
+
- `UPDATE_SCRIPT`
|
|
66
|
+
- `checkProject({ projectRoot = process.cwd(), catalog } = {})`
|
|
67
|
+
- `collectLockInstallations(packageLock = {})`
|
|
68
|
+
- `discoverProjectManifests(projectRoot)`
|
|
69
|
+
- `normalizeCatalog(catalog = {})`
|
|
70
|
+
- `updateProject({ projectRoot = process.cwd(), catalog, install = true, installProject = runNpmInstall } = {})`
|
|
71
|
+
Local functions
|
|
72
|
+
- `toPosixPath(value = "")`
|
|
73
|
+
- `normalizeWorkspacePatterns(value)`
|
|
74
|
+
- `globToRegExp(pattern = "")`
|
|
75
|
+
- `createWorkspaceMatcher(workspaces)`
|
|
76
|
+
- `fileExists(absolutePath)`
|
|
77
|
+
- `readJsonRecord(absolutePath)`
|
|
78
|
+
- `collectNestedPackageJsonPaths(directory, results = [])`
|
|
79
|
+
- `serializePackageJson(value, originalContents = "")`
|
|
80
|
+
- `collectManifestDeclarations(manifests, projectRoot)`
|
|
81
|
+
- `collectLocalPackageNames(manifests)`
|
|
82
|
+
- `resolveLockPackageName(packagePath = "", record = {})`
|
|
83
|
+
- `collectJskitOverridePaths(value, currentPath = "overrides", results = [])`
|
|
84
|
+
- `writeManifestUpdates(updates = [])`
|
|
85
|
+
- `runNpmInstall(projectRoot)`
|
|
86
|
+
|
|
47
87
|
### `scripts/verify-packages.mjs`
|
|
48
88
|
Exports
|
|
49
89
|
- `main()`
|
|
@@ -51,6 +91,7 @@ Exports
|
|
|
51
91
|
- `validateMigrations(packageRecord, migrationOwners)`
|
|
52
92
|
- `validateProviderExport(value, label)`
|
|
53
93
|
- `validateProviderList(packageRecord, side)`
|
|
94
|
+
- `validateSingletonPeerDependencies(packages)`
|
|
54
95
|
Local functions
|
|
55
96
|
- `fileExists(filePath)`
|
|
56
97
|
- `discoverFrameworkPackages()`
|
|
@@ -53,8 +53,12 @@ generic CRUD merely to make the structure look uniform.
|
|
|
53
53
|
Use the installed JSKIT pattern index and package metadata to select the
|
|
54
54
|
smallest complete package set. Plan the top-level dependencies and their
|
|
55
55
|
ordinary npm closure before changing the lockfile, then install that planned
|
|
56
|
-
closure once. Review `package.json` and the lockfile as source changes.
|
|
57
|
-
|
|
56
|
+
closure once. Review `package.json` and the lockfile as source changes. Adopt
|
|
57
|
+
the supported package-graph scripts and run `npm run jskit:update` before
|
|
58
|
+
changing application source; see the **Upgrade JSKIT** guide in the agent docs.
|
|
59
|
+
The updater aligns root and workspace declarations to one published release
|
|
60
|
+
cohort, installs once at the project root, and verifies the resulting lockfile.
|
|
61
|
+
It does not regenerate or synchronize application source.
|
|
58
62
|
|
|
59
63
|
Model product domains through `defineFeature()` when they own a real capability
|
|
60
64
|
or operation boundary. A Feature declares stable named `requires`, optional
|
|
@@ -78,10 +82,12 @@ still have callers and tests.
|
|
|
78
82
|
|
|
79
83
|
Audit application `AGENTS.md` files, ordinary documentation, npm scripts, CI,
|
|
80
84
|
and package metadata as well as executable source. There is no supported
|
|
81
|
-
`jskit doctor` command or general JSKIT authoring CLI.
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
+
`jskit doctor` command or general JSKIT source-authoring CLI. The supported
|
|
86
|
+
`jskit update` and `jskit check` commands own only the installed package graph;
|
|
87
|
+
they do not author, regenerate, or certify application source. Replace stale
|
|
88
|
+
doctor or authoring instructions with current-state checks owned by runtime
|
|
89
|
+
startup, the client build, migration status and disposable rebuilds, the
|
|
90
|
+
application's normal verification script, and Playwright.
|
|
85
91
|
|
|
86
92
|
## 3. Choose the narrowest server seam that owns each behavior
|
|
87
93
|
|
|
@@ -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.140`
|
|
19
19
|
- Read: `node_modules/@jskit-ai/agent-docs/patterns/minimal-foundation/PATTERN.md`
|
|
20
20
|
- Examples: `node_modules/@jskit-ai/agent-docs/patterns/minimal-foundation/example/`
|
|
21
21
|
- Requires: `@jskit-ai/http-runtime`, `@jskit-ai/kernel`
|
|
@@ -26,7 +26,7 @@ A concrete JSKIT web application foundation with responsive shell navigation, se
|
|
|
26
26
|
|
|
27
27
|
- Id: `app/shell-foundation`
|
|
28
28
|
- Keywords: `app`, `foundation`, `material`, `navigation`, `placements`, `shell`, `vite`, `vue`
|
|
29
|
-
- Owner: `@jskit-ai/agent-docs@0.1.
|
|
29
|
+
- Owner: `@jskit-ai/agent-docs@0.1.140`
|
|
30
30
|
- Read: `node_modules/@jskit-ai/agent-docs/patterns/shell-foundation/PATTERN.md`
|
|
31
31
|
- Examples: `node_modules/@jskit-ai/agent-docs/patterns/shell-foundation/example/`
|
|
32
32
|
- Requires: `@jskit-ai/http-runtime`, `@jskit-ai/kernel`, `@jskit-ai/shell-web`
|
|
@@ -37,7 +37,7 @@ Configure an assistant runtime for one application surface and expose its chat a
|
|
|
37
37
|
|
|
38
38
|
- Id: `assistant/assistant-surface`
|
|
39
39
|
- Keywords: `ai`, `assistant`, `chat`, `config`, `environment`, `page`, `placement`, `settings`, `surface`
|
|
40
|
-
- Owner: `@jskit-ai/assistant-runtime@0.1.
|
|
40
|
+
- Owner: `@jskit-ai/assistant-runtime@0.1.139`
|
|
41
41
|
- Read: `node_modules/@jskit-ai/assistant-runtime/patterns/assistant-surface/PATTERN.md`
|
|
42
42
|
- Examples: `node_modules/@jskit-ai/assistant-runtime/patterns/assistant-surface/example/`
|
|
43
43
|
- Requires: `@jskit-ai/assistant-runtime`, `@jskit-ai/shell-web`
|
|
@@ -48,7 +48,7 @@ Compose JSKIT authentication routes, views, profile controls, and public surface
|
|
|
48
48
|
|
|
49
49
|
- Id: `auth/auth-surface`
|
|
50
50
|
- Keywords: `account`, `auth`, `login`, `logout`, `password`, `placement`, `profile`, `reset`, `surface`
|
|
51
|
-
- Owner: `@jskit-ai/auth-web@0.1.
|
|
51
|
+
- Owner: `@jskit-ai/auth-web@0.1.168`
|
|
52
52
|
- Read: `node_modules/@jskit-ai/auth-web/patterns/auth-surface/PATTERN.md`
|
|
53
53
|
- Examples: `node_modules/@jskit-ai/auth-web/patterns/auth-surface/example/`
|
|
54
54
|
- Requires: `@jskit-ai/auth-core`, `@jskit-ai/auth-web`, `@jskit-ai/shell-web`
|
|
@@ -59,7 +59,7 @@ Add Supabase authentication through normal npm composition, explicit environment
|
|
|
59
59
|
|
|
60
60
|
- Id: `auth/supabase-auth`
|
|
61
61
|
- Keywords: `auth`, `authentication`, `oauth`, `sessions`, `supabase`
|
|
62
|
-
- Owner: `@jskit-ai/auth-provider-supabase-core@0.1.
|
|
62
|
+
- Owner: `@jskit-ai/auth-provider-supabase-core@0.1.165`
|
|
63
63
|
- Read: `node_modules/@jskit-ai/auth-provider-supabase-core/patterns/supabase-auth/PATTERN.md`
|
|
64
64
|
- Examples: `node_modules/@jskit-ai/auth-provider-supabase-core/patterns/supabase-auth/example/`
|
|
65
65
|
- Requires: `@jskit-ai/auth-provider-supabase-core`
|
|
@@ -70,7 +70,7 @@ Add a protected administration surface, settings shell, and semantic navigation
|
|
|
70
70
|
|
|
71
71
|
- Id: `console/console-surface`
|
|
72
72
|
- Keywords: `admin`, `console`, `navigation`, `owner`, `placement`, `settings`, `surface`
|
|
73
|
-
- Owner: `@jskit-ai/console-web@0.1.
|
|
73
|
+
- Owner: `@jskit-ai/console-web@0.1.136`
|
|
74
74
|
- Read: `node_modules/@jskit-ai/console-web/patterns/console-surface/PATTERN.md`
|
|
75
75
|
- Examples: `node_modules/@jskit-ai/console-web/patterns/console-surface/example/`
|
|
76
76
|
- Requires: `@jskit-ai/console-core`, `@jskit-ai/console-web`, `@jskit-ai/shell-web`
|
|
@@ -81,7 +81,7 @@ Build a routed CRUD user interface as thin application pages over JSKIT's shared
|
|
|
81
81
|
|
|
82
82
|
- Id: `crud/crud-screen-set`
|
|
83
83
|
- Keywords: `actions`, `add`, `crud`, `delete`, `edit`, `filters`, `list`, `material`, `routes`, `view`, `vue`
|
|
84
|
-
- Owner: `@jskit-ai/http-web@0.1.
|
|
84
|
+
- Owner: `@jskit-ai/http-web@0.1.13`
|
|
85
85
|
- Read: `node_modules/@jskit-ai/http-web/patterns/crud-screen-set/PATTERN.md`
|
|
86
86
|
- Examples: `node_modules/@jskit-ai/http-web/patterns/crud-screen-set/example/`
|
|
87
87
|
- Requires: `@jskit-ai/http-web`, `@jskit-ai/resource-crud-core`
|
|
@@ -92,7 +92,7 @@ Build a complete application-owned CRUD server package from a migration, resourc
|
|
|
92
92
|
|
|
93
93
|
- Id: `crud/json-api-resource-package`
|
|
94
94
|
- Keywords: `actions`, `crud`, `database`, `json-api`, `migration`, `permissions`, `provider`, `repository`, `routes`, `service`
|
|
95
|
-
- Owner: `@jskit-ai/crud-core@0.1.
|
|
95
|
+
- Owner: `@jskit-ai/crud-core@0.1.179`
|
|
96
96
|
- Read: `node_modules/@jskit-ai/crud-core/patterns/json-api-resource-package/PATTERN.md`
|
|
97
97
|
- Examples: `node_modules/@jskit-ai/crud-core/patterns/json-api-resource-package/example/`
|
|
98
98
|
- Requires: `@jskit-ai/crud-core`, `@jskit-ai/resource-crud-core`
|
|
@@ -103,7 +103,7 @@ Define an authenticated application resource whose records belong to the current
|
|
|
103
103
|
|
|
104
104
|
- Id: `crud/resource-contract`
|
|
105
105
|
- Keywords: `authenticated`, `crud`, `database`, `owner-scoped`, `resource`, `user`
|
|
106
|
-
- Owner: `@jskit-ai/resource-crud-core@0.1.
|
|
106
|
+
- Owner: `@jskit-ai/resource-crud-core@0.1.110`
|
|
107
107
|
- Read: `node_modules/@jskit-ai/resource-crud-core/patterns/resource-contract/PATTERN.md`
|
|
108
108
|
- Examples: `node_modules/@jskit-ai/resource-crud-core/patterns/resource-contract/example/`
|
|
109
109
|
- Requires: `@jskit-ai/resource-crud-core`
|
|
@@ -114,7 +114,7 @@ Configure a JSKIT application for MySQL with a fixed driver, ordinary environmen
|
|
|
114
114
|
|
|
115
115
|
- Id: `database/mysql-application`
|
|
116
116
|
- Keywords: `database`, `knex`, `mariadb`, `migrations`, `mysql`, `mysql2`
|
|
117
|
-
- Owner: `@jskit-ai/database-runtime-mysql@0.1.
|
|
117
|
+
- Owner: `@jskit-ai/database-runtime-mysql@0.1.166`
|
|
118
118
|
- Read: `node_modules/@jskit-ai/database-runtime-mysql/patterns/mysql-application/PATTERN.md`
|
|
119
119
|
- Examples: `node_modules/@jskit-ai/database-runtime-mysql/patterns/mysql-application/example/`
|
|
120
120
|
- Requires: `@jskit-ai/database-runtime-mysql`
|
|
@@ -125,7 +125,7 @@ Configure a JSKIT application for PostgreSQL with a fixed driver, ordinary envir
|
|
|
125
125
|
|
|
126
126
|
- Id: `database/postgres-application`
|
|
127
127
|
- Keywords: `database`, `knex`, `migrations`, `pg`, `postgres`, `postgresql`
|
|
128
|
-
- Owner: `@jskit-ai/database-runtime-postgres@0.1.
|
|
128
|
+
- Owner: `@jskit-ai/database-runtime-postgres@0.1.165`
|
|
129
129
|
- Read: `node_modules/@jskit-ai/database-runtime-postgres/patterns/postgres-application/PATTERN.md`
|
|
130
130
|
- Examples: `node_modules/@jskit-ai/database-runtime-postgres/patterns/postgres-application/example/`
|
|
131
131
|
- Requires: `@jskit-ai/database-runtime-postgres`
|
|
@@ -136,7 +136,7 @@ Wrap a JSKIT web application in a Capacitor Android shell using native Capacitor
|
|
|
136
136
|
|
|
137
137
|
- Id: `mobile/android-application`
|
|
138
138
|
- Keywords: `android`, `capacitor`, `device`, `mobile`, `native`, `shell`, `webview`
|
|
139
|
-
- Owner: `@jskit-ai/mobile-capacitor@0.1.
|
|
139
|
+
- Owner: `@jskit-ai/mobile-capacitor@0.1.103`
|
|
140
140
|
- Read: `node_modules/@jskit-ai/mobile-capacitor/patterns/android-application/PATTERN.md`
|
|
141
141
|
- Examples: `node_modules/@jskit-ai/mobile-capacitor/patterns/android-application/example/`
|
|
142
142
|
- Requires: `@capacitor/android`, `@capacitor/app`, `@capacitor/cli`, `@jskit-ai/mobile-capacitor`
|
|
@@ -147,7 +147,7 @@ Add JSKIT realtime events with an optional Redis backplane and an explicit shell
|
|
|
147
147
|
|
|
148
148
|
- Id: `realtime/realtime-application`
|
|
149
149
|
- Keywords: `realtime`, `redis`, `socket.io`, `sockets`, `status`, `websocket`
|
|
150
|
-
- Owner: `@jskit-ai/realtime@0.1.
|
|
150
|
+
- Owner: `@jskit-ai/realtime@0.1.165`
|
|
151
151
|
- Read: `node_modules/@jskit-ai/realtime/patterns/realtime-application/PATTERN.md`
|
|
152
152
|
- Examples: `node_modules/@jskit-ai/realtime/patterns/realtime-application/example/`
|
|
153
153
|
- Requires: `@jskit-ai/realtime`, `@jskit-ai/shell-web`
|
|
@@ -158,7 +158,7 @@ Define a server feature through explicit capabilities and first-class actions, a
|
|
|
158
158
|
|
|
159
159
|
- Id: `server/feature-package`
|
|
160
160
|
- Keywords: `actions`, `feature`, `json-rest`, `knex`, `orchestration`, `package`, `provider`, `repository`, `routes`, `server`
|
|
161
|
-
- Owner: `@jskit-ai/agent-docs@0.1.
|
|
161
|
+
- Owner: `@jskit-ai/agent-docs@0.1.140`
|
|
162
162
|
- Read: `node_modules/@jskit-ai/agent-docs/patterns/feature-package/PATTERN.md`
|
|
163
163
|
- Examples: `node_modules/@jskit-ai/agent-docs/patterns/feature-package/example/`
|
|
164
164
|
- Requires: `@jskit-ai/kernel`
|
|
@@ -169,7 +169,7 @@ Compose the JSKIT responsive shell, semantic placements, settings navigation, an
|
|
|
169
169
|
|
|
170
170
|
- Id: `shell/application-shell`
|
|
171
171
|
- Keywords: `adaptive`, `app`, `layout`, `navigation`, `placement`, `responsive`, `settings`, `shell`
|
|
172
|
-
- Owner: `@jskit-ai/shell-web@0.1.
|
|
172
|
+
- Owner: `@jskit-ai/shell-web@0.1.172`
|
|
173
173
|
- Read: `node_modules/@jskit-ai/shell-web/patterns/application-shell/PATTERN.md`
|
|
174
174
|
- Examples: `node_modules/@jskit-ai/shell-web/patterns/application-shell/example/`
|
|
175
175
|
- Requires: `@jskit-ai/kernel`, `@jskit-ai/shell-web`
|
|
@@ -180,7 +180,7 @@ Add product routes and shell extensions through file routing, semantic placement
|
|
|
180
180
|
|
|
181
181
|
- Id: `ui/page-and-placement`
|
|
182
182
|
- Keywords: `component`, `navigation`, `outlet`, `page`, `placement`, `routes`, `section`, `shell`, `subpages`, `vue`
|
|
183
|
-
- Owner: `@jskit-ai/shell-web@0.1.
|
|
183
|
+
- Owner: `@jskit-ai/shell-web@0.1.172`
|
|
184
184
|
- Read: `node_modules/@jskit-ai/shell-web/patterns/page-and-placement/PATTERN.md`
|
|
185
185
|
- Examples: `node_modules/@jskit-ai/shell-web/patterns/page-and-placement/example/`
|
|
186
186
|
- Requires: `@jskit-ai/kernel`, `@jskit-ai/shell-web`
|
|
@@ -191,7 +191,7 @@ Compose an account settings route and profile, preference, and notification sect
|
|
|
191
191
|
|
|
192
192
|
- Id: `users/account-settings`
|
|
193
193
|
- Keywords: `account`, `notifications`, `preferences`, `profile`, `settings`, `user`, `vue`
|
|
194
|
-
- Owner: `@jskit-ai/users-web@0.1.
|
|
194
|
+
- Owner: `@jskit-ai/users-web@0.1.186`
|
|
195
195
|
- Read: `node_modules/@jskit-ai/users-web/patterns/account-settings/PATTERN.md`
|
|
196
196
|
- Examples: `node_modules/@jskit-ai/users-web/patterns/account-settings/example/`
|
|
197
197
|
- Requires: `@jskit-ai/shell-web`, `@jskit-ai/users-core`, `@jskit-ai/users-web`
|
|
@@ -202,7 +202,7 @@ Expose user administration and workspace-scoped member operations through app-ow
|
|
|
202
202
|
|
|
203
203
|
- Id: `users/user-administration-server`
|
|
204
204
|
- Keywords: `account`, `admin`, `member`, `repository`, `resource`, `routes`, `service`, `user`, `workspace`
|
|
205
|
-
- Owner: `@jskit-ai/users-core@0.1.
|
|
205
|
+
- Owner: `@jskit-ai/users-core@0.1.181`
|
|
206
206
|
- Read: `node_modules/@jskit-ai/users-core/patterns/user-administration-server/PATTERN.md`
|
|
207
207
|
- Examples: `node_modules/@jskit-ai/users-core/patterns/user-administration-server/example/`
|
|
208
208
|
- Requires: `@jskit-ai/crud-core`, `@jskit-ai/users-core`
|
|
@@ -213,7 +213,7 @@ Configure roles, workspace access policy, invitations, and app-owned invitation
|
|
|
213
213
|
|
|
214
214
|
- Id: `workspaces/workspace-server`
|
|
215
215
|
- Keywords: `access`, `invite`, `membership`, `multitenancy`, `policy`, `role`, `tenancy`, `workspace`
|
|
216
|
-
- Owner: `@jskit-ai/workspaces-core@0.1.
|
|
216
|
+
- Owner: `@jskit-ai/workspaces-core@0.1.146`
|
|
217
217
|
- Read: `node_modules/@jskit-ai/workspaces-core/patterns/workspace-server/PATTERN.md`
|
|
218
218
|
- Examples: `node_modules/@jskit-ai/workspaces-core/patterns/workspace-server/example/`
|
|
219
219
|
- Requires: `@jskit-ai/users-core`, `@jskit-ai/workspaces-core`
|
|
@@ -224,7 +224,7 @@ Compose workspace selection, invitation, member administration, settings, and re
|
|
|
224
224
|
|
|
225
225
|
- Id: `workspaces/workspace-surfaces`
|
|
226
226
|
- Keywords: `admin`, `invite`, `member`, `navigation`, `settings`, `surface`, `switcher`, `workspace`
|
|
227
|
-
- Owner: `@jskit-ai/workspaces-web@0.1.
|
|
227
|
+
- Owner: `@jskit-ai/workspaces-web@0.1.147`
|
|
228
228
|
- Read: `node_modules/@jskit-ai/workspaces-web/patterns/workspace-surfaces/PATTERN.md`
|
|
229
229
|
- Examples: `node_modules/@jskit-ai/workspaces-web/patterns/workspace-surfaces/example/`
|
|
230
230
|
- Requires: `@jskit-ai/shell-web`, `@jskit-ai/workspaces-core`, `@jskit-ai/workspaces-web`
|