@codyswann/lisa 2.159.9 → 2.161.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 (75) hide show
  1. package/dist/configs/eslint/harper-fabric.js +2 -2
  2. package/dist/configs/eslint/harper-fabric.js.map +1 -1
  3. package/harper-fabric/copy-contents/.prettierignore +4 -1
  4. package/harper-fabric/copy-overwrite/knip.json +2 -1
  5. package/harper-fabric/copy-overwrite/tsconfig.eslint.json +2 -1
  6. package/harper-fabric/create-only/.github/workflows/deploy.yml +82 -0
  7. package/harper-fabric/create-only/.github/workflows/zap-baseline.yml +56 -0
  8. package/harper-fabric/create-only/.zap/baseline.conf +21 -0
  9. package/harper-fabric/create-only/scripts/zap-baseline.sh +107 -0
  10. package/harper-fabric/merge/.oxlintrc.json +2 -1
  11. package/oxlint/harper-fabric.json +2 -1
  12. package/package.json +1 -1
  13. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  14. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  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-cursor/.claude-plugin/plugin.json +1 -1
  23. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  24. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  25. package/plugins/lisa-expo-agy/plugin.json +1 -1
  26. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  27. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  28. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +12 -1
  29. package/plugins/lisa-harper-fabric/.codex-plugin/hooks.json +11 -0
  30. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  31. package/plugins/lisa-harper-fabric/generated-artifact-globs.txt +4 -0
  32. package/plugins/lisa-harper-fabric/hooks/block-generated-artifact-edits.sh +72 -0
  33. package/plugins/lisa-harper-fabric/skills/harper-build-and-deploy/SKILL.md +24 -4
  34. package/plugins/lisa-harper-fabric-agy/generated-artifact-globs.txt +4 -0
  35. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  36. package/plugins/lisa-harper-fabric-agy/skills/harper-build-and-deploy/SKILL.md +24 -4
  37. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +12 -1
  38. package/plugins/lisa-harper-fabric-copilot/generated-artifact-globs.txt +4 -0
  39. package/plugins/lisa-harper-fabric-copilot/hooks/block-generated-artifact-edits.sh +72 -0
  40. package/plugins/lisa-harper-fabric-copilot/skills/harper-build-and-deploy/SKILL.md +24 -4
  41. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  42. package/plugins/lisa-harper-fabric-cursor/generated-artifact-globs.txt +4 -0
  43. package/plugins/lisa-harper-fabric-cursor/hooks/block-generated-artifact-edits.sh +72 -0
  44. package/plugins/lisa-harper-fabric-cursor/hooks/hooks.json +11 -0
  45. package/plugins/lisa-harper-fabric-cursor/skills/harper-build-and-deploy/SKILL.md +24 -4
  46. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  47. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  48. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  49. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  50. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  51. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  52. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  53. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  54. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  55. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  56. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  57. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  58. package/plugins/lisa-rails-agy/plugin.json +1 -1
  59. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  60. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  61. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  62. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  63. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  64. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  65. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  66. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  67. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  68. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  69. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  70. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  71. package/plugins/src/harper-fabric/.claude-plugin/plugin.json +8 -0
  72. package/plugins/src/harper-fabric/generated-artifact-globs.txt +4 -0
  73. package/plugins/src/harper-fabric/hooks/block-generated-artifact-edits.sh +72 -0
  74. package/plugins/src/harper-fabric/skills/harper-build-and-deploy/SKILL.md +24 -4
  75. package/tsconfig/harper-fabric.json +3 -1
@@ -0,0 +1,72 @@
1
+ #!/bin/bash
2
+ # This file is managed by Lisa.
3
+ # Do not edit directly - changes will be overwritten on the next `lisa` run.
4
+
5
+ # PreToolUse hook: block Write/Edit/MultiEdit on generated Harper deploy
6
+ # artifacts. Harper/Fabric projects build these files from TypeScript under
7
+ # src/, so direct edits are overwritten by the next build and usually ship as
8
+ # no-op fixes.
9
+ # Reference: https://docs.claude.com/en/docs/claude-code/hooks
10
+ # Exit code 2 blocks the tool call and surfaces stderr to Claude.
11
+
12
+ JSON_INPUT=$(cat)
13
+
14
+ command -v jq >/dev/null 2>&1 || exit 0
15
+
16
+ FILE_PATH=$(printf '%s' "$JSON_INPUT" | jq -r '.tool_input.file_path // empty')
17
+ [ -n "$FILE_PATH" ] || exit 0
18
+
19
+ PLUGIN_ROOT=${CLAUDE_PLUGIN_ROOT:-}
20
+ if [ -z "$PLUGIN_ROOT" ]; then
21
+ PLUGIN_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
22
+ fi
23
+ GLOBS_FILE="$PLUGIN_ROOT/generated-artifact-globs.txt"
24
+ [ -f "$GLOBS_FILE" ] || exit 0
25
+
26
+ normalize_path() {
27
+ local path="$1"
28
+ path="${path#./}"
29
+ printf '%s' "$path"
30
+ }
31
+
32
+ matches_glob() {
33
+ local file="$1"
34
+ local glob="$2"
35
+
36
+ if [ "${glob: -3}" = "/**" ]; then
37
+ local dir="${glob%/**}"
38
+ case "$file" in
39
+ "$dir"/* | */"$dir"/*) return 0 ;;
40
+ esac
41
+ return 1
42
+ fi
43
+
44
+ case "$file" in
45
+ $glob | */$glob) return 0 ;;
46
+ esac
47
+
48
+ return 1
49
+ }
50
+
51
+ NORMALIZED_FILE=$(normalize_path "$FILE_PATH")
52
+
53
+ while IFS= read -r glob || [ -n "$glob" ]; do
54
+ [ -n "$glob" ] || continue
55
+ case "$glob" in \#*) continue ;; esac
56
+
57
+ if matches_glob "$NORMALIZED_FILE" "$glob"; then
58
+ cat >&2 <<MSG
59
+ Blocked: direct edit to generated Harper/Fabric artifact.
60
+
61
+ File: $FILE_PATH
62
+ Matched generated artifact pattern: $glob
63
+
64
+ TypeScript under src/ is the source of truth for Harper resources, web assets,
65
+ and shared libraries. Change the matching TypeScript source under src/ and run
66
+ the project build to regenerate harper-app outputs.
67
+ MSG
68
+ exit 2
69
+ fi
70
+ done <"$GLOBS_FILE"
71
+
72
+ exit 0
@@ -53,8 +53,25 @@ relevant deployed or smoke path agree.
53
53
 
54
54
  ## Deploying to Fabric
55
55
 
56
- Fabric is Harper's distributed deploy network. Deploy packages the component and
57
- sends it to a target instance:
56
+ Fabric is Harper's distributed deploy network. Lisa ships a create-only GitHub
57
+ Actions workflow at `.github/workflows/deploy.yml` for Harper/Fabric projects. Use
58
+ that workflow as the canonical deployment path for repositories that have adopted
59
+ the template: it builds the project, runs `harper deploy_component` against the
60
+ configured Fabric target, and then runs the project's smoke verification script.
61
+
62
+ Required GitHub secrets:
63
+
64
+ - `CLI_TARGET` or `HARPER_FABRIC_TARGET` — Fabric target URL.
65
+ - `CLI_TARGET_USERNAME` — deploy username.
66
+ - `CLI_TARGET_PASSWORD` — deploy password.
67
+
68
+ Optional GitHub variables:
69
+
70
+ - `HARPER_PROJECT` — Fabric project name; defaults to the repository name.
71
+ - `HARPER_PACKAGE` — package path; defaults to `harper-app`.
72
+
73
+ For local debugging or one-off deploys, the equivalent CLI command packages the
74
+ component and sends it to a target instance:
58
75
 
59
76
  ```bash
60
77
  harper deploy_component \
@@ -85,8 +102,11 @@ env var, which store) without recording their values.
85
102
  1. `bun run build` — produces fresh `resources.js` / `web/**`.
86
103
  2. `bun run typecheck`.
87
104
  3. The smallest relevant test command.
88
- 4. For deploy-affecting changes, the project **smoke command** against the local or
89
- deployed Harper endpoint.
105
+ 4. For deploy-affecting changes, run the create-only GitHub deploy workflow when
106
+ available, or manually run `harper deploy_component` plus the project **smoke
107
+ command** against the local or deployed Harper endpoint.
108
+ 5. For public HTTP surfaces, run the create-only ZAP baseline workflow or
109
+ `bash scripts/zap-baseline.sh` with `ZAP_TARGET_URL` set to the deployed app.
90
110
 
91
111
  If a verification command cannot run, report the exact command and the blocker —
92
112
  do not claim completion. When you hit a Harper/Fabric limitation or workaround,
@@ -15,6 +15,8 @@
15
15
  "coverage",
16
16
  "node_modules",
17
17
  "harper-app/resources.js",
18
- "harper-app/web/**/*.js"
18
+ "harper-app/resource-*.js",
19
+ "harper-app/web/**",
20
+ "harper-app/lib/**"
19
21
  ]
20
22
  }