gpt-connector 0.2.0 → 0.3.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/CHANGELOG.md +17 -0
- package/README.md +62 -8
- package/dist/src/browser-launcher.d.ts +57 -0
- package/dist/src/browser-launcher.js +494 -0
- package/dist/src/browser-launcher.js.map +1 -0
- package/dist/src/cdp.js +3 -3
- package/dist/src/cdp.js.map +1 -1
- package/dist/src/cli.js +80 -2
- package/dist/src/cli.js.map +1 -1
- package/dist/src/connector.d.ts +6 -0
- package/dist/src/connector.js +3 -3
- package/dist/src/connector.js.map +1 -1
- package/dist/src/errors.d.ts +1 -1
- package/dist/src/errors.js +2 -2
- package/dist/src/errors.js.map +1 -1
- package/dist/src/factory-diagnostics.d.ts +28 -0
- package/dist/src/factory-diagnostics.js +109 -0
- package/dist/src/factory-diagnostics.js.map +1 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp-server.d.ts +1 -1
- package/dist/src/mcp-server.js +4 -0
- package/dist/src/mcp-server.js.map +1 -1
- package/dist/src/mcp.js +0 -0
- package/dist/src/runtime-error-store.d.ts +157 -0
- package/dist/src/runtime-error-store.js +327 -0
- package/dist/src/runtime-error-store.js.map +1 -0
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/docs/ai-installer-setup-contract.md +137 -0
- package/package.json +5 -3
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
export declare const runtimeErrorStoreSchema: "gpt-connector.runtime-errors.v1";
|
|
2
|
+
export declare const runtimeErrorStateSchemaVersion: "1.0";
|
|
3
|
+
export declare const runtimeErrorStoreDiagnostic = "[gpt-connector:runtime-errors] store_unavailable\n";
|
|
4
|
+
declare const definitions: {
|
|
5
|
+
readonly CDP_UNAVAILABLE: {
|
|
6
|
+
readonly component: "cdp";
|
|
7
|
+
readonly severity: "high";
|
|
8
|
+
readonly template: "GPT Connector CDP connection failed";
|
|
9
|
+
};
|
|
10
|
+
readonly AUTH_REQUIRED: {
|
|
11
|
+
readonly component: "auth";
|
|
12
|
+
readonly severity: "high";
|
|
13
|
+
readonly template: "GPT Connector ChatGPT authentication is required";
|
|
14
|
+
};
|
|
15
|
+
readonly RUNTIME_DRIFT: {
|
|
16
|
+
readonly component: "runtime_bridge";
|
|
17
|
+
readonly severity: "high";
|
|
18
|
+
readonly template: "GPT Connector runtime bridge contract drifted";
|
|
19
|
+
};
|
|
20
|
+
readonly UPLOAD_FAILED: {
|
|
21
|
+
readonly component: "attachment";
|
|
22
|
+
readonly severity: "high";
|
|
23
|
+
readonly template: "GPT Connector attachment upload failed";
|
|
24
|
+
};
|
|
25
|
+
readonly UPLOAD_TIMEOUT: {
|
|
26
|
+
readonly component: "attachment";
|
|
27
|
+
readonly severity: "high";
|
|
28
|
+
readonly template: "GPT Connector attachment upload timed out";
|
|
29
|
+
};
|
|
30
|
+
readonly ATTACHMENT_READBACK_FAILED: {
|
|
31
|
+
readonly component: "attachment";
|
|
32
|
+
readonly severity: "high";
|
|
33
|
+
readonly template: "GPT Connector attachment read-back failed";
|
|
34
|
+
};
|
|
35
|
+
readonly CHAT_FAILED: {
|
|
36
|
+
readonly component: "chat";
|
|
37
|
+
readonly severity: "high";
|
|
38
|
+
readonly template: "GPT Connector ChatGPT chat operation failed";
|
|
39
|
+
};
|
|
40
|
+
readonly STREAM_INCOMPLETE: {
|
|
41
|
+
readonly component: "stream";
|
|
42
|
+
readonly severity: "high";
|
|
43
|
+
readonly template: "GPT Connector ChatGPT stream was incomplete";
|
|
44
|
+
};
|
|
45
|
+
readonly ARCHIVE_FAILED: {
|
|
46
|
+
readonly component: "archive";
|
|
47
|
+
readonly severity: "high";
|
|
48
|
+
readonly template: "GPT Connector conversation archive failed";
|
|
49
|
+
};
|
|
50
|
+
readonly JOB_RECOVERY_UNAVAILABLE: {
|
|
51
|
+
readonly component: "consult_job_store";
|
|
52
|
+
readonly severity: "high";
|
|
53
|
+
readonly template: "GPT Connector consult job state persistence failed";
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
export type RuntimeErrorCode = keyof typeof definitions;
|
|
57
|
+
type Status = "open" | "resolved";
|
|
58
|
+
export interface RuntimeErrorOptions {
|
|
59
|
+
readonly env?: NodeJS.ProcessEnv;
|
|
60
|
+
readonly configPath?: string;
|
|
61
|
+
readonly storePath?: string;
|
|
62
|
+
readonly version?: string;
|
|
63
|
+
readonly now?: string;
|
|
64
|
+
readonly platform?: string;
|
|
65
|
+
readonly arch?: string;
|
|
66
|
+
readonly windowsAcl?: (path: string, directory: boolean) => void;
|
|
67
|
+
}
|
|
68
|
+
export declare function defaultFactoryReporterConfigPath(env?: NodeJS.ProcessEnv): string;
|
|
69
|
+
export declare function defaultRuntimeErrorStorePath(env?: NodeJS.ProcessEnv): string;
|
|
70
|
+
export declare function isRuntimeErrorCollectionEnabled(options?: Pick<RuntimeErrorOptions, "env" | "configPath">): boolean;
|
|
71
|
+
export declare function observeRuntimeError(input: {
|
|
72
|
+
readonly code: RuntimeErrorCode;
|
|
73
|
+
readonly now?: string;
|
|
74
|
+
}, options?: RuntimeErrorOptions): {
|
|
75
|
+
status: "recorded";
|
|
76
|
+
fingerprint: string;
|
|
77
|
+
sequence: number;
|
|
78
|
+
} | {
|
|
79
|
+
status: "disabled";
|
|
80
|
+
};
|
|
81
|
+
export declare function resolveRuntimeError(fingerprint: string, options?: RuntimeErrorOptions & {
|
|
82
|
+
readonly reasonCode?: "manual" | "recovered";
|
|
83
|
+
}): {
|
|
84
|
+
status: "not_found";
|
|
85
|
+
sequence?: undefined;
|
|
86
|
+
} | {
|
|
87
|
+
status: Status;
|
|
88
|
+
sequence: number;
|
|
89
|
+
};
|
|
90
|
+
export declare function reopenRuntimeError(fingerprint: string, options?: RuntimeErrorOptions): {
|
|
91
|
+
status: "not_found";
|
|
92
|
+
sequence?: undefined;
|
|
93
|
+
} | {
|
|
94
|
+
status: Status;
|
|
95
|
+
sequence: number;
|
|
96
|
+
};
|
|
97
|
+
export declare function acknowledgeRuntimeErrors(cursor: number, options?: RuntimeErrorOptions): {
|
|
98
|
+
status: "acknowledged";
|
|
99
|
+
acknowledgedThrough: number;
|
|
100
|
+
};
|
|
101
|
+
export declare function compactRuntimeErrors(options?: RuntimeErrorOptions & {
|
|
102
|
+
readonly retentionMs?: number;
|
|
103
|
+
}): {
|
|
104
|
+
status: "compacted";
|
|
105
|
+
removed: number;
|
|
106
|
+
};
|
|
107
|
+
export declare function readRuntimeErrorSnapshot(options?: RuntimeErrorOptions & {
|
|
108
|
+
readonly afterCursor?: number;
|
|
109
|
+
readonly limit?: number;
|
|
110
|
+
}): {
|
|
111
|
+
schema: "gpt-connector.runtime-errors.v1";
|
|
112
|
+
product: string;
|
|
113
|
+
version: string;
|
|
114
|
+
state_schema_version: "1.0";
|
|
115
|
+
cursor: {
|
|
116
|
+
high_watermark: number;
|
|
117
|
+
acknowledged_through: number;
|
|
118
|
+
next: number;
|
|
119
|
+
};
|
|
120
|
+
runtime_errors: {
|
|
121
|
+
error_code: "AUTH_REQUIRED" | "CDP_UNAVAILABLE" | "RUNTIME_DRIFT" | "UPLOAD_FAILED" | "UPLOAD_TIMEOUT" | "ATTACHMENT_READBACK_FAILED" | "CHAT_FAILED" | "STREAM_INCOMPLETE" | "ARCHIVE_FAILED" | "JOB_RECOVERY_UNAVAILABLE";
|
|
122
|
+
component: string;
|
|
123
|
+
status: Status;
|
|
124
|
+
severity: "high";
|
|
125
|
+
fingerprint: string;
|
|
126
|
+
message_template: string;
|
|
127
|
+
occurrence_count: number;
|
|
128
|
+
first_seen: string;
|
|
129
|
+
last_seen: string;
|
|
130
|
+
state_schema_version: "1.0";
|
|
131
|
+
}[];
|
|
132
|
+
resolutions: {
|
|
133
|
+
fingerprint: string;
|
|
134
|
+
resolved_at: string | null;
|
|
135
|
+
reason_code: "manual" | "recovered" | null;
|
|
136
|
+
}[];
|
|
137
|
+
diagnostics: {
|
|
138
|
+
collection: string;
|
|
139
|
+
status: string;
|
|
140
|
+
total_count: number;
|
|
141
|
+
pending_count: number;
|
|
142
|
+
truncated: boolean;
|
|
143
|
+
};
|
|
144
|
+
};
|
|
145
|
+
export declare function getRuntimeErrorDiagnostics(options?: RuntimeErrorOptions): {
|
|
146
|
+
schema: "gpt-connector.runtime-errors.v1";
|
|
147
|
+
collection: "disabled" | "enabled";
|
|
148
|
+
status: "ready" | "not_applicable" | "unavailable";
|
|
149
|
+
high_watermark: number;
|
|
150
|
+
acknowledged_through: number;
|
|
151
|
+
total_count: number;
|
|
152
|
+
open_count: number;
|
|
153
|
+
pending_count: number;
|
|
154
|
+
};
|
|
155
|
+
/** Adapter-only telemetry hook. It accepts only registered public failure codes and never throws. */
|
|
156
|
+
export declare function recordRuntimeErrorBestEffort(code: string): "recorded" | "disabled" | "store_unavailable";
|
|
157
|
+
export {};
|
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
import { createHash, randomBytes } from "node:crypto";
|
|
2
|
+
import { chmodSync, lstatSync, mkdirSync, readFileSync, renameSync, rmSync, statSync, writeFileSync, } from "node:fs";
|
|
3
|
+
import * as fs from "node:fs";
|
|
4
|
+
import { homedir, arch as hostArch, platform as hostPlatform } from "node:os";
|
|
5
|
+
import { dirname, join } from "node:path";
|
|
6
|
+
import { execFileSync } from "node:child_process";
|
|
7
|
+
import { packageVersion } from "./version.js";
|
|
8
|
+
export const runtimeErrorStoreSchema = "gpt-connector.runtime-errors.v1";
|
|
9
|
+
export const runtimeErrorStateSchemaVersion = "1.0";
|
|
10
|
+
export const runtimeErrorStoreDiagnostic = "[gpt-connector:runtime-errors] store_unavailable\n";
|
|
11
|
+
const snapshotLimit = 256;
|
|
12
|
+
const definitions = {
|
|
13
|
+
CDP_UNAVAILABLE: { component: "cdp", severity: "high", template: "GPT Connector CDP connection failed" },
|
|
14
|
+
AUTH_REQUIRED: { component: "auth", severity: "high", template: "GPT Connector ChatGPT authentication is required" },
|
|
15
|
+
RUNTIME_DRIFT: { component: "runtime_bridge", severity: "high", template: "GPT Connector runtime bridge contract drifted" },
|
|
16
|
+
UPLOAD_FAILED: { component: "attachment", severity: "high", template: "GPT Connector attachment upload failed" },
|
|
17
|
+
UPLOAD_TIMEOUT: { component: "attachment", severity: "high", template: "GPT Connector attachment upload timed out" },
|
|
18
|
+
ATTACHMENT_READBACK_FAILED: { component: "attachment", severity: "high", template: "GPT Connector attachment read-back failed" },
|
|
19
|
+
CHAT_FAILED: { component: "chat", severity: "high", template: "GPT Connector ChatGPT chat operation failed" },
|
|
20
|
+
STREAM_INCOMPLETE: { component: "stream", severity: "high", template: "GPT Connector ChatGPT stream was incomplete" },
|
|
21
|
+
ARCHIVE_FAILED: { component: "archive", severity: "high", template: "GPT Connector conversation archive failed" },
|
|
22
|
+
JOB_RECOVERY_UNAVAILABLE: { component: "consult_job_store", severity: "high", template: "GPT Connector consult job state persistence failed" },
|
|
23
|
+
};
|
|
24
|
+
export function defaultFactoryReporterConfigPath(env = process.env) {
|
|
25
|
+
const home = env.HOME ?? env.USERPROFILE ?? homedir();
|
|
26
|
+
return isWindows(env)
|
|
27
|
+
? join(env.LOCALAPPDATA ?? join(home, "AppData", "Local"), "dotagents", "factory-reporter", "config.json")
|
|
28
|
+
: join(env.XDG_CONFIG_HOME ?? join(home, ".config"), "dotagents", "factory-reporter.json");
|
|
29
|
+
}
|
|
30
|
+
export function defaultRuntimeErrorStorePath(env = process.env) {
|
|
31
|
+
const home = env.HOME ?? env.USERPROFILE ?? homedir();
|
|
32
|
+
return isWindows(env)
|
|
33
|
+
? join(env.LOCALAPPDATA ?? join(home, "AppData", "Local"), "gpt-connector", "runtime-errors.json")
|
|
34
|
+
: join(env.XDG_STATE_HOME ?? join(home, ".local", "state"), "gpt-connector", "runtime-errors.json");
|
|
35
|
+
}
|
|
36
|
+
export function isRuntimeErrorCollectionEnabled(options = {}) {
|
|
37
|
+
try {
|
|
38
|
+
const path = options.configPath ?? defaultFactoryReporterConfigPath(options.env);
|
|
39
|
+
const info = lstatSync(path);
|
|
40
|
+
if (!info.isFile() || info.isSymbolicLink())
|
|
41
|
+
return false;
|
|
42
|
+
return isCanonicalConfig(JSON.parse(readFileSync(path, "utf8")));
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export function observeRuntimeError(input, options = {}) {
|
|
49
|
+
assertExactKeys(input, ["code", "now"], "固定 code と時刻だけ");
|
|
50
|
+
if (!(input.code in definitions))
|
|
51
|
+
throw new TypeError("未登録の runtime error code です");
|
|
52
|
+
if (!isRuntimeErrorCollectionEnabled(options))
|
|
53
|
+
return { status: "disabled" };
|
|
54
|
+
return mutate(options, (store) => {
|
|
55
|
+
const definition = definitions[input.code];
|
|
56
|
+
const fingerprint = fingerprintFor(input.code);
|
|
57
|
+
const now = timestamp(input.now);
|
|
58
|
+
const sequence = store.next_sequence++;
|
|
59
|
+
const existing = store.records.find((record) => record.fingerprint === fingerprint);
|
|
60
|
+
if (existing) {
|
|
61
|
+
existing.product_version = safeVersion(options.version);
|
|
62
|
+
existing.count += 1;
|
|
63
|
+
existing.last_seen = now;
|
|
64
|
+
existing.status = "open";
|
|
65
|
+
existing.resolved_at = null;
|
|
66
|
+
existing.reason_code = null;
|
|
67
|
+
existing.sequence = sequence;
|
|
68
|
+
}
|
|
69
|
+
else
|
|
70
|
+
store.records.push({ product: "gpt-connector", product_version: safeVersion(options.version), component: definition.component,
|
|
71
|
+
error_code: input.code, message_template: definition.template, severity: definition.severity, fingerprint, count: 1,
|
|
72
|
+
first_seen: now, last_seen: now, state_schema_version: runtimeErrorStateSchemaVersion,
|
|
73
|
+
os: safePlatform(options.platform), arch: safeArch(options.arch), status: "open", resolved_at: null, reason_code: null, sequence });
|
|
74
|
+
return { status: "recorded", fingerprint, sequence };
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
export function resolveRuntimeError(fingerprint, options = {}) {
|
|
78
|
+
assertFingerprint(fingerprint);
|
|
79
|
+
return mutateExistingOrEnabled(options, (store) => updateStatus(store, fingerprint, "resolved", options));
|
|
80
|
+
}
|
|
81
|
+
export function reopenRuntimeError(fingerprint, options = {}) {
|
|
82
|
+
assertFingerprint(fingerprint);
|
|
83
|
+
return mutateExistingOrEnabled(options, (store) => updateStatus(store, fingerprint, "open", options));
|
|
84
|
+
}
|
|
85
|
+
export function acknowledgeRuntimeErrors(cursor, options = {}) {
|
|
86
|
+
if (!Number.isSafeInteger(cursor) || cursor < 0)
|
|
87
|
+
throw new TypeError("cursor は非負の整数が必要です");
|
|
88
|
+
return mutateExistingOrEnabled(options, (store) => { if (cursor >= store.next_sequence)
|
|
89
|
+
throw new RangeError("cursor がstore high watermarkを超えています"); store.acknowledged_through = Math.max(store.acknowledged_through, cursor); return { status: "acknowledged", acknowledgedThrough: store.acknowledged_through }; }, { status: "disabled", acknowledgedThrough: 0 });
|
|
90
|
+
}
|
|
91
|
+
export function compactRuntimeErrors(options = {}) {
|
|
92
|
+
const retentionMs = options.retentionMs ?? 30 * 24 * 60 * 60 * 1000;
|
|
93
|
+
if (!Number.isSafeInteger(retentionMs) || retentionMs < 0)
|
|
94
|
+
throw new TypeError("retentionMs は非負の整数が必要です");
|
|
95
|
+
return mutateExistingOrEnabled(options, (store) => { const cutoff = Date.parse(timestamp(options.now)) - retentionMs; const before = store.records.length; store.records = store.records.filter((record) => !(record.status === "resolved" && record.sequence <= store.acknowledged_through && Date.parse(record.last_seen) <= cutoff)); return { status: "compacted", removed: before - store.records.length }; }, { status: "disabled", removed: 0 });
|
|
96
|
+
}
|
|
97
|
+
export function readRuntimeErrorSnapshot(options = {}) {
|
|
98
|
+
const after = options.afterCursor ?? 0;
|
|
99
|
+
const limit = options.limit ?? snapshotLimit;
|
|
100
|
+
if (!Number.isSafeInteger(after) || after < 0 || !Number.isSafeInteger(limit) || limit < 1 || limit > snapshotLimit)
|
|
101
|
+
throw new TypeError("snapshot cursor または limit が不正です");
|
|
102
|
+
const enabled = isRuntimeErrorCollectionEnabled(options);
|
|
103
|
+
const store = enabled ? readStore(options, true) : emptyStore();
|
|
104
|
+
const candidates = store.records.filter((record) => record.sequence > after).sort((a, b) => a.sequence - b.sequence);
|
|
105
|
+
const selected = candidates.slice(0, limit);
|
|
106
|
+
return { schema: runtimeErrorStoreSchema, product: "gpt-connector", version: packageVersion, state_schema_version: runtimeErrorStateSchemaVersion,
|
|
107
|
+
cursor: { high_watermark: store.next_sequence - 1, acknowledged_through: store.acknowledged_through, next: selected.at(-1)?.sequence ?? after },
|
|
108
|
+
runtime_errors: selected.filter((r) => r.status === "open").map(publicRecord), resolutions: selected.filter((r) => r.status === "resolved").map((r) => ({ fingerprint: r.fingerprint, resolved_at: r.resolved_at, reason_code: r.reason_code })),
|
|
109
|
+
diagnostics: { collection: enabled ? "enabled" : "disabled", status: enabled ? "ready" : "not_applicable", total_count: store.records.length, pending_count: store.records.filter((r) => r.sequence > store.acknowledged_through).length, truncated: candidates.length > selected.length } };
|
|
110
|
+
}
|
|
111
|
+
export function getRuntimeErrorDiagnostics(options = {}) {
|
|
112
|
+
const enabled = isRuntimeErrorCollectionEnabled(options);
|
|
113
|
+
if (!enabled)
|
|
114
|
+
return diagnostics("disabled", "not_applicable", emptyStore());
|
|
115
|
+
const path = options.storePath ?? defaultRuntimeErrorStorePath(options.env);
|
|
116
|
+
if (runtimeErrorLockPresent(`${path}.lock`))
|
|
117
|
+
return diagnostics("enabled", "unavailable", emptyStore());
|
|
118
|
+
try {
|
|
119
|
+
return diagnostics("enabled", "ready", readStore(options, true));
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
return diagnostics("enabled", "unavailable", emptyStore());
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/** Adapter-only telemetry hook. It accepts only registered public failure codes and never throws. */
|
|
126
|
+
export function recordRuntimeErrorBestEffort(code) {
|
|
127
|
+
if (!(code in definitions))
|
|
128
|
+
return "disabled";
|
|
129
|
+
try {
|
|
130
|
+
return observeRuntimeError({ code: code }).status;
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
return "store_unavailable";
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
function updateStatus(store, fingerprint, status, options) {
|
|
137
|
+
const record = store.records.find((candidate) => candidate.fingerprint === fingerprint);
|
|
138
|
+
if (!record)
|
|
139
|
+
return { status: "not_found" };
|
|
140
|
+
if (record.status === status)
|
|
141
|
+
return { status, sequence: record.sequence };
|
|
142
|
+
record.status = status;
|
|
143
|
+
record.sequence = store.next_sequence++;
|
|
144
|
+
record.resolved_at = status === "resolved" ? timestamp(options.now) : null;
|
|
145
|
+
record.reason_code = status === "resolved" ? (options.reasonCode ?? "manual") : null;
|
|
146
|
+
return { status, sequence: record.sequence };
|
|
147
|
+
}
|
|
148
|
+
function publicRecord(record) { return { error_code: record.error_code, component: record.component, status: record.status, severity: record.severity, fingerprint: record.fingerprint, message_template: record.message_template, occurrence_count: record.count, first_seen: record.first_seen, last_seen: record.last_seen, state_schema_version: record.state_schema_version }; }
|
|
149
|
+
function diagnostics(collection, status, store) { return { schema: runtimeErrorStoreSchema, collection, status, high_watermark: store.next_sequence - 1, acknowledged_through: store.acknowledged_through, total_count: store.records.length, open_count: store.records.filter((r) => r.status === "open").length, pending_count: store.records.filter((r) => r.sequence > store.acknowledged_through).length }; }
|
|
150
|
+
function mutate(options, operation, create = true) { const path = options.storePath ?? defaultRuntimeErrorStorePath(options.env); if (create)
|
|
151
|
+
ensurePrivateDirectory(dirname(path), options.env, options.windowsAcl);
|
|
152
|
+
else
|
|
153
|
+
assertPrivate(dirname(path), true, options.env, options.windowsAcl); const lock = `${path}.lock`; let fd; try {
|
|
154
|
+
try {
|
|
155
|
+
fd = fs.openSync(lock, "wx", 0o600);
|
|
156
|
+
writeFileSync(fd, JSON.stringify({ pid: process.pid, created_at: new Date().toISOString() }), "utf8");
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
if (error.code !== "EEXIST" || !recoverStaleLock(lock))
|
|
160
|
+
throw error;
|
|
161
|
+
fd = fs.openSync(lock, "wx", 0o600);
|
|
162
|
+
writeFileSync(fd, JSON.stringify({ pid: process.pid, created_at: new Date().toISOString() }), "utf8");
|
|
163
|
+
}
|
|
164
|
+
const store = readStore(options, create);
|
|
165
|
+
const result = operation(store);
|
|
166
|
+
writeStore(store, options);
|
|
167
|
+
return result;
|
|
168
|
+
}
|
|
169
|
+
finally {
|
|
170
|
+
if (fd !== undefined) {
|
|
171
|
+
fs.closeSync(fd);
|
|
172
|
+
rmSync(lock, { force: true });
|
|
173
|
+
}
|
|
174
|
+
} }
|
|
175
|
+
function runtimeErrorLockPresent(lock) {
|
|
176
|
+
try {
|
|
177
|
+
lstatSync(lock);
|
|
178
|
+
return true;
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
return error.code !== "ENOENT";
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
function recoverStaleLock(lock) {
|
|
185
|
+
let fd;
|
|
186
|
+
try {
|
|
187
|
+
fd = fs.openSync(lock, fs.constants.O_RDONLY | (fs.constants.O_NOFOLLOW ?? 0));
|
|
188
|
+
const info = fs.fstatSync(fd);
|
|
189
|
+
if (!info.isFile() || Date.now() - info.mtimeMs < 5 * 60_000)
|
|
190
|
+
return false;
|
|
191
|
+
const parsed = JSON.parse(readFileSync(fd, "utf8"));
|
|
192
|
+
if (!Number.isSafeInteger(parsed.pid) || parsed.pid < 1)
|
|
193
|
+
return false;
|
|
194
|
+
try {
|
|
195
|
+
process.kill(parsed.pid, 0);
|
|
196
|
+
return false;
|
|
197
|
+
}
|
|
198
|
+
catch (error) {
|
|
199
|
+
if (error.code !== "ESRCH")
|
|
200
|
+
return false;
|
|
201
|
+
}
|
|
202
|
+
const current = lstatSync(lock);
|
|
203
|
+
if (!current.isFile() || current.isSymbolicLink()
|
|
204
|
+
|| current.dev !== info.dev || current.ino !== info.ino
|
|
205
|
+
|| current.mtimeMs !== info.mtimeMs || current.size !== info.size)
|
|
206
|
+
return false;
|
|
207
|
+
fs.closeSync(fd);
|
|
208
|
+
fd = undefined;
|
|
209
|
+
rmSync(lock);
|
|
210
|
+
return true;
|
|
211
|
+
}
|
|
212
|
+
catch {
|
|
213
|
+
return false;
|
|
214
|
+
}
|
|
215
|
+
finally {
|
|
216
|
+
if (fd !== undefined)
|
|
217
|
+
fs.closeSync(fd);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
function mutateExistingOrEnabled(options, operation, disabled) {
|
|
221
|
+
if (isRuntimeErrorCollectionEnabled(options))
|
|
222
|
+
return mutate(options, operation);
|
|
223
|
+
const path = options.storePath ?? defaultRuntimeErrorStorePath(options.env);
|
|
224
|
+
try {
|
|
225
|
+
lstatSync(path);
|
|
226
|
+
return mutate(options, operation, false);
|
|
227
|
+
}
|
|
228
|
+
catch (error) {
|
|
229
|
+
if (error.code === "ENOENT" && disabled !== undefined)
|
|
230
|
+
return disabled;
|
|
231
|
+
throw error;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
function readStore(options, missingEmpty) { const path = options.storePath ?? defaultRuntimeErrorStorePath(options.env); try {
|
|
235
|
+
const info = lstatSync(path);
|
|
236
|
+
if (!info.isFile() || info.isSymbolicLink())
|
|
237
|
+
throw new Error("unsafe store");
|
|
238
|
+
assertPrivate(path, false, options.env, options.windowsAcl);
|
|
239
|
+
const parsed = JSON.parse(readFileSync(path, "utf8"));
|
|
240
|
+
validateStore(parsed);
|
|
241
|
+
return parsed;
|
|
242
|
+
}
|
|
243
|
+
catch (error) {
|
|
244
|
+
if (missingEmpty && error.code === "ENOENT")
|
|
245
|
+
return emptyStore();
|
|
246
|
+
throw error;
|
|
247
|
+
} }
|
|
248
|
+
function writeStore(store, options) { validateStore(store); const path = options.storePath ?? defaultRuntimeErrorStorePath(options.env); const directory = dirname(path); ensurePrivateDirectory(directory, options.env, options.windowsAcl); const temporary = join(directory, `.runtime-errors.${process.pid}.${randomBytes(6).toString("hex")}.tmp`); try {
|
|
249
|
+
writeFileSync(temporary, `${JSON.stringify(store)}\n`, { encoding: "utf8", mode: 0o600, flag: "wx" });
|
|
250
|
+
if (!isWindows(options.env))
|
|
251
|
+
chmodSync(temporary, 0o600);
|
|
252
|
+
else
|
|
253
|
+
applyWindowsAcl(temporary, false, options.windowsAcl);
|
|
254
|
+
renameSync(temporary, path);
|
|
255
|
+
if (!isWindows(options.env))
|
|
256
|
+
chmodSync(path, 0o600);
|
|
257
|
+
assertPrivate(path, false, options.env, options.windowsAcl);
|
|
258
|
+
}
|
|
259
|
+
finally {
|
|
260
|
+
rmSync(temporary, { force: true });
|
|
261
|
+
} }
|
|
262
|
+
function ensurePrivateDirectory(directory, env, windowsAcl) { mkdirSync(directory, { recursive: true, mode: 0o700 }); const info = lstatSync(directory); if (!info.isDirectory() || info.isSymbolicLink())
|
|
263
|
+
throw new Error("unsafe store directory"); if (!isWindows(env))
|
|
264
|
+
chmodSync(directory, 0o700);
|
|
265
|
+
else
|
|
266
|
+
applyWindowsAcl(directory, true, windowsAcl); assertPrivate(directory, true, env, windowsAcl); }
|
|
267
|
+
function assertPrivate(path, directory, env, windowsAcl) { const info = statSync(path); if (!isWindows(env) && (info.mode & 0o077) !== 0)
|
|
268
|
+
throw new Error(directory ? "directory permissions" : "file permissions"); if (isWindows(env))
|
|
269
|
+
applyWindowsAcl(path, directory, windowsAcl); }
|
|
270
|
+
function applyWindowsAcl(path, directory, injected) {
|
|
271
|
+
if (injected)
|
|
272
|
+
return injected(path, directory);
|
|
273
|
+
const user = execFileSync("whoami", [], { encoding: "utf8", windowsHide: true }).trim();
|
|
274
|
+
if (!user)
|
|
275
|
+
throw new Error("windows acl user");
|
|
276
|
+
const grant = `${user}:${directory ? "(OI)(CI)F" : "F"}`;
|
|
277
|
+
execFileSync("icacls", [path, "/inheritance:r", "/grant:r", grant, "/remove:g", "Users", "Everyone", "Authenticated Users"], { encoding: "utf8", windowsHide: true });
|
|
278
|
+
const verified = execFileSync("icacls", [path], { encoding: "utf8", windowsHide: true });
|
|
279
|
+
if (!verified.includes(user) || /Everyone|Authenticated Users/u.test(verified))
|
|
280
|
+
throw new Error("windows acl verification");
|
|
281
|
+
}
|
|
282
|
+
function emptyStore() { return { schema: runtimeErrorStoreSchema, next_sequence: 1, acknowledged_through: 0, records: [] }; }
|
|
283
|
+
function validateStore(value) {
|
|
284
|
+
if (!plain(value) || !exactKeys(value, ["schema", "next_sequence", "acknowledged_through", "records"]))
|
|
285
|
+
throw new Error("store schema");
|
|
286
|
+
const store = value;
|
|
287
|
+
const next = store.next_sequence;
|
|
288
|
+
const acknowledged = store.acknowledged_through;
|
|
289
|
+
if (store.schema !== runtimeErrorStoreSchema || typeof next !== "number" || !Number.isSafeInteger(next) || next < 1 || typeof acknowledged !== "number" || !Number.isSafeInteger(acknowledged) || acknowledged < 0 || acknowledged >= next || !Array.isArray(store.records))
|
|
290
|
+
throw new Error("store schema");
|
|
291
|
+
const checked = value;
|
|
292
|
+
const fingerprints = new Set();
|
|
293
|
+
const sequences = new Set();
|
|
294
|
+
for (const value of checked.records) {
|
|
295
|
+
if (!plain(value) || !exactKeys(value, ["product", "product_version", "component", "error_code", "message_template", "severity", "fingerprint", "count", "first_seen", "last_seen", "state_schema_version", "os", "arch", "status", "resolved_at", "reason_code", "sequence"]))
|
|
296
|
+
throw new Error("store record");
|
|
297
|
+
const entry = value;
|
|
298
|
+
const definition = definitions[entry.error_code];
|
|
299
|
+
const first = canonicalTimestamp(entry.first_seen);
|
|
300
|
+
const last = canonicalTimestamp(entry.last_seen);
|
|
301
|
+
if (entry.product !== "gpt-connector" || definition === undefined || entry.product_version !== safeVersion(entry.product_version) || entry.component !== definition.component || entry.message_template !== definition.template || entry.severity !== definition.severity || entry.fingerprint !== fingerprintFor(entry.error_code) || !Number.isSafeInteger(entry.count) || entry.count < 1 || entry.state_schema_version !== runtimeErrorStateSchemaVersion || !["darwin", "linux", "win32", "unknown"].includes(entry.os) || !/^[a-z0-9_]+$/u.test(entry.arch) || !Number.isSafeInteger(entry.sequence) || entry.sequence < 1 || entry.sequence >= checked.next_sequence || first > last || fingerprints.has(entry.fingerprint) || sequences.has(entry.sequence))
|
|
302
|
+
throw new Error("store record");
|
|
303
|
+
if ((entry.status === "open" && (entry.resolved_at !== null || entry.reason_code !== null)) || (entry.status === "resolved" && (entry.resolved_at === null || !["manual", "recovered"].includes(entry.reason_code ?? "") || canonicalTimestamp(entry.resolved_at) < last)) || (entry.status !== "open" && entry.status !== "resolved"))
|
|
304
|
+
throw new Error("store record");
|
|
305
|
+
fingerprints.add(entry.fingerprint);
|
|
306
|
+
sequences.add(entry.sequence);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
function isCanonicalConfig(value) { if (!value || typeof value !== "object" || Array.isArray(value))
|
|
310
|
+
return false; const c = value; const keys = Object.keys(c); if (keys.length !== 4 || !["schema_version", "host", "collection", "reporting"].every((key) => keys.includes(key)) || c.schema_version !== "1.0")
|
|
311
|
+
return false; const host = c.host; const collection = c.collection; const reporting = c.reporting; return plain(host) && Object.keys(host).length === 2 && typeof host.id === "string" && /^[a-z0-9][a-z0-9._-]{0,63}$/u.test(host.id) && ["server", "mac", "wsl", "windows-native"].includes(String(host.profile)) && plain(collection) && Object.keys(collection).length === 1 && collection.enabled === true && plain(reporting) && typeof reporting.enabled === "boolean"; }
|
|
312
|
+
function plain(value) { return value !== null && typeof value === "object" && !Array.isArray(value); }
|
|
313
|
+
function exactKeys(value, keys) { const actual = Object.keys(value); return actual.length === keys.length && keys.every((key) => actual.includes(key)); }
|
|
314
|
+
function fingerprintFor(code) { const d = definitions[code]; return createHash("sha256").update(["gpt-connector", d.component, code, d.template].join("\0")).digest("hex"); }
|
|
315
|
+
function timestamp(value) { const date = new Date(value ?? Date.now()); if (Number.isNaN(date.valueOf()))
|
|
316
|
+
throw new TypeError("時刻が不正です"); return date.toISOString(); }
|
|
317
|
+
function canonicalTimestamp(value) { if (typeof value !== "string" || !/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/u.test(value) || Number.isNaN(Date.parse(value)))
|
|
318
|
+
throw new Error("timestamp"); return Date.parse(value); }
|
|
319
|
+
function safeVersion(value) { return typeof value === "string" && /^[0-9]+\.[0-9]+\.[0-9]+(?:[-+][0-9A-Za-z.-]+)?$/u.test(value) ? value : packageVersion; }
|
|
320
|
+
function safePlatform(value) { return ["darwin", "linux", "win32"].includes(value ?? hostPlatform()) ? (value ?? hostPlatform()) : "unknown"; }
|
|
321
|
+
function safeArch(value) { return /^[a-z0-9_]+$/u.test(value ?? hostArch()) ? (value ?? hostArch()) : "unknown"; }
|
|
322
|
+
function assertFingerprint(value) { if (!/^[a-f0-9]{64}$/u.test(value))
|
|
323
|
+
throw new TypeError("fingerprint が不正です"); }
|
|
324
|
+
function assertExactKeys(value, keys, message) { if (Object.keys(value).some((key) => !keys.includes(key)))
|
|
325
|
+
throw new TypeError(message); }
|
|
326
|
+
function isWindows(env) { return env?.OS === "Windows_NT" || hostPlatform() === "win32"; }
|
|
327
|
+
//# sourceMappingURL=runtime-error-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-error-store.js","sourceRoot":"","sources":["../../src/runtime-error-store.ts"],"names":[],"mappings":"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"}
|
package/dist/src/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const packageVersion = "0.
|
|
1
|
+
export declare const packageVersion = "0.3.0";
|
package/dist/src/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const packageVersion = "0.
|
|
1
|
+
export const packageVersion = "0.3.0";
|
|
2
2
|
//# sourceMappingURL=version.js.map
|