@goondocks/myco 0.19.0 → 0.19.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{agent-run-EADUYYAS.js → agent-run-BV3ATBWB.js} +6 -6
- package/dist/{agent-tasks-GC77JXQB.js → agent-tasks-I5SMLWVL.js} +6 -6
- package/dist/{chunk-LLJMDXO2.js → chunk-3J6TUJSV.js} +3 -3
- package/dist/{chunk-2CKDAFSX.js → chunk-46AQ7D23.js} +2 -2
- package/dist/{chunk-MDEUXYJG.js → chunk-4NIMDUYW.js} +3 -5
- package/dist/{chunk-MDEUXYJG.js.map → chunk-4NIMDUYW.js.map} +1 -1
- package/dist/{chunk-2LN2BBKA.js → chunk-6DDRJQ4X.js} +2 -2
- package/dist/{chunk-YPWF322W.js → chunk-6ZDJXSEO.js} +3 -3
- package/dist/{chunk-N77K772N.js → chunk-AOCBCPAP.js} +5 -5
- package/dist/chunk-AOCBCPAP.js.map +1 -0
- package/dist/{chunk-INWD6AIQ.js → chunk-AULBWINA.js} +2 -2
- package/dist/{team-N6TXS2PF.js → chunk-CDM6ZLMZ.js} +246 -61
- package/dist/chunk-CDM6ZLMZ.js.map +1 -0
- package/dist/{chunk-2DF4OZ2D.js → chunk-GVBVHYOT.js} +2 -2
- package/dist/{chunk-2OO3BRFK.js → chunk-HQLPB346.js} +2 -2
- package/dist/{chunk-W4VHC2ES.js → chunk-I54KLC6H.js} +3 -1
- package/dist/{chunk-W4VHC2ES.js.map → chunk-I54KLC6H.js.map} +1 -1
- package/dist/{chunk-CYBC2HZ3.js → chunk-NU74DHV3.js} +3 -3
- package/dist/{chunk-3TPD6HEF.js → chunk-OR4XUYBJ.js} +3 -3
- package/dist/{chunk-KSXTNYXO.js → chunk-PMT2LSTQ.js} +2 -2
- package/dist/{chunk-REN37KYI.js → chunk-PZEAO35P.js} +2 -2
- package/dist/{chunk-RXROZBSK.js → chunk-ULH667GT.js} +8 -8
- package/dist/{chunk-UW6DGPSV.js → chunk-VNL7KN4V.js} +3 -3
- package/dist/{chunk-SCI55NKY.js → chunk-VQF5E4ZX.js} +2 -2
- package/dist/{chunk-OZF5EURR.js → chunk-WGIQOJKJ.js} +4 -4
- package/dist/{chunk-MS6FDV45.js → chunk-WKNAKQKA.js} +2 -2
- package/dist/{chunk-AELJ4PS5.js → chunk-YDU3AHSW.js} +3 -3
- package/dist/{cli-X7CFP4YD.js → cli-2BW2PZMP.js} +39 -39
- package/dist/{client-YA33HUFY.js → client-HMGTCKRW.js} +4 -4
- package/dist/{config-RFB2DJC6.js → config-LVXDVUYY.js} +3 -3
- package/dist/{detect-providers-2OQBU4VX.js → detect-providers-CDG6BKHU.js} +4 -4
- package/dist/{doctor-FAH7N66M.js → doctor-AK3W5FMN.js} +10 -10
- package/dist/{executor-ICTRRUBY.js → executor-YLC7DHBY.js} +13 -13
- package/dist/{init-PTJEOTJV.js → init-4FV7ODOK.js} +11 -11
- package/dist/{llm-7D2OGDEK.js → llm-INLSGEXY.js} +4 -4
- package/dist/{loader-O2JFO2UC.js → loader-2ULW2FZS.js} +3 -3
- package/dist/{loader-VPE4RCIF.js → loader-HEGKUTGI.js} +3 -3
- package/dist/{main-EIKBLOUL.js → main-IV64U72E.js} +40 -35
- package/dist/main-IV64U72E.js.map +1 -0
- package/dist/{open-2JCSOLZS.js → open-YSB36HP7.js} +6 -6
- package/dist/{post-compact-2HPPWPBI.js → post-compact-5OB4LRLA.js} +6 -6
- package/dist/{post-tool-use-TWBBBABS.js → post-tool-use-2UOTDXXS.js} +5 -5
- package/dist/{post-tool-use-failure-LIJYR4KL.js → post-tool-use-failure-ZJQGHBMW.js} +6 -6
- package/dist/{pre-compact-II2CMNTG.js → pre-compact-WD3FYUZ4.js} +6 -6
- package/dist/{provider-check-KEQNQ6LO.js → provider-check-V3NSOLZQ.js} +4 -4
- package/dist/{registry-X5FDGYXT.js → registry-XGRKLHEK.js} +4 -4
- package/dist/{remove-L5MVYBOY.js → remove-L6T4LMFP.js} +7 -7
- package/dist/{resolution-events-MVIZMONR.js → resolution-events-PZFKMZHM.js} +4 -4
- package/dist/{restart-VIT3JBD6.js → restart-4UGLWER2.js} +7 -7
- package/dist/{search-O6BB5MTO.js → search-MJGMQZ5N.js} +7 -7
- package/dist/{server-O3UPJVBR.js → server-MVBNGXLQ.js} +4 -4
- package/dist/{session-5JV3DQIK.js → session-GLKHGGPJ.js} +8 -8
- package/dist/{session-end-PZ2OXBGG.js → session-end-ISPUQH3X.js} +5 -5
- package/dist/{session-start-FDGM56BX.js → session-start-VF26JMWW.js} +10 -10
- package/dist/{setup-llm-MQK557BB.js → setup-llm-7RCROQLP.js} +7 -7
- package/dist/src/cli.js +1 -1
- package/dist/src/daemon/main.js +1 -1
- package/dist/src/hooks/post-tool-use.js +1 -1
- package/dist/src/hooks/session-end.js +1 -1
- package/dist/src/hooks/session-start.js +1 -1
- package/dist/src/hooks/stop.js +1 -1
- package/dist/src/hooks/user-prompt-submit.js +1 -1
- package/dist/src/mcp/server.js +1 -1
- package/dist/{stats-2STTARTC.js → stats-N7FYQSAY.js} +8 -8
- package/dist/{stop-WNKCMCGO.js → stop-LVRFMSGO.js} +5 -5
- package/dist/{stop-failure-6GTOBVTN.js → stop-failure-AXU5LOBN.js} +6 -6
- package/dist/{subagent-start-VJF5YKVX.js → subagent-start-KDJIQXQC.js} +6 -6
- package/dist/{subagent-stop-UW6HMICY.js → subagent-stop-2T2H2TYE.js} +6 -6
- package/dist/{task-completed-U4Q3XXLX.js → task-completed-XHQ3XMYJ.js} +6 -6
- package/dist/team-GM2VZOVM.js +22 -0
- package/dist/ui/assets/{index-CHIm98OP.js → index-JtMb9fMt.js} +1 -1
- package/dist/ui/index.html +1 -1
- package/dist/{update-ZYCOWKMD.js → update-R6VHTRQA.js} +7 -7
- package/dist/{user-prompt-submit-SOYL4OWF.js → user-prompt-submit-EK2MDBLQ.js} +5 -5
- package/dist/{verify-P37PQ4YM.js → verify-NK46D4II.js} +5 -5
- package/dist/{version-XAWC277D.js → version-LTTJPC4F.js} +2 -2
- package/dist/version-LTTJPC4F.js.map +1 -0
- package/package.json +1 -1
- package/dist/chunk-EM63ZFKA.js +0 -166
- package/dist/chunk-EM63ZFKA.js.map +0 -1
- package/dist/chunk-N77K772N.js.map +0 -1
- package/dist/main-EIKBLOUL.js.map +0 -1
- package/dist/team-N6TXS2PF.js.map +0 -1
- /package/dist/{agent-run-EADUYYAS.js.map → agent-run-BV3ATBWB.js.map} +0 -0
- /package/dist/{agent-tasks-GC77JXQB.js.map → agent-tasks-I5SMLWVL.js.map} +0 -0
- /package/dist/{chunk-LLJMDXO2.js.map → chunk-3J6TUJSV.js.map} +0 -0
- /package/dist/{chunk-2CKDAFSX.js.map → chunk-46AQ7D23.js.map} +0 -0
- /package/dist/{chunk-2LN2BBKA.js.map → chunk-6DDRJQ4X.js.map} +0 -0
- /package/dist/{chunk-YPWF322W.js.map → chunk-6ZDJXSEO.js.map} +0 -0
- /package/dist/{chunk-INWD6AIQ.js.map → chunk-AULBWINA.js.map} +0 -0
- /package/dist/{chunk-2DF4OZ2D.js.map → chunk-GVBVHYOT.js.map} +0 -0
- /package/dist/{chunk-2OO3BRFK.js.map → chunk-HQLPB346.js.map} +0 -0
- /package/dist/{chunk-CYBC2HZ3.js.map → chunk-NU74DHV3.js.map} +0 -0
- /package/dist/{chunk-3TPD6HEF.js.map → chunk-OR4XUYBJ.js.map} +0 -0
- /package/dist/{chunk-KSXTNYXO.js.map → chunk-PMT2LSTQ.js.map} +0 -0
- /package/dist/{chunk-REN37KYI.js.map → chunk-PZEAO35P.js.map} +0 -0
- /package/dist/{chunk-RXROZBSK.js.map → chunk-ULH667GT.js.map} +0 -0
- /package/dist/{chunk-UW6DGPSV.js.map → chunk-VNL7KN4V.js.map} +0 -0
- /package/dist/{chunk-SCI55NKY.js.map → chunk-VQF5E4ZX.js.map} +0 -0
- /package/dist/{chunk-OZF5EURR.js.map → chunk-WGIQOJKJ.js.map} +0 -0
- /package/dist/{chunk-MS6FDV45.js.map → chunk-WKNAKQKA.js.map} +0 -0
- /package/dist/{chunk-AELJ4PS5.js.map → chunk-YDU3AHSW.js.map} +0 -0
- /package/dist/{cli-X7CFP4YD.js.map → cli-2BW2PZMP.js.map} +0 -0
- /package/dist/{client-YA33HUFY.js.map → client-HMGTCKRW.js.map} +0 -0
- /package/dist/{config-RFB2DJC6.js.map → config-LVXDVUYY.js.map} +0 -0
- /package/dist/{detect-providers-2OQBU4VX.js.map → detect-providers-CDG6BKHU.js.map} +0 -0
- /package/dist/{doctor-FAH7N66M.js.map → doctor-AK3W5FMN.js.map} +0 -0
- /package/dist/{executor-ICTRRUBY.js.map → executor-YLC7DHBY.js.map} +0 -0
- /package/dist/{init-PTJEOTJV.js.map → init-4FV7ODOK.js.map} +0 -0
- /package/dist/{llm-7D2OGDEK.js.map → llm-INLSGEXY.js.map} +0 -0
- /package/dist/{loader-O2JFO2UC.js.map → loader-2ULW2FZS.js.map} +0 -0
- /package/dist/{loader-VPE4RCIF.js.map → loader-HEGKUTGI.js.map} +0 -0
- /package/dist/{open-2JCSOLZS.js.map → open-YSB36HP7.js.map} +0 -0
- /package/dist/{post-compact-2HPPWPBI.js.map → post-compact-5OB4LRLA.js.map} +0 -0
- /package/dist/{post-tool-use-TWBBBABS.js.map → post-tool-use-2UOTDXXS.js.map} +0 -0
- /package/dist/{post-tool-use-failure-LIJYR4KL.js.map → post-tool-use-failure-ZJQGHBMW.js.map} +0 -0
- /package/dist/{pre-compact-II2CMNTG.js.map → pre-compact-WD3FYUZ4.js.map} +0 -0
- /package/dist/{provider-check-KEQNQ6LO.js.map → provider-check-V3NSOLZQ.js.map} +0 -0
- /package/dist/{registry-X5FDGYXT.js.map → registry-XGRKLHEK.js.map} +0 -0
- /package/dist/{remove-L5MVYBOY.js.map → remove-L6T4LMFP.js.map} +0 -0
- /package/dist/{resolution-events-MVIZMONR.js.map → resolution-events-PZFKMZHM.js.map} +0 -0
- /package/dist/{restart-VIT3JBD6.js.map → restart-4UGLWER2.js.map} +0 -0
- /package/dist/{search-O6BB5MTO.js.map → search-MJGMQZ5N.js.map} +0 -0
- /package/dist/{server-O3UPJVBR.js.map → server-MVBNGXLQ.js.map} +0 -0
- /package/dist/{session-5JV3DQIK.js.map → session-GLKHGGPJ.js.map} +0 -0
- /package/dist/{session-end-PZ2OXBGG.js.map → session-end-ISPUQH3X.js.map} +0 -0
- /package/dist/{session-start-FDGM56BX.js.map → session-start-VF26JMWW.js.map} +0 -0
- /package/dist/{setup-llm-MQK557BB.js.map → setup-llm-7RCROQLP.js.map} +0 -0
- /package/dist/{stats-2STTARTC.js.map → stats-N7FYQSAY.js.map} +0 -0
- /package/dist/{stop-WNKCMCGO.js.map → stop-LVRFMSGO.js.map} +0 -0
- /package/dist/{stop-failure-6GTOBVTN.js.map → stop-failure-AXU5LOBN.js.map} +0 -0
- /package/dist/{subagent-start-VJF5YKVX.js.map → subagent-start-KDJIQXQC.js.map} +0 -0
- /package/dist/{subagent-stop-UW6HMICY.js.map → subagent-stop-2T2H2TYE.js.map} +0 -0
- /package/dist/{task-completed-U4Q3XXLX.js.map → task-completed-XHQ3XMYJ.js.map} +0 -0
- /package/dist/{version-XAWC277D.js.map → team-GM2VZOVM.js.map} +0 -0
- /package/dist/{update-ZYCOWKMD.js.map → update-R6VHTRQA.js.map} +0 -0
- /package/dist/{user-prompt-submit-SOYL4OWF.js.map → user-prompt-submit-EK2MDBLQ.js.map} +0 -0
- /package/dist/{verify-P37PQ4YM.js.map → verify-NK46D4II.js.map} +0 -0
package/dist/ui/index.html
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>Myco</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-JtMb9fMt.js"></script>
|
|
9
9
|
<link rel="stylesheet" crossorigin href="/assets/index-CRmkSi63.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
|
@@ -2,22 +2,22 @@ import { createRequire as __cr } from 'node:module'; const require = __cr(import
|
|
|
2
2
|
import {
|
|
3
3
|
VAULT_GITIGNORE,
|
|
4
4
|
registerSymbionts
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-AOCBCPAP.js";
|
|
6
6
|
import "./chunk-SAKJMNSR.js";
|
|
7
7
|
import "./chunk-WYOE4IAX.js";
|
|
8
|
-
import "./chunk-
|
|
8
|
+
import "./chunk-PMT2LSTQ.js";
|
|
9
9
|
import {
|
|
10
10
|
getEnabledSymbiontNames,
|
|
11
11
|
loadConfig
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-4NIMDUYW.js";
|
|
13
13
|
import "./chunk-MYX5NCRH.js";
|
|
14
14
|
import {
|
|
15
15
|
resolveVaultDir
|
|
16
16
|
} from "./chunk-5ZT2Q6P5.js";
|
|
17
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-NU74DHV3.js";
|
|
18
18
|
import {
|
|
19
19
|
getPluginVersion
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-46AQ7D23.js";
|
|
21
21
|
import {
|
|
22
22
|
loadManifests,
|
|
23
23
|
resolvePackageRoot
|
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
import "./chunk-LPUQPDC2.js";
|
|
26
26
|
import {
|
|
27
27
|
UPDATE_STAMP_FILENAME
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-I54KLC6H.js";
|
|
29
29
|
import "./chunk-E7NUADTQ.js";
|
|
30
30
|
import "./chunk-6LQIMRTC.js";
|
|
31
31
|
import "./chunk-ODXLRR4U.js";
|
|
@@ -98,4 +98,4 @@ async function run(args) {
|
|
|
98
98
|
export {
|
|
99
99
|
run
|
|
100
100
|
};
|
|
101
|
-
//# sourceMappingURL=update-
|
|
101
|
+
//# sourceMappingURL=update-R6VHTRQA.js.map
|
|
@@ -9,19 +9,19 @@ import {
|
|
|
9
9
|
import {
|
|
10
10
|
normalizeHookInput,
|
|
11
11
|
readStdin
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-WKNAKQKA.js";
|
|
13
13
|
import {
|
|
14
14
|
resolveVaultDir
|
|
15
15
|
} from "./chunk-5ZT2Q6P5.js";
|
|
16
16
|
import {
|
|
17
17
|
DaemonClient
|
|
18
|
-
} from "./chunk-
|
|
19
|
-
import "./chunk-
|
|
18
|
+
} from "./chunk-NU74DHV3.js";
|
|
19
|
+
import "./chunk-46AQ7D23.js";
|
|
20
20
|
import {
|
|
21
21
|
loadManifests
|
|
22
22
|
} from "./chunk-UVKQ62II.js";
|
|
23
23
|
import "./chunk-LPUQPDC2.js";
|
|
24
|
-
import "./chunk-
|
|
24
|
+
import "./chunk-I54KLC6H.js";
|
|
25
25
|
import "./chunk-E7NUADTQ.js";
|
|
26
26
|
import "./chunk-6LQIMRTC.js";
|
|
27
27
|
import "./chunk-ODXLRR4U.js";
|
|
@@ -86,4 +86,4 @@ ${sessionLine}` : sessionLine;
|
|
|
86
86
|
export {
|
|
87
87
|
main
|
|
88
88
|
};
|
|
89
|
-
//# sourceMappingURL=user-prompt-submit-
|
|
89
|
+
//# sourceMappingURL=user-prompt-submit-EK2MDBLQ.js.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
createEmbeddingProvider
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-3J6TUJSV.js";
|
|
5
|
+
import "./chunk-PMT2LSTQ.js";
|
|
6
6
|
import {
|
|
7
7
|
loadConfig
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-4NIMDUYW.js";
|
|
9
|
+
import "./chunk-I54KLC6H.js";
|
|
10
10
|
import "./chunk-E7NUADTQ.js";
|
|
11
11
|
import "./chunk-6LQIMRTC.js";
|
|
12
12
|
import "./chunk-ODXLRR4U.js";
|
|
@@ -39,4 +39,4 @@ async function run(_args, vaultDir) {
|
|
|
39
39
|
export {
|
|
40
40
|
run
|
|
41
41
|
};
|
|
42
|
-
//# sourceMappingURL=verify-
|
|
42
|
+
//# sourceMappingURL=verify-NK46D4II.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
getPluginVersion
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-46AQ7D23.js";
|
|
5
5
|
import "./chunk-LPUQPDC2.js";
|
|
6
6
|
import "./chunk-PZUWP5VK.js";
|
|
7
7
|
export {
|
|
8
8
|
getPluginVersion
|
|
9
9
|
};
|
|
10
|
-
//# sourceMappingURL=version-
|
|
10
|
+
//# sourceMappingURL=version-LTTJPC4F.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/package.json
CHANGED
package/dist/chunk-EM63ZFKA.js
DELETED
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
|
|
2
|
-
|
|
3
|
-
// src/config/secrets.ts
|
|
4
|
-
import fs from "fs";
|
|
5
|
-
import path from "path";
|
|
6
|
-
var SECRETS_FILE = "secrets.env";
|
|
7
|
-
function readSecrets(vaultDir) {
|
|
8
|
-
const secretsPath = path.join(vaultDir, SECRETS_FILE);
|
|
9
|
-
if (!fs.existsSync(secretsPath)) return {};
|
|
10
|
-
const secrets = {};
|
|
11
|
-
for (const line of fs.readFileSync(secretsPath, "utf-8").split("\n")) {
|
|
12
|
-
const match = line.match(/^\s*([^#=]+?)\s*=\s*(.*?)\s*$/);
|
|
13
|
-
if (match) {
|
|
14
|
-
secrets[match[1]] = match[2];
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
return secrets;
|
|
18
|
-
}
|
|
19
|
-
function writeSecret(vaultDir, key, value) {
|
|
20
|
-
const secretsPath = path.join(vaultDir, SECRETS_FILE);
|
|
21
|
-
const existing = readSecrets(vaultDir);
|
|
22
|
-
existing[key] = value;
|
|
23
|
-
const content = Object.entries(existing).map(([k, v]) => `${k}=${v}`).join("\n") + "\n";
|
|
24
|
-
fs.writeFileSync(secretsPath, content, "utf-8");
|
|
25
|
-
}
|
|
26
|
-
function loadSecrets(vaultDir) {
|
|
27
|
-
const secrets = readSecrets(vaultDir);
|
|
28
|
-
for (const [key, value] of Object.entries(secrets)) {
|
|
29
|
-
if (!process.env[key]) {
|
|
30
|
-
process.env[key] = value;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
// ../myco-deploy/src/cloudflare.ts
|
|
36
|
-
import { execFileSync } from "child_process";
|
|
37
|
-
import fs2 from "fs";
|
|
38
|
-
import path2 from "path";
|
|
39
|
-
var WORKER_URL_REGEX = /(https:\/\/[^\s]+\.workers\.dev)/;
|
|
40
|
-
var D1_ID_JSON_REGEX = /"database_id"\s*:\s*"([0-9a-f-]{36})"/i;
|
|
41
|
-
var D1_ID_TEXT_REGEX = /id:\s*([0-9a-f-]{36})/i;
|
|
42
|
-
var KV_ID_REGEX = /"id":\s*"([0-9a-f]+)"/i;
|
|
43
|
-
function buildCommandEnv() {
|
|
44
|
-
const nodeBinDir = path2.dirname(process.execPath);
|
|
45
|
-
const pathValue = process.env.PATH ? `${nodeBinDir}${path2.delimiter}${process.env.PATH}` : nodeBinDir;
|
|
46
|
-
return { ...process.env, PATH: pathValue };
|
|
47
|
-
}
|
|
48
|
-
function runWrangler(args, options) {
|
|
49
|
-
try {
|
|
50
|
-
return execFileSync("wrangler", args, {
|
|
51
|
-
cwd: options.cwd,
|
|
52
|
-
env: buildCommandEnv(),
|
|
53
|
-
input: options.input,
|
|
54
|
-
encoding: "utf-8",
|
|
55
|
-
timeout: options.timeoutMs,
|
|
56
|
-
stdio: ["pipe", "pipe", "pipe"]
|
|
57
|
-
});
|
|
58
|
-
} catch (error) {
|
|
59
|
-
const execError = error;
|
|
60
|
-
const stderr = execError.stderr?.toString() ?? "";
|
|
61
|
-
const stdout = execError.stdout?.toString() ?? "";
|
|
62
|
-
const detail = [stderr, stdout].filter(Boolean).join("\n").trim();
|
|
63
|
-
throw new Error(detail || execError.message);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
function installDeploymentDeps(deployDir, timeoutMs) {
|
|
67
|
-
const packageJsonPath = path2.join(deployDir, "package.json");
|
|
68
|
-
if (!fs2.existsSync(packageJsonPath)) return;
|
|
69
|
-
execFileSync("npm", ["install", "--silent", "--no-audit", "--no-fund"], {
|
|
70
|
-
cwd: deployDir,
|
|
71
|
-
env: buildCommandEnv(),
|
|
72
|
-
encoding: "utf-8",
|
|
73
|
-
timeout: timeoutMs,
|
|
74
|
-
stdio: ["pipe", "pipe", "pipe"]
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
function parseWorkerUrl(output) {
|
|
78
|
-
const workerUrl = output.match(WORKER_URL_REGEX)?.[1];
|
|
79
|
-
if (!workerUrl) {
|
|
80
|
-
throw new Error(`Could not parse worker URL from deploy output:
|
|
81
|
-
${output}`);
|
|
82
|
-
}
|
|
83
|
-
return workerUrl;
|
|
84
|
-
}
|
|
85
|
-
function parseD1Id(output) {
|
|
86
|
-
const jsonMatch = output.match(D1_ID_JSON_REGEX);
|
|
87
|
-
if (jsonMatch) return jsonMatch[1];
|
|
88
|
-
const textMatch = output.match(D1_ID_TEXT_REGEX);
|
|
89
|
-
if (textMatch) return textMatch[1];
|
|
90
|
-
throw new Error(`Could not parse D1 database ID from wrangler output:
|
|
91
|
-
${output}`);
|
|
92
|
-
}
|
|
93
|
-
function parseKvNamespaceId(output) {
|
|
94
|
-
const kvId = output.match(KV_ID_REGEX)?.[1];
|
|
95
|
-
if (!kvId) {
|
|
96
|
-
throw new Error(`Could not parse KV namespace ID from wrangler output:
|
|
97
|
-
${output}`);
|
|
98
|
-
}
|
|
99
|
-
return kvId;
|
|
100
|
-
}
|
|
101
|
-
function extractJsonArray(output) {
|
|
102
|
-
const start = output.indexOf("[");
|
|
103
|
-
const end = output.lastIndexOf("]");
|
|
104
|
-
if (start === -1 || end === -1 || end < start) {
|
|
105
|
-
throw new Error(`No JSON array found in output:
|
|
106
|
-
${output}`);
|
|
107
|
-
}
|
|
108
|
-
return JSON.parse(output.slice(start, end + 1));
|
|
109
|
-
}
|
|
110
|
-
function stageDeploymentDir(options) {
|
|
111
|
-
if (options.reset) {
|
|
112
|
-
fs2.rmSync(options.deployDir, { recursive: true, force: true });
|
|
113
|
-
}
|
|
114
|
-
fs2.mkdirSync(options.deployDir, { recursive: true });
|
|
115
|
-
fs2.cpSync(options.sourceDir, options.deployDir, { recursive: true });
|
|
116
|
-
for (const copy of options.extraCopies ?? []) {
|
|
117
|
-
fs2.cpSync(copy.sourceDir, path2.join(options.deployDir, copy.destinationSubdir), { recursive: true });
|
|
118
|
-
}
|
|
119
|
-
for (const patch of options.textPatches ?? []) {
|
|
120
|
-
const absolutePath = path2.join(options.deployDir, patch.filePath);
|
|
121
|
-
let nextText = fs2.readFileSync(absolutePath, "utf-8");
|
|
122
|
-
for (const transform of patch.transforms) {
|
|
123
|
-
nextText = transform(nextText);
|
|
124
|
-
}
|
|
125
|
-
fs2.writeFileSync(absolutePath, nextText, "utf-8");
|
|
126
|
-
}
|
|
127
|
-
if (options.installDepsTimeoutMs) {
|
|
128
|
-
installDeploymentDeps(options.deployDir, options.installDepsTimeoutMs);
|
|
129
|
-
}
|
|
130
|
-
return options.deployDir;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
// ../myco-deploy/src/local-config.ts
|
|
134
|
-
import crypto from "crypto";
|
|
135
|
-
import fs3 from "fs";
|
|
136
|
-
import os from "os";
|
|
137
|
-
import path3 from "path";
|
|
138
|
-
function resolveHomeConfigPath(configDir, fileName) {
|
|
139
|
-
return path3.join(os.homedir(), configDir, fileName);
|
|
140
|
-
}
|
|
141
|
-
function readJsonConfig(configPath) {
|
|
142
|
-
if (!fs3.existsSync(configPath)) return null;
|
|
143
|
-
return JSON.parse(fs3.readFileSync(configPath, "utf-8"));
|
|
144
|
-
}
|
|
145
|
-
function writeJsonConfig(configPath, value) {
|
|
146
|
-
fs3.mkdirSync(path3.dirname(configPath), { recursive: true });
|
|
147
|
-
fs3.writeFileSync(configPath, `${JSON.stringify(value, null, 2)}
|
|
148
|
-
`, { encoding: "utf-8", mode: 384 });
|
|
149
|
-
fs3.chmodSync(configPath, 384);
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
export {
|
|
153
|
-
readSecrets,
|
|
154
|
-
writeSecret,
|
|
155
|
-
loadSecrets,
|
|
156
|
-
runWrangler,
|
|
157
|
-
parseWorkerUrl,
|
|
158
|
-
parseD1Id,
|
|
159
|
-
parseKvNamespaceId,
|
|
160
|
-
extractJsonArray,
|
|
161
|
-
stageDeploymentDir,
|
|
162
|
-
resolveHomeConfigPath,
|
|
163
|
-
readJsonConfig,
|
|
164
|
-
writeJsonConfig
|
|
165
|
-
};
|
|
166
|
-
//# sourceMappingURL=chunk-EM63ZFKA.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/config/secrets.ts","../../myco-deploy/src/cloudflare.ts","../../myco-deploy/src/local-config.ts"],"sourcesContent":["/**\n * Secrets file utilities for API key storage outside git.\n *\n * Secrets are stored in `secrets.env` inside the vault directory.\n * This file is gitignored (see VAULT_GITIGNORE) and never committed.\n * Format: KEY=value, one per line (same as .env).\n */\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nconst SECRETS_FILE = 'secrets.env';\n\n/** Read all secrets from <vault>/secrets.env as key-value pairs. */\nexport function readSecrets(vaultDir: string): Record<string, string> {\n const secretsPath = path.join(vaultDir, SECRETS_FILE);\n if (!fs.existsSync(secretsPath)) return {};\n\n const secrets: Record<string, string> = {};\n for (const line of fs.readFileSync(secretsPath, 'utf-8').split('\\n')) {\n const match = line.match(/^\\s*([^#=]+?)\\s*=\\s*(.*?)\\s*$/);\n if (match) {\n secrets[match[1]] = match[2];\n }\n }\n return secrets;\n}\n\n/** Write a secret to <vault>/secrets.env, preserving existing entries. */\nexport function writeSecret(vaultDir: string, key: string, value: string): void {\n const secretsPath = path.join(vaultDir, SECRETS_FILE);\n const existing = readSecrets(vaultDir);\n existing[key] = value;\n\n const content = Object.entries(existing)\n .map(([k, v]) => `${k}=${v}`)\n .join('\\n') + '\\n';\n\n fs.writeFileSync(secretsPath, content, 'utf-8');\n}\n\n/** Load secrets from <vault>/secrets.env into process.env (without overwriting existing vars). */\nexport function loadSecrets(vaultDir: string): void {\n const secrets = readSecrets(vaultDir);\n for (const [key, value] of Object.entries(secrets)) {\n if (!process.env[key]) {\n process.env[key] = value;\n }\n }\n}\n","import { execFileSync } from 'node:child_process';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nconst WORKER_URL_REGEX = /(https:\\/\\/[^\\s]+\\.workers\\.dev)/;\nconst D1_ID_JSON_REGEX = /\"database_id\"\\s*:\\s*\"([0-9a-f-]{36})\"/i;\nconst D1_ID_TEXT_REGEX = /id:\\s*([0-9a-f-]{36})/i;\nconst KV_ID_REGEX = /\"id\":\\s*\"([0-9a-f]+)\"/i;\n\nexport interface WranglerOptions {\n cwd?: string;\n input?: string;\n timeoutMs: number;\n}\n\nexport interface TextPatch {\n filePath: string;\n transforms: Array<(text: string) => string>;\n}\n\nexport interface StageDeploymentDirOptions {\n sourceDir: string;\n deployDir: string;\n reset?: boolean;\n extraCopies?: Array<{ sourceDir: string; destinationSubdir: string }>;\n textPatches?: TextPatch[];\n installDepsTimeoutMs?: number | null;\n}\n\nexport function buildCommandEnv(): NodeJS.ProcessEnv {\n const nodeBinDir = path.dirname(process.execPath);\n const pathValue = process.env.PATH\n ? `${nodeBinDir}${path.delimiter}${process.env.PATH}`\n : nodeBinDir;\n return { ...process.env, PATH: pathValue };\n}\n\nexport function runWrangler(args: string[], options: WranglerOptions): string {\n try {\n return execFileSync('wrangler', args, {\n cwd: options.cwd,\n env: buildCommandEnv(),\n input: options.input,\n encoding: 'utf-8',\n timeout: options.timeoutMs,\n stdio: ['pipe', 'pipe', 'pipe'],\n });\n } catch (error) {\n const execError = error as Error & { stderr?: Buffer | string; stdout?: Buffer | string };\n const stderr = execError.stderr?.toString() ?? '';\n const stdout = execError.stdout?.toString() ?? '';\n const detail = [stderr, stdout].filter(Boolean).join('\\n').trim();\n throw new Error(detail || execError.message);\n }\n}\n\nexport function installDeploymentDeps(deployDir: string, timeoutMs: number): void {\n const packageJsonPath = path.join(deployDir, 'package.json');\n if (!fs.existsSync(packageJsonPath)) return;\n\n execFileSync('npm', ['install', '--silent', '--no-audit', '--no-fund'], {\n cwd: deployDir,\n env: buildCommandEnv(),\n encoding: 'utf-8',\n timeout: timeoutMs,\n stdio: ['pipe', 'pipe', 'pipe'],\n });\n}\n\nexport function parseWorkerUrl(output: string): string {\n const workerUrl = output.match(WORKER_URL_REGEX)?.[1];\n if (!workerUrl) {\n throw new Error(`Could not parse worker URL from deploy output:\\n${output}`);\n }\n return workerUrl;\n}\n\nexport function parseD1Id(output: string): string {\n const jsonMatch = output.match(D1_ID_JSON_REGEX);\n if (jsonMatch) return jsonMatch[1];\n\n const textMatch = output.match(D1_ID_TEXT_REGEX);\n if (textMatch) return textMatch[1];\n\n throw new Error(`Could not parse D1 database ID from wrangler output:\\n${output}`);\n}\n\nexport function parseKvNamespaceId(output: string): string {\n const kvId = output.match(KV_ID_REGEX)?.[1];\n if (!kvId) {\n throw new Error(`Could not parse KV namespace ID from wrangler output:\\n${output}`);\n }\n return kvId;\n}\n\nexport function extractJsonArray(output: string): unknown[] {\n const start = output.indexOf('[');\n const end = output.lastIndexOf(']');\n if (start === -1 || end === -1 || end < start) {\n throw new Error(`No JSON array found in output:\\n${output}`);\n }\n return JSON.parse(output.slice(start, end + 1)) as unknown[];\n}\n\nexport function stageDeploymentDir(options: StageDeploymentDirOptions): string {\n if (options.reset) {\n fs.rmSync(options.deployDir, { recursive: true, force: true });\n }\n fs.mkdirSync(options.deployDir, { recursive: true });\n fs.cpSync(options.sourceDir, options.deployDir, { recursive: true });\n\n for (const copy of options.extraCopies ?? []) {\n fs.cpSync(copy.sourceDir, path.join(options.deployDir, copy.destinationSubdir), { recursive: true });\n }\n\n for (const patch of options.textPatches ?? []) {\n const absolutePath = path.join(options.deployDir, patch.filePath);\n let nextText = fs.readFileSync(absolutePath, 'utf-8');\n for (const transform of patch.transforms) {\n nextText = transform(nextText);\n }\n fs.writeFileSync(absolutePath, nextText, 'utf-8');\n }\n\n if (options.installDepsTimeoutMs) {\n installDeploymentDeps(options.deployDir, options.installDepsTimeoutMs);\n }\n\n return options.deployDir;\n}\n","import crypto from 'node:crypto';\nimport fs from 'node:fs';\nimport os from 'node:os';\nimport path from 'node:path';\n\nexport function resolveHomeConfigPath(configDir: string, fileName: string): string {\n return path.join(os.homedir(), configDir, fileName);\n}\n\nexport function readJsonConfig<T>(configPath: string): T | null {\n if (!fs.existsSync(configPath)) return null;\n return JSON.parse(fs.readFileSync(configPath, 'utf-8')) as T;\n}\n\nexport function writeJsonConfig(configPath: string, value: unknown): void {\n fs.mkdirSync(path.dirname(configPath), { recursive: true });\n fs.writeFileSync(configPath, `${JSON.stringify(value, null, 2)}\\n`, { encoding: 'utf-8', mode: 0o600 });\n fs.chmodSync(configPath, 0o600);\n}\n\nexport function maskSecret(secret: string | null): string | null {\n if (!secret) return null;\n if (secret.length <= 8) return secret;\n return `${secret.slice(0, 4)}...${secret.slice(-4)}`;\n}\n\nexport function createHexToken(byteLength: number): string {\n return crypto.randomBytes(byteLength).toString('hex');\n}\n"],"mappings":"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","names":["fs","path","fs","path"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli/shared.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\nimport os from 'node:os';\nimport { OllamaBackend } from '../intelligence/ollama.js';\nimport { LmStudioBackend } from '../intelligence/lm-studio.js';\n\nimport { DaemonClient } from '../hooks/client.js';\nimport { initDatabase, closeDatabase, vaultDbPath } from '../db/client.js';\nimport { SymbiontInstaller } from '../symbionts/installer.js';\nimport type { SymbiontManifest } from '../symbionts/manifest-schema.js';\n\nexport { parseStringFlag, parseIntFlag } from '../logs/format.js';\n\n/**\n * Initialize the singleton database for direct CLI reads.\n * Used by CLI commands that only need reads (stats, search, session).\n * Does NOT require the daemon to be running — WAL mode allows concurrent reads.\n *\n * @returns a cleanup function that closes the database.\n */\nexport function initVaultDb(vaultDir: string): () => void {\n initDatabase(vaultDbPath(vaultDir));\n return closeDatabase;\n}\n\n/** Connect to the daemon, ensuring it's running. Exits on failure. */\nexport async function connectToDaemon(vaultDir: string): Promise<DaemonClient> {\n const client = new DaemonClient(vaultDir);\n const healthy = await client.ensureRunning();\n if (!healthy) {\n console.error('Failed to connect to daemon');\n process.exit(1);\n }\n return client;\n}\n\n/** Load .env from cwd (not script location — that's the plugin install dir). */\nexport function loadEnv(): void {\n const envPath = path.resolve(process.cwd(), '.env');\n if (!fs.existsSync(envPath)) return;\n for (const line of fs.readFileSync(envPath, 'utf-8').split('\\n')) {\n const match = line.match(/^\\s*([^#=]+?)\\s*=\\s*(.*?)\\s*$/);\n if (match && !process.env[match[1]]) {\n process.env[match[1]] = match[2];\n }\n }\n}\n\nexport function isProcessAlive(pid: number): boolean {\n try { process.kill(pid, 0); return true; } catch { return false; }\n}\n\n// --- Provider defaults (sourced from backend classes) ---\nexport const PROVIDER_DEFAULTS: Record<string, { base_url: string }> = {\n ollama: { base_url: OllamaBackend.DEFAULT_BASE_URL },\n 'lm-studio': { base_url: LmStudioBackend.DEFAULT_BASE_URL },\n};\n\n\nexport const VAULT_GITIGNORE = `# SQLite database\nmyco.db*\nvectors.db*\n\n# Daemon state — per-machine, ephemeral\ndaemon.json\nbuffer/\nlogs/\n\n# Secrets — API keys for cloud providers\nsecrets.env\n\n# Machine ID\nmachine_id\n\n# Update tracking — per-machine state\nlast-update-version\nrestart-reason.json\n\n# Binary attachments — screenshots captured from transcripts\nattachments/\n\n# Team worker deployment — patched wrangler.toml + source copy\n.team-worker/\n\n# Runtime command alias — per-contributor override for which myco binary\n# the hook guard invokes. Default (file absent) is \\`myco\\`; \\`make dev-link\\`\n# writes \\`myco-dev\\`; users can hand-edit for PATH conflicts or pinning.\n# Never committed — different contributors use different aliases.\nruntime.command\n`;\n\n/** Collapse an absolute home-dir path to its `~/` form for portable config storage. */\nexport function collapseHomePath(absPath: string): string {\n const home = os.homedir();\n if (absPath.startsWith(home + path.sep) || absPath === home) {\n return '~' + absPath.slice(home.length);\n }\n return absPath;\n}\n\n/**\n * Run the SymbiontInstaller for each symbiont manifest and log results.\n * Shared between myco init and myco update.\n */\nexport function registerSymbionts(\n manifests: SymbiontManifest[],\n projectRoot: string,\n packageRoot: string,\n verb: 'Registered' | 'Updated',\n): number {\n let count = 0;\n for (const manifest of manifests) {\n try {\n const installer = new SymbiontInstaller(manifest, projectRoot, packageRoot);\n const result = installer.install();\n\n const installed = [\n result.hooks && 'hooks',\n result.mcp && 'MCP server',\n result.skills && 'skills',\n result.settings && 'settings',\n result.instructions && 'instructions',\n result.pluginPackage && 'plugin deps',\n ].filter(Boolean);\n\n if (installed.length > 0) {\n console.log(` \\u2713 ${verb} ${manifest.displayName}: ${installed.join(', ')}`);\n count++;\n } else {\n console.log(` \\u2013 ${manifest.displayName}: no registration targets configured`);\n }\n } catch (err) {\n console.error(` \\u2717 Failed to register ${manifest.displayName}: ${(err as Error).message}`);\n }\n }\n return count;\n}\n\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA,OAAO,QAAQ;AACf,OAAO,UAAU;AACjB,OAAO,QAAQ;AAkBR,SAAS,YAAY,UAA8B;AACxD,eAAa,YAAY,QAAQ,CAAC;AAClC,SAAO;AACT;AAGA,eAAsB,gBAAgB,UAAyC;AAC7E,QAAM,SAAS,IAAI,aAAa,QAAQ;AACxC,QAAM,UAAU,MAAM,OAAO,cAAc;AAC3C,MAAI,CAAC,SAAS;AACZ,YAAQ,MAAM,6BAA6B;AAC3C,YAAQ,KAAK,CAAC;AAAA,EAChB;AACA,SAAO;AACT;AAGO,SAAS,UAAgB;AAC9B,QAAM,UAAU,KAAK,QAAQ,QAAQ,IAAI,GAAG,MAAM;AAClD,MAAI,CAAC,GAAG,WAAW,OAAO,EAAG;AAC7B,aAAW,QAAQ,GAAG,aAAa,SAAS,OAAO,EAAE,MAAM,IAAI,GAAG;AAChE,UAAM,QAAQ,KAAK,MAAM,+BAA+B;AACxD,QAAI,SAAS,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC,GAAG;AACnC,cAAQ,IAAI,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC;AAAA,IACjC;AAAA,EACF;AACF;AAEO,SAAS,eAAe,KAAsB;AACnD,MAAI;AAAE,YAAQ,KAAK,KAAK,CAAC;AAAG,WAAO;AAAA,EAAM,QAAQ;AAAE,WAAO;AAAA,EAAO;AACnE;AAGO,IAAM,oBAA0D;AAAA,EACrE,QAAQ,EAAE,UAAU,cAAc,iBAAiB;AAAA,EACnD,aAAa,EAAE,UAAU,gBAAgB,iBAAiB;AAC5D;AAGO,IAAM,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA6CxB,SAAS,kBACd,WACA,aACA,aACA,MACQ;AACR,MAAI,QAAQ;AACZ,aAAW,YAAY,WAAW;AAChC,QAAI;AACF,YAAM,YAAY,IAAI,kBAAkB,UAAU,aAAa,WAAW;AAC1E,YAAM,SAAS,UAAU,QAAQ;AAEjC,YAAM,YAAY;AAAA,QAChB,OAAO,SAAS;AAAA,QAChB,OAAO,OAAO;AAAA,QACd,OAAO,UAAU;AAAA,QACjB,OAAO,YAAY;AAAA,QACnB,OAAO,gBAAgB;AAAA,QACvB,OAAO,iBAAiB;AAAA,MAC1B,EAAE,OAAO,OAAO;AAEhB,UAAI,UAAU,SAAS,GAAG;AACxB,gBAAQ,IAAI,YAAY,IAAI,IAAI,SAAS,WAAW,KAAK,UAAU,KAAK,IAAI,CAAC,EAAE;AAC/E;AAAA,MACF,OAAO;AACL,gBAAQ,IAAI,YAAY,SAAS,WAAW,sCAAsC;AAAA,MACpF;AAAA,IACF,SAAS,KAAK;AACZ,cAAQ,MAAM,+BAA+B,SAAS,WAAW,KAAM,IAAc,OAAO,EAAE;AAAA,IAChG;AAAA,EACF;AACA,SAAO;AACT;","names":[]}
|