@codyswann/lisa 2.225.0 → 2.225.2
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/scripts/check-e2e-coverage.mjs +19 -2
- 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/.codex-plugin/skills/lisa-doctor/SKILL.md +44 -12
- package/plugins/lisa/.codex-plugin/skills/lisa-github-validate-issue/SKILL.md +17 -7
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-validate-ticket/SKILL.md +17 -7
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-validate-issue/SKILL.md +17 -7
- package/plugins/lisa/skills/lisa-doctor/SKILL.md +44 -12
- package/plugins/lisa/skills/lisa-github-validate-issue/SKILL.md +17 -7
- package/plugins/lisa/skills/lisa-jira-validate-ticket/SKILL.md +17 -7
- package/plugins/lisa/skills/lisa-linear-validate-issue/SKILL.md +17 -7
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/lisa-doctor/SKILL.md +44 -12
- package/plugins/lisa-agy/skills/lisa-github-validate-issue/SKILL.md +17 -7
- package/plugins/lisa-agy/skills/lisa-jira-validate-ticket/SKILL.md +17 -7
- package/plugins/lisa-agy/skills/lisa-linear-validate-issue/SKILL.md +17 -7
- 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-copilot/skills/lisa-doctor/SKILL.md +44 -12
- package/plugins/lisa-copilot/skills/lisa-github-validate-issue/SKILL.md +17 -7
- package/plugins/lisa-copilot/skills/lisa-jira-validate-ticket/SKILL.md +17 -7
- package/plugins/lisa-copilot/skills/lisa-linear-validate-issue/SKILL.md +17 -7
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/skills/lisa-doctor/SKILL.md +44 -12
- package/plugins/lisa-cursor/skills/lisa-github-validate-issue/SKILL.md +17 -7
- package/plugins/lisa-cursor/skills/lisa-jira-validate-ticket/SKILL.md +17 -7
- package/plugins/lisa-cursor/skills/lisa-linear-validate-issue/SKILL.md +17 -7
- 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/plugins/src/base/skills/lisa-doctor/SKILL.md +44 -12
- package/plugins/src/base/skills/lisa-github-validate-issue/SKILL.md +17 -7
- package/plugins/src/base/skills/lisa-jira-validate-ticket/SKILL.md +17 -7
- package/plugins/src/base/skills/lisa-linear-validate-issue/SKILL.md +17 -7
- package/typescript/copy-overwrite/.github/GITHUB_ACTIONS.md +6 -7
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.225.
|
|
3
|
+
"version": "2.225.2",
|
|
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.225.
|
|
3
|
+
"version": "2.225.2",
|
|
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.225.
|
|
3
|
+
"version": "2.225.2",
|
|
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.225.
|
|
3
|
+
"version": "2.225.2",
|
|
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"
|
|
@@ -307,31 +307,63 @@ pull Lisa's own git history and read what actually changed:
|
|
|
307
307
|
|
|
308
308
|
```bash
|
|
309
309
|
gh api "repos/CodySwannGT/lisa/compare/v<installed>...v<latest>" \
|
|
310
|
-
--paginate --slurp
|
|
311
|
-
|
|
310
|
+
--paginate --slurp |
|
|
311
|
+
jq '{total_commits: .[0].total_commits, files: [.[0].files[]?.filename], commits: [.[].commits[]? | {sha, subject: (.commit.message | split("\n")[0]), api_url: .url, html_url, parents: [.parents[]?.sha]}]}'
|
|
312
312
|
```
|
|
313
313
|
|
|
314
314
|
`--paginate` fetches every page of commits, and `--slurp` gathers those pages into a single
|
|
315
|
-
array before
|
|
316
|
-
|
|
317
|
-
|
|
315
|
+
array before the external `jq` projection runs. GitHub CLI does not permit its built-in `--jq`
|
|
316
|
+
flag together with `--slurp`, so keep the pipe as shown; without `--slurp`, paginated responses
|
|
317
|
+
are not one merged input. `total_commits` and `files` only need the first page
|
|
318
|
+
(files are capped at 300 and not repeated on later pages); `commits` flattens across all pages
|
|
319
|
+
while retaining each commit SHA and URLs needed for accurate follow-up.
|
|
320
|
+
|
|
321
|
+
After path-scoping identifies a candidate commit, fetch its targeted file-level diff context by
|
|
322
|
+
the retained SHA rather than attributing from the subject alone:
|
|
323
|
+
|
|
324
|
+
```bash
|
|
325
|
+
gh api "repos/CodySwannGT/lisa/commits/<sha>" \
|
|
326
|
+
--jq '{sha, files: [.files[]? | select(.filename == "<relevant-path>" or (.filename | startswith("<relevant-prefix>/"))) | {filename, status, additions, deletions, changes, patch}]}'
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
Preserve the returned filename, status, counts, and available patch with the SHA in the
|
|
330
|
+
upstream-history projection. A missing or truncated `patch` is not proof of no relevant change;
|
|
331
|
+
use the compare diff fallback below or downgrade attribution to `WARN` when commit-level context
|
|
332
|
+
cannot be established.
|
|
318
333
|
|
|
319
334
|
The compare endpoint paginates commits (250 without `--paginate`) and only lists changed files
|
|
320
335
|
on the first page, capped at 300 total — a large version window can silently drop commits or
|
|
321
336
|
files. If `total_commits` or the file count looks truncated, re-run with the
|
|
322
337
|
`application/vnd.github.diff` accept header (`gh api ... -H "Accept: application/vnd.github.diff"`)
|
|
323
|
-
to pull the full patch text, or fall back to the
|
|
338
|
+
to pull the full patch text, or fall back to the bounded-fetch `git log` below. When completeness
|
|
324
339
|
still can't be established, say so in the finding and mark it `WARN` rather than attributing
|
|
325
340
|
drift with unverified confidence.
|
|
326
341
|
|
|
327
342
|
Fallbacks, in order: `gh api repos/CodySwannGT/lisa/commits?path=<template-path>` for a
|
|
328
343
|
path-scoped view — note this endpoint has no way to bound results to the `v<installed>..v<latest>`
|
|
329
|
-
window, so treat its output as best-effort context only, not authoritative attribution; a
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
344
|
+
window, so treat its output as best-effort context only, not authoritative attribution; a
|
|
345
|
+
finite-depth, explicit-tag fetch, which is bounded to the two version refs and should be preferred
|
|
346
|
+
for definitive attribution; or the local marketplace/plugin cache checkout when the runtime has
|
|
347
|
+
one. For the fetch fallback, use a temporary directory and a fixed history ceiling:
|
|
348
|
+
|
|
349
|
+
```bash
|
|
350
|
+
lisa_history_dir="$(mktemp -d)"
|
|
351
|
+
git init "$lisa_history_dir"
|
|
352
|
+
git -C "$lisa_history_dir" remote add origin https://github.com/CodySwannGT/lisa.git
|
|
353
|
+
git -C "$lisa_history_dir" fetch --no-tags --filter=blob:none --depth=256 origin \
|
|
354
|
+
refs/tags/v<installed>:refs/tags/v<installed> \
|
|
355
|
+
refs/tags/v<latest>:refs/tags/v<latest>
|
|
356
|
+
git -C "$lisa_history_dir" merge-base --is-ancestor v<installed> v<latest>
|
|
357
|
+
git -C "$lisa_history_dir" log --format='%H%x09%s' v<installed>..v<latest> -- <paths>
|
|
358
|
+
git -C "$lisa_history_dir" show --format=fuller --stat --patch <relevant-sha> -- <paths>
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
The explicit tag refspecs, `--no-tags`, and finite `--depth=256` make this fetch bounded. Do not
|
|
362
|
+
silently deepen beyond that ceiling. If `merge-base --is-ancestor` fails, the shallow window is
|
|
363
|
+
incomplete (or the tags are not on one ancestry line): do not make definitive attribution from
|
|
364
|
+
it. If none of the bounded sources are reachable, or only the unbounded path-scoped fallback is
|
|
365
|
+
reachable, report the gap as a `WARN`-level observability note — never fail the audit because
|
|
366
|
+
history was unavailable or incomplete.
|
|
335
367
|
3. **Scope the reading to what the finding touches.** Filter the commit list to the paths that
|
|
336
368
|
generate the failing surface: the detected stacks' template dirs (`typescript/`, `expo/`, …),
|
|
337
369
|
`plugins/src/base/` for skills/hooks/rules, `scripts/` for governance scripts, and the shipped
|
|
@@ -366,13 +366,23 @@ reach every external surface the work requires. Enumerate the surfaces this issu
|
|
|
366
366
|
alarms", "pull the copy from the Google Doc", "check the Sentry issues"),
|
|
367
367
|
- tooling the work plainly implies (a deploy target, a database, a third-party API).
|
|
368
368
|
|
|
369
|
-
For each surface, prove **read** access from the current runtime with
|
|
370
|
-
through
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
369
|
+
For each surface, prove **read** access from the current runtime with a target-resource-specific,
|
|
370
|
+
read-only probe through its sanctioned access layer: the matching MCP tool or `lisa-*-access` skill,
|
|
371
|
+
or an authenticated fetch using environment-injected authentication. Identity-only commands such as
|
|
372
|
+
`aws sts get-caller-identity`, `gh auth status`, and vendor equivalents are preflight checks only;
|
|
373
|
+
they never satisfy F5 by themselves. A successful probe for one surface does not cover another:
|
|
374
|
+
reading the named GitHub repository, CloudWatch log group, Sentry project, or linked document must
|
|
375
|
+
each succeed separately when that surface is required.
|
|
376
|
+
|
|
377
|
+
Attempt to resolve a gap before failing, but only through another configured brokered access layer
|
|
378
|
+
or environment-injected authentication. A sanctioned broker may use its own credential store
|
|
379
|
+
internally; the validator must never autonomously inspect, read, copy, print, or export raw
|
|
380
|
+
credentials, keychains, credential files, or token stores, and must never invoke low-level secret
|
|
381
|
+
tools to recover them. This preserves the intake agent's discover-first duty without exposing
|
|
382
|
+
credential material.
|
|
383
|
+
|
|
384
|
+
- `PASS` — every required surface has its own successful target-resource read probe or authenticated
|
|
385
|
+
fetch through the sanctioned access layer.
|
|
376
386
|
- `N/A` — the issue needs nothing beyond the repository and the tracker itself.
|
|
377
387
|
- `FAIL` — a required surface is unreachable after the resolution attempt. Name the exact surface
|
|
378
388
|
and what was probed. Intake callers must route this to `blocked` + human escalation with the
|
|
@@ -297,13 +297,23 @@ reach every external surface the work requires. Enumerate the surfaces this item
|
|
|
297
297
|
alarms", "pull the copy from the Google Doc", "check the Sentry issues"),
|
|
298
298
|
- tooling the work plainly implies (a deploy target, a database, a third-party API).
|
|
299
299
|
|
|
300
|
-
For each surface, prove **read** access from the current runtime with
|
|
301
|
-
through
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
300
|
+
For each surface, prove **read** access from the current runtime with a target-resource-specific,
|
|
301
|
+
read-only probe through its sanctioned access layer: the matching MCP tool or `lisa-*-access` skill,
|
|
302
|
+
or an authenticated fetch using environment-injected authentication. Identity-only commands such as
|
|
303
|
+
`aws sts get-caller-identity`, `gh auth status`, and vendor equivalents are preflight checks only;
|
|
304
|
+
they never satisfy F5 by themselves. A successful probe for one surface does not cover another:
|
|
305
|
+
reading the named GitHub repository, CloudWatch log group, Sentry project, or linked document must
|
|
306
|
+
each succeed separately when that surface is required.
|
|
307
|
+
|
|
308
|
+
Attempt to resolve a gap before failing, but only through another configured brokered access layer
|
|
309
|
+
or environment-injected authentication. A sanctioned broker may use its own credential store
|
|
310
|
+
internally; the validator must never autonomously inspect, read, copy, print, or export raw
|
|
311
|
+
credentials, keychains, credential files, or token stores, and must never invoke low-level secret
|
|
312
|
+
tools to recover them. This preserves the intake agent's discover-first duty without exposing
|
|
313
|
+
credential material.
|
|
314
|
+
|
|
315
|
+
- `PASS` — every required surface has its own successful target-resource read probe or authenticated
|
|
316
|
+
fetch through the sanctioned access layer.
|
|
307
317
|
- `N/A` — the item needs nothing beyond the repository and the tracker itself.
|
|
308
318
|
- `FAIL` — a required surface is unreachable after the resolution attempt. Name the exact surface
|
|
309
319
|
and what was probed. Intake callers must route this to `blocked` + human escalation with the
|
|
@@ -303,13 +303,23 @@ reach every external surface the work requires. Enumerate the surfaces this item
|
|
|
303
303
|
alarms", "pull the copy from the Google Doc", "check the Sentry issues"),
|
|
304
304
|
- tooling the work plainly implies (a deploy target, a database, a third-party API).
|
|
305
305
|
|
|
306
|
-
For each surface, prove **read** access from the current runtime with
|
|
307
|
-
through
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
306
|
+
For each surface, prove **read** access from the current runtime with a target-resource-specific,
|
|
307
|
+
read-only probe through its sanctioned access layer: the matching MCP tool or `lisa-*-access` skill,
|
|
308
|
+
or an authenticated fetch using environment-injected authentication. Identity-only commands such as
|
|
309
|
+
`aws sts get-caller-identity`, `gh auth status`, and vendor equivalents are preflight checks only;
|
|
310
|
+
they never satisfy F5 by themselves. A successful probe for one surface does not cover another:
|
|
311
|
+
reading the named GitHub repository, CloudWatch log group, Sentry project, or linked document must
|
|
312
|
+
each succeed separately when that surface is required.
|
|
313
|
+
|
|
314
|
+
Attempt to resolve a gap before failing, but only through another configured brokered access layer
|
|
315
|
+
or environment-injected authentication. A sanctioned broker may use its own credential store
|
|
316
|
+
internally; the validator must never autonomously inspect, read, copy, print, or export raw
|
|
317
|
+
credentials, keychains, credential files, or token stores, and must never invoke low-level secret
|
|
318
|
+
tools to recover them. This preserves the intake agent's discover-first duty without exposing
|
|
319
|
+
credential material.
|
|
320
|
+
|
|
321
|
+
- `PASS` — every required surface has its own successful target-resource read probe or authenticated
|
|
322
|
+
fetch through the sanctioned access layer.
|
|
313
323
|
- `N/A` — the item needs nothing beyond the repository and the tracker itself.
|
|
314
324
|
- `FAIL` — a required surface is unreachable after the resolution attempt. Name the exact surface
|
|
315
325
|
and what was probed. Intake callers must route this to `blocked` + human escalation with the
|
|
@@ -601,15 +601,14 @@ Enable compliance validation:
|
|
|
601
601
|
uses: ./.github/workflows/quality.yml
|
|
602
602
|
with:
|
|
603
603
|
compliance_framework: 'soc2' # or iso27001, hipaa, pci-dss
|
|
604
|
-
require_approval: true
|
|
605
|
-
approval_environment: 'production'
|
|
606
604
|
```
|
|
607
605
|
|
|
608
|
-
**Note**:
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
606
|
+
**Note**: quality.yml's `approval_gate` job only records an audit artifact; it
|
|
607
|
+
does not pause the run. Do not pass `require_approval` or `approval_environment`
|
|
608
|
+
to this quality.yml example. For an enforced human gate, pass those inputs to
|
|
609
|
+
release.yml and create the environment in **Settings** > **Environments** first
|
|
610
|
+
(or declare it under `github.environments` in `.lisa.config.json` and run
|
|
611
|
+
`/lisa:setup:github-repo`).
|
|
613
612
|
|
|
614
613
|
### Custom Node Version
|
|
615
614
|
|