apps 0.0.1-beta.9 → 0.0.1-beta.91

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 (191) hide show
  1. package/README.md +56 -38
  2. package/framework-reference.json +1 -1
  3. package/js/chunk-3LEVTFD4.js +712 -0
  4. package/js/chunk-5FHWNLCI.js +88 -0
  5. package/js/{chunk-FL2QR3XW.js → chunk-5MDA7MKL.js} +338 -73
  6. package/js/chunk-6XQLA5NC.js +5047 -0
  7. package/js/{chunk-M3B3DE4K.js → chunk-74YVXBKY.js} +463 -218
  8. package/js/chunk-7PHHWYV4.js +335 -0
  9. package/js/chunk-DADXWWRZ.js +449 -0
  10. package/js/{chunk-27F7W2LG.js → chunk-DDHBUKXX.js} +18 -2
  11. package/js/{chunk-UK573G7W.js → chunk-EOPQ727L.js} +87 -51
  12. package/js/{chunk-5T57N25Q.js → chunk-GQ33QSNB.js} +583 -69
  13. package/js/{chunk-JU7VHODU.js → chunk-H72MEDMN.js} +65 -10
  14. package/js/chunk-I5C7FD5Z.js +171 -0
  15. package/js/{chunk-CDL5PM2Q.js → chunk-IFJU5SYQ.js} +19082 -18402
  16. package/js/{chunk-VFZKSM3T.js → chunk-JPEUKEV4.js} +3 -3
  17. package/js/{chunk-KUMBKVJD.js → chunk-KLYSEHUD.js} +2 -2
  18. package/js/{chunk-RFVIONFX.js → chunk-KUCCHNVY.js} +123 -44
  19. package/js/chunk-OD3KFKZD.js +1617 -0
  20. package/js/{chunk-57RKNWL2.js → chunk-PD6I2SDG.js} +4 -4
  21. package/js/{chunk-72JNVHPK.js → chunk-PYQLOLOC.js} +4 -3
  22. package/js/{chunk-ODEIDRGW.js → chunk-QWQM3CLH.js} +795 -176
  23. package/js/{chunk-IJX4CYZO.js → chunk-TUMGL2OC.js} +228 -264
  24. package/js/{chunk-IPI4MFSN.js → chunk-XBG7HHXC.js} +2 -2
  25. package/js/chunk-XPRZTLHD.js +1915 -0
  26. package/js/chunk-YNJ5CZMJ.js +93 -0
  27. package/js/chunk-YRGL4QEF.js +49 -0
  28. package/js/{chunk-Z5M2LQOZ.js → chunk-YWFUWTUJ.js} +113 -58
  29. package/js/client.js +142 -78
  30. package/js/contracts.js +142 -21
  31. package/js/effect.js +18 -19
  32. package/js/{es-APDZKREY.js → es-DIULA3ZF.js} +62 -1659
  33. package/js/graphql.js +49 -40
  34. package/js/host.js +85 -62
  35. package/js/index.js +165 -70
  36. package/js/mcp/effect.js +21 -21
  37. package/js/mcp.js +76 -56
  38. package/js/openapi.js +4189 -1411
  39. package/js/react.js +2 -3
  40. package/js/skills/effect.js +6 -3
  41. package/js/skills.js +208 -81
  42. package/js/storage/facet.js +1 -540
  43. package/js/ui/auth/contracts.js +2 -2
  44. package/js/ui/auth.js +5 -5
  45. package/js/ui/contracts.js +5 -4
  46. package/js/ui/serving.js +8605 -225
  47. package/package.json +3 -8
  48. package/runtime.json +1 -1
  49. package/types/app-cache/src/contracts/cache.d.ts +18 -0
  50. package/types/app-cache/src/index.d.ts +34 -2
  51. package/types/apps/src/contracts/api-response-error.d.ts +4 -0
  52. package/types/apps/src/contracts/app.d.ts +60 -11
  53. package/types/apps/src/contracts/cache.d.ts +20 -0
  54. package/types/apps/src/contracts/context.d.ts +60 -17
  55. package/types/apps/src/contracts/elicitation.d.ts +23 -7
  56. package/types/apps/src/contracts/events.d.ts +94 -0
  57. package/types/apps/src/contracts/failure.d.ts +30 -1
  58. package/types/apps/src/contracts/graphql.d.ts +2 -1
  59. package/types/apps/src/contracts/host.d.ts +1446 -17
  60. package/types/apps/src/contracts/icons.d.ts +28 -0
  61. package/types/apps/src/contracts/live.d.ts +2 -0
  62. package/types/apps/src/contracts/mcp.d.ts +81 -20
  63. package/types/apps/src/contracts/network.d.ts +120 -0
  64. package/types/apps/src/contracts/openapi-compile.d.ts +82 -3
  65. package/types/apps/src/contracts/openapi.d.ts +41 -9
  66. package/types/apps/src/contracts/operations.d.ts +14 -7
  67. package/types/apps/src/contracts/placement.d.ts +102 -0
  68. package/types/apps/src/contracts/protocol-version.d.ts +2 -2
  69. package/types/apps/src/contracts/protocols/1.d.ts +733 -81
  70. package/types/apps/src/contracts/protocols/10.d.ts +1450 -0
  71. package/types/apps/src/contracts/protocols/11.d.ts +1149 -0
  72. package/types/apps/src/contracts/protocols/12.d.ts +3310 -0
  73. package/types/apps/src/contracts/protocols/2.d.ts +69 -26
  74. package/types/apps/src/contracts/protocols/3.d.ts +133 -33
  75. package/types/apps/src/contracts/protocols/4.d.ts +122 -45
  76. package/types/apps/src/contracts/protocols/5.d.ts +157 -47
  77. package/types/apps/src/contracts/protocols/6.d.ts +1629 -0
  78. package/types/apps/src/contracts/protocols/7.d.ts +1785 -0
  79. package/types/apps/src/contracts/protocols/8.d.ts +1182 -0
  80. package/types/apps/src/contracts/protocols/9.d.ts +1104 -0
  81. package/types/apps/src/contracts/protocols/current.d.ts +6669 -0
  82. package/types/apps/src/contracts/protocols/oauth-6.d.ts +74 -0
  83. package/types/apps/src/contracts/protocols/oauth.d.ts +134 -0
  84. package/types/apps/src/contracts/provider-error.d.ts +9 -0
  85. package/types/apps/src/contracts/provider.d.ts +90 -6
  86. package/types/apps/src/contracts/schedules.d.ts +7 -1
  87. package/types/apps/src/contracts/schema.d.ts +21 -0
  88. package/types/apps/src/contracts/skills.d.ts +50 -13
  89. package/types/apps/src/contracts/sql.d.ts +63 -0
  90. package/types/apps/src/contracts/ui.d.ts +44 -14
  91. package/types/apps/src/contracts/webhooks.d.ts +24 -7
  92. package/types/apps/src/contracts/workflows.d.ts +19 -17
  93. package/types/apps/src/facet.d.ts +4 -5
  94. package/types/apps/src/host.d.ts +5 -0
  95. package/types/apps/src/implementation/account-router.d.ts +4 -3
  96. package/types/apps/src/implementation/app.d.ts +41 -14
  97. package/types/apps/src/implementation/authoring.d.ts +25 -5
  98. package/types/apps/src/implementation/browser-scripts.gen.d.ts +6 -0
  99. package/types/apps/src/implementation/cache.d.ts +29 -2
  100. package/types/apps/src/implementation/catalog-cache.d.ts +35 -4
  101. package/types/apps/src/implementation/elicitation.d.ts +18 -15
  102. package/types/apps/src/implementation/events.d.ts +64 -0
  103. package/types/apps/src/implementation/failure-detail.d.ts +28 -5
  104. package/types/apps/src/implementation/graphql-catalog.d.ts +3 -3
  105. package/types/apps/src/implementation/graphql.d.ts +4 -3
  106. package/types/apps/src/implementation/input-problems.d.ts +6 -2
  107. package/types/apps/src/implementation/invocation-timing.d.ts +18 -0
  108. package/types/apps/src/implementation/live.d.ts +2 -2
  109. package/types/apps/src/implementation/mcp-call.d.ts +6 -5
  110. package/types/apps/src/implementation/mcp-catalog.d.ts +6 -4
  111. package/types/apps/src/implementation/mcp-client.d.ts +17 -9
  112. package/types/apps/src/implementation/mcp-tools.d.ts +2 -1
  113. package/types/apps/src/implementation/mcp.d.ts +20 -9
  114. package/types/apps/src/implementation/network.d.ts +16 -0
  115. package/types/apps/src/implementation/openapi-compile.d.ts +28 -7
  116. package/types/apps/src/implementation/openapi-document.d.ts +46 -19
  117. package/types/apps/src/implementation/openapi-names.d.ts +9 -4
  118. package/types/apps/src/implementation/openapi-request.d.ts +10 -2
  119. package/types/apps/src/implementation/openapi-source.d.ts +23 -1
  120. package/types/apps/src/implementation/openapi-upgrade.d.ts +4 -0
  121. package/types/apps/src/implementation/operations.d.ts +57 -7
  122. package/types/apps/src/implementation/optimistic.d.ts +1 -1
  123. package/types/apps/src/implementation/placement.d.ts +60 -0
  124. package/types/apps/src/implementation/protocol-operations.d.ts +3 -0
  125. package/types/apps/src/implementation/provider-error.d.ts +28 -1
  126. package/types/apps/src/implementation/provider.d.ts +19 -4
  127. package/types/apps/src/implementation/query-commit.d.ts +1 -1
  128. package/types/apps/src/implementation/router-catalog.d.ts +20 -18
  129. package/types/apps/src/implementation/router.d.ts +24 -5
  130. package/types/apps/src/implementation/runtime-yield.d.ts +7 -0
  131. package/types/apps/src/implementation/schedules.d.ts +39 -8
  132. package/types/apps/src/implementation/schema.d.ts +98 -11
  133. package/types/apps/src/implementation/skills.d.ts +18 -24
  134. package/types/apps/src/implementation/sql.d.ts +71 -0
  135. package/types/apps/src/implementation/ui-account-notice.d.ts +9 -0
  136. package/types/apps/src/implementation/ui-auth.d.ts +1 -1
  137. package/types/apps/src/implementation/ui-client.d.ts +2 -2
  138. package/types/apps/src/implementation/ui-document.d.ts +5 -0
  139. package/types/apps/src/implementation/ui-errors.d.ts +1 -1
  140. package/types/apps/src/implementation/ui-serving.d.ts +26 -9
  141. package/types/apps/src/implementation/ui-watch.d.ts +1 -1
  142. package/types/apps/src/implementation/upstream-error.d.ts +7 -0
  143. package/types/apps/src/implementation/webhooks.d.ts +15 -6
  144. package/types/apps/src/implementation/workflow-context.d.ts +6 -2
  145. package/types/apps/src/implementation/workflows.d.ts +11 -4
  146. package/types/apps/src/index.d.ts +68 -19
  147. package/types/apps/src/mcp.d.ts +20 -1
  148. package/types/apps/src/openapi.d.ts +6 -1
  149. package/types/apps/src/react.d.ts +1 -1
  150. package/types/apps/src/skills.d.ts +10 -8
  151. package/types/apps/src/ui-serving.d.ts +1 -1
  152. package/types/telemetry/src/app-records.d.ts +42 -0
  153. package/types/telemetry/src/browser-operations.d.ts +2 -2
  154. package/types/telemetry/src/browser.d.ts +8 -3
  155. package/types/telemetry/src/config.d.ts +2 -2
  156. package/types/telemetry/src/index.d.ts +2 -1
  157. package/types/telemetry/src/layer.d.ts +10 -4
  158. package/types/telemetry/src/measurements.d.ts +1 -1
  159. package/types/telemetry/src/ownership.d.ts +60 -0
  160. package/types/telemetry/src/recorded-failure.d.ts +29 -0
  161. package/types/telemetry/src/relay.d.ts +16 -6
  162. package/types/telemetry/src/span-attributes.d.ts +17 -1
  163. package/types/telemetry/src/transport.d.ts +8 -1
  164. package/types/utils/src/api-error.d.ts +55 -0
  165. package/types/utils/src/connection-failure.d.ts +33 -0
  166. package/types/utils/src/recorded-message.d.ts +18 -0
  167. package/types/utils/src/user-facing-error.d.ts +83 -0
  168. package/js/chunk-7EK2JDX4.js +0 -299
  169. package/js/chunk-IKS2C5MQ.js +0 -224
  170. package/js/chunk-MKWZPDR6.js +0 -63
  171. package/js/chunk-N7YDVXYJ.js +0 -186
  172. package/js/chunk-NKLWZJLE.js +0 -172
  173. package/js/chunk-PJJ24GU7.js +0 -877
  174. package/js/chunk-PZB6T6KU.js +0 -19
  175. package/js/chunk-R3EV5FTO.js +0 -97
  176. package/js/chunk-SJFZCGXG.js +0 -1243
  177. package/js/chunk-WLE7WX2U.js +0 -2645
  178. package/js/chunk-YXQHV65J.js +0 -242
  179. package/js/chunk-ZQINWV4W.js +0 -630
  180. package/js/mcp/stdio.js +0 -128
  181. package/types/app-data/src/implementation/cursor.d.ts +0 -10
  182. package/types/app-data/src/implementation/index-key.d.ts +0 -7
  183. package/types/app-data/src/implementation/promise.d.ts +0 -68
  184. package/types/app-data/src/implementation/range.d.ts +0 -8
  185. package/types/app-data/src/implementation/schema.d.ts +0 -18
  186. package/types/app-data/src/implementation/sqlite.d.ts +0 -11
  187. package/types/app-data/src/index.d.ts +0 -4
  188. package/types/apps/src/contracts/storage.d.ts +0 -68
  189. package/types/apps/src/implementation/mcp-stdio.d.ts +0 -4
  190. package/types/apps/src/implementation/storage.d.ts +0 -15
  191. package/types/apps/src/mcp-stdio.d.ts +0 -5
package/js/client.js CHANGED
@@ -1,39 +1,38 @@
1
1
  import {
2
2
  AppUiApi,
3
- HttpApiClient_exports,
4
3
  UiContext,
5
4
  UiDeploymentChanged,
6
5
  UiFailed
7
- } from "./chunk-IJX4CYZO.js";
6
+ } from "./chunk-YNJ5CZMJ.js";
8
7
  import {
9
8
  AsyncResult_exports,
10
9
  AtomRegistry_exports,
11
10
  Atom_exports,
12
11
  queryResult
13
- } from "./chunk-M3B3DE4K.js";
14
- import "./chunk-PJJ24GU7.js";
12
+ } from "./chunk-74YVXBKY.js";
13
+ import {
14
+ decoderOf
15
+ } from "./chunk-GQ33QSNB.js";
15
16
  import {
16
17
  OtlpExporter_exports,
17
18
  externalTrace,
18
19
  pendingSpan,
19
20
  telemetryLayer,
20
21
  traceLinks
21
- } from "./chunk-ODEIDRGW.js";
22
+ } from "./chunk-QWQM3CLH.js";
22
23
  import {
23
24
  FetchHttpClient_exports
24
- } from "./chunk-57RKNWL2.js";
25
- import {
26
- HttpClientError_exports
27
- } from "./chunk-UK573G7W.js";
25
+ } from "./chunk-PD6I2SDG.js";
26
+ import "./chunk-5FHWNLCI.js";
28
27
  import {
29
- decoderOf
30
- } from "./chunk-5T57N25Q.js";
28
+ JsonValue
29
+ } from "./chunk-DDHBUKXX.js";
31
30
  import {
32
- StorageName
33
- } from "./chunk-PZB6T6KU.js";
31
+ HttpApiClient_exports
32
+ } from "./chunk-TUMGL2OC.js";
34
33
  import {
35
- JsonValue
36
- } from "./chunk-27F7W2LG.js";
34
+ HttpClientError_exports
35
+ } from "./chunk-EOPQ727L.js";
37
36
  import {
38
37
  Cause_exports,
39
38
  Clock_exports,
@@ -46,25 +45,27 @@ import {
46
45
  Logger_exports,
47
46
  ManagedRuntime_exports,
48
47
  Option_exports,
48
+ Queue_exports,
49
49
  Schedule_exports,
50
50
  Schema_exports,
51
51
  Semaphore_exports,
52
52
  Stream_exports,
53
53
  Tracer_exports
54
- } from "./chunk-CDL5PM2Q.js";
54
+ } from "./chunk-IFJU5SYQ.js";
55
55
  import "./chunk-CZ7CSFO4.js";
56
56
 
57
57
  // src/contracts/live.ts
58
+ var OperationName = Schema_exports.NonEmptyString.check(Schema_exports.isMaxLength(200));
58
59
  var AppQueryFailed = class extends Schema_exports.TaggedError()("AppQueryFailed", {}) {
59
60
  };
60
61
 
61
62
  // src/implementation/live.ts
62
63
  var queryReference = (name) => ({
63
- name: Schema_exports.decodeUnknownSync(StorageName)(name),
64
+ name: Schema_exports.decodeUnknownSync(OperationName)(name),
64
65
  kind: "query"
65
66
  });
66
67
  var mutationReference = (name) => ({
67
- name: Schema_exports.decodeUnknownSync(StorageName)(name),
68
+ name: Schema_exports.decodeUnknownSync(OperationName)(name),
68
69
  kind: "mutation"
69
70
  });
70
71
  var liveQueryAtom = (reference, input, options) => Atom_exports.make(
@@ -475,6 +476,8 @@ var browserTelemetryLayer = (settings) => Layer_exports.unwrap(
475
476
  const onError = (event) => error("ui.error", event.error ?? new Error(event.message));
476
477
  const onRejection = (event) => error("ui.unhandled-rejection", event.reason);
477
478
  const onHidden = () => {
479
+ if (navigation !== void 0 && document.visibilityState === "hidden")
480
+ navigation.hidden = true;
478
481
  run(
479
482
  document.visibilityState === "hidden" ? performance.pause.pipe(Effect_exports.andThen(flush)) : performance.resume
480
483
  );
@@ -502,15 +505,27 @@ var browserTelemetryLayer = (settings) => Layer_exports.unwrap(
502
505
  return {
503
506
  flush,
504
507
  navigation: (event) => Effect_exports.sync(() => {
508
+ if (event.type === "load") return;
505
509
  if (event.type === "end") {
506
- if (navigation !== void 0) Deferred_exports.doneUnsafe(navigation, Effect_exports.void);
510
+ if (navigation !== void 0) Deferred_exports.doneUnsafe(navigation.done, Effect_exports.void);
507
511
  navigation = void 0;
508
512
  return;
509
513
  }
510
- if (navigation !== void 0) Deferred_exports.doneUnsafe(navigation, Effect_exports.interrupt);
511
- navigation = Deferred_exports.makeUnsafe();
514
+ if (navigation !== void 0)
515
+ Deferred_exports.doneUnsafe(navigation.done, Effect_exports.interrupt);
516
+ const current = {
517
+ done: Deferred_exports.makeUnsafe(),
518
+ hidden: document.visibilityState === "hidden"
519
+ };
520
+ navigation = current;
512
521
  run(
513
- Deferred_exports.await(navigation).pipe(
522
+ Deferred_exports.await(current.done).pipe(
523
+ // Record visibility however the navigation ends, including when a later one interrupts it.
524
+ Effect_exports.ensuring(
525
+ Effect_exports.suspend(
526
+ () => Effect_exports.annotateCurrentSpan("executor.navigation.hidden", current.hidden)
527
+ )
528
+ ),
514
529
  Effect_exports.withSpan("ui.navigation", {
515
530
  root: true,
516
531
  attributes: { "url.path": event.path }
@@ -520,7 +535,7 @@ var browserTelemetryLayer = (settings) => Layer_exports.unwrap(
520
535
  );
521
536
  }).pipe(
522
537
  Effect_exports.andThen(
523
- event.type === "start" ? performance.navigation(event.path) : Effect_exports.void
538
+ event.type === "end" ? Effect_exports.void : performance.navigation(event.path)
524
539
  )
525
540
  )
526
541
  };
@@ -793,6 +808,33 @@ var makeOptimisticClient = (transport) => {
793
808
  };
794
809
 
795
810
  // src/implementation/ui-client.ts
811
+ var resubscribeDelay = Schedule_exports.min([
812
+ Schedule_exports.exponential("1 second"),
813
+ Schedule_exports.spaced("1 minute")
814
+ ]).pipe(Schedule_exports.jittered);
815
+ var appFailure = (error) => Schema_exports.is(UiFailed)(error) && error.reason === "operation_failed";
816
+ var resubscribes = (error) => HttpClientError_exports.isHttpClientError(error) || Cause_exports.isTimeoutError(error) || Schema_exports.is(UiFailed)(error) && error.reason !== "account_required";
817
+ var Retrying = class {
818
+ constructor(error, previous) {
819
+ this.error = error;
820
+ this.previous = previous;
821
+ }
822
+ error;
823
+ previous;
824
+ };
825
+ var visibleResult = (result) => {
826
+ const current = AsyncResult_exports.value(result);
827
+ if (Option_exports.isNone(current) || !(current.value instanceof Retrying)) {
828
+ return result;
829
+ }
830
+ const previous = Option_exports.map(
831
+ Option_exports.fromUndefinedOr(current.value.previous),
832
+ AsyncResult_exports.success
833
+ );
834
+ return AsyncResult_exports.isSuccess(result) ? AsyncResult_exports.failureWithPrevious(Cause_exports.fail(current.value.error), { previous, waiting: true }) : AsyncResult_exports.failureWithPrevious(AsyncResult_exports.isFailure(result) ? result.cause : Cause_exports.empty, {
835
+ previous
836
+ });
837
+ };
796
838
  var createAppClient = () => {
797
839
  const { runtime, atoms } = makeBrowserTelemetry(
798
840
  browserSettings("/_executor/api/telemetry", "executor-app-web")
@@ -847,7 +889,8 @@ var createAppClient = () => {
847
889
  Stream_exports.suspend(() => {
848
890
  let previous;
849
891
  let attempts = 0;
850
- return Stream_exports.unwrap(
892
+ let latest;
893
+ const subscription = Stream_exports.unwrap(
851
894
  Effect_exports.gen(function* () {
852
895
  const attempt = attempts++;
853
896
  const first = yield* pendingSpan("ui.app.first_result", {
@@ -895,53 +938,55 @@ var createAppClient = () => {
895
938
  Stream_exports.timeout("45 seconds"),
896
939
  Stream_exports.concat(Stream_exports.fail(new UiFailed({ reason: "unavailable" }))),
897
940
  Stream_exports.filter((frame) => frame.type !== "heartbeat"),
898
- Stream_exports.mapEffect((frame) => {
899
- if (frame.type === "failure") return Effect_exports.fail(frame.error);
900
- const server = externalTrace(frame.trace);
901
- return Effect_exports.gen(function* () {
902
- const value = yield* Schema_exports.decodeUnknownEffect(decoderOf(output))(
903
- frame.value
904
- ).pipe(Effect_exports.mapError(() => new UiFailed({ reason: "operation_failed" })));
905
- const received = yield* Effect_exports.currentSpan;
906
- const receivedAt = clock.currentTimeMillisUnsafe();
907
- const currentRevision = revision++;
908
- yield* Effect_exports.annotateCurrentSpan({
909
- "executor.operation.name": name,
910
- "executor.snapshot.revision": currentRevision,
911
- "browser.query.elapsed_ms": receivedAt - started,
912
- "executor.trace.context_valid": Option_exports.isSome(server)
913
- });
914
- yield* first.finish(Exit_exports.void);
915
- let committed = false;
916
- return {
917
- value,
918
- commit: () => {
919
- if (committed) return;
920
- committed = true;
921
- const committedAt = clock.currentTimeMillisUnsafe();
922
- runtime.runFork(
923
- Effect_exports.void.pipe(
924
- Effect_exports.withSpan("ui.app.result.commit", {
925
- parent: received,
926
- attributes: {
927
- "executor.operation.name": name,
928
- "executor.snapshot.revision": currentRevision,
929
- "browser.query.elapsed_ms": committedAt - started,
930
- "browser.query.receive_to_commit_ms": committedAt - receivedAt,
931
- "browser.page.hidden": document.visibilityState === "hidden"
932
- }
933
- })
934
- )
935
- );
936
- }
937
- };
938
- }).pipe(
939
- Effect_exports.withSpan("ui.app.result.receive", {
940
- parent: Option_exports.isSome(server) ? server.value : first.span,
941
- kind: "consumer"
942
- })
943
- );
944
- }),
941
+ Stream_exports.mapEffect(
942
+ (frame) => {
943
+ if (frame.type === "failure") return Effect_exports.fail(frame.error);
944
+ const server = externalTrace(frame.trace);
945
+ return Effect_exports.gen(function* () {
946
+ const value = yield* Schema_exports.decodeUnknownEffect(decoderOf(output))(
947
+ frame.value
948
+ ).pipe(Effect_exports.mapError(() => new AppQueryFailed()));
949
+ const received = yield* Effect_exports.currentSpan;
950
+ const receivedAt = clock.currentTimeMillisUnsafe();
951
+ const currentRevision = revision++;
952
+ yield* Effect_exports.annotateCurrentSpan({
953
+ "executor.operation.name": name,
954
+ "executor.snapshot.revision": currentRevision,
955
+ "browser.query.elapsed_ms": receivedAt - started,
956
+ "executor.trace.context_valid": Option_exports.isSome(server)
957
+ });
958
+ yield* first.finish(Exit_exports.void);
959
+ let committed = false;
960
+ return {
961
+ value,
962
+ commit: () => {
963
+ if (committed) return;
964
+ committed = true;
965
+ const committedAt = clock.currentTimeMillisUnsafe();
966
+ runtime.runFork(
967
+ Effect_exports.void.pipe(
968
+ Effect_exports.withSpan("ui.app.result.commit", {
969
+ parent: received,
970
+ attributes: {
971
+ "executor.operation.name": name,
972
+ "executor.snapshot.revision": currentRevision,
973
+ "browser.query.elapsed_ms": committedAt - started,
974
+ "browser.query.receive_to_commit_ms": committedAt - receivedAt,
975
+ "browser.page.hidden": document.visibilityState === "hidden"
976
+ }
977
+ })
978
+ )
979
+ );
980
+ }
981
+ };
982
+ }).pipe(
983
+ Effect_exports.withSpan("ui.app.result.receive", {
984
+ parent: Option_exports.isSome(server) ? server.value : first.span,
985
+ kind: "consumer"
986
+ })
987
+ );
988
+ }
989
+ ),
945
990
  Stream_exports.onExit(finish),
946
991
  Stream_exports.provideService(Tracer_exports.ParentSpan, first.span)
947
992
  );
@@ -952,16 +997,35 @@ var createAppClient = () => {
952
997
  Stream_exports.catch(
953
998
  (error) => Schema_exports.is(UiDeploymentChanged)(error) ? Stream_exports.unwrap(deploymentChanged.pipe(Effect_exports.as(Stream_exports.never))) : Stream_exports.fail(error)
954
999
  ),
955
- Stream_exports.retry(
956
- Schedule_exports.spaced("1 second").pipe(
957
- Schedule_exports.while(
958
- ({ input: input2 }) => HttpClientError_exports.isHttpClientError(input2) || Cause_exports.isTimeoutError(input2) || Schema_exports.is(UiFailed)(input2)
959
- )
960
- )
1000
+ Stream_exports.tap(
1001
+ (value) => Effect_exports.sync(() => {
1002
+ latest = value;
1003
+ })
961
1004
  )
962
1005
  );
1006
+ return Stream_exports.unwrap(
1007
+ Effect_exports.gen(function* () {
1008
+ const retrying = yield* Queue_exports.unbounded();
1009
+ return Stream_exports.merge(
1010
+ subscription.pipe(
1011
+ Stream_exports.retry(
1012
+ resubscribeDelay.pipe(
1013
+ Schedule_exports.while(
1014
+ ({ input: input2 }) => !resubscribes(input2) ? false : appFailure(input2) ? Queue_exports.offer(retrying, new Retrying(input2, latest)).pipe(
1015
+ Effect_exports.as(true)
1016
+ ) : true
1017
+ )
1018
+ )
1019
+ )
1020
+ ),
1021
+ // Shown outside the retried stream, so they do not reset its delay.
1022
+ Stream_exports.fromQueue(retrying),
1023
+ { haltStrategy: "left" }
1024
+ );
1025
+ })
1026
+ );
963
1027
  })
964
- ).pipe(Atom_exports.map(queryResult));
1028
+ ).pipe(Atom_exports.map((result) => queryResult(visibleResult(result))));
965
1029
  const optimistic = makeOptimisticClient({
966
1030
  source,
967
1031
  read: (name, input, output) => request("query", name, input, output),
package/js/contracts.js CHANGED
@@ -3,23 +3,45 @@ import {
3
3
  AccountCheckResult,
4
4
  AccountInfo,
5
5
  ApiErrorResponse,
6
+ AppIcon,
7
+ AppIcons,
6
8
  ApprovalElicitation,
7
9
  ApprovalResponse,
8
10
  CalendarSchedule,
11
+ CredentialHost,
12
+ DatabaseFieldReserved,
13
+ DatabaseLimitExceeded,
14
+ DeclaredAccountSlot,
15
+ DeclaredAccountSlots,
9
16
  DeclaredAuthMethod,
17
+ DeclaredEvent,
18
+ DeclaredEvents,
10
19
  DeclaredProvider,
11
20
  DeclaredRequirements,
12
21
  ElicitationFailed,
13
22
  ElicitationLimits,
14
23
  ElicitationReply,
15
24
  ElicitationResponse,
25
+ EmittedEvent,
26
+ EmittedEvents,
27
+ EventFilterValue,
28
+ EventLimits,
29
+ EventName,
16
30
  FailureCode,
17
31
  FailureDetail,
32
+ FailureFieldName,
33
+ FailureFieldValue,
34
+ FailureFields,
18
35
  FailureMessage,
19
36
  FailureName,
37
+ FailurePhase,
20
38
  FailureSource,
39
+ FetchOptionUnsupported,
21
40
  FormElicitation,
41
+ HostAccount,
22
42
  HostAccountCheckError,
43
+ HostAccountSlots,
44
+ HostAccounts,
23
45
  HostAccountsInvalid,
24
46
  HostCallError,
25
47
  HostDataError,
@@ -52,25 +74,46 @@ import {
52
74
  InputProblem,
53
75
  Interval,
54
76
  InvocationDeadline,
77
+ InvocationTiming,
78
+ InvocationTimingSink,
55
79
  ManualWebhookDescriptor,
56
80
  ManualWebhookSetup,
57
81
  McpClientLimits,
58
- McpError,
82
+ McpError2 as McpError,
83
+ MigrateCommand,
84
+ MigrateResult,
85
+ NetworkRefusal,
86
+ NetworkRefused,
59
87
  NonRetryableError,
88
+ OAuthAuthorizationParams,
60
89
  OAuthClientAuth,
61
90
  OAuthSecretClientAuth,
91
+ OAuthTokenRequestFormat,
92
+ OAuthTokenResponse,
62
93
  OpenapiResponseError,
63
94
  OperationSchedule,
95
+ Placement,
96
+ PlacementBase64,
97
+ PlacementField,
98
+ PlacementFieldMissing,
99
+ PlacementHeaderName,
100
+ PlacementPart,
101
+ PlacementText,
102
+ Placements,
103
+ ProviderError,
64
104
  ResolvedAccount,
105
+ ResolvedAccountSlots,
65
106
  ResolvedAccounts,
66
107
  RouterIcon,
67
108
  RouterKey,
68
109
  RouterMeta,
69
110
  ScheduleTiming,
70
111
  SkillCatalogResponse,
112
+ SkillLoadFailed,
71
113
  SkillSources,
72
114
  ToolResultObservation,
73
115
  TrustedToolApproval,
116
+ UpstreamError,
74
117
  WebhookCommand,
75
118
  WebhookRequestData,
76
119
  WebhookResponseData,
@@ -90,33 +133,52 @@ import {
90
133
  WorkflowRunPage,
91
134
  WorkflowStepOptions,
92
135
  WorkflowValue,
136
+ appIconLimits,
93
137
  approvalElicitation,
138
+ current,
94
139
  defaultElicitationLimits,
140
+ defaultEventLimits,
95
141
  defaultMcpClientLimits,
96
142
  defaultWebhookTransportLimits,
143
+ exactApprovalElicitation,
97
144
  frameworkProtocol,
98
145
  indexCommand,
99
146
  inspectCommand,
147
+ isPlacementField,
148
+ maxApiErrorInstructionsLength,
149
+ maxApiErrorMessageLength,
150
+ maxFailureFieldLength,
151
+ maxFailureFields,
100
152
  maxFailureMessageLength,
101
153
  maxInputProblems,
154
+ maxUpstreamMessageLength,
102
155
  minimumIntervalMilliseconds,
156
+ networkRefusalHeader,
157
+ networkRefusalResponse,
158
+ networkRefusalStatus,
159
+ normalizePlacements,
160
+ placementFields,
161
+ placementKey,
103
162
  protocol1,
163
+ protocol10,
164
+ protocol11,
165
+ protocol12,
104
166
  protocol2,
105
167
  protocol3,
106
168
  protocol4,
107
169
  protocol5,
170
+ protocol6,
171
+ protocol7,
172
+ protocol8,
173
+ protocol9,
174
+ renderPlacement,
175
+ reservedAuthorizationParams,
176
+ scopedSlots,
108
177
  selectTools,
109
178
  skillCatalog,
110
179
  skillsCommand,
111
180
  workflowDurationMillis
112
- } from "./chunk-WLE7WX2U.js";
113
- import {
114
- DatabaseFieldReserved,
115
- DatabaseLimitExceeded
116
- } from "./chunk-N7YDVXYJ.js";
117
- import {
118
- ProviderError
119
- } from "./chunk-R3EV5FTO.js";
181
+ } from "./chunk-6XQLA5NC.js";
120
182
  import {
121
183
  AppSkillMetadata,
122
184
  AppSkillName,
@@ -125,21 +187,18 @@ import {
125
187
  SkillDefinitionInvalid,
126
188
  SkillFile,
127
189
  SkillFilePath,
128
- SkillLoadFailed,
129
190
  SkillServiceName,
130
191
  skillFormatLimits,
131
192
  skillLoadLimits
132
- } from "./chunk-JU7VHODU.js";
133
- import {
134
- AppStorageError,
135
- AppStorageUnavailable,
136
- StorageName
137
- } from "./chunk-PZB6T6KU.js";
193
+ } from "./chunk-H72MEDMN.js";
194
+ import "./chunk-5FHWNLCI.js";
138
195
  import {
139
196
  AccountId,
140
197
  HttpUrl
141
- } from "./chunk-27F7W2LG.js";
142
- import "./chunk-CDL5PM2Q.js";
198
+ } from "./chunk-DDHBUKXX.js";
199
+ import "./chunk-TUMGL2OC.js";
200
+ import "./chunk-EOPQ727L.js";
201
+ import "./chunk-IFJU5SYQ.js";
143
202
  import "./chunk-CZ7CSFO4.js";
144
203
  export {
145
204
  AccountCheckCommand,
@@ -147,31 +206,49 @@ export {
147
206
  AccountId,
148
207
  AccountInfo,
149
208
  ApiErrorResponse,
209
+ AppIcon,
210
+ AppIcons,
150
211
  AppSkillMetadata,
151
212
  AppSkillName,
152
213
  AppSkillSource,
153
214
  AppSkills,
154
- AppStorageError,
155
- AppStorageUnavailable,
156
215
  ApprovalElicitation,
157
216
  ApprovalResponse,
158
217
  CalendarSchedule,
218
+ CredentialHost,
159
219
  DatabaseFieldReserved,
160
220
  DatabaseLimitExceeded,
221
+ DeclaredAccountSlot,
222
+ DeclaredAccountSlots,
161
223
  DeclaredAuthMethod,
224
+ DeclaredEvent,
225
+ DeclaredEvents,
162
226
  DeclaredProvider,
163
227
  DeclaredRequirements,
164
228
  ElicitationFailed,
165
229
  ElicitationLimits,
166
230
  ElicitationReply,
167
231
  ElicitationResponse,
232
+ EmittedEvent,
233
+ EmittedEvents,
234
+ EventFilterValue,
235
+ EventLimits,
236
+ EventName,
168
237
  FailureCode,
169
238
  FailureDetail,
239
+ FailureFieldName,
240
+ FailureFieldValue,
241
+ FailureFields,
170
242
  FailureMessage,
171
243
  FailureName,
244
+ FailurePhase,
172
245
  FailureSource,
246
+ FetchOptionUnsupported,
173
247
  FormElicitation,
248
+ HostAccount,
174
249
  HostAccountCheckError,
250
+ HostAccountSlots,
251
+ HostAccounts,
175
252
  HostAccountsInvalid,
176
253
  HostCallError,
177
254
  HostDataError,
@@ -205,17 +282,35 @@ export {
205
282
  InputProblem,
206
283
  Interval,
207
284
  InvocationDeadline,
285
+ InvocationTiming,
286
+ InvocationTimingSink,
208
287
  ManualWebhookDescriptor,
209
288
  ManualWebhookSetup,
210
289
  McpClientLimits,
211
290
  McpError,
291
+ MigrateCommand,
292
+ MigrateResult,
293
+ NetworkRefusal,
294
+ NetworkRefused,
212
295
  NonRetryableError,
296
+ OAuthAuthorizationParams,
213
297
  OAuthClientAuth,
214
298
  OAuthSecretClientAuth,
299
+ OAuthTokenRequestFormat,
300
+ OAuthTokenResponse,
215
301
  OpenapiResponseError,
216
302
  OperationSchedule,
303
+ Placement,
304
+ PlacementBase64,
305
+ PlacementField,
306
+ PlacementFieldMissing,
307
+ PlacementHeaderName,
308
+ PlacementPart,
309
+ PlacementText,
310
+ Placements,
217
311
  ProviderError,
218
312
  ResolvedAccount,
313
+ ResolvedAccountSlots,
219
314
  ResolvedAccounts,
220
315
  RouterIcon,
221
316
  RouterKey,
@@ -228,9 +323,9 @@ export {
228
323
  SkillLoadFailed,
229
324
  SkillServiceName,
230
325
  SkillSources,
231
- StorageName,
232
326
  ToolResultObservation,
233
327
  TrustedToolApproval,
328
+ UpstreamError,
234
329
  WebhookCommand,
235
330
  WebhookRequestData,
236
331
  WebhookResponseData,
@@ -250,21 +345,47 @@ export {
250
345
  WorkflowRunPage,
251
346
  WorkflowStepOptions,
252
347
  WorkflowValue,
348
+ appIconLimits,
253
349
  approvalElicitation,
254
350
  defaultElicitationLimits,
351
+ defaultEventLimits,
255
352
  defaultMcpClientLimits,
256
353
  defaultWebhookTransportLimits,
354
+ exactApprovalElicitation,
257
355
  frameworkProtocol,
258
356
  indexCommand,
259
357
  inspectCommand,
358
+ isPlacementField,
359
+ maxApiErrorInstructionsLength,
360
+ maxApiErrorMessageLength,
361
+ maxFailureFieldLength,
362
+ maxFailureFields,
260
363
  maxFailureMessageLength,
261
364
  maxInputProblems,
365
+ maxUpstreamMessageLength,
262
366
  minimumIntervalMilliseconds,
367
+ networkRefusalHeader,
368
+ networkRefusalResponse,
369
+ networkRefusalStatus,
370
+ normalizePlacements,
371
+ placementFields,
372
+ placementKey,
263
373
  protocol1,
374
+ protocol10,
375
+ protocol11,
376
+ protocol12,
377
+ current as protocol13,
264
378
  protocol2,
265
379
  protocol3,
266
380
  protocol4,
267
381
  protocol5,
382
+ protocol6,
383
+ protocol7,
384
+ protocol8,
385
+ protocol9,
386
+ renderPlacement,
387
+ reservedAuthorizationParams,
388
+ scopedSlots,
268
389
  selectTools,
269
390
  skillCatalog,
270
391
  skillFormatLimits,