hippo-memory 1.42.1 → 1.43.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.
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../src/dashboard.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAiN7B,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,GAAE,MAAa,GAAG,IAAI,CAAC,MAAM,CAgFlF"}
1
+ {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../src/dashboard.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAmN7B,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,GAAE,MAAa,GAAG,IAAI,CAAC,MAAM,CAyGlF"}
package/dist/dashboard.js CHANGED
@@ -7,12 +7,13 @@
7
7
  import * as http from 'http';
8
8
  import * as path from 'path';
9
9
  import * as fs from 'fs';
10
- import { loadAllEntries, listMemoryConflicts, readEntry, writeEntry } from './store.js';
10
+ import { loadAllEntries, listCards, listMemoryConflicts, readEntry, writeEntry } from './store.js';
11
11
  import { calculateStrength, confidenceFacets } from './memory.js';
12
12
  import { loadConfig } from './config.js';
13
13
  import { listPeers } from './shared.js';
14
14
  import { loadEmbeddingIndex } from './embeddings.js';
15
15
  import { resolveTenantId } from './tenant.js';
16
+ import { loadCardDetail } from './card-detail.js';
16
17
  function buildDashboardData(hippoRoot) {
17
18
  // A5: scope dashboard to active tenant. Without this, the UI surfaces every
18
19
  // tenant's memories on a multi-tenant deployment.
@@ -121,6 +122,8 @@ const MIME_TYPES = {
121
122
  '.ico': 'image/x-icon',
122
123
  '.woff2': 'font/woff2',
123
124
  };
125
+ // Binds 127.0.0.1 only; refusing other Hosts closes the DNS-rebinding route.
126
+ const LOOPBACK_HOST = /^(localhost|127\.0\.0\.1)(:\d+)?$/i;
124
127
  function isStaticFileExtension(ext) {
125
128
  return Object.hasOwn(MIME_TYPES, ext);
126
129
  }
@@ -128,7 +131,6 @@ function jsonResponse(res, data, status = 200) {
128
131
  const body = JSON.stringify(data);
129
132
  res.writeHead(status, {
130
133
  'Content-Type': 'application/json; charset=utf-8',
131
- 'Access-Control-Allow-Origin': '*',
132
134
  });
133
135
  res.end(body);
134
136
  }
@@ -141,7 +143,6 @@ function serveStaticFile(res, filePath) {
141
143
  const content = fs.readFileSync(filePath);
142
144
  res.writeHead(200, {
143
145
  'Content-Type': mime,
144
- 'Access-Control-Allow-Origin': '*',
145
146
  });
146
147
  res.end(content);
147
148
  return true;
@@ -153,7 +154,13 @@ function serveStaticFile(res, filePath) {
153
154
  export function serveDashboard(hippoRoot, port = 3333) {
154
155
  const distUiDir = path.resolve(import.meta.dirname, '..', 'dist-ui');
155
156
  const hasDistUi = fs.existsSync(path.join(distUiDir, 'index.html'));
156
- const server = http.createServer((req, res) => {
157
+ const handleRequest = (req, res) => {
158
+ const host = req.headers.host;
159
+ if (host !== undefined && !LOOPBACK_HOST.test(host)) {
160
+ res.writeHead(403, { 'Content-Type': 'text/plain' });
161
+ res.end('Forbidden');
162
+ return;
163
+ }
157
164
  const url = new URL(req.url ?? '/', `http://${req.headers.host ?? 'localhost'}`);
158
165
  const pathname = url.pathname;
159
166
  // --- API routes ---
@@ -169,6 +176,14 @@ export function serveDashboard(hippoRoot, port = 3333) {
169
176
  writeEntry(hippoRoot, entry);
170
177
  return jsonResponse(res, { id, starred: entry.starred });
171
178
  }
179
+ if (pathname === '/api/cards' && req.method === 'GET') {
180
+ return jsonResponse(res, { cards: listCards(hippoRoot, resolveTenantId({})) });
181
+ }
182
+ const cardMatch = pathname.match(/^\/api\/cards\/([A-Za-z0-9_-]+)$/);
183
+ if (cardMatch && req.method === 'GET') {
184
+ const detail = loadCardDetail(hippoRoot, resolveTenantId({}), cardMatch[1]);
185
+ return detail ? jsonResponse(res, detail) : jsonResponse(res, { error: 'Not found' }, 404);
186
+ }
172
187
  const data = buildDashboardData(hippoRoot);
173
188
  if (pathname === '/api/memories')
174
189
  return jsonResponse(res, data.memories);
@@ -219,6 +234,18 @@ export function serveDashboard(hippoRoot, port = 3333) {
219
234
  <pre style="background:#faf7f2;padding:16px;border:1px solid #c4b9a8;border-radius:3px;font-family:Consolas,monospace">cd ui && npm install && npm run build</pre>
220
235
  <p>Then refresh this page. The dashboard server will serve <code>dist-ui/index.html</code> automatically once present.</p>
221
236
  </body></html>`);
237
+ };
238
+ const server = http.createServer((req, res) => {
239
+ try {
240
+ handleRequest(req, res);
241
+ }
242
+ catch (err) {
243
+ console.error('Dashboard request failed:', err);
244
+ if (res.headersSent)
245
+ res.end();
246
+ else
247
+ jsonResponse(res, { error: 'Internal error' }, 500);
248
+ }
222
249
  });
223
250
  server.listen(port, '127.0.0.1', () => {
224
251
  console.log(`Hippo Dashboard running at http://localhost:${port}`);
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../src/dashboard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../src/dashboard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { loadCard, loadCardComments, loadCardDeps, loadCardRuns, loadLatestHandoffForCard } from './store.js';
2
+ /** Loads the detail behind `hippo card show` and `GET /api/cards/:id` (null when the tenant has no such card); five separate reads, so a write landing between them can show a mixed view, as `card show` always could. */
3
+ export function loadCardDetail(hippoRoot, tenantId, id) {
4
+ const card = loadCard(hippoRoot, tenantId, id);
5
+ if (!card)
6
+ return null;
7
+ return {
8
+ card,
9
+ deps: loadCardDeps(hippoRoot, tenantId, id),
10
+ runs: loadCardRuns(hippoRoot, tenantId, id),
11
+ comments: loadCardComments(hippoRoot, tenantId, id),
12
+ handoff: loadLatestHandoffForCard(hippoRoot, tenantId, id),
13
+ };
14
+ }
15
+ //# sourceMappingURL=card-detail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card-detail.js","sourceRoot":"","sources":["../../src/card-detail.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAW9G,2NAA2N;AAC3N,MAAM,UAAU,cAAc,CAAC,SAAiB,EAAE,QAAgB,EAAE,EAAU;IAC5E,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC/C,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO;QACL,IAAI;QACJ,IAAI,EAAE,YAAY,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC;QAC3C,IAAI,EAAE,YAAY,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC;QAC3C,QAAQ,EAAE,gBAAgB,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC;QACnD,OAAO,EAAE,wBAAwB,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC;KAC3D,CAAC;AACJ,CAAC"}
package/dist/src/cli.js CHANGED
@@ -38,11 +38,12 @@ import { execFileSync, execSync, spawn } from 'child_process';
38
38
  import { installJsonHooks, uninstallJsonHooks, resolveJsonHookPaths, detectInstalledTools, defaultSleepLogPath, ensureCodexWrapperInstalled, installCodexWrapper, isCodexWrapperInstalled, repairCodexWrapperIfInstalled, uninstallCodexWrapper, resolveCodexSessionTranscript, resolveCodexWrapperPaths, installOpencodePlugin, uninstallOpencodePlugin, resolveOpencodePluginPath, } from './hooks.js';
39
39
  import { createMemory, calculateStrength, calculateRewardFactor, deriveHalfLife, resolveConfidence, confidenceFacets, confidenceLabel, computeSchemaFit, Layer, } from './memory.js';
40
40
  import { detectSecret } from './secret-detect.js';
41
- import { getHippoRoot, isInitialized, initStore, writeEntry, readEntry, deleteEntry, loadAllEntries, loadSearchEntries, loadRecallSearchEntries, loadIndex, saveIndex, loadStats, updateStats, saveActiveTaskSnapshot, loadActiveTaskSnapshot, closeTaskSnapshotsForSession, clearActiveTaskSnapshot, appendSessionEvent, listSessionEvents, listMemoryConflicts, resolveConflict, saveSessionHandoff, loadLatestHandoff, loadHandoffById, stampHandoffOutcome, writeSessionEndHandoff, createCard, loadCard, listCards, loadCardDeps, loadCardRuns, loadCardComments, claimCard, heartbeatCard, blockCard, reviewCard, completeCard, reclaimExpiredCards, addCardComment, loadLatestHandoffForCard, } from './store.js';
41
+ import { getHippoRoot, isInitialized, initStore, writeEntry, readEntry, deleteEntry, loadAllEntries, loadSearchEntries, loadRecallSearchEntries, loadIndex, saveIndex, loadStats, updateStats, saveActiveTaskSnapshot, loadActiveTaskSnapshot, closeTaskSnapshotsForSession, clearActiveTaskSnapshot, appendSessionEvent, listSessionEvents, listMemoryConflicts, resolveConflict, saveSessionHandoff, loadLatestHandoff, loadHandoffById, stampHandoffOutcome, writeSessionEndHandoff, createCard, loadCard, listCards, loadCardRuns, claimCard, heartbeatCard, blockCard, reviewCard, completeCard, reclaimExpiredCards, addCardComment, } from './store.js';
42
42
  import { rejectValue, unrejectValue, listRejectionsForTenant } from './reject-flow.js';
43
43
  import { RejectedValueError } from './rejection.js';
44
44
  import { isHandoffOutcome, formatHandoffEvidenceLine } from './handoff.js';
45
45
  import { isCardStatus } from './card.js';
46
+ import { loadCardDetail } from './card-detail.js';
46
47
  import { passesScopeFilterForRecall } from './recall-scope.js';
47
48
  import { markRetrieved, hybridSearch, physicsSearch, explainMatch, textOverlap, tokenize as tokenizeQuery } from './search.js';
48
49
  import { compareEntryIdentity } from './compare.js';
@@ -4029,7 +4030,8 @@ function cmdHandoff(hippoRoot, args, flags) {
4029
4030
  }
4030
4031
  // Mirrors ARCHIVE_REASON_REQUIRED so the block message can't drift from its usage line.
4031
4032
  const CARD_BLOCK_REASON_REQUIRED = 'hippo card block <id> requires --reason "<why>" (recorded as a comment).';
4032
- function printCard(hippoRoot, tenantId, card) {
4033
+ function printCard(detail) {
4034
+ const { card, deps, runs, comments, handoff } = detail;
4033
4035
  console.log(`## Card ${card.id}\n`);
4034
4036
  console.log(`- Title: ${card.title}`);
4035
4037
  console.log(`- Status: ${card.status}`);
@@ -4046,26 +4048,22 @@ function printCard(hippoRoot, tenantId, card) {
4046
4048
  if (card.budget !== null)
4047
4049
  console.log(`- Budget: ${card.budget}`);
4048
4050
  console.log(`- Updated: ${card.updatedAt}`);
4049
- const deps = loadCardDeps(hippoRoot, tenantId, card.id);
4050
4051
  if (deps.parents.length > 0)
4051
4052
  console.log(`- Parents: ${deps.parents.join(', ')}`);
4052
4053
  if (deps.children.length > 0)
4053
4054
  console.log(`- Children: ${deps.children.join(', ')}`);
4054
- const runs = loadCardRuns(hippoRoot, tenantId, card.id);
4055
4055
  if (runs.length > 0) {
4056
4056
  console.log('\n### Runs');
4057
4057
  for (const run of runs) {
4058
4058
  console.log(`- run ${run.id}: ${run.runtime} started ${run.started}${run.ended ? ` ended ${run.ended} (${run.outcome})` : ' (open)'}`);
4059
4059
  }
4060
4060
  }
4061
- const comments = loadCardComments(hippoRoot, tenantId, card.id);
4062
4061
  if (comments.length > 0) {
4063
4062
  console.log('\n### Comments');
4064
4063
  for (const comment of comments) {
4065
4064
  console.log(`- [${comment.createdAt}] ${comment.author}: ${comment.body}`);
4066
4065
  }
4067
4066
  }
4068
- const handoff = loadLatestHandoffForCard(hippoRoot, tenantId, card.id);
4069
4067
  if (handoff) {
4070
4068
  console.log('\n### Latest handoff');
4071
4069
  console.log(`- Session: ${handoff.sessionId}, updated ${handoff.updatedAt}`);
@@ -4172,22 +4170,16 @@ function cmdCard(hippoRoot, args, flags) {
4172
4170
  console.error('Usage: hippo card show <id> [--json]');
4173
4171
  process.exit(1);
4174
4172
  }
4175
- const card = loadCard(hippoRoot, tenantId, id);
4176
- if (!card) {
4173
+ const detail = loadCardDetail(hippoRoot, tenantId, id);
4174
+ if (!detail) {
4177
4175
  console.error(`No card found with id ${id}.`);
4178
4176
  process.exit(1);
4179
4177
  }
4180
4178
  if (flags['json']) {
4181
- console.log(JSON.stringify({
4182
- card,
4183
- deps: loadCardDeps(hippoRoot, tenantId, id),
4184
- runs: loadCardRuns(hippoRoot, tenantId, id),
4185
- comments: loadCardComments(hippoRoot, tenantId, id),
4186
- handoff: loadLatestHandoffForCard(hippoRoot, tenantId, id),
4187
- }, null, 2));
4179
+ console.log(JSON.stringify(detail, null, 2));
4188
4180
  return;
4189
4181
  }
4190
- printCard(hippoRoot, tenantId, card);
4182
+ printCard(detail);
4191
4183
  return;
4192
4184
  }
4193
4185
  if (subcommand === 'list') {