@codyswann/lisa 2.189.9 → 2.189.11
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/expo/copy-overwrite/jest.expo.ts +4 -120
- package/expo/package-lisa/package.lisa.json +5 -0
- 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-agy/plugin.json +1 -1
- 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-cursor/.claude-plugin/plugin.json +1 -1
- 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/scripts/lib/per-agent-hook-filter.mjs +3 -1
- package/typescript/copy-contents/.husky/pre-commit +21 -4
- package/typescript/copy-overwrite/{.gitleaksignore → .gitleaksignore.local} +1 -1
- package/typescript/create-only/.gitleaksignore +5 -0
|
@@ -1,130 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* This file is managed by Lisa.
|
|
3
|
-
* Do not edit directly
|
|
3
|
+
* Do not edit directly - changes will be overwritten on the next `lisa` run.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
/**
|
|
7
|
-
* Jest Configuration - Expo Stack
|
|
8
|
-
*
|
|
9
|
-
* Provides Expo/React Native-specific Jest configuration without using
|
|
10
|
-
* the `jest-expo` preset directly. The preset's `setupFiles` include
|
|
11
|
-
* `react-native/jest/setup.js` which redefines `window` via
|
|
12
|
-
* `Object.defineProperties` — incompatible with jsdom's non-configurable
|
|
13
|
-
* `window` property, causing "Cannot redefine property: window" errors.
|
|
14
|
-
*
|
|
15
|
-
* Instead, this config manually replicates the preset's resolution,
|
|
16
|
-
* transform, and haste settings without any preset setupFiles.
|
|
17
|
-
*
|
|
18
|
-
* `setupFiles` and `setupFilesAfterEnv` are configured here to wire up
|
|
19
|
-
* the base jest setup files (`jest.setup.pre.js` and `jest.setup.ts`).
|
|
20
|
-
* These base files import project-local overrides (`jest.setup.pre.local.js`
|
|
21
|
-
* and `jest.setup.local.ts`) which are create-only templates that projects
|
|
22
|
-
* can customize without Lisa overwriting them.
|
|
23
|
-
*
|
|
24
|
-
* Coverage collection is scoped to standard Expo source directories
|
|
25
|
-
* rather than a catch-all glob, preventing config files, scripts, and
|
|
26
|
-
* plugins from distorting coverage numbers. The `app/` directory is
|
|
27
|
-
* excluded because Expo Router file-based routing makes those files thin
|
|
28
|
-
* wrappers (8-15 lines) that just re-export feature components.
|
|
29
|
-
* `*View.{ts,tsx}` files are excluded because the Container/View pattern
|
|
30
|
-
* puts all logic in Container files — Views are purely presentational.
|
|
31
|
-
*
|
|
32
|
-
* Inheritance chain:
|
|
33
|
-
* jest.expo.ts (this file)
|
|
34
|
-
* └── @codyswann/lisa/jest/base
|
|
35
|
-
*
|
|
36
|
-
* @see https://jestjs.io/docs/configuration
|
|
37
|
-
* @see https://github.com/expo/expo/issues/40184
|
|
38
|
-
* @module jest.expo
|
|
39
|
-
*/
|
|
40
|
-
import type { Config } from "jest";
|
|
41
|
-
|
|
42
|
-
import {
|
|
43
|
-
defaultCoverageExclusions,
|
|
44
|
-
defaultThresholds,
|
|
45
|
-
mergeConfigs,
|
|
46
|
-
mergeThresholds,
|
|
47
|
-
worktreeTestPathIgnorePatterns,
|
|
48
|
-
} from "@codyswann/lisa/jest/base";
|
|
49
|
-
|
|
50
|
-
// Re-export base utilities for entry-point configs
|
|
51
6
|
export {
|
|
52
7
|
defaultCoverageExclusions,
|
|
53
8
|
defaultThresholds,
|
|
9
|
+
getExpoJestConfig,
|
|
54
10
|
mergeConfigs,
|
|
55
11
|
mergeThresholds,
|
|
12
|
+
selectExpoJestResolver,
|
|
56
13
|
worktreeTestPathIgnorePatterns,
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Options for configuring the Expo Jest config factory.
|
|
61
|
-
*/
|
|
62
|
-
interface ExpoJestOptions {
|
|
63
|
-
/** Coverage thresholds (merged defaults + project overrides) */
|
|
64
|
-
readonly thresholds?: Config["coverageThreshold"];
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Creates a Jest configuration for Expo/React Native projects.
|
|
69
|
-
*
|
|
70
|
-
* @param options - Configuration options for threshold overrides
|
|
71
|
-
* @param options.thresholds - Coverage thresholds (merged defaults + project overrides)
|
|
72
|
-
* @returns Jest config object with jsdom environment, babel-jest transform, and React Native resolver
|
|
73
|
-
* @remarks Avoids `jest-expo` preset to prevent jsdom + `react-native/jest/setup.js`
|
|
74
|
-
* incompatibility. Manually configures haste, resolver, and transform to match the
|
|
75
|
-
* preset's behavior without the problematic window redefinition.
|
|
76
|
-
*/
|
|
77
|
-
export const getExpoJestConfig = ({
|
|
78
|
-
thresholds = defaultThresholds,
|
|
79
|
-
}: ExpoJestOptions = {}): Config => ({
|
|
80
|
-
testEnvironment: "jsdom",
|
|
81
|
-
haste: {
|
|
82
|
-
defaultPlatform: "ios",
|
|
83
|
-
platforms: ["android", "ios", "native"],
|
|
84
|
-
},
|
|
85
|
-
resolver: "react-native/jest/resolver.js",
|
|
86
|
-
setupFiles: ["<rootDir>/jest.setup.pre.js"],
|
|
87
|
-
setupFilesAfterEnv: ["<rootDir>/jest.setup.ts"],
|
|
88
|
-
transform: {
|
|
89
|
-
"\\.[jt]sx?$": [
|
|
90
|
-
"babel-jest",
|
|
91
|
-
{
|
|
92
|
-
caller: {
|
|
93
|
-
name: "metro",
|
|
94
|
-
bundler: "metro",
|
|
95
|
-
platform: "ios",
|
|
96
|
-
},
|
|
97
|
-
},
|
|
98
|
-
],
|
|
99
|
-
"^.+\\.(bmp|gif|jpg|jpeg|mp4|png|psd|svg|webp|ttf|otf|woff|woff2)$":
|
|
100
|
-
"jest-expo/src/preset/assetFileTransformer.js",
|
|
101
|
-
},
|
|
102
|
-
testMatch: ["<rootDir>/**/*.test.ts", "<rootDir>/**/*.test.tsx"],
|
|
103
|
-
testPathIgnorePatterns: [
|
|
104
|
-
"/node_modules/",
|
|
105
|
-
"/dist/",
|
|
106
|
-
"/.expo/",
|
|
107
|
-
...worktreeTestPathIgnorePatterns(),
|
|
108
|
-
],
|
|
109
|
-
transformIgnorePatterns: [
|
|
110
|
-
"node_modules/(?!((jest-)?react-native|@react-native(-community)?)|expo(nent)?|@expo(nent)?/.*|@expo-google-fonts/.*|react-navigation|@react-navigation/.*|@sentry/react-native|native-base|react-native-svg|@gluestack-ui/.*|@gluestack-style/.*|nativewind|react-native-css-interop|react-native-reanimated|react-native-worklets|lucide-react-native|@gorhom|@shopify)",
|
|
111
|
-
],
|
|
112
|
-
moduleFileExtensions: ["ts", "tsx", "js", "jsx", "json", "node"],
|
|
113
|
-
collectCoverageFrom: [
|
|
114
|
-
"components/**/*.{ts,tsx}",
|
|
115
|
-
"config/**/*.{ts,tsx}",
|
|
116
|
-
"constants/**/*.{ts,tsx}",
|
|
117
|
-
"features/**/*.{ts,tsx}",
|
|
118
|
-
"hooks/**/*.{ts,tsx}",
|
|
119
|
-
"lib/**/*.{ts,tsx}",
|
|
120
|
-
"providers/**/*.{ts,tsx}",
|
|
121
|
-
"shared/**/*.{ts,tsx}",
|
|
122
|
-
"stores/**/*.{ts,tsx}",
|
|
123
|
-
"types/**/*.{ts,tsx}",
|
|
124
|
-
"utils/**/*.{ts,tsx}",
|
|
125
|
-
"!**/*View.{ts,tsx}",
|
|
126
|
-
...defaultCoverageExclusions,
|
|
127
|
-
],
|
|
128
|
-
coverageThreshold: thresholds,
|
|
129
|
-
testTimeout: 10000,
|
|
130
|
-
});
|
|
14
|
+
} from "@codyswann/lisa/jest/expo";
|
package/package.json
CHANGED
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
"ws": ">=8.20.1"
|
|
95
95
|
},
|
|
96
96
|
"name": "@codyswann/lisa",
|
|
97
|
-
"version": "2.189.
|
|
97
|
+
"version": "2.189.11",
|
|
98
98
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
99
99
|
"main": "dist/index.js",
|
|
100
100
|
"exports": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.189.
|
|
3
|
+
"version": "2.189.11",
|
|
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.189.
|
|
3
|
+
"version": "2.189.11",
|
|
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.189.
|
|
3
|
+
"version": "2.189.11",
|
|
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.189.
|
|
3
|
+
"version": "2.189.11",
|
|
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.189.
|
|
3
|
+
"version": "2.189.11",
|
|
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"
|
|
@@ -105,7 +105,9 @@ const SCRIPT_EXCLUDE_PATTERNS = [/debug/i, /\.agy\.sh$/];
|
|
|
105
105
|
/** Hook command shape: { type: "command", command: "..." } */
|
|
106
106
|
const isEntireClaudeCodeCommand = cmd =>
|
|
107
107
|
typeof cmd === "string" &&
|
|
108
|
-
|
|
108
|
+
cmd.startsWith(
|
|
109
|
+
"command -v entire >/dev/null 2>&1 && entire hooks claude-code "
|
|
110
|
+
);
|
|
109
111
|
|
|
110
112
|
const scriptNameFromCommand = cmd => {
|
|
111
113
|
if (typeof cmd !== "string") return null;
|
|
@@ -46,9 +46,26 @@ fi
|
|
|
46
46
|
# Check for Gitleaks and run secret detection
|
|
47
47
|
echo "🔐 Checking for secrets with Gitleaks..."
|
|
48
48
|
if command -v gitleaks >/dev/null 2>&1; then
|
|
49
|
-
# Run gitleaks on staged files
|
|
50
|
-
|
|
51
|
-
|
|
49
|
+
# Run gitleaks on staged files. Lisa keeps the host-owned allowlist in
|
|
50
|
+
# .gitleaksignore and shared managed entries in .gitleaksignore.local.
|
|
51
|
+
GITLEAKS_IGNORE_ARGS=""
|
|
52
|
+
GITLEAKS_COMBINED_IGNORE=""
|
|
53
|
+
if [ -f ".gitleaksignore.local" ]; then
|
|
54
|
+
GITLEAKS_COMBINED_IGNORE="$(mktemp)"
|
|
55
|
+
if [ -f ".gitleaksignore" ]; then
|
|
56
|
+
cat .gitleaksignore > "$GITLEAKS_COMBINED_IGNORE"
|
|
57
|
+
printf '\n' >> "$GITLEAKS_COMBINED_IGNORE"
|
|
58
|
+
fi
|
|
59
|
+
cat .gitleaksignore.local >> "$GITLEAKS_COMBINED_IGNORE"
|
|
60
|
+
GITLEAKS_IGNORE_ARGS="--gitleaks-ignore-path=$GITLEAKS_COMBINED_IGNORE"
|
|
61
|
+
fi
|
|
62
|
+
|
|
63
|
+
gitleaks protect --staged --redact -v $GITLEAKS_IGNORE_ARGS
|
|
64
|
+
GITLEAKS_STATUS=$?
|
|
65
|
+
if [ -n "$GITLEAKS_COMBINED_IGNORE" ]; then
|
|
66
|
+
rm -f "$GITLEAKS_COMBINED_IGNORE"
|
|
67
|
+
fi
|
|
68
|
+
if [ $GITLEAKS_STATUS -ne 0 ]; then
|
|
52
69
|
echo ""
|
|
53
70
|
echo "❌ Secrets detected in staged files!"
|
|
54
71
|
echo ""
|
|
@@ -93,4 +110,4 @@ fi
|
|
|
93
110
|
# Run lint-staged for incremental lint and format checks
|
|
94
111
|
echo "🚀 Running lint-staged..."
|
|
95
112
|
$EXECUTOR lint-staged --config .lintstagedrc.json
|
|
96
|
-
# END: AI GUARDRAILS
|
|
113
|
+
# END: AI GUARDRAILS
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# This file is managed by Lisa.
|
|
2
|
-
# Do not edit directly
|
|
2
|
+
# Do not edit directly - changes will be overwritten on the next `lisa` run.
|
|
3
3
|
|
|
4
4
|
# CDK snapshot files contain asset hashes that can trigger false positives
|
|
5
5
|
__tests__/infra/__snapshots__/sse-stream-stack.test.ts.snap:generic-api-key:380
|