@x-code-cli/core 0.1.11 → 0.2.1
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/agent/api-errors.d.ts.map +1 -1
- package/dist/agent/api-errors.js +18 -0
- package/dist/agent/api-errors.js.map +1 -1
- package/dist/agent/diff.d.ts +35 -0
- package/dist/agent/diff.d.ts.map +1 -0
- package/dist/agent/diff.js +83 -0
- package/dist/agent/diff.js.map +1 -0
- package/dist/agent/loop-state.d.ts +45 -3
- package/dist/agent/loop-state.d.ts.map +1 -1
- package/dist/agent/loop-state.js +24 -3
- package/dist/agent/loop-state.js.map +1 -1
- package/dist/agent/loop.d.ts +10 -6
- package/dist/agent/loop.d.ts.map +1 -1
- package/dist/agent/loop.js +212 -30
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/plan-storage.d.ts +55 -0
- package/dist/agent/plan-storage.d.ts.map +1 -0
- package/dist/agent/plan-storage.js +156 -0
- package/dist/agent/plan-storage.js.map +1 -0
- package/dist/agent/session-store.d.ts +114 -0
- package/dist/agent/session-store.d.ts.map +1 -0
- package/dist/agent/session-store.js +415 -0
- package/dist/agent/session-store.js.map +1 -0
- package/dist/agent/sub-agents/built-in.d.ts +3 -0
- package/dist/agent/sub-agents/built-in.d.ts.map +1 -0
- package/dist/agent/sub-agents/built-in.js +98 -0
- package/dist/agent/sub-agents/built-in.js.map +1 -0
- package/dist/agent/sub-agents/index.d.ts +7 -0
- package/dist/agent/sub-agents/index.d.ts.map +1 -0
- package/dist/agent/sub-agents/index.js +5 -0
- package/dist/agent/sub-agents/index.js.map +1 -0
- package/dist/agent/sub-agents/loader.d.ts +5 -0
- package/dist/agent/sub-agents/loader.d.ts.map +1 -0
- package/dist/agent/sub-agents/loader.js +117 -0
- package/dist/agent/sub-agents/loader.js.map +1 -0
- package/dist/agent/sub-agents/registry.d.ts +14 -0
- package/dist/agent/sub-agents/registry.d.ts.map +1 -0
- package/dist/agent/sub-agents/registry.js +37 -0
- package/dist/agent/sub-agents/registry.js.map +1 -0
- package/dist/agent/sub-agents/runner.d.ts +26 -0
- package/dist/agent/sub-agents/runner.d.ts.map +1 -0
- package/dist/agent/sub-agents/runner.js +287 -0
- package/dist/agent/sub-agents/runner.js.map +1 -0
- package/dist/agent/sub-agents/types.d.ts +63 -0
- package/dist/agent/sub-agents/types.d.ts.map +1 -0
- package/dist/agent/sub-agents/types.js +2 -0
- package/dist/agent/sub-agents/types.js.map +1 -0
- package/dist/agent/system-prompt.d.ts +15 -0
- package/dist/agent/system-prompt.d.ts.map +1 -1
- package/dist/agent/system-prompt.js +161 -0
- package/dist/agent/system-prompt.js.map +1 -1
- package/dist/agent/tool-execution.d.ts +4 -3
- package/dist/agent/tool-execution.d.ts.map +1 -1
- package/dist/agent/tool-execution.js +324 -14
- package/dist/agent/tool-execution.js.map +1 -1
- package/dist/agent/tool-result-sanitize.d.ts +12 -0
- package/dist/agent/tool-result-sanitize.d.ts.map +1 -1
- package/dist/agent/tool-result-sanitize.js +70 -0
- package/dist/agent/tool-result-sanitize.js.map +1 -1
- package/dist/config/index.d.ts +6 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js.map +1 -1
- package/dist/index.d.ts +15 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -3
- package/dist/index.js.map +1 -1
- package/dist/knowledge/session.d.ts +4 -7
- package/dist/knowledge/session.d.ts.map +1 -1
- package/dist/knowledge/session.js +20 -55
- package/dist/knowledge/session.js.map +1 -1
- package/dist/permissions/index.d.ts +21 -4
- package/dist/permissions/index.d.ts.map +1 -1
- package/dist/permissions/index.js +37 -3
- package/dist/permissions/index.js.map +1 -1
- package/dist/permissions/session-store.d.ts +60 -0
- package/dist/permissions/session-store.d.ts.map +1 -0
- package/dist/permissions/session-store.js +233 -0
- package/dist/permissions/session-store.js.map +1 -0
- package/dist/tools/ask-user.d.ts.map +1 -1
- package/dist/tools/ask-user.js +8 -6
- package/dist/tools/ask-user.js.map +1 -1
- package/dist/tools/enter-plan-mode.d.ts +25 -0
- package/dist/tools/enter-plan-mode.d.ts.map +1 -0
- package/dist/tools/enter-plan-mode.js +120 -0
- package/dist/tools/enter-plan-mode.js.map +1 -0
- package/dist/tools/exit-plan-mode.d.ts +13 -0
- package/dist/tools/exit-plan-mode.d.ts.map +1 -0
- package/dist/tools/exit-plan-mode.js +22 -0
- package/dist/tools/exit-plan-mode.js.map +1 -0
- package/dist/tools/grep.d.ts +1 -1
- package/dist/tools/index.d.ts +20 -4
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +7 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/save-knowledge.d.ts +2 -2
- package/dist/tools/shell-provider.d.ts +4 -0
- package/dist/tools/shell-provider.d.ts.map +1 -1
- package/dist/tools/shell-provider.js +2 -0
- package/dist/tools/shell-provider.js.map +1 -1
- package/dist/tools/task.d.ts +14 -0
- package/dist/tools/task.d.ts.map +1 -0
- package/dist/tools/task.js +95 -0
- package/dist/tools/task.js.map +1 -0
- package/dist/tools/todo-write.d.ts +21 -0
- package/dist/tools/todo-write.d.ts.map +1 -0
- package/dist/tools/todo-write.js +117 -0
- package/dist/tools/todo-write.js.map +1 -0
- package/dist/types/index.d.ts +104 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/knowledge/session-usage.d.ts +0 -24
- package/dist/knowledge/session-usage.d.ts.map +0 -1
- package/dist/knowledge/session-usage.js +0 -86
- package/dist/knowledge/session-usage.js.map +0 -1
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
// @x-code-cli/core — Per-session token usage persistence.
|
|
2
|
-
//
|
|
3
|
-
// Writes a small JSON snapshot to .x-code/sessions/{sessionId}.usage.json on
|
|
4
|
-
// every assistant turn so that /usage works after a restart and so the user
|
|
5
|
-
// can grep/diff usage across sessions in the project. Scope is intentionally
|
|
6
|
-
// per-cwd (project-local) — there's no cross-project aggregation.
|
|
7
|
-
//
|
|
8
|
-
// Kept separate from session.ts (which writes the LLM-generated SessionSummary
|
|
9
|
-
// at exit/compact) because the two write at different cadences and would
|
|
10
|
-
// clobber each other if they shared a file.
|
|
11
|
-
import fs from 'node:fs/promises';
|
|
12
|
-
import path from 'node:path';
|
|
13
|
-
import { XCODE_DIR } from '../utils.js';
|
|
14
|
-
const SESSIONS_DIR = `${XCODE_DIR}/sessions`;
|
|
15
|
-
function getSessionsDir() {
|
|
16
|
-
return path.join(process.cwd(), SESSIONS_DIR);
|
|
17
|
-
}
|
|
18
|
-
function getUsagePath(sessionId) {
|
|
19
|
-
return path.join(getSessionsDir(), `${sessionId}.usage.json`);
|
|
20
|
-
}
|
|
21
|
-
function getLatestUsagePath() {
|
|
22
|
-
return path.join(getSessionsDir(), 'latest.usage.json');
|
|
23
|
-
}
|
|
24
|
-
/** Write the current usage state to disk. Fire-and-forget from the loop —
|
|
25
|
-
* callers should `void` this; failures are swallowed so a transient FS error
|
|
26
|
-
* never aborts the agent turn. */
|
|
27
|
-
export async function persistUsageSnapshot(state, modelId) {
|
|
28
|
-
const snapshot = {
|
|
29
|
-
id: state.sessionId,
|
|
30
|
-
modelId,
|
|
31
|
-
startedAt: state.startedAt,
|
|
32
|
-
updatedAt: new Date().toISOString(),
|
|
33
|
-
turnCount: state.turnCount,
|
|
34
|
-
usage: { ...state.tokenUsage },
|
|
35
|
-
};
|
|
36
|
-
try {
|
|
37
|
-
await fs.mkdir(getSessionsDir(), { recursive: true });
|
|
38
|
-
const json = JSON.stringify(snapshot, null, 2);
|
|
39
|
-
await Promise.all([
|
|
40
|
-
fs.writeFile(getUsagePath(state.sessionId), json, 'utf-8'),
|
|
41
|
-
fs.writeFile(getLatestUsagePath(), json, 'utf-8'),
|
|
42
|
-
]);
|
|
43
|
-
}
|
|
44
|
-
catch {
|
|
45
|
-
// Persistence is best-effort; never block the agent loop on FS errors.
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
/** Read the most recent usage snapshot for the current project (cwd). Returns
|
|
49
|
-
* null when no session has run here yet. /usage prefers in-memory state for
|
|
50
|
-
* the live session and only hits this on a fresh process. */
|
|
51
|
-
export async function loadLatestUsageSnapshot() {
|
|
52
|
-
try {
|
|
53
|
-
const raw = await fs.readFile(getLatestUsagePath(), 'utf-8');
|
|
54
|
-
return JSON.parse(raw);
|
|
55
|
-
}
|
|
56
|
-
catch {
|
|
57
|
-
return null;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
/** Enumerate every per-session usage snapshot in this project, newest first.
|
|
61
|
-
* Used by `/usage history` — purely project-local, never traverses other
|
|
62
|
-
* cwds. Skips `latest.usage.json` since it's a duplicate pointer. Silently
|
|
63
|
-
* drops malformed JSON files instead of failing the whole listing. */
|
|
64
|
-
export async function listSessionUsageSnapshots() {
|
|
65
|
-
let entries;
|
|
66
|
-
try {
|
|
67
|
-
entries = await fs.readdir(getSessionsDir());
|
|
68
|
-
}
|
|
69
|
-
catch {
|
|
70
|
-
return [];
|
|
71
|
-
}
|
|
72
|
-
const usageFiles = entries.filter((f) => f.endsWith('.usage.json') && f !== 'latest.usage.json');
|
|
73
|
-
const snapshots = await Promise.all(usageFiles.map(async (f) => {
|
|
74
|
-
try {
|
|
75
|
-
const raw = await fs.readFile(path.join(getSessionsDir(), f), 'utf-8');
|
|
76
|
-
return JSON.parse(raw);
|
|
77
|
-
}
|
|
78
|
-
catch {
|
|
79
|
-
return null;
|
|
80
|
-
}
|
|
81
|
-
}));
|
|
82
|
-
return snapshots
|
|
83
|
-
.filter((s) => s !== null)
|
|
84
|
-
.sort((a, b) => b.updatedAt.localeCompare(a.updatedAt));
|
|
85
|
-
}
|
|
86
|
-
//# sourceMappingURL=session-usage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-usage.js","sourceRoot":"","sources":["../../src/knowledge/session-usage.ts"],"names":[],"mappings":"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"}
|