@jskit-ai/agent-docs 0.1.227 → 0.1.229

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.
@@ -50,6 +50,14 @@ Claude and OpenCode use the same milestones: `received`, `preparation-started`,
50
50
  `receipt-persisted`, `accepted`, `first-response` and `failed` when applicable.
51
51
  `provider-started` to `runtime-ready` includes the provider's acquisition,
52
52
  startup or reuse and prompt preparation; it is not an inference timer.
53
+ Finer milestones divide those phases when they occur: `authorized`,
54
+ `history-read`, `state-read`, `request-saved` and `input-prepared` during
55
+ admission; Claude's `duplicate-checked`, `native-history-read`, `process-ready`,
56
+ `prompt-rendered`, `metadata-ready`, `receipt-written` and `state-active`; and
57
+ `admission-authorized` and `turn-located` before `accepted`. A bound host's
58
+ `prepareInput(input, context, { deliveryTiming })` and Claude's
59
+ `preparation.message(..., { deliveryTiming })` receive the same observer and may
60
+ mark `git-actor` and `genesis-rendered`. Unknown stage names are ignored.
53
61
  Native acknowledgement precedes the application's receipt write. Accepted delivery
54
62
  still waits for the existing durable receipt contract.
55
63
 
@@ -1417,6 +1425,7 @@ transcript service. All nine are mandatory for `createConversationRuntime()`:
1417
1425
  | `readTurn(id)` | Detached turn snapshot in the client model above, or null if absent. |
1418
1426
  | `nextTurnId()` | Allocate an ID after the current tail under the write lock. |
1419
1427
  | `hasMessage(messageId)` | Check uniqueness across the whole scoped conversation. |
1428
+ | `findMessageTurnId(messageId)` | Optional. The turn ID holding that message, or an empty string; lets identity lookups avoid reading every turn. |
1420
1429
  | `appendMessage(turnId, message)` | Save `{ role, text, messageId, at }` and any supplied `attachments`, `origin` and `turnMetadata`; user or application messages may start turns. |
1421
1430
  | `replaceAssistant(turnId, message)` | Idempotently replace the final answer for that exact turn, preserving its existing timestamp/identity. |
1422
1431
  | `readMetadata()` | Detached conversation metadata object; return `{}` for an empty scope. |
@@ -2317,10 +2326,15 @@ storage transactions. Runtime state occupies `metadata.runtime` at conversation
2317
2326
  and turn level. Custom adapters must commit that state with accepted messages in
2318
2327
  the same transaction. The file adapter remains one-writer storage.
2319
2328
 
2320
- `createConversationStorage({ readRecord, writeRecord, deleteRecord })` is exported
2329
+ `createConversationStorage({ readRecord, writeRecord, deleteRecord, recordVersion })` is exported
2321
2330
  for custom single-writer record stores. Each record contains `{ turns: Map,
2322
2331
  metadata: object }`; a missing record uses an empty map and metadata object. Its
2323
- copy-on-write transaction methods match the supplied memory/file adapters. It
2332
+ copy-on-write transaction methods match the supplied memory/file adapters. Saved
2333
+ records are shared and never changed in place; a transaction copies only the turn
2334
+ map and the turns it changes. The optional `recordVersion(id)` returns a cheap
2335
+ token (the file adapter uses device, inode, size and modification time) that
2336
+ changes whenever the saved record changes; the parsed record and its message index
2337
+ are then reused until the token changes. It
2324
2338
  calls `writeRecord(id, draft, transaction)` to commit a successful transaction.
2325
2339
  Record formats that store the canonical transcript can use `transaction.readTurn()`
2326
2340
  while serializing, without copying the transcript's ordering and role logic.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jskit-ai/agent-docs",
3
- "version": "0.1.227",
3
+ "version": "0.1.229",
4
4
  "description": "Distributed JSKIT agent references, prompts, guides, and generated reference maps.",
5
5
  "type": "module",
6
6
  "files": [
@@ -48,7 +48,7 @@
48
48
  },
49
49
  "devDependencies": {
50
50
  "@jskit-ai/config-eslint": "0.1.241",
51
- "@jskit-ai/jskit-catalog": "0.1.280",
51
+ "@jskit-ai/jskit-catalog": "0.1.282",
52
52
  "@playwright/test": "1.61.1",
53
53
  "@vitejs/plugin-vue": "^6.0.7",
54
54
  "eslint": "^10.8.0",
@@ -50,7 +50,7 @@
50
50
  },
51
51
  "devDependencies": {
52
52
  "@jskit-ai/config-eslint": "0.1.241",
53
- "@jskit-ai/jskit-catalog": "0.1.280",
53
+ "@jskit-ai/jskit-catalog": "0.1.282",
54
54
  "@playwright/test": "1.61.1",
55
55
  "@vitejs/plugin-vue": "^6.0.7",
56
56
  "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.227`
18
+ - Owner: `@jskit-ai/agent-docs@0.1.229`
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.227`
29
+ - Owner: `@jskit-ai/agent-docs@0.1.229`
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.1.226`
40
+ - Owner: `@jskit-ai/assistant-runtime@0.1.228`
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`
@@ -323,7 +323,7 @@ Define a server feature through explicit capabilities and first-class actions, a
323
323
 
324
324
  - Id: `server/feature-package`
325
325
  - Keywords: `actions`, `feature`, `json-rest`, `knex`, `orchestration`, `package`, `provider`, `repository`, `routes`, `server`
326
- - Owner: `@jskit-ai/agent-docs@0.1.227`
326
+ - Owner: `@jskit-ai/agent-docs@0.1.229`
327
327
  - Read: [PATTERN.md](../../skills/jskit/references/patterns/server/feature-package/PATTERN.md)
328
328
  - Examples: [example/](../../skills/jskit/references/patterns/server/feature-package/example/)
329
329
  - Requires: `@jskit-ai/kernel`
@@ -312,6 +312,10 @@ Exports
312
312
  - `requireClaudeSessionId(id)`
313
313
  - `archivedClaudeProjectDirectory(workdir)`
314
314
  - `matchingClaudeProjectDirectories(names, directory)`
315
+ Local functions
316
+ - `retainedClaudeFrame(frame)`
317
+ - `claudeHistoryFrames(file)`
318
+ - `readClaudeHistoryFrames(file)`
315
319
 
316
320
  ### `src/server/conversation/claudeProcess.js`
317
321
  Exports
@@ -1091,9 +1095,10 @@ Exports
1091
1095
  - `beginConversationOperation(lease)`
1092
1096
  - `finishConversationOperation(lease, participant)`
1093
1097
  - `createReentrantConversationStorage(storage)`
1094
- - `createConversationStorage({ readRecord, writeRecord, deleteRecord })`
1098
+ - `createConversationStorage({ readRecord, writeRecord, deleteRecord, recordVersion })`
1095
1099
  Local functions
1096
1100
  - `conversationMessageStorageKey({ role, at, messageId } = {})`
1101
+ - `conversationMessageIndex(record)`
1097
1102
 
1098
1103
  ### `src/server/conversation/streams.js`
1099
1104
  Exports
@@ -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.227`
18
+ - Owner: `@jskit-ai/agent-docs@0.1.229`
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.227`
29
+ - Owner: `@jskit-ai/agent-docs@0.1.229`
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.1.226`
40
+ - Owner: `@jskit-ai/assistant-runtime@0.1.228`
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`
@@ -323,7 +323,7 @@ Define a server feature through explicit capabilities and first-class actions, a
323
323
 
324
324
  - Id: `server/feature-package`
325
325
  - Keywords: `actions`, `feature`, `json-rest`, `knex`, `orchestration`, `package`, `provider`, `repository`, `routes`, `server`
326
- - Owner: `@jskit-ai/agent-docs@0.1.227`
326
+ - Owner: `@jskit-ai/agent-docs@0.1.229`
327
327
  - Read: [PATTERN.md](patterns/server/feature-package/PATTERN.md)
328
328
  - Examples: [example/](patterns/server/feature-package/example/)
329
329
  - Requires: `@jskit-ai/kernel`
@@ -48,7 +48,7 @@
48
48
  },
49
49
  "devDependencies": {
50
50
  "@jskit-ai/config-eslint": "0.1.241",
51
- "@jskit-ai/jskit-catalog": "0.1.280",
51
+ "@jskit-ai/jskit-catalog": "0.1.282",
52
52
  "@playwright/test": "1.61.1",
53
53
  "@vitejs/plugin-vue": "^6.0.7",
54
54
  "eslint": "^10.8.0",
@@ -50,7 +50,7 @@
50
50
  },
51
51
  "devDependencies": {
52
52
  "@jskit-ai/config-eslint": "0.1.241",
53
- "@jskit-ai/jskit-catalog": "0.1.280",
53
+ "@jskit-ai/jskit-catalog": "0.1.282",
54
54
  "@playwright/test": "1.61.1",
55
55
  "@vitejs/plugin-vue": "^6.0.7",
56
56
  "eslint": "^10.8.0",