@codyswann/lisa 2.342.4 → 2.342.5
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/lisa-work-item.mjs +34 -4
- package/dist/core/upstream-evidence-manifest.js +1 -1
- 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
|
@@ -21,6 +21,36 @@ const RELEASE_SUBJECT =
|
|
|
21
21
|
/^chore\(release\): \d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)? \[skip ci\]$/;
|
|
22
22
|
const ZERO_OID = /^0+$/;
|
|
23
23
|
const MARKER = "[lisa-pr-link]";
|
|
24
|
+
/**
|
|
25
|
+
* The prefix only — an anchored, fixed-length literal with no quantifier, so
|
|
26
|
+
* it cannot backtrack. The ReDoS was never here; it was in the `\s*(.+?)\s*$`
|
|
27
|
+
* tail, which is now string work.
|
|
28
|
+
*
|
|
29
|
+
* Deliberately still a regex rather than `line.toLowerCase().startsWith(…)`.
|
|
30
|
+
* `toLowerCase()` applies FULL Unicode case mapping, so U+212A KELVIN SIGN
|
|
31
|
+
* folds to "k" and `WorK-Item:` written with it would be accepted — a format
|
|
32
|
+
* this has never accepted, because `/i` on a non-unicode pattern canonicalizes
|
|
33
|
+
* ASCII only.
|
|
34
|
+
*/
|
|
35
|
+
const WORK_ITEM_PREFIX = /^work-item:/i;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* The value of a `Work-Item:` line, or null if this is not one.
|
|
39
|
+
*
|
|
40
|
+
* Replaces `/^Work-Item:\s*(.+?)\s*$/i`, which put a lazy quantifier between
|
|
41
|
+
* two `\s*` groups and backtracked super-linearly on a line that is mostly
|
|
42
|
+
* whitespace — over commit messages and PR bodies, which are not this
|
|
43
|
+
* script's to trust. Acceptance is unchanged: ASCII-case-insensitive prefix at
|
|
44
|
+
* the start of the line, non-empty value, surrounding whitespace ignored.
|
|
45
|
+
* @param {string} line One line of a commit message or PR body.
|
|
46
|
+
* @returns {string | null} The trimmed value, or null.
|
|
47
|
+
*/
|
|
48
|
+
function workItemLineValue(line) {
|
|
49
|
+
const match = WORK_ITEM_PREFIX.exec(line);
|
|
50
|
+
if (!match) return null;
|
|
51
|
+
const value = line.slice(match[0].length).trim();
|
|
52
|
+
return value === "" ? null : value;
|
|
53
|
+
}
|
|
24
54
|
const GUIDANCE = [
|
|
25
55
|
"Mention the ticket this work relates to, or ask Lisa to create one:",
|
|
26
56
|
" Work-Item: <configured-project-ticket>",
|
|
@@ -493,8 +523,8 @@ function parseTrailers(message) {
|
|
|
493
523
|
.split("\n")
|
|
494
524
|
.filter(Boolean)
|
|
495
525
|
.flatMap(line => {
|
|
496
|
-
const
|
|
497
|
-
return
|
|
526
|
+
const value = workItemLineValue(line);
|
|
527
|
+
return value === null ? [] : [value];
|
|
498
528
|
});
|
|
499
529
|
}
|
|
500
530
|
|
|
@@ -1179,8 +1209,8 @@ function prWorkItem(body, contract) {
|
|
|
1179
1209
|
const matches = String(body ?? "")
|
|
1180
1210
|
.split(/\r?\n/)
|
|
1181
1211
|
.flatMap(line => {
|
|
1182
|
-
const
|
|
1183
|
-
return
|
|
1212
|
+
const value = workItemLineValue(line);
|
|
1213
|
+
return value === null ? [] : [value];
|
|
1184
1214
|
});
|
|
1185
1215
|
if (matches.length !== 1)
|
|
1186
1216
|
throw new TrackingError(
|
|
@@ -10,7 +10,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
10
10
|
"all/copy-overwrite/scripts/lisa-hooks/block-shell-json-parsing.sh": "1934a15e154fda3c2a40979a5cd6225661b14fe7bc77328a69ce499bea85dba7",
|
|
11
11
|
"all/copy-overwrite/scripts/lisa-hooks/parity-safety-net.sh": "d9ea58150aa27e7f0aa9a4ef155ed446d30bdfc932d01c64e2b8ca211aa0de7b",
|
|
12
12
|
"all/copy-overwrite/scripts/lisa-hooks/sonar-secrets.sh": "bf4132e49ba18e2f7e941520c299c15aeeacfd220e489f3d2eb8397f2048157b",
|
|
13
|
-
"all/copy-overwrite/scripts/lisa-work-item.mjs": "
|
|
13
|
+
"all/copy-overwrite/scripts/lisa-work-item.mjs": "e30016a49deff1c3cd3ae7951262aeb2ef3d472bce76bbbe2a177db6017c7cad",
|
|
14
14
|
"all/create-only/.claude/rules/PROJECT_RULES.md": "6e1c7923ad2a15356babc60c97e7f97be728d790af285b6a7cd7d1b4d39cd97f",
|
|
15
15
|
"all/create-only/.lisaignore": "3c9827e7e98daa46510b5357cd6dd9406da1821e64cc46d2eea9f311cd6d06b9",
|
|
16
16
|
"all/create-only/scripts/remote-agent-aws-setup.sh": "12d2204d34195ad4f81082e90a25dbbf7d2493debcc50c1cd37b32dc4648fc17",
|
package/package.json
CHANGED
|
@@ -120,7 +120,7 @@
|
|
|
120
120
|
}
|
|
121
121
|
},
|
|
122
122
|
"name": "@codyswann/lisa",
|
|
123
|
-
"version": "2.342.
|
|
123
|
+
"version": "2.342.5",
|
|
124
124
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
125
125
|
"main": "dist/index.js",
|
|
126
126
|
"exports": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.342.
|
|
3
|
+
"version": "2.342.5",
|
|
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.342.
|
|
3
|
+
"version": "2.342.5",
|
|
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.342.
|
|
3
|
+
"version": "2.342.5",
|
|
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.342.
|
|
3
|
+
"version": "2.342.5",
|
|
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.342.
|
|
3
|
+
"version": "2.342.5",
|
|
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"
|