@codyswann/lisa 2.19.1 → 2.20.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.
- package/.agents/plugins/marketplace.json +12 -0
- package/dist/codex/hooks-installer.js +23 -11
- package/dist/codex/hooks-installer.js.map +1 -1
- package/dist/codex/plugin-marketplace-installer.d.ts.map +1 -1
- package/dist/codex/plugin-marketplace-installer.js +2 -0
- package/dist/codex/plugin-marketplace-installer.js.map +1 -1
- package/dist/codex/scripts/block-migration-edits.sh +78 -0
- package/dist/codex/scripts/block-no-verify.sh +26 -0
- package/dist/codex/scripts/format-on-edit.sh +35 -0
- package/dist/codex/scripts/inject-rules.sh +31 -0
- package/dist/codex/scripts/install-pkgs.sh +26 -0
- package/dist/codex/scripts/lint-on-edit.sh +32 -0
- package/dist/codex/scripts/notify-ntfy.sh +18 -0
- package/dist/codex/scripts/rubocop-on-edit.sh +32 -0
- package/dist/codex/scripts/setup-jira-cli.sh +24 -0
- package/dist/codex/scripts/sg-scan-on-edit.sh +34 -0
- package/dist/configs/eslint/harper-fabric.d.ts +28 -0
- package/dist/configs/eslint/harper-fabric.d.ts.map +1 -0
- package/dist/configs/eslint/harper-fabric.js +59 -0
- package/dist/configs/eslint/harper-fabric.js.map +1 -0
- package/dist/configs/eslint/index.d.ts +2 -0
- package/dist/configs/eslint/index.d.ts.map +1 -1
- package/dist/configs/eslint/index.js +2 -0
- package/dist/configs/eslint/index.js.map +1 -1
- package/dist/configs/vitest/harper-fabric.d.ts +26 -0
- package/dist/configs/vitest/harper-fabric.d.ts.map +1 -0
- package/dist/configs/vitest/harper-fabric.js +30 -0
- package/dist/configs/vitest/harper-fabric.js.map +1 -0
- package/dist/configs/vitest/index.d.ts +2 -1
- package/dist/configs/vitest/index.d.ts.map +1 -1
- package/dist/configs/vitest/index.js +2 -1
- package/dist/configs/vitest/index.js.map +1 -1
- package/dist/core/config.d.ts +1 -1
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +2 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/lisa.d.ts.map +1 -1
- package/dist/core/lisa.js +10 -0
- package/dist/core/lisa.js.map +1 -1
- package/dist/detection/detectors/harper-fabric.d.ts +18 -0
- package/dist/detection/detectors/harper-fabric.d.ts.map +1 -0
- package/dist/detection/detectors/harper-fabric.js +56 -0
- package/dist/detection/detectors/harper-fabric.js.map +1 -0
- package/dist/detection/index.d.ts.map +1 -1
- package/dist/detection/index.js +2 -0
- package/dist/detection/index.js.map +1 -1
- package/dist/strategies/copy-contents.d.ts +12 -2
- package/dist/strategies/copy-contents.d.ts.map +1 -1
- package/dist/strategies/copy-contents.js +28 -7
- package/dist/strategies/copy-contents.js.map +1 -1
- package/dist/strategies/package-lisa.d.ts +11 -1
- package/dist/strategies/package-lisa.d.ts.map +1 -1
- package/dist/strategies/package-lisa.js +30 -1
- package/dist/strategies/package-lisa.js.map +1 -1
- package/harper-fabric/copy-overwrite/.github/workflows/ci.yml +23 -0
- package/harper-fabric/copy-overwrite/eslint.config.ts +41 -0
- package/harper-fabric/copy-overwrite/knip.json +24 -0
- package/harper-fabric/copy-overwrite/tsconfig.eslint.json +25 -0
- package/harper-fabric/copy-overwrite/tsconfig.json +7 -0
- package/harper-fabric/copy-overwrite/vitest.config.ts +30 -0
- package/harper-fabric/merge/.claude/settings.json +34 -0
- package/harper-fabric/merge/.oxlintrc.json +16 -0
- package/harper-fabric/package-lisa/package.lisa.json +94 -0
- package/oxlint/harper-fabric.json +11 -0
- package/package.json +8 -3
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/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-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +35 -0
- package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +32 -0
- package/plugins/lisa-harper-fabric/hooks/inject-rules.sh +16 -0
- package/plugins/lisa-harper-fabric/rules/harper-fabric.md +51 -0
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.codex-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-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
- package/plugins/src/harper-fabric/.claude-plugin/plugin.json +15 -0
- package/plugins/src/harper-fabric/hooks/inject-rules.sh +16 -0
- package/plugins/src/harper-fabric/rules/harper-fabric.md +51 -0
- package/scripts/build-plugins.sh +1 -1
- package/scripts/copy-codex-scripts.mjs +28 -0
- package/scripts/generate-codex-plugin-artifacts.mjs +15 -0
- package/scripts/install-claude-plugins.sh +5 -5
- package/tsconfig/harper-fabric.json +20 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Harper/Fabric Project Rules
|
|
2
|
+
|
|
3
|
+
These rules apply to Harper/Fabric component apps managed by Lisa.
|
|
4
|
+
|
|
5
|
+
## Build The Real Thing
|
|
6
|
+
|
|
7
|
+
- Do not ship client-side workarounds for missing backend behavior. If a change needs a Harper resource, schema update, seed path, or deploy script change, make that change.
|
|
8
|
+
- Do not silently downgrade a feature to a stub, mock, or partial path. Only use a stop-gap when the user explicitly asks for one.
|
|
9
|
+
- Treat deployed Fabric behavior as part of the product. A change is unfinished until the local build and the relevant deployed or smoke path agree.
|
|
10
|
+
|
|
11
|
+
## TypeScript Is Source
|
|
12
|
+
|
|
13
|
+
- TypeScript under `src/` is the source of truth for Harper resources, browser modules, shared libraries, and operational scripts.
|
|
14
|
+
- `harper-app/config.yaml`, `harper-app/schema.graphql`, HTML, CSS, docs, and research fixtures are source assets.
|
|
15
|
+
- `harper-app/resources.js` and `harper-app/web/**/*.js` are generated deploy artifacts. Never edit them directly; change the matching TypeScript and run `bun run build`.
|
|
16
|
+
- Deployment, bootstrap, smoke, seed, verify, preview, token, crawl, ingest, and extraction commands must run from compiled JavaScript or generated Harper assets, not stale checked-in JavaScript.
|
|
17
|
+
|
|
18
|
+
## Harper/Fabric Deploy Surface
|
|
19
|
+
|
|
20
|
+
- A deployable Harper app must keep `config.yaml`, `schema.graphql`, `resources.js`, and `web/**` at the component root that Fabric packages.
|
|
21
|
+
- Build before symlinking, packaging, or deploying `harper-app/`.
|
|
22
|
+
- Keep runtime secrets out of tracked files. Prefer environment variables or OS keychain helpers; document secret locations without recording secret values.
|
|
23
|
+
- When discovering a Harper/Fabric limitation or workaround, document the symptom, root cause, fix, and tempting broken alternatives in the project runbook.
|
|
24
|
+
|
|
25
|
+
## Documentation Sync
|
|
26
|
+
|
|
27
|
+
- Project docs are operational contracts. When commands, schema, deploy shape, data model, seeded-data summary, crawler behavior, credential handling, or UI components change, update the matching project doc in the same change.
|
|
28
|
+
- Harper schema changes must update the conceptual schema docs and any verify paths that assert joins or row counts.
|
|
29
|
+
- Deploy topology, credential rotation, generated-artifact layout, and Fabric workarounds belong in the Fabric runbook.
|
|
30
|
+
- UI component, token, variant, or design-system changes must update the design-system catalog.
|
|
31
|
+
|
|
32
|
+
## UI Work
|
|
33
|
+
|
|
34
|
+
- Browser UI must be composed from the project design system. Search the existing design-system catalog and components before adding markup.
|
|
35
|
+
- Add or extend the design-system component first, then consume it from pages.
|
|
36
|
+
- Pages should import UI components through the design-system barrel, not deep component paths.
|
|
37
|
+
- Do not introduce raw colors or ad hoc spacing in UI styles. Use design tokens and update the token docs when adding tokens.
|
|
38
|
+
- Every UI change needs Playwright verification that checks DOM behavior and captures screenshots. Type checks and unit tests are not enough for visual changes.
|
|
39
|
+
|
|
40
|
+
## Immutable Code
|
|
41
|
+
|
|
42
|
+
- Prefer immutable data flow: `readonly` types, pure transformations, object/array copies, and explicit returned values.
|
|
43
|
+
- Do not mutate parameters, imported singletons, fixture objects, records, arrays, DOM-derived state, or config objects unless an API requires mutation and the exception is documented locally.
|
|
44
|
+
- Avoid `let`; use `const` and small pure helper functions instead.
|
|
45
|
+
- Avoid `any`, broad casts, and `ts-ignore`. If an external API forces an escape hatch, isolate it behind a typed adapter.
|
|
46
|
+
|
|
47
|
+
## Verification
|
|
48
|
+
|
|
49
|
+
- Run `bun run build`, `bun run typecheck`, and the smallest relevant test command before reporting completion.
|
|
50
|
+
- For deploy-affecting changes, also run the project smoke command against the local or deployed Harper endpoint.
|
|
51
|
+
- If a verification command cannot run, report the exact command and blocker.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "lisa-harper-fabric",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Harper/Fabric-specific rules for TypeScript component apps",
|
|
5
|
+
"author": { "name": "Cody Swann" },
|
|
6
|
+
"dependencies": ["lisa-typescript"],
|
|
7
|
+
"hooks": {
|
|
8
|
+
"SessionStart": [
|
|
9
|
+
{ "matcher": "", "hooks": [{ "type": "command", "command": "${CLAUDE_PLUGIN_ROOT}/hooks/inject-rules.sh" }] }
|
|
10
|
+
],
|
|
11
|
+
"SubagentStart": [
|
|
12
|
+
{ "matcher": "", "hooks": [{ "type": "command", "command": "${CLAUDE_PLUGIN_ROOT}/hooks/inject-rules.sh" }] }
|
|
13
|
+
]
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Reads all .md files from the plugin's rules/ directory and injects them
|
|
3
|
+
# into Claude context at session/subagent start.
|
|
4
|
+
set -euo pipefail
|
|
5
|
+
|
|
6
|
+
ROOT="${CLAUDE_PLUGIN_ROOT:-${CODEX_PLUGIN_ROOT:-$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)}}"
|
|
7
|
+
RULES_DIR="$ROOT/rules"
|
|
8
|
+
|
|
9
|
+
[ -d "$RULES_DIR" ] || exit 0
|
|
10
|
+
|
|
11
|
+
for rule in "$RULES_DIR"/*.md; do
|
|
12
|
+
[ -f "$rule" ] || continue
|
|
13
|
+
printf '\n<lisa-harper-fabric-rule path="%s">\n' "$rule"
|
|
14
|
+
cat "$rule"
|
|
15
|
+
printf '\n</lisa-harper-fabric-rule>\n'
|
|
16
|
+
done
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Harper/Fabric Project Rules
|
|
2
|
+
|
|
3
|
+
These rules apply to Harper/Fabric component apps managed by Lisa.
|
|
4
|
+
|
|
5
|
+
## Build The Real Thing
|
|
6
|
+
|
|
7
|
+
- Do not ship client-side workarounds for missing backend behavior. If a change needs a Harper resource, schema update, seed path, or deploy script change, make that change.
|
|
8
|
+
- Do not silently downgrade a feature to a stub, mock, or partial path. Only use a stop-gap when the user explicitly asks for one.
|
|
9
|
+
- Treat deployed Fabric behavior as part of the product. A change is unfinished until the local build and the relevant deployed or smoke path agree.
|
|
10
|
+
|
|
11
|
+
## TypeScript Is Source
|
|
12
|
+
|
|
13
|
+
- TypeScript under `src/` is the source of truth for Harper resources, browser modules, shared libraries, and operational scripts.
|
|
14
|
+
- `harper-app/config.yaml`, `harper-app/schema.graphql`, HTML, CSS, docs, and research fixtures are source assets.
|
|
15
|
+
- `harper-app/resources.js` and `harper-app/web/**/*.js` are generated deploy artifacts. Never edit them directly; change the matching TypeScript and run `bun run build`.
|
|
16
|
+
- Deployment, bootstrap, smoke, seed, verify, preview, token, crawl, ingest, and extraction commands must run from compiled JavaScript or generated Harper assets, not stale checked-in JavaScript.
|
|
17
|
+
|
|
18
|
+
## Harper/Fabric Deploy Surface
|
|
19
|
+
|
|
20
|
+
- A deployable Harper app must keep `config.yaml`, `schema.graphql`, `resources.js`, and `web/**` at the component root that Fabric packages.
|
|
21
|
+
- Build before symlinking, packaging, or deploying `harper-app/`.
|
|
22
|
+
- Keep runtime secrets out of tracked files. Prefer environment variables or OS keychain helpers; document secret locations without recording secret values.
|
|
23
|
+
- When discovering a Harper/Fabric limitation or workaround, document the symptom, root cause, fix, and tempting broken alternatives in the project runbook.
|
|
24
|
+
|
|
25
|
+
## Documentation Sync
|
|
26
|
+
|
|
27
|
+
- Project docs are operational contracts. When commands, schema, deploy shape, data model, seeded-data summary, crawler behavior, credential handling, or UI components change, update the matching project doc in the same change.
|
|
28
|
+
- Harper schema changes must update the conceptual schema docs and any verify paths that assert joins or row counts.
|
|
29
|
+
- Deploy topology, credential rotation, generated-artifact layout, and Fabric workarounds belong in the Fabric runbook.
|
|
30
|
+
- UI component, token, variant, or design-system changes must update the design-system catalog.
|
|
31
|
+
|
|
32
|
+
## UI Work
|
|
33
|
+
|
|
34
|
+
- Browser UI must be composed from the project design system. Search the existing design-system catalog and components before adding markup.
|
|
35
|
+
- Add or extend the design-system component first, then consume it from pages.
|
|
36
|
+
- Pages should import UI components through the design-system barrel, not deep component paths.
|
|
37
|
+
- Do not introduce raw colors or ad hoc spacing in UI styles. Use design tokens and update the token docs when adding tokens.
|
|
38
|
+
- Every UI change needs Playwright verification that checks DOM behavior and captures screenshots. Type checks and unit tests are not enough for visual changes.
|
|
39
|
+
|
|
40
|
+
## Immutable Code
|
|
41
|
+
|
|
42
|
+
- Prefer immutable data flow: `readonly` types, pure transformations, object/array copies, and explicit returned values.
|
|
43
|
+
- Do not mutate parameters, imported singletons, fixture objects, records, arrays, DOM-derived state, or config objects unless an API requires mutation and the exception is documented locally.
|
|
44
|
+
- Avoid `let`; use `const` and small pure helper functions instead.
|
|
45
|
+
- Avoid `any`, broad casts, and `ts-ignore`. If an external API forces an escape hatch, isolate it behind a typed adapter.
|
|
46
|
+
|
|
47
|
+
## Verification
|
|
48
|
+
|
|
49
|
+
- Run `bun run build`, `bun run typecheck`, and the smallest relevant test command before reporting completion.
|
|
50
|
+
- For deploy-affecting changes, also run the project smoke command against the local or deployed Harper endpoint.
|
|
51
|
+
- If a verification command cannot run, report the exact command and blocker.
|
package/scripts/build-plugins.sh
CHANGED
|
@@ -34,7 +34,7 @@ node "$ROOT_DIR/scripts/generate-codex-plugin-artifacts.mjs" "$BASE_OUT" "$VERSI
|
|
|
34
34
|
echo "Built plugins/lisa (v$VERSION)"
|
|
35
35
|
|
|
36
36
|
# Build stack-specific plugins (NO base copy)
|
|
37
|
-
STACKS=(typescript expo nestjs cdk rails)
|
|
37
|
+
STACKS=(typescript expo nestjs cdk harper-fabric rails)
|
|
38
38
|
for stack in "${STACKS[@]}"; do
|
|
39
39
|
STACK_SRC="$SRC_DIR/$stack"
|
|
40
40
|
if [ ! -d "$STACK_SRC" ]; then
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Copy shell hook scripts next to the compiled Codex hook installer.
|
|
4
|
+
*
|
|
5
|
+
* TypeScript compilation emits `dist/codex/hooks-installer.js`, whose runtime
|
|
6
|
+
* resolver looks for scripts in `dist/codex/scripts/`. The source scripts are
|
|
7
|
+
* plain shell files, so tsc does not copy them.
|
|
8
|
+
*/
|
|
9
|
+
import fs from "node:fs";
|
|
10
|
+
import path from "node:path";
|
|
11
|
+
|
|
12
|
+
const repoRoot = path.resolve(import.meta.dirname, "..");
|
|
13
|
+
const sourceDir = path.join(repoRoot, "src", "codex", "scripts");
|
|
14
|
+
const destDir = path.join(repoRoot, "dist", "codex", "scripts");
|
|
15
|
+
|
|
16
|
+
fs.rmSync(destDir, { recursive: true, force: true });
|
|
17
|
+
fs.mkdirSync(destDir, { recursive: true });
|
|
18
|
+
|
|
19
|
+
for (const entry of fs.readdirSync(sourceDir, { withFileTypes: true })) {
|
|
20
|
+
if (!entry.isFile()) {
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const sourcePath = path.join(sourceDir, entry.name);
|
|
25
|
+
const destPath = path.join(destDir, entry.name);
|
|
26
|
+
fs.copyFileSync(sourcePath, destPath);
|
|
27
|
+
fs.chmodSync(destPath, 0o755);
|
|
28
|
+
}
|
|
@@ -267,6 +267,21 @@ function metadataFor(pluginName) {
|
|
|
267
267
|
keywords: ["aws", "cdk", "infrastructure"],
|
|
268
268
|
defaultPrompt: ["Review this CDK change"],
|
|
269
269
|
},
|
|
270
|
+
"lisa-harper-fabric": {
|
|
271
|
+
displayName: "Lisa Harper/Fabric",
|
|
272
|
+
description:
|
|
273
|
+
"Harper/Fabric-specific Lisa rules for TypeScript component apps.",
|
|
274
|
+
shortDescription: "Harper/Fabric workflow guidance",
|
|
275
|
+
longDescription:
|
|
276
|
+
"Lisa rules for Harper/Fabric deploy surfaces, generated JavaScript artifacts, operational docs, Playwright UI verification, and immutable TypeScript.",
|
|
277
|
+
category: "Coding",
|
|
278
|
+
capabilities: ["Interactive", "Write"],
|
|
279
|
+
keywords: ["harper", "fabric", "typescript", "playwright"],
|
|
280
|
+
defaultPrompt: [
|
|
281
|
+
"Review this Harper/Fabric change",
|
|
282
|
+
"Verify this Harper/Fabric deployment path",
|
|
283
|
+
],
|
|
284
|
+
},
|
|
270
285
|
"lisa-rails": {
|
|
271
286
|
displayName: "Lisa Rails",
|
|
272
287
|
description:
|
|
@@ -117,7 +117,7 @@ if command -v jq >/dev/null 2>&1; then
|
|
|
117
117
|
| jq -r '.[] | select(.name == "lisa" and .source != "github") | .source' 2>/dev/null \
|
|
118
118
|
| head -n 1)
|
|
119
119
|
if [ -n "${STALE_LISA_SOURCE:-}" ]; then
|
|
120
|
-
for stale_plugin in "lisa@lisa" "lisa-typescript@lisa" "lisa-expo@lisa" "lisa-nestjs@lisa" "lisa-cdk@lisa" "lisa-rails@lisa"; do
|
|
120
|
+
for stale_plugin in "lisa@lisa" "lisa-typescript@lisa" "lisa-expo@lisa" "lisa-nestjs@lisa" "lisa-cdk@lisa" "lisa-harper-fabric@lisa" "lisa-rails@lisa"; do
|
|
121
121
|
claude plugin uninstall "$stale_plugin" --scope project </dev/null >/dev/null 2>&1 || true
|
|
122
122
|
done
|
|
123
123
|
claude plugin marketplace remove lisa </dev/null >/dev/null 2>&1 || true
|
|
@@ -140,7 +140,7 @@ fi
|
|
|
140
140
|
# installed lisa-* plugins so they get re-resolved as remote. Worktrees under
|
|
141
141
|
# .claude/worktrees/ have their own per-cwd plugin install state and are
|
|
142
142
|
# healed in the same pass. A marker file gates one-time execution per cwd.
|
|
143
|
-
LISA_PLUGINS=("lisa@lisa" "lisa-typescript@lisa" "lisa-expo@lisa" "lisa-nestjs@lisa" "lisa-cdk@lisa" "lisa-rails@lisa")
|
|
143
|
+
LISA_PLUGINS=("lisa@lisa" "lisa-typescript@lisa" "lisa-expo@lisa" "lisa-nestjs@lisa" "lisa-cdk@lisa" "lisa-harper-fabric@lisa" "lisa-rails@lisa")
|
|
144
144
|
HEAL_V2_MARKER_NAME=".lisa-marketplace-heal-v2"
|
|
145
145
|
|
|
146
146
|
heal_local_classification() {
|
|
@@ -210,7 +210,7 @@ claude plugin install "lisa@lisa" --scope project </dev/null 2>&1 || true
|
|
|
210
210
|
# Detect which stack plugin to install from .claude/settings.json
|
|
211
211
|
LISA_STACK=""
|
|
212
212
|
if [ -f "$SETTINGS_FILE" ] && command -v jq >/dev/null 2>&1; then
|
|
213
|
-
for stack in expo nestjs cdk rails; do
|
|
213
|
+
for stack in expo nestjs cdk harper-fabric rails; do
|
|
214
214
|
if jq -e "(.enabledPlugins // {}) | has(\"lisa-${stack}@lisa\")" "$SETTINGS_FILE" >/dev/null 2>&1; then
|
|
215
215
|
LISA_STACK="$stack"
|
|
216
216
|
break
|
|
@@ -232,7 +232,7 @@ if [ -n "$LISA_STACK" ]; then
|
|
|
232
232
|
fi
|
|
233
233
|
|
|
234
234
|
# Uninstall old monolithic plugins during migration
|
|
235
|
-
for old_plugin in "lisa-typescript@lisa" "lisa-expo@lisa" "lisa-nestjs@lisa" "lisa-cdk@lisa" "lisa-rails@lisa"; do
|
|
235
|
+
for old_plugin in "lisa-typescript@lisa" "lisa-expo@lisa" "lisa-nestjs@lisa" "lisa-cdk@lisa" "lisa-harper-fabric@lisa" "lisa-rails@lisa"; do
|
|
236
236
|
# Skip if it's the same as what we just installed
|
|
237
237
|
case "$LISA_STACK" in
|
|
238
238
|
"") [ "$old_plugin" = "lisa-typescript@lisa" ] && continue ;;
|
|
@@ -255,7 +255,7 @@ for plugin in \
|
|
|
255
255
|
done
|
|
256
256
|
|
|
257
257
|
# Install stack-specific third-party plugins
|
|
258
|
-
if [ "$LISA_STACK" = "expo" ]; then
|
|
258
|
+
if [ "$LISA_STACK" = "expo" ] || [ "$LISA_STACK" = "harper-fabric" ]; then
|
|
259
259
|
for plugin in \
|
|
260
260
|
"playwright@claude-plugins-official" \
|
|
261
261
|
"posthog@claude-plugins-official"; do
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "./typescript.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"lib": ["ES2022", "DOM"],
|
|
5
|
+
"rootDir": ".",
|
|
6
|
+
"outDir": "dist",
|
|
7
|
+
"resolveJsonModule": true,
|
|
8
|
+
"allowJs": false,
|
|
9
|
+
"skipLibCheck": true,
|
|
10
|
+
"types": ["node", "vitest"]
|
|
11
|
+
},
|
|
12
|
+
"include": ["src/**/*.ts", "tests/**/*.ts"],
|
|
13
|
+
"exclude": [
|
|
14
|
+
"dist",
|
|
15
|
+
"coverage",
|
|
16
|
+
"node_modules",
|
|
17
|
+
"harper-app/resources.js",
|
|
18
|
+
"harper-app/web/**/*.js"
|
|
19
|
+
]
|
|
20
|
+
}
|