@codyswann/lisa 4.60.1 → 4.60.3
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/all/copy-overwrite/scripts/lib/worktree-dependencies.d.mts +5 -0
- package/all/copy-overwrite/scripts/lib/worktree-dependencies.mjs +65 -0
- package/all/copy-overwrite/scripts/lisa-run-gates.mjs +10 -2
- package/cdk/package-lisa/package.lisa.json +12 -12
- package/dist/cli/lisa-test-run.d.ts.map +1 -1
- package/dist/cli/lisa-test-run.js +4 -0
- package/dist/cli/lisa-test-run.js.map +1 -1
- package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
- package/dist/core/lisa-owned-hash-ledger.js +20 -0
- package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
- package/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +22 -10
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/expo/package-lisa/package.lisa.json +16 -16
- package/harper-fabric/package-lisa/package.lisa.json +19 -19
- package/nestjs/package-lisa/package.lisa.json +10 -10
- package/npm-package/package-lisa/package.lisa.json +8 -8
- package/package.json +28 -28
- package/phaser/package-lisa/package.lisa.json +23 -23
- 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/worktree-dependencies.d.mts +5 -0
- package/scripts/lib/worktree-dependencies.mjs +65 -0
- package/scripts/two-channel-couplings.json +2 -2
- package/typescript/copy-contents/.husky/pre-push +1 -1
- package/typescript/package-lisa/package.lisa.json +19 -19
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "4.60.
|
|
3
|
+
"version": "4.60.3",
|
|
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": "4.60.
|
|
3
|
+
"version": "4.60.3",
|
|
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": "4.60.
|
|
3
|
+
"version": "4.60.3",
|
|
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": "4.60.
|
|
3
|
+
"version": "4.60.3",
|
|
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"
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// This file is managed by Lisa and IS replaced on each `lisa` run.
|
|
2
|
+
// Do not edit directly — durable changes belong upstream in Lisa.
|
|
3
|
+
|
|
4
|
+
/** Diagnose upward dependency resolution from an uninstalled nested worktree. */
|
|
5
|
+
export function worktreeDependencyProblem(cwd?: string): string | null;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// This file is managed by Lisa and IS replaced on each `lisa` run.
|
|
2
|
+
// Do not edit directly — durable changes belong upstream in Lisa.
|
|
3
|
+
|
|
4
|
+
import { existsSync, readFileSync, realpathSync, statSync } from "node:fs";
|
|
5
|
+
import { dirname, join, resolve } from "node:path";
|
|
6
|
+
|
|
7
|
+
import { invokedAsScript } from "./invoked-as-script.mjs";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Identify upward dependency resolution outside a nested linked worktree.
|
|
11
|
+
* Reads Git's worktree metadata without installing, moving or modifying anything.
|
|
12
|
+
* Local node_modules, including an explicit symlink, are an intentional install.
|
|
13
|
+
* @param {string} [cwd] Directory from which the tool will resolve dependencies.
|
|
14
|
+
* @returns {string|null} Setup diagnosis, or null when this condition is absent.
|
|
15
|
+
*/
|
|
16
|
+
export function worktreeDependencyProblem(cwd = process.cwd()) {
|
|
17
|
+
try {
|
|
18
|
+
let root = realpathSync(cwd);
|
|
19
|
+
let localModules = false;
|
|
20
|
+
while (!existsSync(join(root, ".git"))) {
|
|
21
|
+
localModules ||= existsSync(join(root, "node_modules"));
|
|
22
|
+
const parent = dirname(root);
|
|
23
|
+
if (parent === root) return null;
|
|
24
|
+
root = parent;
|
|
25
|
+
}
|
|
26
|
+
if (localModules || existsSync(join(root, "node_modules"))) return null;
|
|
27
|
+
const marker = join(root, ".git");
|
|
28
|
+
if (!statSync(marker).isFile()) return null;
|
|
29
|
+
const gitdir = readFileSync(marker, "utf8")
|
|
30
|
+
.split("\n")
|
|
31
|
+
.find(line => line.startsWith("gitdir:"))
|
|
32
|
+
?.slice("gitdir:".length)
|
|
33
|
+
.trim();
|
|
34
|
+
if (!gitdir) return null;
|
|
35
|
+
const control = resolve(root, gitdir.trim());
|
|
36
|
+
// commondir distinguishes a linked worktree from a submodule's .git file.
|
|
37
|
+
realpathSync(
|
|
38
|
+
resolve(control, readFileSync(join(control, "commondir"), "utf8").trim())
|
|
39
|
+
);
|
|
40
|
+
let modules = "";
|
|
41
|
+
let enclosingCheckout = false;
|
|
42
|
+
for (let parent = dirname(root); ; parent = dirname(parent)) {
|
|
43
|
+
if (!modules && existsSync(join(parent, "node_modules")))
|
|
44
|
+
modules = join(parent, "node_modules");
|
|
45
|
+
// The enclosing checkout may itself be a linked worktree. Its physical
|
|
46
|
+
// location, not the common Git directory, controls Node's upward search.
|
|
47
|
+
// Node continues past an enclosing checkout that has no dependencies.
|
|
48
|
+
enclosingCheckout ||= existsSync(join(parent, ".git"));
|
|
49
|
+
if (enclosingCheckout && modules)
|
|
50
|
+
return `This nested worktree has no dependencies of its own: ${root}. Node can resolve packages from the parent checkout at ${modules}. This is a worktree setup problem, not evidence of a defect in this branch. Install dependencies in this worktree with CI=1 using the project's package manager, or use an isolated checkout. No tool was run.`;
|
|
51
|
+
if (parent === dirname(parent)) break;
|
|
52
|
+
}
|
|
53
|
+
} catch {
|
|
54
|
+
// Not every caller is a normal linked Git worktree; do not invent a diagnosis.
|
|
55
|
+
}
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
if (invokedAsScript(import.meta.url)) {
|
|
60
|
+
const problem = worktreeDependencyProblem();
|
|
61
|
+
if (problem) {
|
|
62
|
+
console.error(problem);
|
|
63
|
+
process.exitCode = 1;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -1029,7 +1029,7 @@ fi
|
|
|
1029
1029
|
# measured, and the honest command for such a project is still `test:cov` —
|
|
1030
1030
|
# slower, but answering to the floor that was configured for what it runs.
|
|
1031
1031
|
COVERAGE_SCRIPT="test:cov"
|
|
1032
|
-
if node -e 'const s=require("./package.json").scripts||{};const resolve=(k,d)=>{const
|
|
1032
|
+
if node -e 'const s=require("./package.json").scripts||{};const preflight="node scripts/lib/worktree-dependencies.mjs && ";const resolve=(k,d)=>{const raw=s[k];const v=typeof raw==="string"&&raw.startsWith(preflight)?raw.slice(preflight.length):raw;const hop=/^\$npm_execpath\s+run\s+(\S+)$/.exec((v||"").trim());return hop&&d<4?resolve(hop[1],d+1):v;};const u=resolve("test:cov:unit",0);const marker=/^(?:env(?:\s+-\S+)*\s+)?(?:[A-Za-z_][A-Za-z0-9_]*=\S+\s+)*LISA_COVERAGE_SCOPE=unit(?:\s|$)/;process.exit(typeof u==="string"&&marker.test(u.trim())?0:1)' >/dev/null 2>&1; then
|
|
1033
1033
|
COVERAGE_SCRIPT="test:cov:unit"
|
|
1034
1034
|
fi
|
|
1035
1035
|
|
|
@@ -8,27 +8,27 @@
|
|
|
8
8
|
"check:verification": "node scripts/check-verification-coverage.mjs",
|
|
9
9
|
"check:work-item": "node scripts/lisa-work-item.mjs validate-pr",
|
|
10
10
|
"check:work-item:push": "node scripts/lisa-work-item.mjs validate-push",
|
|
11
|
-
"format": "prettier --check . --write",
|
|
12
|
-
"format:check:lisa": "prettier --check .",
|
|
13
|
-
"knip:check:lisa": "knip",
|
|
14
|
-
"knip:fix": "knip --fix",
|
|
15
|
-
"lint:fix": "oxlint --fix && eslint . --fix",
|
|
16
|
-
"lint:lisa": "oxlint && eslint . --quiet",
|
|
17
|
-
"lint:slow:lisa": "eslint . --config eslint.slow.config.ts --quiet",
|
|
11
|
+
"format": "node scripts/lib/worktree-dependencies.mjs && prettier --check . --write",
|
|
12
|
+
"format:check:lisa": "node scripts/lib/worktree-dependencies.mjs && prettier --check .",
|
|
13
|
+
"knip:check:lisa": "node scripts/lib/worktree-dependencies.mjs && knip",
|
|
14
|
+
"knip:fix": "node scripts/lib/worktree-dependencies.mjs && knip --fix",
|
|
15
|
+
"lint:fix": "node scripts/lib/worktree-dependencies.mjs && oxlint --fix && eslint . --fix",
|
|
16
|
+
"lint:lisa": "node scripts/lib/worktree-dependencies.mjs && oxlint && eslint . --quiet",
|
|
17
|
+
"lint:slow:lisa": "node scripts/lib/worktree-dependencies.mjs && eslint . --config eslint.slow.config.ts --quiet",
|
|
18
18
|
"nightly:health": "node scripts/check-nightly-e2e-health.mjs",
|
|
19
19
|
"prepare": "node -e \"if (process.env.INIT_CWD?.includes('.serverless')) process.exit(0); process.exit(1);\" || husky install || true",
|
|
20
20
|
"setup:deploy-key": "setup-deploy-key",
|
|
21
|
-
"sg:scan:lisa": "ast-grep scan",
|
|
22
|
-
"sg:test": "ast-grep test",
|
|
23
|
-
"test:cov:lisa": "lisa-test-run --profile typescript --adapter vitest -- vitest run --coverage",
|
|
24
|
-
"test:cov:unit:lisa": "LISA_COVERAGE_SCOPE=unit lisa-test-run --profile typescript --adapter vitest -- vitest run --coverage --exclude='**/integration/**'",
|
|
25
|
-
"test:integration:lisa": "lisa-test-run --profile typescript --adapter vitest -- vitest run '.integration.' 'integration/'",
|
|
26
|
-
"test:lisa": "lisa-test-run --profile typescript --adapter vitest -- vitest run",
|
|
27
|
-
"test:mutation": "LISA_TEST_SCRATCH_PREFIXES='[\"lisa-mutation-\",\"worker-\"]' lisa-test-run --profile typescript --adapter direct -- node scripts/lisa-mutation.mjs",
|
|
28
|
-
"test:node:lisa": "LISA_TEST_SCRATCH_PREFIXES='[\"node-\"]' lisa-test-run --profile typescript --adapter direct -- node scripts/lisa-test-node.mjs",
|
|
29
|
-
"test:unit:lisa": "lisa-test-run --profile typescript --adapter vitest -- vitest run --exclude='**/integration/**'",
|
|
30
|
-
"test:watch:lisa": "lisa-test-run --profile typescript --adapter vitest -- vitest",
|
|
31
|
-
"typecheck:lisa": "tsc --noEmit"
|
|
21
|
+
"sg:scan:lisa": "node scripts/lib/worktree-dependencies.mjs && ast-grep scan",
|
|
22
|
+
"sg:test": "node scripts/lib/worktree-dependencies.mjs && ast-grep test",
|
|
23
|
+
"test:cov:lisa": "node scripts/lib/worktree-dependencies.mjs && lisa-test-run --profile typescript --adapter vitest -- vitest run --coverage",
|
|
24
|
+
"test:cov:unit:lisa": "node scripts/lib/worktree-dependencies.mjs && LISA_COVERAGE_SCOPE=unit lisa-test-run --profile typescript --adapter vitest -- vitest run --coverage --exclude='**/integration/**'",
|
|
25
|
+
"test:integration:lisa": "node scripts/lib/worktree-dependencies.mjs && lisa-test-run --profile typescript --adapter vitest -- vitest run '.integration.' 'integration/'",
|
|
26
|
+
"test:lisa": "node scripts/lib/worktree-dependencies.mjs && lisa-test-run --profile typescript --adapter vitest -- vitest run",
|
|
27
|
+
"test:mutation": "node scripts/lib/worktree-dependencies.mjs && LISA_TEST_SCRATCH_PREFIXES='[\"lisa-mutation-\",\"worker-\"]' lisa-test-run --profile typescript --adapter direct -- node scripts/lisa-mutation.mjs",
|
|
28
|
+
"test:node:lisa": "node scripts/lib/worktree-dependencies.mjs && LISA_TEST_SCRATCH_PREFIXES='[\"node-\"]' lisa-test-run --profile typescript --adapter direct -- node scripts/lisa-test-node.mjs",
|
|
29
|
+
"test:unit:lisa": "node scripts/lib/worktree-dependencies.mjs && lisa-test-run --profile typescript --adapter vitest -- vitest run --exclude='**/integration/**'",
|
|
30
|
+
"test:watch:lisa": "node scripts/lib/worktree-dependencies.mjs && lisa-test-run --profile typescript --adapter vitest -- vitest",
|
|
31
|
+
"typecheck:lisa": "node scripts/lib/worktree-dependencies.mjs && tsc --noEmit"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"eslint-plugin-oxlint": "^1.62.0",
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
"vitest": "^4.1.0"
|
|
77
77
|
},
|
|
78
78
|
"scripts": {
|
|
79
|
-
"build": "tsc",
|
|
79
|
+
"build": "node scripts/lib/worktree-dependencies.mjs && tsc",
|
|
80
80
|
"format:check": "$npm_execpath run format:check:lisa",
|
|
81
81
|
"knip:check": "$npm_execpath run knip:check:lisa",
|
|
82
82
|
"lint": "$npm_execpath run lint:lisa",
|