target-supabase-sdk 0.2.23 → 0.2.25

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 (108) hide show
  1. package/README.md +3 -3
  2. package/dist/browser.d.ts +3 -1
  3. package/dist/browser.d.ts.map +1 -1
  4. package/dist/browser.js +3 -2
  5. package/dist/browser.js.map +1 -1
  6. package/dist/chunks/{enable-C7lFooTG.js → enable-DkiKPHDl.js} +20 -121
  7. package/dist/chunks/enable-DkiKPHDl.js.map +1 -0
  8. package/dist/chunks/{list.api-BzbTJBsM.js → list.api-B-aM4vzv.js} +46 -10
  9. package/dist/chunks/list.api-B-aM4vzv.js.map +1 -0
  10. package/dist/chunks/{task-queue-Ba8S21I6.js → task-queue-BYfO0Nzm.js} +212 -28
  11. package/dist/chunks/task-queue-BYfO0Nzm.js.map +1 -0
  12. package/dist/link/index.d.ts +2 -0
  13. package/dist/link/index.d.ts.map +1 -1
  14. package/dist/link/link.query.d.ts +9 -0
  15. package/dist/link/link.query.d.ts.map +1 -0
  16. package/dist/node.d.ts +2 -0
  17. package/dist/node.d.ts.map +1 -1
  18. package/dist/node.js +157 -27
  19. package/dist/node.js.map +1 -1
  20. package/dist/preload.js +3 -3
  21. package/dist/shared/feed/feed.query.d.ts.map +1 -1
  22. package/dist/shared/idea/idea.build.d.ts +35 -0
  23. package/dist/shared/idea/idea.build.d.ts.map +1 -0
  24. package/dist/shared/idea/idea.interface.d.ts +23 -0
  25. package/dist/shared/idea/idea.interface.d.ts.map +1 -0
  26. package/dist/shared/idea/idea.normalize.d.ts +3 -0
  27. package/dist/shared/idea/idea.normalize.d.ts.map +1 -0
  28. package/dist/shared/idea/idea.parse.d.ts +3 -0
  29. package/dist/shared/idea/idea.parse.d.ts.map +1 -0
  30. package/dist/shared/idea/idea.query.d.ts +6 -0
  31. package/dist/shared/idea/idea.query.d.ts.map +1 -0
  32. package/dist/shared/idea/idea.schema.d.ts +60 -0
  33. package/dist/shared/idea/idea.schema.d.ts.map +1 -0
  34. package/dist/shared/idea/index.d.ts +15 -0
  35. package/dist/shared/idea/index.d.ts.map +1 -0
  36. package/dist/shared/idea/node/idea.hash.d.ts +3 -0
  37. package/dist/shared/idea/node/idea.hash.d.ts.map +1 -0
  38. package/dist/shared/idea/node/idea.locator.d.ts +9 -0
  39. package/dist/shared/idea/node/idea.locator.d.ts.map +1 -0
  40. package/dist/shared/idea/node/index.d.ts +3 -0
  41. package/dist/shared/idea/node/index.d.ts.map +1 -0
  42. package/dist/shared/log/core/log-batch.d.ts +4 -4
  43. package/dist/shared/log/core/log-batch.d.ts.map +1 -1
  44. package/dist/shared/log/index.d.ts +2 -1
  45. package/dist/shared/log/index.d.ts.map +1 -1
  46. package/dist/shared/log/spool/collector.d.ts +1 -1
  47. package/dist/shared/log/spool/collector.d.ts.map +1 -1
  48. package/dist/shared/log/spool/file.d.ts +2 -8
  49. package/dist/shared/log/spool/file.d.ts.map +1 -1
  50. package/dist/shared/log/spool/writer.d.ts.map +1 -1
  51. package/dist/shared/log/upload/flush.d.ts.map +1 -1
  52. package/dist/shared/log/upload/interface.d.ts +3 -11
  53. package/dist/shared/log/upload/interface.d.ts.map +1 -1
  54. package/dist/shared/media/media.query.d.ts.map +1 -1
  55. package/dist/shared/review/review.query.d.ts.map +1 -1
  56. package/dist/shared/utils/config-path.utils.d.ts +1 -1
  57. package/dist/shared/utils/postgrest.utils.d.ts +1 -1
  58. package/dist/task/index.d.ts +1 -1
  59. package/dist/task/local-task-registry.d.ts +1 -1
  60. package/dist/trigger/trigger.api.d.ts +6 -1
  61. package/dist/trigger/trigger.api.d.ts.map +1 -1
  62. package/package.json +1 -1
  63. package/src/browser.ts +23 -2
  64. package/src/link/index.ts +2 -0
  65. package/src/link/link.query.ts +18 -0
  66. package/src/node.ts +8 -0
  67. package/src/shared/feed/README.md +1 -1
  68. package/src/shared/feed/feed.query.ts +2 -7
  69. package/src/shared/idea/README.md +82 -0
  70. package/src/shared/idea/VALIDATION-MATRIX.md +69 -0
  71. package/src/shared/idea/idea.build.ts +160 -0
  72. package/src/shared/idea/idea.interface.ts +34 -0
  73. package/src/shared/idea/idea.normalize.ts +17 -0
  74. package/src/shared/idea/idea.parse.ts +16 -0
  75. package/src/shared/idea/idea.query.ts +16 -0
  76. package/src/shared/idea/idea.schema.ts +32 -0
  77. package/src/shared/idea/index.ts +21 -0
  78. package/src/shared/idea/node/idea.hash.ts +6 -0
  79. package/src/shared/idea/node/idea.locator.ts +61 -0
  80. package/src/shared/idea/node/index.ts +7 -0
  81. package/src/shared/log/README.md +2 -3
  82. package/src/shared/log/core/log-batch.ts +12 -10
  83. package/src/shared/log/index.ts +2 -1
  84. package/src/shared/log/spool/collector.ts +46 -20
  85. package/src/shared/log/spool/file.ts +12 -25
  86. package/src/shared/log/spool/writer.ts +2 -7
  87. package/src/shared/log/upload/flush.ts +23 -38
  88. package/src/shared/log/upload/interface.ts +3 -12
  89. package/src/shared/media/README.md +1 -1
  90. package/src/shared/media/media.query.ts +2 -7
  91. package/src/shared/review/review.query.ts +2 -7
  92. package/src/shared/utils/config-path.utils.ts +1 -1
  93. package/src/shared/utils/postgrest.utils.ts +1 -1
  94. package/src/task/index.ts +1 -1
  95. package/src/task/local-task-registry.ts +1 -1
  96. package/src/trigger/trigger.api.ts +6 -1
  97. package/dist/chunks/enable-C7lFooTG.js.map +0 -1
  98. package/dist/chunks/list.api-BzbTJBsM.js.map +0 -1
  99. package/dist/chunks/task-queue-Ba8S21I6.js.map +0 -1
  100. package/dist/resource/resource.interface.d.ts +0 -20
  101. package/dist/resource/resource.interface.d.ts.map +0 -1
  102. package/dist/shared/log/upload/batch-id.d.ts +0 -13
  103. package/dist/shared/log/upload/batch-id.d.ts.map +0 -1
  104. package/dist/task/task.utils.d.ts +0 -1
  105. package/dist/task/task.utils.d.ts.map +0 -1
  106. package/src/resource/resource.interface.ts +0 -37
  107. package/src/shared/log/upload/batch-id.ts +0 -43
  108. package/src/task/task.utils.ts +0 -0
package/dist/preload.js CHANGED
@@ -1,13 +1,13 @@
1
1
  import { resolve } from 'node:path';
2
- import { w as logManager, H as resolveLogMinLevel } from './chunks/list.api-BzbTJBsM.js';
3
- import { r as resolveProjectRootByPackageName, p as pinEnvProfileFromArgv, l as loadEnvFiles, v as validateLogSpoolPreloadEnv, a as logSpoolEnabledFromEnv, m as mergeLogSpoolExtraProcessRolesEnv } from './chunks/enable-C7lFooTG.js';
2
+ import { w as logManager, H as resolveLogMinLevel } from './chunks/list.api-B-aM4vzv.js';
3
+ import { r as resolveProjectRootByPackageName, p as pinEnvProfileFromArgv, l as loadEnvFiles, v as validateLogSpoolPreloadEnv, a as logSpoolEnabledFromEnv, m as mergeLogSpoolExtraProcessRolesEnv } from './chunks/enable-DkiKPHDl.js';
4
+ import 'node:crypto';
4
5
  import 'zod';
5
6
  import 'lodash-es';
6
7
  import '@supabase/supabase-js';
7
8
  import 'node:fs';
8
9
  import 'node:url';
9
10
  import 'node:fs/promises';
10
- import 'node:crypto';
11
11
 
12
12
  function applyServiceEnvDefaults(projectRoot, options) {
13
13
  if (!logSpoolEnabledFromEnv()) {
@@ -1 +1 @@
1
- {"version":3,"file":"feed.query.d.ts","sourceRoot":"","sources":["../../../src/shared/feed/feed.query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,+EAA+E;AAC/E,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,WAAW,EAAE,CAO7F"}
1
+ {"version":3,"file":"feed.query.d.ts","sourceRoot":"","sources":["../../../src/shared/feed/feed.query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,+EAA+E;AAC/E,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,WAAW,EAAE,CAE7F"}
@@ -0,0 +1,35 @@
1
+ import type { TargetDraft } from "../../core.interface";
2
+ import type { Link } from "../../link/link.interface";
3
+ export interface BuildIdeaLinkDraftInput {
4
+ /** Article title — Link.name (not used for image ideas). */
5
+ name: string;
6
+ /** Body or image content hash — `details.original.content`. */
7
+ content: string;
8
+ reviewList?: readonly string[];
9
+ url?: string;
10
+ heat?: number;
11
+ tagList?: readonly string[];
12
+ description?: string;
13
+ preview?: string;
14
+ }
15
+ export interface BuildIdeaImageLinkDraftInput {
16
+ /** SHA-256 hex of image bytes — stored in `details.original.content`. */
17
+ contentHash: string;
18
+ /** Temp download or other absolute URL — `details.original.url`. */
19
+ url: string;
20
+ heat?: number;
21
+ tagList?: readonly string[];
22
+ description?: string;
23
+ preview?: string;
24
+ }
25
+ /**
26
+ * Assemble a text idea {@link Link} draft (`category=link`, `loaderKey === value === "idea"`).
27
+ * Does not write to Supabase or enforce title uniqueness.
28
+ */
29
+ export declare function buildIdeaLinkDraft(input: BuildIdeaLinkDraftInput): TargetDraft<Link>;
30
+ /**
31
+ * Assemble a clipboard-image idea Link (`name=idea.image`, `value=idea`).
32
+ * Caller stores bytes and supplies hash + temp URL; no dedup by content hash.
33
+ */
34
+ export declare function buildIdeaImageLinkDraft(input: BuildIdeaImageLinkDraftInput): TargetDraft<Link>;
35
+ //# sourceMappingURL=idea.build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idea.build.d.ts","sourceRoot":"","sources":["../../../src/shared/idea/idea.build.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AAUtD,MAAM,WAAW,uBAAuB;IACpC,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,4BAA4B;IACzC,yEAAyE;IACzE,WAAW,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAuCD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,WAAW,CAAC,IAAI,CAAC,CAsCpF;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,4BAA4B,GAAG,WAAW,CAAC,IAAI,CAAC,CAsC9F"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Idea Link protocol — Link rows with `value` / `loaderKey` === {@link IDEA_LINK_VALUE}.
3
+ * Clipboard images use fixed `name` {@link IDEA_IMAGE_LINK_NAME} (not a separate value).
4
+ */
5
+ export declare const IDEA_LINK_VALUE: "idea";
6
+ /** Discriminator stored in both `Link.value` and `details.loaderKey`. */
7
+ export type IdeaLinkValue = typeof IDEA_LINK_VALUE;
8
+ /** Link.name for clipboard-image ideas (distinct from title-based text ideas). */
9
+ export declare const IDEA_IMAGE_LINK_NAME: "idea.image";
10
+ /** Default tag for raw captures (quick-note, paste-image). Leading `.` = system tag. */
11
+ export declare const IDEA_IMAGE_TAG_RAW: ".raw";
12
+ /** Temp sandbox prefix for pasted images (`TEMP_FS_ROOT` on upload-service). */
13
+ export declare const IDEA_IMAGE_TEMP_DIR: "idea/paste";
14
+ /** `Link.details.original` for idea Links (text and image). */
15
+ export interface IdeaOriginal {
16
+ content: string;
17
+ reviewList: string[];
18
+ url: string;
19
+ heat: number;
20
+ }
21
+ export declare function isIdeaLinkValue(value: string): value is IdeaLinkValue;
22
+ export declare function isIdeaImageLinkName(name: string): boolean;
23
+ //# sourceMappingURL=idea.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idea.interface.d.ts","sourceRoot":"","sources":["../../../src/shared/idea/idea.interface.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,eAAe,EAAG,MAAe,CAAC;AAE/C,yEAAyE;AACzE,MAAM,MAAM,aAAa,GAAG,OAAO,eAAe,CAAC;AAEnD,kFAAkF;AAClF,eAAO,MAAM,oBAAoB,EAAG,YAAqB,CAAC;AAE1D,wFAAwF;AACxF,eAAO,MAAM,kBAAkB,EAAG,MAAe,CAAC;AAElD,gFAAgF;AAChF,eAAO,MAAM,mBAAmB,EAAG,YAAqB,CAAC;AAEzD,+DAA+D;AAC/D,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,aAAa,CAErE;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzD"}
@@ -0,0 +1,3 @@
1
+ /** Trim, dedupe, and drop empty strings from tag/review lists. */
2
+ export declare function normalizeStringList(raw: readonly string[] | undefined | null): string[];
3
+ //# sourceMappingURL=idea.normalize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idea.normalize.d.ts","sourceRoot":"","sources":["../../../src/shared/idea/idea.normalize.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,EAAE,CAevF"}
@@ -0,0 +1,3 @@
1
+ import type { IdeaOriginal } from "./idea.interface";
2
+ export declare function parseIdeaOriginal(original: unknown): IdeaOriginal | null;
3
+ //# sourceMappingURL=idea.parse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idea.parse.d.ts","sourceRoot":"","sources":["../../../src/shared/idea/idea.parse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAIrD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAWxE"}
@@ -0,0 +1,6 @@
1
+ import type { QueryFilter } from "../../core.interface";
2
+ /** List/get filters: `category=link` and `value=idea` (do not filter on `details.loaderKey`). */
3
+ export declare function ideaLinkValueFilters(): QueryFilter[];
4
+ /** Clipboard-image ideas only (`name=idea.image`). */
5
+ export declare function ideaImageLinkFilters(): QueryFilter[];
6
+ //# sourceMappingURL=idea.query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idea.query.d.ts","sourceRoot":"","sources":["../../../src/shared/idea/idea.query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAIxD,iGAAiG;AACjG,wBAAgB,oBAAoB,IAAI,WAAW,EAAE,CAKpD;AAED,sDAAsD;AACtD,wBAAgB,oBAAoB,IAAI,WAAW,EAAE,CAEpD"}
@@ -0,0 +1,60 @@
1
+ import { z } from "zod";
2
+ /** Runtime shape of `Link.details.original` for value=idea. */
3
+ export declare const ideaOriginalSchema: z.ZodObject<{
4
+ content: z.ZodString;
5
+ reviewList: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
6
+ url: z.ZodDefault<z.ZodString>;
7
+ heat: z.ZodDefault<z.ZodNumber>;
8
+ }, "strip", z.ZodTypeAny, {
9
+ url: string;
10
+ content: string;
11
+ reviewList: string[];
12
+ heat: number;
13
+ }, {
14
+ content: string;
15
+ url?: string | undefined;
16
+ reviewList?: string[] | undefined;
17
+ heat?: number | undefined;
18
+ }>;
19
+ /** HTTP / API create body limits (upload-service `POST /v0/upload/idea`). */
20
+ export declare const ideaCreateSchema: z.ZodObject<{
21
+ name: z.ZodString;
22
+ content: z.ZodString;
23
+ reviewList: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
24
+ url: z.ZodDefault<z.ZodString>;
25
+ tagList: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
26
+ }, "strip", z.ZodTypeAny, {
27
+ name: string;
28
+ tagList: string[];
29
+ url: string;
30
+ content: string;
31
+ reviewList: string[];
32
+ }, {
33
+ name: string;
34
+ content: string;
35
+ tagList?: string[] | undefined;
36
+ url?: string | undefined;
37
+ reviewList?: string[] | undefined;
38
+ }>;
39
+ export type IdeaCreateSchemaInput = z.infer<typeof ideaCreateSchema>;
40
+ export declare const ideaUpdateSchema: z.ZodObject<{
41
+ name: z.ZodOptional<z.ZodString>;
42
+ content: z.ZodOptional<z.ZodString>;
43
+ reviewList: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
44
+ url: z.ZodOptional<z.ZodString>;
45
+ tagList: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
46
+ }, "strip", z.ZodTypeAny, {
47
+ name?: string | undefined;
48
+ tagList?: string[] | undefined;
49
+ url?: string | undefined;
50
+ content?: string | undefined;
51
+ reviewList?: string[] | undefined;
52
+ }, {
53
+ name?: string | undefined;
54
+ tagList?: string[] | undefined;
55
+ url?: string | undefined;
56
+ content?: string | undefined;
57
+ reviewList?: string[] | undefined;
58
+ }>;
59
+ export type IdeaUpdateSchemaInput = z.infer<typeof ideaUpdateSchema>;
60
+ //# sourceMappingURL=idea.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idea.schema.d.ts","sourceRoot":"","sources":["../../../src/shared/idea/idea.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,+DAA+D;AAC/D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;EAK7B,CAAC;AAIH,6EAA6E;AAC7E,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;EAM3B,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAErE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;EAM3B,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Idea Link — browser-safe public barrel only.
3
+ *
4
+ * Node-only code lives in `./node/` and is exported from `src/node.ts`.
5
+ */
6
+ export type { BuildIdeaImageLinkDraftInput, BuildIdeaLinkDraftInput } from "./idea.build";
7
+ export { buildIdeaImageLinkDraft, buildIdeaLinkDraft } from "./idea.build";
8
+ export type { IdeaOriginal } from "./idea.interface";
9
+ export { IDEA_IMAGE_LINK_NAME, IDEA_IMAGE_TAG_RAW, IDEA_IMAGE_TEMP_DIR, IDEA_LINK_VALUE, isIdeaImageLinkName, } from "./idea.interface";
10
+ export { normalizeStringList } from "./idea.normalize";
11
+ export { parseIdeaOriginal } from "./idea.parse";
12
+ export { ideaLinkValueFilters } from "./idea.query";
13
+ export type { IdeaCreateSchemaInput, IdeaUpdateSchemaInput } from "./idea.schema";
14
+ export { ideaCreateSchema, ideaUpdateSchema } from "./idea.schema";
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/idea/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC1F,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC3E,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EACH,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,mBAAmB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,YAAY,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** SHA-256 hex of image bytes (filename + `details.original.content` for paste-image ideas). */
2
+ export declare function hashIdeaPasteImage(buffer: Buffer): string;
3
+ //# sourceMappingURL=idea.hash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idea.hash.d.ts","sourceRoot":"","sources":["../../../../src/shared/idea/node/idea.hash.ts"],"names":[],"mappings":"AAEA,gGAAgG;AAChG,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEzD"}
@@ -0,0 +1,9 @@
1
+ /** Path suffix on upload-service public URL for temp file download. */
2
+ export declare const IDEA_TEMP_DOWNLOAD_PATH_SUFFIX = "/v0/upload/temp/download";
3
+ /** Flat path under temp sandbox: `idea/paste/{sha256}.{ext}`. */
4
+ export declare function buildIdeaPasteRelativePath(contentHash: string, ext: string): string;
5
+ /** Build absolute locator stored in `details.original.url`. */
6
+ export declare function buildIdeaTempDownloadLocator(relativePath: string, publicBaseUrl: string): string;
7
+ /** Parse temp download URL → sandbox-relative path, or null when not a temp download URL. */
8
+ export declare function parseIdeaTempDownloadLocator(locator: string): string | null;
9
+ //# sourceMappingURL=idea.locator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idea.locator.d.ts","sourceRoot":"","sources":["../../../../src/shared/idea/node/idea.locator.ts"],"names":[],"mappings":"AAEA,uEAAuE;AACvE,eAAO,MAAM,8BAA8B,6BAA6B,CAAC;AAEzE,iEAAiE;AACjE,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAOnF;AAUD,+DAA+D;AAC/D,wBAAgB,4BAA4B,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAShG;AAED,6FAA6F;AAC7F,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAwB3E"}
@@ -0,0 +1,3 @@
1
+ export { hashIdeaPasteImage } from "./idea.hash";
2
+ export { buildIdeaPasteRelativePath, buildIdeaTempDownloadLocator, IDEA_TEMP_DOWNLOAD_PATH_SUFFIX, parseIdeaTempDownloadLocator, } from "./idea.locator";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/shared/idea/node/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EACH,0BAA0B,EAC1B,4BAA4B,EAC5B,8BAA8B,EAC9B,4BAA4B,GAC/B,MAAM,gBAAgB,CAAC"}
@@ -4,8 +4,8 @@
4
4
  * skipped rather than thrown. Mirrors the write side in `upload/flush.ts`.
5
5
  */
6
6
  import type { List } from "../../../list/list.interface";
7
- import type { LogEntry } from "../core/log-manager";
8
7
  import { type LogBatchMeta, type LogPersistLane } from "../upload/interface";
8
+ import type { LogEntry } from "./log-manager";
9
9
  /** A decoded log batch: origin metadata plus its raw entries. */
10
10
  export interface DecodedLogBatch {
11
11
  /** Source `List` row id. */
@@ -21,14 +21,14 @@ export interface FlatLogEntry extends LogEntry {
21
21
  process: string;
22
22
  lane: LogPersistLane;
23
23
  pid: number;
24
- /** Idempotency key of the source batch. */
25
- batchId: string;
24
+ /** Source List row id. */
25
+ listId: string;
26
26
  }
27
27
  /** Parse `ListDetails.meta` (object or legacy JSON string) into typed batch meta, or null. */
28
28
  export declare function parseLogBatchMeta(rawMeta: unknown): LogBatchMeta | null;
29
29
  /** Structural guard for a persisted {@link LogEntry}. */
30
30
  export declare function isLogEntry(value: unknown): value is LogEntry;
31
- /** Is this List a persisted log batch (by loaderKey)? */
31
+ /** Is this List a persisted log batch (by `value`)? */
32
32
  export declare function isLogBatchList(list: List): boolean;
33
33
  /**
34
34
  * Decode a `List` row into a {@link DecodedLogBatch}. Returns null when the row
@@ -1 +1 @@
1
- {"version":3,"file":"log-batch.d.ts","sourceRoot":"","sources":["../../../../src/shared/log/core/log-batch.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAA0B,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAIrG,iEAAiE;AACjE,MAAM,WAAW,eAAe;IAC5B,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED,6EAA6E;AAC7E,MAAM,WAAW,YAAa,SAAQ,QAAQ;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,cAAc,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;CACnB;AAcD,8FAA8F;AAC9F,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAkCvE;AAED,yDAAyD;AACzD,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAW5D;AAED,yDAAyD;AACzD,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAElD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,eAAe,GAAG,IAAI,CAkBjE;AAED,0EAA0E;AAC1E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,eAAe,EAAE,CAS5E;AAED,8EAA8E;AAC9E,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,YAAY,EAAE,CAStE;AAED,0DAA0D;AAC1D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,GAAG,YAAY,EAAE,CAMrF"}
1
+ {"version":3,"file":"log-batch.d.ts","sourceRoot":"","sources":["../../../../src/shared/log/core/log-batch.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAwB,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACnG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAI9C,iEAAiE;AACjE,MAAM,WAAW,eAAe;IAC5B,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED,6EAA6E;AAC7E,MAAM,WAAW,YAAa,SAAQ,QAAQ;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,cAAc,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;CAClB;AAcD,8FAA8F;AAC9F,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAgCvE;AAED,yDAAyD;AACzD,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAW5D;AAED,uDAAuD;AACvD,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAElD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,eAAe,GAAG,IAAI,CAsBjE;AAED,0EAA0E;AAC1E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,eAAe,EAAE,CAS5E;AAED,8EAA8E;AAC9E,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,YAAY,EAAE,CAStE;AAED,0DAA0D;AAC1D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,GAAG,YAAY,EAAE,CAMrF"}
@@ -11,6 +11,7 @@ export type { ResolveLogMinLevelOptions } from "./core/log-min-level";
11
11
  export { LOG_MIN_LEVEL_ENV_KEY, logMinLevelFromEnv, resolveLogMinLevel, } from "./core/log-min-level";
12
12
  export type { CreateScopeInput, LoggerResetScopePatch, LogScope, LogScopeInput, LogScopePatch, PatchScopeInput, } from "./core/log-scope";
13
13
  export { createScope, formatScopeLabels, normalizeScope, patchScope, resolveLogData, withModule, } from "./core/log-scope";
14
+ export { formatLogSpoolBatchTimestamp } from "./spool/file";
14
15
  export type { LogBatchMeta, LogPersistLane } from "./upload/interface";
15
- export { LOG_BATCH_LOADER_KEY, LOG_PERSIST_LOADER_KEY } from "./upload/interface";
16
+ export { LOG_BATCH_LIST_VALUE } from "./upload/interface";
16
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/log/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EACR,2BAA2B,EAC3B,0BAA0B,EAC1B,iBAAiB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EACH,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,iBAAiB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACtE,YAAY,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EACH,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACR,gBAAgB,EAChB,qBAAqB,EACrB,QAAQ,EACR,aAAa,EACb,aAAa,EACb,eAAe,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACH,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,cAAc,EACd,UAAU,GACb,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/log/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EACR,2BAA2B,EAC3B,0BAA0B,EAC1B,iBAAiB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EACH,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,iBAAiB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACtE,YAAY,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EACH,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACR,gBAAgB,EAChB,qBAAqB,EACrB,QAAQ,EACR,aAAa,EACb,aAAa,EACb,eAAe,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACH,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,cAAc,EACd,UAAU,GACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAC5D,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -15,7 +15,7 @@ export interface RunCollectLogTickResult {
15
15
  }
16
16
  /**
17
17
  * Guard-only: upload pending `.tmp` batches, rename to `.json`, then periodic GC.
18
- * Upload completion is implied by `.json` presence; no sync-state file.
18
+ * Post success is tracked via `.json` or `.synced` marker (prevents duplicate DB inserts).
19
19
  */
20
20
  export declare function runCollectLogTick(input: RunCollectLogTickInput): Promise<RunCollectLogTickResult>;
21
21
  //# sourceMappingURL=collector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../../../src/shared/log/spool/collector.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,wBAAwB,EAAyB,MAAM,UAAU,CAAC;AAWhF,MAAM,WAAW,sBAAsB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC,OAAO,wBAAwB,CAAC,CAAC;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;CAC3B;AAiOD;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAqEvG"}
1
+ {"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../../../src/shared/log/spool/collector.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,wBAAwB,EAAyB,MAAM,UAAU,CAAC;AAYhF,MAAM,WAAW,sBAAsB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC,OAAO,wBAAwB,CAAC,CAAC;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;CAC3B;AAqPD;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CA2EvG"}
@@ -1,12 +1,6 @@
1
- import type { LogEntry } from "../core/log-manager";
2
1
  import type { LogSpoolProcessRole } from "./interface";
3
2
  export declare function formatLogSpoolBatchTimestamp(ms: number): string;
4
- export declare function computeLogSpoolShortHash(input: {
5
- serviceValue: string;
6
- serviceId: string;
7
- processRole: LogSpoolProcessRole;
8
- entries: LogEntry[];
9
- }): string;
3
+ export declare function randomLogSpoolShortId(): string;
10
4
  export declare function buildLogSpoolBatchBaseName(input: {
11
5
  processRole: LogSpoolProcessRole;
12
6
  firstEntryTimestamp: number;
@@ -16,6 +10,6 @@ export declare function parseLogSpoolBatchFilename(filename: string): {
16
10
  processRole: LogSpoolProcessRole;
17
11
  timestampMs: number;
18
12
  shortHash: string;
19
- extension: "tmp" | "json";
13
+ extension: "tmp" | "json" | "synced";
20
14
  } | null;
21
15
  //# sourceMappingURL=file.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../../src/shared/log/spool/file.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAKvD,wBAAgB,4BAA4B,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAW/D;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,mBAAmB,CAAC;IACjC,OAAO,EAAE,QAAQ,EAAE,CAAC;CACvB,GAAG,MAAM,CAST;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAC9C,WAAW,EAAE,mBAAmB,CAAC;IACjC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CACrB,GAAG,MAAM,CAGT;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG;IAC1D,WAAW,EAAE,mBAAmB,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC;CAC7B,GAAG,IAAI,CAwBP"}
1
+ {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../../src/shared/log/spool/file.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAKvD,wBAAgB,4BAA4B,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAW/D;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAC9C,WAAW,EAAE,mBAAmB,CAAC;IACjC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CACrB,GAAG,MAAM,CAGT;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG;IAC1D,WAAW,EAAE,mBAAmB,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;CACxC,GAAG,IAAI,CAwBP"}
@@ -1 +1 @@
1
- {"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../../../src/shared/log/spool/writer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAMpD,OAAO,KAAK,EAAE,qBAAqB,EAA0C,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGtH,cAAM,cAAc;IAChB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA+B;IAEtD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,aAAa,CAA8C;IACnE,OAAO,CAAC,QAAQ,CAA8C;IAC9D,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,MAAM,CAAmC;IAEjD,MAAM,CAAC,WAAW,IAAI,cAAc;IAK9B,MAAM,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BrD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB/B,QAAQ,IAAI,mBAAmB;IAa/B,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAoB5B,OAAO,CAAC,4BAA4B;IAMpC,OAAO,CAAC,sBAAsB;IAiB9B,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,cAAc;YAOR,UAAU;YA2DV,aAAa;CAwC9B;AAED,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAExF;AAED,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CAE5D;AAED,wBAAgB,sBAAsB,IAAI,mBAAmB,CAE5D"}
1
+ {"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../../../src/shared/log/spool/writer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAMpD,OAAO,KAAK,EAAE,qBAAqB,EAA0C,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGtH,cAAM,cAAc;IAChB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA+B;IAEtD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,aAAa,CAA8C;IACnE,OAAO,CAAC,QAAQ,CAA8C;IAC9D,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,MAAM,CAAmC;IAEjD,MAAM,CAAC,WAAW,IAAI,cAAc;IAK9B,MAAM,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BrD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB/B,QAAQ,IAAI,mBAAmB;IAa/B,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAoB5B,OAAO,CAAC,4BAA4B;IAMpC,OAAO,CAAC,sBAAsB;IAiB9B,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,cAAc;YAOR,UAAU;YA2DV,aAAa;CAmC9B;AAED,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAExF;AAED,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CAE5D;AAED,wBAAgB,sBAAsB,IAAI,mBAAmB,CAE5D"}
@@ -1 +1 @@
1
- {"version":3,"file":"flush.d.ts","sourceRoot":"","sources":["../../../../src/shared/log/upload/flush.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIxE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,CAShE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,YAAY,CA6B7E;AAoBD,wBAAsB,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgC5F;AAED,0DAA0D;AAC1D,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,CAyBxF"}
1
+ {"version":3,"file":"flush.d.ts","sourceRoot":"","sources":["../../../../src/shared/log/upload/flush.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIxE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,CAShE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,YAAY,CA2B7E;AAoBD,wBAAsB,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB5F;AAED,0DAA0D;AAC1D,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,CAyBxF"}
@@ -1,15 +1,9 @@
1
1
  import type { TargetDraft } from "../../../core.interface";
2
2
  import type { List } from "../../../list/list.interface";
3
3
  import type { LogEntry } from "../core/log-manager";
4
- /**
5
- * `ListDetails.loaderKey` stamped on every persisted log batch (write + read side).
6
- * Business type: **LogBatch** (transport flush). Pairs with log-service **LogTrace**
7
- * (`LogTrace.0`) after rekeying by `traceId`.
8
- */
9
- export declare const LOG_PERSIST_LOADER_KEY = "LogBatch.0";
10
- /** Alias for {@link LOG_PERSIST_LOADER_KEY} — preferred when contrasting with LogTrace. */
11
- export declare const LOG_BATCH_LOADER_KEY = "LogBatch.0";
12
- /** Legacy transport metadata — fixed `"slow"` for spool uploads; required for downstream decode today. */
4
+ /** Discriminator on `List.value` and `details.loaderKey` — query by `value` only, not JSON loaderKey. */
5
+ export declare const LOG_BATCH_LIST_VALUE = "log-batch";
6
+ /** Legacy transport metadata — fixed `"slow"` for spool uploads. */
13
7
  export type LogPersistLane = "fast" | "medium" | "slow";
14
8
  export interface LogBatchMeta {
15
9
  service: string;
@@ -20,13 +14,11 @@ export interface LogBatchMeta {
20
14
  from: number | null;
21
15
  to: number | null;
22
16
  flushedAt: number;
23
- idempotencyKey: string;
24
17
  }
25
18
  export interface BuildLogListDraftInput {
26
19
  service: string;
27
20
  process: string;
28
21
  lane: LogPersistLane;
29
- idempotencyKey: string;
30
22
  entries: LogEntry[];
31
23
  }
32
24
  export type LogListDraft = TargetDraft<List>;
@@ -1 +1 @@
1
- {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../../src/shared/log/upload/interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,eAAe,CAAC;AAEnD,2FAA2F;AAC3F,eAAO,MAAM,oBAAoB,eAAyB,CAAC;AAE3D,0GAA0G;AAC1G,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAExD,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,sBAAsB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,cAAc,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../../src/shared/log/upload/interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD,yGAAyG;AACzG,eAAO,MAAM,oBAAoB,cAAc,CAAC;AAEhD,oEAAoE;AACpE,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAExD,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"media.query.d.ts","sourceRoot":"","sources":["../../../src/shared/media/media.query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,+EAA+E;AAC/E,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,WAAW,EAAE,CAO/F"}
1
+ {"version":3,"file":"media.query.d.ts","sourceRoot":"","sources":["../../../src/shared/media/media.query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,+EAA+E;AAC/E,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,WAAW,EAAE,CAE/F"}
@@ -1 +1 @@
1
- {"version":3,"file":"review.query.d.ts","sourceRoot":"","sources":["../../../src/shared/review/review.query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAIxD;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAOrE"}
1
+ {"version":3,"file":"review.query.d.ts","sourceRoot":"","sources":["../../../src/shared/review/review.query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAIxD;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAErE"}
@@ -8,7 +8,7 @@ export declare function getConfigFileDir(configFilePath: string): string;
8
8
  * - Absolute `pathInConfig` → returned as-is
9
9
  * - Relative `pathInConfig` → `resolve(dirname(configFilePath), pathInConfig)`
10
10
  *
11
- * **Not** relative to `process.cwd()`. See `.cursor/skills/config-file-relative-paths/SKILL.md`.
11
+ * **Not** relative to `process.cwd()`. See `.cursor/skills/task-local-discovery/SKILL.md`.
12
12
  */
13
13
  export declare function resolvePathFromConfigFile(configFilePath: string, pathInConfig: string): string;
14
14
  /**
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * PostgREST / Supabase JS client helpers for `target` table filters.
3
3
  *
4
- * @see `.cursor/skills/postgrest-query-filters/SKILL.md`
4
+ * @see `.cursor/skills/target-list-query/SKILL.md`
5
5
  */
6
6
  /**
7
7
  * Escape `%`, `_`, and `\` for PostgREST `ilike` patterns.
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Task domain public API — curated re-exports only.
3
- * Internal modules (local-task-registry, task-repo-context, task.utils) stay private.
3
+ * Internal modules (local-task-registry, task-repo-context) stay private.
4
4
  */
5
5
  export type { PatchChangeTaskStatusPayload, PatchClaimTaskPayload, PatchTaskProgressPayload, } from "./task.api";
6
6
  export { patchChangeTaskStatus, patchChangeTaskStatusSchema, patchClaimTask, patchClaimTaskSchema, patchTaskProgress, patchTaskProgressSchema, } from "./task.api";
@@ -25,7 +25,7 @@ export interface BootstrapLocalTasksOptions {
25
25
  * ./tasks/my-task/index.mjs
26
26
  * ```
27
27
  *
28
- * `taskDir` / `entry` paths are relative to **their config file's directory** (see config-file-relative-paths skill).
28
+ * `taskDir` / `entry` paths are relative to **their config file's directory** (see task-local-discovery skill).
29
29
  *
30
30
  * Legacy fallback: `./task.config.js` at project root (`taskDir: "./tasks"`).
31
31
  */
@@ -103,7 +103,12 @@ export declare const patchTriggerFiredSchema: z.ZodObject<{
103
103
  expectedLastFireKey?: string | null | undefined;
104
104
  }>;
105
105
  export type PatchTriggerFiredPayload = z.infer<typeof patchTriggerFiredSchema>;
106
- /** List all ENABLED triggers (Phase 1: in-memory due check). */
106
+ /**
107
+ * List all ENABLED triggers. Due-check is in-memory on the caller:
108
+ * filter with `isTriggerDue`, then `patchTriggerFired` with `buildFireKey`
109
+ * (both from `trigger.utils`, exported on `/node`).
110
+ * Do not call this from TriggerNode (local interval runners only).
111
+ */
107
112
  export declare const scanEnabledTriggers: (payload: {
108
113
  traceId?: string | undefined;
109
114
  }) => SupabaseResponse<Trigger[]> | Promise<SupabaseResponse<Trigger[]>>;
@@ -1 +1 @@
1
- {"version":3,"file":"trigger.api.d.ts","sourceRoot":"","sources":["../../src/trigger/trigger.api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAoB,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE5E,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAEH,KAAK,OAAO,EAGZ,aAAa,EAChB,MAAM,qBAAqB,CAAC;AAoB7B,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQ5B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEnE,eAAO,MAAM,yBAAyB;;;;;;EAEpC,CAAC;AAEH,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAEnF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;EAKlC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAM/E,gEAAgE;AAChE,eAAO,MAAM,mBAAmB;;wEAwB9B,CAAC;AAEH,gDAAgD;AAChD,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;oEAgCtB,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;;;;oEAqC5B,CAAC"}
1
+ {"version":3,"file":"trigger.api.d.ts","sourceRoot":"","sources":["../../src/trigger/trigger.api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAoB,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE5E,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAEH,KAAK,OAAO,EAGZ,aAAa,EAChB,MAAM,qBAAqB,CAAC;AAoB7B,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQ5B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEnE,eAAO,MAAM,yBAAyB;;;;;;EAEpC,CAAC;AAEH,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAEnF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;EAKlC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAM/E;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB;;wEAwB9B,CAAC;AAEH,gDAAgD;AAChD,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;oEAgCtB,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;;;;oEAqC5B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "target-supabase-sdk",
3
- "version": "0.2.23",
3
+ "version": "0.2.25",
4
4
  "description": "Supabase client initializer and data access APIs",
5
5
  "license": "MIT",
6
6
  "author": "KyLoc20",
package/src/browser.ts CHANGED
@@ -204,6 +204,27 @@ export {
204
204
  isRetryableHttpStatus,
205
205
  requestHasBody,
206
206
  } from "./shared/http/fetch-retry";
207
+ export type {
208
+ BuildIdeaImageLinkDraftInput,
209
+ BuildIdeaLinkDraftInput,
210
+ IdeaCreateSchemaInput,
211
+ IdeaOriginal,
212
+ IdeaUpdateSchemaInput,
213
+ } from "./shared/idea";
214
+ export {
215
+ buildIdeaImageLinkDraft,
216
+ buildIdeaLinkDraft,
217
+ IDEA_IMAGE_LINK_NAME,
218
+ IDEA_IMAGE_TAG_RAW,
219
+ IDEA_IMAGE_TEMP_DIR,
220
+ IDEA_LINK_VALUE,
221
+ ideaCreateSchema,
222
+ ideaLinkValueFilters,
223
+ ideaUpdateSchema,
224
+ isIdeaImageLinkName,
225
+ normalizeStringList,
226
+ parseIdeaOriginal,
227
+ } from "./shared/idea";
207
228
  export type {
208
229
  CreateLoggerInput,
209
230
  DecodedLogBatch,
@@ -219,11 +240,11 @@ export {
219
240
  decodeLogBatchList,
220
241
  flattenLogBatch,
221
242
  flattenLogBatches,
243
+ formatLogSpoolBatchTimestamp,
222
244
  isLogBatchList,
223
245
  isLogEntry,
224
- LOG_BATCH_LOADER_KEY,
246
+ LOG_BATCH_LIST_VALUE,
225
247
  LOG_MIN_LEVEL_ENV_KEY,
226
- LOG_PERSIST_LOADER_KEY,
227
248
  LogLevel,
228
249
  logManager,
229
250
  logMinLevelFromEnv,
package/src/link/index.ts CHANGED
@@ -8,3 +8,5 @@ export type { LinkTargetDraftBuildInput } from "./link.build";
8
8
  export { buildLinkTargetDraft, LINK_MANIFEST_VERSION, linkTargetDraftBuildInputSchema } from "./link.build";
9
9
  export type { Link, LinkDetails } from "./link.interface";
10
10
  export { CategoryLink } from "./link.interface";
11
+ export type { LinkDedupFiltersInput } from "./link.query";
12
+ export { linkDedupFilters } from "./link.query";
@@ -0,0 +1,18 @@
1
+ import type { QueryFilter } from "../core.interface";
2
+ import { CategoryLink } from "./link.interface";
3
+
4
+ /** Dedup / lookup key: `category=link` + `value` + `name`. */
5
+ export type LinkDedupFiltersInput = {
6
+ value: string;
7
+ name: string;
8
+ };
9
+
10
+ /** Shared Link filters used by feed, media, and review query helpers. */
11
+ export function linkDedupFilters(input: LinkDedupFiltersInput): QueryFilter[] {
12
+ const name = input.name.trim();
13
+ return [
14
+ { field: "category", operator: "eq", value: CategoryLink.LINK },
15
+ { field: "value", operator: "eq", value: input.value },
16
+ { field: "name", operator: "eq", value: name },
17
+ ];
18
+ }
package/src/node.ts CHANGED
@@ -176,6 +176,13 @@ export {
176
176
  isFeedIngestSource,
177
177
  registerFeed,
178
178
  } from "./shared/feed/node";
179
+ export {
180
+ buildIdeaPasteRelativePath,
181
+ buildIdeaTempDownloadLocator,
182
+ hashIdeaPasteImage,
183
+ IDEA_TEMP_DOWNLOAD_PATH_SUFFIX,
184
+ parseIdeaTempDownloadLocator,
185
+ } from "./shared/idea/node";
179
186
  export { runCollectLogTick } from "./shared/log/spool/collector";
180
187
  export { LOG_SPOOL_SERVICE_ID_ENV } from "./shared/log/spool/config";
181
188
  export type { LogSpoolCoordinator, LogSpoolCoordinatorOptions } from "./shared/log/spool/coordinator";
@@ -289,5 +296,6 @@ export type {
289
296
  TriggerRunnerFn,
290
297
  } from "./trigger/trigger.interface";
291
298
  export * from "./trigger/trigger.interface";
299
+ export { buildDailyFireKey, buildFireKey, isDailyScheduleDue, isTriggerDue } from "./trigger/trigger.utils";
292
300
  export { TriggerManager } from "./trigger/trigger-manager";
293
301
  export { TriggerNode } from "./trigger/trigger-node";
@@ -159,6 +159,6 @@ Same variable as media register — see `src/shared/media/README.md`.
159
159
 
160
160
  ## Related
161
161
 
162
- - `.cursor/skills/feed-link/SKILL.md`
162
+ - `.cursor/skills/link-conventions/SKILL.md`
163
163
  - Media register pattern: `src/shared/media/README.md`
164
164
  - Optimistic lock: `.cursor/skills/optimistic-lock-update/SKILL.md`
@@ -1,13 +1,8 @@
1
1
  import type { QueryFilter } from "../../core.interface";
2
- import { CategoryLink } from "../../link/link.interface";
2
+ import { linkDedupFilters } from "../../link/link.query";
3
3
  import type { FeedValue } from "./feed.interface";
4
4
 
5
5
  /** Dedup key: `category=link` + `value` + `name` (matches register / find). */
6
6
  export function feedLinkDedupFilters(input: { value: FeedValue; name: string }): QueryFilter[] {
7
- const name = input.name.trim();
8
- return [
9
- { field: "category", operator: "eq", value: CategoryLink.LINK },
10
- { field: "value", operator: "eq", value: input.value },
11
- { field: "name", operator: "eq", value: name },
12
- ];
7
+ return linkDedupFilters(input);
13
8
  }