agentilda 1.0.3 → 2.0.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.
Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. data/agentilda.gemspec +8 -6
  3. data/agents/hansolo-reviewer.md +42 -13
  4. data/agents/lando-broker.md +40 -46
  5. data/agents/leah-researcher.md +36 -58
  6. data/agents/luke-backend.md +49 -61
  7. data/agents/palpatine-planner.md +39 -21
  8. data/agents/rey-frontend.md +44 -86
  9. data/agents/yoda-writer.md +38 -36
  10. data/bin/setup +26 -0
  11. data/exe/agentilda +13 -92
  12. data/exe/tilda-rs +0 -0
  13. data/lib/agentilda/adoption.rb +7 -2
  14. data/lib/agentilda/agent.rb +40 -99
  15. data/lib/agentilda/agents.rb +122 -0
  16. data/lib/agentilda/board.rb +91 -0
  17. data/lib/agentilda/brief.rb +54 -5
  18. data/lib/agentilda/child.rb +78 -0
  19. data/lib/agentilda/cli/agents/subcommands/describe.rb +8 -4
  20. data/lib/agentilda/cli/base.rb +22 -6
  21. data/lib/agentilda/cli/create/create.rb +46 -19
  22. data/lib/agentilda/cli/docs/docs.rb +6 -2
  23. data/lib/agentilda/cli/index/index.rb +6 -4
  24. data/lib/agentilda/cli/linear/linear.rb +3 -2
  25. data/lib/agentilda/cli/linear/subcommands/import.rb +26 -15
  26. data/lib/agentilda/cli/mail/mail.rb +31 -0
  27. data/lib/agentilda/cli/mail/subcommands/read.rb +43 -0
  28. data/lib/agentilda/cli/mail/subcommands/send.rb +43 -0
  29. data/lib/agentilda/cli/resync/subcommands/dirs.rb +6 -4
  30. data/lib/agentilda/cli/resync/subcommands/prs.rb +21 -13
  31. data/lib/agentilda/cli/run/run.rb +207 -99
  32. data/lib/agentilda/cli/unblock/unblock.rb +24 -13
  33. data/lib/agentilda/cli/worktree/worktree.rb +85 -0
  34. data/lib/agentilda/cli.rb +43 -0
  35. data/lib/agentilda/clock.rb +114 -0
  36. data/lib/agentilda/console.rb +157 -0
  37. data/lib/agentilda/control.rb +63 -0
  38. data/lib/agentilda/creator.rb +7 -2
  39. data/lib/agentilda/dashboard.rb +219 -0
  40. data/lib/agentilda/dev_work.rb +2 -0
  41. data/lib/agentilda/diagram.rb +12 -7
  42. data/lib/agentilda/dispatcher.rb +646 -0
  43. data/lib/agentilda/documentation.rb +14 -6
  44. data/lib/agentilda/executor.rb +362 -204
  45. data/lib/agentilda/feature.rb +14 -135
  46. data/lib/agentilda/frontmatter.rb +4 -2
  47. data/lib/agentilda/github.rb +19 -11
  48. data/lib/agentilda/index.rb +11 -11
  49. data/lib/agentilda/keyboard.rb +76 -8
  50. data/lib/agentilda/launcher.rb +69 -0
  51. data/lib/agentilda/ledger.rb +233 -0
  52. data/lib/agentilda/linear/api.rb +14 -10
  53. data/lib/agentilda/linear/attribution.rb +5 -5
  54. data/lib/agentilda/linear/import.rb +30 -14
  55. data/lib/agentilda/linear/issue.rb +6 -3
  56. data/lib/agentilda/linear/mapping.rb +18 -17
  57. data/lib/agentilda/linear/push.rb +19 -12
  58. data/lib/agentilda/linear/survey.rb +3 -2
  59. data/lib/agentilda/linear/unit.rb +12 -12
  60. data/lib/agentilda/linear.rb +5 -6
  61. data/lib/agentilda/mailbox.rb +141 -0
  62. data/lib/agentilda/markdown.rb +1 -1
  63. data/lib/agentilda/progress_log.rb +5 -1
  64. data/lib/agentilda/publisher.rb +6 -3
  65. data/lib/agentilda/pull_request.rb +0 -186
  66. data/lib/agentilda/pull_requests.rb +230 -0
  67. data/lib/agentilda/reporter.rb +9 -3
  68. data/lib/agentilda/resync.rb +120 -52
  69. data/lib/agentilda/roster.rb +31 -48
  70. data/lib/agentilda/runner.rb +72 -389
  71. data/lib/agentilda/screen/ratatui/bar.rb +57 -0
  72. data/lib/agentilda/screen/ratatui/key_translator.rb +29 -0
  73. data/lib/agentilda/screen/ratatui.rb +318 -0
  74. data/lib/agentilda/state_file.rb +174 -0
  75. data/lib/agentilda/state_machine.rb +60 -32
  76. data/lib/agentilda/status.rb +120 -37
  77. data/lib/agentilda/subject.rb +133 -0
  78. data/lib/agentilda/tally.rb +17 -11
  79. data/lib/agentilda/transcript.rb +47 -16
  80. data/lib/agentilda/tree.rb +10 -6
  81. data/lib/agentilda/ui.rb +204 -190
  82. data/lib/agentilda/unblocker.rb +25 -11
  83. data/lib/agentilda/version.rb +1 -1
  84. data/lib/agentilda/worktree.rb +14 -18
  85. data/lib/agentilda.rb +57 -70
  86. metadata +61 -15
  87. data/Gemfile +0 -26
  88. data/Gemfile.lock +0 -261
  89. data/bin/create-plan-folder +0 -125
  90. data/lib/dry/cli/banner.rb +0 -293
@@ -40,8 +40,8 @@ module Agentilda
40
40
  > **This file is auto generated.**
41
41
  >
42
42
  > To regenerate it, run `agentilda docs` (which by the default
43
- > writes to ${HOME}/.agents/context/workflow.md`). To override
44
- > the destination, use the -o | --output <file> option.
43
+ > writes to `${HOME}/.agents/context/workflow.md`). To override
44
+ > the destination, use the `-o | --output <file>` option.
45
45
  >
46
46
  > After changing the state machine. Editing it by hand puts it back into the
47
47
  > condition it was written to end: three copies of the same table, quietly
@@ -195,7 +195,7 @@ module Agentilda
195
195
  # @return [String]
196
196
  def merged_note
197
197
  "🟣 Merged is deliberately **not** a folder state. It describes a pull request, " \
198
- "and a folder that claimed it would be claiming a pull request's condition as its own."
198
+ "and a folder that claimed it would be claiming a pull request's condition as its own."
199
199
  end
200
200
 
201
201
  # Why this is prose rather than another derived table: the mechanism is a
@@ -309,9 +309,9 @@ module Agentilda
309
309
  # @return [String]
310
310
  def files_section
311
311
  known = Agentilda::STATUSES
312
- .flat_map(&:requires)
313
- .uniq
314
- .map { |f| "| `#{f}` | #{holders_of(f)} |" }
312
+ .flat_map(&:requires)
313
+ .uniq
314
+ .map { |f| "| `#{f}` | #{holders_of(f)} |" }
315
315
 
316
316
  <<~MARKDOWN
317
317
  ## Files allowed in a plan folder
@@ -320,8 +320,16 @@ module Agentilda
320
320
  | :--- | :---------- |
321
321
  | `spec.md` | the specification; written first |
322
322
  | `plan.md` | the execution plan; written from the spec |
323
+ | `implementation-plan.md` | the contract between the two halves of building |
323
324
  #{known.reject { |r| r.start_with?("| `spec.md`", "| `plan.md`") }.join("\n")}
324
325
 
326
+ `implementation-plan.md` is the one file no state requires. `luke-backend`
327
+ writes it before it writes code, and `rey-frontend` builds from it a round
328
+ later: the interfaces the back end landed, their shapes and their errors,
329
+ which files each half owns, which units may run concurrently, and the one
330
+ test that proves the halves are joined rather than merely both present. No
331
+ state requires it because a plan with no back-end work never needs one.
332
+
325
333
  Nothing else belongs there. A folder holding notes, diagrams or scratch files
326
334
  is a folder nobody can audit at a glance.
327
335