target-supabase-sdk 0.2.18 → 0.2.20

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.
Files changed (52) hide show
  1. package/README.md +28 -0
  2. package/dist/browser.d.ts +4 -0
  3. package/dist/browser.d.ts.map +1 -1
  4. package/dist/browser.js +1 -1
  5. package/dist/chunks/{task-queue-DufG7PlX.js → task-queue-CqmIVCBi.js} +165 -2
  6. package/dist/chunks/task-queue-CqmIVCBi.js.map +1 -0
  7. package/dist/node.d.ts +2 -0
  8. package/dist/node.d.ts.map +1 -1
  9. package/dist/node.js +251 -10
  10. package/dist/node.js.map +1 -1
  11. package/dist/shared/feed/feed.build.d.ts +33 -0
  12. package/dist/shared/feed/feed.build.d.ts.map +1 -0
  13. package/dist/shared/feed/feed.interface.d.ts +35 -0
  14. package/dist/shared/feed/feed.interface.d.ts.map +1 -0
  15. package/dist/shared/feed/feed.name.d.ts +8 -0
  16. package/dist/shared/feed/feed.name.d.ts.map +1 -0
  17. package/dist/shared/feed/feed.query.d.ts +8 -0
  18. package/dist/shared/feed/feed.query.d.ts.map +1 -0
  19. package/dist/shared/feed/index.d.ts +13 -0
  20. package/dist/shared/feed/index.d.ts.map +1 -0
  21. package/dist/shared/feed/node/feed.access.d.ts +34 -0
  22. package/dist/shared/feed/node/feed.access.d.ts.map +1 -0
  23. package/dist/shared/feed/node/feed.service.d.ts +23 -0
  24. package/dist/shared/feed/node/feed.service.d.ts.map +1 -0
  25. package/dist/shared/feed/node/index.d.ts +11 -0
  26. package/dist/shared/feed/node/index.d.ts.map +1 -0
  27. package/dist/shared/review/index.d.ts +7 -0
  28. package/dist/shared/review/index.d.ts.map +1 -0
  29. package/dist/shared/review/review.build.d.ts +19 -0
  30. package/dist/shared/review/review.build.d.ts.map +1 -0
  31. package/dist/shared/review/review.interface.d.ts +14 -0
  32. package/dist/shared/review/review.interface.d.ts.map +1 -0
  33. package/dist/shared/review/review.query.d.ts +7 -0
  34. package/dist/shared/review/review.query.d.ts.map +1 -0
  35. package/package.json +1 -1
  36. package/src/browser.ts +10 -1
  37. package/src/node.ts +14 -0
  38. package/src/shared/feed/README.md +163 -0
  39. package/src/shared/feed/feed.build.ts +101 -0
  40. package/src/shared/feed/feed.interface.ts +50 -0
  41. package/src/shared/feed/feed.name.ts +20 -0
  42. package/src/shared/feed/feed.query.ts +13 -0
  43. package/src/shared/feed/index.ts +13 -0
  44. package/src/shared/feed/node/feed.access.ts +134 -0
  45. package/src/shared/feed/node/feed.service.ts +183 -0
  46. package/src/shared/feed/node/index.ts +11 -0
  47. package/src/shared/review/README.md +128 -0
  48. package/src/shared/review/index.ts +7 -0
  49. package/src/shared/review/review.build.ts +39 -0
  50. package/src/shared/review/review.interface.ts +19 -0
  51. package/src/shared/review/review.query.ts +16 -0
  52. package/dist/chunks/task-queue-DufG7PlX.js.map +0 -1
package/dist/node.d.ts CHANGED
@@ -27,6 +27,8 @@ export { createL3ChildLauncher, createServiceHost, runSingleProcessService } fro
27
27
  export type { CallTelegramOptions, ResolvedTelegramStorageOptions, TelegramApiResponse, TelegramChunkDeleteResult, TelegramDocument, TelegramFile, TelegramMessage, TelegramStorageProvider, TelegramStorageProviderOptions, TelegramUploadResult, } from "./node/telegram";
28
28
  export { callTelegramApi, createTelegramStorageProvider, downloadTelegramChunk, encodeTelegramChunkUrl, PROVIDER_TELEGRAM, parseTelegramChunkUrl, resolveTelegramStorageOptions, telegramDownloadBinary, telegramFileDownloadUrl, } from "./node/telegram";
29
29
  export { RepoManager } from "./repo/repo-manager";
30
+ export type { CheckFeedLocalAvailabilityInput, FeedAvailabilityResult, FeedIngestSource, RegisterFeedInput, RegisterFeedResult, } from "./shared/feed/node";
31
+ export { checkFeedLocalAvailability, checkFeedOssAvailability, FEED_INGEST_SOURCES, isFeedIngestSource, registerFeed, } from "./shared/feed/node";
30
32
  export { runCollectLogTick } from "./shared/log/spool/collector";
31
33
  export { LOG_SPOOL_SERVICE_ID_ENV } from "./shared/log/spool/config";
32
34
  export type { LogSpoolCoordinator, LogSpoolCoordinatorOptions } from "./shared/log/spool/coordinator";
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
package/dist/node.js CHANGED
@@ -1,13 +1,13 @@
1
1
  import { z } from 'zod';
2
- import { M as MAX_POLL_TARGET_LIST_SIZE, V as validateWithSchema, g as createLogger, z as pollTargetList, k as generateResponse, h as createTarget, K as supabase, w as logManager, X as createScope, d as LogLevel, Y as patchScope, J as scanTargetList, Z as withModule, l as getPossibleTarget, E as postTarget, q as isCreateTargetAlreadyExistsError, t as isOptimisticLockResponse, R as updateTargetDetails } from './chunks/list.api-BzbTJBsM.js';
3
- export { B as BaseValidator, C as CREATE_TARGET_ALREADY_EXISTS_MESSAGE, a as CategoryList, L as LOG_BATCH_LOADER_KEY, b as LOG_MIN_LEVEL_ENV_KEY, c as LOG_PERSIST_LOADER_KEY, e as MAX_TARGET_LIST_PAGE_SIZE, O as OPTIMISTIC_LOCK_ERROR_CODE, f as OPTIMISTIC_LOCK_FAILED_MESSAGE, P as PostListValidator, S as StatusCode, U as UPDATE_TARGET_NOT_FOUND_MESSAGE, i as deleteTarget, j as formatZodError, m as getTarget, n as getTargetList, o as getTargetTotalCount, p as handleSupabaseError, r as isDevEnvironment, s as isOptimisticLockError, u as logDev, v as logDevGroup, x as logMinLevelFromEnv, y as patchTarget, A as postListCreate, D as postLogListCreate, F as postTargetPayloadSchema, G as queryFilterSchema, H as resolveLogMinLevel, I as safeParseWithSchema, N as targetDraftSchema, Q as updateTarget, T as validateWith } from './chunks/list.api-BzbTJBsM.js';
2
+ import { M as MAX_POLL_TARGET_LIST_SIZE, V as validateWithSchema, g as createLogger, z as pollTargetList, k as generateResponse, h as createTarget, K as supabase, w as logManager, X as createScope, d as LogLevel, Y as patchScope, J as scanTargetList, Z as withModule, l as getPossibleTarget, m as getTarget, Q as updateTarget, E as postTarget, q as isCreateTargetAlreadyExistsError, t as isOptimisticLockResponse, R as updateTargetDetails } from './chunks/list.api-BzbTJBsM.js';
3
+ export { B as BaseValidator, C as CREATE_TARGET_ALREADY_EXISTS_MESSAGE, a as CategoryList, L as LOG_BATCH_LOADER_KEY, b as LOG_MIN_LEVEL_ENV_KEY, c as LOG_PERSIST_LOADER_KEY, e as MAX_TARGET_LIST_PAGE_SIZE, O as OPTIMISTIC_LOCK_ERROR_CODE, f as OPTIMISTIC_LOCK_FAILED_MESSAGE, P as PostListValidator, S as StatusCode, U as UPDATE_TARGET_NOT_FOUND_MESSAGE, i as deleteTarget, j as formatZodError, n as getTargetList, o as getTargetTotalCount, p as handleSupabaseError, r as isDevEnvironment, s as isOptimisticLockError, u as logDev, v as logDevGroup, x as logMinLevelFromEnv, y as patchTarget, A as postListCreate, D as postLogListCreate, F as postTargetPayloadSchema, G as queryFilterSchema, H as resolveLogMinLevel, I as safeParseWithSchema, N as targetDraftSchema, T as validateWith } from './chunks/list.api-BzbTJBsM.js';
4
4
  import { l as loadEnvFiles, b as readEnv, c as requireEnv, d as resolveLogSpoolSpawnEnvForLabel, e as resolveLogSpoolConfig, f as resolveLogSpoolRoot, g as resolveAllLogSpoolProcessRoles, h as logSpoolProcessDir, s as spoolLogger, i as parseLogSpoolBatchFilename, j as computeLogBatchIdempotencyKey, k as buildLogListDraft, n as postLogBatch, a as logSpoolEnabledFromEnv, o as logSpoolConfigFromEnv, L as LOG_SPOOL_SERVICE_ID_ENV, q as ensureLogSpoolFromEnv, t as shutdownLogSpoolFromEnv, u as getLogSpoolStats } from './chunks/enable-C7lFooTG.js';
5
5
  export { C as CLI_PROD_FLAG, S as SERVICE_ENV_PROFILE_ENV_KEY, w as SERVICE_ENV_PROFILE_PROD, x as buildLogSpoolSpawnEnv, y as envBool, z as envInt, A as envMs, B as envNumber, D as envPort, E as envProfileFromProcess, F as resolveDefaultEnvFiles, r as resolveProjectRootByPackageName, G as resolveProjectRootFromModule, v as validateLogSpoolPreloadEnv } from './chunks/enable-C7lFooTG.js';
6
6
  import { randomBytes, createHash } from 'node:crypto';
7
7
  import { readFile, unlink, mkdir, writeFile, rename, access, stat, readdir, constants } from 'node:fs/promises';
8
8
  import { dirname, resolve, join, isAbsolute } from 'node:path';
9
- import { bq as sha256Hex, bw as getErrorMessage, bx as LOG_TOPIC_NODE, aU as postRegisterNode, ay as patchChangeNodeStatus, N as NodeStatus, aJ as patchStopNode, aG as patchNodeHeartBeat, E as EMPTY_REGISTRY_SLOT_RUNTIME_STATE, bg as runRegistrySlotGuardCheck, b6 as registrySlotRuntimePatchFromGuardResult, c as CategoryNode, Z as evaluateBusyNodeLiveness, aI as patchServiceRuntime, an as isLogEntry, F as claimServiceRegistrySlot, m as ServiceRegistryError, $ as fetchWithRetry, aq as isRetryableHttpStatus, _ as fetchBinaryWithRetry, ap as isOpaqueChunkUrl, e as CategoryRepo, ai as guessMediaMime, M as MEDIA_CONTENT_HASH_ALGORITHM, ao as isMediaValue, as as mediaLinkDedupFilters, y as buildMediaLinkDraft, R as ResultCode, by as LOG_TOPIC_TASK, o as TASK_REPO_USAGE, ac as getScanRemoteRepoValues, aC as patchClaimTask, bz as CRITICAL_UNKNOWN_TASK_TRACE_ID, aA as patchChangeTaskStatus, q as TaskStatusAction, bA as toError, b0 as postTaskSchema, bB as createTaskRow, p as TaskStatus } from './chunks/task-queue-DufG7PlX.js';
10
- export { A as ApiMethod, C as CategoryConfig, a as CategoryExtraction, b as CategoryLink, d as CategoryParcel, f as CategoryService, g as CategoryTask, D as DEFAULT_SYSTEM_REGISTRY_SEED_SLOTS, L as LINK_MANIFEST_VERSION, h as LIST_MANIFEST_VERSION, i as MEDIA_CONTENT_HASH_PREFIX_LENGTH, j as MEDIA_VALUES, P as POST_TASK_DEFAULT_MAX_ATTEMPTS, k as ParcelManager, l as PostLinkValidator, S as ServiceLifecycleStatus, n as ServiceSlotStatus, T as TARGET_SYSTEM_REGISTRY_KEY, r as apiDetailsSchema, s as appendSystemRegistryEmptySlots, t as assertRegistrySlotAvailable, u as assertRegistrySlotOwner, v as buildEmptyServiceSlots, w as buildLinkTargetDraft, x as buildListTargetDraft, z as buildMediaNameFromLocator, B as buildSystemRegistryConfigDetails, G as classifyNetworkError, H as countTasksByType, I as createActiveServiceLifecycle, J as createClaimedRegistrySlotRuntimeState, K as createStorageProviderRegistry, O as createUploadTracker, Q as decodeLogBatch, U as decodeLogBatchList, V as defaultL3ServiceDetails, W as deleteParcel, X as deleteParcelSchema, Y as escapeIlikePattern, a0 as fieldDefinitionSchema, a1 as flattenLogBatch, a2 as flattenLogBatches, a3 as formatNetworkError, a4 as getApi, a5 as getApiSchema, a6 as getConfig, a7 as getConfigSchema, a8 as getExtraction, a9 as getExtractionSchema, aa as getParcel, ab as getParcelSchema, ad as getScanRemoteRepoValuesSchema, ae as getService, af as getServiceSchema, ag as getTargetSystemRegistry, ah as getValueAtPath, aj as installChunkFetchRegistry, ak as isHttpUrl, al as isLocalFilesystemPath, am as isLogBatchList, ar as linkTargetDraftBuildInputSchema, at as parcelDetailsSchema, au as parseLogBatchMeta, av as parseProviderPrefixedUrl, aw as parseServiceSlot, ax as parseServiceSlots, az as patchChangeNodeStatusSchema, aB as patchChangeTaskStatusSchema, aD as patchClaimTaskSchema, aE as patchExtractionObjects, aF as patchExtractionObjectsSchema, aH as patchNodeHeartBeatSchema, aK as patchStopNodeSchema, aL as patchTaskProgress, aM as patchTaskProgressSchema, aN as postApi, aO as postApiSchema, aP as postExtraction, aQ as postExtractionSchema, aR as postLinkCreate, aS as postParcel, aT as postParcelSchema, aV as postRegisterNodeSchema, aW as postService, aX as postServiceInstance, aY as postServiceSchema, aZ as postSystemRegistryConfig, a_ as postSystemRegistryConfigSchema, a$ as postTask, b1 as postTaskWithRetry, b2 as publishParcel, b3 as registerProviderChunkResolver, b4 as registerService, b5 as registerServiceAtStartup, b7 as releaseSystemRegistrySlots, b8 as releaseSystemRegistrySlotsByServiceId, b9 as requestHasBody, ba as resetSystemRegistryConfig, bb as resetSystemRegistryConfigSchema, bc as resolveActiveRegistryServiceId, bd as resolveFetchUrl, be as restoreParcel, bf as restoreParcelById, bh as sanitizeFileName, bi as sanitizeParcelFileName, bj as scanExtractionList, bk as scanExtractionListSchema, bl as schemaDefinitionSchema, bm as serviceDetailsSchema, bn as serviceLifecycleSchema, bo as serviceNodeSnapshotSchema, bp as serviceRuntimeSchema, br as summarizeTaskQueue, bs as systemRegistrySeedSlotSchema, bt as toPostgrestTextArrayLiteral, bu as unregisterService, bv as unregisterServiceAtShutdown } from './chunks/task-queue-DufG7PlX.js';
9
+ import { bx as sha256Hex, bD as getErrorMessage, bE as LOG_TOPIC_NODE, a_ as postRegisterNode, aE as patchChangeNodeStatus, N as NodeStatus, aP as patchStopNode, aM as patchNodeHeartBeat, E as EMPTY_REGISTRY_SLOT_RUNTIME_STATE, bn as runRegistrySlotGuardCheck, bc as registrySlotRuntimePatchFromGuardResult, c as CategoryNode, a1 as evaluateBusyNodeLiveness, aO as patchServiceRuntime, at as isLogEntry, J as claimServiceRegistrySlot, m as ServiceRegistryError, a4 as fetchWithRetry, aw as isRetryableHttpStatus, a3 as fetchBinaryWithRetry, av as isOpaqueChunkUrl, e as CategoryRepo, aq as isHttpUrl, bF as isFeedIngestSource, bG as resolveFeedOriginalStorageProvider, b as CategoryLink, bH as buildFeedTagList, ap as isFeedValue, an as guessMediaMime, M as MEDIA_CONTENT_HASH_ALGORITHM, au as isMediaValue, ay as mediaLinkDedupFilters, B as buildMediaLinkDraft, R as ResultCode, bI as LOG_TOPIC_TASK, o as TASK_REPO_USAGE, ah as getScanRemoteRepoValues, aI as patchClaimTask, bJ as CRITICAL_UNKNOWN_TASK_TRACE_ID, aG as patchChangeTaskStatus, q as TaskStatusAction, bK as toError, b6 as postTaskSchema, bL as createTaskRow, p as TaskStatus } from './chunks/task-queue-CqmIVCBi.js';
10
+ export { A as ApiMethod, C as CategoryConfig, a as CategoryExtraction, d as CategoryParcel, f as CategoryService, g as CategoryTask, D as DEFAULT_SYSTEM_REGISTRY_SEED_SLOTS, bM as FEED_INGEST_SOURCES, F as FEED_VALUES, L as LINK_MANIFEST_VERSION, h as LIST_MANIFEST_VERSION, i as MEDIA_CONTENT_HASH_PREFIX_LENGTH, j as MEDIA_VALUES, P as POST_TASK_DEFAULT_MAX_ATTEMPTS, k as ParcelManager, l as PostLinkValidator, S as ServiceLifecycleStatus, n as ServiceSlotStatus, T as TARGET_SYSTEM_REGISTRY_KEY, r as apiDetailsSchema, s as appendSystemRegistryEmptySlots, t as assertRegistrySlotAvailable, u as assertRegistrySlotOwner, v as buildEmptyServiceSlots, w as buildFeedLinkDraft, x as buildFeedLinkName, y as buildLinkTargetDraft, z as buildListTargetDraft, G as buildMediaNameFromLocator, H as buildReviewLinkDraft, I as buildSystemRegistryConfigDetails, K as classifyNetworkError, O as countTasksByType, Q as createActiveServiceLifecycle, U as createClaimedRegistrySlotRuntimeState, V as createStorageProviderRegistry, W as createUploadTracker, X as decodeLogBatch, Y as decodeLogBatchList, Z as defaultL3ServiceDetails, _ as deleteParcel, $ as deleteParcelSchema, a0 as escapeIlikePattern, a2 as feedLinkDedupFilters, a5 as fieldDefinitionSchema, a6 as flattenLogBatch, a7 as flattenLogBatches, a8 as formatNetworkError, a9 as getApi, aa as getApiSchema, ab as getConfig, ac as getConfigSchema, ad as getExtraction, ae as getExtractionSchema, af as getParcel, ag as getParcelSchema, ai as getScanRemoteRepoValuesSchema, aj as getService, ak as getServiceSchema, al as getTargetSystemRegistry, am as getValueAtPath, ao as installChunkFetchRegistry, ar as isLocalFilesystemPath, as as isLogBatchList, ax as linkTargetDraftBuildInputSchema, az as parcelDetailsSchema, aA as parseLogBatchMeta, aB as parseProviderPrefixedUrl, aC as parseServiceSlot, aD as parseServiceSlots, aF as patchChangeNodeStatusSchema, aH as patchChangeTaskStatusSchema, aJ as patchClaimTaskSchema, aK as patchExtractionObjects, aL as patchExtractionObjectsSchema, aN as patchNodeHeartBeatSchema, aQ as patchStopNodeSchema, aR as patchTaskProgress, aS as patchTaskProgressSchema, aT as postApi, aU as postApiSchema, aV as postExtraction, aW as postExtractionSchema, aX as postLinkCreate, aY as postParcel, aZ as postParcelSchema, a$ as postRegisterNodeSchema, b0 as postService, b1 as postServiceInstance, b2 as postServiceSchema, b3 as postSystemRegistryConfig, b4 as postSystemRegistryConfigSchema, b5 as postTask, b7 as postTaskWithRetry, b8 as publishParcel, b9 as registerProviderChunkResolver, ba as registerService, bb as registerServiceAtStartup, bd as releaseSystemRegistrySlots, be as releaseSystemRegistrySlotsByServiceId, bf as requestHasBody, bg as resetSystemRegistryConfig, bh as resetSystemRegistryConfigSchema, bi as resolveActiveRegistryServiceId, bj as resolveFetchUrl, bk as restoreParcel, bl as restoreParcelById, bm as reviewLinksForTargetFilters, bo as sanitizeFileName, bp as sanitizeParcelFileName, bq as scanExtractionList, br as scanExtractionListSchema, bs as schemaDefinitionSchema, bt as serviceDetailsSchema, bu as serviceLifecycleSchema, bv as serviceNodeSnapshotSchema, bw as serviceRuntimeSchema, by as summarizeTaskQueue, bz as systemRegistrySeedSlotSchema, bA as toPostgrestTextArrayLiteral, bB as unregisterService, bC as unregisterServiceAtShutdown } from './chunks/task-queue-CqmIVCBi.js';
11
11
  import { spawn } from 'node:child_process';
12
12
  import { ProxyAgent } from 'undici';
13
13
  import { tmpdir } from 'node:os';
@@ -2612,7 +2612,7 @@ async function runSingleProcessService(options) {
2612
2612
  }
2613
2613
  }
2614
2614
 
2615
- const logger$1 = createLogger({ module: "telegram" });
2615
+ const logger$2 = createLogger({ module: "telegram" });
2616
2616
  let cachedDispatcher;
2617
2617
  let cachedProxyUrl;
2618
2618
  /** Per-request undici dispatcher when proxyUrl is set (Supabase stays direct). */
@@ -2663,7 +2663,7 @@ async function callTelegramApi(options, method, initOrFactory, callOptions = {})
2663
2663
  retryBaseMs,
2664
2664
  dispatcher,
2665
2665
  hint,
2666
- logger: logger$1,
2666
+ logger: logger$2,
2667
2667
  });
2668
2668
  let payload;
2669
2669
  try {
@@ -2681,7 +2681,7 @@ async function callTelegramApi(options, method, initOrFactory, callOptions = {})
2681
2681
  const description = payload.description ?? `HTTP ${response.status}`;
2682
2682
  lastError = new Error(`${label}: ${description}`);
2683
2683
  if (attempt < maxAttempts && isRetryableHttpStatus(response.status)) {
2684
- logger$1.warn("retrying after API error", {
2684
+ logger$2.warn("retrying after API error", {
2685
2685
  topic: "telegram",
2686
2686
  data: { method, attempt, description },
2687
2687
  });
@@ -2694,7 +2694,7 @@ async function callTelegramApi(options, method, initOrFactory, callOptions = {})
2694
2694
  throw new Error(`${label}: empty result in response`);
2695
2695
  }
2696
2696
  if (attempt > 1) {
2697
- logger$1.info("request succeeded after retry", { topic: "telegram", data: { method, attempt } });
2697
+ logger$2.info("request succeeded after retry", { topic: "telegram", data: { method, attempt } });
2698
2698
  }
2699
2699
  return payload.result;
2700
2700
  }
@@ -2709,7 +2709,7 @@ async function telegramDownloadBinary(options, url, label, callOptions = {}) {
2709
2709
  retryBaseMs: callOptions.retryBaseMs ?? options.uploadRetryBaseMs,
2710
2710
  dispatcher,
2711
2711
  hint: telegramNetworkHint(options.proxyUrl),
2712
- logger: logger$1,
2712
+ logger: logger$2,
2713
2713
  });
2714
2714
  }
2715
2715
 
@@ -3355,6 +3355,247 @@ const RepoManager = {
3355
3355
  clearRepoScriptModuleCache,
3356
3356
  };
3357
3357
 
3358
+ function sameStorageHost$1(storageProvider, localStorageProvider) {
3359
+ return storageProvider.trim() === localStorageProvider.trim();
3360
+ }
3361
+ function isFeedDirectoryValue(value) {
3362
+ return value === "feed.image-list";
3363
+ }
3364
+ /**
3365
+ * Local reachability for feed ingest (`.local` source).
3366
+ *
3367
+ * - Requires `storageProvider === localStorageProvider`.
3368
+ * - `locator` must be an absolute path.
3369
+ * - `feed.image-list`: directory exists.
3370
+ * - Other feed values: non-empty file.
3371
+ *
3372
+ * **Node-only**
3373
+ */
3374
+ async function checkFeedLocalAvailability(input) {
3375
+ const storageProvider = input.storageProvider.trim();
3376
+ const localStorageProvider = input.localStorageProvider.trim();
3377
+ const locator = input.locator.trim();
3378
+ if (storageProvider === "" || localStorageProvider === "") {
3379
+ return { ok: false, reason: "storageProvider and localStorageProvider are required" };
3380
+ }
3381
+ if (locator === "") {
3382
+ return { ok: false, reason: "locator is empty" };
3383
+ }
3384
+ if (!sameStorageHost$1(storageProvider, localStorageProvider)) {
3385
+ return {
3386
+ ok: false,
3387
+ reason: `storageProvider not on this host (${storageProvider} !== ${localStorageProvider})`,
3388
+ };
3389
+ }
3390
+ if (!isAbsolute(locator)) {
3391
+ return { ok: false, reason: `locator must be an absolute path: ${locator}` };
3392
+ }
3393
+ const absolutePath = resolve(locator);
3394
+ try {
3395
+ const info = await stat(absolutePath);
3396
+ if (isFeedDirectoryValue(input.value)) {
3397
+ if (!info.isDirectory()) {
3398
+ return { ok: false, reason: `feed.image-list locator is not a directory: ${absolutePath}` };
3399
+ }
3400
+ return { ok: true, absolutePath };
3401
+ }
3402
+ if (!info.isFile()) {
3403
+ return { ok: false, reason: `locator is not a file: ${absolutePath}` };
3404
+ }
3405
+ if (info.size <= 0) {
3406
+ return { ok: false, reason: `file is empty: ${absolutePath}` };
3407
+ }
3408
+ return { ok: true, absolutePath };
3409
+ }
3410
+ catch (error) {
3411
+ const message = error instanceof Error ? error.message : String(error);
3412
+ return { ok: false, reason: `locator not reachable: ${absolutePath} (${message})` };
3413
+ }
3414
+ }
3415
+ const OSS_CHECK_TIMEOUT_MS = 15_000;
3416
+ const OSS_CHECK_MAX_ATTEMPTS = 2;
3417
+ async function probeHttpLocator(locator, method) {
3418
+ return fetchWithRetry(locator, {
3419
+ method,
3420
+ ...(method === "GET" ? { headers: { Range: "bytes=0-0" } } : {}),
3421
+ }, {
3422
+ label: "feed-oss-check",
3423
+ timeoutMs: OSS_CHECK_TIMEOUT_MS,
3424
+ maxAttempts: OSS_CHECK_MAX_ATTEMPTS,
3425
+ });
3426
+ }
3427
+ /**
3428
+ * Remote reachability for feed ingest (`.oss` source) via HTTP(S).
3429
+ *
3430
+ * Tries `HEAD`, then `GET` with `Range: bytes=0-0` when `HEAD` is not allowed.
3431
+ *
3432
+ * **Node-only**
3433
+ */
3434
+ async function checkFeedOssAvailability(locator) {
3435
+ const trimmed = locator.trim();
3436
+ if (trimmed === "") {
3437
+ return { ok: false, reason: "locator is empty" };
3438
+ }
3439
+ if (!isHttpUrl(trimmed)) {
3440
+ return { ok: false, reason: `oss locator must be an http(s) URL: ${trimmed}` };
3441
+ }
3442
+ try {
3443
+ let response = await probeHttpLocator(trimmed, "HEAD");
3444
+ if (response.status === 405 || response.status === 501) {
3445
+ response = await probeHttpLocator(trimmed, "GET");
3446
+ }
3447
+ if (response.ok || (response.status >= 200 && response.status < 400)) {
3448
+ return { ok: true };
3449
+ }
3450
+ return { ok: false, reason: `oss locator HTTP ${response.status}: ${trimmed}` };
3451
+ }
3452
+ catch (error) {
3453
+ const message = error instanceof Error ? error.message : String(error);
3454
+ return { ok: false, reason: `oss locator request failed: ${trimmed} (${message})` };
3455
+ }
3456
+ }
3457
+
3458
+ const logger$1 = createLogger({ module: "feed" });
3459
+ function parseFeedOriginal(original) {
3460
+ if (original == null || typeof original !== "object") {
3461
+ return null;
3462
+ }
3463
+ const record = original;
3464
+ const storageProvider = typeof record.storageProvider === "string" ? record.storageProvider : null;
3465
+ const locator = typeof record.locator === "string" ? record.locator : null;
3466
+ if (storageProvider == null || locator == null) {
3467
+ return null;
3468
+ }
3469
+ const twinList = Array.isArray(record.twinList)
3470
+ ? record.twinList.filter((entry) => typeof entry === "string")
3471
+ : undefined;
3472
+ return {
3473
+ storageProvider,
3474
+ locator,
3475
+ ...(twinList !== undefined ? { twinList } : {}),
3476
+ };
3477
+ }
3478
+ function assertFeedLink(target) {
3479
+ if (target.category !== CategoryLink.LINK) {
3480
+ throw new Error(`registerFeed: target is not a link (category=${target.category})`);
3481
+ }
3482
+ if (!isFeedValue(target.value)) {
3483
+ throw new Error(`registerFeed: target value is not a feed loader: ${target.value}`);
3484
+ }
3485
+ const details = target.details;
3486
+ if (details == null || details.loaderKey !== target.value) {
3487
+ throw new Error("registerFeed: invalid feed link details (loaderKey must equal value)");
3488
+ }
3489
+ return target;
3490
+ }
3491
+ function hasIngestSourceTag(tagList) {
3492
+ return tagList.some((tag) => tag === ".local" || tag === ".oss");
3493
+ }
3494
+ function isSameIngestState(link, source, storageProvider, locator) {
3495
+ if (!link.tagList.includes(source)) {
3496
+ return false;
3497
+ }
3498
+ const original = parseFeedOriginal(link.details.original);
3499
+ if (original == null) {
3500
+ return false;
3501
+ }
3502
+ return original.storageProvider === storageProvider && original.locator === locator;
3503
+ }
3504
+ /**
3505
+ * Ingest a `.public` feed Link: validate locator, then promote `tagList` source to `.local` or `.oss`
3506
+ * and update `details.original.storageProvider` + `locator`.
3507
+ *
3508
+ * **Node-only** — under `shared/feed/node/`; do not import from the browser entry.
3509
+ */
3510
+ async function registerFeed(input) {
3511
+ const id = input.id.trim();
3512
+ if (id === "") {
3513
+ throw new Error("registerFeed: id is empty");
3514
+ }
3515
+ if (!isFeedIngestSource(input.source)) {
3516
+ throw new Error(`registerFeed: source must be .local or .oss, got ${String(input.source)}`);
3517
+ }
3518
+ const resolvedStorageProvider = resolveFeedOriginalStorageProvider(input.source, input.storageProvider);
3519
+ const locator = input.locator.trim();
3520
+ if (locator === "") {
3521
+ throw new Error("registerFeed: locator is empty");
3522
+ }
3523
+ const { data: target } = await getTarget({ id });
3524
+ if (target == null) {
3525
+ throw new Error(`registerFeed: target not found: ${id}`);
3526
+ }
3527
+ const link = assertFeedLink(target);
3528
+ const feedValue = link.value;
3529
+ if (!link.tagList.includes(".public")) {
3530
+ if (isSameIngestState(link, input.source, resolvedStorageProvider, locator)) {
3531
+ logger$1.info("feed already ingested", {
3532
+ topic: "dedup",
3533
+ data: { id, source: input.source, locator },
3534
+ });
3535
+ return { id, updated: false };
3536
+ }
3537
+ if (hasIngestSourceTag(link.tagList)) {
3538
+ throw new Error("registerFeed: feed already ingested with different source, storageProvider, or locator");
3539
+ }
3540
+ throw new Error("registerFeed: feed is not .public — cannot ingest");
3541
+ }
3542
+ if (input.source === ".local") {
3543
+ const localStorageProvider = input.localStorageProvider?.trim() ?? "";
3544
+ if (localStorageProvider === "") {
3545
+ throw new Error("registerFeed: localStorageProvider is required when source is .local");
3546
+ }
3547
+ const availability = await checkFeedLocalAvailability({
3548
+ value: feedValue,
3549
+ storageProvider: resolvedStorageProvider,
3550
+ locator,
3551
+ localStorageProvider,
3552
+ });
3553
+ if (!availability.ok) {
3554
+ throw new Error(`registerFeed: local locator unavailable — ${availability.reason ?? "unknown"}`);
3555
+ }
3556
+ }
3557
+ else {
3558
+ const availability = await checkFeedOssAvailability(locator);
3559
+ if (!availability.ok) {
3560
+ throw new Error(`registerFeed: oss locator unavailable — ${availability.reason ?? "unknown"}`);
3561
+ }
3562
+ }
3563
+ await updateTarget({
3564
+ id,
3565
+ optimisticLockFilterList: [
3566
+ { field: "category", operator: "eq", value: CategoryLink.LINK },
3567
+ { field: "details->original->>storageProvider", operator: "eq", value: "" },
3568
+ ],
3569
+ updateFn: (row) => {
3570
+ if (!row.tagList.includes(".public")) {
3571
+ throw new Error("registerFeed: optimistic lock failed — .public tag missing");
3572
+ }
3573
+ if (hasIngestSourceTag(row.tagList) && !row.tagList.includes(".public")) {
3574
+ throw new Error("registerFeed: feed already ingested");
3575
+ }
3576
+ const details = row.details;
3577
+ const prior = parseFeedOriginal(details.original);
3578
+ const nextOriginal = {
3579
+ storageProvider: resolvedStorageProvider,
3580
+ locator,
3581
+ ...(prior?.twinList !== undefined ? { twinList: prior.twinList } : {}),
3582
+ };
3583
+ return {
3584
+ tagList: buildFeedTagList(input.source, row.tagList),
3585
+ details: {
3586
+ ...details,
3587
+ original: nextOriginal,
3588
+ },
3589
+ };
3590
+ },
3591
+ });
3592
+ logger$1.info("feed ingested", {
3593
+ topic: "register",
3594
+ data: { id, source: input.source, storageProvider: resolvedStorageProvider, locator },
3595
+ });
3596
+ return { id, updated: true };
3597
+ }
3598
+
3358
3599
  function createLogSpoolCoordinator(options) {
3359
3600
  const { serviceValue, serviceId } = options;
3360
3601
  return {
@@ -4531,5 +4772,5 @@ const patchTriggerFired = validateWithSchema(patchTriggerFiredSchema, "patchTrig
4531
4772
  }
4532
4773
  });
4533
4774
 
4534
- export { BaseNodeRuntime, COLLECT_LOG_RUNNER_KEY, CategoryCommand, CategoryNode, CategoryRepo, CategoryTrigger, CommandType, EMPTY_REGISTRY_SLOT_RUNTIME_STATE, LOG_SPOOL_SERVICE_ID_ENV, LOG_TOPIC_TRIGGER, LogLevel, MAX_POLL_TARGET_LIST_SIZE, MEDIA_CONTENT_HASH_ALGORITHM, ManagedChildProcesses, NodeStatus, PROVIDER_TELEGRAM, RepoManager, ResultCode, SERVICE_GUARD_RUNNER_KEY, ServiceGuardNode, ServiceRegistryError, TASK_LOCAL_PACKAGE_CONFIG_FILENAME, TASK_REPO_SCRIPT_CATEGORY, TASK_REPO_USAGE, TASK_RUNNER_CONFIG_DIR, TASK_RUNNER_ROOT_CONFIG_FILENAME, TASK_RUNNER_ROOT_CONFIG_LEGACY_RELATIVE_PATH, TASK_RUNNER_ROOT_CONFIG_RELATIVE_PATH, TRIGGER_LOOP_INTERVAL_MS, TRIGGER_RUNNER_DEFAULT_RETRY_COUNT, TRIGGER_RUNNER_DEFAULT_RETRY_DELAY_MS, TaskManager, TaskNode, TaskRepoValidation, TaskStatus, TaskStatusAction, TriggerManager, TriggerNode, TriggerStatus, applyRegistrySlotGuardStep, buildMediaLinkDraft, buildNodeImportArgs, callTelegramApi, checkMediaAvailability, claimServiceRegistrySlot, createJsonFileStateStore, createL3ChildLauncher, createLogSpoolCoordinator, createLogger, createManagedChildProcesses, createPathsExistCheck, createRequiredEnvCheck, createServiceHost, createServiceRuntimeStateStore, createSupabaseReachableCheck, createTarget, createTelegramStorageProvider, downloadTelegramChunk, enableLogSpoolFromEnvInChild, encodeTelegramChunkUrl, ensureLogSpoolFromEnv, evaluateBusyNodeLiveness, fetchBinaryWithRetry, fetchWithRetry, findMediaLink, generateResponse, getConfigFileDir, getLogSpoolStats, getMainLogSpoolWriterStats, getPollCommandList, getPollCommandListSchema, getPossibleTarget, getScanRemoteRepoValues, guardRetryAfterSec, guessMediaMime, importJsConfigModule, initSupabaseFromStandardEnv, isChildProcessRunning, isCreateTargetAlreadyExistsError, isGuardAvailable, isLogEntry, isLogSpoolEnabled, isMediaValue, isOpaqueChunkUrl, isOptimisticLockResponse, isRetryableHttpStatus, loadCachedJsConfigModule, loadEnvFiles, logManager, logSpoolEnabledFromEnv, markWorkerSpawned, mediaLinkDedupFilters, nodeBufferToArrayBuffer, parseTelegramChunkUrl, patchChangeNodeStatus, patchChangeTaskStatus, patchClaimTask, patchNodeHeartBeat, patchServiceRuntime, patchStopNode, patchTriggerFired, patchTriggerFiredSchema, pathExists, pollTargetList, pollUntil, postCommand, postCommandSchema, postRegisterNode, postTarget, postTaskSchema, postTaskWithValidation, postTrigger, postTriggerSchema, probeMediaOriginal, publicBaseUrlFromEnv, readAndVerifySourceFile, readEnv, registerCollectLogRunner, registerMediaLink, registerServiceGuardRunner, registrySlotRuntimePatchFromGuardResult, requireEnv, resolveFirstExistingPath, resolveLogSpoolRoot, resolvePathFromBaseDir, resolvePathFromConfigFile, resolvePathFromCwd, resolveTelegramStorageOptions, runCollectLogTick, runReadinessChecks, runReadinessGate, runRegistrySlotGuardCheck, runServiceGuardTick, runSingleProcessService, scanEnabledTriggers, scanEnabledTriggersSchema, scanTargetList, sha256Hex, shutdownLogSpool, shutdownLogSpoolFromEnv, spawnTsxChild, supabase, telegramDownloadBinary, telegramFileDownloadUrl, toFileImportHref, updateTargetDetails, validateTaskRepoAndParams, validateWithSchema, waitForServiceReady };
4775
+ export { BaseNodeRuntime, COLLECT_LOG_RUNNER_KEY, CategoryCommand, CategoryLink, CategoryNode, CategoryRepo, CategoryTrigger, CommandType, EMPTY_REGISTRY_SLOT_RUNTIME_STATE, LOG_SPOOL_SERVICE_ID_ENV, LOG_TOPIC_TRIGGER, LogLevel, MAX_POLL_TARGET_LIST_SIZE, MEDIA_CONTENT_HASH_ALGORITHM, ManagedChildProcesses, NodeStatus, PROVIDER_TELEGRAM, RepoManager, ResultCode, SERVICE_GUARD_RUNNER_KEY, ServiceGuardNode, ServiceRegistryError, TASK_LOCAL_PACKAGE_CONFIG_FILENAME, TASK_REPO_SCRIPT_CATEGORY, TASK_REPO_USAGE, TASK_RUNNER_CONFIG_DIR, TASK_RUNNER_ROOT_CONFIG_FILENAME, TASK_RUNNER_ROOT_CONFIG_LEGACY_RELATIVE_PATH, TASK_RUNNER_ROOT_CONFIG_RELATIVE_PATH, TRIGGER_LOOP_INTERVAL_MS, TRIGGER_RUNNER_DEFAULT_RETRY_COUNT, TRIGGER_RUNNER_DEFAULT_RETRY_DELAY_MS, TaskManager, TaskNode, TaskRepoValidation, TaskStatus, TaskStatusAction, TriggerManager, TriggerNode, TriggerStatus, applyRegistrySlotGuardStep, buildMediaLinkDraft, buildNodeImportArgs, callTelegramApi, checkFeedLocalAvailability, checkFeedOssAvailability, checkMediaAvailability, claimServiceRegistrySlot, createJsonFileStateStore, createL3ChildLauncher, createLogSpoolCoordinator, createLogger, createManagedChildProcesses, createPathsExistCheck, createRequiredEnvCheck, createServiceHost, createServiceRuntimeStateStore, createSupabaseReachableCheck, createTarget, createTelegramStorageProvider, downloadTelegramChunk, enableLogSpoolFromEnvInChild, encodeTelegramChunkUrl, ensureLogSpoolFromEnv, evaluateBusyNodeLiveness, fetchBinaryWithRetry, fetchWithRetry, findMediaLink, generateResponse, getConfigFileDir, getLogSpoolStats, getMainLogSpoolWriterStats, getPollCommandList, getPollCommandListSchema, getPossibleTarget, getScanRemoteRepoValues, getTarget, guardRetryAfterSec, guessMediaMime, importJsConfigModule, initSupabaseFromStandardEnv, isChildProcessRunning, isCreateTargetAlreadyExistsError, isFeedIngestSource, isFeedValue, isGuardAvailable, isHttpUrl, isLogEntry, isLogSpoolEnabled, isMediaValue, isOpaqueChunkUrl, isOptimisticLockResponse, isRetryableHttpStatus, loadCachedJsConfigModule, loadEnvFiles, logManager, logSpoolEnabledFromEnv, markWorkerSpawned, mediaLinkDedupFilters, nodeBufferToArrayBuffer, parseTelegramChunkUrl, patchChangeNodeStatus, patchChangeTaskStatus, patchClaimTask, patchNodeHeartBeat, patchServiceRuntime, patchStopNode, patchTriggerFired, patchTriggerFiredSchema, pathExists, pollTargetList, pollUntil, postCommand, postCommandSchema, postRegisterNode, postTarget, postTaskSchema, postTaskWithValidation, postTrigger, postTriggerSchema, probeMediaOriginal, publicBaseUrlFromEnv, readAndVerifySourceFile, readEnv, registerCollectLogRunner, registerFeed, registerMediaLink, registerServiceGuardRunner, registrySlotRuntimePatchFromGuardResult, requireEnv, resolveFirstExistingPath, resolveLogSpoolRoot, resolvePathFromBaseDir, resolvePathFromConfigFile, resolvePathFromCwd, resolveTelegramStorageOptions, runCollectLogTick, runReadinessChecks, runReadinessGate, runRegistrySlotGuardCheck, runServiceGuardTick, runSingleProcessService, scanEnabledTriggers, scanEnabledTriggersSchema, scanTargetList, sha256Hex, shutdownLogSpool, shutdownLogSpoolFromEnv, spawnTsxChild, supabase, telegramDownloadBinary, telegramFileDownloadUrl, toFileImportHref, updateTarget, updateTargetDetails, validateTaskRepoAndParams, validateWithSchema, waitForServiceReady };
4535
4776
  //# sourceMappingURL=node.js.map