agent_sessions 0.3.0 → 0.4.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 (65) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +16 -0
  3. data/README.md +87 -3
  4. data/doc/Agent/Sessions/Adapters/Amp.md +91 -0
  5. data/doc/Agent/Sessions/Adapters/Base.md +198 -0
  6. data/doc/Agent/Sessions/Adapters/Claude.md +63 -0
  7. data/doc/Agent/Sessions/Adapters/Codex.md +79 -0
  8. data/doc/Agent/Sessions/Adapters/Copilot.md +38 -0
  9. data/doc/Agent/Sessions/Adapters/Cursor.md +54 -0
  10. data/doc/Agent/Sessions/Adapters/CursorIde.md +49 -0
  11. data/doc/Agent/Sessions/Adapters/Enumeration.md +135 -0
  12. data/doc/Agent/Sessions/Adapters/Gemini.md +67 -0
  13. data/doc/Agent/Sessions/Adapters/Grok.md +64 -0
  14. data/doc/Agent/Sessions/Adapters/Opencode.md +93 -0
  15. data/doc/Agent/Sessions/Adapters/Pi.md +137 -0
  16. data/doc/Agent/Sessions/Adapters/Qwen.md +32 -0
  17. data/doc/Agent/Sessions/Adapters.md +5 -0
  18. data/doc/Agent/Sessions/Audit/Finding.md +27 -0
  19. data/doc/Agent/Sessions/Audit.md +21 -0
  20. data/doc/Agent/Sessions/CLI.md +36 -0
  21. data/doc/Agent/Sessions/Check.md +27 -0
  22. data/doc/Agent/Sessions/Compaction.md +23 -0
  23. data/doc/Agent/Sessions/EnvOverride.md +19 -0
  24. data/doc/Agent/Sessions/Error.md +6 -0
  25. data/doc/Agent/Sessions/HomeExpansion.md +11 -0
  26. data/doc/Agent/Sessions/Location.md +60 -0
  27. data/doc/Agent/Sessions/Message.md +59 -0
  28. data/doc/Agent/Sessions/MissingDependency.md +6 -0
  29. data/doc/Agent/Sessions/Node.md +24 -0
  30. data/doc/Agent/Sessions/Part.md +41 -0
  31. data/doc/Agent/Sessions/Readers/Amp.md +41 -0
  32. data/doc/Agent/Sessions/Readers/Base.md +122 -0
  33. data/doc/Agent/Sessions/Readers/Claude.md +80 -0
  34. data/doc/Agent/Sessions/Readers/Codex.md +81 -0
  35. data/doc/Agent/Sessions/Readers/Copilot.md +31 -0
  36. data/doc/Agent/Sessions/Readers/Gemini.md +38 -0
  37. data/doc/Agent/Sessions/Readers/Grok.md +45 -0
  38. data/doc/Agent/Sessions/Readers/Opencode.md +37 -0
  39. data/doc/Agent/Sessions/Readers/Pi.md +38 -0
  40. data/doc/Agent/Sessions/Readers/Qwen.md +30 -0
  41. data/doc/Agent/Sessions/Readers.md +5 -0
  42. data/doc/Agent/Sessions/RoundTrip.md +57 -0
  43. data/doc/Agent/Sessions/Session.md +73 -0
  44. data/doc/Agent/Sessions/Sqlite.md +43 -0
  45. data/doc/Agent/Sessions/Store.md +57 -0
  46. data/doc/Agent/Sessions/UnknownAgent.md +6 -0
  47. data/doc/Agent/Sessions/UnreadableStore.md +6 -0
  48. data/doc/Agent/Sessions/UnsupportedFormat.md +6 -0
  49. data/doc/Agent/Sessions/Usage.md +56 -0
  50. data/doc/Agent/Sessions.md +178 -0
  51. data/doc/Agent.md +5 -0
  52. data/doc/CHANGELOG.md +77 -0
  53. data/doc/README.md +182 -0
  54. data/doc/index.csv +330 -0
  55. data/exe/agent-sessions +0 -2
  56. data/lib/agent/sessions/adapters/cursor.rb +3 -3
  57. data/lib/agent/sessions/cli.rb +2 -2
  58. data/lib/agent/sessions/message.rb +1 -2
  59. data/lib/agent/sessions/part.rb +1 -2
  60. data/lib/agent/sessions/readers/base.rb +95 -0
  61. data/lib/agent/sessions/readers/claude.rb +10 -0
  62. data/lib/agent/sessions/round_trip.rb +39 -0
  63. data/lib/agent/sessions/version.rb +1 -1
  64. data/llm.txt +178 -0
  65. metadata +56 -2
data/llm.txt ADDED
@@ -0,0 +1,178 @@
1
+ # Module Agent::Sessions <a id="module-Agent-Sessions"></a>
2
+
3
+ | | |
4
+ | --- | --- |
5
+ | **Defined in** | lib/agent/sessions.rb, lib/agent/sessions/cli.rb, lib/agent/sessions/node.rb, lib/agent/sessions/part.rb, lib/agent/sessions/audit.rb, lib/agent/sessions/check.rb, lib/agent/sessions/error.rb, lib/agent/sessions/store.rb, lib/agent/sessions/usage.rb, lib/agent/sessions/sqlite.rb, lib/agent/sessions/message.rb, lib/agent/sessions/session.rb, lib/agent/sessions/version.rb, lib/agent/sessions/location.rb, lib/agent/sessions/compaction.rb, lib/agent/sessions/readers/pi.rb, lib/agent/sessions/round_trip.rb, lib/agent/sessions/adapters/pi.rb, lib/agent/sessions/readers/amp.rb, lib/agent/sessions/adapters/amp.rb, lib/agent/sessions/env_override.rb, lib/agent/sessions/readers/base.rb, lib/agent/sessions/readers/grok.rb, lib/agent/sessions/readers/qwen.rb, lib/agent/sessions/adapters/base.rb, lib/agent/sessions/adapters/grok.rb, lib/agent/sessions/adapters/qwen.rb, lib/agent/sessions/readers/codex.rb, lib/agent/sessions/unknown_agent.rb, lib/agent/sessions/adapters/codex.rb, lib/agent/sessions/home_expansion.rb, lib/agent/sessions/readers/claude.rb, lib/agent/sessions/readers/gemini.rb, lib/agent/sessions/adapters/claude.rb, lib/agent/sessions/adapters/cursor.rb, lib/agent/sessions/adapters/gemini.rb, lib/agent/sessions/readers/copilot.rb, lib/agent/sessions/adapters/copilot.rb, lib/agent/sessions/readers/opencode.rb, lib/agent/sessions/unreadable_store.rb, lib/agent/sessions/adapters/opencode.rb, lib/agent/sessions/missing_dependency.rb, lib/agent/sessions/unsupported_format.rb, lib/agent/sessions/adapters/cursor_ide.rb, lib/agent/sessions/adapters/enumeration.rb |
6
+
7
+ ## Constants
8
+ ### `LOADER` <a id="constant-LOADER"></a> <a id="LOADER-constant"></a>
9
+ Not documented.
10
+
11
+ ### `STALE_AFTER_DAYS` <a id="constant-STALE_AFTER_DAYS"></a> <a id="STALE_AFTER_DAYS-constant"></a>
12
+ Not documented.
13
+
14
+ ### `VERIFIED_ON` <a id="constant-VERIFIED_ON"></a> <a id="VERIFIED_ON-constant"></a>
15
+ The oldest verified_on among the built-in adapters. A claim about somebody
16
+ else's software is only as current as its weakest link, so this is the honest
17
+ answer to "when was this last known to be true".
18
+
19
+ ### `VERSION` <a id="constant-VERSION"></a> <a id="VERSION-constant"></a>
20
+ Not documented.
21
+
22
+ ## Public Class Methods
23
+ ### `agents()` <a id="method-c-agents"></a> <a id="agents-class_method"></a>
24
+ Not documented.
25
+
26
+ ### `all(env: ENV)` <a id="method-c-all"></a> <a id="all-class_method"></a>
27
+ Not documented.
28
+
29
+ ### `audit(env: ENV)` <a id="method-c-audit"></a> <a id="audit-class_method"></a>
30
+ Not documented.
31
+
32
+ ### `doctor(agent = nil, env: ENV, today: Date.today)` <a id="method-c-doctor"></a> <a id="doctor-class_method"></a>
33
+ Not documented.
34
+
35
+ ### `for_project(dir, env: ENV, agents: nil)` <a id="method-c-for_project"></a> <a id="for_project-class_method"></a>
36
+ One project across every agent (or the agents: subset), lazily: adapters
37
+ earlier in the sweep satisfy `first(n)` without the later ones ever being
38
+ asked. Within one adapter, though, laziness cannot skip non-matching sessions
39
+ — sessions_for_project must still stat and check each candidate to know it
40
+ does not match, so an adapter with zero matches costs a full scan of its store
41
+ before the sweep moves on. True of the six Base-driven adapters; opencode
42
+ pushes the filter into SQL (WHERE directory = ?) and stats nothing.
43
+
44
+ Deliberately does NOT rescue MissingDependency or UnreadableStore: opencode
45
+ without the sqlite3 gem, or with a corrupt/locked database, raises. Since
46
+ `flat_map` is lazy, that raise surfaces only once enumeration reaches the
47
+ failing adapter — possibly after other agents' sessions have already been
48
+ yielded to the caller mid-iteration, and possibly not at all if `first(n)` is
49
+ satisfied first. Silently omitting an agent's sessions is this gem's worst
50
+ failure mode (design doc decision 11), so this method never trades a raised,
51
+ attributable error for a quietly incomplete list. A caller that wants the
52
+ sweep to survive one bad agent should rescue per call, e.g. by driving
53
+ <code>agents:</code> itself and catching around each adapter; a caller who
54
+ just wants to route around a known-bad agent can pass <code>agents:</code>
55
+ naming every registered agent except it. The CLI (Task 10) does the former,
56
+ turning the same exceptions into per-agent "skipped" lines instead of one
57
+ failed sweep. Note a rescue cannot resume this enumerator: re-calling each
58
+ after a raise re-raises from the same adapter. The only recovery is a fresh
59
+ call with a narrower <code>agents:</code>. Adapters are resolved eagerly, so
60
+ an unknown name in <code>agents:</code> raises here rather than mid-sweep. The
61
+ deferral above is about DATA conditions, where the raise carries information
62
+ about a store; a typo'd agent symbol is a programmer error knowable before any
63
+ I/O, and `agents: [:claude, :nope]` otherwise hands back Claude's sessions and
64
+ then crashes. Base#initialize only stores @env, so constructing all seven up
65
+ front costs nothing, and the sweep stays lazy — first(n) still stops at the
66
+ first matching adapter.
67
+
68
+ ### `installed(env: ENV)` <a id="method-c-installed"></a> <a id="installed-class_method"></a>
69
+ Not documented.
70
+
71
+ ### `locate(agent, env: ENV)` <a id="method-c-locate"></a> <a id="locate-class_method"></a>
72
+ Not documented.
73
+
74
+ ### `projects(agent, env: ENV)` <a id="method-c-projects"></a> <a id="projects-class_method"></a>
75
+ Eager, unlike sessions/for_project: project_paths already reads every session
76
+ to answer (design doc section 7 — the on-disk encodings are lossy, so the
77
+ recorded cwd is the only reliable source), sorts, and dedupes, so a lazy
78
+ return type here would promise a laziness the work underneath cannot honor.
79
+ Returns a plain, already-sorted Array. Raises MissingDependency or
80
+ UnreadableStore for opencode, as sessions does.
81
+
82
+ ### `read(session, **options)` <a id="method-c-read"></a> <a id="read-class_method"></a>
83
+ Layer 3. Takes a Session (from `sessions`, `for_project`), not an agent name,
84
+ because reading is per-session — the adapter comes from the session itself.
85
+ Raises UnsupportedFormat for an agent with no reader yet, rather than
86
+ returning a reader that yields nothing: "this gem cannot read that format" and
87
+ "that session has no messages" must never look alike.
88
+
89
+ include_events: true adds the agent's UI-level records to the stream where an
90
+ adapter has them. They are excluded by default because they are bookkeeping,
91
+ not conversation, and they outnumber real messages.
92
+
93
+ ### `register(adapter_class)` <a id="method-c-register"></a> <a id="register-class_method"></a>
94
+ Re-registering a name deliberately replaces it, so a consumer can ship a
95
+ corrected adapter for an agent whose layout moved before the gem catches up.
96
+ - **@raise** [Error]
97
+
98
+ ### `registry()` <a id="method-c-registry"></a> <a id="registry-class_method"></a>
99
+ Not documented.
100
+
101
+ ### `sessions(agent, env: ENV, since: nil)` <a id="method-c-sessions"></a> <a id="sessions-class_method"></a>
102
+ Lazy: consuming N sessions stats N files, never more. `since`, when given,
103
+ must be a Time (or anything Time#>= accepts) — comparing updated_at (always a
104
+ Time; every adapter populates it, from mtime or store metadata) against a
105
+ Date, Integer, or String raises ArgumentError("comparison of Time with ...
106
+ failed"), which already names the mistake, so no extra guard is added here.
107
+ That raise happens on enumeration, not on this call, because the filter itself
108
+ is lazy — `sessions(:x, since: bad).first(1)` can raise from inside `first`,
109
+ not from this line. Raises MissingDependency or UnreadableStore for opencode
110
+ under the same conditions described on for_project below.
111
+
112
+ ### `unresolved_project_count(agent, env: ENV)` <a id="method-c-unresolved_project_count"></a> <a id="unresolved_project_count-class_method"></a>
113
+ Companion to `projects`/`project_paths`, which both exclude a session whose
114
+ project could not be resolved rather than counting it (design doc section 7) —
115
+ so "this agent genuinely records no projects" and "this agent's project
116
+ resolution is broken" read identically from the outside. Three of seven
117
+ adapters can legitimately return a nil project_path (Amp threads with no
118
+ `trees`, cursor_ide by design, pi whenever its unverified header assumption is
119
+ wrong); this counts it for any of them, uniformly, using only the public
120
+ `sessions` enumerator —no adapter needs to know this exists. Eager and a
121
+ second full sweep of the store, same cost class as `projects` itself, so it is
122
+ opt-in (called by the CLI only under `list --project`, never under plain
123
+ `list`) rather than folded into `projects`' own return value, which is a
124
+ documented, tested plain Array and would otherwise need a shape change to
125
+ carry both numbers. Raises MissingDependency or UnreadableStore for opencode,
126
+ as sessions does.
127
+
128
+ ### `verify(agent = nil, env: ENV)` <a id="method-c-verify"></a> <a id="verify-class_method"></a>
129
+ Not documented.
130
+
131
+ # Documentation
132
+
133
+ - [doc/Agent/Sessions/Adapters.md](doc/Agent/Sessions/Adapters.md)
134
+ - [doc/Agent/Sessions/Adapters/Amp.md](doc/Agent/Sessions/Adapters/Amp.md)
135
+ - [doc/Agent/Sessions/Adapters/Base.md](doc/Agent/Sessions/Adapters/Base.md)
136
+ - [doc/Agent/Sessions/Adapters/Claude.md](doc/Agent/Sessions/Adapters/Claude.md)
137
+ - [doc/Agent/Sessions/Adapters/Codex.md](doc/Agent/Sessions/Adapters/Codex.md)
138
+ - [doc/Agent/Sessions/Adapters/Copilot.md](doc/Agent/Sessions/Adapters/Copilot.md)
139
+ - [doc/Agent/Sessions/Adapters/Cursor.md](doc/Agent/Sessions/Adapters/Cursor.md)
140
+ - [doc/Agent/Sessions/Adapters/CursorIde.md](doc/Agent/Sessions/Adapters/CursorIde.md)
141
+ - [doc/Agent/Sessions/Adapters/Enumeration.md](doc/Agent/Sessions/Adapters/Enumeration.md)
142
+ - [doc/Agent/Sessions/Adapters/Gemini.md](doc/Agent/Sessions/Adapters/Gemini.md)
143
+ - [doc/Agent/Sessions/Adapters/Grok.md](doc/Agent/Sessions/Adapters/Grok.md)
144
+ - [doc/Agent/Sessions/Adapters/Opencode.md](doc/Agent/Sessions/Adapters/Opencode.md)
145
+ - [doc/Agent/Sessions/Adapters/Pi.md](doc/Agent/Sessions/Adapters/Pi.md)
146
+ - [doc/Agent/Sessions/Adapters/Qwen.md](doc/Agent/Sessions/Adapters/Qwen.md)
147
+ - [doc/Agent/Sessions/Audit.md](doc/Agent/Sessions/Audit.md)
148
+ - [doc/Agent/Sessions/Audit/Finding.md](doc/Agent/Sessions/Audit/Finding.md)
149
+ - [doc/Agent/Sessions/CLI.md](doc/Agent/Sessions/CLI.md)
150
+ - [doc/Agent/Sessions/Check.md](doc/Agent/Sessions/Check.md)
151
+ - [doc/Agent/Sessions/Compaction.md](doc/Agent/Sessions/Compaction.md)
152
+ - [doc/Agent/Sessions/EnvOverride.md](doc/Agent/Sessions/EnvOverride.md)
153
+ - [doc/Agent/Sessions/Error.md](doc/Agent/Sessions/Error.md)
154
+ - [doc/Agent/Sessions/HomeExpansion.md](doc/Agent/Sessions/HomeExpansion.md)
155
+ - [doc/Agent/Sessions/Location.md](doc/Agent/Sessions/Location.md)
156
+ - [doc/Agent/Sessions/Message.md](doc/Agent/Sessions/Message.md)
157
+ - [doc/Agent/Sessions/MissingDependency.md](doc/Agent/Sessions/MissingDependency.md)
158
+ - [doc/Agent/Sessions/Node.md](doc/Agent/Sessions/Node.md)
159
+ - [doc/Agent/Sessions/Part.md](doc/Agent/Sessions/Part.md)
160
+ - [doc/Agent/Sessions/Readers.md](doc/Agent/Sessions/Readers.md)
161
+ - [doc/Agent/Sessions/Readers/Amp.md](doc/Agent/Sessions/Readers/Amp.md)
162
+ - [doc/Agent/Sessions/Readers/Base.md](doc/Agent/Sessions/Readers/Base.md)
163
+ - [doc/Agent/Sessions/Readers/Claude.md](doc/Agent/Sessions/Readers/Claude.md)
164
+ - [doc/Agent/Sessions/Readers/Codex.md](doc/Agent/Sessions/Readers/Codex.md)
165
+ - [doc/Agent/Sessions/Readers/Copilot.md](doc/Agent/Sessions/Readers/Copilot.md)
166
+ - [doc/Agent/Sessions/Readers/Gemini.md](doc/Agent/Sessions/Readers/Gemini.md)
167
+ - [doc/Agent/Sessions/Readers/Grok.md](doc/Agent/Sessions/Readers/Grok.md)
168
+ - [doc/Agent/Sessions/Readers/Opencode.md](doc/Agent/Sessions/Readers/Opencode.md)
169
+ - [doc/Agent/Sessions/Readers/Pi.md](doc/Agent/Sessions/Readers/Pi.md)
170
+ - [doc/Agent/Sessions/Readers/Qwen.md](doc/Agent/Sessions/Readers/Qwen.md)
171
+ - [doc/Agent/Sessions/RoundTrip.md](doc/Agent/Sessions/RoundTrip.md)
172
+ - [doc/Agent/Sessions/Session.md](doc/Agent/Sessions/Session.md)
173
+ - [doc/Agent/Sessions/Sqlite.md](doc/Agent/Sessions/Sqlite.md)
174
+ - [doc/Agent/Sessions/Store.md](doc/Agent/Sessions/Store.md)
175
+ - [doc/Agent/Sessions/UnknownAgent.md](doc/Agent/Sessions/UnknownAgent.md)
176
+ - [doc/Agent/Sessions/UnreadableStore.md](doc/Agent/Sessions/UnreadableStore.md)
177
+ - [doc/Agent/Sessions/UnsupportedFormat.md](doc/Agent/Sessions/UnsupportedFormat.md)
178
+ - [doc/Agent/Sessions/Usage.md](doc/Agent/Sessions/Usage.md)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: agent_sessions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lucian Ghinda
@@ -51,6 +51,57 @@ files:
51
51
  - CHANGELOG.md
52
52
  - LICENSE.txt
53
53
  - README.md
54
+ - doc/Agent.md
55
+ - doc/Agent/Sessions.md
56
+ - doc/Agent/Sessions/Adapters.md
57
+ - doc/Agent/Sessions/Adapters/Amp.md
58
+ - doc/Agent/Sessions/Adapters/Base.md
59
+ - doc/Agent/Sessions/Adapters/Claude.md
60
+ - doc/Agent/Sessions/Adapters/Codex.md
61
+ - doc/Agent/Sessions/Adapters/Copilot.md
62
+ - doc/Agent/Sessions/Adapters/Cursor.md
63
+ - doc/Agent/Sessions/Adapters/CursorIde.md
64
+ - doc/Agent/Sessions/Adapters/Enumeration.md
65
+ - doc/Agent/Sessions/Adapters/Gemini.md
66
+ - doc/Agent/Sessions/Adapters/Grok.md
67
+ - doc/Agent/Sessions/Adapters/Opencode.md
68
+ - doc/Agent/Sessions/Adapters/Pi.md
69
+ - doc/Agent/Sessions/Adapters/Qwen.md
70
+ - doc/Agent/Sessions/Audit.md
71
+ - doc/Agent/Sessions/Audit/Finding.md
72
+ - doc/Agent/Sessions/CLI.md
73
+ - doc/Agent/Sessions/Check.md
74
+ - doc/Agent/Sessions/Compaction.md
75
+ - doc/Agent/Sessions/EnvOverride.md
76
+ - doc/Agent/Sessions/Error.md
77
+ - doc/Agent/Sessions/HomeExpansion.md
78
+ - doc/Agent/Sessions/Location.md
79
+ - doc/Agent/Sessions/Message.md
80
+ - doc/Agent/Sessions/MissingDependency.md
81
+ - doc/Agent/Sessions/Node.md
82
+ - doc/Agent/Sessions/Part.md
83
+ - doc/Agent/Sessions/Readers.md
84
+ - doc/Agent/Sessions/Readers/Amp.md
85
+ - doc/Agent/Sessions/Readers/Base.md
86
+ - doc/Agent/Sessions/Readers/Claude.md
87
+ - doc/Agent/Sessions/Readers/Codex.md
88
+ - doc/Agent/Sessions/Readers/Copilot.md
89
+ - doc/Agent/Sessions/Readers/Gemini.md
90
+ - doc/Agent/Sessions/Readers/Grok.md
91
+ - doc/Agent/Sessions/Readers/Opencode.md
92
+ - doc/Agent/Sessions/Readers/Pi.md
93
+ - doc/Agent/Sessions/Readers/Qwen.md
94
+ - doc/Agent/Sessions/RoundTrip.md
95
+ - doc/Agent/Sessions/Session.md
96
+ - doc/Agent/Sessions/Sqlite.md
97
+ - doc/Agent/Sessions/Store.md
98
+ - doc/Agent/Sessions/UnknownAgent.md
99
+ - doc/Agent/Sessions/UnreadableStore.md
100
+ - doc/Agent/Sessions/UnsupportedFormat.md
101
+ - doc/Agent/Sessions/Usage.md
102
+ - doc/CHANGELOG.md
103
+ - doc/README.md
104
+ - doc/index.csv
54
105
  - exe/agent-sessions
55
106
  - lib/agent/sessions.rb
56
107
  - lib/agent/sessions/adapters/amp.rb
@@ -88,6 +139,7 @@ files:
88
139
  - lib/agent/sessions/readers/opencode.rb
89
140
  - lib/agent/sessions/readers/pi.rb
90
141
  - lib/agent/sessions/readers/qwen.rb
142
+ - lib/agent/sessions/round_trip.rb
91
143
  - lib/agent/sessions/session.rb
92
144
  - lib/agent/sessions/sqlite.rb
93
145
  - lib/agent/sessions/store.rb
@@ -97,11 +149,13 @@ files:
97
149
  - lib/agent/sessions/usage.rb
98
150
  - lib/agent/sessions/version.rb
99
151
  - lib/agent_sessions.rb
152
+ - llm.txt
100
153
  homepage: https://github.com/lucianghinda/agent_sessions
101
154
  licenses:
102
155
  - MIT
103
156
  metadata:
104
- homepage_uri: https://github.com/lucianghinda/agent_sessions
157
+ source_code_uri: https://github.com/lucianghinda/agent_sessions
158
+ bug_tracker_uri: https://github.com/lucianghinda/agent_sessions/issues
105
159
  changelog_uri: https://github.com/lucianghinda/agent_sessions/blob/main/CHANGELOG.md
106
160
  rubygems_mfa_required: 'true'
107
161
  rdoc_options: []