@funnycode/myclaude 0.1.33 → 0.1.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -16
- package/README.zh-CN.md +2 -16
- package/dist/myclaude.js +31 -48
- package/dist/myclaude.mjs +31 -48
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -32,7 +32,7 @@ npx @funnycode/myclaude
|
|
|
32
32
|
|
|
33
33
|
### Prerequisites
|
|
34
34
|
|
|
35
|
-
- **Bun >= 1.3.5** (works with Node.js >=
|
|
35
|
+
- **Bun >= 1.3.5** (works with Node.js >= 22.17 too)
|
|
36
36
|
- **Git** (for some features)
|
|
37
37
|
- **Anthropic API key** or compatible provider
|
|
38
38
|
|
|
@@ -225,9 +225,7 @@ Once enabled, CodeGraph's MCP server starts automatically and provides semantic
|
|
|
225
225
|
|
|
226
226
|
### ECC — Agent Operating System
|
|
227
227
|
|
|
228
|
-
[ECC](https://github.com/affaan-m/ECC) is a cross-harness agent ecosystem with 200+ skills, agents, hooks, and rules.
|
|
229
|
-
|
|
230
|
-
ECC is pre-registered as a marketplace — no manual setup needed.
|
|
228
|
+
[ECC](https://github.com/affaan-m/ECC) is a cross-harness agent ecosystem with 200+ skills, agents, hooks, and rules. **Pre-installed out of the box** — browse and install plugins immediately:
|
|
231
229
|
|
|
232
230
|
```bash
|
|
233
231
|
# Browse available ECC plugins
|
|
@@ -321,18 +319,6 @@ src/
|
|
|
321
319
|
|
|
322
320
|
---
|
|
323
321
|
|
|
324
|
-
## Roadmap
|
|
325
|
-
|
|
326
|
-
See [docs/ROADMAP.md](docs/ROADMAP.md) for the full iteration plan:
|
|
327
|
-
|
|
328
|
-
- **P0** — Activate hidden features (BUDDY, Auto Memory) ✅
|
|
329
|
-
- **P1** — Growth system (Achievements, skill recommendations)
|
|
330
|
-
- **P2** — Interactive experience (multi-interaction, events)
|
|
331
|
-
- **P3** — Extension ecosystem (plugin marketplace, Skill Studio)
|
|
332
|
-
- **P4** — Intelligent evolution (personalized fine-tuning, offline mode)
|
|
333
|
-
|
|
334
|
-
---
|
|
335
|
-
|
|
336
322
|
## Contributing
|
|
337
323
|
|
|
338
324
|
Pull requests are welcome!
|
package/README.zh-CN.md
CHANGED
|
@@ -32,7 +32,7 @@ npx @funnycode/myclaude
|
|
|
32
32
|
|
|
33
33
|
### 环境要求
|
|
34
34
|
|
|
35
|
-
- **Bun >= 1.3.5**(也可以用 Node.js >=
|
|
35
|
+
- **Bun >= 1.3.5**(也可以用 Node.js >= 22.17)
|
|
36
36
|
- **Git**(部分功能需要)
|
|
37
37
|
- **Anthropic API 密钥** 或兼容的 AI 提供商
|
|
38
38
|
|
|
@@ -246,9 +246,7 @@ codegraph init
|
|
|
246
246
|
|
|
247
247
|
### ECC — 跨平台代理操作系统
|
|
248
248
|
|
|
249
|
-
[ECC](https://github.com/affaan-m/ECC) 是一个跨 harness 的代理生态系统,包含 200+ 技能、代理、hooks
|
|
250
|
-
|
|
251
|
-
ECC 已预注册为市场源,无需手动添加。
|
|
249
|
+
[ECC](https://github.com/affaan-m/ECC) 是一个跨 harness 的代理生态系统,包含 200+ 技能、代理、hooks 和规则。**开箱即用** — 可直接浏览和安装插件:
|
|
252
250
|
|
|
253
251
|
```bash
|
|
254
252
|
# 浏览可用的 ECC 插件
|
|
@@ -316,18 +314,6 @@ src/
|
|
|
316
314
|
|
|
317
315
|
---
|
|
318
316
|
|
|
319
|
-
## 路线图
|
|
320
|
-
|
|
321
|
-
详见 [docs/ROADMAP.md](docs/ROADMAP.md):
|
|
322
|
-
|
|
323
|
-
- **P0** — 激活隐藏功能(BUDDY、Auto Memory)✅
|
|
324
|
-
- **P1** — 成长系统(成就、技能推荐)
|
|
325
|
-
- **P2** — 互动体验(多交互模式、节日事件)
|
|
326
|
-
- **P3** — 扩展生态(插件市场、Skill Studio)
|
|
327
|
-
- **P4** — 智能进化(个性化微调、离线模式)
|
|
328
|
-
|
|
329
|
-
---
|
|
330
|
-
|
|
331
317
|
## 贡献
|
|
332
318
|
|
|
333
319
|
欢迎提交 PR 参与贡献!
|
package/dist/myclaude.js
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
// MACRO - build-time constants (injected by build.ts)
|
|
5
5
|
// MACRO injected by build script
|
|
6
6
|
globalThis.MACRO = {
|
|
7
|
-
VERSION: "0.1.
|
|
8
|
-
BUILD_TIME: "2026-06-23T13:
|
|
7
|
+
VERSION: "0.1.35",
|
|
8
|
+
BUILD_TIME: "2026-06-23T13:24:08.880Z",
|
|
9
9
|
PACKAGE_URL: "@funnycode/myclaude",
|
|
10
10
|
NATIVE_PACKAGE_URL: "@funnycode/myclaude",
|
|
11
11
|
VERSION_CHANGELOG: '',
|
|
@@ -554539,34 +554539,18 @@ var init_codegraphCheck = __esm(() => {
|
|
|
554539
554539
|
});
|
|
554540
554540
|
|
|
554541
554541
|
// src/plugins/bundled/eccMarketplace.ts
|
|
554542
|
-
import { join as join150 } from "path";
|
|
554543
|
-
function getKnownMarketplacesFile2() {
|
|
554544
|
-
const homeDir = process.env.CLAUDE_CODE_PLUGIN_CACHE_DIR || join150(process.env.HOME || process.env.USERPROFILE || "~", ".claude", "plugins");
|
|
554545
|
-
return join150(homeDir, "known_marketplaces.json");
|
|
554546
|
-
}
|
|
554547
554542
|
async function ensureEccMarketplaceRegistered() {
|
|
554548
|
-
const fs12 = getFsImplementation();
|
|
554549
|
-
const configFile = getKnownMarketplacesFile2();
|
|
554550
554543
|
try {
|
|
554551
|
-
|
|
554552
|
-
|
|
554553
|
-
|
|
554554
|
-
|
|
554555
|
-
}
|
|
554556
|
-
|
|
554557
|
-
|
|
554558
|
-
|
|
554559
|
-
source: {
|
|
554560
|
-
source: "git",
|
|
554561
|
-
url: ECC_MARKETPLACE_URL
|
|
554562
|
-
},
|
|
554563
|
-
autoUpdate: false,
|
|
554564
|
-
lastUpdated: new Date().toISOString()
|
|
554565
|
-
};
|
|
554566
|
-
await fs12.writeFile(configFile, jsonStringify(config5, null, 2), {
|
|
554567
|
-
encoding: "utf-8"
|
|
554544
|
+
const existing = await loadKnownMarketplacesConfig();
|
|
554545
|
+
if (existing["ecc"]) {
|
|
554546
|
+
logForDebugging("ECC marketplace already registered, skipping");
|
|
554547
|
+
return true;
|
|
554548
|
+
}
|
|
554549
|
+
const result = await addMarketplaceSource({
|
|
554550
|
+
source: "git",
|
|
554551
|
+
url: ECC_MARKETPLACE_URL
|
|
554568
554552
|
});
|
|
554569
|
-
logForDebugging(
|
|
554553
|
+
logForDebugging(`ECC marketplace registered as '${result.name}' (materialized: ${!result.alreadyMaterialized})`);
|
|
554570
554554
|
return true;
|
|
554571
554555
|
} catch (error49) {
|
|
554572
554556
|
logForDebugging(`Failed to register ECC marketplace: ${error49}`, {
|
|
@@ -554577,9 +554561,8 @@ async function ensureEccMarketplaceRegistered() {
|
|
|
554577
554561
|
}
|
|
554578
554562
|
var ECC_MARKETPLACE_URL = "https://github.com/affaan-m/ECC.git";
|
|
554579
554563
|
var init_eccMarketplace = __esm(() => {
|
|
554580
|
-
init_fsOperations();
|
|
554581
554564
|
init_debug();
|
|
554582
|
-
|
|
554565
|
+
init_marketplaceManager();
|
|
554583
554566
|
});
|
|
554584
554567
|
|
|
554585
554568
|
// src/plugins/bundled/index.ts
|
|
@@ -557415,12 +557398,12 @@ var init_createDirectConnectSession = __esm(() => {
|
|
|
557415
557398
|
});
|
|
557416
557399
|
|
|
557417
557400
|
// src/utils/errorLogSink.ts
|
|
557418
|
-
import { dirname as dirname64, join as
|
|
557401
|
+
import { dirname as dirname64, join as join150 } from "path";
|
|
557419
557402
|
function getErrorsPath() {
|
|
557420
|
-
return
|
|
557403
|
+
return join150(CACHE_PATHS.errors(), DATE + ".jsonl");
|
|
557421
557404
|
}
|
|
557422
557405
|
function getMCPLogsPath(serverName) {
|
|
557423
|
-
return
|
|
557406
|
+
return join150(CACHE_PATHS.mcpLogs(serverName), DATE + ".jsonl");
|
|
557424
557407
|
}
|
|
557425
557408
|
function createJsonlWriter(options) {
|
|
557426
557409
|
const writer = createBufferedWriter(options);
|
|
@@ -557763,7 +557746,7 @@ var init_sessionMemory = __esm(() => {
|
|
|
557763
557746
|
// src/utils/iTermBackup.ts
|
|
557764
557747
|
import { copyFile as copyFile12, stat as stat49 } from "fs/promises";
|
|
557765
557748
|
import { homedir as homedir39 } from "os";
|
|
557766
|
-
import { join as
|
|
557749
|
+
import { join as join151 } from "path";
|
|
557767
557750
|
function markITerm2SetupComplete() {
|
|
557768
557751
|
saveGlobalConfig((current) => ({
|
|
557769
557752
|
...current,
|
|
@@ -557778,7 +557761,7 @@ function getIterm2RecoveryInfo() {
|
|
|
557778
557761
|
};
|
|
557779
557762
|
}
|
|
557780
557763
|
function getITerm2PlistPath() {
|
|
557781
|
-
return
|
|
557764
|
+
return join151(homedir39(), "Library", "Preferences", "com.googlecode.iterm2.plist");
|
|
557782
557765
|
}
|
|
557783
557766
|
async function checkAndRestoreITerm2Backup() {
|
|
557784
557767
|
const { inProgress, backupPath } = getIterm2RecoveryInfo();
|
|
@@ -561143,7 +561126,7 @@ var init_idleTimeout = __esm(() => {
|
|
|
561143
561126
|
// src/bridge/inboundAttachments.ts
|
|
561144
561127
|
import { randomUUID as randomUUID48 } from "crypto";
|
|
561145
561128
|
import { mkdir as mkdir42, writeFile as writeFile46 } from "fs/promises";
|
|
561146
|
-
import { basename as basename58, join as
|
|
561129
|
+
import { basename as basename58, join as join152 } from "path";
|
|
561147
561130
|
function debug3(msg) {
|
|
561148
561131
|
logForDebugging(`[bridge:inbound-attach] ${msg}`);
|
|
561149
561132
|
}
|
|
@@ -561159,7 +561142,7 @@ function sanitizeFileName(name) {
|
|
|
561159
561142
|
return base2 || "attachment";
|
|
561160
561143
|
}
|
|
561161
561144
|
function uploadsDir() {
|
|
561162
|
-
return
|
|
561145
|
+
return join152(getClaudeConfigHomeDir(), "uploads", getSessionId());
|
|
561163
561146
|
}
|
|
561164
561147
|
async function resolveOne(att) {
|
|
561165
561148
|
const token = getBridgeAccessToken();
|
|
@@ -561188,7 +561171,7 @@ async function resolveOne(att) {
|
|
|
561188
561171
|
const safeName = sanitizeFileName(att.file_name);
|
|
561189
561172
|
const prefix = (att.file_uuid.slice(0, 8) || randomUUID48().slice(0, 8)).replace(/[^a-zA-Z0-9_-]/g, "_");
|
|
561190
561173
|
const dir = uploadsDir();
|
|
561191
|
-
const outPath =
|
|
561174
|
+
const outPath = join152(dir, `${prefix}-${safeName}`);
|
|
561192
561175
|
try {
|
|
561193
561176
|
await mkdir42(dir, { recursive: true });
|
|
561194
561177
|
await writeFile46(outPath, data);
|
|
@@ -561288,7 +561271,7 @@ var init_sessionUrl = __esm(() => {
|
|
|
561288
561271
|
|
|
561289
561272
|
// src/utils/plugins/zipCacheAdapters.ts
|
|
561290
561273
|
import { readFile as readFile51 } from "fs/promises";
|
|
561291
|
-
import { join as
|
|
561274
|
+
import { join as join153 } from "path";
|
|
561292
561275
|
async function readZipCacheKnownMarketplaces() {
|
|
561293
561276
|
try {
|
|
561294
561277
|
const content = await readFile51(getZipCacheKnownMarketplacesPath(), "utf-8");
|
|
@@ -561313,13 +561296,13 @@ async function saveMarketplaceJsonToZipCache(marketplaceName, installLocation) {
|
|
|
561313
561296
|
const content = await readMarketplaceJsonContent(installLocation);
|
|
561314
561297
|
if (content !== null) {
|
|
561315
561298
|
const relPath = getMarketplaceJsonRelativePath(marketplaceName);
|
|
561316
|
-
await atomicWriteToZipCache(
|
|
561299
|
+
await atomicWriteToZipCache(join153(zipCachePath, relPath), content);
|
|
561317
561300
|
}
|
|
561318
561301
|
}
|
|
561319
561302
|
async function readMarketplaceJsonContent(dir) {
|
|
561320
561303
|
const candidates = [
|
|
561321
|
-
|
|
561322
|
-
|
|
561304
|
+
join153(dir, ".claude-plugin", "marketplace.json"),
|
|
561305
|
+
join153(dir, "marketplace.json"),
|
|
561323
561306
|
dir
|
|
561324
561307
|
];
|
|
561325
561308
|
for (const candidate of candidates) {
|
|
@@ -561778,9 +561761,9 @@ __export(exports_bridgePointer, {
|
|
|
561778
561761
|
BRIDGE_POINTER_TTL_MS: () => BRIDGE_POINTER_TTL_MS
|
|
561779
561762
|
});
|
|
561780
561763
|
import { mkdir as mkdir43, readFile as readFile52, stat as stat50, unlink as unlink22, writeFile as writeFile47 } from "fs/promises";
|
|
561781
|
-
import { dirname as dirname65, join as
|
|
561764
|
+
import { dirname as dirname65, join as join154 } from "path";
|
|
561782
561765
|
function getBridgePointerPath(dir) {
|
|
561783
|
-
return
|
|
561766
|
+
return join154(getProjectsDir(), sanitizePath2(dir), "bridge-pointer.json");
|
|
561784
561767
|
}
|
|
561785
561768
|
async function writeBridgePointer(dir, pointer) {
|
|
561786
561769
|
const path24 = getBridgePointerPath(dir);
|
|
@@ -567717,14 +567700,14 @@ __export(exports_claudeDesktop, {
|
|
|
567717
567700
|
});
|
|
567718
567701
|
import { readdir as readdir30, readFile as readFile54, stat as stat52 } from "fs/promises";
|
|
567719
567702
|
import { homedir as homedir40 } from "os";
|
|
567720
|
-
import { join as
|
|
567703
|
+
import { join as join155 } from "path";
|
|
567721
567704
|
async function getClaudeDesktopConfigPath() {
|
|
567722
567705
|
const platform6 = getPlatform();
|
|
567723
567706
|
if (!SUPPORTED_PLATFORMS.includes(platform6)) {
|
|
567724
567707
|
throw new Error(`Unsupported platform: ${platform6} - Claude Desktop integration only works on macOS and WSL.`);
|
|
567725
567708
|
}
|
|
567726
567709
|
if (platform6 === "macos") {
|
|
567727
|
-
return
|
|
567710
|
+
return join155(homedir40(), "Library", "Application Support", "Claude", "claude_desktop_config.json");
|
|
567728
567711
|
}
|
|
567729
567712
|
const windowsHome = process.env.USERPROFILE ? process.env.USERPROFILE.replace(/\\/g, "/") : null;
|
|
567730
567713
|
if (windowsHome) {
|
|
@@ -567743,7 +567726,7 @@ async function getClaudeDesktopConfigPath() {
|
|
|
567743
567726
|
if (user.name === "Public" || user.name === "Default" || user.name === "Default User" || user.name === "All Users") {
|
|
567744
567727
|
continue;
|
|
567745
567728
|
}
|
|
567746
|
-
const potentialConfigPath =
|
|
567729
|
+
const potentialConfigPath = join155(usersDir, user.name, "AppData", "Roaming", "Claude", "claude_desktop_config.json");
|
|
567747
567730
|
try {
|
|
567748
567731
|
await stat52(potentialConfigPath);
|
|
567749
567732
|
return potentialConfigPath;
|
|
@@ -568652,12 +568635,12 @@ __export(exports_install, {
|
|
|
568652
568635
|
install: () => install
|
|
568653
568636
|
});
|
|
568654
568637
|
import { homedir as homedir41 } from "node:os";
|
|
568655
|
-
import { join as
|
|
568638
|
+
import { join as join156 } from "node:path";
|
|
568656
568639
|
function getInstallationPath2() {
|
|
568657
568640
|
const isWindows2 = env4.platform === "win32";
|
|
568658
568641
|
const homeDir = homedir41();
|
|
568659
568642
|
if (isWindows2) {
|
|
568660
|
-
const windowsPath =
|
|
568643
|
+
const windowsPath = join156(homeDir, ".local", "bin", "claude.exe");
|
|
568661
568644
|
return windowsPath.replace(/\//g, "\\");
|
|
568662
568645
|
}
|
|
568663
568646
|
return "~/.local/bin/claude";
|
package/dist/myclaude.mjs
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
// MACRO - build-time constants (injected by build.ts)
|
|
5
5
|
// MACRO injected by build script
|
|
6
6
|
globalThis.MACRO = {
|
|
7
|
-
VERSION: "0.1.
|
|
8
|
-
BUILD_TIME: "2026-06-23T13:
|
|
7
|
+
VERSION: "0.1.35",
|
|
8
|
+
BUILD_TIME: "2026-06-23T13:24:08.880Z",
|
|
9
9
|
PACKAGE_URL: "@funnycode/myclaude",
|
|
10
10
|
NATIVE_PACKAGE_URL: "@funnycode/myclaude",
|
|
11
11
|
VERSION_CHANGELOG: '',
|
|
@@ -554539,34 +554539,18 @@ var init_codegraphCheck = __esm(() => {
|
|
|
554539
554539
|
});
|
|
554540
554540
|
|
|
554541
554541
|
// src/plugins/bundled/eccMarketplace.ts
|
|
554542
|
-
import { join as join150 } from "path";
|
|
554543
|
-
function getKnownMarketplacesFile2() {
|
|
554544
|
-
const homeDir = process.env.CLAUDE_CODE_PLUGIN_CACHE_DIR || join150(process.env.HOME || process.env.USERPROFILE || "~", ".claude", "plugins");
|
|
554545
|
-
return join150(homeDir, "known_marketplaces.json");
|
|
554546
|
-
}
|
|
554547
554542
|
async function ensureEccMarketplaceRegistered() {
|
|
554548
|
-
const fs12 = getFsImplementation();
|
|
554549
|
-
const configFile = getKnownMarketplacesFile2();
|
|
554550
554543
|
try {
|
|
554551
|
-
|
|
554552
|
-
|
|
554553
|
-
|
|
554554
|
-
|
|
554555
|
-
}
|
|
554556
|
-
|
|
554557
|
-
|
|
554558
|
-
|
|
554559
|
-
source: {
|
|
554560
|
-
source: "git",
|
|
554561
|
-
url: ECC_MARKETPLACE_URL
|
|
554562
|
-
},
|
|
554563
|
-
autoUpdate: false,
|
|
554564
|
-
lastUpdated: new Date().toISOString()
|
|
554565
|
-
};
|
|
554566
|
-
await fs12.writeFile(configFile, jsonStringify(config5, null, 2), {
|
|
554567
|
-
encoding: "utf-8"
|
|
554544
|
+
const existing = await loadKnownMarketplacesConfig();
|
|
554545
|
+
if (existing["ecc"]) {
|
|
554546
|
+
logForDebugging("ECC marketplace already registered, skipping");
|
|
554547
|
+
return true;
|
|
554548
|
+
}
|
|
554549
|
+
const result = await addMarketplaceSource({
|
|
554550
|
+
source: "git",
|
|
554551
|
+
url: ECC_MARKETPLACE_URL
|
|
554568
554552
|
});
|
|
554569
|
-
logForDebugging(
|
|
554553
|
+
logForDebugging(`ECC marketplace registered as '${result.name}' (materialized: ${!result.alreadyMaterialized})`);
|
|
554570
554554
|
return true;
|
|
554571
554555
|
} catch (error49) {
|
|
554572
554556
|
logForDebugging(`Failed to register ECC marketplace: ${error49}`, {
|
|
@@ -554577,9 +554561,8 @@ async function ensureEccMarketplaceRegistered() {
|
|
|
554577
554561
|
}
|
|
554578
554562
|
var ECC_MARKETPLACE_URL = "https://github.com/affaan-m/ECC.git";
|
|
554579
554563
|
var init_eccMarketplace = __esm(() => {
|
|
554580
|
-
init_fsOperations();
|
|
554581
554564
|
init_debug();
|
|
554582
|
-
|
|
554565
|
+
init_marketplaceManager();
|
|
554583
554566
|
});
|
|
554584
554567
|
|
|
554585
554568
|
// src/plugins/bundled/index.ts
|
|
@@ -557415,12 +557398,12 @@ var init_createDirectConnectSession = __esm(() => {
|
|
|
557415
557398
|
});
|
|
557416
557399
|
|
|
557417
557400
|
// src/utils/errorLogSink.ts
|
|
557418
|
-
import { dirname as dirname64, join as
|
|
557401
|
+
import { dirname as dirname64, join as join150 } from "path";
|
|
557419
557402
|
function getErrorsPath() {
|
|
557420
|
-
return
|
|
557403
|
+
return join150(CACHE_PATHS.errors(), DATE + ".jsonl");
|
|
557421
557404
|
}
|
|
557422
557405
|
function getMCPLogsPath(serverName) {
|
|
557423
|
-
return
|
|
557406
|
+
return join150(CACHE_PATHS.mcpLogs(serverName), DATE + ".jsonl");
|
|
557424
557407
|
}
|
|
557425
557408
|
function createJsonlWriter(options) {
|
|
557426
557409
|
const writer = createBufferedWriter(options);
|
|
@@ -557763,7 +557746,7 @@ var init_sessionMemory = __esm(() => {
|
|
|
557763
557746
|
// src/utils/iTermBackup.ts
|
|
557764
557747
|
import { copyFile as copyFile12, stat as stat49 } from "fs/promises";
|
|
557765
557748
|
import { homedir as homedir39 } from "os";
|
|
557766
|
-
import { join as
|
|
557749
|
+
import { join as join151 } from "path";
|
|
557767
557750
|
function markITerm2SetupComplete() {
|
|
557768
557751
|
saveGlobalConfig((current) => ({
|
|
557769
557752
|
...current,
|
|
@@ -557778,7 +557761,7 @@ function getIterm2RecoveryInfo() {
|
|
|
557778
557761
|
};
|
|
557779
557762
|
}
|
|
557780
557763
|
function getITerm2PlistPath() {
|
|
557781
|
-
return
|
|
557764
|
+
return join151(homedir39(), "Library", "Preferences", "com.googlecode.iterm2.plist");
|
|
557782
557765
|
}
|
|
557783
557766
|
async function checkAndRestoreITerm2Backup() {
|
|
557784
557767
|
const { inProgress, backupPath } = getIterm2RecoveryInfo();
|
|
@@ -561143,7 +561126,7 @@ var init_idleTimeout = __esm(() => {
|
|
|
561143
561126
|
// src/bridge/inboundAttachments.ts
|
|
561144
561127
|
import { randomUUID as randomUUID48 } from "crypto";
|
|
561145
561128
|
import { mkdir as mkdir42, writeFile as writeFile46 } from "fs/promises";
|
|
561146
|
-
import { basename as basename58, join as
|
|
561129
|
+
import { basename as basename58, join as join152 } from "path";
|
|
561147
561130
|
function debug3(msg) {
|
|
561148
561131
|
logForDebugging(`[bridge:inbound-attach] ${msg}`);
|
|
561149
561132
|
}
|
|
@@ -561159,7 +561142,7 @@ function sanitizeFileName(name) {
|
|
|
561159
561142
|
return base2 || "attachment";
|
|
561160
561143
|
}
|
|
561161
561144
|
function uploadsDir() {
|
|
561162
|
-
return
|
|
561145
|
+
return join152(getClaudeConfigHomeDir(), "uploads", getSessionId());
|
|
561163
561146
|
}
|
|
561164
561147
|
async function resolveOne(att) {
|
|
561165
561148
|
const token = getBridgeAccessToken();
|
|
@@ -561188,7 +561171,7 @@ async function resolveOne(att) {
|
|
|
561188
561171
|
const safeName = sanitizeFileName(att.file_name);
|
|
561189
561172
|
const prefix = (att.file_uuid.slice(0, 8) || randomUUID48().slice(0, 8)).replace(/[^a-zA-Z0-9_-]/g, "_");
|
|
561190
561173
|
const dir = uploadsDir();
|
|
561191
|
-
const outPath =
|
|
561174
|
+
const outPath = join152(dir, `${prefix}-${safeName}`);
|
|
561192
561175
|
try {
|
|
561193
561176
|
await mkdir42(dir, { recursive: true });
|
|
561194
561177
|
await writeFile46(outPath, data);
|
|
@@ -561288,7 +561271,7 @@ var init_sessionUrl = __esm(() => {
|
|
|
561288
561271
|
|
|
561289
561272
|
// src/utils/plugins/zipCacheAdapters.ts
|
|
561290
561273
|
import { readFile as readFile51 } from "fs/promises";
|
|
561291
|
-
import { join as
|
|
561274
|
+
import { join as join153 } from "path";
|
|
561292
561275
|
async function readZipCacheKnownMarketplaces() {
|
|
561293
561276
|
try {
|
|
561294
561277
|
const content = await readFile51(getZipCacheKnownMarketplacesPath(), "utf-8");
|
|
@@ -561313,13 +561296,13 @@ async function saveMarketplaceJsonToZipCache(marketplaceName, installLocation) {
|
|
|
561313
561296
|
const content = await readMarketplaceJsonContent(installLocation);
|
|
561314
561297
|
if (content !== null) {
|
|
561315
561298
|
const relPath = getMarketplaceJsonRelativePath(marketplaceName);
|
|
561316
|
-
await atomicWriteToZipCache(
|
|
561299
|
+
await atomicWriteToZipCache(join153(zipCachePath, relPath), content);
|
|
561317
561300
|
}
|
|
561318
561301
|
}
|
|
561319
561302
|
async function readMarketplaceJsonContent(dir) {
|
|
561320
561303
|
const candidates = [
|
|
561321
|
-
|
|
561322
|
-
|
|
561304
|
+
join153(dir, ".claude-plugin", "marketplace.json"),
|
|
561305
|
+
join153(dir, "marketplace.json"),
|
|
561323
561306
|
dir
|
|
561324
561307
|
];
|
|
561325
561308
|
for (const candidate of candidates) {
|
|
@@ -561778,9 +561761,9 @@ __export(exports_bridgePointer, {
|
|
|
561778
561761
|
BRIDGE_POINTER_TTL_MS: () => BRIDGE_POINTER_TTL_MS
|
|
561779
561762
|
});
|
|
561780
561763
|
import { mkdir as mkdir43, readFile as readFile52, stat as stat50, unlink as unlink22, writeFile as writeFile47 } from "fs/promises";
|
|
561781
|
-
import { dirname as dirname65, join as
|
|
561764
|
+
import { dirname as dirname65, join as join154 } from "path";
|
|
561782
561765
|
function getBridgePointerPath(dir) {
|
|
561783
|
-
return
|
|
561766
|
+
return join154(getProjectsDir(), sanitizePath2(dir), "bridge-pointer.json");
|
|
561784
561767
|
}
|
|
561785
561768
|
async function writeBridgePointer(dir, pointer) {
|
|
561786
561769
|
const path24 = getBridgePointerPath(dir);
|
|
@@ -567717,14 +567700,14 @@ __export(exports_claudeDesktop, {
|
|
|
567717
567700
|
});
|
|
567718
567701
|
import { readdir as readdir30, readFile as readFile54, stat as stat52 } from "fs/promises";
|
|
567719
567702
|
import { homedir as homedir40 } from "os";
|
|
567720
|
-
import { join as
|
|
567703
|
+
import { join as join155 } from "path";
|
|
567721
567704
|
async function getClaudeDesktopConfigPath() {
|
|
567722
567705
|
const platform6 = getPlatform();
|
|
567723
567706
|
if (!SUPPORTED_PLATFORMS.includes(platform6)) {
|
|
567724
567707
|
throw new Error(`Unsupported platform: ${platform6} - Claude Desktop integration only works on macOS and WSL.`);
|
|
567725
567708
|
}
|
|
567726
567709
|
if (platform6 === "macos") {
|
|
567727
|
-
return
|
|
567710
|
+
return join155(homedir40(), "Library", "Application Support", "Claude", "claude_desktop_config.json");
|
|
567728
567711
|
}
|
|
567729
567712
|
const windowsHome = process.env.USERPROFILE ? process.env.USERPROFILE.replace(/\\/g, "/") : null;
|
|
567730
567713
|
if (windowsHome) {
|
|
@@ -567743,7 +567726,7 @@ async function getClaudeDesktopConfigPath() {
|
|
|
567743
567726
|
if (user.name === "Public" || user.name === "Default" || user.name === "Default User" || user.name === "All Users") {
|
|
567744
567727
|
continue;
|
|
567745
567728
|
}
|
|
567746
|
-
const potentialConfigPath =
|
|
567729
|
+
const potentialConfigPath = join155(usersDir, user.name, "AppData", "Roaming", "Claude", "claude_desktop_config.json");
|
|
567747
567730
|
try {
|
|
567748
567731
|
await stat52(potentialConfigPath);
|
|
567749
567732
|
return potentialConfigPath;
|
|
@@ -568652,12 +568635,12 @@ __export(exports_install, {
|
|
|
568652
568635
|
install: () => install
|
|
568653
568636
|
});
|
|
568654
568637
|
import { homedir as homedir41 } from "node:os";
|
|
568655
|
-
import { join as
|
|
568638
|
+
import { join as join156 } from "node:path";
|
|
568656
568639
|
function getInstallationPath2() {
|
|
568657
568640
|
const isWindows2 = env4.platform === "win32";
|
|
568658
568641
|
const homeDir = homedir41();
|
|
568659
568642
|
if (isWindows2) {
|
|
568660
|
-
const windowsPath =
|
|
568643
|
+
const windowsPath = join156(homeDir, ".local", "bin", "claude.exe");
|
|
568661
568644
|
return windowsPath.replace(/\//g, "\\");
|
|
568662
568645
|
}
|
|
568663
568646
|
return "~/.local/bin/claude";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@funnycode/myclaude",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.35",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "An open-source AI coding assistant in your terminal - powered by Claude",
|
|
6
6
|
"license": "MIT",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"homepage": "https://github.com/thomaslwq/myclaude",
|
|
17
17
|
"engines": {
|
|
18
18
|
"bun": ">=1.3.5",
|
|
19
|
-
"node": ">=
|
|
19
|
+
"node": ">=22.17.0"
|
|
20
20
|
},
|
|
21
21
|
"scripts": {
|
|
22
22
|
"dev": "bun run ./src/dev-entry.ts",
|