@pushary/agent-hooks 1.9.58 → 1.9.60
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 +14 -0
- package/data/cursor-plugin/.cursor-plugin/plugin.json +5 -1
- package/data/cursor-plugin/CHANGELOG.md +4 -0
- package/dist/{api-WVXBM4MR.js → api-ASQA5PZM.js} +11 -11
- package/dist/bin/pushary-bell-hook.js +29 -29
- package/dist/bin/pushary-bell.js +12 -12
- package/dist/bin/pushary-claude.js +31 -30
- package/dist/bin/pushary-clean.js +58 -53
- package/dist/bin/pushary-codex-bridge.js +22 -22
- package/dist/bin/pushary-codex-hook.js +34 -34
- package/dist/bin/pushary-codex-session.js +8 -8
- package/dist/bin/pushary-codex.js +15 -15
- package/dist/bin/pushary-connect.js +29 -29
- package/dist/bin/pushary-cowork.js +7 -7
- package/dist/bin/pushary-daemon.js +39 -39
- package/dist/bin/pushary-disconnect.js +42 -29
- package/dist/bin/pushary-doctor.js +51 -47
- package/dist/bin/pushary-elicitation-hook.js +29 -29
- package/dist/bin/pushary-gemini-bridge.js +15 -15
- package/dist/bin/pushary-gemini-hook.js +31 -31
- package/dist/bin/pushary-hook.js +33 -33
- package/dist/bin/pushary-login.js +22 -19
- package/dist/bin/pushary-logout.js +36 -31
- package/dist/bin/pushary-mcp.js +12 -12
- package/dist/bin/pushary-mode.js +41 -55
- package/dist/bin/pushary-notification-hook.js +28 -28
- package/dist/bin/pushary-opencode-hook.js +30 -30
- package/dist/bin/pushary-permission-denied-hook.js +33 -33
- package/dist/bin/pushary-permission-hook.js +32 -32
- package/dist/bin/pushary-post-hook.js +28 -28
- package/dist/bin/pushary-prompt-hook.js +28 -28
- package/dist/bin/pushary-session-end-hook.js +28 -28
- package/dist/bin/pushary-session-start-hook.js +35 -35
- package/dist/bin/pushary-setup.js +49 -46
- package/dist/bin/pushary-stats.js +5 -5
- package/dist/bin/pushary-status.js +41 -36
- package/dist/bin/pushary-stop-hook.js +28 -28
- package/dist/bin/pushary-stopfailure-hook.js +28 -28
- package/dist/bin/pushary-suggestions.js +33 -39
- package/dist/bin/pushary-transcript-register.js +20 -20
- package/dist/bin/pushary-transcripts.js +33 -20
- package/dist/bin/pushary-upgrade.js +71 -50
- package/dist/bin/pushary-wait.js +36 -42
- package/dist/bin/pushary.js +8 -8
- package/dist/{chunk-JSQOHMNJ.js → chunk-2AELPDMT.js} +1 -1
- package/dist/{chunk-WVP6UQG3.js → chunk-2QREHU4O.js} +11 -4
- package/dist/{chunk-QTCFEKLJ.js → chunk-33OOEVPG.js} +1 -1
- package/dist/{chunk-QDFLBTUP.js → chunk-4MUFZU2G.js} +1 -1
- package/dist/{chunk-5DZHKNBU.js → chunk-4MWRR5IT.js} +8 -7
- package/dist/{chunk-XEJV3QSS.js → chunk-4PZXI7WU.js} +3 -3
- package/dist/{chunk-UMVVQXAC.js → chunk-56JCQQLS.js} +2 -2
- package/dist/{chunk-JZKEC4XJ.js → chunk-5RU35K57.js} +3 -12
- package/dist/{chunk-HRHAZ3GE.js → chunk-625DZLT5.js} +6 -6
- package/dist/{chunk-3KOPY2UQ.js → chunk-6LOQE4J4.js} +3 -3
- package/dist/{chunk-K5CAURU5.js → chunk-6MC2XXFD.js} +4 -4
- package/dist/{chunk-MYBCXDIL.js → chunk-6MJWYYAS.js} +62 -49
- package/dist/chunk-7BHI3PZN.js +41 -0
- package/dist/{chunk-C3IWX6KU.js → chunk-7JXJJNQ5.js} +1 -1
- package/dist/{chunk-CK5BCFQF.js → chunk-7WFRY6OL.js} +2 -2
- package/dist/{chunk-4YNNAF53.js → chunk-ADR3KHOC.js} +2 -2
- package/dist/{chunk-XTZHUIGJ.js → chunk-ATKN4BJT.js} +1 -1
- package/dist/{chunk-GZL3KEPC.js → chunk-AXJLJJ3M.js} +147 -136
- package/dist/{chunk-LVDC3RUE.js → chunk-BG4Y64FW.js} +1 -1
- package/dist/{chunk-KSVCCSAO.js → chunk-CDQHQAS7.js} +9 -7
- package/dist/{chunk-TN74MUMB.js → chunk-CEQ2AZH4.js} +13 -13
- package/dist/{chunk-X6F4BQEE.js → chunk-CSOROFJY.js} +5 -5
- package/dist/{chunk-CZULJ647.js → chunk-DJ7EZIQA.js} +3 -3
- package/dist/{chunk-IUOUNRLH.js → chunk-ELLJPP6O.js} +2 -2
- package/dist/{chunk-5SFM6XB4.js → chunk-ERK24P76.js} +12 -2
- package/dist/{chunk-DQ565WFA.js → chunk-EZHY65QA.js} +21 -11
- package/dist/{chunk-4LUPZ347.js → chunk-FDWMG6NY.js} +2 -2
- package/dist/{chunk-S5LX25XE.js → chunk-FUZ5VYWD.js} +1 -1
- package/dist/{chunk-N3NSWWNU.js → chunk-GAMVAORR.js} +1 -1
- package/dist/{chunk-QP3XPS5U.js → chunk-HC3FHDKB.js} +6 -6
- package/dist/{chunk-ATUZX4K7.js → chunk-IF26ZGZ7.js} +3 -3
- package/dist/{chunk-CSQJCXPX.js → chunk-J4KQL7YZ.js} +5 -5
- package/dist/{chunk-M7NX25ZA.js → chunk-K4MBKXAE.js} +1 -1
- package/dist/{chunk-PZOFPAPG.js → chunk-L3AFVFGQ.js} +2 -2
- package/dist/{chunk-S54YLXWW.js → chunk-METMK3L4.js} +4 -4
- package/dist/{chunk-ZEHUWE3X.js → chunk-MUNL23WE.js} +6 -6
- package/dist/{chunk-3TJLPABQ.js → chunk-NKLNU577.js} +5 -5
- package/dist/{chunk-GMXKITVA.js → chunk-NMUI3ZWG.js} +1 -1
- package/dist/{chunk-IJ6XKKQW.js → chunk-O6IUZGWV.js} +1 -1
- package/dist/chunk-PPY5N2E6.js +58 -0
- package/dist/{chunk-XWY4UW62.js → chunk-PUHP4IBA.js} +4 -4
- package/dist/{chunk-T2AC5VFQ.js → chunk-QGSHV3WO.js} +5 -5
- package/dist/{chunk-RGQEULXD.js → chunk-QLMOU57V.js} +28 -17
- package/dist/{chunk-FAGDOPQI.js → chunk-QUBIEZXC.js} +3 -3
- package/dist/{chunk-XFUKCBPU.js → chunk-RLVJ6TVL.js} +23 -23
- package/dist/{chunk-VPZ5K72D.js → chunk-RPPXQNIA.js} +1 -1
- package/dist/{chunk-MCHOBQHE.js → chunk-S54C6TQC.js} +7 -6
- package/dist/{chunk-ZL3UR6M5.js → chunk-SEILUNWB.js} +3 -3
- package/dist/{chunk-4JJ3T7IE.js → chunk-SOCJ2N3E.js} +6 -6
- package/dist/{chunk-JYXIARGW.js → chunk-SVQWHV65.js} +1 -1
- package/dist/{chunk-T2BEIPK2.js → chunk-U7NR4JVD.js} +4 -4
- package/dist/{chunk-LVWXRXT7.js → chunk-USE5IEEW.js} +1 -1
- package/dist/{chunk-OHD35NPC.js → chunk-V57XLKZL.js} +2 -2
- package/dist/{chunk-KIH5BDH5.js → chunk-VIJIG5YL.js} +2 -2
- package/dist/{chunk-RF74KBF5.js → chunk-W2IVTHIG.js} +9 -9
- package/dist/{chunk-WXZN5CS3.js → chunk-WFSGCFXQ.js} +2 -2
- package/dist/{chunk-IRZ5FVWG.js → chunk-WN3RACVD.js} +3 -3
- package/dist/{chunk-3WNOO7BM.js → chunk-WXPVVXBU.js} +4 -4
- package/dist/{chunk-HUWLEVL2.js → chunk-WXZHQ3TT.js} +5 -5
- package/dist/chunk-X3YKQJCZ.js +36 -0
- package/dist/{chunk-I43PY5G3.js → chunk-XEJOPVCG.js} +1 -1
- package/dist/{chunk-ECJJKDP7.js → chunk-XV6S5PWW.js} +3 -3
- package/dist/{chunk-ZJNU32VE.js → chunk-Y5V4PA2Z.js} +155 -37
- package/dist/{chunk-7RZO6VWD.js → chunk-Y5VKZNFN.js} +2 -2
- package/dist/{chunk-VLJ5C6IT.js → chunk-YGE6ML3O.js} +4 -4
- package/dist/{chunk-XXNT4FGA.js → chunk-YPD3MTFU.js} +1 -1
- package/dist/{chunk-KW6EYFZV.js → chunk-ZGOJLNKS.js} +4 -4
- package/dist/{codex-app-cards-switch-TVKXJWXE.js → codex-app-cards-switch-ZO76D2NY.js} +11 -11
- package/dist/{codex-desktop-launch-ROTJEEGF.js → codex-desktop-launch-MJT5E3O3.js} +1 -1
- package/dist/{codex-session-launch-VL6ZQA3N.js → codex-session-launch-PTFCVIC7.js} +19 -19
- package/dist/{config-SYLUYZQE.js → config-SXV6XNVU.js} +3 -3
- package/dist/{global-upgrade-IPWV5PTM.js → global-upgrade-ETDP32LO.js} +9 -9
- package/dist/{identity-ARPAUNGN.js → identity-OOLIOSMR.js} +4 -4
- package/dist/{live-capabilities-EWTRY2HA.js → live-capabilities-2XIFA7YO.js} +4 -4
- package/dist/{paths-IZTNMJAQ.js → paths-IIOQZESZ.js} +3 -3
- package/dist/{reapply-ILKOYYKA.js → reapply-KFAJSKOQ.js} +28 -28
- package/dist/src/index.js +22 -22
- package/dist/{upgrade-lock-ML73QXIG.js → upgrade-lock-T6ILR644.js} +4 -4
- package/dist/{usage-OUV76AIY.js → usage-6TN7FVWS.js} +3 -3
- package/package.json +1 -1
- package/dist/chunk-7QLSKOSU.js +0 -19
- package/dist/chunk-EO23EUOK.js +0 -14
|
@@ -26,30 +26,46 @@ import { join, resolve } from "path";
|
|
|
26
26
|
import { spawn } from "child_process";
|
|
27
27
|
import { Transform } from "stream";
|
|
28
28
|
|
|
29
|
-
// src/codex-
|
|
29
|
+
// src/codex-permission-form.ts
|
|
30
30
|
var CODEX_APP_CARD_METHOD = "mcpServer/elicitation/request";
|
|
31
|
+
var TOOL_CALL_APPROVAL = "mcp_tool_call";
|
|
32
|
+
var MAX_IDENTIFIER_LENGTH = 200;
|
|
33
|
+
var CODEX_COMPUTER_USE_SERVER = "cua_repl";
|
|
34
|
+
var CODEX_BROWSER_SERVER = "node_repl";
|
|
35
|
+
var CODEX_SHOWS_THE_SAME_QUESTION = "Codex is showing the same question on your Mac.";
|
|
36
|
+
var ONE_PRINTABLE_LINE = /^[^\p{Cc}\p{Cf}\p{Zl}\p{Zp}]+$/u;
|
|
37
|
+
var CODEX_FORM_DECLINED = { action: "decline", content: null, _meta: null };
|
|
38
|
+
var isRecord = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
|
|
39
|
+
var isRequestId = (value) => typeof value === "string" && value.length > 0 && value.length <= MAX_IDENTIFIER_LENGTH || typeof value === "number" && Number.isSafeInteger(value);
|
|
40
|
+
var isIdentifier = (value) => typeof value === "string" && value.length > 0 && value.length <= MAX_IDENTIFIER_LENGTH;
|
|
41
|
+
var asksForNothingToFillIn = (schema) => isRecord(schema) && isRecord(schema.properties) && Object.keys(schema.properties).length === 0;
|
|
42
|
+
var codexPermissionFormOf = (message) => {
|
|
43
|
+
if (!isRecord(message) || message.method !== CODEX_APP_CARD_METHOD || !isRequestId(message.id)) return null;
|
|
44
|
+
const params = message.params;
|
|
45
|
+
if (!isRecord(params) || !isIdentifier(params.threadId)) return null;
|
|
46
|
+
if (typeof params.serverName !== "string" || typeof params.mode !== "string" || typeof params.message !== "string") return null;
|
|
47
|
+
if (!asksForNothingToFillIn(params.requestedSchema)) return null;
|
|
48
|
+
const meta = params._meta;
|
|
49
|
+
if (!isRecord(meta) || meta.codex_approval_kind !== TOOL_CALL_APPROVAL) return null;
|
|
50
|
+
return { requestId: message.id, threadId: params.threadId, serverName: params.serverName, mode: params.mode, sentence: params.message, meta };
|
|
51
|
+
};
|
|
52
|
+
var codexFormCameFrom = (message, servers) => isRecord(message) && message.method === CODEX_APP_CARD_METHOD && isRecord(message.params) && typeof message.params.serverName === "string" && servers.includes(message.params.serverName);
|
|
53
|
+
|
|
54
|
+
// src/codex-app-card.ts
|
|
31
55
|
var CODEX_REQUEST_RESOLVED_METHOD = "serverRequest/resolved";
|
|
32
|
-
var COMPUTER_USE_SERVER = "cua_repl";
|
|
33
56
|
var COMPUTER_USE_CONNECTOR = "computer-use";
|
|
34
|
-
var TOOL_CALL_APPROVAL = "mcp_tool_call";
|
|
35
57
|
var CONVERSATION_GRANT = "session";
|
|
36
58
|
var FORM_MODES = ["form", "openai/form", "openaiForm"];
|
|
37
59
|
var APP_PARAMETER = "app";
|
|
38
|
-
var MAX_IDENTIFIER_LENGTH = 200;
|
|
39
60
|
var MAX_APP_NAME_LENGTH = 100;
|
|
40
61
|
var MAX_CARDS_ANSWERED_ON_THE_PHONE = 64;
|
|
41
62
|
var APP_LINES_A_LATE_REPLY_CAN_FOLLOW = 256;
|
|
42
|
-
var ONE_PRINTABLE_LINE = /^[^\p{Cc}\p{Cf}\p{Zl}\p{Zp}]+$/u;
|
|
43
63
|
var APP_IDENTIFIER = /^[A-Za-z0-9][A-Za-z0-9._-]*$/;
|
|
44
64
|
var RISK_LEVELS = ["low", "medium", "high"];
|
|
45
65
|
var PHONE_ANSWER_YES = "yes";
|
|
46
66
|
var PHONE_ANSWER_NO = "no";
|
|
47
67
|
var ALLOW_THIS_CONVERSATION = { action: "accept", content: {}, _meta: { persist: CONVERSATION_GRANT } };
|
|
48
|
-
var DENY =
|
|
49
|
-
var isRecord = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
|
|
50
|
-
var isRequestId = (value) => typeof value === "string" && value.length > 0 && value.length <= MAX_IDENTIFIER_LENGTH || typeof value === "number" && Number.isSafeInteger(value);
|
|
51
|
-
var isIdentifier = (value) => typeof value === "string" && value.length > 0 && value.length <= MAX_IDENTIFIER_LENGTH;
|
|
52
|
-
var asksForNothingToFillIn = (schema) => isRecord(schema) && isRecord(schema.properties) && Object.keys(schema.properties).length === 0;
|
|
68
|
+
var DENY = CODEX_FORM_DECLINED;
|
|
53
69
|
var offersAConversationGrant = (persist) => Array.isArray(persist) && persist.includes(CONVERSATION_GRANT);
|
|
54
70
|
var isTheAppParameter = (entry) => isRecord(entry) && entry.name === APP_PARAMETER;
|
|
55
71
|
var appNameShownBy = (meta) => {
|
|
@@ -64,25 +80,20 @@ var appIdentifierIn = (meta) => {
|
|
|
64
80
|
var riskIn = (meta) => RISK_LEVELS.find((level) => level === meta.riskLevel) ?? null;
|
|
65
81
|
var wordingCodexShowsFor = (appName) => `Allow Computer Use to use "${appName}"?`;
|
|
66
82
|
var codexAppCardOf = (message) => {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
if (
|
|
70
|
-
|
|
71
|
-
if (
|
|
72
|
-
const meta = params._meta;
|
|
73
|
-
if (!isRecord(meta) || meta.connector_id !== COMPUTER_USE_CONNECTOR || meta.codex_approval_kind !== TOOL_CALL_APPROVAL) return null;
|
|
74
|
-
if (!offersAConversationGrant(meta.persist)) return null;
|
|
75
|
-
const appName = appNameShownBy(meta);
|
|
76
|
-
if (appName === null || params.message !== wordingCodexShowsFor(appName)) return null;
|
|
83
|
+
const form = codexPermissionFormOf(message);
|
|
84
|
+
if (!form || form.serverName !== CODEX_COMPUTER_USE_SERVER || !FORM_MODES.includes(form.mode)) return null;
|
|
85
|
+
if (form.meta.connector_id !== COMPUTER_USE_CONNECTOR || !offersAConversationGrant(form.meta.persist)) return null;
|
|
86
|
+
const appName = appNameShownBy(form.meta);
|
|
87
|
+
if (appName === null || form.sentence !== wordingCodexShowsFor(appName)) return null;
|
|
77
88
|
return {
|
|
78
|
-
requestId:
|
|
79
|
-
threadId:
|
|
89
|
+
requestId: form.requestId,
|
|
90
|
+
threadId: form.threadId,
|
|
80
91
|
appName,
|
|
81
|
-
appIdentifier: appIdentifierIn(meta),
|
|
82
|
-
risk: riskIn(meta)
|
|
92
|
+
appIdentifier: appIdentifierIn(form.meta),
|
|
93
|
+
risk: riskIn(form.meta)
|
|
83
94
|
};
|
|
84
95
|
};
|
|
85
|
-
var comesFromComputerUse = (message) =>
|
|
96
|
+
var comesFromComputerUse = (message) => codexFormCameFrom(message, [CODEX_COMPUTER_USE_SERVER]);
|
|
86
97
|
var codexRequestResolvedBy = (message) => {
|
|
87
98
|
if (!isRecord(message) || message.method !== CODEX_REQUEST_RESOLVED_METHOD || !isRecord(message.params)) return null;
|
|
88
99
|
return isRequestId(message.params.requestId) ? message.params.requestId : null;
|
|
@@ -92,7 +103,7 @@ var codexAppCardQuestion = (card) => `Allow Codex to use ${card.appName} for thi
|
|
|
92
103
|
var codexAppCardContext = (card) => [
|
|
93
104
|
card.appIdentifier ? `App: ${card.appName} (${card.appIdentifier})` : `App: ${card.appName}`,
|
|
94
105
|
...card.risk ? [`Risk Codex reports: ${card.risk}`] : [],
|
|
95
|
-
|
|
106
|
+
`${CODEX_SHOWS_THE_SAME_QUESTION} Yes allows this app for this conversation only.`
|
|
96
107
|
].join("\n");
|
|
97
108
|
var codexAppCardDecisionOf = (phoneAnswer) => {
|
|
98
109
|
if (phoneAnswer === PHONE_ANSWER_YES) return "allow";
|
|
@@ -165,6 +176,110 @@ var CodexAppCardLedger = class {
|
|
|
165
176
|
}
|
|
166
177
|
};
|
|
167
178
|
|
|
179
|
+
// src/codex-browser-use-card.ts
|
|
180
|
+
var BROWSER_USE_SERVERS = [CODEX_COMPUTER_USE_SERVER, CODEX_BROWSER_SERVER];
|
|
181
|
+
var BROWSER_USE_CONNECTOR = "browser-use";
|
|
182
|
+
var PLAIN_FORM = "form";
|
|
183
|
+
var SITE_ACCESS_TOOL = "access_browser_origin";
|
|
184
|
+
var TRANSFER_TOOLS = { download: "download_browser_files", upload: "upload_browser_files" };
|
|
185
|
+
var TRANSFER_WORDING = {
|
|
186
|
+
download: { before: "Allow download from ", after: "?" },
|
|
187
|
+
upload: { before: "Allow upload to ", after: "?" }
|
|
188
|
+
};
|
|
189
|
+
var WEB_PROTOCOLS = ["http:", "https:"];
|
|
190
|
+
var BROWSER_NAMES = ["Browser use", "Cloud browser"];
|
|
191
|
+
var MAX_ORIGIN_LENGTH = 100;
|
|
192
|
+
var MAX_PAGE_LENGTH = 2e3;
|
|
193
|
+
var MAX_ADDRESS_SHOWN = 240;
|
|
194
|
+
var CUT_SHORT = "\u2026";
|
|
195
|
+
var WHAT_AN_ANSWER_DOES = {
|
|
196
|
+
site_access: `${CODEX_SHOWS_THE_SAME_QUESTION} Yes allows this site for the rest of this conversation, or only this turn if Codex is set to ask each turn. No blocks it for this conversation.`,
|
|
197
|
+
file_transfer: `${CODEX_SHOWS_THE_SAME_QUESTION} It shows the whole address. Yes allows it once and saves nothing.`
|
|
198
|
+
};
|
|
199
|
+
var ACCEPTED_WITH_NO_SAVED_CHOICE = { action: "accept", content: {}, _meta: null };
|
|
200
|
+
var webAddressOf = (text, longest) => {
|
|
201
|
+
if (text.length === 0 || text.length > longest || !ONE_PRINTABLE_LINE.test(text) || !URL.canParse(text)) return null;
|
|
202
|
+
const address = new URL(text);
|
|
203
|
+
return WEB_PROTOCOLS.includes(address.protocol) ? address : null;
|
|
204
|
+
};
|
|
205
|
+
var isOneWebOrigin = (value) => typeof value === "string" && webAddressOf(value, MAX_ORIGIN_LENGTH)?.origin === value;
|
|
206
|
+
var originAskedAbout = (meta) => {
|
|
207
|
+
const origin = meta.origin;
|
|
208
|
+
if (!isOneWebOrigin(origin)) return null;
|
|
209
|
+
return isRecord(meta.tool_params) && meta.tool_params.origin === origin ? origin : null;
|
|
210
|
+
};
|
|
211
|
+
var cleanAddressOn = (origin, page) => {
|
|
212
|
+
const address = webAddressOf(page, MAX_PAGE_LENGTH);
|
|
213
|
+
if (address === null || address.origin !== origin || address.username !== "" || address.password !== "") return null;
|
|
214
|
+
return address.href === page || address.origin === page ? address : null;
|
|
215
|
+
};
|
|
216
|
+
var addressToShow = (address) => {
|
|
217
|
+
const upToThePath = `${address.origin}${address.pathname}`;
|
|
218
|
+
const isWhole = address.href === upToThePath && upToThePath.length <= MAX_ADDRESS_SHOWN;
|
|
219
|
+
return isWhole ? upToThePath : `${upToThePath.slice(0, MAX_ADDRESS_SHOWN - CUT_SHORT.length)}${CUT_SHORT}`;
|
|
220
|
+
};
|
|
221
|
+
var isAKnownBrowserName = (value) => typeof value === "string" && BROWSER_NAMES.includes(value);
|
|
222
|
+
var siteAccessSentence = (browserName, origin) => `Allow ${browserName} to access ${origin}?`;
|
|
223
|
+
var siteAccessCardOf = (form, browserName, origin) => {
|
|
224
|
+
if (form.meta.tool_name !== SITE_ACCESS_TOOL || form.sentence !== siteAccessSentence(browserName, origin)) return null;
|
|
225
|
+
return { kind: "site_access", requestId: form.requestId, threadId: form.threadId, origin };
|
|
226
|
+
};
|
|
227
|
+
var isAFileTransfer = (value) => typeof value === "string" && Object.hasOwn(TRANSFER_TOOLS, value);
|
|
228
|
+
var pageNamedIn = (sentence, transfer) => {
|
|
229
|
+
const { before, after } = TRANSFER_WORDING[transfer];
|
|
230
|
+
if (!sentence.startsWith(before) || !sentence.endsWith(after)) return null;
|
|
231
|
+
return sentence.slice(before.length, sentence.length - after.length);
|
|
232
|
+
};
|
|
233
|
+
var fileTransferCardOf = (form, origin) => {
|
|
234
|
+
const transfer = form.meta.file_transfer;
|
|
235
|
+
if (!isAFileTransfer(transfer) || form.meta.tool_name !== TRANSFER_TOOLS[transfer]) return null;
|
|
236
|
+
const page = pageNamedIn(form.sentence, transfer);
|
|
237
|
+
const address = page === null ? null : cleanAddressOn(origin, page);
|
|
238
|
+
if (address === null) return null;
|
|
239
|
+
return { kind: "file_transfer", requestId: form.requestId, threadId: form.threadId, transfer, origin, addressShown: addressToShow(address) };
|
|
240
|
+
};
|
|
241
|
+
var codexBrowserUseCardOf = (message) => {
|
|
242
|
+
const form = codexPermissionFormOf(message);
|
|
243
|
+
if (!form || !BROWSER_USE_SERVERS.includes(form.serverName) || form.mode !== PLAIN_FORM) return null;
|
|
244
|
+
if (form.meta.connector_id !== BROWSER_USE_CONNECTOR) return null;
|
|
245
|
+
const browserName = form.meta.connector_name;
|
|
246
|
+
const origin = originAskedAbout(form.meta);
|
|
247
|
+
if (!isAKnownBrowserName(browserName) || origin === null) return null;
|
|
248
|
+
return siteAccessCardOf(form, browserName, origin) ?? fileTransferCardOf(form, origin);
|
|
249
|
+
};
|
|
250
|
+
var comesFromBrowserUse = (message) => codexFormCameFrom(message, BROWSER_USE_SERVERS);
|
|
251
|
+
var siteNameOf = (origin) => new URL(origin).host;
|
|
252
|
+
var TRANSFER_QUESTIONS = {
|
|
253
|
+
download: (site) => `Allow Codex to download from ${site}?`,
|
|
254
|
+
upload: (site) => `Allow Codex to upload files to ${site}?`
|
|
255
|
+
};
|
|
256
|
+
var codexBrowserUseCardQuestion = (card) => {
|
|
257
|
+
const site = siteNameOf(card.origin);
|
|
258
|
+
if (card.kind === "site_access") return `Allow Codex to access ${site} for this conversation?`;
|
|
259
|
+
return TRANSFER_QUESTIONS[card.transfer](site);
|
|
260
|
+
};
|
|
261
|
+
var codexBrowserUseCardContext = (card) => [
|
|
262
|
+
card.kind === "file_transfer" ? `Address: ${card.addressShown}` : `Site: ${card.origin}`,
|
|
263
|
+
WHAT_AN_ANSWER_DOES[card.kind]
|
|
264
|
+
].join("\n");
|
|
265
|
+
var codexBrowserUseCardSubject = (card) => siteNameOf(card.origin);
|
|
266
|
+
var codexBrowserUseCardReply = (requestId, decision) => ({
|
|
267
|
+
id: requestId,
|
|
268
|
+
result: decision === "allow" ? ACCEPTED_WITH_NO_SAVED_CHOICE : CODEX_FORM_DECLINED
|
|
269
|
+
});
|
|
270
|
+
|
|
271
|
+
// src/codex-card.ts
|
|
272
|
+
var codexCardOf = (message) => {
|
|
273
|
+
const app = codexAppCardOf(message);
|
|
274
|
+
return app ? { kind: "app", ...app } : codexBrowserUseCardOf(message);
|
|
275
|
+
};
|
|
276
|
+
var comesFromCodexOwnTools = (message) => comesFromComputerUse(message) || comesFromBrowserUse(message);
|
|
277
|
+
var codexAppMayAnswerItself = (card) => card.kind === "site_access";
|
|
278
|
+
var codexCardQuestion = (card) => card.kind === "app" ? codexAppCardQuestion(card) : codexBrowserUseCardQuestion(card);
|
|
279
|
+
var codexCardContext = (card) => card.kind === "app" ? codexAppCardContext(card) : codexBrowserUseCardContext(card);
|
|
280
|
+
var codexCardSubject = (card) => card.kind === "app" ? card.appName : codexBrowserUseCardSubject(card);
|
|
281
|
+
var codexCardReply = (card, decision) => card.kind === "app" ? codexAppCardReply(card.requestId, decision) : codexBrowserUseCardReply(card.requestId, decision);
|
|
282
|
+
|
|
168
283
|
// src/load-once.ts
|
|
169
284
|
var loadedOnce = (load) => {
|
|
170
285
|
let loading;
|
|
@@ -179,7 +294,7 @@ var loadedOnce = (load) => {
|
|
|
179
294
|
};
|
|
180
295
|
|
|
181
296
|
// src/codex-desktop-proxy.ts
|
|
182
|
-
var loadThePhone = () => import("./api-
|
|
297
|
+
var loadThePhone = () => import("./api-ASQA5PZM.js");
|
|
183
298
|
var theFirstCardLoadsAgain = () => {
|
|
184
299
|
};
|
|
185
300
|
var APP_SERVER_COMMAND = "app-server";
|
|
@@ -200,9 +315,10 @@ var WITHDRAW_TIMEOUT_MS = 4e3;
|
|
|
200
315
|
var CLOSE_GRACE_MS = 1500;
|
|
201
316
|
var ENGINE_KILL_GRACE_MS = 2e3;
|
|
202
317
|
var ENGINE_EXIT_GRACE_MS = 5e3;
|
|
203
|
-
var QUESTION_IN_AN_UNKNOWN_SHAPE = "Codex asked
|
|
318
|
+
var QUESTION_IN_AN_UNKNOWN_SHAPE = "Codex asked for a permission in a way this version of Pushary does not know, so the question stays in Codex.";
|
|
204
319
|
var LAUNCHER_CHECK_MS = 2e3;
|
|
205
|
-
var
|
|
320
|
+
var WAIT_FOR_CODEX_TO_ANSWER_SITE_ACCESS_ITSELF_MS = 500;
|
|
321
|
+
var USUAL_TIMING = { answerWindowMs: 10 * 6e4, longPollMs: 25e3, pauseBetweenPollsMs: 2e3, letCodexAnswerFirstMs: WAIT_FOR_CODEX_TO_ANSWER_SITE_ACCESS_ITSELF_MS };
|
|
206
322
|
var subcommandIndexOf = (args) => {
|
|
207
323
|
let index = 0;
|
|
208
324
|
while (index < args.length) {
|
|
@@ -395,12 +511,12 @@ var CodexAppCards = class {
|
|
|
395
511
|
await Promise.allSettled(outstanding.map((question) => this.cancel(question)));
|
|
396
512
|
}
|
|
397
513
|
questionShown(message) {
|
|
398
|
-
const card =
|
|
514
|
+
const card = codexCardOf(message);
|
|
399
515
|
if (card) {
|
|
400
516
|
if (this.ledger.open(card.requestId)) void this.askThePhone(card);
|
|
401
517
|
return;
|
|
402
518
|
}
|
|
403
|
-
if (this.saidAQuestionWasUnknown || !
|
|
519
|
+
if (this.saidAQuestionWasUnknown || !comesFromCodexOwnTools(message)) return;
|
|
404
520
|
this.saidAQuestionWasUnknown = true;
|
|
405
521
|
this.options.report(QUESTION_IN_AN_UNKNOWN_SHAPE);
|
|
406
522
|
}
|
|
@@ -409,6 +525,8 @@ var CodexAppCards = class {
|
|
|
409
525
|
}
|
|
410
526
|
async askThePhone(card) {
|
|
411
527
|
try {
|
|
528
|
+
if (codexAppMayAnswerItself(card)) await pauseUnlessStopped(this.timing.letCodexAnswerFirstMs, this.options.signal);
|
|
529
|
+
if (this.options.signal.aborted || !this.ledger.isWaiting(card.requestId)) return;
|
|
412
530
|
const account = await this.options.readAccount();
|
|
413
531
|
if (!account) {
|
|
414
532
|
this.ledger.leaveWithTheApp(card.requestId);
|
|
@@ -418,9 +536,9 @@ var CodexAppCards = class {
|
|
|
418
536
|
if (!this.ledger.isWaiting(card.requestId)) return;
|
|
419
537
|
const answerableUntil = Date.now() + this.timing.answerWindowMs;
|
|
420
538
|
const asked = await phone.askUser(account.apiKey, {
|
|
421
|
-
question:
|
|
539
|
+
question: codexCardQuestion(card),
|
|
422
540
|
type: "confirm",
|
|
423
|
-
context:
|
|
541
|
+
context: codexCardContext(card),
|
|
424
542
|
agentName: CODEX_APP_AGENT_NAME,
|
|
425
543
|
sessionId: card.threadId,
|
|
426
544
|
machineId: account.machineId,
|
|
@@ -444,7 +562,7 @@ var CodexAppCards = class {
|
|
|
444
562
|
await this.waitForThePhone(phone, card, question);
|
|
445
563
|
} catch (error) {
|
|
446
564
|
if (this.ledger.leaveWithTheApp(card.requestId)) {
|
|
447
|
-
this.options.report(`Could not ask about ${card
|
|
565
|
+
this.options.report(`Could not ask about ${codexCardSubject(card)} through Pushary; answer in Codex. ${error instanceof Error ? error.message.split("\n")[0] : ""}`.trim());
|
|
448
566
|
}
|
|
449
567
|
}
|
|
450
568
|
}
|
|
@@ -486,7 +604,7 @@ var CodexAppCards = class {
|
|
|
486
604
|
this.ledger.leaveWithTheApp(card.requestId);
|
|
487
605
|
return;
|
|
488
606
|
}
|
|
489
|
-
if (this.ledger.settleOnThePhone(card.requestId)) this.options.reply(
|
|
607
|
+
if (this.ledger.settleOnThePhone(card.requestId)) this.options.reply(codexCardReply(card, decision));
|
|
490
608
|
}
|
|
491
609
|
withdraw(requestId) {
|
|
492
610
|
const key = codexRequestKey(requestId);
|
|
@@ -709,7 +827,7 @@ var codexDesktopCommand = async (args, entry, readAccount) => {
|
|
|
709
827
|
return runCodexDesktopProxy(engine2, args.slice(3), readAccount, { watchesForCards: layoutIsKnown });
|
|
710
828
|
}
|
|
711
829
|
if (args[0] === APP_CARDS_FLAG) {
|
|
712
|
-
const { codexAppCardsCommandOnThisMac } = await import("./codex-app-cards-switch-
|
|
830
|
+
const { codexAppCardsCommandOnThisMac } = await import("./codex-app-cards-switch-ZO76D2NY.js");
|
|
713
831
|
return codexAppCardsCommandOnThisMac(args.slice(1), entry, readAccount);
|
|
714
832
|
}
|
|
715
833
|
if (args.length > 2) throw new Error("Usage: pushary codex --desktop [path/to/Codex.app]");
|
|
@@ -720,7 +838,7 @@ var codexDesktopCommand = async (args, entry, readAccount) => {
|
|
|
720
838
|
const directory = await mkdtemp(join(tmpdir(), "pushary-codex-desktop-"));
|
|
721
839
|
try {
|
|
722
840
|
const shim = await writeDesktopProxy(entry, app, engine, directory);
|
|
723
|
-
process.stderr.write("[pushary] Experimental Codex app launch. When Codex asks to use an app on this Mac, the question also reaches Pushary; every other prompt stays as it is. Quit and open Codex normally to turn this off.\n");
|
|
841
|
+
process.stderr.write("[pushary] Experimental Codex app launch. When Codex asks to use an app on this Mac, or its browser asks to open a site, download or upload, the question also reaches Pushary; every other prompt stays as it is. Quit and open Codex normally to turn this off.\n");
|
|
724
842
|
const child = spawn2(executable, [], { stdio: "ignore", detached: true, env: { ...process.env, [CODEX_APP_LAUNCH_VARIABLE]: shim } });
|
|
725
843
|
return await new Promise((resolve2, reject) => {
|
|
726
844
|
child.once("error", reject);
|
|
@@ -2,25 +2,25 @@ import {
|
|
|
2
2
|
SIGNED_OUT_ON_MAC_MESSAGE,
|
|
3
3
|
describeSignedOutKey,
|
|
4
4
|
readSignedOutDiagnosis
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-ADR3KHOC.js";
|
|
6
6
|
import {
|
|
7
7
|
createIo
|
|
8
8
|
} from "./chunk-FO3MDD26.js";
|
|
9
9
|
import {
|
|
10
10
|
readKeySource
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-WN3RACVD.js";
|
|
12
12
|
import {
|
|
13
13
|
absoluteUrl,
|
|
14
14
|
checkApiKey,
|
|
15
15
|
describeKeyCheck,
|
|
16
16
|
keyCheckFromResponse
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-METMK3L4.js";
|
|
18
18
|
import {
|
|
19
19
|
EXIT
|
|
20
20
|
} from "./chunk-KZERVKTD.js";
|
|
21
21
|
import {
|
|
22
22
|
getBaseUrl
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-BG4Y64FW.js";
|
|
24
24
|
|
|
25
25
|
// src/cli/report-key.ts
|
|
26
26
|
var { dim, yellow } = createIo();
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
reachVerdict,
|
|
8
8
|
reachesYou,
|
|
9
9
|
verifyDelivery
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-DJ7EZIQA.js";
|
|
11
11
|
import {
|
|
12
12
|
generateKeypair,
|
|
13
13
|
openSealedKey,
|
|
@@ -24,14 +24,14 @@ import {
|
|
|
24
24
|
} from "./chunk-FO3MDD26.js";
|
|
25
25
|
import {
|
|
26
26
|
reportedInstallSource
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-Y5VKZNFN.js";
|
|
28
28
|
import {
|
|
29
29
|
NPX_LATEST_COMMAND
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-ERK24P76.js";
|
|
31
31
|
import {
|
|
32
32
|
NO_PAIRING_COMPUTER,
|
|
33
33
|
PAIR_TTL_SECONDS
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-AXJLJJ3M.js";
|
|
35
35
|
|
|
36
36
|
// src/onboarding.ts
|
|
37
37
|
import qrcodeTerminal from "qrcode-terminal";
|
|
@@ -22,23 +22,23 @@ import {
|
|
|
22
22
|
turnCodexAppCardsOff,
|
|
23
23
|
turnCodexAppCardsOn,
|
|
24
24
|
whyLaunchctlFailed
|
|
25
|
-
} from "./chunk-
|
|
26
|
-
import "./chunk-
|
|
25
|
+
} from "./chunk-4PZXI7WU.js";
|
|
26
|
+
import "./chunk-Y5V4PA2Z.js";
|
|
27
27
|
import "./chunk-XCEN33UP.js";
|
|
28
28
|
import "./chunk-QCGNGEGE.js";
|
|
29
|
-
import "./chunk-
|
|
29
|
+
import "./chunk-HC3FHDKB.js";
|
|
30
30
|
import "./chunk-XHKBHWLX.js";
|
|
31
|
-
import "./chunk-
|
|
31
|
+
import "./chunk-WN3RACVD.js";
|
|
32
32
|
import "./chunk-E46NE7FB.js";
|
|
33
|
-
import "./chunk-
|
|
34
|
-
import "./chunk-
|
|
35
|
-
import "./chunk-
|
|
36
|
-
import "./chunk-
|
|
33
|
+
import "./chunk-O6IUZGWV.js";
|
|
34
|
+
import "./chunk-Y5VKZNFN.js";
|
|
35
|
+
import "./chunk-6MJWYYAS.js";
|
|
36
|
+
import "./chunk-2QREHU4O.js";
|
|
37
37
|
import "./chunk-QENTGE75.js";
|
|
38
|
-
import "./chunk-
|
|
39
|
-
import "./chunk-
|
|
38
|
+
import "./chunk-BG4Y64FW.js";
|
|
39
|
+
import "./chunk-ERK24P76.js";
|
|
40
40
|
import "./chunk-QTOLNRET.js";
|
|
41
|
-
import "./chunk-
|
|
41
|
+
import "./chunk-AXJLJJ3M.js";
|
|
42
42
|
export {
|
|
43
43
|
CODEX_APP_CARDS_DIRECTORY,
|
|
44
44
|
CODEX_APP_CARDS_LOGIN_ITEM,
|
|
@@ -11,36 +11,36 @@ import {
|
|
|
11
11
|
isCodexQuestionLeftWithTheLocalClient,
|
|
12
12
|
planCodexElicitation,
|
|
13
13
|
reportOwnedQuestion
|
|
14
|
-
} from "./chunk-
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
14
|
+
} from "./chunk-MUNL23WE.js";
|
|
15
|
+
import "./chunk-ELLJPP6O.js";
|
|
16
|
+
import "./chunk-6LOQE4J4.js";
|
|
17
|
+
import "./chunk-USE5IEEW.js";
|
|
18
|
+
import "./chunk-7WFRY6OL.js";
|
|
19
19
|
import "./chunk-VUFHYMSP.js";
|
|
20
|
-
import "./chunk-
|
|
21
|
-
import "./chunk-
|
|
20
|
+
import "./chunk-2AELPDMT.js";
|
|
21
|
+
import "./chunk-GAMVAORR.js";
|
|
22
22
|
import "./chunk-XHKBHWLX.js";
|
|
23
23
|
import "./chunk-6ICPEJY5.js";
|
|
24
|
-
import "./chunk-
|
|
24
|
+
import "./chunk-YPD3MTFU.js";
|
|
25
25
|
import {
|
|
26
26
|
writeDegraded
|
|
27
|
-
} from "./chunk-
|
|
28
|
-
import "./chunk-
|
|
27
|
+
} from "./chunk-EZHY65QA.js";
|
|
28
|
+
import "./chunk-SEILUNWB.js";
|
|
29
29
|
import "./chunk-POFBE6ZY.js";
|
|
30
|
-
import "./chunk-
|
|
31
|
-
import "./chunk-
|
|
32
|
-
import "./chunk-
|
|
33
|
-
import "./chunk-
|
|
30
|
+
import "./chunk-METMK3L4.js";
|
|
31
|
+
import "./chunk-4MWRR5IT.js";
|
|
32
|
+
import "./chunk-O6IUZGWV.js";
|
|
33
|
+
import "./chunk-PPY5N2E6.js";
|
|
34
34
|
import "./chunk-KZERVKTD.js";
|
|
35
|
-
import "./chunk-
|
|
36
|
-
import "./chunk-
|
|
35
|
+
import "./chunk-6MJWYYAS.js";
|
|
36
|
+
import "./chunk-2QREHU4O.js";
|
|
37
37
|
import "./chunk-QENTGE75.js";
|
|
38
|
-
import "./chunk-
|
|
39
|
-
import "./chunk-
|
|
38
|
+
import "./chunk-BG4Y64FW.js";
|
|
39
|
+
import "./chunk-ERK24P76.js";
|
|
40
40
|
import "./chunk-QTOLNRET.js";
|
|
41
41
|
import {
|
|
42
42
|
canonicalJsonText
|
|
43
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-AXJLJJ3M.js";
|
|
44
44
|
|
|
45
45
|
// src/codex-session-launch.ts
|
|
46
46
|
import { spawn as spawn2 } from "child_process";
|
|
@@ -3,9 +3,9 @@ import {
|
|
|
3
3
|
getApiKey,
|
|
4
4
|
getBaseUrl,
|
|
5
5
|
resetKeyDriftWarning
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-BG4Y64FW.js";
|
|
7
|
+
import "./chunk-ERK24P76.js";
|
|
8
|
+
import "./chunk-AXJLJJ3M.js";
|
|
9
9
|
export {
|
|
10
10
|
configFilePath,
|
|
11
11
|
getApiKey,
|
|
@@ -7,21 +7,21 @@ import {
|
|
|
7
7
|
recordUnfinishedUpgrade,
|
|
8
8
|
upgradeInstalledPackage,
|
|
9
9
|
withUpgradeLock
|
|
10
|
-
} from "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
10
|
+
} from "./chunk-SOCJ2N3E.js";
|
|
11
|
+
import "./chunk-VIJIG5YL.js";
|
|
12
|
+
import "./chunk-6LOQE4J4.js";
|
|
13
|
+
import "./chunk-USE5IEEW.js";
|
|
14
14
|
import "./chunk-VUFHYMSP.js";
|
|
15
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-5RU35K57.js";
|
|
16
16
|
import "./chunk-6ICPEJY5.js";
|
|
17
17
|
import "./chunk-POFBE6ZY.js";
|
|
18
18
|
import "./chunk-KZERVKTD.js";
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
19
|
+
import "./chunk-6MJWYYAS.js";
|
|
20
|
+
import "./chunk-2QREHU4O.js";
|
|
21
21
|
import "./chunk-QENTGE75.js";
|
|
22
|
-
import "./chunk-
|
|
22
|
+
import "./chunk-ERK24P76.js";
|
|
23
23
|
import "./chunk-QTOLNRET.js";
|
|
24
|
-
import "./chunk-
|
|
24
|
+
import "./chunk-AXJLJJ3M.js";
|
|
25
25
|
export {
|
|
26
26
|
finishGlobalUpgrade,
|
|
27
27
|
finishUpgradeWithLock,
|
|
@@ -2,12 +2,12 @@ import {
|
|
|
2
2
|
getMachineId,
|
|
3
3
|
getOrCreateMachineId,
|
|
4
4
|
readExistingMachineId
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-O6IUZGWV.js";
|
|
6
|
+
import "./chunk-6MJWYYAS.js";
|
|
7
|
+
import "./chunk-2QREHU4O.js";
|
|
8
8
|
import "./chunk-QENTGE75.js";
|
|
9
9
|
import "./chunk-QTOLNRET.js";
|
|
10
|
-
import "./chunk-
|
|
10
|
+
import "./chunk-AXJLJJ3M.js";
|
|
11
11
|
export {
|
|
12
12
|
getMachineId,
|
|
13
13
|
getOrCreateMachineId,
|
|
@@ -22,14 +22,14 @@ import {
|
|
|
22
22
|
resolveControlPolicy,
|
|
23
23
|
resolveProviderBinary,
|
|
24
24
|
trackProviderInventory
|
|
25
|
-
} from "./chunk-
|
|
26
|
-
import "./chunk-
|
|
25
|
+
} from "./chunk-6LOQE4J4.js";
|
|
26
|
+
import "./chunk-USE5IEEW.js";
|
|
27
27
|
import "./chunk-VUFHYMSP.js";
|
|
28
28
|
import "./chunk-6ICPEJY5.js";
|
|
29
|
-
import "./chunk-
|
|
29
|
+
import "./chunk-2QREHU4O.js";
|
|
30
30
|
import "./chunk-QENTGE75.js";
|
|
31
31
|
import "./chunk-QTOLNRET.js";
|
|
32
|
-
import "./chunk-
|
|
32
|
+
import "./chunk-AXJLJJ3M.js";
|
|
33
33
|
export {
|
|
34
34
|
CLAUDE_BRIDGE_CAPABILITY,
|
|
35
35
|
CLAUDE_RESUME_CAPABILITY,
|
|
@@ -33,10 +33,10 @@ import {
|
|
|
33
33
|
serviceOwedBackMark,
|
|
34
34
|
vscodePluginDir,
|
|
35
35
|
vscodePluginMcp
|
|
36
|
-
} from "./chunk-
|
|
37
|
-
import "./chunk-
|
|
36
|
+
} from "./chunk-6MJWYYAS.js";
|
|
37
|
+
import "./chunk-2QREHU4O.js";
|
|
38
38
|
import "./chunk-QTOLNRET.js";
|
|
39
|
-
import "./chunk-
|
|
39
|
+
import "./chunk-AXJLJJ3M.js";
|
|
40
40
|
export {
|
|
41
41
|
autoUpdateLock,
|
|
42
42
|
autoUpdateLog,
|