target-supabase-sdk 0.1.8 → 0.1.9

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 (144) hide show
  1. package/README.md +8 -6
  2. package/dist/auth/auth.api.d.ts.map +1 -1
  3. package/dist/auth/auth.api.js +2 -1
  4. package/dist/auth/auth.api.js.map +1 -1
  5. package/dist/command/command.api.d.ts +43 -0
  6. package/dist/command/command.api.d.ts.map +1 -0
  7. package/dist/command/command.api.js +58 -0
  8. package/dist/command/command.api.js.map +1 -0
  9. package/dist/command/command.interface.d.ts +14 -0
  10. package/dist/command/command.interface.d.ts.map +1 -0
  11. package/dist/command/command.interface.js +9 -0
  12. package/dist/command/command.interface.js.map +1 -0
  13. package/dist/core.api.d.ts +70 -6
  14. package/dist/core.api.d.ts.map +1 -1
  15. package/dist/core.api.js +191 -13
  16. package/dist/core.api.js.map +1 -1
  17. package/dist/file/file-manager.d.ts +1 -1
  18. package/dist/file/file-manager.d.ts.map +1 -1
  19. package/dist/file/file-manager.js +1 -1
  20. package/dist/file/file-manager.js.map +1 -1
  21. package/dist/index.d.ts +9 -1
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +8 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/node/node-manager.d.ts +48 -0
  26. package/dist/node/node-manager.d.ts.map +1 -0
  27. package/dist/node/node-manager.js +619 -0
  28. package/dist/node/node-manager.js.map +1 -0
  29. package/dist/node/node-task.preset.d.ts +1 -0
  30. package/dist/node/node-task.preset.d.ts.map +1 -0
  31. package/dist/node/node-task.preset.js +14 -0
  32. package/dist/node/node-task.preset.js.map +1 -0
  33. package/dist/node/node.api.d.ts +67 -31
  34. package/dist/node/node.api.d.ts.map +1 -1
  35. package/dist/node/node.api.js +65 -102
  36. package/dist/node/node.api.js.map +1 -1
  37. package/dist/node/node.interface.d.ts +7 -0
  38. package/dist/node/node.interface.d.ts.map +1 -1
  39. package/dist/node/node.interface.js +2 -0
  40. package/dist/node/node.interface.js.map +1 -1
  41. package/dist/node/node.utils.d.ts +5 -0
  42. package/dist/node/node.utils.d.ts.map +1 -0
  43. package/dist/node/node.utils.js +36 -0
  44. package/dist/node/node.utils.js.map +1 -0
  45. package/dist/parcel/parcel-manager.d.ts +1 -1
  46. package/dist/parcel/parcel-manager.d.ts.map +1 -1
  47. package/dist/parcel/parcel-manager.js +1 -1
  48. package/dist/parcel/parcel-manager.js.map +1 -1
  49. package/dist/repo/repo-context.utils.d.ts +24 -0
  50. package/dist/repo/repo-context.utils.d.ts.map +1 -0
  51. package/dist/repo/repo-context.utils.js +81 -0
  52. package/dist/repo/repo-context.utils.js.map +1 -0
  53. package/dist/repo/repo-manager.d.ts +31 -0
  54. package/dist/repo/repo-manager.d.ts.map +1 -0
  55. package/dist/repo/repo-manager.js +156 -0
  56. package/dist/repo/repo-manager.js.map +1 -0
  57. package/dist/repo/repo.api.d.ts +16 -0
  58. package/dist/repo/repo.api.d.ts.map +1 -0
  59. package/dist/repo/repo.api.js +40 -0
  60. package/dist/repo/repo.api.js.map +1 -0
  61. package/dist/repo/repo.interface.d.ts +12 -5
  62. package/dist/repo/repo.interface.d.ts.map +1 -1
  63. package/dist/repo/repo.interface.js +2 -2
  64. package/dist/repo/repo.interface.js.map +1 -1
  65. package/dist/repo/repo.script-loader.d.ts +19 -0
  66. package/dist/repo/repo.script-loader.d.ts.map +1 -0
  67. package/dist/repo/repo.script-loader.js +108 -0
  68. package/dist/repo/repo.script-loader.js.map +1 -0
  69. package/dist/shared/log/create-api-logger.d.ts +17 -0
  70. package/dist/shared/log/create-api-logger.d.ts.map +1 -0
  71. package/dist/shared/log/create-api-logger.js +15 -0
  72. package/dist/shared/log/create-api-logger.js.map +1 -0
  73. package/dist/shared/log/log-manager.d.ts +114 -0
  74. package/dist/shared/log/log-manager.d.ts.map +1 -0
  75. package/dist/shared/log/log-manager.js +218 -0
  76. package/dist/shared/log/log-manager.js.map +1 -0
  77. package/dist/shared/utils/config-path.utils.d.ts +38 -0
  78. package/dist/shared/utils/config-path.utils.d.ts.map +1 -0
  79. package/dist/shared/utils/config-path.utils.js +85 -0
  80. package/dist/shared/utils/config-path.utils.js.map +1 -0
  81. package/dist/shared/utils/error.utils.d.ts +11 -0
  82. package/dist/shared/utils/error.utils.d.ts.map +1 -0
  83. package/dist/shared/utils/error.utils.js +15 -0
  84. package/dist/shared/utils/error.utils.js.map +1 -0
  85. package/dist/shared/utils/id.utils.d.ts +3 -0
  86. package/dist/shared/utils/id.utils.d.ts.map +1 -0
  87. package/dist/shared/utils/id.utils.js +5 -0
  88. package/dist/shared/utils/id.utils.js.map +1 -0
  89. package/dist/supabase.js +1 -1
  90. package/dist/supabase.js.map +1 -1
  91. package/dist/task/local-task-registry.d.ts +27 -0
  92. package/dist/task/local-task-registry.d.ts.map +1 -0
  93. package/dist/task/local-task-registry.js +153 -0
  94. package/dist/task/local-task-registry.js.map +1 -0
  95. package/dist/task/task-manager.d.ts +52 -0
  96. package/dist/task/task-manager.d.ts.map +1 -0
  97. package/dist/task/task-manager.js +217 -0
  98. package/dist/task/task-manager.js.map +1 -0
  99. package/dist/task/task-repo-context.d.ts +95 -0
  100. package/dist/task/task-repo-context.d.ts.map +1 -0
  101. package/dist/task/task-repo-context.js +12 -0
  102. package/dist/task/task-repo-context.js.map +1 -0
  103. package/dist/task/task.api.d.ts +240 -0
  104. package/dist/task/task.api.d.ts.map +1 -1
  105. package/dist/task/task.api.js +350 -1
  106. package/dist/task/task.api.js.map +1 -1
  107. package/dist/task/task.interface.d.ts +9 -2
  108. package/dist/task/task.interface.d.ts.map +1 -1
  109. package/dist/task/task.interface.js +10 -0
  110. package/dist/task/task.interface.js.map +1 -1
  111. package/package.json +10 -3
  112. package/src/auth/auth.api.ts +3 -1
  113. package/src/command/command.api.ts +88 -0
  114. package/src/command/command.interface.ts +17 -0
  115. package/src/core.api.ts +305 -26
  116. package/src/file/file-manager.ts +1 -1
  117. package/src/index.ts +18 -3
  118. package/src/node/node-manager.ts +673 -0
  119. package/src/node/node-task.preset.ts +13 -0
  120. package/src/node/node.api.ts +95 -117
  121. package/src/node/node.interface.ts +8 -0
  122. package/src/node/node.utils.ts +36 -0
  123. package/src/parcel/parcel-manager.ts +1 -1
  124. package/src/repo/repo-context.utils.ts +111 -0
  125. package/src/repo/repo-manager.ts +217 -0
  126. package/src/repo/repo.api.ts +50 -0
  127. package/src/repo/repo.interface.ts +13 -5
  128. package/src/repo/repo.script-loader.ts +140 -0
  129. package/src/shared/log/create-api-logger.ts +25 -0
  130. package/src/shared/log/log-manager.ts +340 -0
  131. package/src/shared/utils/config-path.utils.ts +104 -0
  132. package/src/shared/utils/error.utils.ts +15 -0
  133. package/src/shared/utils/id.utils.ts +4 -0
  134. package/src/supabase.ts +1 -1
  135. package/src/task/local-task-registry.ts +195 -0
  136. package/src/task/task-manager.ts +312 -0
  137. package/src/task/task-repo-context.ts +103 -0
  138. package/src/task/task.api.ts +429 -0
  139. package/src/task/task.interface.ts +10 -2
  140. package/dist/task/task-node-manager.d.ts +0 -1
  141. package/dist/task/task-node-manager.d.ts.map +0 -1
  142. package/dist/task/task-node-manager.js +0 -2
  143. package/dist/task/task-node-manager.js.map +0 -1
  144. package/src/task/task-node-manager.ts +0 -0
@@ -1,32 +1,68 @@
1
- import { Task } from "../task/task.interface";
2
- import { BaseValidator } from "../core.utils";
3
- import { Node } from "./node.interface";
4
- export interface PostRegisterNodePayload {
5
- }
6
- export declare class PostListValidator extends BaseValidator<PostRegisterNodePayload> {
7
- protected requiredFields: (keyof PostRegisterNodePayload)[];
8
- protected optionalFields: (keyof PostRegisterNodePayload)[];
9
- constructor();
10
- }
11
- export declare const postRegisterNode: (payload: PostRegisterNodePayload) => Promise<import("..").SupabaseResponse<Node>>;
12
- export declare const patchNodeHeartBeat: ({ nodeId }: {
13
- nodeId: string;
14
- }) => Promise<import("..").SupabaseResponse<number>>;
15
- export declare const patchStopNode: ({ nodeId }: {
16
- nodeId: string;
17
- }) => Promise<import("..").SupabaseResponse<number>>;
18
- export interface PatchClaimTaskPayload {
19
- nodeId: string;
20
- availableTaskList: string[];
21
- }
22
- /**
23
- * Atomically claim one TODO task for this node.
24
- *
25
- * Flow: find a candidate (TODO + value in availableTaskList) → UPDATE with optimistic lock
26
- * (status must still be TODO) → return the updated Task row for the executor to run.
27
- *
28
- * Returns `data: null` when no TODO task matches. On optimistic lock conflict,
29
- * `updateTargetDetails` throws — callers may catch `isOptimisticLockError` to retry.
30
- */
31
- export declare const patchClaimTask: ({ nodeId, availableTaskList, }: PatchClaimTaskPayload) => Promise<import("..").SupabaseResponse<null> | import("..").SupabaseResponse<Task>>;
1
+ import { z } from "zod";
2
+ import { Node, NodeStatus } from "./node.interface";
3
+ export declare const postRegisterNodeSchema: z.ZodObject<{
4
+ traceId: z.ZodOptional<z.ZodString>;
5
+ }, "strip", z.ZodTypeAny, {
6
+ traceId?: string | undefined;
7
+ }, {
8
+ traceId?: string | undefined;
9
+ }>;
10
+ export type PostRegisterNodePayload = z.infer<typeof postRegisterNodeSchema>;
11
+ export declare const patchNodeHeartBeatSchema: z.ZodObject<{
12
+ nodeId: z.ZodString;
13
+ traceId: z.ZodOptional<z.ZodString>;
14
+ }, "strip", z.ZodTypeAny, {
15
+ nodeId: string;
16
+ traceId?: string | undefined;
17
+ }, {
18
+ nodeId: string;
19
+ traceId?: string | undefined;
20
+ }>;
21
+ export type PatchNodeHeartBeatPayload = z.infer<typeof patchNodeHeartBeatSchema>;
22
+ export declare const patchStopNodeSchema: z.ZodObject<{
23
+ nodeId: z.ZodString;
24
+ traceId: z.ZodOptional<z.ZodString>;
25
+ }, "strip", z.ZodTypeAny, {
26
+ nodeId: string;
27
+ traceId?: string | undefined;
28
+ }, {
29
+ nodeId: string;
30
+ traceId?: string | undefined;
31
+ }>;
32
+ export type PatchStopNodePayload = z.infer<typeof patchStopNodeSchema>;
33
+ export declare const patchChangeNodeStatusSchema: z.ZodObject<{
34
+ nodeId: z.ZodString;
35
+ status: z.ZodNativeEnum<typeof NodeStatus>;
36
+ /** When set, UPDATE only if current status matches (optimistic lock). */
37
+ fromStatus: z.ZodOptional<z.ZodNativeEnum<typeof NodeStatus>>;
38
+ traceId: z.ZodOptional<z.ZodString>;
39
+ }, "strip", z.ZodTypeAny, {
40
+ nodeId: string;
41
+ status: NodeStatus;
42
+ traceId?: string | undefined;
43
+ fromStatus?: NodeStatus | undefined;
44
+ }, {
45
+ nodeId: string;
46
+ status: NodeStatus;
47
+ traceId?: string | undefined;
48
+ fromStatus?: NodeStatus | undefined;
49
+ }>;
50
+ export type PatchChangeNodeStatusPayload = z.infer<typeof patchChangeNodeStatusSchema>;
51
+ export declare const postRegisterNode: (payload: {
52
+ traceId?: string | undefined;
53
+ }) => import("..").SupabaseResponse<Node> | Promise<import("..").SupabaseResponse<Node>>;
54
+ export declare const patchNodeHeartBeat: (payload: {
55
+ nodeId: string;
56
+ traceId?: string | undefined;
57
+ }) => import("..").SupabaseResponse<number> | Promise<import("..").SupabaseResponse<number>>;
58
+ export declare const patchStopNode: (payload: {
59
+ nodeId: string;
60
+ traceId?: string | undefined;
61
+ }) => import("..").SupabaseResponse<number> | Promise<import("..").SupabaseResponse<number>>;
62
+ export declare const patchChangeNodeStatus: (payload: {
63
+ nodeId: string;
64
+ status: NodeStatus;
65
+ traceId?: string | undefined;
66
+ fromStatus?: NodeStatus | undefined;
67
+ }) => import("..").SupabaseResponse<Node> | Promise<import("..").SupabaseResponse<Node>>;
32
68
  //# sourceMappingURL=node.api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"node.api.d.ts","sourceRoot":"","sources":["../../src/node/node.api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,IAAI,EAA2B,MAAM,wBAAwB,CAAC;AAGrF,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAgB,IAAI,EAA2B,MAAM,kBAAkB,CAAC;AAE/E,MAAM,WAAW,uBAAuB;CACvC;AAED,qBAAa,iBAAkB,SAAQ,aAAa,CAAC,uBAAuB,CAAC;IACzE,SAAS,CAAC,cAAc,EAAE,CAAC,MAAM,uBAAuB,CAAC,EAAE,CAAM;IACjE,SAAS,CAAC,cAAc,EAAE,CAAC,MAAM,uBAAuB,CAAC,EAAE,CAAM;;CASpE;AAID,eAAO,MAAM,gBAAgB,YAAmB,uBAAuB,iDAmBtE,CAAC;AAEF,eAAO,MAAM,kBAAkB,eAAsB;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,mDAYtE,CAAC;AAEF,eAAO,MAAM,aAAa,eAAsB;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,mDAcjE,CAAC;AAEF,MAAM,WAAW,qBAAqB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,mCAGxB,qBAAqB,uFAoEvB,CAAC"}
1
+ {"version":3,"file":"node.api.d.ts","sourceRoot":"","sources":["../../src/node/node.api.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAgB,IAAI,EAAe,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAS/E,eAAO,MAAM,sBAAsB;;;;;;EAEjC,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAE7E,eAAO,MAAM,wBAAwB;;;;;;;;;EAGnC,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAEjF,eAAO,MAAM,mBAAmB;;;;;;;;;EAG9B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEvE,eAAO,MAAM,2BAA2B;;;IAGpC,yEAAyE;;;;;;;;;;;;;EAG3E,CAAC;AAEH,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAUvF,eAAO,MAAM,gBAAgB;;wFAqB3B,CAAC;AAIH,eAAO,MAAM,kBAAkB;;;4FAa7B,CAAC;AAIH,eAAO,MAAM,aAAa;;;4FAexB,CAAC;AAIH,eAAO,MAAM,qBAAqB;;;;;wFA0BhC,CAAC"}
@@ -1,137 +1,100 @@
1
- import { CategoryTask, TaskStatus } from "../task/task.interface";
2
- import { createTarget, getPossibleTarget, updateTargetDetails } from "../core.api";
1
+ import { createTarget, updateTargetDetails, validateWithSchema } from "../core.api";
3
2
  import { generateResponse } from "../core.interface";
4
- import { BaseValidator } from "../core.utils";
3
+ import { createApiLogger } from "../shared/log/log-manager";
4
+ import { z } from "zod";
5
5
  import { CategoryNode, NodeStatus } from "./node.interface";
6
- export class PostListValidator extends BaseValidator {
7
- requiredFields = [];
8
- optionalFields = [];
9
- constructor() {
10
- super();
11
- // Add custom
12
- this.addCustomValidator((val) => {
13
- return true;
14
- });
15
- }
6
+ const NODE_STATUS_FIELD = "details->>status";
7
+ const nodeIdSchema = z.string().trim().min(1);
8
+ const traceIdSchema = z.string().trim().min(1).optional();
9
+ // ─── Zod schemas ─────────────────────────────────────────────────────────────
10
+ export const postRegisterNodeSchema = z.object({
11
+ traceId: traceIdSchema,
12
+ });
13
+ export const patchNodeHeartBeatSchema = z.object({
14
+ nodeId: nodeIdSchema,
15
+ traceId: traceIdSchema,
16
+ });
17
+ export const patchStopNodeSchema = z.object({
18
+ nodeId: nodeIdSchema,
19
+ traceId: traceIdSchema,
20
+ });
21
+ export const patchChangeNodeStatusSchema = z.object({
22
+ nodeId: nodeIdSchema,
23
+ status: z.nativeEnum(NodeStatus),
24
+ /** When set, UPDATE only if current status matches (optimistic lock). */
25
+ fromStatus: z.nativeEnum(NodeStatus).optional(),
26
+ traceId: traceIdSchema,
27
+ });
28
+ // ─── Optimistic lock helpers ─────────────────────────────────────────────────
29
+ function lockOnNodeStatus(status) {
30
+ return [{ field: NODE_STATUS_FIELD, operator: "eq", value: status }];
16
31
  }
17
- export const postRegisterNode = async (payload) => {
32
+ // ─── postRegisterNode ────────────────────────────────────────────────────────
33
+ export const postRegisterNode = validateWithSchema(postRegisterNodeSchema, "postRegisterNodeSchema")(async (payload) => {
18
34
  return createTarget({
19
- payload: payload,
20
- validator: PostListValidator,
21
- createFn: (validPayload) => {
35
+ payload,
36
+ createFn: () => {
22
37
  const details = {
23
38
  manifestVersion: 0,
24
39
  status: NodeStatus.READY,
25
40
  lastHeartBeat: Date.now(),
26
41
  };
27
42
  return {
28
- name: '',
43
+ name: "",
29
44
  category: CategoryNode.NODE,
30
- value: '',
45
+ value: "",
31
46
  tagList: [],
32
47
  details,
33
48
  };
34
49
  },
35
50
  });
36
- };
37
- export const patchNodeHeartBeat = async ({ nodeId }) => {
51
+ });
52
+ // ─── patchNodeHeartBeat ──────────────────────────────────────────────────────
53
+ export const patchNodeHeartBeat = validateWithSchema(patchNodeHeartBeatSchema, "patchNodeHeartBeatSchema")(async ({ nodeId }) => {
38
54
  const lastHeartBeat = Date.now();
39
55
  await updateTargetDetails({
40
56
  id: nodeId,
41
- updateFn: (details) => {
42
- return {
43
- ...details,
44
- lastHeartBeat,
45
- };
46
- },
57
+ updateFn: (details) => ({
58
+ ...details,
59
+ lastHeartBeat,
60
+ }),
47
61
  });
48
62
  return generateResponse.success(lastHeartBeat);
49
- };
50
- export const patchStopNode = async ({ nodeId }) => {
63
+ });
64
+ // ─── patchStopNode ───────────────────────────────────────────────────────────
65
+ export const patchStopNode = validateWithSchema(patchStopNodeSchema, "patchStopNodeSchema")(async ({ nodeId }) => {
51
66
  const lastHeartBeat = Date.now();
52
67
  // TODO 等待任務全部完成才下綫 應該先使用NodeStatus.DRAINING
53
68
  await updateTargetDetails({
54
69
  id: nodeId,
55
- updateFn: (details) => {
56
- return {
57
- ...details,
58
- lastHeartBeat,
59
- status: NodeStatus.LOST,
60
- };
61
- },
70
+ updateFn: (details) => ({
71
+ ...details,
72
+ lastHeartBeat,
73
+ status: NodeStatus.LOST,
74
+ }),
62
75
  });
63
76
  return generateResponse.success(lastHeartBeat);
64
- };
65
- /**
66
- * Atomically claim one TODO task for this node.
67
- *
68
- * Flow: find a candidate (TODO + value in availableTaskList) → UPDATE with optimistic lock
69
- * (status must still be TODO) → return the updated Task row for the executor to run.
70
- *
71
- * Returns `data: null` when no TODO task matches. On optimistic lock conflict,
72
- * `updateTargetDetails` throws — callers may catch `isOptimisticLockError` to retry.
73
- */
74
- export const patchClaimTask = async ({ nodeId, availableTaskList, }) => {
75
- if (availableTaskList.length === 0) {
76
- console.log("[patchClaimTask] skipped: availableTaskList is empty", { nodeId });
77
- return generateResponse.success(null);
78
- }
79
- // Step 1: Pick one matching TODO task (not locked; another node may claim the same row next).
80
- const { data: possibleTask } = await getPossibleTarget({
81
- filterList: [
82
- {
83
- field: "category",
84
- operator: "eq",
85
- value: CategoryTask.TASK,
86
- },
87
- {
88
- field: "details->>status",
89
- operator: "eq",
90
- value: TaskStatus.TODO,
91
- },
92
- {
93
- field: "value",
94
- operator: "in",
95
- value: availableTaskList,
96
- },
97
- ],
98
- });
99
- if (possibleTask == null) {
100
- console.log("[patchClaimTask] no TODO task for node capabilities", {
101
- nodeId,
102
- availableTaskList,
103
- });
104
- return generateResponse.success(null);
105
- }
106
- const todoTask = possibleTask;
107
- console.log("[patchClaimTask] attempting claim", {
108
- nodeId,
109
- taskId: todoTask.id,
110
- taskValue: todoTask.value,
111
- });
112
- // Step 2: Claim with DB optimistic lock — UPDATE only if status is still TODO.
77
+ });
78
+ // ─── patchChangeNodeStatus ───────────────────────────────────────────────────
79
+ export const patchChangeNodeStatus = validateWithSchema(patchChangeNodeStatusSchema, "patchChangeNodeStatusSchema")(async ({ nodeId, status, fromStatus, traceId }) => {
80
+ const logger = createApiLogger("patchChangeNodeStatus", { traceId, nodeId });
113
81
  const data = await updateTargetDetails({
114
- id: todoTask.id,
115
- optimisticLockFilterList: [
116
- {
117
- field: "details->>status",
118
- operator: "eq",
119
- value: TaskStatus.TODO,
120
- },
121
- ],
82
+ id: nodeId,
83
+ optimisticLockFilterList: fromStatus != null ? lockOnNodeStatus(fromStatus) : [],
122
84
  updateFn: (details) => ({
123
85
  ...details,
124
- status: TaskStatus.DOING,
125
- nodeId,
86
+ status,
87
+ lastHeartBeat: Date.now(),
126
88
  }),
127
89
  });
128
- console.log("[patchClaimTask] claim succeeded", {
129
- nodeId,
130
- taskId: data.id,
131
- taskValue: data.value,
132
- status: data.details.status,
90
+ logger.info("节点状态更新成功", {
91
+ topic: "node",
92
+ context: {
93
+ nodeId,
94
+ status,
95
+ fromStatus,
96
+ },
133
97
  });
134
- // Return full updated row so executor can read repo/params without another fetch.
135
98
  return generateResponse.success(data);
136
- };
99
+ });
137
100
  //# sourceMappingURL=node.api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"node.api.js","sourceRoot":"","sources":["../../src/node/node.api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAqB,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAqB,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAK/E,MAAM,OAAO,iBAAkB,SAAQ,aAAsC;IAC/D,cAAc,GAAsC,EAAE,CAAC;IACvD,cAAc,GAAsC,EAAE,CAAC;IAEjE;QACI,KAAK,EAAE,CAAC;QACR,aAAa;QACb,IAAI,CAAC,kBAAkB,CAAC,CAAC,GAAG,EAAE,EAAE;YAC5B,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAID,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,OAAgC,EAAE,EAAE;IACvE,OAAO,YAAY,CAAgC;QAC/C,OAAO,EAAE,OAAO;QAChB,SAAS,EAAE,iBAAiB;QAC5B,QAAQ,EAAE,CAAC,YAAY,EAAE,EAAE;YACvB,MAAM,OAAO,GAAgB;gBACzB,eAAe,EAAE,CAAC;gBAClB,MAAM,EAAE,UAAU,CAAC,KAAK;gBACxB,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE;aAC5B,CAAC;YACF,OAAO;gBACH,IAAI,EAAE,EAAE;gBACR,QAAQ,EAAE,YAAY,CAAC,IAAI;gBAC3B,KAAK,EAAE,EAAE;gBACT,OAAO,EAAE,EAAE;gBACX,OAAO;aACV,CAAC;QACN,CAAC;KACJ,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EAAE,EAAE,MAAM,EAAsB,EAAE,EAAE;IACvE,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACjC,MAAM,mBAAmB,CAAoB;QACzC,EAAE,EAAE,MAAM;QACV,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE;YAClB,OAAO;gBACH,GAAG,OAAO;gBACV,aAAa;aAChB,CAAC;QACN,CAAC;KACJ,CAAC,CAAC;IACH,OAAO,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,EAAE,MAAM,EAAsB,EAAE,EAAE;IAClE,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACjC,4CAA4C;IAC5C,MAAM,mBAAmB,CAAoB;QACzC,EAAE,EAAE,MAAM;QACV,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE;YAClB,OAAO;gBACH,GAAG,OAAO;gBACV,aAAa;gBACb,MAAM,EAAE,UAAU,CAAC,IAAI;aAC1B,CAAC;QACN,CAAC;KACJ,CAAC,CAAC;IACH,OAAO,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AACnD,CAAC,CAAC;AAOF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,EACjC,MAAM,EACN,iBAAiB,GACG,EAAE,EAAE;IACxB,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,sDAAsD,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAChF,OAAO,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,8FAA8F;IAC9F,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,MAAM,iBAAiB,CAAC;QACnD,UAAU,EAAE;YACR;gBACI,KAAK,EAAE,UAAU;gBACjB,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,YAAY,CAAC,IAAI;aAC3B;YACD;gBACI,KAAK,EAAE,kBAAkB;gBACzB,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,UAAU,CAAC,IAAI;aACzB;YACD;gBACI,KAAK,EAAE,OAAO;gBACd,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,iBAAiB;aAC3B;SACJ;KACJ,CAAC,CAAC;IAEH,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,qDAAqD,EAAE;YAC/D,MAAM;YACN,iBAAiB;SACpB,CAAC,CAAC;QACH,OAAO,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,QAAQ,GAAG,YAAoB,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAAE;QAC7C,MAAM;QACN,MAAM,EAAE,QAAQ,CAAC,EAAE;QACnB,SAAS,EAAE,QAAQ,CAAC,KAAK;KAC5B,CAAC,CAAC;IAEH,+EAA+E;IAC/E,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAoB;QACtD,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,wBAAwB,EAAE;YACtB;gBACI,KAAK,EAAE,kBAAkB;gBACzB,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,UAAU,CAAC,IAAI;aACzB;SACJ;QACD,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACpB,GAAG,OAAO;YACV,MAAM,EAAE,UAAU,CAAC,KAAK;YACxB,MAAM;SACT,CAAC;KACL,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE;QAC5C,MAAM;QACN,MAAM,EAAE,IAAI,CAAC,EAAE;QACf,SAAS,EAAE,IAAI,CAAC,KAAK;QACrB,MAAM,EAAG,IAAa,CAAC,OAAO,CAAC,MAAM;KACxC,CAAC,CAAC;IAEH,kFAAkF;IAClF,OAAO,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC,CAAC"}
1
+ {"version":3,"file":"node.api.js","sourceRoot":"","sources":["../../src/node/node.api.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import { Target } from "../core.interface";
2
2
  export declare enum NodeStatus {
3
+ /** Registered, not yet in worker loop. */
3
4
  READY = "READY",
5
+ /** Worker main loop is running (accepts tasks until shutdown). */
4
6
  BUSY = "BUSY",
5
7
  /** Heartbeat lost or voluntarily offline; considered unavailable by the scheduler. */
6
8
  LOST = "LOST",
@@ -25,4 +27,9 @@ export interface NodeDetails {
25
27
  status: NodeStatus;
26
28
  lastHeartBeat: number;
27
29
  }
30
+ /** 主循环单轮运行时上下文 — 由 start() 创建并向下传递 */
31
+ export interface NodeLoopContext {
32
+ loopTraceId: string;
33
+ nodeId: string;
34
+ }
28
35
  //# sourceMappingURL=node.interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"node.interface.d.ts","sourceRoot":"","sources":["../../src/node/node.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,oBAAY,UAAU;IAClB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,sFAAsF;IACtF,IAAI,SAAS;IACb,kGAAkG;IAClG,QAAQ,aAAa;IACrB,mEAAmE;IACnE,QAAQ,aAAa;CACxB;AAED,oBAAY,YAAY;IACpB,IAAI,SAAS;CAChB;AAED,MAAM,WAAW,IAAK,SAAQ,MAAM;IAChC,YAAY;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,YAAY;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,WAAW,CAAC;IACrB,QAAQ,EAAE,YAAY,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,UAAU,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACzB"}
1
+ {"version":3,"file":"node.interface.d.ts","sourceRoot":"","sources":["../../src/node/node.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,oBAAY,UAAU;IAClB,0CAA0C;IAC1C,KAAK,UAAU;IACf,kEAAkE;IAClE,IAAI,SAAS;IACb,sFAAsF;IACtF,IAAI,SAAS;IACb,kGAAkG;IAClG,QAAQ,aAAa;IACrB,mEAAmE;IACnE,QAAQ,aAAa;CACxB;AAED,oBAAY,YAAY;IACpB,IAAI,SAAS;CAChB;AAED,MAAM,WAAW,IAAK,SAAQ,MAAM;IAChC,YAAY;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,YAAY;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,WAAW,CAAC;IACrB,QAAQ,EAAE,YAAY,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,UAAU,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACzB;AAED,sCAAsC;AACtC,MAAM,WAAW,eAAe;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAClB"}
@@ -1,6 +1,8 @@
1
1
  export var NodeStatus;
2
2
  (function (NodeStatus) {
3
+ /** Registered, not yet in worker loop. */
3
4
  NodeStatus["READY"] = "READY";
5
+ /** Worker main loop is running (accepts tasks until shutdown). */
4
6
  NodeStatus["BUSY"] = "BUSY";
5
7
  /** Heartbeat lost or voluntarily offline; considered unavailable by the scheduler. */
6
8
  NodeStatus["LOST"] = "LOST";
@@ -1 +1 @@
1
- {"version":3,"file":"node.interface.js","sourceRoot":"","sources":["../../src/node/node.interface.ts"],"names":[],"mappings":"AAEA,MAAM,CAAN,IAAY,UASX;AATD,WAAY,UAAU;IAClB,6BAAe,CAAA;IACf,2BAAa,CAAA;IACb,sFAAsF;IACtF,2BAAa,CAAA;IACb,kGAAkG;IAClG,mCAAqB,CAAA;IACrB,mEAAmE;IACnE,mCAAqB,CAAA;AACzB,CAAC,EATW,UAAU,KAAV,UAAU,QASrB;AAED,MAAM,CAAN,IAAY,YAEX;AAFD,WAAY,YAAY;IACpB,6BAAa,CAAA;AACjB,CAAC,EAFW,YAAY,KAAZ,YAAY,QAEvB;AAeA,CAAC"}
1
+ {"version":3,"file":"node.interface.js","sourceRoot":"","sources":["../../src/node/node.interface.ts"],"names":[],"mappings":"AAEA,MAAM,CAAN,IAAY,UAWX;AAXD,WAAY,UAAU;IAClB,0CAA0C;IAC1C,6BAAe,CAAA;IACf,kEAAkE;IAClE,2BAAa,CAAA;IACb,sFAAsF;IACtF,2BAAa,CAAA;IACb,kGAAkG;IAClG,mCAAqB,CAAA;IACrB,mEAAmE;IACnE,mCAAqB,CAAA;AACzB,CAAC,EAXW,UAAU,KAAV,UAAU,QAWrB;AAED,MAAM,CAAN,IAAY,YAEX;AAFD,WAAY,YAAY;IACpB,6BAAa,CAAA;AACjB,CAAC,EAFW,YAAY,KAAZ,YAAY,QAEvB;AAeA,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const formatTimestamp: (timestamp: number) => string;
2
+ export declare const formatRelativeTime: (timestamp: number) => string;
3
+ export declare const getRandomInterval: () => number;
4
+ export declare const formatHeartbeat: (timestamp: number) => string;
5
+ //# sourceMappingURL=node.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.utils.d.ts","sourceRoot":"","sources":["../../src/node/node.utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,cAAe,MAAM,KAAG,MAWnD,CAAC;AAEF,eAAO,MAAM,kBAAkB,cAAe,MAAM,KAAG,MAUtD,CAAC;AAEF,eAAO,MAAM,iBAAiB,QAAO,MAIpC,CAAC;AAEF,eAAO,MAAM,eAAe,cAAe,MAAM,KAAG,MAInD,CAAC"}
@@ -0,0 +1,36 @@
1
+ export const formatTimestamp = (timestamp) => {
2
+ return new Intl.DateTimeFormat("zh-CN", {
3
+ year: "numeric",
4
+ month: "2-digit",
5
+ day: "2-digit",
6
+ hour: "2-digit",
7
+ minute: "2-digit",
8
+ second: "2-digit",
9
+ hour12: false,
10
+ fractionalSecondDigits: 3,
11
+ }).format(timestamp);
12
+ };
13
+ export const formatRelativeTime = (timestamp) => {
14
+ const now = Date.now();
15
+ const diff = now - timestamp;
16
+ if (diff < 1000)
17
+ return "刚刚";
18
+ if (diff < 60000)
19
+ return `${Math.floor(diff / 1000)}秒前`;
20
+ if (diff < 3600000)
21
+ return `${Math.floor(diff / 60000)}分钟前`;
22
+ if (diff < 86400000)
23
+ return `${Math.floor(diff / 3600000)}小时前`;
24
+ return formatTimestamp(timestamp);
25
+ };
26
+ export const getRandomInterval = () => {
27
+ const min = 15 * 1000;
28
+ const max = 1 * 60 * 1000;
29
+ return Math.floor(Math.random() * (max - min + 1)) + min;
30
+ };
31
+ export const formatHeartbeat = (timestamp) => {
32
+ const absolute = formatTimestamp(timestamp);
33
+ const relative = formatRelativeTime(timestamp);
34
+ return `${absolute} (${relative})`;
35
+ };
36
+ //# sourceMappingURL=node.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.utils.js","sourceRoot":"","sources":["../../src/node/node.utils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,SAAiB,EAAU,EAAE;IACzD,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;QACpC,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,KAAK;QACb,sBAAsB,EAAE,CAAC;KAC5B,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,SAAiB,EAAU,EAAE;IAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,GAAG,GAAG,SAAS,CAAC;IAE7B,IAAI,IAAI,GAAG,IAAI;QAAE,OAAO,IAAI,CAAC;IAC7B,IAAI,IAAI,GAAG,KAAK;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACxD,IAAI,IAAI,GAAG,OAAO;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;IAC5D,IAAI,IAAI,GAAG,QAAQ;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;IAE/D,OAAO,eAAe,CAAC,SAAS,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAW,EAAE;IAC1C,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC;IACtB,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;IAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC7D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,SAAiB,EAAU,EAAE;IACzD,MAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC/C,OAAO,GAAG,QAAQ,KAAK,QAAQ,GAAG,CAAC;AACvC,CAAC,CAAC"}
@@ -35,5 +35,5 @@ declare const ParcelManager: {
35
35
  save: typeof save;
36
36
  reassembly: typeof reassembly;
37
37
  };
38
- export default ParcelManager;
38
+ export { ParcelManager };
39
39
  //# sourceMappingURL=parcel-manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parcel-manager.d.ts","sourceRoot":"","sources":["../../src/parcel/parcel-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAS,MAAM,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAUvE,uBAAuB;AACvB,MAAM,WAAW,cAAc;IAC7B,wBAAwB;IACxB,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxE;AAED,UAAU,aAAa;IACrB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,GAAG,CAAC,EAAE,SAAS,CAAC;CACjB;AAED,UAAU,YAAY;IACpB,gCAAgC;IAChC,OAAO,EAAE,aAAa,CAAC;IACvB,8BAA8B;IAC9B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,GAAG,CAAC,EAAE,SAAS,CAAC;CACjB;AAED,uCAAuC;AACvC,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,YAAY,CAAC,CAAC;AAoC7G,wBAAwB;AACxB,iBAAe,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAgD3F;AAED,6BAA6B;AAC7B,iBAAe,IAAI,CACjB,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,cAAc,EAAE,EAC7B,UAAU,EAAE,gBAAgB,GAC3B,OAAO,CAAC,MAAM,CAAC,CAuBjB;AAED,sCAAsC;AACtC,iBAAe,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CA+C9E;AAED,QAAA,MAAM,aAAa;;;;CAIlB,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"parcel-manager.d.ts","sourceRoot":"","sources":["../../src/parcel/parcel-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAS,MAAM,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAUvE,uBAAuB;AACvB,MAAM,WAAW,cAAc;IAC7B,wBAAwB;IACxB,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxE;AAED,UAAU,aAAa;IACrB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,GAAG,CAAC,EAAE,SAAS,CAAC;CACjB;AAED,UAAU,YAAY;IACpB,gCAAgC;IAChC,OAAO,EAAE,aAAa,CAAC;IACvB,8BAA8B;IAC9B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,GAAG,CAAC,EAAE,SAAS,CAAC;CACjB;AAED,uCAAuC;AACvC,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,YAAY,CAAC,CAAC;AAoC7G,wBAAwB;AACxB,iBAAe,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAgD3F;AAED,6BAA6B;AAC7B,iBAAe,IAAI,CACjB,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,cAAc,EAAE,EAC7B,UAAU,EAAE,gBAAgB,GAC3B,OAAO,CAAC,MAAM,CAAC,CAuBjB;AAED,sCAAsC;AACtC,iBAAe,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CA+C9E;AAED,QAAA,MAAM,aAAa;;;;CAIlB,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -152,5 +152,5 @@ const ParcelManager = {
152
152
  save,
153
153
  reassembly,
154
154
  };
155
- export default ParcelManager;
155
+ export { ParcelManager };
156
156
  //# sourceMappingURL=parcel-manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parcel-manager.js","sourceRoot":"","sources":["../../src/parcel/parcel-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parcel-manager.js","sourceRoot":"","sources":["../../src/parcel/parcel-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { TASK_REPO_SCRIPT_CATEGORY, type TaskRepoContext, type TaskRepoScriptDetails, type TaskRepoScriptRecord } from "../task/task-repo-context";
2
+ export { TASK_REPO_SCRIPT_CATEGORY };
3
+ export interface LoadedRepoContext {
4
+ context: TaskRepoContext;
5
+ /** Cache key segment — typically repo hash or script hash */
6
+ contentHash: string;
7
+ }
8
+ export declare function isTaskRepoContext(value: unknown): value is TaskRepoContext;
9
+ /**
10
+ * Normalize a dynamically imported module into {@link TaskRepoContext}.
11
+ * Supported shapes:
12
+ * - `export default { taskParamsValidator, taskFn }`
13
+ * - `export { taskParamsValidator, taskFn }`
14
+ * - `export default taskFn` (validator becomes `() => true`)
15
+ */
16
+ export declare function normalizeRepoContextModule(moduleExports: unknown, taskTypeKey: string, exportName?: string): TaskRepoContext | null;
17
+ export declare function pickEntryScript(scripts: TaskRepoScriptRecord[]): TaskRepoScriptRecord | null;
18
+ export declare function getScriptLoadKey(script: TaskRepoScriptRecord): string;
19
+ export declare function assertScriptLoadable(details: TaskRepoScriptDetails): details is TaskRepoScriptDetails & ({
20
+ source: string;
21
+ } | {
22
+ modulePath: string;
23
+ });
24
+ //# sourceMappingURL=repo-context.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repo-context.utils.d.ts","sourceRoot":"","sources":["../../src/repo/repo-context.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,yBAAyB,EACzB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EAC5B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,yBAAyB,EAAE,CAAC;AAErC,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,eAAe,CAAC;IACzB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAM1E;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACtC,aAAa,EAAE,OAAO,EACtB,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,GACpB,eAAe,GAAG,IAAI,CA8CxB;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,oBAAoB,GAAG,IAAI,CAM5F;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAYrE;AAED,wBAAgB,oBAAoB,CAChC,OAAO,EAAE,qBAAqB,GAC/B,OAAO,IAAI,qBAAqB,GAAG,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAIlF"}
@@ -0,0 +1,81 @@
1
+ import { TASK_REPO_SCRIPT_CATEGORY, } from "../task/task-repo-context";
2
+ export { TASK_REPO_SCRIPT_CATEGORY };
3
+ export function isTaskRepoContext(value) {
4
+ if (value == null || typeof value !== "object") {
5
+ return false;
6
+ }
7
+ const record = value;
8
+ return typeof record.taskParamsValidator === "function" && typeof record.taskFn === "function";
9
+ }
10
+ /**
11
+ * Normalize a dynamically imported module into {@link TaskRepoContext}.
12
+ * Supported shapes:
13
+ * - `export default { taskParamsValidator, taskFn }`
14
+ * - `export { taskParamsValidator, taskFn }`
15
+ * - `export default taskFn` (validator becomes `() => true`)
16
+ */
17
+ export function normalizeRepoContextModule(moduleExports, taskTypeKey, exportName) {
18
+ if (moduleExports == null) {
19
+ return null;
20
+ }
21
+ const record = moduleExports;
22
+ const namedExport = exportName != null && exportName !== "" ? record[exportName] : undefined;
23
+ const defaultExport = record.default;
24
+ const candidate = namedExport ?? defaultExport ?? moduleExports;
25
+ let taskParamsValidator;
26
+ let taskFn;
27
+ if (typeof candidate === "function") {
28
+ taskFn = candidate;
29
+ taskParamsValidator = record.taskParamsValidator;
30
+ }
31
+ else if (typeof candidate === "object" && candidate != null) {
32
+ const ctx = candidate;
33
+ taskParamsValidator = ctx.taskParamsValidator;
34
+ taskFn = ctx.taskFn;
35
+ }
36
+ taskParamsValidator ??= record.taskParamsValidator;
37
+ taskFn ??= record.taskFn;
38
+ if (typeof taskFn !== "function") {
39
+ return null;
40
+ }
41
+ if (typeof taskParamsValidator !== "function") {
42
+ taskParamsValidator = () => true;
43
+ }
44
+ const fn = taskFn;
45
+ if (fn.displayName == null || fn.displayName === "") {
46
+ fn.displayName = taskTypeKey;
47
+ }
48
+ if (fn.taskTypeKey == null || fn.taskTypeKey === "") {
49
+ fn.taskTypeKey = taskTypeKey;
50
+ }
51
+ return {
52
+ taskParamsValidator: taskParamsValidator,
53
+ taskFn: fn,
54
+ };
55
+ }
56
+ export function pickEntryScript(scripts) {
57
+ if (scripts.length === 0) {
58
+ return null;
59
+ }
60
+ const entry = scripts.find((script) => script.details.isEntry === true);
61
+ return entry ?? scripts[0];
62
+ }
63
+ export function getScriptLoadKey(script) {
64
+ const { source, modulePath, hash } = script.details;
65
+ if (hash != null && hash !== "") {
66
+ return hash;
67
+ }
68
+ if (source != null && source !== "") {
69
+ return `source:${source.length}:${source.slice(0, 64)}`;
70
+ }
71
+ if (modulePath != null && modulePath !== "") {
72
+ return `path:${modulePath}`;
73
+ }
74
+ return script.id;
75
+ }
76
+ export function assertScriptLoadable(details) {
77
+ const hasSource = details.source != null && details.source.trim() !== "";
78
+ const hasModulePath = details.modulePath != null && details.modulePath.trim() !== "";
79
+ return hasSource || hasModulePath;
80
+ }
81
+ //# sourceMappingURL=repo-context.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repo-context.utils.js","sourceRoot":"","sources":["../../src/repo/repo-context.utils.ts"],"names":[],"mappings":"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"}