@a5c-ai/genty-runtime 5.1.1-staging.0c6199708314
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/README.md +69 -0
- package/dist/apiResult.d.ts +19 -0
- package/dist/apiResult.d.ts.map +1 -0
- package/dist/apiResult.js +16 -0
- package/dist/background/state.d.ts +20 -0
- package/dist/background/state.d.ts.map +1 -0
- package/dist/background/state.js +52 -0
- package/dist/backgroundProcessRegistry.d.ts +124 -0
- package/dist/backgroundProcessRegistry.d.ts.map +1 -0
- package/dist/backgroundProcessRegistry.js +427 -0
- package/dist/cost/claudeCodeParser.d.ts +81 -0
- package/dist/cost/claudeCodeParser.d.ts.map +1 -0
- package/dist/cost/claudeCodeParser.js +232 -0
- package/dist/cost/collector.d.ts +42 -0
- package/dist/cost/collector.d.ts.map +1 -0
- package/dist/cost/collector.js +105 -0
- package/dist/cost/effectCost.d.ts +23 -0
- package/dist/cost/effectCost.d.ts.map +1 -0
- package/dist/cost/effectCost.js +26 -0
- package/dist/cost/index.d.ts +19 -0
- package/dist/cost/index.d.ts.map +1 -0
- package/dist/cost/index.js +39 -0
- package/dist/cost/journal.d.ts +40 -0
- package/dist/cost/journal.d.ts.map +1 -0
- package/dist/cost/journal.js +137 -0
- package/dist/cost/types.d.ts +164 -0
- package/dist/cost/types.d.ts.map +1 -0
- package/dist/cost/types.js +228 -0
- package/dist/daemon/automationExecutor.d.ts +16 -0
- package/dist/daemon/automationExecutor.d.ts.map +1 -0
- package/dist/daemon/automationExecutor.js +222 -0
- package/dist/daemon/config.d.ts +8 -0
- package/dist/daemon/config.d.ts.map +1 -0
- package/dist/daemon/config.js +245 -0
- package/dist/daemon/daemonLog.d.ts +30 -0
- package/dist/daemon/daemonLog.d.ts.map +1 -0
- package/dist/daemon/daemonLog.js +140 -0
- package/dist/daemon/durableQueue.d.ts +41 -0
- package/dist/daemon/durableQueue.d.ts.map +1 -0
- package/dist/daemon/durableQueue.js +183 -0
- package/dist/daemon/fileWatcher.d.ts +9 -0
- package/dist/daemon/fileWatcher.d.ts.map +1 -0
- package/dist/daemon/fileWatcher.js +144 -0
- package/dist/daemon/index.d.ts +15 -0
- package/dist/daemon/index.d.ts.map +1 -0
- package/dist/daemon/index.js +25 -0
- package/dist/daemon/lifecycle.d.ts +13 -0
- package/dist/daemon/lifecycle.d.ts.map +1 -0
- package/dist/daemon/lifecycle.js +320 -0
- package/dist/daemon/loop.d.ts +27 -0
- package/dist/daemon/loop.d.ts.map +1 -0
- package/dist/daemon/loop.js +387 -0
- package/dist/daemon/timerScheduler.d.ts +13 -0
- package/dist/daemon/timerScheduler.d.ts.map +1 -0
- package/dist/daemon/timerScheduler.js +212 -0
- package/dist/daemon/types.d.ts +122 -0
- package/dist/daemon/types.d.ts.map +1 -0
- package/dist/daemon/types.js +25 -0
- package/dist/daemon/webhookListener.d.ts +6 -0
- package/dist/daemon/webhookListener.d.ts.map +1 -0
- package/dist/daemon/webhookListener.js +132 -0
- package/dist/execution/index.d.ts +10 -0
- package/dist/execution/index.d.ts.map +1 -0
- package/dist/execution/index.js +20 -0
- package/dist/execution/modes/docker.d.ts +26 -0
- package/dist/execution/modes/docker.d.ts.map +1 -0
- package/dist/execution/modes/docker.js +183 -0
- package/dist/execution/modes/index.d.ts +10 -0
- package/dist/execution/modes/index.d.ts.map +1 -0
- package/dist/execution/modes/index.js +14 -0
- package/dist/execution/modes/kubernetes.d.ts +46 -0
- package/dist/execution/modes/kubernetes.d.ts.map +1 -0
- package/dist/execution/modes/kubernetes.js +334 -0
- package/dist/execution/modes/local.d.ts +23 -0
- package/dist/execution/modes/local.d.ts.map +1 -0
- package/dist/execution/modes/local.js +117 -0
- package/dist/execution/modes/ssh.d.ts +23 -0
- package/dist/execution/modes/ssh.d.ts.map +1 -0
- package/dist/execution/modes/ssh.js +144 -0
- package/dist/execution/policy.d.ts +15 -0
- package/dist/execution/policy.d.ts.map +1 -0
- package/dist/execution/policy.js +121 -0
- package/dist/execution/provider.d.ts +32 -0
- package/dist/execution/provider.d.ts.map +1 -0
- package/dist/execution/provider.js +90 -0
- package/dist/execution/types.d.ts +189 -0
- package/dist/execution/types.d.ts.map +1 -0
- package/dist/execution/types.js +9 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +44 -0
- package/dist/observability/diagnostics.d.ts +25 -0
- package/dist/observability/diagnostics.d.ts.map +1 -0
- package/dist/observability/diagnostics.js +98 -0
- package/dist/observability/health.d.ts +19 -0
- package/dist/observability/health.d.ts.map +1 -0
- package/dist/observability/health.js +145 -0
- package/dist/observability/index.d.ts +7 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +25 -0
- package/dist/observability/runStatus.d.ts +44 -0
- package/dist/observability/runStatus.d.ts.map +1 -0
- package/dist/observability/runStatus.js +169 -0
- package/dist/observability/timeline.d.ts +11 -0
- package/dist/observability/timeline.d.ts.map +1 -0
- package/dist/observability/timeline.js +176 -0
- package/dist/observability/types.d.ts +65 -0
- package/dist/observability/types.d.ts.map +1 -0
- package/dist/observability/types.js +8 -0
- package/dist/observability/webhooks.d.ts +68 -0
- package/dist/observability/webhooks.d.ts.map +1 -0
- package/dist/observability/webhooks.js +132 -0
- package/dist/resources/budget-tracker.d.ts +56 -0
- package/dist/resources/budget-tracker.d.ts.map +1 -0
- package/dist/resources/budget-tracker.js +131 -0
- package/dist/resources/concurrency-guard.d.ts +55 -0
- package/dist/resources/concurrency-guard.d.ts.map +1 -0
- package/dist/resources/concurrency-guard.js +132 -0
- package/dist/resources/index.d.ts +12 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +20 -0
- package/dist/resources/manager.d.ts +52 -0
- package/dist/resources/manager.d.ts.map +1 -0
- package/dist/resources/manager.js +150 -0
- package/dist/resources/timeout-cascade.d.ts +56 -0
- package/dist/resources/timeout-cascade.d.ts.map +1 -0
- package/dist/resources/timeout-cascade.js +145 -0
- package/dist/resources/types.d.ts +130 -0
- package/dist/resources/types.d.ts.map +1 -0
- package/dist/resources/types.js +9 -0
- package/dist/rpc/index.d.ts +5 -0
- package/dist/rpc/index.d.ts.map +1 -0
- package/dist/rpc/index.js +7 -0
- package/dist/rpc/server.d.ts +13 -0
- package/dist/rpc/server.d.ts.map +1 -0
- package/dist/rpc/server.js +64 -0
- package/dist/rpc/server.test.d.ts +2 -0
- package/dist/rpc/server.test.d.ts.map +1 -0
- package/dist/rpc/server.test.js +35 -0
- package/dist/rpc/types.d.ts +23 -0
- package/dist/rpc/types.d.ts.map +1 -0
- package/dist/rpc/types.js +20 -0
- package/dist/session/context.d.ts +22 -0
- package/dist/session/context.d.ts.map +1 -0
- package/dist/session/context.js +113 -0
- package/dist/session/continuityState.d.ts +39 -0
- package/dist/session/continuityState.d.ts.map +1 -0
- package/dist/session/continuityState.js +164 -0
- package/dist/session/cost.d.ts +63 -0
- package/dist/session/cost.d.ts.map +1 -0
- package/dist/session/cost.js +194 -0
- package/dist/session/discovery.d.ts +22 -0
- package/dist/session/discovery.d.ts.map +1 -0
- package/dist/session/discovery.js +35 -0
- package/dist/session/export.d.ts +4 -0
- package/dist/session/export.d.ts.map +1 -0
- package/dist/session/export.js +56 -0
- package/dist/session/export.test.d.ts +2 -0
- package/dist/session/export.test.d.ts.map +1 -0
- package/dist/session/export.test.js +42 -0
- package/dist/session/history.d.ts +30 -0
- package/dist/session/history.d.ts.map +1 -0
- package/dist/session/history.js +143 -0
- package/dist/session/index.d.ts +20 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +78 -0
- package/dist/session/memoryExtraction.d.ts +65 -0
- package/dist/session/memoryExtraction.d.ts.map +1 -0
- package/dist/session/memoryExtraction.js +201 -0
- package/dist/session/parse.d.ts +45 -0
- package/dist/session/parse.d.ts.map +1 -0
- package/dist/session/parse.js +170 -0
- package/dist/session/persistence.d.ts +46 -0
- package/dist/session/persistence.d.ts.map +1 -0
- package/dist/session/persistence.js +180 -0
- package/dist/session/tree.d.ts +29 -0
- package/dist/session/tree.d.ts.map +1 -0
- package/dist/session/tree.js +115 -0
- package/dist/session/tree.test.d.ts +2 -0
- package/dist/session/tree.test.d.ts.map +1 -0
- package/dist/session/tree.test.js +75 -0
- package/dist/session/types.d.ts +267 -0
- package/dist/session/types.d.ts.map +1 -0
- package/dist/session/types.js +45 -0
- package/dist/session/write.d.ts +61 -0
- package/dist/session/write.d.ts.map +1 -0
- package/dist/session/write.js +213 -0
- package/dist/shellInvocation.d.ts +6 -0
- package/dist/shellInvocation.d.ts.map +1 -0
- package/dist/shellInvocation.js +8 -0
- package/dist/shellInvocation.test.d.ts +2 -0
- package/dist/shellInvocation.test.d.ts.map +1 -0
- package/dist/shellInvocation.test.js +18 -0
- package/dist/telemetry/audit-log.d.ts +56 -0
- package/dist/telemetry/audit-log.d.ts.map +1 -0
- package/dist/telemetry/audit-log.js +59 -0
- package/dist/telemetry/exporters.d.ts +35 -0
- package/dist/telemetry/exporters.d.ts.map +1 -0
- package/dist/telemetry/exporters.js +141 -0
- package/dist/telemetry/index.d.ts +12 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +25 -0
- package/dist/telemetry/provider.d.ts +57 -0
- package/dist/telemetry/provider.d.ts.map +1 -0
- package/dist/telemetry/provider.js +261 -0
- package/dist/telemetry/span-tree.d.ts +46 -0
- package/dist/telemetry/span-tree.d.ts.map +1 -0
- package/dist/telemetry/span-tree.js +93 -0
- package/dist/telemetry/traceContext.d.ts +10 -0
- package/dist/telemetry/traceContext.d.ts.map +1 -0
- package/dist/telemetry/traceContext.js +43 -0
- package/dist/telemetry/types.d.ts +109 -0
- package/dist/telemetry/types.d.ts.map +1 -0
- package/dist/telemetry/types.js +21 -0
- package/package.json +137 -0
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* GAP-SESSION-004: Session-Level Cost Tracking and Budgets.
|
|
4
|
+
*
|
|
5
|
+
* Aggregates cost data from runs within a session. Supports configurable
|
|
6
|
+
* budgets with threshold alerts and auto-pause.
|
|
7
|
+
* Uses the same atomic temp-file + rename pattern as context.ts.
|
|
8
|
+
*/
|
|
9
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
+
}
|
|
15
|
+
Object.defineProperty(o, k2, desc);
|
|
16
|
+
}) : (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
o[k2] = m[k];
|
|
19
|
+
}));
|
|
20
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
+
}) : function(o, v) {
|
|
23
|
+
o["default"] = v;
|
|
24
|
+
});
|
|
25
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
26
|
+
var ownKeys = function(o) {
|
|
27
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
28
|
+
var ar = [];
|
|
29
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
30
|
+
return ar;
|
|
31
|
+
};
|
|
32
|
+
return ownKeys(o);
|
|
33
|
+
};
|
|
34
|
+
return function (mod) {
|
|
35
|
+
if (mod && mod.__esModule) return mod;
|
|
36
|
+
var result = {};
|
|
37
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
38
|
+
__setModuleDefault(result, mod);
|
|
39
|
+
return result;
|
|
40
|
+
};
|
|
41
|
+
})();
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
exports.getSessionCostPath = getSessionCostPath;
|
|
44
|
+
exports.getSessionCost = getSessionCost;
|
|
45
|
+
exports.updateSessionCost = updateSessionCost;
|
|
46
|
+
exports.setSessionBudget = setSessionBudget;
|
|
47
|
+
exports.checkBudget = checkBudget;
|
|
48
|
+
exports.markThresholdsTriggered = markThresholdsTriggered;
|
|
49
|
+
const node_fs_1 = require("node:fs");
|
|
50
|
+
const path = __importStar(require("node:path"));
|
|
51
|
+
// ---------------------------------------------------------------------------
|
|
52
|
+
// Internal helpers
|
|
53
|
+
// ---------------------------------------------------------------------------
|
|
54
|
+
function emptyCostState() {
|
|
55
|
+
return {
|
|
56
|
+
totalCostUsd: 0,
|
|
57
|
+
totalInputTokens: 0,
|
|
58
|
+
totalOutputTokens: 0,
|
|
59
|
+
runCosts: [],
|
|
60
|
+
triggeredThresholds: [],
|
|
61
|
+
paused: false,
|
|
62
|
+
lastUpdatedAt: new Date().toISOString(),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
async function readRaw(filePath) {
|
|
66
|
+
let raw;
|
|
67
|
+
try {
|
|
68
|
+
raw = await node_fs_1.promises.readFile(filePath, "utf8");
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
const err = error;
|
|
72
|
+
if (err.code === "ENOENT")
|
|
73
|
+
return emptyCostState();
|
|
74
|
+
return emptyCostState();
|
|
75
|
+
}
|
|
76
|
+
try {
|
|
77
|
+
const data = JSON.parse(raw);
|
|
78
|
+
return {
|
|
79
|
+
totalCostUsd: typeof data.totalCostUsd === "number" ? data.totalCostUsd : 0,
|
|
80
|
+
totalInputTokens: typeof data.totalInputTokens === "number" ? data.totalInputTokens : 0,
|
|
81
|
+
totalOutputTokens: typeof data.totalOutputTokens === "number" ? data.totalOutputTokens : 0,
|
|
82
|
+
runCosts: Array.isArray(data.runCosts) ? data.runCosts : [],
|
|
83
|
+
budget: data.budget,
|
|
84
|
+
triggeredThresholds: Array.isArray(data.triggeredThresholds) ? data.triggeredThresholds : [],
|
|
85
|
+
paused: typeof data.paused === "boolean" ? data.paused : false,
|
|
86
|
+
lastUpdatedAt: typeof data.lastUpdatedAt === "string" ? data.lastUpdatedAt : new Date().toISOString(),
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return emptyCostState();
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
async function writeRaw(filePath, data) {
|
|
94
|
+
const dir = path.dirname(filePath);
|
|
95
|
+
const tempPath = `${filePath}.tmp.${process.pid}`;
|
|
96
|
+
await node_fs_1.promises.mkdir(dir, { recursive: true });
|
|
97
|
+
await node_fs_1.promises.writeFile(tempPath, JSON.stringify(data, null, 2), "utf8");
|
|
98
|
+
await node_fs_1.promises.rename(tempPath, filePath);
|
|
99
|
+
}
|
|
100
|
+
// ---------------------------------------------------------------------------
|
|
101
|
+
// Public API
|
|
102
|
+
// ---------------------------------------------------------------------------
|
|
103
|
+
function getSessionCostPath(stateDir, sessionId) {
|
|
104
|
+
return path.join(stateDir, `${sessionId}.cost.json`);
|
|
105
|
+
}
|
|
106
|
+
async function getSessionCost(stateDir, sessionId) {
|
|
107
|
+
return readRaw(getSessionCostPath(stateDir, sessionId));
|
|
108
|
+
}
|
|
109
|
+
async function updateSessionCost(stateDir, sessionId, update) {
|
|
110
|
+
const filePath = getSessionCostPath(stateDir, sessionId);
|
|
111
|
+
const data = await readRaw(filePath);
|
|
112
|
+
// Check for duplicate run cost entry and update or add
|
|
113
|
+
const existingIdx = data.runCosts.findIndex((r) => r.runId === update.runId);
|
|
114
|
+
if (existingIdx >= 0) {
|
|
115
|
+
// Update existing entry (re-aggregation): subtract old, add new
|
|
116
|
+
const old = data.runCosts[existingIdx];
|
|
117
|
+
data.totalCostUsd += update.costUsd - old.costUsd;
|
|
118
|
+
data.totalInputTokens += update.inputTokens - old.inputTokens;
|
|
119
|
+
data.totalOutputTokens += update.outputTokens - old.outputTokens;
|
|
120
|
+
data.runCosts[existingIdx] = {
|
|
121
|
+
runId: update.runId,
|
|
122
|
+
costUsd: update.costUsd,
|
|
123
|
+
inputTokens: update.inputTokens,
|
|
124
|
+
outputTokens: update.outputTokens,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
data.totalCostUsd += update.costUsd;
|
|
129
|
+
data.totalInputTokens += update.inputTokens;
|
|
130
|
+
data.totalOutputTokens += update.outputTokens;
|
|
131
|
+
data.runCosts.push({
|
|
132
|
+
runId: update.runId,
|
|
133
|
+
costUsd: update.costUsd,
|
|
134
|
+
inputTokens: update.inputTokens,
|
|
135
|
+
outputTokens: update.outputTokens,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
data.lastUpdatedAt = new Date().toISOString();
|
|
139
|
+
await writeRaw(filePath, data);
|
|
140
|
+
return data;
|
|
141
|
+
}
|
|
142
|
+
async function setSessionBudget(stateDir, sessionId, budget) {
|
|
143
|
+
const filePath = getSessionCostPath(stateDir, sessionId);
|
|
144
|
+
const data = await readRaw(filePath);
|
|
145
|
+
data.budget = budget;
|
|
146
|
+
data.lastUpdatedAt = new Date().toISOString();
|
|
147
|
+
await writeRaw(filePath, data);
|
|
148
|
+
return data;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Pure function: evaluate budget thresholds against current cost.
|
|
152
|
+
* Returns new alerts (excluding already-triggered thresholds).
|
|
153
|
+
*/
|
|
154
|
+
function checkBudget(costState) {
|
|
155
|
+
if (!costState.budget || costState.budget.maxCostUsd <= 0) {
|
|
156
|
+
return { exceeded: false, alerts: [], shouldPause: false };
|
|
157
|
+
}
|
|
158
|
+
const { maxCostUsd, alertThresholds, autoPause } = costState.budget;
|
|
159
|
+
const currentPct = (costState.totalCostUsd / maxCostUsd) * 100;
|
|
160
|
+
const exceeded = currentPct >= 100;
|
|
161
|
+
const alerts = [];
|
|
162
|
+
for (const threshold of alertThresholds) {
|
|
163
|
+
if (currentPct >= threshold && !costState.triggeredThresholds.includes(threshold)) {
|
|
164
|
+
alerts.push({
|
|
165
|
+
thresholdPct: threshold,
|
|
166
|
+
currentCostUsd: costState.totalCostUsd,
|
|
167
|
+
budgetUsd: maxCostUsd,
|
|
168
|
+
currentPct,
|
|
169
|
+
message: `Session cost ${currentPct.toFixed(1)}% of budget ($${costState.totalCostUsd.toFixed(4)} / $${maxCostUsd.toFixed(2)})`,
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return {
|
|
174
|
+
exceeded,
|
|
175
|
+
alerts,
|
|
176
|
+
shouldPause: exceeded && autoPause,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Persist triggered thresholds back to cost state after checkBudget produces alerts.
|
|
181
|
+
* Call this after processing alerts to prevent re-triggering.
|
|
182
|
+
*/
|
|
183
|
+
async function markThresholdsTriggered(stateDir, sessionId, thresholds) {
|
|
184
|
+
if (thresholds.length === 0)
|
|
185
|
+
return;
|
|
186
|
+
const filePath = getSessionCostPath(stateDir, sessionId);
|
|
187
|
+
const data = await readRaw(filePath);
|
|
188
|
+
const existing = new Set(data.triggeredThresholds);
|
|
189
|
+
for (const t of thresholds)
|
|
190
|
+
existing.add(t);
|
|
191
|
+
data.triggeredThresholds = [...existing];
|
|
192
|
+
data.lastUpdatedAt = new Date().toISOString();
|
|
193
|
+
await writeRaw(filePath, data);
|
|
194
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mapping of harness identifiers to their native session environment variables.
|
|
3
|
+
*
|
|
4
|
+
* Only Pi-specific env vars are kept here. External harness session discovery
|
|
5
|
+
* is handled by adapters session management.
|
|
6
|
+
*/
|
|
7
|
+
export declare const HARNESS_ENV_VARS: Record<string, string[]>;
|
|
8
|
+
/**
|
|
9
|
+
* Resolve the current session ID from the ambient environment (markers + env vars).
|
|
10
|
+
*
|
|
11
|
+
* This is used for "autodiscovery" in contexts where no explicit session ID
|
|
12
|
+
* was provided (e.g. journaling low-level events).
|
|
13
|
+
*
|
|
14
|
+
* Precedence:
|
|
15
|
+
* 1. Harness-native env vars (Pi / oh-my-pi)
|
|
16
|
+
* 2. AGENT_SESSION_ID
|
|
17
|
+
* 3. PID-scoped marker for the given harness (fallback only)
|
|
18
|
+
*
|
|
19
|
+
* External harness session discovery is delegated to adapters.
|
|
20
|
+
*/
|
|
21
|
+
export declare function resolveAmbientSessionId(harness?: string): string | undefined;
|
|
22
|
+
//# sourceMappingURL=discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/session/discovery.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAGrD,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAO5E"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HARNESS_ENV_VARS = void 0;
|
|
4
|
+
exports.resolveAmbientSessionId = resolveAmbientSessionId;
|
|
5
|
+
const babysitter_sdk_1 = require("@a5c-ai/babysitter-sdk");
|
|
6
|
+
/**
|
|
7
|
+
* Mapping of harness identifiers to their native session environment variables.
|
|
8
|
+
*
|
|
9
|
+
* Only Pi-specific env vars are kept here. External harness session discovery
|
|
10
|
+
* is handled by adapters session management.
|
|
11
|
+
*/
|
|
12
|
+
exports.HARNESS_ENV_VARS = {
|
|
13
|
+
"pi": ["PI_SESSION_ID"],
|
|
14
|
+
"oh-my-pi": ["OMP_SESSION_ID"],
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Resolve the current session ID from the ambient environment (markers + env vars).
|
|
18
|
+
*
|
|
19
|
+
* This is used for "autodiscovery" in contexts where no explicit session ID
|
|
20
|
+
* was provided (e.g. journaling low-level events).
|
|
21
|
+
*
|
|
22
|
+
* Precedence:
|
|
23
|
+
* 1. Harness-native env vars (Pi / oh-my-pi)
|
|
24
|
+
* 2. AGENT_SESSION_ID
|
|
25
|
+
* 3. PID-scoped marker for the given harness (fallback only)
|
|
26
|
+
*
|
|
27
|
+
* External harness session discovery is delegated to adapters.
|
|
28
|
+
*/
|
|
29
|
+
function resolveAmbientSessionId(harness) {
|
|
30
|
+
if (!harness) {
|
|
31
|
+
return process.env.AGENT_SESSION_ID;
|
|
32
|
+
}
|
|
33
|
+
const envVars = exports.HARNESS_ENV_VARS[harness] || [];
|
|
34
|
+
return (0, babysitter_sdk_1.resolveSessionIdWithMarker)(harness, {}, envVars);
|
|
35
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/session/export.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAY,MAAM,WAAW,CAAC;AAGvD,wBAAgB,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CA6BzE;AAmBD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAM7E"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.exportToHtml = exportToHtml;
|
|
4
|
+
exports.exportToMarkdown = exportToMarkdown;
|
|
5
|
+
const tree_js_1 = require("./tree.js");
|
|
6
|
+
function exportToHtml(tree, branchId) {
|
|
7
|
+
const messages = (0, tree_js_1.getMessages)(tree, branchId);
|
|
8
|
+
const rows = messages.map(renderMessageHtml).join('\n');
|
|
9
|
+
return `<!DOCTYPE html>
|
|
10
|
+
<html lang="en">
|
|
11
|
+
<head>
|
|
12
|
+
<meta charset="UTF-8">
|
|
13
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
14
|
+
<title>Genty Session Export</title>
|
|
15
|
+
<style>
|
|
16
|
+
body { font-family: -apple-system, system-ui, sans-serif; max-width: 800px; margin: 0 auto; padding: 2rem; background: #0d1117; color: #c9d1d9; }
|
|
17
|
+
.message { margin: 1rem 0; padding: 1rem; border-radius: 8px; border-left: 3px solid; }
|
|
18
|
+
.user { border-color: #58a6ff; background: #161b22; }
|
|
19
|
+
.assistant { border-color: #3fb950; background: #161b22; }
|
|
20
|
+
.system { border-color: #8b949e; background: #0d1117; }
|
|
21
|
+
.tool { border-color: #d29922; background: #161b22; }
|
|
22
|
+
.role { font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 0.5rem; opacity: 0.7; }
|
|
23
|
+
.content { white-space: pre-wrap; }
|
|
24
|
+
.timestamp { font-size: 0.7rem; opacity: 0.5; margin-top: 0.5rem; }
|
|
25
|
+
pre { background: #0d1117; padding: 1rem; border-radius: 4px; overflow-x: auto; }
|
|
26
|
+
code { font-family: 'SF Mono', Menlo, monospace; }
|
|
27
|
+
</style>
|
|
28
|
+
</head>
|
|
29
|
+
<body>
|
|
30
|
+
<h1>Genty Session</h1>
|
|
31
|
+
${rows}
|
|
32
|
+
</body>
|
|
33
|
+
</html>`;
|
|
34
|
+
}
|
|
35
|
+
function renderMessageHtml(node) {
|
|
36
|
+
const escaped = escapeHtml(node.content);
|
|
37
|
+
return ` <div class="message ${node.role}">
|
|
38
|
+
<div class="role">${node.role}${node.bookmark ? ` — 🔖 ${escapeHtml(node.bookmark)}` : ''}</div>
|
|
39
|
+
<div class="content">${escaped}</div>
|
|
40
|
+
<div class="timestamp">${node.timestamp}</div>
|
|
41
|
+
</div>`;
|
|
42
|
+
}
|
|
43
|
+
function escapeHtml(text) {
|
|
44
|
+
return text
|
|
45
|
+
.replace(/&/g, '&')
|
|
46
|
+
.replace(/</g, '<')
|
|
47
|
+
.replace(/>/g, '>')
|
|
48
|
+
.replace(/"/g, '"');
|
|
49
|
+
}
|
|
50
|
+
function exportToMarkdown(tree, branchId) {
|
|
51
|
+
const messages = (0, tree_js_1.getMessages)(tree, branchId);
|
|
52
|
+
return messages.map(node => {
|
|
53
|
+
const header = `### ${node.role.toUpperCase()}${node.bookmark ? ` 🔖 ${node.bookmark}` : ''}`;
|
|
54
|
+
return `${header}\n\n${node.content}\n\n---\n`;
|
|
55
|
+
}).join('\n');
|
|
56
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export.test.d.ts","sourceRoot":"","sources":["../../src/session/export.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const tree_js_1 = require("./tree.js");
|
|
5
|
+
const export_js_1 = require("./export.js");
|
|
6
|
+
(0, vitest_1.describe)('session/export', () => {
|
|
7
|
+
(0, vitest_1.it)('exports to HTML with messages', () => {
|
|
8
|
+
const tree = (0, tree_js_1.createSessionTree)();
|
|
9
|
+
(0, tree_js_1.addMessage)(tree, 'user', 'What is 2+2?');
|
|
10
|
+
(0, tree_js_1.addMessage)(tree, 'assistant', 'The answer is 4.');
|
|
11
|
+
const html = (0, export_js_1.exportToHtml)(tree);
|
|
12
|
+
(0, vitest_1.expect)(html).toContain('<!DOCTYPE html>');
|
|
13
|
+
(0, vitest_1.expect)(html).toContain('What is 2+2?');
|
|
14
|
+
(0, vitest_1.expect)(html).toContain('The answer is 4.');
|
|
15
|
+
(0, vitest_1.expect)(html).toContain('class="user"');
|
|
16
|
+
(0, vitest_1.expect)(html).toContain('class="assistant"');
|
|
17
|
+
});
|
|
18
|
+
(0, vitest_1.it)('escapes HTML in content', () => {
|
|
19
|
+
const tree = (0, tree_js_1.createSessionTree)();
|
|
20
|
+
(0, tree_js_1.addMessage)(tree, 'user', '<script>alert("xss")</script>');
|
|
21
|
+
const html = (0, export_js_1.exportToHtml)(tree);
|
|
22
|
+
(0, vitest_1.expect)(html).not.toContain('<script>');
|
|
23
|
+
(0, vitest_1.expect)(html).toContain('<script>');
|
|
24
|
+
});
|
|
25
|
+
(0, vitest_1.it)('includes bookmarks in HTML export', () => {
|
|
26
|
+
const tree = (0, tree_js_1.createSessionTree)();
|
|
27
|
+
const m = (0, tree_js_1.addMessage)(tree, 'user', 'Key moment');
|
|
28
|
+
(0, tree_js_1.bookmarkNode)(tree, m.id, 'important');
|
|
29
|
+
const html = (0, export_js_1.exportToHtml)(tree);
|
|
30
|
+
(0, vitest_1.expect)(html).toContain('important');
|
|
31
|
+
});
|
|
32
|
+
(0, vitest_1.it)('exports to markdown', () => {
|
|
33
|
+
const tree = (0, tree_js_1.createSessionTree)();
|
|
34
|
+
(0, tree_js_1.addMessage)(tree, 'user', 'Hello');
|
|
35
|
+
(0, tree_js_1.addMessage)(tree, 'assistant', 'World');
|
|
36
|
+
const md = (0, export_js_1.exportToMarkdown)(tree);
|
|
37
|
+
(0, vitest_1.expect)(md).toContain('### USER');
|
|
38
|
+
(0, vitest_1.expect)(md).toContain('### ASSISTANT');
|
|
39
|
+
(0, vitest_1.expect)(md).toContain('Hello');
|
|
40
|
+
(0, vitest_1.expect)(md).toContain('World');
|
|
41
|
+
});
|
|
42
|
+
});
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session history persistence for GAP-SESSION-002.
|
|
3
|
+
*
|
|
4
|
+
* Stores accumulated decisions, run summaries, and context snapshots
|
|
5
|
+
* in a dedicated <sessionId>.history.json file alongside the session state.
|
|
6
|
+
* Uses the same atomic temp-file + rename pattern as context.ts.
|
|
7
|
+
*/
|
|
8
|
+
import type { SessionDecision, SessionRunSummary, SessionContextSnapshot, SessionHistory } from "./types";
|
|
9
|
+
/** Get the file path for a session's history JSON file. */
|
|
10
|
+
export declare function getSessionHistoryPath(stateDir: string, sessionId: string): string;
|
|
11
|
+
/**
|
|
12
|
+
* Append a decision to the session's history.
|
|
13
|
+
* Automatically adds a timestamp.
|
|
14
|
+
*/
|
|
15
|
+
export declare function addDecision(stateDir: string, sessionId: string, decision: Omit<SessionDecision, "timestamp">): Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* Append a run summary to the session's history.
|
|
18
|
+
*/
|
|
19
|
+
export declare function addRunSummary(stateDir: string, sessionId: string, summary: SessionRunSummary): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Save a context snapshot to the session's history.
|
|
22
|
+
* Automatically adds a timestamp.
|
|
23
|
+
*/
|
|
24
|
+
export declare function saveContextSnapshot(stateDir: string, sessionId: string, snapshot: Omit<SessionContextSnapshot, "timestamp">): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* Get the full session history: SessionContext fields + history arrays.
|
|
27
|
+
* Returns empty defaults when files do not exist.
|
|
28
|
+
*/
|
|
29
|
+
export declare function getSessionHistory(stateDir: string, sessionId: string): Promise<SessionHistory>;
|
|
30
|
+
//# sourceMappingURL=history.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/session/history.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,EACf,MAAM,SAAS,CAAC;AAOjB,2DAA2D;AAC3D,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEjF;AAuDD;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,GAC3C,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,IAAI,CAAC,sBAAsB,EAAE,WAAW,CAAC,GAClD,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,cAAc,CAAC,CAazB"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Session history persistence for GAP-SESSION-002.
|
|
4
|
+
*
|
|
5
|
+
* Stores accumulated decisions, run summaries, and context snapshots
|
|
6
|
+
* in a dedicated <sessionId>.history.json file alongside the session state.
|
|
7
|
+
* Uses the same atomic temp-file + rename pattern as context.ts.
|
|
8
|
+
*/
|
|
9
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
+
}
|
|
15
|
+
Object.defineProperty(o, k2, desc);
|
|
16
|
+
}) : (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
o[k2] = m[k];
|
|
19
|
+
}));
|
|
20
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
+
}) : function(o, v) {
|
|
23
|
+
o["default"] = v;
|
|
24
|
+
});
|
|
25
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
26
|
+
var ownKeys = function(o) {
|
|
27
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
28
|
+
var ar = [];
|
|
29
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
30
|
+
return ar;
|
|
31
|
+
};
|
|
32
|
+
return ownKeys(o);
|
|
33
|
+
};
|
|
34
|
+
return function (mod) {
|
|
35
|
+
if (mod && mod.__esModule) return mod;
|
|
36
|
+
var result = {};
|
|
37
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
38
|
+
__setModuleDefault(result, mod);
|
|
39
|
+
return result;
|
|
40
|
+
};
|
|
41
|
+
})();
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
exports.getSessionHistoryPath = getSessionHistoryPath;
|
|
44
|
+
exports.addDecision = addDecision;
|
|
45
|
+
exports.addRunSummary = addRunSummary;
|
|
46
|
+
exports.saveContextSnapshot = saveContextSnapshot;
|
|
47
|
+
exports.getSessionHistory = getSessionHistory;
|
|
48
|
+
const node_fs_1 = require("node:fs");
|
|
49
|
+
const path = __importStar(require("node:path"));
|
|
50
|
+
const context_1 = require("./context");
|
|
51
|
+
// ---------------------------------------------------------------------------
|
|
52
|
+
// Path helper
|
|
53
|
+
// ---------------------------------------------------------------------------
|
|
54
|
+
/** Get the file path for a session's history JSON file. */
|
|
55
|
+
function getSessionHistoryPath(stateDir, sessionId) {
|
|
56
|
+
return path.join(stateDir, `${sessionId}.history.json`);
|
|
57
|
+
}
|
|
58
|
+
function emptyHistoryData() {
|
|
59
|
+
return { decisions: [], runSummaries: [], contextSnapshots: [] };
|
|
60
|
+
}
|
|
61
|
+
async function readRawHistory(filePath) {
|
|
62
|
+
let raw;
|
|
63
|
+
try {
|
|
64
|
+
raw = await node_fs_1.promises.readFile(filePath, "utf8");
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
const err = error;
|
|
68
|
+
if (err.code === "ENOENT") {
|
|
69
|
+
return emptyHistoryData();
|
|
70
|
+
}
|
|
71
|
+
return emptyHistoryData();
|
|
72
|
+
}
|
|
73
|
+
try {
|
|
74
|
+
const data = JSON.parse(raw);
|
|
75
|
+
return {
|
|
76
|
+
decisions: Array.isArray(data.decisions) ? data.decisions : [],
|
|
77
|
+
runSummaries: Array.isArray(data.runSummaries) ? data.runSummaries : [],
|
|
78
|
+
contextSnapshots: Array.isArray(data.contextSnapshots) ? data.contextSnapshots : [],
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
return emptyHistoryData();
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
async function writeRawHistory(filePath, data) {
|
|
86
|
+
const dir = path.dirname(filePath);
|
|
87
|
+
const tempPath = `${filePath}.tmp.${process.pid}`;
|
|
88
|
+
await node_fs_1.promises.mkdir(dir, { recursive: true });
|
|
89
|
+
await node_fs_1.promises.writeFile(tempPath, JSON.stringify(data, null, 2), "utf8");
|
|
90
|
+
await node_fs_1.promises.rename(tempPath, filePath);
|
|
91
|
+
}
|
|
92
|
+
function nowTimestamp() {
|
|
93
|
+
return new Date().toISOString();
|
|
94
|
+
}
|
|
95
|
+
// ---------------------------------------------------------------------------
|
|
96
|
+
// Public API
|
|
97
|
+
// ---------------------------------------------------------------------------
|
|
98
|
+
/**
|
|
99
|
+
* Append a decision to the session's history.
|
|
100
|
+
* Automatically adds a timestamp.
|
|
101
|
+
*/
|
|
102
|
+
async function addDecision(stateDir, sessionId, decision) {
|
|
103
|
+
const filePath = getSessionHistoryPath(stateDir, sessionId);
|
|
104
|
+
const data = await readRawHistory(filePath);
|
|
105
|
+
data.decisions.push({ ...decision, timestamp: nowTimestamp() });
|
|
106
|
+
await writeRawHistory(filePath, data);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Append a run summary to the session's history.
|
|
110
|
+
*/
|
|
111
|
+
async function addRunSummary(stateDir, sessionId, summary) {
|
|
112
|
+
const filePath = getSessionHistoryPath(stateDir, sessionId);
|
|
113
|
+
const data = await readRawHistory(filePath);
|
|
114
|
+
data.runSummaries.push(summary);
|
|
115
|
+
await writeRawHistory(filePath, data);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Save a context snapshot to the session's history.
|
|
119
|
+
* Automatically adds a timestamp.
|
|
120
|
+
*/
|
|
121
|
+
async function saveContextSnapshot(stateDir, sessionId, snapshot) {
|
|
122
|
+
const filePath = getSessionHistoryPath(stateDir, sessionId);
|
|
123
|
+
const data = await readRawHistory(filePath);
|
|
124
|
+
data.contextSnapshots.push({ ...snapshot, timestamp: nowTimestamp() });
|
|
125
|
+
await writeRawHistory(filePath, data);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Get the full session history: SessionContext fields + history arrays.
|
|
129
|
+
* Returns empty defaults when files do not exist.
|
|
130
|
+
*/
|
|
131
|
+
async function getSessionHistory(stateDir, sessionId) {
|
|
132
|
+
const [context, rawHistory] = await Promise.all([
|
|
133
|
+
(0, context_1.getSessionContext)(stateDir, sessionId),
|
|
134
|
+
readRawHistory(getSessionHistoryPath(stateDir, sessionId)),
|
|
135
|
+
]);
|
|
136
|
+
return {
|
|
137
|
+
notes: context.notes,
|
|
138
|
+
sharedKnowledge: context.sharedKnowledge,
|
|
139
|
+
decisions: rawHistory.decisions,
|
|
140
|
+
runSummaries: rawHistory.runSummaries,
|
|
141
|
+
contextSnapshots: rawHistory.contextSnapshots,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session state management module.
|
|
3
|
+
* Provides utilities for managing babysitter orchestration session state.
|
|
4
|
+
*/
|
|
5
|
+
export type { SessionState, SessionFile, SessionContext, SessionDecision, SessionRunSummary, SessionContextSnapshot, SessionHistory, SessionInitOptions, SessionAssociateOptions, SessionResumeOptions, SessionStateOptions, SessionUpdateOptions, SessionInitResult, SessionAssociateResult, SessionResumeResult, SessionStateResult, SessionUpdateResult, } from './types';
|
|
6
|
+
export { SessionError, SessionErrorCode } from './types';
|
|
7
|
+
export { DEFAULT_SESSION_STATE, parseYamlFrontmatter, parseSessionState, readSessionFile, sessionFileExists, validateSessionState, getSessionFilePath, } from './parse';
|
|
8
|
+
export { serializeSessionState, createSessionFileContent, writeSessionFile, updateSessionState, getCurrentTimestamp, isoToEpochSeconds, updateIterationTimes, addRunToSession, getSessionRuns, } from './write';
|
|
9
|
+
export { getSessionContextPath, getSessionContext, updateSessionContext, } from './context';
|
|
10
|
+
export { HARNESS_ENV_VARS, resolveAmbientSessionId, } from './discovery';
|
|
11
|
+
export { getSessionHistoryPath, addDecision, addRunSummary, saveContextSnapshot, getSessionHistory, } from './history';
|
|
12
|
+
export type { SessionFinding, SessionFileModification, SessionBreakpointPattern, SessionPersistentState, } from './persistence';
|
|
13
|
+
export { SESSION_PERSISTENT_SCHEMA_VERSION, getSessionPersistentStatePath, getSessionPersistentState, addFinding, setPreference, recordFileModification, recordBreakpointInteraction, buildResumeContext, } from './persistence';
|
|
14
|
+
export type { ContinuityPhase, ContinuityDecision, ContinuityWorkingContext, ContinuityState, } from './continuityState';
|
|
15
|
+
export { CONTINUITY_STATE_SCHEMA_VERSION, getContinuityStatePath, getContinuityState, setCurrentPhase, upsertDecision, updateWorkingContext, buildContinuityResumePrompt, } from './continuityState';
|
|
16
|
+
export type { MemoryCategory, MemoryConfidence, MemoryEntry, LongTermMemoryStore, MemoryExtractionInput, } from './memoryExtraction';
|
|
17
|
+
export { LONG_TERM_MEMORY_SCHEMA_VERSION, extractMemoriesFromSession, readLongTermMemory, persistMemories, queryMemories, pruneMemories, } from './memoryExtraction';
|
|
18
|
+
export type { SessionBudget, SessionCostState, SessionBudgetAlert, BudgetCheckResult, RunCostUpdate, } from './cost';
|
|
19
|
+
export { getSessionCostPath, getSessionCost, updateSessionCost, setSessionBudget, checkBudget, markThresholdsTriggered, } from './cost';
|
|
20
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EACV,YAAY,EACZ,WAAW,EACX,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,EACd,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGzD,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,cAAc,GACf,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,qBAAqB,EACrB,WAAW,EACX,aAAa,EACb,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,WAAW,CAAC;AAGnB,YAAY,EACV,cAAc,EACd,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,iCAAiC,EACjC,6BAA6B,EAC7B,yBAAyB,EACzB,UAAU,EACV,aAAa,EACb,sBAAsB,EACtB,2BAA2B,EAC3B,kBAAkB,GACnB,MAAM,eAAe,CAAC;AAGvB,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,wBAAwB,EACxB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,+BAA+B,EAC/B,sBAAsB,EACtB,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,+BAA+B,EAC/B,0BAA0B,EAC1B,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,aAAa,GACd,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,GACd,MAAM,QAAQ,CAAC;AAChB,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,uBAAuB,GACxB,MAAM,QAAQ,CAAC"}
|