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.
- package/README.md +66 -0
- package/dist/browser.d.ts +52 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +45 -0
- package/dist/browser.js.map +1 -0
- package/dist/command/command.api.js +5 -5
- package/dist/command/command.api.js.map +1 -1
- package/dist/index.d.ts +2 -48
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -41
- package/dist/index.js.map +1 -1
- package/dist/link/link.interface.d.ts +1 -1
- package/dist/link/link.interface.d.ts.map +1 -1
- package/dist/node/node-log-scope.d.ts +11 -0
- package/dist/node/node-log-scope.d.ts.map +1 -0
- package/dist/node/node-log-scope.js +7 -0
- package/dist/node/node-log-scope.js.map +1 -0
- package/dist/node/node-runtime.base.d.ts +42 -0
- package/dist/node/node-runtime.base.d.ts.map +1 -0
- package/dist/node/node-runtime.base.js +397 -0
- package/dist/node/node-runtime.base.js.map +1 -0
- package/dist/node/node.api.d.ts +3 -3
- package/dist/node/node.api.js +3 -3
- package/dist/node/node.api.js.map +1 -1
- package/dist/node/task-node.d.ts +20 -0
- package/dist/node/task-node.d.ts.map +1 -0
- package/dist/node/task-node.js +245 -0
- package/dist/node/task-node.js.map +1 -0
- package/dist/node/trigger-node.d.ts +18 -0
- package/dist/node/trigger-node.d.ts.map +1 -0
- package/dist/node/trigger-node.js +150 -0
- package/dist/node/trigger-node.js.map +1 -0
- package/dist/node.d.ts +22 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +19 -0
- package/dist/node.js.map +1 -0
- package/dist/repo/repo-manager.d.ts +14 -3
- package/dist/repo/repo-manager.d.ts.map +1 -1
- package/dist/repo/repo-manager.js +27 -17
- package/dist/repo/repo-manager.js.map +1 -1
- package/dist/repo/repo.script-loader.d.ts +3 -3
- package/dist/repo/repo.script-loader.d.ts.map +1 -1
- package/dist/repo/repo.script-loader.js +10 -10
- package/dist/repo/repo.script-loader.js.map +1 -1
- package/dist/shared/log/create-api-logger.d.ts +10 -6
- package/dist/shared/log/create-api-logger.d.ts.map +1 -1
- package/dist/shared/log/create-api-logger.js +10 -6
- package/dist/shared/log/create-api-logger.js.map +1 -1
- package/dist/shared/log/index.d.ts +10 -0
- package/dist/shared/log/index.d.ts.map +1 -0
- package/dist/shared/log/index.js +10 -0
- package/dist/shared/log/index.js.map +1 -0
- package/dist/shared/log/log-manager.d.ts +25 -46
- package/dist/shared/log/log-manager.d.ts.map +1 -1
- package/dist/shared/log/log-manager.js +59 -40
- package/dist/shared/log/log-manager.js.map +1 -1
- package/dist/shared/log/log-scope.d.ts +49 -0
- package/dist/shared/log/log-scope.d.ts.map +1 -0
- package/dist/shared/log/log-scope.js +70 -0
- package/dist/shared/log/log-scope.js.map +1 -0
- package/dist/task/index.d.ts +15 -0
- package/dist/task/index.d.ts.map +1 -0
- package/dist/task/index.js +14 -0
- package/dist/task/index.js.map +1 -0
- package/dist/task/local-task-registry.d.ts +10 -0
- package/dist/task/local-task-registry.d.ts.map +1 -1
- package/dist/task/local-task-registry.js +83 -22
- package/dist/task/local-task-registry.js.map +1 -1
- package/dist/task/task-manager.d.ts +18 -6
- package/dist/task/task-manager.d.ts.map +1 -1
- package/dist/task/task-manager.js +46 -67
- package/dist/task/task-manager.js.map +1 -1
- package/dist/task/task-post.api.d.ts +49 -0
- package/dist/task/task-post.api.d.ts.map +1 -0
- package/dist/task/task-post.api.js +91 -0
- package/dist/task/task-post.api.js.map +1 -0
- package/dist/task/task-repo-context.d.ts +2 -0
- package/dist/task/task-repo-context.d.ts.map +1 -1
- package/dist/task/task-repo-context.js.map +1 -1
- package/dist/task/task-repo-validation.d.ts +46 -0
- package/dist/task/task-repo-validation.d.ts.map +1 -0
- package/dist/task/task-repo-validation.js +96 -0
- package/dist/task/task-repo-validation.js.map +1 -0
- package/dist/task/task.api.d.ts +11 -53
- package/dist/task/task.api.d.ts.map +1 -1
- package/dist/task/task.api.js +13 -61
- package/dist/task/task.api.js.map +1 -1
- package/dist/task/task.interface.d.ts +2 -0
- package/dist/task/task.interface.d.ts.map +1 -1
- package/dist/task/task.interface.js.map +1 -1
- package/dist/trigger/trigger.api.d.ts +140 -0
- package/dist/trigger/trigger.api.d.ts.map +1 -0
- package/dist/trigger/trigger.api.js +125 -0
- package/dist/trigger/trigger.api.js.map +1 -0
- package/dist/trigger/trigger.interface.d.ts +43 -0
- package/dist/trigger/trigger.interface.d.ts.map +1 -0
- package/dist/trigger/trigger.interface.js +11 -0
- package/dist/trigger/trigger.interface.js.map +1 -0
- package/dist/trigger/trigger.utils.d.ts +6 -0
- package/dist/trigger/trigger.utils.d.ts.map +1 -0
- package/dist/trigger/trigger.utils.js +39 -0
- package/dist/trigger/trigger.utils.js.map +1 -0
- package/package.json +21 -6
- package/src/browser.ts +100 -0
- package/src/command/command.api.ts +5 -5
- package/src/index.ts +2 -79
- package/src/link/link.interface.ts +1 -1
- package/src/node/node-log-scope.ts +15 -0
- package/src/node/node-runtime.base.ts +450 -0
- package/src/node/node.api.ts +3 -3
- package/src/node/task-node.ts +284 -0
- package/src/node/trigger-node.ts +180 -0
- package/src/node.ts +62 -0
- package/src/repo/repo-manager.ts +49 -21
- package/src/repo/repo.script-loader.ts +13 -13
- package/src/shared/log/create-api-logger.ts +23 -12
- package/src/shared/log/index.ts +23 -0
- package/src/shared/log/log-manager.ts +85 -90
- package/src/shared/log/log-scope.ts +123 -0
- package/src/task/index.ts +48 -0
- package/src/task/local-task-registry.ts +110 -23
- package/src/task/task-manager.ts +73 -84
- package/src/task/task-post.api.ts +116 -0
- package/src/task/task-repo-context.ts +2 -0
- package/src/task/task-repo-validation.ts +171 -0
- package/src/task/task.api.ts +13 -73
- package/src/task/task.interface.ts +2 -0
- package/src/trigger/trigger.api.ts +166 -0
- package/src/trigger/trigger.interface.ts +50 -0
- package/src/trigger/trigger.utils.ts +56 -0
- package/dist/node/node-manager.d.ts +0 -48
- package/dist/node/node-manager.d.ts.map +0 -1
- package/dist/node/node-manager.js +0 -619
- package/dist/node/node-manager.js.map +0 -1
- package/src/node/node-manager.ts +0 -673
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { isDevEnvironment } from "../../core.utils";
|
|
2
2
|
import { generateUniqueId } from "../utils/id.utils";
|
|
3
|
+
import { applyScopePatch, formatScopeLabels, resolveLogData, } from "./log-scope";
|
|
3
4
|
/**
|
|
4
5
|
* Log severity and semantics (low → high). `minLevel` filters by {@link LOG_LEVEL_RANK}.
|
|
5
6
|
*
|
|
@@ -40,7 +41,7 @@ const DEFAULT_OPTIONS = {
|
|
|
40
41
|
function mergeLogOptions(options) {
|
|
41
42
|
return { ...DEFAULT_OPTIONS, ...options };
|
|
42
43
|
}
|
|
43
|
-
function
|
|
44
|
+
function formatDataValue(value) {
|
|
44
45
|
if (value === undefined) {
|
|
45
46
|
return "";
|
|
46
47
|
}
|
|
@@ -54,16 +55,19 @@ function formatContextValue(value) {
|
|
|
54
55
|
return String(value);
|
|
55
56
|
}
|
|
56
57
|
}
|
|
57
|
-
function
|
|
58
|
+
function validateLogScope(logScope) {
|
|
58
59
|
const missing = [];
|
|
59
|
-
if (!
|
|
60
|
+
if (!logScope.module?.trim()) {
|
|
60
61
|
missing.push("module");
|
|
61
62
|
}
|
|
62
|
-
if (!
|
|
63
|
+
if (!logScope.traceId?.trim()) {
|
|
63
64
|
missing.push("traceId");
|
|
64
65
|
}
|
|
66
|
+
if (logScope.traceParentId !== null && typeof logScope.traceParentId !== "string") {
|
|
67
|
+
missing.push("traceParentId");
|
|
68
|
+
}
|
|
65
69
|
if (missing.length > 0) {
|
|
66
|
-
console.warn(`[LogManager]
|
|
70
|
+
console.warn(`[LogManager] LogScope missing or invalid: ${missing.join(", ")}`, logScope);
|
|
67
71
|
}
|
|
68
72
|
}
|
|
69
73
|
class LogManager {
|
|
@@ -105,7 +109,8 @@ class LogManager {
|
|
|
105
109
|
shouldLog(level) {
|
|
106
110
|
return LOG_LEVEL_RANK[level] >= LOG_LEVEL_RANK[this.getMinLevel()];
|
|
107
111
|
}
|
|
108
|
-
createLogEntry(
|
|
112
|
+
createLogEntry(payload) {
|
|
113
|
+
const { level, message, topic, extra, data, module, traceId, traceParentId, labels } = payload;
|
|
109
114
|
return {
|
|
110
115
|
timestamp: Date.now(),
|
|
111
116
|
level,
|
|
@@ -113,9 +118,10 @@ class LogManager {
|
|
|
113
118
|
topic: topic === undefined ? this.options.defaultTopic : topic,
|
|
114
119
|
module,
|
|
115
120
|
traceId,
|
|
116
|
-
|
|
121
|
+
traceParentId,
|
|
122
|
+
labels,
|
|
117
123
|
extra,
|
|
118
|
-
|
|
124
|
+
data,
|
|
119
125
|
};
|
|
120
126
|
}
|
|
121
127
|
formatLevelTag(entry) {
|
|
@@ -131,7 +137,7 @@ class LogManager {
|
|
|
131
137
|
parts.push(`[${new Date(entry.timestamp).toISOString()}]`);
|
|
132
138
|
}
|
|
133
139
|
parts.push(this.formatLevelTag(entry));
|
|
134
|
-
parts.push(`traceId=${entry.traceId}
|
|
140
|
+
parts.push(`traceId=${entry.traceId} parent=${entry.traceParentId ?? "null"} labels=${formatScopeLabels(entry.labels)} module=${entry.module} topic=${entry.topic ?? "--"}`);
|
|
135
141
|
if (this.options.formatPrefix) {
|
|
136
142
|
parts.push(`prefix=${this.options.formatPrefix}`);
|
|
137
143
|
}
|
|
@@ -140,9 +146,9 @@ class LogManager {
|
|
|
140
146
|
if (entry.extra) {
|
|
141
147
|
parts.push(`| extra=${entry.extra}`);
|
|
142
148
|
}
|
|
143
|
-
const
|
|
144
|
-
if (
|
|
145
|
-
parts.push(`|
|
|
149
|
+
const dataText = formatDataValue(entry.data);
|
|
150
|
+
if (dataText) {
|
|
151
|
+
parts.push(`| data=${dataText}`);
|
|
146
152
|
}
|
|
147
153
|
return parts.join(" ");
|
|
148
154
|
}
|
|
@@ -159,14 +165,21 @@ class LogManager {
|
|
|
159
165
|
console.log(formatted);
|
|
160
166
|
}
|
|
161
167
|
}
|
|
162
|
-
log(level, message,
|
|
168
|
+
log(level, message, logScope, restParams) {
|
|
163
169
|
if (!this.shouldLog(level)) {
|
|
164
170
|
return;
|
|
165
171
|
}
|
|
166
|
-
|
|
167
|
-
const { topic, extra
|
|
168
|
-
const
|
|
169
|
-
const entry = this.createLogEntry({
|
|
172
|
+
validateLogScope(logScope);
|
|
173
|
+
const { topic, extra } = restParams ?? {};
|
|
174
|
+
const data = resolveLogData(restParams);
|
|
175
|
+
const entry = this.createLogEntry({
|
|
176
|
+
level,
|
|
177
|
+
message,
|
|
178
|
+
topic,
|
|
179
|
+
extra,
|
|
180
|
+
data,
|
|
181
|
+
...logScope,
|
|
182
|
+
});
|
|
170
183
|
this.history.push(entry);
|
|
171
184
|
if (this.history.length > this.options.maxHistoryLength) {
|
|
172
185
|
this.history.shift();
|
|
@@ -178,41 +191,47 @@ class LogManager {
|
|
|
178
191
|
generateTraceId() {
|
|
179
192
|
return generateUniqueId();
|
|
180
193
|
}
|
|
181
|
-
debug(message,
|
|
182
|
-
this.log(LogLevel.DEBUG, message,
|
|
194
|
+
debug(message, logScope, restParams) {
|
|
195
|
+
this.log(LogLevel.DEBUG, message, logScope, restParams);
|
|
183
196
|
}
|
|
184
|
-
info(message,
|
|
185
|
-
this.log(LogLevel.INFO, message,
|
|
197
|
+
info(message, logScope, restParams) {
|
|
198
|
+
this.log(LogLevel.INFO, message, logScope, restParams);
|
|
186
199
|
}
|
|
187
|
-
success(message,
|
|
188
|
-
this.log(LogLevel.SUCCESS, message,
|
|
200
|
+
success(message, logScope, restParams) {
|
|
201
|
+
this.log(LogLevel.SUCCESS, message, logScope, restParams);
|
|
189
202
|
}
|
|
190
|
-
warn(message,
|
|
191
|
-
this.log(LogLevel.WARN, message,
|
|
203
|
+
warn(message, logScope, restParams) {
|
|
204
|
+
this.log(LogLevel.WARN, message, logScope, restParams);
|
|
192
205
|
}
|
|
193
|
-
error(message,
|
|
194
|
-
this.log(LogLevel.ERROR, message,
|
|
206
|
+
error(message, logScope, restParams) {
|
|
207
|
+
this.log(LogLevel.ERROR, message, logScope, restParams);
|
|
195
208
|
}
|
|
196
|
-
critical(message,
|
|
197
|
-
this.log(LogLevel.CRITICAL, message,
|
|
209
|
+
critical(message, logScope, restParams) {
|
|
210
|
+
this.log(LogLevel.CRITICAL, message, logScope, restParams);
|
|
198
211
|
}
|
|
199
|
-
|
|
200
|
-
const
|
|
212
|
+
withScope(scope) {
|
|
213
|
+
const boundScope = { ...scope, labels: scope.labels ? { ...scope.labels } : undefined };
|
|
201
214
|
const logger = {
|
|
202
|
-
debug: (message, restParams) => this.debug(message,
|
|
203
|
-
info: (message, restParams) => this.info(message,
|
|
204
|
-
success: (message, restParams) => this.success(message,
|
|
205
|
-
warn: (message, restParams) => this.warn(message,
|
|
206
|
-
error: (message, restParams) => this.error(message,
|
|
207
|
-
critical: (message, restParams) => this.critical(message,
|
|
215
|
+
debug: (message, restParams) => this.debug(message, boundScope, restParams),
|
|
216
|
+
info: (message, restParams) => this.info(message, boundScope, restParams),
|
|
217
|
+
success: (message, restParams) => this.success(message, boundScope, restParams),
|
|
218
|
+
warn: (message, restParams) => this.warn(message, boundScope, restParams),
|
|
219
|
+
error: (message, restParams) => this.error(message, boundScope, restParams),
|
|
220
|
+
critical: (message, restParams) => this.critical(message, boundScope, restParams),
|
|
221
|
+
resetScope: (fields) => {
|
|
222
|
+
const next = applyScopePatch(boundScope, fields);
|
|
223
|
+
boundScope.module = next.module;
|
|
224
|
+
boundScope.traceId = next.traceId;
|
|
225
|
+
boundScope.traceParentId = next.traceParentId;
|
|
226
|
+
boundScope.labels = next.labels;
|
|
227
|
+
},
|
|
208
228
|
resetContext: (fields) => {
|
|
209
|
-
|
|
229
|
+
logger.resetScope(fields);
|
|
210
230
|
},
|
|
211
231
|
};
|
|
212
|
-
return { logger,
|
|
232
|
+
return { logger, scope: boundScope };
|
|
213
233
|
}
|
|
214
234
|
}
|
|
215
235
|
export const logManager = LogManager.getInstance();
|
|
216
236
|
export { LogManager, LogLevel };
|
|
217
|
-
export { createApiLogger } from "./create-api-logger";
|
|
218
237
|
//# sourceMappingURL=log-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-manager.js","sourceRoot":"","sources":["../../../src/shared/log/log-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"log-manager.js","sourceRoot":"","sources":["../../../src/shared/log/log-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/** Logger-bound scope: module + trace chain + optional labels. */
|
|
2
|
+
export interface LogScope {
|
|
3
|
+
module: string;
|
|
4
|
+
traceId: string;
|
|
5
|
+
traceParentId: string | null;
|
|
6
|
+
labels?: Readonly<Record<string, string>>;
|
|
7
|
+
}
|
|
8
|
+
/** Partial update for {@link LogScope} / {@link applyScopePatch}. */
|
|
9
|
+
export type LogScopePatch = Partial<Omit<LogScope, "labels">> & {
|
|
10
|
+
labels?: Record<string, string>;
|
|
11
|
+
};
|
|
12
|
+
export type LogScopeInput = LogScopePatch & Pick<LogScope, "module">;
|
|
13
|
+
interface NormalizeScopeOptions {
|
|
14
|
+
/** When true and traceId is missing, generate a new id. */
|
|
15
|
+
generateTraceId?: boolean;
|
|
16
|
+
}
|
|
17
|
+
/** Coerce partial input into a {@link LogScope}. */
|
|
18
|
+
export declare function normalizeScope(input: LogScopeInput, options?: NormalizeScopeOptions): LogScope;
|
|
19
|
+
/** Input for {@link createRootScope}. */
|
|
20
|
+
export type CreateRootScopeInput = {
|
|
21
|
+
module: string;
|
|
22
|
+
traceId?: string;
|
|
23
|
+
labels?: Record<string, string>;
|
|
24
|
+
traceParentId?: string | null;
|
|
25
|
+
};
|
|
26
|
+
/** Root scope: traceParentId defaults to null. */
|
|
27
|
+
export declare function createRootScope(input: CreateRootScopeInput): LogScope;
|
|
28
|
+
/** Input for {@link createChildScope}. */
|
|
29
|
+
export type CreateChildScopeInput = {
|
|
30
|
+
module: string;
|
|
31
|
+
parent: LogScope;
|
|
32
|
+
traceId?: string;
|
|
33
|
+
traceParentId?: string | null;
|
|
34
|
+
labels?: Record<string, string>;
|
|
35
|
+
};
|
|
36
|
+
/** Child scope: parent link defaults to parent.traceId; labels merge with parent. */
|
|
37
|
+
export declare function createChildScope(input: CreateChildScopeInput): LogScope;
|
|
38
|
+
/** Same trace chain, different module (e.g. prepareTask vs executeTask). */
|
|
39
|
+
export declare function withModule(scope: LogScope, module: string): LogScope;
|
|
40
|
+
/** Merge patch into scope (labels deep-merge). */
|
|
41
|
+
export declare function applyScopePatch(scope: LogScope, patch: LogScopePatch): LogScope;
|
|
42
|
+
export declare function formatScopeLabels(labels?: Readonly<Record<string, string>>): string;
|
|
43
|
+
/** Prefer `data`; fall back to deprecated `context` on log rest params. */
|
|
44
|
+
export declare function resolveLogData(rest?: {
|
|
45
|
+
data?: unknown;
|
|
46
|
+
context?: unknown;
|
|
47
|
+
}): unknown | undefined;
|
|
48
|
+
export {};
|
|
49
|
+
//# sourceMappingURL=log-scope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-scope.d.ts","sourceRoot":"","sources":["../../../src/shared/log/log-scope.ts"],"names":[],"mappings":"AAEA,kEAAkE;AAClE,MAAM,WAAW,QAAQ;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC7C;AAED,qEAAqE;AACrE,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAErE,UAAU,qBAAqB;IAC3B,2DAA2D;IAC3D,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B;AAUD,oDAAoD;AACpD,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,QAAQ,CAa9F;AAED,yCAAyC;AACzC,MAAM,MAAM,oBAAoB,GAAG;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC,CAAC;AAEF,kDAAkD;AAClD,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,QAAQ,CAUrE;AAED,0CAA0C;AAC1C,MAAM,MAAM,qBAAqB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,QAAQ,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC,CAAC;AAEF,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,QAAQ,CAWvE;AAED,4EAA4E;AAC5E,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,CAEpE;AAED,kDAAkD;AAClD,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,GAAG,QAAQ,CAO/E;AACD,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAOnF;AAED,2EAA2E;AAC3E,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,GAAG,SAAS,CAQhG"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { generateUniqueId } from "../utils/id.utils";
|
|
2
|
+
function mergeLabels(base, patch) {
|
|
3
|
+
const merged = { ...base, ...patch };
|
|
4
|
+
return Object.keys(merged).length > 0 ? merged : undefined;
|
|
5
|
+
}
|
|
6
|
+
/** Coerce partial input into a {@link LogScope}. */
|
|
7
|
+
export function normalizeScope(input, options) {
|
|
8
|
+
const generateTraceId = options?.generateTraceId ?? false;
|
|
9
|
+
const traceId = input.traceId?.trim() || (generateTraceId ? generateUniqueId() : "");
|
|
10
|
+
if (!traceId) {
|
|
11
|
+
throw new Error("[LogScope] traceId is required (or enable generateTraceId)");
|
|
12
|
+
}
|
|
13
|
+
return {
|
|
14
|
+
module: input.module,
|
|
15
|
+
traceId,
|
|
16
|
+
traceParentId: input.traceParentId ?? null,
|
|
17
|
+
labels: mergeLabels(undefined, input.labels),
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/** Root scope: traceParentId defaults to null. */
|
|
21
|
+
export function createRootScope(input) {
|
|
22
|
+
return normalizeScope({
|
|
23
|
+
module: input.module,
|
|
24
|
+
traceId: input.traceId,
|
|
25
|
+
traceParentId: input.traceParentId ?? null,
|
|
26
|
+
labels: input.labels,
|
|
27
|
+
}, { generateTraceId: true });
|
|
28
|
+
}
|
|
29
|
+
/** Child scope: parent link defaults to parent.traceId; labels merge with parent. */
|
|
30
|
+
export function createChildScope(input) {
|
|
31
|
+
const { module, parent, traceId, traceParentId, labels } = input;
|
|
32
|
+
return normalizeScope({
|
|
33
|
+
module,
|
|
34
|
+
traceId,
|
|
35
|
+
traceParentId: traceParentId ?? parent.traceId,
|
|
36
|
+
labels: mergeLabels(parent.labels, labels),
|
|
37
|
+
}, { generateTraceId: true });
|
|
38
|
+
}
|
|
39
|
+
/** Same trace chain, different module (e.g. prepareTask vs executeTask). */
|
|
40
|
+
export function withModule(scope, module) {
|
|
41
|
+
return { ...scope, module };
|
|
42
|
+
}
|
|
43
|
+
/** Merge patch into scope (labels deep-merge). */
|
|
44
|
+
export function applyScopePatch(scope, patch) {
|
|
45
|
+
return normalizeScope({
|
|
46
|
+
module: patch.module ?? scope.module,
|
|
47
|
+
traceId: patch.traceId ?? scope.traceId,
|
|
48
|
+
traceParentId: patch.traceParentId !== undefined ? patch.traceParentId : scope.traceParentId,
|
|
49
|
+
labels: mergeLabels(scope.labels, patch.labels),
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
export function formatScopeLabels(labels) {
|
|
53
|
+
if (labels == null || Object.keys(labels).length === 0) {
|
|
54
|
+
return "--";
|
|
55
|
+
}
|
|
56
|
+
return Object.entries(labels)
|
|
57
|
+
.map(([key, value]) => `${key}:${value}`)
|
|
58
|
+
.join(",");
|
|
59
|
+
}
|
|
60
|
+
/** Prefer `data`; fall back to deprecated `context` on log rest params. */
|
|
61
|
+
export function resolveLogData(rest) {
|
|
62
|
+
if (rest?.data !== undefined) {
|
|
63
|
+
return rest.data;
|
|
64
|
+
}
|
|
65
|
+
if (rest?.context !== undefined) {
|
|
66
|
+
return rest.context;
|
|
67
|
+
}
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=log-scope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-scope.js","sourceRoot":"","sources":["../../../src/shared/log/log-scope.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task domain public API — curated re-exports only.
|
|
3
|
+
* Internal modules (local-task-registry, task-repo-context, task.utils) stay private.
|
|
4
|
+
*/
|
|
5
|
+
export { CategoryTask, ResultCode, TaskStatus, TaskStatusAction, } from "./task.interface";
|
|
6
|
+
export type { Task, TaskDetails, TaskFlow } from "./task.interface";
|
|
7
|
+
export { patchChangeTaskStatus, patchChangeTaskStatusSchema, patchClaimTask, patchClaimTaskSchema, patchTaskProgress, patchTaskProgressSchema, } from "./task.api";
|
|
8
|
+
export type { PatchChangeTaskStatusPayload, PatchClaimTaskPayload, PatchTaskProgressPayload, } from "./task.api";
|
|
9
|
+
export { postTask, postTaskSchema } from "./task-post.api";
|
|
10
|
+
export type { PostTaskPayload } from "./task-post.api";
|
|
11
|
+
export { TaskManager } from "./task-manager";
|
|
12
|
+
export type { PrepareTaskFailureReason, PrepareTaskParams, PrepareTaskResponse, RegisterTasksOptions, RegisterTasksResult, } from "./task-manager";
|
|
13
|
+
export { TaskRepoValidation } from "./task-repo-validation";
|
|
14
|
+
export type { TaskRepoValidationFailureReason, ValidateTaskRepoAndParamsInput, ValidateTaskRepoAndParamsResult, } from "./task-repo-validation";
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/task/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,gBAAgB,GAChB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGpE,OAAO,EACN,qBAAqB,EACrB,2BAA2B,EAC3B,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,GACvB,MAAM,YAAY,CAAC;AACpB,YAAY,EACX,4BAA4B,EAC5B,qBAAqB,EACrB,wBAAwB,GACxB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC3D,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGvD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EACX,wBAAwB,EACxB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,GACnB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,YAAY,EACX,+BAA+B,EAC/B,8BAA8B,EAC9B,+BAA+B,GAC/B,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task domain public API — curated re-exports only.
|
|
3
|
+
* Internal modules (local-task-registry, task-repo-context, task.utils) stay private.
|
|
4
|
+
*/
|
|
5
|
+
// task.interface
|
|
6
|
+
export { CategoryTask, ResultCode, TaskStatus, TaskStatusAction, } from "./task.interface";
|
|
7
|
+
// task.api
|
|
8
|
+
export { patchChangeTaskStatus, patchChangeTaskStatusSchema, patchClaimTask, patchClaimTaskSchema, patchTaskProgress, patchTaskProgressSchema, } from "./task.api";
|
|
9
|
+
export { postTask, postTaskSchema } from "./task-post.api";
|
|
10
|
+
// task-manager
|
|
11
|
+
export { TaskManager } from "./task-manager";
|
|
12
|
+
// task-repo-validation
|
|
13
|
+
export { TaskRepoValidation } from "./task-repo-validation";
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/task/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,iBAAiB;AACjB,OAAO,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,gBAAgB,GAChB,MAAM,kBAAkB,CAAC;AAG1B,WAAW;AACX,OAAO,EACN,qBAAqB,EACrB,2BAA2B,EAC3B,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,GACvB,MAAM,YAAY,CAAC;AAMpB,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAG3D,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAS7C,uBAAuB;AACvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -4,12 +4,20 @@ export interface BootstrapLocalTasksOptions {
|
|
|
4
4
|
rootConfigPath?: string;
|
|
5
5
|
/** Base directory for resolving root config (default `process.cwd()`) */
|
|
6
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;
|
|
7
12
|
}
|
|
8
13
|
/**
|
|
9
14
|
* Discover local task packages from config files and register them with {@link RepoManager}.
|
|
10
15
|
*
|
|
11
16
|
* **Never throws** for missing root config — returns `{ status: "not_configured" }`.
|
|
12
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
|
+
*
|
|
13
21
|
* Host app layout (recommended):
|
|
14
22
|
* ```
|
|
15
23
|
* ./config/task.config.js → { taskDir: "../tasks" }
|
|
@@ -22,6 +30,8 @@ export interface BootstrapLocalTasksOptions {
|
|
|
22
30
|
* Legacy fallback: `./task.config.js` at project root (`taskDir: "./tasks"`).
|
|
23
31
|
*/
|
|
24
32
|
export declare function bootstrapLocalTasks(options?: BootstrapLocalTasksOptions): Promise<BootstrapLocalTasksResult>;
|
|
33
|
+
/** Clear fingerprint cache (tests / hot-reload tooling). */
|
|
34
|
+
export declare function clearBootstrapLocalTasksCache(): void;
|
|
25
35
|
export declare function getRegisteredLocalTaskTypeKeys(): string[];
|
|
26
36
|
export { TASK_RUNNER_ROOT_CONFIG_RELATIVE_PATH };
|
|
27
37
|
//# sourceMappingURL=local-task-registry.d.ts.map
|
|
@@ -1 +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;
|
|
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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { readdir } from "node:fs/promises";
|
|
1
|
+
import { readdir, stat } from "node:fs/promises";
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import { RepoManager } from "../repo/repo-manager";
|
|
4
4
|
import { importJsConfigModule, pathExists, resolveFirstExistingPath, resolvePathFromBaseDir, resolvePathFromConfigFile, } from "../shared/utils/config-path.utils";
|
|
@@ -9,6 +9,8 @@ const EMPTY_RESULT = {
|
|
|
9
9
|
skipped: [],
|
|
10
10
|
errors: [],
|
|
11
11
|
};
|
|
12
|
+
let bootstrapCache = { fingerprint: null, lastResult: null };
|
|
13
|
+
let bootstrapInFlight = null;
|
|
12
14
|
function parseRootConfig(raw, configPath) {
|
|
13
15
|
if (raw == null || typeof raw !== "object") {
|
|
14
16
|
throw new Error(`Root config must export an object: ${configPath}`);
|
|
@@ -50,23 +52,36 @@ function finalizeStatus(result) {
|
|
|
50
52
|
}
|
|
51
53
|
return "loaded";
|
|
52
54
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
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) {
|
|
70
85
|
const cwd = options.cwd ?? process.cwd();
|
|
71
86
|
const rootConfigPath = await resolveFirstExistingPath(cwd, {
|
|
72
87
|
explicitPath: options.rootConfigPath,
|
|
@@ -76,10 +91,12 @@ export async function bootstrapLocalTasks(options = {}) {
|
|
|
76
91
|
],
|
|
77
92
|
});
|
|
78
93
|
if (rootConfigPath == null) {
|
|
79
|
-
|
|
94
|
+
const result = {
|
|
80
95
|
...EMPTY_RESULT,
|
|
81
96
|
message: `No root config (tried ${TASK_RUNNER_ROOT_CONFIG_RELATIVE_PATH}, ${TASK_RUNNER_ROOT_CONFIG_LEGACY_RELATIVE_PATH})`,
|
|
82
97
|
};
|
|
98
|
+
bootstrapCache = { fingerprint: null, lastResult: result };
|
|
99
|
+
return result;
|
|
83
100
|
}
|
|
84
101
|
const result = {
|
|
85
102
|
registered: [],
|
|
@@ -91,11 +108,18 @@ export async function bootstrapLocalTasks(options = {}) {
|
|
|
91
108
|
const { taskDir } = parseRootConfig(rootRaw, rootConfigPath);
|
|
92
109
|
const tasksRoot = resolvePathFromConfigFile(rootConfigPath, taskDir);
|
|
93
110
|
if (!(await pathExists(tasksRoot))) {
|
|
94
|
-
|
|
111
|
+
const failed = {
|
|
95
112
|
status: "failed",
|
|
96
113
|
message: `taskDir does not exist: ${tasksRoot}`,
|
|
97
114
|
...result,
|
|
98
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;
|
|
99
123
|
}
|
|
100
124
|
const entries = await readdir(tasksRoot, { withFileTypes: true });
|
|
101
125
|
for (const entry of entries) {
|
|
@@ -130,21 +154,58 @@ export async function bootstrapLocalTasks(options = {}) {
|
|
|
130
154
|
}
|
|
131
155
|
}
|
|
132
156
|
const status = finalizeStatus(result);
|
|
133
|
-
|
|
157
|
+
const finalResult = {
|
|
134
158
|
status,
|
|
135
159
|
message: status === "empty"
|
|
136
160
|
? `Root config loaded but no tasks registered under ${tasksRoot}`
|
|
137
161
|
: undefined,
|
|
138
162
|
...result,
|
|
139
163
|
};
|
|
164
|
+
bootstrapCache = { fingerprint, lastResult: finalResult };
|
|
165
|
+
return finalResult;
|
|
140
166
|
}
|
|
141
167
|
catch (error) {
|
|
142
|
-
|
|
168
|
+
const failed = {
|
|
143
169
|
status: "failed",
|
|
144
170
|
message: error instanceof Error ? error.message : String(error),
|
|
145
171
|
...result,
|
|
146
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;
|
|
147
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;
|
|
148
209
|
}
|
|
149
210
|
export function getRegisteredLocalTaskTypeKeys() {
|
|
150
211
|
return RepoManager.getRegisteredLocalTaskTypeKeys();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-task-registry.js","sourceRoot":"","sources":["../../src/task/local-task-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"local-task-registry.js","sourceRoot":"","sources":["../../src/task/local-task-registry.ts"],"names":[],"mappings":"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"}
|