@codyswann/lisa 2.114.0 → 2.115.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/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/scripts/queue-status-prd-readers.mjs +43 -0
- 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 +1 -1
- package/plugins/lisa-harper-fabric/.codex-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-openclaw/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.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/lisa-wiki/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
- package/plugins/src/base/scripts/queue-status-prd-readers.mjs +43 -0
package/package.json
CHANGED
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
"lodash": ">=4.18.1"
|
|
83
83
|
},
|
|
84
84
|
"name": "@codyswann/lisa",
|
|
85
|
-
"version": "2.
|
|
85
|
+
"version": "2.115.0",
|
|
86
86
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
87
87
|
"main": "dist/index.js",
|
|
88
88
|
"exports": {
|
|
@@ -55,6 +55,41 @@ const HIGHLIGHT_COPY = {
|
|
|
55
55
|
},
|
|
56
56
|
};
|
|
57
57
|
|
|
58
|
+
/**
|
|
59
|
+
* Decide whether a PRD queue snapshot has open lifecycle pressure that should
|
|
60
|
+
* pause automatic PRD promotion or ideation work.
|
|
61
|
+
*
|
|
62
|
+
* @param {{
|
|
63
|
+
* readonly counts?: Record<string, number>
|
|
64
|
+
* readonly highlights?: readonly Record<string, any>[]
|
|
65
|
+
* }} snapshot
|
|
66
|
+
*/
|
|
67
|
+
export function evaluatePrdQueuePressure(snapshot = {}) {
|
|
68
|
+
const decisiveRole = ACTIONABLE_ROLE_ORDER.find(
|
|
69
|
+
role => normalizeCount(snapshot.counts?.[role]) > 0
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
if (!decisiveRole) {
|
|
73
|
+
return {
|
|
74
|
+
allowed: true,
|
|
75
|
+
decisiveRole: null,
|
|
76
|
+
blockerItem: null,
|
|
77
|
+
nextStep: null,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
const blockerItem =
|
|
82
|
+
snapshot.highlights?.find(highlight => highlight.role === decisiveRole) ??
|
|
83
|
+
null;
|
|
84
|
+
|
|
85
|
+
return {
|
|
86
|
+
allowed: false,
|
|
87
|
+
decisiveRole,
|
|
88
|
+
blockerItem,
|
|
89
|
+
nextStep: blockerItem?.nextStep ?? HIGHLIGHT_COPY[decisiveRole].nextStep,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
|
|
58
93
|
/**
|
|
59
94
|
* Read a GitHub-backed PRD queue snapshot from issue payloads.
|
|
60
95
|
*
|
|
@@ -393,3 +428,11 @@ function normalizeTimestamp(value) {
|
|
|
393
428
|
const trimmed = value.trim();
|
|
394
429
|
return trimmed.length > 0 ? trimmed : null;
|
|
395
430
|
}
|
|
431
|
+
|
|
432
|
+
/**
|
|
433
|
+
* @param {unknown} value
|
|
434
|
+
* @returns {number}
|
|
435
|
+
*/
|
|
436
|
+
function normalizeCount(value) {
|
|
437
|
+
return Number.isFinite(value) && value > 0 ? value : 0;
|
|
438
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.115.0",
|
|
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.
|
|
3
|
+
"version": "2.115.0",
|
|
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"
|
|
@@ -55,6 +55,41 @@ const HIGHLIGHT_COPY = {
|
|
|
55
55
|
},
|
|
56
56
|
};
|
|
57
57
|
|
|
58
|
+
/**
|
|
59
|
+
* Decide whether a PRD queue snapshot has open lifecycle pressure that should
|
|
60
|
+
* pause automatic PRD promotion or ideation work.
|
|
61
|
+
*
|
|
62
|
+
* @param {{
|
|
63
|
+
* readonly counts?: Record<string, number>
|
|
64
|
+
* readonly highlights?: readonly Record<string, any>[]
|
|
65
|
+
* }} snapshot
|
|
66
|
+
*/
|
|
67
|
+
export function evaluatePrdQueuePressure(snapshot = {}) {
|
|
68
|
+
const decisiveRole = ACTIONABLE_ROLE_ORDER.find(
|
|
69
|
+
role => normalizeCount(snapshot.counts?.[role]) > 0
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
if (!decisiveRole) {
|
|
73
|
+
return {
|
|
74
|
+
allowed: true,
|
|
75
|
+
decisiveRole: null,
|
|
76
|
+
blockerItem: null,
|
|
77
|
+
nextStep: null,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
const blockerItem =
|
|
82
|
+
snapshot.highlights?.find(highlight => highlight.role === decisiveRole) ??
|
|
83
|
+
null;
|
|
84
|
+
|
|
85
|
+
return {
|
|
86
|
+
allowed: false,
|
|
87
|
+
decisiveRole,
|
|
88
|
+
blockerItem,
|
|
89
|
+
nextStep: blockerItem?.nextStep ?? HIGHLIGHT_COPY[decisiveRole].nextStep,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
|
|
58
93
|
/**
|
|
59
94
|
* Read a GitHub-backed PRD queue snapshot from issue payloads.
|
|
60
95
|
*
|
|
@@ -393,3 +428,11 @@ function normalizeTimestamp(value) {
|
|
|
393
428
|
const trimmed = value.trim();
|
|
394
429
|
return trimmed.length > 0 ? trimmed : null;
|
|
395
430
|
}
|
|
431
|
+
|
|
432
|
+
/**
|
|
433
|
+
* @param {unknown} value
|
|
434
|
+
* @returns {number}
|
|
435
|
+
*/
|
|
436
|
+
function normalizeCount(value) {
|
|
437
|
+
return Number.isFinite(value) && value > 0 ? value : 0;
|
|
438
|
+
}
|