@codyswann/lisa 4.76.0 → 4.77.1

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 (84) hide show
  1. package/README.md +10 -1
  2. package/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
  3. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  4. package/dist/core/upstream-evidence-manifest.js +3 -2
  5. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  6. package/package.json +4 -4
  7. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  8. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  9. package/plugins/lisa/.codex-plugin/skills/lisa-setup-automations/SKILL.md +12 -0
  10. package/plugins/lisa/skills/lisa-setup-automations/SKILL.md +12 -0
  11. package/plugins/lisa-agy/plugin.json +1 -1
  12. package/plugins/lisa-agy/skills/lisa-setup-automations/SKILL.md +12 -0
  13. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  14. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  15. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  16. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  17. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  18. package/plugins/lisa-cdk-devin/.claude-plugin/plugin.json +1 -1
  19. package/plugins/lisa-cdk-devin/.devin-plugin/plugin.json +1 -1
  20. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  21. package/plugins/lisa-copilot/skills/lisa-setup-automations/SKILL.md +12 -0
  22. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  23. package/plugins/lisa-cursor/skills/lisa-setup-automations/SKILL.md +12 -0
  24. package/plugins/lisa-devin/.claude-plugin/plugin.json +1 -1
  25. package/plugins/lisa-devin/.devin-plugin/plugin.json +1 -1
  26. package/plugins/lisa-devin/skills/lisa-setup-automations/SKILL.md +12 -0
  27. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  28. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  29. package/plugins/lisa-expo-agy/plugin.json +1 -1
  30. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  31. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  32. package/plugins/lisa-expo-devin/.claude-plugin/plugin.json +1 -1
  33. package/plugins/lisa-expo-devin/.devin-plugin/plugin.json +1 -1
  34. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  35. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  36. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  37. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  38. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  39. package/plugins/lisa-harper-fabric-devin/.claude-plugin/plugin.json +1 -1
  40. package/plugins/lisa-harper-fabric-devin/.devin-plugin/plugin.json +1 -1
  41. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  42. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  43. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  44. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  45. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  46. package/plugins/lisa-nestjs-devin/.claude-plugin/plugin.json +1 -1
  47. package/plugins/lisa-nestjs-devin/.devin-plugin/plugin.json +1 -1
  48. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  49. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  50. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  51. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  52. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  53. package/plugins/lisa-openclaw-devin/.claude-plugin/plugin.json +1 -1
  54. package/plugins/lisa-openclaw-devin/.devin-plugin/plugin.json +1 -1
  55. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  56. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  57. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  58. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  59. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  60. package/plugins/lisa-phaser-devin/.claude-plugin/plugin.json +1 -1
  61. package/plugins/lisa-phaser-devin/.devin-plugin/plugin.json +1 -1
  62. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  63. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  64. package/plugins/lisa-rails-agy/plugin.json +1 -1
  65. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  66. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  67. package/plugins/lisa-rails-devin/.claude-plugin/plugin.json +1 -1
  68. package/plugins/lisa-rails-devin/.devin-plugin/plugin.json +1 -1
  69. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  70. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  71. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  72. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  73. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  74. package/plugins/lisa-typescript-devin/.claude-plugin/plugin.json +1 -1
  75. package/plugins/lisa-typescript-devin/.devin-plugin/plugin.json +1 -1
  76. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  77. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  78. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  79. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  80. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  81. package/plugins/lisa-wiki-devin/.claude-plugin/plugin.json +1 -1
  82. package/plugins/lisa-wiki-devin/.devin-plugin/plugin.json +1 -1
  83. package/plugins/src/base/skills/lisa-setup-automations/SKILL.md +12 -0
  84. package/scripts/plugin-routing-validate.mjs +6 -4
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "4.76.0",
3
+ "version": "4.77.1",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "4.76.0",
3
+ "version": "4.77.1",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "4.76.0",
3
+ "version": "4.77.1",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "4.76.0",
3
+ "version": "4.77.1",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "4.76.0",
3
+ "version": "4.77.1",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "4.76.0",
3
+ "version": "4.77.1",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "4.76.0",
3
+ "version": "4.77.1",
4
4
  "description": "TypeScript-specific hooks for formatting, linting, and ast-grep scanning on edit.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "4.76.0",
3
+ "version": "4.77.1",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "4.76.0",
3
+ "version": "4.77.1",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "4.76.0",
3
+ "version": "4.77.1",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "4.76.0",
3
+ "version": "4.77.1",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "4.76.0",
3
+ "version": "4.77.1",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.76.0",
3
+ "version": "4.77.1",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.76.0",
3
+ "version": "4.77.1",
4
4
  "description": "Distributable LLM Wiki kernel — ingest, query, lint, and maintain a git-native markdown knowledge base across Claude and Codex.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.76.0",
3
+ "version": "4.77.1",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.76.0",
3
+ "version": "4.77.1",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.76.0",
3
+ "version": "4.77.1",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.76.0",
3
+ "version": "4.77.1",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.76.0",
3
+ "version": "4.77.1",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -23,6 +23,18 @@ create them; invoke the runtime's automation tool with the spec below.
23
23
  automation. Do not point recurring automations at hashed scratch worktrees or a checkout whose Git
24
24
  metadata is broken.
25
25
  - **Claude** → use **`/schedule`** to create local recurring routines, one per automation below.
26
+ - **Devin CLI** → there is no native scheduler (documented gap, CodySwannGT/lisa#4283 — decided
27
+ as a documented manual trigger, not a polyfill). State that Devin cannot schedule the loops and
28
+ stop without creating anything. Then tell the operator their two working options:
29
+ 1. **Run a loop by hand.** For example `devin -p -- "/lisa:lisa-intake <queue>"`. The same
30
+ command can go in the operator's own cron, which then owns the clock.
31
+ 2. **Run the loops unattended** through `scheduler: "github-actions"` with `executionEnv`
32
+ (next section). GitHub Actions only owns the clock: the loop itself runs on whichever
33
+ supported remote surface `executionEnv` names (for example `claude-web` or
34
+ `codex-cloud`). That surface is not Devin, and there is no Devin remote surface.
35
+
36
+ Devin runs Lisa's skills from the `lisa-devin` plugin, so each loop's prompt is the same skill
37
+ invocation a scheduled run would make.
26
38
  - **Other runtimes** → use the runtime's native recurring-task mechanism. If the runtime has none,
27
39
  state that scheduling is unavailable and stop.
28
40
 
@@ -52,7 +52,7 @@ const REPO_ROOT = path.resolve(
52
52
  );
53
53
 
54
54
  /** The non-Claude-native agents that every routing block must cover, exactly. */
55
- const AGENTS = ["agy", "codex", "copilot", "cursor"];
55
+ const AGENTS = ["agy", "codex", "copilot", "cursor", "devin"];
56
56
 
57
57
  /** The locked routing-outcome enum. */
58
58
  const OUTCOMES = new Set([
@@ -244,7 +244,7 @@ function validateActions(agent, entry, plugin, upstreamVersion) {
244
244
  }
245
245
 
246
246
  /**
247
- * Validate the routing block: exactly the four agent keys, each with a valid
247
+ * Validate the routing block: exactly the five agent keys, each with a valid
248
248
  * outcome, an actions array, a non-empty rationale, and clean actions.
249
249
  *
250
250
  * @param {unknown} routing - the artifact's `routing` object.
@@ -254,13 +254,15 @@ function validateActions(agent, entry, plugin, upstreamVersion) {
254
254
  */
255
255
  function validateRouting(routing, plugin, upstreamVersion) {
256
256
  if (routing === null || typeof routing !== "object") {
257
- return ["routing must be an object covering agy,codex,copilot,cursor"];
257
+ return [
258
+ "routing must be an object covering agy,codex,copilot,cursor,devin",
259
+ ];
258
260
  }
259
261
  const errors = [];
260
262
  const keys = Object.keys(routing).sort();
261
263
  if (keys.join(",") !== [...AGENTS].sort().join(",")) {
262
264
  errors.push(
263
- `routing must have exactly agy,codex,copilot,cursor (got ${keys.join(",") || "none"})`
265
+ `routing must have exactly agy,codex,copilot,cursor,devin (got ${keys.join(",") || "none"})`
264
266
  );
265
267
  }
266
268
  for (const agent of AGENTS) {