···11import app from './server';
22import { serve } from '@hono/node-server';
33import { FirehoseWorker } from './lib/firehose';
44-import { createLogger, initializeGrafanaExporters } from '@wisp/observability';
44+import { createLogger, initializeGrafanaExporters } from '@wispplace/observability';
55import { mkdirSync, existsSync } from 'fs';
66import { backfillCache } from './lib/backfill';
77import { startDomainCacheCleanup, stopDomainCacheCleanup, setCacheOnlyMode, closeDatabase } from './lib/db';
+1-1
apps/hosting-service/src/lib/backfill.ts
···11import { getAllSites } from './db';
22import { fetchSiteRecord, getPdsForDid, downloadAndCacheSite, isCached } from './utils';
33-import { createLogger } from '@wisp/observability';
33+import { createLogger } from '@wispplace/observability';
44import { markSiteAsBeingCached, unmarkSiteAsBeingCached } from './cache';
55import { clearRedirectRulesCache } from './site-cache';
66
+1-1
apps/hosting-service/src/lib/db.ts
···11import postgres from 'postgres';
22import { createHash } from 'crypto';
33-import type { DomainLookup, CustomDomainLookup } from '@wisp/database';
33+import type { DomainLookup, CustomDomainLookup } from '@wispplace/database';
4455// Global cache-only mode flag (set by index.ts)
66let cacheOnlyMode = false;
+2-2
apps/hosting-service/src/lib/file-serving.ts
···5566import { readFile } from 'fs/promises';
77import { lookup } from 'mime-types';
88-import type { Record as WispSettings } from '@wisp/lexicons/types/place/wisp/settings';
99-import { shouldCompressMimeType } from '@wisp/atproto-utils/compression';
88+import type { Record as WispSettings } from '@wispplace/lexicons/types/place/wisp/settings';
99+import { shouldCompressMimeType } from '@wispplace/atproto-utils/compression';
1010import { rewrittenHtmlCache, getCacheKey, isSiteBeingCached } from './cache';
1111import { getCachedFilePath, getCachedSettings } from './utils';
1212import { loadRedirectRules, matchRedirectRule, parseCookies, parseQueryString } from './redirects';
+3-3
apps/hosting-service/src/lib/firehose.ts
···55 fetchSiteRecord
66} from './utils'
77import { upsertSite, tryAcquireLock, releaseLock } from './db'
88-import { safeFetch } from '@wisp/safe-fetch'
99-// import { isRecord, validateRecord } from '@wisp/lexicons/types/place/wisp/fs'
1010-import { isRecord } from '@wisp/lexicons/types/place/wisp/fs'
88+import { safeFetch } from '@wispplace/safe-fetch'
99+// import { isRecord, validateRecord } from '@wispplace/lexicons/types/place/wisp/fs'
1010+import { isRecord } from '@wispplace/lexicons/types/place/wisp/fs'
1111import { Firehose } from '@atproto/sync'
1212import { IdResolver } from '@atproto/identity'
1313import { invalidateSiteCache, markSiteAsBeingCached, unmarkSiteAsBeingCached } from './cache'
+2-2
apps/hosting-service/src/lib/redirects.ts
···11import { readFile } from 'fs/promises';
22import { existsSync } from 'fs';
33-import { parseRedirectsFile, type RedirectRule } from '@wisp/fs-utils';
33+import { parseRedirectsFile, type RedirectRule } from '@wispplace/fs-utils';
4455// Re-export everything from the shared package
66export {
···1111 type RedirectRule,
1212 type RedirectMatch,
1313 type MatchRedirectContext,
1414-} from '@wisp/fs-utils';
1414+} from '@wispplace/fs-utils';
15151616/**
1717 * Load redirect rules from a cached site
+1-1
apps/hosting-service/src/lib/request-utils.ts
···22 * Request utilities for validation and helper functions
33 */
4455-import type { Record as WispSettings } from '@wisp/lexicons/types/place/wisp/settings';
55+import type { Record as WispSettings } from '@wispplace/lexicons/types/place/wisp/settings';
66import { access } from 'fs/promises';
7788/**
+1-1
apps/hosting-service/src/lib/site-cache.ts
···22 * Site caching management utilities
33 */
4455-import { createLogger } from '@wisp/observability';
55+import { createLogger } from '@wispplace/observability';
66import { fetchSiteRecord, getPdsForDid, downloadAndCacheSite, isCached } from './utils';
77import { markSiteAsBeingCached, unmarkSiteAsBeingCached, LRUCache } from './cache';
88import type { RedirectRule } from './redirects';
+3-3
apps/hosting-service/src/lib/utils.test.ts
···88 Entry as FsEntry,
99 File as FsFile,
1010 Subfs as FsSubfs,
1111-} from '@wisp/lexicons/types/place/wisp/fs'
1111+} from '@wispplace/lexicons/types/place/wisp/fs'
1212import type {
1313 Record as SubfsRecord,
1414 Directory as SubfsDirectory,
1515 Entry as SubfsEntry,
1616 File as SubfsFile,
1717 Subfs as SubfsSubfs,
1818-} from '@wisp/lexicons/types/place/wisp/subfs'
1919-import type { $Typed } from '@wisp/lexicons/util'
1818+} from '@wispplace/lexicons/types/place/wisp/subfs'
1919+import type { $Typed } from '@wispplace/lexicons/util'
20202121describe('sanitizePath', () => {
2222 test('allows normal file paths', () => {
+8-8
apps/hosting-service/src/lib/utils.ts
···11-import type { Record as WispFsRecord, Directory, Entry, File } from '@wisp/lexicons/types/place/wisp/fs';
22-import type { Record as SubfsRecord } from '@wisp/lexicons/types/place/wisp/subfs';
33-import type { Record as WispSettings } from '@wisp/lexicons/types/place/wisp/settings';
11+import type { Record as WispFsRecord, Directory, Entry, File } from '@wispplace/lexicons/types/place/wisp/fs';
22+import type { Record as SubfsRecord } from '@wispplace/lexicons/types/place/wisp/subfs';
33+import type { Record as WispSettings } from '@wispplace/lexicons/types/place/wisp/settings';
44import { existsSync, mkdirSync, readFileSync, rmSync } from 'fs';
55import { writeFile, readFile, rename } from 'fs/promises';
66import { Readable } from 'stream';
77-import { safeFetchJson, safeFetchBlob } from '@wisp/safe-fetch';
77+import { safeFetchJson, safeFetchBlob } from '@wispplace/safe-fetch';
88import { CID } from 'multiformats';
99-import { extractBlobCid, resolveDid, getPdsForDid, didWebToHttps } from '@wisp/atproto-utils';
1010-import { sanitizePath, collectFileCidsFromEntries, countFilesInDirectory } from '@wisp/fs-utils';
1111-import { shouldCompressMimeType } from '@wisp/atproto-utils/compression';
1212-import { MAX_BLOB_SIZE, MAX_FILE_COUNT, MAX_SITE_SIZE } from '@wisp/constants';
99+import { extractBlobCid, resolveDid, getPdsForDid, didWebToHttps } from '@wispplace/atproto-utils';
1010+import { sanitizePath, collectFileCidsFromEntries, countFilesInDirectory } from '@wispplace/fs-utils';
1111+import { shouldCompressMimeType } from '@wispplace/atproto-utils/compression';
1212+import { MAX_BLOB_SIZE, MAX_FILE_COUNT, MAX_SITE_SIZE } from '@wispplace/constants';
1313import { storage } from './storage';
14141515// Re-export shared utilities for local usage and tests
+3-3
apps/hosting-service/src/server.ts
···77import { cors } from 'hono/cors';
88import { getWispDomain, getCustomDomain, getCustomDomainByHash } from './lib/db';
99import { resolveDid } from './lib/utils';
1010-import { logCollector, errorTracker, metricsCollector } from '@wisp/observability';
1111-import { observabilityMiddleware, observabilityErrorHandler } from '@wisp/observability/middleware/hono';
1212-import { sanitizePath } from '@wisp/fs-utils';
1010+import { logCollector, errorTracker, metricsCollector } from '@wispplace/observability';
1111+import { observabilityMiddleware, observabilityErrorHandler } from '@wispplace/observability/middleware/hono';
1212+import { sanitizePath } from '@wispplace/fs-utils';
1313import { isSiteBeingCached } from './lib/cache';
1414import { isValidRkey, extractHeaders } from './lib/request-utils';
1515import { siteUpdatingResponse } from './lib/page-generators';
···77import { staticPlugin } from '@elysiajs/static'
8899import type { Config } from './lib/types'
1010-import { BASE_HOST } from '@wisp/constants'
1010+import { BASE_HOST } from '@wispplace/constants'
1111import {
1212 createClientMetadata,
1313 getOAuthClient,
···2323import { siteRoutes } from './routes/site'
2424import { csrfProtection } from './lib/csrf'
2525import { DNSVerificationWorker } from './lib/dns-verification-worker'
2626-import { createLogger, logCollector, initializeGrafanaExporters } from '@wisp/observability'
2727-import { observabilityMiddleware } from '@wisp/observability/middleware/elysia'
2828-import { css as wispCss } from '@wisp/css'
2626+import { createLogger, logCollector, initializeGrafanaExporters } from '@wispplace/observability'
2727+import { observabilityMiddleware } from '@wispplace/observability/middleware/elysia'
2828+import { css as wispCss } from '@wispplace/css'
2929import { promptAdminSetup } from './lib/admin-auth'
3030import { adminRoutes } from './routes/admin'
3131
+1-1
apps/main-app/src/lib/db.ts
···11import { SQL } from "bun";
22-import { BASE_HOST } from "@wisp/constants";
22+import { BASE_HOST } from "@wispplace/constants";
3344export const db = new SQL(
55 process.env.NODE_ENV === 'production'
+3-3
apps/main-app/src/lib/logger.ts
···11/**
22- * Main app logger using @wisp/observability
22+ * Main app logger using @wispplace/observability
33 *
44 * Note: This file is kept for backward compatibility.
55- * New code should import createLogger from @wisp/observability directly.
55+ * New code should import createLogger from @wispplace/observability directly.
66 */
77-import { createLogger } from '@wisp/observability'
77+import { createLogger } from '@wispplace/observability'
8899export const logger = createLogger('main-app')
+1-1
apps/main-app/src/lib/upload-jobs.ts
···11-import { createLogger } from '@wisp/observability';
11+import { createLogger } from '@wispplace/observability';
2233const logger = createLogger('main-app');
44
+1-1
apps/main-app/src/routes/admin.ts
···11// Admin API routes
22import { Elysia, t } from 'elysia'
33import { adminAuth, requireAdmin } from '../lib/admin-auth'
44-import { logCollector, errorTracker, metricsCollector } from '@wisp/observability'
44+import { logCollector, errorTracker, metricsCollector } from '@wispplace/observability'
55import { db } from '../lib/db'
6677export const adminRoutes = (cookieSecret: string) =>
+1-1
apps/main-app/src/routes/auth.ts
···33import { getSitesByDid, getDomainByDid, getCookieSecret } from '../lib/db'
44import { syncSitesFromPDS } from '../lib/sync-sites'
55import { authenticateRequest } from '../lib/wisp-auth'
66-import { createLogger } from '@wisp/observability'
66+import { createLogger } from '@wispplace/observability'
7788const logger = createLogger('main-app')
99
+1-1
apps/main-app/src/routes/domain.ts
···2222} from '../lib/db'
2323import { createHash } from 'crypto'
2424import { verifyCustomDomain } from '../lib/dns-verify'
2525-import { createLogger } from '@wisp/observability'
2525+import { createLogger } from '@wispplace/observability'
26262727const logger = createLogger('main-app')
2828
+2-2
apps/main-app/src/routes/site.ts
···33import { NodeOAuthClient } from '@atproto/oauth-client-node'
44import { Agent } from '@atproto/api'
55import { deleteSite } from '../lib/db'
66-import { createLogger } from '@wisp/observability'
77-import { extractSubfsUris } from '@wisp/atproto-utils'
66+import { createLogger } from '@wispplace/observability'
77+import { extractSubfsUris } from '@wispplace/atproto-utils'
8899const logger = createLogger('main-app')
1010
+2-2
apps/main-app/src/routes/user.ts
···33import { NodeOAuthClient } from '@atproto/oauth-client-node'
44import { getSitesByDid, getDomainByDid, getCustomDomainsByDid, getWispDomainInfo, getDomainsBySite, getAllWispDomains } from '../lib/db'
55import { syncSitesFromPDS } from '../lib/sync-sites'
66-import { createLogger } from '@wisp/observability'
77-import { getHandleForDid } from '@wisp/atproto-utils'
66+import { createLogger } from '@wispplace/observability'
77+import { getHandleForDid } from '@wispplace/atproto-utils'
8899const logger = createLogger('main-app')
1010
+8-8
apps/main-app/src/routes/wisp.ts
···1111 findLargeDirectories,
1212 replaceDirectoryWithSubfs,
1313 estimateDirectorySize
1414-} from '@wisp/fs-utils'
1414+} from '@wispplace/fs-utils'
1515import {
1616 shouldCompressFile,
1717 compressFile,
1818 computeCID,
1919 extractBlobMap,
2020 extractSubfsUris
2121-} from '@wisp/atproto-utils'
2222-import { createManifest } from '@wisp/fs-utils'
2121+} from '@wispplace/atproto-utils'
2222+import { createManifest } from '@wispplace/fs-utils'
2323import { upsertSite } from '../lib/db'
2424-import { createLogger } from '@wisp/observability'
2525-// import { validateRecord, type Directory } from '@wisp/lexicons/types/place/wisp/fs'
2626-import { type Directory } from '@wisp/lexicons/types/place/wisp/fs'
2727-// import { validateRecord as validateSubfsRecord } from '@wisp/lexicons/types/place/wisp/subfs'
2828-import { MAX_SITE_SIZE, MAX_FILE_SIZE, MAX_FILE_COUNT } from '@wisp/constants'
2424+import { createLogger } from '@wispplace/observability'
2525+// import { validateRecord, type Directory } from '@wispplace/lexicons/types/place/wisp/fs'
2626+import { type Directory } from '@wispplace/lexicons/types/place/wisp/fs'
2727+// import { validateRecord as validateSubfsRecord } from '@wispplace/lexicons/types/place/wisp/subfs'
2828+import { MAX_SITE_SIZE, MAX_FILE_SIZE, MAX_FILE_COUNT } from '@wispplace/constants'
2929import {
3030 createUploadJob,
3131 getUploadJob,
···11import type { Agent, BlobRef } from '@atproto/api';
22-import type { Directory, Record as FsRecord } from '@wisp/lexicons/types/place/wisp/fs';
33-import type { Record as SubfsRecord } from '@wisp/lexicons/types/place/wisp/subfs';
44-import type { Record as SettingsRecord } from '@wisp/lexicons/types/place/wisp/settings';
22+import type { Directory, Record as FsRecord } from '@wispplace/lexicons/types/place/wisp/fs';
33+import type { Record as SubfsRecord } from '@wispplace/lexicons/types/place/wisp/subfs';
44+import type { Record as SettingsRecord } from '@wispplace/lexicons/types/place/wisp/settings';
55import {
66 processUploadedFiles,
77 updateFileBlobs,
···1313 countFilesInDirectory,
1414 type UploadedFile,
1515 type FileUploadResult
1616-} from '@wisp/fs-utils';
1717-import { computeCID, extractBlobMap, shouldCompressFile, compressFile, extractSubfsUris } from '@wisp/atproto-utils';
1818-import { MAX_SITE_SIZE, MAX_FILE_COUNT, MAX_FILE_SIZE } from '@wisp/constants';
1616+} from '@wispplace/fs-utils';
1717+import { computeCID, extractBlobMap, shouldCompressFile, compressFile, extractSubfsUris } from '@wispplace/atproto-utils';
1818+import { MAX_SITE_SIZE, MAX_FILE_COUNT, MAX_FILE_SIZE } from '@wispplace/constants';
1919import { readdirSync, statSync, readFileSync, existsSync } from 'fs';
2020import { join, relative, basename } from 'path';
2121import ignore, { type Ignore } from 'ignore';
+4-4
cli/commands/pull.ts
···11-import type { Directory, Entry, File, Record as FsRecord } from '@wisp/lexicons/types/place/wisp/fs';
22-import type { Record as SubfsRecord } from '@wisp/lexicons/types/place/wisp/subfs';
33-import { extractBlobCid, resolveDid, getPdsForDid } from '@wisp/atproto-utils';
44-import { sanitizePath } from '@wisp/fs-utils';
11+import type { Directory, Entry, File, Record as FsRecord } from '@wispplace/lexicons/types/place/wisp/fs';
22+import type { Record as SubfsRecord } from '@wispplace/lexicons/types/place/wisp/subfs';
33+import { extractBlobCid, resolveDid, getPdsForDid } from '@wispplace/atproto-utils';
44+import { sanitizePath } from '@wispplace/fs-utils';
55import { existsSync, mkdirSync, writeFileSync, rmSync, renameSync, readFileSync } from 'fs';
66import { dirname, join } from 'path';
77import { gunzipSync } from 'zlib';
+3-3
cli/commands/serve.ts
···22import { Firehose } from '@atproto/sync';
33import { Hono } from 'hono';
44import { serve as honoNodeServe } from '@hono/node-server';
55-import type { Record as SettingsRecord } from '@wisp/lexicons/types/place/wisp/settings';
66-import { resolveDid, getPdsForDid } from '@wisp/atproto-utils';
55+import type { Record as SettingsRecord } from '@wispplace/lexicons/types/place/wisp/settings';
66+import { resolveDid, getPdsForDid } from '@wispplace/atproto-utils';
77import { existsSync, readFileSync, statSync, readdirSync } from 'fs';
88import { join, extname } from 'path';
99import { lookup } from 'mime-types';
1010import { pull } from './pull.ts';
1111import { createSpinner, pc } from '../lib/progress.ts';
1212-import { parseRedirectsFile, matchRedirectRule, parseQueryString, type RedirectRule } from '@wisp/fs-utils';
1212+import { parseRedirectsFile, matchRedirectRule, parseQueryString, type RedirectRule } from '@wispplace/fs-utils';
1313import { isBun } from '../lib/runtime.ts';
1414import { BunFirehose } from '../lib/firehose.ts';
1515
+1-1
cli/lib/auth.ts
···11import { NodeOAuthClient, type NodeSavedSession, type NodeSavedState, type NodeSavedStateStore, type NodeSavedSessionStore } from "@atproto/oauth-client-node";
22import { Agent, CredentialSession } from "@atproto/api";
33-import { resolvePdsFromHandle } from "@wisp/atproto-utils";
33+import { resolvePdsFromHandle } from "@wispplace/atproto-utils";
44import { Hono } from "hono";
55import { serve as honoNodeServe } from "@hono/node-server";
66import open from "open";
···11import type { BlobRef } from "@atproto/api";
22-import type { Directory, File } from "@wisp/lexicons/types/place/wisp/fs";
22+import type { Directory, File } from "@wispplace/lexicons/types/place/wisp/fs";
33import { CID } from 'multiformats/cid';
44import { sha256 } from 'multiformats/hashes/sha2';
55import * as raw from 'multiformats/codecs/raw';
···11-import type { Directory } from "@wisp/lexicons/types/place/wisp/fs";
11+import type { Directory } from "@wispplace/lexicons/types/place/wisp/fs";
2233/**
44 * Extract all subfs URIs from a directory tree with their mount paths
···11-import type { Record, Directory } from "@wisp/lexicons/types/place/wisp/fs";
22-// import { validateRecord } from "@wisp/lexicons/types/place/wisp/fs";
11+import type { Record, Directory } from "@wispplace/lexicons/types/place/wisp/fs";
22+// import { validateRecord } from "@wispplace/lexicons/types/place/wisp/fs";
3344/**
55 * Create the manifest record for a site
···11-import type { Directory } from "@wisp/lexicons/types/place/wisp/fs";
11+import type { Directory } from "@wispplace/lexicons/types/place/wisp/fs";
2233/**
44 * Estimate the JSON size of a directory tree