@codyswann/lisa 2.225.5 → 2.226.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.
Files changed (90) hide show
  1. package/README.md +7 -0
  2. package/all/create-only/scripts/remote-agent-aws-setup.sh +11 -0
  3. package/package.json +1 -1
  4. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  5. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  6. package/plugins/lisa/.codex-plugin/skills/lisa-analyze-claude-remote/SKILL.md +21 -18
  7. package/plugins/lisa/.codex-plugin/skills/lisa-generate-claude-remote-build-script/SKILL.md +15 -27
  8. package/plugins/lisa/.codex-plugin/skills/lisa-setup-remote-aws/SKILL.md +53 -0
  9. package/plugins/lisa/.codex-plugin/skills/lisa-setup-remote-aws/agents/openai.yaml +4 -0
  10. package/plugins/lisa/commands/setup-remote-aws.md +6 -0
  11. package/plugins/lisa/scripts/install-remote-agent-aws.mjs +347 -0
  12. package/plugins/lisa/scripts/remote-agent-aws-setup.sh +204 -0
  13. package/plugins/lisa/skills/lisa-analyze-claude-remote/SKILL.md +21 -18
  14. package/plugins/lisa/skills/lisa-generate-claude-remote-build-script/SKILL.md +15 -27
  15. package/plugins/lisa/skills/lisa-setup-remote-aws/SKILL.md +53 -0
  16. package/plugins/lisa/skills/lisa-setup-remote-aws/agents/openai.yaml +4 -0
  17. package/plugins/lisa-agy/commands/lisa/setup-remote-aws.md +6 -0
  18. package/plugins/lisa-agy/plugin.json +1 -1
  19. package/plugins/lisa-agy/scripts/install-remote-agent-aws.mjs +347 -0
  20. package/plugins/lisa-agy/scripts/remote-agent-aws-setup.sh +204 -0
  21. package/plugins/lisa-agy/skills/lisa-analyze-claude-remote/SKILL.md +21 -18
  22. package/plugins/lisa-agy/skills/lisa-generate-claude-remote-build-script/SKILL.md +15 -27
  23. package/plugins/lisa-agy/skills/lisa-setup-remote-aws/SKILL.md +53 -0
  24. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  25. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  26. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  27. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  28. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  29. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  30. package/plugins/lisa-copilot/commands/lisa/setup-remote-aws.md +6 -0
  31. package/plugins/lisa-copilot/scripts/install-remote-agent-aws.mjs +347 -0
  32. package/plugins/lisa-copilot/scripts/remote-agent-aws-setup.sh +204 -0
  33. package/plugins/lisa-copilot/skills/lisa-analyze-claude-remote/SKILL.md +21 -18
  34. package/plugins/lisa-copilot/skills/lisa-generate-claude-remote-build-script/SKILL.md +15 -27
  35. package/plugins/lisa-copilot/skills/lisa-setup-remote-aws/SKILL.md +53 -0
  36. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  37. package/plugins/lisa-cursor/commands/lisa/setup-remote-aws.md +6 -0
  38. package/plugins/lisa-cursor/scripts/install-remote-agent-aws.mjs +347 -0
  39. package/plugins/lisa-cursor/scripts/remote-agent-aws-setup.sh +204 -0
  40. package/plugins/lisa-cursor/skills/lisa-analyze-claude-remote/SKILL.md +21 -18
  41. package/plugins/lisa-cursor/skills/lisa-generate-claude-remote-build-script/SKILL.md +15 -27
  42. package/plugins/lisa-cursor/skills/lisa-setup-remote-aws/SKILL.md +53 -0
  43. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  44. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  45. package/plugins/lisa-expo-agy/plugin.json +1 -1
  46. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  47. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  48. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  49. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  50. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  51. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  52. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  53. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  54. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  55. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  56. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  57. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  58. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  59. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  60. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  61. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  62. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  63. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  64. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  65. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  66. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  67. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  68. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  69. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  70. package/plugins/lisa-rails-agy/plugin.json +1 -1
  71. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  72. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  73. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  74. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  75. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  76. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  77. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  78. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  79. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  80. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  81. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  82. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  83. package/plugins/src/base/commands/setup-remote-aws.md +6 -0
  84. package/plugins/src/base/scripts/install-remote-agent-aws.mjs +347 -0
  85. package/plugins/src/base/scripts/remote-agent-aws-setup.sh +204 -0
  86. package/plugins/src/base/skills/lisa-analyze-claude-remote/SKILL.md +21 -18
  87. package/plugins/src/base/skills/lisa-generate-claude-remote-build-script/SKILL.md +15 -27
  88. package/plugins/src/base/skills/lisa-setup-remote-aws/SKILL.md +53 -0
  89. package/scripts/claude-remote-setup.sh +9 -2
  90. package/scripts/remote-agent-aws-setup.sh +17 -0
@@ -71,9 +71,9 @@ tracker/source, plus the host project's own package manager and tooling — not
71
71
  include `JAM_PAT`, `SONAR_TOKEN`, or similar documented substrate env vars
72
72
  only as optional secrets, with their acquire/scope comments when the analysis
73
73
  supplied them. Never invent values or promote dormant substrates to required.
74
- When AWS entries are present, list `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, optional
75
- `AWS_SESSION_TOKEN`, and `AWS_DEFAULT_REGION` exactly as the analysis reported. State that these
76
- bootstrap credentials are for STS assume-role only; do not emit or recommend `aws sso login`.
74
+ When AWS entries are present, list only `LISA_AWS_BOOTSTRAP_JSON` as the
75
+ required secret and `LISA_REMOTE_AGENT=claude` as plain configuration. Never
76
+ emit standard `AWS_ACCESS_KEY_ID` variables and never recommend `aws sso login`.
77
77
 
78
78
  3a. **Emit substrate setup snippets.** When the inventory marks an MCP
79
79
  `headlessUsable: true` through a documented substrate, render the matching
@@ -91,18 +91,11 @@ tracker/source, plus the host project's own package manager and tooling — not
91
91
  transport supports static-token auth. Do not print a Jam `.mcp.json` header snippet because
92
92
  Jam's preferred headless substrate is its PAT-authenticated CLI.
93
93
 
94
- 3b. **Emit AWS assume-role profile setup.** When the inventory includes `awsProfiles`, write an
95
- idempotent `~/.aws/config` block gated on `[ -n "${AWS_ACCESS_KEY_ID:-}" ]`. The generated block
96
- must:
97
- - `mkdir -p "$HOME/.aws"` and create or append profile stanzas without writing secrets.
98
- - Emit one `[profile <name>]` stanza per inventory profile with `role_arn`,
99
- `credential_source = Environment`, `region` when present, and `external_id` when present.
100
- - Keep regions and ExternalIds as non-secret project metadata from the inventory; never invent
101
- account IDs, role names, profile names, regions, or ExternalIds.
102
- - Warn and skip profile writing when AWS profile metadata is absent, while still listing the
103
- required `AWS_*` env var names in the secret template.
104
- - Include a comment that agents should use `aws --profile <name> ...` and must not run
105
- `aws sso login` in headless routines.
94
+ 3b. **Install the shared AWS bootstrap.** When AWS is present, invoke
95
+ `/lisa:setup-remote-aws --platform=claude`. Reuse the resulting
96
+ `scripts/remote-agent-aws-setup.sh`; do not generate a second credential or
97
+ profile implementation. Add `bash scripts/remote-agent-aws-setup.sh` to the
98
+ generated cloud setup after required package installation.
106
99
 
107
100
  4. **Emit the allowlist + gaps notice.** List any custom domains the setup or runtime reaches
108
101
  (from `networkAccess.allowlistDomains`, falling back to legacy `allowlistDomains`) that the user
@@ -139,9 +132,9 @@ shape, not a fixed payload):
139
132
  # # Note: GH_TOKEN is for gh CLI only. Raw git uses Claude's connected-GitHub proxy/identity;
140
133
  # # sibling repos reached only by raw git do not need to be in this token scope.
141
134
  # - GH_TOKEN=<token> # REQUIRED, github is the active tracker+source
142
- # - AWS_ACCESS_KEY_ID=<access-key-id> # REQUIRED when AWS inventory is active
143
- # - AWS_SECRET_ACCESS_KEY=<secret-access-key> # REQUIRED when AWS inventory is active
144
- # - AWS_SESSION_TOKEN=<session-token> # OPTIONAL for temporary bootstrap creds
135
+ # - LISA_AWS_BOOTSTRAP_JSON=<complete SecretString> # REQUIRED for AWS
136
+ # PLAIN:
137
+ # - LISA_REMOTE_AGENT=claude
145
138
  # NETWORK: set the environment to Custom and allowlist these non-default domains if not on Full:
146
139
  # - <networkAccess.allowlistDomains, if any>
147
140
  set -uo pipefail
@@ -184,13 +177,8 @@ need gh || (sudo apt-get update -y && sudo apt-get install -y gh)
184
177
  need jq || sudo apt-get install -y jq
185
178
  require gh; require jq
186
179
 
187
- # --- AWS assume-role profiles, when inventory includes awsProfiles ---
188
- if [ -n "${AWS_ACCESS_KEY_ID:-}" ]; then
189
- mkdir -p "$HOME/.aws"
190
- # Generated stanzas use credential_source=Environment and contain no secrets.
191
- # Agents should run: aws --profile <profile> ...
192
- # Do not run aws sso login in headless routines; SSO requires an interactive browser/device flow.
193
- fi
180
+ # --- AWS assume-role profiles, when AWS inventory is active ---
181
+ bash scripts/remote-agent-aws-setup.sh
194
182
 
195
183
  # --- optional, only with --include-optional ---
196
184
  # (docker / ruby / chromium / etc., guarded)
@@ -213,8 +201,8 @@ to stop are: the analysis could not run, or the `--out` path is not writable.
213
201
  raw git/cross-repo clone guidance must not expand the token scope to sibling repositories.
214
202
  - Never emit an install for a tool the analysis did not surface, and never install `OPTIONAL` tools
215
203
  unless `--include-optional` is set.
216
- - When AWS is in the inventory, generate environment-backed assume-role profile stanzas from
217
- `awsProfiles`; never emit `aws sso login` as a remote setup step.
204
+ - When AWS is in the inventory, reuse `/lisa:setup-remote-aws` and its shared
205
+ setup script; never emit a second profile implementation or `aws sso login`.
218
206
  - Prefer `networkAccess.allowlistDomains` over legacy top-level `allowlistDomains`; never emit
219
207
  domains already covered by the routine environment's default Trusted list.
220
208
  - Keep the script idempotent and detect-before-install so it is safe to re-run and cache.
@@ -0,0 +1,53 @@
1
+ ---
2
+ name: lisa-setup-remote-aws
3
+ description: "Install and validate Lisa's drop-in AWS CLI bootstrap for remote coding environments. Supports Claude, Codex, Cursor, GitHub Copilot, Antigravity on user-managed hosts, OpenCode on user-managed hosts, and future Linux remote agents through one capability contract. Writes no secrets; it installs the common setup script, merges native Cursor/Copilot adapters, and emits exact operator guidance for the selected platform."
4
+ allowed-tools: ["Bash", "Read", "Write", "Glob", "Grep"]
5
+ ---
6
+
7
+ # Set up remote-agent AWS access: $ARGUMENTS
8
+
9
+ Install the vendor-neutral AWS bootstrap into the current repository.
10
+
11
+ ## Arguments
12
+
13
+ - `--platform=all|claude|codex|cursor|copilot|agy|opencode` (default `all`)
14
+ - `--project=<path>` (default current working directory)
15
+ - `--secret-name=<name>` (default `remote-agent-credentials`)
16
+
17
+ ## Procedure
18
+
19
+ 1. Resolve the plugin root from `PLUGIN_ROOT`, `CLAUDE_PLUGIN_ROOT`,
20
+ `CURSOR_PLUGIN_ROOT`, or the installed `@codyswann/lisa/plugins/lisa` package.
21
+ 2. Run:
22
+
23
+ ```bash
24
+ node "$PLUGIN_ROOT/scripts/install-remote-agent-aws.mjs" $ARGUMENTS
25
+ ```
26
+
27
+ 3. Inspect every path returned by the installer. It must install
28
+ `scripts/remote-agent-aws-setup.sh`; for Cursor it merges
29
+ `.cursor/environment.json`; for Copilot it creates or merges
30
+ `.github/workflows/copilot-setup-steps.yml`; and it always writes
31
+ `docs/remote-agent-aws.md`.
32
+ 4. Run `bash -n scripts/remote-agent-aws-setup.sh`.
33
+ 5. Never write or request the actual bootstrap SecretString in repository
34
+ files. Tell the operator to retrieve the `remote-agent-credentials` secret
35
+ from the shared AWS account and paste its complete SecretString into the
36
+ platform secret named `LISA_AWS_BOOTSTRAP_JSON`. The default cdkstarter
37
+ secret name is `remote-agent-credentials`; downstream infrastructure may
38
+ configure a different name. Pass that name with `--secret-name` so the
39
+ generated runbook contains the exact retrieval command.
40
+ 6. Report the external step that remains: configure that one secret in the
41
+ remote environment and launch a smoke session.
42
+
43
+ ## Contract
44
+
45
+ A future coding agent is supported without an AWS change when its remote
46
+ environment provides a Linux shell, a setup/start hook, one opaque secret,
47
+ a writable home directory, and HTTPS access to AWS STS plus the allowed service
48
+ endpoints. Set `LISA_REMOTE_AGENT` to a stable lowercase platform label; it is
49
+ used only as `role_session_name`.
50
+
51
+ Do not create per-repository or per-agent IAM users. Do not expose the bootstrap
52
+ key through standard `AWS_ACCESS_KEY_ID` variables. Do not add production repair
53
+ permissions; production repair is a human-driven local-workstation workflow.
@@ -23,6 +23,9 @@
23
23
  # # Pull requests R/W, Metadata R (+Workflows R/W if editing .github/workflows,
24
24
  # # +Projects R/W if using ProjectV2). Identity needs WRITE+ on the repo.
25
25
  # - GH_TOKEN=<token> # REQUIRED unless the routine's repo connection already auths `gh`
26
+ # AWS (when this routine needs account access):
27
+ # - LISA_AWS_BOOTSTRAP_JSON=<complete remote-agent-credentials SecretString>
28
+ # - LISA_REMOTE_AGENT=claude
26
29
  # Dormant (set ONLY if you switch .lisa.config.json tracker/source):
27
30
  # - JIRA_API_TOKEN / JIRA_SERVER / JIRA_LOGIN / JIRA_PROJECT # tracker=jira
28
31
  # - ATLASSIAN_API_TOKEN # source=confluence (8 Confluence scopes)
@@ -70,6 +73,12 @@ fi
70
73
  require jq
71
74
  require gh
72
75
 
76
+ # --- AWS CLI + renewable role profiles (when configured) ---
77
+ if [ -n "${LISA_AWS_BOOTSTRAP_JSON:-}" ]; then
78
+ LISA_REMOTE_AGENT="${LISA_REMOTE_AGENT:-claude}" \
79
+ bash scripts/remote-agent-aws-setup.sh
80
+ fi
81
+
73
82
  # --- gitleaks (REQUIRED: pre-commit secret scan) ---
74
83
  if ! need gitleaks; then
75
84
  echo "Installing gitleaks..."
@@ -133,8 +142,6 @@ if [ "$INCLUDE_OPTIONAL" = "1" ]; then
133
142
  # Chromium for Lighthouse/Playwright (heavy — can strain the cache budget)
134
143
  npx playwright install chromium || echo "WARN: chromium install failed (optional)"
135
144
 
136
- # aws CLI (cleanup scripts)
137
- need aws || apt_get install -y awscli || echo "WARN: awscli install failed (optional)"
138
145
  fi
139
146
 
140
147
  echo "claude-remote-setup: done."
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env bash
2
+ # Package-level convenience wrapper. The implementation is authored upstream
3
+ # in plugins/src/base and copied into plugins/lisa by build:plugins.
4
+
5
+ set -euo pipefail
6
+
7
+ REPOSITORY_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
8
+ for candidate in \
9
+ "$REPOSITORY_ROOT/plugins/lisa/scripts/remote-agent-aws-setup.sh" \
10
+ "$REPOSITORY_ROOT/plugins/src/base/scripts/remote-agent-aws-setup.sh"; do
11
+ if [ -x "$candidate" ]; then
12
+ exec "$candidate" "$@"
13
+ fi
14
+ done
15
+
16
+ echo "remote-agent-aws-setup: Lisa plugin script is missing; run bun run build:plugins" >&2
17
+ exit 1