@codyswann/lisa 2.147.4 → 2.147.6
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/skills/repair-intake/SKILL.md +37 -14
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/repair-intake/SKILL.md +37 -14
- 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/repair-intake/SKILL.md +37 -14
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/skills/repair-intake/SKILL.md +37 -14
- 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/skills/lisa-openclaw-connect-repo-topic/SKILL.md +22 -12
- package/plugins/lisa-openclaw/skills/lisa-openclaw-connect-repo-topic/references/repo-topic-config.md +42 -0
- package/plugins/lisa-openclaw/skills/lisa-openclaw-connect-staff/references/platform-routing.md +35 -0
- package/plugins/lisa-openclaw-agy/plugin.json +1 -1
- package/plugins/lisa-openclaw-agy/skills/lisa-openclaw-connect-repo-topic/SKILL.md +22 -12
- package/plugins/lisa-openclaw-agy/skills/lisa-openclaw-connect-repo-topic/references/repo-topic-config.md +42 -0
- package/plugins/lisa-openclaw-agy/skills/lisa-openclaw-connect-staff/references/platform-routing.md +35 -0
- package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-copilot/skills/lisa-openclaw-connect-repo-topic/SKILL.md +22 -12
- package/plugins/lisa-openclaw-copilot/skills/lisa-openclaw-connect-repo-topic/references/repo-topic-config.md +42 -0
- package/plugins/lisa-openclaw-copilot/skills/lisa-openclaw-connect-staff/references/platform-routing.md +35 -0
- package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-cursor/skills/lisa-openclaw-connect-repo-topic/SKILL.md +22 -12
- package/plugins/lisa-openclaw-cursor/skills/lisa-openclaw-connect-repo-topic/references/repo-topic-config.md +42 -0
- package/plugins/lisa-openclaw-cursor/skills/lisa-openclaw-connect-staff/references/platform-routing.md +35 -0
- 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/repair-intake/SKILL.md +37 -14
- package/plugins/src/openclaw/skills/lisa-openclaw-connect-repo-topic/SKILL.md +22 -12
- package/plugins/src/openclaw/skills/lisa-openclaw-connect-repo-topic/references/repo-topic-config.md +42 -0
- package/plugins/src/openclaw/skills/lisa-openclaw-connect-staff/references/platform-routing.md +35 -0
|
@@ -14,6 +14,13 @@ all unrelated agents, channels, routes, and tokens.
|
|
|
14
14
|
|
|
15
15
|
## Telegram — facilitator topic route
|
|
16
16
|
|
|
17
|
+
Use `channels.telegram.groups` for a single-account Telegram setup. If the OpenClaw config has
|
|
18
|
+
`channels.telegram.accounts`, put the route under the owning bot account at
|
|
19
|
+
`channels.telegram.accounts.<account-id>.groups.<telegram-supergroup-id>`; account-scoped Telegram
|
|
20
|
+
configs do not inherit root group routes.
|
|
21
|
+
|
|
22
|
+
### Single-account route
|
|
23
|
+
|
|
17
24
|
```json5
|
|
18
25
|
{
|
|
19
26
|
"channels": {
|
|
@@ -36,6 +43,34 @@ all unrelated agents, channels, routes, and tokens.
|
|
|
36
43
|
}
|
|
37
44
|
```
|
|
38
45
|
|
|
46
|
+
### Multi-account route
|
|
47
|
+
|
|
48
|
+
```json5
|
|
49
|
+
{
|
|
50
|
+
"channels": {
|
|
51
|
+
"telegram": {
|
|
52
|
+
"accounts": {
|
|
53
|
+
"<account-id>": {
|
|
54
|
+
"groups": {
|
|
55
|
+
"<telegram-supergroup-id>": {
|
|
56
|
+
"groupPolicy": "allowlist",
|
|
57
|
+
"requireMention": true,
|
|
58
|
+
"allowFrom": ["<telegram-user-id>"],
|
|
59
|
+
"topics": {
|
|
60
|
+
"<facilitator-topic-id>": {
|
|
61
|
+
"agentId": "<facilitator-agent-id>",
|
|
62
|
+
"requireMention": true
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
39
74
|
## Slack — facilitator channel route
|
|
40
75
|
|
|
41
76
|
```json5
|
|
@@ -49,11 +49,15 @@ close-out** roles and moves work *unstuck* or *fully closed*:
|
|
|
49
49
|
lifecycle label. repair-intake classifies it as a PRD or build ticket and adds the configured
|
|
50
50
|
`ready` label (`prd-ready` for a PRD, build `status:ready` for a ticket) so normal intake can see
|
|
51
51
|
it; if the later intake/implement gate finds the item incomplete, it moves the item to `blocked`.
|
|
52
|
-
- **Missing
|
|
53
|
-
PRD
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
52
|
+
- **Missing native child link drift** — a GitHub parent (a `ticketed`/other open non-product-owned
|
|
53
|
+
PRD, **or a build Epic/Story container**) whose children are discoverable — from the generated-work
|
|
54
|
+
section/comment for a PRD, or from body parentage (`Parent: #<n>` / `Parent Epic: #<n>`) for a build
|
|
55
|
+
container resolved via the documented hierarchy fallback — but whose native sub-issue list is missing
|
|
56
|
+
one or more of those children. This is the common shape when children were created by an external
|
|
57
|
+
generator (e.g. Codex) or an older write path that recorded parentage only in prose and never called
|
|
58
|
+
`addSubIssue`. repair-intake replays the `prd-backlink` / `github-write-issue` native-linking contract
|
|
59
|
+
and attaches the missing same-repo children idempotently, so rollup and the GitHub UI can rely on the
|
|
60
|
+
native graph again.
|
|
57
61
|
|
|
58
62
|
This skill is the symmetric counterpart to `lisa:intake`. It reuses the same queue-detection,
|
|
59
63
|
the same agent-team orchestration, the same "don't ask, just run" confirmation policy, and the
|
|
@@ -467,7 +471,21 @@ left in a status it should not carry, including a stale build-ready `ready`).
|
|
|
467
471
|
|
|
468
472
|
1. Read the child set using the vendor-native hierarchy first (GitHub sub-issues, JIRA
|
|
469
473
|
Epic/parent/sub-task hierarchy, Linear project/parent/sub-issues), with the same fallbacks the
|
|
470
|
-
vendor read/sync skills document.
|
|
474
|
+
vendor read/sync skills document. **Record which children were resolved natively vs. only via the
|
|
475
|
+
prose/body-parentage fallback** — the gap between the two sets is repairable native-link drift.
|
|
476
|
+
1a. **Heal native child links before rolling up (GitHub).** Whenever the resolved child set
|
|
477
|
+
contains same-repo children that are *not* in the parent's native `subIssues` graph — the typical
|
|
478
|
+
case when the children carry `Parent: #<n>` / `Parent Epic: #<n>` in prose but were never attached
|
|
479
|
+
(external generators like Codex, or an older write path) — attach each missing same-repo child as a
|
|
480
|
+
native sub-issue using the identical idempotent `addSubIssue` contract the "GitHub PRD missing child
|
|
481
|
+
links" path documents below: dedupe by `owner/repo#number`, treat "already linked" as success, keep
|
|
482
|
+
cross-repo/cross-vendor children documented-only with a warning, and on `subIssues`/`addSubIssue`
|
|
483
|
+
unavailability record a capability warning and continue. A build parent attaches the children
|
|
484
|
+
resolved by its hierarchy (its Stories/Sub-tasks), not only empty-parent-token top-level work — the
|
|
485
|
+
PRD top-level-only restriction is a PRD rule, not a build one. Record repaired refs in the rollup
|
|
486
|
+
state fingerprint so repeated cycles do not re-post. Do this even when step 2 derives `unchanged`:
|
|
487
|
+
the native graph is what the GitHub UI rollup and progress bar depend on, independently of the
|
|
488
|
+
parent's status.
|
|
471
489
|
2. **Compute the derived parent state** bottom-up per the `leaf-only-lifecycle` **Parent status
|
|
472
490
|
rollup** state machine, evaluated over the env ladder `in-progress < dev < staging <
|
|
473
491
|
production` (the ordered keys of the env-keyed `done` map): any required child blocked →
|
|
@@ -754,9 +772,11 @@ It MAY:
|
|
|
754
772
|
applies only to containers, never to leaves.
|
|
755
773
|
- Move a PRD with fully terminal generated work to `shipped` and close/archive the source artifact
|
|
756
774
|
where the source vendor supports native close-out, per `prd-lifecycle-rollup`.
|
|
757
|
-
- Repair missing native GitHub
|
|
758
|
-
|
|
759
|
-
|
|
775
|
+
- Repair missing native GitHub child links by replaying the same-repo, idempotent `addSubIssue`
|
|
776
|
+
contract — for a **PRD** from the generated-work fallback (top-level-only), and for a **build
|
|
777
|
+
Epic/Story container** from its hierarchy/body-parentage children — so rollup and the GitHub UI can
|
|
778
|
+
rely on the native graph. This repairs structure only; it does not ship, transition, or verify the
|
|
779
|
+
parent.
|
|
760
780
|
- Normalize a GitHub issue with no configured lifecycle label by adding the configured PRD or build
|
|
761
781
|
`ready` label after classifying the issue. This is a visibility repair, not a claim; the item
|
|
762
782
|
remains open and unclaimed for normal intake.
|
|
@@ -779,13 +799,16 @@ It MUST NOT:
|
|
|
779
799
|
1. **Resolve the queue** — detect vendor/lifecycle (Source dispatch); resolve stuck role names
|
|
780
800
|
from config. For JIRA, confirm the needed transitions are reachable; stop on misconfig.
|
|
781
801
|
2. **Enumerate repair candidates** — query in-progress role(s), `blocked` role(s), terminal/open
|
|
782
|
-
items, GitHub PRDs
|
|
783
|
-
|
|
802
|
+
items, GitHub parents (PRDs **and build Epic/Story containers**) whose discoverable children —
|
|
803
|
+
generated-work fallback for a PRD, hierarchy/body-parentage for a build container — are missing from
|
|
804
|
+
their native sub-issue graph, rollup parents/PRDs with child work, **containers carrying the `ready`
|
|
805
|
+
role** (a
|
|
784
806
|
leaf-only-invariant violation to reconcile), and GitHub issues with no configured lifecycle label,
|
|
785
807
|
for the detected lifecycle(s), up to `max_candidates`, via the Access layer reads.
|
|
786
808
|
3. **Order deterministically**, highest repair-confidence first:
|
|
787
809
|
1. terminal-labeled items that only need native close / complete / resolve,
|
|
788
|
-
2. GitHub PRDs missing native links for generated top-level work
|
|
810
|
+
2. GitHub parents (PRDs missing native links for generated top-level work, or build Epic/Story
|
|
811
|
+
containers missing native links for prose/hierarchy children) needing structure-only repair,
|
|
789
812
|
3. rollup parents/PRDs whose child sets are all terminal (close-out),
|
|
790
813
|
4. rollup parents whose children have advanced to an intermediate env, or stale-`ready`
|
|
791
814
|
containers, that need their derived state applied (status-only reconciliation, no native
|
|
@@ -826,8 +849,8 @@ Report outcomes in these buckets:
|
|
|
826
849
|
- `rolled_up` — parent/container/PRD rollups advanced to their derived state: an intermediate env
|
|
827
850
|
(e.g. all children at `On Stg` → parent `On Stg`), a fully-terminal close-out, or a stale-`ready`
|
|
828
851
|
container reconciled from its children.
|
|
829
|
-
- `relinked` — GitHub PRDs
|
|
830
|
-
|
|
852
|
+
- `relinked` — GitHub parents (PRDs from the generated-work fallback, or build Epic/Story containers
|
|
853
|
+
from hierarchy/body-parentage) whose missing native sub-issue links were attached.
|
|
831
854
|
- `normalized_ready` — GitHub issues missing official lifecycle labels that were classified and
|
|
832
855
|
given the configured PRD/build `ready` label so normal intake can claim them.
|
|
833
856
|
- `still_blocked` — examined and intentionally left `blocked`, with the active reason.
|
|
@@ -101,18 +101,28 @@ The worker prepares the safe target and launches the CLI; it does not edit files
|
|
|
101
101
|
|
|
102
102
|
### 6. Bind the topic
|
|
103
103
|
|
|
104
|
-
Route the topic to the dispatcher
|
|
105
|
-
`channels.telegram.groups.<group-id>.topics.<topic-id>.agentId = <topic-slug>-dispatch
|
|
106
|
-
|
|
107
|
-
topic-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
104
|
+
Route the topic to the dispatcher. In single-account Telegram configs, set
|
|
105
|
+
`channels.telegram.groups.<group-id>.topics.<topic-id>.agentId = <topic-slug>-dispatch`. In
|
|
106
|
+
multi-account Telegram configs, set the same route under the owning bot account:
|
|
107
|
+
`channels.telegram.accounts.<account-id>.groups.<group-id>.topics.<topic-id>.agentId =
|
|
108
|
+
<topic-slug>-dispatch`. Account configs do not inherit root `channels.telegram.groups` routes, so a
|
|
109
|
+
root-only route can validate while the actual bot still ignores the topic-level `requireMention`,
|
|
110
|
+
`agentId`, and prompt. When in doubt, mirror the route under the owning account and keep any existing
|
|
111
|
+
root group route only as a fallback/documentation shape.
|
|
112
|
+
|
|
113
|
+
Keep allowlist policy, and add `allowFrom` only when membership must be narrower than the group.
|
|
114
|
+
Leave the topic-level `requireMention = false` (the default) so the agent activates on any message —
|
|
115
|
+
the topic is bound 1:1 to this dispatcher, so an @mention carries no routing information and is pure
|
|
116
|
+
friction. Set it to `true` only for a shared-workspace topic where humans also coordinate with each
|
|
117
|
+
other and you don't want every line to spawn a run; the group-level `requireMention` stays `true`
|
|
118
|
+
regardless. See "Mention gating" in [references/repo-topic-config.md](references/repo-topic-config.md)
|
|
119
|
+
for the tradeoff. The topic `systemPrompt` must state the scope mode, treat each native-reply root as
|
|
120
|
+
an independent request context, confirm repo selection only in folder-scoped mode, spawn the worker
|
|
121
|
+
with an explicit repo path, and return the worker result to the topic. If the route may return
|
|
122
|
+
generated files, the prompt must also say to write or copy returnable artifacts under
|
|
123
|
+
`~/.openclaw/media` before calling `message(action="send")`, because outbound local media delivery
|
|
124
|
+
rejects arbitrary `/tmp` paths. Back up `~/.openclaw/openclaw.json` before editing and preserve
|
|
125
|
+
unrelated routes.
|
|
116
126
|
|
|
117
127
|
### 7. Validate + self-test
|
|
118
128
|
|
package/plugins/src/openclaw/skills/lisa-openclaw-connect-repo-topic/references/repo-topic-config.md
CHANGED
|
@@ -70,6 +70,13 @@ repos:
|
|
|
70
70
|
|
|
71
71
|
## Topic route
|
|
72
72
|
|
|
73
|
+
Use `channels.telegram.groups` for a single-account Telegram setup. If
|
|
74
|
+
`channels.telegram.accounts` is configured, bind the route under the owning bot account instead:
|
|
75
|
+
`channels.telegram.accounts.<account-id>.groups.<group-id>`. Account-scoped Telegram configs do not
|
|
76
|
+
inherit root `channels.telegram.groups` routes.
|
|
77
|
+
|
|
78
|
+
### Single-account route
|
|
79
|
+
|
|
73
80
|
```json5
|
|
74
81
|
{
|
|
75
82
|
"channels": {
|
|
@@ -99,6 +106,41 @@ repos:
|
|
|
99
106
|
}
|
|
100
107
|
```
|
|
101
108
|
|
|
109
|
+
### Multi-account route
|
|
110
|
+
|
|
111
|
+
```json5
|
|
112
|
+
{
|
|
113
|
+
"channels": {
|
|
114
|
+
"telegram": {
|
|
115
|
+
"accounts": {
|
|
116
|
+
"<account-id>": {
|
|
117
|
+
"groups": {
|
|
118
|
+
"<group-id>": {
|
|
119
|
+
"groupPolicy": "allowlist",
|
|
120
|
+
"requireMention": true,
|
|
121
|
+
"allowFrom": ["<telegram-user-id>"],
|
|
122
|
+
"topics": {
|
|
123
|
+
"<topic-id>": {
|
|
124
|
+
"agentId": "<topic-slug>-dispatch",
|
|
125
|
+
"requireMention": false,
|
|
126
|
+
"systemPrompt": "Use the topic's configured scope mode. For single-repo, pass the fixed repo path to <topic-slug>-codex. For folder-scoped, confirm the inferred repo or repo set unless the user already named it explicitly, then pass the explicit repo path(s) to <topic-slug>-codex. Treat each native reply root as an independent request context. If generated files need to be returned as Telegram attachments, write or copy them under ~/.openclaw/media before calling message(action=\"send\"), because outbound local media delivery rejects arbitrary /tmp paths."
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## File return path
|
|
139
|
+
|
|
140
|
+
When a repo-topic agent returns generated files to Telegram, use the OpenClaw `message` tool with
|
|
141
|
+
real local file paths. Write or copy returnable artifacts under `~/.openclaw/media` before sending;
|
|
142
|
+
outbound local media delivery rejects arbitrary `/tmp` paths even when the file exists.
|
|
143
|
+
|
|
102
144
|
## Mention gating
|
|
103
145
|
|
|
104
146
|
`requireMention` controls whether a message must @-mention the bot before the agent activates. It is
|
package/plugins/src/openclaw/skills/lisa-openclaw-connect-staff/references/platform-routing.md
CHANGED
|
@@ -14,6 +14,13 @@ all unrelated agents, channels, routes, and tokens.
|
|
|
14
14
|
|
|
15
15
|
## Telegram — facilitator topic route
|
|
16
16
|
|
|
17
|
+
Use `channels.telegram.groups` for a single-account Telegram setup. If the OpenClaw config has
|
|
18
|
+
`channels.telegram.accounts`, put the route under the owning bot account at
|
|
19
|
+
`channels.telegram.accounts.<account-id>.groups.<telegram-supergroup-id>`; account-scoped Telegram
|
|
20
|
+
configs do not inherit root group routes.
|
|
21
|
+
|
|
22
|
+
### Single-account route
|
|
23
|
+
|
|
17
24
|
```json5
|
|
18
25
|
{
|
|
19
26
|
"channels": {
|
|
@@ -36,6 +43,34 @@ all unrelated agents, channels, routes, and tokens.
|
|
|
36
43
|
}
|
|
37
44
|
```
|
|
38
45
|
|
|
46
|
+
### Multi-account route
|
|
47
|
+
|
|
48
|
+
```json5
|
|
49
|
+
{
|
|
50
|
+
"channels": {
|
|
51
|
+
"telegram": {
|
|
52
|
+
"accounts": {
|
|
53
|
+
"<account-id>": {
|
|
54
|
+
"groups": {
|
|
55
|
+
"<telegram-supergroup-id>": {
|
|
56
|
+
"groupPolicy": "allowlist",
|
|
57
|
+
"requireMention": true,
|
|
58
|
+
"allowFrom": ["<telegram-user-id>"],
|
|
59
|
+
"topics": {
|
|
60
|
+
"<facilitator-topic-id>": {
|
|
61
|
+
"agentId": "<facilitator-agent-id>",
|
|
62
|
+
"requireMention": true
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
39
74
|
## Slack — facilitator channel route
|
|
40
75
|
|
|
41
76
|
```json5
|