target-supabase-sdk 0.1.8 → 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 (212) hide show
  1. package/README.md +74 -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/browser.d.ts +52 -0
  6. package/dist/browser.d.ts.map +1 -0
  7. package/dist/browser.js +45 -0
  8. package/dist/browser.js.map +1 -0
  9. package/dist/command/command.api.d.ts +43 -0
  10. package/dist/command/command.api.d.ts.map +1 -0
  11. package/dist/command/command.api.js +58 -0
  12. package/dist/command/command.api.js.map +1 -0
  13. package/dist/command/command.interface.d.ts +14 -0
  14. package/dist/command/command.interface.d.ts.map +1 -0
  15. package/dist/command/command.interface.js +9 -0
  16. package/dist/command/command.interface.js.map +1 -0
  17. package/dist/core.api.d.ts +70 -6
  18. package/dist/core.api.d.ts.map +1 -1
  19. package/dist/core.api.js +191 -13
  20. package/dist/core.api.js.map +1 -1
  21. package/dist/file/file-manager.d.ts +1 -1
  22. package/dist/file/file-manager.d.ts.map +1 -1
  23. package/dist/file/file-manager.js +1 -1
  24. package/dist/file/file-manager.js.map +1 -1
  25. package/dist/index.d.ts +2 -40
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +2 -34
  28. package/dist/index.js.map +1 -1
  29. package/dist/link/link.interface.d.ts +1 -1
  30. package/dist/link/link.interface.d.ts.map +1 -1
  31. package/dist/node/node-log-scope.d.ts +11 -0
  32. package/dist/node/node-log-scope.d.ts.map +1 -0
  33. package/dist/node/node-log-scope.js +7 -0
  34. package/dist/node/node-log-scope.js.map +1 -0
  35. package/dist/node/node-runtime.base.d.ts +42 -0
  36. package/dist/node/node-runtime.base.d.ts.map +1 -0
  37. package/dist/node/node-runtime.base.js +397 -0
  38. package/dist/node/node-runtime.base.js.map +1 -0
  39. package/dist/node/node-task.preset.d.ts +1 -0
  40. package/dist/node/node-task.preset.d.ts.map +1 -0
  41. package/dist/node/node-task.preset.js +14 -0
  42. package/dist/node/node-task.preset.js.map +1 -0
  43. package/dist/node/node.api.d.ts +67 -31
  44. package/dist/node/node.api.d.ts.map +1 -1
  45. package/dist/node/node.api.js +65 -102
  46. package/dist/node/node.api.js.map +1 -1
  47. package/dist/node/node.interface.d.ts +7 -0
  48. package/dist/node/node.interface.d.ts.map +1 -1
  49. package/dist/node/node.interface.js +2 -0
  50. package/dist/node/node.interface.js.map +1 -1
  51. package/dist/node/node.utils.d.ts +5 -0
  52. package/dist/node/node.utils.d.ts.map +1 -0
  53. package/dist/node/node.utils.js +36 -0
  54. package/dist/node/node.utils.js.map +1 -0
  55. package/dist/node/task-node.d.ts +20 -0
  56. package/dist/node/task-node.d.ts.map +1 -0
  57. package/dist/node/task-node.js +245 -0
  58. package/dist/node/task-node.js.map +1 -0
  59. package/dist/node/trigger-node.d.ts +18 -0
  60. package/dist/node/trigger-node.d.ts.map +1 -0
  61. package/dist/node/trigger-node.js +150 -0
  62. package/dist/node/trigger-node.js.map +1 -0
  63. package/dist/node.d.ts +22 -0
  64. package/dist/node.d.ts.map +1 -0
  65. package/dist/node.js +19 -0
  66. package/dist/node.js.map +1 -0
  67. package/dist/parcel/parcel-manager.d.ts +1 -1
  68. package/dist/parcel/parcel-manager.d.ts.map +1 -1
  69. package/dist/parcel/parcel-manager.js +1 -1
  70. package/dist/parcel/parcel-manager.js.map +1 -1
  71. package/dist/repo/repo-context.utils.d.ts +24 -0
  72. package/dist/repo/repo-context.utils.d.ts.map +1 -0
  73. package/dist/repo/repo-context.utils.js +81 -0
  74. package/dist/repo/repo-context.utils.js.map +1 -0
  75. package/dist/repo/repo-manager.d.ts +42 -0
  76. package/dist/repo/repo-manager.d.ts.map +1 -0
  77. package/dist/repo/repo-manager.js +166 -0
  78. package/dist/repo/repo-manager.js.map +1 -0
  79. package/dist/repo/repo.api.d.ts +16 -0
  80. package/dist/repo/repo.api.d.ts.map +1 -0
  81. package/dist/repo/repo.api.js +40 -0
  82. package/dist/repo/repo.api.js.map +1 -0
  83. package/dist/repo/repo.interface.d.ts +12 -5
  84. package/dist/repo/repo.interface.d.ts.map +1 -1
  85. package/dist/repo/repo.interface.js +2 -2
  86. package/dist/repo/repo.interface.js.map +1 -1
  87. package/dist/repo/repo.script-loader.d.ts +19 -0
  88. package/dist/repo/repo.script-loader.d.ts.map +1 -0
  89. package/dist/repo/repo.script-loader.js +108 -0
  90. package/dist/repo/repo.script-loader.js.map +1 -0
  91. package/dist/shared/log/create-api-logger.d.ts +21 -0
  92. package/dist/shared/log/create-api-logger.d.ts.map +1 -0
  93. package/dist/shared/log/create-api-logger.js +19 -0
  94. package/dist/shared/log/create-api-logger.js.map +1 -0
  95. package/dist/shared/log/index.d.ts +10 -0
  96. package/dist/shared/log/index.d.ts.map +1 -0
  97. package/dist/shared/log/index.js +10 -0
  98. package/dist/shared/log/index.js.map +1 -0
  99. package/dist/shared/log/log-manager.d.ts +93 -0
  100. package/dist/shared/log/log-manager.d.ts.map +1 -0
  101. package/dist/shared/log/log-manager.js +237 -0
  102. package/dist/shared/log/log-manager.js.map +1 -0
  103. package/dist/shared/log/log-scope.d.ts +49 -0
  104. package/dist/shared/log/log-scope.d.ts.map +1 -0
  105. package/dist/shared/log/log-scope.js +70 -0
  106. package/dist/shared/log/log-scope.js.map +1 -0
  107. package/dist/shared/utils/config-path.utils.d.ts +38 -0
  108. package/dist/shared/utils/config-path.utils.d.ts.map +1 -0
  109. package/dist/shared/utils/config-path.utils.js +85 -0
  110. package/dist/shared/utils/config-path.utils.js.map +1 -0
  111. package/dist/shared/utils/error.utils.d.ts +11 -0
  112. package/dist/shared/utils/error.utils.d.ts.map +1 -0
  113. package/dist/shared/utils/error.utils.js +15 -0
  114. package/dist/shared/utils/error.utils.js.map +1 -0
  115. package/dist/shared/utils/id.utils.d.ts +3 -0
  116. package/dist/shared/utils/id.utils.d.ts.map +1 -0
  117. package/dist/shared/utils/id.utils.js +5 -0
  118. package/dist/shared/utils/id.utils.js.map +1 -0
  119. package/dist/supabase.js +1 -1
  120. package/dist/supabase.js.map +1 -1
  121. package/dist/task/index.d.ts +15 -0
  122. package/dist/task/index.d.ts.map +1 -0
  123. package/dist/task/index.js +14 -0
  124. package/dist/task/index.js.map +1 -0
  125. package/dist/task/local-task-registry.d.ts +37 -0
  126. package/dist/task/local-task-registry.d.ts.map +1 -0
  127. package/dist/task/local-task-registry.js +214 -0
  128. package/dist/task/local-task-registry.js.map +1 -0
  129. package/dist/task/task-manager.d.ts +64 -0
  130. package/dist/task/task-manager.d.ts.map +1 -0
  131. package/dist/task/task-manager.js +196 -0
  132. package/dist/task/task-manager.js.map +1 -0
  133. package/dist/task/task-post.api.d.ts +49 -0
  134. package/dist/task/task-post.api.d.ts.map +1 -0
  135. package/dist/task/task-post.api.js +91 -0
  136. package/dist/task/task-post.api.js.map +1 -0
  137. package/dist/task/task-repo-context.d.ts +97 -0
  138. package/dist/task/task-repo-context.d.ts.map +1 -0
  139. package/dist/task/task-repo-context.js +12 -0
  140. package/dist/task/task-repo-context.js.map +1 -0
  141. package/dist/task/task-repo-validation.d.ts +46 -0
  142. package/dist/task/task-repo-validation.d.ts.map +1 -0
  143. package/dist/task/task-repo-validation.js +96 -0
  144. package/dist/task/task-repo-validation.js.map +1 -0
  145. package/dist/task/task.api.d.ts +198 -0
  146. package/dist/task/task.api.d.ts.map +1 -1
  147. package/dist/task/task.api.js +302 -1
  148. package/dist/task/task.api.js.map +1 -1
  149. package/dist/task/task.interface.d.ts +11 -2
  150. package/dist/task/task.interface.d.ts.map +1 -1
  151. package/dist/task/task.interface.js +10 -0
  152. package/dist/task/task.interface.js.map +1 -1
  153. package/dist/trigger/trigger.api.d.ts +140 -0
  154. package/dist/trigger/trigger.api.d.ts.map +1 -0
  155. package/dist/trigger/trigger.api.js +125 -0
  156. package/dist/trigger/trigger.api.js.map +1 -0
  157. package/dist/trigger/trigger.interface.d.ts +43 -0
  158. package/dist/trigger/trigger.interface.d.ts.map +1 -0
  159. package/dist/trigger/trigger.interface.js +11 -0
  160. package/dist/trigger/trigger.interface.js.map +1 -0
  161. package/dist/trigger/trigger.utils.d.ts +6 -0
  162. package/dist/trigger/trigger.utils.d.ts.map +1 -0
  163. package/dist/trigger/trigger.utils.js +39 -0
  164. package/dist/trigger/trigger.utils.js.map +1 -0
  165. package/package.json +30 -8
  166. package/src/auth/auth.api.ts +3 -1
  167. package/src/browser.ts +100 -0
  168. package/src/command/command.api.ts +88 -0
  169. package/src/command/command.interface.ts +17 -0
  170. package/src/core.api.ts +305 -26
  171. package/src/file/file-manager.ts +1 -1
  172. package/src/index.ts +2 -64
  173. package/src/link/link.interface.ts +1 -1
  174. package/src/node/node-log-scope.ts +15 -0
  175. package/src/node/node-runtime.base.ts +450 -0
  176. package/src/node/node-task.preset.ts +13 -0
  177. package/src/node/node.api.ts +95 -117
  178. package/src/node/node.interface.ts +8 -0
  179. package/src/node/node.utils.ts +36 -0
  180. package/src/node/task-node.ts +284 -0
  181. package/src/node/trigger-node.ts +180 -0
  182. package/src/node.ts +62 -0
  183. package/src/parcel/parcel-manager.ts +1 -1
  184. package/src/repo/repo-context.utils.ts +111 -0
  185. package/src/repo/repo-manager.ts +245 -0
  186. package/src/repo/repo.api.ts +50 -0
  187. package/src/repo/repo.interface.ts +13 -5
  188. package/src/repo/repo.script-loader.ts +140 -0
  189. package/src/shared/log/create-api-logger.ts +36 -0
  190. package/src/shared/log/index.ts +23 -0
  191. package/src/shared/log/log-manager.ts +335 -0
  192. package/src/shared/log/log-scope.ts +123 -0
  193. package/src/shared/utils/config-path.utils.ts +104 -0
  194. package/src/shared/utils/error.utils.ts +15 -0
  195. package/src/shared/utils/id.utils.ts +4 -0
  196. package/src/supabase.ts +1 -1
  197. package/src/task/index.ts +48 -0
  198. package/src/task/local-task-registry.ts +282 -0
  199. package/src/task/task-manager.ts +301 -0
  200. package/src/task/task-post.api.ts +116 -0
  201. package/src/task/task-repo-context.ts +105 -0
  202. package/src/task/task-repo-validation.ts +171 -0
  203. package/src/task/task.api.ts +369 -0
  204. package/src/task/task.interface.ts +12 -2
  205. package/src/trigger/trigger.api.ts +166 -0
  206. package/src/trigger/trigger.interface.ts +50 -0
  207. package/src/trigger/trigger.utils.ts +56 -0
  208. package/dist/task/task-node-manager.d.ts +0 -1
  209. package/dist/task/task-node-manager.d.ts.map +0 -1
  210. package/dist/task/task-node-manager.js +0 -2
  211. package/dist/task/task-node-manager.js.map +0 -1
  212. package/src/task/task-node-manager.ts +0 -0
@@ -0,0 +1,37 @@
1
+ import { BootstrapLocalTasksResult, TASK_RUNNER_ROOT_CONFIG_RELATIVE_PATH } from "./task-repo-context";
2
+ export interface BootstrapLocalTasksOptions {
3
+ /** Absolute or cwd-relative path to root config; if omitted, tries default paths under `cwd` */
4
+ rootConfigPath?: string;
5
+ /** Base directory for resolving root config (default `process.cwd()`) */
6
+ cwd?: string;
7
+ /**
8
+ * When set with an unchanged config fingerprint, skip full scan if this key is already
9
+ * registered in {@link RepoManager}.
10
+ */
11
+ forTaskTypeKey?: string;
12
+ }
13
+ /**
14
+ * Discover local task packages from config files and register them with {@link RepoManager}.
15
+ *
16
+ * **Never throws** for missing root config — returns `{ status: "not_configured" }`.
17
+ *
18
+ * Re-scans are skipped when the config fingerprint is unchanged (root config + taskDir mtimes).
19
+ * Concurrent calls share a single in-flight scan (single-flight).
20
+ *
21
+ * Host app layout (recommended):
22
+ * ```
23
+ * ./config/task.config.js → { taskDir: "../tasks" }
24
+ * ./tasks/my-task/task.config.js
25
+ * ./tasks/my-task/index.mjs
26
+ * ```
27
+ *
28
+ * `taskDir` / `entry` paths are relative to **their config file's directory** (see config-file-relative-paths skill).
29
+ *
30
+ * Legacy fallback: `./task.config.js` at project root (`taskDir: "./tasks"`).
31
+ */
32
+ export declare function bootstrapLocalTasks(options?: BootstrapLocalTasksOptions): Promise<BootstrapLocalTasksResult>;
33
+ /** Clear fingerprint cache (tests / hot-reload tooling). */
34
+ export declare function clearBootstrapLocalTasksCache(): void;
35
+ export declare function getRegisteredLocalTaskTypeKeys(): string[];
36
+ export { TASK_RUNNER_ROOT_CONFIG_RELATIVE_PATH };
37
+ //# sourceMappingURL=local-task-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-task-registry.d.ts","sourceRoot":"","sources":["../../src/task/local-task-registry.ts"],"names":[],"mappings":"AAWA,OAAO,EACH,yBAAyB,EAGzB,qCAAqC,EAGxC,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,0BAA0B;IACvC,gGAAgG;IAChG,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yEAAyE;IACzE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAiND;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,mBAAmB,CACrC,OAAO,GAAE,0BAA+B,GACzC,OAAO,CAAC,yBAAyB,CAAC,CASpC;AAED,4DAA4D;AAC5D,wBAAgB,6BAA6B,IAAI,IAAI,CAGpD;AAED,wBAAgB,8BAA8B,IAAI,MAAM,EAAE,CAEzD;AAED,OAAO,EAAE,qCAAqC,EAAE,CAAC"}
@@ -0,0 +1,214 @@
1
+ import { readdir, stat } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ import { RepoManager } from "../repo/repo-manager";
4
+ import { importJsConfigModule, pathExists, resolveFirstExistingPath, resolvePathFromBaseDir, resolvePathFromConfigFile, } from "../shared/utils/config-path.utils";
5
+ import { TASK_LOCAL_PACKAGE_CONFIG_FILENAME, TASK_RUNNER_ROOT_CONFIG_LEGACY_RELATIVE_PATH, TASK_RUNNER_ROOT_CONFIG_RELATIVE_PATH, } from "./task-repo-context";
6
+ const EMPTY_RESULT = {
7
+ status: "not_configured",
8
+ registered: [],
9
+ skipped: [],
10
+ errors: [],
11
+ };
12
+ let bootstrapCache = { fingerprint: null, lastResult: null };
13
+ let bootstrapInFlight = null;
14
+ function parseRootConfig(raw, configPath) {
15
+ if (raw == null || typeof raw !== "object") {
16
+ throw new Error(`Root config must export an object: ${configPath}`);
17
+ }
18
+ const record = raw;
19
+ const taskDir = record.taskDir;
20
+ if (typeof taskDir !== "string" || taskDir.trim() === "") {
21
+ throw new Error(`Root config.taskDir must be a non-empty string: ${configPath}`);
22
+ }
23
+ return { taskDir: taskDir.trim() };
24
+ }
25
+ function parseTaskPackageConfig(raw, configPath) {
26
+ if (raw == null || typeof raw !== "object") {
27
+ throw new Error(`Task config must export an object: ${configPath}`);
28
+ }
29
+ const record = raw;
30
+ const taskTypeKey = record.taskTypeKey;
31
+ const entry = record.entry;
32
+ if (typeof taskTypeKey !== "string" || taskTypeKey.trim() === "") {
33
+ throw new Error(`taskTypeKey must be a non-empty string: ${configPath}`);
34
+ }
35
+ if (typeof entry !== "string" || entry.trim() === "") {
36
+ throw new Error(`entry must be a non-empty string: ${configPath}`);
37
+ }
38
+ return {
39
+ taskTypeKey: taskTypeKey.trim(),
40
+ entry: entry.trim(),
41
+ exportName: typeof record.exportName === "string" ? record.exportName : undefined,
42
+ displayName: typeof record.displayName === "string" ? record.displayName : undefined,
43
+ enabled: record.enabled === false ? false : true,
44
+ };
45
+ }
46
+ function finalizeStatus(result) {
47
+ if (result.errors.length > 0 && result.registered.length === 0) {
48
+ return "failed";
49
+ }
50
+ if (result.registered.length === 0) {
51
+ return "empty";
52
+ }
53
+ return "loaded";
54
+ }
55
+ async function computeConfigFingerprint(rootConfigPath, tasksRoot) {
56
+ const rootStat = await stat(rootConfigPath);
57
+ const tasksRootStat = await stat(tasksRoot);
58
+ const entries = await readdir(tasksRoot, { withFileTypes: true });
59
+ const configMtims = [];
60
+ for (const entry of entries) {
61
+ if (!entry.isDirectory()) {
62
+ continue;
63
+ }
64
+ const configPath = join(tasksRoot, entry.name, TASK_LOCAL_PACKAGE_CONFIG_FILENAME);
65
+ if (await pathExists(configPath)) {
66
+ const configStat = await stat(configPath);
67
+ configMtims.push(configStat.mtimeMs);
68
+ }
69
+ }
70
+ configMtims.sort((a, b) => a - b);
71
+ return `${rootConfigPath}:${rootStat.mtimeMs}:${tasksRoot}:${tasksRootStat.mtimeMs}:${configMtims.join(",")}`;
72
+ }
73
+ function canUseCachedBootstrap(fingerprint, forTaskTypeKey) {
74
+ if (bootstrapCache.fingerprint !== fingerprint || bootstrapCache.lastResult == null) {
75
+ return null;
76
+ }
77
+ if (forTaskTypeKey != null && forTaskTypeKey !== "") {
78
+ if (!RepoManager.hasLocalRepo(forTaskTypeKey)) {
79
+ return null;
80
+ }
81
+ }
82
+ return { ...bootstrapCache.lastResult, cached: true };
83
+ }
84
+ async function runBootstrapScan(options) {
85
+ const cwd = options.cwd ?? process.cwd();
86
+ const rootConfigPath = await resolveFirstExistingPath(cwd, {
87
+ explicitPath: options.rootConfigPath,
88
+ candidatePaths: [
89
+ TASK_RUNNER_ROOT_CONFIG_RELATIVE_PATH,
90
+ TASK_RUNNER_ROOT_CONFIG_LEGACY_RELATIVE_PATH,
91
+ ],
92
+ });
93
+ if (rootConfigPath == null) {
94
+ const result = {
95
+ ...EMPTY_RESULT,
96
+ message: `No root config (tried ${TASK_RUNNER_ROOT_CONFIG_RELATIVE_PATH}, ${TASK_RUNNER_ROOT_CONFIG_LEGACY_RELATIVE_PATH})`,
97
+ };
98
+ bootstrapCache = { fingerprint: null, lastResult: result };
99
+ return result;
100
+ }
101
+ const result = {
102
+ registered: [],
103
+ skipped: [],
104
+ errors: [],
105
+ };
106
+ try {
107
+ const rootRaw = await importJsConfigModule(rootConfigPath);
108
+ const { taskDir } = parseRootConfig(rootRaw, rootConfigPath);
109
+ const tasksRoot = resolvePathFromConfigFile(rootConfigPath, taskDir);
110
+ if (!(await pathExists(tasksRoot))) {
111
+ const failed = {
112
+ status: "failed",
113
+ message: `taskDir does not exist: ${tasksRoot}`,
114
+ ...result,
115
+ };
116
+ bootstrapCache = { fingerprint: null, lastResult: failed };
117
+ return failed;
118
+ }
119
+ const fingerprint = await computeConfigFingerprint(rootConfigPath, tasksRoot);
120
+ const cached = canUseCachedBootstrap(fingerprint, options.forTaskTypeKey);
121
+ if (cached != null) {
122
+ return cached;
123
+ }
124
+ const entries = await readdir(tasksRoot, { withFileTypes: true });
125
+ for (const entry of entries) {
126
+ if (!entry.isDirectory()) {
127
+ continue;
128
+ }
129
+ const taskPackageDir = join(tasksRoot, entry.name);
130
+ const taskConfigPath = join(taskPackageDir, TASK_LOCAL_PACKAGE_CONFIG_FILENAME);
131
+ if (!(await pathExists(taskConfigPath))) {
132
+ result.skipped.push({ taskDir: taskPackageDir, reason: "missing task.config.js" });
133
+ continue;
134
+ }
135
+ try {
136
+ const taskRaw = await importJsConfigModule(taskConfigPath);
137
+ const taskConfig = parseTaskPackageConfig(taskRaw, taskConfigPath);
138
+ if (taskConfig.enabled === false) {
139
+ result.skipped.push({ taskDir: taskPackageDir, reason: "disabled in task.config.js" });
140
+ continue;
141
+ }
142
+ const entryPath = resolvePathFromBaseDir(taskPackageDir, taskConfig.entry);
143
+ if (!(await pathExists(entryPath))) {
144
+ throw new Error(`entry module not found: ${entryPath}`);
145
+ }
146
+ RepoManager.registerLocalModule(taskConfig.taskTypeKey, entryPath, taskConfig.exportName);
147
+ result.registered.push(taskConfig.taskTypeKey);
148
+ }
149
+ catch (error) {
150
+ result.errors.push({
151
+ taskDir: taskPackageDir,
152
+ error: error instanceof Error ? error.message : String(error),
153
+ });
154
+ }
155
+ }
156
+ const status = finalizeStatus(result);
157
+ const finalResult = {
158
+ status,
159
+ message: status === "empty"
160
+ ? `Root config loaded but no tasks registered under ${tasksRoot}`
161
+ : undefined,
162
+ ...result,
163
+ };
164
+ bootstrapCache = { fingerprint, lastResult: finalResult };
165
+ return finalResult;
166
+ }
167
+ catch (error) {
168
+ const failed = {
169
+ status: "failed",
170
+ message: error instanceof Error ? error.message : String(error),
171
+ ...result,
172
+ };
173
+ bootstrapCache = { fingerprint: null, lastResult: failed };
174
+ return failed;
175
+ }
176
+ }
177
+ /**
178
+ * Discover local task packages from config files and register them with {@link RepoManager}.
179
+ *
180
+ * **Never throws** for missing root config — returns `{ status: "not_configured" }`.
181
+ *
182
+ * Re-scans are skipped when the config fingerprint is unchanged (root config + taskDir mtimes).
183
+ * Concurrent calls share a single in-flight scan (single-flight).
184
+ *
185
+ * Host app layout (recommended):
186
+ * ```
187
+ * ./config/task.config.js → { taskDir: "../tasks" }
188
+ * ./tasks/my-task/task.config.js
189
+ * ./tasks/my-task/index.mjs
190
+ * ```
191
+ *
192
+ * `taskDir` / `entry` paths are relative to **their config file's directory** (see config-file-relative-paths skill).
193
+ *
194
+ * Legacy fallback: `./task.config.js` at project root (`taskDir: "./tasks"`).
195
+ */
196
+ export async function bootstrapLocalTasks(options = {}) {
197
+ if (bootstrapInFlight != null) {
198
+ return bootstrapInFlight;
199
+ }
200
+ bootstrapInFlight = runBootstrapScan(options).finally(() => {
201
+ bootstrapInFlight = null;
202
+ });
203
+ return bootstrapInFlight;
204
+ }
205
+ /** Clear fingerprint cache (tests / hot-reload tooling). */
206
+ export function clearBootstrapLocalTasksCache() {
207
+ bootstrapCache = { fingerprint: null, lastResult: null };
208
+ bootstrapInFlight = null;
209
+ }
210
+ export function getRegisteredLocalTaskTypeKeys() {
211
+ return RepoManager.getRegisteredLocalTaskTypeKeys();
212
+ }
213
+ export { TASK_RUNNER_ROOT_CONFIG_RELATIVE_PATH };
214
+ //# sourceMappingURL=local-task-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-task-registry.js","sourceRoot":"","sources":["../../src/task/local-task-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ import { LoggerWithScope } from "../shared/log";
2
+ import { ResultCode, Task } from "./task.interface";
3
+ import { ExecutableTaskFn } from "./task-repo-context";
4
+ export type { TaskFn, TaskRepoContext, TaskRunResult, ExecutableTaskFn, TaskRepoScriptDetails, TaskRepoScriptRecord, TaskRunnerRootConfig, TaskLocalPackageConfig, BootstrapLocalTasksResult, BootstrapLocalTasksStatus, } from "./task-repo-context";
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, clearBootstrapLocalTasksCache, getRegisteredLocalTaskTypeKeys } from "./local-task-registry";
7
+ import type { BootstrapLocalTasksResult } from "./task-repo-context";
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";
13
+ export interface PrepareTaskResponse {
14
+ isSuccess: boolean;
15
+ taskFn: ExecutableTaskFn | null;
16
+ code?: ResultCode;
17
+ message?: string;
18
+ reason?: PrepareTaskFailureReason;
19
+ /** Pipeline step for log aggregation */
20
+ step?: string;
21
+ }
22
+ export interface PrepareTaskParams {
23
+ logger: LoggerWithScope;
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;
31
+ }
32
+ export interface RegisterTasksOptions {
33
+ logger: LoggerWithScope;
34
+ local?: BootstrapLocalTasksOptions;
35
+ /** When `true` (default), union local keys with remote `Repo.value` from Supabase. */
36
+ includeRemote?: boolean;
37
+ }
38
+ export interface RegisterTasksResult {
39
+ availableTaskList: string[];
40
+ local: BootstrapLocalTasksResult;
41
+ remote: {
42
+ values: string[];
43
+ };
44
+ includeRemote: boolean;
45
+ }
46
+ /**
47
+ * Worker startup: discover local task packages + remote Repo rows, merge into `availableTaskList`.
48
+ *
49
+ * - Local: {@link bootstrapLocalTasks} → registers modules in {@link RepoManager}
50
+ * - Remote: {@link getScanRemoteRepoValues} with {@link TASK_REPO_USAGE}
51
+ * - Merge: union of both; execution still prefers local registry in {@link RepoManager.getRepoContext}
52
+ *
53
+ * @throws When merged list is empty (no task types to claim).
54
+ */
55
+ declare function registerTasks({ logger, local: localOptions, includeRemote, }: RegisterTasksOptions): Promise<RegisterTasksResult>;
56
+ declare const TaskManager: {
57
+ registerTasks: typeof registerTasks;
58
+ prepareTask: ({ logger, task, includeRemote, bootstrapLocalOptions, }: PrepareTaskParams) => Promise<PrepareTaskResponse>;
59
+ bootstrapLocalTasks: typeof bootstrapLocalTasks;
60
+ getRegisteredLocalTaskTypeKeys: typeof getRegisteredLocalTaskTypeKeys;
61
+ clearBootstrapLocalTasksCache: typeof clearBootstrapLocalTasksCache;
62
+ };
63
+ export { TaskManager };
64
+ //# sourceMappingURL=task-manager.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,196 @@
1
+ import { getScanRemoteRepoValues } from "../repo/repo.api";
2
+ import { TASK_REPO_USAGE } from "../repo/repo.interface";
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";
4
+ import { bootstrapLocalTasks, clearBootstrapLocalTasksCache, getRegisteredLocalTaskTypeKeys, } from "./local-task-registry";
5
+ import { TaskRepoValidation } from "./task-repo-validation";
6
+ export { TaskRepoValidation } from "./task-repo-validation";
7
+ function logLocalBootstrap(logger, bootstrap) {
8
+ switch (bootstrap.status) {
9
+ case "not_configured":
10
+ logger.info("未找到本地任務配置,跳過本地註冊", {
11
+ topic: "task",
12
+ data: { message: bootstrap.message },
13
+ });
14
+ break;
15
+ case "failed":
16
+ logger.warn("本地任務註冊失敗", {
17
+ topic: "task",
18
+ data: { message: bootstrap.message, errors: bootstrap.errors },
19
+ });
20
+ break;
21
+ case "empty":
22
+ logger.info("本地任務掃描完成,無已註冊任務", {
23
+ topic: "task",
24
+ data: { message: bootstrap.message, skipped: bootstrap.skipped },
25
+ });
26
+ break;
27
+ case "loaded":
28
+ logger.info("本地任務註冊完成", {
29
+ topic: "task",
30
+ data: {
31
+ registered: bootstrap.registered,
32
+ skipped: bootstrap.skipped,
33
+ errors: bootstrap.errors,
34
+ },
35
+ });
36
+ break;
37
+ }
38
+ }
39
+ /**
40
+ * Worker startup: discover local task packages + remote Repo rows, merge into `availableTaskList`.
41
+ *
42
+ * - Local: {@link bootstrapLocalTasks} → registers modules in {@link RepoManager}
43
+ * - Remote: {@link getScanRemoteRepoValues} with {@link TASK_REPO_USAGE}
44
+ * - Merge: union of both; execution still prefers local registry in {@link RepoManager.getRepoContext}
45
+ *
46
+ * @throws When merged list is empty (no task types to claim).
47
+ */
48
+ async function registerTasks({ logger, local: localOptions, includeRemote = true, }) {
49
+ logger.info("開始註冊任務(本地 + 遠程)", { topic: "task" });
50
+ const local = await bootstrapLocalTasks(localOptions ?? {});
51
+ logLocalBootstrap(logger, local);
52
+ let remoteValues = [];
53
+ if (includeRemote) {
54
+ logger.info("查詢遠程 Repo 列表", {
55
+ topic: "task",
56
+ data: { usage: TASK_REPO_USAGE },
57
+ });
58
+ const { data, error: remoteError } = await getScanRemoteRepoValues({ usage: TASK_REPO_USAGE });
59
+ if (remoteError) {
60
+ throw new Error(remoteError.message);
61
+ }
62
+ remoteValues = data ?? [];
63
+ logger.info("遠程 Repo 查詢完成", {
64
+ topic: "task",
65
+ data: { count: remoteValues.length, values: remoteValues },
66
+ });
67
+ }
68
+ const availableTaskList = [...new Set([...local.registered, ...remoteValues])];
69
+ if (availableTaskList.length === 0) {
70
+ throw new Error("[registerTasks] 任務註冊失敗:本地與遠程均無可用任務類型");
71
+ }
72
+ logger.success("任務註冊完成", {
73
+ topic: "task",
74
+ data: {
75
+ availableTaskList,
76
+ localRegistered: local.registered,
77
+ remoteValues,
78
+ },
79
+ });
80
+ return {
81
+ availableTaskList,
82
+ local,
83
+ remote: { values: remoteValues },
84
+ includeRemote,
85
+ };
86
+ }
87
+ /** 将 taskFn 与 params 闭包绑定,供 TaskNode 无参调用 `await taskFn()` */
88
+ function bindTaskFn(taskFn, taskParams) {
89
+ const run = async () => taskFn(taskParams);
90
+ return Object.assign(run, {
91
+ displayName: taskFn.displayName,
92
+ taskTypeKey: taskFn.taskTypeKey,
93
+ });
94
+ }
95
+ /**
96
+ * 將 Supabase 認領到的 Task 解析為可執行的 `ExecutableTaskFn`。
97
+ *
98
+ * 流程:
99
+ * 1. 從 task.details 取出 `params`;`task.value` 作為 taskTypeKey(同 {@link Repo.value})
100
+ * 2. {@link TaskRepoValidation.validate} — 本地註冊優先;未命中時可選遠端(`includeRemote`)
101
+ * Worker 在 registry 未命中時會補掃本地(`local_bootstrap_on_miss`)
102
+ * 3. bindTaskFn,返回閉包後的無參執行函數
103
+ *
104
+ * 失敗時返回 `{ isSuccess: false, code, message, reason, step }`(不 throw)。
105
+ */
106
+ const prepareTask = async ({ logger, task, includeRemote = true, bootstrapLocalOptions, }) => {
107
+ const fail = (params) => {
108
+ logger.warn(params.message, {
109
+ topic: "task",
110
+ data: {
111
+ taskId: task.id,
112
+ taskTypeKey: task.value,
113
+ reason: params.reason,
114
+ step: params.step,
115
+ },
116
+ });
117
+ return {
118
+ isSuccess: false,
119
+ taskFn: null,
120
+ code: params.code,
121
+ message: params.message,
122
+ reason: params.reason,
123
+ step: params.step,
124
+ };
125
+ };
126
+ const { id: taskId, name: taskName, value: taskTypeKey, details } = task;
127
+ logger.info(`開始準備任務 ${taskName}-${taskTypeKey}`, {
128
+ topic: "task",
129
+ data: { taskId, taskName, taskTypeKey },
130
+ });
131
+ const { params: taskParams } = details;
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
+ },
148
+ });
149
+ }
150
+ const validation = await TaskRepoValidation.validate({
151
+ logger,
152
+ taskTypeKey,
153
+ params: taskParams,
154
+ includeRemote,
155
+ });
156
+ if (!validation.isValid) {
157
+ return fail({
158
+ reason: validation.reason,
159
+ code: validation.code,
160
+ message: validation.message,
161
+ step: validation.step,
162
+ });
163
+ }
164
+ const { repoContext } = validation;
165
+ logger.info("Repo 上下文加載成功", {
166
+ topic: "task",
167
+ data: {
168
+ taskTypeKey,
169
+ taskFnDisplayName: repoContext.taskFn.displayName,
170
+ step: "repo_load",
171
+ },
172
+ });
173
+ const boundTaskFn = bindTaskFn(repoContext.taskFn, taskParams);
174
+ logger.success("任務準備完成", {
175
+ topic: "task",
176
+ data: {
177
+ taskId,
178
+ taskTypeKey,
179
+ displayName: boundTaskFn.displayName,
180
+ step: "bind",
181
+ },
182
+ });
183
+ return {
184
+ isSuccess: true,
185
+ taskFn: boundTaskFn,
186
+ };
187
+ };
188
+ const TaskManager = {
189
+ registerTasks,
190
+ prepareTask,
191
+ bootstrapLocalTasks,
192
+ getRegisteredLocalTaskTypeKeys,
193
+ clearBootstrapLocalTasksCache,
194
+ };
195
+ export { TaskManager };
196
+ //# sourceMappingURL=task-manager.js.map
@@ -0,0 +1 @@
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"}