pinecall 0.11.12 → 0.11.13
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 +4 -4
- data/CHANGELOG.md +5 -0
- data/README.md +11 -9
- data/lib/pinecall/version.rb +1 -1
- data/lib/pinecall/wire/registry.rb +3 -2
- data/lib/pinecall/wire/shapes_events.rb +6 -0
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 13a76b616d508b0e37155af353923f7c55d8f7ea7cff2df52743c021855005e5
|
|
4
|
+
data.tar.gz: 113a14c12ab48087df8234707835f58e576e168ef8f8ce26dd2e8c6aad70b26f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 881b714db68c97e490a30c921d7906ad97aef635bc37717be1c73eb3e1d86ee38bdd81aa4f15376974b2849035bf32e9a030a8cc2c8d6e7b71eccaa60fc0eef2
|
|
7
|
+
data.tar.gz: a5e61080bb5e457addcd5e14ce47b14e69fc90aa945d3c76e178aeda4fb8103b156bb059bbf7365738e0ba6a7e505659a547202b040a53d7ec975e6fee2143f7
|
data/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,11 @@ Every change a person using this gem would notice. The format is
|
|
|
4
4
|
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/); version numbers and tags are the
|
|
5
5
|
maintainer's call.
|
|
6
6
|
|
|
7
|
+
## [0.11.13] — the wire knows `app.failed` (2026-10-23)
|
|
8
|
+
|
|
9
|
+
- **The wire knows `app.failed`, a feed event.** A hosted app that did not build, start or stay up: the org's alert, read by
|
|
10
|
+
the console; an app acts on none of it.
|
|
11
|
+
|
|
7
12
|
## [0.11.12] — `on_memory` runs (2026-10-23)
|
|
8
13
|
|
|
9
14
|
- **`on_memory` runs.** Declared, never called: `memory.ops` now reaches it with the wire's ops,
|
data/README.md
CHANGED
|
@@ -68,14 +68,16 @@ bundle add pinecall
|
|
|
68
68
|
npm i -g pinecall # the CLI: Node, whatever the agent is written in
|
|
69
69
|
pinecall login # this machine signed in, once; pinecall.json names the org
|
|
70
70
|
pinecall prompt --state agents/<name>/test/goldens/a.json # the exact prompt a state produces. No gateway.
|
|
71
|
-
pinecall
|
|
72
|
-
pinecall
|
|
73
|
-
pinecall
|
|
71
|
+
pinecall start # registered and answering: the process you deploy; leave it running
|
|
72
|
+
pinecall chat # in another terminal: a caller against the agent start holds
|
|
73
|
+
pinecall test # ring 1: the goldens, played on the agent start holds, scored by the gateway
|
|
74
74
|
```
|
|
75
75
|
|
|
76
|
-
The CLI never loads your class: for `prompt
|
|
77
|
-
|
|
78
|
-
|
|
76
|
+
The CLI never loads your class: for `prompt` and `start` it runs this gem's serve entry,
|
|
77
|
+
`bundle exec ruby -r pinecall -e 'exit Pinecall::Serve.main(ARGV)'`, and talks to it through the
|
|
78
|
+
gateway. `start` is the one verb that runs the agent; `chat`, `test` and `simulate` start nothing,
|
|
79
|
+
and reach whoever holds it. The console, the knowledge bases, memory and every other verb are the
|
|
80
|
+
CLI's.
|
|
79
81
|
How a server runs the agent, with the CLI or inside your own Ruby process, is
|
|
80
82
|
[docs/production.md](docs/production.md).
|
|
81
83
|
|
|
@@ -114,10 +116,10 @@ gateway = Pinecall::Testing::Gateway.new
|
|
|
114
116
|
Pinecall.mount(ClinicaNorte, client: gateway)
|
|
115
117
|
|
|
116
118
|
call = gateway.call_started(from: "+34600123456")
|
|
117
|
-
call.tool("
|
|
119
|
+
call.tool("find_patient", name: "Marta Ruiz", phone: "600123456")
|
|
118
120
|
|
|
119
|
-
|
|
120
|
-
assert_equal %w[
|
|
121
|
+
refute_includes call.prompt, "ask for their name"
|
|
122
|
+
assert_equal %w[free_slots], call.tools
|
|
121
123
|
```
|
|
122
124
|
|
|
123
125
|
## Where the rest is
|
data/lib/pinecall/version.rb
CHANGED
|
@@ -15,6 +15,7 @@ module Pinecall
|
|
|
15
15
|
"agent.registered" => "AgentRegistered",
|
|
16
16
|
"agent.state" => "AgentStateChanged",
|
|
17
17
|
"agent.transcript" => "AgentTranscript",
|
|
18
|
+
"app.failed" => "AppFailed",
|
|
18
19
|
"attention.answered" => "AttentionAnswered",
|
|
19
20
|
"attention.requested" => "AttentionRequested",
|
|
20
21
|
"call.attached" => "CallAttached",
|
|
@@ -125,14 +126,14 @@ module Pinecall
|
|
|
125
126
|
}.freeze
|
|
126
127
|
|
|
127
128
|
# Every event this protocol declares, in the schema's own order.
|
|
128
|
-
EVENT_TYPES = %w[agent.configured agent.detached agent.draining agent.registered agent.state agent.transcript attention.answered attention.requested call.attached call.claimed call.dialing call.ended call.line call.ringing call.score call.started call.summary call.transferred callback.requested code.claimed code.issued confirm.declined confirm.granted confirm.request credits.exhausted custom dev.request docs.sources dtmf.received error evals.spent event.received fleet.full judge.broke log.caught_up log.gap memory.ops message.taken message.waiting metrics.avatar metrics.eot metrics.eou metrics.interruption metrics.llm metrics.realtime metrics.stt metrics.tts metrics.vad participant.joined participant.left participant.speaking pong prompt.changed release.changed room.opened room.sent run.changed spend.unusual state.changed supervisor.ended supervisor.released supervisor.said supervisor.took_over supervisor.transferred supervisor.whispered tool.call tool.failed tool.ran tool.result tools.changed track.published track.unpublished turn.agent turn.user user.state user.transcript vendor.switched worker.changed].freeze
|
|
129
|
+
EVENT_TYPES = %w[agent.configured agent.detached agent.draining agent.registered agent.state agent.transcript app.failed attention.answered attention.requested call.attached call.claimed call.dialing call.ended call.line call.ringing call.score call.started call.summary call.transferred callback.requested code.claimed code.issued confirm.declined confirm.granted confirm.request credits.exhausted custom dev.request docs.sources dtmf.received error evals.spent event.received fleet.full judge.broke log.caught_up log.gap memory.ops message.taken message.waiting metrics.avatar metrics.eot metrics.eou metrics.interruption metrics.llm metrics.realtime metrics.stt metrics.tts metrics.vad participant.joined participant.left participant.speaking pong prompt.changed release.changed room.opened room.sent run.changed spend.unusual state.changed supervisor.ended supervisor.released supervisor.said supervisor.took_over supervisor.transferred supervisor.whispered tool.call tool.failed tool.ran tool.result tools.changed track.published track.unpublished turn.agent turn.user user.state user.transcript vendor.switched worker.changed].freeze
|
|
129
130
|
|
|
130
131
|
# Every command an app may send.
|
|
131
132
|
COMMAND_TYPES = %w[agent.configure agent.drain agent.register agent.reply agent.say call.attention call.callback call.claim call.dial call.dtmf call.event call.hangup call.hold call.log call.mute call.opt_out call.transfer call.unhold call.unmute dev.answer participant.mute participant.remove ping prompt.set room.invite room.send session.configure state.set supervisor.verb tool.result tools.set].freeze
|
|
132
133
|
|
|
133
134
|
# Entries a store may drop and a slow reader may miss without harm: the entry's
|
|
134
135
|
# own ephemeral flag defaults to this.
|
|
135
|
-
EPHEMERAL_EVENTS = %w[agent.transcript dev.request judge.broke log.caught_up log.gap metrics.vad participant.speaking pong release.changed room.sent run.changed tool.failed tool.ran user.transcript worker.changed].to_set.freeze
|
|
136
|
+
EPHEMERAL_EVENTS = %w[agent.transcript app.failed dev.request judge.broke log.caught_up log.gap metrics.vad participant.speaking pong release.changed room.sent run.changed tool.failed tool.ran user.transcript worker.changed].to_set.freeze
|
|
136
137
|
|
|
137
138
|
# The one event that ends a call: after it nothing more is true and the log seals.
|
|
138
139
|
TERMINAL_EVENT = "call.score"
|
|
@@ -258,6 +258,12 @@ module Pinecall
|
|
|
258
258
|
workers: { kind: :int, required: true },
|
|
259
259
|
active: { kind: :int, required: true }
|
|
260
260
|
}.freeze,
|
|
261
|
+
"AppFailed" => {
|
|
262
|
+
app: { kind: :str, required: true },
|
|
263
|
+
host: { kind: :str, required: true },
|
|
264
|
+
release: { kind: :int, null: true },
|
|
265
|
+
why: { kind: :str, required: true }
|
|
266
|
+
}.freeze,
|
|
261
267
|
"ReleaseChanged" => {
|
|
262
268
|
app: { kind: :str, required: true },
|
|
263
269
|
release: { kind: :int, required: true }
|