@optimuslabs/runtime-staging 0.3.9 → 0.3.11
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/dist/index.js +36 -27
- package/dist/index.js.map +1 -1
- package/dist/lib/client-event.d.ts.map +1 -1
- package/dist/lib/client-event.js +35 -25
- package/dist/lib/client-event.js.map +1 -1
- package/dist/lib/pii-scrub.d.ts +9 -0
- package/dist/lib/pii-scrub.d.ts.map +1 -0
- package/dist/lib/pii-scrub.js +17 -0
- package/dist/lib/pii-scrub.js.map +1 -0
- package/dist/lib/prompt-collection-policy.d.ts +10 -0
- package/dist/lib/prompt-collection-policy.d.ts.map +1 -1
- package/dist/lib/prompt-collection-policy.js +42 -6
- package/dist/lib/prompt-collection-policy.js.map +1 -1
- package/dist/lib/startup-sync.d.ts.map +1 -1
- package/dist/lib/startup-sync.js +78 -56
- package/dist/lib/startup-sync.js.map +1 -1
- package/dist/lib/telemetry/build-event.d.ts.map +1 -1
- package/dist/lib/telemetry/build-event.js +19 -2
- package/dist/lib/telemetry/build-event.js.map +1 -1
- package/dist/lib/telemetry/index.d.ts +1 -1
- package/dist/lib/telemetry/index.d.ts.map +1 -1
- package/dist/lib/telemetry/index.js +1 -1
- package/dist/lib/telemetry/index.js.map +1 -1
- package/dist/lib/telemetry/prompt-privacy.d.ts +7 -1
- package/dist/lib/telemetry/prompt-privacy.d.ts.map +1 -1
- package/dist/lib/telemetry/prompt-privacy.js +13 -3
- package/dist/lib/telemetry/prompt-privacy.js.map +1 -1
- package/dist/lib/telemetry/types.d.ts +11 -0
- package/dist/lib/telemetry/types.d.ts.map +1 -1
- package/dist/lib/telemetry/wire-metadata.d.ts +21 -6
- package/dist/lib/telemetry/wire-metadata.d.ts.map +1 -1
- package/dist/lib/telemetry/wire-metadata.js +50 -19
- package/dist/lib/telemetry/wire-metadata.js.map +1 -1
- package/dist/lib/tofu.d.ts +1 -0
- package/dist/lib/tofu.d.ts.map +1 -1
- package/dist/lib/tofu.js +1 -1
- package/dist/lib/tofu.js.map +1 -1
- package/dist/lib/transcript.d.ts +5 -0
- package/dist/lib/transcript.d.ts.map +1 -1
- package/dist/lib/transcript.js +21 -2
- package/dist/lib/transcript.js.map +1 -1
- package/dist/test/client-event-scrub.test.d.ts +2 -0
- package/dist/test/client-event-scrub.test.d.ts.map +1 -0
- package/dist/test/client-event-scrub.test.js +36 -0
- package/dist/test/client-event-scrub.test.js.map +1 -0
- package/dist/test/org-fingerprint-key.test.d.ts +2 -0
- package/dist/test/org-fingerprint-key.test.d.ts.map +1 -0
- package/dist/test/org-fingerprint-key.test.js +39 -0
- package/dist/test/org-fingerprint-key.test.js.map +1 -0
- package/dist/test/org-scrub-setting.test.d.ts +2 -0
- package/dist/test/org-scrub-setting.test.d.ts.map +1 -0
- package/dist/test/org-scrub-setting.test.js +42 -0
- package/dist/test/org-scrub-setting.test.js.map +1 -0
- package/dist/test/prompt-privacy.test.js +19 -2
- package/dist/test/prompt-privacy.test.js.map +1 -1
- package/dist/test/startup-sync-scrub.test.d.ts +2 -0
- package/dist/test/startup-sync-scrub.test.d.ts.map +1 -0
- package/dist/test/startup-sync-scrub.test.js +36 -0
- package/dist/test/startup-sync-scrub.test.js.map +1 -0
- package/dist/test/telemetry.test.js +6 -1
- package/dist/test/telemetry.test.js.map +1 -1
- package/dist/test/transcript.test.js +22 -1
- package/dist/test/transcript.test.js.map +1 -1
- package/dist/test/wire-metadata.test.d.ts +2 -0
- package/dist/test/wire-metadata.test.d.ts.map +1 -0
- package/dist/test/wire-metadata.test.js +105 -0
- package/dist/test/wire-metadata.test.js.map +1 -0
- package/package.json +3 -2
package/dist/index.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
import { buildTelemetryEvent, eventToDict } from "./lib/telemetry.js";
|
|
9
9
|
import { queueEvent, ensureShutdown } from "./lib/streaming.js";
|
|
10
10
|
import { normalizeToCanonical } from "./lib/telemetry/canonical.js";
|
|
11
|
-
import { readLastUserPrompt } from "./lib/transcript.js";
|
|
11
|
+
import { copilotSessionEventsPath, readLastUserPrompt } from "./lib/transcript.js";
|
|
12
12
|
const dbg = (...args) => { if (process.env.OPTIMUS_DEBUG)
|
|
13
13
|
console.error(...args); };
|
|
14
14
|
/** FunctionalRun.command — tool name plus primary path/target when present. */
|
|
@@ -37,49 +37,58 @@ function reportClientEventOk(canonical) {
|
|
|
37
37
|
}))
|
|
38
38
|
.catch(() => { });
|
|
39
39
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
dbg("[optimus-tool-call] stdin preview:", stdinData.slice(0, 300));
|
|
52
|
-
// Parse and normalize to canonical format
|
|
53
|
-
let canonical;
|
|
40
|
+
/**
|
|
41
|
+
* The transcript holding the person's prompts: the hook's `transcript_path`, or for the Copilot CLI
|
|
42
|
+
* and app, which send none, the session's events file. Null when there is neither.
|
|
43
|
+
*/
|
|
44
|
+
function promptTranscriptPath(raw, canonical) {
|
|
45
|
+
if (typeof raw.transcript_path === "string")
|
|
46
|
+
return raw.transcript_path;
|
|
47
|
+
return canonical.agent === "copilot" ? copilotSessionEventsPath(canonical.session_id) : null;
|
|
48
|
+
}
|
|
49
|
+
/** The hook input in canonical form, with the user prompt read from the transcript; null when it is not JSON. */
|
|
50
|
+
function parseHookInput(stdinData) {
|
|
54
51
|
try {
|
|
55
52
|
const raw = JSON.parse(stdinData);
|
|
56
53
|
dbg("[optimus-tool-call] Parsed JSON successfully");
|
|
57
54
|
dbg("[optimus-tool-call] Raw keys:", Object.keys(raw));
|
|
58
55
|
// Normalize to canonical format (works for both Claude and Cursor)
|
|
59
|
-
canonical = normalizeToCanonical(raw);
|
|
56
|
+
let canonical = normalizeToCanonical(raw);
|
|
60
57
|
dbg("[optimus-tool-call] Detected agent:", canonical.agent);
|
|
61
58
|
dbg("[optimus-tool-call] Hook event name:", canonical.hook_event_name);
|
|
62
59
|
dbg("[optimus-tool-call] Tool name:", canonical.tool_name);
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
const userPrompt = readLastUserPrompt(transcriptPath);
|
|
68
|
-
if (userPrompt) {
|
|
69
|
-
canonical = { ...canonical, user_prompt: userPrompt };
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
60
|
+
const transcriptPath = canonical.user_prompt ? null : promptTranscriptPath(raw, canonical);
|
|
61
|
+
const userPrompt = transcriptPath ? readLastUserPrompt(transcriptPath) : null;
|
|
62
|
+
if (userPrompt)
|
|
63
|
+
canonical = { ...canonical, user_prompt: userPrompt };
|
|
73
64
|
dbg("[optimus-tool-call] Canonical event:", {
|
|
74
65
|
agent: canonical.agent,
|
|
75
66
|
hook_event_name: canonical.hook_event_name,
|
|
76
67
|
tool_name: canonical.tool_name,
|
|
77
68
|
user_prompt_preview: canonical.user_prompt?.slice(0, 100),
|
|
78
69
|
});
|
|
70
|
+
return canonical;
|
|
79
71
|
}
|
|
80
72
|
catch (error) {
|
|
81
|
-
// Invalid JSON or parse error — allow and return
|
|
82
73
|
console.error("[optimus-tool-call] ERROR: Failed to parse:", error);
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
async function main() {
|
|
78
|
+
dbg("[optimus-tool-call] ===== HOOK STARTED =====");
|
|
79
|
+
dbg("[optimus-tool-call] NODE_ENV:", process.env.NODE_ENV);
|
|
80
|
+
dbg("[optimus-tool-call] CURSOR:", process.env.CURSOR);
|
|
81
|
+
dbg("[optimus-tool-call] CURSOR_SESSION_ID:", process.env.CURSOR_SESSION_ID);
|
|
82
|
+
dbg("[optimus-tool-call] CLAUDE_CODE_SESSION_ID:", process.env.CLAUDE_CODE_SESSION_ID);
|
|
83
|
+
// Setup shutdown handling
|
|
84
|
+
ensureShutdown();
|
|
85
|
+
// Read stdin
|
|
86
|
+
const stdinData = await readStdin();
|
|
87
|
+
dbg("[optimus-tool-call] stdin length:", stdinData.length);
|
|
88
|
+
dbg("[optimus-tool-call] stdin preview:", stdinData.slice(0, 300));
|
|
89
|
+
const canonical = parseHookInput(stdinData);
|
|
90
|
+
if (!canonical) {
|
|
91
|
+
// Invalid JSON or parse error — allow and return
|
|
83
92
|
const response = { continue: true, permission: "allow" };
|
|
84
93
|
console.log(JSON.stringify(response));
|
|
85
94
|
return;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAEH,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAuB,MAAM,oBAAoB,CAAC;AAC3F,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAA2B,MAAM,8BAA8B,CAAC;AAC7F,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-event.d.ts","sourceRoot":"","sources":["../../src/lib/client-event.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client-event.d.ts","sourceRoot":"","sources":["../../src/lib/client-event.ts"],"names":[],"mappings":"AAiEA,KAAK,iBAAiB,GAAG;IACvB,OAAO,EAAE,SAAS,GAAG,IAAI,GAAG,QAAQ,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AA2DF,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBhF"}
|
package/dist/lib/client-event.js
CHANGED
|
@@ -13,6 +13,7 @@ import { fileURLToPath } from "url";
|
|
|
13
13
|
import { loadEndpointBase, createSignature, readStoredAuthKey } from "./tofu.js";
|
|
14
14
|
import { resolveHardwareUuid } from "./hardware-uuid.js";
|
|
15
15
|
import { OPTIMUS_AUTH_KEY_RELATIVE_PATH } from "./machine-auth.js";
|
|
16
|
+
import { SCRUBBER_VERSION, scrubFields } from "./pii-scrub.js";
|
|
16
17
|
const SEND_TIMEOUT_MS = 4000;
|
|
17
18
|
/** This package's name + version as "<name>: <version>", read from its own package.json. */
|
|
18
19
|
function readPackageVersion() {
|
|
@@ -69,6 +70,7 @@ function metadata(agent) {
|
|
|
69
70
|
node: process.version,
|
|
70
71
|
pid: String(process.pid),
|
|
71
72
|
reporter_version: readPackageVersion(),
|
|
73
|
+
scrubber_version: SCRUBBER_VERSION,
|
|
72
74
|
source: "tool_call",
|
|
73
75
|
};
|
|
74
76
|
if (process.env.OPTIMUS_HOOK_SCRIPT_VERSION)
|
|
@@ -85,37 +87,45 @@ function resolveHookRunId(storyId) {
|
|
|
85
87
|
return fromEnv;
|
|
86
88
|
return `${storyId}::tool_call`;
|
|
87
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* The run record. Its command, message and detail are free text (a failure's log, a command
|
|
92
|
+
* line), so they are scrubbed like tool-call content before they leave the machine.
|
|
93
|
+
*/
|
|
94
|
+
function toolCallRunEvent(fields, storyId, agent) {
|
|
95
|
+
return scrubFields({
|
|
96
|
+
kind: "functional_run",
|
|
97
|
+
unit: "tool_call",
|
|
98
|
+
command: fields.command ?? "optimus-tool-call",
|
|
99
|
+
hook_name: "tool_call",
|
|
100
|
+
story_id: storyId,
|
|
101
|
+
hook_run_id: resolveHookRunId(storyId),
|
|
102
|
+
outcome: fields.outcome,
|
|
103
|
+
exit_code: fields.exit_code ?? null,
|
|
104
|
+
message: fields.message ?? "",
|
|
105
|
+
detail: fields.detail ?? "",
|
|
106
|
+
...(agent ? { agent } : {}),
|
|
107
|
+
metadata: metadata(agent),
|
|
108
|
+
}, ["command", "message", "detail"]);
|
|
109
|
+
}
|
|
110
|
+
/** The signature over `payload`, or "" when there is no machine key (the backend accepts unsigned). */
|
|
111
|
+
function signatureFor(payload) {
|
|
112
|
+
try {
|
|
113
|
+
const authKey = readStoredAuthKey({ authRelativePath: OPTIMUS_AUTH_KEY_RELATIVE_PATH });
|
|
114
|
+
return authKey?.key ? createSignature(payload, authKey.key) : "";
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
// unsigned is accepted by the backend (signature_valid=false)
|
|
118
|
+
return "";
|
|
119
|
+
}
|
|
120
|
+
}
|
|
88
121
|
export async function reportToolCallRun(fields) {
|
|
89
122
|
try {
|
|
90
123
|
const hardwareUuid = resolveHardwareUuid();
|
|
91
124
|
const storyId = resolveStoryId();
|
|
92
125
|
const agent = resolveReportingAgent(fields.agent);
|
|
93
|
-
const events = [
|
|
94
|
-
{
|
|
95
|
-
kind: "functional_run",
|
|
96
|
-
unit: "tool_call",
|
|
97
|
-
command: fields.command ?? "optimus-tool-call",
|
|
98
|
-
hook_name: "tool_call",
|
|
99
|
-
story_id: storyId,
|
|
100
|
-
hook_run_id: resolveHookRunId(storyId),
|
|
101
|
-
outcome: fields.outcome,
|
|
102
|
-
exit_code: fields.exit_code ?? null,
|
|
103
|
-
message: fields.message ?? "",
|
|
104
|
-
detail: fields.detail ?? "",
|
|
105
|
-
...(agent ? { agent } : {}),
|
|
106
|
-
metadata: metadata(agent),
|
|
107
|
-
},
|
|
108
|
-
];
|
|
126
|
+
const events = [toolCallRunEvent(fields, storyId, agent)];
|
|
109
127
|
const signingPayload = { hardware_uuid: hardwareUuid, events };
|
|
110
|
-
|
|
111
|
-
try {
|
|
112
|
-
const authKey = readStoredAuthKey({ authRelativePath: OPTIMUS_AUTH_KEY_RELATIVE_PATH });
|
|
113
|
-
if (authKey?.key)
|
|
114
|
-
signature = createSignature(signingPayload, authKey.key);
|
|
115
|
-
}
|
|
116
|
-
catch {
|
|
117
|
-
// unsigned is accepted by the backend (signature_valid=false)
|
|
118
|
-
}
|
|
128
|
+
const signature = signatureFor(signingPayload);
|
|
119
129
|
const endpoint = `${loadEndpointBase().replace(/\/+$/, "")}/endpoint_security/api/client-event/`;
|
|
120
130
|
if (typeof fetch === "undefined")
|
|
121
131
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-event.js","sourceRoot":"","sources":["../../src/lib/client-event.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"client-event.js","sourceRoot":"","sources":["../../src/lib/client-event.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pii-scrub shim: the one place that imports @optimuslabs/pii-scrub-staging.
|
|
3
|
+
*
|
|
4
|
+
* Loaded the way lib/tofu.ts loads tofu: the sibling local dist when environment=development,
|
|
5
|
+
* the published npm package otherwise.
|
|
6
|
+
*/
|
|
7
|
+
import type * as PiiScrubTypes from "@optimuslabs/pii-scrub-staging";
|
|
8
|
+
export declare const SCRUBBER_VERSION: string, scrubFields: typeof PiiScrubTypes.scrubFields, scrubText: typeof PiiScrubTypes.scrubText, scrubValue: typeof PiiScrubTypes.scrubValue;
|
|
9
|
+
//# sourceMappingURL=pii-scrub.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pii-scrub.d.ts","sourceRoot":"","sources":["../../src/lib/pii-scrub.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,KAAK,aAAa,MAAM,gCAAgC,CAAC;AAarE,eAAO,MAAQ,gBAAgB,UAAE,WAAW,oCAAE,SAAS,kCAAE,UAAU,iCAAa,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pii-scrub shim: the one place that imports @optimuslabs/pii-scrub-staging.
|
|
3
|
+
*
|
|
4
|
+
* Loaded the way lib/tofu.ts loads tofu: the sibling local dist when environment=development,
|
|
5
|
+
* the published npm package otherwise.
|
|
6
|
+
*/
|
|
7
|
+
import path from "path";
|
|
8
|
+
import { fileURLToPath } from "url";
|
|
9
|
+
import { isDevelopment } from "./tofu.js";
|
|
10
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
11
|
+
// dist/lib/pii-scrub.js → ../../.. → optimuslabs/pii-scrub/dist/index.js
|
|
12
|
+
const localPiiScrubPath = path.join(__dirname, "../../../pii-scrub/dist/index.js");
|
|
13
|
+
const piiScrub = (isDevelopment
|
|
14
|
+
? await import(localPiiScrubPath)
|
|
15
|
+
: await import("@optimuslabs/pii-scrub-staging"));
|
|
16
|
+
export const { SCRUBBER_VERSION, scrubFields, scrubText, scrubValue } = piiScrub;
|
|
17
|
+
//# sourceMappingURL=pii-scrub.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pii-scrub.js","sourceRoot":"","sources":["../../src/lib/pii-scrub.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,yEAAyE;AACzE,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,kCAAkC,CAAC,CAAC;AAEnF,MAAM,QAAQ,GAAG,CACf,aAAa;IACX,CAAC,CAAC,MAAM,MAAM,CAAC,iBAAiB,CAAC;IACjC,CAAC,CAAC,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAC3B,CAAC;AAE1B,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAC"}
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
export declare function orgConfigPath(): string;
|
|
2
2
|
export declare function readCollectPrompts(): boolean;
|
|
3
|
+
/**
|
|
4
|
+
* The org key the backend sends in the startup and inventory responses (`fingerprint_key`),
|
|
5
|
+
* or undefined until it has arrived: the prompt hash stays plain SHA-256 and secrets get no
|
|
6
|
+
* fingerprint until then.
|
|
7
|
+
*/
|
|
8
|
+
export declare function readFingerprintKey(): string | undefined;
|
|
3
9
|
export declare function persistCollectPrompts(value: unknown): void;
|
|
10
|
+
/**
|
|
11
|
+
* Store the org options a startup or inventory response carries: prompt collection, the org key
|
|
12
|
+
* and whether to scrub.
|
|
13
|
+
*/
|
|
4
14
|
export declare function persistCollectPromptsFromResponse(body: Record<string, unknown> | null | undefined): void;
|
|
5
15
|
//# sourceMappingURL=prompt-collection-policy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-collection-policy.d.ts","sourceRoot":"","sources":["../../src/lib/prompt-collection-policy.ts"],"names":[],"mappings":"AAOA,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAsBD,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;
|
|
1
|
+
{"version":3,"file":"prompt-collection-policy.d.ts","sourceRoot":"","sources":["../../src/lib/prompt-collection-policy.ts"],"names":[],"mappings":"AAOA,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAsBD,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAKD;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,SAAS,CAGvD;AAYD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAO1D;AAgBD;;;GAGG;AACH,wBAAgB,iCAAiC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAWxG"}
|
|
@@ -30,23 +30,59 @@ function collectPromptsFromConfig(cfg) {
|
|
|
30
30
|
export function readCollectPrompts() {
|
|
31
31
|
return collectPromptsFromConfig(readOrgConfig());
|
|
32
32
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
/** The org's fingerprint key: hex, at least 128 bits. Keys the prompt hash and secret fingerprints. */
|
|
34
|
+
const FINGERPRINT_KEY = /^(?:[0-9a-f]{2}){16,}$/i;
|
|
35
|
+
/**
|
|
36
|
+
* The org key the backend sends in the startup and inventory responses (`fingerprint_key`),
|
|
37
|
+
* or undefined until it has arrived: the prompt hash stays plain SHA-256 and secrets get no
|
|
38
|
+
* fingerprint until then.
|
|
39
|
+
*/
|
|
40
|
+
export function readFingerprintKey() {
|
|
41
|
+
const key = readOrgConfig().fingerprint_key;
|
|
42
|
+
return typeof key === "string" && FINGERPRINT_KEY.test(key) ? key : undefined;
|
|
43
|
+
}
|
|
44
|
+
function writeOrgConfig(update) {
|
|
36
45
|
const filePath = orgConfigPath();
|
|
37
46
|
try {
|
|
38
47
|
fs.mkdirSync(path.dirname(filePath), { recursive: true });
|
|
39
|
-
|
|
40
|
-
delete next.hash_tool_call_prompts;
|
|
41
|
-
fs.writeFileSync(filePath, `${JSON.stringify(next)}\n`, { encoding: "utf8", mode: 0o600 });
|
|
48
|
+
fs.writeFileSync(filePath, `${JSON.stringify(update(readOrgConfig()))}\n`, { encoding: "utf8", mode: 0o600 });
|
|
42
49
|
}
|
|
43
50
|
catch {
|
|
44
51
|
// Best-effort: next heartbeat can retry.
|
|
45
52
|
}
|
|
46
53
|
}
|
|
54
|
+
export function persistCollectPrompts(value) {
|
|
55
|
+
if (typeof value !== "boolean")
|
|
56
|
+
return;
|
|
57
|
+
writeOrgConfig((current) => {
|
|
58
|
+
const next = { ...current, collect_prompts: value };
|
|
59
|
+
delete next.hash_tool_call_prompts;
|
|
60
|
+
return next;
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
function persistFingerprintKey(value) {
|
|
64
|
+
if (typeof value !== "string" || !FINGERPRINT_KEY.test(value) || value === readFingerprintKey())
|
|
65
|
+
return;
|
|
66
|
+
writeOrgConfig((current) => ({ ...current, fingerprint_key: value }));
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Whether the organization scrubs what endpoints send (OPT-942), read by `@optimuslabs/pii-scrub`
|
|
70
|
+
* from this file: only an explicit `false` switches scrubbing off.
|
|
71
|
+
*/
|
|
72
|
+
function persistScrubPii(value) {
|
|
73
|
+
if (typeof value !== "boolean" || readOrgConfig().scrub_pii === value)
|
|
74
|
+
return;
|
|
75
|
+
writeOrgConfig((current) => ({ ...current, scrub_pii: value }));
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Store the org options a startup or inventory response carries: prompt collection, the org key
|
|
79
|
+
* and whether to scrub.
|
|
80
|
+
*/
|
|
47
81
|
export function persistCollectPromptsFromResponse(body) {
|
|
48
82
|
if (!body || typeof body !== "object")
|
|
49
83
|
return;
|
|
84
|
+
persistFingerprintKey(body.fingerprint_key);
|
|
85
|
+
persistScrubPii(body.scrub_pii);
|
|
50
86
|
if (typeof body.collect_prompts === "boolean") {
|
|
51
87
|
persistCollectPrompts(body.collect_prompts);
|
|
52
88
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-collection-policy.js","sourceRoot":"","sources":["../../src/lib/prompt-collection-policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,2FAA2F;AAC3F,MAAM,wBAAwB,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;AAE/F,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,wBAAwB,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,aAAa;IACpB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,EAAE,MAAM,CAAC,CAAY,CAAC;QAC/E,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,OAAO,MAAiC,CAAC;QAC3C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,uCAAuC;IACzC,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,wBAAwB,CAAC,GAA4B;IAC5D,IAAI,OAAO,GAAG,CAAC,eAAe,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC,eAAe,CAAC;IACzE,mEAAmE;IACnE,IAAI,OAAO,GAAG,CAAC,sBAAsB,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC,sBAAsB,KAAK,IAAI,CAAC;IAChG,4DAA4D;IAC5D,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,wBAAwB,CAAC,aAAa,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"prompt-collection-policy.js","sourceRoot":"","sources":["../../src/lib/prompt-collection-policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startup-sync.d.ts","sourceRoot":"","sources":["../../src/lib/startup-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"startup-sync.d.ts","sourceRoot":"","sources":["../../src/lib/startup-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAqLH,wBAAsB,2BAA2B,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBrF"}
|
package/dist/lib/startup-sync.js
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
import { buildStartupEndpointUrl, createSignature, loadEndpointBase, persistAuthKey, readStoredAuthKey, } from "./tofu.js";
|
|
13
13
|
import { OPTIMUS_AUTH_KEY_RELATIVE_PATH, resetToolCallAuthCache } from "./machine-auth.js";
|
|
14
14
|
import { persistCollectPromptsFromResponse } from "./prompt-collection-policy.js";
|
|
15
|
+
import { SCRUBBER_VERSION, scrubText } from "./pii-scrub.js";
|
|
15
16
|
import { resolveUserProfile } from "./user-profile.js";
|
|
16
17
|
import fs from "node:fs";
|
|
17
18
|
import os from "node:os";
|
|
@@ -65,52 +66,59 @@ function readOrganizationUuid() {
|
|
|
65
66
|
return "";
|
|
66
67
|
}
|
|
67
68
|
}
|
|
68
|
-
|
|
69
|
-
if (process.env.OPTIMUS_SKIP_STARTUP_SYNC === "1")
|
|
70
|
-
return;
|
|
69
|
+
function startupSyncIntervalMs() {
|
|
71
70
|
const rawInterval = process.env.OPTIMUS_STARTUP_SYNC_INTERVAL_MS;
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
const now = Date.now();
|
|
79
|
-
if (shouldSkipStartupSyncDueToCooldown(now, intervalMs)) {
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
const timestamp = new Date().toISOString();
|
|
83
|
-
const payloadSummary = {
|
|
84
|
-
timestamp,
|
|
85
|
-
directory: process.cwd(),
|
|
86
|
-
hardware_uuid: hardwareUuid,
|
|
87
|
-
};
|
|
88
|
-
let user_profile;
|
|
71
|
+
if (rawInterval === undefined || rawInterval === "")
|
|
72
|
+
return DEFAULT_STARTUP_SYNC_INTERVAL_MS;
|
|
73
|
+
const parsed = parseInt(rawInterval, 10);
|
|
74
|
+
return Number.isNaN(parsed) || parsed < 0 ? DEFAULT_STARTUP_SYNC_INTERVAL_MS : parsed;
|
|
75
|
+
}
|
|
76
|
+
function startupUserProfile() {
|
|
89
77
|
try {
|
|
90
|
-
|
|
78
|
+
return { ...resolveUserProfile() };
|
|
91
79
|
}
|
|
92
80
|
catch (err) {
|
|
93
81
|
console.error(`[optimus-tool-call] resolveUserProfile failed; continuing startup sync with empty profile: ${err instanceof Error ? err.message : String(err)}`);
|
|
94
|
-
|
|
82
|
+
return emptyUserProfile();
|
|
95
83
|
}
|
|
96
|
-
|
|
84
|
+
}
|
|
85
|
+
function githubUsername(profile) {
|
|
86
|
+
return ((typeof profile.github_username === "string" && profile.github_username.trim()) ||
|
|
97
87
|
process.env.GITHUB_USER ||
|
|
98
88
|
process.env.GH_USER ||
|
|
99
|
-
"";
|
|
100
|
-
|
|
101
|
-
|
|
89
|
+
"");
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* The machine's metadata for the startup request. The git remote in `repo_identifier` can embed a
|
|
93
|
+
* token (`https://user:token@host/owner/repo`), so it is scrubbed, and the scrubber's version is
|
|
94
|
+
* sent; `metadata` is not part of the signed summary.
|
|
95
|
+
*/
|
|
96
|
+
function startupMetadata() {
|
|
97
|
+
const user_profile = startupUserProfile();
|
|
98
|
+
return {
|
|
99
|
+
github_username: githubUsername(user_profile),
|
|
102
100
|
org_identifier: process.env.GITHUB_ORG || "",
|
|
103
101
|
organization_uuid: readOrganizationUuid(),
|
|
104
|
-
repo_identifier: process.env.GITHUB_REPOSITORY || "",
|
|
102
|
+
repo_identifier: scrubText(process.env.GITHUB_REPOSITORY || ""),
|
|
105
103
|
branch: process.env.GITHUB_REF_NAME || process.env.BRANCH_NAME || "",
|
|
106
104
|
commit_sha: process.env.GITHUB_SHA || "",
|
|
107
105
|
agent_name: process.env.OPTIMUS_AGENT || "",
|
|
108
106
|
user_profile,
|
|
107
|
+
scrubber_version: SCRUBBER_VERSION,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
/** The startup request: the summary, signed with this machine's key when it has one, and the metadata. */
|
|
111
|
+
function buildStartupBody(hardwareUuid) {
|
|
112
|
+
const timestamp = new Date().toISOString();
|
|
113
|
+
const payloadSummary = {
|
|
114
|
+
timestamp,
|
|
115
|
+
directory: process.cwd(),
|
|
116
|
+
hardware_uuid: hardwareUuid,
|
|
109
117
|
};
|
|
110
118
|
const body = {
|
|
111
119
|
hardware_uuid: hardwareUuid,
|
|
112
120
|
payload: payloadSummary,
|
|
113
|
-
metadata,
|
|
121
|
+
metadata: startupMetadata(),
|
|
114
122
|
scan_timestamp: timestamp,
|
|
115
123
|
};
|
|
116
124
|
const storedKey = readStoredAuthKey({
|
|
@@ -121,42 +129,56 @@ export async function ensureStartupMetadataSynced(hardwareUuid) {
|
|
|
121
129
|
if (storedKey.key_id)
|
|
122
130
|
body.key_id = storedKey.key_id;
|
|
123
131
|
}
|
|
132
|
+
return body;
|
|
133
|
+
}
|
|
134
|
+
async function postStartupBody(url, body) {
|
|
135
|
+
const controller = new AbortController();
|
|
136
|
+
const timeoutId = setTimeout(() => controller.abort(), 5000);
|
|
137
|
+
try {
|
|
138
|
+
return await fetch(url, {
|
|
139
|
+
method: "POST",
|
|
140
|
+
headers: { "Content-Type": "application/json" },
|
|
141
|
+
body: JSON.stringify(body),
|
|
142
|
+
signal: controller.signal,
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
finally {
|
|
146
|
+
clearTimeout(timeoutId);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/** Store what a successful startup response carries (a new key, the org's options); true when it parsed. */
|
|
150
|
+
function applyStartupResponse(text, hardwareUuid) {
|
|
151
|
+
let parsed;
|
|
152
|
+
try {
|
|
153
|
+
parsed = JSON.parse(text);
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
return false;
|
|
157
|
+
}
|
|
158
|
+
if (parsed.status === "key_issued" && typeof parsed.key === "string") {
|
|
159
|
+
persistAuthKey(parsed.key, typeof parsed.key_id === "string" ? parsed.key_id : null, hardwareUuid, { authRelativePath: OPTIMUS_AUTH_KEY_RELATIVE_PATH });
|
|
160
|
+
resetToolCallAuthCache();
|
|
161
|
+
}
|
|
162
|
+
persistCollectPromptsFromResponse(parsed);
|
|
163
|
+
return true;
|
|
164
|
+
}
|
|
165
|
+
export async function ensureStartupMetadataSynced(hardwareUuid) {
|
|
166
|
+
if (process.env.OPTIMUS_SKIP_STARTUP_SYNC === "1")
|
|
167
|
+
return;
|
|
168
|
+
if (shouldSkipStartupSyncDueToCooldown(Date.now(), startupSyncIntervalMs())) {
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
const body = buildStartupBody(hardwareUuid);
|
|
124
172
|
const url = buildStartupEndpointUrl(loadEndpointBase());
|
|
125
173
|
try {
|
|
126
|
-
const
|
|
127
|
-
const timeoutId = setTimeout(() => controller.abort(), 5000);
|
|
128
|
-
let res;
|
|
129
|
-
try {
|
|
130
|
-
res = await fetch(url, {
|
|
131
|
-
method: "POST",
|
|
132
|
-
headers: { "Content-Type": "application/json" },
|
|
133
|
-
body: JSON.stringify(body),
|
|
134
|
-
signal: controller.signal,
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
finally {
|
|
138
|
-
clearTimeout(timeoutId);
|
|
139
|
-
}
|
|
174
|
+
const res = await postStartupBody(url, body);
|
|
140
175
|
const text = await res.text();
|
|
141
176
|
if (!res.ok) {
|
|
142
177
|
console.error(`[optimus-tool-call] startup metadata sync failed ${res.status}: ${text ? text.slice(0, 240) : res.statusText}`);
|
|
143
178
|
recordStartupSyncAttemptEnd(false);
|
|
144
179
|
return;
|
|
145
180
|
}
|
|
146
|
-
|
|
147
|
-
try {
|
|
148
|
-
parsed = JSON.parse(text);
|
|
149
|
-
}
|
|
150
|
-
catch {
|
|
151
|
-
recordStartupSyncAttemptEnd(false);
|
|
152
|
-
return;
|
|
153
|
-
}
|
|
154
|
-
if (parsed.status === "key_issued" && typeof parsed.key === "string") {
|
|
155
|
-
persistAuthKey(parsed.key, typeof parsed.key_id === "string" ? parsed.key_id : null, hardwareUuid, { authRelativePath: OPTIMUS_AUTH_KEY_RELATIVE_PATH });
|
|
156
|
-
resetToolCallAuthCache();
|
|
157
|
-
}
|
|
158
|
-
persistCollectPromptsFromResponse(parsed);
|
|
159
|
-
recordStartupSyncAttemptEnd(true);
|
|
181
|
+
recordStartupSyncAttemptEnd(applyStartupResponse(text, hardwareUuid));
|
|
160
182
|
}
|
|
161
183
|
catch (err) {
|
|
162
184
|
console.error(`[optimus-tool-call] startup metadata sync error: ${err instanceof Error ? err.message : String(err)}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startup-sync.js","sourceRoot":"","sources":["../../src/lib/startup-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,uBAAuB,EACvB,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,iBAAiB,GAClB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,8BAA8B,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,iCAAiC,EAAE,MAAM,+BAA+B,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAoB,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,gBAAgB,GAAG,GAAgB,EAAE,CAAC,CAAC;IAC3C,aAAa,EAAE,EAAE;IACjB,WAAW,EAAE,EAAE;IACf,YAAY,EAAE,EAAE;IAChB,YAAY,EAAE,EAAE;IAChB,eAAe,EAAE,EAAE;IACnB,YAAY,EAAE,EAAE;IAChB,YAAY,EAAE,EAAE;CACjB,CAAC,CAAC;AAEH,MAAM,gCAAgC,GAAG,OAAS,CAAC;AACnD,MAAM,oCAAoC,GAAG,IAAK,CAAC;AACnD,MAAM,mCAAmC,GAAG,MAAO,CAAC;AAEpD,IAAI,yBAAyB,GAAG,CAAC,CAAC;AAClC,8EAA8E;AAC9E,IAAI,oBAAoB,GAAG,IAAI,CAAC;AAChC,IAAI,wBAAwB,GAAG,CAAC,CAAC;AAEjC,SAAS,2BAA2B,CAAC,EAAW;IAC9C,yBAAyB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvC,oBAAoB,GAAG,EAAE,CAAC;IAC1B,IAAI,EAAE,EAAE,CAAC;QACP,wBAAwB,GAAG,CAAC,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,wBAAwB,IAAI,CAAC,CAAC;IAChC,CAAC;AACH,CAAC;AAED,SAAS,kCAAkC,CAAC,GAAW,EAAE,UAAkB;IACzE,IAAI,yBAAyB,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACjD,MAAM,gBAAgB,GAAG,CAAC,oBAAoB;QAC5C,CAAC,CAAC,IAAI,CAAC,GAAG,CACN,mCAAmC,EACnC,oCAAoC;YAClC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,wBAAwB,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAC9D;QACH,CAAC,CAAC,CAAC,CAAC;IACN,MAAM,iBAAiB,GAAG,oBAAoB,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;IACjE,OAAO,UAAU,GAAG,CAAC,IAAI,GAAG,GAAG,yBAAyB,GAAG,UAAU,CAAC;AACxE,CAAC;AAED,SAAS,oBAAoB;IAC3B,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACtE,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,KAAK,EAAE,uBAAuB,CAAC,CAAC;QAC1G,OAAO,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"startup-sync.js","sourceRoot":"","sources":["../../src/lib/startup-sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-event.d.ts","sourceRoot":"","sources":["../../../src/lib/telemetry/build-event.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"build-event.d.ts","sourceRoot":"","sources":["../../../src/lib/telemetry/build-event.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AA2EjE;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,EACtC,aAAa,GAAE,MAAkB,EACjC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GACxB,cAAc,GAAG,IAAI,CA6BvB"}
|