@liquidmetal-ai/drizzle 0.9.2 → 0.11.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.
Files changed (42) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/appify/build.d.ts +8 -1
  3. package/dist/appify/build.d.ts.map +1 -1
  4. package/dist/appify/build.js +69 -1
  5. package/dist/appify/build.test.js +156 -0
  6. package/dist/appify/validate.d.ts.map +1 -1
  7. package/dist/appify/validate.js +37 -0
  8. package/dist/appify/validate.test.js +38 -1
  9. package/dist/liquidmetal/v1alpha1/bucket_name_pb.d.ts +11 -11
  10. package/dist/liquidmetal/v1alpha1/bucket_name_pb.d.ts.map +1 -1
  11. package/dist/liquidmetal/v1alpha1/bucket_name_pb.js +1 -1
  12. package/dist/liquidmetal/v1alpha1/object_pb.d.ts +8 -0
  13. package/dist/liquidmetal/v1alpha1/object_pb.d.ts.map +1 -1
  14. package/dist/liquidmetal/v1alpha1/object_pb.js +1 -1
  15. package/dist/liquidmetal/v1alpha1/payments_pb.d.ts +461 -0
  16. package/dist/liquidmetal/v1alpha1/payments_pb.d.ts.map +1 -0
  17. package/dist/liquidmetal/v1alpha1/payments_pb.js +152 -0
  18. package/dist/liquidmetal/v1alpha1/rainbow_auth_pb.d.ts +315 -0
  19. package/dist/liquidmetal/v1alpha1/rainbow_auth_pb.d.ts.map +1 -1
  20. package/dist/liquidmetal/v1alpha1/rainbow_auth_pb.js +56 -1
  21. package/dist/liquidmetal/v1alpha1/riverjack_pb.d.ts +6 -0
  22. package/dist/liquidmetal/v1alpha1/riverjack_pb.d.ts.map +1 -1
  23. package/dist/liquidmetal/v1alpha1/riverjack_pb.js +1 -1
  24. package/dist/liquidmetal/v1alpha1/search_agent_pb.d.ts +374 -0
  25. package/dist/liquidmetal/v1alpha1/search_agent_pb.d.ts.map +1 -1
  26. package/dist/liquidmetal/v1alpha1/search_agent_pb.js +46 -1
  27. package/dist/liquidmetal/v1alpha1/stripe_seller_integration_pb.d.ts +468 -0
  28. package/dist/liquidmetal/v1alpha1/stripe_seller_integration_pb.d.ts.map +1 -0
  29. package/dist/liquidmetal/v1alpha1/stripe_seller_integration_pb.js +151 -0
  30. package/package.json +3 -3
  31. package/src/appify/build.test.ts +184 -0
  32. package/src/appify/build.ts +73 -1
  33. package/src/appify/validate.test.ts +40 -1
  34. package/src/appify/validate.ts +40 -0
  35. package/src/liquidmetal/v1alpha1/bucket_name_pb.ts +12 -12
  36. package/src/liquidmetal/v1alpha1/object_pb.ts +10 -1
  37. package/src/liquidmetal/v1alpha1/payments_pb.ts +546 -0
  38. package/src/liquidmetal/v1alpha1/rainbow_auth_pb.ts +362 -1
  39. package/src/liquidmetal/v1alpha1/riverjack_pb.ts +8 -1
  40. package/src/liquidmetal/v1alpha1/search_agent_pb.ts +432 -1
  41. package/src/liquidmetal/v1alpha1/stripe_seller_integration_pb.ts +545 -0
  42. package/tsconfig.tsbuildinfo +1 -1
@@ -12,7 +12,7 @@ import type { Message } from "@bufbuild/protobuf";
12
12
  * Describes the file liquidmetal/v1alpha1/search_agent.proto.
13
13
  */
14
14
  export const file_liquidmetal_v1alpha1_search_agent: GenFile = /*@__PURE__*/
15
- fileDesc("CidsaXF1aWRtZXRhbC92MWFscGhhMS9zZWFyY2hfYWdlbnQucHJvdG8SFGxpcXVpZG1ldGFsLnYxYWxwaGExItkBChNEb2N1bWVudENoYXRSZXF1ZXN0EjwKD2J1Y2tldF9sb2NhdGlvbhgBIAEoCzIjLmxpcXVpZG1ldGFsLnYxYWxwaGExLkJ1Y2tldExvY2F0b3ISEQoJb2JqZWN0X2lkGAIgASgJEg0KBWlucHV0GAMgASgJEhIKCnJlcXVlc3RfaWQYBCABKAkSDwoHdXNlcl9pZBgFIAEoCRIXCg9vcmdhbml6YXRpb25faWQYBiABKAkSFgoJcGFydGl0aW9uGAcgASgJSACIAQFCDAoKX3BhcnRpdGlvbiImChREb2N1bWVudENoYXRSZXNwb25zZRIOCgZhbnN3ZXIYASABKAkixAEKEFJhZ1NlYXJjaFJlcXVlc3QSDQoFaW5wdXQYASABKAkSEgoKcmVxdWVzdF9pZBgCIAEoCRI9ChBidWNrZXRfbG9jYXRpb25zGAMgAygLMiMubGlxdWlkbWV0YWwudjFhbHBoYTEuQnVja2V0TG9jYXRvchIPCgd1c2VyX2lkGAQgASgJEhcKD29yZ2FuaXphdGlvbl9pZBgFIAEoCRIWCglwYXJ0aXRpb24YBiABKAlIAIgBAUIMCgpfcGFydGl0aW9uIkYKEVJhZ1NlYXJjaFJlc3BvbnNlEjEKB3Jlc3VsdHMYASADKAsyIC5saXF1aWRtZXRhbC52MWFscGhhMS5UZXh0UmVzdWx0IlQKDFNvdXJjZVJlc3VsdBI0CgZidWNrZXQYASABKAsyJC5saXF1aWRtZXRhbC52MWFscGhhMS5CdWNrZXRSZXNwb25zZRIOCgZvYmplY3QYAiABKAkinAIKClRleHRSZXN1bHQSHAoPY2h1bmtfc2lnbmF0dXJlGAEgASgJSACIAQESEQoEdGV4dBgCIAEoCUgBiAEBEjIKBnNvdXJjZRgDIAEoCzIiLmxpcXVpZG1ldGFsLnYxYWxwaGExLlNvdXJjZVJlc3VsdBIeChFwYXlsb2FkX3NpZ25hdHVyZRgEIAEoCUgCiAEBEhIKBXNjb3JlGAUgASgBSAOIAQESEgoFZW1iZWQYBiABKAlIBIgBARIRCgR0eXBlGAcgASgJSAWIAQFCEgoQX2NodW5rX3NpZ25hdHVyZUIHCgVfdGV4dEIUChJfcGF5bG9hZF9zaWduYXR1cmVCCAoGX3Njb3JlQggKBl9lbWJlZEIHCgVfdHlwZSJnCg5QYWdpbmF0aW9uSW5mbxINCgV0b3RhbBgBIAEoBRIMCgRwYWdlGAIgASgFEhEKCXBhZ2Vfc2l6ZRgDIAEoBRITCgt0b3RhbF9wYWdlcxgEIAEoBRIQCghoYXNfbW9yZRgFIAEoCCKfAQoYQ3JlYXRlUGFnZVN1bW1hcnlSZXF1ZXN0EgwKBHBhZ2UYASABKAUSEQoJcGFnZV9zaXplGAIgASgFEhIKCnJlcXVlc3RfaWQYAyABKAkSDwoHdXNlcl9pZBgEIAEoCRIXCg9vcmdhbml6YXRpb25faWQYBSABKAkSFgoJcGFydGl0aW9uGAYgASgJSACIAQFCDAoKX3BhcnRpdGlvbiIsChlDcmVhdGVQYWdlU3VtbWFyeVJlc3BvbnNlEg8KB3N1bW1hcnkYASABKAkizQEKGVJ1blN1cGVydmlzb3JBZ2VudFJlcXVlc3QSDQoFaW5wdXQYASABKAkSEgoKcmVxdWVzdF9pZBgCIAEoCRI9ChBidWNrZXRfbG9jYXRpb25zGAMgAygLMiMubGlxdWlkbWV0YWwudjFhbHBoYTEuQnVja2V0TG9jYXRvchIPCgd1c2VyX2lkGAQgASgJEhcKD29yZ2FuaXphdGlvbl9pZBgFIAEoCRIWCglwYXJ0aXRpb24YBiABKAlIAIgBAUIMCgpfcGFydGl0aW9uIokBChpSdW5TdXBlcnZpc29yQWdlbnRSZXNwb25zZRIxCgdyZXN1bHRzGAEgAygLMiAubGlxdWlkbWV0YWwudjFhbHBoYTEuVGV4dFJlc3VsdBI4CgpwYWdpbmF0aW9uGAIgASgLMiQubGlxdWlkbWV0YWwudjFhbHBoYTEuUGFnaW5hdGlvbkluZm8iwgEKGkdldFBhZ2luYXRlZFJlc3VsdHNSZXF1ZXN0EhIKCnJlcXVlc3RfaWQYASABKAkSEQoEcGFnZRgCIAEoBUgAiAEBEhYKCXBhZ2Vfc2l6ZRgDIAEoBUgBiAEBEg8KB3VzZXJfaWQYBCABKAkSFwoPb3JnYW5pemF0aW9uX2lkGAUgASgJEhYKCXBhcnRpdGlvbhgGIAEoCUgCiAEBQgcKBV9wYWdlQgwKCl9wYWdlX3NpemVCDAoKX3BhcnRpdGlvbiKKAQobR2V0UGFnaW5hdGVkUmVzdWx0c1Jlc3BvbnNlEjEKB3Jlc3VsdHMYASADKAsyIC5saXF1aWRtZXRhbC52MWFscGhhMS5UZXh0UmVzdWx0EjgKCnBhZ2luYXRpb24YAiABKAsyJC5saXF1aWRtZXRhbC52MWFscGhhMS5QYWdpbmF0aW9uSW5mbzLaBQoSU2VhcmNoQWdlbnRTZXJ2aWNlEoQBCgxEb2N1bWVudENoYXQSKS5saXF1aWRtZXRhbC52MWFscGhhMS5Eb2N1bWVudENoYXRSZXF1ZXN0GioubGlxdWlkbWV0YWwudjFhbHBoYTEuRG9jdW1lbnRDaGF0UmVzcG9uc2UiHYLT5JMCFzoBKiISL3YxL2RvY3VtZW50X3F1ZXJ5EnkKCVJhZ1NlYXJjaBImLmxpcXVpZG1ldGFsLnYxYWxwaGExLlJhZ1NlYXJjaFJlcXVlc3QaJy5saXF1aWRtZXRhbC52MWFscGhhMS5SYWdTZWFyY2hSZXNwb25zZSIbgtPkkwIVOgEqIhAvdjEvY2h1bmtfc2VhcmNoEpMBChFDcmVhdGVQYWdlU3VtbWFyeRIuLmxpcXVpZG1ldGFsLnYxYWxwaGExLkNyZWF0ZVBhZ2VTdW1tYXJ5UmVxdWVzdBovLmxpcXVpZG1ldGFsLnYxYWxwaGExLkNyZWF0ZVBhZ2VTdW1tYXJ5UmVzcG9uc2UiHYLT5JMCFzoBKiISL3YxL3N1bW1hcml6ZV9wYWdlEo4BChJSdW5TdXBlcnZpc29yQWdlbnQSLy5saXF1aWRtZXRhbC52MWFscGhhMS5SdW5TdXBlcnZpc29yQWdlbnRSZXF1ZXN0GjAubGlxdWlkbWV0YWwudjFhbHBoYTEuUnVuU3VwZXJ2aXNvckFnZW50UmVzcG9uc2UiFYLT5JMCDzoBKiIKL3YxL3NlYXJjaBKaAQoTR2V0UGFnaW5hdGVkUmVzdWx0cxIwLmxpcXVpZG1ldGFsLnYxYWxwaGExLkdldFBhZ2luYXRlZFJlc3VsdHNSZXF1ZXN0GjEubGlxdWlkbWV0YWwudjFhbHBoYTEuR2V0UGFnaW5hdGVkUmVzdWx0c1Jlc3BvbnNlIh6C0+STAhg6ASoiEy92MS9zZWFyY2hfZ2V0X3BhZ2VC6wEKGGNvbS5saXF1aWRtZXRhbC52MWFscGhhMUIQU2VhcmNoQWdlbnRQcm90b1ABWkxnaXRodWIuY29tL2xpcXVpZG1ldGFsLWFpL3Byb3RvZ2VuMi9saXF1aWRtZXRhbC92MWFscGhhMTtsaXF1aWRtZXRhbHYxYWxwaGExogIDTFhYqgIUTGlxdWlkbWV0YWwuVjFhbHBoYTHKAhRMaXF1aWRtZXRhbFxWMWFscGhhMeICIExpcXVpZG1ldGFsXFYxYWxwaGExXEdQQk1ldGFkYXRh6gIVTGlxdWlkbWV0YWw6OlYxYWxwaGExYgZwcm90bzM", [file_liquidmetal_v1alpha1_bucket_name]);
15
+ fileDesc("CidsaXF1aWRtZXRhbC92MWFscGhhMS9zZWFyY2hfYWdlbnQucHJvdG8SFGxpcXVpZG1ldGFsLnYxYWxwaGExItkBChNEb2N1bWVudENoYXRSZXF1ZXN0EjwKD2J1Y2tldF9sb2NhdGlvbhgBIAEoCzIjLmxpcXVpZG1ldGFsLnYxYWxwaGExLkJ1Y2tldExvY2F0b3ISEQoJb2JqZWN0X2lkGAIgASgJEg0KBWlucHV0GAMgASgJEhIKCnJlcXVlc3RfaWQYBCABKAkSDwoHdXNlcl9pZBgFIAEoCRIXCg9vcmdhbml6YXRpb25faWQYBiABKAkSFgoJcGFydGl0aW9uGAcgASgJSACIAQFCDAoKX3BhcnRpdGlvbiImChREb2N1bWVudENoYXRSZXNwb25zZRIOCgZhbnN3ZXIYASABKAkixAEKEFJhZ1NlYXJjaFJlcXVlc3QSDQoFaW5wdXQYASABKAkSEgoKcmVxdWVzdF9pZBgCIAEoCRI9ChBidWNrZXRfbG9jYXRpb25zGAMgAygLMiMubGlxdWlkbWV0YWwudjFhbHBoYTEuQnVja2V0TG9jYXRvchIPCgd1c2VyX2lkGAQgASgJEhcKD29yZ2FuaXphdGlvbl9pZBgFIAEoCRIWCglwYXJ0aXRpb24YBiABKAlIAIgBAUIMCgpfcGFydGl0aW9uIkYKEVJhZ1NlYXJjaFJlc3BvbnNlEjEKB3Jlc3VsdHMYASADKAsyIC5saXF1aWRtZXRhbC52MWFscGhhMS5UZXh0UmVzdWx0IlQKDFNvdXJjZVJlc3VsdBI0CgZidWNrZXQYASABKAsyJC5saXF1aWRtZXRhbC52MWFscGhhMS5CdWNrZXRSZXNwb25zZRIOCgZvYmplY3QYAiABKAkinAIKClRleHRSZXN1bHQSHAoPY2h1bmtfc2lnbmF0dXJlGAEgASgJSACIAQESEQoEdGV4dBgCIAEoCUgBiAEBEjIKBnNvdXJjZRgDIAEoCzIiLmxpcXVpZG1ldGFsLnYxYWxwaGExLlNvdXJjZVJlc3VsdBIeChFwYXlsb2FkX3NpZ25hdHVyZRgEIAEoCUgCiAEBEhIKBXNjb3JlGAUgASgBSAOIAQESEgoFZW1iZWQYBiABKAlIBIgBARIRCgR0eXBlGAcgASgJSAWIAQFCEgoQX2NodW5rX3NpZ25hdHVyZUIHCgVfdGV4dEIUChJfcGF5bG9hZF9zaWduYXR1cmVCCAoGX3Njb3JlQggKBl9lbWJlZEIHCgVfdHlwZSJnCg5QYWdpbmF0aW9uSW5mbxINCgV0b3RhbBgBIAEoBRIMCgRwYWdlGAIgASgFEhEKCXBhZ2Vfc2l6ZRgDIAEoBRITCgt0b3RhbF9wYWdlcxgEIAEoBRIQCghoYXNfbW9yZRgFIAEoCCKfAQoYQ3JlYXRlUGFnZVN1bW1hcnlSZXF1ZXN0EgwKBHBhZ2UYASABKAUSEQoJcGFnZV9zaXplGAIgASgFEhIKCnJlcXVlc3RfaWQYAyABKAkSDwoHdXNlcl9pZBgEIAEoCRIXCg9vcmdhbml6YXRpb25faWQYBSABKAkSFgoJcGFydGl0aW9uGAYgASgJSACIAQFCDAoKX3BhcnRpdGlvbiIsChlDcmVhdGVQYWdlU3VtbWFyeVJlc3BvbnNlEg8KB3N1bW1hcnkYASABKAkizQEKGVJ1blN1cGVydmlzb3JBZ2VudFJlcXVlc3QSDQoFaW5wdXQYASABKAkSEgoKcmVxdWVzdF9pZBgCIAEoCRI9ChBidWNrZXRfbG9jYXRpb25zGAMgAygLMiMubGlxdWlkbWV0YWwudjFhbHBoYTEuQnVja2V0TG9jYXRvchIPCgd1c2VyX2lkGAQgASgJEhcKD29yZ2FuaXphdGlvbl9pZBgFIAEoCRIWCglwYXJ0aXRpb24YBiABKAlIAIgBAUIMCgpfcGFydGl0aW9uIokBChpSdW5TdXBlcnZpc29yQWdlbnRSZXNwb25zZRIxCgdyZXN1bHRzGAEgAygLMiAubGlxdWlkbWV0YWwudjFhbHBoYTEuVGV4dFJlc3VsdBI4CgpwYWdpbmF0aW9uGAIgASgLMiQubGlxdWlkbWV0YWwudjFhbHBoYTEuUGFnaW5hdGlvbkluZm8iwgEKGkdldFBhZ2luYXRlZFJlc3VsdHNSZXF1ZXN0EhIKCnJlcXVlc3RfaWQYASABKAkSEQoEcGFnZRgCIAEoBUgAiAEBEhYKCXBhZ2Vfc2l6ZRgDIAEoBUgBiAEBEg8KB3VzZXJfaWQYBCABKAkSFwoPb3JnYW5pemF0aW9uX2lkGAUgASgJEhYKCXBhcnRpdGlvbhgGIAEoCUgCiAEBQgcKBV9wYWdlQgwKCl9wYWdlX3NpemVCDAoKX3BhcnRpdGlvbiKKAQobR2V0UGFnaW5hdGVkUmVzdWx0c1Jlc3BvbnNlEjEKB3Jlc3VsdHMYASADKAsyIC5saXF1aWRtZXRhbC52MWFscGhhMS5UZXh0UmVzdWx0EjgKCnBhZ2luYXRpb24YAiABKAsyJC5saXF1aWRtZXRhbC52MWFscGhhMS5QYWdpbmF0aW9uSW5mbyK7AQoYR2V0RG9jdW1lbnRTdGF0dXNSZXF1ZXN0EjwKD2J1Y2tldF9sb2NhdGlvbhgBIAEoCzIjLmxpcXVpZG1ldGFsLnYxYWxwaGExLkJ1Y2tldExvY2F0b3ISEQoJb2JqZWN0X2lkGAIgASgJEg8KB3VzZXJfaWQYAyABKAkSFwoPb3JnYW5pemF0aW9uX2lkGAQgASgJEhYKCXBhcnRpdGlvbhgFIAEoCUgAiAEBQgwKCl9wYXJ0aXRpb24iyAMKGUdldERvY3VtZW50U3RhdHVzUmVzcG9uc2USDgoGc3RhdHVzGAEgASgJEjoKBmluZ2VzdBgCIAEoCzIlLmxpcXVpZG1ldGFsLnYxYWxwaGExLkluZ2VzdFN0YWdlSW5mb0gAiAEBEkEKCWVtYmVkZGluZxgDIAEoCzIpLmxpcXVpZG1ldGFsLnYxYWxwaGExLlByb2Nlc3NpbmdTdGFnZUluZm9IAYgBARJECgx2ZWN0b3JfaW5kZXgYBCABKAsyKS5saXF1aWRtZXRhbC52MWFscGhhMS5Qcm9jZXNzaW5nU3RhZ2VJbmZvSAKIAQESOwoDcGlpGAUgASgLMikubGlxdWlkbWV0YWwudjFhbHBoYTEuUHJvY2Vzc2luZ1N0YWdlSW5mb0gDiAEBEkUKDXJlbGF0aW9uc2hpcHMYBiABKAsyKS5saXF1aWRtZXRhbC52MWFscGhhMS5Qcm9jZXNzaW5nU3RhZ2VJbmZvSASIAQESDgoGZXJyb3JzGAcgAygJQgkKB19pbmdlc3RCDAoKX2VtYmVkZGluZ0IPCg1fdmVjdG9yX2luZGV4QgYKBF9waWlCEAoOX3JlbGF0aW9uc2hpcHMiYQoPSW5nZXN0U3RhZ2VJbmZvEhwKFHRvdGFsX2NodW5rc19jcmVhdGVkGAEgASgFEhUKDWNodW5rc19xdWV1ZWQYAiABKAUSGQoRY3JlYXRpb25fY29tcGxldGUYAyABKAgiRgoTUHJvY2Vzc2luZ1N0YWdlSW5mbxIWCg50b3RhbF9leHBlY3RlZBgBIAEoBRIXCg9pdGVtc19yZW1haW5pbmcYAiABKAUiwAEKHEdldERvY3VtZW50U3RhdHVzQnVsa1JlcXVlc3QSPAoPYnVja2V0X2xvY2F0aW9uGAEgASgLMiMubGlxdWlkbWV0YWwudjFhbHBoYTEuQnVja2V0TG9jYXRvchISCgpvYmplY3RfaWRzGAIgAygJEg8KB3VzZXJfaWQYAyABKAkSFwoPb3JnYW5pemF0aW9uX2lkGAQgASgJEhYKCXBhcnRpdGlvbhgFIAEoCUgAiAEBQgwKCl9wYXJ0aXRpb24i0AMKDkRvY3VtZW50U3RhdHVzEhEKCW9iamVjdF9pZBgBIAEoCRIOCgZzdGF0dXMYAiABKAkSOgoGaW5nZXN0GAMgASgLMiUubGlxdWlkbWV0YWwudjFhbHBoYTEuSW5nZXN0U3RhZ2VJbmZvSACIAQESQQoJZW1iZWRkaW5nGAQgASgLMikubGlxdWlkbWV0YWwudjFhbHBoYTEuUHJvY2Vzc2luZ1N0YWdlSW5mb0gBiAEBEkQKDHZlY3Rvcl9pbmRleBgFIAEoCzIpLmxpcXVpZG1ldGFsLnYxYWxwaGExLlByb2Nlc3NpbmdTdGFnZUluZm9IAogBARI7CgNwaWkYBiABKAsyKS5saXF1aWRtZXRhbC52MWFscGhhMS5Qcm9jZXNzaW5nU3RhZ2VJbmZvSAOIAQESRQoNcmVsYXRpb25zaGlwcxgHIAEoCzIpLmxpcXVpZG1ldGFsLnYxYWxwaGExLlByb2Nlc3NpbmdTdGFnZUluZm9IBIgBARIOCgZlcnJvcnMYCCADKAlCCQoHX2luZ2VzdEIMCgpfZW1iZWRkaW5nQg8KDV92ZWN0b3JfaW5kZXhCBgoEX3BpaUIQCg5fcmVsYXRpb25zaGlwcyJYCh1HZXREb2N1bWVudFN0YXR1c0J1bGtSZXNwb25zZRI3Cglkb2N1bWVudHMYASADKAsyJC5saXF1aWRtZXRhbC52MWFscGhhMS5Eb2N1bWVudFN0YXR1cyL+AQoaTGlzdE9iamVjdHNCeVN0YXR1c1JlcXVlc3QSPAoPYnVja2V0X2xvY2F0aW9uGAEgASgLMiMubGlxdWlkbWV0YWwudjFhbHBoYTEuQnVja2V0TG9jYXRvchIQCghzdGF0dXNlcxgCIAMoCRIUCgdleGNsdWRlGAMgASgISACIAQESEwoGcHJlZml4GAQgASgJSAGIAQESFgoJcGFydGl0aW9uGAUgASgJSAKIAQESDwoHdXNlcl9pZBgGIAEoCRIXCg9vcmdhbml6YXRpb25faWQYByABKAlCCgoIX2V4Y2x1ZGVCCQoHX3ByZWZpeEIMCgpfcGFydGl0aW9uIlYKG0xpc3RPYmplY3RzQnlTdGF0dXNSZXNwb25zZRI3Cglkb2N1bWVudHMYASADKAsyJC5saXF1aWRtZXRhbC52MWFscGhhMS5Eb2N1bWVudFN0YXR1czK9CQoSU2VhcmNoQWdlbnRTZXJ2aWNlEoQBCgxEb2N1bWVudENoYXQSKS5saXF1aWRtZXRhbC52MWFscGhhMS5Eb2N1bWVudENoYXRSZXF1ZXN0GioubGlxdWlkbWV0YWwudjFhbHBoYTEuRG9jdW1lbnRDaGF0UmVzcG9uc2UiHYLT5JMCFzoBKiISL3YxL2RvY3VtZW50X3F1ZXJ5EnkKCVJhZ1NlYXJjaBImLmxpcXVpZG1ldGFsLnYxYWxwaGExLlJhZ1NlYXJjaFJlcXVlc3QaJy5saXF1aWRtZXRhbC52MWFscGhhMS5SYWdTZWFyY2hSZXNwb25zZSIbgtPkkwIVOgEqIhAvdjEvY2h1bmtfc2VhcmNoEpMBChFDcmVhdGVQYWdlU3VtbWFyeRIuLmxpcXVpZG1ldGFsLnYxYWxwaGExLkNyZWF0ZVBhZ2VTdW1tYXJ5UmVxdWVzdBovLmxpcXVpZG1ldGFsLnYxYWxwaGExLkNyZWF0ZVBhZ2VTdW1tYXJ5UmVzcG9uc2UiHYLT5JMCFzoBKiISL3YxL3N1bW1hcml6ZV9wYWdlEo4BChJSdW5TdXBlcnZpc29yQWdlbnQSLy5saXF1aWRtZXRhbC52MWFscGhhMS5SdW5TdXBlcnZpc29yQWdlbnRSZXF1ZXN0GjAubGlxdWlkbWV0YWwudjFhbHBoYTEuUnVuU3VwZXJ2aXNvckFnZW50UmVzcG9uc2UiFYLT5JMCDzoBKiIKL3YxL3NlYXJjaBKaAQoTR2V0UGFnaW5hdGVkUmVzdWx0cxIwLmxpcXVpZG1ldGFsLnYxYWxwaGExLkdldFBhZ2luYXRlZFJlc3VsdHNSZXF1ZXN0GjEubGlxdWlkbWV0YWwudjFhbHBoYTEuR2V0UGFnaW5hdGVkUmVzdWx0c1Jlc3BvbnNlIh6C0+STAhg6ASoiEy92MS9zZWFyY2hfZ2V0X3BhZ2USlAEKEUdldERvY3VtZW50U3RhdHVzEi4ubGlxdWlkbWV0YWwudjFhbHBoYTEuR2V0RG9jdW1lbnRTdGF0dXNSZXF1ZXN0Gi8ubGlxdWlkbWV0YWwudjFhbHBoYTEuR2V0RG9jdW1lbnRTdGF0dXNSZXNwb25zZSIegtPkkwIYOgEqIhMvdjEvZG9jdW1lbnRfc3RhdHVzEqUBChVHZXREb2N1bWVudFN0YXR1c0J1bGsSMi5saXF1aWRtZXRhbC52MWFscGhhMS5HZXREb2N1bWVudFN0YXR1c0J1bGtSZXF1ZXN0GjMubGlxdWlkbWV0YWwudjFhbHBoYTEuR2V0RG9jdW1lbnRTdGF0dXNCdWxrUmVzcG9uc2UiI4LT5JMCHToBKiIYL3YxL2RvY3VtZW50X3N0YXR1c19idWxrEqEBChNMaXN0T2JqZWN0c0J5U3RhdHVzEjAubGlxdWlkbWV0YWwudjFhbHBoYTEuTGlzdE9iamVjdHNCeVN0YXR1c1JlcXVlc3QaMS5saXF1aWRtZXRhbC52MWFscGhhMS5MaXN0T2JqZWN0c0J5U3RhdHVzUmVzcG9uc2UiJYLT5JMCHzoBKiIaL3YxL2xpc3Rfb2JqZWN0c19ieV9zdGF0dXNC6wEKGGNvbS5saXF1aWRtZXRhbC52MWFscGhhMUIQU2VhcmNoQWdlbnRQcm90b1ABWkxnaXRodWIuY29tL2xpcXVpZG1ldGFsLWFpL3Byb3RvZ2VuMi9saXF1aWRtZXRhbC92MWFscGhhMTtsaXF1aWRtZXRhbHYxYWxwaGExogIDTFhYqgIUTGlxdWlkbWV0YWwuVjFhbHBoYTHKAhRMaXF1aWRtZXRhbFxWMWFscGhhMeICIExpcXVpZG1ldGFsXFYxYWxwaGExXEdQQk1ldGFkYXRh6gIVTGlxdWlkbWV0YWw6OlYxYWxwaGExYgZwcm90bzM", [file_liquidmetal_v1alpha1_bucket_name]);
16
16
 
17
17
  /**
18
18
  * @generated from message liquidmetal.v1alpha1.DocumentChatRequest
@@ -581,6 +581,402 @@ export type GetPaginatedResultsResponse = Message<"liquidmetal.v1alpha1.GetPagin
581
581
  export const GetPaginatedResultsResponseSchema: GenMessage<GetPaginatedResultsResponse> = /*@__PURE__*/
582
582
  messageDesc(file_liquidmetal_v1alpha1_search_agent, 12);
583
583
 
584
+ /**
585
+ * @generated from message liquidmetal.v1alpha1.GetDocumentStatusRequest
586
+ */
587
+ export type GetDocumentStatusRequest = Message<"liquidmetal.v1alpha1.GetDocumentStatusRequest"> & {
588
+ /**
589
+ * __DESCRIPTION__ The storage bucket containing the target document
590
+ * __EXAMPLE__ {"bucket": {"name": "my-smartbucket", "version": "01jxanr45haeswhay4n0q8340y", "application_name": "my-app"}}
591
+ * __REQUIRED__ TRUE
592
+ *
593
+ * @generated from field: liquidmetal.v1alpha1.BucketLocator bucket_location = 1;
594
+ */
595
+ bucketLocation?: BucketLocator;
596
+
597
+ /**
598
+ * __DESCRIPTION__ Document identifier within the bucket (object key)
599
+ * __EXAMPLE__ "document.pdf"
600
+ * __REQUIRED__ TRUE
601
+ *
602
+ * @generated from field: string object_id = 2;
603
+ */
604
+ objectId: string;
605
+
606
+ /**
607
+ * @generated from field: string user_id = 3;
608
+ */
609
+ userId: string;
610
+
611
+ /**
612
+ * @generated from field: string organization_id = 4;
613
+ */
614
+ organizationId: string;
615
+
616
+ /**
617
+ * __DESCRIPTION__ Optional partition identifier for multi-tenant data isolation. Defaults to 'default' if not specified
618
+ * __EXAMPLE__ "tenant-123"
619
+ * __REQUIRED__ FALSE
620
+ *
621
+ * @generated from field: optional string partition = 5;
622
+ */
623
+ partition?: string;
624
+ };
625
+
626
+ /**
627
+ * Describes the message liquidmetal.v1alpha1.GetDocumentStatusRequest.
628
+ * Use `create(GetDocumentStatusRequestSchema)` to create a new message.
629
+ */
630
+ export const GetDocumentStatusRequestSchema: GenMessage<GetDocumentStatusRequest> = /*@__PURE__*/
631
+ messageDesc(file_liquidmetal_v1alpha1_search_agent, 13);
632
+
633
+ /**
634
+ * @generated from message liquidmetal.v1alpha1.GetDocumentStatusResponse
635
+ */
636
+ export type GetDocumentStatusResponse = Message<"liquidmetal.v1alpha1.GetDocumentStatusResponse"> & {
637
+ /**
638
+ * __DESCRIPTION__ Overall document status
639
+ * __EXAMPLE__ "processing"
640
+ *
641
+ * @generated from field: string status = 1;
642
+ */
643
+ status: string;
644
+
645
+ /**
646
+ * __DESCRIPTION__ Ingest stage information
647
+ *
648
+ * @generated from field: optional liquidmetal.v1alpha1.IngestStageInfo ingest = 2;
649
+ */
650
+ ingest?: IngestStageInfo;
651
+
652
+ /**
653
+ * __DESCRIPTION__ Embedding stage information
654
+ *
655
+ * @generated from field: optional liquidmetal.v1alpha1.ProcessingStageInfo embedding = 3;
656
+ */
657
+ embedding?: ProcessingStageInfo;
658
+
659
+ /**
660
+ * __DESCRIPTION__ Vector index stage information
661
+ *
662
+ * @generated from field: optional liquidmetal.v1alpha1.ProcessingStageInfo vector_index = 4;
663
+ */
664
+ vectorIndex?: ProcessingStageInfo;
665
+
666
+ /**
667
+ * __DESCRIPTION__ PII detection stage information
668
+ *
669
+ * @generated from field: optional liquidmetal.v1alpha1.ProcessingStageInfo pii = 5;
670
+ */
671
+ pii?: ProcessingStageInfo;
672
+
673
+ /**
674
+ * __DESCRIPTION__ Relationships stage information
675
+ *
676
+ * @generated from field: optional liquidmetal.v1alpha1.ProcessingStageInfo relationships = 6;
677
+ */
678
+ relationships?: ProcessingStageInfo;
679
+
680
+ /**
681
+ * __DESCRIPTION__ Any errors encountered during indexing
682
+ *
683
+ * @generated from field: repeated string errors = 7;
684
+ */
685
+ errors: string[];
686
+ };
687
+
688
+ /**
689
+ * Describes the message liquidmetal.v1alpha1.GetDocumentStatusResponse.
690
+ * Use `create(GetDocumentStatusResponseSchema)` to create a new message.
691
+ */
692
+ export const GetDocumentStatusResponseSchema: GenMessage<GetDocumentStatusResponse> = /*@__PURE__*/
693
+ messageDesc(file_liquidmetal_v1alpha1_search_agent, 14);
694
+
695
+ /**
696
+ * @generated from message liquidmetal.v1alpha1.IngestStageInfo
697
+ */
698
+ export type IngestStageInfo = Message<"liquidmetal.v1alpha1.IngestStageInfo"> & {
699
+ /**
700
+ * __DESCRIPTION__ Total number of chunks created
701
+ *
702
+ * @generated from field: int32 total_chunks_created = 1;
703
+ */
704
+ totalChunksCreated: number;
705
+
706
+ /**
707
+ * __DESCRIPTION__ Number of chunks queued for processing
708
+ *
709
+ * @generated from field: int32 chunks_queued = 2;
710
+ */
711
+ chunksQueued: number;
712
+
713
+ /**
714
+ * __DESCRIPTION__ Whether chunk creation is complete
715
+ *
716
+ * @generated from field: bool creation_complete = 3;
717
+ */
718
+ creationComplete: boolean;
719
+ };
720
+
721
+ /**
722
+ * Describes the message liquidmetal.v1alpha1.IngestStageInfo.
723
+ * Use `create(IngestStageInfoSchema)` to create a new message.
724
+ */
725
+ export const IngestStageInfoSchema: GenMessage<IngestStageInfo> = /*@__PURE__*/
726
+ messageDesc(file_liquidmetal_v1alpha1_search_agent, 15);
727
+
728
+ /**
729
+ * @generated from message liquidmetal.v1alpha1.ProcessingStageInfo
730
+ */
731
+ export type ProcessingStageInfo = Message<"liquidmetal.v1alpha1.ProcessingStageInfo"> & {
732
+ /**
733
+ * __DESCRIPTION__ Total number of items expected to be processed
734
+ *
735
+ * @generated from field: int32 total_expected = 1;
736
+ */
737
+ totalExpected: number;
738
+
739
+ /**
740
+ * __DESCRIPTION__ Number of items remaining to be processed
741
+ *
742
+ * @generated from field: int32 items_remaining = 2;
743
+ */
744
+ itemsRemaining: number;
745
+ };
746
+
747
+ /**
748
+ * Describes the message liquidmetal.v1alpha1.ProcessingStageInfo.
749
+ * Use `create(ProcessingStageInfoSchema)` to create a new message.
750
+ */
751
+ export const ProcessingStageInfoSchema: GenMessage<ProcessingStageInfo> = /*@__PURE__*/
752
+ messageDesc(file_liquidmetal_v1alpha1_search_agent, 16);
753
+
754
+ /**
755
+ * @generated from message liquidmetal.v1alpha1.GetDocumentStatusBulkRequest
756
+ */
757
+ export type GetDocumentStatusBulkRequest = Message<"liquidmetal.v1alpha1.GetDocumentStatusBulkRequest"> & {
758
+ /**
759
+ * __DESCRIPTION__ The storage bucket containing the target documents
760
+ * __EXAMPLE__ {"bucket": {"name": "my-smartbucket", "version": "01jxanr45haeswhay4n0q8340y", "application_name": "my-app"}}
761
+ * __REQUIRED__ TRUE
762
+ *
763
+ * @generated from field: liquidmetal.v1alpha1.BucketLocator bucket_location = 1;
764
+ */
765
+ bucketLocation?: BucketLocator;
766
+
767
+ /**
768
+ * __DESCRIPTION__ List of document identifiers (object keys) to get status for
769
+ * __EXAMPLE__ ["document1.pdf", "document2.pdf", "document3.pdf"]
770
+ * __REQUIRED__ TRUE
771
+ *
772
+ * @generated from field: repeated string object_ids = 2;
773
+ */
774
+ objectIds: string[];
775
+
776
+ /**
777
+ * @generated from field: string user_id = 3;
778
+ */
779
+ userId: string;
780
+
781
+ /**
782
+ * @generated from field: string organization_id = 4;
783
+ */
784
+ organizationId: string;
785
+
786
+ /**
787
+ * __DESCRIPTION__ Optional partition identifier for multi-tenant data isolation. Defaults to 'default' if not specified
788
+ * __EXAMPLE__ "tenant-123"
789
+ * __REQUIRED__ FALSE
790
+ *
791
+ * @generated from field: optional string partition = 5;
792
+ */
793
+ partition?: string;
794
+ };
795
+
796
+ /**
797
+ * Describes the message liquidmetal.v1alpha1.GetDocumentStatusBulkRequest.
798
+ * Use `create(GetDocumentStatusBulkRequestSchema)` to create a new message.
799
+ */
800
+ export const GetDocumentStatusBulkRequestSchema: GenMessage<GetDocumentStatusBulkRequest> = /*@__PURE__*/
801
+ messageDesc(file_liquidmetal_v1alpha1_search_agent, 17);
802
+
803
+ /**
804
+ * @generated from message liquidmetal.v1alpha1.DocumentStatus
805
+ */
806
+ export type DocumentStatus = Message<"liquidmetal.v1alpha1.DocumentStatus"> & {
807
+ /**
808
+ * __DESCRIPTION__ Document identifier (object key)
809
+ * __EXAMPLE__ "document.pdf"
810
+ *
811
+ * @generated from field: string object_id = 1;
812
+ */
813
+ objectId: string;
814
+
815
+ /**
816
+ * __DESCRIPTION__ Overall document status
817
+ * __EXAMPLE__ "processing"
818
+ *
819
+ * @generated from field: string status = 2;
820
+ */
821
+ status: string;
822
+
823
+ /**
824
+ * __DESCRIPTION__ Ingest stage information
825
+ *
826
+ * @generated from field: optional liquidmetal.v1alpha1.IngestStageInfo ingest = 3;
827
+ */
828
+ ingest?: IngestStageInfo;
829
+
830
+ /**
831
+ * __DESCRIPTION__ Embedding stage information
832
+ *
833
+ * @generated from field: optional liquidmetal.v1alpha1.ProcessingStageInfo embedding = 4;
834
+ */
835
+ embedding?: ProcessingStageInfo;
836
+
837
+ /**
838
+ * __DESCRIPTION__ Vector index stage information
839
+ *
840
+ * @generated from field: optional liquidmetal.v1alpha1.ProcessingStageInfo vector_index = 5;
841
+ */
842
+ vectorIndex?: ProcessingStageInfo;
843
+
844
+ /**
845
+ * __DESCRIPTION__ PII detection stage information
846
+ *
847
+ * @generated from field: optional liquidmetal.v1alpha1.ProcessingStageInfo pii = 6;
848
+ */
849
+ pii?: ProcessingStageInfo;
850
+
851
+ /**
852
+ * __DESCRIPTION__ Relationships stage information
853
+ *
854
+ * @generated from field: optional liquidmetal.v1alpha1.ProcessingStageInfo relationships = 7;
855
+ */
856
+ relationships?: ProcessingStageInfo;
857
+
858
+ /**
859
+ * __DESCRIPTION__ Any errors encountered during indexing
860
+ *
861
+ * @generated from field: repeated string errors = 8;
862
+ */
863
+ errors: string[];
864
+ };
865
+
866
+ /**
867
+ * Describes the message liquidmetal.v1alpha1.DocumentStatus.
868
+ * Use `create(DocumentStatusSchema)` to create a new message.
869
+ */
870
+ export const DocumentStatusSchema: GenMessage<DocumentStatus> = /*@__PURE__*/
871
+ messageDesc(file_liquidmetal_v1alpha1_search_agent, 18);
872
+
873
+ /**
874
+ * @generated from message liquidmetal.v1alpha1.GetDocumentStatusBulkResponse
875
+ */
876
+ export type GetDocumentStatusBulkResponse = Message<"liquidmetal.v1alpha1.GetDocumentStatusBulkResponse"> & {
877
+ /**
878
+ * __DESCRIPTION__ Status information for each requested document, keyed by object_id
879
+ * __EXAMPLE__ [{"object_id": "doc1.pdf", "status": "completed"}, {"object_id": "doc2.pdf", "status": "processing"}]
880
+ *
881
+ * @generated from field: repeated liquidmetal.v1alpha1.DocumentStatus documents = 1;
882
+ */
883
+ documents: DocumentStatus[];
884
+ };
885
+
886
+ /**
887
+ * Describes the message liquidmetal.v1alpha1.GetDocumentStatusBulkResponse.
888
+ * Use `create(GetDocumentStatusBulkResponseSchema)` to create a new message.
889
+ */
890
+ export const GetDocumentStatusBulkResponseSchema: GenMessage<GetDocumentStatusBulkResponse> = /*@__PURE__*/
891
+ messageDesc(file_liquidmetal_v1alpha1_search_agent, 19);
892
+
893
+ /**
894
+ * @generated from message liquidmetal.v1alpha1.ListObjectsByStatusRequest
895
+ */
896
+ export type ListObjectsByStatusRequest = Message<"liquidmetal.v1alpha1.ListObjectsByStatusRequest"> & {
897
+ /**
898
+ * __DESCRIPTION__ The storage bucket to query
899
+ * __EXAMPLE__ {"bucket": {"name": "my-smartbucket", "version": "01jxanr45haeswhay4n0q8340y", "application_name": "my-app"}}
900
+ * __REQUIRED__ TRUE
901
+ *
902
+ * @generated from field: liquidmetal.v1alpha1.BucketLocator bucket_location = 1;
903
+ */
904
+ bucketLocation?: BucketLocator;
905
+
906
+ /**
907
+ * __DESCRIPTION__ Status values to filter by (e.g., "completed", "failed", "processing", "ingesting", "partial", "uploading", "not_found")
908
+ * __EXAMPLE__ ["failed", "processing"]
909
+ * __REQUIRED__ TRUE
910
+ *
911
+ * @generated from field: repeated string statuses = 2;
912
+ */
913
+ statuses: string[];
914
+
915
+ /**
916
+ * __DESCRIPTION__ If true, returns objects NOT matching the specified statuses (inverts the filter)
917
+ * __EXAMPLE__ true
918
+ * __REQUIRED__ FALSE
919
+ *
920
+ * @generated from field: optional bool exclude = 3;
921
+ */
922
+ exclude?: boolean;
923
+
924
+ /**
925
+ * __DESCRIPTION__ Optional prefix to filter object keys (e.g., "documents/" to only search in documents folder)
926
+ * __EXAMPLE__ "documents/"
927
+ * __REQUIRED__ FALSE
928
+ *
929
+ * @generated from field: optional string prefix = 4;
930
+ */
931
+ prefix?: string;
932
+
933
+ /**
934
+ * __DESCRIPTION__ Partition to query (defaults to "default")
935
+ * __EXAMPLE__ "default"
936
+ * __REQUIRED__ FALSE
937
+ *
938
+ * @generated from field: optional string partition = 5;
939
+ */
940
+ partition?: string;
941
+
942
+ /**
943
+ * @generated from field: string user_id = 6;
944
+ */
945
+ userId: string;
946
+
947
+ /**
948
+ * @generated from field: string organization_id = 7;
949
+ */
950
+ organizationId: string;
951
+ };
952
+
953
+ /**
954
+ * Describes the message liquidmetal.v1alpha1.ListObjectsByStatusRequest.
955
+ * Use `create(ListObjectsByStatusRequestSchema)` to create a new message.
956
+ */
957
+ export const ListObjectsByStatusRequestSchema: GenMessage<ListObjectsByStatusRequest> = /*@__PURE__*/
958
+ messageDesc(file_liquidmetal_v1alpha1_search_agent, 20);
959
+
960
+ /**
961
+ * @generated from message liquidmetal.v1alpha1.ListObjectsByStatusResponse
962
+ */
963
+ export type ListObjectsByStatusResponse = Message<"liquidmetal.v1alpha1.ListObjectsByStatusResponse"> & {
964
+ /**
965
+ * __DESCRIPTION__ Documents matching the status filter with their full status information
966
+ * __EXAMPLE__ [{"object_id": "doc1.pdf", "status": "failed", "errors": ["Embedding service timeout"]}, {"object_id": "doc2.pdf", "status": "processing"}]
967
+ *
968
+ * @generated from field: repeated liquidmetal.v1alpha1.DocumentStatus documents = 1;
969
+ */
970
+ documents: DocumentStatus[];
971
+ };
972
+
973
+ /**
974
+ * Describes the message liquidmetal.v1alpha1.ListObjectsByStatusResponse.
975
+ * Use `create(ListObjectsByStatusResponseSchema)` to create a new message.
976
+ */
977
+ export const ListObjectsByStatusResponseSchema: GenMessage<ListObjectsByStatusResponse> = /*@__PURE__*/
978
+ messageDesc(file_liquidmetal_v1alpha1_search_agent, 21);
979
+
584
980
  /**
585
981
  * __TITLE__ SmartBucket
586
982
  * The query endpoints provide advanced AI-driven search, conversation, and summarization capabilities for documents and media stored in SmartBuckets.
@@ -692,6 +1088,41 @@ export const SearchAgentService: GenService<{
692
1088
  input: typeof GetPaginatedResultsRequestSchema;
693
1089
  output: typeof GetPaginatedResultsResponseSchema;
694
1090
  },
1091
+ /**
1092
+ * Get the indexing status of a document by its object key. This endpoint returns the current
1093
+ * indexing status of a document including progress through various processing stages.
1094
+ *
1095
+ * @generated from rpc liquidmetal.v1alpha1.SearchAgentService.GetDocumentStatus
1096
+ */
1097
+ getDocumentStatus: {
1098
+ methodKind: "unary";
1099
+ input: typeof GetDocumentStatusRequestSchema;
1100
+ output: typeof GetDocumentStatusResponseSchema;
1101
+ },
1102
+ /**
1103
+ * Get the indexing status for multiple documents in a single request. This is significantly more
1104
+ * efficient than making individual GetDocumentStatus calls, as it searches shards once and returns
1105
+ * status for all requested documents.
1106
+ *
1107
+ * @generated from rpc liquidmetal.v1alpha1.SearchAgentService.GetDocumentStatusBulk
1108
+ */
1109
+ getDocumentStatusBulk: {
1110
+ methodKind: "unary";
1111
+ input: typeof GetDocumentStatusBulkRequestSchema;
1112
+ output: typeof GetDocumentStatusBulkResponseSchema;
1113
+ },
1114
+ /**
1115
+ * List objects filtered by indexing status. Efficiently queries document storage across all shards
1116
+ * to find objects matching (or excluding) specified statuses. Useful for identifying objects that
1117
+ * need attention (e.g., failed, processing) or tracking indexing progress.
1118
+ *
1119
+ * @generated from rpc liquidmetal.v1alpha1.SearchAgentService.ListObjectsByStatus
1120
+ */
1121
+ listObjectsByStatus: {
1122
+ methodKind: "unary";
1123
+ input: typeof ListObjectsByStatusRequestSchema;
1124
+ output: typeof ListObjectsByStatusResponseSchema;
1125
+ },
695
1126
  }> = /*@__PURE__*/
696
1127
  serviceDesc(file_liquidmetal_v1alpha1_search_agent, 0);
697
1128