create-egregore 0.19.17 → 0.19.18
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/assets/egregore-launcher.js +16 -2
- package/package.json +1 -1
- package/runtime/codex/.codex/config.toml +2 -0
- package/runtime/codex/bin/codex-session-start.sh +2 -1
- package/runtime/codex/bin/lib/config.sh +15 -6
- package/runtime/pi/.codex/config.toml +2 -0
- package/runtime/pi/bin/codex-session-start.sh +2 -1
- package/runtime/pi/bin/lib/config.sh +15 -6
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// egregore-launcher-version: 0.19.
|
|
2
|
+
// egregore-launcher-version: 0.19.18
|
|
3
3
|
//
|
|
4
4
|
// egregore — launch and browse Egregore instances from your terminal.
|
|
5
5
|
// Installed by create-egregore. Reads ~/.egregore/instances.json.
|
|
@@ -33,7 +33,7 @@ const crypto = require("node:crypto");
|
|
|
33
33
|
const { spawnSync, spawn } = require("node:child_process");
|
|
34
34
|
const readline = require("node:readline");
|
|
35
35
|
|
|
36
|
-
const VERSION = "0.19.
|
|
36
|
+
const VERSION = "0.19.18";
|
|
37
37
|
const REGISTRY = path.join(os.homedir(), ".egregore", "instances.json");
|
|
38
38
|
const DEFAULT_FILE = path.join(os.homedir(), ".egregore", "default");
|
|
39
39
|
const UPDATE_CACHE_FILE = path.join(os.homedir(), ".egregore", "update-check.json");
|
|
@@ -1211,6 +1211,19 @@ function writeJsonFileAtomic(file, value) {
|
|
|
1211
1211
|
atomicWrite(file, JSON.stringify(value, null, 2) + "\n", 0o644);
|
|
1212
1212
|
}
|
|
1213
1213
|
|
|
1214
|
+
function normalizeClaudeRegistryDenyRule(instancePath) {
|
|
1215
|
+
const stale = "Write(~/.egregore/instances.json)";
|
|
1216
|
+
const supported = "Edit(~/.egregore/instances.json)";
|
|
1217
|
+
for (const relative of [".claude/settings.json", ".claude/settings.local.json"]) {
|
|
1218
|
+
const file = path.join(instancePath, relative);
|
|
1219
|
+
const settings = readJsonFile(file);
|
|
1220
|
+
const deny = settings?.permissions?.deny;
|
|
1221
|
+
if (!Array.isArray(deny) || !deny.includes(stale)) continue;
|
|
1222
|
+
settings.permissions.deny = [...new Set(deny.map((rule) => rule === stale ? supported : rule))];
|
|
1223
|
+
writeJsonFileAtomic(file, settings);
|
|
1224
|
+
}
|
|
1225
|
+
}
|
|
1226
|
+
|
|
1214
1227
|
function writeEnvValueAtomic(file, key, value) {
|
|
1215
1228
|
const lines = fs.existsSync(file)
|
|
1216
1229
|
? fs.readFileSync(file, "utf-8").split(/\r?\n/)
|
|
@@ -1439,6 +1452,7 @@ async function cmdConnect(args) {
|
|
|
1439
1452
|
api_url: claim.data.api_url,
|
|
1440
1453
|
});
|
|
1441
1454
|
writeEnvValueAtomic(envFile, "EGREGORE_API_KEY", claim.data.api_key);
|
|
1455
|
+
normalizeClaudeRegistryDenyRule(inst.path);
|
|
1442
1456
|
persistConnectState(inst, {
|
|
1443
1457
|
status: "backfilling",
|
|
1444
1458
|
activation_protocol: claim.data.activation_protocol,
|
package/package.json
CHANGED
|
@@ -57,6 +57,7 @@ fi
|
|
|
57
57
|
|
|
58
58
|
LOCAL_MODE="false"
|
|
59
59
|
[ "$(_detect_mode)" = "local" ] && LOCAL_MODE="true"
|
|
60
|
+
MODE_BADGE="$(_runtime_mode_badge)"
|
|
60
61
|
|
|
61
62
|
if [ "$LOCAL_MODE" != "true" ]; then
|
|
62
63
|
if [ -f "$ENV_FILE" ] && grep -q '^EGREGORE_API_KEY=.' "$ENV_FILE" 2>/dev/null; then
|
|
@@ -133,7 +134,7 @@ EOF
|
|
|
133
134
|
render_card() {
|
|
134
135
|
local separator identity_left identity_right line_width pad footer_left footer_right board_url has_failure failed_services
|
|
135
136
|
separator=" ..................................................................."
|
|
136
|
-
identity_left=" ${GITHUB_ORG:-$ORG_NAME}/${REPO_NAME}"
|
|
137
|
+
identity_left=" ${GITHUB_ORG:-$ORG_NAME}/${REPO_NAME} · ${MODE_BADGE}"
|
|
137
138
|
identity_right="${DISPLAY_NAME} · ${BRANCH:-?}"
|
|
138
139
|
line_width=67
|
|
139
140
|
pad=$((line_width - ${#identity_left} - ${#identity_right}))
|
|
@@ -59,13 +59,22 @@ _get_base_branch() {
|
|
|
59
59
|
# Detect local vs connected mode
|
|
60
60
|
_detect_mode() {
|
|
61
61
|
local config="${CONFIG:-$SCRIPT_DIR/egregore.json}"
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
62
|
+
if [ -f "$config" ] && jq -e \
|
|
63
|
+
'(.mode // "") != "local" and ((.api_url // "") | length > 0)' \
|
|
64
|
+
"$config" >/dev/null 2>&1; then
|
|
65
|
+
echo "connected"
|
|
66
|
+
else
|
|
67
67
|
echo "local"
|
|
68
|
+
fi
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
# Compact runtime identity shared by terminal surfaces. The sigils deliberately
|
|
72
|
+
# distinguish an active hosted connection from the self-contained local mode
|
|
73
|
+
# without implying that local Egregore is unhealthy.
|
|
74
|
+
_runtime_mode_badge() {
|
|
75
|
+
if [ "$(_detect_mode)" = "connected" ]; then
|
|
76
|
+
echo "◆ CONNECTED"
|
|
68
77
|
else
|
|
69
|
-
echo "
|
|
78
|
+
echo "◇ LOCAL"
|
|
70
79
|
fi
|
|
71
80
|
}
|
|
@@ -57,6 +57,7 @@ fi
|
|
|
57
57
|
|
|
58
58
|
LOCAL_MODE="false"
|
|
59
59
|
[ "$(_detect_mode)" = "local" ] && LOCAL_MODE="true"
|
|
60
|
+
MODE_BADGE="$(_runtime_mode_badge)"
|
|
60
61
|
|
|
61
62
|
if [ "$LOCAL_MODE" != "true" ]; then
|
|
62
63
|
if [ -f "$ENV_FILE" ] && grep -q '^EGREGORE_API_KEY=.' "$ENV_FILE" 2>/dev/null; then
|
|
@@ -133,7 +134,7 @@ EOF
|
|
|
133
134
|
render_card() {
|
|
134
135
|
local separator identity_left identity_right line_width pad footer_left footer_right board_url has_failure failed_services
|
|
135
136
|
separator=" ..................................................................."
|
|
136
|
-
identity_left=" ${GITHUB_ORG:-$ORG_NAME}/${REPO_NAME}"
|
|
137
|
+
identity_left=" ${GITHUB_ORG:-$ORG_NAME}/${REPO_NAME} · ${MODE_BADGE}"
|
|
137
138
|
identity_right="${DISPLAY_NAME} · ${BRANCH:-?}"
|
|
138
139
|
line_width=67
|
|
139
140
|
pad=$((line_width - ${#identity_left} - ${#identity_right}))
|
|
@@ -59,13 +59,22 @@ _get_base_branch() {
|
|
|
59
59
|
# Detect local vs connected mode
|
|
60
60
|
_detect_mode() {
|
|
61
61
|
local config="${CONFIG:-$SCRIPT_DIR/egregore.json}"
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
62
|
+
if [ -f "$config" ] && jq -e \
|
|
63
|
+
'(.mode // "") != "local" and ((.api_url // "") | length > 0)' \
|
|
64
|
+
"$config" >/dev/null 2>&1; then
|
|
65
|
+
echo "connected"
|
|
66
|
+
else
|
|
67
67
|
echo "local"
|
|
68
|
+
fi
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
# Compact runtime identity shared by terminal surfaces. The sigils deliberately
|
|
72
|
+
# distinguish an active hosted connection from the self-contained local mode
|
|
73
|
+
# without implying that local Egregore is unhealthy.
|
|
74
|
+
_runtime_mode_badge() {
|
|
75
|
+
if [ "$(_detect_mode)" = "connected" ]; then
|
|
76
|
+
echo "◆ CONNECTED"
|
|
68
77
|
else
|
|
69
|
-
echo "
|
|
78
|
+
echo "◇ LOCAL"
|
|
70
79
|
fi
|
|
71
80
|
}
|