target-supabase-sdk 0.2.23 → 0.2.24

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 (77) hide show
  1. package/README.md +3 -3
  2. package/dist/browser.d.ts +2 -0
  3. package/dist/browser.d.ts.map +1 -1
  4. package/dist/browser.js +1 -1
  5. package/dist/chunks/{task-queue-Ba8S21I6.js → task-queue-C_nUaM2S.js} +202 -21
  6. package/dist/chunks/task-queue-C_nUaM2S.js.map +1 -0
  7. package/dist/link/index.d.ts +2 -0
  8. package/dist/link/index.d.ts.map +1 -1
  9. package/dist/link/link.query.d.ts +9 -0
  10. package/dist/link/link.query.d.ts.map +1 -0
  11. package/dist/node.d.ts +2 -0
  12. package/dist/node.d.ts.map +1 -1
  13. package/dist/node.js +108 -6
  14. package/dist/node.js.map +1 -1
  15. package/dist/shared/feed/feed.query.d.ts.map +1 -1
  16. package/dist/shared/idea/idea.build.d.ts +35 -0
  17. package/dist/shared/idea/idea.build.d.ts.map +1 -0
  18. package/dist/shared/idea/idea.interface.d.ts +23 -0
  19. package/dist/shared/idea/idea.interface.d.ts.map +1 -0
  20. package/dist/shared/idea/idea.normalize.d.ts +3 -0
  21. package/dist/shared/idea/idea.normalize.d.ts.map +1 -0
  22. package/dist/shared/idea/idea.parse.d.ts +3 -0
  23. package/dist/shared/idea/idea.parse.d.ts.map +1 -0
  24. package/dist/shared/idea/idea.query.d.ts +6 -0
  25. package/dist/shared/idea/idea.query.d.ts.map +1 -0
  26. package/dist/shared/idea/idea.schema.d.ts +60 -0
  27. package/dist/shared/idea/idea.schema.d.ts.map +1 -0
  28. package/dist/shared/idea/index.d.ts +15 -0
  29. package/dist/shared/idea/index.d.ts.map +1 -0
  30. package/dist/shared/idea/node/idea.hash.d.ts +3 -0
  31. package/dist/shared/idea/node/idea.hash.d.ts.map +1 -0
  32. package/dist/shared/idea/node/idea.locator.d.ts +9 -0
  33. package/dist/shared/idea/node/idea.locator.d.ts.map +1 -0
  34. package/dist/shared/idea/node/index.d.ts +3 -0
  35. package/dist/shared/idea/node/index.d.ts.map +1 -0
  36. package/dist/shared/media/media.query.d.ts.map +1 -1
  37. package/dist/shared/review/review.query.d.ts.map +1 -1
  38. package/dist/shared/utils/config-path.utils.d.ts +1 -1
  39. package/dist/shared/utils/postgrest.utils.d.ts +1 -1
  40. package/dist/task/index.d.ts +1 -1
  41. package/dist/task/local-task-registry.d.ts +1 -1
  42. package/dist/trigger/trigger.api.d.ts +6 -1
  43. package/dist/trigger/trigger.api.d.ts.map +1 -1
  44. package/package.json +1 -1
  45. package/src/browser.ts +21 -0
  46. package/src/link/index.ts +2 -0
  47. package/src/link/link.query.ts +18 -0
  48. package/src/node.ts +8 -0
  49. package/src/shared/feed/README.md +1 -1
  50. package/src/shared/feed/feed.query.ts +2 -7
  51. package/src/shared/idea/README.md +82 -0
  52. package/src/shared/idea/VALIDATION-MATRIX.md +69 -0
  53. package/src/shared/idea/idea.build.ts +160 -0
  54. package/src/shared/idea/idea.interface.ts +34 -0
  55. package/src/shared/idea/idea.normalize.ts +17 -0
  56. package/src/shared/idea/idea.parse.ts +16 -0
  57. package/src/shared/idea/idea.query.ts +16 -0
  58. package/src/shared/idea/idea.schema.ts +32 -0
  59. package/src/shared/idea/index.ts +21 -0
  60. package/src/shared/idea/node/idea.hash.ts +6 -0
  61. package/src/shared/idea/node/idea.locator.ts +61 -0
  62. package/src/shared/idea/node/index.ts +7 -0
  63. package/src/shared/media/README.md +1 -1
  64. package/src/shared/media/media.query.ts +2 -7
  65. package/src/shared/review/review.query.ts +2 -7
  66. package/src/shared/utils/config-path.utils.ts +1 -1
  67. package/src/shared/utils/postgrest.utils.ts +1 -1
  68. package/src/task/index.ts +1 -1
  69. package/src/task/local-task-registry.ts +1 -1
  70. package/src/trigger/trigger.api.ts +6 -1
  71. package/dist/chunks/task-queue-Ba8S21I6.js.map +0 -1
  72. package/dist/resource/resource.interface.d.ts +0 -20
  73. package/dist/resource/resource.interface.d.ts.map +0 -1
  74. package/dist/task/task.utils.d.ts +0 -1
  75. package/dist/task/task.utils.d.ts.map +0 -1
  76. package/src/resource/resource.interface.ts +0 -37
  77. package/src/task/task.utils.ts +0 -0
package/README.md CHANGED
@@ -264,7 +264,7 @@ await registerMediaLink({
264
264
  });
265
265
  ```
266
266
 
267
- Details: `src/shared/media/README.md` and `.cursor/skills/media-link/SKILL.md`.
267
+ Details: `src/shared/media/README.md` and `.cursor/skills/link-conventions/SKILL.md`.
268
268
 
269
269
  ### Feed Links (`feed.image` / `feed.audio` / `feed.video` / `feed.image-list`)
270
270
 
@@ -292,7 +292,7 @@ await registerFeed({
292
292
  });
293
293
  ```
294
294
 
295
- Details: `src/shared/feed/README.md` and `.cursor/skills/feed-link/SKILL.md`.
295
+ Details: `src/shared/feed/README.md` and `.cursor/skills/link-conventions/SKILL.md`.
296
296
 
297
297
  ### PostgREST filter helpers (0.2.15+)
298
298
 
@@ -303,7 +303,7 @@ When using `supabase.client` directly (e.g. `ilike` search or `text[]` tag filte
303
303
  | `escapeIlikePattern` | User input for `.ilike()` / `.or("col.ilike.%…%")` — escapes `%` `_` `\` and strips `,` |
304
304
  | `toPostgrestTextArrayLiteral` | `.overlaps("tagList", …)` and `.filter("tagList", "not.ov", …)` — **never** `.not("tagList", "ov", jsArray)` |
305
305
 
306
- Pitfalls and examples: `.cursor/skills/postgrest-query-filters/SKILL.md`.
306
+ Pitfalls and examples: `.cursor/skills/target-list-query/SKILL.md`.
307
307
 
308
308
  ## Development
309
309
 
package/dist/browser.d.ts CHANGED
@@ -44,6 +44,8 @@ export type { BuildFeedLinkDraftInput, FeedOriginal, FeedSource, FeedValue } fro
44
44
  export { buildFeedLinkDraft, buildFeedLinkName, FEED_VALUES, feedLinkDedupFilters, isFeedValue, } from "./shared/feed";
45
45
  export type { FetchInitFactory, FetchRetryOptions } from "./shared/http/fetch-retry";
46
46
  export { fetchBinaryWithRetry, fetchWithRetry, isRetryableHttpStatus, requestHasBody, } from "./shared/http/fetch-retry";
47
+ export type { BuildIdeaImageLinkDraftInput, BuildIdeaLinkDraftInput, IdeaCreateSchemaInput, IdeaOriginal, IdeaUpdateSchemaInput, } from "./shared/idea";
48
+ export { buildIdeaImageLinkDraft, buildIdeaLinkDraft, IDEA_IMAGE_LINK_NAME, IDEA_IMAGE_TAG_RAW, IDEA_IMAGE_TEMP_DIR, IDEA_LINK_VALUE, ideaCreateSchema, ideaLinkValueFilters, ideaUpdateSchema, isIdeaImageLinkName, normalizeStringList, parseIdeaOriginal, } from "./shared/idea";
47
49
  export type { CreateLoggerInput, DecodedLogBatch, FlatLogEntry, LogEntry, LoggerWithScope, LogScope, LogScopePatch, } from "./shared/log";
48
50
  export { createLogger, decodeLogBatch, decodeLogBatchList, flattenLogBatch, flattenLogBatches, isLogBatchList, isLogEntry, LOG_BATCH_LOADER_KEY, LOG_MIN_LEVEL_ENV_KEY, LOG_PERSIST_LOADER_KEY, LogLevel, logManager, logMinLevelFromEnv, parseLogBatchMeta, resolveLogMinLevel, } from "./shared/log";
49
51
  export type { BuildMediaLinkDraftInput, MediaOriginal, MediaValue } from "./shared/media";
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
package/dist/browser.js CHANGED
@@ -1,4 +1,4 @@
1
- export { A as ApiMethod, C as CategoryConfig, a as CategoryExtraction, b as CategoryLink, c as CategoryNode, d as CategoryParcel, e as CategoryRepo, f as CategoryService, g as CategoryTask, D as DEFAULT_SYSTEM_REGISTRY_SEED_SLOTS, E as EMPTY_REGISTRY_SLOT_RUNTIME_STATE, F as FEED_VALUES, L as LINK_MANIFEST_VERSION, h as LIST_MANIFEST_VERSION, M as MEDIA_CONTENT_HASH_ALGORITHM, i as MEDIA_CONTENT_HASH_PREFIX_LENGTH, j as MEDIA_VALUES, N as NodeStatus, P as POST_TASK_DEFAULT_MAX_ATTEMPTS, k as ParcelManager, l as PostLinkValidator, R as ResultCode, S as ServiceLifecycleStatus, m as ServiceRegistryError, n as ServiceSlotStatus, T as TARGET_SYSTEM_REGISTRY_KEY, o as TASK_REPO_USAGE, p as TaskStatus, q as TaskStatusAction, 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, B as buildMediaLinkDraft, G as buildMediaNameFromLocator, H as buildReviewLinkDraft, I as buildSystemRegistryConfigDetails, J as claimServiceRegistrySlot, 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, a1 as evaluateBusyNodeLiveness, a2 as feedLinkDedupFilters, a3 as fetchBinaryWithRetry, a4 as fetchWithRetry, 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, ah as getScanRemoteRepoValues, ai as getScanRemoteRepoValuesSchema, aj as getService, ak as getServiceSchema, al as getTargetSystemRegistry, am as getValueAtPath, an as guessMediaMime, ao as installChunkFetchRegistry, ap as isFeedValue, aq as isHttpUrl, ar as isLocalFilesystemPath, as as isLogBatchList, at as isLogEntry, au as isMediaValue, av as isOpaqueChunkUrl, aw as isRetryableHttpStatus, ax as linkTargetDraftBuildInputSchema, ay as mediaLinkDedupFilters, az as parcelDetailsSchema, aA as parseLogBatchMeta, aB as parseProviderPrefixedUrl, aC as parseServiceSlot, aD as parseServiceSlots, aE as patchChangeNodeStatus, aF as patchChangeNodeStatusSchema, aG as patchChangeTaskStatus, aH as patchChangeTaskStatusSchema, aI as patchClaimTask, aJ as patchClaimTaskSchema, aK as patchExtractionObjects, aL as patchExtractionObjectsSchema, aM as patchNodeHeartBeat, aN as patchNodeHeartBeatSchema, aO as patchServiceRuntime, aP as patchStopNode, 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 postRegisterNode, a$ as postRegisterNodeSchema, b0 as postService, b1 as postServiceInstance, b2 as postServiceSchema, b3 as postSystemRegistryConfig, b4 as postSystemRegistryConfigSchema, b5 as postTask, b6 as postTaskSchema, b7 as postTaskWithRetry, b8 as publishParcel, b9 as registerProviderChunkResolver, ba as registerService, bb as registerServiceAtStartup, bc as registrySlotRuntimePatchFromGuardResult, 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 reviewLinksForNameFilters, bn as runRegistrySlotGuardCheck, 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, bx as sha256Hex, by as summarizeTaskQueue, bz as systemRegistrySeedSlotSchema, bA as toPostgrestTextArrayLiteral, bB as unregisterService, bC as unregisterServiceAtShutdown } from './chunks/task-queue-Ba8S21I6.js';
1
+ export { A as ApiMethod, C as CategoryConfig, a as CategoryExtraction, b as CategoryLink, c as CategoryNode, d as CategoryParcel, e as CategoryRepo, f as CategoryService, g as CategoryTask, D as DEFAULT_SYSTEM_REGISTRY_SEED_SLOTS, E as EMPTY_REGISTRY_SLOT_RUNTIME_STATE, F as FEED_VALUES, I as IDEA_IMAGE_LINK_NAME, h as IDEA_IMAGE_TAG_RAW, i as IDEA_IMAGE_TEMP_DIR, j as IDEA_LINK_VALUE, L as LINK_MANIFEST_VERSION, k as LIST_MANIFEST_VERSION, M as MEDIA_CONTENT_HASH_ALGORITHM, l as MEDIA_CONTENT_HASH_PREFIX_LENGTH, m as MEDIA_VALUES, N as NodeStatus, P as POST_TASK_DEFAULT_MAX_ATTEMPTS, n as ParcelManager, o as PostLinkValidator, R as ResultCode, S as ServiceLifecycleStatus, p as ServiceRegistryError, q as ServiceSlotStatus, T as TARGET_SYSTEM_REGISTRY_KEY, r as TASK_REPO_USAGE, s as TaskStatus, t as TaskStatusAction, u as apiDetailsSchema, v as appendSystemRegistryEmptySlots, w as assertRegistrySlotAvailable, x as assertRegistrySlotOwner, y as buildEmptyServiceSlots, z as buildFeedLinkDraft, B as buildFeedLinkName, G as buildIdeaImageLinkDraft, H as buildIdeaLinkDraft, J as buildLinkTargetDraft, K as buildListTargetDraft, O as buildMediaLinkDraft, Q as buildMediaNameFromLocator, U as buildReviewLinkDraft, V as buildSystemRegistryConfigDetails, W as claimServiceRegistrySlot, X as classifyNetworkError, Y as countTasksByType, Z as createActiveServiceLifecycle, _ as createClaimedRegistrySlotRuntimeState, $ as createStorageProviderRegistry, a0 as createUploadTracker, a1 as decodeLogBatch, a2 as decodeLogBatchList, a3 as defaultL3ServiceDetails, a4 as deleteParcel, a5 as deleteParcelSchema, a6 as escapeIlikePattern, a7 as evaluateBusyNodeLiveness, a8 as feedLinkDedupFilters, a9 as fetchBinaryWithRetry, aa as fetchWithRetry, ab as fieldDefinitionSchema, ac as flattenLogBatch, ad as flattenLogBatches, ae as formatNetworkError, af as getApi, ag as getApiSchema, ah as getConfig, ai as getConfigSchema, aj as getExtraction, ak as getExtractionSchema, al as getParcel, am as getParcelSchema, an as getScanRemoteRepoValues, ao as getScanRemoteRepoValuesSchema, ap as getService, aq as getServiceSchema, ar as getTargetSystemRegistry, as as getValueAtPath, at as guessMediaMime, au as ideaCreateSchema, av as ideaLinkValueFilters, aw as ideaUpdateSchema, ax as installChunkFetchRegistry, ay as isFeedValue, az as isHttpUrl, aA as isIdeaImageLinkName, aB as isLocalFilesystemPath, aC as isLogBatchList, aD as isLogEntry, aE as isMediaValue, aF as isOpaqueChunkUrl, aG as isRetryableHttpStatus, aH as linkDedupFilters, aI as linkTargetDraftBuildInputSchema, aJ as mediaLinkDedupFilters, aK as normalizeStringList, aL as parcelDetailsSchema, aM as parseIdeaOriginal, aN as parseLogBatchMeta, aO as parseProviderPrefixedUrl, aP as parseServiceSlot, aQ as parseServiceSlots, aR as patchChangeNodeStatus, aS as patchChangeNodeStatusSchema, aT as patchChangeTaskStatus, aU as patchChangeTaskStatusSchema, aV as patchClaimTask, aW as patchClaimTaskSchema, aX as patchExtractionObjects, aY as patchExtractionObjectsSchema, aZ as patchNodeHeartBeat, a_ as patchNodeHeartBeatSchema, a$ as patchServiceRuntime, b0 as patchStopNode, b1 as patchStopNodeSchema, b2 as patchTaskProgress, b3 as patchTaskProgressSchema, b4 as postApi, b5 as postApiSchema, b6 as postExtraction, b7 as postExtractionSchema, b8 as postLinkCreate, b9 as postParcel, ba as postParcelSchema, bb as postRegisterNode, bc as postRegisterNodeSchema, bd as postService, be as postServiceInstance, bf as postServiceSchema, bg as postSystemRegistryConfig, bh as postSystemRegistryConfigSchema, bi as postTask, bj as postTaskSchema, bk as postTaskWithRetry, bl as publishParcel, bm as registerProviderChunkResolver, bn as registerService, bo as registerServiceAtStartup, bp as registrySlotRuntimePatchFromGuardResult, bq as releaseSystemRegistrySlots, br as releaseSystemRegistrySlotsByServiceId, bs as requestHasBody, bt as resetSystemRegistryConfig, bu as resetSystemRegistryConfigSchema, bv as resolveActiveRegistryServiceId, bw as resolveFetchUrl, bx as restoreParcel, by as restoreParcelById, bz as reviewLinksForNameFilters, bA as runRegistrySlotGuardCheck, bB as sanitizeFileName, bC as sanitizeParcelFileName, bD as scanExtractionList, bE as scanExtractionListSchema, bF as schemaDefinitionSchema, bG as serviceDetailsSchema, bH as serviceLifecycleSchema, bI as serviceNodeSnapshotSchema, bJ as serviceRuntimeSchema, bK as sha256Hex, bL as summarizeTaskQueue, bM as systemRegistrySeedSlotSchema, bN as toPostgrestTextArrayLiteral, bO as unregisterService, bP as unregisterServiceAtShutdown } from './chunks/task-queue-C_nUaM2S.js';
2
2
  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, d as LogLevel, M as MAX_POLL_TARGET_LIST_SIZE, 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, g as createLogger, h as createTarget, i as deleteTarget, j as formatZodError, k as generateResponse, l as getPossibleTarget, m as getTarget, n as getTargetList, o as getTargetTotalCount, p as handleSupabaseError, q as isCreateTargetAlreadyExistsError, r as isDevEnvironment, s as isOptimisticLockError, t as isOptimisticLockResponse, u as logDev, v as logDevGroup, w as logManager, x as logMinLevelFromEnv, y as patchTarget, z as pollTargetList, A as postListCreate, D as postLogListCreate, E as postTarget, F as postTargetPayloadSchema, G as queryFilterSchema, H as resolveLogMinLevel, I as safeParseWithSchema, J as scanTargetList, K as supabase, N as targetDraftSchema, Q as updateTarget, R as updateTargetDetails, T as validateWith, V as validateWithSchema } from './chunks/list.api-BzbTJBsM.js';
3
3
  import 'zod';
4
4
  import 'lodash-es';
@@ -418,6 +418,16 @@ function buildLinkTargetDraft(input) {
418
418
  };
419
419
  }
420
420
 
421
+ /** Shared Link filters used by feed, media, and review query helpers. */
422
+ function linkDedupFilters(input) {
423
+ const name = input.name.trim();
424
+ return [
425
+ { field: "category", operator: "eq", value: CategoryLink.LINK },
426
+ { field: "value", operator: "eq", value: input.value },
427
+ { field: "name", operator: "eq", value: name },
428
+ ];
429
+ }
430
+
421
431
  const LIST_MANIFEST_VERSION = 0;
422
432
  function isLinkTargetDraftBuildInput(item) {
423
433
  return linkTargetDraftBuildInputSchema.safeParse(item).success;
@@ -2643,12 +2653,7 @@ function buildFeedLinkDraft(input) {
2643
2653
 
2644
2654
  /** Dedup key: `category=link` + `value` + `name` (matches register / find). */
2645
2655
  function feedLinkDedupFilters(input) {
2646
- const name = input.name.trim();
2647
- return [
2648
- { field: "category", operator: "eq", value: CategoryLink.LINK },
2649
- { field: "value", operator: "eq", value: input.value },
2650
- { field: "name", operator: "eq", value: name },
2651
- ];
2656
+ return linkDedupFilters(input);
2652
2657
  }
2653
2658
 
2654
2659
  const RETRYABLE_CAUSE_CODES = new Set([
@@ -2872,6 +2877,192 @@ async function fetchBinaryWithRetry(url, init, options) {
2872
2877
  return response.arrayBuffer();
2873
2878
  }
2874
2879
 
2880
+ /**
2881
+ * Idea Link protocol — Link rows with `value` / `loaderKey` === {@link IDEA_LINK_VALUE}.
2882
+ * Clipboard images use fixed `name` {@link IDEA_IMAGE_LINK_NAME} (not a separate value).
2883
+ */
2884
+ const IDEA_LINK_VALUE = "idea";
2885
+ /** Link.name for clipboard-image ideas (distinct from title-based text ideas). */
2886
+ const IDEA_IMAGE_LINK_NAME = "idea.image";
2887
+ /** Default tag for raw captures (quick-note, paste-image). Leading `.` = system tag. */
2888
+ const IDEA_IMAGE_TAG_RAW = ".raw";
2889
+ /** Temp sandbox prefix for pasted images (`TEMP_FS_ROOT` on upload-service). */
2890
+ const IDEA_IMAGE_TEMP_DIR = "idea/paste";
2891
+ function isIdeaImageLinkName(name) {
2892
+ return name.trim() === IDEA_IMAGE_LINK_NAME;
2893
+ }
2894
+
2895
+ /** Trim, dedupe, and drop empty strings from tag/review lists. */
2896
+ function normalizeStringList(raw) {
2897
+ if (raw == null || raw.length === 0) {
2898
+ return [];
2899
+ }
2900
+ const seen = new Set();
2901
+ const out = [];
2902
+ for (const item of raw) {
2903
+ const text = item.trim();
2904
+ if (text === "" || seen.has(text)) {
2905
+ continue;
2906
+ }
2907
+ seen.add(text);
2908
+ out.push(text);
2909
+ }
2910
+ return out;
2911
+ }
2912
+
2913
+ function resolveIdeaOriginal(input) {
2914
+ const content = input.content.trim();
2915
+ if (content === "") {
2916
+ throw new Error("buildIdeaLinkDraft: content is empty");
2917
+ }
2918
+ if (content.length > 100_000) {
2919
+ throw new Error("buildIdeaLinkDraft: content exceeds 100000 characters");
2920
+ }
2921
+ const url = input.url?.trim() ?? "";
2922
+ if (url.length > 2000) {
2923
+ throw new Error("buildIdeaLinkDraft: url exceeds 2000 characters");
2924
+ }
2925
+ const reviewList = normalizeStringList(input.reviewList);
2926
+ if (reviewList.length > 32) {
2927
+ throw new Error("buildIdeaLinkDraft: reviewList exceeds 32 entries");
2928
+ }
2929
+ for (const entry of reviewList) {
2930
+ if (entry.length > 8000) {
2931
+ throw new Error("buildIdeaLinkDraft: reviewList entry exceeds 8000 characters");
2932
+ }
2933
+ }
2934
+ return {
2935
+ content,
2936
+ reviewList,
2937
+ url,
2938
+ heat: Math.max(0, Math.floor(input.heat ?? 0)),
2939
+ };
2940
+ }
2941
+ /**
2942
+ * Assemble a text idea {@link Link} draft (`category=link`, `loaderKey === value === "idea"`).
2943
+ * Does not write to Supabase or enforce title uniqueness.
2944
+ */
2945
+ function buildIdeaLinkDraft(input) {
2946
+ const name = input.name.trim();
2947
+ if (name === "") {
2948
+ throw new Error("buildIdeaLinkDraft: name is empty");
2949
+ }
2950
+ if (name.length > 500) {
2951
+ throw new Error("buildIdeaLinkDraft: name exceeds 500 characters");
2952
+ }
2953
+ if (isIdeaImageLinkName(name)) {
2954
+ throw new Error("buildIdeaLinkDraft: name is reserved for image ideas; use buildIdeaImageLinkDraft");
2955
+ }
2956
+ const tagList = normalizeStringList(input.tagList);
2957
+ if (tagList.length > 32) {
2958
+ throw new Error("buildIdeaLinkDraft: tagList exceeds 32 entries");
2959
+ }
2960
+ for (const tag of tagList) {
2961
+ if (tag.length > 128) {
2962
+ throw new Error("buildIdeaLinkDraft: tag exceeds 128 characters");
2963
+ }
2964
+ }
2965
+ const original = resolveIdeaOriginal({
2966
+ content: input.content,
2967
+ reviewList: input.reviewList,
2968
+ url: input.url,
2969
+ heat: input.heat,
2970
+ });
2971
+ return buildLinkTargetDraft({
2972
+ name,
2973
+ value: IDEA_LINK_VALUE,
2974
+ description: input.description ?? "",
2975
+ preview: input.preview ?? "",
2976
+ loaderKey: IDEA_LINK_VALUE,
2977
+ tagList,
2978
+ original,
2979
+ });
2980
+ }
2981
+ /**
2982
+ * Assemble a clipboard-image idea Link (`name=idea.image`, `value=idea`).
2983
+ * Caller stores bytes and supplies hash + temp URL; no dedup by content hash.
2984
+ */
2985
+ function buildIdeaImageLinkDraft(input) {
2986
+ const contentHash = input.contentHash.trim();
2987
+ if (contentHash === "") {
2988
+ throw new Error("buildIdeaImageLinkDraft: contentHash is empty");
2989
+ }
2990
+ if (contentHash.length > 100_000) {
2991
+ throw new Error("buildIdeaImageLinkDraft: contentHash exceeds 100000 characters");
2992
+ }
2993
+ const url = input.url.trim();
2994
+ if (url === "") {
2995
+ throw new Error("buildIdeaImageLinkDraft: url is empty");
2996
+ }
2997
+ if (url.length > 2000) {
2998
+ throw new Error("buildIdeaImageLinkDraft: url exceeds 2000 characters");
2999
+ }
3000
+ const tagList = normalizeStringList(input.tagList ?? [IDEA_IMAGE_TAG_RAW]);
3001
+ if (tagList.length === 0) {
3002
+ throw new Error("buildIdeaImageLinkDraft: tagList is empty");
3003
+ }
3004
+ const original = {
3005
+ content: contentHash,
3006
+ reviewList: [],
3007
+ url,
3008
+ heat: Math.max(0, Math.floor(input.heat ?? 0)),
3009
+ };
3010
+ return buildLinkTargetDraft({
3011
+ name: IDEA_IMAGE_LINK_NAME,
3012
+ value: IDEA_LINK_VALUE,
3013
+ description: input.description ?? "",
3014
+ preview: input.preview ?? "",
3015
+ loaderKey: IDEA_LINK_VALUE,
3016
+ tagList,
3017
+ original,
3018
+ });
3019
+ }
3020
+
3021
+ /** Runtime shape of `Link.details.original` for value=idea. */
3022
+ const ideaOriginalSchema = z.object({
3023
+ content: z.string().trim().min(1).max(100_000),
3024
+ reviewList: z.array(z.string().trim().min(1).max(8000)).max(32).default([]),
3025
+ url: z.string().trim().max(2000).default(""),
3026
+ heat: z.number().int().min(0).default(0),
3027
+ });
3028
+ const ideaTagSchema = z.string().trim().min(1).max(128);
3029
+ /** HTTP / API create body limits (upload-service `POST /v0/upload/idea`). */
3030
+ const ideaCreateSchema = z.object({
3031
+ name: z.string().trim().min(1, "name is required").max(500),
3032
+ content: z.string().trim().min(1, "content is required").max(100_000),
3033
+ reviewList: z.array(z.string().trim().min(1).max(8000)).max(32).default([]),
3034
+ url: z.string().trim().max(2000).default(""),
3035
+ tagList: z.array(ideaTagSchema).max(32).default([]),
3036
+ });
3037
+ const ideaUpdateSchema = z.object({
3038
+ name: z.string().trim().min(1).max(500).optional(),
3039
+ content: z.string().trim().min(1).max(100_000).optional(),
3040
+ reviewList: z.array(z.string().trim().min(1).max(8000)).max(32).optional(),
3041
+ url: z.string().trim().max(2000).optional(),
3042
+ tagList: z.array(ideaTagSchema).max(32).optional(),
3043
+ });
3044
+
3045
+ function parseIdeaOriginal(original) {
3046
+ const parsed = ideaOriginalSchema.safeParse(original);
3047
+ if (!parsed.success) {
3048
+ return null;
3049
+ }
3050
+ return {
3051
+ content: parsed.data.content,
3052
+ reviewList: normalizeStringList(parsed.data.reviewList),
3053
+ url: parsed.data.url,
3054
+ heat: parsed.data.heat,
3055
+ };
3056
+ }
3057
+
3058
+ /** List/get filters: `category=link` and `value=idea` (do not filter on `details.loaderKey`). */
3059
+ function ideaLinkValueFilters() {
3060
+ return [
3061
+ { field: "category", operator: "eq", value: CategoryLink.LINK },
3062
+ { field: "value", operator: "eq", value: IDEA_LINK_VALUE },
3063
+ ];
3064
+ }
3065
+
2875
3066
  /**
2876
3067
  * Media Link protocol — Link rows with value/loaderKey in {@link MEDIA_VALUES}.
2877
3068
  * No separate Target category; category remains `link`.
@@ -3024,12 +3215,7 @@ function buildMediaNameFromLocator(locator, contentHash) {
3024
3215
 
3025
3216
  /** Dedup key: `category=link` + `value` + `name` (matches register / find). */
3026
3217
  function mediaLinkDedupFilters(input) {
3027
- const name = input.name.trim();
3028
- return [
3029
- { field: "category", operator: "eq", value: CategoryLink.LINK },
3030
- { field: "value", operator: "eq", value: input.value },
3031
- { field: "name", operator: "eq", value: name },
3032
- ];
3218
+ return linkDedupFilters(input);
3033
3219
  }
3034
3220
 
3035
3221
  /**
@@ -3066,12 +3252,7 @@ function buildReviewLinkDraft(input) {
3066
3252
  * Many rows may match — the SDK does not define dedup for reviews.
3067
3253
  */
3068
3254
  function reviewLinksForNameFilters(name) {
3069
- const trimmed = name.trim();
3070
- return [
3071
- { field: "category", operator: "eq", value: CategoryLink.LINK },
3072
- { field: "value", operator: "eq", value: REVIEW_VALUE },
3073
- { field: "name", operator: "eq", value: trimmed },
3074
- ];
3255
+ return linkDedupFilters({ value: REVIEW_VALUE, name });
3075
3256
  }
3076
3257
 
3077
3258
  /** Read a dotted path (e.g. `data.items`) from a parsed JSON value. */
@@ -3095,7 +3276,7 @@ function getValueAtPath(value, path) {
3095
3276
  /**
3096
3277
  * PostgREST / Supabase JS client helpers for `target` table filters.
3097
3278
  *
3098
- * @see `.cursor/skills/postgrest-query-filters/SKILL.md`
3279
+ * @see `.cursor/skills/target-list-query/SKILL.md`
3099
3280
  */
3100
3281
  /**
3101
3282
  * Escape `%`, `_`, and `\` for PostgREST `ilike` patterns.
@@ -3690,5 +3871,5 @@ function summarizeTaskQueue(tasks, taskType, statuses) {
3690
3871
  return tasks.filter((task) => task.value === taskType && statuses.includes(task.details.status)).length;
3691
3872
  }
3692
3873
 
3693
- export { deleteParcelSchema as $, ApiMethod as A, buildMediaLinkDraft as B, CategoryConfig as C, DEFAULT_SYSTEM_REGISTRY_SEED_SLOTS as D, EMPTY_REGISTRY_SLOT_RUNTIME_STATE as E, FEED_VALUES as F, buildMediaNameFromLocator as G, buildReviewLinkDraft as H, buildSystemRegistryConfigDetails as I, claimServiceRegistrySlot as J, classifyNetworkError as K, LINK_MANIFEST_VERSION as L, MEDIA_CONTENT_HASH_ALGORITHM as M, NodeStatus as N, countTasksByType as O, POST_TASK_DEFAULT_MAX_ATTEMPTS as P, createActiveServiceLifecycle as Q, ResultCode as R, ServiceLifecycleStatus as S, TARGET_SYSTEM_REGISTRY_KEY as T, createClaimedRegistrySlotRuntimeState as U, createStorageProviderRegistry as V, createUploadTracker as W, decodeLogBatch as X, decodeLogBatchList as Y, defaultL3ServiceDetails as Z, deleteParcel as _, CategoryExtraction as a, postRegisterNodeSchema as a$, escapeIlikePattern as a0, evaluateBusyNodeLiveness as a1, feedLinkDedupFilters as a2, fetchBinaryWithRetry as a3, fetchWithRetry as a4, fieldDefinitionSchema as a5, flattenLogBatch as a6, flattenLogBatches as a7, formatNetworkError as a8, getApi as a9, parseLogBatchMeta as aA, parseProviderPrefixedUrl as aB, parseServiceSlot as aC, parseServiceSlots as aD, patchChangeNodeStatus as aE, patchChangeNodeStatusSchema as aF, patchChangeTaskStatus as aG, patchChangeTaskStatusSchema as aH, patchClaimTask as aI, patchClaimTaskSchema as aJ, patchExtractionObjects as aK, patchExtractionObjectsSchema as aL, patchNodeHeartBeat as aM, patchNodeHeartBeatSchema as aN, patchServiceRuntime as aO, patchStopNode as aP, patchStopNodeSchema as aQ, patchTaskProgress as aR, patchTaskProgressSchema as aS, postApi as aT, postApiSchema as aU, postExtraction as aV, postExtractionSchema as aW, postLinkCreate as aX, postParcel as aY, postParcelSchema as aZ, postRegisterNode as a_, getApiSchema as aa, getConfig as ab, getConfigSchema as ac, getExtraction as ad, getExtractionSchema as ae, getParcel as af, getParcelSchema as ag, getScanRemoteRepoValues as ah, getScanRemoteRepoValuesSchema as ai, getService as aj, getServiceSchema as ak, getTargetSystemRegistry as al, getValueAtPath as am, guessMediaMime as an, installChunkFetchRegistry as ao, isFeedValue as ap, isHttpUrl as aq, isLocalFilesystemPath as ar, isLogBatchList as as, isLogEntry as at, isMediaValue as au, isOpaqueChunkUrl as av, isRetryableHttpStatus as aw, linkTargetDraftBuildInputSchema as ax, mediaLinkDedupFilters as ay, parcelDetailsSchema as az, CategoryLink as b, postService as b0, postServiceInstance as b1, postServiceSchema as b2, postSystemRegistryConfig as b3, postSystemRegistryConfigSchema as b4, postTask as b5, postTaskSchema as b6, postTaskWithRetry as b7, publishParcel as b8, registerProviderChunkResolver as b9, toPostgrestTextArrayLiteral as bA, unregisterService as bB, unregisterServiceAtShutdown as bC, getErrorMessage as bD, LOG_TOPIC_NODE as bE, isFeedIngestSource as bF, resolveFeedOriginalStorageProvider as bG, buildFeedTagList as bH, LOG_TOPIC_TASK as bI, CRITICAL_UNKNOWN_TASK_TRACE_ID as bJ, toError as bK, createTaskRow as bL, FEED_INGEST_SOURCES as bM, registerService as ba, registerServiceAtStartup as bb, registrySlotRuntimePatchFromGuardResult as bc, releaseSystemRegistrySlots as bd, releaseSystemRegistrySlotsByServiceId as be, requestHasBody as bf, resetSystemRegistryConfig as bg, resetSystemRegistryConfigSchema as bh, resolveActiveRegistryServiceId as bi, resolveFetchUrl as bj, restoreParcel as bk, restoreParcelById as bl, reviewLinksForNameFilters as bm, runRegistrySlotGuardCheck as bn, sanitizeFileName as bo, sanitizeParcelFileName as bp, scanExtractionList as bq, scanExtractionListSchema as br, schemaDefinitionSchema as bs, serviceDetailsSchema as bt, serviceLifecycleSchema as bu, serviceNodeSnapshotSchema as bv, serviceRuntimeSchema as bw, sha256Hex as bx, summarizeTaskQueue as by, systemRegistrySeedSlotSchema as bz, CategoryNode as c, CategoryParcel as d, CategoryRepo as e, CategoryService as f, CategoryTask as g, LIST_MANIFEST_VERSION as h, MEDIA_CONTENT_HASH_PREFIX_LENGTH as i, MEDIA_VALUES as j, ParcelManager as k, PostLinkValidator as l, ServiceRegistryError as m, ServiceSlotStatus as n, TASK_REPO_USAGE as o, TaskStatus as p, TaskStatusAction as q, apiDetailsSchema as r, appendSystemRegistryEmptySlots as s, assertRegistrySlotAvailable as t, assertRegistrySlotOwner as u, buildEmptyServiceSlots as v, buildFeedLinkDraft as w, buildFeedLinkName as x, buildLinkTargetDraft as y, buildListTargetDraft as z };
3694
- //# sourceMappingURL=task-queue-Ba8S21I6.js.map
3874
+ export { createStorageProviderRegistry as $, ApiMethod as A, buildFeedLinkName as B, CategoryConfig as C, DEFAULT_SYSTEM_REGISTRY_SEED_SLOTS as D, EMPTY_REGISTRY_SLOT_RUNTIME_STATE as E, FEED_VALUES as F, buildIdeaImageLinkDraft as G, buildIdeaLinkDraft as H, IDEA_IMAGE_LINK_NAME as I, buildLinkTargetDraft as J, buildListTargetDraft as K, LINK_MANIFEST_VERSION as L, MEDIA_CONTENT_HASH_ALGORITHM as M, NodeStatus as N, buildMediaLinkDraft as O, POST_TASK_DEFAULT_MAX_ATTEMPTS as P, buildMediaNameFromLocator as Q, ResultCode as R, ServiceLifecycleStatus as S, TARGET_SYSTEM_REGISTRY_KEY as T, buildReviewLinkDraft as U, buildSystemRegistryConfigDetails as V, claimServiceRegistrySlot as W, classifyNetworkError as X, countTasksByType as Y, createActiveServiceLifecycle as Z, createClaimedRegistrySlotRuntimeState as _, CategoryExtraction as a, patchServiceRuntime as a$, createUploadTracker as a0, decodeLogBatch as a1, decodeLogBatchList as a2, defaultL3ServiceDetails as a3, deleteParcel as a4, deleteParcelSchema as a5, escapeIlikePattern as a6, evaluateBusyNodeLiveness as a7, feedLinkDedupFilters as a8, fetchBinaryWithRetry as a9, isIdeaImageLinkName as aA, isLocalFilesystemPath as aB, isLogBatchList as aC, isLogEntry as aD, isMediaValue as aE, isOpaqueChunkUrl as aF, isRetryableHttpStatus as aG, linkDedupFilters as aH, linkTargetDraftBuildInputSchema as aI, mediaLinkDedupFilters as aJ, normalizeStringList as aK, parcelDetailsSchema as aL, parseIdeaOriginal as aM, parseLogBatchMeta as aN, parseProviderPrefixedUrl as aO, parseServiceSlot as aP, parseServiceSlots as aQ, patchChangeNodeStatus as aR, patchChangeNodeStatusSchema as aS, patchChangeTaskStatus as aT, patchChangeTaskStatusSchema as aU, patchClaimTask as aV, patchClaimTaskSchema as aW, patchExtractionObjects as aX, patchExtractionObjectsSchema as aY, patchNodeHeartBeat as aZ, patchNodeHeartBeatSchema as a_, fetchWithRetry as aa, fieldDefinitionSchema as ab, flattenLogBatch as ac, flattenLogBatches as ad, formatNetworkError as ae, getApi as af, getApiSchema as ag, getConfig as ah, getConfigSchema as ai, getExtraction as aj, getExtractionSchema as ak, getParcel as al, getParcelSchema as am, getScanRemoteRepoValues as an, getScanRemoteRepoValuesSchema as ao, getService as ap, getServiceSchema as aq, getTargetSystemRegistry as ar, getValueAtPath as as, guessMediaMime as at, ideaCreateSchema as au, ideaLinkValueFilters as av, ideaUpdateSchema as aw, installChunkFetchRegistry as ax, isFeedValue as ay, isHttpUrl as az, CategoryLink as b, patchStopNode as b0, patchStopNodeSchema as b1, patchTaskProgress as b2, patchTaskProgressSchema as b3, postApi as b4, postApiSchema as b5, postExtraction as b6, postExtractionSchema as b7, postLinkCreate as b8, postParcel as b9, runRegistrySlotGuardCheck as bA, sanitizeFileName as bB, sanitizeParcelFileName as bC, scanExtractionList as bD, scanExtractionListSchema as bE, schemaDefinitionSchema as bF, serviceDetailsSchema as bG, serviceLifecycleSchema as bH, serviceNodeSnapshotSchema as bI, serviceRuntimeSchema as bJ, sha256Hex as bK, summarizeTaskQueue as bL, systemRegistrySeedSlotSchema as bM, toPostgrestTextArrayLiteral as bN, unregisterService as bO, unregisterServiceAtShutdown as bP, getErrorMessage as bQ, LOG_TOPIC_NODE as bR, isFeedIngestSource as bS, resolveFeedOriginalStorageProvider as bT, buildFeedTagList as bU, LOG_TOPIC_TASK as bV, CRITICAL_UNKNOWN_TASK_TRACE_ID as bW, toError as bX, createTaskRow as bY, FEED_INGEST_SOURCES as bZ, postParcelSchema as ba, postRegisterNode as bb, postRegisterNodeSchema as bc, postService as bd, postServiceInstance as be, postServiceSchema as bf, postSystemRegistryConfig as bg, postSystemRegistryConfigSchema as bh, postTask as bi, postTaskSchema as bj, postTaskWithRetry as bk, publishParcel as bl, registerProviderChunkResolver as bm, registerService as bn, registerServiceAtStartup as bo, registrySlotRuntimePatchFromGuardResult as bp, releaseSystemRegistrySlots as bq, releaseSystemRegistrySlotsByServiceId as br, requestHasBody as bs, resetSystemRegistryConfig as bt, resetSystemRegistryConfigSchema as bu, resolveActiveRegistryServiceId as bv, resolveFetchUrl as bw, restoreParcel as bx, restoreParcelById as by, reviewLinksForNameFilters as bz, CategoryNode as c, CategoryParcel as d, CategoryRepo as e, CategoryService as f, CategoryTask as g, IDEA_IMAGE_TAG_RAW as h, IDEA_IMAGE_TEMP_DIR as i, IDEA_LINK_VALUE as j, LIST_MANIFEST_VERSION as k, MEDIA_CONTENT_HASH_PREFIX_LENGTH as l, MEDIA_VALUES as m, ParcelManager as n, PostLinkValidator as o, ServiceRegistryError as p, ServiceSlotStatus as q, TASK_REPO_USAGE as r, TaskStatus as s, TaskStatusAction as t, apiDetailsSchema as u, appendSystemRegistryEmptySlots as v, assertRegistrySlotAvailable as w, assertRegistrySlotOwner as x, buildEmptyServiceSlots as y, buildFeedLinkDraft as z };
3875
+ //# sourceMappingURL=task-queue-C_nUaM2S.js.map