ask-session-protocol 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.
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ask
4
+ # ask-session-protocol — the canonical wire contract between the ask
5
+ # session host (ask-app-server) and every client: terminal TUI, web
6
+ # console, bots, IDE integrations.
7
+ #
8
+ # This gem is a definition, not an implementation. It contains no runtime,
9
+ # no transports, and no session logic. It is the single authoritative,
10
+ # versioned artifact for what a session event looks like on the wire and
11
+ # which methods a host exposes — so the host and every client evolve
12
+ # independently against the same contract.
13
+ module SessionProtocol
14
+ # Wire protocol version, negotiated in the `initialize` handshake.
15
+ # Semantic: bump the minor on additive changes (new events, new
16
+ # methods), bump the major on breaking changes. Clients must tolerate
17
+ # unknown event types and methods within the same major version.
18
+ PROTOCOL_VERSION = "1.0"
19
+
20
+ # How a subscriber receives events for a session.
21
+ #
22
+ # live — events are pushed as they happen; no replay
23
+ # replay — the host replays the session's event log
24
+ # from after_seq before pushing new events
25
+ # web-remote-replayable — replay semantics tuned for web/remote
26
+ # clients (snapshot-friendly, resumable)
27
+ DELIVERY_KINDS = %w[live replay web-remote-replayable].freeze
28
+ end
29
+ end
30
+
31
+ require_relative "session_protocol/version"
32
+ require_relative "session_protocol/events"
33
+ require_relative "session_protocol/interactions"
34
+ require_relative "session_protocol/methods"
35
+ require_relative "session_protocol/schema"
36
+ require_relative "session_protocol/client"
37
+ require_relative "session_protocol/host"
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "ask/session_protocol"
metadata ADDED
@@ -0,0 +1,127 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ask-session-protocol
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ platform: ruby
6
+ authors:
7
+ - Kaka Ruto
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: json
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '0'
26
+ - !ruby/object:Gem::Dependency
27
+ name: minitest
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '5.25'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '5.25'
40
+ - !ruby/object:Gem::Dependency
41
+ name: mocha
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '3.1'
47
+ type: :development
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '3.1'
54
+ - !ruby/object:Gem::Dependency
55
+ name: rake
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '13.0'
61
+ type: :development
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '13.0'
68
+ - !ruby/object:Gem::Dependency
69
+ name: simplecov
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '0.22'
75
+ type: :development
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '0.22'
82
+ description: The contract between the ask session host and every client (terminal
83
+ TUI, web console, bots, IDE) — plus the shared Client and Host. Defines the canonical
84
+ session event vocabulary, the resolvable interaction types (approvals, plan proposals,
85
+ user input), the client-to-host method surface, protocol versioning, and generated
86
+ JSON Schema artifacts. No runtime, no transports — just the contract.
87
+ email:
88
+ - kaka@myrrlabs.com
89
+ executables: []
90
+ extensions: []
91
+ extra_rdoc_files: []
92
+ files:
93
+ - CHANGELOG.md
94
+ - LICENSE
95
+ - README.md
96
+ - docs/ask-session-protocol.schema.json
97
+ - lib/ask-session-protocol.rb
98
+ - lib/ask/session_protocol.rb
99
+ - lib/ask/session_protocol/client.rb
100
+ - lib/ask/session_protocol/events.rb
101
+ - lib/ask/session_protocol/host.rb
102
+ - lib/ask/session_protocol/interactions.rb
103
+ - lib/ask/session_protocol/methods.rb
104
+ - lib/ask/session_protocol/schema.rb
105
+ - lib/ask/session_protocol/version.rb
106
+ homepage: https://github.com/ask-rb/ask-session-protocol
107
+ licenses:
108
+ - MIT
109
+ metadata: {}
110
+ rdoc_options: []
111
+ require_paths:
112
+ - lib
113
+ required_ruby_version: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '3.2'
118
+ required_rubygems_version: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ requirements: []
124
+ rubygems_version: 4.0.18
125
+ specification_version: 4
126
+ summary: The canonical wire protocol for ask agent sessions
127
+ test_files: []