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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +58 -0
- data/LICENSE +21 -0
- data/README.md +137 -0
- data/docs/ask-session-protocol.schema.json +1428 -0
- data/lib/ask/session_protocol/client.rb +260 -0
- data/lib/ask/session_protocol/events.rb +322 -0
- data/lib/ask/session_protocol/host.rb +81 -0
- data/lib/ask/session_protocol/interactions.rb +139 -0
- data/lib/ask/session_protocol/methods.rb +393 -0
- data/lib/ask/session_protocol/schema.rb +117 -0
- data/lib/ask/session_protocol/version.rb +7 -0
- data/lib/ask/session_protocol.rb +37 -0
- data/lib/ask-session-protocol.rb +3 -0
- metadata +127 -0
|
@@ -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"
|
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: []
|