draken 0.1.6 → 0.2.0
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/ACCEPTANCE.md +31 -0
- package/CHANGELOG.md +33 -0
- package/CONTRIBUTING.md +129 -0
- package/MEMORY.md +98 -0
- package/PERSONA.md +67 -0
- package/README.md +156 -78
- package/SETUP.md +111 -0
- package/SOURCES.md +75 -0
- package/TRAY.md +54 -0
- package/VOICE.md +118 -0
- package/dist/auth/middleware.d.ts +3 -1
- package/dist/auth/middleware.d.ts.map +1 -1
- package/dist/auth/middleware.js +20 -15
- package/dist/auth/middleware.js.map +1 -1
- package/dist/cli.js +77 -113
- package/dist/cli.js.map +1 -1
- package/dist/db/agent-migration.d.ts +7 -0
- package/dist/db/agent-migration.d.ts.map +1 -0
- package/dist/db/agent-migration.js +36 -0
- package/dist/db/agent-migration.js.map +1 -0
- package/dist/db/evidence.d.ts +37 -0
- package/dist/db/evidence.d.ts.map +1 -0
- package/dist/db/evidence.js +110 -0
- package/dist/db/evidence.js.map +1 -0
- package/dist/db/pointer-migration.d.ts +7 -0
- package/dist/db/pointer-migration.d.ts.map +1 -0
- package/dist/db/pointer-migration.js +117 -0
- package/dist/db/pointer-migration.js.map +1 -0
- package/dist/db/retained-text.d.ts +8 -0
- package/dist/db/retained-text.d.ts.map +1 -0
- package/dist/db/retained-text.js +36 -0
- package/dist/db/retained-text.js.map +1 -0
- package/dist/db/schema.d.ts +1 -5
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +200 -55
- package/dist/db/schema.js.map +1 -1
- package/dist/db/snapshot-pointers.d.ts +5 -0
- package/dist/db/snapshot-pointers.d.ts.map +1 -0
- package/dist/db/snapshot-pointers.js +174 -0
- package/dist/db/snapshot-pointers.js.map +1 -0
- package/dist/memory/automatic.d.ts +38 -0
- package/dist/memory/automatic.d.ts.map +1 -0
- package/dist/memory/automatic.js +155 -0
- package/dist/memory/automatic.js.map +1 -0
- package/dist/memory/context.d.ts +12 -0
- package/dist/memory/context.d.ts.map +1 -0
- package/dist/memory/context.js +59 -0
- package/dist/memory/context.js.map +1 -0
- package/dist/memory/embedding-pool.d.ts +28 -0
- package/dist/memory/embedding-pool.d.ts.map +1 -0
- package/dist/memory/embedding-pool.js +135 -0
- package/dist/memory/embedding-pool.js.map +1 -0
- package/dist/memory/embedding-worker.d.ts +2 -0
- package/dist/memory/embedding-worker.d.ts.map +1 -0
- package/dist/memory/embedding-worker.js +32 -0
- package/dist/memory/embedding-worker.js.map +1 -0
- package/dist/memory/index.d.ts +26 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +283 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/model.d.ts +15 -0
- package/dist/memory/model.d.ts.map +1 -0
- package/dist/memory/model.js +152 -0
- package/dist/memory/model.js.map +1 -0
- package/dist/memory/service.d.ts +8 -0
- package/dist/memory/service.d.ts.map +1 -0
- package/dist/memory/service.js +217 -0
- package/dist/memory/service.js.map +1 -0
- package/dist/memory/sources.d.ts +15 -0
- package/dist/memory/sources.d.ts.map +1 -0
- package/dist/memory/sources.js +87 -0
- package/dist/memory/sources.js.map +1 -0
- package/dist/memory/stamps.d.ts +13 -0
- package/dist/memory/stamps.d.ts.map +1 -0
- package/dist/memory/stamps.js +101 -0
- package/dist/memory/stamps.js.map +1 -0
- package/dist/memory/storage.d.ts +5 -0
- package/dist/memory/storage.d.ts.map +1 -0
- package/dist/memory/storage.js +107 -0
- package/dist/memory/storage.js.map +1 -0
- package/dist/memory/types.d.ts +68 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +8 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/memory/worker.d.ts +2 -0
- package/dist/memory/worker.d.ts.map +1 -0
- package/dist/memory/worker.js +82 -0
- package/dist/memory/worker.js.map +1 -0
- package/dist/npm-cli.d.ts +4 -0
- package/dist/npm-cli.d.ts.map +1 -0
- package/dist/npm-cli.js +36 -0
- package/dist/npm-cli.js.map +1 -0
- package/dist/pi/runtime.d.ts +34 -0
- package/dist/pi/runtime.d.ts.map +1 -0
- package/dist/pi/runtime.js +210 -0
- package/dist/pi/runtime.js.map +1 -0
- package/dist/pi/setup.d.ts +5 -0
- package/dist/pi/setup.d.ts.map +1 -0
- package/dist/pi/setup.js +147 -0
- package/dist/pi/setup.js.map +1 -0
- package/dist/routes/auth.d.ts.map +1 -1
- package/dist/routes/auth.js +3 -1
- package/dist/routes/auth.js.map +1 -1
- package/dist/routes/live-voice.d.ts +3 -0
- package/dist/routes/live-voice.d.ts.map +1 -0
- package/dist/routes/live-voice.js +49 -0
- package/dist/routes/live-voice.js.map +1 -0
- package/dist/routes/{browse.d.ts → memory.d.ts} +1 -1
- package/dist/routes/memory.d.ts.map +1 -0
- package/dist/routes/memory.js +18 -0
- package/dist/routes/memory.js.map +1 -0
- package/dist/routes/{tasks.d.ts → sync.d.ts} +1 -1
- package/dist/routes/sync.d.ts.map +1 -0
- package/dist/routes/sync.js +127 -0
- package/dist/routes/sync.js.map +1 -0
- package/dist/routes/{projects.d.ts → voice.d.ts} +1 -1
- package/dist/routes/voice.d.ts.map +1 -0
- package/dist/routes/voice.js +35 -0
- package/dist/routes/voice.js.map +1 -0
- package/dist/server-state.d.ts +30 -0
- package/dist/server-state.d.ts.map +1 -0
- package/dist/server-state.js +113 -0
- package/dist/server-state.js.map +1 -0
- package/dist/server-status.d.ts +7 -0
- package/dist/server-status.d.ts.map +1 -0
- package/dist/server-status.js +34 -0
- package/dist/server-status.js.map +1 -0
- package/dist/server.d.ts +5 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +148 -46
- package/dist/server.js.map +1 -1
- package/dist/sources/adapters.d.ts +15 -0
- package/dist/sources/adapters.d.ts.map +1 -0
- package/dist/sources/adapters.js +159 -0
- package/dist/sources/adapters.js.map +1 -0
- package/dist/sources/registry.d.ts +17 -0
- package/dist/sources/registry.d.ts.map +1 -0
- package/dist/sources/registry.js +56 -0
- package/dist/sources/registry.js.map +1 -0
- package/dist/sync/collector.d.ts +3 -0
- package/dist/sync/collector.d.ts.map +1 -0
- package/dist/sync/collector.js +284 -0
- package/dist/sync/collector.js.map +1 -0
- package/dist/sync/cost.d.ts +7 -0
- package/dist/sync/cost.d.ts.map +1 -0
- package/dist/sync/cost.js +31 -0
- package/dist/sync/cost.js.map +1 -0
- package/dist/sync/jsonl.d.ts +34 -0
- package/dist/sync/jsonl.d.ts.map +1 -0
- package/dist/sync/jsonl.js +161 -0
- package/dist/sync/jsonl.js.map +1 -0
- package/dist/sync/manager.d.ts +12 -0
- package/dist/sync/manager.d.ts.map +1 -0
- package/dist/sync/manager.js +211 -0
- package/dist/sync/manager.js.map +1 -0
- package/dist/sync/normalize.d.ts +22 -0
- package/dist/sync/normalize.d.ts.map +1 -0
- package/dist/sync/normalize.js +107 -0
- package/dist/sync/normalize.js.map +1 -0
- package/dist/sync/pi-output.d.ts +33 -0
- package/dist/sync/pi-output.d.ts.map +1 -0
- package/dist/sync/pi-output.js +186 -0
- package/dist/sync/pi-output.js.map +1 -0
- package/dist/sync/pi.d.ts +15 -0
- package/dist/sync/pi.d.ts.map +1 -0
- package/dist/sync/pi.js +149 -0
- package/dist/sync/pi.js.map +1 -0
- package/dist/sync/recap.d.ts +25 -0
- package/dist/sync/recap.d.ts.map +1 -0
- package/dist/sync/recap.js +118 -0
- package/dist/sync/recap.js.map +1 -0
- package/dist/sync/references.d.ts +10 -0
- package/dist/sync/references.d.ts.map +1 -0
- package/dist/sync/references.js +50 -0
- package/dist/sync/references.js.map +1 -0
- package/dist/sync/source-files.d.ts +16 -0
- package/dist/sync/source-files.d.ts.map +1 -0
- package/dist/sync/source-files.js +56 -0
- package/dist/sync/source-files.js.map +1 -0
- package/dist/sync/store.d.ts +36 -0
- package/dist/sync/store.d.ts.map +1 -0
- package/dist/sync/store.js +359 -0
- package/dist/sync/store.js.map +1 -0
- package/dist/sync/summary-budget.d.ts +19 -0
- package/dist/sync/summary-budget.d.ts.map +1 -0
- package/dist/sync/summary-budget.js +39 -0
- package/dist/sync/summary-budget.js.map +1 -0
- package/dist/sync/tree.d.ts +69 -0
- package/dist/sync/tree.d.ts.map +1 -0
- package/dist/sync/tree.js +599 -0
- package/dist/sync/tree.js.map +1 -0
- package/dist/tray/controller.d.ts +51 -0
- package/dist/tray/controller.d.ts.map +1 -0
- package/dist/tray/controller.js +178 -0
- package/dist/tray/controller.js.map +1 -0
- package/dist/tray/launcher.d.ts +3 -0
- package/dist/tray/launcher.d.ts.map +1 -0
- package/dist/tray/launcher.js +47 -0
- package/dist/tray/launcher.js.map +1 -0
- package/dist/tray/native.d.ts +12 -0
- package/dist/tray/native.d.ts.map +1 -0
- package/dist/tray/native.js +93 -0
- package/dist/tray/native.js.map +1 -0
- package/dist/tray/processes.d.ts +5 -0
- package/dist/tray/processes.d.ts.map +1 -0
- package/dist/tray/processes.js +99 -0
- package/dist/tray/processes.js.map +1 -0
- package/dist/tray/worker.d.ts +4 -0
- package/dist/tray/worker.d.ts.map +1 -0
- package/dist/tray/worker.js +150 -0
- package/dist/tray/worker.js.map +1 -0
- package/dist/types.d.ts +212 -20
- package/dist/types.d.ts.map +1 -1
- package/dist/voice/continuation.d.ts +25 -0
- package/dist/voice/continuation.d.ts.map +1 -0
- package/dist/voice/continuation.js +94 -0
- package/dist/voice/continuation.js.map +1 -0
- package/dist/voice/legacy-history.d.ts +5 -0
- package/dist/voice/legacy-history.d.ts.map +1 -0
- package/dist/voice/legacy-history.js +34 -0
- package/dist/voice/legacy-history.js.map +1 -0
- package/dist/voice/live-context.d.ts +14 -0
- package/dist/voice/live-context.d.ts.map +1 -0
- package/dist/voice/live-context.js +137 -0
- package/dist/voice/live-context.js.map +1 -0
- package/dist/voice/live.d.ts +37 -0
- package/dist/voice/live.d.ts.map +1 -0
- package/dist/voice/live.js +448 -0
- package/dist/voice/live.js.map +1 -0
- package/package.json +49 -16
- package/public/assets/index-CYz_kpAp.js +126 -0
- package/public/assets/index-DmRid5xE.css +1 -0
- package/public/assets/index-Ymd62i3g.js +40 -0
- package/public/assets/persona-C_m1CVKe.css +1 -0
- package/public/assets/persona-XbLvCqRT.js +1 -0
- package/public/assets/scene-CBV2oPhA.js +3854 -0
- package/public/index.html +6 -8
- package/public/persona/THREE-LICENSE.txt +21 -0
- package/public/persona/call-poster.webp +0 -0
- package/public/persona/reference.jpg +0 -0
- package/public/persona/sample.wav +0 -0
- package/public/persona.html +7 -0
- package/runtime/pi/package-lock.json +1549 -0
- package/runtime/pi/package.json +12 -0
- package/tests/fixtures/voice-question.wav +0 -0
- package/tray/assets/error.ico +0 -0
- package/tray/assets/error.png +0 -0
- package/tray/assets/running.ico +0 -0
- package/tray/assets/running.png +0 -0
- package/tray/assets/starting.ico +0 -0
- package/tray/assets/starting.png +0 -0
- package/tray/assets/stopped.ico +0 -0
- package/tray/assets/stopped.png +0 -0
- package/tray/assets/stopping.ico +0 -0
- package/tray/assets/stopping.png +0 -0
- package/tray/macos.js +72 -0
- package/tray/windows.ps1 +104 -0
- package/voice/realtime/README.md +84 -0
- package/voice/realtime/backend.mjs +81 -0
- package/voice/realtime/native.mjs +210 -0
- package/voice/realtime/peer.d.mts +15 -0
- package/voice/realtime/peer.mjs +116 -0
- package/voice/realtime/probe-browser.mjs +81 -0
- package/voice/realtime/probe-server.mjs +86 -0
- package/voice/realtime/probe.html +11 -0
- package/voice/realtime/probe.mjs +42 -0
- package/voice/realtime/rpc.mjs +118 -0
- package/voice/realtime/setup.mjs +32 -0
- package/voice/tls.mjs +49 -0
- package/dist/db/queries.d.ts +0 -16
- package/dist/db/queries.d.ts.map +0 -1
- package/dist/db/queries.js +0 -91
- package/dist/db/queries.js.map +0 -1
- package/dist/docker/dockerfile.d.ts +0 -50
- package/dist/docker/dockerfile.d.ts.map +0 -1
- package/dist/docker/dockerfile.js +0 -160
- package/dist/docker/dockerfile.js.map +0 -1
- package/dist/docker/manager.d.ts +0 -42
- package/dist/docker/manager.d.ts.map +0 -1
- package/dist/docker/manager.js +0 -421
- package/dist/docker/manager.js.map +0 -1
- package/dist/git/status.d.ts +0 -76
- package/dist/git/status.d.ts.map +0 -1
- package/dist/git/status.js +0 -332
- package/dist/git/status.js.map +0 -1
- package/dist/routes/browse.d.ts.map +0 -1
- package/dist/routes/browse.js +0 -49
- package/dist/routes/browse.js.map +0 -1
- package/dist/routes/git.d.ts +0 -9
- package/dist/routes/git.d.ts.map +0 -1
- package/dist/routes/git.js +0 -338
- package/dist/routes/git.js.map +0 -1
- package/dist/routes/projects.d.ts.map +0 -1
- package/dist/routes/projects.js +0 -220
- package/dist/routes/projects.js.map +0 -1
- package/dist/routes/tasks.d.ts.map +0 -1
- package/dist/routes/tasks.js +0 -313
- package/dist/routes/tasks.js.map +0 -1
- package/draken.dockerfile.template +0 -18
- package/public/assets/index-3ngsG5kF.css +0 -1
- package/public/assets/index-B3YSD0ee.js +0 -252
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.activeVoiceSyncs = exports.busySyncs = exports.HttpError = void 0;
|
|
4
|
+
exports.defaultModels = defaultModels;
|
|
5
|
+
exports.pendingCount = pendingCount;
|
|
6
|
+
exports.overview = overview;
|
|
7
|
+
exports.homeOverview = homeOverview;
|
|
8
|
+
exports.setAgentEnabled = setAgentEnabled;
|
|
9
|
+
exports.setIncluded = setIncluded;
|
|
10
|
+
exports.getProgress = getProgress;
|
|
11
|
+
exports.getSync = getSync;
|
|
12
|
+
exports.assertEvidenceAvailable = assertEvidenceAvailable;
|
|
13
|
+
exports.requireOpen = requireOpen;
|
|
14
|
+
exports.startSync = startSync;
|
|
15
|
+
exports.startConversationSync = startConversationSync;
|
|
16
|
+
exports.expandSnapshot = expandSnapshot;
|
|
17
|
+
exports.configureModels = configureModels;
|
|
18
|
+
exports.getTreeNode = getTreeNode;
|
|
19
|
+
exports.recoverInterruptedRuns = recoverInterruptedRuns;
|
|
20
|
+
exports.saveNotes = saveNotes;
|
|
21
|
+
exports.completeSync = completeSync;
|
|
22
|
+
exports.discardSync = discardSync;
|
|
23
|
+
const schema_1 = require("../db/schema");
|
|
24
|
+
const source_files_1 = require("./source-files");
|
|
25
|
+
const evidence_1 = require("../db/evidence");
|
|
26
|
+
const normalize_1 = require("./normalize");
|
|
27
|
+
const cost_1 = require("./cost");
|
|
28
|
+
const recap_1 = require("./recap");
|
|
29
|
+
const registry_1 = require("../sources/registry");
|
|
30
|
+
class HttpError extends Error {
|
|
31
|
+
status;
|
|
32
|
+
constructor(status, message) {
|
|
33
|
+
super(message);
|
|
34
|
+
this.status = status;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
exports.HttpError = HttpError;
|
|
38
|
+
exports.busySyncs = new Set();
|
|
39
|
+
exports.activeVoiceSyncs = new Set();
|
|
40
|
+
const summaryQuery = `SELECT s.id, s.status, s.created_at, s.completed_at, s.briefing, s.decisions, s.carry_forward,
|
|
41
|
+
s.remaining_count, s.snapshot_version, s.snapshot_at,
|
|
42
|
+
COALESCE((SELECT recap FROM sync_presentations WHERE sync_id=s.id), '') AS recap,
|
|
43
|
+
COALESCE((SELECT recap_state FROM sync_presentations WHERE sync_id=s.id), 'empty') AS recap_state,
|
|
44
|
+
COALESCE((SELECT recap_error FROM sync_presentations WHERE sync_id=s.id), '') AS recap_error,
|
|
45
|
+
(SELECT COUNT(*) FROM sync_items i WHERE i.sync_id = s.id) AS item_count FROM syncs s`;
|
|
46
|
+
const historyWindow = `e.timestamp >= COALESCE((SELECT value FROM sync_settings WHERE key = 'history_since'), '')`;
|
|
47
|
+
const pendingWhere = `e.active = 1 AND e.present = 1 AND e.is_activity = 1 AND e.effective_length > 0
|
|
48
|
+
AND ${historyWindow} AND s.included = 1 AND s.missing = 0 AND ${(0, registry_1.admittedAgent)('s')} AND NOT EXISTS (SELECT 1 FROM sync_coverage c WHERE c.event_key = e.event_key)`;
|
|
49
|
+
const availableFilter = (exceptSync = 0) => `${pendingWhere} AND NOT EXISTS (SELECT 1 FROM sync_items i JOIN syncs held ON held.id=i.sync_id WHERE i.event_key=e.event_key AND held.status='open' AND held.id != ${exceptSync})`;
|
|
50
|
+
const availableWhere = availableFilter();
|
|
51
|
+
const evidenceSelect = `SELECT s.agent,e.id AS source_id, e.event_key, e.session_id, s.name AS session_name, s.path AS source_path,
|
|
52
|
+
s.cwd, e.entry_id, e.timestamp, e.role FROM agent_entries e JOIN agent_sessions s ON s.id = e.session_id`;
|
|
53
|
+
function defaultModels() {
|
|
54
|
+
const limit = Number(process.env.DRAKEN_PI_MAX_INVOCATIONS || 120);
|
|
55
|
+
return {
|
|
56
|
+
summary: process.env.DRAKEN_PI_SUMMARY_MODEL || 'openai/gpt-6-luna',
|
|
57
|
+
final: process.env.DRAKEN_PI_FINAL_MODEL || process.env.DRAKEN_PI_MODEL || 'openai/gpt-6-astra',
|
|
58
|
+
max_invocations: Number.isInteger(limit) ? Math.max(1, Math.min(limit, 500)) : 120,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function pendingCount() {
|
|
62
|
+
return (0, schema_1.getDb)().prepare(`SELECT COUNT(DISTINCT e.event_key) AS count FROM agent_entries e
|
|
63
|
+
JOIN agent_sessions s ON s.id = e.session_id WHERE ${pendingWhere}`).get().count;
|
|
64
|
+
}
|
|
65
|
+
function historySince() {
|
|
66
|
+
const row = (0, schema_1.getDb)().prepare("SELECT value FROM sync_settings WHERE key = 'history_since'").get();
|
|
67
|
+
return row?.value || null;
|
|
68
|
+
}
|
|
69
|
+
function overview() {
|
|
70
|
+
const db = (0, schema_1.getDb)();
|
|
71
|
+
const sessions = db.prepare(`SELECT s.id, s.agent, COALESCE(s.external_id,s.id) AS external_id, s.path, s.cwd, s.name, s.included, s.missing, s.modified_at,
|
|
72
|
+
(SELECT COUNT(DISTINCT e.event_key) FROM agent_entries e WHERE e.session_id = s.id AND e.active = 1
|
|
73
|
+
AND e.present = 1 AND e.is_activity = 1 AND e.effective_length > 0 AND ${historyWindow}
|
|
74
|
+
AND NOT EXISTS (SELECT 1 FROM sync_coverage c WHERE c.event_key = e.event_key)) AS pending
|
|
75
|
+
FROM agent_sessions s ORDER BY s.modified_at DESC`).all();
|
|
76
|
+
const syncs = db.prepare(`${summaryQuery} ORDER BY s.id DESC LIMIT 50`).all()
|
|
77
|
+
.map(row => ({ ...row, aggregation_cost: (0, cost_1.aggregationCost)(db, row.id, Boolean(row.briefing)) }));
|
|
78
|
+
const models = defaultModels();
|
|
79
|
+
return {
|
|
80
|
+
agents: (0, registry_1.agentSources)(db), sessions, syncs, pending: pendingCount(), active_sync_id: syncs.find(s => s.status === 'open')?.id || null,
|
|
81
|
+
session_root: (0, source_files_1.getSessionRoot)(), model: models.final || 'pi configured default', summary_model: models.summary,
|
|
82
|
+
history_since: historySince(),
|
|
83
|
+
history_initialized: Boolean(db.prepare("SELECT 1 FROM sync_settings WHERE key = 'history_since'").get()),
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
function homeOverview(before) {
|
|
87
|
+
const db = (0, schema_1.getDb)();
|
|
88
|
+
const rows = db.prepare(`${summaryQuery} WHERE s.id < ? ORDER BY s.id DESC LIMIT 21`).all(before || Number.MAX_SAFE_INTEGER);
|
|
89
|
+
const available = db.prepare(`SELECT COUNT(DISTINCT e.event_key) AS n FROM agent_entries e JOIN agent_sessions s ON s.id=e.session_id WHERE ${availableWhere}`).get().n;
|
|
90
|
+
return { syncs: rows.slice(0, 20).map(row => ({ aggregation_cost: (0, cost_1.aggregationCost)(db, row.id, Boolean(row.briefing)), id: row.id, status: row.status, created_at: row.created_at, item_count: row.item_count,
|
|
91
|
+
preview: row.recap || row.briefing.replace(/\[([EC]\d+)\]/g, '').replace(/\s+/g, ' ').slice(0, 600),
|
|
92
|
+
preview_kind: row.recap ? row.recap_state === 'ready' ? 'recap' : 'previous_recap' : row.briefing ? 'briefing' : 'empty', busy: exports.busySyncs.has(row.id), active_call: exports.activeVoiceSyncs.has(row.id),
|
|
93
|
+
needs_retry: row.status === 'open' && !row.briefing && ['failed', 'cancelled', 'interrupted'].includes(db.prepare('SELECT status FROM sync_runs WHERE sync_id=? ORDER BY id DESC LIMIT 1').get(row.id)?.status),
|
|
94
|
+
calls: db.prepare('SELECT (SELECT COUNT(*) FROM voice_calls WHERE sync_id=?) + (SELECT COUNT(*) FROM live_calls WHERE sync_id=?) AS n').get(row.id, row.id).n })),
|
|
95
|
+
available, included_unreviewed: pendingCount() - available,
|
|
96
|
+
covered: db.prepare('SELECT COUNT(*) AS n FROM sync_coverage').get().n,
|
|
97
|
+
busy: exports.busySyncs.size > 0, active_call: exports.activeVoiceSyncs.size > 0, next_cursor: rows.length > 20 ? rows[19].id : null };
|
|
98
|
+
}
|
|
99
|
+
function setAgentEnabled(agent, enabled) {
|
|
100
|
+
if (!registry_1.AGENTS.some(value => value === agent))
|
|
101
|
+
throw new HttpError(404, 'Unknown agent source');
|
|
102
|
+
(0, schema_1.getDb)().prepare('UPDATE agent_sources SET enabled=? WHERE id=?').run(Number(enabled), agent);
|
|
103
|
+
return overview();
|
|
104
|
+
}
|
|
105
|
+
function setIncluded(sessionId, included) {
|
|
106
|
+
const result = (0, schema_1.getDb)().prepare('UPDATE agent_sessions SET included = ? WHERE id = ?').run(Number(included), sessionId);
|
|
107
|
+
if (!result.changes)
|
|
108
|
+
throw new HttpError(404, 'Session not found');
|
|
109
|
+
}
|
|
110
|
+
function getProgress(id) {
|
|
111
|
+
const db = (0, schema_1.getDb)();
|
|
112
|
+
const sync = db.prepare('SELECT compression_complete FROM syncs WHERE id = ?').get(id);
|
|
113
|
+
if (!sync)
|
|
114
|
+
throw new HttpError(404, 'Sync not found');
|
|
115
|
+
const run = db.prepare(`SELECT id, status, stage, summary_model, final_model, invocations, max_invocations,
|
|
116
|
+
processed_entries, total_entries, cache_hits, error, question, started_at, completed_at, metrics_json
|
|
117
|
+
FROM sync_runs WHERE sync_id = ? ORDER BY id DESC LIMIT 1`).get(id);
|
|
118
|
+
const nodes = db.prepare('SELECT key, kind, label, status, children_json, source_count, error FROM sync_tree_nodes WHERE sync_id = ? ORDER BY rowid').all(id)
|
|
119
|
+
.map(({ children_json, ...node }) => ({ ...node, children: JSON.parse(children_json) }));
|
|
120
|
+
const { metrics_json, ...fields } = run || { metrics_json: '[]' };
|
|
121
|
+
return { busy: exports.busySyncs.has(id), complete: Boolean(sync.compression_complete),
|
|
122
|
+
run: run ? { ...fields, metrics: JSON.parse(metrics_json) } : null, nodes };
|
|
123
|
+
}
|
|
124
|
+
function getSync(id) {
|
|
125
|
+
const db = (0, schema_1.getDb)();
|
|
126
|
+
const row = db.prepare(`${summaryQuery} WHERE s.id = ?`).get(id);
|
|
127
|
+
if (!row)
|
|
128
|
+
throw new HttpError(404, 'Sync not found');
|
|
129
|
+
const extra = db.prepare('SELECT context_json, memory_json, model_config_json FROM syncs WHERE id = ?').get(id);
|
|
130
|
+
const reader = new evidence_1.EvidenceReader(db);
|
|
131
|
+
try {
|
|
132
|
+
const items = db.prepare('SELECT evidence_json FROM sync_items WHERE sync_id = ? ORDER BY rowid').all(id).map(item => reader.read(item.evidence_json, true));
|
|
133
|
+
return {
|
|
134
|
+
...row, aggregation_cost: (0, cost_1.aggregationCost)(db, id, Boolean(row.briefing)), items, context: JSON.parse(extra.context_json).map((item) => reader.read(item, true)), memory: JSON.parse(extra.memory_json),
|
|
135
|
+
messages: db.prepare('SELECT id, role, content, created_at FROM sync_messages WHERE sync_id = ? ORDER BY id').all(id),
|
|
136
|
+
busy: exports.busySyncs.has(id), history_since: historySince(),
|
|
137
|
+
models: { ...defaultModels(), ...JSON.parse(extra.model_config_json) }, tree: getProgress(id),
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
finally {
|
|
141
|
+
reader.close();
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
function assertEvidenceAvailable(sync) {
|
|
145
|
+
if ([...sync.items, ...sync.context].some(item => item.unavailable))
|
|
146
|
+
throw new HttpError(409, 'Original session evidence is unavailable or changed. Restore the session files before summarizing, calling or marking this snapshot reviewed. Conversation and notes remain accessible.');
|
|
147
|
+
}
|
|
148
|
+
function requireOpen(id, allowBusy = false) {
|
|
149
|
+
const sync = getSync(id);
|
|
150
|
+
if (sync.status !== 'open')
|
|
151
|
+
throw new HttpError(409, 'This sync is already closed');
|
|
152
|
+
if (!allowBusy && sync.busy)
|
|
153
|
+
throw new HttpError(409, 'A reply is still being generated. Wait or cancel before changing this sync.');
|
|
154
|
+
if (!allowBusy && exports.activeVoiceSyncs.has(id))
|
|
155
|
+
throw new HttpError(409, 'End the voice call before changing this sync.');
|
|
156
|
+
return sync;
|
|
157
|
+
}
|
|
158
|
+
/** No LIMIT: the snapshot contains ALL eligible entries. Inference, not coverage, is chunked. */
|
|
159
|
+
function snapshot(previous) {
|
|
160
|
+
const db = (0, schema_1.getDb)();
|
|
161
|
+
const old = new Map(previous?.items.map(item => [item.event_key, item]) || []);
|
|
162
|
+
let nextRef = Math.max(0, ...[...(previous?.items || []), ...(previous?.context || [])]
|
|
163
|
+
.map(item => item.ref.startsWith('E') ? Number(item.ref.slice(1)) : 0)) + 1;
|
|
164
|
+
const items = [];
|
|
165
|
+
const seen = new Set();
|
|
166
|
+
const firstBySession = new Map();
|
|
167
|
+
const reader = new source_files_1.EntryReader(db);
|
|
168
|
+
try {
|
|
169
|
+
for (const row of db.prepare(`${evidenceSelect} WHERE ${availableFilter(previous?.id)} ORDER BY e.timestamp, e.id`).iterate()) {
|
|
170
|
+
if (seen.has(row.event_key))
|
|
171
|
+
continue;
|
|
172
|
+
const { source_id, ...metadata } = row;
|
|
173
|
+
const data = { ...metadata, text: reader.effective(source_id) };
|
|
174
|
+
const prior = old.get(row.event_key);
|
|
175
|
+
const same = prior && prior.text === data.text;
|
|
176
|
+
items.push({ ...data, sequence: source_id, ref: same ? prior.ref : `E${nextRef++}` });
|
|
177
|
+
seen.add(row.event_key);
|
|
178
|
+
firstBySession.set(row.session_id, Math.min(firstBySession.get(row.session_id) ?? Infinity, source_id));
|
|
179
|
+
}
|
|
180
|
+
// Preserve evidence behind old conversation citations, but don't treat obsolete branch evidence as new work.
|
|
181
|
+
const current = new Set(items.map(normalize_1.sourceKey));
|
|
182
|
+
const context = [...(previous?.context || []), ...(previous?.items || [])].filter(item => !current.has((0, normalize_1.sourceKey)(item)));
|
|
183
|
+
const contextKeys = new Set(context.map(normalize_1.sourceKey));
|
|
184
|
+
let contextChars = 0;
|
|
185
|
+
let nextContext = Math.max(0, ...context.map(item => item.ref.startsWith('C') ? Number(item.ref.slice(1)) : 0)) + 1;
|
|
186
|
+
for (const [sessionId, firstId] of firstBySession) {
|
|
187
|
+
const prior = db.prepare(`${evidenceSelect} WHERE e.session_id = ? AND e.active = 1 AND e.present = 1
|
|
188
|
+
AND e.id < ? AND e.effective_length > 0 ORDER BY e.id DESC LIMIT 6`).all(sessionId, firstId);
|
|
189
|
+
for (const row of prior.reverse()) {
|
|
190
|
+
if (seen.has(row.event_key))
|
|
191
|
+
continue;
|
|
192
|
+
const { source_id, ...metadata } = row;
|
|
193
|
+
const item = { ...metadata, ref: `C${nextContext}`, text: (0, normalize_1.cleanText)(reader.effective(source_id), 2000) };
|
|
194
|
+
if (contextKeys.has((0, normalize_1.sourceKey)(item)))
|
|
195
|
+
continue;
|
|
196
|
+
nextContext++;
|
|
197
|
+
const cost = JSON.stringify(item).length;
|
|
198
|
+
if (contextChars + cost > 24000)
|
|
199
|
+
break;
|
|
200
|
+
context.push(item);
|
|
201
|
+
contextKeys.add((0, normalize_1.sourceKey)(item));
|
|
202
|
+
contextChars += cost;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return { items, context };
|
|
206
|
+
}
|
|
207
|
+
finally {
|
|
208
|
+
reader.close();
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
function frozenContext(db, items) {
|
|
212
|
+
const reader = new evidence_1.EvidenceReader(db);
|
|
213
|
+
try {
|
|
214
|
+
return JSON.stringify(items.map(item => JSON.parse(reader.freeze(item))));
|
|
215
|
+
}
|
|
216
|
+
finally {
|
|
217
|
+
reader.close();
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
function persistItems(id, items) {
|
|
221
|
+
const insert = (0, schema_1.getDb)().prepare('INSERT INTO sync_items(sync_id, event_key, evidence_json) VALUES (?, ?, ?)');
|
|
222
|
+
const reader = new evidence_1.EvidenceReader((0, schema_1.getDb)());
|
|
223
|
+
try {
|
|
224
|
+
for (const item of items)
|
|
225
|
+
insert.run(id, item.event_key, reader.freeze(item));
|
|
226
|
+
}
|
|
227
|
+
finally {
|
|
228
|
+
reader.close();
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
function startSync(since) {
|
|
232
|
+
const db = (0, schema_1.getDb)();
|
|
233
|
+
return db.transaction(() => {
|
|
234
|
+
const existing = db.prepare("SELECT id FROM syncs WHERE status = 'open' ORDER BY id DESC LIMIT 1").get();
|
|
235
|
+
if (existing)
|
|
236
|
+
return getSync(existing.id);
|
|
237
|
+
if (!db.prepare("SELECT 1 FROM sync_settings WHERE key = 'history_since'").get()) {
|
|
238
|
+
const parsed = since ? new Date(since) : null;
|
|
239
|
+
if (parsed && (!Number.isFinite(parsed.getTime()) || parsed.getTime() > Date.now()))
|
|
240
|
+
throw new HttpError(400, 'The initial history start must be a valid date in the past');
|
|
241
|
+
const hasCompleted = db.prepare("SELECT 1 FROM syncs WHERE status = 'completed' LIMIT 1").get();
|
|
242
|
+
db.prepare("INSERT INTO sync_settings(key, value) VALUES ('history_since', ?)").run(hasCompleted ? '' : parsed?.toISOString() || '');
|
|
243
|
+
}
|
|
244
|
+
const { items, context } = snapshot();
|
|
245
|
+
const memory = db.prepare(`SELECT id AS sync_id, decisions, carry_forward FROM syncs
|
|
246
|
+
WHERE status = 'completed' ORDER BY id DESC LIMIT 10`).all();
|
|
247
|
+
const now = new Date().toISOString();
|
|
248
|
+
const result = db.prepare(`INSERT INTO syncs(created_at, snapshot_at, snapshot_version, context_json, memory_json, carry_forward)
|
|
249
|
+
VALUES (?, ?, 2, ?, ?, ?)`).run(now, now, frozenContext(db, context), JSON.stringify(memory), memory[0]?.carry_forward || '');
|
|
250
|
+
const id = Number(result.lastInsertRowid);
|
|
251
|
+
persistItems(id, items);
|
|
252
|
+
return getSync(id);
|
|
253
|
+
})();
|
|
254
|
+
}
|
|
255
|
+
/** New one-click workflow: reserve previously unassigned entries, never review them.
|
|
256
|
+
* Repeated transport requests reuse the same immutable snapshot. */
|
|
257
|
+
function startConversationSync(requestId) {
|
|
258
|
+
const db = (0, schema_1.getDb)();
|
|
259
|
+
return db.transaction(() => {
|
|
260
|
+
const existing = db.prepare('SELECT sync_id FROM sync_presentations WHERE request_id=?').get(requestId);
|
|
261
|
+
if (existing)
|
|
262
|
+
return getSync(existing.sync_id);
|
|
263
|
+
if (exports.activeVoiceSyncs.size || exports.busySyncs.size)
|
|
264
|
+
throw new HttpError(409, 'End the active call or wait for preparation before starting another sync.');
|
|
265
|
+
db.prepare("INSERT OR IGNORE INTO sync_settings(key,value) VALUES ('history_since','')").run();
|
|
266
|
+
const prior = db.prepare("SELECT id FROM syncs WHERE status != 'discarded' ORDER BY id DESC LIMIT 3").all().map(row => getSync(row.id));
|
|
267
|
+
const inputs = prior.map(recap_1.recapInput);
|
|
268
|
+
const memory = prior.map(item => ({ sync_id: item.id, status: item.status, snapshot_at: item.snapshot_at, decisions: item.decisions, carry_forward: item.carry_forward, recap: item.recap }));
|
|
269
|
+
const { items, context } = snapshot(), now = new Date().toISOString();
|
|
270
|
+
const result = db.prepare(`INSERT INTO syncs(created_at,snapshot_at,snapshot_version,context_json,memory_json,carry_forward,model_config_json)
|
|
271
|
+
VALUES (?,?,2,?,?,?,?)`).run(now, now, frozenContext(db, context), JSON.stringify(memory), memory[0]?.carry_forward || '', JSON.stringify(defaultModels()));
|
|
272
|
+
const id = Number(result.lastInsertRowid);
|
|
273
|
+
persistItems(id, items);
|
|
274
|
+
db.prepare('INSERT INTO sync_presentations(sync_id,request_id,memory_inputs_json) VALUES (?,?,?)').run(id, requestId, JSON.stringify(inputs));
|
|
275
|
+
return getSync(id);
|
|
276
|
+
})();
|
|
277
|
+
}
|
|
278
|
+
function archiveBriefing(sync, reason) {
|
|
279
|
+
if (sync.briefing)
|
|
280
|
+
(0, schema_1.getDb)().prepare('INSERT INTO sync_messages(sync_id, role, content, created_at) VALUES (?, ?, ?, ?)')
|
|
281
|
+
.run(sync.id, 'assistant', `[Historical briefing — superseded: ${reason}]\n${sync.briefing}`, new Date().toISOString());
|
|
282
|
+
(0, schema_1.getDb)().prepare("UPDATE syncs SET briefing = '', compression_complete = 0 WHERE id = ?").run(sync.id);
|
|
283
|
+
}
|
|
284
|
+
function expandSnapshot(id) {
|
|
285
|
+
const db = (0, schema_1.getDb)();
|
|
286
|
+
return db.transaction(() => {
|
|
287
|
+
const sync = requireOpen(id);
|
|
288
|
+
if (sync.snapshot_version >= 2)
|
|
289
|
+
throw new HttpError(409, 'This is already a full frozen snapshot. Later arrivals belong in the next sync.');
|
|
290
|
+
assertEvidenceAvailable(sync);
|
|
291
|
+
const { items, context } = snapshot(sync);
|
|
292
|
+
archiveBriefing(sync, 'the old partial snapshot was expanded; later evidence may change its conclusions');
|
|
293
|
+
db.prepare('DELETE FROM sync_items WHERE sync_id = ?').run(id);
|
|
294
|
+
persistItems(id, items);
|
|
295
|
+
db.prepare('UPDATE syncs SET snapshot_version = 2, snapshot_at = ?, context_json = ?, remaining_count = 0 WHERE id = ?')
|
|
296
|
+
.run(new Date().toISOString(), frozenContext(db, context), id);
|
|
297
|
+
return getSync(id);
|
|
298
|
+
})();
|
|
299
|
+
}
|
|
300
|
+
function configureModels(id, models) {
|
|
301
|
+
const sync = requireOpen(id);
|
|
302
|
+
for (const model of [models.summary, models.final]) {
|
|
303
|
+
if (typeof model !== 'string' || (model !== '' && !/^[a-zA-Z0-9][a-zA-Z0-9._/:+@-]{0,199}$/.test(model)))
|
|
304
|
+
throw new HttpError(400, 'Use a pi provider/model selector, not a shell command');
|
|
305
|
+
}
|
|
306
|
+
if (!models.summary)
|
|
307
|
+
throw new HttpError(400, 'Choose a summary model explicitly; there is no silent expensive-model fallback');
|
|
308
|
+
if (!Number.isInteger(models.max_invocations) || models.max_invocations < 1 || models.max_invocations > 500)
|
|
309
|
+
throw new HttpError(400, 'The invocation limit must be between 1 and 500');
|
|
310
|
+
(0, schema_1.getDb)().transaction(() => {
|
|
311
|
+
if (sync.models.summary !== models.summary || sync.models.final !== models.final)
|
|
312
|
+
archiveBriefing(sync, 'model selection changed');
|
|
313
|
+
(0, schema_1.getDb)().prepare('UPDATE syncs SET model_config_json = ? WHERE id = ?').run(JSON.stringify(models), id);
|
|
314
|
+
})();
|
|
315
|
+
return getSync(id);
|
|
316
|
+
}
|
|
317
|
+
function getTreeNode(id, key) {
|
|
318
|
+
const node = (0, schema_1.getDb)().prepare(`SELECT n.kind, n.label, c.output_json FROM sync_tree_nodes n
|
|
319
|
+
JOIN summary_cache c ON c.key = n.key WHERE n.sync_id = ? AND n.key = ?`).get(id, key);
|
|
320
|
+
if (!node)
|
|
321
|
+
throw new HttpError(404, 'Completed summary node not found');
|
|
322
|
+
const sync = getSync(id);
|
|
323
|
+
return { kind: node.kind, label: node.label, output: JSON.parse(node.output_json),
|
|
324
|
+
refs: Object.fromEntries([...sync.items, ...sync.context].map(item => [(0, normalize_1.sourceKey)(item), item.ref])) };
|
|
325
|
+
}
|
|
326
|
+
function recoverInterruptedRuns() {
|
|
327
|
+
(0, schema_1.getDb)().prepare("UPDATE sync_presentations SET recap_state='failed',recap_error='Recap interrupted by restart. Retry to reuse cached fragments.' WHERE recap_state='running'").run();
|
|
328
|
+
(0, schema_1.getDb)().prepare("UPDATE sync_runs SET status = 'interrupted', error = 'Server restarted. Retry to reuse completed summaries.', completed_at = ? WHERE status = 'running'")
|
|
329
|
+
.run(new Date().toISOString());
|
|
330
|
+
}
|
|
331
|
+
function saveNotes(id, decisions, carryForward) {
|
|
332
|
+
requireOpen(id);
|
|
333
|
+
(0, recap_1.invalidateRecap)(id);
|
|
334
|
+
(0, schema_1.getDb)().prepare('UPDATE syncs SET decisions = ?, carry_forward = ? WHERE id = ?').run(decisions, carryForward, id);
|
|
335
|
+
return getSync(id);
|
|
336
|
+
}
|
|
337
|
+
function completeSync(id, decisions, carryForward, reviewed) {
|
|
338
|
+
const db = (0, schema_1.getDb)();
|
|
339
|
+
return db.transaction(() => {
|
|
340
|
+
const sync = requireOpen(id);
|
|
341
|
+
if (!reviewed)
|
|
342
|
+
throw new HttpError(400, 'Confirm you reviewed this snapshot before finishing the sync');
|
|
343
|
+
assertEvidenceAvailable(sync);
|
|
344
|
+
if (sync.tree.run && !sync.tree.complete)
|
|
345
|
+
throw new HttpError(409, 'Compression or the final verdict is incomplete. Retry or discard; failed work cannot advance coverage.');
|
|
346
|
+
if (sync.decisions !== decisions || sync.carry_forward !== carryForward)
|
|
347
|
+
(0, recap_1.invalidateRecap)(id);
|
|
348
|
+
db.prepare(`UPDATE syncs SET status = 'completed', completed_at = ?, decisions = ?, carry_forward = ? WHERE id = ?`)
|
|
349
|
+
.run(new Date().toISOString(), decisions, carryForward, id);
|
|
350
|
+
db.prepare('INSERT OR IGNORE INTO sync_coverage(event_key, sync_id) SELECT event_key, sync_id FROM sync_items WHERE sync_id = ?').run(id);
|
|
351
|
+
return getSync(id);
|
|
352
|
+
})();
|
|
353
|
+
}
|
|
354
|
+
function discardSync(id) {
|
|
355
|
+
requireOpen(id);
|
|
356
|
+
(0, schema_1.getDb)().prepare("UPDATE syncs SET status = 'discarded', completed_at = ? WHERE id = ?").run(new Date().toISOString(), id);
|
|
357
|
+
return getSync(id);
|
|
358
|
+
}
|
|
359
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/sync/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare const LUNA_BATCH: {
|
|
2
|
+
readonly version: "sync-tree-v3-token-batches";
|
|
3
|
+
readonly inputTokens: 96000;
|
|
4
|
+
readonly inputBytes: 1000000;
|
|
5
|
+
readonly entries: 2000;
|
|
6
|
+
readonly plannedRequestTokens: 160000;
|
|
7
|
+
readonly requestTokens: 192000;
|
|
8
|
+
readonly requestBytes: 1500000;
|
|
9
|
+
readonly outputBytes: 64000;
|
|
10
|
+
readonly rootTokens: 12000;
|
|
11
|
+
readonly rootReferences: 96;
|
|
12
|
+
readonly finalTokens: 64000;
|
|
13
|
+
};
|
|
14
|
+
export declare const isBatchSummaryModel: (model: string | undefined) => model is "openai/gpt-6-luna";
|
|
15
|
+
/** o200k is a planning estimate for GPT-6, not a verified server tokenizer.
|
|
16
|
+
* Special-token-looking source text remains ordinary untrusted text. */
|
|
17
|
+
export declare function summaryTokens(text: string): number;
|
|
18
|
+
export declare function promptTokens(prompt: string, system: string): number;
|
|
19
|
+
//# sourceMappingURL=summary-budget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summary-budget.d.ts","sourceRoot":"","sources":["../../src/sync/summary-budget.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,UAAU;;;;;;;;;;;;CAYb,CAAC;AACX,eAAO,MAAM,mBAAmB,GAAI,OAAO,MAAM,GAAG,SAAS,iCAAkC,CAAC;AAEhG;wEACwE;AACxE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMlD;AACD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAGnE"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isBatchSummaryModel = exports.LUNA_BATCH = void 0;
|
|
4
|
+
exports.summaryTokens = summaryTokens;
|
|
5
|
+
exports.promptTokens = promptTokens;
|
|
6
|
+
// Local planning estimates, never provider billing/usage claims. OpenAI publishes
|
|
7
|
+
// 1,050,000 context / 128,000 output for GPT-6 Luna, but the installed pi chat
|
|
8
|
+
// catalog advertises 272,000. Stay below that smaller window, including output
|
|
9
|
+
// and framing headroom; do not modify pi's catalog or assume long-context access.
|
|
10
|
+
exports.LUNA_BATCH = {
|
|
11
|
+
version: 'sync-tree-v3-token-batches',
|
|
12
|
+
inputTokens: 96_000,
|
|
13
|
+
inputBytes: 1_000_000,
|
|
14
|
+
entries: 2_000,
|
|
15
|
+
plannedRequestTokens: 160_000,
|
|
16
|
+
requestTokens: 192_000,
|
|
17
|
+
requestBytes: 1_500_000,
|
|
18
|
+
outputBytes: 64_000,
|
|
19
|
+
rootTokens: 12_000,
|
|
20
|
+
rootReferences: 96,
|
|
21
|
+
finalTokens: 64_000,
|
|
22
|
+
};
|
|
23
|
+
const isBatchSummaryModel = (model) => model === 'openai/gpt-6-luna';
|
|
24
|
+
exports.isBatchSummaryModel = isBatchSummaryModel;
|
|
25
|
+
let tokenizer;
|
|
26
|
+
/** o200k is a planning estimate for GPT-6, not a verified server tokenizer.
|
|
27
|
+
* Special-token-looking source text remains ordinary untrusted text. */
|
|
28
|
+
function summaryTokens(text) {
|
|
29
|
+
if (!tokenizer) {
|
|
30
|
+
tokenizer = require('gpt-tokenizer/cjs/encoding/o200k_base');
|
|
31
|
+
tokenizer.setMergeCacheSize(10_000);
|
|
32
|
+
}
|
|
33
|
+
return tokenizer.countTokens(text, { disallowedSpecial: new Set() });
|
|
34
|
+
}
|
|
35
|
+
function promptTokens(prompt, system) {
|
|
36
|
+
// Reserve 20% for tokenizer/framing differences plus fixed session overhead.
|
|
37
|
+
return Math.ceil(summaryTokens(system + '\n' + prompt) * 1.2) + 8192;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=summary-budget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summary-budget.js","sourceRoot":"","sources":["../../src/sync/summary-budget.ts"],"names":[],"mappings":";;;AAqBA,sCAMC;AACD,oCAGC;AA/BD,kFAAkF;AAClF,+EAA+E;AAC/E,+EAA+E;AAC/E,kFAAkF;AACrE,QAAA,UAAU,GAAG;IACxB,OAAO,EAAE,4BAA4B;IACrC,WAAW,EAAE,MAAM;IACnB,UAAU,EAAE,SAAS;IACrB,OAAO,EAAE,KAAK;IACd,oBAAoB,EAAE,OAAO;IAC7B,aAAa,EAAE,OAAO;IACtB,YAAY,EAAE,SAAS;IACvB,WAAW,EAAE,MAAM;IACnB,UAAU,EAAE,MAAM;IAClB,cAAc,EAAE,EAAE;IAClB,WAAW,EAAE,MAAM;CACX,CAAC;AACJ,MAAM,mBAAmB,GAAG,CAAC,KAAyB,EAAE,EAAE,CAAC,KAAK,KAAK,mBAAmB,CAAC;AAAnF,QAAA,mBAAmB,uBAAgE;AAChG,IAAI,SAA6E,CAAC;AAClF;wEACwE;AACxE,SAAgB,aAAa,CAAC,IAAY;IACxC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG,OAAO,CAAC,uCAAuC,CAAC,CAAC;QAC7D,SAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,SAAU,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,iBAAiB,EAAE,IAAI,GAAG,EAAU,EAAE,CAAC,CAAC;AAChF,CAAC;AACD,SAAgB,YAAY,CAAC,MAAc,EAAE,MAAc;IACzD,6EAA6E;IAC7E,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC;AACvE,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { NodeKind, NodeSummary, SyncDetail, TopicGroups } from '../types';
|
|
2
|
+
export interface SummaryNode {
|
|
3
|
+
key: string;
|
|
4
|
+
kind: NodeKind;
|
|
5
|
+
label: string;
|
|
6
|
+
summary: NodeSummary;
|
|
7
|
+
sources: string[];
|
|
8
|
+
}
|
|
9
|
+
export declare function validateSummary(value: unknown, allowed: Set<string>, limits?: {
|
|
10
|
+
observations: number;
|
|
11
|
+
limitations: number;
|
|
12
|
+
characters: number;
|
|
13
|
+
}): NodeSummary;
|
|
14
|
+
/** Patch only overfull citation arrays. Never truncate locally, change claims, or guess refs. */
|
|
15
|
+
export declare function repairSummaryCitations(candidate: NodeSummary, value: unknown, allowed: Set<string>, limits?: {
|
|
16
|
+
observations: number;
|
|
17
|
+
limitations: number;
|
|
18
|
+
characters: number;
|
|
19
|
+
}): NodeSummary;
|
|
20
|
+
export declare function validateGroups(value: unknown, allowed: Set<string>): TopicGroups;
|
|
21
|
+
export declare class SummaryTree {
|
|
22
|
+
private sync;
|
|
23
|
+
private runId;
|
|
24
|
+
private signal;
|
|
25
|
+
private readonly db;
|
|
26
|
+
private readonly sourceMap;
|
|
27
|
+
private readonly primary;
|
|
28
|
+
private readonly accountAggregation;
|
|
29
|
+
constructor(sync: SyncDetail, runId: number, signal: AbortSignal);
|
|
30
|
+
private stage;
|
|
31
|
+
call(payload: unknown, system: string, final?: boolean): Promise<string>;
|
|
32
|
+
private register;
|
|
33
|
+
private spec;
|
|
34
|
+
private node;
|
|
35
|
+
private chunkSpecs;
|
|
36
|
+
private mergePayload;
|
|
37
|
+
private dated;
|
|
38
|
+
private mergeLevel;
|
|
39
|
+
private reduce;
|
|
40
|
+
private cached;
|
|
41
|
+
private tokenBatches;
|
|
42
|
+
private batchSpecs;
|
|
43
|
+
private compactRoots;
|
|
44
|
+
private reconcileBatch;
|
|
45
|
+
private buildBatched;
|
|
46
|
+
build(): Promise<SummaryNode[]>;
|
|
47
|
+
finalSummaries(nodes: SummaryNode[]): {
|
|
48
|
+
observations: {
|
|
49
|
+
source_positions?: {
|
|
50
|
+
session: string;
|
|
51
|
+
sequence: number | null;
|
|
52
|
+
role: string;
|
|
53
|
+
timestamp: string;
|
|
54
|
+
background: boolean;
|
|
55
|
+
}[] | undefined;
|
|
56
|
+
first_at: string;
|
|
57
|
+
last_at: string;
|
|
58
|
+
workspaces: string[];
|
|
59
|
+
background_only: boolean;
|
|
60
|
+
topic: string;
|
|
61
|
+
state: "requested" | "in_progress" | "reported_done" | "validated" | "blocked" | "superseded" | "unclear";
|
|
62
|
+
summary: string;
|
|
63
|
+
evidence: string[];
|
|
64
|
+
}[];
|
|
65
|
+
limitations: string[];
|
|
66
|
+
topic: string;
|
|
67
|
+
}[];
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=tree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../src/sync/tree.ts"],"names":[],"mappings":"AACA,OAAO,EAA6B,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAgDrG,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AA4BD,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM;;;;CAAgB,GAAG,WAAW,CAoBzG;AAED,iGAAiG;AACjG,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM;;;;CAAgB,GAAG,WAAW,CAiBxI;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,WAAW,CAehF;AAoBD,qBAAa,WAAW;IAKV,OAAO,CAAC,IAAI;IAAc,OAAO,CAAC,KAAK;IAAU,OAAO,CAAC,MAAM;IAJ3E,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAW;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;gBACzB,IAAI,EAAE,UAAU,EAAU,KAAK,EAAE,MAAM,EAAU,MAAM,EAAE,WAAW;IAQxF,OAAO,CAAC,KAAK;IAKP,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IA8B5E,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,IAAI;YAYE,IAAI;IAqElB,OAAO,CAAC,UAAU;IA0BlB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,KAAK;YAYC,UAAU;YAeV,MAAM;IAQpB,OAAO,CAAC,MAAM;IAUd,OAAO,CAAC,YAAY;IAkBpB,OAAO,CAAC,UAAU;IAuClB,OAAO,CAAC,YAAY;YAKN,cAAc;YAed,YAAY;IAiCpB,KAAK,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAmErC,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;CACpC"}
|