@codyswann/lisa 2.226.2 → 2.228.0

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 (71) hide show
  1. package/all/copy-contents/gitignore +2 -0
  2. package/dist/cli/ui-cmd.d.ts +21 -1
  3. package/dist/cli/ui-cmd.d.ts.map +1 -1
  4. package/dist/cli/ui-cmd.js +49 -3
  5. package/dist/cli/ui-cmd.js.map +1 -1
  6. package/dist/core/lisa.d.ts +74 -1
  7. package/dist/core/lisa.d.ts.map +1 -1
  8. package/dist/core/lisa.js +165 -25
  9. package/dist/core/lisa.js.map +1 -1
  10. package/package.json +1 -1
  11. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  12. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  13. package/plugins/lisa/rules/eager/history-audit.md +27 -0
  14. package/plugins/lisa/rules/reference/history-audit.md +42 -0
  15. package/plugins/lisa-agy/plugin.json +1 -1
  16. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  17. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  18. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  19. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  20. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  21. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  22. package/plugins/lisa-copilot/rules/eager/history-audit.md +27 -0
  23. package/plugins/lisa-copilot/rules/reference/history-audit.md +42 -0
  24. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  25. package/plugins/lisa-cursor/rules/history-audit-reference.mdc +47 -0
  26. package/plugins/lisa-cursor/rules/history-audit.mdc +32 -0
  27. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  28. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  29. package/plugins/lisa-expo-agy/plugin.json +1 -1
  30. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  31. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  32. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  33. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  34. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  35. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  36. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  37. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  38. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  39. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  40. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  41. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  42. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  43. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  44. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  45. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  46. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  47. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  48. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  49. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  50. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  51. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  52. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  53. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  54. package/plugins/lisa-rails-agy/plugin.json +1 -1
  55. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  56. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  57. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  58. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  59. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  60. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  61. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  62. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  63. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  64. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  65. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  66. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  67. package/plugins/src/base/rules/eager/history-audit.md +27 -0
  68. package/plugins/src/base/rules/reference/history-audit.md +42 -0
  69. package/scripts/install-claude-plugins.sh +89 -9
  70. package/ui/README.md +1 -0
  71. package/ui/index.html +143 -8
package/ui/index.html CHANGED
@@ -1259,6 +1259,7 @@
1259
1259
  "stacks",
1260
1260
  "starters",
1261
1261
  "agents",
1262
+ "remote",
1262
1263
  ],
1263
1264
  },
1264
1265
  {
@@ -2348,6 +2349,33 @@
2348
2349
  ],
2349
2350
  };
2350
2351
 
2352
+ /* -------------------------- Remote environment -------------------------- */
2353
+ DATA.sections.remote = {
2354
+ title: "Remote Environment",
2355
+ desc: "AWS CLI bootstrap readiness for the project's active remote coding agents. Secret values are never sent to the browser — the console receives presence checks only.",
2356
+ src: "scripts/remote-agent-aws-setup.sh · remote platform environments",
2357
+ blocks: [
2358
+ {
2359
+ type: "table",
2360
+ card: "Variables",
2361
+ note: "Set status reflects variables visible to the lisa ui process; values remain hidden",
2362
+ cols: ["Variable", "Purpose", "Status"],
2363
+ rows: [],
2364
+ },
2365
+ {
2366
+ type: "table",
2367
+ card: "Startup Script",
2368
+ note: "Only agents enabled by the current harness are listed",
2369
+ cols: ["Agent", "Remote environment setup", "Project artifact"],
2370
+ rows: [],
2371
+ },
2372
+ {
2373
+ type: "callout",
2374
+ text: "<b>One bootstrap bundle, renewable sessions.</b> Store the complete Secrets Manager value as <code>LISA_AWS_BOOTSTRAP_JSON</code>. Each startup command writes the assume-only source credential and renewable role profiles; do not configure <code>AWS_ACCESS_KEY_ID</code> or <code>AWS_SECRET_ACCESS_KEY</code> directly.",
2375
+ },
2376
+ ],
2377
+ };
2378
+
2351
2379
  /* ---------------------------------- Tracker ---------------------------------- */
2352
2380
  DATA.sections.tracker = {
2353
2381
  title: "Work tracker",
@@ -5783,16 +5811,123 @@
5783
5811
  if (control.type === "static" && typeof value === "string")
5784
5812
  control.value = value;
5785
5813
  }
5814
+ const REMOTE_AGENT_ORDER = [
5815
+ "claude",
5816
+ "codex",
5817
+ "cursor",
5818
+ "agy",
5819
+ "copilot",
5820
+ "opencode",
5821
+ ];
5822
+ const REMOTE_STARTUP = {
5823
+ claude: {
5824
+ command:
5825
+ "LISA_REMOTE_AGENT=claude bash scripts/remote-agent-aws-setup.sh",
5826
+ artifacts: ["scripts/remote-agent-aws-setup.sh"],
5827
+ },
5828
+ codex: {
5829
+ command:
5830
+ "LISA_REMOTE_AGENT=codex bash scripts/remote-agent-aws-setup.sh",
5831
+ artifacts: ["scripts/remote-agent-aws-setup.sh"],
5832
+ },
5833
+ cursor: {
5834
+ command:
5835
+ ".cursor/environment.json → LISA_REMOTE_AGENT=cursor bash scripts/remote-agent-aws-setup.sh",
5836
+ artifacts: [
5837
+ "scripts/remote-agent-aws-setup.sh",
5838
+ ".cursor/environment.json",
5839
+ ],
5840
+ },
5841
+ agy: {
5842
+ command:
5843
+ "LISA_REMOTE_AGENT=agy bash scripts/remote-agent-aws-setup.sh (user-managed host)",
5844
+ artifacts: ["scripts/remote-agent-aws-setup.sh"],
5845
+ },
5846
+ copilot: {
5847
+ command:
5848
+ ".github/workflows/copilot-setup-steps.yml → bash scripts/remote-agent-aws-setup.sh",
5849
+ artifacts: [
5850
+ "scripts/remote-agent-aws-setup.sh",
5851
+ ".github/workflows/copilot-setup-steps.yml",
5852
+ ],
5853
+ },
5854
+ opencode: {
5855
+ command:
5856
+ "LISA_REMOTE_AGENT=opencode bash scripts/remote-agent-aws-setup.sh (opencode serve host)",
5857
+ artifacts: ["scripts/remote-agent-aws-setup.sh"],
5858
+ },
5859
+ };
5860
+ function configureRemoteEnvironment(cfg) {
5861
+ const snapshot = window.LISA_REMOTE_ENVIRONMENT || {
5862
+ variables: {},
5863
+ artifacts: {},
5864
+ };
5865
+ const harness = cfg && cfg.harness ? cfg.harness : "fleet";
5866
+ const activeAgents =
5867
+ harness === "fleet" || harness === "all"
5868
+ ? REMOTE_AGENT_ORDER
5869
+ : REMOTE_AGENT_ORDER.includes(harness)
5870
+ ? [harness]
5871
+ : ["claude"];
5872
+ const variableRows = [
5873
+ [
5874
+ "LISA_AWS_BOOTSTRAP_JSON",
5875
+ "Required secret — complete vendor-neutral bootstrap bundle",
5876
+ ],
5877
+ [
5878
+ "LISA_REMOTE_AGENT",
5879
+ "Platform label used as the AWS role session name (startup commands set it inline)",
5880
+ ],
5881
+ [
5882
+ "LISA_AWS_DEFAULT_PROFILE",
5883
+ "Optional default account profile; dev is used when unset",
5884
+ ],
5885
+ ].map(([name, purpose]) => {
5886
+ const isSet = snapshot.variables[name] === true;
5887
+ return [
5888
+ { t: "mono", v: name },
5889
+ { t: "text", v: purpose },
5890
+ {
5891
+ t: "badge",
5892
+ v: isSet ? "set" : "not set",
5893
+ cls: isSet
5894
+ ? "pass"
5895
+ : name.endsWith("DEFAULT_PROFILE")
5896
+ ? "warn"
5897
+ : "fail",
5898
+ },
5899
+ ];
5900
+ });
5901
+ const startupRows = activeAgents.map(agent => {
5902
+ const startup = REMOTE_STARTUP[agent];
5903
+ const ready = startup.artifacts.every(
5904
+ artifact => snapshot.artifacts[artifact] === true
5905
+ );
5906
+ return [
5907
+ { t: "mono", v: agent },
5908
+ { t: "mono", v: startup.command },
5909
+ {
5910
+ t: "badge",
5911
+ v: ready ? "installed" : "missing",
5912
+ cls: ready ? "pass" : "fail",
5913
+ },
5914
+ ];
5915
+ });
5916
+ DATA.sections.remote.blocks[0].rows = variableRows;
5917
+ DATA.sections.remote.blocks[1].rows = startupRows;
5918
+ }
5786
5919
  function hydrateFromLiveConfig() {
5787
- const cfg = window.LISA_LIVE_CONFIG;
5788
- if (!cfg) return;
5789
- Object.values(DATA.sections).forEach(section => {
5790
- walkRows(section.blocks, row => {
5791
- if (!row.key || !row.control) return;
5792
- const value = liveGet(cfg, row.key);
5793
- if (value !== undefined) hydrateControl(row.control, value);
5920
+ const cfg = window.LISA_LIVE_CONFIG || {};
5921
+ if (window.LISA_LIVE_CONFIG) {
5922
+ Object.values(DATA.sections).forEach(section => {
5923
+ walkRows(section.blocks, row => {
5924
+ if (!row.key || !row.control) return;
5925
+ const value = liveGet(cfg, row.key);
5926
+ if (value !== undefined) hydrateControl(row.control, value);
5927
+ });
5794
5928
  });
5795
- });
5929
+ }
5930
+ configureRemoteEnvironment(cfg);
5796
5931
  const repoEl = document.querySelector(".project-switch .repo");
5797
5932
  if (repoEl && cfg.github && cfg.github.org && cfg.github.repo) {
5798
5933
  repoEl.textContent = cfg.github.org + "/" + cfg.github.repo;