reflectt-node 0.1.3 → 0.1.5
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 +60 -151
- package/dist/alert-preflight.d.ts +28 -0
- package/dist/alert-preflight.d.ts.map +1 -1
- package/dist/alert-preflight.js +178 -0
- package/dist/alert-preflight.js.map +1 -1
- package/dist/boardHealthWorker.d.ts.map +1 -1
- package/dist/boardHealthWorker.js +25 -12
- package/dist/boardHealthWorker.js.map +1 -1
- package/dist/chat-approval-detector.d.ts.map +1 -1
- package/dist/chat-approval-detector.js +29 -11
- package/dist/chat-approval-detector.js.map +1 -1
- package/dist/chat.d.ts +1 -0
- package/dist/chat.d.ts.map +1 -1
- package/dist/chat.js +14 -3
- package/dist/chat.js.map +1 -1
- package/dist/cli.js +187 -22
- package/dist/cli.js.map +1 -1
- package/dist/cloud.d.ts +28 -1
- package/dist/cloud.d.ts.map +1 -1
- package/dist/cloud.js +55 -20
- package/dist/cloud.js.map +1 -1
- package/dist/compliance-detector.d.ts +42 -0
- package/dist/compliance-detector.d.ts.map +1 -0
- package/dist/compliance-detector.js +286 -0
- package/dist/compliance-detector.js.map +1 -0
- package/dist/continuity-loop.d.ts.map +1 -1
- package/dist/continuity-loop.js +7 -3
- package/dist/continuity-loop.js.map +1 -1
- package/dist/dashboard.d.ts +6 -2
- package/dist/dashboard.d.ts.map +1 -1
- package/dist/dashboard.js +56 -26
- package/dist/dashboard.js.map +1 -1
- package/dist/doctor.d.ts +2 -0
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +78 -11
- package/dist/doctor.js.map +1 -1
- package/dist/executionSweeper.d.ts.map +1 -1
- package/dist/executionSweeper.js +12 -0
- package/dist/executionSweeper.js.map +1 -1
- package/dist/health.d.ts.map +1 -1
- package/dist/health.js +30 -7
- package/dist/health.js.map +1 -1
- package/dist/hostConnectGuard.d.ts +25 -0
- package/dist/hostConnectGuard.d.ts.map +1 -0
- package/dist/hostConnectGuard.js +27 -0
- package/dist/hostConnectGuard.js.map +1 -0
- package/dist/index.js +144 -29
- package/dist/index.js.map +1 -1
- package/dist/insight-task-bridge.d.ts +22 -1
- package/dist/insight-task-bridge.d.ts.map +1 -1
- package/dist/insight-task-bridge.js +19 -4
- package/dist/insight-task-bridge.js.map +1 -1
- package/dist/mcp.js +6 -6
- package/dist/mcp.js.map +1 -1
- package/dist/notificationDedupeGuard.d.ts +33 -0
- package/dist/notificationDedupeGuard.d.ts.map +1 -0
- package/dist/notificationDedupeGuard.js +88 -0
- package/dist/notificationDedupeGuard.js.map +1 -0
- package/dist/policy.d.ts +1 -1
- package/dist/policy.d.ts.map +1 -1
- package/dist/policy.js +3 -1
- package/dist/policy.js.map +1 -1
- package/dist/preflight.d.ts.map +1 -1
- package/dist/preflight.js +7 -8
- package/dist/preflight.js.map +1 -1
- package/dist/reflection-automation.d.ts.map +1 -1
- package/dist/reflection-automation.js +38 -0
- package/dist/reflection-automation.js.map +1 -1
- package/dist/request-tracker.d.ts +13 -0
- package/dist/request-tracker.d.ts.map +1 -1
- package/dist/request-tracker.js +95 -16
- package/dist/request-tracker.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +244 -58
- package/dist/server.js.map +1 -1
- package/dist/service-probe.d.ts.map +1 -1
- package/dist/service-probe.js +39 -2
- package/dist/service-probe.js.map +1 -1
- package/dist/shipped-heartbeat.d.ts +1 -1
- package/dist/shipped-heartbeat.js +1 -1
- package/dist/taskPrecheck.js +6 -6
- package/dist/taskPrecheck.js.map +1 -1
- package/dist/tasks.d.ts +1 -1
- package/dist/tasks.d.ts.map +1 -1
- package/dist/tasks.js +8 -5
- package/dist/tasks.js.map +1 -1
- package/dist/todoHoardingGuard.d.ts +35 -0
- package/dist/todoHoardingGuard.d.ts.map +1 -0
- package/dist/todoHoardingGuard.js +150 -0
- package/dist/todoHoardingGuard.js.map +1 -0
- package/dist/types.d.ts +2 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/working-contract.d.ts.map +1 -1
- package/dist/working-contract.js +59 -3
- package/dist/working-contract.js.map +1 -1
- package/package.json +1 -1
- package/public/dashboard.js +94 -27
- package/public/docs.md +17 -2
- package/public/intensity-mock.html +413 -0
- package/public/polls-mock.html +610 -0
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (c) Reflectt AI
|
|
3
|
+
/**
|
|
4
|
+
* Session Compliance Detector
|
|
5
|
+
*
|
|
6
|
+
* Implements the state-read-before-assertion rule:
|
|
7
|
+
* Every triggering action (task create, status transition, review, reflection)
|
|
8
|
+
* must be preceded by at least one qualifying state read within the session window.
|
|
9
|
+
*
|
|
10
|
+
* Based on: docs/compliance-spec-state-reads.md
|
|
11
|
+
* Task: task-1772609696194-1i9s775yl
|
|
12
|
+
*
|
|
13
|
+
* Phase 1: API-layer triggers only.
|
|
14
|
+
* Phase 2 (future): chat assertion detection.
|
|
15
|
+
*
|
|
16
|
+
* Flag, do not block. Observability-first.
|
|
17
|
+
*/
|
|
18
|
+
import { getDb } from './db.js';
|
|
19
|
+
// ── Constants ──────────────────────────────────────────────────────────────
|
|
20
|
+
/** Normal session window (ms) */
|
|
21
|
+
const WINDOW_NORMAL_MS = 10 * 60 * 1000;
|
|
22
|
+
/** Long-running task session window (ms) */
|
|
23
|
+
const WINDOW_LONG_MS = 30 * 60 * 1000;
|
|
24
|
+
/** Heartbeat-triggered session window (ms) */
|
|
25
|
+
const WINDOW_HEARTBEAT_MS = 5 * 60 * 1000;
|
|
26
|
+
// Sessions keyed by: `${agent}:${bucketId}` where bucketId is 30-min bucket
|
|
27
|
+
const sessions = new Map();
|
|
28
|
+
function getBucketId(now) {
|
|
29
|
+
// 30-minute buckets
|
|
30
|
+
return String(Math.floor(now / WINDOW_LONG_MS));
|
|
31
|
+
}
|
|
32
|
+
function getSessionKey(agent, now) {
|
|
33
|
+
return `${agent.toLowerCase()}:${getBucketId(now)}`;
|
|
34
|
+
}
|
|
35
|
+
function getOrCreateSession(agent, now) {
|
|
36
|
+
const key = getSessionKey(agent, now);
|
|
37
|
+
if (!sessions.has(key)) {
|
|
38
|
+
// Carry forward the most recent state read from the previous bucket,
|
|
39
|
+
// so reads near a bucket boundary don't lose their validity window.
|
|
40
|
+
const prevKey = `${agent.toLowerCase()}:${String(Number(getBucketId(now)) - 1)}`;
|
|
41
|
+
const prev = sessions.get(prevKey);
|
|
42
|
+
sessions.set(key, {
|
|
43
|
+
lastStateReadAt: prev?.lastStateReadAt ?? null,
|
|
44
|
+
lastReadWasHeartbeat: prev?.lastReadWasHeartbeat ?? false,
|
|
45
|
+
hasActiveTask: prev?.hasActiveTask ?? false,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
// Clean stale sessions (older than 2 buckets)
|
|
49
|
+
cleanStaleSessions(now);
|
|
50
|
+
return sessions.get(key);
|
|
51
|
+
}
|
|
52
|
+
function cleanStaleSessions(now) {
|
|
53
|
+
const currentBucket = getBucketId(now);
|
|
54
|
+
const prevBucket = String(Number(currentBucket) - 1);
|
|
55
|
+
for (const key of sessions.keys()) {
|
|
56
|
+
const bucket = key.split(':')[1];
|
|
57
|
+
if (bucket !== currentBucket && bucket !== prevBucket) {
|
|
58
|
+
sessions.delete(key);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// ── State read registry ────────────────────────────────────────────────────
|
|
63
|
+
/** URL patterns that count as qualifying state reads */
|
|
64
|
+
const STATE_READ_PATTERNS = [
|
|
65
|
+
{ pattern: /^GET \/heartbeat\/[^/]+$/, isHeartbeat: true },
|
|
66
|
+
{ pattern: /^GET \/tasks\/active($|\?)/, isHeartbeat: false },
|
|
67
|
+
{ pattern: /^GET \/tasks\/next($|\?)/, isHeartbeat: false },
|
|
68
|
+
{ pattern: /^GET \/tasks($|\?)/, isHeartbeat: false },
|
|
69
|
+
{ pattern: /^GET \/tasks\/[^/]+($|\?)/, isHeartbeat: false },
|
|
70
|
+
{ pattern: /^GET \/chat\/messages($|\?)/, isHeartbeat: false },
|
|
71
|
+
{ pattern: /^GET \/inbox\/[^/]+($|\?)/, isHeartbeat: false },
|
|
72
|
+
{ pattern: /^GET \/me\/[^/]+($|\?)/, isHeartbeat: false },
|
|
73
|
+
];
|
|
74
|
+
/** URL + method patterns that count as triggering actions */
|
|
75
|
+
const TRIGGERING_PATTERNS = [
|
|
76
|
+
{ pattern: /^POST \/tasks($|\?)/, label: 'POST /tasks' },
|
|
77
|
+
{ pattern: /^PATCH \/tasks\/[^/]+($|\?)/, label: 'PATCH /tasks/:id' },
|
|
78
|
+
{ pattern: /^POST \/tasks\/[^/]+\/review($|\?)/, label: 'POST /tasks/:id/review' },
|
|
79
|
+
{ pattern: /^POST \/reflections($|\?)/, label: 'POST /reflections' },
|
|
80
|
+
// Note: POST /tasks/:id/comments is NOT a Phase 1 trigger.
|
|
81
|
+
// Phase 2 will add chat assertion detection for comments with status claims.
|
|
82
|
+
];
|
|
83
|
+
function isStateRead(method, path) {
|
|
84
|
+
const key = `${method.toUpperCase()} ${path.split('?')[0]}`;
|
|
85
|
+
for (const { pattern, isHeartbeat } of STATE_READ_PATTERNS) {
|
|
86
|
+
if (pattern.test(key))
|
|
87
|
+
return { isRead: true, isHeartbeat };
|
|
88
|
+
}
|
|
89
|
+
return { isRead: false, isHeartbeat: false };
|
|
90
|
+
}
|
|
91
|
+
function isTriggeringAction(method, path) {
|
|
92
|
+
const key = `${method.toUpperCase()} ${path.split('?')[0]}`;
|
|
93
|
+
for (const { pattern, label } of TRIGGERING_PATTERNS) {
|
|
94
|
+
if (pattern.test(key))
|
|
95
|
+
return label;
|
|
96
|
+
}
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
// ── Agent extraction ───────────────────────────────────────────────────────
|
|
100
|
+
/**
|
|
101
|
+
* Extract agent name from request context.
|
|
102
|
+
* Tries: URL params, query params, body, from header.
|
|
103
|
+
*/
|
|
104
|
+
export function extractAgent(method, url, query, body, headers) {
|
|
105
|
+
// URL param patterns: /heartbeat/:agent, /inbox/:agent, /me/:agent
|
|
106
|
+
const urlMatch = url.match(/\/(?:heartbeat|inbox|me)\/([a-z][a-z0-9_-]*)(?:\/|\?|$)/i);
|
|
107
|
+
if (urlMatch)
|
|
108
|
+
return urlMatch[1].toLowerCase();
|
|
109
|
+
// Query param: agent=
|
|
110
|
+
if (query.agent && typeof query.agent === 'string')
|
|
111
|
+
return query.agent.toLowerCase();
|
|
112
|
+
// Body: from, agent, assignee
|
|
113
|
+
if (body && typeof body === 'object') {
|
|
114
|
+
const b = body;
|
|
115
|
+
const candidate = b.from ?? b.agent ?? b.assignee;
|
|
116
|
+
if (typeof candidate === 'string' && candidate.length > 0)
|
|
117
|
+
return candidate.toLowerCase();
|
|
118
|
+
}
|
|
119
|
+
// Header: x-agent-id
|
|
120
|
+
const agentHeader = headers['x-agent-id'];
|
|
121
|
+
if (typeof agentHeader === 'string')
|
|
122
|
+
return agentHeader.toLowerCase();
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
// ── DB setup ───────────────────────────────────────────────────────────────
|
|
126
|
+
let dbReady = false;
|
|
127
|
+
function ensureTable() {
|
|
128
|
+
if (dbReady)
|
|
129
|
+
return;
|
|
130
|
+
try {
|
|
131
|
+
const db = getDb();
|
|
132
|
+
db.exec(`
|
|
133
|
+
CREATE TABLE IF NOT EXISTS compliance_violations (
|
|
134
|
+
id TEXT PRIMARY KEY,
|
|
135
|
+
agent TEXT NOT NULL,
|
|
136
|
+
session_id TEXT NOT NULL,
|
|
137
|
+
violation_type TEXT NOT NULL,
|
|
138
|
+
severity TEXT NOT NULL,
|
|
139
|
+
triggering_call TEXT NOT NULL,
|
|
140
|
+
last_state_read_at INTEGER,
|
|
141
|
+
window_elapsed_ms INTEGER,
|
|
142
|
+
window_used_ms INTEGER NOT NULL,
|
|
143
|
+
detected_at INTEGER NOT NULL
|
|
144
|
+
);
|
|
145
|
+
CREATE INDEX IF NOT EXISTS idx_compliance_violations_agent ON compliance_violations(agent);
|
|
146
|
+
CREATE INDEX IF NOT EXISTS idx_compliance_violations_detected_at ON compliance_violations(detected_at);
|
|
147
|
+
`);
|
|
148
|
+
dbReady = true;
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
// DB not available (e.g. test env) — run in degraded mode
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
function persistViolation(v) {
|
|
155
|
+
try {
|
|
156
|
+
const db = getDb();
|
|
157
|
+
db.prepare(`
|
|
158
|
+
INSERT OR REPLACE INTO compliance_violations
|
|
159
|
+
(id, agent, session_id, violation_type, severity, triggering_call,
|
|
160
|
+
last_state_read_at, window_elapsed_ms, window_used_ms, detected_at)
|
|
161
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
162
|
+
`).run(v.id, v.agent, v.session_id, v.violation_type, v.severity, v.triggering_call, v.last_state_read_at, v.window_elapsed_ms, v.window_used_ms, v.detected_at);
|
|
163
|
+
}
|
|
164
|
+
catch {
|
|
165
|
+
// Silent — never block a request due to compliance logging failure
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// ── Core detector ──────────────────────────────────────────────────────────
|
|
169
|
+
/**
|
|
170
|
+
* Called for every request that completes successfully (statusCode < 400).
|
|
171
|
+
* Records state reads and checks triggering actions for compliance.
|
|
172
|
+
*/
|
|
173
|
+
export function processRequest(method, url, statusCode, query, body, headers, now = Date.now()) {
|
|
174
|
+
// Only track successful requests
|
|
175
|
+
if (statusCode >= 400)
|
|
176
|
+
return null;
|
|
177
|
+
const agent = extractAgent(method, url, query, body, headers);
|
|
178
|
+
if (!agent)
|
|
179
|
+
return null;
|
|
180
|
+
// Skip system/watchdog agents
|
|
181
|
+
if (['system', 'watchdog', 'openai'].includes(agent))
|
|
182
|
+
return null;
|
|
183
|
+
ensureTable();
|
|
184
|
+
const path = url.split('?')[0];
|
|
185
|
+
const session = getOrCreateSession(agent, now);
|
|
186
|
+
const sessionId = getSessionKey(agent, now);
|
|
187
|
+
// Record state read
|
|
188
|
+
const { isRead, isHeartbeat } = isStateRead(method, path);
|
|
189
|
+
if (isRead) {
|
|
190
|
+
session.lastStateReadAt = now;
|
|
191
|
+
session.lastReadWasHeartbeat = isHeartbeat;
|
|
192
|
+
return null;
|
|
193
|
+
}
|
|
194
|
+
// Check triggering action
|
|
195
|
+
const triggerLabel = isTriggeringAction(method, path);
|
|
196
|
+
if (!triggerLabel)
|
|
197
|
+
return null;
|
|
198
|
+
// Determine window
|
|
199
|
+
const windowMs = session.lastReadWasHeartbeat
|
|
200
|
+
? WINDOW_HEARTBEAT_MS
|
|
201
|
+
: session.hasActiveTask
|
|
202
|
+
? WINDOW_LONG_MS
|
|
203
|
+
: WINDOW_NORMAL_MS;
|
|
204
|
+
const lastReadAt = session.lastStateReadAt;
|
|
205
|
+
const windowElapsedMs = lastReadAt !== null ? now - lastReadAt : null;
|
|
206
|
+
// Evaluate violation
|
|
207
|
+
let violationType = null;
|
|
208
|
+
let severity = 'medium';
|
|
209
|
+
if (lastReadAt === null) {
|
|
210
|
+
// No state read at all this session
|
|
211
|
+
violationType = 'no_state_read_before_action';
|
|
212
|
+
severity = 'high';
|
|
213
|
+
}
|
|
214
|
+
else if (windowElapsedMs !== null && windowElapsedMs > windowMs) {
|
|
215
|
+
// State read exists but window expired
|
|
216
|
+
violationType = 'stale_state_read';
|
|
217
|
+
severity = 'medium';
|
|
218
|
+
}
|
|
219
|
+
if (!violationType)
|
|
220
|
+
return null;
|
|
221
|
+
const violation = {
|
|
222
|
+
id: `cv-${now}-${Math.random().toString(36).slice(2, 9)}`,
|
|
223
|
+
agent,
|
|
224
|
+
session_id: sessionId,
|
|
225
|
+
violation_type: violationType,
|
|
226
|
+
severity,
|
|
227
|
+
triggering_call: triggerLabel,
|
|
228
|
+
last_state_read_at: lastReadAt,
|
|
229
|
+
window_elapsed_ms: windowElapsedMs,
|
|
230
|
+
window_used_ms: windowMs,
|
|
231
|
+
detected_at: now,
|
|
232
|
+
};
|
|
233
|
+
persistViolation(violation);
|
|
234
|
+
return violation;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Mark a session as having an active doing task (extends window to 30 min).
|
|
238
|
+
*/
|
|
239
|
+
export function setSessionHasActiveTask(agent, hasTask, now = Date.now()) {
|
|
240
|
+
const session = getOrCreateSession(agent, now);
|
|
241
|
+
session.hasActiveTask = hasTask;
|
|
242
|
+
}
|
|
243
|
+
export function queryViolations(opts = {}) {
|
|
244
|
+
try {
|
|
245
|
+
const db = getDb();
|
|
246
|
+
ensureTable();
|
|
247
|
+
const { agent, severity, limit = 100, since } = opts;
|
|
248
|
+
const conditions = [];
|
|
249
|
+
const params = [];
|
|
250
|
+
if (agent) {
|
|
251
|
+
conditions.push('agent = ?');
|
|
252
|
+
params.push(agent.toLowerCase());
|
|
253
|
+
}
|
|
254
|
+
if (severity) {
|
|
255
|
+
conditions.push('severity = ?');
|
|
256
|
+
params.push(severity);
|
|
257
|
+
}
|
|
258
|
+
if (since) {
|
|
259
|
+
conditions.push('detected_at >= ?');
|
|
260
|
+
params.push(since);
|
|
261
|
+
}
|
|
262
|
+
const where = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
|
|
263
|
+
const rows = db.prepare(`SELECT * FROM compliance_violations ${where} ORDER BY detected_at DESC LIMIT ?`).all(...params, limit);
|
|
264
|
+
return rows;
|
|
265
|
+
}
|
|
266
|
+
catch {
|
|
267
|
+
return [];
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
export function getViolationSummary(since) {
|
|
271
|
+
const cutoff = since ?? (Date.now() - 24 * 60 * 60 * 1000); // default 24h
|
|
272
|
+
const violations = queryViolations({ since: cutoff, limit: 10_000 });
|
|
273
|
+
const byAgent = {};
|
|
274
|
+
const bySeverity = {};
|
|
275
|
+
for (const v of violations) {
|
|
276
|
+
byAgent[v.agent] = (byAgent[v.agent] ?? 0) + 1;
|
|
277
|
+
bySeverity[v.severity] = (bySeverity[v.severity] ?? 0) + 1;
|
|
278
|
+
}
|
|
279
|
+
return {
|
|
280
|
+
total: violations.length,
|
|
281
|
+
byAgent,
|
|
282
|
+
bySeverity,
|
|
283
|
+
sinceMs: cutoff,
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
//# sourceMappingURL=compliance-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compliance-detector.js","sourceRoot":"","sources":["../src/compliance-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"continuity-loop.d.ts","sourceRoot":"","sources":["../src/continuity-loop.ts"],"names":[],"mappings":"AAsBA,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,iBAAiB,GAAG,kBAAkB,GAAG,4BAA4B,GAAG,eAAe,CAAA;IAC7F,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAA;IAChB,oEAAoE;IACpE,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAA;IAChB,2DAA2D;IAC3D,kBAAkB,EAAE,MAAM,CAAA;IAC1B,kEAAkE;IAClE,WAAW,EAAE,MAAM,CAAA;IACnB,+CAA+C;IAC/C,eAAe,EAAE,MAAM,CAAA;IACvB,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,gBAAgB,EAAE,MAAM,CAAA;IACxB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,iBAAiB,EAAE,MAAM,CAAA;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB;AAiBD,wBAAgB,0BAA0B,IAAI,IAAI,CAejD;AAqCD;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC;IAClD,OAAO,EAAE,gBAAgB,EAAE,CAAA;IAC3B,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAC,
|
|
1
|
+
{"version":3,"file":"continuity-loop.d.ts","sourceRoot":"","sources":["../src/continuity-loop.ts"],"names":[],"mappings":"AAsBA,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,iBAAiB,GAAG,kBAAkB,GAAG,4BAA4B,GAAG,eAAe,CAAA;IAC7F,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAA;IAChB,oEAAoE;IACpE,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAA;IAChB,2DAA2D;IAC3D,kBAAkB,EAAE,MAAM,CAAA;IAC1B,kEAAkE;IAClE,WAAW,EAAE,MAAM,CAAA;IACnB,+CAA+C;IAC/C,eAAe,EAAE,MAAM,CAAA;IACvB,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,gBAAgB,EAAE,MAAM,CAAA;IACxB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,iBAAiB,EAAE,MAAM,CAAA;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB;AAiBD,wBAAgB,0BAA0B,IAAI,IAAI,CAejD;AAqCD;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC;IAClD,OAAO,EAAE,gBAAgB,EAAE,CAAA;IAC3B,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAC,CA0FD;AAuED,wBAAgB,kBAAkB,IAAI,eAAe,CAEpD;AAED,wBAAgB,qBAAqB,CAAC,KAAK,SAAK,GAAG,gBAAgB,EAAE,CAEpE;AAED,wBAAgB,wBAAwB,CAAC,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,gBAAgB,EAAE,CAmB1H;AAID,wBAAgB,qBAAqB,IAAI,IAAI,CAU5C"}
|
package/dist/continuity-loop.js
CHANGED
|
@@ -86,15 +86,19 @@ function getConfig() {
|
|
|
86
86
|
*/
|
|
87
87
|
export async function tickContinuityLoop() {
|
|
88
88
|
const config = getConfig();
|
|
89
|
+
const now = Date.now();
|
|
90
|
+
// Always record the tick when the loop is enabled so /continuity/stats reflects
|
|
91
|
+
// real scheduler activity even on no-op cycles (e.g. zero agents configured).
|
|
92
|
+
if (config.enabled) {
|
|
93
|
+
stats.cyclesRun++;
|
|
94
|
+
stats.lastRunAt = now;
|
|
95
|
+
}
|
|
89
96
|
if (!config.enabled || config.agents.length === 0) {
|
|
90
97
|
return { actions: [], agentsChecked: 0, replenished: 0 };
|
|
91
98
|
}
|
|
92
|
-
const now = Date.now();
|
|
93
99
|
const cooldownMs = config.cooldownMin * 60_000;
|
|
94
100
|
const actions = [];
|
|
95
101
|
let replenished = 0;
|
|
96
|
-
stats.cyclesRun++;
|
|
97
|
-
stats.lastRunAt = now;
|
|
98
102
|
for (const agent of config.agents) {
|
|
99
103
|
// Cooldown check
|
|
100
104
|
if (lastReplenishAt[agent] && now - lastReplenishAt[agent] < cooldownMs)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"continuity-loop.js","sourceRoot":"","sources":["../src/continuity-loop.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,kCAAkC;AAClC,EAAE;AACF,kEAAkE;AAClE,gDAAgD;AAChD,mFAAmF;AACnF,uFAAuF;AACvF,gDAAgD;AAChD,EAAE;AACF,2EAA2E;AAE3E,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAgB,MAAM,eAAe,CAAA;AAC1D,OAAO,EAAE,cAAc,EAA0B,MAAM,wBAAwB,CAAA;AAC/E,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAA;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,KAAK,EAAoC,MAAM,SAAS,CAAA;AAsCjE,cAAc;AAEd,MAAM,QAAQ,GAAuB,EAAE,CAAA;AACvC,MAAM,eAAe,GAA2B,EAAE,CAAA;AAElD,IAAI,KAAK,GAAoB;IAC3B,SAAS,EAAE,CAAC;IACZ,gBAAgB,EAAE,CAAC;IACnB,qBAAqB,EAAE,CAAC;IACxB,iBAAiB,EAAE,CAAC;IACpB,SAAS,EAAE,IAAI;CAChB,CAAA;AAED,sCAAsC;AAEtC,MAAM,UAAU,0BAA0B;IACxC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAClB,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;GAYP,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,MAAwB;IAC5C,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACrB,6BAA6B;IAC7B,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG;QAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,CAAA;IAEpE,IAAI,CAAC;QACH,0BAA0B,EAAE,CAAA;QAC5B,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;QAClB,EAAE,CAAC,OAAO,CAAC;;;KAGV,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,IAAI,IAAI,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,CAAA;IAChI,CAAC;IAAC,MAAM,CAAC;QACP,0CAA0C;IAC5C,CAAC;AACH,CAAC;AAED,eAAe;AAEf,SAAS,SAAS;IAChB,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,EAAE,CAAA;IAClC,MAAM,GAAG,GAAI,MAAc,CAAC,eAAe,IAAI,EAAE,CAAA;IACjD,OAAO;QACL,OAAO,EAAG,MAAc,CAAC,cAAc,EAAE,OAAO,IAAI,IAAI;QACxD,MAAM,EAAG,MAAc,CAAC,cAAc,EAAE,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE;QAClE,QAAQ,EAAG,MAAc,CAAC,cAAc,EAAE,QAAQ,IAAI,GAAG,CAAC,QAAQ,IAAI,CAAC;QACvE,kBAAkB,EAAG,MAAc,CAAC,cAAc,EAAE,kBAAkB,IAAI,CAAC;QAC3E,WAAW,EAAG,MAAc,CAAC,cAAc,EAAE,WAAW,IAAI,EAAE;QAC9D,eAAe,EAAG,MAAc,CAAC,cAAc,EAAE,eAAe,IAAI,MAAM;QAC1E,OAAO,EAAG,MAAc,CAAC,cAAc,EAAE,OAAO,IAAI,GAAG,CAAC,OAAO,IAAI,SAAS;KAC7E,CAAA;AACH,CAAC;AAED,kBAAkB;AAElB;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB;IAKtC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAA;IAC1D,CAAC;IAED,MAAM,
|
|
1
|
+
{"version":3,"file":"continuity-loop.js","sourceRoot":"","sources":["../src/continuity-loop.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,kCAAkC;AAClC,EAAE;AACF,kEAAkE;AAClE,gDAAgD;AAChD,mFAAmF;AACnF,uFAAuF;AACvF,gDAAgD;AAChD,EAAE;AACF,2EAA2E;AAE3E,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAgB,MAAM,eAAe,CAAA;AAC1D,OAAO,EAAE,cAAc,EAA0B,MAAM,wBAAwB,CAAA;AAC/E,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAA;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,KAAK,EAAoC,MAAM,SAAS,CAAA;AAsCjE,cAAc;AAEd,MAAM,QAAQ,GAAuB,EAAE,CAAA;AACvC,MAAM,eAAe,GAA2B,EAAE,CAAA;AAElD,IAAI,KAAK,GAAoB;IAC3B,SAAS,EAAE,CAAC;IACZ,gBAAgB,EAAE,CAAC;IACnB,qBAAqB,EAAE,CAAC;IACxB,iBAAiB,EAAE,CAAC;IACpB,SAAS,EAAE,IAAI;CAChB,CAAA;AAED,sCAAsC;AAEtC,MAAM,UAAU,0BAA0B;IACxC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAClB,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;GAYP,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,MAAwB;IAC5C,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACrB,6BAA6B;IAC7B,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG;QAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,CAAA;IAEpE,IAAI,CAAC;QACH,0BAA0B,EAAE,CAAA;QAC5B,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;QAClB,EAAE,CAAC,OAAO,CAAC;;;KAGV,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,IAAI,IAAI,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,CAAA;IAChI,CAAC;IAAC,MAAM,CAAC;QACP,0CAA0C;IAC5C,CAAC;AACH,CAAC;AAED,eAAe;AAEf,SAAS,SAAS;IAChB,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,EAAE,CAAA;IAClC,MAAM,GAAG,GAAI,MAAc,CAAC,eAAe,IAAI,EAAE,CAAA;IACjD,OAAO;QACL,OAAO,EAAG,MAAc,CAAC,cAAc,EAAE,OAAO,IAAI,IAAI;QACxD,MAAM,EAAG,MAAc,CAAC,cAAc,EAAE,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE;QAClE,QAAQ,EAAG,MAAc,CAAC,cAAc,EAAE,QAAQ,IAAI,GAAG,CAAC,QAAQ,IAAI,CAAC;QACvE,kBAAkB,EAAG,MAAc,CAAC,cAAc,EAAE,kBAAkB,IAAI,CAAC;QAC3E,WAAW,EAAG,MAAc,CAAC,cAAc,EAAE,WAAW,IAAI,EAAE;QAC9D,eAAe,EAAG,MAAc,CAAC,cAAc,EAAE,eAAe,IAAI,MAAM;QAC1E,OAAO,EAAG,MAAc,CAAC,cAAc,EAAE,OAAO,IAAI,GAAG,CAAC,OAAO,IAAI,SAAS;KAC7E,CAAA;AACH,CAAC;AAED,kBAAkB;AAElB;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB;IAKtC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAEtB,gFAAgF;IAChF,8EAA8E;IAC9E,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,KAAK,CAAC,SAAS,EAAE,CAAA;QACjB,KAAK,CAAC,SAAS,GAAG,GAAG,CAAA;IACvB,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAA;IAC1D,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAA;IAC9C,MAAM,OAAO,GAAuB,EAAE,CAAA;IACtC,IAAI,WAAW,GAAG,CAAC,CAAA;IAEnB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,iBAAiB;QACjB,IAAI,eAAe,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,UAAU;YAAE,SAAQ;QAEjF,6BAA6B;QAC7B,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAA;QAC5E,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YACzC,MAAM,OAAO,GAAI,CAAC,CAAC,QAAgB,EAAE,UAAU,CAAA;YAC/C,IAAI,CAAC,OAAO;gBAAE,OAAO,IAAI,CAAA;YACzB,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,OAAiB,CAAC,CAAA;YACtD,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,CAAA;QAC9C,CAAC,CAAC,CAAA;QAEF,IAAI,aAAa,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ;YAAE,SAAQ;QAErD,+CAA+C;QAC/C,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAA;QACtD,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAA;QAE9G,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,eAAe,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA;YAC5B,WAAW,IAAI,QAAQ,CAAC,MAAM,CAAA;YAC9B,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAA;YAEzB,SAAS;YACT,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACtE,IAAI,CAAC;gBACH,MAAM,YAAY,CAAC;oBACjB,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,yCAAyC,KAAK,iBAAiB,QAAQ,CAAC,MAAM,2CAA2C,OAAO,EAAE;oBAC3I,QAAQ,EAAE,iBAAiB;oBAC3B,QAAQ,EAAE,MAAM;oBAChB,YAAY,EAAE,MAAM,CAAC,OAAO;iBAC7B,CAAC,CAAA;YACJ,CAAC;YAAC,MAAM,CAAC,CAAC,+BAA+B,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,6EAA6E;YAC7E,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,MAAM,oBAAoB,EAAE,CAAA;gBAChD,IAAI,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;oBAC1B,KAAK,CAAC,qBAAqB,IAAI,WAAW,CAAC,KAAK,CAAA;oBAChD,MAAM,MAAM,GAAqB;wBAC/B,EAAE,EAAE,YAAY,KAAK,IAAI,GAAG,EAAE;wBAC9B,IAAI,EAAE,4BAA4B;wBAClC,KAAK;wBACL,MAAM,EAAE,sBAAsB,aAAa,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,oCAAoC,WAAW,CAAC,KAAK,wCAAwC;wBAClK,SAAS,EAAE,GAAG;qBACf,CAAA;oBACD,YAAY,CAAC,MAAM,CAAC,CAAA;oBACpB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBACtB,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,iBAAiB,EAAE,CAAA;oBACzB,MAAM,MAAM,GAAqB;wBAC/B,EAAE,EAAE,YAAY,KAAK,IAAI,GAAG,EAAE;wBAC9B,IAAI,EAAE,eAAe;wBACrB,KAAK;wBACL,MAAM,EAAE,sBAAsB,aAAa,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,0FAA0F;wBAC/J,SAAS,EAAE,GAAG;qBACf,CAAA;oBACD,YAAY,CAAC,MAAM,CAAC,CAAA;oBACpB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBACtB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,KAAK,CAAC,iBAAiB,EAAE,CAAA;YAC3B,CAAC;YAED,eAAe,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,CAAC,mCAAmC;QAClE,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,CAAA;AACtE,CAAC;AAED,qCAAqC;AAErC,KAAK,UAAU,qBAAqB,CAClC,KAAa,EACb,KAAa,EACb,MAAwB,EACxB,GAAW;IAEX,MAAM,OAAO,GAAuB,EAAE,CAAA;IAEtC,yDAAyD;IACzD,MAAM,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAA;IACpE,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IAEnD,kCAAkC;IAClC,IAAI,SAAS,GAAkE,EAAE,CAAA;IACjF,IAAI,CAAC;QACH,SAAS,GAAG,2BAA2B,EAAE,CAAA;IAC3C,CAAC;IAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;IAEpB,4CAA4C;IAC5C,MAAM,aAAa,GAAG,CAAC,GAAG,UAAU,CAAC,CAAA;IACrC,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;YACrD,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;YAC3D,qDAAqD;QACvD,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAA;IAE/C,KAAK,MAAM,OAAO,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAsB;YAClC,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,MAAM,CAAC,eAAe;YAChC,GAAG,EAAE,QAAQ;YACb,gBAAgB,EAAE,2BAA2B,OAAO,CAAC,EAAE,+CAA+C;YACtG,0BAA0B,EAAE,oCAAoC;YAChE,mBAAmB,EAAE,sBAAsB;SAC5C,CAAA;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,iBAAiB,CAAC,CAAA;YAC5F,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACrC,KAAK,CAAC,gBAAgB,EAAE,CAAA;gBACxB,MAAM,MAAM,GAAqB;oBAC/B,EAAE,EAAE,cAAc,OAAO,CAAC,EAAE,IAAI,GAAG,EAAE;oBACrC,IAAI,EAAE,kBAAkB;oBACxB,KAAK;oBACL,MAAM,EAAE,yBAAyB,OAAO,CAAC,EAAE,YAAY,OAAO,CAAC,KAAK,eAAe,OAAO,CAAC,QAAQ,YAAY,MAAM,CAAC,OAAO,sBAAsB;oBACnJ,SAAS,EAAE,OAAO,CAAC,EAAE;oBACrB,MAAM,EAAE,MAAM,CAAC,OAAO;oBACtB,SAAS,EAAE,GAAG;iBACf,CAAA;gBACD,YAAY,CAAC,MAAM,CAAC,CAAA;gBACpB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACtB,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,iCAAiC;YACjC,OAAO,CAAC,IAAI,CAAC,8CAA8C,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;QAChF,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,oBAAoB;AAEpB,MAAM,UAAU,kBAAkB;IAChC,OAAO,EAAE,GAAG,KAAK,EAAE,CAAA;AACrB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAK,GAAG,EAAE;IAC9C,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAA;AAC/B,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAA2D,EAAE;IACpG,IAAI,CAAC;QACH,0BAA0B,EAAE,CAAA;QAC5B,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;QAClB,MAAM,KAAK,GAAa,EAAE,CAAA;QAC1B,MAAM,MAAM,GAAc,EAAE,CAAA;QAE5B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAAC,CAAC;QACpE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAAC,CAAC;QAEzE,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAC1E,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC,CAAA;QAE7C,OAAO,EAAE,CAAC,OAAO,CACf,kCAAkC,WAAW,kCAAkC,CAChF,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAuB,CAAA;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED,qBAAqB;AAErB,MAAM,UAAU,qBAAqB;IACnC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAA;IACnB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC;QAAE,OAAO,eAAe,CAAC,GAAG,CAAC,CAAA;IAC3E,KAAK,GAAG;QACN,SAAS,EAAE,CAAC;QACZ,gBAAgB,EAAE,CAAC;QACnB,qBAAqB,EAAE,CAAC;QACxB,iBAAiB,EAAE,CAAC;QACpB,SAAS,EAAE,IAAI;KAChB,CAAA;AACH,CAAC"}
|
package/dist/dashboard.d.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Dashboard HTML — self-contained page served at /dashboard
|
|
3
|
-
* v2:
|
|
3
|
+
* v2: redesign + chat input
|
|
4
4
|
*/
|
|
5
|
-
export
|
|
5
|
+
export interface DashboardOptions {
|
|
6
|
+
/** Show internal cockpit controls (intensity, pause, etc.). Default: false */
|
|
7
|
+
internalMode?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function getDashboardHTML(opts?: DashboardOptions): string;
|
|
6
10
|
//# sourceMappingURL=dashboard.d.ts.map
|
package/dist/dashboard.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../src/dashboard.ts"],"names":[],"mappings":"AAGA;;;GAGG;AAEH,wBAAgB,gBAAgB,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../src/dashboard.ts"],"names":[],"mappings":"AAGA;;;GAGG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,8EAA8E;IAC9E,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,gBAAqB,GAAG,MAAM,CA+5EpE"}
|
package/dist/dashboard.js
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
// Copyright (c) Reflectt AI
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
* v2: Pixel's redesign + chat input for Ryan
|
|
6
|
-
*/
|
|
7
|
-
export function getDashboardHTML() {
|
|
3
|
+
export function getDashboardHTML(opts = {}) {
|
|
4
|
+
const internalMode = opts.internalMode ?? false;
|
|
8
5
|
return `<!DOCTYPE html>
|
|
9
6
|
<html lang="en">
|
|
10
7
|
<head>
|
|
@@ -442,6 +439,13 @@ export function getDashboardHTML() {
|
|
|
442
439
|
.project-tab.active { color: var(--accent); border-bottom-color: var(--accent); }
|
|
443
440
|
.kanban { display: flex; gap: var(--space-3); padding: 16px 18px; overflow-x: auto; min-height: 180px; align-items: flex-start; }
|
|
444
441
|
.kanban-col { flex: 1; min-width: 160px; max-height: 75vh; overflow-y: auto; scrollbar-width: thin; }
|
|
442
|
+
@media (max-width: 768px) {
|
|
443
|
+
.kanban { flex-wrap: wrap; gap: var(--space-2); padding: 12px; }
|
|
444
|
+
.kanban-col { min-width: 140px; flex-basis: calc(50% - 6px); }
|
|
445
|
+
}
|
|
446
|
+
@media (max-width: 480px) {
|
|
447
|
+
.kanban-col { flex-basis: 100%; }
|
|
448
|
+
}
|
|
445
449
|
.kanban-col::-webkit-scrollbar { width: 4px; }
|
|
446
450
|
.kanban-col::-webkit-scrollbar-track { background: transparent; }
|
|
447
451
|
.kanban-col::-webkit-scrollbar-thumb { background: var(--border); border-radius: 2px; }
|
|
@@ -460,6 +464,7 @@ export function getDashboardHTML() {
|
|
|
460
464
|
padding: 10px 12px; margin-bottom: 8px; transition: border-color 0.15s;
|
|
461
465
|
cursor: pointer;
|
|
462
466
|
}
|
|
467
|
+
.task-card.hidden { display: none; }
|
|
463
468
|
.task-card:hover { border-color: var(--accent); }
|
|
464
469
|
|
|
465
470
|
/* Task Modal */
|
|
@@ -985,6 +990,12 @@ export function getDashboardHTML() {
|
|
|
985
990
|
.msg-time { margin-left: 0; }
|
|
986
991
|
.chat-input-bar { padding: 8px 10px; }
|
|
987
992
|
.chat-input-bar select { min-width: 0; width: 100%; }
|
|
993
|
+
.intensity-control { padding: 8px 12px; gap: 6px; }
|
|
994
|
+
.intensity-label { font-size: 10px; }
|
|
995
|
+
.intensity-btn { padding: 4px 8px; font-size: 12px; }
|
|
996
|
+
.intensity-info { font-size: 10px; margin-left: 4px; }
|
|
997
|
+
.intensity-sep { display: none; }
|
|
998
|
+
.pause-toggle-btn { padding: 4px 8px; font-size: 12px; }
|
|
988
999
|
}
|
|
989
1000
|
|
|
990
1001
|
@media (min-width: 768px) and (max-width: 1023px) {
|
|
@@ -1624,6 +1635,7 @@ export function getDashboardHTML() {
|
|
|
1624
1635
|
.intensity-control {
|
|
1625
1636
|
display: flex; align-items: center; gap: 8px; padding: 8px 16px;
|
|
1626
1637
|
background: var(--surface, #1a1a2e); border-bottom: 1px solid var(--border, #2a2a4a);
|
|
1638
|
+
flex-wrap: wrap; max-width: 100vw; box-sizing: border-box;
|
|
1627
1639
|
}
|
|
1628
1640
|
.intensity-label { font-size: var(--text-xs, 11px); color: var(--text-muted, #888); text-transform: uppercase; letter-spacing: 0.05em; margin-right: 4px; }
|
|
1629
1641
|
.intensity-btn {
|
|
@@ -2027,12 +2039,12 @@ export function getDashboardHTML() {
|
|
|
2027
2039
|
<button class="focus-toggle" id="focus-toggle" onclick="toggleFocusMode()" title="Focus Mode: highlight active work, collapse noise">
|
|
2028
2040
|
<span class="focus-icon">🎯</span> Focus
|
|
2029
2041
|
</button>
|
|
2030
|
-
<span id="release-badge" class="release-badge" title="Deploy status">deploy: checking…</span>
|
|
2031
|
-
<span id="build-badge" class="release-badge" title="Build info">build: loading…</span>
|
|
2042
|
+
<span id="release-badge" class="release-badge" title="Deploy status" style="display:none">deploy: checking…</span>
|
|
2043
|
+
<span id="build-badge" class="release-badge" title="Build info" style="display:none">build: loading…</span>
|
|
2032
2044
|
<span id="clock"></span>
|
|
2033
2045
|
</div>
|
|
2034
2046
|
</div>
|
|
2035
|
-
|
|
2047
|
+
${internalMode ? `<div id="pause-banner" class="pause-banner" style="display:none">
|
|
2036
2048
|
<span class="pause-icon">⏸️</span>
|
|
2037
2049
|
<span id="pause-message">Team paused</span>
|
|
2038
2050
|
<button onclick="resumeFromBanner()" class="pause-resume-btn">Resume</button>
|
|
@@ -2045,17 +2057,17 @@ export function getDashboardHTML() {
|
|
|
2045
2057
|
<span id="intensity-info" class="intensity-info"></span>
|
|
2046
2058
|
<span class="intensity-sep">|</span>
|
|
2047
2059
|
<button id="pause-toggle-btn" class="pause-toggle-btn" onclick="toggleTeamPause()" aria-label="Pause team" tabindex="0">⏸️ Pause</button>
|
|
2048
|
-
</div
|
|
2060
|
+
</div>` : '<!-- internal controls hidden (set REFLECTT_INTERNAL_UI=1 to enable) -->'}
|
|
2049
2061
|
|
|
2050
2062
|
<div class="first-boot-banner" id="first-boot-banner" role="region" aria-label="Welcome banner" hidden>
|
|
2051
2063
|
<button class="banner-dismiss" aria-label="Dismiss welcome banner" onclick="dismissFirstBootBanner()">✕</button>
|
|
2052
2064
|
<div class="banner-status"><span class="banner-status-dot"></span> Running</div>
|
|
2053
|
-
<h2 class="banner-heading">
|
|
2054
|
-
<p class="banner-subtext">
|
|
2065
|
+
<h2 class="banner-heading">Welcome — your team is running.</h2>
|
|
2066
|
+
<p class="banner-subtext">Next, connect a chat client or run your first task. Everything here is logged and reviewable.</p>
|
|
2055
2067
|
<div class="banner-pills">
|
|
2056
|
-
<a href="/docs
|
|
2057
|
-
<a href="/
|
|
2058
|
-
<a href="https://app.reflectt.ai" class="banner-pill" target="_blank" rel="noopener"><span>☁️</span> Connect to
|
|
2068
|
+
<a href="/docs" class="banner-pill"><span>📖</span> Read the docs</a>
|
|
2069
|
+
<a href="/capabilities" class="banner-pill"><span>🧭</span> Browse the API</a>
|
|
2070
|
+
<a href="https://app.reflectt.ai/" class="banner-pill" target="_blank" rel="noopener"><span>☁️</span> Connect to Reflectt Cloud <span class="banner-pill-optional">(optional)</span></a>
|
|
2059
2071
|
</div>
|
|
2060
2072
|
</div>
|
|
2061
2073
|
|
|
@@ -2111,38 +2123,54 @@ export function getDashboardHTML() {
|
|
|
2111
2123
|
<!-- Getting Started panel — hidden when configured -->
|
|
2112
2124
|
<div class="getting-started" id="getting-started">
|
|
2113
2125
|
<div class="panel-header">
|
|
2114
|
-
🚀
|
|
2115
|
-
<button class="dismiss-btn" onclick="dismissGettingStarted()" aria-label="Dismiss
|
|
2126
|
+
🚀 Next Steps
|
|
2127
|
+
<button class="dismiss-btn" onclick="dismissGettingStarted()" aria-label="Dismiss panel">Dismiss ✕</button>
|
|
2116
2128
|
</div>
|
|
2117
2129
|
<div class="gs-steps" id="gs-steps">
|
|
2118
2130
|
<div class="gs-step" id="gs-preflight">
|
|
2119
2131
|
<div class="gs-icon">1</div>
|
|
2120
2132
|
<div class="gs-content">
|
|
2121
|
-
<div class="gs-title">
|
|
2122
|
-
<div class="gs-desc">
|
|
2123
|
-
<a class="gs-link" href="/health" target="_blank">
|
|
2133
|
+
<div class="gs-title">Server is running</div>
|
|
2134
|
+
<div class="gs-desc">Your reflectt-node is up and healthy. Check status anytime with <code style="background:var(--border);padding:1px 5px;border-radius:3px;font-size:11px">reflectt status</code></div>
|
|
2135
|
+
<a class="gs-link" href="/health" target="_blank">View health →</a>
|
|
2124
2136
|
</div>
|
|
2125
2137
|
</div>
|
|
2126
2138
|
<div class="gs-step" id="gs-connect">
|
|
2127
2139
|
<div class="gs-icon">2</div>
|
|
2128
2140
|
<div class="gs-content">
|
|
2129
|
-
<div class="gs-title">Connect
|
|
2130
|
-
<div class="gs-desc">
|
|
2131
|
-
<a class="gs-link" href="https://reflectt.ai/
|
|
2141
|
+
<div class="gs-title">Connect to cloud <span style="font-size:11px;opacity:0.6">(optional)</span></div>
|
|
2142
|
+
<div class="gs-desc">Sync your dashboard to the web. Sign up at <a href="https://app.reflectt.ai" target="_blank" style="color:var(--accent)">app.reflectt.ai</a>, get a join token, then run:<br><code style="background:var(--border);padding:2px 6px;border-radius:3px;font-size:11px;display:inline-block;margin-top:4px">reflectt host connect --join-token <token> --cloud-url https://app.reflectt.ai</code></div>
|
|
2143
|
+
<a class="gs-link" href="https://docs.reflectt.ai/first-time-user-journey" target="_blank">Setup guide →</a>
|
|
2132
2144
|
</div>
|
|
2133
2145
|
</div>
|
|
2134
2146
|
<div class="gs-step" id="gs-task">
|
|
2135
2147
|
<div class="gs-icon">3</div>
|
|
2136
2148
|
<div class="gs-content">
|
|
2137
|
-
<div class="gs-title">Create
|
|
2138
|
-
<div class="gs-desc">Post
|
|
2139
|
-
<a class="gs-link" href="/docs" target="_blank">API
|
|
2149
|
+
<div class="gs-title">Create a task or connect an agent</div>
|
|
2150
|
+
<div class="gs-desc">Post your first task via the API, or connect an AI agent (OpenClaw, Claude, etc.) to start working. Your team will pick up tasks automatically.</div>
|
|
2151
|
+
<a class="gs-link" href="/docs" target="_blank">API reference →</a>
|
|
2140
2152
|
</div>
|
|
2141
2153
|
</div>
|
|
2142
2154
|
</div>
|
|
2143
2155
|
</div>
|
|
2144
2156
|
|
|
2145
|
-
|
|
2157
|
+
<!-- Overview empty state — shown when no tasks and no chat activity -->
|
|
2158
|
+
<div class="panel" id="overview-empty-state" style="display:none">
|
|
2159
|
+
<div class="panel-body" style="text-align:center;padding:36px 20px">
|
|
2160
|
+
<div style="font-size:28px;margin-bottom:10px">🌱</div>
|
|
2161
|
+
<div style="font-size:15px;font-weight:500;color:var(--text-bright);margin-bottom:6px">Your workspace is ready</div>
|
|
2162
|
+
<div style="font-size:13px;color:var(--text-muted);max-width:380px;margin:0 auto;line-height:1.5">
|
|
2163
|
+
No tasks or messages yet. Once agents start working, you'll see task progress, chat activity, and shipped outcomes here.
|
|
2164
|
+
</div>
|
|
2165
|
+
<div style="margin-top:16px;display:flex;gap:12px;justify-content:center;flex-wrap:wrap">
|
|
2166
|
+
<a href="/docs" target="_blank" style="color:var(--accent);font-size:12px;text-decoration:none">API docs →</a>
|
|
2167
|
+
<a href="/capabilities" target="_blank" style="color:var(--accent);font-size:12px;text-decoration:none">All capabilities →</a>
|
|
2168
|
+
<a href="/health" target="_blank" style="color:var(--accent);font-size:12px;text-decoration:none">System health →</a>
|
|
2169
|
+
</div>
|
|
2170
|
+
</div>
|
|
2171
|
+
</div>
|
|
2172
|
+
|
|
2173
|
+
<div class="panel focus-only" style="display:none">
|
|
2146
2174
|
<div class="panel-header">🧭 Runtime Truth Card <span class="count" id="truth-count">loading…</span></div>
|
|
2147
2175
|
<div class="panel-body" id="truth-body"></div>
|
|
2148
2176
|
</div>
|
|
@@ -2385,6 +2413,8 @@ export function getDashboardHTML() {
|
|
|
2385
2413
|
<button class="status-btn" data-status="blocked" onclick="updateTaskStatus('blocked')">Blocked</button>
|
|
2386
2414
|
<button class="status-btn" data-status="validating" onclick="updateTaskStatus('validating')">Validating</button>
|
|
2387
2415
|
<button class="status-btn" data-status="done" onclick="updateTaskStatus('done')">Done</button>
|
|
2416
|
+
<button class="status-btn" data-status="resolved_externally" onclick="updateTaskStatus('resolved_externally')">Resolved ext</button>
|
|
2417
|
+
<button class="status-btn" data-status="cancelled" onclick="updateTaskStatus('cancelled')">Cancelled</button>
|
|
2388
2418
|
</div>
|
|
2389
2419
|
</div>
|
|
2390
2420
|
|
package/dist/dashboard.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../src/dashboard.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,4BAA4B;
|
|
1
|
+
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../src/dashboard.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,4BAA4B;AAY5B,MAAM,UAAU,gBAAgB,CAAC,OAAyB,EAAE;IAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,KAAK,CAAA;IAC/C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0/DP,YAAY,CAAC,CAAC,CAAC;;;;;;;;;;;;;OAaV,CAAC,CAAC,CAAC,0EAA0E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAqZ5E,CAAC;AACT,CAAC"}
|
package/dist/doctor.d.ts
CHANGED
|
@@ -12,6 +12,8 @@ export type DoctorReport = {
|
|
|
12
12
|
overall: 'pass' | 'warn' | 'fail';
|
|
13
13
|
ok: boolean;
|
|
14
14
|
freshInstall?: boolean;
|
|
15
|
+
/** Server running but unconfigured (no model key) */
|
|
16
|
+
setupMode?: boolean;
|
|
15
17
|
sections: {
|
|
16
18
|
health: DoctorSectionResult;
|
|
17
19
|
system: DoctorSectionResult;
|
package/dist/doctor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAExF,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,OAAO,CAAA;IACX,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,GAAG,CAAA;CACX,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;IACjC,EAAE,EAAE,OAAO,CAAA;IACX,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,QAAQ,EAAE;QACR,MAAM,EAAE,mBAAmB,CAAA;QAC3B,MAAM,EAAE,mBAAmB,CAAA;QAC3B,SAAS,EAAE,mBAAmB,CAAA;QAC9B,MAAM,EAAE,mBAAmB,CAAA;QAC3B,UAAU,EAAE,mBAAmB,CAAA;QAC/B,SAAS,EAAE,mBAAmB,CAAA;KAC/B,CAAA;IACD,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB,CAAA;AAwCD,wBAAsB,mBAAmB,CAAC,KAAK,EAAE;IAC/C,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,WAAW,CAAA;CACtB,GAAG,OAAO,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAExF,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,OAAO,CAAA;IACX,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,GAAG,CAAA;CACX,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;IACjC,EAAE,EAAE,OAAO,CAAA;IACX,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,qDAAqD;IACrD,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE;QACR,MAAM,EAAE,mBAAmB,CAAA;QAC3B,MAAM,EAAE,mBAAmB,CAAA;QAC3B,SAAS,EAAE,mBAAmB,CAAA;QAC9B,MAAM,EAAE,mBAAmB,CAAA;QAC3B,UAAU,EAAE,mBAAmB,CAAA;QAC/B,SAAS,EAAE,mBAAmB,CAAA;KAC/B,CAAA;IACD,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB,CAAA;AAwCD,wBAAsB,mBAAmB,CAAC,KAAK,EAAE;IAC/C,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,WAAW,CAAA;CACtB,GAAG,OAAO,CAAC,YAAY,CAAC,CAkFxB;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CA6I9D"}
|