@cleocode/cleo 2026.5.66 → 2026.5.68
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/cli/index.js +163 -46
- package/dist/cli/index.js.map +3 -3
- package/package.json +10 -10
package/dist/cli/index.js
CHANGED
|
@@ -24279,8 +24279,8 @@ async function loadPlaybookByName(name) {
|
|
|
24279
24279
|
return null;
|
|
24280
24280
|
}
|
|
24281
24281
|
try {
|
|
24282
|
-
const { getProjectRoot:
|
|
24283
|
-
const projectRoot = __playbookRuntimeOverrides.projectRoot ??
|
|
24282
|
+
const { getProjectRoot: getProjectRoot35 } = await import("@cleocode/core/internal");
|
|
24283
|
+
const projectRoot = __playbookRuntimeOverrides.projectRoot ?? getProjectRoot35();
|
|
24284
24284
|
const resolved = resolvePlaybook(name, {
|
|
24285
24285
|
projectRoot,
|
|
24286
24286
|
globalPlaybooksDir: __playbookRuntimeOverrides.globalPlaybooksDir,
|
|
@@ -24324,8 +24324,8 @@ async function acquireDb() {
|
|
|
24324
24324
|
async function buildDefaultDispatcher() {
|
|
24325
24325
|
if (__playbookRuntimeOverrides.dispatcher) return __playbookRuntimeOverrides.dispatcher;
|
|
24326
24326
|
const { orchestrateSpawnExecute: orchestrateSpawnExecute2 } = await Promise.resolve().then(() => (init_engine(), engine_exports));
|
|
24327
|
-
const { getProjectRoot:
|
|
24328
|
-
const projectRoot =
|
|
24327
|
+
const { getProjectRoot: getProjectRoot35 } = await import("@cleocode/core/internal");
|
|
24328
|
+
const projectRoot = getProjectRoot35();
|
|
24329
24329
|
return {
|
|
24330
24330
|
async dispatch(input) {
|
|
24331
24331
|
try {
|
|
@@ -24515,8 +24515,8 @@ var init_playbook2 = __esm({
|
|
|
24515
24515
|
projectRoot = __playbookRuntimeOverrides.projectRoot;
|
|
24516
24516
|
} else {
|
|
24517
24517
|
try {
|
|
24518
|
-
const { getProjectRoot:
|
|
24519
|
-
projectRoot =
|
|
24518
|
+
const { getProjectRoot: getProjectRoot35 } = await import("@cleocode/core/internal");
|
|
24519
|
+
projectRoot = getProjectRoot35();
|
|
24520
24520
|
} catch {
|
|
24521
24521
|
projectRoot = void 0;
|
|
24522
24522
|
}
|
|
@@ -24580,14 +24580,14 @@ var init_playbook2 = __esm({
|
|
|
24580
24580
|
const dispatcher = await buildDefaultDispatcher();
|
|
24581
24581
|
let result;
|
|
24582
24582
|
try {
|
|
24583
|
-
const { getProjectRoot:
|
|
24583
|
+
const { getProjectRoot: getProjectRoot35 } = await import("@cleocode/core/internal");
|
|
24584
24584
|
const opts = {
|
|
24585
24585
|
db,
|
|
24586
24586
|
playbook: parsed.definition,
|
|
24587
24587
|
playbookHash: parsed.sourceHash,
|
|
24588
24588
|
initialContext,
|
|
24589
24589
|
dispatcher,
|
|
24590
|
-
projectRoot:
|
|
24590
|
+
projectRoot: getProjectRoot35()
|
|
24591
24591
|
};
|
|
24592
24592
|
if (__playbookRuntimeOverrides.approvalSecret !== void 0) {
|
|
24593
24593
|
opts.approvalSecret = __playbookRuntimeOverrides.approvalSecret;
|
|
@@ -29496,11 +29496,11 @@ var init_security = __esm({
|
|
|
29496
29496
|
});
|
|
29497
29497
|
|
|
29498
29498
|
// packages/cleo/src/dispatch/middleware/sanitizer.ts
|
|
29499
|
-
function createSanitizer(
|
|
29499
|
+
function createSanitizer(getProjectRoot35) {
|
|
29500
29500
|
return async (req, next) => {
|
|
29501
29501
|
if (req.params) {
|
|
29502
29502
|
try {
|
|
29503
|
-
const root =
|
|
29503
|
+
const root = getProjectRoot35 ? getProjectRoot35() : void 0;
|
|
29504
29504
|
req.params = sanitizeParams(req.params, root, {
|
|
29505
29505
|
domain: req.domain,
|
|
29506
29506
|
operation: req.operation
|
|
@@ -34722,9 +34722,9 @@ var init_backup = __esm({
|
|
|
34722
34722
|
},
|
|
34723
34723
|
async run({ args }) {
|
|
34724
34724
|
const scope = args.scope;
|
|
34725
|
-
const { packBundle, getProjectRoot:
|
|
34725
|
+
const { packBundle, getProjectRoot: getProjectRoot35 } = await import("@cleocode/core/internal");
|
|
34726
34726
|
const includesProject = scope === "project" || scope === "all";
|
|
34727
|
-
const projectRoot = includesProject ?
|
|
34727
|
+
const projectRoot = includesProject ? getProjectRoot35() : void 0;
|
|
34728
34728
|
let passphrase;
|
|
34729
34729
|
if (args.encrypt === true) {
|
|
34730
34730
|
passphrase = process.env["CLEO_BACKUP_PASSPHRASE"];
|
|
@@ -44054,6 +44054,115 @@ var init_list = __esm({
|
|
|
44054
44054
|
}
|
|
44055
44055
|
});
|
|
44056
44056
|
|
|
44057
|
+
// packages/cleo/src/cli/commands/llm-cost.ts
|
|
44058
|
+
var llm_cost_exports = {};
|
|
44059
|
+
__export(llm_cost_exports, {
|
|
44060
|
+
costCommand: () => costCommand
|
|
44061
|
+
});
|
|
44062
|
+
import { getProjectRoot as getProjectRoot26 } from "@cleocode/core/internal";
|
|
44063
|
+
import { computeCost } from "@cleocode/core/llm/usage-pricing";
|
|
44064
|
+
function resolveSessionId(raw) {
|
|
44065
|
+
if (raw === "current") {
|
|
44066
|
+
const envId = process.env["CLEO_SESSION_ID"];
|
|
44067
|
+
if (envId) return envId;
|
|
44068
|
+
return "current";
|
|
44069
|
+
}
|
|
44070
|
+
return raw;
|
|
44071
|
+
}
|
|
44072
|
+
async function loadSessionCostBreakdown(projectRoot, sessionId) {
|
|
44073
|
+
const { listTokenUsage: listTokenUsage2 } = await import(
|
|
44074
|
+
/* webpackIgnore: true */
|
|
44075
|
+
"@cleocode/core/internal"
|
|
44076
|
+
);
|
|
44077
|
+
const result = await listTokenUsage2(projectRoot, {
|
|
44078
|
+
sessionId,
|
|
44079
|
+
limit: 1e3
|
|
44080
|
+
// Practical upper bound for a single session.
|
|
44081
|
+
});
|
|
44082
|
+
const entries = result.records.map(
|
|
44083
|
+
(row) => {
|
|
44084
|
+
const usage = {
|
|
44085
|
+
inputTokens: row.inputTokens,
|
|
44086
|
+
outputTokens: row.outputTokens
|
|
44087
|
+
};
|
|
44088
|
+
const model = row.model ?? "unknown";
|
|
44089
|
+
return {
|
|
44090
|
+
id: row.id,
|
|
44091
|
+
provider: row.provider,
|
|
44092
|
+
model: row.model,
|
|
44093
|
+
usage,
|
|
44094
|
+
costUsd: computeCost(usage, model),
|
|
44095
|
+
createdAt: row.createdAt
|
|
44096
|
+
};
|
|
44097
|
+
}
|
|
44098
|
+
);
|
|
44099
|
+
entries.sort((a, b) => a.createdAt.localeCompare(b.createdAt));
|
|
44100
|
+
return entries;
|
|
44101
|
+
}
|
|
44102
|
+
var costCommand;
|
|
44103
|
+
var init_llm_cost = __esm({
|
|
44104
|
+
"packages/cleo/src/cli/commands/llm-cost.ts"() {
|
|
44105
|
+
"use strict";
|
|
44106
|
+
init_dist();
|
|
44107
|
+
init_renderers();
|
|
44108
|
+
costCommand = defineCommand({
|
|
44109
|
+
meta: {
|
|
44110
|
+
name: "cost",
|
|
44111
|
+
description: 'Compute cumulative USD cost for an LLM session from recorded token_usage entries. Use "current" to resolve the active session from CLEO_SESSION_ID. Returns totalUsd=0 when no usage records exist yet (ADR-072 Wave 4b pending).'
|
|
44112
|
+
},
|
|
44113
|
+
args: {
|
|
44114
|
+
sessionId: {
|
|
44115
|
+
type: "positional",
|
|
44116
|
+
description: 'Session id to query, or "current" for the active session',
|
|
44117
|
+
required: true
|
|
44118
|
+
},
|
|
44119
|
+
json: {
|
|
44120
|
+
type: "boolean",
|
|
44121
|
+
description: "Output as JSON"
|
|
44122
|
+
}
|
|
44123
|
+
},
|
|
44124
|
+
async run({ args }) {
|
|
44125
|
+
const a = args;
|
|
44126
|
+
const rawSessionId = String(a["sessionId"] ?? "");
|
|
44127
|
+
if (!rawSessionId) {
|
|
44128
|
+
cliError("session-id is required", 6, {
|
|
44129
|
+
name: "E_VALIDATION",
|
|
44130
|
+
fix: 'Provide a session id or "current": cleo llm cost <session-id>'
|
|
44131
|
+
});
|
|
44132
|
+
process.exit(6);
|
|
44133
|
+
}
|
|
44134
|
+
const sessionId = resolveSessionId(rawSessionId);
|
|
44135
|
+
const projectRoot = getProjectRoot26(process.cwd());
|
|
44136
|
+
let breakdown;
|
|
44137
|
+
try {
|
|
44138
|
+
breakdown = await loadSessionCostBreakdown(projectRoot, sessionId);
|
|
44139
|
+
} catch (err) {
|
|
44140
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
44141
|
+
cliError(`Failed to query token_usage: ${message}`, 1, {
|
|
44142
|
+
name: "E_QUERY_FAILED",
|
|
44143
|
+
fix: "Ensure tasks.db is initialized: cleo session start"
|
|
44144
|
+
});
|
|
44145
|
+
process.exit(1);
|
|
44146
|
+
}
|
|
44147
|
+
const totalUsd = breakdown.reduce((sum, entry) => sum + entry.costUsd, 0);
|
|
44148
|
+
const result = {
|
|
44149
|
+
sessionId,
|
|
44150
|
+
totalUsd,
|
|
44151
|
+
recordCount: breakdown.length,
|
|
44152
|
+
breakdown
|
|
44153
|
+
};
|
|
44154
|
+
if (breakdown.length === 0) {
|
|
44155
|
+
result.note = "No token_usage records found for this session. Live usage wiring is pending ADR-072 Wave 4b (LlmExecutor done event). Records will appear automatically once that wave ships.";
|
|
44156
|
+
}
|
|
44157
|
+
cliOutput(result, {
|
|
44158
|
+
command: "llm-cost",
|
|
44159
|
+
operation: "llm.cost"
|
|
44160
|
+
});
|
|
44161
|
+
}
|
|
44162
|
+
});
|
|
44163
|
+
}
|
|
44164
|
+
});
|
|
44165
|
+
|
|
44057
44166
|
// packages/cleo/src/cli/commands/llm-login.ts
|
|
44058
44167
|
import { addCredential } from "@cleocode/core/llm/credentials-store.js";
|
|
44059
44168
|
import {
|
|
@@ -44234,6 +44343,7 @@ var init_llm3 = __esm({
|
|
|
44234
44343
|
init_dist();
|
|
44235
44344
|
init_cli();
|
|
44236
44345
|
init_renderers();
|
|
44346
|
+
init_llm_cost();
|
|
44237
44347
|
init_llm_login();
|
|
44238
44348
|
API_KEY_FLAG_DEPRECATION = "[warning] --api-key exposes the secret to 'ps' listings and shell history. Prefer --api-key-stdin or --api-key-env=NAME for production use.";
|
|
44239
44349
|
addCommand5 = defineCommand({
|
|
@@ -44552,6 +44662,7 @@ var init_llm3 = __esm({
|
|
|
44552
44662
|
},
|
|
44553
44663
|
subCommands: {
|
|
44554
44664
|
add: addCommand5,
|
|
44665
|
+
cost: costCommand,
|
|
44555
44666
|
list: listCommand10,
|
|
44556
44667
|
login: loginCommand,
|
|
44557
44668
|
remove: removeCommand3,
|
|
@@ -45002,7 +45113,7 @@ import {
|
|
|
45002
45113
|
getBrainDb as getBrainDb2,
|
|
45003
45114
|
getBrainNativeDb as getBrainNativeDb3,
|
|
45004
45115
|
getDreamStatus,
|
|
45005
|
-
getProjectRoot as
|
|
45116
|
+
getProjectRoot as getProjectRoot27,
|
|
45006
45117
|
runConsolidation,
|
|
45007
45118
|
triggerManualDream
|
|
45008
45119
|
} from "@cleocode/core/internal";
|
|
@@ -45963,7 +46074,7 @@ var init_memory3 = __esm({
|
|
|
45963
46074
|
},
|
|
45964
46075
|
args: {},
|
|
45965
46076
|
async run() {
|
|
45966
|
-
const root =
|
|
46077
|
+
const root = getProjectRoot27();
|
|
45967
46078
|
try {
|
|
45968
46079
|
const result = await runConsolidation(root);
|
|
45969
46080
|
cliOutput(result, { command: "memory-consolidate", operation: "memory.consolidate" });
|
|
@@ -45987,7 +46098,7 @@ var init_memory3 = __esm({
|
|
|
45987
46098
|
}
|
|
45988
46099
|
},
|
|
45989
46100
|
async run({ args }) {
|
|
45990
|
-
const root =
|
|
46101
|
+
const root = getProjectRoot27();
|
|
45991
46102
|
if (args.status) {
|
|
45992
46103
|
try {
|
|
45993
46104
|
const status = await getDreamStatus(root);
|
|
@@ -46024,7 +46135,7 @@ var init_memory3 = __esm({
|
|
|
46024
46135
|
}
|
|
46025
46136
|
},
|
|
46026
46137
|
async run({ args }) {
|
|
46027
|
-
const root =
|
|
46138
|
+
const root = getProjectRoot27();
|
|
46028
46139
|
try {
|
|
46029
46140
|
const { runObserver, runReflector } = await import("@cleocode/core/internal");
|
|
46030
46141
|
const observerResult = await runObserver(root, args.session, {
|
|
@@ -46064,7 +46175,7 @@ var init_memory3 = __esm({
|
|
|
46064
46175
|
}
|
|
46065
46176
|
},
|
|
46066
46177
|
async run({ args }) {
|
|
46067
|
-
const root =
|
|
46178
|
+
const root = getProjectRoot27();
|
|
46068
46179
|
try {
|
|
46069
46180
|
const { getBrainDb: getBrainDbInner, getBrainNativeDb: getBrainNativeDbInner } = await import("@cleocode/core/internal");
|
|
46070
46181
|
await getBrainDbInner(root);
|
|
@@ -46162,7 +46273,7 @@ var init_memory3 = __esm({
|
|
|
46162
46273
|
async run({ args }) {
|
|
46163
46274
|
const sourceDir = args.from ?? join19(homedir6(), ".claude", "projects", "-mnt-projects-cleocode", "memory");
|
|
46164
46275
|
const isDryRun = !!args["dry-run"];
|
|
46165
|
-
const projectRoot =
|
|
46276
|
+
const projectRoot = getProjectRoot27();
|
|
46166
46277
|
const stateFile = join19(projectRoot, CLEO_DIR_NAME, MIGRATE_MEMORY_HASHES_JSON);
|
|
46167
46278
|
if (!existsSync14(sourceDir)) {
|
|
46168
46279
|
cliError(`Source directory not found: ${sourceDir}`, "E_NOT_FOUND", { name: "E_NOT_FOUND" });
|
|
@@ -46375,7 +46486,7 @@ var init_memory3 = __esm({
|
|
|
46375
46486
|
},
|
|
46376
46487
|
args: {},
|
|
46377
46488
|
async run() {
|
|
46378
|
-
const root =
|
|
46489
|
+
const root = getProjectRoot27();
|
|
46379
46490
|
try {
|
|
46380
46491
|
await getBrainDb2(root);
|
|
46381
46492
|
const nativeDb = getBrainNativeDb3();
|
|
@@ -46474,7 +46585,7 @@ var init_memory3 = __esm({
|
|
|
46474
46585
|
}
|
|
46475
46586
|
},
|
|
46476
46587
|
async run({ args }) {
|
|
46477
|
-
const root =
|
|
46588
|
+
const root = getProjectRoot27();
|
|
46478
46589
|
const targetTier = args.to;
|
|
46479
46590
|
const reason = args.reason;
|
|
46480
46591
|
const validTiers = ["medium", "long"];
|
|
@@ -46578,7 +46689,7 @@ var init_memory3 = __esm({
|
|
|
46578
46689
|
}
|
|
46579
46690
|
},
|
|
46580
46691
|
async run({ args }) {
|
|
46581
|
-
const root =
|
|
46692
|
+
const root = getProjectRoot27();
|
|
46582
46693
|
const targetTier = args.to;
|
|
46583
46694
|
const reason = args.reason;
|
|
46584
46695
|
const validTiers = ["short", "medium"];
|
|
@@ -47092,7 +47203,7 @@ var migrate_claude_mem_exports = {};
|
|
|
47092
47203
|
__export(migrate_claude_mem_exports, {
|
|
47093
47204
|
migrateClaudeMemCommand: () => migrateClaudeMemCommand
|
|
47094
47205
|
});
|
|
47095
|
-
import { getProjectRoot as
|
|
47206
|
+
import { getProjectRoot as getProjectRoot28, migrateClaudeMem } from "@cleocode/core/internal";
|
|
47096
47207
|
import { ingestLooseAgentOutputs, ingestRcasdDirectories } from "@cleocode/core/memory";
|
|
47097
47208
|
import { getDb as getDb2 } from "@cleocode/core/store/sqlite";
|
|
47098
47209
|
var storageCommand, claudeMemCommand, manifestIngestCommand, migrateClaudeMemCommand;
|
|
@@ -47155,7 +47266,7 @@ var init_migrate_claude_mem = __esm({
|
|
|
47155
47266
|
}
|
|
47156
47267
|
},
|
|
47157
47268
|
async run({ args }) {
|
|
47158
|
-
const root =
|
|
47269
|
+
const root = getProjectRoot28();
|
|
47159
47270
|
try {
|
|
47160
47271
|
const result = await migrateClaudeMem(root, {
|
|
47161
47272
|
sourcePath: args.source,
|
|
@@ -47204,7 +47315,7 @@ var init_migrate_claude_mem = __esm({
|
|
|
47204
47315
|
}
|
|
47205
47316
|
},
|
|
47206
47317
|
async run({ args }) {
|
|
47207
|
-
const projectRoot =
|
|
47318
|
+
const projectRoot = getProjectRoot28();
|
|
47208
47319
|
try {
|
|
47209
47320
|
const db = await getDb2(projectRoot);
|
|
47210
47321
|
const rcasdFlag = Boolean(args.rcasd);
|
|
@@ -48149,7 +48260,7 @@ var init_nexus4 = __esm({
|
|
|
48149
48260
|
const repoPath = args.path ? path4.resolve(args.path) : process.cwd();
|
|
48150
48261
|
humanInfo(`[nexus] Analyzing: ${repoPath}${isIncremental ? " (incremental)" : ""}`);
|
|
48151
48262
|
try {
|
|
48152
|
-
const [{ getNexusDb, nexusSchema }, { runPipeline }, { getProjectRoot:
|
|
48263
|
+
const [{ getNexusDb, nexusSchema }, { runPipeline }, { getProjectRoot: getProjectRoot35 }, { eq: eq2 }] = await Promise.all([
|
|
48153
48264
|
import("@cleocode/core/store/nexus-sqlite"),
|
|
48154
48265
|
import("@cleocode/nexus/pipeline"),
|
|
48155
48266
|
import("@cleocode/core/internal"),
|
|
@@ -48229,7 +48340,7 @@ var init_nexus4 = __esm({
|
|
|
48229
48340
|
extensions: { duration_ms: durationMs }
|
|
48230
48341
|
}
|
|
48231
48342
|
);
|
|
48232
|
-
void
|
|
48343
|
+
void getProjectRoot35;
|
|
48233
48344
|
} catch (err) {
|
|
48234
48345
|
const msg = err instanceof Error ? err.message : String(err);
|
|
48235
48346
|
cliError(
|
|
@@ -51831,7 +51942,7 @@ var refresh_memory_exports = {};
|
|
|
51831
51942
|
__export(refresh_memory_exports, {
|
|
51832
51943
|
refreshMemoryCommand: () => refreshMemoryCommand
|
|
51833
51944
|
});
|
|
51834
|
-
import { getProjectRoot as
|
|
51945
|
+
import { getProjectRoot as getProjectRoot29 } from "@cleocode/core";
|
|
51835
51946
|
var refreshMemoryCommand;
|
|
51836
51947
|
var init_refresh_memory = __esm({
|
|
51837
51948
|
"packages/cleo/src/cli/commands/refresh-memory.ts"() {
|
|
@@ -51844,7 +51955,7 @@ var init_refresh_memory = __esm({
|
|
|
51844
51955
|
description: "Regenerate .cleo/memory-bridge.md from brain.db"
|
|
51845
51956
|
},
|
|
51846
51957
|
async run() {
|
|
51847
|
-
const projectDir =
|
|
51958
|
+
const projectDir = getProjectRoot29();
|
|
51848
51959
|
const { writeMemoryBridge } = await import("@cleocode/core/internal");
|
|
51849
51960
|
const result = await writeMemoryBridge(projectDir);
|
|
51850
51961
|
if (result.written) {
|
|
@@ -53154,7 +53265,7 @@ __export(restore_exports, {
|
|
|
53154
53265
|
import fs3 from "node:fs";
|
|
53155
53266
|
import path5 from "node:path";
|
|
53156
53267
|
import { CleoError as CleoError8, getTaskAccessor as getTaskAccessor3 } from "@cleocode/core";
|
|
53157
|
-
import { getProjectRoot as
|
|
53268
|
+
import { getProjectRoot as getProjectRoot30 } from "@cleocode/core/internal";
|
|
53158
53269
|
function parseMarkdownValue(raw) {
|
|
53159
53270
|
const trimmed = raw.trim();
|
|
53160
53271
|
if (trimmed === "_(not present)_" || trimmed === "") return void 0;
|
|
@@ -53274,7 +53385,7 @@ var init_restore = __esm({
|
|
|
53274
53385
|
description: "Apply manually-resolved conflicts from .cleo/restore-conflicts.md"
|
|
53275
53386
|
},
|
|
53276
53387
|
async run() {
|
|
53277
|
-
const projectRoot =
|
|
53388
|
+
const projectRoot = getProjectRoot30();
|
|
53278
53389
|
const reportPath = path5.join(projectRoot, CLEO_DIR_NAME, RESTORE_CONFLICTS_MD);
|
|
53279
53390
|
if (!fs3.existsSync(reportPath)) {
|
|
53280
53391
|
humanLine("No pending restore conflicts. Nothing to finalize.");
|
|
@@ -55249,7 +55360,7 @@ var sequence_exports = {};
|
|
|
55249
55360
|
__export(sequence_exports, {
|
|
55250
55361
|
sequenceCommand: () => sequenceCommand
|
|
55251
55362
|
});
|
|
55252
|
-
import { getProjectRoot as
|
|
55363
|
+
import { getProjectRoot as getProjectRoot31 } from "@cleocode/core/internal";
|
|
55253
55364
|
var showCommand12, checkCommand6, repairCommand, sequenceCommand;
|
|
55254
55365
|
var init_sequence = __esm({
|
|
55255
55366
|
"packages/cleo/src/cli/commands/sequence.ts"() {
|
|
@@ -55285,7 +55396,7 @@ var init_sequence = __esm({
|
|
|
55285
55396
|
meta: { name: "repair", description: "Reset counter to max + 1 if behind" },
|
|
55286
55397
|
async run() {
|
|
55287
55398
|
const { repairSequence } = await import("@cleocode/core/internal");
|
|
55288
|
-
const projectRoot =
|
|
55399
|
+
const projectRoot = getProjectRoot31();
|
|
55289
55400
|
const repair = await repairSequence(projectRoot);
|
|
55290
55401
|
const result = {
|
|
55291
55402
|
repaired: repair.repaired,
|
|
@@ -55728,8 +55839,8 @@ var init_session4 = __esm({
|
|
|
55728
55839
|
"audit-scope": { type: "string", description: "Audit log scope (global|local)" }
|
|
55729
55840
|
},
|
|
55730
55841
|
async run({ args }) {
|
|
55731
|
-
const { detectSessionDrift, getProjectRoot:
|
|
55732
|
-
const projectRoot = await
|
|
55842
|
+
const { detectSessionDrift, getProjectRoot: getProjectRoot35 } = await import("@cleocode/core");
|
|
55843
|
+
const projectRoot = await getProjectRoot35();
|
|
55733
55844
|
const scope = args["audit-scope"] === "local" ? "local" : "global";
|
|
55734
55845
|
const report = await detectSessionDrift({ projectRoot, auditScope: scope });
|
|
55735
55846
|
cliOutput(report, { command: "session drift", operation: "session.drift" });
|
|
@@ -57237,7 +57348,7 @@ __export(token_exports, {
|
|
|
57237
57348
|
tokenCommand: () => tokenCommand
|
|
57238
57349
|
});
|
|
57239
57350
|
import { readFileSync as readFileSync15 } from "node:fs";
|
|
57240
|
-
import { getProjectRoot as
|
|
57351
|
+
import { getProjectRoot as getProjectRoot32, measureTokenExchange, recordTokenExchange as recordTokenExchange2 } from "@cleocode/core/internal";
|
|
57241
57352
|
function readPayload(args, textKey, fileKey) {
|
|
57242
57353
|
const text = args[textKey];
|
|
57243
57354
|
const file = args[fileKey];
|
|
@@ -57401,7 +57512,7 @@ var init_token = __esm({
|
|
|
57401
57512
|
domain: args.domain,
|
|
57402
57513
|
operation: args.operation
|
|
57403
57514
|
};
|
|
57404
|
-
const result = args.record ? await recordTokenExchange2(
|
|
57515
|
+
const result = args.record ? await recordTokenExchange2(getProjectRoot32(), input) : await measureTokenExchange(input);
|
|
57405
57516
|
cliOutput(result, {
|
|
57406
57517
|
command: "token",
|
|
57407
57518
|
operation: args.record ? "admin.token.record" : "token.estimate"
|
|
@@ -57437,7 +57548,7 @@ __export(transcript_exports, {
|
|
|
57437
57548
|
});
|
|
57438
57549
|
import { homedir as homedir8 } from "node:os";
|
|
57439
57550
|
import { join as join23 } from "node:path";
|
|
57440
|
-
import { getProjectRoot as
|
|
57551
|
+
import { getProjectRoot as getProjectRoot33 } from "@cleocode/core";
|
|
57441
57552
|
import {
|
|
57442
57553
|
parseDurationMs,
|
|
57443
57554
|
pruneTranscripts,
|
|
@@ -57467,7 +57578,7 @@ var init_transcript = __esm({
|
|
|
57467
57578
|
async run({ args }) {
|
|
57468
57579
|
if (args.pending) {
|
|
57469
57580
|
try {
|
|
57470
|
-
const projectRoot =
|
|
57581
|
+
const projectRoot = getProjectRoot33();
|
|
57471
57582
|
const { scanPendingTranscripts } = await import("@cleocode/core/memory/transcript-scanner.js");
|
|
57472
57583
|
const pending = await scanPendingTranscripts(projectRoot);
|
|
57473
57584
|
cliOutput(
|
|
@@ -57564,7 +57675,7 @@ var init_transcript = __esm({
|
|
|
57564
57675
|
async run({ args }) {
|
|
57565
57676
|
const tier = args.tier ?? "warm";
|
|
57566
57677
|
const dryRun = args["dry-run"] ?? false;
|
|
57567
|
-
const projectRoot =
|
|
57678
|
+
const projectRoot = getProjectRoot33();
|
|
57568
57679
|
try {
|
|
57569
57680
|
const { extractTranscript } = await import("@cleocode/core/memory/transcript-extractor.js");
|
|
57570
57681
|
const { findSessionTranscriptPath, listAllTranscripts } = await import("@cleocode/core/memory/transcript-scanner.js");
|
|
@@ -57676,7 +57787,7 @@ var init_transcript = __esm({
|
|
|
57676
57787
|
const dryRun = args["dry-run"] ?? false;
|
|
57677
57788
|
const olderThanHours = args["older-than-hours"] ? Number.parseInt(args["older-than-hours"], 10) : 24;
|
|
57678
57789
|
const limit = args.limit ? Number.parseInt(args.limit, 10) : void 0;
|
|
57679
|
-
const projectRoot =
|
|
57790
|
+
const projectRoot = getProjectRoot33();
|
|
57680
57791
|
try {
|
|
57681
57792
|
const { extractTranscript } = await import("@cleocode/core/memory/transcript-extractor.js");
|
|
57682
57793
|
const { listAllTranscripts } = await import("@cleocode/core/memory/transcript-scanner.js");
|
|
@@ -58278,7 +58389,7 @@ import { resolve as resolve6 } from "node:path";
|
|
|
58278
58389
|
import {
|
|
58279
58390
|
backfillAllPendingVerifiers,
|
|
58280
58391
|
backfillVerifier,
|
|
58281
|
-
getProjectRoot as
|
|
58392
|
+
getProjectRoot as getProjectRoot34,
|
|
58282
58393
|
resolveVerifierScript as resolveVerifierScript2,
|
|
58283
58394
|
runVerifier
|
|
58284
58395
|
} from "@cleocode/core";
|
|
@@ -58375,7 +58486,7 @@ var init_verify = __esm({
|
|
|
58375
58486
|
}
|
|
58376
58487
|
},
|
|
58377
58488
|
async run({ args, cmd }) {
|
|
58378
|
-
const projectRoot =
|
|
58489
|
+
const projectRoot = getProjectRoot34();
|
|
58379
58490
|
const force = !!args.force;
|
|
58380
58491
|
if (args["all-pending"]) {
|
|
58381
58492
|
await runBackfillAll(projectRoot, force);
|
|
@@ -58445,7 +58556,7 @@ var init_verify = __esm({
|
|
|
58445
58556
|
const taskIdArg = remainingArgs.find((a) => !a.startsWith("-"));
|
|
58446
58557
|
const allPending = remainingArgs.includes("--all-pending");
|
|
58447
58558
|
const force = remainingArgs.includes("--force");
|
|
58448
|
-
const projectRoot =
|
|
58559
|
+
const projectRoot = getProjectRoot34();
|
|
58449
58560
|
if (allPending) {
|
|
58450
58561
|
await runBackfillAll(projectRoot, force);
|
|
58451
58562
|
} else if (taskIdArg) {
|
|
@@ -59280,6 +59391,12 @@ var COMMAND_MANIFEST = [
|
|
|
59280
59391
|
description: "List tasks with optional filters",
|
|
59281
59392
|
load: async () => (await Promise.resolve().then(() => (init_list(), list_exports))).listCommand
|
|
59282
59393
|
},
|
|
59394
|
+
{
|
|
59395
|
+
exportName: "costCommand",
|
|
59396
|
+
name: "cost",
|
|
59397
|
+
description: "Compute cumulative USD cost for an LLM session from recorded token_usage entries. ",
|
|
59398
|
+
load: async () => (await Promise.resolve().then(() => (init_llm_cost(), llm_cost_exports))).costCommand
|
|
59399
|
+
},
|
|
59283
59400
|
{
|
|
59284
59401
|
exportName: "llmCommand",
|
|
59285
59402
|
name: "llm",
|
|
@@ -60053,7 +60170,7 @@ async function runStartupMaintenance() {
|
|
|
60053
60170
|
detectAndRemoveStrayProjectNexus,
|
|
60054
60171
|
getGlobalSalt,
|
|
60055
60172
|
getLogger: getLogger17,
|
|
60056
|
-
getProjectRoot:
|
|
60173
|
+
getProjectRoot: getProjectRoot35,
|
|
60057
60174
|
isCleanupMarkerSet,
|
|
60058
60175
|
migrateSignaldockToConduit,
|
|
60059
60176
|
needsSignaldockToConduitMigration,
|
|
@@ -60062,7 +60179,7 @@ async function runStartupMaintenance() {
|
|
|
60062
60179
|
} = await import("@cleocode/core/internal");
|
|
60063
60180
|
let projectRootForCleanup = "";
|
|
60064
60181
|
try {
|
|
60065
|
-
projectRootForCleanup =
|
|
60182
|
+
projectRootForCleanup = getProjectRoot35();
|
|
60066
60183
|
} catch {
|
|
60067
60184
|
}
|
|
60068
60185
|
if (!isCleanupMarkerSet(CLI_VERSION, projectRootForCleanup)) {
|
|
@@ -60082,7 +60199,7 @@ async function runStartupMaintenance() {
|
|
|
60082
60199
|
const isInitInvocation = process.argv.slice(2).some((a) => a === "init");
|
|
60083
60200
|
if (!isInitInvocation) {
|
|
60084
60201
|
try {
|
|
60085
|
-
const _projectRootForMigration =
|
|
60202
|
+
const _projectRootForMigration = getProjectRoot35();
|
|
60086
60203
|
if (needsSignaldockToConduitMigration(_projectRootForMigration)) {
|
|
60087
60204
|
const migrationResult = migrateSignaldockToConduit(_projectRootForMigration);
|
|
60088
60205
|
if (migrationResult.status === "failed") {
|