aboutsummaryrefslogtreecommitdiff
path: root/pirc.js
diff options
context:
space:
mode:
Diffstat (limited to 'pirc.js')
-rw-r--r--pirc.js204
1 files changed, 183 insertions, 21 deletions
diff --git a/pirc.js b/pirc.js
index 83bc498..996c05b 100644
--- a/pirc.js
+++ b/pirc.js
@@ -1,4 +1,4 @@
-// PiRC extension 0.1.9-dev+46bb48bfe5b3. Third-party code in this file: @bufbuild/protobuf@2.16.0, ws@8.22.0; see NOTICE.
+// PiRC extension 0.1.9-dev+d581157e4c48. Third-party code in this file: @bufbuild/protobuf@2.16.0, ws@8.22.0; see NOTICE.
import { createRequire as __pircCreateRequire } from "node:module";
const require = __pircCreateRequire(import.meta.url);
var __create = Object.create;
@@ -2276,7 +2276,7 @@ var require_websocket = __commonJS({
var http = __require("http");
var net = __require("net");
var tls = __require("tls");
- var { randomBytes: randomBytes4, createHash } = __require("crypto");
+ var { randomBytes: randomBytes5, createHash } = __require("crypto");
var { Duplex, Readable } = __require("stream");
var { URL: URL2 } = __require("url");
var PerMessageDeflate2 = require_permessage_deflate();
@@ -2827,7 +2827,7 @@ var require_websocket = __commonJS({
}
}
const defaultPort = isSecure ? 443 : 80;
- const key2 = randomBytes4(16).toString("base64");
+ const key2 = randomBytes5(16).toString("base64");
const request = isSecure ? https.request : http.request;
const protocolSet = /* @__PURE__ */ new Set();
let perMessageDeflate;
@@ -3721,7 +3721,7 @@ var require_websocket_server = __commonJS({
});
// extension/src/index.ts
-import { randomBytes as randomBytes3 } from "node:crypto";
+import { randomBytes as randomBytes4 } from "node:crypto";
import { readFileSync as readFileSync3, realpathSync } from "node:fs";
import { dirname as dirname3, join as join3 } from "node:path";
@@ -7143,18 +7143,19 @@ var file_pirc_v1alpha1_relay = /* @__PURE__ */ fileDesc("ChlwaXJjL3YxYWxwaGExL3J
var FrameSchema = /* @__PURE__ */ messageDesc(file_pirc_v1alpha1_relay, 0);
// protocol/gen/pirc/v1alpha1/session_pb.ts
-var file_pirc_v1alpha1_session = /* @__PURE__ */ fileDesc("ChtwaXJjL3YxYWxwaGExL3Nlc3Npb24ucHJvdG8SDXBpcmMudjFhbHBoYTEi3gMKE1Nlc3Npb25Bbm5vdW5jZW1lbnQSDAoEbmFtZRgBIAEoCRILCgNjd2QYAiABKAkSEAoIaG9zdG5hbWUYAyABKAkSIwoFbW9kZWwYBCABKAsyFC5waXJjLnYxYWxwaGExLk1vZGVsEjQKDnRoaW5raW5nX2xldmVsGAUgASgOMhwucGlyYy52MWFscGhhMS5UaGlua2luZ0xldmVsEg8KB3dvcmtpbmcYBiABKAgSLgoKc3RhcnRlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGwoTcmVwbGFjZXNfc2Vzc2lvbl9pZBgIIAEoCRIsCgZvcmlnaW4YCSABKA4yHC5waXJjLnYxYWxwaGExLlNlc3Npb25PcmlnaW4SEgoKcGlfdmVyc2lvbhgKIAEoCRIZChFleHRlbnNpb25fdmVyc2lvbhgLIAEoCRISCgpjb21wYWN0aW5nGAwgASgIEiMKBXBsYWNlGA0gASgLMhQucGlyYy52MWFscGhhMS5QbGFjZRIUCgxmaXJzdF9wcm9tcHQYDiABKAkSEAoIcmVxdWVzdHMYDyADKAkSEAoIbGF1bmNoZXIYECABKAkSEQoJbGF1bmNoX2lkGBEgASgJIq0BCgVQbGFjZRIMCgRraW5kGAEgASgJEg0KBWdyb3VwGAIgASgJEhkKDGdyb3VwX251bWJlchgDIAEoDUgAiAEBEg4KBndpbmRvdxgEIAEoCRIaCg13aW5kb3dfbnVtYmVyGAUgASgNSAGIAQESDAoEcGFuZRgGIAEoCRIPCgdkaXNwbGF5GAcgASgJQg8KDV9ncm91cF9udW1iZXJCEAoOX3dpbmRvd19udW1iZXIiMwoFTW9kZWwSEAoIcHJvdmlkZXIYASABKAkSCgoCaWQYAiABKAkSDAoEbmFtZRgDIAEoCSLbCgoOU2Vzc2lvbk1lc3NhZ2USEgoKcmVxdWVzdF9pZBgyIAEoCRInCgZwcm9tcHQYASABKAsyFS5waXJjLnYxYWxwaGExLlByb21wdEgAEiUKBWFib3J0GAIgASgLMhQucGlyYy52MWFscGhhMS5BYm9ydEgAEjgKD2hpc3RvcnlfcmVxdWVzdBgDIAEoCzIdLnBpcmMudjFhbHBoYTEuSGlzdG9yeVJlcXVlc3RIABIwCgtsaXN0X21vZGVscxgEIAEoCzIZLnBpcmMudjFhbHBoYTEuTGlzdE1vZGVsc0gAEiwKCXNldF9tb2RlbBgFIAEoCzIXLnBpcmMudjFhbHBoYTEuU2V0TW9kZWxIABI9ChJzZXRfdGhpbmtpbmdfbGV2ZWwYBiABKAsyHy5waXJjLnYxYWxwaGExLlNldFRoaW5raW5nTGV2ZWxIABIpCgdjb21wYWN0GAcgASgLMhYucGlyYy52MWFscGhhMS5Db21wYWN0SAASMAoLbmV3X3Nlc3Npb24YCCABKAsyGS5waXJjLnYxYWxwaGExLk5ld1Nlc3Npb25IABInCgZyZW5hbWUYCSABKAsyFS5waXJjLnYxYWxwaGExLlJlbmFtZUgAEjQKDXN0YXRzX3JlcXVlc3QYESABKAsyGy5waXJjLnYxYWxwaGExLlN0YXRzUmVxdWVzdEgAEjQKDWxpc3RfY29tbWFuZHMYEiABKAsyGy5waXJjLnYxYWxwaGExLkxpc3RDb21tYW5kc0gAEiMKBGZvcmsYEyABKAsyEy5waXJjLnYxYWxwaGExLkZvcmtIABIlCgVjbG9uZRgUIAEoCzIULnBpcmMudjFhbHBoYTEuQ2xvbmVIABI9ChJsaXN0X3Bhc3Rfc2Vzc2lvbnMYFSABKAsyHy5waXJjLnYxYWxwaGExLkxpc3RQYXN0U2Vzc2lvbnNIABInCgZyZXN1bWUYFiABKAsyFS5waXJjLnYxYWxwaGExLlJlc3VtZUgAEicKBnJlbG9hZBgYIAEoCzIVLnBpcmMudjFhbHBoYTEuUmVsb2FkSAASNAoNbmF2aWdhdGVfdHJlZRgZIAEoCzIbLnBpcmMudjFhbHBoYTEuTmF2aWdhdGVUcmVlSAASLAoJbGlzdF90cmVlGBogASgLMhcucGlyYy52MWFscGhhMS5MaXN0VHJlZUgAEiMKBHN0b3AYHCABKAsyEy5waXJjLnYxYWxwaGExLlN0b3BIABInCgZsYXVuY2gYHSABKAsyFS5waXJjLnYxYWxwaGExLkxhdW5jaEgAEiwKBWV2ZW50GAogASgLMhsucGlyYy52MWFscGhhMS5TZXNzaW9uRXZlbnRIABIpCgdoaXN0b3J5GAsgASgLMhYucGlyYy52MWFscGhhMS5IaXN0b3J5SAASKwoIYWNjZXB0ZWQYDCABKAsyFy5waXJjLnYxYWxwaGExLkFjY2VwdGVkSAASJQoFZXJyb3IYDSABKAsyFC5waXJjLnYxYWxwaGExLkVycm9ySAASJwoGbW9kZWxzGA4gASgLMhUucGlyYy52MWFscGhhMS5Nb2RlbHNIABIlCgVzdGF0cxgPIAEoCzIULnBpcmMudjFhbHBoYTEuU3RhdHNIABIrCghjb21tYW5kcxgQIAEoCzIXLnBpcmMudjFhbHBoYTEuQ29tbWFuZHNIABI0Cg1wYXN0X3Nlc3Npb25zGBcgASgLMhsucGlyYy52MWFscGhhMS5QYXN0U2Vzc2lvbnNIABIjCgR0cmVlGBsgASgLMhMucGlyYy52MWFscGhhMS5UcmVlSABCBgoEYm9keSIgCgpMaXN0TW9kZWxzEhIKCnJlcXVlc3RfaWQYASABKAkicQoGTW9kZWxzEhIKCnJlcXVlc3RfaWQYASABKAkSKAoGbW9kZWxzGAIgAygLMhgucGlyYy52MWFscGhhMS5Nb2RlbEluZm8SKQoHY3VycmVudBgDIAEoCzIYLnBpcmMudjFhbHBoYTEuTW9kZWxJbmZvImsKCU1vZGVsSW5mbxIjCgVtb2RlbBgBIAEoCzIULnBpcmMudjFhbHBoYTEuTW9kZWwSEQoJcmVhc29uaW5nGAIgASgIEhYKDmNvbnRleHRfd2luZG93GAMgASgEEg4KBmltYWdlcxgEIAEoCCJDCghTZXRNb2RlbBISCgpyZXF1ZXN0X2lkGAEgASgJEiMKBW1vZGVsGAIgASgLMhQucGlyYy52MWFscGhhMS5Nb2RlbCJTChBTZXRUaGlua2luZ0xldmVsEhIKCnJlcXVlc3RfaWQYASABKAkSKwoFbGV2ZWwYAiABKA4yHC5waXJjLnYxYWxwaGExLlRoaW5raW5nTGV2ZWwiMwoHQ29tcGFjdBISCgpyZXF1ZXN0X2lkGAEgASgJEhQKDGluc3RydWN0aW9ucxgCIAEoCSIgCgpOZXdTZXNzaW9uEhIKCnJlcXVlc3RfaWQYASABKAkiLAoERm9yaxISCgpyZXF1ZXN0X2lkGAEgASgJEhAKCGVudHJ5X2lkGAIgASgJIhsKBUNsb25lEhIKCnJlcXVlc3RfaWQYASABKAkiOwoQTGlzdFBhc3RTZXNzaW9ucxISCgpyZXF1ZXN0X2lkGAEgASgJEhMKC2FsbF9mb2xkZXJzGAIgASgIImMKDFBhc3RTZXNzaW9ucxISCgpyZXF1ZXN0X2lkGAEgASgJEiwKCHNlc3Npb25zGAIgAygLMhoucGlyYy52MWFscGhhMS5QYXN0U2Vzc2lvbhIRCgl0cnVuY2F0ZWQYAyABKAgi2AEKC1Bhc3RTZXNzaW9uEgwKBHBhdGgYASABKAkSEgoKc2Vzc2lvbl9pZBgCIAEoCRILCgNjd2QYAyABKAkSDAoEbmFtZRgEIAEoCRIUCgxmaXJzdF9wcm9tcHQYBSABKAkSLgoKY3JlYXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLwoLbW9kaWZpZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhUKDW1lc3NhZ2VfY291bnQYCCABKA0iKgoGUmVzdW1lEhIKCnJlcXVlc3RfaWQYASABKAkSDAoEcGF0aBgCIAEoCSIcCgZSZWxvYWQSEgoKcmVxdWVzdF9pZBgBIAEoCSIaCgRTdG9wEhIKCnJlcXVlc3RfaWQYASABKAkiNwoGTGF1bmNoEhIKCnJlcXVlc3RfaWQYASABKAkSCwoDY3dkGAIgASgJEgwKBG5hbWUYAyABKAkiRwoMTmF2aWdhdGVUcmVlEhIKCnJlcXVlc3RfaWQYASABKAkSEAoIZW50cnlfaWQYAiABKAkSEQoJc3VtbWFyaXplGAMgASgIIh4KCExpc3RUcmVlEhIKCnJlcXVlc3RfaWQYASABKAkiVgoEVHJlZRISCgpyZXF1ZXN0X2lkGAEgASgJEicKCGJyYW5jaGVzGAIgAygLMhUucGlyYy52MWFscGhhMS5CcmFuY2gSEQoJdHJ1bmNhdGVkGAMgASgIIpABCgZCcmFuY2gSDwoHbGVhZl9pZBgBIAEoCRIPCgdjdXJyZW50GAIgASgIEg4KBnByb21wdBgDIAEoCRIMCgRsYXN0GAQgASgJEi8KC21vZGlmaWVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIVCg1tZXNzYWdlX2NvdW50GAYgASgNIioKBlJlbmFtZRISCgpyZXF1ZXN0X2lkGAEgASgJEgwKBG5hbWUYAiABKAkiIgoMU3RhdHNSZXF1ZXN0EhIKCnJlcXVlc3RfaWQYASABKAkiiAEKBVN0YXRzEhIKCnJlcXVlc3RfaWQYASABKAkSIwoFdG90YWwYAiABKAsyFC5waXJjLnYxYWxwaGExLlVzYWdlEhsKDmNvbnRleHRfdG9rZW5zGAMgASgESACIAQESFgoOY29udGV4dF93aW5kb3cYBCABKARCEQoPX2NvbnRleHRfdG9rZW5zIiIKDExpc3RDb21tYW5kcxISCgpyZXF1ZXN0X2lkGAEgASgJIkwKCENvbW1hbmRzEhIKCnJlcXVlc3RfaWQYASABKAkSLAoIY29tbWFuZHMYAiADKAsyGi5waXJjLnYxYWxwaGExLkNvbW1hbmRJbmZvIl4KC0NvbW1hbmRJbmZvEgwKBG5hbWUYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkSLAoGc291cmNlGAMgASgOMhwucGlyYy52MWFscGhhMS5Db21tYW5kU291cmNlInsKBlByb21wdBISCgpyZXF1ZXN0X2lkGAEgASgJEgwKBHRleHQYAiABKAkSJAoGaW1hZ2VzGAMgAygLMhQucGlyYy52MWFscGhhMS5JbWFnZRIpCghkZWxpdmVyeRgEIAEoDjIXLnBpcmMudjFhbHBoYTEuRGVsaXZlcnkiKAoFSW1hZ2USEQoJbWltZV90eXBlGAEgASgJEgwKBGRhdGEYAiABKAwiGwoFQWJvcnQSEgoKcmVxdWVzdF9pZBgBIAEoCSIzCg5IaXN0b3J5UmVxdWVzdBISCgpyZXF1ZXN0X2lkGAEgASgJEg0KBWxpbWl0GAIgASgNIm0KB0hpc3RvcnkSEgoKcmVxdWVzdF9pZBgBIAEoCRIuCgVpdGVtcxgCIAMoCzIfLnBpcmMudjFhbHBoYTEuQ29udmVyc2F0aW9uSXRlbRILCgNzZXEYAyABKAQSEQoJdHJ1bmNhdGVkGAQgASgIIh4KCEFjY2VwdGVkEhIKCnJlcXVlc3RfaWQYASABKAkimgMKDFNlc3Npb25FdmVudBILCgNzZXEYASABKAQSJgoCYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi8KBGl0ZW0YAyABKAsyHy5waXJjLnYxYWxwaGExLkNvbnZlcnNhdGlvbkl0ZW1IABI4Cg9hc3Npc3RhbnRfZGVsdGEYBCABKAsyHS5waXJjLnYxYWxwaGExLkFzc2lzdGFudERlbHRhSAASNAoNdG9vbF9wcm9ncmVzcxgFIAEoCzIbLnBpcmMudjFhbHBoYTEuVG9vbFByb2dyZXNzSAASOAoPd29ya2luZ19jaGFuZ2VkGAYgASgLMh0ucGlyYy52MWFscGhhMS5Xb3JraW5nQ2hhbmdlZEgAEjoKDGFubm91bmNlbWVudBgHIAEoCzIiLnBpcmMudjFhbHBoYTEuU2Vzc2lvbkFubm91bmNlbWVudEgAEjYKDmJyYW5jaF9jaGFuZ2VkGAggASgLMhwucGlyYy52MWFscGhhMS5CcmFuY2hDaGFuZ2VkSABCBgoEYm9keSKgAwoQQ29udmVyc2F0aW9uSXRlbRIQCghlbnRyeV9pZBgBIAEoCRIPCgd0dXJuX2lkGAIgASgJEiYKAmF0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIyCgx1c2VyX21lc3NhZ2UYBCABKAsyGi5waXJjLnYxYWxwaGExLlVzZXJNZXNzYWdlSAASPAoRYXNzaXN0YW50X21lc3NhZ2UYBSABKAsyHy5waXJjLnYxYWxwaGExLkFzc2lzdGFudE1lc3NhZ2VIABIsCgl0b29sX2NhbGwYBiABKAsyFy5waXJjLnYxYWxwaGExLlRvb2xDYWxsSAASMAoLdG9vbF9yZXN1bHQYByABKAsyGS5waXJjLnYxYWxwaGExLlRvb2xSZXN1bHRIABIvCgpjb21wYWN0aW9uGAggASgLMhkucGlyYy52MWFscGhhMS5Db21wYWN0aW9uSAASNgoOYnJhbmNoX3N1bW1hcnkYCSABKAsyHC5waXJjLnYxYWxwaGExLkJyYW5jaFN1bW1hcnlIAEIGCgRib2R5IlUKC1VzZXJNZXNzYWdlEgwKBHRleHQYASABKAkSJAoGaW1hZ2VzGAIgAygLMhQucGlyYy52MWFscGhhMS5JbWFnZRISCgpyZXF1ZXN0X2lkGAMgASgJIuUBChBBc3Npc3RhbnRNZXNzYWdlEhIKCm1lc3NhZ2VfaWQYASABKAkSLAoHY29udGVudBgCIAMoCzIbLnBpcmMudjFhbHBoYTEuQ29udGVudEJsb2NrEiMKBXVzYWdlGAMgASgLMhQucGlyYy52MWFscGhhMS5Vc2FnZRIuCgtzdG9wX3JlYXNvbhgEIAEoDjIZLnBpcmMudjFhbHBoYTEuU3RvcFJlYXNvbhIjCgVtb2RlbBgFIAEoCzIULnBpcmMudjFhbHBoYTEuTW9kZWwSFQoNZXJyb3JfbWVzc2FnZRgGIAEoCSI6CgxDb250ZW50QmxvY2sSDgoEdGV4dBgBIAEoCUgAEhIKCHRoaW5raW5nGAIgASgJSABCBgoEYm9keSJ5CgVVc2FnZRIUCgxpbnB1dF90b2tlbnMYASABKAQSFQoNb3V0cHV0X3Rva2VucxgCIAEoBBIZChFjYWNoZV9yZWFkX3Rva2VucxgDIAEoBBIaChJjYWNoZV93cml0ZV90b2tlbnMYBCABKAQSDAoEY29zdBgFIAEoASJ2Cg5Bc3Npc3RhbnREZWx0YRISCgptZXNzYWdlX2lkGAEgASgJEg8KB3R1cm5faWQYAiABKAkSEwoLYmxvY2tfaW5kZXgYAyABKA0SDgoEdGV4dBgEIAEoCUgAEhIKCHRoaW5raW5nGAUgASgJSABCBgoEYm9keSJLCghUb29sQ2FsbBIUCgx0b29sX2NhbGxfaWQYASABKAkSEQoJdG9vbF9uYW1lGAIgASgJEhYKDmFyZ3VtZW50c19qc29uGAMgASgJIkIKClRvb2xSZXN1bHQSFAoMdG9vbF9jYWxsX2lkGAEgASgJEhAKCGlzX2Vycm9yGAIgASgIEgwKBHRleHQYAyABKAkiQwoMVG9vbFByb2dyZXNzEhQKDHRvb2xfY2FsbF9pZBgBIAEoCRIPCgd0dXJuX2lkGAIgASgJEgwKBHRleHQYAyABKAkiIQoOV29ya2luZ0NoYW5nZWQSDwoHd29ya2luZxgBIAEoCCI0CgpDb21wYWN0aW9uEg8KB3N1bW1hcnkYASABKAkSFQoNdG9rZW5zX2JlZm9yZRgCIAEoBCIgCg1CcmFuY2hTdW1tYXJ5Eg8KB3N1bW1hcnkYASABKAkiIAoNQnJhbmNoQ2hhbmdlZBIPCgdsZWFmX2lkGAEgASgJKrIBCg1TZXNzaW9uT3JpZ2luEh4KGlNFU1NJT05fT1JJR0lOX1VOU1BFQ0lGSUVEEAASGgoWU0VTU0lPTl9PUklHSU5fU1RBUlRVUBABEhYKElNFU1NJT05fT1JJR0lOX05FVxACEhkKFVNFU1NJT05fT1JJR0lOX1JFU1VNRRADEhcKE1NFU1NJT05fT1JJR0lOX0ZPUksQBBIZChVTRVNTSU9OX09SSUdJTl9SRUxPQUQQBSrhAQoNVGhpbmtpbmdMZXZlbBIeChpUSElOS0lOR19MRVZFTF9VTlNQRUNJRklFRBAAEhYKElRISU5LSU5HX0xFVkVMX09GRhABEhoKFlRISU5LSU5HX0xFVkVMX01JTklNQUwQAhIWChJUSElOS0lOR19MRVZFTF9MT1cQAxIZChVUSElOS0lOR19MRVZFTF9NRURJVU0QBBIXChNUSElOS0lOR19MRVZFTF9ISUdIEAUSGAoUVEhJTktJTkdfTEVWRUxfWEhJR0gQBhIWChJUSElOS0lOR19MRVZFTF9NQVgQByqCAQoNQ29tbWFuZFNvdXJjZRIeChpDT01NQU5EX1NPVVJDRV9VTlNQRUNJRklFRBAAEhwKGENPTU1BTkRfU09VUkNFX0VYVEVOU0lPThABEhkKFUNPTU1BTkRfU09VUkNFX1BST01QVBACEhgKFENPTU1BTkRfU09VUkNFX1NLSUxMEAMqUAoIRGVsaXZlcnkSGAoUREVMSVZFUllfVU5TUEVDSUZJRUQQABISCg5ERUxJVkVSWV9TVEVFUhABEhYKEkRFTElWRVJZX0ZPTExPV19VUBACKrsBCgpTdG9wUmVhc29uEhsKF1NUT1BfUkVBU09OX1VOU1BFQ0lGSUVEEAASFAoQU1RPUF9SRUFTT05fU1RPUBABEhYKElNUT1BfUkVBU09OX0xFTkdUSBACEhgKFFNUT1BfUkVBU09OX1RPT0xfVVNFEAMSFwoTU1RPUF9SRUFTT05fQUJPUlRFRBAEEhUKEVNUT1BfUkVBU09OX0VSUk9SEAUSGAoUU1RPUF9SRUFTT05fREVGRVJSRUQQBkKtAQoRY29tLnBpcmMudjFhbHBoYTFCDFNlc3Npb25Qcm90b1ABWjVwaXJjLmRldi9yZWxheS9pbnRlcm5hbC9wYi9waXJjL3YxYWxwaGExO3BpcmN2MWFscGhhMaICA1BYWKoCDVBpcmMuVjFhbHBoYTHKAg1QaXJjXFYxYWxwaGEx4gIZUGlyY1xWMWFscGhhMVxHUEJNZXRhZGF0YeoCDlBpcmM6OlYxYWxwaGExYgZwcm90bzM", [file_google_protobuf_timestamp, file_pirc_v1alpha1_common]);
+var file_pirc_v1alpha1_session = /* @__PURE__ */ fileDesc("ChtwaXJjL3YxYWxwaGExL3Nlc3Npb24ucHJvdG8SDXBpcmMudjFhbHBoYTEiigQKE1Nlc3Npb25Bbm5vdW5jZW1lbnQSDAoEbmFtZRgBIAEoCRILCgNjd2QYAiABKAkSEAoIaG9zdG5hbWUYAyABKAkSIwoFbW9kZWwYBCABKAsyFC5waXJjLnYxYWxwaGExLk1vZGVsEjQKDnRoaW5raW5nX2xldmVsGAUgASgOMhwucGlyYy52MWFscGhhMS5UaGlua2luZ0xldmVsEg8KB3dvcmtpbmcYBiABKAgSLgoKc3RhcnRlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGwoTcmVwbGFjZXNfc2Vzc2lvbl9pZBgIIAEoCRIsCgZvcmlnaW4YCSABKA4yHC5waXJjLnYxYWxwaGExLlNlc3Npb25PcmlnaW4SEgoKcGlfdmVyc2lvbhgKIAEoCRIZChFleHRlbnNpb25fdmVyc2lvbhgLIAEoCRISCgpjb21wYWN0aW5nGAwgASgIEiMKBXBsYWNlGA0gASgLMhQucGlyYy52MWFscGhhMS5QbGFjZRIUCgxmaXJzdF9wcm9tcHQYDiABKAkSEAoIcmVxdWVzdHMYDyADKAkSEAoIbGF1bmNoZXIYECABKAkSEQoJbGF1bmNoX2lkGBEgASgJEioKCXF1ZXN0aW9ucxgSIAMoCzIXLnBpcmMudjFhbHBoYTEuUXVlc3Rpb24iyQEKCFF1ZXN0aW9uEgoKAmlkGAEgASgJEikKBGtpbmQYAiABKA4yGy5waXJjLnYxYWxwaGExLlF1ZXN0aW9uS2luZBINCgV0aXRsZRgDIAEoCRIPCgdtZXNzYWdlGAQgASgJEg8KB29wdGlvbnMYBSADKAkSEwoLcGxhY2Vob2xkZXIYBiABKAkSEgoKYW5zd2VyYWJsZRgHIAEoCBIsCghhc2tlZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAirQEKBVBsYWNlEgwKBGtpbmQYASABKAkSDQoFZ3JvdXAYAiABKAkSGQoMZ3JvdXBfbnVtYmVyGAMgASgNSACIAQESDgoGd2luZG93GAQgASgJEhoKDXdpbmRvd19udW1iZXIYBSABKA1IAYgBARIMCgRwYW5lGAYgASgJEg8KB2Rpc3BsYXkYByABKAlCDwoNX2dyb3VwX251bWJlckIQCg5fd2luZG93X251bWJlciIzCgVNb2RlbBIQCghwcm92aWRlchgBIAEoCRIKCgJpZBgCIAEoCRIMCgRuYW1lGAMgASgJIoQLCg5TZXNzaW9uTWVzc2FnZRISCgpyZXF1ZXN0X2lkGDIgASgJEicKBnByb21wdBgBIAEoCzIVLnBpcmMudjFhbHBoYTEuUHJvbXB0SAASJQoFYWJvcnQYAiABKAsyFC5waXJjLnYxYWxwaGExLkFib3J0SAASOAoPaGlzdG9yeV9yZXF1ZXN0GAMgASgLMh0ucGlyYy52MWFscGhhMS5IaXN0b3J5UmVxdWVzdEgAEjAKC2xpc3RfbW9kZWxzGAQgASgLMhkucGlyYy52MWFscGhhMS5MaXN0TW9kZWxzSAASLAoJc2V0X21vZGVsGAUgASgLMhcucGlyYy52MWFscGhhMS5TZXRNb2RlbEgAEj0KEnNldF90aGlua2luZ19sZXZlbBgGIAEoCzIfLnBpcmMudjFhbHBoYTEuU2V0VGhpbmtpbmdMZXZlbEgAEikKB2NvbXBhY3QYByABKAsyFi5waXJjLnYxYWxwaGExLkNvbXBhY3RIABIwCgtuZXdfc2Vzc2lvbhgIIAEoCzIZLnBpcmMudjFhbHBoYTEuTmV3U2Vzc2lvbkgAEicKBnJlbmFtZRgJIAEoCzIVLnBpcmMudjFhbHBoYTEuUmVuYW1lSAASNAoNc3RhdHNfcmVxdWVzdBgRIAEoCzIbLnBpcmMudjFhbHBoYTEuU3RhdHNSZXF1ZXN0SAASNAoNbGlzdF9jb21tYW5kcxgSIAEoCzIbLnBpcmMudjFhbHBoYTEuTGlzdENvbW1hbmRzSAASIwoEZm9yaxgTIAEoCzITLnBpcmMudjFhbHBoYTEuRm9ya0gAEiUKBWNsb25lGBQgASgLMhQucGlyYy52MWFscGhhMS5DbG9uZUgAEj0KEmxpc3RfcGFzdF9zZXNzaW9ucxgVIAEoCzIfLnBpcmMudjFhbHBoYTEuTGlzdFBhc3RTZXNzaW9uc0gAEicKBnJlc3VtZRgWIAEoCzIVLnBpcmMudjFhbHBoYTEuUmVzdW1lSAASJwoGcmVsb2FkGBggASgLMhUucGlyYy52MWFscGhhMS5SZWxvYWRIABI0Cg1uYXZpZ2F0ZV90cmVlGBkgASgLMhsucGlyYy52MWFscGhhMS5OYXZpZ2F0ZVRyZWVIABIsCglsaXN0X3RyZWUYGiABKAsyFy5waXJjLnYxYWxwaGExLkxpc3RUcmVlSAASIwoEc3RvcBgcIAEoCzITLnBpcmMudjFhbHBoYTEuU3RvcEgAEicKBmxhdW5jaBgdIAEoCzIVLnBpcmMudjFhbHBoYTEuTGF1bmNoSAASJwoGYW5zd2VyGB4gASgLMhUucGlyYy52MWFscGhhMS5BbnN3ZXJIABIsCgVldmVudBgKIAEoCzIbLnBpcmMudjFhbHBoYTEuU2Vzc2lvbkV2ZW50SAASKQoHaGlzdG9yeRgLIAEoCzIWLnBpcmMudjFhbHBoYTEuSGlzdG9yeUgAEisKCGFjY2VwdGVkGAwgASgLMhcucGlyYy52MWFscGhhMS5BY2NlcHRlZEgAEiUKBWVycm9yGA0gASgLMhQucGlyYy52MWFscGhhMS5FcnJvckgAEicKBm1vZGVscxgOIAEoCzIVLnBpcmMudjFhbHBoYTEuTW9kZWxzSAASJQoFc3RhdHMYDyABKAsyFC5waXJjLnYxYWxwaGExLlN0YXRzSAASKwoIY29tbWFuZHMYECABKAsyFy5waXJjLnYxYWxwaGExLkNvbW1hbmRzSAASNAoNcGFzdF9zZXNzaW9ucxgXIAEoCzIbLnBpcmMudjFhbHBoYTEuUGFzdFNlc3Npb25zSAASIwoEdHJlZRgbIAEoCzITLnBpcmMudjFhbHBoYTEuVHJlZUgAQgYKBGJvZHkiIAoKTGlzdE1vZGVscxISCgpyZXF1ZXN0X2lkGAEgASgJInEKBk1vZGVscxISCgpyZXF1ZXN0X2lkGAEgASgJEigKBm1vZGVscxgCIAMoCzIYLnBpcmMudjFhbHBoYTEuTW9kZWxJbmZvEikKB2N1cnJlbnQYAyABKAsyGC5waXJjLnYxYWxwaGExLk1vZGVsSW5mbyJrCglNb2RlbEluZm8SIwoFbW9kZWwYASABKAsyFC5waXJjLnYxYWxwaGExLk1vZGVsEhEKCXJlYXNvbmluZxgCIAEoCBIWCg5jb250ZXh0X3dpbmRvdxgDIAEoBBIOCgZpbWFnZXMYBCABKAgiQwoIU2V0TW9kZWwSEgoKcmVxdWVzdF9pZBgBIAEoCRIjCgVtb2RlbBgCIAEoCzIULnBpcmMudjFhbHBoYTEuTW9kZWwiUwoQU2V0VGhpbmtpbmdMZXZlbBISCgpyZXF1ZXN0X2lkGAEgASgJEisKBWxldmVsGAIgASgOMhwucGlyYy52MWFscGhhMS5UaGlua2luZ0xldmVsIjMKB0NvbXBhY3QSEgoKcmVxdWVzdF9pZBgBIAEoCRIUCgxpbnN0cnVjdGlvbnMYAiABKAkiIAoKTmV3U2Vzc2lvbhISCgpyZXF1ZXN0X2lkGAEgASgJIiwKBEZvcmsSEgoKcmVxdWVzdF9pZBgBIAEoCRIQCghlbnRyeV9pZBgCIAEoCSIbCgVDbG9uZRISCgpyZXF1ZXN0X2lkGAEgASgJIjsKEExpc3RQYXN0U2Vzc2lvbnMSEgoKcmVxdWVzdF9pZBgBIAEoCRITCgthbGxfZm9sZGVycxgCIAEoCCJjCgxQYXN0U2Vzc2lvbnMSEgoKcmVxdWVzdF9pZBgBIAEoCRIsCghzZXNzaW9ucxgCIAMoCzIaLnBpcmMudjFhbHBoYTEuUGFzdFNlc3Npb24SEQoJdHJ1bmNhdGVkGAMgASgIItgBCgtQYXN0U2Vzc2lvbhIMCgRwYXRoGAEgASgJEhIKCnNlc3Npb25faWQYAiABKAkSCwoDY3dkGAMgASgJEgwKBG5hbWUYBCABKAkSFAoMZmlyc3RfcHJvbXB0GAUgASgJEi4KCmNyZWF0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi8KC21vZGlmaWVkX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIVCg1tZXNzYWdlX2NvdW50GAggASgNIioKBlJlc3VtZRISCgpyZXF1ZXN0X2lkGAEgASgJEgwKBHBhdGgYAiABKAkiHAoGUmVsb2FkEhIKCnJlcXVlc3RfaWQYASABKAkiGgoEU3RvcBISCgpyZXF1ZXN0X2lkGAEgASgJIjcKBkxhdW5jaBISCgpyZXF1ZXN0X2lkGAEgASgJEgsKA2N3ZBgCIAEoCRIMCgRuYW1lGAMgASgJIoYBCgZBbnN3ZXISEgoKcmVxdWVzdF9pZBgBIAEoCRITCgtxdWVzdGlvbl9pZBgCIAEoCRIQCgZvcHRpb24YAyABKA1IABITCgljb25maXJtZWQYBCABKAhIABIOCgR0ZXh0GAUgASgJSAASEwoJZGlzbWlzc2VkGAYgASgISABCBwoFdmFsdWUiRwoMTmF2aWdhdGVUcmVlEhIKCnJlcXVlc3RfaWQYASABKAkSEAoIZW50cnlfaWQYAiABKAkSEQoJc3VtbWFyaXplGAMgASgIIh4KCExpc3RUcmVlEhIKCnJlcXVlc3RfaWQYASABKAkiVgoEVHJlZRISCgpyZXF1ZXN0X2lkGAEgASgJEicKCGJyYW5jaGVzGAIgAygLMhUucGlyYy52MWFscGhhMS5CcmFuY2gSEQoJdHJ1bmNhdGVkGAMgASgIIpABCgZCcmFuY2gSDwoHbGVhZl9pZBgBIAEoCRIPCgdjdXJyZW50GAIgASgIEg4KBnByb21wdBgDIAEoCRIMCgRsYXN0GAQgASgJEi8KC21vZGlmaWVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIVCg1tZXNzYWdlX2NvdW50GAYgASgNIioKBlJlbmFtZRISCgpyZXF1ZXN0X2lkGAEgASgJEgwKBG5hbWUYAiABKAkiIgoMU3RhdHNSZXF1ZXN0EhIKCnJlcXVlc3RfaWQYASABKAkiiAEKBVN0YXRzEhIKCnJlcXVlc3RfaWQYASABKAkSIwoFdG90YWwYAiABKAsyFC5waXJjLnYxYWxwaGExLlVzYWdlEhsKDmNvbnRleHRfdG9rZW5zGAMgASgESACIAQESFgoOY29udGV4dF93aW5kb3cYBCABKARCEQoPX2NvbnRleHRfdG9rZW5zIiIKDExpc3RDb21tYW5kcxISCgpyZXF1ZXN0X2lkGAEgASgJIkwKCENvbW1hbmRzEhIKCnJlcXVlc3RfaWQYASABKAkSLAoIY29tbWFuZHMYAiADKAsyGi5waXJjLnYxYWxwaGExLkNvbW1hbmRJbmZvIl4KC0NvbW1hbmRJbmZvEgwKBG5hbWUYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkSLAoGc291cmNlGAMgASgOMhwucGlyYy52MWFscGhhMS5Db21tYW5kU291cmNlInsKBlByb21wdBISCgpyZXF1ZXN0X2lkGAEgASgJEgwKBHRleHQYAiABKAkSJAoGaW1hZ2VzGAMgAygLMhQucGlyYy52MWFscGhhMS5JbWFnZRIpCghkZWxpdmVyeRgEIAEoDjIXLnBpcmMudjFhbHBoYTEuRGVsaXZlcnkiKAoFSW1hZ2USEQoJbWltZV90eXBlGAEgASgJEgwKBGRhdGEYAiABKAwiGwoFQWJvcnQSEgoKcmVxdWVzdF9pZBgBIAEoCSIzCg5IaXN0b3J5UmVxdWVzdBISCgpyZXF1ZXN0X2lkGAEgASgJEg0KBWxpbWl0GAIgASgNIm0KB0hpc3RvcnkSEgoKcmVxdWVzdF9pZBgBIAEoCRIuCgVpdGVtcxgCIAMoCzIfLnBpcmMudjFhbHBoYTEuQ29udmVyc2F0aW9uSXRlbRILCgNzZXEYAyABKAQSEQoJdHJ1bmNhdGVkGAQgASgIIh4KCEFjY2VwdGVkEhIKCnJlcXVlc3RfaWQYASABKAkimgMKDFNlc3Npb25FdmVudBILCgNzZXEYASABKAQSJgoCYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi8KBGl0ZW0YAyABKAsyHy5waXJjLnYxYWxwaGExLkNvbnZlcnNhdGlvbkl0ZW1IABI4Cg9hc3Npc3RhbnRfZGVsdGEYBCABKAsyHS5waXJjLnYxYWxwaGExLkFzc2lzdGFudERlbHRhSAASNAoNdG9vbF9wcm9ncmVzcxgFIAEoCzIbLnBpcmMudjFhbHBoYTEuVG9vbFByb2dyZXNzSAASOAoPd29ya2luZ19jaGFuZ2VkGAYgASgLMh0ucGlyYy52MWFscGhhMS5Xb3JraW5nQ2hhbmdlZEgAEjoKDGFubm91bmNlbWVudBgHIAEoCzIiLnBpcmMudjFhbHBoYTEuU2Vzc2lvbkFubm91bmNlbWVudEgAEjYKDmJyYW5jaF9jaGFuZ2VkGAggASgLMhwucGlyYy52MWFscGhhMS5CcmFuY2hDaGFuZ2VkSABCBgoEYm9keSKgAwoQQ29udmVyc2F0aW9uSXRlbRIQCghlbnRyeV9pZBgBIAEoCRIPCgd0dXJuX2lkGAIgASgJEiYKAmF0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIyCgx1c2VyX21lc3NhZ2UYBCABKAsyGi5waXJjLnYxYWxwaGExLlVzZXJNZXNzYWdlSAASPAoRYXNzaXN0YW50X21lc3NhZ2UYBSABKAsyHy5waXJjLnYxYWxwaGExLkFzc2lzdGFudE1lc3NhZ2VIABIsCgl0b29sX2NhbGwYBiABKAsyFy5waXJjLnYxYWxwaGExLlRvb2xDYWxsSAASMAoLdG9vbF9yZXN1bHQYByABKAsyGS5waXJjLnYxYWxwaGExLlRvb2xSZXN1bHRIABIvCgpjb21wYWN0aW9uGAggASgLMhkucGlyYy52MWFscGhhMS5Db21wYWN0aW9uSAASNgoOYnJhbmNoX3N1bW1hcnkYCSABKAsyHC5waXJjLnYxYWxwaGExLkJyYW5jaFN1bW1hcnlIAEIGCgRib2R5IlUKC1VzZXJNZXNzYWdlEgwKBHRleHQYASABKAkSJAoGaW1hZ2VzGAIgAygLMhQucGlyYy52MWFscGhhMS5JbWFnZRISCgpyZXF1ZXN0X2lkGAMgASgJIuUBChBBc3Npc3RhbnRNZXNzYWdlEhIKCm1lc3NhZ2VfaWQYASABKAkSLAoHY29udGVudBgCIAMoCzIbLnBpcmMudjFhbHBoYTEuQ29udGVudEJsb2NrEiMKBXVzYWdlGAMgASgLMhQucGlyYy52MWFscGhhMS5Vc2FnZRIuCgtzdG9wX3JlYXNvbhgEIAEoDjIZLnBpcmMudjFhbHBoYTEuU3RvcFJlYXNvbhIjCgVtb2RlbBgFIAEoCzIULnBpcmMudjFhbHBoYTEuTW9kZWwSFQoNZXJyb3JfbWVzc2FnZRgGIAEoCSI6CgxDb250ZW50QmxvY2sSDgoEdGV4dBgBIAEoCUgAEhIKCHRoaW5raW5nGAIgASgJSABCBgoEYm9keSJ5CgVVc2FnZRIUCgxpbnB1dF90b2tlbnMYASABKAQSFQoNb3V0cHV0X3Rva2VucxgCIAEoBBIZChFjYWNoZV9yZWFkX3Rva2VucxgDIAEoBBIaChJjYWNoZV93cml0ZV90b2tlbnMYBCABKAQSDAoEY29zdBgFIAEoASJ2Cg5Bc3Npc3RhbnREZWx0YRISCgptZXNzYWdlX2lkGAEgASgJEg8KB3R1cm5faWQYAiABKAkSEwoLYmxvY2tfaW5kZXgYAyABKA0SDgoEdGV4dBgEIAEoCUgAEhIKCHRoaW5raW5nGAUgASgJSABCBgoEYm9keSJLCghUb29sQ2FsbBIUCgx0b29sX2NhbGxfaWQYASABKAkSEQoJdG9vbF9uYW1lGAIgASgJEhYKDmFyZ3VtZW50c19qc29uGAMgASgJIkIKClRvb2xSZXN1bHQSFAoMdG9vbF9jYWxsX2lkGAEgASgJEhAKCGlzX2Vycm9yGAIgASgIEgwKBHRleHQYAyABKAkiQwoMVG9vbFByb2dyZXNzEhQKDHRvb2xfY2FsbF9pZBgBIAEoCRIPCgd0dXJuX2lkGAIgASgJEgwKBHRleHQYAyABKAkiIQoOV29ya2luZ0NoYW5nZWQSDwoHd29ya2luZxgBIAEoCCI0CgpDb21wYWN0aW9uEg8KB3N1bW1hcnkYASABKAkSFQoNdG9rZW5zX2JlZm9yZRgCIAEoBCIgCg1CcmFuY2hTdW1tYXJ5Eg8KB3N1bW1hcnkYASABKAkiIAoNQnJhbmNoQ2hhbmdlZBIPCgdsZWFmX2lkGAEgASgJKq8BCgxRdWVzdGlvbktpbmQSHQoZUVVFU1RJT05fS0lORF9VTlNQRUNJRklFRBAAEhgKFFFVRVNUSU9OX0tJTkRfU0VMRUNUEAESGQoVUVVFU1RJT05fS0lORF9DT05GSVJNEAISFwoTUVVFU1RJT05fS0lORF9JTlBVVBADEhgKFFFVRVNUSU9OX0tJTkRfRURJVE9SEAQSGAoUUVVFU1RJT05fS0lORF9DVVNUT00QBSqyAQoNU2Vzc2lvbk9yaWdpbhIeChpTRVNTSU9OX09SSUdJTl9VTlNQRUNJRklFRBAAEhoKFlNFU1NJT05fT1JJR0lOX1NUQVJUVVAQARIWChJTRVNTSU9OX09SSUdJTl9ORVcQAhIZChVTRVNTSU9OX09SSUdJTl9SRVNVTUUQAxIXChNTRVNTSU9OX09SSUdJTl9GT1JLEAQSGQoVU0VTU0lPTl9PUklHSU5fUkVMT0FEEAUq4QEKDVRoaW5raW5nTGV2ZWwSHgoaVEhJTktJTkdfTEVWRUxfVU5TUEVDSUZJRUQQABIWChJUSElOS0lOR19MRVZFTF9PRkYQARIaChZUSElOS0lOR19MRVZFTF9NSU5JTUFMEAISFgoSVEhJTktJTkdfTEVWRUxfTE9XEAMSGQoVVEhJTktJTkdfTEVWRUxfTUVESVVNEAQSFwoTVEhJTktJTkdfTEVWRUxfSElHSBAFEhgKFFRISU5LSU5HX0xFVkVMX1hISUdIEAYSFgoSVEhJTktJTkdfTEVWRUxfTUFYEAcqggEKDUNvbW1hbmRTb3VyY2USHgoaQ09NTUFORF9TT1VSQ0VfVU5TUEVDSUZJRUQQABIcChhDT01NQU5EX1NPVVJDRV9FWFRFTlNJT04QARIZChVDT01NQU5EX1NPVVJDRV9QUk9NUFQQAhIYChRDT01NQU5EX1NPVVJDRV9TS0lMTBADKlAKCERlbGl2ZXJ5EhgKFERFTElWRVJZX1VOU1BFQ0lGSUVEEAASEgoOREVMSVZFUllfU1RFRVIQARIWChJERUxJVkVSWV9GT0xMT1dfVVAQAiq7AQoKU3RvcFJlYXNvbhIbChdTVE9QX1JFQVNPTl9VTlNQRUNJRklFRBAAEhQKEFNUT1BfUkVBU09OX1NUT1AQARIWChJTVE9QX1JFQVNPTl9MRU5HVEgQAhIYChRTVE9QX1JFQVNPTl9UT09MX1VTRRADEhcKE1NUT1BfUkVBU09OX0FCT1JURUQQBBIVChFTVE9QX1JFQVNPTl9FUlJPUhAFEhgKFFNUT1BfUkVBU09OX0RFRkVSUkVEEAZCrQEKEWNvbS5waXJjLnYxYWxwaGExQgxTZXNzaW9uUHJvdG9QAVo1cGlyYy5kZXYvcmVsYXkvaW50ZXJuYWwvcGIvcGlyYy92MWFscGhhMTtwaXJjdjFhbHBoYTGiAgNQWFiqAg1QaXJjLlYxYWxwaGExygINUGlyY1xWMWFscGhhMeICGVBpcmNcVjFhbHBoYTFcR1BCTWV0YWRhdGHqAg5QaXJjOjpWMWFscGhhMWIGcHJvdG8z", [file_google_protobuf_timestamp, file_pirc_v1alpha1_common]);
var SessionAnnouncementSchema = /* @__PURE__ */ messageDesc(file_pirc_v1alpha1_session, 0);
-var PlaceSchema = /* @__PURE__ */ messageDesc(file_pirc_v1alpha1_session, 1);
-var ModelSchema = /* @__PURE__ */ messageDesc(file_pirc_v1alpha1_session, 2);
-var SessionMessageSchema = /* @__PURE__ */ messageDesc(file_pirc_v1alpha1_session, 3);
-var ModelInfoSchema = /* @__PURE__ */ messageDesc(file_pirc_v1alpha1_session, 6);
-var BranchSchema = /* @__PURE__ */ messageDesc(file_pirc_v1alpha1_session, 23);
-var ImageSchema = /* @__PURE__ */ messageDesc(file_pirc_v1alpha1_session, 31);
-var HistorySchema = /* @__PURE__ */ messageDesc(file_pirc_v1alpha1_session, 34);
-var ConversationItemSchema = /* @__PURE__ */ messageDesc(file_pirc_v1alpha1_session, 37);
-var ContentBlockSchema = /* @__PURE__ */ messageDesc(file_pirc_v1alpha1_session, 40);
-var UsageSchema = /* @__PURE__ */ messageDesc(file_pirc_v1alpha1_session, 41);
+var QuestionSchema = /* @__PURE__ */ messageDesc(file_pirc_v1alpha1_session, 1);
+var PlaceSchema = /* @__PURE__ */ messageDesc(file_pirc_v1alpha1_session, 2);
+var ModelSchema = /* @__PURE__ */ messageDesc(file_pirc_v1alpha1_session, 3);
+var SessionMessageSchema = /* @__PURE__ */ messageDesc(file_pirc_v1alpha1_session, 4);
+var ModelInfoSchema = /* @__PURE__ */ messageDesc(file_pirc_v1alpha1_session, 7);
+var BranchSchema = /* @__PURE__ */ messageDesc(file_pirc_v1alpha1_session, 25);
+var ImageSchema = /* @__PURE__ */ messageDesc(file_pirc_v1alpha1_session, 33);
+var HistorySchema = /* @__PURE__ */ messageDesc(file_pirc_v1alpha1_session, 36);
+var ConversationItemSchema = /* @__PURE__ */ messageDesc(file_pirc_v1alpha1_session, 39);
+var ContentBlockSchema = /* @__PURE__ */ messageDesc(file_pirc_v1alpha1_session, 42);
+var UsageSchema = /* @__PURE__ */ messageDesc(file_pirc_v1alpha1_session, 43);
// protocol/helpers.ts
function errorReply(requestId, code, message) {
@@ -8116,6 +8117,7 @@ var REQUESTS = {
rename: "change",
stop: "change",
launch: "change",
+ answer: "change",
historyRequest: "question",
listModels: "question",
statsRequest: "question",
@@ -8285,7 +8287,8 @@ var Live = class {
firstPrompt: this.firstPrompt,
requests: Object.keys(REQUESTS).map(requestName),
launcher: this.sink.launcher()?.name ?? "",
- launchId: this.sink.launchId
+ launchId: this.sink.launchId,
+ questions: this.sink.questions()
});
}
announcementBytes() {
@@ -8505,11 +8508,21 @@ var Live = class {
this.onAnnouncementChanged();
}
onCompactEnd() {
- for (const u of this.unconfirmed) this.armConfirm(u);
+ if (!this.sink.questions().length) for (const u of this.unconfirmed) this.armConfirm(u);
if (!this.compacting) return;
this.compacting = false;
this.onAnnouncementChanged();
}
+ // A question an extension asks before a prompt's run (in
+ // before_agent_start, say) holds the run up: the prompt's deadline waits
+ // while one is asked.
+ onQuestionsChanged() {
+ const asking = this.sink.questions().length > 0;
+ for (const u of this.unconfirmed) {
+ if (asking) clearTimeout(u.timer);
+ else if (!this.compacting) this.armConfirm(u);
+ }
+ }
onCompact(entry) {
this.catchUp();
this.emitItem(compactionItem(entry, this.turnId));
@@ -8621,7 +8634,7 @@ var Live = class {
if (command || !idle) return respond(accepted(requestId));
const u = { requestId, text, respond, timer: void 0 };
this.unconfirmed.push(u);
- if (!this.compacting) this.armConfirm(u);
+ if (!this.compacting && !this.sink.questions().length) this.armConfirm(u);
return;
}
case "abort":
@@ -8747,6 +8760,11 @@ var Live = class {
if ("problem" in folder) return respond(errorReply(requestId, 4 /* INVALID */, folder.problem));
return this.whenSettled(requestId, "launch", launcher.launch({ cwd: folder.path, command: piCommand(), env: launchEnv(process.env, requestId), name: launchName(body.value.name) }), respond, () => respond(accepted(requestId)));
}
+ case "answer": {
+ const { requestId } = body.value;
+ const why = this.sink.answer(body.value);
+ return respond(why ? errorReply(requestId, 4 /* INVALID */, why) : accepted(requestId));
+ }
case "statsRequest": {
const usage = this.ctx.getContextUsage();
return respond(create(SessionMessageSchema, {
@@ -8820,6 +8838,136 @@ function withRequestId(m, requestId) {
return m;
}
+// extension/src/questions.ts
+import { randomBytes as randomBytes3 } from "node:crypto";
+var TEXT_MAX = 2e3;
+var OPTION_MAX = 500;
+var OPTIONS_MAX = 200;
+var ORIGINALS = /* @__PURE__ */ Symbol.for("pirc.questions.originals");
+var clip2 = (s, n) => s.length > n ? `${s.slice(0, n - 1)}\u2026` : s;
+var Questions = class {
+ constructor(onChange) {
+ this.onChange = onChange;
+ }
+ onChange;
+ pending = [];
+ // Why wrapping failed, if it did.
+ problem = "";
+ // The questions now, oldest first.
+ list() {
+ return this.pending.map((p) => p.question);
+ }
+ // Wraps pi's ui object, if not already this extension's; again after a
+ // newer load, or when pi makes a new one.
+ install(ui, current) {
+ try {
+ const u = ui;
+ const orig = u[ORIGINALS] ?? { select: u.select, confirm: u.confirm, input: u.input, editor: u.editor, custom: u.custom };
+ if (u[ORIGINALS] && u.select.pirc === this) return;
+ Object.defineProperty(u, ORIGINALS, { value: orig, configurable: true });
+ const select = (title, options, opts) => current().ask({ kind: 1 /* SELECT */, title, options }, opts, (o) => orig.select.call(ui, title, options, o));
+ select.pirc = this;
+ u.select = select;
+ u.confirm = (title, message, opts) => current().ask({ kind: 2 /* CONFIRM */, title, message }, opts, (o) => orig.confirm.call(ui, title, message, o));
+ u.input = (title, placeholder, opts) => current().ask({ kind: 3 /* INPUT */, title, placeholder }, opts, (o) => orig.input.call(ui, title, placeholder, o));
+ u.editor = (title, prefill) => current().show({ kind: 4 /* EDITOR */, title }, () => orig.editor.call(ui, title, prefill));
+ u.custom = ((factory, options) => current().show({ kind: 5 /* CUSTOM */, title: "" }, () => orig.custom.call(ui, factory, options)));
+ if (u.select !== select) throw new Error("pi's ui object cannot be changed");
+ this.problem = "";
+ } catch (e) {
+ this.problem = `questions cannot be answered from clients: ${e.message}`;
+ }
+ }
+ add(q, answerable) {
+ const options = q.options ?? [];
+ const fits = options.length <= OPTIONS_MAX;
+ const p = {
+ question: create(QuestionSchema, {
+ id: randomBytes3(8).toString("hex"),
+ kind: q.kind,
+ title: clip2(q.title ?? "", TEXT_MAX),
+ message: clip2(q.message ?? "", TEXT_MAX),
+ options: fits ? options.map((o) => clip2(String(o), OPTION_MAX)) : [],
+ placeholder: clip2(q.placeholder ?? "", TEXT_MAX),
+ answerable: answerable && fits,
+ askedAt: atMs(Date.now())
+ }),
+ ...q.options ? { options: q.options } : {}
+ };
+ this.pending.push(p);
+ this.changed();
+ return p;
+ }
+ remove(p) {
+ const i = this.pending.indexOf(p);
+ if (i < 0) return;
+ this.pending.splice(i, 1);
+ this.changed();
+ }
+ changed() {
+ try {
+ this.onChange();
+ } catch {
+ }
+ }
+ // Asked in the terminal and of clients; the first answer wins, and a
+ // client's closes the terminal's dialog.
+ ask(q, opts, run2) {
+ const closing = new AbortController();
+ const given = opts?.signal;
+ if (given?.aborted) closing.abort();
+ given?.addEventListener("abort", () => closing.abort(), { once: true });
+ const p = this.add(q, true);
+ return new Promise((resolve, reject) => {
+ let settled = false;
+ const settle = (f) => {
+ if (settled) return;
+ settled = true;
+ this.remove(p);
+ f();
+ };
+ p.answer = (value) => {
+ settle(() => resolve(value));
+ closing.abort();
+ };
+ run2({ ...opts, signal: closing.signal }).then((v) => settle(() => resolve(v)), (e) => settle(() => reject(e)));
+ });
+ }
+ // Shown to clients until the terminal answers it.
+ show(q, run2) {
+ const p = this.add(q, false);
+ return run2().finally(() => this.remove(p));
+ }
+ // A client's answer: why it cannot be taken, or undefined once given.
+ answer(a) {
+ const p = this.pending.find((x) => x.question.id === a.questionId);
+ if (!p) return "that question is no longer asked";
+ if (!p.question.answerable || !p.answer) return "that question can be answered only in pi's terminal";
+ const v = a.value;
+ if (v.case === "dismissed") {
+ p.answer(p.question.kind === 2 /* CONFIRM */ ? false : void 0);
+ return void 0;
+ }
+ switch (p.question.kind) {
+ case 1 /* SELECT */: {
+ if (v.case !== "option" || v.value >= (p.options?.length ?? 0)) return "a select is answered with one of its options";
+ p.answer(p.options[v.value]);
+ return void 0;
+ }
+ case 2 /* CONFIRM */:
+ if (v.case !== "confirmed") return "a confirm is answered yes or no";
+ p.answer(v.value);
+ return void 0;
+ case 3 /* INPUT */:
+ if (v.case !== "text") return "an input is answered with text";
+ p.answer(v.value);
+ return void 0;
+ default:
+ return "that question can be answered only in pi's terminal";
+ }
+ }
+};
+
// extension/src/host.ts
var isChange = (c) => c !== void 0 && Object.hasOwn(REQUESTS, c) && REQUESTS[c] === "change";
var IDEMPOTENCY_ENTRIES = 1e3;
@@ -8862,6 +9010,11 @@ var Host = class _Host {
launchers = new LauncherChoice(() => {
if (this.state.kind === "ready") this.live?.onAnnouncementChanged();
});
+ // The dialogs pi is showing for extensions, asked of clients too.
+ dialogs = new Questions(() => {
+ this.live?.onQuestionsChanged();
+ if (this.state.kind === "ready") this.live?.onAnnouncementChanged();
+ });
// The Launch that started this process, if one did.
launchId = process.env[LAUNCH_ENV] ?? "";
// The host this one took over from, until it is let go (HANDOVER_MS).
@@ -9043,6 +9196,7 @@ var Host = class _Host {
}
if ("reason" in this.state) lines.push(`relay said: ${this.state.reason}`);
if (this.live) lines.push(`session ${this.live.sessionId}, instance ${this.instanceId}`);
+ if (this.dialogs.problem) lines.push(this.dialogs.problem);
if (this.lastError) lines.push(`last error: ${this.lastError}`);
if (!c?.relay) lines.push("enrol with: /pirc enrol <relay-url> [token]; without a token, approve this key in the web app or with pirc-relay approve");
return lines.join("\n");
@@ -9086,6 +9240,12 @@ var Host = class _Host {
launcher() {
return this.launchers.current;
}
+ questions() {
+ return this.dialogs.list();
+ }
+ answer(a) {
+ return this.dialogs.answer(a);
+ }
maxPayloadBytes() {
return this.state.kind === "ready" ? this.state.maxFrameBytes - 512 : 1 << 20;
}
@@ -9149,7 +9309,7 @@ var Host = class _Host {
};
// extension/src/index.ts
-var EXTENSION_VERSION = true ? "0.1.9-dev+46bb48bfe5b3" : "dev";
+var EXTENSION_VERSION = true ? "0.1.9-dev+d581157e4c48" : "dev";
function piVersion() {
try {
let dir = dirname3(realpathSync(process.argv[1]));
@@ -9164,11 +9324,11 @@ function piVersion() {
}
return "unknown";
}
-var LOAD = true ? "0.1.9-dev+46bb48bfe5b3" : `dev ${randomBytes3(4).toString("hex")}`;
+var LOAD = true ? "0.1.9-dev+d581157e4c48" : `dev ${randomBytes4(4).toString("hex")}`;
var KEY = /* @__PURE__ */ Symbol.for("pirc.extension");
var proc = globalThis[KEY] ??= {};
if (!proc.host || proc.load !== LOAD) {
- proc.host = Host.succeeding(proc.host, randomBytes3(8).toString("hex"), { pi: piVersion(), extension: EXTENSION_VERSION });
+ proc.host = Host.succeeding(proc.host, randomBytes4(8).toString("hex"), { pi: piVersion(), extension: EXTENSION_VERSION });
proc.load = LOAD;
}
var USAGE = "usage: /pirc [status | enrol <relay-url> [token] | reconnect]";
@@ -9187,6 +9347,7 @@ function index_default(pi) {
if (ctx.mode !== "tui") return;
active = true;
try {
+ proc.host.dialogs.install(ctx.ui, () => proc.host.dialogs);
proc.host.bind(pi, ctx, e);
} catch (err) {
proc.host.fail("session_start", err);
@@ -9206,6 +9367,7 @@ function index_default(pi) {
pi.on("tool_execution_update", on("tool_execution_update", (live, e) => live.onToolUpdate(e)));
pi.on("tool_execution_end", on("tool_execution_end", (live, e) => live.onToolEnd(e.toolCallId)));
pi.on("agent_start", on("agent_start", (live) => {
+ proc.host.dialogs.install(live.ctx.ui, () => proc.host.dialogs);
live.onWorking(true);
void proc.host.places.refresh();
}));