@ashx-j/lunr 0.2.27 → 0.2.28
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 +10 -1
- package/dist/builtin-extensions/narumiruna-pi-goal/src/accounting.d.ts.map +1 -1
- package/dist/builtin-extensions/narumiruna-pi-goal/src/accounting.js +5 -2
- package/dist/builtin-extensions/narumiruna-pi-goal/src/accounting.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/chain-root-attachment.d.ts +4 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/chain-root-attachment.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/chain-root-attachment.js +2 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/background/chain-root-attachment.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.d.ts +5 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.js +2 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.d.ts +5 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.js +68 -40
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.d.ts +0 -3
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js +28 -4
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js +1 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/session-tokens.d.ts +7 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/session-tokens.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/session-tokens.js +70 -38
- package/dist/builtin-extensions/pi-subagents/src/shared/session-tokens.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts +9 -0
- package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/types.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js +13 -62
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render.js +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render.js.map +1 -1
- package/dist/builtin-extensions/pi-tps.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-tps.js +10 -2
- package/dist/builtin-extensions/pi-tps.js.map +1 -1
- package/dist/catalog/models.json +1 -1
- package/dist/catalog/providers/google-vertex.json +1 -1
- package/dist/catalog/providers/google.json +1 -1
- package/dist/catalog/publication.json +3 -3
- package/dist/core/agent-session.d.ts +6 -15
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +35 -50
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/cache-stats.d.ts +1 -1
- package/dist/core/cache-stats.d.ts.map +1 -1
- package/dist/core/cache-stats.js +1 -1
- package/dist/core/cache-stats.js.map +1 -1
- package/dist/core/compaction/branch-summarization.d.ts +2 -1
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
- package/dist/core/compaction/branch-summarization.js +1 -0
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts +5 -11
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +38 -92
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/context-breakdown.d.ts +2 -2
- package/dist/core/context-breakdown.d.ts.map +1 -1
- package/dist/core/context-breakdown.js +22 -20
- package/dist/core/context-breakdown.js.map +1 -1
- package/dist/core/extensions/types.d.ts +3 -1
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/session-manager.d.ts +5 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +16 -1
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/usage-accounting.d.ts +47 -0
- package/dist/core/usage-accounting.d.ts.map +1 -0
- package/dist/core/usage-accounting.js +205 -0
- package/dist/core/usage-accounting.js.map +1 -0
- package/dist/core/usage-history.d.ts +1 -18
- package/dist/core/usage-history.d.ts.map +1 -1
- package/dist/core/usage-history.js +46 -114
- package/dist/core/usage-history.js.map +1 -1
- package/dist/gateway/mobile-commands.d.ts.map +1 -1
- package/dist/gateway/mobile-commands.js +13 -1
- package/dist/gateway/mobile-commands.js.map +1 -1
- package/dist/modes/interactive/components/context-view.d.ts.map +1 -1
- package/dist/modes/interactive/components/context-view.js +2 -2
- package/dist/modes/interactive/components/context-view.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +8 -12
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/usage-view.d.ts +5 -0
- package/dist/modes/interactive/components/usage-view.d.ts.map +1 -1
- package/dist/modes/interactive/components/usage-view.js +21 -6
- package/dist/modes/interactive/components/usage-view.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +1 -5
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +55 -22
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/node-runtime/{agent-session-services-KDMSPQDY.js → agent-session-services-RTUGP3XR.js} +5 -4
- package/dist/node-runtime/{builtin-extensions-OX6KELNX.js → builtin-extensions-N4EUD6SB.js} +1 -1
- package/dist/node-runtime/{chunk-A2WO6WIN.js → chunk-4QRUZ64T.js} +11 -5
- package/dist/node-runtime/{chunk-ZDJUR45D.js → chunk-BMRXLQWQ.js} +41 -38
- package/dist/node-runtime/{chunk-MQPKUHRN.js → chunk-DFMPRAQQ.js} +8 -8
- package/dist/node-runtime/{chunk-C3P6Q3B2.js → chunk-E5DQGNJI.js} +10 -10
- package/dist/node-runtime/{chunk-FIRA54AC.js → chunk-ICKGAKWX.js} +22 -55
- package/dist/node-runtime/{chunk-JWEVT363.js → chunk-JEK35V2M.js} +14 -8
- package/dist/node-runtime/{chunk-EPR2F3GU.js → chunk-PWHTSQC4.js} +15 -1
- package/dist/node-runtime/{chunk-AYHH7YSD.js → chunk-QT3F6UEV.js} +61 -30
- package/dist/node-runtime/{chunk-JQYNHAKX.js → chunk-RY3FJ6WI.js} +29 -27
- package/dist/node-runtime/{chunk-I2H5QMWW.js → chunk-STMX7W5I.js} +1 -1
- package/dist/node-runtime/chunk-SWWHZ2RI.js +158 -0
- package/dist/node-runtime/{chunk-QNVMKNNN.js → chunk-U3YVZ6UC.js} +4 -4
- package/dist/node-runtime/{command-3HMSY6W2.js → command-YRT7I2BW.js} +1 -1
- package/dist/node-runtime/{commands-OCSSEEWJ.js → commands-2ETOWWRA.js} +5 -5
- package/dist/node-runtime/{export-html-BRWF5AHI.js → export-html-DBQRRMAY.js} +1 -1
- package/dist/node-runtime/{gateway-6623C2U3.js → gateway-V6K2CDWN.js} +9 -9
- package/dist/node-runtime/{goal-AIHEDUYA.js → goal-J7TYMOBK.js} +9 -3
- package/dist/node-runtime/index.js +9 -8
- package/dist/node-runtime/{interactive-mode-FM5DNUSW.js → interactive-mode-ASZ7APYP.js} +7 -6
- package/dist/node-runtime/{lunr-cron-LKVA5CZZ.js → lunr-cron-WD3YH4CR.js} +4 -4
- package/dist/node-runtime/main.js +7 -6
- package/dist/node-runtime/{mobile-commands-XT3NQXLD.js → mobile-commands-ICUXFW5V.js} +2 -2
- package/dist/node-runtime/{pi-subagents-LT3CTO4E.js → pi-subagents-QPU3OXE4.js} +17 -62
- package/dist/node-runtime/rpc-entry.js +7 -6
- package/dist/node-runtime/{session-handoff-LNSPDTKY.js → session-handoff-LYH53ESV.js} +2 -2
- package/dist/node-runtime/{session-manager-YIFIAVGC.js → session-manager-ZJ3N5Q74.js} +1 -1
- package/dist/node-runtime/{subagent-executor-Q5F7DBVM.js → subagent-executor-UI6SHG3X.js} +294 -231
- package/docs/features.md +10 -0
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/install-lock/package-lock.json +24 -24
- package/install-lock/package.json +2 -2
- package/npm-shrinkwrap.json +21 -21
- package/package.json +7 -7
|
@@ -1,3 +1,9 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type AccountedRequest } from "../../../../core/usage-accounting.ts";
|
|
2
|
+
import type { TokenUsage, Usage } from "./types.ts";
|
|
3
|
+
/** Scan all attempts, including older files; stable request IDs prevent fork duplication. */
|
|
4
|
+
export declare function parseSessionRequests(sessionPath: string | undefined): AccountedRequest[];
|
|
5
|
+
export declare function parseSessionUsage(sessionPath: string | undefined): Usage | null;
|
|
6
|
+
export declare function sessionUsageDelta(current: Usage, previous: Usage | null): Usage;
|
|
7
|
+
export declare function tokenUsageFromUsage(usage: Usage): TokenUsage;
|
|
2
8
|
export declare function parseSessionTokens(sessionDir: string): TokenUsage | null;
|
|
3
9
|
//# sourceMappingURL=session-tokens.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-tokens.d.ts","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/shared/session-tokens.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"session-tokens.d.ts","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/shared/session-tokens.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,gBAAgB,EAA2C,MAAM,sCAAsC,CAAC;AACtH,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEpD,6FAA6F;AAC7F,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,gBAAgB,EAAE,CA0BxF;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,GAAG,IAAI,CAe/E;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,GAAG,IAAI,GAAG,KAAK,CAY/E;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU,CAS5D;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAGxE","sourcesContent":["import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type { SessionEntry } from \"../../../../core/session-manager.ts\";\nimport { type AccountedRequest, collectUsageRequests, totalRequestUsage } from \"../../../../core/usage-accounting.ts\";\nimport type { TokenUsage, Usage } from \"./types.ts\";\n\n/** Scan all attempts, including older files; stable request IDs prevent fork duplication. */\nexport function parseSessionRequests(sessionPath: string | undefined): AccountedRequest[] {\n\tif (!sessionPath) return [];\n\ttry {\n\t\tconst files = fs.statSync(sessionPath).isDirectory()\n\t\t\t? fs\n\t\t\t\t\t.readdirSync(sessionPath)\n\t\t\t\t\t.filter((name) => name.endsWith(\".jsonl\"))\n\t\t\t\t\t.map((name) => path.join(sessionPath, name))\n\t\t\t: [sessionPath];\n\t\tconst requests = new Map<string, AccountedRequest>();\n\t\tfor (const file of files) {\n\t\t\tconst entries: SessionEntry[] = [];\n\t\t\tfor (const line of fs.readFileSync(file, \"utf-8\").split(\"\\n\")) {\n\t\t\t\ttry {\n\t\t\t\t\tconst entry = JSON.parse(line) as SessionEntry;\n\t\t\t\t\tif (entry?.type) entries.push(entry);\n\t\t\t\t} catch {\n\t\t\t\t\t/* A child may still be flushing its final line. */\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const request of collectUsageRequests(entries)) requests.set(request.id, request);\n\t\t}\n\t\treturn [...requests.values()];\n\t} catch {\n\t\treturn [];\n\t}\n}\n\nexport function parseSessionUsage(sessionPath: string | undefined): Usage | null {\n\tconst requests = parseSessionRequests(sessionPath);\n\tif (requests.length === 0) return null;\n\tconst total = totalRequestUsage(requests);\n\treturn {\n\t\tinput: total.input,\n\t\toutput: total.output,\n\t\tcacheRead: total.cacheRead,\n\t\tcacheWrite: total.cacheWrite,\n\t\tcost: total.cost,\n\t\tturns: requests.length,\n\t\tunknownRequests: total.unknownRequests,\n\t\tpartialRequests: total.partialRequests,\n\t\tunknownCosts: total.unknownCosts,\n\t};\n}\n\nexport function sessionUsageDelta(current: Usage, previous: Usage | null): Usage {\n\treturn {\n\t\tunknownRequests: Math.max(0, (current.unknownRequests ?? 0) - (previous?.unknownRequests ?? 0)),\n\t\tpartialRequests: Math.max(0, (current.partialRequests ?? 0) - (previous?.partialRequests ?? 0)),\n\t\tunknownCosts: Math.max(0, (current.unknownCosts ?? 0) - (previous?.unknownCosts ?? 0)),\n\t\tinput: Math.max(0, current.input - (previous?.input ?? 0)),\n\t\toutput: Math.max(0, current.output - (previous?.output ?? 0)),\n\t\tcacheRead: Math.max(0, current.cacheRead - (previous?.cacheRead ?? 0)),\n\t\tcacheWrite: Math.max(0, current.cacheWrite - (previous?.cacheWrite ?? 0)),\n\t\tcost: Math.max(0, current.cost - (previous?.cost ?? 0)),\n\t\tturns: Math.max(0, current.turns - (previous?.turns ?? 0)),\n\t};\n}\n\nexport function tokenUsageFromUsage(usage: Usage): TokenUsage {\n\tconst input = usage.input + usage.cacheRead + usage.cacheWrite;\n\treturn {\n\t\tinput,\n\t\toutput: usage.output,\n\t\ttotal: input + usage.output,\n\t\tcacheRead: usage.cacheRead,\n\t\tcacheWrite: usage.cacheWrite,\n\t};\n}\n\nexport function parseSessionTokens(sessionDir: string): TokenUsage | null {\n\tconst usage = parseSessionUsage(sessionDir);\n\treturn usage ? tokenUsageFromUsage(usage) : null;\n}\n"]}
|
|
@@ -1,49 +1,81 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
1
|
import * as fs from "node:fs";
|
|
3
2
|
import * as path from "node:path";
|
|
4
|
-
|
|
3
|
+
import { collectUsageRequests, totalRequestUsage } from "../../../../core/usage-accounting.js";
|
|
4
|
+
/** Scan all attempts, including older files; stable request IDs prevent fork duplication. */
|
|
5
|
+
export function parseSessionRequests(sessionPath) {
|
|
6
|
+
if (!sessionPath)
|
|
7
|
+
return [];
|
|
5
8
|
try {
|
|
6
|
-
const files = fs.
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
try {
|
|
24
|
-
const content = fs.readFileSync(sessionFile, "utf-8");
|
|
25
|
-
let input = 0;
|
|
26
|
-
let output = 0;
|
|
27
|
-
for (const line of content.split("\n")) {
|
|
28
|
-
if (!line.trim())
|
|
29
|
-
continue;
|
|
30
|
-
try {
|
|
31
|
-
const entry = JSON.parse(line);
|
|
32
|
-
const usage = entry.usage ?? entry.message?.usage;
|
|
33
|
-
if (usage) {
|
|
34
|
-
input += usage.inputTokens ?? usage.input ?? 0;
|
|
35
|
-
output += usage.outputTokens ?? usage.output ?? 0;
|
|
9
|
+
const files = fs.statSync(sessionPath).isDirectory()
|
|
10
|
+
? fs
|
|
11
|
+
.readdirSync(sessionPath)
|
|
12
|
+
.filter((name) => name.endsWith(".jsonl"))
|
|
13
|
+
.map((name) => path.join(sessionPath, name))
|
|
14
|
+
: [sessionPath];
|
|
15
|
+
const requests = new Map();
|
|
16
|
+
for (const file of files) {
|
|
17
|
+
const entries = [];
|
|
18
|
+
for (const line of fs.readFileSync(file, "utf-8").split("\n")) {
|
|
19
|
+
try {
|
|
20
|
+
const entry = JSON.parse(line);
|
|
21
|
+
if (entry?.type)
|
|
22
|
+
entries.push(entry);
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
/* A child may still be flushing its final line. */
|
|
36
26
|
}
|
|
37
27
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
28
|
+
for (const request of collectUsageRequests(entries))
|
|
29
|
+
requests.set(request.id, request);
|
|
41
30
|
}
|
|
42
|
-
return
|
|
31
|
+
return [...requests.values()];
|
|
43
32
|
}
|
|
44
33
|
catch {
|
|
45
|
-
|
|
46
|
-
return null;
|
|
34
|
+
return [];
|
|
47
35
|
}
|
|
48
36
|
}
|
|
37
|
+
export function parseSessionUsage(sessionPath) {
|
|
38
|
+
const requests = parseSessionRequests(sessionPath);
|
|
39
|
+
if (requests.length === 0)
|
|
40
|
+
return null;
|
|
41
|
+
const total = totalRequestUsage(requests);
|
|
42
|
+
return {
|
|
43
|
+
input: total.input,
|
|
44
|
+
output: total.output,
|
|
45
|
+
cacheRead: total.cacheRead,
|
|
46
|
+
cacheWrite: total.cacheWrite,
|
|
47
|
+
cost: total.cost,
|
|
48
|
+
turns: requests.length,
|
|
49
|
+
unknownRequests: total.unknownRequests,
|
|
50
|
+
partialRequests: total.partialRequests,
|
|
51
|
+
unknownCosts: total.unknownCosts,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
export function sessionUsageDelta(current, previous) {
|
|
55
|
+
return {
|
|
56
|
+
unknownRequests: Math.max(0, (current.unknownRequests ?? 0) - (previous?.unknownRequests ?? 0)),
|
|
57
|
+
partialRequests: Math.max(0, (current.partialRequests ?? 0) - (previous?.partialRequests ?? 0)),
|
|
58
|
+
unknownCosts: Math.max(0, (current.unknownCosts ?? 0) - (previous?.unknownCosts ?? 0)),
|
|
59
|
+
input: Math.max(0, current.input - (previous?.input ?? 0)),
|
|
60
|
+
output: Math.max(0, current.output - (previous?.output ?? 0)),
|
|
61
|
+
cacheRead: Math.max(0, current.cacheRead - (previous?.cacheRead ?? 0)),
|
|
62
|
+
cacheWrite: Math.max(0, current.cacheWrite - (previous?.cacheWrite ?? 0)),
|
|
63
|
+
cost: Math.max(0, current.cost - (previous?.cost ?? 0)),
|
|
64
|
+
turns: Math.max(0, current.turns - (previous?.turns ?? 0)),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
export function tokenUsageFromUsage(usage) {
|
|
68
|
+
const input = usage.input + usage.cacheRead + usage.cacheWrite;
|
|
69
|
+
return {
|
|
70
|
+
input,
|
|
71
|
+
output: usage.output,
|
|
72
|
+
total: input + usage.output,
|
|
73
|
+
cacheRead: usage.cacheRead,
|
|
74
|
+
cacheWrite: usage.cacheWrite,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
export function parseSessionTokens(sessionDir) {
|
|
78
|
+
const usage = parseSessionUsage(sessionDir);
|
|
79
|
+
return usage ? tokenUsageFromUsage(usage) : null;
|
|
80
|
+
}
|
|
49
81
|
//# sourceMappingURL=session-tokens.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-tokens.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/shared/session-tokens.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"session-tokens.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/shared/session-tokens.ts"],"names":[],"mappings":"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","sourcesContent":["import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type { SessionEntry } from \"../../../../core/session-manager.ts\";\nimport { type AccountedRequest, collectUsageRequests, totalRequestUsage } from \"../../../../core/usage-accounting.ts\";\nimport type { TokenUsage, Usage } from \"./types.ts\";\n\n/** Scan all attempts, including older files; stable request IDs prevent fork duplication. */\nexport function parseSessionRequests(sessionPath: string | undefined): AccountedRequest[] {\n\tif (!sessionPath) return [];\n\ttry {\n\t\tconst files = fs.statSync(sessionPath).isDirectory()\n\t\t\t? fs\n\t\t\t\t\t.readdirSync(sessionPath)\n\t\t\t\t\t.filter((name) => name.endsWith(\".jsonl\"))\n\t\t\t\t\t.map((name) => path.join(sessionPath, name))\n\t\t\t: [sessionPath];\n\t\tconst requests = new Map<string, AccountedRequest>();\n\t\tfor (const file of files) {\n\t\t\tconst entries: SessionEntry[] = [];\n\t\t\tfor (const line of fs.readFileSync(file, \"utf-8\").split(\"\\n\")) {\n\t\t\t\ttry {\n\t\t\t\t\tconst entry = JSON.parse(line) as SessionEntry;\n\t\t\t\t\tif (entry?.type) entries.push(entry);\n\t\t\t\t} catch {\n\t\t\t\t\t/* A child may still be flushing its final line. */\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const request of collectUsageRequests(entries)) requests.set(request.id, request);\n\t\t}\n\t\treturn [...requests.values()];\n\t} catch {\n\t\treturn [];\n\t}\n}\n\nexport function parseSessionUsage(sessionPath: string | undefined): Usage | null {\n\tconst requests = parseSessionRequests(sessionPath);\n\tif (requests.length === 0) return null;\n\tconst total = totalRequestUsage(requests);\n\treturn {\n\t\tinput: total.input,\n\t\toutput: total.output,\n\t\tcacheRead: total.cacheRead,\n\t\tcacheWrite: total.cacheWrite,\n\t\tcost: total.cost,\n\t\tturns: requests.length,\n\t\tunknownRequests: total.unknownRequests,\n\t\tpartialRequests: total.partialRequests,\n\t\tunknownCosts: total.unknownCosts,\n\t};\n}\n\nexport function sessionUsageDelta(current: Usage, previous: Usage | null): Usage {\n\treturn {\n\t\tunknownRequests: Math.max(0, (current.unknownRequests ?? 0) - (previous?.unknownRequests ?? 0)),\n\t\tpartialRequests: Math.max(0, (current.partialRequests ?? 0) - (previous?.partialRequests ?? 0)),\n\t\tunknownCosts: Math.max(0, (current.unknownCosts ?? 0) - (previous?.unknownCosts ?? 0)),\n\t\tinput: Math.max(0, current.input - (previous?.input ?? 0)),\n\t\toutput: Math.max(0, current.output - (previous?.output ?? 0)),\n\t\tcacheRead: Math.max(0, current.cacheRead - (previous?.cacheRead ?? 0)),\n\t\tcacheWrite: Math.max(0, current.cacheWrite - (previous?.cacheWrite ?? 0)),\n\t\tcost: Math.max(0, current.cost - (previous?.cost ?? 0)),\n\t\tturns: Math.max(0, current.turns - (previous?.turns ?? 0)),\n\t};\n}\n\nexport function tokenUsageFromUsage(usage: Usage): TokenUsage {\n\tconst input = usage.input + usage.cacheRead + usage.cacheWrite;\n\treturn {\n\t\tinput,\n\t\toutput: usage.output,\n\t\ttotal: input + usage.output,\n\t\tcacheRead: usage.cacheRead,\n\t\tcacheWrite: usage.cacheWrite,\n\t};\n}\n\nexport function parseSessionTokens(sessionDir: string): TokenUsage | null {\n\tconst usage = parseSessionUsage(sessionDir);\n\treturn usage ? tokenUsageFromUsage(usage) : null;\n}\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Type definitions for the subagent extension
|
|
3
3
|
*/
|
|
4
|
+
import type { AccountedRequest } from "../../../../core/usage-accounting.ts";
|
|
4
5
|
import type { Message } from "@ashx-j/lunr-ai";
|
|
5
6
|
import type { FSWatcher } from "node:fs";
|
|
6
7
|
import type { ExtensionContext } from "@ashx-j/lunr";
|
|
@@ -133,6 +134,9 @@ interface TruncationResult {
|
|
|
133
134
|
artifactPath?: string;
|
|
134
135
|
}
|
|
135
136
|
export interface Usage {
|
|
137
|
+
unknownRequests?: number;
|
|
138
|
+
partialRequests?: number;
|
|
139
|
+
unknownCosts?: number;
|
|
136
140
|
input: number;
|
|
137
141
|
output: number;
|
|
138
142
|
cacheRead: number;
|
|
@@ -174,6 +178,9 @@ export interface TurnBudgetState extends ResolvedTurnBudget {
|
|
|
174
178
|
exceededAtTurn?: number;
|
|
175
179
|
}
|
|
176
180
|
export interface TokenUsage {
|
|
181
|
+
/** Input includes cache reads and writes. */
|
|
182
|
+
cacheRead?: number;
|
|
183
|
+
cacheWrite?: number;
|
|
177
184
|
input: number;
|
|
178
185
|
output: number;
|
|
179
186
|
total: number;
|
|
@@ -572,6 +579,8 @@ export interface SingleResult {
|
|
|
572
579
|
toolBudgetBlocked?: boolean;
|
|
573
580
|
messages?: Message[];
|
|
574
581
|
usage: Usage;
|
|
582
|
+
/** Durable request receipts deduplicate fallback, completion, wait, and resume. */
|
|
583
|
+
usageRequests?: AccountedRequest[];
|
|
575
584
|
model?: string;
|
|
576
585
|
thinking?: string;
|
|
577
586
|
modelSelection?: ModelSelection;
|