@jskit-ai/agent-docs 0.1.266 → 0.1.268
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/guide/agent/app-extras/assistant-conversation.md +18 -1
- package/guide/agent/app-setup/authentication.md +8 -0
- package/guide/agent/framework/ui-operations.md +11 -12
- package/package.json +1 -1
- package/patterns/minimal-foundation/example/package.json +2 -2
- package/patterns/shell-foundation/example/package.json +2 -2
- package/reference/autogen/PATTERN_INDEX.md +4 -4
- package/reference/autogen/tooling/config-eslint.md +8 -0
- package/reference/autogen/tooling/jskit-release.md +4 -3
- package/skills/jskit/references/pattern-index.md +4 -4
- package/skills/jskit/references/patterns/app/minimal-foundation/example/package.json +2 -2
- package/skills/jskit/references/patterns/app/shell-foundation/example/package.json +2 -2
- package/skills/jskit/references/ui-operations.md +11 -12
|
@@ -3431,7 +3431,24 @@ at shutdown each native owner stops the processes this server runs, since none
|
|
|
3431
3431
|
outlives the server that started it, and saved conversations are not reopened to
|
|
3432
3432
|
be stopped. Claude stops its sessions together, leaves an idle chat untouched
|
|
3433
3433
|
(nothing to stop, nothing written) and reports a session that cannot stop by ID
|
|
3434
|
-
in `failed` while the others still stop.
|
|
3434
|
+
in `failed` while the others still stop. A turn still running when its process
|
|
3435
|
+
stops is not ended at shutdown: its saved record keeps the execution and the
|
|
3436
|
+
active turn, as after a crash, so the next server's recovery proves that exit,
|
|
3437
|
+
interrupts the turn and runs the host's interrupted checkpoint. OpenCode
|
|
3438
|
+
likewise interrupts a running turn's native work and proves its shared process
|
|
3439
|
+
exits, and marks that turn as stopped by shutdown. A main conversation's saved
|
|
3440
|
+
run stays active with the mark (`stoppedByShutdown`), and the next server
|
|
3441
|
+
records the turn interrupted, with the host's checkpoint, when the chat is next
|
|
3442
|
+
prepared or a goal's recovery reconciles it. A temporary conversation's turn
|
|
3443
|
+
ends interrupted, and `afterClose` receives `stoppedByShutdown: true` so the
|
|
3444
|
+
host leaves its checkpoint to the next server: when the host's later read
|
|
3445
|
+
passes the stopped run as `stoppedByShutdown: { runId, ended }`, that read
|
|
3446
|
+
reports the run interrupted, not failed, and calls `ended` so the host makes
|
|
3447
|
+
the checkpoint. A native abort without the mark (a timeout, or a crash's
|
|
3448
|
+
leftover) still reads as that turn's failure. Either way a slow host
|
|
3449
|
+
checkpoint, such as a Git snapshot, never holds up shutdown, and a Stop or
|
|
3450
|
+
session close outside shutdown still ends its turn through that checkpoint.
|
|
3451
|
+
Claude stops its sessions even when its
|
|
3435
3452
|
account-query cleanup fails; that failure is still the call's result. Once
|
|
3436
3453
|
shutdown has invalidated the owner, a later session close only releases retained
|
|
3437
3454
|
work. Failed cleanup can be retried after runtime closure. This is not a browser
|
|
@@ -236,5 +236,13 @@ A managed host instead supplies authenticated state through
|
|
|
236
236
|
file as a temporary secret, use relative URLs, and do not call the localhost
|
|
237
237
|
login helper or start a duplicate server.
|
|
238
238
|
|
|
239
|
+
The login state belongs to the host, which already fits it to the tested site.
|
|
240
|
+
Pass `process.env.PLAYWRIGHT_STORAGE_STATE` unchanged to `use.storageState`:
|
|
241
|
+
the config never reads, parses or edits that file or its `cookies` or
|
|
242
|
+
`origins`. `jskit/playwright-login-unchanged` reports a config that does, and
|
|
243
|
+
the host refuses to run its tests. If tests run signed out with the unchanged
|
|
244
|
+
state, that is a host defect: report it with the evidence; do not work around
|
|
245
|
+
it.
|
|
246
|
+
|
|
239
247
|
Never commit provider secrets, copy auth repositories into the app, or add an
|
|
240
248
|
installation questionnaire, mutation record, or setup receipt.
|
|
@@ -26,7 +26,7 @@ template or relative string raw to Vue Router `to`.
|
|
|
26
26
|
## Back navigation
|
|
27
27
|
|
|
28
28
|
Check every page for a visible Back button that returns to the previous page.
|
|
29
|
-
Omit it only when returning makes no product sense, such as the
|
|
29
|
+
Omit it only when returning makes no product sense, such as the root
|
|
30
30
|
landing page or a completed flow that must not reopen an expired step. State
|
|
31
31
|
the reason in the implementation or review result; a drawer link is not Back.
|
|
32
32
|
|
|
@@ -70,7 +70,6 @@ hash, pattern receipt, or tool-owned source declaration.
|
|
|
70
70
|
- Keep screens phone/task-first with drawer-independent primary actions.
|
|
71
71
|
- Use direct surfaces instead of needless nested cards.
|
|
72
72
|
- Render all meaningful loading, empty, error, permission, and retry states.
|
|
73
|
-
- Follow the Material 3 contract for targets, loading and failure feedback.
|
|
74
73
|
- Extend shared CRUD screens through public slots and composables.
|
|
75
74
|
- Keep row actions and filters near the screen unless the framework owns them.
|
|
76
75
|
- Import neutral request and CRUD UI APIs from `@jskit-ai/http-web`. Install
|
|
@@ -87,25 +86,25 @@ when another navigation affordance remains.
|
|
|
87
86
|
The drawer omits the app bar's surface label. Open and rail icons share a
|
|
88
87
|
centreline. It uses a 12px outer item inset; `navigationItemSpacing` controls
|
|
89
88
|
icon/label and label/end gaps. The normal 80px rail centres 48px targets;
|
|
90
|
-
`railWidth` and `drawerWidth` are public density/width controls.
|
|
91
|
-
the shell
|
|
92
|
-
|
|
93
|
-
Restyle shell chrome only through the `--shell-*` tokens in the
|
|
94
|
-
`shell/application-shell` pattern.
|
|
89
|
+
`railWidth` and `drawerWidth` are public density/width controls. Restyle shell
|
|
90
|
+
chrome only through the `--shell-*` tokens in the `shell/application-shell`
|
|
91
|
+
pattern, never its private CSS.
|
|
95
92
|
|
|
96
93
|
## Browser verification
|
|
97
94
|
|
|
98
95
|
Exercise user-facing changes with Playwright at compact, medium, and expanded
|
|
99
96
|
widths. Check overflow, clipped text, duplicate navigation, route placement,
|
|
100
97
|
actions, skeleton replacement, error feedback, and target sizes. Use relative
|
|
101
|
-
URLs.
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
98
|
+
URLs. With `PLAYWRIGHT_BASE_URL` set, start no duplicate server. For Back,
|
|
99
|
+
enter the same page from two origins and verify each returns to its own origin
|
|
100
|
+
with context intact. Also check direct entry, reload, browser back/forward,
|
|
101
|
+
fixed-destination exceptions, and any unsaved-change guard.
|
|
105
102
|
|
|
106
103
|
A managed host owns its browser and may provide
|
|
107
104
|
`PLAYWRIGHT_STORAGE_STATE`; never print or commit that value, bypass it,
|
|
108
|
-
or install another browser.
|
|
105
|
+
or install another browser. If tests run signed out despite that state, report
|
|
106
|
+
the host defect with evidence and stop; never rewrite its cookies or add a login.
|
|
107
|
+
For explicitly enabled direct-local auth, use
|
|
109
108
|
`loginAsExistingUser()` from `@jskit-ai/auth-web/test/playwright`; never expose
|
|
110
109
|
the exchange secret to browser code, URLs, or client environment.
|
|
111
110
|
|
package/package.json
CHANGED
|
@@ -48,8 +48,8 @@
|
|
|
48
48
|
"@vue/devtools-api": "^8.2.1"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
|
-
"@jskit-ai/config-eslint": "0.1.
|
|
52
|
-
"@jskit-ai/jskit-catalog": "0.2.
|
|
51
|
+
"@jskit-ai/config-eslint": "0.1.245",
|
|
52
|
+
"@jskit-ai/jskit-catalog": "0.2.20",
|
|
53
53
|
"@playwright/test": "1.61.1",
|
|
54
54
|
"@vitejs/plugin-vue": "^6.0.7",
|
|
55
55
|
"eslint": "^10.8.0",
|
|
@@ -50,8 +50,8 @@
|
|
|
50
50
|
"@vue/devtools-api": "^8.2.1"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
|
-
"@jskit-ai/config-eslint": "0.1.
|
|
54
|
-
"@jskit-ai/jskit-catalog": "0.2.
|
|
53
|
+
"@jskit-ai/config-eslint": "0.1.245",
|
|
54
|
+
"@jskit-ai/jskit-catalog": "0.2.20",
|
|
55
55
|
"@playwright/test": "1.61.1",
|
|
56
56
|
"@vitejs/plugin-vue": "^6.0.7",
|
|
57
57
|
"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.268`
|
|
19
19
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/app/minimal-foundation/PATTERN.md)
|
|
20
20
|
- Examples: [example/](../../skills/jskit/references/patterns/app/minimal-foundation/example/)
|
|
21
21
|
- Requires: `@jskit-ai/http-runtime`, `@jskit-ai/kernel`
|
|
@@ -26,7 +26,7 @@ A concrete JSKIT web application foundation with responsive shell navigation, se
|
|
|
26
26
|
|
|
27
27
|
- Id: `app/shell-foundation`
|
|
28
28
|
- Keywords: `app`, `foundation`, `material`, `navigation`, `placements`, `shell`, `vite`, `vue`
|
|
29
|
-
- Owner: `@jskit-ai/agent-docs@0.1.
|
|
29
|
+
- Owner: `@jskit-ai/agent-docs@0.1.268`
|
|
30
30
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/app/shell-foundation/PATTERN.md)
|
|
31
31
|
- Examples: [example/](../../skills/jskit/references/patterns/app/shell-foundation/example/)
|
|
32
32
|
- Requires: `@jskit-ai/http-runtime`, `@jskit-ai/kernel`, `@jskit-ai/shell-web`
|
|
@@ -37,7 +37,7 @@ Configure an assistant runtime for one application surface and expose its chat a
|
|
|
37
37
|
|
|
38
38
|
- Id: `assistant/assistant-surface`
|
|
39
39
|
- Keywords: `ai`, `assistant`, `chat`, `config`, `environment`, `page`, `placement`, `settings`, `surface`
|
|
40
|
-
- Owner: `@jskit-ai/assistant-runtime@0.2.
|
|
40
|
+
- Owner: `@jskit-ai/assistant-runtime@0.2.18`
|
|
41
41
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/assistant/assistant-surface/PATTERN.md)
|
|
42
42
|
- Examples: [example/](../../skills/jskit/references/patterns/assistant/assistant-surface/example/)
|
|
43
43
|
- Requires: `@jskit-ai/assistant-runtime`, `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`, `@jskit-ai/shell-web`
|
|
@@ -345,7 +345,7 @@ Define a server feature through explicit capabilities and first-class actions, a
|
|
|
345
345
|
|
|
346
346
|
- Id: `server/feature-package`
|
|
347
347
|
- Keywords: `actions`, `feature`, `json-rest`, `knex`, `orchestration`, `package`, `provider`, `repository`, `routes`, `server`
|
|
348
|
-
- Owner: `@jskit-ai/agent-docs@0.1.
|
|
348
|
+
- Owner: `@jskit-ai/agent-docs@0.1.268`
|
|
349
349
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/server/feature-package/PATTERN.md)
|
|
350
350
|
- Examples: [example/](../../skills/jskit/references/patterns/server/feature-package/example/)
|
|
351
351
|
- Requires: `@jskit-ai/kernel`
|
|
@@ -280,6 +280,14 @@ Local functions
|
|
|
280
280
|
- `checkedPlace(object)`
|
|
281
281
|
- `splitObjectLines(sourceCode, object)`
|
|
282
282
|
|
|
283
|
+
### `plugin/rules/playwrightLoginUnchanged.js`
|
|
284
|
+
Exports
|
|
285
|
+
- `playwrightLoginUnchanged`
|
|
286
|
+
Local functions
|
|
287
|
+
- `memberName(node)`
|
|
288
|
+
- `isCallOf(node, name)`
|
|
289
|
+
- `shortText(sourceCode, node)`
|
|
290
|
+
|
|
283
291
|
### `plugin/rules/releasedListeners.js`
|
|
284
292
|
Exports
|
|
285
293
|
- `releasedListeners`
|
|
@@ -54,12 +54,12 @@ Local functions
|
|
|
54
54
|
|
|
55
55
|
### `src/release.mjs`
|
|
56
56
|
Exports
|
|
57
|
-
- `
|
|
57
|
+
- `assertReleaseCheckout(repoRoot, { allowAhead = false, branch = "main" } = {})`
|
|
58
58
|
- `bumpPatch`
|
|
59
59
|
- `collectPublishDependencies`
|
|
60
60
|
- `collectPatternPackageJsonPaths`
|
|
61
61
|
- `collectVersionMismatches`
|
|
62
|
-
- `commitAndPush(repoRoot, message)`
|
|
62
|
+
- `commitAndPush(repoRoot, message, branch = "main")`
|
|
63
63
|
- `discoverManifests`
|
|
64
64
|
- `discoverReleasePackages`
|
|
65
65
|
- `main(argv = process.argv.slice(2))`
|
|
@@ -79,12 +79,13 @@ Local functions
|
|
|
79
79
|
- `prepareRelease({ cwd: repoRoot, dryRun, registry, report = false })`
|
|
80
80
|
- `createNpmUserConfig(registry, directory, records = [])`
|
|
81
81
|
- `git(repoRoot, args)`
|
|
82
|
+
- `commitAll(repoRoot, message)`
|
|
82
83
|
- `releaseCommitMessage(entries)`
|
|
83
84
|
- `publishRelease(records, { cwd: repoRoot, registry })`
|
|
84
85
|
- `publishCommand(options)`
|
|
85
86
|
- `forgetPinnedLockEntries(repoRoot, names)`
|
|
86
87
|
- `installReleasedPins(repoRoot, { attempts = 20, delayMs = Number(process.env.JSKIT_RELEASE_RETRY_DELAY_MS || 30_000) } = {})`
|
|
87
|
-
- `pinCommand({ cwd: repoRoot, from, dryRun, noCommit })`
|
|
88
|
+
- `pinCommand({ cwd: repoRoot, from, dryRun, noCommit, noPush, branch })`
|
|
88
89
|
|
|
89
90
|
### bin
|
|
90
91
|
|
|
@@ -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.268`
|
|
19
19
|
- Read: [PATTERN.md](patterns/app/minimal-foundation/PATTERN.md)
|
|
20
20
|
- Examples: [example/](patterns/app/minimal-foundation/example/)
|
|
21
21
|
- Requires: `@jskit-ai/http-runtime`, `@jskit-ai/kernel`
|
|
@@ -26,7 +26,7 @@ A concrete JSKIT web application foundation with responsive shell navigation, se
|
|
|
26
26
|
|
|
27
27
|
- Id: `app/shell-foundation`
|
|
28
28
|
- Keywords: `app`, `foundation`, `material`, `navigation`, `placements`, `shell`, `vite`, `vue`
|
|
29
|
-
- Owner: `@jskit-ai/agent-docs@0.1.
|
|
29
|
+
- Owner: `@jskit-ai/agent-docs@0.1.268`
|
|
30
30
|
- Read: [PATTERN.md](patterns/app/shell-foundation/PATTERN.md)
|
|
31
31
|
- Examples: [example/](patterns/app/shell-foundation/example/)
|
|
32
32
|
- Requires: `@jskit-ai/http-runtime`, `@jskit-ai/kernel`, `@jskit-ai/shell-web`
|
|
@@ -37,7 +37,7 @@ Configure an assistant runtime for one application surface and expose its chat a
|
|
|
37
37
|
|
|
38
38
|
- Id: `assistant/assistant-surface`
|
|
39
39
|
- Keywords: `ai`, `assistant`, `chat`, `config`, `environment`, `page`, `placement`, `settings`, `surface`
|
|
40
|
-
- Owner: `@jskit-ai/assistant-runtime@0.2.
|
|
40
|
+
- Owner: `@jskit-ai/assistant-runtime@0.2.18`
|
|
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`
|
|
@@ -345,7 +345,7 @@ Define a server feature through explicit capabilities and first-class actions, a
|
|
|
345
345
|
|
|
346
346
|
- Id: `server/feature-package`
|
|
347
347
|
- Keywords: `actions`, `feature`, `json-rest`, `knex`, `orchestration`, `package`, `provider`, `repository`, `routes`, `server`
|
|
348
|
-
- Owner: `@jskit-ai/agent-docs@0.1.
|
|
348
|
+
- Owner: `@jskit-ai/agent-docs@0.1.268`
|
|
349
349
|
- Read: [PATTERN.md](patterns/server/feature-package/PATTERN.md)
|
|
350
350
|
- Examples: [example/](patterns/server/feature-package/example/)
|
|
351
351
|
- Requires: `@jskit-ai/kernel`
|
|
@@ -48,8 +48,8 @@
|
|
|
48
48
|
"@vue/devtools-api": "^8.2.1"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
|
-
"@jskit-ai/config-eslint": "0.1.
|
|
52
|
-
"@jskit-ai/jskit-catalog": "0.2.
|
|
51
|
+
"@jskit-ai/config-eslint": "0.1.245",
|
|
52
|
+
"@jskit-ai/jskit-catalog": "0.2.20",
|
|
53
53
|
"@playwright/test": "1.61.1",
|
|
54
54
|
"@vitejs/plugin-vue": "^6.0.7",
|
|
55
55
|
"eslint": "^10.8.0",
|
|
@@ -50,8 +50,8 @@
|
|
|
50
50
|
"@vue/devtools-api": "^8.2.1"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
|
-
"@jskit-ai/config-eslint": "0.1.
|
|
54
|
-
"@jskit-ai/jskit-catalog": "0.2.
|
|
53
|
+
"@jskit-ai/config-eslint": "0.1.245",
|
|
54
|
+
"@jskit-ai/jskit-catalog": "0.2.20",
|
|
55
55
|
"@playwright/test": "1.61.1",
|
|
56
56
|
"@vitejs/plugin-vue": "^6.0.7",
|
|
57
57
|
"eslint": "^10.8.0",
|
|
@@ -21,7 +21,7 @@ template or relative string raw to Vue Router `to`.
|
|
|
21
21
|
## Back navigation
|
|
22
22
|
|
|
23
23
|
Check every page for a visible Back button that returns to the previous page.
|
|
24
|
-
Omit it only when returning makes no product sense, such as the
|
|
24
|
+
Omit it only when returning makes no product sense, such as the root
|
|
25
25
|
landing page or a completed flow that must not reopen an expired step. State
|
|
26
26
|
the reason in the implementation or review result; a drawer link is not Back.
|
|
27
27
|
|
|
@@ -65,7 +65,6 @@ hash, pattern receipt, or tool-owned source declaration.
|
|
|
65
65
|
- Keep screens phone/task-first with drawer-independent primary actions.
|
|
66
66
|
- Use direct surfaces instead of needless nested cards.
|
|
67
67
|
- Render all meaningful loading, empty, error, permission, and retry states.
|
|
68
|
-
- Follow the Material 3 contract for targets, loading and failure feedback.
|
|
69
68
|
- Extend shared CRUD screens through public slots and composables.
|
|
70
69
|
- Keep row actions and filters near the screen unless the framework owns them.
|
|
71
70
|
- Import neutral request and CRUD UI APIs from `@jskit-ai/http-web`. Install
|
|
@@ -82,25 +81,25 @@ when another navigation affordance remains.
|
|
|
82
81
|
The drawer omits the app bar's surface label. Open and rail icons share a
|
|
83
82
|
centreline. It uses a 12px outer item inset; `navigationItemSpacing` controls
|
|
84
83
|
icon/label and label/end gaps. The normal 80px rail centres 48px targets;
|
|
85
|
-
`railWidth` and `drawerWidth` are public density/width controls.
|
|
86
|
-
the shell
|
|
87
|
-
|
|
88
|
-
Restyle shell chrome only through the `--shell-*` tokens in the
|
|
89
|
-
`shell/application-shell` pattern.
|
|
84
|
+
`railWidth` and `drawerWidth` are public density/width controls. Restyle shell
|
|
85
|
+
chrome only through the `--shell-*` tokens in the `shell/application-shell`
|
|
86
|
+
pattern, never its private CSS.
|
|
90
87
|
|
|
91
88
|
## Browser verification
|
|
92
89
|
|
|
93
90
|
Exercise user-facing changes with Playwright at compact, medium, and expanded
|
|
94
91
|
widths. Check overflow, clipped text, duplicate navigation, route placement,
|
|
95
92
|
actions, skeleton replacement, error feedback, and target sizes. Use relative
|
|
96
|
-
URLs.
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
93
|
+
URLs. With `PLAYWRIGHT_BASE_URL` set, start no duplicate server. For Back,
|
|
94
|
+
enter the same page from two origins and verify each returns to its own origin
|
|
95
|
+
with context intact. Also check direct entry, reload, browser back/forward,
|
|
96
|
+
fixed-destination exceptions, and any unsaved-change guard.
|
|
100
97
|
|
|
101
98
|
A managed host owns its browser and may provide
|
|
102
99
|
`PLAYWRIGHT_STORAGE_STATE`; never print or commit that value, bypass it,
|
|
103
|
-
or install another browser.
|
|
100
|
+
or install another browser. If tests run signed out despite that state, report
|
|
101
|
+
the host defect with evidence and stop; never rewrite its cookies or add a login.
|
|
102
|
+
For explicitly enabled direct-local auth, use
|
|
104
103
|
`loginAsExistingUser()` from `@jskit-ai/auth-web/test/playwright`; never expose
|
|
105
104
|
the exchange secret to browser code, URLs, or client environment.
|
|
106
105
|
|