pinecall 0.11.12 → 0.11.14

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1a3637ed2cc697bf1961e195dae6a6da83a219a2a2cbfb8e7cb338c913301d51
4
- data.tar.gz: 3b97803962a2724736b857ffd7cb9656c22a42527e309d7aeef6195d2dfbb136
3
+ metadata.gz: f97d72a0ab4004e51b2f9bb07d601cb8c6007b10babece8ca03e6071f4f05aa4
4
+ data.tar.gz: 966cb68d6ac119c9d5c838910b242eaf3cf620a7688436f135475d47f3e9846e
5
5
  SHA512:
6
- metadata.gz: 46a8d4a2f7d3ece0c2d9a7216c1e30a6d2d1c0c029b2634fcb158b8c62041efd6e4586329b5ac8f238d791f360ce8bc1c74fd658ddcb504c92aa522970599dcc
7
- data.tar.gz: 8a0d6ee7c6da811500ba9954200e98a68c465fb31986eb8cf9c5d98445e853f35836433523e7b85d2b0fdda2df23327f9d1bbe9db764c87f40aa8cf948f27621
6
+ metadata.gz: 58596d5793c2003e72ae9c1cdcfe938db4834bf9e0b64177759daecfbdb7f7d83dd6869d8cd55ce6029eab7b81616da0dd1f80a378166efe572db593cf2257e0
7
+ data.tar.gz: f8c4ee0d9f134ac38c861d5b6bcb956c382299d4dd2fd6518af14e06afa7672f8d633be515f0590c56d9097289759a14294a0fb0fbfedc58f9d27119c6e7c793
data/CHANGELOG.md CHANGED
@@ -4,6 +4,15 @@ 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.14] — the wire knows `KnowledgePushed.kept` (2026-10-23)
8
+
9
+ - **`KnowledgePushed.kept`**: the files of the base a push did not name and kept.
10
+
11
+ ## [0.11.13] — the wire knows `app.failed` (2026-10-23)
12
+
13
+ - **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
14
+ the console; an app acts on none of it.
15
+
7
16
  ## [0.11.12] — `on_memory` runs (2026-10-23)
8
17
 
9
18
  - **`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 chat # the agent served from this terminal, and a caller against it
72
- pinecall test # ring 1: the goldens, scored by the gateway
73
- pinecall start # registered and answering: the process you deploy
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`, `chat`, `test` and `start` it runs this gem's serve
77
- entry, `bundle exec ruby -r pinecall -e 'exit Pinecall::Serve.main(ARGV)'`, and talks to it through
78
- the gateway. The console, the knowledge bases, memory, keys and every other verb are the CLI's.
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("free_slots", day: "Tuesday")
119
+ call.tool("find_patient", name: "Marta Ruiz", phone: "600123456")
118
120
 
119
- assert_includes call.prompt, "Tuesday at ten"
120
- assert_equal %w[propose], call.tools
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
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Pinecall
4
4
  # Set by the maintainer at release time.
5
- VERSION = "0.11.12"
5
+ VERSION = "0.11.14"
6
6
  end
@@ -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"
@@ -60,7 +60,8 @@ module Pinecall
60
60
  base: { kind: :str, required: true },
61
61
  chunks: { kind: :int, required: true },
62
62
  language: { kind: :str, required: true },
63
- took_ms: { kind: :float, required: true }
63
+ took_ms: { kind: :float, required: true },
64
+ kept: { kind: :int, required: true }
64
65
  }.freeze,
65
66
  "KnowledgeList" => {
66
67
  bases: { kind: :list, items: { kind: :ref, ref: "KnowledgeBase" }, required: true }
@@ -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 }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pinecall
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.12
4
+ version: 0.11.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pinecall