pilotswarm-sdk 0.1.19 → 0.1.21
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/README.md +6 -0
- package/dist/artifact-tools.d.ts.map +1 -1
- package/dist/artifact-tools.js +20 -5
- package/dist/artifact-tools.js.map +1 -1
- package/dist/blob-store.d.ts +6 -4
- package/dist/blob-store.d.ts.map +1 -1
- package/dist/blob-store.js +55 -12
- package/dist/blob-store.js.map +1 -1
- package/dist/client.d.ts +4 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +4 -0
- package/dist/client.js.map +1 -1
- package/dist/cms-migrations.d.ts.map +1 -1
- package/dist/cms-migrations.js +628 -0
- package/dist/cms-migrations.js.map +1 -1
- package/dist/cms.d.ts +145 -0
- package/dist/cms.d.ts.map +1 -1
- package/dist/cms.js +288 -17
- package/dist/cms.js.map +1 -1
- package/dist/facts-migrations.d.ts.map +1 -1
- package/dist/facts-migrations.js +227 -0
- package/dist/facts-migrations.js.map +1 -1
- package/dist/facts-store.d.ts +21 -0
- package/dist/facts-store.d.ts.map +1 -1
- package/dist/facts-store.js +34 -1
- package/dist/facts-store.js.map +1 -1
- package/dist/facts-tools.d.ts +7 -0
- package/dist/facts-tools.d.ts.map +1 -1
- package/dist/facts-tools.js +29 -2
- package/dist/facts-tools.js.map +1 -1
- package/dist/index.d.ts +6 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/inspect-tools.d.ts +42 -0
- package/dist/inspect-tools.d.ts.map +1 -0
- package/dist/inspect-tools.js +800 -0
- package/dist/inspect-tools.js.map +1 -0
- package/dist/managed-session.d.ts.map +1 -1
- package/dist/managed-session.js +76 -35
- package/dist/managed-session.js.map +1 -1
- package/dist/management-client.d.ts +64 -2
- package/dist/management-client.d.ts.map +1 -1
- package/dist/management-client.js +109 -0
- package/dist/management-client.js.map +1 -1
- package/dist/orchestration-registry.d.ts.map +1 -1
- package/dist/orchestration-registry.js +6 -2
- package/dist/orchestration-registry.js.map +1 -1
- package/dist/orchestration-version.d.ts +1 -1
- package/dist/orchestration-version.js +1 -1
- package/dist/orchestration.d.ts +3 -3
- package/dist/orchestration.d.ts.map +1 -1
- package/dist/orchestration.js +27 -4
- package/dist/orchestration.js.map +1 -1
- package/dist/orchestration_1_0_43.d.ts +12 -0
- package/dist/orchestration_1_0_43.d.ts.map +1 -0
- package/dist/orchestration_1_0_43.js +2710 -0
- package/dist/orchestration_1_0_43.js.map +1 -0
- package/dist/orchestration_1_0_44.d.ts +12 -0
- package/dist/orchestration_1_0_44.d.ts.map +1 -0
- package/dist/orchestration_1_0_44.js +2710 -0
- package/dist/orchestration_1_0_44.js.map +1 -0
- package/dist/session-manager.d.ts +9 -0
- package/dist/session-manager.d.ts.map +1 -1
- package/dist/session-manager.js +40 -3
- package/dist/session-manager.js.map +1 -1
- package/dist/session-owner-utils.d.ts +25 -0
- package/dist/session-owner-utils.d.ts.map +1 -0
- package/dist/session-owner-utils.js +82 -0
- package/dist/session-owner-utils.js.map +1 -0
- package/dist/session-proxy.d.ts +5 -1
- package/dist/session-proxy.d.ts.map +1 -1
- package/dist/session-proxy.js +70 -8
- package/dist/session-proxy.js.map +1 -1
- package/dist/session-store.d.ts +38 -6
- package/dist/session-store.d.ts.map +1 -1
- package/dist/session-store.js +187 -9
- package/dist/session-store.js.map +1 -1
- package/dist/types.d.ts +19 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/worker.d.ts.map +1 -1
- package/dist/worker.js +11 -2
- package/dist/worker.js.map +1 -1
- package/package.json +10 -4
- package/plugins/mgmt/agents/agent-tuner.agent.md +222 -0
- package/plugins/mgmt/agents/facts-manager.agent.md +8 -1
- package/plugins/mgmt/agents/pilotswarm.agent.md +13 -10
- package/plugins/mgmt/agents/resourcemgr.agent.md +11 -4
- package/plugins/mgmt/agents/sweeper.agent.md +5 -4
- package/plugins/mgmt/skills/cost-latency-analysis/SKILL.md +117 -0
- package/plugins/mgmt/skills/orchestration-session-lifecycle/SKILL.md +117 -0
- package/plugins/mgmt/skills/resourcemgr/SKILL.md +1 -1
- package/plugins/mgmt/skills/sweeper/SKILL.md +4 -4
- package/plugins/system/agents/default.agent.md +22 -0
package/dist/cms.d.ts
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @module
|
|
9
9
|
*/
|
|
10
|
+
import type { SessionOwnerInfo } from "./types.js";
|
|
10
11
|
/** A persisted session event (non-ephemeral). */
|
|
11
12
|
export interface SessionEvent {
|
|
12
13
|
seq: number;
|
|
@@ -40,6 +41,8 @@ export interface SessionRow {
|
|
|
40
41
|
agentId: string | null;
|
|
41
42
|
/** Splash banner (terminal markup) from the agent definition. */
|
|
42
43
|
splash: string | null;
|
|
44
|
+
/** Authenticated user associated with this session, if any. */
|
|
45
|
+
owner: SessionOwnerInfo | null;
|
|
43
46
|
}
|
|
44
47
|
/** Fields that can be updated on a session row. */
|
|
45
48
|
export interface SessionRowUpdates {
|
|
@@ -73,6 +76,8 @@ export interface SessionMetricSummary {
|
|
|
73
76
|
tokensOutput: number;
|
|
74
77
|
tokensCacheRead: number;
|
|
75
78
|
tokensCacheWrite: number;
|
|
79
|
+
/** Cached-prompt hit ratio (0..1), null when tokensInput is 0. Derived. */
|
|
80
|
+
cacheHitRatio: number | null;
|
|
76
81
|
deletedAt: number | null;
|
|
77
82
|
createdAt: number;
|
|
78
83
|
updatedAt: number;
|
|
@@ -105,12 +110,64 @@ export interface FleetStats {
|
|
|
105
110
|
totalLossyHandoffCount: number;
|
|
106
111
|
totalTokensInput: number;
|
|
107
112
|
totalTokensOutput: number;
|
|
113
|
+
totalTokensCacheRead: number;
|
|
114
|
+
totalTokensCacheWrite: number;
|
|
115
|
+
/** Derived: cache_read / input. Null when input is 0. */
|
|
116
|
+
cacheHitRatio: number | null;
|
|
108
117
|
}>;
|
|
109
118
|
totals: {
|
|
110
119
|
sessionCount: number;
|
|
111
120
|
totalSnapshotSizeBytes: number;
|
|
112
121
|
totalTokensInput: number;
|
|
113
122
|
totalTokensOutput: number;
|
|
123
|
+
totalTokensCacheRead: number;
|
|
124
|
+
totalTokensCacheWrite: number;
|
|
125
|
+
cacheHitRatio: number | null;
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
export type UserStatsOwnerKind = "user" | "system" | "unowned";
|
|
129
|
+
export interface UserStatsModelBucket {
|
|
130
|
+
model: string | null;
|
|
131
|
+
sessionIds: string[];
|
|
132
|
+
sessionCount: number;
|
|
133
|
+
totalSnapshotSizeBytes: number;
|
|
134
|
+
totalOrchestrationHistorySizeBytes: number;
|
|
135
|
+
totalDehydrationCount: number;
|
|
136
|
+
totalHydrationCount: number;
|
|
137
|
+
totalLossyHandoffCount: number;
|
|
138
|
+
totalTokensInput: number;
|
|
139
|
+
totalTokensOutput: number;
|
|
140
|
+
totalTokensCacheRead: number;
|
|
141
|
+
totalTokensCacheWrite: number;
|
|
142
|
+
cacheHitRatio: number | null;
|
|
143
|
+
}
|
|
144
|
+
export interface UserStatsBucket {
|
|
145
|
+
ownerKind: UserStatsOwnerKind;
|
|
146
|
+
owner: SessionOwnerInfo | null;
|
|
147
|
+
sessionIds: string[];
|
|
148
|
+
sessionCount: number;
|
|
149
|
+
totalSnapshotSizeBytes: number;
|
|
150
|
+
totalOrchestrationHistorySizeBytes: number;
|
|
151
|
+
totalTokensInput: number;
|
|
152
|
+
totalTokensOutput: number;
|
|
153
|
+
totalTokensCacheRead: number;
|
|
154
|
+
totalTokensCacheWrite: number;
|
|
155
|
+
cacheHitRatio: number | null;
|
|
156
|
+
byModel: UserStatsModelBucket[];
|
|
157
|
+
}
|
|
158
|
+
export interface UserStats {
|
|
159
|
+
windowStart: number | null;
|
|
160
|
+
earliestSessionCreatedAt: number | null;
|
|
161
|
+
users: UserStatsBucket[];
|
|
162
|
+
totals: {
|
|
163
|
+
sessionCount: number;
|
|
164
|
+
totalSnapshotSizeBytes: number;
|
|
165
|
+
totalOrchestrationHistorySizeBytes: number;
|
|
166
|
+
totalTokensInput: number;
|
|
167
|
+
totalTokensOutput: number;
|
|
168
|
+
totalTokensCacheRead: number;
|
|
169
|
+
totalTokensCacheWrite: number;
|
|
170
|
+
cacheHitRatio: number | null;
|
|
114
171
|
};
|
|
115
172
|
}
|
|
116
173
|
/** Aggregate of a session and all its descendants. */
|
|
@@ -123,11 +180,65 @@ export interface SessionTreeStats {
|
|
|
123
180
|
totalTokensOutput: number;
|
|
124
181
|
totalTokensCacheRead: number;
|
|
125
182
|
totalTokensCacheWrite: number;
|
|
183
|
+
/** Derived: cache_read / input across the tree. Null when input is 0. */
|
|
184
|
+
cacheHitRatio: number | null;
|
|
126
185
|
totalDehydrationCount: number;
|
|
127
186
|
totalHydrationCount: number;
|
|
128
187
|
totalLossyHandoffCount: number;
|
|
129
188
|
totalSnapshotSizeBytes: number;
|
|
130
189
|
};
|
|
190
|
+
/** Per-model breakdown across the tree, sorted by total input tokens. */
|
|
191
|
+
byModel: Array<{
|
|
192
|
+
model: string;
|
|
193
|
+
sessionCount: number;
|
|
194
|
+
totalTokensInput: number;
|
|
195
|
+
totalTokensOutput: number;
|
|
196
|
+
totalTokensCacheRead: number;
|
|
197
|
+
totalTokensCacheWrite: number;
|
|
198
|
+
totalSnapshotSizeBytes: number;
|
|
199
|
+
/** Derived per model. Null when input is 0. */
|
|
200
|
+
cacheHitRatio: number | null;
|
|
201
|
+
}>;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Compute prompt-cache hit ratio with the inclusive token convention.
|
|
205
|
+
* Returns a value in [0, 1] or null when tokensInput is 0 / negative / missing.
|
|
206
|
+
* Defined once so per-session, tree, and fleet surfaces report identical values.
|
|
207
|
+
*/
|
|
208
|
+
export declare function computeCacheHitRatio(tokensInput: number | null | undefined, tokensCacheRead: number | null | undefined): number | null;
|
|
209
|
+
/** Discriminator: 'static' = SDK skill.invoked, 'learned' = read_facts on skills/. */
|
|
210
|
+
export type SkillKind = "static" | "learned";
|
|
211
|
+
/** One row of skill-usage aggregation for a single session. */
|
|
212
|
+
export interface SkillUsageRow {
|
|
213
|
+
kind: SkillKind;
|
|
214
|
+
/** Static: skill name. Learned: requested key or keyPattern (e.g. "skills/foo/%"). */
|
|
215
|
+
name: string;
|
|
216
|
+
pluginName: string | null;
|
|
217
|
+
pluginVersion: string | null;
|
|
218
|
+
invocations: number;
|
|
219
|
+
firstUsedAt: Date;
|
|
220
|
+
lastUsedAt: Date;
|
|
221
|
+
}
|
|
222
|
+
/** Skill usage rolled up across the spawn tree rooted at a session. */
|
|
223
|
+
export interface SessionTreeSkillUsage {
|
|
224
|
+
rootSessionId: string;
|
|
225
|
+
perSession: Array<{
|
|
226
|
+
sessionId: string;
|
|
227
|
+
agentId: string | null;
|
|
228
|
+
skills: SkillUsageRow[];
|
|
229
|
+
}>;
|
|
230
|
+
rolledUp: SkillUsageRow[];
|
|
231
|
+
totalInvocations: number;
|
|
232
|
+
}
|
|
233
|
+
/** One row of skill-usage aggregation across the fleet, by agent. */
|
|
234
|
+
export interface FleetSkillUsageRow extends SkillUsageRow {
|
|
235
|
+
agentId: string | null;
|
|
236
|
+
sessionCount: number;
|
|
237
|
+
}
|
|
238
|
+
/** Fleet-wide skill usage. */
|
|
239
|
+
export interface FleetSkillUsage {
|
|
240
|
+
windowStart: number | null;
|
|
241
|
+
rows: FleetSkillUsageRow[];
|
|
131
242
|
}
|
|
132
243
|
/**
|
|
133
244
|
* SessionCatalogProvider — abstraction over the CMS backing store.
|
|
@@ -145,6 +256,7 @@ export interface SessionCatalogProvider {
|
|
|
145
256
|
isSystem?: boolean;
|
|
146
257
|
agentId?: string;
|
|
147
258
|
splash?: string;
|
|
259
|
+
owner?: SessionOwnerInfo | null;
|
|
148
260
|
}): Promise<void>;
|
|
149
261
|
/** Update one or more fields on an existing session. */
|
|
150
262
|
updateSession(sessionId: string, updates: SessionRowUpdates): Promise<void>;
|
|
@@ -176,6 +288,24 @@ export interface SessionCatalogProvider {
|
|
|
176
288
|
includeDeleted?: boolean;
|
|
177
289
|
since?: Date;
|
|
178
290
|
}): Promise<FleetStats>;
|
|
291
|
+
/** Get user/session-owner aggregate stats, optionally filtered. */
|
|
292
|
+
getUserStats(opts?: {
|
|
293
|
+
includeDeleted?: boolean;
|
|
294
|
+
since?: Date;
|
|
295
|
+
}): Promise<UserStats>;
|
|
296
|
+
/** Get skill usage (skill.invoked event aggregation) for a single session. */
|
|
297
|
+
getSessionSkillUsage(sessionId: string, opts?: {
|
|
298
|
+
since?: Date;
|
|
299
|
+
}): Promise<SkillUsageRow[]>;
|
|
300
|
+
/** Get skill usage rolled across the spawn tree rooted at the given session. */
|
|
301
|
+
getSessionTreeSkillUsage(sessionId: string, opts?: {
|
|
302
|
+
since?: Date;
|
|
303
|
+
}): Promise<SessionTreeSkillUsage>;
|
|
304
|
+
/** Get fleet-wide skill usage broken down by agent. Tuner / management surface. */
|
|
305
|
+
getFleetSkillUsage(opts?: {
|
|
306
|
+
since?: Date;
|
|
307
|
+
includeDeleted?: boolean;
|
|
308
|
+
}): Promise<FleetSkillUsage>;
|
|
179
309
|
/** Upsert a session metric summary with atomic increments. */
|
|
180
310
|
upsertSessionMetricSummary(sessionId: string, updates: SessionMetricSummaryUpsert): Promise<void>;
|
|
181
311
|
/** Hard-delete summary rows for sessions deleted before the cutoff. Returns count removed. */
|
|
@@ -203,6 +333,7 @@ export declare class PgSessionCatalogProvider implements SessionCatalogProvider
|
|
|
203
333
|
isSystem?: boolean;
|
|
204
334
|
agentId?: string;
|
|
205
335
|
splash?: string;
|
|
336
|
+
owner?: SessionOwnerInfo | null;
|
|
206
337
|
}): Promise<void>;
|
|
207
338
|
updateSession(sessionId: string, updates: SessionRowUpdates): Promise<void>;
|
|
208
339
|
softDeleteSession(sessionId: string): Promise<void>;
|
|
@@ -222,8 +353,22 @@ export declare class PgSessionCatalogProvider implements SessionCatalogProvider
|
|
|
222
353
|
includeDeleted?: boolean;
|
|
223
354
|
since?: Date;
|
|
224
355
|
}): Promise<FleetStats>;
|
|
356
|
+
getUserStats(opts?: {
|
|
357
|
+
includeDeleted?: boolean;
|
|
358
|
+
since?: Date;
|
|
359
|
+
}): Promise<UserStats>;
|
|
225
360
|
upsertSessionMetricSummary(sessionId: string, updates: SessionMetricSummaryUpsert): Promise<void>;
|
|
226
361
|
pruneDeletedSummaries(olderThan: Date): Promise<number>;
|
|
362
|
+
getSessionSkillUsage(sessionId: string, opts?: {
|
|
363
|
+
since?: Date;
|
|
364
|
+
}): Promise<SkillUsageRow[]>;
|
|
365
|
+
getSessionTreeSkillUsage(sessionId: string, opts?: {
|
|
366
|
+
since?: Date;
|
|
367
|
+
}): Promise<SessionTreeSkillUsage>;
|
|
368
|
+
getFleetSkillUsage(opts?: {
|
|
369
|
+
since?: Date;
|
|
370
|
+
includeDeleted?: boolean;
|
|
371
|
+
}): Promise<FleetSkillUsage>;
|
|
227
372
|
close(): Promise<void>;
|
|
228
373
|
}
|
|
229
374
|
//# sourceMappingURL=cms.d.ts.map
|
package/dist/cms.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cms.d.ts","sourceRoot":"","sources":["../src/cms.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cms.d.ts","sourceRoot":"","sources":["../src/cms.ts"],"names":[],"mappings":"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"}
|
package/dist/cms.js
CHANGED
|
@@ -8,6 +8,21 @@
|
|
|
8
8
|
* @module
|
|
9
9
|
*/
|
|
10
10
|
import { runCmsMigrations } from "./cms-migrator.js";
|
|
11
|
+
/**
|
|
12
|
+
* Compute prompt-cache hit ratio with the inclusive token convention.
|
|
13
|
+
* Returns a value in [0, 1] or null when tokensInput is 0 / negative / missing.
|
|
14
|
+
* Defined once so per-session, tree, and fleet surfaces report identical values.
|
|
15
|
+
*/
|
|
16
|
+
export function computeCacheHitRatio(tokensInput, tokensCacheRead) {
|
|
17
|
+
const input = Number(tokensInput);
|
|
18
|
+
const read = Number(tokensCacheRead);
|
|
19
|
+
if (!Number.isFinite(input) || input <= 0)
|
|
20
|
+
return null;
|
|
21
|
+
if (!Number.isFinite(read) || read <= 0)
|
|
22
|
+
return 0;
|
|
23
|
+
const ratio = read / input;
|
|
24
|
+
return Math.max(0, Math.min(1, ratio));
|
|
25
|
+
}
|
|
11
26
|
// ─── PostgreSQL Implementation ───────────────────────────────────
|
|
12
27
|
const DEFAULT_SCHEMA = "copilot_sessions";
|
|
13
28
|
/**
|
|
@@ -20,6 +35,8 @@ function sqlForSchema(schema) {
|
|
|
20
35
|
schema,
|
|
21
36
|
fn: {
|
|
22
37
|
createSession: `${s}.cms_create_session`,
|
|
38
|
+
setSessionOwner: `${s}.cms_set_session_owner`,
|
|
39
|
+
inheritSessionOwner: `${s}.cms_inherit_session_owner`,
|
|
23
40
|
updateSession: `${s}.cms_update_session`,
|
|
24
41
|
softDeleteSession: `${s}.cms_soft_delete_session`,
|
|
25
42
|
listSessions: `${s}.cms_list_sessions`,
|
|
@@ -31,10 +48,15 @@ function sqlForSchema(schema) {
|
|
|
31
48
|
getSessionEventsBefore: `${s}.cms_get_session_events_before`,
|
|
32
49
|
getSessionMetricSummary: `${s}.cms_get_session_metric_summary`,
|
|
33
50
|
getSessionTreeStats: `${s}.cms_get_session_tree_stats`,
|
|
51
|
+
getSessionTreeStatsByModel: `${s}.cms_get_session_tree_stats_by_model`,
|
|
34
52
|
getFleetStatsByAgent: `${s}.cms_get_fleet_stats_by_agent`,
|
|
35
53
|
getFleetStatsTotals: `${s}.cms_get_fleet_stats_totals`,
|
|
54
|
+
getUserStatsByModel: `${s}.cms_get_user_stats_by_model`,
|
|
36
55
|
upsertSessionMetricSummary: `${s}.cms_upsert_session_metric_summary`,
|
|
37
56
|
pruneDeletedSummaries: `${s}.cms_prune_deleted_summaries`,
|
|
57
|
+
getSessionSkillUsage: `${s}.cms_get_session_skill_usage`,
|
|
58
|
+
getSessionTreeSkillUsage: `${s}.cms_get_session_tree_skill_usage`,
|
|
59
|
+
getFleetSkillUsage: `${s}.cms_get_fleet_skill_usage`,
|
|
38
60
|
},
|
|
39
61
|
};
|
|
40
62
|
}
|
|
@@ -83,6 +105,21 @@ export class PgSessionCatalogProvider {
|
|
|
83
105
|
// ── Writes ───────────────────────────────────────────────
|
|
84
106
|
async createSession(sessionId, opts) {
|
|
85
107
|
await this.pool.query(`SELECT ${this.sql.fn.createSession}($1, $2, $3, $4, $5, $6)`, [sessionId, opts?.model ?? null, opts?.parentSessionId ?? null, opts?.isSystem ?? false, opts?.agentId ?? null, opts?.splash ?? null]);
|
|
108
|
+
if (opts?.isSystem)
|
|
109
|
+
return;
|
|
110
|
+
if (opts?.owner?.provider && opts?.owner?.subject) {
|
|
111
|
+
await this.pool.query(`SELECT ${this.sql.fn.setSessionOwner}($1, $2, $3, $4, $5)`, [
|
|
112
|
+
sessionId,
|
|
113
|
+
opts.owner.provider,
|
|
114
|
+
opts.owner.subject,
|
|
115
|
+
opts.owner.email ?? null,
|
|
116
|
+
opts.owner.displayName ?? null,
|
|
117
|
+
]);
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
if (opts?.parentSessionId) {
|
|
121
|
+
await this.pool.query(`SELECT ${this.sql.fn.inheritSessionOwner}($1, $2)`, [sessionId, opts.parentSessionId]);
|
|
122
|
+
}
|
|
86
123
|
}
|
|
87
124
|
async updateSession(sessionId, updates) {
|
|
88
125
|
const jsonUpdates = {};
|
|
@@ -167,22 +204,43 @@ export class PgSessionCatalogProvider {
|
|
|
167
204
|
const self = await this.getSessionMetricSummary(sessionId);
|
|
168
205
|
if (!self)
|
|
169
206
|
return null;
|
|
170
|
-
const { rows }
|
|
207
|
+
const [{ rows }, { rows: modelRows }] = await Promise.all([
|
|
208
|
+
this.pool.query(`SELECT * FROM ${this.sql.fn.getSessionTreeStats}($1)`, [sessionId]),
|
|
209
|
+
this.pool.query(`SELECT * FROM ${this.sql.fn.getSessionTreeStatsByModel}($1)`, [sessionId]),
|
|
210
|
+
]);
|
|
171
211
|
const r = rows[0];
|
|
212
|
+
const treeTokensInput = Number(r.total_tokens_input) || 0;
|
|
213
|
+
const treeTokensCacheRead = Number(r.total_tokens_cache_read) || 0;
|
|
214
|
+
const byModel = modelRows.map((mr) => {
|
|
215
|
+
const input = Number(mr.total_tokens_input) || 0;
|
|
216
|
+
const cacheRead = Number(mr.total_tokens_cache_read) || 0;
|
|
217
|
+
return {
|
|
218
|
+
model: String(mr.model || "(unknown)"),
|
|
219
|
+
sessionCount: Number(mr.session_count) || 0,
|
|
220
|
+
totalTokensInput: input,
|
|
221
|
+
totalTokensOutput: Number(mr.total_tokens_output) || 0,
|
|
222
|
+
totalTokensCacheRead: cacheRead,
|
|
223
|
+
totalTokensCacheWrite: Number(mr.total_tokens_cache_write) || 0,
|
|
224
|
+
totalSnapshotSizeBytes: Number(mr.total_snapshot_size_bytes) || 0,
|
|
225
|
+
cacheHitRatio: computeCacheHitRatio(input, cacheRead),
|
|
226
|
+
};
|
|
227
|
+
});
|
|
172
228
|
return {
|
|
173
229
|
rootSessionId: sessionId,
|
|
174
230
|
self,
|
|
175
231
|
tree: {
|
|
176
232
|
sessionCount: Number(r.session_count) || 0,
|
|
177
|
-
totalTokensInput:
|
|
233
|
+
totalTokensInput: treeTokensInput,
|
|
178
234
|
totalTokensOutput: Number(r.total_tokens_output) || 0,
|
|
179
|
-
totalTokensCacheRead:
|
|
235
|
+
totalTokensCacheRead: treeTokensCacheRead,
|
|
180
236
|
totalTokensCacheWrite: Number(r.total_tokens_cache_write) || 0,
|
|
237
|
+
cacheHitRatio: computeCacheHitRatio(treeTokensInput, treeTokensCacheRead),
|
|
181
238
|
totalDehydrationCount: Number(r.total_dehydration_count) || 0,
|
|
182
239
|
totalHydrationCount: Number(r.total_hydration_count) || 0,
|
|
183
240
|
totalLossyHandoffCount: Number(r.total_lossy_handoff_count) || 0,
|
|
184
241
|
totalSnapshotSizeBytes: Number(r.total_snapshot_size_bytes) || 0,
|
|
185
242
|
},
|
|
243
|
+
byModel,
|
|
186
244
|
};
|
|
187
245
|
}
|
|
188
246
|
async getFleetStats(opts) {
|
|
@@ -193,27 +251,144 @@ export class PgSessionCatalogProvider {
|
|
|
193
251
|
// Totals + earliest date
|
|
194
252
|
const { rows: totalsRows } = await this.pool.query(`SELECT * FROM ${this.sql.fn.getFleetStatsTotals}($1, $2)`, [includeDeleted, since]);
|
|
195
253
|
const t = totalsRows[0];
|
|
254
|
+
const totalsTokensInput = Number(t.total_tokens_input) || 0;
|
|
255
|
+
const totalsTokensCacheRead = Number(t.total_tokens_cache_read) || 0;
|
|
196
256
|
return {
|
|
197
257
|
windowStart: opts?.since ? opts.since.getTime() : null,
|
|
198
258
|
earliestSessionCreatedAt: t.earliest_session_created_at
|
|
199
259
|
? new Date(t.earliest_session_created_at).getTime()
|
|
200
260
|
: null,
|
|
201
|
-
byAgent: groups.map((g) =>
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
261
|
+
byAgent: groups.map((g) => {
|
|
262
|
+
const tokensInput = Number(g.total_tokens_input) || 0;
|
|
263
|
+
const tokensCacheRead = Number(g.total_tokens_cache_read) || 0;
|
|
264
|
+
return {
|
|
265
|
+
agentId: g.agent_id ?? null,
|
|
266
|
+
model: g.model ?? null,
|
|
267
|
+
sessionCount: Number(g.session_count) || 0,
|
|
268
|
+
totalSnapshotSizeBytes: Number(g.total_snapshot_size_bytes) || 0,
|
|
269
|
+
totalDehydrationCount: Number(g.total_dehydration_count) || 0,
|
|
270
|
+
totalHydrationCount: Number(g.total_hydration_count) || 0,
|
|
271
|
+
totalLossyHandoffCount: Number(g.total_lossy_handoff_count) || 0,
|
|
272
|
+
totalTokensInput: tokensInput,
|
|
273
|
+
totalTokensOutput: Number(g.total_tokens_output) || 0,
|
|
274
|
+
totalTokensCacheRead: tokensCacheRead,
|
|
275
|
+
totalTokensCacheWrite: Number(g.total_tokens_cache_write) || 0,
|
|
276
|
+
cacheHitRatio: computeCacheHitRatio(tokensInput, tokensCacheRead),
|
|
277
|
+
};
|
|
278
|
+
}),
|
|
212
279
|
totals: {
|
|
213
280
|
sessionCount: Number(t.session_count) || 0,
|
|
214
281
|
totalSnapshotSizeBytes: Number(t.total_snapshot_size_bytes) || 0,
|
|
215
|
-
totalTokensInput:
|
|
282
|
+
totalTokensInput: totalsTokensInput,
|
|
216
283
|
totalTokensOutput: Number(t.total_tokens_output) || 0,
|
|
284
|
+
totalTokensCacheRead: totalsTokensCacheRead,
|
|
285
|
+
totalTokensCacheWrite: Number(t.total_tokens_cache_write) || 0,
|
|
286
|
+
cacheHitRatio: computeCacheHitRatio(totalsTokensInput, totalsTokensCacheRead),
|
|
287
|
+
},
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
async getUserStats(opts) {
|
|
291
|
+
const includeDeleted = opts?.includeDeleted ?? false;
|
|
292
|
+
const since = opts?.since ?? null;
|
|
293
|
+
const { rows } = await this.pool.query(`SELECT * FROM ${this.sql.fn.getUserStatsByModel}($1, $2)`, [includeDeleted, since]);
|
|
294
|
+
const byOwner = new Map();
|
|
295
|
+
let earliestSessionCreatedAt = null;
|
|
296
|
+
const totals = {
|
|
297
|
+
sessionCount: 0,
|
|
298
|
+
totalSnapshotSizeBytes: 0,
|
|
299
|
+
totalOrchestrationHistorySizeBytes: 0,
|
|
300
|
+
totalTokensInput: 0,
|
|
301
|
+
totalTokensOutput: 0,
|
|
302
|
+
totalTokensCacheRead: 0,
|
|
303
|
+
totalTokensCacheWrite: 0,
|
|
304
|
+
cacheHitRatio: null,
|
|
305
|
+
};
|
|
306
|
+
for (const row of rows) {
|
|
307
|
+
const ownerKind = normalizeOwnerKind(row.owner_kind);
|
|
308
|
+
const owner = ownerKind === "user" && row.owner_provider && row.owner_subject
|
|
309
|
+
? {
|
|
310
|
+
provider: row.owner_provider,
|
|
311
|
+
subject: row.owner_subject,
|
|
312
|
+
email: row.owner_email ?? null,
|
|
313
|
+
displayName: row.owner_display_name ?? null,
|
|
314
|
+
}
|
|
315
|
+
: null;
|
|
316
|
+
const ownerKey = userStatsOwnerKey(ownerKind, owner);
|
|
317
|
+
const sessionIds = Array.isArray(row.session_ids)
|
|
318
|
+
? row.session_ids.map((id) => String(id || "")).filter(Boolean)
|
|
319
|
+
: [];
|
|
320
|
+
const tokensInput = Number(row.total_tokens_input) || 0;
|
|
321
|
+
const tokensCacheRead = Number(row.total_tokens_cache_read) || 0;
|
|
322
|
+
const modelBucket = {
|
|
323
|
+
model: row.model ?? null,
|
|
324
|
+
sessionIds,
|
|
325
|
+
sessionCount: Number(row.session_count) || 0,
|
|
326
|
+
totalSnapshotSizeBytes: Number(row.total_snapshot_size_bytes) || 0,
|
|
327
|
+
totalOrchestrationHistorySizeBytes: 0,
|
|
328
|
+
totalDehydrationCount: Number(row.total_dehydration_count) || 0,
|
|
329
|
+
totalHydrationCount: Number(row.total_hydration_count) || 0,
|
|
330
|
+
totalLossyHandoffCount: Number(row.total_lossy_handoff_count) || 0,
|
|
331
|
+
totalTokensInput: tokensInput,
|
|
332
|
+
totalTokensOutput: Number(row.total_tokens_output) || 0,
|
|
333
|
+
totalTokensCacheRead: tokensCacheRead,
|
|
334
|
+
totalTokensCacheWrite: Number(row.total_tokens_cache_write) || 0,
|
|
335
|
+
cacheHitRatio: computeCacheHitRatio(tokensInput, tokensCacheRead),
|
|
336
|
+
};
|
|
337
|
+
let bucket = byOwner.get(ownerKey);
|
|
338
|
+
if (!bucket) {
|
|
339
|
+
bucket = {
|
|
340
|
+
ownerKind,
|
|
341
|
+
owner,
|
|
342
|
+
sessionIds: [],
|
|
343
|
+
sessionCount: 0,
|
|
344
|
+
totalSnapshotSizeBytes: 0,
|
|
345
|
+
totalOrchestrationHistorySizeBytes: 0,
|
|
346
|
+
totalTokensInput: 0,
|
|
347
|
+
totalTokensOutput: 0,
|
|
348
|
+
totalTokensCacheRead: 0,
|
|
349
|
+
totalTokensCacheWrite: 0,
|
|
350
|
+
cacheHitRatio: null,
|
|
351
|
+
byModel: [],
|
|
352
|
+
};
|
|
353
|
+
byOwner.set(ownerKey, bucket);
|
|
354
|
+
}
|
|
355
|
+
bucket.byModel.push(modelBucket);
|
|
356
|
+
bucket.sessionIds.push(...sessionIds);
|
|
357
|
+
bucket.sessionCount += modelBucket.sessionCount;
|
|
358
|
+
bucket.totalSnapshotSizeBytes += modelBucket.totalSnapshotSizeBytes;
|
|
359
|
+
bucket.totalTokensInput += modelBucket.totalTokensInput;
|
|
360
|
+
bucket.totalTokensOutput += modelBucket.totalTokensOutput;
|
|
361
|
+
bucket.totalTokensCacheRead += modelBucket.totalTokensCacheRead;
|
|
362
|
+
bucket.totalTokensCacheWrite += modelBucket.totalTokensCacheWrite;
|
|
363
|
+
totals.sessionCount += modelBucket.sessionCount;
|
|
364
|
+
totals.totalSnapshotSizeBytes += modelBucket.totalSnapshotSizeBytes;
|
|
365
|
+
totals.totalTokensInput += modelBucket.totalTokensInput;
|
|
366
|
+
totals.totalTokensOutput += modelBucket.totalTokensOutput;
|
|
367
|
+
totals.totalTokensCacheRead += modelBucket.totalTokensCacheRead;
|
|
368
|
+
totals.totalTokensCacheWrite += modelBucket.totalTokensCacheWrite;
|
|
369
|
+
if (row.earliest_session_created_at) {
|
|
370
|
+
const ts = new Date(row.earliest_session_created_at).getTime();
|
|
371
|
+
if (Number.isFinite(ts) && (earliestSessionCreatedAt == null || ts < earliestSessionCreatedAt)) {
|
|
372
|
+
earliestSessionCreatedAt = ts;
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
const users = Array.from(byOwner.values()).map((bucket) => ({
|
|
377
|
+
...bucket,
|
|
378
|
+
sessionIds: [...new Set(bucket.sessionIds)],
|
|
379
|
+
cacheHitRatio: computeCacheHitRatio(bucket.totalTokensInput, bucket.totalTokensCacheRead),
|
|
380
|
+
byModel: bucket.byModel.sort((a, b) => (b.totalTokensInput - a.totalTokensInput)
|
|
381
|
+
|| String(a.model || "").localeCompare(String(b.model || ""))),
|
|
382
|
+
})).sort((a, b) => (b.totalTokensInput - a.totalTokensInput)
|
|
383
|
+
|| (b.totalSnapshotSizeBytes - a.totalSnapshotSizeBytes)
|
|
384
|
+
|| userStatsOwnerLabel(a).localeCompare(userStatsOwnerLabel(b)));
|
|
385
|
+
return {
|
|
386
|
+
windowStart: opts?.since ? opts.since.getTime() : null,
|
|
387
|
+
earliestSessionCreatedAt,
|
|
388
|
+
users,
|
|
389
|
+
totals: {
|
|
390
|
+
...totals,
|
|
391
|
+
cacheHitRatio: computeCacheHitRatio(totals.totalTokensInput, totals.totalTokensCacheRead),
|
|
217
392
|
},
|
|
218
393
|
};
|
|
219
394
|
}
|
|
@@ -224,6 +399,62 @@ export class PgSessionCatalogProvider {
|
|
|
224
399
|
const { rows } = await this.pool.query(`SELECT ${this.sql.fn.pruneDeletedSummaries}($1) AS deleted_count`, [olderThan]);
|
|
225
400
|
return Number(rows[0]?.deleted_count) || 0;
|
|
226
401
|
}
|
|
402
|
+
async getSessionSkillUsage(sessionId, opts) {
|
|
403
|
+
const { rows } = await this.pool.query(`SELECT * FROM ${this.sql.fn.getSessionSkillUsage}($1, $2)`, [sessionId, opts?.since ?? null]);
|
|
404
|
+
return rows.map(rowToSkillUsageRow);
|
|
405
|
+
}
|
|
406
|
+
async getSessionTreeSkillUsage(sessionId, opts) {
|
|
407
|
+
const { rows } = await this.pool.query(`SELECT * FROM ${this.sql.fn.getSessionTreeSkillUsage}($1, $2)`, [sessionId, opts?.since ?? null]);
|
|
408
|
+
const perSessionMap = new Map();
|
|
409
|
+
const rolledUpMap = new Map();
|
|
410
|
+
let totalInvocations = 0;
|
|
411
|
+
for (const r of rows) {
|
|
412
|
+
const sid = String(r.session_id);
|
|
413
|
+
const item = rowToSkillUsageRow(r);
|
|
414
|
+
const bucket = perSessionMap.get(sid)
|
|
415
|
+
?? ({ agentId: (r.agent_id ?? null), skills: [] });
|
|
416
|
+
bucket.skills.push(item);
|
|
417
|
+
perSessionMap.set(sid, bucket);
|
|
418
|
+
const key = `${item.kind}\u0001${item.name}\u0001${item.pluginName ?? ""}\u0001${item.pluginVersion ?? ""}`;
|
|
419
|
+
const existing = rolledUpMap.get(key);
|
|
420
|
+
if (existing) {
|
|
421
|
+
existing.invocations += item.invocations;
|
|
422
|
+
if (item.firstUsedAt < existing.firstUsedAt)
|
|
423
|
+
existing.firstUsedAt = item.firstUsedAt;
|
|
424
|
+
if (item.lastUsedAt > existing.lastUsedAt)
|
|
425
|
+
existing.lastUsedAt = item.lastUsedAt;
|
|
426
|
+
}
|
|
427
|
+
else {
|
|
428
|
+
rolledUpMap.set(key, { ...item });
|
|
429
|
+
}
|
|
430
|
+
totalInvocations += item.invocations;
|
|
431
|
+
}
|
|
432
|
+
const rolledUp = Array.from(rolledUpMap.values()).sort((a, b) => b.invocations - a.invocations || b.lastUsedAt.getTime() - a.lastUsedAt.getTime());
|
|
433
|
+
const perSession = Array.from(perSessionMap.entries()).map(([sid, bucket]) => ({
|
|
434
|
+
sessionId: sid,
|
|
435
|
+
agentId: bucket.agentId,
|
|
436
|
+
skills: bucket.skills,
|
|
437
|
+
}));
|
|
438
|
+
return {
|
|
439
|
+
rootSessionId: sessionId,
|
|
440
|
+
perSession,
|
|
441
|
+
rolledUp,
|
|
442
|
+
totalInvocations,
|
|
443
|
+
};
|
|
444
|
+
}
|
|
445
|
+
async getFleetSkillUsage(opts) {
|
|
446
|
+
const since = opts?.since ?? null;
|
|
447
|
+
const includeDeleted = opts?.includeDeleted ?? false;
|
|
448
|
+
const { rows } = await this.pool.query(`SELECT * FROM ${this.sql.fn.getFleetSkillUsage}($1, $2)`, [since, includeDeleted]);
|
|
449
|
+
return {
|
|
450
|
+
windowStart: opts?.since ? opts.since.getTime() : null,
|
|
451
|
+
rows: rows.map((r) => ({
|
|
452
|
+
...rowToSkillUsageRow(r),
|
|
453
|
+
agentId: r.agent_id ?? null,
|
|
454
|
+
sessionCount: Number(r.session_count) || 0,
|
|
455
|
+
})),
|
|
456
|
+
};
|
|
457
|
+
}
|
|
227
458
|
async close() {
|
|
228
459
|
if (this.pool) {
|
|
229
460
|
await this.pool.end();
|
|
@@ -234,6 +465,14 @@ export class PgSessionCatalogProvider {
|
|
|
234
465
|
// ─── Helpers ─────────────────────────────────────────────────────
|
|
235
466
|
/** Map a PG row (snake_case) to SessionRow (camelCase). */
|
|
236
467
|
function rowToSessionRow(row) {
|
|
468
|
+
const owner = row.owner_provider && row.owner_subject
|
|
469
|
+
? {
|
|
470
|
+
provider: row.owner_provider,
|
|
471
|
+
subject: row.owner_subject,
|
|
472
|
+
email: row.owner_email ?? null,
|
|
473
|
+
displayName: row.owner_display_name ?? null,
|
|
474
|
+
}
|
|
475
|
+
: null;
|
|
237
476
|
return {
|
|
238
477
|
sessionId: row.session_id,
|
|
239
478
|
orchestrationId: row.orchestration_id ?? null,
|
|
@@ -252,6 +491,7 @@ function rowToSessionRow(row) {
|
|
|
252
491
|
isSystem: row.is_system ?? false,
|
|
253
492
|
agentId: row.agent_id ?? null,
|
|
254
493
|
splash: row.splash ?? null,
|
|
494
|
+
owner,
|
|
255
495
|
};
|
|
256
496
|
}
|
|
257
497
|
/** Map a PG row to SessionEvent. */
|
|
@@ -265,8 +505,25 @@ function rowToSessionEvent(row) {
|
|
|
265
505
|
workerNodeId: row.worker_node_id ?? undefined,
|
|
266
506
|
};
|
|
267
507
|
}
|
|
508
|
+
function normalizeOwnerKind(value) {
|
|
509
|
+
return value === "system" || value === "unowned" ? value : "user";
|
|
510
|
+
}
|
|
511
|
+
function userStatsOwnerKey(ownerKind, owner) {
|
|
512
|
+
if (ownerKind !== "user")
|
|
513
|
+
return ownerKind;
|
|
514
|
+
return `${owner?.provider || ""}\u0001${owner?.subject || ""}`;
|
|
515
|
+
}
|
|
516
|
+
function userStatsOwnerLabel(bucket) {
|
|
517
|
+
if (bucket.ownerKind === "system")
|
|
518
|
+
return "system";
|
|
519
|
+
if (bucket.ownerKind === "unowned")
|
|
520
|
+
return "unowned";
|
|
521
|
+
return String(bucket.owner?.displayName || bucket.owner?.email || bucket.owner?.subject || "user");
|
|
522
|
+
}
|
|
268
523
|
/** Map a PG row to SessionMetricSummary. */
|
|
269
524
|
function rowToSessionMetricSummary(row) {
|
|
525
|
+
const tokensInput = Number(row.tokens_input) || 0;
|
|
526
|
+
const tokensCacheRead = Number(row.tokens_cache_read) || 0;
|
|
270
527
|
return {
|
|
271
528
|
sessionId: row.session_id,
|
|
272
529
|
agentId: row.agent_id ?? null,
|
|
@@ -279,13 +536,27 @@ function rowToSessionMetricSummary(row) {
|
|
|
279
536
|
lastDehydratedAt: row.last_dehydrated_at ? new Date(row.last_dehydrated_at).getTime() : null,
|
|
280
537
|
lastHydratedAt: row.last_hydrated_at ? new Date(row.last_hydrated_at).getTime() : null,
|
|
281
538
|
lastCheckpointAt: row.last_checkpoint_at ? new Date(row.last_checkpoint_at).getTime() : null,
|
|
282
|
-
tokensInput
|
|
539
|
+
tokensInput,
|
|
283
540
|
tokensOutput: Number(row.tokens_output) || 0,
|
|
284
|
-
tokensCacheRead
|
|
541
|
+
tokensCacheRead,
|
|
285
542
|
tokensCacheWrite: Number(row.tokens_cache_write) || 0,
|
|
543
|
+
cacheHitRatio: computeCacheHitRatio(tokensInput, tokensCacheRead),
|
|
286
544
|
deletedAt: row.deleted_at ? new Date(row.deleted_at).getTime() : null,
|
|
287
545
|
createdAt: new Date(row.created_at).getTime(),
|
|
288
546
|
updatedAt: new Date(row.updated_at).getTime(),
|
|
289
547
|
};
|
|
290
548
|
}
|
|
549
|
+
/** Map a PG row to SkillUsageRow. Used for per-session, tree, and fleet rows. */
|
|
550
|
+
function rowToSkillUsageRow(row) {
|
|
551
|
+
const kind = row.kind === "learned" ? "learned" : "static";
|
|
552
|
+
return {
|
|
553
|
+
kind,
|
|
554
|
+
name: String(row.name ?? ""),
|
|
555
|
+
pluginName: row.plugin_name ?? null,
|
|
556
|
+
pluginVersion: row.plugin_version ?? null,
|
|
557
|
+
invocations: Number(row.invocations) || 0,
|
|
558
|
+
firstUsedAt: new Date(row.first_used_at ?? row.last_used_at),
|
|
559
|
+
lastUsedAt: new Date(row.last_used_at),
|
|
560
|
+
};
|
|
561
|
+
}
|
|
291
562
|
//# sourceMappingURL=cms.js.map
|