@codyswann/lisa 4.81.4 → 4.81.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.
Files changed (156) hide show
  1. package/all/copy-overwrite/scripts/lisa-hooks/parity-safety-net.sh +236 -16
  2. package/dist/core/downstream-references.d.ts.map +1 -1
  3. package/dist/core/downstream-references.js +3 -0
  4. package/dist/core/downstream-references.js.map +1 -1
  5. package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
  6. package/dist/core/lisa-owned-hash-ledger.js +8 -0
  7. package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
  8. package/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
  9. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  10. package/dist/core/upstream-evidence-manifest.js +17 -12
  11. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  12. package/dist/opencode/plugin-templates/parity-safety-net.sh +236 -16
  13. package/package.json +4 -4
  14. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  15. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  16. package/plugins/lisa/.codex-plugin/skills/lisa-secrets-access/scripts/validate-config.mjs +30 -0
  17. package/plugins/lisa/.codex-plugin/skills/lisa-session-manager/SKILL.md +13 -6
  18. package/plugins/lisa/.codex-plugin/skills/lisa-session-manager/references/runbook-template.md +4 -3
  19. package/plugins/lisa/.codex-plugin/skills/lisa-session-manager/scripts/cli-queue.mjs +9 -3
  20. package/plugins/lisa/.codex-plugin/skills/lisa-session-manager/scripts/cli-runtime.mjs +1 -0
  21. package/plugins/lisa/.codex-plugin/skills/lisa-session-manager/scripts/cli-usage.mjs +4 -1
  22. package/plugins/lisa/.codex-plugin/skills/lisa-session-manager/scripts/config.mjs +4 -0
  23. package/plugins/lisa/.codex-plugin/skills/lisa-setup-session-manager/SKILL.md +13 -1
  24. package/plugins/lisa/hooks/parity-safety-net.sh +236 -16
  25. package/plugins/lisa/rules/reference/config-resolution.md +1 -0
  26. package/plugins/lisa/scripts/ready-queue-order.mjs +34 -14
  27. package/plugins/lisa/skills/lisa-secrets-access/scripts/validate-config.mjs +30 -0
  28. package/plugins/lisa/skills/lisa-session-manager/SKILL.md +13 -6
  29. package/plugins/lisa/skills/lisa-session-manager/references/runbook-template.md +4 -3
  30. package/plugins/lisa/skills/lisa-session-manager/scripts/cli-queue.mjs +9 -3
  31. package/plugins/lisa/skills/lisa-session-manager/scripts/cli-runtime.mjs +1 -0
  32. package/plugins/lisa/skills/lisa-session-manager/scripts/cli-usage.mjs +4 -1
  33. package/plugins/lisa/skills/lisa-session-manager/scripts/config.mjs +4 -0
  34. package/plugins/lisa/skills/lisa-setup-session-manager/SKILL.md +13 -1
  35. package/plugins/lisa-agy/hooks/parity-safety-net.sh +236 -16
  36. package/plugins/lisa-agy/plugin.json +1 -1
  37. package/plugins/lisa-agy/scripts/ready-queue-order.mjs +34 -14
  38. package/plugins/lisa-agy/skills/lisa-secrets-access/scripts/validate-config.mjs +30 -0
  39. package/plugins/lisa-agy/skills/lisa-session-manager/SKILL.md +13 -6
  40. package/plugins/lisa-agy/skills/lisa-session-manager/references/runbook-template.md +4 -3
  41. package/plugins/lisa-agy/skills/lisa-session-manager/scripts/cli-queue.mjs +9 -3
  42. package/plugins/lisa-agy/skills/lisa-session-manager/scripts/cli-runtime.mjs +1 -0
  43. package/plugins/lisa-agy/skills/lisa-session-manager/scripts/cli-usage.mjs +4 -1
  44. package/plugins/lisa-agy/skills/lisa-session-manager/scripts/config.mjs +4 -0
  45. package/plugins/lisa-agy/skills/lisa-setup-session-manager/SKILL.md +13 -1
  46. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  47. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  48. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  49. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  50. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  51. package/plugins/lisa-cdk-devin/.claude-plugin/plugin.json +1 -1
  52. package/plugins/lisa-cdk-devin/.devin-plugin/plugin.json +1 -1
  53. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  54. package/plugins/lisa-copilot/hooks/parity-safety-net.sh +236 -16
  55. package/plugins/lisa-copilot/rules/reference/config-resolution.md +1 -0
  56. package/plugins/lisa-copilot/scripts/ready-queue-order.mjs +34 -14
  57. package/plugins/lisa-copilot/skills/lisa-secrets-access/scripts/validate-config.mjs +30 -0
  58. package/plugins/lisa-copilot/skills/lisa-session-manager/SKILL.md +13 -6
  59. package/plugins/lisa-copilot/skills/lisa-session-manager/references/runbook-template.md +4 -3
  60. package/plugins/lisa-copilot/skills/lisa-session-manager/scripts/cli-queue.mjs +9 -3
  61. package/plugins/lisa-copilot/skills/lisa-session-manager/scripts/cli-runtime.mjs +1 -0
  62. package/plugins/lisa-copilot/skills/lisa-session-manager/scripts/cli-usage.mjs +4 -1
  63. package/plugins/lisa-copilot/skills/lisa-session-manager/scripts/config.mjs +4 -0
  64. package/plugins/lisa-copilot/skills/lisa-setup-session-manager/SKILL.md +13 -1
  65. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  66. package/plugins/lisa-cursor/hooks/parity-safety-net.sh +236 -16
  67. package/plugins/lisa-cursor/rules/config-resolution-reference.mdc +1 -0
  68. package/plugins/lisa-cursor/scripts/ready-queue-order.mjs +34 -14
  69. package/plugins/lisa-cursor/skills/lisa-secrets-access/scripts/validate-config.mjs +30 -0
  70. package/plugins/lisa-cursor/skills/lisa-session-manager/SKILL.md +13 -6
  71. package/plugins/lisa-cursor/skills/lisa-session-manager/references/runbook-template.md +4 -3
  72. package/plugins/lisa-cursor/skills/lisa-session-manager/scripts/cli-queue.mjs +9 -3
  73. package/plugins/lisa-cursor/skills/lisa-session-manager/scripts/cli-runtime.mjs +1 -0
  74. package/plugins/lisa-cursor/skills/lisa-session-manager/scripts/cli-usage.mjs +4 -1
  75. package/plugins/lisa-cursor/skills/lisa-session-manager/scripts/config.mjs +4 -0
  76. package/plugins/lisa-cursor/skills/lisa-setup-session-manager/SKILL.md +13 -1
  77. package/plugins/lisa-devin/.claude-plugin/plugin.json +1 -1
  78. package/plugins/lisa-devin/.devin-plugin/plugin.json +1 -1
  79. package/plugins/lisa-devin/hooks/parity-safety-net.sh +236 -16
  80. package/plugins/lisa-devin/rules/reference/config-resolution.md +1 -0
  81. package/plugins/lisa-devin/scripts/ready-queue-order.mjs +34 -14
  82. package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/validate-config.mjs +30 -0
  83. package/plugins/lisa-devin/skills/lisa-session-manager/SKILL.md +13 -6
  84. package/plugins/lisa-devin/skills/lisa-session-manager/references/runbook-template.md +4 -3
  85. package/plugins/lisa-devin/skills/lisa-session-manager/scripts/cli-queue.mjs +9 -3
  86. package/plugins/lisa-devin/skills/lisa-session-manager/scripts/cli-runtime.mjs +1 -0
  87. package/plugins/lisa-devin/skills/lisa-session-manager/scripts/cli-usage.mjs +4 -1
  88. package/plugins/lisa-devin/skills/lisa-session-manager/scripts/config.mjs +4 -0
  89. package/plugins/lisa-devin/skills/lisa-setup-session-manager/SKILL.md +13 -1
  90. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  91. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  92. package/plugins/lisa-expo-agy/plugin.json +1 -1
  93. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  94. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  95. package/plugins/lisa-expo-devin/.claude-plugin/plugin.json +1 -1
  96. package/plugins/lisa-expo-devin/.devin-plugin/plugin.json +1 -1
  97. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  98. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  99. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  100. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  101. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  102. package/plugins/lisa-harper-fabric-devin/.claude-plugin/plugin.json +1 -1
  103. package/plugins/lisa-harper-fabric-devin/.devin-plugin/plugin.json +1 -1
  104. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  105. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  106. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  107. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  108. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  109. package/plugins/lisa-nestjs-devin/.claude-plugin/plugin.json +1 -1
  110. package/plugins/lisa-nestjs-devin/.devin-plugin/plugin.json +1 -1
  111. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  112. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  113. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  114. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  115. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  116. package/plugins/lisa-openclaw-devin/.claude-plugin/plugin.json +1 -1
  117. package/plugins/lisa-openclaw-devin/.devin-plugin/plugin.json +1 -1
  118. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  119. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  120. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  121. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  122. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  123. package/plugins/lisa-phaser-devin/.claude-plugin/plugin.json +1 -1
  124. package/plugins/lisa-phaser-devin/.devin-plugin/plugin.json +1 -1
  125. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  126. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  127. package/plugins/lisa-rails-agy/plugin.json +1 -1
  128. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  129. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  130. package/plugins/lisa-rails-devin/.claude-plugin/plugin.json +1 -1
  131. package/plugins/lisa-rails-devin/.devin-plugin/plugin.json +1 -1
  132. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  133. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  134. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  135. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  136. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  137. package/plugins/lisa-typescript-devin/.claude-plugin/plugin.json +1 -1
  138. package/plugins/lisa-typescript-devin/.devin-plugin/plugin.json +1 -1
  139. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  140. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  141. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  142. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  143. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  144. package/plugins/lisa-wiki-devin/.claude-plugin/plugin.json +1 -1
  145. package/plugins/lisa-wiki-devin/.devin-plugin/plugin.json +1 -1
  146. package/plugins/src/base/hooks/parity-safety-net.sh +236 -16
  147. package/plugins/src/base/rules/reference/config-resolution.md +1 -0
  148. package/plugins/src/base/scripts/ready-queue-order.mjs +34 -14
  149. package/plugins/src/base/skills/lisa-secrets-access/scripts/validate-config.mjs +30 -0
  150. package/plugins/src/base/skills/lisa-session-manager/SKILL.md +13 -6
  151. package/plugins/src/base/skills/lisa-session-manager/references/runbook-template.md +4 -3
  152. package/plugins/src/base/skills/lisa-session-manager/scripts/cli-queue.mjs +9 -3
  153. package/plugins/src/base/skills/lisa-session-manager/scripts/cli-runtime.mjs +1 -0
  154. package/plugins/src/base/skills/lisa-session-manager/scripts/cli-usage.mjs +4 -1
  155. package/plugins/src/base/skills/lisa-session-manager/scripts/config.mjs +4 -0
  156. package/plugins/src/base/skills/lisa-setup-session-manager/SKILL.md +13 -1
@@ -18,9 +18,10 @@ session list from `claude agents`; and the project's own Telegram chat.
18
18
 
19
19
  ## Candidate selection
20
20
 
21
- Leaf items in the `ready` role, ordered: assigned to the operator, then unassigned, then by priority,
22
- then oldest. Items assigned to someone else, containers, human-held items and (when configured)
23
- items by untrusted authors are skipped. As many as the machine has capacity for.
21
+ Leaf items in the `ready` role, ordered: assigned to an operator (`sessionManager.operatorIds`),
22
+ then to the manager's own tracker identity, then unassigned; within each, by priority, then oldest.
23
+ Items assigned to someone else, containers, human-held items and (when configured) items by
24
+ untrusted authors are skipped. As many as the machine has capacity for.
24
25
 
25
26
  ## Scope/bounds
26
27
 
@@ -123,9 +123,11 @@ function readEnvelopeQueue(ctx, tracker) {
123
123
  }
124
124
 
125
125
  /**
126
- * `queue --tracker <github|jira|linear>`: the Ready queue, mine first.
126
+ * `queue --tracker <github|jira|linear>`: the Ready queue, the operator's
127
+ * items first (`sessionManager.operatorIds`), then mine, then unassigned.
127
128
  * @param {object} ctx - CLI context
128
- * @returns {Promise<{ json: object }>} `{tracker,me,total,pages,ordered,excluded}`
129
+ * @returns {Promise<{ json: object }>}
130
+ * `{tracker,me,operators,total,pages,ordered,excluded}`
129
131
  */
130
132
  export async function queue(ctx) {
131
133
  const tracker = ctx.values.tracker;
@@ -139,10 +141,14 @@ export async function queue(ctx) {
139
141
  ? fetchGithubQueue(ctx, project)
140
142
  : readEnvelopeQueue(ctx, tracker);
141
143
  const me = ctx.values.me ?? (await readLedger(ctx.root)).control.me ?? null;
144
+ const operators = config?.operatorIds ?? [];
142
145
  const order = orderReadyQueue(items, {
143
146
  me,
147
+ operators,
144
148
  trustedAuthorIds: config?.trustedAuthorIds ?? undefined,
145
149
  humanNeededLabel: humanNeededLabel(project, tracker),
146
150
  });
147
- return { json: { tracker, me, total: items.length, pages, ...order } };
151
+ return {
152
+ json: { tracker, me, operators, total: items.length, pages, ...order },
153
+ };
148
154
  }
@@ -126,6 +126,7 @@ function validationView(config) {
126
126
  ...config,
127
127
  repos: config.repos ?? undefined,
128
128
  trustedAuthorIds: config.trustedAuthorIds ?? undefined,
129
+ operatorIds: config.operatorIds,
129
130
  };
130
131
  }
131
132
 
@@ -111,7 +111,10 @@ Per cycle
111
111
  queue --tracker jira|linear --input <file> [--me <id>]
112
112
  <file> = {complete:true,pages,items:[raw vendor issues]}; exit 2 unless
113
113
  complete is exactly true.
114
- Both print {tracker,me,total,pages,ordered,excluded:[{ref,reason}]}.
114
+ Both print {tracker,me,operators,total,pages,ordered,excluded:[{ref,
115
+ reason}]}. ordered: items assigned to sessionManager.operatorIds
116
+ first, then to --me, then unassigned; each group by priority, then age.
117
+ Items assigned to anyone else are excluded (assigned-to-other).
115
118
  --me defaults to the ledger's control.me.
116
119
  ledger get [<ref>]
117
120
  ledger record-spawn <ref> --worker <name> [--session-id <id>] [--repo <key>]
@@ -66,6 +66,7 @@ export const SESSION_MANAGER_DEFAULTS = Object.freeze({
66
66
  * stall: StallBlock,
67
67
  * notify: NotifyBlock,
68
68
  * trustedAuthorIds: string[] | null,
69
+ * operatorIds?: string[] | null,
69
70
  * }} SessionManagerConfig
70
71
  * @typedef {{
71
72
  * name: string,
@@ -120,6 +121,9 @@ export function resolveSessionManagerConfig(globalConfig, localConfig) {
120
121
  ...merged,
121
122
  repos,
122
123
  trustedAuthorIds: merged.trustedAuthorIds ?? null,
124
+ // Left as declared: absent stays undefined and an explicit null stays null,
125
+ // so validation can refuse the null instead of reading it as "no operators".
126
+ operatorIds: merged.operatorIds,
123
127
  };
124
128
  }
125
129
 
@@ -54,7 +54,19 @@ writes `$SM`, and pass `--project-root "$ROOT"` (the absolute project root) on e
54
54
  bypass-permissions worker; say so plainly. The list holds stable tracker user ids as strings,
55
55
  never logins: the GitHub numeric user id (`gh api users/<login> --jq .id`), the Jira
56
56
  `accountId`, or the Linear user id. A login matches no one and silently excludes every item.
57
- 4. `node "$SM/session-manager.mjs" validate --project-root "$ROOT"` must print `valid: true`.
57
+ 4. Set `sessionManager.operatorIds` to a non-empty **array** holding the operator's own tracker
58
+ user id, e.g. `"operatorIds": ["<operator-id>"]` (a bare string fails `validate`). Look up the
59
+ OPERATOR, not the credential: `gh api user` / `viewer.id` return whoever the tracker credential
60
+ belongs to, which is the agent account in exactly the case this key exists for. The manager dispatches
61
+ the operator's assigned items first, then items assigned to the tracker credential's identity
62
+ ("me"), then unassigned ones, and skips items assigned to anyone else. When the tracker
63
+ credential is not the operator's (an agent or bot account), leaving this unset means the
64
+ operator's own Ready items are never dispatched; say so plainly. Unlike `trustedAuthorIds`, this
65
+ is matched against the assignee, exactly and case-sensitively, so use the same kind of id as
66
+ "me", spelled as the tracker API returns it: the GitHub **login** (`gh api users/<login> --jq
67
+ .login`), the Jira `accountId`, or the Linear user id (the operator's entry in the team's member
68
+ list, or `viewer.id` only when the operator runs the lookup with their own credential).
69
+ 5. `node "$SM/session-manager.mjs" validate --project-root "$ROOT"` must print `valid: true`.
58
70
 
59
71
  ## Step 3: Store the bot token
60
72