target-supabase-sdk 0.1.9 → 0.2.0

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 (135) hide show
  1. package/README.md +66 -0
  2. package/dist/browser.d.ts +52 -0
  3. package/dist/browser.d.ts.map +1 -0
  4. package/dist/browser.js +45 -0
  5. package/dist/browser.js.map +1 -0
  6. package/dist/command/command.api.js +5 -5
  7. package/dist/command/command.api.js.map +1 -1
  8. package/dist/index.d.ts +2 -48
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +2 -41
  11. package/dist/index.js.map +1 -1
  12. package/dist/link/link.interface.d.ts +1 -1
  13. package/dist/link/link.interface.d.ts.map +1 -1
  14. package/dist/node/node-log-scope.d.ts +11 -0
  15. package/dist/node/node-log-scope.d.ts.map +1 -0
  16. package/dist/node/node-log-scope.js +7 -0
  17. package/dist/node/node-log-scope.js.map +1 -0
  18. package/dist/node/node-runtime.base.d.ts +42 -0
  19. package/dist/node/node-runtime.base.d.ts.map +1 -0
  20. package/dist/node/node-runtime.base.js +397 -0
  21. package/dist/node/node-runtime.base.js.map +1 -0
  22. package/dist/node/node.api.d.ts +3 -3
  23. package/dist/node/node.api.js +3 -3
  24. package/dist/node/node.api.js.map +1 -1
  25. package/dist/node/task-node.d.ts +20 -0
  26. package/dist/node/task-node.d.ts.map +1 -0
  27. package/dist/node/task-node.js +245 -0
  28. package/dist/node/task-node.js.map +1 -0
  29. package/dist/node/trigger-node.d.ts +18 -0
  30. package/dist/node/trigger-node.d.ts.map +1 -0
  31. package/dist/node/trigger-node.js +150 -0
  32. package/dist/node/trigger-node.js.map +1 -0
  33. package/dist/node.d.ts +22 -0
  34. package/dist/node.d.ts.map +1 -0
  35. package/dist/node.js +19 -0
  36. package/dist/node.js.map +1 -0
  37. package/dist/repo/repo-manager.d.ts +14 -3
  38. package/dist/repo/repo-manager.d.ts.map +1 -1
  39. package/dist/repo/repo-manager.js +27 -17
  40. package/dist/repo/repo-manager.js.map +1 -1
  41. package/dist/repo/repo.script-loader.d.ts +3 -3
  42. package/dist/repo/repo.script-loader.d.ts.map +1 -1
  43. package/dist/repo/repo.script-loader.js +10 -10
  44. package/dist/repo/repo.script-loader.js.map +1 -1
  45. package/dist/shared/log/create-api-logger.d.ts +10 -6
  46. package/dist/shared/log/create-api-logger.d.ts.map +1 -1
  47. package/dist/shared/log/create-api-logger.js +10 -6
  48. package/dist/shared/log/create-api-logger.js.map +1 -1
  49. package/dist/shared/log/index.d.ts +10 -0
  50. package/dist/shared/log/index.d.ts.map +1 -0
  51. package/dist/shared/log/index.js +10 -0
  52. package/dist/shared/log/index.js.map +1 -0
  53. package/dist/shared/log/log-manager.d.ts +25 -46
  54. package/dist/shared/log/log-manager.d.ts.map +1 -1
  55. package/dist/shared/log/log-manager.js +59 -40
  56. package/dist/shared/log/log-manager.js.map +1 -1
  57. package/dist/shared/log/log-scope.d.ts +49 -0
  58. package/dist/shared/log/log-scope.d.ts.map +1 -0
  59. package/dist/shared/log/log-scope.js +70 -0
  60. package/dist/shared/log/log-scope.js.map +1 -0
  61. package/dist/task/index.d.ts +15 -0
  62. package/dist/task/index.d.ts.map +1 -0
  63. package/dist/task/index.js +14 -0
  64. package/dist/task/index.js.map +1 -0
  65. package/dist/task/local-task-registry.d.ts +10 -0
  66. package/dist/task/local-task-registry.d.ts.map +1 -1
  67. package/dist/task/local-task-registry.js +83 -22
  68. package/dist/task/local-task-registry.js.map +1 -1
  69. package/dist/task/task-manager.d.ts +18 -6
  70. package/dist/task/task-manager.d.ts.map +1 -1
  71. package/dist/task/task-manager.js +46 -67
  72. package/dist/task/task-manager.js.map +1 -1
  73. package/dist/task/task-post.api.d.ts +49 -0
  74. package/dist/task/task-post.api.d.ts.map +1 -0
  75. package/dist/task/task-post.api.js +91 -0
  76. package/dist/task/task-post.api.js.map +1 -0
  77. package/dist/task/task-repo-context.d.ts +2 -0
  78. package/dist/task/task-repo-context.d.ts.map +1 -1
  79. package/dist/task/task-repo-context.js.map +1 -1
  80. package/dist/task/task-repo-validation.d.ts +46 -0
  81. package/dist/task/task-repo-validation.d.ts.map +1 -0
  82. package/dist/task/task-repo-validation.js +96 -0
  83. package/dist/task/task-repo-validation.js.map +1 -0
  84. package/dist/task/task.api.d.ts +11 -53
  85. package/dist/task/task.api.d.ts.map +1 -1
  86. package/dist/task/task.api.js +13 -61
  87. package/dist/task/task.api.js.map +1 -1
  88. package/dist/task/task.interface.d.ts +2 -0
  89. package/dist/task/task.interface.d.ts.map +1 -1
  90. package/dist/task/task.interface.js.map +1 -1
  91. package/dist/trigger/trigger.api.d.ts +140 -0
  92. package/dist/trigger/trigger.api.d.ts.map +1 -0
  93. package/dist/trigger/trigger.api.js +125 -0
  94. package/dist/trigger/trigger.api.js.map +1 -0
  95. package/dist/trigger/trigger.interface.d.ts +43 -0
  96. package/dist/trigger/trigger.interface.d.ts.map +1 -0
  97. package/dist/trigger/trigger.interface.js +11 -0
  98. package/dist/trigger/trigger.interface.js.map +1 -0
  99. package/dist/trigger/trigger.utils.d.ts +6 -0
  100. package/dist/trigger/trigger.utils.d.ts.map +1 -0
  101. package/dist/trigger/trigger.utils.js +39 -0
  102. package/dist/trigger/trigger.utils.js.map +1 -0
  103. package/package.json +21 -6
  104. package/src/browser.ts +100 -0
  105. package/src/command/command.api.ts +5 -5
  106. package/src/index.ts +2 -79
  107. package/src/link/link.interface.ts +1 -1
  108. package/src/node/node-log-scope.ts +15 -0
  109. package/src/node/node-runtime.base.ts +450 -0
  110. package/src/node/node.api.ts +3 -3
  111. package/src/node/task-node.ts +284 -0
  112. package/src/node/trigger-node.ts +180 -0
  113. package/src/node.ts +62 -0
  114. package/src/repo/repo-manager.ts +49 -21
  115. package/src/repo/repo.script-loader.ts +13 -13
  116. package/src/shared/log/create-api-logger.ts +23 -12
  117. package/src/shared/log/index.ts +23 -0
  118. package/src/shared/log/log-manager.ts +85 -90
  119. package/src/shared/log/log-scope.ts +123 -0
  120. package/src/task/index.ts +48 -0
  121. package/src/task/local-task-registry.ts +110 -23
  122. package/src/task/task-manager.ts +73 -84
  123. package/src/task/task-post.api.ts +116 -0
  124. package/src/task/task-repo-context.ts +2 -0
  125. package/src/task/task-repo-validation.ts +171 -0
  126. package/src/task/task.api.ts +13 -73
  127. package/src/task/task.interface.ts +2 -0
  128. package/src/trigger/trigger.api.ts +166 -0
  129. package/src/trigger/trigger.interface.ts +50 -0
  130. package/src/trigger/trigger.utils.ts +56 -0
  131. package/dist/node/node-manager.d.ts +0 -48
  132. package/dist/node/node-manager.d.ts.map +0 -1
  133. package/dist/node/node-manager.js +0 -619
  134. package/dist/node/node-manager.js.map +0 -1
  135. package/src/node/node-manager.ts +0 -673
@@ -1,11 +1,15 @@
1
- import { LoggerWithContext } from "../shared/log/log-manager";
1
+ import { LoggerWithScope } from "../shared/log";
2
2
  import { ResultCode, Task } from "./task.interface";
3
3
  import { ExecutableTaskFn } from "./task-repo-context";
4
4
  export type { TaskFn, TaskRepoContext, TaskRunResult, ExecutableTaskFn, TaskRepoScriptDetails, TaskRepoScriptRecord, TaskRunnerRootConfig, TaskLocalPackageConfig, BootstrapLocalTasksResult, BootstrapLocalTasksStatus, } from "./task-repo-context";
5
5
  export { TASK_REPO_SCRIPT_CATEGORY, TASK_RUNNER_CONFIG_DIR, TASK_RUNNER_ROOT_CONFIG_FILENAME, TASK_RUNNER_ROOT_CONFIG_RELATIVE_PATH, TASK_RUNNER_ROOT_CONFIG_LEGACY_RELATIVE_PATH, TASK_LOCAL_PACKAGE_CONFIG_FILENAME, } from "./task-repo-context";
6
- import { bootstrapLocalTasks, BootstrapLocalTasksOptions, getRegisteredLocalTaskTypeKeys } from "./local-task-registry";
6
+ import { bootstrapLocalTasks, BootstrapLocalTasksOptions, clearBootstrapLocalTasksCache, getRegisteredLocalTaskTypeKeys } from "./local-task-registry";
7
7
  import type { BootstrapLocalTasksResult } from "./task-repo-context";
8
- export type PrepareTaskFailureReason = "MISSING_PARAMS" | "REPO_LOAD_FAILED" | "PARAMS_VALIDATION_FAILED" | "TASK_TYPE_KEY_MISMATCH";
8
+ import { type TaskRepoValidationFailureReason } from "./task-repo-validation";
9
+ /** @deprecated use {@link TaskRepoValidationFailureReason} */
10
+ export type PrepareTaskFailureReason = TaskRepoValidationFailureReason;
11
+ export type { TaskRepoValidationFailureReason, ValidateTaskRepoAndParamsInput, ValidateTaskRepoAndParamsResult, } from "./task-repo-validation";
12
+ export { TaskRepoValidation } from "./task-repo-validation";
9
13
  export interface PrepareTaskResponse {
10
14
  isSuccess: boolean;
11
15
  taskFn: ExecutableTaskFn | null;
@@ -16,11 +20,17 @@ export interface PrepareTaskResponse {
16
20
  step?: string;
17
21
  }
18
22
  export interface PrepareTaskParams {
19
- logger: LoggerWithContext;
23
+ logger: LoggerWithScope;
20
24
  task: Task;
25
+ /**
26
+ * When false, do not fetch Repo from Supabase during validation.
27
+ * Should match {@link RegisterTasksOptions.includeRemote} on the worker.
28
+ */
29
+ includeRemote?: boolean;
30
+ bootstrapLocalOptions?: BootstrapLocalTasksOptions;
21
31
  }
22
32
  export interface RegisterTasksOptions {
23
- logger: LoggerWithContext;
33
+ logger: LoggerWithScope;
24
34
  local?: BootstrapLocalTasksOptions;
25
35
  /** When `true` (default), union local keys with remote `Repo.value` from Supabase. */
26
36
  includeRemote?: boolean;
@@ -31,6 +41,7 @@ export interface RegisterTasksResult {
31
41
  remote: {
32
42
  values: string[];
33
43
  };
44
+ includeRemote: boolean;
34
45
  }
35
46
  /**
36
47
  * Worker startup: discover local task packages + remote Repo rows, merge into `availableTaskList`.
@@ -44,9 +55,10 @@ export interface RegisterTasksResult {
44
55
  declare function registerTasks({ logger, local: localOptions, includeRemote, }: RegisterTasksOptions): Promise<RegisterTasksResult>;
45
56
  declare const TaskManager: {
46
57
  registerTasks: typeof registerTasks;
47
- prepareTask: ({ logger, task }: PrepareTaskParams) => Promise<PrepareTaskResponse>;
58
+ prepareTask: ({ logger, task, includeRemote, bootstrapLocalOptions, }: PrepareTaskParams) => Promise<PrepareTaskResponse>;
48
59
  bootstrapLocalTasks: typeof bootstrapLocalTasks;
49
60
  getRegisteredLocalTaskTypeKeys: typeof getRegisteredLocalTaskTypeKeys;
61
+ clearBootstrapLocalTasksCache: typeof clearBootstrapLocalTasksCache;
50
62
  };
51
63
  export { TaskManager };
52
64
  //# sourceMappingURL=task-manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"task-manager.d.ts","sourceRoot":"","sources":["../../src/task/task-manager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAA0C,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE/F,YAAY,EACR,MAAM,EACN,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,yBAAyB,EACzB,yBAAyB,GAC5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACH,yBAAyB,EACzB,sBAAsB,EACtB,gCAAgC,EAChC,qCAAqC,EACrC,4CAA4C,EAC5C,kCAAkC,GACrC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACH,mBAAmB,EACnB,0BAA0B,EAC1B,8BAA8B,EACjC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAErE,MAAM,MAAM,wBAAwB,GAC9B,gBAAgB,GAChB,kBAAkB,GAClB,0BAA0B,GAC1B,wBAAwB,CAAC;AAE/B,MAAM,WAAW,mBAAmB;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAChC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,wBAAwB,CAAC;IAClC,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAC9B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,IAAI,EAAE,IAAI,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACjC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,KAAK,CAAC,EAAE,0BAA0B,CAAC;IACnC,sFAAsF;IACtF,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,mBAAmB;IAChC,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,KAAK,EAAE,yBAAyB,CAAC;IACjC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CAChC;AAmCD;;;;;;;;GAQG;AACH,iBAAe,aAAa,CAAC,EACzB,MAAM,EACN,KAAK,EAAE,YAAY,EACnB,aAAoB,GACvB,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA0CrD;AAoJD,QAAA,MAAM,WAAW;;oCA5G4B,iBAAiB,KAAG,OAAO,CAAC,mBAAmB,CAAC;;;CAiH5F,CAAC;AAEF,OAAO,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"task-manager.d.ts","sourceRoot":"","sources":["../../src/task/task-manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAyB,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE9E,YAAY,EACR,MAAM,EACN,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,yBAAyB,EACzB,yBAAyB,GAC5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACH,yBAAyB,EACzB,sBAAsB,EACtB,gCAAgC,EAChC,qCAAqC,EACrC,4CAA4C,EAC5C,kCAAkC,GACrC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACH,mBAAmB,EACnB,0BAA0B,EAC1B,6BAA6B,EAC7B,8BAA8B,EACjC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAsB,KAAK,+BAA+B,EAAE,MAAM,wBAAwB,CAAC;AAElG,8DAA8D;AAC9D,MAAM,MAAM,wBAAwB,GAAG,+BAA+B,CAAC;AAEvE,YAAY,EACR,+BAA+B,EAC/B,8BAA8B,EAC9B,+BAA+B,GAClC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,MAAM,WAAW,mBAAmB;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAChC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,wBAAwB,CAAC;IAClC,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAC9B,MAAM,EAAE,eAAe,CAAC;IACxB,IAAI,EAAE,IAAI,CAAC;IACX;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qBAAqB,CAAC,EAAE,0BAA0B,CAAC;CACtD;AAED,MAAM,WAAW,oBAAoB;IACjC,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,CAAC,EAAE,0BAA0B,CAAC;IACnC,sFAAsF;IACtF,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,mBAAmB;IAChC,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,KAAK,EAAE,yBAAyB,CAAC;IACjC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAC7B,aAAa,EAAE,OAAO,CAAC;CAC1B;AAmCD;;;;;;;;GAQG;AACH,iBAAe,aAAa,CAAC,EACzB,MAAM,EACN,KAAK,EAAE,YAAY,EACnB,aAAoB,GACvB,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA2CrD;AA2HD,QAAA,MAAM,WAAW;;2EAhGd,iBAAiB,KAAG,OAAO,CAAC,mBAAmB,CAAC;;;;CAsGlD,CAAC;AAEF,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -1,33 +1,33 @@
1
- import { RepoManager } from "../repo/repo-manager";
2
1
  import { getScanRemoteRepoValues } from "../repo/repo.api";
3
2
  import { TASK_REPO_USAGE } from "../repo/repo.interface";
4
- import { ResultCode } from "./task.interface";
5
3
  export { TASK_REPO_SCRIPT_CATEGORY, TASK_RUNNER_CONFIG_DIR, TASK_RUNNER_ROOT_CONFIG_FILENAME, TASK_RUNNER_ROOT_CONFIG_RELATIVE_PATH, TASK_RUNNER_ROOT_CONFIG_LEGACY_RELATIVE_PATH, TASK_LOCAL_PACKAGE_CONFIG_FILENAME, } from "./task-repo-context";
6
- import { bootstrapLocalTasks, getRegisteredLocalTaskTypeKeys, } from "./local-task-registry";
4
+ import { bootstrapLocalTasks, clearBootstrapLocalTasksCache, getRegisteredLocalTaskTypeKeys, } from "./local-task-registry";
5
+ import { TaskRepoValidation } from "./task-repo-validation";
6
+ export { TaskRepoValidation } from "./task-repo-validation";
7
7
  function logLocalBootstrap(logger, bootstrap) {
8
8
  switch (bootstrap.status) {
9
9
  case "not_configured":
10
10
  logger.info("未找到本地任務配置,跳過本地註冊", {
11
11
  topic: "task",
12
- context: { message: bootstrap.message },
12
+ data: { message: bootstrap.message },
13
13
  });
14
14
  break;
15
15
  case "failed":
16
16
  logger.warn("本地任務註冊失敗", {
17
17
  topic: "task",
18
- context: { message: bootstrap.message, errors: bootstrap.errors },
18
+ data: { message: bootstrap.message, errors: bootstrap.errors },
19
19
  });
20
20
  break;
21
21
  case "empty":
22
22
  logger.info("本地任務掃描完成,無已註冊任務", {
23
23
  topic: "task",
24
- context: { message: bootstrap.message, skipped: bootstrap.skipped },
24
+ data: { message: bootstrap.message, skipped: bootstrap.skipped },
25
25
  });
26
26
  break;
27
27
  case "loaded":
28
28
  logger.info("本地任務註冊完成", {
29
29
  topic: "task",
30
- context: {
30
+ data: {
31
31
  registered: bootstrap.registered,
32
32
  skipped: bootstrap.skipped,
33
33
  errors: bootstrap.errors,
@@ -53,7 +53,7 @@ async function registerTasks({ logger, local: localOptions, includeRemote = true
53
53
  if (includeRemote) {
54
54
  logger.info("查詢遠程 Repo 列表", {
55
55
  topic: "task",
56
- context: { usage: TASK_REPO_USAGE },
56
+ data: { usage: TASK_REPO_USAGE },
57
57
  });
58
58
  const { data, error: remoteError } = await getScanRemoteRepoValues({ usage: TASK_REPO_USAGE });
59
59
  if (remoteError) {
@@ -62,7 +62,7 @@ async function registerTasks({ logger, local: localOptions, includeRemote = true
62
62
  remoteValues = data ?? [];
63
63
  logger.info("遠程 Repo 查詢完成", {
64
64
  topic: "task",
65
- context: { count: remoteValues.length, values: remoteValues },
65
+ data: { count: remoteValues.length, values: remoteValues },
66
66
  });
67
67
  }
68
68
  const availableTaskList = [...new Set([...local.registered, ...remoteValues])];
@@ -71,7 +71,7 @@ async function registerTasks({ logger, local: localOptions, includeRemote = true
71
71
  }
72
72
  logger.success("任務註冊完成", {
73
73
  topic: "task",
74
- context: {
74
+ data: {
75
75
  availableTaskList,
76
76
  localRegistered: local.registered,
77
77
  remoteValues,
@@ -81,9 +81,10 @@ async function registerTasks({ logger, local: localOptions, includeRemote = true
81
81
  availableTaskList,
82
82
  local,
83
83
  remote: { values: remoteValues },
84
+ includeRemote,
84
85
  };
85
86
  }
86
- /** 将 taskFn 与 params 闭包绑定,供 NodeManager 无参调用 `await taskFn()` */
87
+ /** 将 taskFn 与 params 闭包绑定,供 TaskNode 无参调用 `await taskFn()` */
87
88
  function bindTaskFn(taskFn, taskParams) {
88
89
  const run = async () => taskFn(taskParams);
89
90
  return Object.assign(run, {
@@ -91,36 +92,22 @@ function bindTaskFn(taskFn, taskParams) {
91
92
  taskTypeKey: taskFn.taskTypeKey,
92
93
  });
93
94
  }
94
- /** 调用 Repo 模块导出的 taskParamsValidator;抛错视为校验失败 */
95
- function validateTaskParams(validator, taskParams, logger) {
96
- try {
97
- return validator(taskParams) === true;
98
- }
99
- catch (error) {
100
- logger.warn("taskParamsValidator 拋出異常", {
101
- topic: "task",
102
- context: { error: error instanceof Error ? error.message : error },
103
- });
104
- return false;
105
- }
106
- }
107
95
  /**
108
96
  * 將 Supabase 認領到的 Task 解析為可執行的 `ExecutableTaskFn`。
109
97
  *
110
98
  * 流程:
111
99
  * 1. 從 task.details 取出 `params`;`task.value` 作為 taskTypeKey(同 {@link Repo.value})
112
- * 2. {@link RepoManager.getRepoContext} — 本地註冊優先,否則按 task.value 拉取 Repo
113
- * 3. 校驗 taskFn.taskTypeKey 與 task.value 一致
114
- * 4. 用 Repo 導出的 taskParamsValidator 校驗 params
115
- * 5. bindTaskFn,返回閉包後的無參執行函數
100
+ * 2. {@link TaskRepoValidation.validate} — 本地註冊優先;未命中時可選遠端(`includeRemote`)
101
+ * Worker 在 registry 未命中時會補掃本地(`local_bootstrap_on_miss`)
102
+ * 3. bindTaskFn,返回閉包後的無參執行函數
116
103
  *
117
104
  * 失敗時返回 `{ isSuccess: false, code, message, reason, step }`(不 throw)。
118
105
  */
119
- const prepareTask = async ({ logger, task }) => {
106
+ const prepareTask = async ({ logger, task, includeRemote = true, bootstrapLocalOptions, }) => {
120
107
  const fail = (params) => {
121
108
  logger.warn(params.message, {
122
109
  topic: "task",
123
- context: {
110
+ data: {
124
111
  taskId: task.id,
125
112
  taskTypeKey: task.value,
126
113
  reason: params.reason,
@@ -139,63 +126,54 @@ const prepareTask = async ({ logger, task }) => {
139
126
  const { id: taskId, name: taskName, value: taskTypeKey, details } = task;
140
127
  logger.info(`開始準備任務 ${taskName}-${taskTypeKey}`, {
141
128
  topic: "task",
142
- context: { taskId, taskName, taskTypeKey },
129
+ data: { taskId, taskName, taskTypeKey },
143
130
  });
144
131
  const { params: taskParams } = details;
145
- if (taskParams == null) {
146
- return fail({
147
- reason: "MISSING_PARAMS",
148
- code: ResultCode.PARAMS_NOT_VALID,
149
- message: "任務缺少 params",
150
- step: "params",
132
+ if (!getRegisteredLocalTaskTypeKeys().includes(taskTypeKey)) {
133
+ const bootstrap = await bootstrapLocalTasks({
134
+ ...bootstrapLocalOptions,
135
+ forTaskTypeKey: taskTypeKey,
136
+ });
137
+ logger.debug("本地 registry 未命中,補掃本地任務", {
138
+ topic: "task",
139
+ data: {
140
+ taskId,
141
+ taskTypeKey,
142
+ step: "local_bootstrap_on_miss",
143
+ status: bootstrap.status,
144
+ registered: bootstrap.registered,
145
+ cached: bootstrap.cached ?? false,
146
+ message: bootstrap.message,
147
+ },
151
148
  });
152
149
  }
153
- logger.debug("任務詳情校驗通過,開始解析 Repo 上下文", {
154
- topic: "task",
155
- context: { taskTypeKey, step: "repo_load" },
156
- });
157
- const { context: repoContext, error: repoError } = await RepoManager.getRepoContext({
150
+ const validation = await TaskRepoValidation.validate({
158
151
  logger,
159
152
  taskTypeKey,
153
+ params: taskParams,
154
+ includeRemote,
160
155
  });
161
- if (repoContext == null) {
156
+ if (!validation.isValid) {
162
157
  return fail({
163
- reason: "REPO_LOAD_FAILED",
164
- code: ResultCode.REPO_NOT_VALID,
165
- message: repoError ?? "無法加載 Repo 上下文",
166
- step: "repo_load",
158
+ reason: validation.reason,
159
+ code: validation.code,
160
+ message: validation.message,
161
+ step: validation.step,
167
162
  });
168
163
  }
164
+ const { repoContext } = validation;
169
165
  logger.info("Repo 上下文加載成功", {
170
166
  topic: "task",
171
- context: {
167
+ data: {
172
168
  taskTypeKey,
173
169
  taskFnDisplayName: repoContext.taskFn.displayName,
174
170
  step: "repo_load",
175
171
  },
176
172
  });
177
- if (repoContext.taskFn.taskTypeKey !== taskTypeKey) {
178
- return fail({
179
- reason: "TASK_TYPE_KEY_MISMATCH",
180
- code: ResultCode.REPO_NOT_VALID,
181
- message: `taskFn.taskTypeKey (${repoContext.taskFn.taskTypeKey}) 與 task.value (${taskTypeKey}) 不一致`,
182
- step: "task_type_key",
183
- });
184
- }
185
- logger.debug("開始校驗任務參數", { topic: "task", context: { taskTypeKey, step: "params_validation" } });
186
- if (!validateTaskParams(repoContext.taskParamsValidator, taskParams, logger)) {
187
- return fail({
188
- reason: "PARAMS_VALIDATION_FAILED",
189
- code: ResultCode.PARAMS_NOT_VALID,
190
- message: "任務參數校驗失敗",
191
- step: "params_validation",
192
- });
193
- }
194
- logger.debug("任務參數校驗通過", { topic: "task", context: { taskTypeKey, step: "params_validation" } });
195
173
  const boundTaskFn = bindTaskFn(repoContext.taskFn, taskParams);
196
174
  logger.success("任務準備完成", {
197
175
  topic: "task",
198
- context: {
176
+ data: {
199
177
  taskId,
200
178
  taskTypeKey,
201
179
  displayName: boundTaskFn.displayName,
@@ -212,6 +190,7 @@ const TaskManager = {
212
190
  prepareTask,
213
191
  bootstrapLocalTasks,
214
192
  getRegisteredLocalTaskTypeKeys,
193
+ clearBootstrapLocalTasksCache,
215
194
  };
216
195
  export { TaskManager };
217
196
  //# sourceMappingURL=task-manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"task-manager.js","sourceRoot":"","sources":["../../src/task/task-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task-manager.js","sourceRoot":"","sources":["../../src/task/task-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { type SupabaseResponse } from "../core.interface";
2
+ import { z } from "zod";
3
+ import { Task, TaskStatus } from "./task.interface";
4
+ export declare const postTaskSchema: z.ZodObject<{
5
+ name: z.ZodString;
6
+ /** Task type key — matches `task.value`, {@link patchClaimTask}, {@link Repo.value}, and local Repo registry. */
7
+ value: z.ZodString;
8
+ params: z.ZodUnknown;
9
+ taskStatus: z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodLiteral<TaskStatus.OPEN>, z.ZodLiteral<TaskStatus.TODO>]>>>;
10
+ tagList: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
11
+ extra: z.ZodOptional<z.ZodString>;
12
+ traceId: z.ZodOptional<z.ZodString>;
13
+ traceParentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
14
+ }, "strip", z.ZodTypeAny, {
15
+ name: string;
16
+ value: string;
17
+ tagList: string[];
18
+ taskStatus: TaskStatus.OPEN | TaskStatus.TODO;
19
+ extra?: string | undefined;
20
+ traceId?: string | undefined;
21
+ traceParentId?: string | null | undefined;
22
+ params?: unknown;
23
+ }, {
24
+ name: string;
25
+ value: string;
26
+ tagList?: string[] | undefined;
27
+ extra?: string | undefined;
28
+ traceId?: string | undefined;
29
+ traceParentId?: string | null | undefined;
30
+ params?: unknown;
31
+ taskStatus?: TaskStatus.OPEN | TaskStatus.TODO | undefined;
32
+ }>;
33
+ export type PostTaskPayload = z.infer<typeof postTaskSchema>;
34
+ /**
35
+ * Create a task row (scheduler / admin). **Node entry only** — requires local Repo bootstrap.
36
+ *
37
+ * @see target-supabase-sdk/node
38
+ */
39
+ export declare const postTask: (payload: {
40
+ name: string;
41
+ value: string;
42
+ tagList: string[];
43
+ taskStatus: TaskStatus.OPEN | TaskStatus.TODO;
44
+ extra?: string | undefined;
45
+ traceId?: string | undefined;
46
+ traceParentId?: string | null | undefined;
47
+ params?: unknown;
48
+ }) => SupabaseResponse<Task> | Promise<SupabaseResponse<Task>>;
49
+ //# sourceMappingURL=task-post.api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-post.api.d.ts","sourceRoot":"","sources":["../../src/task/task-post.api.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE5E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAA4B,IAAI,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAY9E,eAAO,MAAM,cAAc;;IAE1B,iHAAiH;;;;;;;;;;;;;;;;;;;;;;;;;;EAQhH,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE7D;;;;GAIG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;8DAgFnB,CAAC"}
@@ -0,0 +1,91 @@
1
+ import { createTarget, validateWithSchema } from "../core.api";
2
+ import { generateResponse } from "../core.interface";
3
+ import { createApiLogger, logManager } from "../shared/log";
4
+ import { z } from "zod";
5
+ import { CategoryTask, TaskStatus } from "./task.interface";
6
+ import { TaskRepoValidation } from "./task-repo-validation";
7
+ const traceIdSchema = z.string().trim().min(1).optional();
8
+ const traceParentIdSchema = z.string().trim().min(1).nullable().optional();
9
+ /** Initial status for a new task — OPEN (draft) or TODO (claimable by workers). */
10
+ const postTaskInitialStatusSchema = z
11
+ .union([z.literal(TaskStatus.OPEN), z.literal(TaskStatus.TODO)])
12
+ .optional()
13
+ .default(TaskStatus.TODO);
14
+ export const postTaskSchema = z.object({
15
+ name: z.string().trim().min(1),
16
+ /** Task type key — matches `task.value`, {@link patchClaimTask}, {@link Repo.value}, and local Repo registry. */
17
+ value: z.string().trim().min(1),
18
+ params: z.unknown(),
19
+ taskStatus: postTaskInitialStatusSchema,
20
+ tagList: z.array(z.string()).optional().default([]),
21
+ extra: z.string().optional(),
22
+ traceId: traceIdSchema,
23
+ traceParentId: traceParentIdSchema,
24
+ });
25
+ /**
26
+ * Create a task row (scheduler / admin). **Node entry only** — requires local Repo bootstrap.
27
+ *
28
+ * @see target-supabase-sdk/node
29
+ */
30
+ export const postTask = validateWithSchema(postTaskSchema, "postTaskSchema")(async ({ name, value, params, taskStatus, tagList, extra, traceId, traceParentId, }) => {
31
+ const taskTraceId = traceId?.trim() || logManager.generateTraceId();
32
+ const logger = createApiLogger("postTask", {
33
+ traceId: taskTraceId,
34
+ traceParentId: traceParentId ?? null,
35
+ });
36
+ const validation = await TaskRepoValidation.validate({
37
+ logger,
38
+ taskTypeKey: value,
39
+ params,
40
+ bootstrapLocal: true,
41
+ });
42
+ if (!validation.isValid) {
43
+ logger.warn(validation.message, {
44
+ topic: "task",
45
+ data: {
46
+ taskTypeKey: value,
47
+ reason: validation.reason,
48
+ step: validation.step,
49
+ },
50
+ });
51
+ return generateResponse.error(validation.message, undefined, String(validation.code));
52
+ }
53
+ const result = await createTarget({
54
+ payload: {
55
+ name,
56
+ value,
57
+ params,
58
+ taskStatus,
59
+ tagList,
60
+ extra,
61
+ traceId: taskTraceId,
62
+ traceParentId,
63
+ },
64
+ createFn: () => ({
65
+ name,
66
+ value,
67
+ category: CategoryTask.TASK,
68
+ tagList,
69
+ extra,
70
+ details: {
71
+ manifestVersion: 0,
72
+ status: taskStatus,
73
+ params,
74
+ progress: 0,
75
+ nodeId: null,
76
+ traceId: taskTraceId,
77
+ },
78
+ }),
79
+ });
80
+ logger.info("任務已創建", {
81
+ topic: "task",
82
+ data: {
83
+ taskId: result.data?.id,
84
+ taskTypeKey: value,
85
+ status: taskStatus,
86
+ traceId: taskTraceId,
87
+ },
88
+ });
89
+ return result;
90
+ });
91
+ //# sourceMappingURL=task-post.api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-post.api.js","sourceRoot":"","sources":["../../src/task/task-post.api.ts"],"names":[],"mappings":"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"}
@@ -82,6 +82,8 @@ export interface BootstrapLocalTasksResult {
82
82
  taskDir: string;
83
83
  error: string;
84
84
  }[];
85
+ /** True when scan was skipped due to unchanged config fingerprint */
86
+ cached?: boolean;
85
87
  }
86
88
  /** Host app config directory (relative to `cwd`) — recommended for library consumers */
87
89
  export declare const TASK_RUNNER_CONFIG_DIR: "config";
@@ -1 +1 @@
1
- {"version":3,"file":"task-repo-context.d.ts","sourceRoot":"","sources":["../../src/task/task-repo-context.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,MAAM;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CACjD;AAED,qEAAqE;AACrE,MAAM,MAAM,gBAAgB,GAAG,CAAC,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG;IAC5D,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,0EAA0E;AAC1E,MAAM,WAAW,eAAe;IAC5B,mBAAmB,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,OAAO,CAAC;IACtD,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,0EAA0E;AAC1E,eAAO,MAAM,yBAAyB,EAAG,QAAiB,CAAC;AAE3D;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,8FAA8F;AAC9F,MAAM,WAAW,oBAAoB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,qBAAqB,CAAC;CAClC;AAED,8FAA8F;AAC9F,MAAM,WAAW,oBAAoB;IACjC,gGAAgG;IAChG,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,2DAA2D;AAC3D,MAAM,WAAW,sBAAsB;IACnC,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,MAAM,yBAAyB;AACjC,mFAAmF;AACjF,QAAQ;AACV,kDAAkD;GAChD,OAAO;AACT,qGAAqG;GACnG,gBAAgB;AAClB,qCAAqC;GACnC,QAAQ,CAAC;AAEf,MAAM,WAAW,yBAAyB;IACtC,MAAM,EAAE,yBAAyB,CAAC;IAClC,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC/C,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAChD;AAED,wFAAwF;AACxF,eAAO,MAAM,sBAAsB,EAAG,QAAiB,CAAC;AAExD,eAAO,MAAM,gCAAgC,EAAG,gBAAyB,CAAC;AAE1E,wDAAwD;AACxD,eAAO,MAAM,qCAAqC,yBAA2E,CAAC;AAE9H,sCAAsC;AACtC,eAAO,MAAM,4CAA4C,kBAAmC,CAAC;AAE7F,kEAAkE;AAClE,eAAO,MAAM,kCAAkC,EAAG,gBAAyB,CAAC"}
1
+ {"version":3,"file":"task-repo-context.d.ts","sourceRoot":"","sources":["../../src/task/task-repo-context.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,MAAM;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CACjD;AAED,qEAAqE;AACrE,MAAM,MAAM,gBAAgB,GAAG,CAAC,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG;IAC5D,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,0EAA0E;AAC1E,MAAM,WAAW,eAAe;IAC5B,mBAAmB,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,OAAO,CAAC;IACtD,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,0EAA0E;AAC1E,eAAO,MAAM,yBAAyB,EAAG,QAAiB,CAAC;AAE3D;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,8FAA8F;AAC9F,MAAM,WAAW,oBAAoB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,qBAAqB,CAAC;CAClC;AAED,8FAA8F;AAC9F,MAAM,WAAW,oBAAoB;IACjC,gGAAgG;IAChG,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,2DAA2D;AAC3D,MAAM,WAAW,sBAAsB;IACnC,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,MAAM,yBAAyB;AACjC,mFAAmF;AACjF,QAAQ;AACV,kDAAkD;GAChD,OAAO;AACT,qGAAqG;GACnG,gBAAgB;AAClB,qCAAqC;GACnC,QAAQ,CAAC;AAEf,MAAM,WAAW,yBAAyB;IACtC,MAAM,EAAE,yBAAyB,CAAC;IAClC,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC/C,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7C,qEAAqE;IACrE,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wFAAwF;AACxF,eAAO,MAAM,sBAAsB,EAAG,QAAiB,CAAC;AAExD,eAAO,MAAM,gCAAgC,EAAG,gBAAyB,CAAC;AAE1E,wDAAwD;AACxD,eAAO,MAAM,qCAAqC,yBAA2E,CAAC;AAE9H,sCAAsC;AACtC,eAAO,MAAM,4CAA4C,kBAAmC,CAAC;AAE7F,kEAAkE;AAClE,eAAO,MAAM,kCAAkC,EAAG,gBAAyB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"task-repo-context.js","sourceRoot":"","sources":["../../src/task/task-repo-context.ts"],"names":[],"mappings":"AAwBA,0EAA0E;AAC1E,MAAM,CAAC,MAAM,yBAAyB,GAAG,QAAiB,CAAC;AAiE3D,wFAAwF;AACxF,MAAM,CAAC,MAAM,sBAAsB,GAAG,QAAiB,CAAC;AAExD,MAAM,CAAC,MAAM,gCAAgC,GAAG,gBAAyB,CAAC;AAE1E,wDAAwD;AACxD,MAAM,CAAC,MAAM,qCAAqC,GAAG,GAAG,sBAAsB,IAAI,gCAAgC,EAAW,CAAC;AAE9H,sCAAsC;AACtC,MAAM,CAAC,MAAM,4CAA4C,GAAG,gCAAgC,CAAC;AAE7F,kEAAkE;AAClE,MAAM,CAAC,MAAM,kCAAkC,GAAG,gBAAyB,CAAC"}
1
+ {"version":3,"file":"task-repo-context.js","sourceRoot":"","sources":["../../src/task/task-repo-context.ts"],"names":[],"mappings":"AAwBA,0EAA0E;AAC1E,MAAM,CAAC,MAAM,yBAAyB,GAAG,QAAiB,CAAC;AAmE3D,wFAAwF;AACxF,MAAM,CAAC,MAAM,sBAAsB,GAAG,QAAiB,CAAC;AAExD,MAAM,CAAC,MAAM,gCAAgC,GAAG,gBAAyB,CAAC;AAE1E,wDAAwD;AACxD,MAAM,CAAC,MAAM,qCAAqC,GAAG,GAAG,sBAAsB,IAAI,gCAAgC,EAAW,CAAC;AAE9H,sCAAsC;AACtC,MAAM,CAAC,MAAM,4CAA4C,GAAG,gCAAgC,CAAC;AAE7F,kEAAkE;AAClE,MAAM,CAAC,MAAM,kCAAkC,GAAG,gBAAyB,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { type RepoContextFailureReason } from "../repo/repo-manager";
2
+ import { LoggerWithScope } from "../shared/log";
3
+ import { type BootstrapLocalTasksOptions } from "./local-task-registry";
4
+ import { ResultCode } from "./task.interface";
5
+ import type { TaskRepoContext } from "./task-repo-context";
6
+ export type TaskRepoValidationFailureReason = "MISSING_PARAMS" | RepoContextFailureReason | "PARAMS_VALIDATION_FAILED" | "TASK_TYPE_KEY_MISMATCH";
7
+ export type ValidateTaskRepoAndParamsInput = {
8
+ logger: LoggerWithScope;
9
+ taskTypeKey: string;
10
+ params: unknown;
11
+ /**
12
+ * When true, run {@link bootstrapLocalTasks} before resolve (CLI / Trigger / postTask).
13
+ * Worker paths should omit — {@link TaskManager.registerTasks} already bootstrapped.
14
+ */
15
+ bootstrapLocal?: boolean;
16
+ bootstrapLocalOptions?: BootstrapLocalTasksOptions;
17
+ /**
18
+ * When false, do not fetch Repo from Supabase if the task type is not locally registered.
19
+ * Default `true`. Align with {@link RegisterTasksOptions.includeRemote}.
20
+ */
21
+ includeRemote?: boolean;
22
+ };
23
+ export type ValidateTaskRepoAndParamsFailure = {
24
+ isValid: false;
25
+ code: ResultCode;
26
+ message: string;
27
+ reason: TaskRepoValidationFailureReason;
28
+ step: string;
29
+ };
30
+ export type ValidateTaskRepoAndParamsSuccess = {
31
+ isValid: true;
32
+ repoContext: TaskRepoContext;
33
+ };
34
+ export type ValidateTaskRepoAndParamsResult = ValidateTaskRepoAndParamsFailure | ValidateTaskRepoAndParamsSuccess;
35
+ /**
36
+ * Resolve task Repo context and validate `params` via `taskParamsValidator`.
37
+ *
38
+ * Repo resolution uses {@link RepoManager.getRepoContext}:
39
+ * local registry first; when no local entry and `includeRemote`, loads from Supabase.
40
+ */
41
+ declare function validateTaskRepoAndParams({ logger, taskTypeKey, params, bootstrapLocal, bootstrapLocalOptions, includeRemote, }: ValidateTaskRepoAndParamsInput): Promise<ValidateTaskRepoAndParamsResult>;
42
+ declare const TaskRepoValidation: {
43
+ validate: typeof validateTaskRepoAndParams;
44
+ };
45
+ export { TaskRepoValidation, validateTaskRepoAndParams };
46
+ //# sourceMappingURL=task-repo-validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-repo-validation.d.ts","sourceRoot":"","sources":["../../src/task/task-repo-validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAuB,KAAK,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,MAAM,+BAA+B,GACrC,gBAAgB,GAChB,wBAAwB,GACxB,0BAA0B,GAC1B,wBAAwB,CAAC;AAE/B,MAAM,MAAM,8BAA8B,GAAG;IACzC,MAAM,EAAE,eAAe,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,qBAAqB,CAAC,EAAE,0BAA0B,CAAC;IACnD;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC3C,OAAO,EAAE,KAAK,CAAC;IACf,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,+BAA+B,CAAC;IACxC,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC3C,OAAO,EAAE,IAAI,CAAC;IACd,WAAW,EAAE,eAAe,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,+BAA+B,GACrC,gCAAgC,GAChC,gCAAgC,CAAC;AA2BvC;;;;;GAKG;AACH,iBAAe,yBAAyB,CAAC,EACrC,MAAM,EACN,WAAW,EACX,MAAM,EACN,cAAsB,EACtB,qBAAqB,EACrB,aAAoB,GACvB,EAAE,8BAA8B,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAgF3E;AAED,QAAA,MAAM,kBAAkB;;CAEvB,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,CAAC"}