@hyperdreamer/pi-webui 1.11.1 → 1.11.3

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.
Files changed (54) hide show
  1. package/dist/client/assets/{CodeViewer-C0XQ5fEe.js → CodeViewer-GfKIAkNq.js} +1 -1
  2. package/dist/client/assets/{UnifiedDiffViewer-BGXZn_Bc.js → UnifiedDiffViewer-BsvPnGNF.js} +1 -1
  3. package/dist/client/assets/{index-CkfjnumG.js → index-DyLRACqU.js} +707 -475
  4. package/dist/client/index.html +1 -1
  5. package/dist/pi-webui-plugins/workspace-learned-skills/learnedSkillsData.js +2 -0
  6. package/dist/pi-webui-plugins/workspace-learned-skills/learnedSkillsPanelElement.js +420 -0
  7. package/dist/pi-webui-plugins/workspace-learned-skills/learnedSkillsPanelLayout.js +68 -0
  8. package/dist/pi-webui-plugins/workspace-learned-skills/package.json +9 -0
  9. package/dist/pi-webui-plugins/workspace-learned-skills/pi-webui-plugin.js +48 -0
  10. package/dist/server/app.js +31 -3
  11. package/dist/server/app.js.map +1 -1
  12. package/dist/server/learnedSkills/learnedSkillCatalog.js +66 -0
  13. package/dist/server/learnedSkills/learnedSkillCatalog.js.map +1 -0
  14. package/dist/server/learnedSkills/learnedSkillProvider.js +2 -0
  15. package/dist/server/learnedSkills/learnedSkillProvider.js.map +1 -0
  16. package/dist/server/learnedSkills/learnedSkillsRoutes.js +25 -0
  17. package/dist/server/learnedSkills/learnedSkillsRoutes.js.map +1 -0
  18. package/dist/server/learnedSkills/piHermesLearnedSkillProvider.js +123 -0
  19. package/dist/server/learnedSkills/piHermesLearnedSkillProvider.js.map +1 -0
  20. package/dist/server/learnedSkills/skillDocumentParser.js +42 -0
  21. package/dist/server/learnedSkills/skillDocumentParser.js.map +1 -0
  22. package/dist/server/memory/piHermesMemoryProvider.js +9 -7
  23. package/dist/server/memory/piHermesMemoryProvider.js.map +1 -1
  24. package/dist/server/piHermes/projectIdentity.js +103 -0
  25. package/dist/server/piHermes/projectIdentity.js.map +1 -0
  26. package/dist/server/projects/projectService.js +21 -2
  27. package/dist/server/projects/projectService.js.map +1 -1
  28. package/dist/server/sessiond.js +30 -7
  29. package/dist/server/sessiond.js.map +1 -1
  30. package/dist/server/sessions/piSessionManagerGateway.js +17 -12
  31. package/dist/server/sessions/piSessionManagerGateway.js.map +1 -1
  32. package/dist/server/storage/projectStore.js +152 -26
  33. package/dist/server/storage/projectStore.js.map +1 -1
  34. package/dist/server/usage/projectUsageBuckets.js +43 -0
  35. package/dist/server/usage/projectUsageBuckets.js.map +1 -0
  36. package/dist/server/usage/projectUsageRoutes.js +41 -0
  37. package/dist/server/usage/projectUsageRoutes.js.map +1 -0
  38. package/dist/server/usage/projectUsageService.js +85 -0
  39. package/dist/server/usage/projectUsageService.js.map +1 -0
  40. package/dist/server/usage/projectUsageSessionHeaders.js +41 -0
  41. package/dist/server/usage/projectUsageSessionHeaders.js.map +1 -0
  42. package/dist/server/usage/sessionUsageCacheStore.js +143 -0
  43. package/dist/server/usage/sessionUsageCacheStore.js.map +1 -0
  44. package/dist/server/usage/sessionUsageScanner.js +150 -0
  45. package/dist/server/usage/sessionUsageScanner.js.map +1 -0
  46. package/dist/shared/apiTypes.d.ts +46 -0
  47. package/dist/shared/apiTypes.js +1 -0
  48. package/dist/shared/apiTypes.js.map +1 -1
  49. package/dist/shared/capabilities.js +2 -0
  50. package/dist/shared/capabilities.js.map +1 -1
  51. package/dist/shared/federatedRoutes.js +3 -0
  52. package/dist/shared/federatedRoutes.js.map +1 -1
  53. package/docs/plugins.md +20 -1
  54. package/package.json +1 -1
@@ -0,0 +1,85 @@
1
+ import { assignBuckets } from "./projectUsageBuckets.js";
2
+ import { addUsageTotals, emptyUsageTotals } from "./sessionUsageScanner.js";
3
+ function emptyBucketTotals() {
4
+ return { ...emptyUsageTotals(), sessionCount: 0 };
5
+ }
6
+ function addToBucket(bucket, totals) {
7
+ return { ...addUsageTotals(bucket, totals), sessionCount: bucket.sessionCount + 1 };
8
+ }
9
+ /**
10
+ * Assemble a project's usage report on demand.
11
+ *
12
+ * No project-level total is persisted, because bucket assignment depends on
13
+ * scope resolved at request time: which worktrees exist now and which sessions
14
+ * are archived now. Only per-session totals are cached.
15
+ */
16
+ export class ProjectUsageService {
17
+ constructor(options) {
18
+ this.options = options;
19
+ this.inFlight = new Map();
20
+ }
21
+ async report(scope) {
22
+ const existing = this.inFlight.get(scope.projectPath);
23
+ if (existing !== undefined)
24
+ return existing;
25
+ const run = this.buildReport(scope).finally(() => {
26
+ this.inFlight.delete(scope.projectPath);
27
+ });
28
+ this.inFlight.set(scope.projectPath, run);
29
+ return run;
30
+ }
31
+ async count(scope) {
32
+ return (await this.collectInScopeCandidates(scope)).length;
33
+ }
34
+ async buildReport(scope) {
35
+ try {
36
+ const candidates = await this.collectInScopeCandidates(scope);
37
+ const buckets = {
38
+ live: emptyBucketTotals(),
39
+ retired: emptyBucketTotals(),
40
+ archived: emptyBucketTotals(),
41
+ };
42
+ let total = emptyBucketTotals();
43
+ // Sequential on purpose: interleaving many multi-megabyte session streams
44
+ // multiplies memory and lengthens event-loop turns for live sessions.
45
+ for (const candidate of candidates) {
46
+ const totals = await this.options.cache.totalsFor(candidate.sessionId, candidate.path);
47
+ buckets[candidate.bucket] = addToBucket(buckets[candidate.bucket], totals);
48
+ total = addToBucket(total, totals);
49
+ }
50
+ const now = this.options.now?.() ?? new Date();
51
+ return { projectPath: scope.projectPath, buckets, total, generatedAt: now.toISOString() };
52
+ }
53
+ finally {
54
+ await this.options.cache.flush();
55
+ }
56
+ }
57
+ async collectInScopeCandidates(scope) {
58
+ const inputs = await this.collectCandidates(scope);
59
+ return assignBuckets(inputs, { projectPath: scope.projectPath, liveCwds: scope.liveCwds });
60
+ }
61
+ // Candidates are enumerated from session headers only, and one directory at a
62
+ // time, so neither the report nor the count reads whole session files or opens
63
+ // more than one stream before the sequential totals scan.
64
+ async collectCandidates(scope) {
65
+ const archived = await this.options.candidates.listArchived();
66
+ const history = await this.options.candidates.listAllHeaders();
67
+ const live = [];
68
+ for (const cwd of scope.liveCwds) {
69
+ live.push(...await this.options.candidates.listHeadersForCwd(cwd));
70
+ }
71
+ // Archived first so a session that also still appears in the Pi store keeps
72
+ // its archive classification and archive file path.
73
+ return [
74
+ ...archived.map((record) => ({
75
+ sessionId: record.sessionId,
76
+ path: record.archivePath ?? record.originalPath ?? "",
77
+ cwd: record.cwd,
78
+ archived: true,
79
+ })),
80
+ ...live,
81
+ ...history,
82
+ ];
83
+ }
84
+ }
85
+ //# sourceMappingURL=projectUsageService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectUsageService.js","sourceRoot":"","sources":["../../../src/server/usage/projectUsageService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import { canonicalizeStoredCwd, cwdPathsEqual } from "../workingDirectory.js";
2
+ import { listDefaultPiSessionDirs, listSessionFilesInDir, SessionDirResolver, } from "../sessions/piSessionManagerGateway.js";
3
+ import { readSessionHeader } from "./sessionUsageScanner.js";
4
+ export async function listProjectUsageSessionHeadersInDir(sessionDir, readHeader = readSessionHeader) {
5
+ const candidates = [];
6
+ for (const path of await listSessionFilesInDir(sessionDir)) {
7
+ const header = await readHeader(path);
8
+ if (header?.cwd === undefined)
9
+ continue;
10
+ candidates.push({ sessionId: header.id, path, cwd: canonicalizeStoredCwd(header.cwd) });
11
+ }
12
+ return candidates;
13
+ }
14
+ export class ProjectUsageSessionHeaderSource {
15
+ constructor(options, readHeader = readSessionHeader) {
16
+ this.readHeader = readHeader;
17
+ this.resolver = new SessionDirResolver(options);
18
+ }
19
+ async listForCwd(cwd) {
20
+ const candidates = await listProjectUsageSessionHeadersInDir(this.resolver.resolve(cwd).sessionDir, this.readHeader);
21
+ return candidates.filter((candidate) => candidate.cwd !== "" && cwdPathsEqual(candidate.cwd, cwd));
22
+ }
23
+ async listAll() {
24
+ const candidates = [];
25
+ for (const sessionDir of await listDefaultPiSessionDirs(this.resolver.defaultSessionsRoot())) {
26
+ candidates.push(...await listProjectUsageSessionHeadersInDir(sessionDir, this.readHeader));
27
+ }
28
+ const envSessionDir = this.resolver.globalEnvSessionDir();
29
+ if (envSessionDir !== undefined) {
30
+ candidates.push(...await listProjectUsageSessionHeadersInDir(envSessionDir, this.readHeader));
31
+ }
32
+ return uniqueCandidatesByPath(candidates);
33
+ }
34
+ }
35
+ function uniqueCandidatesByPath(candidates) {
36
+ const byPath = new Map();
37
+ for (const candidate of candidates)
38
+ byPath.set(candidate.path, candidate);
39
+ return [...byPath.values()];
40
+ }
41
+ //# sourceMappingURL=projectUsageSessionHeaders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectUsageSessionHeaders.js","sourceRoot":"","sources":["../../../src/server/usage/projectUsageSessionHeaders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,kBAAkB,GAEnB,MAAM,wCAAwC,CAAC;AAEhD,OAAO,EAAE,iBAAiB,EAA6B,MAAM,0BAA0B,CAAC;AAIxF,MAAM,CAAC,KAAK,UAAU,mCAAmC,CACvD,UAAkB,EAClB,aAAkC,iBAAiB;IAEnD,MAAM,UAAU,GAAgC,EAAE,CAAC;IACnD,KAAK,MAAM,IAAI,IAAI,MAAM,qBAAqB,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3D,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,MAAM,EAAE,GAAG,KAAK,SAAS;YAAE,SAAS;QACxC,UAAU,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,qBAAqB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC1F,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,OAAO,+BAA+B;IAG1C,YACE,OAAkC,EACjB,aAAkC,iBAAiB;QAAnD,eAAU,GAAV,UAAU,CAAyC;QAEpE,IAAI,CAAC,QAAQ,GAAG,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAW;QAC1B,MAAM,UAAU,GAAG,MAAM,mCAAmC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACrH,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,KAAK,EAAE,IAAI,aAAa,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACrG,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,UAAU,GAAgC,EAAE,CAAC;QACnD,KAAK,MAAM,UAAU,IAAI,MAAM,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC,EAAE,CAAC;YAC7F,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,mCAAmC,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAC7F,CAAC;QACD,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC;QAC1D,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,mCAAmC,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAChG,CAAC;QACD,OAAO,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC;CACF;AAED,SAAS,sBAAsB,CAAC,UAAgD;IAC9E,MAAM,MAAM,GAAG,IAAI,GAAG,EAAqC,CAAC;IAC5D,KAAK,MAAM,SAAS,IAAI,UAAU;QAAE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,143 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { mkdir, readFile, rename, stat, unlink, writeFile } from "node:fs/promises";
3
+ import { basename, dirname, join } from "node:path";
4
+ import { piWebUiDataDir } from "../../config.js";
5
+ import { addUsageTotals, emptyUsageTotals, readSessionHeaderId, scanSessionUsage } from "./sessionUsageScanner.js";
6
+ export function defaultSessionUsageCachePath(env = process.env, cwd = process.cwd()) {
7
+ return join(piWebUiDataDir(env, cwd), "usage-cache.json");
8
+ }
9
+ function isRecord(value) {
10
+ return typeof value === "object" && value !== null;
11
+ }
12
+ function numberAt(record, key) {
13
+ const value = record[key];
14
+ return typeof value === "number" && Number.isFinite(value) ? value : 0;
15
+ }
16
+ function parseEntry(value) {
17
+ if (!isRecord(value))
18
+ return undefined;
19
+ const headerId = value["headerId"];
20
+ return {
21
+ input: numberAt(value, "input"),
22
+ output: numberAt(value, "output"),
23
+ cacheRead: numberAt(value, "cacheRead"),
24
+ cacheWrite: numberAt(value, "cacheWrite"),
25
+ cost: numberAt(value, "cost"),
26
+ size: numberAt(value, "size"),
27
+ mtimeMs: numberAt(value, "mtimeMs"),
28
+ bytesScanned: numberAt(value, "bytesScanned"),
29
+ ...(typeof headerId === "string" ? { headerId } : {}),
30
+ };
31
+ }
32
+ function parseCacheFile(value) {
33
+ if (!isRecord(value) || !isRecord(value["sessions"]))
34
+ return { sessions: {} };
35
+ const sessions = {};
36
+ for (const [sessionId, entry] of Object.entries(value["sessions"])) {
37
+ const parsed = parseEntry(entry);
38
+ if (parsed !== undefined)
39
+ sessions[sessionId] = parsed;
40
+ }
41
+ return { sessions };
42
+ }
43
+ function totalsOf(entry) {
44
+ return { input: entry.input, output: entry.output, cacheRead: entry.cacheRead, cacheWrite: entry.cacheWrite, cost: entry.cost };
45
+ }
46
+ /**
47
+ * Per-session usage totals keyed by session UUID.
48
+ *
49
+ * Purely derived state: any entry may be discarded and rebuilt from the session
50
+ * file, so a corrupt or missing cache file is treated as empty rather than an
51
+ * error. Keying on UUID rather than path matters because archiving moves a
52
+ * session file into the PI WEBUI archive directory without changing its id.
53
+ */
54
+ export class SessionUsageCacheStore {
55
+ constructor(filePath = defaultSessionUsageCachePath(), scan = scanSessionUsage) {
56
+ this.filePath = filePath;
57
+ this.scan = scan;
58
+ this.dirty = false;
59
+ this.operationQueue = Promise.resolve();
60
+ }
61
+ async totalsFor(sessionId, path) {
62
+ return this.exclusive(async () => {
63
+ const data = await this.read();
64
+ let fileStats;
65
+ try {
66
+ const stats = await stat(path);
67
+ fileStats = { size: stats.size, mtimeMs: stats.mtimeMs };
68
+ }
69
+ catch {
70
+ return emptyUsageTotals();
71
+ }
72
+ const existing = data.sessions[sessionId];
73
+ if (existing?.size === fileStats.size && existing.mtimeMs === fileStats.mtimeMs) {
74
+ return totalsOf(existing);
75
+ }
76
+ const headerId = await readSessionHeaderId(path);
77
+ const canResume = existing !== undefined
78
+ && fileStats.size > existing.size
79
+ && existing.bytesScanned <= fileStats.size
80
+ && existing.headerId === headerId;
81
+ const startOffset = canResume ? existing.bytesScanned : 0;
82
+ const base = canResume ? totalsOf(existing) : emptyUsageTotals();
83
+ const scan = await this.scan(path, startOffset);
84
+ const totals = addUsageTotals(base, scan.totals);
85
+ data.sessions[sessionId] = {
86
+ ...totals,
87
+ size: fileStats.size,
88
+ mtimeMs: fileStats.mtimeMs,
89
+ bytesScanned: scan.bytesScanned,
90
+ ...(headerId === undefined ? {} : { headerId }),
91
+ };
92
+ this.dirty = true;
93
+ return totals;
94
+ });
95
+ }
96
+ async snapshot() {
97
+ return this.exclusive(async () => ({ ...(await this.read()).sessions }));
98
+ }
99
+ async flush() {
100
+ await this.exclusive(async () => {
101
+ if (!this.dirty || this.loaded === undefined)
102
+ return;
103
+ await this.write(this.loaded);
104
+ this.dirty = false;
105
+ });
106
+ }
107
+ async exclusive(operation) {
108
+ const previous = this.operationQueue;
109
+ let release = () => undefined;
110
+ this.operationQueue = new Promise((resolve) => { release = resolve; });
111
+ await previous.catch(() => undefined);
112
+ try {
113
+ return await operation();
114
+ }
115
+ finally {
116
+ release();
117
+ }
118
+ }
119
+ async read() {
120
+ if (this.loaded !== undefined)
121
+ return this.loaded;
122
+ try {
123
+ this.loaded = parseCacheFile(JSON.parse(await readFile(this.filePath, "utf8")));
124
+ }
125
+ catch {
126
+ this.loaded = { sessions: {} };
127
+ }
128
+ return this.loaded;
129
+ }
130
+ async write(data) {
131
+ await mkdir(dirname(this.filePath), { recursive: true });
132
+ const tempPath = join(dirname(this.filePath), `.${basename(this.filePath)}.${String(process.pid)}.${Date.now().toString()}.${randomUUID()}.tmp`);
133
+ try {
134
+ await writeFile(tempPath, `${JSON.stringify(data, null, 2)}\n`, "utf8");
135
+ await rename(tempPath, this.filePath);
136
+ }
137
+ catch (error) {
138
+ await unlink(tempPath).catch(() => undefined);
139
+ throw error;
140
+ }
141
+ }
142
+ }
143
+ //# sourceMappingURL=sessionUsageCacheStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionUsageCacheStore.js","sourceRoot":"","sources":["../../../src/server/usage/sessionUsageCacheStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,EAAqC,MAAM,0BAA0B,CAAC;AAgBtJ,MAAM,UAAU,4BAA4B,CAAC,MAAyB,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACpG,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,kBAAkB,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC;AAED,SAAS,QAAQ,CAAC,MAA+B,EAAE,GAAW;IAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACvC,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;IACnC,OAAO;QACL,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;QAC/B,MAAM,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;QACjC,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;QACvC,UAAU,EAAE,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;QACzC,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAC7B,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAC7B,OAAO,EAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;QACnC,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;QAC7C,GAAG,CAAC,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtD,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC9E,MAAM,QAAQ,GAA2C,EAAE,CAAC;IAC5D,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACnE,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,SAAS;YAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;IACzD,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,CAAC;AACtB,CAAC;AAED,SAAS,QAAQ,CAAC,KAA6B;IAC7C,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;AAClI,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,sBAAsB;IAKjC,YACmB,WAAW,4BAA4B,EAAE,EACzC,OAA4B,gBAAgB;QAD5C,aAAQ,GAAR,QAAQ,CAAiC;QACzC,SAAI,GAAJ,IAAI,CAAwC;QALvD,UAAK,GAAG,KAAK,CAAC;QACd,mBAAc,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IAKvD,CAAC;IAEJ,KAAK,CAAC,SAAS,CAAC,SAAiB,EAAE,IAAY;QAC7C,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;YAC/B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAC/B,IAAI,SAA4C,CAAC;YACjD,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC/B,SAAS,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;YAC3D,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,gBAAgB,EAAE,CAAC;YAC5B,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAC1C,IAAI,QAAQ,EAAE,IAAI,KAAK,SAAS,CAAC,IAAI,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC;gBAChF,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC5B,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;YACjD,MAAM,SAAS,GACb,QAAQ,KAAK,SAAS;mBACnB,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI;mBAC9B,QAAQ,CAAC,YAAY,IAAI,SAAS,CAAC,IAAI;mBACvC,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC;YAEpC,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1D,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACjE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAChD,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAEjD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG;gBACzB,GAAG,MAAM;gBACT,IAAI,EAAE,SAAS,CAAC,IAAI;gBACpB,OAAO,EAAE,SAAS,CAAC,OAAO;gBAC1B,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;aAChD,CAAC;YACF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;YAC9B,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;gBAAE,OAAO;YACrD,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,SAAS,CAAI,SAA2B;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC;QACrC,IAAI,OAAO,GAAG,GAAS,EAAE,CAAC,SAAS,CAAC;QACpC,IAAI,CAAC,cAAc,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,MAAM,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACtC,IAAI,CAAC;YACH,OAAO,MAAM,SAAS,EAAE,CAAC;QAC3B,CAAC;gBAAS,CAAC;YACT,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,IAAI;QAChB,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC;QAClD,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QAClF,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,MAAM,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACjC,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,KAAK,CAAC,IAA2B;QAC7C,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,IAAI,UAAU,EAAE,MAAM,CAAC,CAAC;QACjJ,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACxE,MAAM,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAC9C,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,150 @@
1
+ import { createReadStream } from "node:fs";
2
+ import { createInterface } from "node:readline";
3
+ /** Entry types whose own `usage` counts, matching Pi's `getSessionStats`. */
4
+ const USAGE_ENTRY_TYPES = new Set(["branch_summary", "compaction"]);
5
+ /** Message roles whose `usage` counts. User messages carry none. */
6
+ const USAGE_MESSAGE_ROLES = new Set(["assistant", "toolResult"]);
7
+ const SESSION_HEADER_READ_BYTES = 4 * 1024;
8
+ export function emptyUsageTotals() {
9
+ return { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, cost: 0 };
10
+ }
11
+ export function addUsageTotals(left, right) {
12
+ return {
13
+ input: left.input + right.input,
14
+ output: left.output + right.output,
15
+ cacheRead: left.cacheRead + right.cacheRead,
16
+ cacheWrite: left.cacheWrite + right.cacheWrite,
17
+ cost: left.cost + right.cost,
18
+ };
19
+ }
20
+ function isRecord(value) {
21
+ return typeof value === "object" && value !== null;
22
+ }
23
+ function numberAt(record, key) {
24
+ const value = record[key];
25
+ return typeof value === "number" && Number.isFinite(value) ? value : 0;
26
+ }
27
+ function costOf(usage) {
28
+ const cost = usage["cost"];
29
+ if (typeof cost === "number" && Number.isFinite(cost))
30
+ return cost;
31
+ if (isRecord(cost))
32
+ return numberAt(cost, "total");
33
+ return 0;
34
+ }
35
+ function totalsFromUsage(usage) {
36
+ return {
37
+ input: numberAt(usage, "input"),
38
+ output: numberAt(usage, "output"),
39
+ cacheRead: numberAt(usage, "cacheRead"),
40
+ cacheWrite: numberAt(usage, "cacheWrite"),
41
+ cost: costOf(usage),
42
+ };
43
+ }
44
+ /**
45
+ * Extract the usage contribution of one JSONL line, or undefined when the line
46
+ * carries none. Callers prefilter on the `"usage"` substring; this function
47
+ * still tolerates any line so it is safe to call directly in tests.
48
+ */
49
+ export function usageTotalsFromLine(line) {
50
+ let parsed;
51
+ try {
52
+ parsed = JSON.parse(line);
53
+ }
54
+ catch {
55
+ return undefined;
56
+ }
57
+ if (!isRecord(parsed))
58
+ return undefined;
59
+ const type = parsed["type"];
60
+ if (typeof type === "string" && USAGE_ENTRY_TYPES.has(type) && isRecord(parsed["usage"])) {
61
+ return totalsFromUsage(parsed["usage"]);
62
+ }
63
+ if (type !== "message")
64
+ return undefined;
65
+ const message = parsed["message"];
66
+ if (!isRecord(message))
67
+ return undefined;
68
+ const role = message["role"];
69
+ if (typeof role !== "string" || !USAGE_MESSAGE_ROLES.has(role))
70
+ return undefined;
71
+ const usage = message["usage"];
72
+ if (!isRecord(usage))
73
+ return undefined;
74
+ return totalsFromUsage(usage);
75
+ }
76
+ /** Read a session file's header line without parsing the body. */
77
+ export async function readSessionHeader(path) {
78
+ try {
79
+ const input = createReadStream(path, {
80
+ encoding: "utf8",
81
+ highWaterMark: SESSION_HEADER_READ_BYTES,
82
+ });
83
+ try {
84
+ const lines = createInterface({ input, crlfDelay: Infinity });
85
+ try {
86
+ for await (const line of lines) {
87
+ const parsed = JSON.parse(line);
88
+ if (!isRecord(parsed) || parsed["type"] !== "session")
89
+ return undefined;
90
+ const id = parsed["id"];
91
+ if (typeof id !== "string")
92
+ return undefined;
93
+ const cwd = parsed["cwd"];
94
+ return { id, ...(typeof cwd === "string" ? { cwd } : {}) };
95
+ }
96
+ return undefined;
97
+ }
98
+ finally {
99
+ lines.close();
100
+ }
101
+ }
102
+ finally {
103
+ input.destroy();
104
+ }
105
+ }
106
+ catch {
107
+ return undefined;
108
+ }
109
+ }
110
+ /** Read the `id` from a session file's header line without parsing the body. */
111
+ export async function readSessionHeaderId(path) {
112
+ return (await readSessionHeader(path))?.id;
113
+ }
114
+ /**
115
+ * Stream a session file from `startOffset` and sum its usage.
116
+ *
117
+ * Only complete newline-terminated lines are counted, and `bytesScanned`
118
+ * advances only past those lines, so a session being appended to concurrently
119
+ * resumes cleanly on the next pass instead of losing or double-counting a
120
+ * partially written tail. Reading whole files is not an option: sessions here
121
+ * exceed 30 MB.
122
+ */
123
+ export async function scanSessionUsage(path, startOffset) {
124
+ let totals = emptyUsageTotals();
125
+ let bytesScanned = startOffset;
126
+ try {
127
+ const stream = createReadStream(path, { encoding: "utf8", start: startOffset });
128
+ let buffered = "";
129
+ for await (const chunk of stream) {
130
+ buffered += chunk;
131
+ let newlineIndex = buffered.indexOf("\n");
132
+ while (newlineIndex !== -1) {
133
+ const line = buffered.slice(0, newlineIndex);
134
+ bytesScanned += Buffer.byteLength(line, "utf8") + 1;
135
+ if (line.includes("\"usage\"")) {
136
+ const lineTotals = usageTotalsFromLine(line);
137
+ if (lineTotals !== undefined)
138
+ totals = addUsageTotals(totals, lineTotals);
139
+ }
140
+ buffered = buffered.slice(newlineIndex + 1);
141
+ newlineIndex = buffered.indexOf("\n");
142
+ }
143
+ }
144
+ }
145
+ catch {
146
+ return { totals: emptyUsageTotals(), bytesScanned: startOffset === 0 ? 0 : startOffset };
147
+ }
148
+ return { totals, bytesScanned };
149
+ }
150
+ //# sourceMappingURL=sessionUsageScanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionUsageScanner.js","sourceRoot":"","sources":["../../../src/server/usage/sessionUsageScanner.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,7 @@ export declare const PI_WEBUI_CAPABILITIES: {
23
23
  readonly sessionsModelPolicyDefaults: "sessions.modelPolicyDefaults";
24
24
  readonly sessionsModelPolicyStarterSelection: "sessions.modelPolicyStarterSelection";
25
25
  readonly sessionsReorder: "sessions.reorder";
26
+ readonly projectUsageStatistics: "project.usageStatistics";
26
27
  };
27
28
  export type PiWebUiCapability = typeof PI_WEBUI_CAPABILITIES[keyof typeof PI_WEBUI_CAPABILITIES];
28
29
  export interface Machine {
@@ -421,6 +422,34 @@ export interface Project {
421
422
  name: string;
422
423
  path: string;
423
424
  createdAt: string;
425
+ /** True when the user has pinned this project so it sorts above unpinned projects. */
426
+ pinned?: boolean;
427
+ }
428
+ export interface ProjectUsageTotals {
429
+ input: number;
430
+ output: number;
431
+ cacheRead: number;
432
+ cacheWrite: number;
433
+ cost: number;
434
+ sessionCount: number;
435
+ }
436
+ export interface ProjectUsageResponse {
437
+ projectPath: string;
438
+ buckets: {
439
+ live: ProjectUsageTotals;
440
+ retired: ProjectUsageTotals;
441
+ archived: ProjectUsageTotals;
442
+ };
443
+ total: ProjectUsageTotals;
444
+ generatedAt: string;
445
+ }
446
+ export interface ProjectUsageRequest {
447
+ projectPath: string;
448
+ liveCwds: string[];
449
+ }
450
+ export type ProjectUsageCountRequest = ProjectUsageRequest;
451
+ export interface ProjectUsageCountResponse {
452
+ sessionCount: number;
424
453
  }
425
454
  export interface WorkspaceEffectiveConfig {
426
455
  uploads?: PiWebUiUploadsConfig;
@@ -1426,6 +1455,23 @@ export type MemorySnapshotResponse = {
1426
1455
  export interface MemoryEntriesResponse {
1427
1456
  entries: MemoryEntry[];
1428
1457
  }
1458
+ export interface LearnedSkill {
1459
+ id: string;
1460
+ name: string;
1461
+ description: string;
1462
+ filePath: string;
1463
+ version?: number;
1464
+ created?: string;
1465
+ updated?: string;
1466
+ }
1467
+ export type LearnedSkillsSnapshotResponse = {
1468
+ kind: "unavailable";
1469
+ } | {
1470
+ kind: "data";
1471
+ globalSkills: LearnedSkill[];
1472
+ projectSkills: LearnedSkill[];
1473
+ projectUnavailableMessage?: string;
1474
+ };
1429
1475
  export interface SystemInfoResponse {
1430
1476
  generatedAt: string;
1431
1477
  os: SystemOsInfo;
@@ -20,6 +20,7 @@ export const PI_WEBUI_CAPABILITIES = {
20
20
  sessionsModelPolicyDefaults: "sessions.modelPolicyDefaults",
21
21
  sessionsModelPolicyStarterSelection: "sessions.modelPolicyStarterSelection",
22
22
  sessionsReorder: "sessions.reorder",
23
+ projectUsageStatistics: "project.usageStatistics",
23
24
  };
24
25
  export const MODEL_TIERS = ["economy", "fast", "standard", "advanced", "capable", "frontier"];
25
26
  export const UTILITY_MODEL_SLOTS = ["lightweight", "context"];
@@ -1 +1 @@
1
- {"version":3,"file":"apiTypes.js","sourceRoot":"","sources":["../../src/shared/apiTypes.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,sBAAsB,EAAE,yBAAyB;IACjD,qBAAqB,EAAE,wBAAwB;IAC/C,eAAe,EAAE,kBAAkB;IACnC,cAAc,EAAE,iBAAiB;IACjC,kBAAkB,EAAE,qBAAqB;IACzC,sBAAsB,EAAE,yBAAyB;IACjD,oBAAoB,EAAE,uBAAuB;IAC7C,sBAAsB,EAAE,yBAAyB;IACjD,qBAAqB,EAAE,wBAAwB;IAC/C,cAAc,EAAE,iBAAiB;IACjC,iBAAiB,EAAE,oBAAoB;IACvC,wBAAwB,EAAE,2BAA2B;IACrD,gBAAgB,EAAE,mBAAmB;IACrC,uBAAuB,EAAE,0BAA0B;IACnD,kBAAkB,EAAE,uBAAuB;IAC3C,iBAAiB,EAAE,qBAAqB;IACxC,oBAAoB,EAAE,wBAAwB;IAC9C,mBAAmB,EAAE,sBAAsB;IAC3C,2BAA2B,EAAE,8BAA8B;IAC3D,mCAAmC,EAAE,sCAAsC;IAC3E,eAAe,EAAE,kBAAkB;CAC3B,CAAC;AAsDX,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAU,CAAC;AAQvG,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,aAAa,EAAE,SAAS,CAAU,CAAC;AAicvE,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAC3C,MAAM,CAAC,MAAM,qCAAqC,GAAG,GAAG,CAAC;AACzD,MAAM,CAAC,MAAM,8BAA8B,GAAG,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,CAAC,MAAM,sCAAsC,GAAG,EAAE,GAAG,IAAI,CAAC;AAkBhE,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAC1C,MAAM,CAAC,MAAM,oCAAoC,GAAG,GAAG,CAAC;AACxD,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,GAAG,IAAI,CAAC;AACvD,MAAM,CAAC,MAAM,oCAAoC,GAAG,GAAG,CAAC;AACxD,MAAM,CAAC,MAAM,sCAAsC,GAAG,EAAE,CAAC;AAqCzD,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAC9C,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,GAAG,IAAI,CAAC;AAiwB3D,MAAM,CAAC,MAAM,2CAA2C,GAAG,MAAM,CAAC"}
1
+ {"version":3,"file":"apiTypes.js","sourceRoot":"","sources":["../../src/shared/apiTypes.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,sBAAsB,EAAE,yBAAyB;IACjD,qBAAqB,EAAE,wBAAwB;IAC/C,eAAe,EAAE,kBAAkB;IACnC,cAAc,EAAE,iBAAiB;IACjC,kBAAkB,EAAE,qBAAqB;IACzC,sBAAsB,EAAE,yBAAyB;IACjD,oBAAoB,EAAE,uBAAuB;IAC7C,sBAAsB,EAAE,yBAAyB;IACjD,qBAAqB,EAAE,wBAAwB;IAC/C,cAAc,EAAE,iBAAiB;IACjC,iBAAiB,EAAE,oBAAoB;IACvC,wBAAwB,EAAE,2BAA2B;IACrD,gBAAgB,EAAE,mBAAmB;IACrC,uBAAuB,EAAE,0BAA0B;IACnD,kBAAkB,EAAE,uBAAuB;IAC3C,iBAAiB,EAAE,qBAAqB;IACxC,oBAAoB,EAAE,wBAAwB;IAC9C,mBAAmB,EAAE,sBAAsB;IAC3C,2BAA2B,EAAE,8BAA8B;IAC3D,mCAAmC,EAAE,sCAAsC;IAC3E,eAAe,EAAE,kBAAkB;IACnC,sBAAsB,EAAE,yBAAyB;CACzC,CAAC;AAsDX,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAU,CAAC;AAQvG,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,aAAa,EAAE,SAAS,CAAU,CAAC;AAkevE,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAC3C,MAAM,CAAC,MAAM,qCAAqC,GAAG,GAAG,CAAC;AACzD,MAAM,CAAC,MAAM,8BAA8B,GAAG,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,CAAC,MAAM,sCAAsC,GAAG,EAAE,GAAG,IAAI,CAAC;AAkBhE,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAC1C,MAAM,CAAC,MAAM,oCAAoC,GAAG,GAAG,CAAC;AACxD,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,GAAG,IAAI,CAAC;AACvD,MAAM,CAAC,MAAM,oCAAoC,GAAG,GAAG,CAAC;AACxD,MAAM,CAAC,MAAM,sCAAsC,GAAG,EAAE,CAAC;AAqCzD,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAC9C,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,GAAG,IAAI,CAAC;AAiwB3D,MAAM,CAAC,MAAM,2CAA2C,GAAG,MAAM,CAAC"}
@@ -43,6 +43,7 @@ export const SESSIOND_RUNTIME_CAPABILITIES = [
43
43
  PI_WEBUI_CAPABILITIES.sessionsModelPolicyDefaults,
44
44
  PI_WEBUI_CAPABILITIES.sessionsModelPolicyStarterSelection,
45
45
  PI_WEBUI_CAPABILITIES.sessionsReorder,
46
+ PI_WEBUI_CAPABILITIES.projectUsageStatistics,
46
47
  ];
47
48
  const EFFECTIVE_CAPABILITY_REQUIREMENTS = {
48
49
  [PI_WEBUI_CAPABILITIES.sessionsDeleteArchived]: ["web", "sessiond"],
@@ -66,6 +67,7 @@ const EFFECTIVE_CAPABILITY_REQUIREMENTS = {
66
67
  [PI_WEBUI_CAPABILITIES.sessionsModelPolicyDefaults]: ["web", "sessiond"],
67
68
  [PI_WEBUI_CAPABILITIES.sessionsModelPolicyStarterSelection]: ["web", "sessiond"],
68
69
  [PI_WEBUI_CAPABILITIES.sessionsReorder]: ["web", "sessiond"],
70
+ [PI_WEBUI_CAPABILITIES.projectUsageStatistics]: ["sessiond"],
69
71
  };
70
72
  export function isPiWebUiCapability(value) {
71
73
  return typeof value === "string" && knownPiWebUiCapabilities.has(value);
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/shared/capabilities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/shared/capabilities.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@ export const FEDERATED_HTTP_ROUTES = [
19
19
  { method: "GET", path: "/utility-models" },
20
20
  { method: "PUT", path: "/utility-models" },
21
21
  { method: "GET", path: "/agent-memory/snapshot" },
22
+ { method: "GET", path: "/agent-skills/snapshot" },
22
23
  { method: "GET", path: "/skills" },
23
24
  { method: "PATCH", path: "/skills" },
24
25
  { method: "POST", path: "/skills/search", timeoutMs: SKILLS_OPERATION_PROXY_TIMEOUT_MS },
@@ -35,6 +36,8 @@ export const FEDERATED_HTTP_ROUTES = [
35
36
  { method: "GET", path: "/projects" },
36
37
  { method: "POST", path: "/projects" },
37
38
  { method: "DELETE", path: "/projects/:projectId" },
39
+ { method: "POST", path: "/projects/:projectId/pin" },
40
+ { method: "POST", path: "/projects/:projectId/unpin" },
38
41
  { method: "GET", path: "/project-directories" },
39
42
  { method: "GET", path: "/projects/:projectId/workspaces" },
40
43
  { method: "DELETE", path: "/projects/:projectId/workspaces/:workspaceId" },
@@ -1 +1 @@
1
- {"version":3,"file":"federatedRoutes.js","sourceRoot":"","sources":["../../src/shared/federatedRoutes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"federatedRoutes.js","sourceRoot":"","sources":["../../src/shared/federatedRoutes.ts"],"names":[],"mappings":"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"}