@adhd/agent-store-runtime 2.2.0 → 2.2.2
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/CHANGELOG.md +18 -0
- package/package.json +10 -3
- package/src/runtime/usage-client.js +1 -1
- package/src/runtime/usage-client.js.map +1 -1
- package/src/store/session-store.d.ts +21 -0
- package/src/store/session-store.d.ts.map +1 -1
- package/src/store/session-store.js +51 -18
- package/src/store/session-store.js.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,21 @@
|
|
|
1
|
+
## 2.2.1 (2026-09-24)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### 🩹 Fixes
|
|
5
|
+
|
|
6
|
+
- **apigen-cli:** restore 2768 files mass-deleted by 0117eb22 (BUG-APIGEN-052)
|
|
7
|
+
|
|
8
|
+
- **agent:** typecheck targets no longer fail TS6305 in fresh worktrees (additive typecheck configs + real type fixes)
|
|
9
|
+
|
|
10
|
+
- **nx:** drop self-referential scripts.build wrappers to restore build cache
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### ❤️ Thank You
|
|
14
|
+
|
|
15
|
+
- parity-harness-self-test
|
|
16
|
+
- pseudosky
|
|
17
|
+
- Sky
|
|
18
|
+
|
|
1
19
|
## 2.1.7 (2026-07-25)
|
|
2
20
|
|
|
3
21
|
This was a version bump only for agent-store-runtime to align it with other projects, there were no code changes.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adhd/agent-store-runtime",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.2",
|
|
4
4
|
"description": "Runtime state stores for sessions, tasks, and usage tracking — extracted from agent-mcp",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"publishConfig": {
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
}
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@adhd/agent-base-types": "^2.2
|
|
16
|
+
"@adhd/agent-base-types": "^2.3.2",
|
|
17
17
|
"better-sqlite3": "12.10.0",
|
|
18
18
|
"drizzle-orm": "0.45.2",
|
|
19
19
|
"uuid": "14.0.0",
|
|
@@ -28,5 +28,12 @@
|
|
|
28
28
|
"homepage": "https://github.com/PseudoSky/adhd/tree/main/packages/agent/agent-store-runtime#readme",
|
|
29
29
|
"bugs": {
|
|
30
30
|
"url": "https://github.com/PseudoSky/adhd/issues"
|
|
31
|
-
}
|
|
31
|
+
},
|
|
32
|
+
"keywords": [
|
|
33
|
+
"agent",
|
|
34
|
+
"runtime",
|
|
35
|
+
"store",
|
|
36
|
+
"llm",
|
|
37
|
+
"typescript"
|
|
38
|
+
]
|
|
32
39
|
}
|
|
@@ -40,7 +40,7 @@ export class UsageClient {
|
|
|
40
40
|
}
|
|
41
41
|
markModelCallEnd(taskId) {
|
|
42
42
|
const acc = this.accumulators.get(taskId);
|
|
43
|
-
if (
|
|
43
|
+
if (acc?.modelCallStartMs === undefined)
|
|
44
44
|
return;
|
|
45
45
|
acc.totalModelMs += Date.now() - acc.modelCallStartMs;
|
|
46
46
|
acc.modelCallStartMs = undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage-client.js","sourceRoot":"","sources":["../../../src/runtime/usage-client.ts"],"names":[],"mappings":"AAuBA,MAAM,OAAO,WAAW;IAGO;IAFZ,YAAY,GAAG,IAAI,GAAG,EAAuB,CAAC;IAE/D,YAA6B,EAAW;QAAX,OAAE,GAAF,EAAE,CAAS;IAAG,CAAC;IAE5C,uEAAuE;IAEvE,MAAM,CAAC,MAAc,EAAE,IAAsB;QAC3C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE;YAC5B,MAAM;YACN,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;YACvB,WAAW,EAAE,CAAC;YACd,YAAY,EAAE,CAAC;YACf,WAAW,EAAE,CAAC;YACd,UAAU,EAAE,CAAC;YACb,YAAY,EAAE,CAAC;YACf,SAAS,EAAE,IAAI,GAAG,EAAE;SACrB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,MAAc;QACnB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,uEAAuE;IAEvE,eAAe,CAAC,MAAc,EAAE,KAA6B;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,GAAG;YAAE,OAAO;QAEjB,IAAI,KAAK,EAAE,CAAC;YACV,GAAG,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC;YAC1C,GAAG,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC;YAC5C,GAAG,CAAC,WAAW;gBACb,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,IAAI,CAAC,CAAC,CAAC;QACpE,CAAC;QACD,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,kBAAkB,CAAC,MAAc;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,GAAG;YAAE,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7C,CAAC;IAED,gBAAgB,CAAC,MAAc;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,
|
|
1
|
+
{"version":3,"file":"usage-client.js","sourceRoot":"","sources":["../../../src/runtime/usage-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,28 @@ export declare class SessionStore {
|
|
|
14
14
|
read(id: string): Session;
|
|
15
15
|
getAgentDefinition(sessionId: string): AgentDefinition;
|
|
16
16
|
list(input: SessionListInput): Session[];
|
|
17
|
+
/**
|
|
18
|
+
* Close a session.
|
|
19
|
+
*
|
|
20
|
+
* The leading `read()` exists only to preserve `SESSION_NOT_FOUND` for a
|
|
21
|
+
* truly-absent session — a bare conditional UPDATE cannot distinguish
|
|
22
|
+
* "absent" from "already closed". The authoritative transition is the
|
|
23
|
+
* single UPDATE below: `WHERE id = ? AND status != 'closed'` folds the
|
|
24
|
+
* "already closed" guard into the same statement as the write, so of two
|
|
25
|
+
* concurrent closers exactly one observes a returned row and the other
|
|
26
|
+
* reliably raises `SESSION_CLOSED` — `closedAt` is written at most once.
|
|
27
|
+
*/
|
|
17
28
|
close(id: string): Session;
|
|
29
|
+
/**
|
|
30
|
+
* Clear a session's message history.
|
|
31
|
+
*
|
|
32
|
+
* The leading `read()` preserves `SESSION_NOT_FOUND`; the authoritative
|
|
33
|
+
* status guard then re-runs *inside* the same transaction as the DELETE.
|
|
34
|
+
* `behavior: 'immediate'` (`BEGIN IMMEDIATE`) takes SQLite's write lock at
|
|
35
|
+
* BEGIN rather than deferring it to the first write, so a concurrent
|
|
36
|
+
* `close()` cannot commit between the guard and the delete — the two can
|
|
37
|
+
* never interleave, and a closed session's context cannot be cleared.
|
|
38
|
+
*/
|
|
18
39
|
clearMessages(sessionId: string): number;
|
|
19
40
|
appendMessage(sessionId: string, message: Message): void;
|
|
20
41
|
getMessages(sessionId: string): Message[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../../src/store/session-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAIxE,OAAO,KAAK,EACV,eAAe,EACf,OAAO,EACP,OAAO,EACR,MAAM,0BAA0B,CAAC;AAKlC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAIjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;gBADN,EAAE,EAAE,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAChD,KAAK,CAAC,EAAE,aAAa,YAAA;IAGxC,MAAM,CAAC,KAAK,EAAE;QACZ,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,eAAe,CAAC;QACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,GAAG,OAAO;IA4BX,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAsBzB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe;IAiBtD,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,EAAE;IAiCxC,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;
|
|
1
|
+
{"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../../src/store/session-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAIxE,OAAO,KAAK,EACV,eAAe,EACf,OAAO,EACP,OAAO,EACR,MAAM,0BAA0B,CAAC;AAKlC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAIjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;gBADN,EAAE,EAAE,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAChD,KAAK,CAAC,EAAE,aAAa,YAAA;IAGxC,MAAM,CAAC,KAAK,EAAE;QACZ,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,eAAe,CAAC;QACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,GAAG,OAAO;IA4BX,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAsBzB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe;IAiBtD,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,EAAE;IAiCxC;;;;;;;;;;OAUG;IACH,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IA0B1B;;;;;;;;;OASG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAuCxC,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAiBxD,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,EAAE;CAiB1C;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAW1D;AAED,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,OAAO,EAAE,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,EAAE,CAsBX"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { and, eq } from 'drizzle-orm';
|
|
1
|
+
import { and, eq, ne } from 'drizzle-orm';
|
|
2
2
|
import { messagesTable, sessionsTable } from '../db/schema.js';
|
|
3
3
|
import { logger } from '../logger.js';
|
|
4
4
|
import { agentDefinitionStoredSchema, sessionSchema, } from '../validation/schemas.js';
|
|
@@ -88,35 +88,68 @@ export class SessionStore {
|
|
|
88
88
|
closedAt: row.closedAt ?? undefined,
|
|
89
89
|
}));
|
|
90
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* Close a session.
|
|
93
|
+
*
|
|
94
|
+
* The leading `read()` exists only to preserve `SESSION_NOT_FOUND` for a
|
|
95
|
+
* truly-absent session — a bare conditional UPDATE cannot distinguish
|
|
96
|
+
* "absent" from "already closed". The authoritative transition is the
|
|
97
|
+
* single UPDATE below: `WHERE id = ? AND status != 'closed'` folds the
|
|
98
|
+
* "already closed" guard into the same statement as the write, so of two
|
|
99
|
+
* concurrent closers exactly one observes a returned row and the other
|
|
100
|
+
* reliably raises `SESSION_CLOSED` — `closedAt` is written at most once.
|
|
101
|
+
*/
|
|
91
102
|
close(id) {
|
|
92
|
-
|
|
93
|
-
if (session.status === 'closed') {
|
|
94
|
-
throw new ToolError('SESSION_CLOSED', `Session '${id}' is already closed`);
|
|
95
|
-
}
|
|
103
|
+
this.read(id);
|
|
96
104
|
const now = nowIso();
|
|
97
|
-
this.db
|
|
105
|
+
const closed = this.db
|
|
98
106
|
.update(sessionsTable)
|
|
99
107
|
.set({
|
|
100
108
|
status: 'closed',
|
|
101
109
|
closedAt: now,
|
|
102
110
|
updatedAt: now,
|
|
103
111
|
})
|
|
104
|
-
.where(eq(sessionsTable.id, id))
|
|
105
|
-
.
|
|
112
|
+
.where(and(eq(sessionsTable.id, id), ne(sessionsTable.status, 'closed')))
|
|
113
|
+
.returning()
|
|
114
|
+
.get();
|
|
115
|
+
if (closed === undefined) {
|
|
116
|
+
throw new ToolError('SESSION_CLOSED', `Session '${id}' is already closed`);
|
|
117
|
+
}
|
|
106
118
|
logger.info({ sessionId: id }, 'Session closed');
|
|
107
119
|
return this.read(id);
|
|
108
120
|
}
|
|
121
|
+
/**
|
|
122
|
+
* Clear a session's message history.
|
|
123
|
+
*
|
|
124
|
+
* The leading `read()` preserves `SESSION_NOT_FOUND`; the authoritative
|
|
125
|
+
* status guard then re-runs *inside* the same transaction as the DELETE.
|
|
126
|
+
* `behavior: 'immediate'` (`BEGIN IMMEDIATE`) takes SQLite's write lock at
|
|
127
|
+
* BEGIN rather than deferring it to the first write, so a concurrent
|
|
128
|
+
* `close()` cannot commit between the guard and the delete — the two can
|
|
129
|
+
* never interleave, and a closed session's context cannot be cleared.
|
|
130
|
+
*/
|
|
109
131
|
clearMessages(sessionId) {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
132
|
+
this.read(sessionId);
|
|
133
|
+
const cleared = this.db.transaction((tx) => {
|
|
134
|
+
const row = tx
|
|
135
|
+
.select({ status: sessionsTable.status })
|
|
136
|
+
.from(sessionsTable)
|
|
137
|
+
.where(eq(sessionsTable.id, sessionId))
|
|
138
|
+
.get();
|
|
139
|
+
if (row === undefined) {
|
|
140
|
+
throw new ToolError('SESSION_NOT_FOUND', `Session '${sessionId}' not found`);
|
|
141
|
+
}
|
|
142
|
+
if (row.status === 'closed') {
|
|
143
|
+
throw new ToolError('SESSION_CLOSED', `Session '${sessionId}' is closed; cannot clear context`);
|
|
144
|
+
}
|
|
145
|
+
const result = tx
|
|
146
|
+
.delete(messagesTable)
|
|
147
|
+
.where(eq(messagesTable.sessionId, sessionId))
|
|
148
|
+
.run();
|
|
149
|
+
return result.changes;
|
|
150
|
+
}, { behavior: 'immediate' });
|
|
151
|
+
logger.info({ sessionId, cleared }, 'Session context cleared');
|
|
152
|
+
return cleared;
|
|
120
153
|
}
|
|
121
154
|
appendMessage(sessionId, message) {
|
|
122
155
|
this.db
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../../src/store/session-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../../src/store/session-store.ts"],"names":[],"mappings":"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"}
|