@codyswann/lisa 2.222.0 → 2.222.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/utils/usage-accounting.d.ts +3 -2
- package/dist/utils/usage-accounting.d.ts.map +1 -1
- package/dist/utils/usage-accounting.js +127 -48
- package/dist/utils/usage-accounting.js.map +1 -1
- package/package.json +1 -1
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-usage-accounting/SKILL.md +9 -1
- package/plugins/lisa/hooks/parity-safety-net.sh +58 -7
- package/plugins/lisa/rules/eager/usage-accounting.md +6 -2
- package/plugins/lisa/rules/reference/usage-accounting.md +42 -5
- package/plugins/lisa/skills/lisa-usage-accounting/SKILL.md +9 -1
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/lisa-usage-accounting/SKILL.md +9 -1
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-agy/plugin.json +1 -1
- package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/hooks/parity-safety-net.sh +58 -7
- package/plugins/lisa-copilot/rules/eager/usage-accounting.md +6 -2
- package/plugins/lisa-copilot/rules/reference/usage-accounting.md +42 -5
- package/plugins/lisa-copilot/skills/lisa-usage-accounting/SKILL.md +9 -1
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/hooks/parity-safety-net.sh +58 -7
- package/plugins/lisa-cursor/rules/usage-accounting-reference.mdc +42 -5
- package/plugins/lisa-cursor/rules/usage-accounting.mdc +6 -2
- package/plugins/lisa-cursor/skills/lisa-usage-accounting/SKILL.md +9 -1
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-agy/plugin.json +1 -1
- package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-agy/plugin.json +1 -1
- package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-agy/plugin.json +1 -1
- package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-agy/plugin.json +1 -1
- package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-agy/plugin.json +1 -1
- package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-agy/plugin.json +1 -1
- package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-agy/plugin.json +1 -1
- package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/src/base/hooks/parity-safety-net.sh +58 -7
- package/plugins/src/base/rules/eager/usage-accounting.md +6 -2
- package/plugins/src/base/rules/reference/usage-accounting.md +42 -5
- package/plugins/src/base/skills/lisa-usage-accounting/SKILL.md +9 -1
|
@@ -10,7 +10,7 @@ export interface LisaUsageEntry {
|
|
|
10
10
|
entryId: string;
|
|
11
11
|
flow: string;
|
|
12
12
|
inputTokens: number | null;
|
|
13
|
-
measuredSubsetTokens
|
|
13
|
+
measuredSubsetTokens?: number | null;
|
|
14
14
|
model: string;
|
|
15
15
|
outputTokens: number | null;
|
|
16
16
|
parentArtifactRef: string | null;
|
|
@@ -31,6 +31,7 @@ export interface LisaUsageRollup {
|
|
|
31
31
|
childEntryIds: readonly string[];
|
|
32
32
|
childRefs: readonly string[];
|
|
33
33
|
childTokens: number | null;
|
|
34
|
+
childTokensIncomplete?: boolean;
|
|
34
35
|
currency: string | null;
|
|
35
36
|
directCost: number | null;
|
|
36
37
|
directEntryIds: readonly string[];
|
|
@@ -79,7 +80,7 @@ export declare function createLisaUsageRollup(entries: readonly LisaUsageEntry[]
|
|
|
79
80
|
* Render the machine-readable token for a single direct usage row.
|
|
80
81
|
*
|
|
81
82
|
* @param entry Direct usage entry to serialize.
|
|
82
|
-
* @returns The
|
|
83
|
+
* @returns The legacy-readable primary token plus its measured-subset extension.
|
|
83
84
|
*/
|
|
84
85
|
export declare function renderLisaUsageEntryToken(entry: LisaUsageEntry): string;
|
|
85
86
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage-accounting.d.ts","sourceRoot":"","sources":["../../src/utils/usage-accounting.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"usage-accounting.d.ts","sourceRoot":"","sources":["../../src/utils/usage-accounting.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,12 @@
|
|
|
2
2
|
import { collectLisaUsageChildArtifacts } from "./usage-accounting-rollup.js";
|
|
3
3
|
import { sumNullableDecimals } from "./decimal-sum.js";
|
|
4
4
|
export const LISA_USAGE_HEADING = "## Lisa Usage";
|
|
5
|
-
const
|
|
5
|
+
const ENTRY_TOKEN_PATTERN = /<!-- lisa:usage-entry [^\r\n]*? -->/g;
|
|
6
|
+
const LEGACY_ENTRY_PATTERN = /^<!-- lisa:usage-entry entry_id=(\S+) flow=(\S+) run_id=(\S+) provider=(\S+) model=(\S+) source=(\S+) input_tokens=(\S+) cached_input_tokens=(\S+) output_tokens=(\S+) reasoning_tokens=(\S+) total_tokens=(\S+) cost=(\S+) currency=(\S+) pricing_status=(\S+) pricing_source=(\S+) artifact_ref=(\S+) parent_artifact_ref=(\S*) -->$/;
|
|
7
|
+
const RELEASED_MIDDLE_FIELD_ENTRY_PATTERN = /^<!-- lisa:usage-entry entry_id=(\S+) flow=(\S+) run_id=(\S+) provider=(\S+) model=(\S+) source=(\S+) input_tokens=(\S+) cached_input_tokens=(\S+) output_tokens=(\S+) reasoning_tokens=(\S+) total_tokens=(\S+) measured_subset_tokens=(\S+) cost=(\S+) currency=(\S+) pricing_status=(\S+) pricing_source=(\S+) artifact_ref=(\S+) parent_artifact_ref=(\S*) -->$/;
|
|
8
|
+
const MEASURED_SUBSET_PATTERN = /<!-- lisa:usage-entry-measured-subset entry_id=(\S+) measured_subset_tokens=(\S+) -->/g;
|
|
6
9
|
const ROLLUP_PATTERN = /<!-- lisa:usage-rollup direct_entry_ids=(\S*) child_entry_ids=(\S*) child_refs=(\S*) direct_tokens=(\S+) child_tokens=(\S+) total_tokens=(\S+) direct_cost=(\S+) child_cost=(\S+) total_cost=(\S+) currency=(\S+)(?: child_currency=(\S+))? -->/;
|
|
10
|
+
const ROLLUP_TOKEN_STATUS_PATTERN = /<!-- lisa:usage-rollup-token-status child_tokens_incomplete=true -->/;
|
|
7
11
|
const MIXED_CURRENCY = "mixed";
|
|
8
12
|
/**
|
|
9
13
|
* Parse a nullable numeric token field.
|
|
@@ -21,6 +25,17 @@ function parseNullableNumber(value) {
|
|
|
21
25
|
}
|
|
22
26
|
return parsed;
|
|
23
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Parse the additive field from the published 2.222.0 marker. Legacy callers
|
|
30
|
+
* could serialize an omitted property as the literal `undefined`; no other
|
|
31
|
+
* numeric field receives this compatibility exception.
|
|
32
|
+
*
|
|
33
|
+
* @param value Transitional measured-subset token value.
|
|
34
|
+
* @returns The parsed subtotal, or null for the published undefined omission.
|
|
35
|
+
*/
|
|
36
|
+
function parseReleasedMeasuredSubset(value) {
|
|
37
|
+
return value === "undefined" ? null : parseNullableNumber(value);
|
|
38
|
+
}
|
|
24
39
|
/**
|
|
25
40
|
* Parse a nullable string token field.
|
|
26
41
|
*
|
|
@@ -104,6 +119,16 @@ function sumNullable(values) {
|
|
|
104
119
|
}
|
|
105
120
|
return present.reduce((total, value) => total + value, 0);
|
|
106
121
|
}
|
|
122
|
+
/**
|
|
123
|
+
* Detect an entry whose recorded count is explicitly only part of a run.
|
|
124
|
+
*
|
|
125
|
+
* @param entry Usage entry to inspect.
|
|
126
|
+
* @returns Whether token rollups must remain incomplete for this entry.
|
|
127
|
+
*/
|
|
128
|
+
function hasMeasuredSubset(entry) {
|
|
129
|
+
return (entry.source === "measured-subset" ||
|
|
130
|
+
(entry.measuredSubsetTokens ?? null) !== null);
|
|
131
|
+
}
|
|
107
132
|
/**
|
|
108
133
|
* Resolve the only currency represented by present cost values.
|
|
109
134
|
*
|
|
@@ -178,7 +203,7 @@ function formatEntryTokens(entry) {
|
|
|
178
203
|
if (entry.totalTokens !== null) {
|
|
179
204
|
return formatTokens(entry.totalTokens);
|
|
180
205
|
}
|
|
181
|
-
return entry.measuredSubsetTokens === null
|
|
206
|
+
return (entry.measuredSubsetTokens ?? null) === null
|
|
182
207
|
? "null"
|
|
183
208
|
: `${entry.measuredSubsetTokens} measured subset`;
|
|
184
209
|
}
|
|
@@ -223,11 +248,15 @@ function resolveChildRollupParts(previousRollup, childArtifacts, directEntryIds)
|
|
|
223
248
|
const collected = collectLisaUsageChildArtifacts(childArtifacts, directEntryIds);
|
|
224
249
|
const deduped = collected.childEntries;
|
|
225
250
|
const childCurrency = resolveDirectCostCurrency(deduped);
|
|
251
|
+
const childTokensIncomplete = deduped.some(hasMeasuredSubset);
|
|
226
252
|
const rawChildCost = sumNullableDecimals(deduped.map(entry => entry.cost));
|
|
227
253
|
return {
|
|
228
254
|
childEntryIds: deduped.map(entry => entry.entryId),
|
|
229
255
|
childRefs: collected.childRefs,
|
|
230
|
-
childTokens:
|
|
256
|
+
childTokens: childTokensIncomplete
|
|
257
|
+
? null
|
|
258
|
+
: sumNullable(deduped.map(entry => entry.totalTokens)),
|
|
259
|
+
childTokensIncomplete,
|
|
231
260
|
childCurrency,
|
|
232
261
|
childCost: childCurrency === MIXED_CURRENCY ? null : rawChildCost,
|
|
233
262
|
};
|
|
@@ -244,6 +273,7 @@ function resolveChildRollupParts(previousRollup, childArtifacts, directEntryIds)
|
|
|
244
273
|
childEntryIds: previousRollup?.childEntryIds ?? [],
|
|
245
274
|
childRefs: previousRollup?.childRefs ?? [],
|
|
246
275
|
childTokens: previousRollup?.childTokens ?? null,
|
|
276
|
+
childTokensIncomplete: previousRollup?.childTokensIncomplete ?? false,
|
|
247
277
|
childCurrency,
|
|
248
278
|
childCost: childCurrency === MIXED_CURRENCY ? null : rawChildCost,
|
|
249
279
|
};
|
|
@@ -280,15 +310,20 @@ function resolveRollupCurrency(directCurrency, childCurrency, directCost, childC
|
|
|
280
310
|
*/
|
|
281
311
|
export function createLisaUsageRollup(entries, previousRollup, childArtifacts) {
|
|
282
312
|
const directEntryIds = entries.map(entry => entry.entryId);
|
|
283
|
-
const
|
|
313
|
+
const directTokensIncomplete = entries.some(hasMeasuredSubset);
|
|
314
|
+
const directTokens = directTokensIncomplete
|
|
315
|
+
? null
|
|
316
|
+
: sumNullable(entries.map(entry => entry.totalTokens));
|
|
284
317
|
const directCurrency = resolveDirectCostCurrency(entries);
|
|
285
318
|
const directCost = directCurrency === MIXED_CURRENCY
|
|
286
319
|
? null
|
|
287
320
|
: sumNullableDecimals(entries.map(entry => entry.cost));
|
|
288
|
-
const { childEntryIds, childRefs, childTokens, childCurrency, childCost } = resolveChildRollupParts(previousRollup, childArtifacts, directEntryIds);
|
|
289
|
-
const totalTokens =
|
|
321
|
+
const { childEntryIds, childRefs, childTokens, childTokensIncomplete, childCurrency, childCost, } = resolveChildRollupParts(previousRollup, childArtifacts, directEntryIds);
|
|
322
|
+
const totalTokens = directTokensIncomplete || childTokensIncomplete
|
|
290
323
|
? null
|
|
291
|
-
:
|
|
324
|
+
: directTokens === null && childTokens === null
|
|
325
|
+
? null
|
|
326
|
+
: (directTokens ?? 0) + (childTokens ?? 0);
|
|
292
327
|
const currency = resolveRollupCurrency(directCurrency, childCurrency, directCost, childCost);
|
|
293
328
|
const totalCost = currency === MIXED_CURRENCY || (directCost === null && childCost === null)
|
|
294
329
|
? null
|
|
@@ -299,6 +334,7 @@ export function createLisaUsageRollup(entries, previousRollup, childArtifacts) {
|
|
|
299
334
|
childRefs,
|
|
300
335
|
directTokens,
|
|
301
336
|
childTokens,
|
|
337
|
+
...(childTokensIncomplete ? { childTokensIncomplete: true } : {}),
|
|
302
338
|
totalTokens,
|
|
303
339
|
directCost,
|
|
304
340
|
childCost,
|
|
@@ -311,10 +347,12 @@ export function createLisaUsageRollup(entries, previousRollup, childArtifacts) {
|
|
|
311
347
|
* Render the machine-readable token for a single direct usage row.
|
|
312
348
|
*
|
|
313
349
|
* @param entry Direct usage entry to serialize.
|
|
314
|
-
* @returns The
|
|
350
|
+
* @returns The legacy-readable primary token plus its measured-subset extension.
|
|
315
351
|
*/
|
|
316
352
|
export function renderLisaUsageEntryToken(entry) {
|
|
317
|
-
|
|
353
|
+
const primaryToken = `<!-- lisa:usage-entry entry_id=${encodeTokenValue(entry.entryId)} flow=${encodeTokenValue(entry.flow)} run_id=${encodeTokenValue(entry.runId)} provider=${encodeTokenValue(entry.provider)} model=${encodeTokenValue(entry.model)} source=${encodeTokenValue(entry.source)} input_tokens=${renderNullable(entry.inputTokens)} cached_input_tokens=${renderNullable(entry.cachedInputTokens)} output_tokens=${renderNullable(entry.outputTokens)} reasoning_tokens=${renderNullable(entry.reasoningTokens)} total_tokens=${renderNullable(entry.totalTokens)} cost=${renderNullable(entry.cost)} currency=${renderNullable(entry.currency)} pricing_status=${encodeTokenValue(entry.pricingStatus)} pricing_source=${renderNullable(entry.pricingSource)} artifact_ref=${encodeTokenValue(entry.artifactRef)} parent_artifact_ref=${entry.parentArtifactRef === null ? "" : encodeTokenValue(entry.parentArtifactRef)} -->`;
|
|
354
|
+
const measuredSubsetToken = `<!-- lisa:usage-entry-measured-subset entry_id=${encodeTokenValue(entry.entryId)} measured_subset_tokens=${renderNullable(entry.measuredSubsetTokens ?? null)} -->`;
|
|
355
|
+
return `${primaryToken} ${measuredSubsetToken}`;
|
|
318
356
|
}
|
|
319
357
|
/**
|
|
320
358
|
* Render the machine-readable rollup token for a managed usage section.
|
|
@@ -323,7 +361,10 @@ export function renderLisaUsageEntryToken(entry) {
|
|
|
323
361
|
* @returns The canonical `lisa:usage-rollup` token line.
|
|
324
362
|
*/
|
|
325
363
|
export function renderLisaUsageRollupToken(rollup) {
|
|
326
|
-
|
|
364
|
+
const primaryToken = `<!-- lisa:usage-rollup direct_entry_ids=${renderCsv(rollup.directEntryIds)} child_entry_ids=${renderCsv(rollup.childEntryIds)} child_refs=${renderCsv(rollup.childRefs)} direct_tokens=${renderNullable(rollup.directTokens)} child_tokens=${renderNullable(rollup.childTokens)} total_tokens=${renderNullable(rollup.totalTokens)} direct_cost=${renderNullable(rollup.directCost)} child_cost=${renderNullable(rollup.childCost)} total_cost=${renderNullable(rollup.totalCost)} currency=${renderNullable(rollup.currency)} child_currency=${renderNullable(rollup.childCurrency)} -->`;
|
|
365
|
+
return rollup.childTokensIncomplete === true
|
|
366
|
+
? `${primaryToken} <!-- lisa:usage-rollup-token-status child_tokens_incomplete=true -->`
|
|
367
|
+
: primaryToken;
|
|
327
368
|
}
|
|
328
369
|
/**
|
|
329
370
|
* Render the canonical `## Lisa Usage` section body from direct entries and a
|
|
@@ -352,6 +393,34 @@ export function renderLisaUsageSection(input) {
|
|
|
352
393
|
];
|
|
353
394
|
return `${lines.join("\n")}\n`;
|
|
354
395
|
}
|
|
396
|
+
/**
|
|
397
|
+
* Parse the managed rollup and its optional token-completeness extension.
|
|
398
|
+
*
|
|
399
|
+
* @param section Managed usage section text.
|
|
400
|
+
* @returns The parsed rollup, or null when the section has no rollup token.
|
|
401
|
+
*/
|
|
402
|
+
function parseLisaUsageRollup(section) {
|
|
403
|
+
const match = ROLLUP_PATTERN.exec(section);
|
|
404
|
+
if (match === null) {
|
|
405
|
+
return null;
|
|
406
|
+
}
|
|
407
|
+
return {
|
|
408
|
+
directEntryIds: parseCsv(match[1] ?? ""),
|
|
409
|
+
childEntryIds: parseCsv(match[2] ?? ""),
|
|
410
|
+
childRefs: parseCsv(match[3] ?? ""),
|
|
411
|
+
directTokens: parseNullableNumber(match[4] ?? ""),
|
|
412
|
+
childTokens: parseNullableNumber(match[5] ?? ""),
|
|
413
|
+
...(ROLLUP_TOKEN_STATUS_PATTERN.test(section)
|
|
414
|
+
? { childTokensIncomplete: true }
|
|
415
|
+
: {}),
|
|
416
|
+
totalTokens: parseNullableNumber(match[6] ?? ""),
|
|
417
|
+
directCost: parseNullableNumber(match[7] ?? ""),
|
|
418
|
+
childCost: parseNullableNumber(match[8] ?? ""),
|
|
419
|
+
totalCost: parseNullableNumber(match[9] ?? ""),
|
|
420
|
+
currency: parseNullableString(match[10] ?? ""),
|
|
421
|
+
childCurrency: parseNullableString(match[11] ?? ""),
|
|
422
|
+
};
|
|
423
|
+
}
|
|
355
424
|
/**
|
|
356
425
|
* Parse the managed usage section out of an artifact body or comment.
|
|
357
426
|
*
|
|
@@ -361,43 +430,46 @@ export function renderLisaUsageSection(input) {
|
|
|
361
430
|
export function parseLisaUsageSection(document) {
|
|
362
431
|
const range = findUsageSectionRange(document);
|
|
363
432
|
const section = range ? document.slice(range.start, range.end) : "";
|
|
364
|
-
const
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
reasoningTokens: parseNullableNumber(match[10] ?? ""),
|
|
375
|
-
totalTokens: parseNullableNumber(match[11] ?? ""),
|
|
376
|
-
measuredSubsetTokens: match[12] === undefined ? null : parseNullableNumber(match[12]),
|
|
377
|
-
cost: parseNullableNumber(match[13] ?? ""),
|
|
378
|
-
currency: parseNullableString(match[14] ?? ""),
|
|
379
|
-
pricingStatus: decodeTokenValue(match[15] ?? ""),
|
|
380
|
-
pricingSource: parseNullableString(match[16] ?? ""),
|
|
381
|
-
artifactRef: decodeTokenValue(match[17] ?? ""),
|
|
382
|
-
parentArtifactRef: parseNullableString(match[18] ?? ""),
|
|
383
|
-
}));
|
|
384
|
-
const rollupMatch = ROLLUP_PATTERN.exec(section);
|
|
385
|
-
const rollup = rollupMatch
|
|
386
|
-
? {
|
|
387
|
-
directEntryIds: parseCsv(rollupMatch[1] ?? ""),
|
|
388
|
-
childEntryIds: parseCsv(rollupMatch[2] ?? ""),
|
|
389
|
-
childRefs: parseCsv(rollupMatch[3] ?? ""),
|
|
390
|
-
directTokens: parseNullableNumber(rollupMatch[4] ?? ""),
|
|
391
|
-
childTokens: parseNullableNumber(rollupMatch[5] ?? ""),
|
|
392
|
-
totalTokens: parseNullableNumber(rollupMatch[6] ?? ""),
|
|
393
|
-
directCost: parseNullableNumber(rollupMatch[7] ?? ""),
|
|
394
|
-
childCost: parseNullableNumber(rollupMatch[8] ?? ""),
|
|
395
|
-
totalCost: parseNullableNumber(rollupMatch[9] ?? ""),
|
|
396
|
-
currency: parseNullableString(rollupMatch[10] ?? ""),
|
|
397
|
-
childCurrency: parseNullableString(rollupMatch[11] ?? ""),
|
|
433
|
+
const measuredSubsets = new Map(Array.from(section.matchAll(MEASURED_SUBSET_PATTERN), match => [
|
|
434
|
+
decodeTokenValue(match[1] ?? ""),
|
|
435
|
+
parseNullableNumber(match[2] ?? ""),
|
|
436
|
+
]));
|
|
437
|
+
const entries = Array.from(section.matchAll(ENTRY_TOKEN_PATTERN), tokenMatch => {
|
|
438
|
+
const token = tokenMatch[0];
|
|
439
|
+
const releasedMatch = RELEASED_MIDDLE_FIELD_ENTRY_PATTERN.exec(token);
|
|
440
|
+
const match = releasedMatch ?? LEGACY_ENTRY_PATTERN.exec(token);
|
|
441
|
+
if (match === null) {
|
|
442
|
+
throw new Error(`Invalid Lisa usage entry token: ${token}`);
|
|
398
443
|
}
|
|
399
|
-
:
|
|
400
|
-
|
|
444
|
+
const releasedFieldOffset = releasedMatch === null ? 0 : 1;
|
|
445
|
+
const entryId = decodeTokenValue(match[1] ?? "");
|
|
446
|
+
const embeddedMeasuredSubset = releasedMatch === null
|
|
447
|
+
? null
|
|
448
|
+
: parseReleasedMeasuredSubset(match[12] ?? "");
|
|
449
|
+
return {
|
|
450
|
+
entryId,
|
|
451
|
+
flow: decodeTokenValue(match[2] ?? ""),
|
|
452
|
+
runId: decodeTokenValue(match[3] ?? ""),
|
|
453
|
+
provider: decodeTokenValue(match[4] ?? ""),
|
|
454
|
+
model: decodeTokenValue(match[5] ?? ""),
|
|
455
|
+
source: decodeTokenValue(match[6] ?? ""),
|
|
456
|
+
inputTokens: parseNullableNumber(match[7] ?? ""),
|
|
457
|
+
cachedInputTokens: parseNullableNumber(match[8] ?? ""),
|
|
458
|
+
outputTokens: parseNullableNumber(match[9] ?? ""),
|
|
459
|
+
reasoningTokens: parseNullableNumber(match[10] ?? ""),
|
|
460
|
+
totalTokens: parseNullableNumber(match[11] ?? ""),
|
|
461
|
+
measuredSubsetTokens: measuredSubsets.has(entryId)
|
|
462
|
+
? (measuredSubsets.get(entryId) ?? null)
|
|
463
|
+
: embeddedMeasuredSubset,
|
|
464
|
+
cost: parseNullableNumber(match[12 + releasedFieldOffset] ?? ""),
|
|
465
|
+
currency: parseNullableString(match[13 + releasedFieldOffset] ?? ""),
|
|
466
|
+
pricingStatus: decodeTokenValue(match[14 + releasedFieldOffset] ?? ""),
|
|
467
|
+
pricingSource: parseNullableString(match[15 + releasedFieldOffset] ?? ""),
|
|
468
|
+
artifactRef: decodeTokenValue(match[16 + releasedFieldOffset] ?? ""),
|
|
469
|
+
parentArtifactRef: parseNullableString(match[17 + releasedFieldOffset] ?? ""),
|
|
470
|
+
};
|
|
471
|
+
});
|
|
472
|
+
return { entries, rollup: parseLisaUsageRollup(section), range };
|
|
401
473
|
}
|
|
402
474
|
/**
|
|
403
475
|
* Append or replace the canonical `## Lisa Usage` section in a markdown
|
|
@@ -413,9 +485,16 @@ export function parseLisaUsageSection(document) {
|
|
|
413
485
|
export function upsertLisaUsageSection(document, input) {
|
|
414
486
|
const parsed = parseLisaUsageSection(document);
|
|
415
487
|
const mergedEntries = mergeLisaUsageEntries(parsed.entries, input.entries);
|
|
488
|
+
const previousRollup = input.childArtifacts === undefined &&
|
|
489
|
+
input.rollup !== null &&
|
|
490
|
+
input.rollup !== undefined &&
|
|
491
|
+
input.rollup.childTokensIncomplete === undefined &&
|
|
492
|
+
parsed.rollup?.childTokensIncomplete === true
|
|
493
|
+
? { ...input.rollup, childTokensIncomplete: true }
|
|
494
|
+
: (input.rollup ?? parsed.rollup);
|
|
416
495
|
const rollup = mergedEntries.length === 0 && input.rollup
|
|
417
|
-
? input.rollup
|
|
418
|
-
: createLisaUsageRollup(mergedEntries,
|
|
496
|
+
? (previousRollup ?? input.rollup)
|
|
497
|
+
: createLisaUsageRollup(mergedEntries, previousRollup, input.childArtifacts);
|
|
419
498
|
const usageSection = renderLisaUsageSection({
|
|
420
499
|
entries: mergedEntries,
|
|
421
500
|
rollup,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage-accounting.js","sourceRoot":"","sources":["../../src/utils/usage-accounting.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"usage-accounting.js","sourceRoot":"","sources":["../../src/utils/usage-accounting.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -102,7 +102,7 @@
|
|
|
102
102
|
"form-data": ">=4.0.6"
|
|
103
103
|
},
|
|
104
104
|
"name": "@codyswann/lisa",
|
|
105
|
-
"version": "2.222.
|
|
105
|
+
"version": "2.222.2",
|
|
106
106
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
107
107
|
"main": "dist/index.js",
|
|
108
108
|
"exports": {
|
|
@@ -69,7 +69,10 @@ fields.
|
|
|
69
69
|
|
|
70
70
|
When the runtime exposes only a trustworthy subtotal, callers MUST use `source: measured-subset`,
|
|
71
71
|
write the subtotal to `measured_subset_tokens`, and leave `total_tokens: null`. Do not coerce a
|
|
72
|
-
known subset into `total_tokens`; rollups use `total_tokens` only for complete totals.
|
|
72
|
+
known subset into `total_tokens`; rollups use `total_tokens` only for complete totals. The
|
|
73
|
+
`measured_subset_tokens` field is optional for backward compatibility with callers that construct
|
|
74
|
+
ordinary observed, estimated, or unavailable entries; the shared serializer normalizes omission
|
|
75
|
+
to `null`. A trustworthy whole-run cost remains valid independently of incomplete token telemetry.
|
|
73
76
|
|
|
74
77
|
## Return shape
|
|
75
78
|
|
|
@@ -168,6 +171,11 @@ failures into a generic "usage update failed."
|
|
|
168
171
|
canonical `usage-accounting` rule.
|
|
169
172
|
- Never append a second `## Lisa Usage` section or a second managed usage comment.
|
|
170
173
|
- Never treat missing usage as zero. Callers must record explicit `source: unavailable` entries.
|
|
174
|
+
- Never add a measured subset to complete token totals. A mixed complete-plus-measured-subset
|
|
175
|
+
direct or child scope has `null` token rollups, while trustworthy whole-run cost rolls up
|
|
176
|
+
independently.
|
|
177
|
+
- Never discard the optional child-token incompleteness state parsed from an existing rollup when
|
|
178
|
+
`child_refs` were not refreshed. Preserve it through ordinary direct-entry rewrites.
|
|
171
179
|
- Never skip rollup dedupe. Child totals are keyed by stable `entry_id`, not by child ref count.
|
|
172
180
|
- Never silently drop to comments. Return `outcome: comment-fallback` so the caller can surface the
|
|
173
181
|
writable surface that actually holds the ledger.
|
|
@@ -32,6 +32,57 @@ if [ -z "$command_str" ]; then
|
|
|
32
32
|
exit 0
|
|
33
33
|
fi
|
|
34
34
|
|
|
35
|
+
command_for_guards="$command_str"
|
|
36
|
+
if command -v python3 >/dev/null 2>&1; then
|
|
37
|
+
command_for_guards="$(SAFETY_NET_COMMAND="$command_str" python3 - <<'PY'
|
|
38
|
+
import os
|
|
39
|
+
import re
|
|
40
|
+
|
|
41
|
+
command = os.environ.get("SAFETY_NET_COMMAND", "")
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def strip_heredocs(text: str) -> str:
|
|
45
|
+
lines = text.splitlines()
|
|
46
|
+
output = []
|
|
47
|
+
pending = []
|
|
48
|
+
# Quoted strings are matched (and thereby skipped over) as plain,
|
|
49
|
+
# non-capturing alternatives BEFORE the heredoc-marker alternative gets a
|
|
50
|
+
# chance to run, so a "<<MARKER"-looking sequence inside a string literal
|
|
51
|
+
# (e.g. `echo "hello <<MARKER"`) is never mistaken for a real heredoc
|
|
52
|
+
# start. Only the heredoc-marker alternative captures a group.
|
|
53
|
+
marker_pattern = re.compile(
|
|
54
|
+
r'"(?:\\.|[^"])*"|\'[^\']*\''
|
|
55
|
+
r"|<<-?\s*(?:'([^']+)'|\"([^\"]+)\"|([A-Za-z_][A-Za-z0-9_]*))"
|
|
56
|
+
)
|
|
57
|
+
index = 0
|
|
58
|
+
while index < len(lines):
|
|
59
|
+
line = lines[index]
|
|
60
|
+
output.append(line)
|
|
61
|
+
pending.extend(
|
|
62
|
+
next(group for group in match.groups() if group)
|
|
63
|
+
for match in marker_pattern.finditer(line)
|
|
64
|
+
if any(match.groups())
|
|
65
|
+
)
|
|
66
|
+
index += 1
|
|
67
|
+
# Consume every pending heredoc body in order (chained same-line
|
|
68
|
+
# heredocs, e.g. `cat <<A <<B`, push more than one marker at once).
|
|
69
|
+
# Do NOT stop after the first terminator — dropping the `break` lets
|
|
70
|
+
# this loop keep dropping body lines until each pending marker is
|
|
71
|
+
# matched, instead of leaking the second body back into `output`
|
|
72
|
+
# where the destructive-pattern guards would see it.
|
|
73
|
+
while pending and index < len(lines):
|
|
74
|
+
if lines[index].strip() == pending[0]:
|
|
75
|
+
output.append(lines[index])
|
|
76
|
+
pending.pop(0)
|
|
77
|
+
index += 1
|
|
78
|
+
return "\n".join(output)
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
print(strip_heredocs(command), end="")
|
|
82
|
+
PY
|
|
83
|
+
)"
|
|
84
|
+
fi
|
|
85
|
+
|
|
35
86
|
# block() prints the reason to stderr (surfaced to the model) and exits 2 so the
|
|
36
87
|
# Bash tool call is denied. $1 = human-readable reason for the block.
|
|
37
88
|
block() {
|
|
@@ -49,11 +100,11 @@ EOF
|
|
|
49
100
|
# wildcard. Two gates ANDed: the command must invoke `rm` with BOTH a
|
|
50
101
|
# recursive and a force flag, AND name a catastrophic target. Splitting the
|
|
51
102
|
# flag check from the target check keeps each regex legible and testable.
|
|
52
|
-
if printf '%s' "$
|
|
103
|
+
if printf '%s' "$command_for_guards" \
|
|
53
104
|
| grep -Eiq '(^|[^[:alnum:]_./-])rm([[:space:]]+-[[:alnum:]-]+)*[[:space:]]+(-[[:alnum:]]*r[[:alnum:]]*f|-[[:alnum:]]*f[[:alnum:]]*r)([[:space:]]|$)' \
|
|
54
|
-
|| printf '%s' "$
|
|
105
|
+
|| printf '%s' "$command_for_guards" \
|
|
55
106
|
| grep -Eiq '(^|[^[:alnum:]_./-])rm[[:space:]].*(-r\b.*[[:space:]]-f\b|-f\b.*[[:space:]]-r\b|--recursive\b.*--force\b|--force\b.*--recursive\b)'; then
|
|
56
|
-
if printf '%s' "$
|
|
107
|
+
if printf '%s' "$command_for_guards" \
|
|
57
108
|
| grep -Eq '([[:space:]]|=)(/|/\*|/\.\*?|~|~/\*?|\$HOME\b|\$\{HOME\}|\*)([[:space:]]|/?\*?$)'; then
|
|
58
109
|
block "recursive forced delete of a root, home, or wildcard path (rm -rf)"
|
|
59
110
|
fi
|
|
@@ -76,7 +127,7 @@ fi
|
|
|
76
127
|
# \<newline>main" splits into a segment matching --force but not `main`, letting a
|
|
77
128
|
# protected force-push slip past. Uses awk (POSIX) instead of a GNU-only
|
|
78
129
|
# `sed ':a;N;$!ba;…'`, which errors on BSD sed (macOS) and there silently no-ops.
|
|
79
|
-
normalized_command_str="$(printf '%s' "$
|
|
130
|
+
normalized_command_str="$(printf '%s' "$command_for_guards" \
|
|
80
131
|
| awk '{ if (sub(/\\$/, "")) printf "%s ", $0; else print }')"
|
|
81
132
|
|
|
82
133
|
while IFS= read -r push_stmt; do
|
|
@@ -93,7 +144,7 @@ done < <(printf '%s' "$normalized_command_str" | tr '&|;' '\n' \
|
|
|
93
144
|
# 3. `git reset --hard` while the working tree has uncommitted changes — this
|
|
94
145
|
# silently discards them. Only blocks when the tree is actually dirty, so a
|
|
95
146
|
# clean-tree reset (a legitimate workflow) still passes.
|
|
96
|
-
if printf '%s' "$
|
|
147
|
+
if printf '%s' "$command_for_guards" | grep -Eiq '(^|[^[:alnum:]_-])git[[:space:]]+reset\b.*--hard\b'; then
|
|
97
148
|
if git rev-parse --is-inside-work-tree >/dev/null 2>&1 \
|
|
98
149
|
&& [ -n "$(git status --porcelain 2>/dev/null)" ]; then
|
|
99
150
|
block "git reset --hard on a dirty working tree would discard uncommitted changes (stash or commit first)"
|
|
@@ -101,7 +152,7 @@ if printf '%s' "$command_str" | grep -Eiq '(^|[^[:alnum:]_-])git[[:space:]]+rese
|
|
|
101
152
|
fi
|
|
102
153
|
|
|
103
154
|
# 4. Dropping or truncating a database / schema / table.
|
|
104
|
-
if printf '%s' "$
|
|
155
|
+
if printf '%s' "$command_for_guards" \
|
|
105
156
|
| grep -Eiq '\b(drop[[:space:]]+(database|schema|table)|truncate[[:space:]]+(table[[:space:]]+)?[[:alnum:]_."`]+)\b'; then
|
|
106
157
|
block "destructive SQL (DROP/TRUNCATE) detected"
|
|
107
158
|
fi
|
|
@@ -113,7 +164,7 @@ if [ -f "$rules_file" ]; then
|
|
|
113
164
|
case "$rule" in
|
|
114
165
|
'' | '#'*) continue ;;
|
|
115
166
|
esac
|
|
116
|
-
if printf '%s' "$
|
|
167
|
+
if printf '%s' "$command_for_guards" | grep -Eiq -- "$rule"; then
|
|
117
168
|
block "matched a project custom safety rule (${rules_file##*/}): $rule"
|
|
118
169
|
fi
|
|
119
170
|
done <"$rules_file"
|
|
@@ -17,7 +17,7 @@ Every artifact with inline body content gets exactly one section:
|
|
|
17
17
|
Each direct entry records ONE logical Lisa run on ONE artifact. `entry_id` is the stable dedupe key — rewriting the same logical run with the same `entry_id` updates in place; a different run gets a different `entry_id`.
|
|
18
18
|
|
|
19
19
|
- **`source`**: `observed` (runtime supplied) / `estimated` (derived from trustworthy metadata + pricing contract) / `measured-subset` (a trustworthy subtotal exists, but the complete run total is unknown) / `unavailable`.
|
|
20
|
-
- **`measured_subset_tokens`**: measured subtotal for `measured-subset` entries only. Keep `total_tokens = null` so rollups do not treat a subset as a complete total.
|
|
20
|
+
- **`measured_subset_tokens`**: optional measured subtotal for `measured-subset` entries only. Omission is normalized to `null` for backward-compatible callers. Keep `total_tokens = null` so rollups do not treat a subset as a complete total.
|
|
21
21
|
- **`pricing_status`**: same trinary plus `missing` (cost not known but should be).
|
|
22
22
|
- **Absence ≠ zero.** `null` means unknown; `0` means explicitly zero. Always write the entry — never silently omit.
|
|
23
23
|
- Do NOT replace observed counts with estimates.
|
|
@@ -26,4 +26,8 @@ Each direct entry records ONE logical Lisa run on ONE artifact. `entry_id` is th
|
|
|
26
26
|
|
|
27
27
|
Container artifacts (Epic, PRD, etc.) roll up usage from their direct children. Roll-up is recursive — a parent's `## Lisa Usage` aggregates its descendants' direct entries. Re-writes are idempotent: re-running an intake or lifecycle skill must not duplicate entries.
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
Measured-child incompleteness is durable across ordinary rewrites through the optional
|
|
30
|
+
`lisa:usage-rollup-token-status` extension. Do not infer completeness merely because a rewrite did
|
|
31
|
+
not re-fetch child ledgers.
|
|
32
|
+
|
|
33
|
+
Full schema (backward-compatible 17-field primary marker, correlated measured-subset extension, pricing semantics, rollup math, idempotent-migration rules): [reference/usage-accounting.md](../reference/usage-accounting.md).
|