@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.
@@ -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. It stops them even when its
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 app's root
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. Do not override
91
- the shell's private implementation CSS.
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. When `PLAYWRIGHT_BASE_URL` is provided, start no duplicate server.
102
- For Back, enter the same page from two different origins and verify each
103
- returns to its own origin with context intact. Also check direct entry, reload,
104
- browser back/forward, fixed-destination exceptions, and any unsaved-change guard.
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. For explicitly enabled direct-local auth, use
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jskit-ai/agent-docs",
3
- "version": "0.1.266",
3
+ "version": "0.1.268",
4
4
  "description": "Distributed JSKIT agent references, prompts, guides, and generated reference maps.",
5
5
  "type": "module",
6
6
  "files": [
@@ -48,8 +48,8 @@
48
48
  "@vue/devtools-api": "^8.2.1"
49
49
  },
50
50
  "devDependencies": {
51
- "@jskit-ai/config-eslint": "0.1.244",
52
- "@jskit-ai/jskit-catalog": "0.2.18",
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.244",
54
- "@jskit-ai/jskit-catalog": "0.2.18",
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.266`
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.266`
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.16`
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.266`
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
- - `assertMainReleaseCheckout(repoRoot, { allowAhead = false } = {})`
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.266`
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.266`
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.16`
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.266`
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.244",
52
- "@jskit-ai/jskit-catalog": "0.2.18",
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.244",
54
- "@jskit-ai/jskit-catalog": "0.2.18",
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 app's root
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. Do not override
86
- the shell's private implementation CSS.
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. When `PLAYWRIGHT_BASE_URL` is provided, start no duplicate server.
97
- For Back, enter the same page from two different origins and verify each
98
- returns to its own origin with context intact. Also check direct entry, reload,
99
- browser back/forward, fixed-destination exceptions, and any unsaved-change guard.
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. For explicitly enabled direct-local auth, use
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