@rubytech/create-maxy-code 0.1.389 → 0.1.392
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/__tests__/claude-bin.test.js +51 -0
- package/dist/__tests__/claude-upgrade-privilege.test.js +17 -0
- package/dist/__tests__/launchd-plist.test.js +36 -1
- package/dist/__tests__/macos-darwin-branch.test.js +18 -0
- package/dist/__tests__/neo4j-datadir.test.js +14 -0
- package/dist/claude-bin.js +78 -0
- package/dist/claude-upgrade-privilege.js +21 -0
- package/dist/index.js +241 -34
- package/dist/launchd-plist.js +25 -9
- package/dist/neo4j-datadir.js +15 -0
- package/package.json +1 -1
- package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +4 -4
- package/payload/platform/scripts/smoke-boot-services.sh +35 -10
- package/payload/platform/services/claude-session-manager/dist/claude-host-creds.d.ts +11 -0
- package/payload/platform/services/claude-session-manager/dist/claude-host-creds.d.ts.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/claude-host-creds.js +37 -0
- package/payload/platform/services/claude-session-manager/dist/claude-host-creds.js.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/index.js +8 -8
- package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +7 -0
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/rc-daemon.d.ts +1 -1
- package/payload/platform/services/claude-session-manager/dist/rc-daemon.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/rc-daemon.js +5 -1
- package/payload/platform/services/claude-session-manager/dist/rc-daemon.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/systemd-scope.d.ts +28 -0
- package/payload/platform/services/claude-session-manager/dist/systemd-scope.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/systemd-scope.js +54 -0
- package/payload/platform/services/claude-session-manager/dist/systemd-scope.js.map +1 -1
- package/payload/server/public/assets/{AdminLoginScreens-CerrEc_m.js → AdminLoginScreens-CL27ZV86.js} +1 -1
- package/payload/server/public/assets/{AdminShell-cRTvNRbo.js → AdminShell-CBcSh9Yd.js} +1 -1
- package/payload/server/public/assets/{Checkbox-Dh2pLMFN.js → Checkbox-DRIcYN9r.js} +1 -1
- package/payload/server/public/assets/{Transcript-B_GVJujB.js → Transcript-CRc72hkG.js} +1 -1
- package/payload/server/public/assets/{admin-BXaYelnR.js → admin-iKYYnv3w.js} +1 -1
- package/payload/server/public/assets/{browser-fhjGE7fH.js → browser--8gzAe-E.js} +1 -1
- package/payload/server/public/assets/{calendar-PnZudAtc.js → calendar-7xAT81N_.js} +1 -1
- package/payload/server/public/assets/chat-B8Z9W42Z.js +1 -0
- package/payload/server/public/assets/chevron-left-DDselYau.js +1 -0
- package/payload/server/public/assets/data-Ece320dZ.js +1 -0
- package/payload/server/public/assets/{graph-CycO3tkW.js → graph-B3haz2DN.js} +1 -1
- package/payload/server/public/assets/{graph-labels-DlSsSpBV.js → graph-labels-Ba_fyw6I.js} +1 -1
- package/payload/server/public/assets/{operator-L4kBC-zS.js → operator-BYL1IFz9.js} +1 -1
- package/payload/server/public/assets/page-Bj6lB07z.js +32 -0
- package/payload/server/public/assets/{page-D5E-Ng4D.js → page-CLKVCquw.js} +1 -1
- package/payload/server/public/assets/{public-BmnajF3K.js → public-BKJUKC76.js} +1 -1
- package/payload/server/public/assets/{rotate-ccw-W5HhvAbo.js → rotate-ccw-BypBbSI4.js} +1 -1
- package/payload/server/public/assets/{useSubAccountSwitcher-D1TI1xvd.css → useSubAccountSwitcher-4qilMyPX.css} +1 -1
- package/payload/server/public/browser.html +4 -4
- package/payload/server/public/calendar.html +5 -5
- package/payload/server/public/chat.html +8 -8
- package/payload/server/public/data.html +7 -7
- package/payload/server/public/graph.html +8 -8
- package/payload/server/public/index.html +10 -10
- package/payload/server/public/operator.html +10 -10
- package/payload/server/public/public.html +8 -8
- package/payload/server/server.js +157 -12
- package/payload/server/public/assets/chat-Dy_zrjKS.js +0 -1
- package/payload/server/public/assets/chevron-left-IB6TmMZ_.js +0 -1
- package/payload/server/public/assets/data-B2IcjAj6.js +0 -1
- package/payload/server/public/assets/page-M8sD9LOi.js +0 -32
- /package/payload/server/public/assets/{useSubAccountSwitcher-UqZbmzYy.js → useSubAccountSwitcher-CsRv6MEd.js} +0 -0
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
6
|
<title>Browser — Maxy</title>
|
|
7
7
|
<link rel="icon" href="/favicon.ico">
|
|
8
|
-
<script type="module" crossorigin src="/assets/browser-
|
|
8
|
+
<script type="module" crossorigin src="/assets/browser--8gzAe-E.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/chunk-CAM3fms7.js">
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-
|
|
11
|
-
<link rel="modulepreload" crossorigin href="/assets/AdminShell-
|
|
12
|
-
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-CsRv6MEd.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminShell-CBcSh9Yd.js">
|
|
12
|
+
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-4qilMyPX.css">
|
|
13
13
|
<link rel="stylesheet" href="/brand-defaults.css">
|
|
14
14
|
</head>
|
|
15
15
|
<body>
|
|
@@ -5,12 +5,12 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
6
|
<title>Calendar — Maxy</title>
|
|
7
7
|
<link rel="icon" href="/favicon.ico">
|
|
8
|
-
<script type="module" crossorigin src="/assets/calendar-
|
|
8
|
+
<script type="module" crossorigin src="/assets/calendar-7xAT81N_.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/chunk-CAM3fms7.js">
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-
|
|
11
|
-
<link rel="modulepreload" crossorigin href="/assets/AdminShell-
|
|
12
|
-
<link rel="modulepreload" crossorigin href="/assets/chevron-left-
|
|
13
|
-
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-CsRv6MEd.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminShell-CBcSh9Yd.js">
|
|
12
|
+
<link rel="modulepreload" crossorigin href="/assets/chevron-left-DDselYau.js">
|
|
13
|
+
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-4qilMyPX.css">
|
|
14
14
|
<link rel="stylesheet" href="/brand-defaults.css">
|
|
15
15
|
</head>
|
|
16
16
|
<body>
|
|
@@ -5,17 +5,17 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
6
|
<title>Chat — Maxy</title>
|
|
7
7
|
<link rel="icon" href="/favicon.ico">
|
|
8
|
-
<script type="module" crossorigin src="/assets/chat-
|
|
8
|
+
<script type="module" crossorigin src="/assets/chat-B8Z9W42Z.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/chunk-CAM3fms7.js">
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-
|
|
11
|
-
<link rel="modulepreload" crossorigin href="/assets/AdminShell-
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-CsRv6MEd.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminShell-CBcSh9Yd.js">
|
|
12
12
|
<link rel="modulepreload" crossorigin href="/assets/admin-types-hioowVct.js">
|
|
13
13
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-C5gCWwwF.js">
|
|
14
|
-
<link rel="modulepreload" crossorigin href="/assets/Transcript-
|
|
15
|
-
<link rel="modulepreload" crossorigin href="/assets/chevron-left-
|
|
16
|
-
<link rel="modulepreload" crossorigin href="/assets/rotate-ccw-
|
|
17
|
-
<link rel="modulepreload" crossorigin href="/assets/page-
|
|
18
|
-
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/Transcript-CRc72hkG.js">
|
|
15
|
+
<link rel="modulepreload" crossorigin href="/assets/chevron-left-DDselYau.js">
|
|
16
|
+
<link rel="modulepreload" crossorigin href="/assets/rotate-ccw-BypBbSI4.js">
|
|
17
|
+
<link rel="modulepreload" crossorigin href="/assets/page-Bj6lB07z.js">
|
|
18
|
+
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-4qilMyPX.css">
|
|
19
19
|
<link rel="stylesheet" href="/brand-defaults.css">
|
|
20
20
|
</head>
|
|
21
21
|
<body>
|
|
@@ -5,15 +5,15 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
6
|
<title>Data — Maxy</title>
|
|
7
7
|
<link rel="icon" href="/favicon.ico">
|
|
8
|
-
<script type="module" crossorigin src="/assets/data-
|
|
8
|
+
<script type="module" crossorigin src="/assets/data-Ece320dZ.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/chunk-CAM3fms7.js">
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-
|
|
11
|
-
<link rel="modulepreload" crossorigin href="/assets/graph-labels-
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-CsRv6MEd.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/graph-labels-Ba_fyw6I.js">
|
|
12
12
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-C5gCWwwF.js">
|
|
13
|
-
<link rel="modulepreload" crossorigin href="/assets/Transcript-
|
|
14
|
-
<link rel="modulepreload" crossorigin href="/assets/chevron-left-
|
|
15
|
-
<link rel="modulepreload" crossorigin href="/assets/page-
|
|
16
|
-
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-
|
|
13
|
+
<link rel="modulepreload" crossorigin href="/assets/Transcript-CRc72hkG.js">
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/chevron-left-DDselYau.js">
|
|
15
|
+
<link rel="modulepreload" crossorigin href="/assets/page-CLKVCquw.js">
|
|
16
|
+
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-4qilMyPX.css">
|
|
17
17
|
<link rel="stylesheet" href="/brand-defaults.css">
|
|
18
18
|
</head>
|
|
19
19
|
<body>
|
|
@@ -5,15 +5,15 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
6
|
<title>Graph — Maxy</title>
|
|
7
7
|
<link rel="icon" href="/favicon.ico">
|
|
8
|
-
<script type="module" crossorigin src="/assets/graph-
|
|
8
|
+
<script type="module" crossorigin src="/assets/graph-B3haz2DN.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/chunk-CAM3fms7.js">
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-
|
|
11
|
-
<link rel="modulepreload" crossorigin href="/assets/graph-labels-
|
|
12
|
-
<link rel="modulepreload" crossorigin href="/assets/AdminShell-
|
|
13
|
-
<link rel="modulepreload" crossorigin href="/assets/Checkbox-
|
|
14
|
-
<link rel="modulepreload" crossorigin href="/assets/chevron-left-
|
|
15
|
-
<link rel="modulepreload" crossorigin href="/assets/rotate-ccw-
|
|
16
|
-
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-CsRv6MEd.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/graph-labels-Ba_fyw6I.js">
|
|
12
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminShell-CBcSh9Yd.js">
|
|
13
|
+
<link rel="modulepreload" crossorigin href="/assets/Checkbox-DRIcYN9r.js">
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/chevron-left-DDselYau.js">
|
|
15
|
+
<link rel="modulepreload" crossorigin href="/assets/rotate-ccw-BypBbSI4.js">
|
|
16
|
+
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-4qilMyPX.css">
|
|
17
17
|
<link rel="stylesheet" href="/brand-defaults.css">
|
|
18
18
|
</head>
|
|
19
19
|
<body>
|
|
@@ -5,19 +5,19 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
6
|
<title>Maxy</title>
|
|
7
7
|
<link rel="icon" href="/favicon.ico">
|
|
8
|
-
<script type="module" crossorigin src="/assets/admin-
|
|
8
|
+
<script type="module" crossorigin src="/assets/admin-iKYYnv3w.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/chunk-CAM3fms7.js">
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-
|
|
11
|
-
<link rel="modulepreload" crossorigin href="/assets/graph-labels-
|
|
12
|
-
<link rel="modulepreload" crossorigin href="/assets/AdminShell-
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-CsRv6MEd.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/graph-labels-Ba_fyw6I.js">
|
|
12
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminShell-CBcSh9Yd.js">
|
|
13
13
|
<link rel="modulepreload" crossorigin href="/assets/admin-types-hioowVct.js">
|
|
14
|
-
<link rel="modulepreload" crossorigin href="/assets/Checkbox-
|
|
15
|
-
<link rel="modulepreload" crossorigin href="/assets/AdminLoginScreens-
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/Checkbox-DRIcYN9r.js">
|
|
15
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminLoginScreens-CL27ZV86.js">
|
|
16
16
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-C5gCWwwF.js">
|
|
17
|
-
<link rel="modulepreload" crossorigin href="/assets/Transcript-
|
|
18
|
-
<link rel="modulepreload" crossorigin href="/assets/chevron-left-
|
|
19
|
-
<link rel="modulepreload" crossorigin href="/assets/page-
|
|
20
|
-
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-
|
|
17
|
+
<link rel="modulepreload" crossorigin href="/assets/Transcript-CRc72hkG.js">
|
|
18
|
+
<link rel="modulepreload" crossorigin href="/assets/chevron-left-DDselYau.js">
|
|
19
|
+
<link rel="modulepreload" crossorigin href="/assets/page-CLKVCquw.js">
|
|
20
|
+
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-4qilMyPX.css">
|
|
21
21
|
<link rel="stylesheet" crossorigin href="/assets/AdminLoginScreens-CWMpccrR.css">
|
|
22
22
|
<link rel="stylesheet" href="/brand-defaults.css">
|
|
23
23
|
</head>
|
|
@@ -5,19 +5,19 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
6
|
<title>Operator — Maxy</title>
|
|
7
7
|
<link rel="icon" href="/favicon.ico">
|
|
8
|
-
<script type="module" crossorigin src="/assets/operator-
|
|
8
|
+
<script type="module" crossorigin src="/assets/operator-BYL1IFz9.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/chunk-CAM3fms7.js">
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-
|
|
11
|
-
<link rel="modulepreload" crossorigin href="/assets/AdminShell-
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-CsRv6MEd.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminShell-CBcSh9Yd.js">
|
|
12
12
|
<link rel="modulepreload" crossorigin href="/assets/admin-types-hioowVct.js">
|
|
13
|
-
<link rel="modulepreload" crossorigin href="/assets/Checkbox-
|
|
14
|
-
<link rel="modulepreload" crossorigin href="/assets/AdminLoginScreens-
|
|
13
|
+
<link rel="modulepreload" crossorigin href="/assets/Checkbox-DRIcYN9r.js">
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminLoginScreens-CL27ZV86.js">
|
|
15
15
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-C5gCWwwF.js">
|
|
16
|
-
<link rel="modulepreload" crossorigin href="/assets/Transcript-
|
|
17
|
-
<link rel="modulepreload" crossorigin href="/assets/chevron-left-
|
|
18
|
-
<link rel="modulepreload" crossorigin href="/assets/rotate-ccw-
|
|
19
|
-
<link rel="modulepreload" crossorigin href="/assets/page-
|
|
20
|
-
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-
|
|
16
|
+
<link rel="modulepreload" crossorigin href="/assets/Transcript-CRc72hkG.js">
|
|
17
|
+
<link rel="modulepreload" crossorigin href="/assets/chevron-left-DDselYau.js">
|
|
18
|
+
<link rel="modulepreload" crossorigin href="/assets/rotate-ccw-BypBbSI4.js">
|
|
19
|
+
<link rel="modulepreload" crossorigin href="/assets/page-Bj6lB07z.js">
|
|
20
|
+
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-4qilMyPX.css">
|
|
21
21
|
<link rel="stylesheet" crossorigin href="/assets/AdminLoginScreens-CWMpccrR.css">
|
|
22
22
|
<link rel="stylesheet" href="/brand-defaults.css">
|
|
23
23
|
</head>
|
|
@@ -5,17 +5,17 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
6
|
<title>Maxy</title>
|
|
7
7
|
<link rel="icon" href="/favicon.ico">
|
|
8
|
-
<script type="module" crossorigin src="/assets/public-
|
|
8
|
+
<script type="module" crossorigin src="/assets/public-BKJUKC76.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/chunk-CAM3fms7.js">
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-
|
|
11
|
-
<link rel="modulepreload" crossorigin href="/assets/AdminShell-
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/useSubAccountSwitcher-CsRv6MEd.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/AdminShell-CBcSh9Yd.js">
|
|
12
12
|
<link rel="modulepreload" crossorigin href="/assets/admin-types-hioowVct.js">
|
|
13
13
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-C5gCWwwF.js">
|
|
14
|
-
<link rel="modulepreload" crossorigin href="/assets/Transcript-
|
|
15
|
-
<link rel="modulepreload" crossorigin href="/assets/chevron-left-
|
|
16
|
-
<link rel="modulepreload" crossorigin href="/assets/rotate-ccw-
|
|
17
|
-
<link rel="modulepreload" crossorigin href="/assets/page-
|
|
18
|
-
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/Transcript-CRc72hkG.js">
|
|
15
|
+
<link rel="modulepreload" crossorigin href="/assets/chevron-left-DDselYau.js">
|
|
16
|
+
<link rel="modulepreload" crossorigin href="/assets/rotate-ccw-BypBbSI4.js">
|
|
17
|
+
<link rel="modulepreload" crossorigin href="/assets/page-Bj6lB07z.js">
|
|
18
|
+
<link rel="stylesheet" crossorigin href="/assets/useSubAccountSwitcher-4qilMyPX.css">
|
|
19
19
|
<link rel="stylesheet" href="/brand-defaults.css">
|
|
20
20
|
</head>
|
|
21
21
|
<body class="public-surface">
|
package/payload/server/server.js
CHANGED
|
@@ -1623,8 +1623,9 @@ function startAuthHealthHeartbeat(intervalMs = 5 * 60 * 1e3) {
|
|
|
1623
1623
|
try {
|
|
1624
1624
|
const h = computeAuthHealth();
|
|
1625
1625
|
const expiresIn = h.expiresAt != null ? Math.round((h.expiresAt - Date.now()) / 1e3) : null;
|
|
1626
|
+
const store2 = process.platform === "darwin" ? "host-creds-file" : "file";
|
|
1626
1627
|
console.log(
|
|
1627
|
-
`[auth-health] brand=${BRAND_NAME} status=${h.status} expiresIn=${expiresIn != null ? expiresIn + "s" : "n/a"}`
|
|
1628
|
+
`[auth-health] brand=${BRAND_NAME} store=${store2} status=${h.status} expiresIn=${expiresIn != null ? expiresIn + "s" : "n/a"}`
|
|
1628
1629
|
);
|
|
1629
1630
|
if (h.status === "dead") {
|
|
1630
1631
|
console.log(`[auth-health] op=reauth-required status=dead`);
|
|
@@ -10443,10 +10444,111 @@ app8.get("/callback", async (c) => {
|
|
|
10443
10444
|
var quickbooks_default = app8;
|
|
10444
10445
|
|
|
10445
10446
|
// server/routes/onboarding.ts
|
|
10446
|
-
import { spawn, spawnSync as spawnSync2, execFileSync as
|
|
10447
|
-
import { openSync as openSync3, closeSync as closeSync3, writeFileSync as writeFileSync10, writeSync, existsSync as existsSync15, readFileSync as readFileSync24, unlinkSync as unlinkSync2 } from "fs";
|
|
10447
|
+
import { spawn, spawnSync as spawnSync2, execFileSync as execFileSync3 } from "child_process";
|
|
10448
|
+
import { openSync as openSync3, closeSync as closeSync3, writeFileSync as writeFileSync10, writeSync, existsSync as existsSync15, readFileSync as readFileSync24, unlinkSync as unlinkSync2, renameSync as renameSync6 } from "fs";
|
|
10448
10449
|
import { createHash as createHash3, randomUUID as randomUUID7 } from "crypto";
|
|
10449
10450
|
|
|
10451
|
+
// app/lib/claude-spawn-env.ts
|
|
10452
|
+
var HOST_AUTH_REFRESH_TIMEOUT_MS = "30000";
|
|
10453
|
+
function hostCredsEnv(platform, credsFile) {
|
|
10454
|
+
if (platform === "darwin" && credsFile) {
|
|
10455
|
+
return {
|
|
10456
|
+
CLAUDE_CODE_HOST_CREDS_FILE: credsFile,
|
|
10457
|
+
CLAUDE_CODE_HOST_AUTH_REFRESH_TIMEOUT_MS: HOST_AUTH_REFRESH_TIMEOUT_MS
|
|
10458
|
+
};
|
|
10459
|
+
}
|
|
10460
|
+
return {};
|
|
10461
|
+
}
|
|
10462
|
+
function claudeBin() {
|
|
10463
|
+
return process.env.CLAUDE_BIN ?? "claude";
|
|
10464
|
+
}
|
|
10465
|
+
|
|
10466
|
+
// app/lib/claude-keychain.ts
|
|
10467
|
+
import { execFileSync as execFileSync2 } from "child_process";
|
|
10468
|
+
var CREDS_SERVICE_PREFIX = "Claude Code-credentials";
|
|
10469
|
+
function parseKeychainMdats(dumpOutput) {
|
|
10470
|
+
const out = {};
|
|
10471
|
+
let pendingMdat = null;
|
|
10472
|
+
for (const line of dumpOutput.split("\n")) {
|
|
10473
|
+
const mdatMatch = line.match(/"mdat"<timedate>=0x[0-9A-Fa-f]*\s+"([0-9]{14}Z)\\000"/);
|
|
10474
|
+
if (mdatMatch) {
|
|
10475
|
+
pendingMdat = mdatMatch[1];
|
|
10476
|
+
continue;
|
|
10477
|
+
}
|
|
10478
|
+
const svceMatch = line.match(/"svce"<blob>="(.+)"$/);
|
|
10479
|
+
if (svceMatch) {
|
|
10480
|
+
const svce = svceMatch[1];
|
|
10481
|
+
if (svce.startsWith(CREDS_SERVICE_PREFIX) && pendingMdat) out[svce] = pendingMdat;
|
|
10482
|
+
pendingMdat = null;
|
|
10483
|
+
}
|
|
10484
|
+
}
|
|
10485
|
+
return out;
|
|
10486
|
+
}
|
|
10487
|
+
function selectWrittenItem(before, after) {
|
|
10488
|
+
const changed = Object.keys(after).filter(
|
|
10489
|
+
(svce) => before[svce] === void 0 || after[svce] > before[svce]
|
|
10490
|
+
);
|
|
10491
|
+
return changed.length === 1 ? changed[0] : null;
|
|
10492
|
+
}
|
|
10493
|
+
function bridgeKeychainToFile(deps) {
|
|
10494
|
+
if (deps.platform !== "darwin") {
|
|
10495
|
+
return { wrote: false, reason: "not-darwin", bytes: 0, service: null };
|
|
10496
|
+
}
|
|
10497
|
+
const after = deps.listMdats();
|
|
10498
|
+
const service = selectWrittenItem(deps.before, after);
|
|
10499
|
+
if (!service) {
|
|
10500
|
+
const changedCount = Object.keys(after).filter(
|
|
10501
|
+
(s) => deps.before[s] === void 0 || after[s] > deps.before[s]
|
|
10502
|
+
).length;
|
|
10503
|
+
const reason = changedCount > 1 ? "ambiguous" : "zero-changed";
|
|
10504
|
+
deps.log(`[onboarding] op=login-writeback result=${reason} changed=${changedCount}`);
|
|
10505
|
+
return { wrote: false, reason, bytes: 0, service: null };
|
|
10506
|
+
}
|
|
10507
|
+
const blob = deps.readBlob(service);
|
|
10508
|
+
if (blob === null) {
|
|
10509
|
+
deps.log(`[onboarding] op=login-writeback result=read-failed service=${JSON.stringify(service)}`);
|
|
10510
|
+
return { wrote: false, reason: "read-failed", bytes: 0, service };
|
|
10511
|
+
}
|
|
10512
|
+
let parsed;
|
|
10513
|
+
try {
|
|
10514
|
+
parsed = JSON.parse(blob);
|
|
10515
|
+
} catch {
|
|
10516
|
+
deps.log(`[onboarding] op=login-writeback result=unparseable service=${JSON.stringify(service)}`);
|
|
10517
|
+
return { wrote: false, reason: "unparseable", bytes: 0, service };
|
|
10518
|
+
}
|
|
10519
|
+
if (!parsed || typeof parsed.claudeAiOauth !== "object" || parsed.claudeAiOauth === null) {
|
|
10520
|
+
deps.log(`[onboarding] op=login-writeback result=no-claudeAiOauth service=${JSON.stringify(service)}`);
|
|
10521
|
+
return { wrote: false, reason: "no-claudeAiOauth", bytes: 0, service };
|
|
10522
|
+
}
|
|
10523
|
+
try {
|
|
10524
|
+
deps.writeFile(blob);
|
|
10525
|
+
} catch (err) {
|
|
10526
|
+
deps.log(`[onboarding] op=login-writeback result=write-failed service=${JSON.stringify(service)} err=${err instanceof Error ? err.message : String(err)}`);
|
|
10527
|
+
return { wrote: false, reason: "write-failed", bytes: 0, service };
|
|
10528
|
+
}
|
|
10529
|
+
deps.log(`[onboarding] op=login-writeback src=keychain dst=host-creds-file bytes=${blob.length}`);
|
|
10530
|
+
return { wrote: true, reason: "ok", bytes: blob.length, service };
|
|
10531
|
+
}
|
|
10532
|
+
function listHostCredsMdats() {
|
|
10533
|
+
try {
|
|
10534
|
+
const out = execFileSync2("security", ["dump-keychain"], { encoding: "utf-8", timeout: 1e4 });
|
|
10535
|
+
return parseKeychainMdats(out);
|
|
10536
|
+
} catch {
|
|
10537
|
+
return {};
|
|
10538
|
+
}
|
|
10539
|
+
}
|
|
10540
|
+
function readHostCredsBlob(service) {
|
|
10541
|
+
try {
|
|
10542
|
+
const blob = execFileSync2("security", ["find-generic-password", "-w", "-s", service], {
|
|
10543
|
+
encoding: "utf-8",
|
|
10544
|
+
timeout: 1e4
|
|
10545
|
+
}).trim();
|
|
10546
|
+
return blob.length > 0 ? blob : null;
|
|
10547
|
+
} catch {
|
|
10548
|
+
return null;
|
|
10549
|
+
}
|
|
10550
|
+
}
|
|
10551
|
+
|
|
10450
10552
|
// ../lib/admins-write/src/index.ts
|
|
10451
10553
|
import { existsSync as existsSync14, readFileSync as readFileSync23, writeFileSync as writeFileSync9, renameSync as renameSync5, mkdirSync as mkdirSync5, readdirSync as readdirSync13, statSync as statSync8, appendFileSync as appendFileSync2 } from "fs";
|
|
10452
10554
|
import { dirname as dirname7, join as join22 } from "path";
|
|
@@ -10632,6 +10734,8 @@ function readUsersFile2() {
|
|
|
10632
10734
|
if (!raw) return [];
|
|
10633
10735
|
return JSON.parse(raw);
|
|
10634
10736
|
}
|
|
10737
|
+
var darwinAuthChild = null;
|
|
10738
|
+
var darwinCredsBefore = {};
|
|
10635
10739
|
async function checkAuthStatus() {
|
|
10636
10740
|
let status;
|
|
10637
10741
|
try {
|
|
@@ -10677,7 +10781,11 @@ app9.post("/claude-auth", async (c) => {
|
|
|
10677
10781
|
const start = Date.now();
|
|
10678
10782
|
let logoutError = null;
|
|
10679
10783
|
try {
|
|
10680
|
-
|
|
10784
|
+
execFileSync3(claudeBin(), ["auth", "logout"], {
|
|
10785
|
+
env: { ...process.env, ...hostCredsEnv(process.platform, CLAUDE_CREDENTIALS_FILE) },
|
|
10786
|
+
encoding: "utf-8",
|
|
10787
|
+
timeout: 8e3
|
|
10788
|
+
});
|
|
10681
10789
|
} catch (err) {
|
|
10682
10790
|
logoutError = err instanceof Error ? err.message : String(err);
|
|
10683
10791
|
}
|
|
@@ -10690,6 +10798,22 @@ app9.post("/claude-auth", async (c) => {
|
|
|
10690
10798
|
const authenticated = await checkAuthStatus();
|
|
10691
10799
|
return c.json({ completed: authenticated, authenticated });
|
|
10692
10800
|
}
|
|
10801
|
+
if (body.action === "paste-code") {
|
|
10802
|
+
const code = typeof body.code === "string" ? body.code : "";
|
|
10803
|
+
const child = darwinAuthChild;
|
|
10804
|
+
if (!child || !child.stdin || child.stdin.destroyed) {
|
|
10805
|
+
console.log("[onboarding] op=claude-paste-code accepted=false reason=no-active-login");
|
|
10806
|
+
return c.json({ accepted: false, error: "No active login to paste into. Start sign-in first." }, 400);
|
|
10807
|
+
}
|
|
10808
|
+
try {
|
|
10809
|
+
child.stdin.write(code.trim() + "\n");
|
|
10810
|
+
} catch (err) {
|
|
10811
|
+
console.log(`[onboarding] op=claude-paste-code accepted=false reason=write-failed err=${err instanceof Error ? err.message : String(err)}`);
|
|
10812
|
+
return c.json({ accepted: false, error: "Sign-in already finished or closed. Try again." }, 409);
|
|
10813
|
+
}
|
|
10814
|
+
console.log(`[onboarding] op=claude-paste-code accepted=true bytes=${code.trim().length}`);
|
|
10815
|
+
return c.json({ accepted: true });
|
|
10816
|
+
}
|
|
10693
10817
|
if (body.action === "launch-browser") {
|
|
10694
10818
|
if (transport === "vnc") {
|
|
10695
10819
|
const vncReady = await ensureVnc();
|
|
@@ -10704,13 +10828,33 @@ app9.post("/claude-auth", async (c) => {
|
|
|
10704
10828
|
const onClaudeOutput = (chunk) => writeSync(claudeAuthLogFd, chunk);
|
|
10705
10829
|
if (process.platform === "darwin") {
|
|
10706
10830
|
vncLog("claude-auth", { action: "start", transport: "native", platform: "darwin" });
|
|
10707
|
-
|
|
10708
|
-
|
|
10831
|
+
darwinCredsBefore = listHostCredsMdats();
|
|
10832
|
+
const claudeProc2 = spawn(claudeBin(), ["auth", "login"], {
|
|
10833
|
+
env: { ...process.env, ...hostCredsEnv(process.platform, CLAUDE_CREDENTIALS_FILE) },
|
|
10834
|
+
stdio: ["pipe", "pipe", "pipe"]
|
|
10709
10835
|
});
|
|
10710
10836
|
claudeProc2.unref();
|
|
10837
|
+
darwinAuthChild = claudeProc2;
|
|
10838
|
+
claudeProc2.stdin?.on("error", () => {
|
|
10839
|
+
});
|
|
10711
10840
|
claudeProc2.stdout?.on("data", onClaudeOutput);
|
|
10712
10841
|
claudeProc2.stderr?.on("data", onClaudeOutput);
|
|
10713
|
-
claudeProc2.once("close", () =>
|
|
10842
|
+
claudeProc2.once("close", () => {
|
|
10843
|
+
closeSync3(claudeAuthLogFd);
|
|
10844
|
+
bridgeKeychainToFile({
|
|
10845
|
+
platform: process.platform,
|
|
10846
|
+
before: darwinCredsBefore,
|
|
10847
|
+
listMdats: listHostCredsMdats,
|
|
10848
|
+
readBlob: readHostCredsBlob,
|
|
10849
|
+
writeFile: (blob) => {
|
|
10850
|
+
const tmp = `${CLAUDE_CREDENTIALS_FILE}.${process.pid}.tmp`;
|
|
10851
|
+
writeFileSync10(tmp, blob, { mode: 384 });
|
|
10852
|
+
renameSync6(tmp, CLAUDE_CREDENTIALS_FILE);
|
|
10853
|
+
},
|
|
10854
|
+
log: (line) => console.log(line)
|
|
10855
|
+
});
|
|
10856
|
+
if (darwinAuthChild === claudeProc2) darwinAuthChild = null;
|
|
10857
|
+
});
|
|
10714
10858
|
return c.json({ started: true, transport: "native" });
|
|
10715
10859
|
}
|
|
10716
10860
|
if (transport === "vnc") {
|
|
@@ -10971,7 +11115,7 @@ ${body.newPin}
|
|
|
10971
11115
|
var onboarding_default = app9;
|
|
10972
11116
|
|
|
10973
11117
|
// server/routes/client-error.ts
|
|
10974
|
-
import { appendFileSync as appendFileSync3, existsSync as existsSync16, renameSync as
|
|
11118
|
+
import { appendFileSync as appendFileSync3, existsSync as existsSync16, renameSync as renameSync7, statSync as statSync9 } from "fs";
|
|
10975
11119
|
import { join as join23 } from "path";
|
|
10976
11120
|
var CLIENT_ERRORS_LOG = join23(LOG_DIR, "client-errors.log");
|
|
10977
11121
|
var MAX_LOG_SIZE = 10 * 1024 * 1024;
|
|
@@ -11024,7 +11168,7 @@ function rotateIfNeeded() {
|
|
|
11024
11168
|
if (!existsSync16(CLIENT_ERRORS_LOG)) return;
|
|
11025
11169
|
const stats = statSync9(CLIENT_ERRORS_LOG);
|
|
11026
11170
|
if (stats.size < MAX_LOG_SIZE) return;
|
|
11027
|
-
|
|
11171
|
+
renameSync7(CLIENT_ERRORS_LOG, CLIENT_ERRORS_LOG + ".1");
|
|
11028
11172
|
} catch (err) {
|
|
11029
11173
|
console.error(`[client-error] log rotation failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
11030
11174
|
}
|
|
@@ -11494,18 +11638,19 @@ app13.get("/", async (c) => {
|
|
|
11494
11638
|
var logs_default = app13;
|
|
11495
11639
|
|
|
11496
11640
|
// server/routes/admin/claude-info.ts
|
|
11497
|
-
import { execFileSync as
|
|
11641
|
+
import { execFileSync as execFileSync4 } from "child_process";
|
|
11498
11642
|
var app14 = new Hono();
|
|
11499
11643
|
app14.get("/", (c) => {
|
|
11644
|
+
const claudeEnv = { ...process.env, ...hostCredsEnv(process.platform, CLAUDE_CREDENTIALS_FILE) };
|
|
11500
11645
|
let version = "unknown";
|
|
11501
11646
|
try {
|
|
11502
|
-
const raw =
|
|
11647
|
+
const raw = execFileSync4(claudeBin(), ["--version"], { env: claudeEnv, encoding: "utf-8", timeout: 5e3 });
|
|
11503
11648
|
version = raw.trim().replace(" (Claude Code)", "");
|
|
11504
11649
|
} catch {
|
|
11505
11650
|
}
|
|
11506
11651
|
let account = {};
|
|
11507
11652
|
try {
|
|
11508
|
-
const raw =
|
|
11653
|
+
const raw = execFileSync4(claudeBin(), ["auth", "status"], { env: claudeEnv, encoding: "utf-8", timeout: 5e3 });
|
|
11509
11654
|
account = JSON.parse(raw);
|
|
11510
11655
|
} catch {
|
|
11511
11656
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{F as e,M as t}from"./useSubAccountSwitcher-UqZbmzYy.js";import"./admin-types-hioowVct.js";import"./AdminShell-cRTvNRbo.js";import{n}from"./page-M8sD9LOi.js";import"./Transcript-B_GVJujB.js";var r=e(),i=t();(0,r.createRoot)(document.getElementById(`root`)).render((0,i.jsx)(n,{}));
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{D as e}from"./useSubAccountSwitcher-UqZbmzYy.js";var t=e(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]);export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{F as e,M as t}from"./useSubAccountSwitcher-UqZbmzYy.js";import{t as n}from"./page-D5E-Ng4D.js";import"./Transcript-B_GVJujB.js";import"./graph-labels-DlSsSpBV.js";var r=e(),i=t();(0,r.createRoot)(document.getElementById(`root`)).render((0,i.jsx)(n,{}));
|