agentboard 0.2.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 (159) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +62 -0
  3. data/MIT-LICENSE +20 -0
  4. data/README.md +316 -0
  5. data/Rakefile +6 -0
  6. data/app/assets/stylesheets/agentboard/application.css +510 -0
  7. data/app/controllers/agentboard/agents_controller.rb +10 -0
  8. data/app/controllers/agentboard/analytics_controller.rb +37 -0
  9. data/app/controllers/agentboard/application_controller.rb +90 -0
  10. data/app/controllers/agentboard/approvals_controller.rb +15 -0
  11. data/app/controllers/agentboard/assets_controller.rb +32 -0
  12. data/app/controllers/agentboard/board_controller.rb +46 -0
  13. data/app/controllers/agentboard/captures_controller.rb +17 -0
  14. data/app/controllers/agentboard/comments_controller.rb +9 -0
  15. data/app/controllers/agentboard/criteria_controller.rb +17 -0
  16. data/app/controllers/agentboard/dependencies_controller.rb +20 -0
  17. data/app/controllers/agentboard/executions_controller.rb +48 -0
  18. data/app/controllers/agentboard/milestones_controller.rb +23 -0
  19. data/app/controllers/agentboard/pulse_controller.rb +12 -0
  20. data/app/controllers/agentboard/sessions_controller.rb +19 -0
  21. data/app/controllers/agentboard/settings_controller.rb +9 -0
  22. data/app/controllers/agentboard/tickets_controller.rb +139 -0
  23. data/app/controllers/agentboard/workflow_runs_controller.rb +16 -0
  24. data/app/controllers/agentboard/workflows_controller.rb +62 -0
  25. data/app/helpers/agentboard/application_helper.rb +196 -0
  26. data/app/javascript/agentboard/application.js +227 -0
  27. data/app/javascript/agentboard/capture.js +299 -0
  28. data/app/jobs/agentboard/application_job.rb +4 -0
  29. data/app/models/agentboard/acceptance_criterion.rb +23 -0
  30. data/app/models/agentboard/agent_profile.rb +16 -0
  31. data/app/models/agentboard/agent_session.rb +30 -0
  32. data/app/models/agentboard/application_record.rb +13 -0
  33. data/app/models/agentboard/approval.rb +29 -0
  34. data/app/models/agentboard/artifact.rb +11 -0
  35. data/app/models/agentboard/comment.rb +9 -0
  36. data/app/models/agentboard/event.rb +37 -0
  37. data/app/models/agentboard/execution.rb +51 -0
  38. data/app/models/agentboard/idempotency_key.rb +5 -0
  39. data/app/models/agentboard/milestone.rb +7 -0
  40. data/app/models/agentboard/outbox_message.rb +11 -0
  41. data/app/models/agentboard/project.rb +43 -0
  42. data/app/models/agentboard/repository_snapshot.rb +5 -0
  43. data/app/models/agentboard/session_ticket_link.rb +18 -0
  44. data/app/models/agentboard/ticket.rb +81 -0
  45. data/app/models/agentboard/ticket_dependency.rb +34 -0
  46. data/app/models/agentboard/ticket_lease.rb +11 -0
  47. data/app/models/agentboard/usage_record.rb +10 -0
  48. data/app/models/agentboard/verification_result.rb +12 -0
  49. data/app/models/agentboard/webhook_delivery.rb +7 -0
  50. data/app/models/agentboard/workflow_definition.rb +20 -0
  51. data/app/models/agentboard/workflow_run.rb +21 -0
  52. data/app/models/agentboard/workflow_step.rb +12 -0
  53. data/app/services/agentboard/approvals.rb +76 -0
  54. data/app/services/agentboard/captures.rb +113 -0
  55. data/app/services/agentboard/completion_policy.rb +117 -0
  56. data/app/services/agentboard/current.rb +5 -0
  57. data/app/services/agentboard/data_governance.rb +68 -0
  58. data/app/services/agentboard/doctor.rb +133 -0
  59. data/app/services/agentboard/event_store.rb +88 -0
  60. data/app/services/agentboard/evidence.rb +52 -0
  61. data/app/services/agentboard/executions.rb +198 -0
  62. data/app/services/agentboard/hook_ingestion.rb +100 -0
  63. data/app/services/agentboard/idempotency.rb +28 -0
  64. data/app/services/agentboard/lease_service.rb +107 -0
  65. data/app/services/agentboard/mcp_server.rb +138 -0
  66. data/app/services/agentboard/mcp_tools.rb +341 -0
  67. data/app/services/agentboard/outbox.rb +44 -0
  68. data/app/services/agentboard/pull_requests.rb +65 -0
  69. data/app/services/agentboard/runtime/execution_runner.rb +352 -0
  70. data/app/services/agentboard/runtime/ipc_handler.rb +55 -0
  71. data/app/services/agentboard/runtime/reconciler.rb +42 -0
  72. data/app/services/agentboard/runtime/supervisor.rb +96 -0
  73. data/app/services/agentboard/session_association.rb +44 -0
  74. data/app/services/agentboard/session_correlation.rb +56 -0
  75. data/app/services/agentboard/session_credential.rb +44 -0
  76. data/app/services/agentboard/ticket_advisor.rb +60 -0
  77. data/app/services/agentboard/tickets.rb +218 -0
  78. data/app/services/agentboard/verification_service.rb +60 -0
  79. data/app/services/agentboard/workflow_engine.rb +261 -0
  80. data/app/views/agentboard/agents/index.html.erb +51 -0
  81. data/app/views/agentboard/analytics/show.html.erb +78 -0
  82. data/app/views/agentboard/approvals/_approval.html.erb +27 -0
  83. data/app/views/agentboard/approvals/index.html.erb +31 -0
  84. data/app/views/agentboard/board/_card.html.erb +36 -0
  85. data/app/views/agentboard/board/show.html.erb +73 -0
  86. data/app/views/agentboard/executions/index.html.erb +33 -0
  87. data/app/views/agentboard/executions/show.html.erb +126 -0
  88. data/app/views/agentboard/milestones/index.html.erb +28 -0
  89. data/app/views/agentboard/settings/show.html.erb +33 -0
  90. data/app/views/agentboard/shared/_dag.html.erb +24 -0
  91. data/app/views/agentboard/tickets/_form.html.erb +38 -0
  92. data/app/views/agentboard/tickets/edit.html.erb +5 -0
  93. data/app/views/agentboard/tickets/index.html.erb +51 -0
  94. data/app/views/agentboard/tickets/new.html.erb +6 -0
  95. data/app/views/agentboard/tickets/show.html.erb +343 -0
  96. data/app/views/agentboard/tickets/suggestions.html.erb +21 -0
  97. data/app/views/agentboard/workflow_runs/show.html.erb +28 -0
  98. data/app/views/agentboard/workflows/index.html.erb +49 -0
  99. data/app/views/agentboard/workflows/show.html.erb +15 -0
  100. data/app/views/layouts/agentboard/application.html.erb +93 -0
  101. data/config/routes.rb +49 -0
  102. data/db/migrate/20261114000001_create_agentboard_core.rb +144 -0
  103. data/db/migrate/20261114000002_create_agentboard_runtime.rb +213 -0
  104. data/db/migrate/20261115000001_create_agentboard_webhook_deliveries.rb +18 -0
  105. data/exe/agentboard +7 -0
  106. data/lib/agentboard/agent_container.rb +124 -0
  107. data/lib/agentboard/authorization.rb +58 -0
  108. data/lib/agentboard/capture/middleware.rb +54 -0
  109. data/lib/agentboard/capture.rb +57 -0
  110. data/lib/agentboard/cli.rb +818 -0
  111. data/lib/agentboard/command_policy.rb +44 -0
  112. data/lib/agentboard/configuration.rb +160 -0
  113. data/lib/agentboard/container_sandbox.rb +65 -0
  114. data/lib/agentboard/context_builder.rb +243 -0
  115. data/lib/agentboard/egress_proxy.rb +95 -0
  116. data/lib/agentboard/engine.rb +27 -0
  117. data/lib/agentboard/errors.rb +42 -0
  118. data/lib/agentboard/event_schema.rb +37 -0
  119. data/lib/agentboard/extensions.rb +58 -0
  120. data/lib/agentboard/git/repository.rb +92 -0
  121. data/lib/agentboard/git/worktree_manager.rb +107 -0
  122. data/lib/agentboard/git.rb +4 -0
  123. data/lib/agentboard/ids.rb +33 -0
  124. data/lib/agentboard/json_log_formatter.rb +28 -0
  125. data/lib/agentboard/path_guard.rb +27 -0
  126. data/lib/agentboard/process_ancestry.rb +40 -0
  127. data/lib/agentboard/providers/base.rb +107 -0
  128. data/lib/agentboard/providers/claude_code.rb +219 -0
  129. data/lib/agentboard/providers/codex.rb +177 -0
  130. data/lib/agentboard/providers/compatibility/claude.yml +13 -0
  131. data/lib/agentboard/providers/compatibility/codex.yml +10 -0
  132. data/lib/agentboard/providers/config_editor.rb +106 -0
  133. data/lib/agentboard/providers/cursor.rb +40 -0
  134. data/lib/agentboard/providers/fake.rb +59 -0
  135. data/lib/agentboard/providers/fake_agent_script.rb +47 -0
  136. data/lib/agentboard/providers/generic_cli.rb +35 -0
  137. data/lib/agentboard/providers/registry.rb +31 -0
  138. data/lib/agentboard/providers/types.rb +32 -0
  139. data/lib/agentboard/providers.rb +26 -0
  140. data/lib/agentboard/rails_introspection.rb +49 -0
  141. data/lib/agentboard/redactor.rb +62 -0
  142. data/lib/agentboard/result.rb +46 -0
  143. data/lib/agentboard/runtime/ipc.rb +193 -0
  144. data/lib/agentboard/runtime.rb +1 -0
  145. data/lib/agentboard/state_machines.rb +71 -0
  146. data/lib/agentboard/subprocess.rb +168 -0
  147. data/lib/agentboard/templates/Dockerfile.agent +21 -0
  148. data/lib/agentboard/verification.rb +79 -0
  149. data/lib/agentboard/version.rb +3 -0
  150. data/lib/agentboard/workflows/condition.rb +166 -0
  151. data/lib/agentboard/workflows/definition.rb +208 -0
  152. data/lib/agentboard/workflows.rb +2 -0
  153. data/lib/agentboard.rb +73 -0
  154. data/lib/generators/agentboard/install/install_generator.rb +67 -0
  155. data/lib/generators/agentboard/install/templates/config.yml +81 -0
  156. data/lib/generators/agentboard/install/templates/feature_delivery.yml +25 -0
  157. data/lib/generators/agentboard/install/templates/initializer.rb +23 -0
  158. data/lib/tasks/agentboard_tasks.rake +6 -0
  159. metadata +285 -0
data/lib/agentboard.rb ADDED
@@ -0,0 +1,73 @@
1
+ require "securerandom"
2
+ require "digest"
3
+ require "json"
4
+ require "yaml"
5
+ require "pathname"
6
+ require "set"
7
+ require "active_support"
8
+ require "active_support/core_ext/object/blank"
9
+ require "active_support/core_ext/string"
10
+
11
+ require "agentboard/version"
12
+ require "agentboard/errors"
13
+ require "agentboard/result"
14
+ require "agentboard/ids"
15
+ require "agentboard/redactor"
16
+ require "agentboard/extensions"
17
+ require "agentboard/command_policy"
18
+ require "agentboard/process_ancestry"
19
+ require "agentboard/json_log_formatter"
20
+ require "agentboard/container_sandbox"
21
+ require "agentboard/agent_container"
22
+ require "agentboard/egress_proxy"
23
+ require "agentboard/event_schema"
24
+ require "agentboard/configuration"
25
+ require "agentboard/state_machines"
26
+ require "agentboard/authorization"
27
+ require "agentboard/providers"
28
+ require "agentboard/git"
29
+ require "agentboard/verification"
30
+ require "agentboard/workflows"
31
+ require "agentboard/rails_introspection"
32
+ require "agentboard/context_builder"
33
+ require "agentboard/capture"
34
+ require "agentboard/runtime"
35
+ require "agentboard/engine" if defined?(Rails::Engine)
36
+
37
+ # AgentBoard: local-first, AI-native development management and orchestration.
38
+ #
39
+ # The Rails Engine (UI, API, persistence) and the runtime daemon (agent processes)
40
+ # are separate OS processes. Everything under lib/ is framework-independent unless
41
+ # it explicitly requires Active Record models from app/.
42
+ module Agentboard
43
+ class << self
44
+ def configuration
45
+ @configuration ||= Configuration.new
46
+ end
47
+ alias_method :config, :configuration
48
+
49
+ def configure
50
+ yield configuration
51
+ end
52
+
53
+ def reset_configuration!
54
+ @configuration = nil
55
+ end
56
+
57
+ # Third-party adapter registration (spec §5):
58
+ # Agentboard.register_provider(:custom_agent, adapter: MyCustomAgentAdapter)
59
+ def register_provider(key, adapter:)
60
+ Providers.registry.register(key, adapter)
61
+ end
62
+
63
+ def logger
64
+ @logger ||= if defined?(Rails) && Rails.respond_to?(:logger) && Rails.logger
65
+ Rails.logger
66
+ else
67
+ require "logger"
68
+ Logger.new($stderr, level: Logger::INFO)
69
+ end
70
+ end
71
+ attr_writer :logger
72
+ end
73
+ end
@@ -0,0 +1,67 @@
1
+ require "rails/generators"
2
+ require "rails/generators/active_record"
3
+
4
+ module Agentboard
5
+ module Generators
6
+ # bin/rails generate agentboard:install
7
+ # Idempotent: never overwrites existing files unless --force (Thor shows a diff/conflict prompt otherwise).
8
+ class InstallGenerator < Rails::Generators::Base
9
+ include ActiveRecord::Generators::Migration
10
+ source_root File.expand_path("templates", __dir__)
11
+
12
+ def copy_initializer
13
+ template "initializer.rb", "config/initializers/agentboard.rb"
14
+ end
15
+
16
+ def copy_config
17
+ template "config.yml", "config/agentboard.yml"
18
+ end
19
+
20
+ def create_local_dirs
21
+ %w[workflows instructions policies cache].each { |d| empty_directory ".agentboard/#{d}" }
22
+ copy_file "feature_delivery.yml", ".agentboard/workflows/feature_delivery.yml"
23
+ end
24
+
25
+ def copy_migrations
26
+ rake "agentboard:install:migrations"
27
+ end
28
+
29
+ def mount_engine
30
+ routes = File.join(destination_root, "config/routes.rb")
31
+ return if File.exist?(routes) && File.read(routes).include?("Agentboard::Engine")
32
+
33
+ route "# AgentBoard dashboard: development only by default\nif Rails.env.development?\n mount Agentboard::Engine, at: \"/agentboard\"\nend"
34
+ end
35
+
36
+ def ignore_local_state
37
+ path = File.join(destination_root, ".gitignore")
38
+ entries = [ "/.agentboard/worktrees/", "/.agentboard/logs/", "/.agentboard/cache/", "/.agentboard/spool/", "/.agentboard/manifests/", "*.agentboard-backup-*" ]
39
+ existing = File.exist?(path) ? File.read(path).lines.map(&:strip) : []
40
+ missing = entries - existing
41
+ return if missing.empty?
42
+
43
+ block = "\n# AgentBoard local state\n#{missing.join("\n")}\n"
44
+ File.exist?(path) ? append_to_file(".gitignore", block) : create_file(".gitignore", block.lstrip)
45
+ end
46
+
47
+ def write_manifest
48
+ create_file ".agentboard/generated_manifest.json", JSON.pretty_generate(
49
+ "generator" => "agentboard:install", "version" => Agentboard::VERSION,
50
+ "files" => %w[config/initializers/agentboard.rb config/agentboard.yml .agentboard/workflows/feature_delivery.yml]
51
+ ) + "\n"
52
+ end
53
+
54
+ def show_next_steps
55
+ say <<~TEXT
56
+
57
+ AgentBoard installed. Next:
58
+ bin/rails db:migrate
59
+ bundle exec agentboard doctor
60
+ bundle exec agentboard provider setup claude # and/or codex
61
+ bundle exec agentboard daemon start
62
+ open http://localhost:3000/agentboard
63
+ TEXT
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,81 @@
1
+ # AgentBoard configuration — desired behaviour. Actual provider capabilities are detected.
2
+ project:
3
+ name: # defaults to the repository directory name
4
+ key: # ticket prefix, e.g. AB (defaults to initials of the name)
5
+
6
+ runtime:
7
+ mode: local
8
+ max_concurrent_executions: 1
9
+ workspace: .agentboard/worktrees
10
+ execution_timeout_seconds: 3600
11
+ cancel_grace_seconds: 5
12
+
13
+ providers:
14
+ claude: { enabled: true, passive: true, active: true }
15
+ codex: { enabled: true, passive: true, active: true }
16
+ cursor: { enabled: false, passive: true, active: false }
17
+ fake: { enabled: true, passive: true, active: true }
18
+
19
+ security:
20
+ require_review: true
21
+ allow_production_commands: false
22
+ # Agents run as your OS user; Git worktrees are NOT sandboxes. Real providers (claude,
23
+ # codex) only run in active mode once you explicitly trust local execution:
24
+ trusted_local_execution: false
25
+ sandbox: none # container: run verification (and, with sandbox.agents, agents) in Docker
26
+
27
+ # Container isolation (security.sandbox: container). `agentboard sandbox init && agentboard sandbox build`
28
+ # sandbox:
29
+ # runtime: docker
30
+ # image: agentboard-agent:<project> # verification commands, --network none
31
+ # agents: true # also run agents in containers
32
+ # agent_image: agentboard-agent:<project> # internal network + egress allowlist proxy
33
+ # egress_allow: [] # extra host:port pairs beyond provider APIs
34
+ # credential_env: [ANTHROPIC_API_KEY, OPENAI_API_KEY] # forwarded by name only
35
+ # claude_config_dir: ~/.agentboard-sandbox/claude # dedicated (not your personal) login
36
+
37
+ completion:
38
+ require_criteria_verified: true
39
+ require_checks: true
40
+ require_approval: true
41
+ # when_linked: tickets with an open/merged PR need that PR merged on the reviewed head;
42
+ # tickets without a PR complete on criteria + checks + approval. Also: always | never.
43
+ require_merged_pr: when_linked
44
+
45
+ # Approved command catalog. Workflows and agents reference these by name; argv is executed
46
+ # directly (no shell). Results are bound to the exact commit they ran against.
47
+ verification_commands:
48
+ rails_test:
49
+ argv: ["bin/rails", "test"]
50
+ timeout_seconds: 900
51
+ required: true
52
+ rubocop:
53
+ argv: ["bin/rubocop"]
54
+ timeout_seconds: 600
55
+ required: false
56
+
57
+ # In-app capture widget (Alt+Shift+A on any page). Development is free; other environments
58
+ # (e.g. staging for QA) and screenshots need AgentBoard Pro (feature: capture).
59
+ capture:
60
+ enabled: true
61
+ environments: [development]
62
+
63
+ retention:
64
+ raw_log_days: 30
65
+ worktree_days: 7
66
+ provider_output_event_days: 30
67
+
68
+ # Git hosting (AgentBoard Pro, feature git_hosting). Point a webhook for pull/merge
69
+ # requests at /agentboard/webhooks/<github|gitlab|bitbucket> and export the secret in the
70
+ # variable named below. Without a secret the endpoint does not exist.
71
+ git_hosts:
72
+ default: # github | gitlab | bitbucket — detected from `origin` when empty
73
+ github:
74
+ secret_env: AGENTBOARD_GITHUB_WEBHOOK_SECRET # HMAC (X-Hub-Signature-256)
75
+ gitlab:
76
+ secret_env: AGENTBOARD_GITLAB_WEBHOOK_TOKEN # X-Gitlab-Token
77
+ base_url: https://gitlab.com
78
+ token_env: GITLAB_TOKEN # for opening merge requests
79
+ bitbucket:
80
+ secret_env: AGENTBOARD_BITBUCKET_WEBHOOK_SECRET # HMAC (X-Hub-Signature)
81
+ token_env: BITBUCKET_TOKEN # repository access token
@@ -0,0 +1,25 @@
1
+ version: 1
2
+ name: feature_delivery
3
+ steps:
4
+ - id: plan
5
+ type: agent
6
+ provider: claude
7
+ action: plan
8
+ - id: implement
9
+ type: agent
10
+ provider: codex
11
+ action: implement
12
+ depends_on: [plan]
13
+ # AgentBoard Pro adds: retry, timeout_seconds, condition, external and git_pull_request steps.
14
+ - id: test
15
+ type: command
16
+ command: rails_test
17
+ depends_on: [implement]
18
+ - id: review
19
+ type: agent
20
+ provider: claude
21
+ action: review
22
+ depends_on: [test]
23
+ - id: approval
24
+ type: human_approval
25
+ depends_on: [review]
@@ -0,0 +1,23 @@
1
+ # AgentBoard is usually bundled in the :development group only, so this file must be a no-op
2
+ # in environments (test, production) where the gem is not loaded.
3
+ return unless defined?(Agentboard::Engine)
4
+
5
+ # AgentBoard configuration. YAML in config/agentboard.yml and .agentboard/config.yml is
6
+ # loaded first; anything set here takes precedence.
7
+ Agentboard.configure do |config|
8
+ # Reuse your app's authentication for the dashboard (return an actor or nil):
9
+ #
10
+ # config.authenticate_with = ->(controller) do
11
+ # user = controller.send(:current_user) or next nil
12
+ # Agentboard::Authorization::Actor.new(type: "human", id: user.id.to_s, name: user.email, role: user.admin? ? "administrator" : "developer")
13
+ # end
14
+ #
15
+ # Without an adapter the dashboard only accepts local requests. Optionally require a token:
16
+ # config.dashboard_token = ENV["AGENTBOARD_DASHBOARD_TOKEN"]
17
+ #
18
+ # Extra secret patterns to redact from logs, events and exports:
19
+ # config.redaction_patterns = [/acme_live_[A-Za-z0-9]{24}/]
20
+ end
21
+
22
+ # Third-party provider adapters:
23
+ # Agentboard.register_provider(:custom_agent, adapter: MyCustomAgentAdapter)
@@ -0,0 +1,6 @@
1
+ namespace :agentboard do
2
+ desc "Drain the event outbox once"
3
+ task drain_outbox: :environment do
4
+ puts "delivered #{Agentboard::Outbox.drain(limit: 1000)}"
5
+ end
6
+ end
metadata ADDED
@@ -0,0 +1,285 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: agentboard
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ platform: ruby
6
+ authors:
7
+ - PIRUBY
8
+ bindir: exe
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: rails
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '7.2'
19
+ - - "<"
20
+ - !ruby/object:Gem::Version
21
+ version: '9'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ version: '7.2'
29
+ - - "<"
30
+ - !ruby/object:Gem::Version
31
+ version: '9'
32
+ - !ruby/object:Gem::Dependency
33
+ name: turbo-rails
34
+ requirement: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: '2.0'
39
+ type: :runtime
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: '2.0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: stimulus-rails
48
+ requirement: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: '1.3'
53
+ type: :runtime
54
+ prerelease: false
55
+ version_requirements: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: '1.3'
60
+ - !ruby/object:Gem::Dependency
61
+ name: mcp
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: '0.25'
67
+ - - "<"
68
+ - !ruby/object:Gem::Version
69
+ version: '1'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0.25'
77
+ - - "<"
78
+ - !ruby/object:Gem::Version
79
+ version: '1'
80
+ - !ruby/object:Gem::Dependency
81
+ name: thor
82
+ requirement: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ version: '1.3'
87
+ type: :runtime
88
+ prerelease: false
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: '1.3'
94
+ description: |
95
+ AgentBoard installs into a Rails application and connects tickets to coding agents
96
+ (Claude Code, OpenAI Codex, Cursor and third-party adapters) through MCP, provider hooks,
97
+ a supervised runtime daemon, isolated Git worktrees and evidence-based completion policies.
98
+ executables:
99
+ - agentboard
100
+ extensions: []
101
+ extra_rdoc_files: []
102
+ files:
103
+ - CHANGELOG.md
104
+ - MIT-LICENSE
105
+ - README.md
106
+ - Rakefile
107
+ - app/assets/stylesheets/agentboard/application.css
108
+ - app/controllers/agentboard/agents_controller.rb
109
+ - app/controllers/agentboard/analytics_controller.rb
110
+ - app/controllers/agentboard/application_controller.rb
111
+ - app/controllers/agentboard/approvals_controller.rb
112
+ - app/controllers/agentboard/assets_controller.rb
113
+ - app/controllers/agentboard/board_controller.rb
114
+ - app/controllers/agentboard/captures_controller.rb
115
+ - app/controllers/agentboard/comments_controller.rb
116
+ - app/controllers/agentboard/criteria_controller.rb
117
+ - app/controllers/agentboard/dependencies_controller.rb
118
+ - app/controllers/agentboard/executions_controller.rb
119
+ - app/controllers/agentboard/milestones_controller.rb
120
+ - app/controllers/agentboard/pulse_controller.rb
121
+ - app/controllers/agentboard/sessions_controller.rb
122
+ - app/controllers/agentboard/settings_controller.rb
123
+ - app/controllers/agentboard/tickets_controller.rb
124
+ - app/controllers/agentboard/workflow_runs_controller.rb
125
+ - app/controllers/agentboard/workflows_controller.rb
126
+ - app/helpers/agentboard/application_helper.rb
127
+ - app/javascript/agentboard/application.js
128
+ - app/javascript/agentboard/capture.js
129
+ - app/jobs/agentboard/application_job.rb
130
+ - app/models/agentboard/acceptance_criterion.rb
131
+ - app/models/agentboard/agent_profile.rb
132
+ - app/models/agentboard/agent_session.rb
133
+ - app/models/agentboard/application_record.rb
134
+ - app/models/agentboard/approval.rb
135
+ - app/models/agentboard/artifact.rb
136
+ - app/models/agentboard/comment.rb
137
+ - app/models/agentboard/event.rb
138
+ - app/models/agentboard/execution.rb
139
+ - app/models/agentboard/idempotency_key.rb
140
+ - app/models/agentboard/milestone.rb
141
+ - app/models/agentboard/outbox_message.rb
142
+ - app/models/agentboard/project.rb
143
+ - app/models/agentboard/repository_snapshot.rb
144
+ - app/models/agentboard/session_ticket_link.rb
145
+ - app/models/agentboard/ticket.rb
146
+ - app/models/agentboard/ticket_dependency.rb
147
+ - app/models/agentboard/ticket_lease.rb
148
+ - app/models/agentboard/usage_record.rb
149
+ - app/models/agentboard/verification_result.rb
150
+ - app/models/agentboard/webhook_delivery.rb
151
+ - app/models/agentboard/workflow_definition.rb
152
+ - app/models/agentboard/workflow_run.rb
153
+ - app/models/agentboard/workflow_step.rb
154
+ - app/services/agentboard/approvals.rb
155
+ - app/services/agentboard/captures.rb
156
+ - app/services/agentboard/completion_policy.rb
157
+ - app/services/agentboard/current.rb
158
+ - app/services/agentboard/data_governance.rb
159
+ - app/services/agentboard/doctor.rb
160
+ - app/services/agentboard/event_store.rb
161
+ - app/services/agentboard/evidence.rb
162
+ - app/services/agentboard/executions.rb
163
+ - app/services/agentboard/hook_ingestion.rb
164
+ - app/services/agentboard/idempotency.rb
165
+ - app/services/agentboard/lease_service.rb
166
+ - app/services/agentboard/mcp_server.rb
167
+ - app/services/agentboard/mcp_tools.rb
168
+ - app/services/agentboard/outbox.rb
169
+ - app/services/agentboard/pull_requests.rb
170
+ - app/services/agentboard/runtime/execution_runner.rb
171
+ - app/services/agentboard/runtime/ipc_handler.rb
172
+ - app/services/agentboard/runtime/reconciler.rb
173
+ - app/services/agentboard/runtime/supervisor.rb
174
+ - app/services/agentboard/session_association.rb
175
+ - app/services/agentboard/session_correlation.rb
176
+ - app/services/agentboard/session_credential.rb
177
+ - app/services/agentboard/ticket_advisor.rb
178
+ - app/services/agentboard/tickets.rb
179
+ - app/services/agentboard/verification_service.rb
180
+ - app/services/agentboard/workflow_engine.rb
181
+ - app/views/agentboard/agents/index.html.erb
182
+ - app/views/agentboard/analytics/show.html.erb
183
+ - app/views/agentboard/approvals/_approval.html.erb
184
+ - app/views/agentboard/approvals/index.html.erb
185
+ - app/views/agentboard/board/_card.html.erb
186
+ - app/views/agentboard/board/show.html.erb
187
+ - app/views/agentboard/executions/index.html.erb
188
+ - app/views/agentboard/executions/show.html.erb
189
+ - app/views/agentboard/milestones/index.html.erb
190
+ - app/views/agentboard/settings/show.html.erb
191
+ - app/views/agentboard/shared/_dag.html.erb
192
+ - app/views/agentboard/tickets/_form.html.erb
193
+ - app/views/agentboard/tickets/edit.html.erb
194
+ - app/views/agentboard/tickets/index.html.erb
195
+ - app/views/agentboard/tickets/new.html.erb
196
+ - app/views/agentboard/tickets/show.html.erb
197
+ - app/views/agentboard/tickets/suggestions.html.erb
198
+ - app/views/agentboard/workflow_runs/show.html.erb
199
+ - app/views/agentboard/workflows/index.html.erb
200
+ - app/views/agentboard/workflows/show.html.erb
201
+ - app/views/layouts/agentboard/application.html.erb
202
+ - config/routes.rb
203
+ - db/migrate/20261114000001_create_agentboard_core.rb
204
+ - db/migrate/20261114000002_create_agentboard_runtime.rb
205
+ - db/migrate/20261115000001_create_agentboard_webhook_deliveries.rb
206
+ - exe/agentboard
207
+ - lib/agentboard.rb
208
+ - lib/agentboard/agent_container.rb
209
+ - lib/agentboard/authorization.rb
210
+ - lib/agentboard/capture.rb
211
+ - lib/agentboard/capture/middleware.rb
212
+ - lib/agentboard/cli.rb
213
+ - lib/agentboard/command_policy.rb
214
+ - lib/agentboard/configuration.rb
215
+ - lib/agentboard/container_sandbox.rb
216
+ - lib/agentboard/context_builder.rb
217
+ - lib/agentboard/egress_proxy.rb
218
+ - lib/agentboard/engine.rb
219
+ - lib/agentboard/errors.rb
220
+ - lib/agentboard/event_schema.rb
221
+ - lib/agentboard/extensions.rb
222
+ - lib/agentboard/git.rb
223
+ - lib/agentboard/git/repository.rb
224
+ - lib/agentboard/git/worktree_manager.rb
225
+ - lib/agentboard/ids.rb
226
+ - lib/agentboard/json_log_formatter.rb
227
+ - lib/agentboard/path_guard.rb
228
+ - lib/agentboard/process_ancestry.rb
229
+ - lib/agentboard/providers.rb
230
+ - lib/agentboard/providers/base.rb
231
+ - lib/agentboard/providers/claude_code.rb
232
+ - lib/agentboard/providers/codex.rb
233
+ - lib/agentboard/providers/compatibility/claude.yml
234
+ - lib/agentboard/providers/compatibility/codex.yml
235
+ - lib/agentboard/providers/config_editor.rb
236
+ - lib/agentboard/providers/cursor.rb
237
+ - lib/agentboard/providers/fake.rb
238
+ - lib/agentboard/providers/fake_agent_script.rb
239
+ - lib/agentboard/providers/generic_cli.rb
240
+ - lib/agentboard/providers/registry.rb
241
+ - lib/agentboard/providers/types.rb
242
+ - lib/agentboard/rails_introspection.rb
243
+ - lib/agentboard/redactor.rb
244
+ - lib/agentboard/result.rb
245
+ - lib/agentboard/runtime.rb
246
+ - lib/agentboard/runtime/ipc.rb
247
+ - lib/agentboard/state_machines.rb
248
+ - lib/agentboard/subprocess.rb
249
+ - lib/agentboard/templates/Dockerfile.agent
250
+ - lib/agentboard/verification.rb
251
+ - lib/agentboard/version.rb
252
+ - lib/agentboard/workflows.rb
253
+ - lib/agentboard/workflows/condition.rb
254
+ - lib/agentboard/workflows/definition.rb
255
+ - lib/generators/agentboard/install/install_generator.rb
256
+ - lib/generators/agentboard/install/templates/config.yml
257
+ - lib/generators/agentboard/install/templates/feature_delivery.yml
258
+ - lib/generators/agentboard/install/templates/initializer.rb
259
+ - lib/tasks/agentboard_tasks.rake
260
+ homepage: https://agent-board.live
261
+ licenses:
262
+ - MIT
263
+ metadata:
264
+ rubygems_mfa_required: 'true'
265
+ allowed_push_host: https://rubygems.org
266
+ homepage_uri: https://agent-board.live
267
+ documentation_uri: https://agent-board.live/docs
268
+ rdoc_options: []
269
+ require_paths:
270
+ - lib
271
+ required_ruby_version: !ruby/object:Gem::Requirement
272
+ requirements:
273
+ - - ">="
274
+ - !ruby/object:Gem::Version
275
+ version: '3.3'
276
+ required_rubygems_version: !ruby/object:Gem::Requirement
277
+ requirements:
278
+ - - ">="
279
+ - !ruby/object:Gem::Version
280
+ version: '0'
281
+ requirements: []
282
+ rubygems_version: 4.0.16
283
+ specification_version: 4
284
+ summary: Local-first, AI-native ticket board and agent orchestration engine for Rails.
285
+ test_files: []