@codyswann/lisa 2.226.1 → 2.226.2
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/package.json +1 -1
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa/scripts/remote-agent-aws-setup.sh +32 -3
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/scripts/remote-agent-aws-setup.sh +32 -3
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-agy/plugin.json +1 -1
- package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/scripts/remote-agent-aws-setup.sh +32 -3
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/scripts/remote-agent-aws-setup.sh +32 -3
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-agy/plugin.json +1 -1
- package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-agy/plugin.json +1 -1
- package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-agy/plugin.json +1 -1
- package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-agy/plugin.json +1 -1
- package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-agy/plugin.json +1 -1
- package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-agy/plugin.json +1 -1
- package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-agy/plugin.json +1 -1
- package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/src/base/scripts/remote-agent-aws-setup.sh +32 -3
package/package.json
CHANGED
|
@@ -102,7 +102,7 @@
|
|
|
102
102
|
"form-data": ">=4.0.6"
|
|
103
103
|
},
|
|
104
104
|
"name": "@codyswann/lisa",
|
|
105
|
-
"version": "2.226.
|
|
105
|
+
"version": "2.226.2",
|
|
106
106
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
107
107
|
"main": "dist/index.js",
|
|
108
108
|
"exports": {
|
|
@@ -114,6 +114,27 @@ AWS_CLI_PUBLIC_KEY
|
|
|
114
114
|
trap - EXIT
|
|
115
115
|
}
|
|
116
116
|
|
|
117
|
+
remove_profile_setting() {
|
|
118
|
+
local credentials_file profile setting temporary_file
|
|
119
|
+
credentials_file="$1"
|
|
120
|
+
profile="$2"
|
|
121
|
+
setting="$3"
|
|
122
|
+
[ -f "$credentials_file" ] || return 0
|
|
123
|
+
|
|
124
|
+
temporary_file="$(mktemp "${credentials_file}.XXXXXX")"
|
|
125
|
+
awk -v profile="$profile" -v setting="$setting" '
|
|
126
|
+
/^\[[^]]+\][[:space:]]*$/ {
|
|
127
|
+
section = $0
|
|
128
|
+
sub(/^\[/, "", section)
|
|
129
|
+
sub(/\][[:space:]]*$/, "", section)
|
|
130
|
+
in_profile = section == profile
|
|
131
|
+
}
|
|
132
|
+
!(in_profile && $0 ~ "^[[:space:]]*" setting "[[:space:]]*=") { print }
|
|
133
|
+
' "$credentials_file" >"$temporary_file"
|
|
134
|
+
chmod 600 "$temporary_file"
|
|
135
|
+
mv "$temporary_file" "$credentials_file"
|
|
136
|
+
}
|
|
137
|
+
|
|
117
138
|
sanitize_session_name() {
|
|
118
139
|
local candidate
|
|
119
140
|
candidate="$(printf '%s' "${LISA_REMOTE_AGENT:-remote-agent}" \
|
|
@@ -154,22 +175,30 @@ profiles_json="$(printf '%s' "$bootstrap_json" | jq -c '
|
|
|
154
175
|
end
|
|
155
176
|
')"
|
|
156
177
|
|
|
157
|
-
printf '%s' "$profiles_json" | jq -e '
|
|
178
|
+
printf '%s' "$profiles_json" | jq -e --arg bootstrap_profile "$BOOTSTRAP_PROFILE" '
|
|
158
179
|
type == "object" and length > 0 and
|
|
159
180
|
all(to_entries[];
|
|
181
|
+
(.key != $bootstrap_profile) and
|
|
160
182
|
(.key | test("^[A-Za-z0-9_-]+$")) and
|
|
161
183
|
(.value.roleArn | type == "string" and startswith("arn:aws:iam::")) and
|
|
162
184
|
(.value.region | type == "string" and length > 0)
|
|
163
185
|
)
|
|
164
186
|
' >/dev/null || fail "bootstrap profiles must map safe names to roleArn and region"
|
|
165
187
|
|
|
166
|
-
|
|
188
|
+
credentials_file="${AWS_SHARED_CREDENTIALS_FILE:-$HOME/.aws/credentials}"
|
|
189
|
+
config_file="${AWS_CONFIG_FILE:-$HOME/.aws/config}"
|
|
190
|
+
mkdir -p "$HOME/.aws" "$(dirname "$credentials_file")" "$(dirname "$config_file")"
|
|
167
191
|
chmod 700 "$HOME/.aws"
|
|
168
192
|
|
|
169
193
|
aws configure set aws_access_key_id "$access_key_id" --profile "$BOOTSTRAP_PROFILE"
|
|
170
194
|
aws configure set aws_secret_access_key "$secret_access_key" --profile "$BOOTSTRAP_PROFILE"
|
|
171
195
|
if [ -n "$session_token" ]; then
|
|
172
196
|
aws configure set aws_session_token "$session_token" --profile "$BOOTSTRAP_PROFILE"
|
|
197
|
+
else
|
|
198
|
+
remove_profile_setting \
|
|
199
|
+
"$credentials_file" \
|
|
200
|
+
"$BOOTSTRAP_PROFILE" \
|
|
201
|
+
"aws_session_token"
|
|
173
202
|
fi
|
|
174
203
|
|
|
175
204
|
session_name="$(sanitize_session_name)"
|
|
@@ -194,7 +223,7 @@ aws configure set external_id "$external_id" --profile default
|
|
|
194
223
|
aws configure set role_session_name "$session_name" --profile default
|
|
195
224
|
aws configure set region "$default_region" --profile default
|
|
196
225
|
|
|
197
|
-
chmod 600 "$
|
|
226
|
+
chmod 600 "$credentials_file" "$config_file"
|
|
198
227
|
|
|
199
228
|
if [ "${LISA_AWS_SKIP_VERIFY:-0}" != "1" ]; then
|
|
200
229
|
AWS_PAGER="" aws sts get-caller-identity --profile "$default_profile" >/dev/null
|
|
@@ -114,6 +114,27 @@ AWS_CLI_PUBLIC_KEY
|
|
|
114
114
|
trap - EXIT
|
|
115
115
|
}
|
|
116
116
|
|
|
117
|
+
remove_profile_setting() {
|
|
118
|
+
local credentials_file profile setting temporary_file
|
|
119
|
+
credentials_file="$1"
|
|
120
|
+
profile="$2"
|
|
121
|
+
setting="$3"
|
|
122
|
+
[ -f "$credentials_file" ] || return 0
|
|
123
|
+
|
|
124
|
+
temporary_file="$(mktemp "${credentials_file}.XXXXXX")"
|
|
125
|
+
awk -v profile="$profile" -v setting="$setting" '
|
|
126
|
+
/^\[[^]]+\][[:space:]]*$/ {
|
|
127
|
+
section = $0
|
|
128
|
+
sub(/^\[/, "", section)
|
|
129
|
+
sub(/\][[:space:]]*$/, "", section)
|
|
130
|
+
in_profile = section == profile
|
|
131
|
+
}
|
|
132
|
+
!(in_profile && $0 ~ "^[[:space:]]*" setting "[[:space:]]*=") { print }
|
|
133
|
+
' "$credentials_file" >"$temporary_file"
|
|
134
|
+
chmod 600 "$temporary_file"
|
|
135
|
+
mv "$temporary_file" "$credentials_file"
|
|
136
|
+
}
|
|
137
|
+
|
|
117
138
|
sanitize_session_name() {
|
|
118
139
|
local candidate
|
|
119
140
|
candidate="$(printf '%s' "${LISA_REMOTE_AGENT:-remote-agent}" \
|
|
@@ -154,22 +175,30 @@ profiles_json="$(printf '%s' "$bootstrap_json" | jq -c '
|
|
|
154
175
|
end
|
|
155
176
|
')"
|
|
156
177
|
|
|
157
|
-
printf '%s' "$profiles_json" | jq -e '
|
|
178
|
+
printf '%s' "$profiles_json" | jq -e --arg bootstrap_profile "$BOOTSTRAP_PROFILE" '
|
|
158
179
|
type == "object" and length > 0 and
|
|
159
180
|
all(to_entries[];
|
|
181
|
+
(.key != $bootstrap_profile) and
|
|
160
182
|
(.key | test("^[A-Za-z0-9_-]+$")) and
|
|
161
183
|
(.value.roleArn | type == "string" and startswith("arn:aws:iam::")) and
|
|
162
184
|
(.value.region | type == "string" and length > 0)
|
|
163
185
|
)
|
|
164
186
|
' >/dev/null || fail "bootstrap profiles must map safe names to roleArn and region"
|
|
165
187
|
|
|
166
|
-
|
|
188
|
+
credentials_file="${AWS_SHARED_CREDENTIALS_FILE:-$HOME/.aws/credentials}"
|
|
189
|
+
config_file="${AWS_CONFIG_FILE:-$HOME/.aws/config}"
|
|
190
|
+
mkdir -p "$HOME/.aws" "$(dirname "$credentials_file")" "$(dirname "$config_file")"
|
|
167
191
|
chmod 700 "$HOME/.aws"
|
|
168
192
|
|
|
169
193
|
aws configure set aws_access_key_id "$access_key_id" --profile "$BOOTSTRAP_PROFILE"
|
|
170
194
|
aws configure set aws_secret_access_key "$secret_access_key" --profile "$BOOTSTRAP_PROFILE"
|
|
171
195
|
if [ -n "$session_token" ]; then
|
|
172
196
|
aws configure set aws_session_token "$session_token" --profile "$BOOTSTRAP_PROFILE"
|
|
197
|
+
else
|
|
198
|
+
remove_profile_setting \
|
|
199
|
+
"$credentials_file" \
|
|
200
|
+
"$BOOTSTRAP_PROFILE" \
|
|
201
|
+
"aws_session_token"
|
|
173
202
|
fi
|
|
174
203
|
|
|
175
204
|
session_name="$(sanitize_session_name)"
|
|
@@ -194,7 +223,7 @@ aws configure set external_id "$external_id" --profile default
|
|
|
194
223
|
aws configure set role_session_name "$session_name" --profile default
|
|
195
224
|
aws configure set region "$default_region" --profile default
|
|
196
225
|
|
|
197
|
-
chmod 600 "$
|
|
226
|
+
chmod 600 "$credentials_file" "$config_file"
|
|
198
227
|
|
|
199
228
|
if [ "${LISA_AWS_SKIP_VERIFY:-0}" != "1" ]; then
|
|
200
229
|
AWS_PAGER="" aws sts get-caller-identity --profile "$default_profile" >/dev/null
|
|
@@ -114,6 +114,27 @@ AWS_CLI_PUBLIC_KEY
|
|
|
114
114
|
trap - EXIT
|
|
115
115
|
}
|
|
116
116
|
|
|
117
|
+
remove_profile_setting() {
|
|
118
|
+
local credentials_file profile setting temporary_file
|
|
119
|
+
credentials_file="$1"
|
|
120
|
+
profile="$2"
|
|
121
|
+
setting="$3"
|
|
122
|
+
[ -f "$credentials_file" ] || return 0
|
|
123
|
+
|
|
124
|
+
temporary_file="$(mktemp "${credentials_file}.XXXXXX")"
|
|
125
|
+
awk -v profile="$profile" -v setting="$setting" '
|
|
126
|
+
/^\[[^]]+\][[:space:]]*$/ {
|
|
127
|
+
section = $0
|
|
128
|
+
sub(/^\[/, "", section)
|
|
129
|
+
sub(/\][[:space:]]*$/, "", section)
|
|
130
|
+
in_profile = section == profile
|
|
131
|
+
}
|
|
132
|
+
!(in_profile && $0 ~ "^[[:space:]]*" setting "[[:space:]]*=") { print }
|
|
133
|
+
' "$credentials_file" >"$temporary_file"
|
|
134
|
+
chmod 600 "$temporary_file"
|
|
135
|
+
mv "$temporary_file" "$credentials_file"
|
|
136
|
+
}
|
|
137
|
+
|
|
117
138
|
sanitize_session_name() {
|
|
118
139
|
local candidate
|
|
119
140
|
candidate="$(printf '%s' "${LISA_REMOTE_AGENT:-remote-agent}" \
|
|
@@ -154,22 +175,30 @@ profiles_json="$(printf '%s' "$bootstrap_json" | jq -c '
|
|
|
154
175
|
end
|
|
155
176
|
')"
|
|
156
177
|
|
|
157
|
-
printf '%s' "$profiles_json" | jq -e '
|
|
178
|
+
printf '%s' "$profiles_json" | jq -e --arg bootstrap_profile "$BOOTSTRAP_PROFILE" '
|
|
158
179
|
type == "object" and length > 0 and
|
|
159
180
|
all(to_entries[];
|
|
181
|
+
(.key != $bootstrap_profile) and
|
|
160
182
|
(.key | test("^[A-Za-z0-9_-]+$")) and
|
|
161
183
|
(.value.roleArn | type == "string" and startswith("arn:aws:iam::")) and
|
|
162
184
|
(.value.region | type == "string" and length > 0)
|
|
163
185
|
)
|
|
164
186
|
' >/dev/null || fail "bootstrap profiles must map safe names to roleArn and region"
|
|
165
187
|
|
|
166
|
-
|
|
188
|
+
credentials_file="${AWS_SHARED_CREDENTIALS_FILE:-$HOME/.aws/credentials}"
|
|
189
|
+
config_file="${AWS_CONFIG_FILE:-$HOME/.aws/config}"
|
|
190
|
+
mkdir -p "$HOME/.aws" "$(dirname "$credentials_file")" "$(dirname "$config_file")"
|
|
167
191
|
chmod 700 "$HOME/.aws"
|
|
168
192
|
|
|
169
193
|
aws configure set aws_access_key_id "$access_key_id" --profile "$BOOTSTRAP_PROFILE"
|
|
170
194
|
aws configure set aws_secret_access_key "$secret_access_key" --profile "$BOOTSTRAP_PROFILE"
|
|
171
195
|
if [ -n "$session_token" ]; then
|
|
172
196
|
aws configure set aws_session_token "$session_token" --profile "$BOOTSTRAP_PROFILE"
|
|
197
|
+
else
|
|
198
|
+
remove_profile_setting \
|
|
199
|
+
"$credentials_file" \
|
|
200
|
+
"$BOOTSTRAP_PROFILE" \
|
|
201
|
+
"aws_session_token"
|
|
173
202
|
fi
|
|
174
203
|
|
|
175
204
|
session_name="$(sanitize_session_name)"
|
|
@@ -194,7 +223,7 @@ aws configure set external_id "$external_id" --profile default
|
|
|
194
223
|
aws configure set role_session_name "$session_name" --profile default
|
|
195
224
|
aws configure set region "$default_region" --profile default
|
|
196
225
|
|
|
197
|
-
chmod 600 "$
|
|
226
|
+
chmod 600 "$credentials_file" "$config_file"
|
|
198
227
|
|
|
199
228
|
if [ "${LISA_AWS_SKIP_VERIFY:-0}" != "1" ]; then
|
|
200
229
|
AWS_PAGER="" aws sts get-caller-identity --profile "$default_profile" >/dev/null
|
|
@@ -114,6 +114,27 @@ AWS_CLI_PUBLIC_KEY
|
|
|
114
114
|
trap - EXIT
|
|
115
115
|
}
|
|
116
116
|
|
|
117
|
+
remove_profile_setting() {
|
|
118
|
+
local credentials_file profile setting temporary_file
|
|
119
|
+
credentials_file="$1"
|
|
120
|
+
profile="$2"
|
|
121
|
+
setting="$3"
|
|
122
|
+
[ -f "$credentials_file" ] || return 0
|
|
123
|
+
|
|
124
|
+
temporary_file="$(mktemp "${credentials_file}.XXXXXX")"
|
|
125
|
+
awk -v profile="$profile" -v setting="$setting" '
|
|
126
|
+
/^\[[^]]+\][[:space:]]*$/ {
|
|
127
|
+
section = $0
|
|
128
|
+
sub(/^\[/, "", section)
|
|
129
|
+
sub(/\][[:space:]]*$/, "", section)
|
|
130
|
+
in_profile = section == profile
|
|
131
|
+
}
|
|
132
|
+
!(in_profile && $0 ~ "^[[:space:]]*" setting "[[:space:]]*=") { print }
|
|
133
|
+
' "$credentials_file" >"$temporary_file"
|
|
134
|
+
chmod 600 "$temporary_file"
|
|
135
|
+
mv "$temporary_file" "$credentials_file"
|
|
136
|
+
}
|
|
137
|
+
|
|
117
138
|
sanitize_session_name() {
|
|
118
139
|
local candidate
|
|
119
140
|
candidate="$(printf '%s' "${LISA_REMOTE_AGENT:-remote-agent}" \
|
|
@@ -154,22 +175,30 @@ profiles_json="$(printf '%s' "$bootstrap_json" | jq -c '
|
|
|
154
175
|
end
|
|
155
176
|
')"
|
|
156
177
|
|
|
157
|
-
printf '%s' "$profiles_json" | jq -e '
|
|
178
|
+
printf '%s' "$profiles_json" | jq -e --arg bootstrap_profile "$BOOTSTRAP_PROFILE" '
|
|
158
179
|
type == "object" and length > 0 and
|
|
159
180
|
all(to_entries[];
|
|
181
|
+
(.key != $bootstrap_profile) and
|
|
160
182
|
(.key | test("^[A-Za-z0-9_-]+$")) and
|
|
161
183
|
(.value.roleArn | type == "string" and startswith("arn:aws:iam::")) and
|
|
162
184
|
(.value.region | type == "string" and length > 0)
|
|
163
185
|
)
|
|
164
186
|
' >/dev/null || fail "bootstrap profiles must map safe names to roleArn and region"
|
|
165
187
|
|
|
166
|
-
|
|
188
|
+
credentials_file="${AWS_SHARED_CREDENTIALS_FILE:-$HOME/.aws/credentials}"
|
|
189
|
+
config_file="${AWS_CONFIG_FILE:-$HOME/.aws/config}"
|
|
190
|
+
mkdir -p "$HOME/.aws" "$(dirname "$credentials_file")" "$(dirname "$config_file")"
|
|
167
191
|
chmod 700 "$HOME/.aws"
|
|
168
192
|
|
|
169
193
|
aws configure set aws_access_key_id "$access_key_id" --profile "$BOOTSTRAP_PROFILE"
|
|
170
194
|
aws configure set aws_secret_access_key "$secret_access_key" --profile "$BOOTSTRAP_PROFILE"
|
|
171
195
|
if [ -n "$session_token" ]; then
|
|
172
196
|
aws configure set aws_session_token "$session_token" --profile "$BOOTSTRAP_PROFILE"
|
|
197
|
+
else
|
|
198
|
+
remove_profile_setting \
|
|
199
|
+
"$credentials_file" \
|
|
200
|
+
"$BOOTSTRAP_PROFILE" \
|
|
201
|
+
"aws_session_token"
|
|
173
202
|
fi
|
|
174
203
|
|
|
175
204
|
session_name="$(sanitize_session_name)"
|
|
@@ -194,7 +223,7 @@ aws configure set external_id "$external_id" --profile default
|
|
|
194
223
|
aws configure set role_session_name "$session_name" --profile default
|
|
195
224
|
aws configure set region "$default_region" --profile default
|
|
196
225
|
|
|
197
|
-
chmod 600 "$
|
|
226
|
+
chmod 600 "$credentials_file" "$config_file"
|
|
198
227
|
|
|
199
228
|
if [ "${LISA_AWS_SKIP_VERIFY:-0}" != "1" ]; then
|
|
200
229
|
AWS_PAGER="" aws sts get-caller-identity --profile "$default_profile" >/dev/null
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.226.
|
|
3
|
+
"version": "2.226.2",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.226.
|
|
3
|
+
"version": "2.226.2",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, across Claude and Codex.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.226.
|
|
3
|
+
"version": "2.226.2",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.226.
|
|
3
|
+
"version": "2.226.2",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.226.
|
|
3
|
+
"version": "2.226.2",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -114,6 +114,27 @@ AWS_CLI_PUBLIC_KEY
|
|
|
114
114
|
trap - EXIT
|
|
115
115
|
}
|
|
116
116
|
|
|
117
|
+
remove_profile_setting() {
|
|
118
|
+
local credentials_file profile setting temporary_file
|
|
119
|
+
credentials_file="$1"
|
|
120
|
+
profile="$2"
|
|
121
|
+
setting="$3"
|
|
122
|
+
[ -f "$credentials_file" ] || return 0
|
|
123
|
+
|
|
124
|
+
temporary_file="$(mktemp "${credentials_file}.XXXXXX")"
|
|
125
|
+
awk -v profile="$profile" -v setting="$setting" '
|
|
126
|
+
/^\[[^]]+\][[:space:]]*$/ {
|
|
127
|
+
section = $0
|
|
128
|
+
sub(/^\[/, "", section)
|
|
129
|
+
sub(/\][[:space:]]*$/, "", section)
|
|
130
|
+
in_profile = section == profile
|
|
131
|
+
}
|
|
132
|
+
!(in_profile && $0 ~ "^[[:space:]]*" setting "[[:space:]]*=") { print }
|
|
133
|
+
' "$credentials_file" >"$temporary_file"
|
|
134
|
+
chmod 600 "$temporary_file"
|
|
135
|
+
mv "$temporary_file" "$credentials_file"
|
|
136
|
+
}
|
|
137
|
+
|
|
117
138
|
sanitize_session_name() {
|
|
118
139
|
local candidate
|
|
119
140
|
candidate="$(printf '%s' "${LISA_REMOTE_AGENT:-remote-agent}" \
|
|
@@ -154,22 +175,30 @@ profiles_json="$(printf '%s' "$bootstrap_json" | jq -c '
|
|
|
154
175
|
end
|
|
155
176
|
')"
|
|
156
177
|
|
|
157
|
-
printf '%s' "$profiles_json" | jq -e '
|
|
178
|
+
printf '%s' "$profiles_json" | jq -e --arg bootstrap_profile "$BOOTSTRAP_PROFILE" '
|
|
158
179
|
type == "object" and length > 0 and
|
|
159
180
|
all(to_entries[];
|
|
181
|
+
(.key != $bootstrap_profile) and
|
|
160
182
|
(.key | test("^[A-Za-z0-9_-]+$")) and
|
|
161
183
|
(.value.roleArn | type == "string" and startswith("arn:aws:iam::")) and
|
|
162
184
|
(.value.region | type == "string" and length > 0)
|
|
163
185
|
)
|
|
164
186
|
' >/dev/null || fail "bootstrap profiles must map safe names to roleArn and region"
|
|
165
187
|
|
|
166
|
-
|
|
188
|
+
credentials_file="${AWS_SHARED_CREDENTIALS_FILE:-$HOME/.aws/credentials}"
|
|
189
|
+
config_file="${AWS_CONFIG_FILE:-$HOME/.aws/config}"
|
|
190
|
+
mkdir -p "$HOME/.aws" "$(dirname "$credentials_file")" "$(dirname "$config_file")"
|
|
167
191
|
chmod 700 "$HOME/.aws"
|
|
168
192
|
|
|
169
193
|
aws configure set aws_access_key_id "$access_key_id" --profile "$BOOTSTRAP_PROFILE"
|
|
170
194
|
aws configure set aws_secret_access_key "$secret_access_key" --profile "$BOOTSTRAP_PROFILE"
|
|
171
195
|
if [ -n "$session_token" ]; then
|
|
172
196
|
aws configure set aws_session_token "$session_token" --profile "$BOOTSTRAP_PROFILE"
|
|
197
|
+
else
|
|
198
|
+
remove_profile_setting \
|
|
199
|
+
"$credentials_file" \
|
|
200
|
+
"$BOOTSTRAP_PROFILE" \
|
|
201
|
+
"aws_session_token"
|
|
173
202
|
fi
|
|
174
203
|
|
|
175
204
|
session_name="$(sanitize_session_name)"
|
|
@@ -194,7 +223,7 @@ aws configure set external_id "$external_id" --profile default
|
|
|
194
223
|
aws configure set role_session_name "$session_name" --profile default
|
|
195
224
|
aws configure set region "$default_region" --profile default
|
|
196
225
|
|
|
197
|
-
chmod 600 "$
|
|
226
|
+
chmod 600 "$credentials_file" "$config_file"
|
|
198
227
|
|
|
199
228
|
if [ "${LISA_AWS_SKIP_VERIFY:-0}" != "1" ]; then
|
|
200
229
|
AWS_PAGER="" aws sts get-caller-identity --profile "$default_profile" >/dev/null
|