@guckdev/core 0.3.0 → 0.3.1
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-store.d.ts","sourceRoot":"","sources":["../../src/store/file-store.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EAChB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"file-store.d.ts","sourceRoot":"","sources":["../../src/store/file-store.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EAChB,MAAM,cAAc,CAAC;AA2EtB,eAAO,MAAM,WAAW,GACtB,UAAU,MAAM,EAChB,OAAO,SAAS,KACf,OAAO,CAAC,MAAM,CAYhB,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,UAAU,MAAM,EAChB,QAAQ,UAAU,EAClB,QAAQ,gBAAgB,KACvB,OAAO,CAAC;IAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CA0BrD,CAAC;AAEF,eAAO,MAAM,WAAW,GACtB,UAAU,MAAM,EAChB,QAAQ,UAAU,EAClB,QAAQ,eAAe,KACtB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CA2C5D,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,UAAU,MAAM,EAChB,QAAQ,UAAU,EAClB,QAAQ,kBAAkB,KACzB,OAAO,CAAC;IACT,QAAQ,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpG,CA6CA,CAAC"}
|
package/dist/store/file-store.js
CHANGED
|
@@ -3,8 +3,19 @@ import path from "node:path";
|
|
|
3
3
|
import readline from "node:readline";
|
|
4
4
|
import { parseTimeInput, normalizeTimestamp, formatDateSegment } from "./time.js";
|
|
5
5
|
import { eventMatches } from "./filters.js";
|
|
6
|
+
const SHARED_DIR_MODE = 0o777;
|
|
7
|
+
const SHARED_FILE_MODE = 0o666;
|
|
8
|
+
const safeChmod = async (targetPath, mode) => {
|
|
9
|
+
try {
|
|
10
|
+
await fs.promises.chmod(targetPath, mode);
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
// Best-effort only; ignore permission errors to avoid crashing.
|
|
14
|
+
}
|
|
15
|
+
};
|
|
6
16
|
const ensureDir = async (dir) => {
|
|
7
17
|
await fs.promises.mkdir(dir, { recursive: true });
|
|
18
|
+
await safeChmod(dir, SHARED_DIR_MODE);
|
|
8
19
|
};
|
|
9
20
|
const getEventTimestamp = (event) => {
|
|
10
21
|
return normalizeTimestamp(event.ts);
|
|
@@ -57,10 +68,15 @@ const readJsonLines = async (filePath, onEvent) => {
|
|
|
57
68
|
};
|
|
58
69
|
export const appendEvent = async (storeDir, event) => {
|
|
59
70
|
const dateSegment = formatDateSegment(new Date(event.ts));
|
|
60
|
-
const
|
|
71
|
+
const serviceDir = path.join(storeDir, event.service);
|
|
72
|
+
const fileDir = path.join(serviceDir, dateSegment);
|
|
61
73
|
await ensureDir(fileDir);
|
|
74
|
+
await safeChmod(storeDir, SHARED_DIR_MODE);
|
|
75
|
+
await safeChmod(serviceDir, SHARED_DIR_MODE);
|
|
76
|
+
await safeChmod(fileDir, SHARED_DIR_MODE);
|
|
62
77
|
const filePath = path.join(fileDir, `${event.run_id}.jsonl`);
|
|
63
78
|
await fs.promises.appendFile(filePath, `${JSON.stringify(event)}\n`, "utf8");
|
|
79
|
+
await safeChmod(filePath, SHARED_FILE_MODE);
|
|
64
80
|
return filePath;
|
|
65
81
|
};
|
|
66
82
|
export const searchEvents = async (storeDir, config, params) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-store.js","sourceRoot":"","sources":["../../src/store/file-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,QAAQ,MAAM,eAAe,CAAC;AAQrC,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,SAAS,GAAG,KAAK,EAAE,GAAW,EAAiB,EAAE;IACrD,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"file-store.js","sourceRoot":"","sources":["../../src/store/file-store.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/store/file-store.ts
CHANGED
|
@@ -11,8 +11,20 @@ import {
|
|
|
11
11
|
import { parseTimeInput, normalizeTimestamp, formatDateSegment } from "./time.js";
|
|
12
12
|
import { eventMatches } from "./filters.js";
|
|
13
13
|
|
|
14
|
+
const SHARED_DIR_MODE = 0o777;
|
|
15
|
+
const SHARED_FILE_MODE = 0o666;
|
|
16
|
+
|
|
17
|
+
const safeChmod = async (targetPath: string, mode: number): Promise<void> => {
|
|
18
|
+
try {
|
|
19
|
+
await fs.promises.chmod(targetPath, mode);
|
|
20
|
+
} catch {
|
|
21
|
+
// Best-effort only; ignore permission errors to avoid crashing.
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
|
|
14
25
|
const ensureDir = async (dir: string): Promise<void> => {
|
|
15
26
|
await fs.promises.mkdir(dir, { recursive: true });
|
|
27
|
+
await safeChmod(dir, SHARED_DIR_MODE);
|
|
16
28
|
};
|
|
17
29
|
|
|
18
30
|
const getEventTimestamp = (event: GuckEvent): number | undefined => {
|
|
@@ -75,10 +87,15 @@ export const appendEvent = async (
|
|
|
75
87
|
event: GuckEvent,
|
|
76
88
|
): Promise<string> => {
|
|
77
89
|
const dateSegment = formatDateSegment(new Date(event.ts));
|
|
78
|
-
const
|
|
90
|
+
const serviceDir = path.join(storeDir, event.service);
|
|
91
|
+
const fileDir = path.join(serviceDir, dateSegment);
|
|
79
92
|
await ensureDir(fileDir);
|
|
93
|
+
await safeChmod(storeDir, SHARED_DIR_MODE);
|
|
94
|
+
await safeChmod(serviceDir, SHARED_DIR_MODE);
|
|
95
|
+
await safeChmod(fileDir, SHARED_DIR_MODE);
|
|
80
96
|
const filePath = path.join(fileDir, `${event.run_id}.jsonl`);
|
|
81
97
|
await fs.promises.appendFile(filePath, `${JSON.stringify(event)}\n`, "utf8");
|
|
98
|
+
await safeChmod(filePath, SHARED_FILE_MODE);
|
|
82
99
|
return filePath;
|
|
83
100
|
};
|
|
84
101
|
|