@north-light/crouter 0.3.191 → 0.3.193

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 (169) hide show
  1. package/dist/api/client.d.ts +31 -10
  2. package/dist/api/client.js +83 -24
  3. package/dist/api/dto/bash-jobs.d.ts +22 -0
  4. package/dist/api/dto/bash-jobs.js +9 -0
  5. package/dist/api/dto/human.d.ts +3 -4
  6. package/dist/api/dto/inbox.d.ts +106 -65
  7. package/dist/api/dto/inbox.js +2 -8
  8. package/dist/api/index.d.ts +1 -0
  9. package/dist/api/index.js +1 -0
  10. package/dist/api/routes.d.ts +7 -0
  11. package/dist/api/routes.js +7 -0
  12. package/dist/builtin-memory/internal/storage-tiers.md +1 -1
  13. package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/serial/provider-rotation.test.ts +101 -3
  14. package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/provider-rotation.d.ts +6 -2
  15. package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/provider-rotation.js +68 -14
  16. package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/provider-rotation.ts +87 -13
  17. package/dist/clients/attach/__tests__/chat-view-snapshot-ordering.test.js +2 -2
  18. package/dist/clients/attach/__tests__/group-activity.test.js +2 -2
  19. package/dist/clients/attach/chrome/canvas-panels.d.ts +1 -1
  20. package/dist/clients/attach/chrome/canvas-panels.js +1 -1
  21. package/dist/clients/attach/input/overlay-owner.js +1 -1
  22. package/dist/clients/attach/overlays/auth.js +34 -8
  23. package/dist/clients/attach/overlays/pickers.d.ts +5 -8
  24. package/dist/clients/attach/overlays/pickers.js +37 -43
  25. package/dist/clients/attach/viewer.js +643 -620
  26. package/dist/clients/inbox/__tests__/serial/inbox-controller.test.js +38 -128
  27. package/dist/clients/inbox/__tests__/serial/mount-panel.test.js +72 -148
  28. package/dist/clients/inbox/controller.d.ts +2 -3
  29. package/dist/clients/inbox/controller.js +41 -42
  30. package/dist/clients/inbox/page-adapter.d.ts +33 -0
  31. package/dist/clients/inbox/page-adapter.js +54 -0
  32. package/dist/clients/inbox/resolve.d.ts +2 -2
  33. package/dist/clients/inbox/resolve.js +1 -1
  34. package/dist/clients/inbox/review-visibility.d.ts +1 -1
  35. package/dist/clients/inbox/review-visibility.js +1 -1
  36. package/dist/clients/inbox/tui/ansi.d.ts +1 -1
  37. package/dist/clients/inbox/tui/ansi.js +2 -2
  38. package/dist/clients/inbox/tui/input.d.ts +1 -3
  39. package/dist/clients/inbox/tui/input.js +242 -553
  40. package/dist/clients/inbox/tui/panel.d.ts +3 -1
  41. package/dist/clients/inbox/tui/panel.js +59 -187
  42. package/dist/clients/inbox/tui/render.d.ts +0 -25
  43. package/dist/clients/inbox/tui/render.js +165 -416
  44. package/dist/clients/inbox/tui/slots.d.ts +32 -0
  45. package/dist/clients/inbox/tui/slots.js +156 -0
  46. package/dist/clients/inbox/tui/types.d.ts +25 -13
  47. package/dist/clients/inbox/tui.js +5 -3
  48. package/dist/commands/attention.js +2 -2
  49. package/dist/commands/human/doc.js +66 -20
  50. package/dist/commands/human/prompts.d.ts +3 -3
  51. package/dist/commands/human/prompts.js +158 -112
  52. package/dist/commands/human/queue.d.ts +0 -1
  53. package/dist/commands/human/queue.js +34 -94
  54. package/dist/commands/human/shared.d.ts +10 -4
  55. package/dist/commands/human/shared.js +62 -13
  56. package/dist/commands/human.js +8 -4
  57. package/dist/commands/memory/read.js +13 -5
  58. package/dist/commands/node/bash.js +15 -28
  59. package/dist/commands/surface/node/focus.js +1 -1
  60. package/dist/core/__tests__/human-deliver.test.js +40 -46
  61. package/dist/core/__tests__/seam/broker-attach-stream.test.js +7 -1
  62. package/dist/core/__tests__/serial/human-deliver-e2e.test.js +40 -31
  63. package/dist/core/__tests__/serial/spawn-root.test.js +3 -1
  64. package/dist/core/__tests__/spawn-worktree-id-conflict.test.js +3 -1
  65. package/dist/core/auth-interaction.d.ts +2 -2
  66. package/dist/core/bash-jobs.d.ts +32 -0
  67. package/dist/core/bash-jobs.js +72 -1
  68. package/dist/core/canvas/__tests__/attention.test.js +16 -10
  69. package/dist/core/canvas/__tests__/render-remote.test.js +9 -3
  70. package/dist/core/canvas/attention.js +1 -1
  71. package/dist/core/canvas/browse/app.js +1 -1
  72. package/dist/core/canvas/nav-model.d.ts +1 -1
  73. package/dist/core/canvas/nav-model.js +1 -1
  74. package/dist/core/canvas/remote-canvas-source.js +1 -1
  75. package/dist/core/config.js +4 -1
  76. package/dist/core/human/__tests__/page-render.test.d.ts +1 -0
  77. package/dist/core/human/__tests__/page-render.test.js +49 -0
  78. package/dist/core/human/__tests__/page-tickets.test.d.ts +1 -0
  79. package/dist/core/human/__tests__/page-tickets.test.js +112 -0
  80. package/dist/core/human/__tests__/page.test.d.ts +1 -0
  81. package/dist/core/human/__tests__/page.test.js +139 -0
  82. package/dist/core/human/__tests__/serial/inbox-core.test.js +42 -32
  83. package/dist/core/human/claim.js +2 -2
  84. package/dist/core/human/convention.d.ts +4 -4
  85. package/dist/core/human/convention.js +6 -13
  86. package/dist/core/human/markdown-html.d.ts +8 -0
  87. package/dist/core/human/markdown-html.js +581 -0
  88. package/dist/core/human/page-catalog.d.ts +6 -0
  89. package/dist/core/human/page-catalog.js +43 -0
  90. package/dist/core/human/page-render.d.ts +3 -0
  91. package/dist/core/human/page-render.js +131 -0
  92. package/dist/core/human/page-schema.d.ts +312 -0
  93. package/dist/core/human/page-schema.js +291 -0
  94. package/dist/core/human/page-synth.d.ts +9 -0
  95. package/dist/core/human/page-synth.js +17 -0
  96. package/dist/core/human/page.d.ts +22 -0
  97. package/dist/core/human/page.js +427 -0
  98. package/dist/core/human/review-schema.d.ts +19 -0
  99. package/dist/core/human/review-schema.js +34 -0
  100. package/dist/core/human/scan.d.ts +12 -3
  101. package/dist/core/human/scan.js +69 -26
  102. package/dist/core/human/summary.d.ts +5 -6
  103. package/dist/core/human/summary.js +54 -37
  104. package/dist/core/human/tickets.d.ts +61 -11
  105. package/dist/core/human/tickets.js +100 -57
  106. package/dist/core/human/types.d.ts +21 -66
  107. package/dist/core/human/types.js +1 -5
  108. package/dist/core/preview-registry.js +0 -1
  109. package/dist/core/review/ticket-filter.d.ts +1 -1
  110. package/dist/core/review/ticket-filter.js +2 -8
  111. package/dist/core/runtime/broker/read-ops.js +3 -0
  112. package/dist/core/runtime/broker.js +19 -10
  113. package/dist/core/runtime/package-health.js +1 -1
  114. package/dist/core/termrender/termrender.d.ts +1 -1
  115. package/dist/core/termrender/termrender.js +2 -2
  116. package/dist/core/tui/page-host.d.ts +1 -1
  117. package/dist/core/tui/page-host.js +2 -2
  118. package/dist/core/user-settings.d.ts +19 -0
  119. package/dist/core/user-settings.js +22 -0
  120. package/dist/daemon/api/handlers/bash-jobs.d.ts +2 -0
  121. package/dist/daemon/api/handlers/bash-jobs.js +89 -0
  122. package/dist/daemon/api/handlers/human.js +16 -14
  123. package/dist/daemon/api/handlers/inbox.js +311 -227
  124. package/dist/daemon/api/router.d.ts +5 -1
  125. package/dist/daemon/api/router.js +5 -0
  126. package/dist/daemon/api/server.js +2 -0
  127. package/dist/daemon/cron-run.js +23 -10
  128. package/dist/daemon/human/finish.d.ts +8 -3
  129. package/dist/daemon/human/finish.js +35 -15
  130. package/dist/pages/bundle.css +1 -0
  131. package/dist/pages/bundle.js +1347 -0
  132. package/dist/pages/comments.d.ts +34 -0
  133. package/dist/pages/comments.js +72 -0
  134. package/dist/pages/elements/cards.d.ts +17 -0
  135. package/dist/pages/elements/cards.js +785 -0
  136. package/dist/pages/elements/chart.d.ts +1 -0
  137. package/dist/pages/elements/chart.js +648 -0
  138. package/dist/pages/elements/options.d.ts +21 -0
  139. package/dist/pages/elements/options.js +604 -0
  140. package/dist/pages/elements/pages.d.ts +24 -0
  141. package/dist/pages/elements/pages.js +355 -0
  142. package/dist/pages/elements/slot.d.ts +21 -0
  143. package/dist/pages/elements/slot.js +105 -0
  144. package/dist/pages/elements/table.d.ts +19 -0
  145. package/dist/pages/elements/table.js +906 -0
  146. package/dist/pages/elements/text.d.ts +25 -0
  147. package/dist/pages/elements/text.js +951 -0
  148. package/dist/pages/entry.d.ts +8 -0
  149. package/dist/pages/entry.js +8 -0
  150. package/dist/pages/host.d.ts +132 -0
  151. package/dist/pages/host.js +149 -0
  152. package/dist/pages/register.d.ts +2 -0
  153. package/dist/pages/register.js +3 -0
  154. package/dist/pages/slot-config.d.ts +36 -0
  155. package/dist/pages/slot-config.js +50 -0
  156. package/dist/pages/types.d.ts +98 -0
  157. package/dist/pages/types.js +23 -0
  158. package/dist/pi-extensions/__tests__/canvas-structured-output.test.js +13 -5
  159. package/dist/pi-extensions/canvas-structured-output.js +7 -3
  160. package/dist/types.d.ts +4 -0
  161. package/dist/types.js +2 -0
  162. package/package.json +8 -8
  163. package/runtime.lock.json +156 -101
  164. package/dist/clients/inbox/deck-adapter.d.ts +0 -29
  165. package/dist/clients/inbox/deck-adapter.js +0 -63
  166. package/dist/core/human/deck-factories.d.ts +0 -8
  167. package/dist/core/human/deck-factories.js +0 -15
  168. package/dist/core/human/deck-schema.d.ts +0 -70
  169. package/dist/core/human/deck-schema.js +0 -92
package/runtime.lock.json CHANGED
@@ -1,19 +1,19 @@
1
1
  {
2
2
  "name": "@north-light/crouter",
3
- "version": "0.3.191",
3
+ "version": "0.3.193",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@north-light/crouter",
9
- "version": "0.3.191",
9
+ "version": "0.3.193",
10
10
  "hasInstallScript": true,
11
11
  "license": "MIT",
12
12
  "dependencies": {
13
- "@earendil-works/pi-agent-core": "0.83.0",
14
- "@earendil-works/pi-ai": "0.83.0",
15
- "@earendil-works/pi-coding-agent": "0.83.0",
16
- "@earendil-works/pi-tui": "0.83.0",
13
+ "@earendil-works/pi-agent-core": "0.84.1",
14
+ "@earendil-works/pi-ai": "0.84.1",
15
+ "@earendil-works/pi-coding-agent": "0.84.1",
16
+ "@earendil-works/pi-tui": "0.84.1",
17
17
  "cron-parser": "^5.6.0",
18
18
  "proper-lockfile": "4.1.2",
19
19
  "string-width": "^7.0.0",
@@ -131,9 +131,9 @@
131
131
  }
132
132
  },
133
133
  "node_modules/@aws-sdk/core": {
134
- "version": "3.977.3",
135
- "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.977.3.tgz",
136
- "integrity": "sha512-6YZTpF5Zzl0KdSrztM0l6ErKdnXrnnodIDYfayHE9SFfZU8Ubxls7H2XnfWT121jgwiG+WP1z5kyfVDsH5V4qA==",
134
+ "version": "3.977.6",
135
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.977.6.tgz",
136
+ "integrity": "sha512-QiaJV4/zDrB4ZY2mfeSXSzSTc36W16sZXcGz+SPFk0CJ26gziO0cS+4LjJUMAbdeeBOvS0k0Aq1cZpfGdUXxSw==",
137
137
  "license": "Apache-2.0",
138
138
  "dependencies": {
139
139
  "@aws-sdk/types": "^3.974.2",
@@ -150,12 +150,12 @@
150
150
  }
151
151
  },
152
152
  "node_modules/@aws-sdk/credential-provider-env": {
153
- "version": "3.972.64",
154
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.64.tgz",
155
- "integrity": "sha512-14kkR5aj1c7D+cYCrEcG2W3xw87wMYAEUeB/tMiQ2j0RVKzzdewd4mJw1+Q0JVLr4IFU1JHGDCyj0WqLrtIixg==",
153
+ "version": "3.972.67",
154
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.67.tgz",
155
+ "integrity": "sha512-rcIpk5kxUqDaaNa6Xk23pQ6ViY7jlqzmfFWCahQcBT97ddXaXYYwzCen9Tz1Jvo6aJft6wDl5bN44/Jw5B4oLA==",
156
156
  "license": "Apache-2.0",
157
157
  "dependencies": {
158
- "@aws-sdk/core": "^3.977.3",
158
+ "@aws-sdk/core": "^3.977.6",
159
159
  "@aws-sdk/types": "^3.974.2",
160
160
  "@smithy/core": "^3.31.1",
161
161
  "@smithy/types": "^4.16.1",
@@ -166,12 +166,12 @@
166
166
  }
167
167
  },
168
168
  "node_modules/@aws-sdk/credential-provider-http": {
169
- "version": "3.972.66",
170
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.66.tgz",
171
- "integrity": "sha512-BrZxoXScBZ+nTOYy388zHkz1n5cS8C+uGFMozD4w9OKEWMq39Cu/9l/k385Hb54dtv0VIeh12f8h67o3xDNH9g==",
169
+ "version": "3.972.69",
170
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.69.tgz",
171
+ "integrity": "sha512-nggwJtZ4eeNsUw5IeWBMXsi1ryct5idi0K+/SCRF3kybLubOMaNTb3XCihXpWMiVpyzyPeIrl0zTkzhBH9porA==",
172
172
  "license": "Apache-2.0",
173
173
  "dependencies": {
174
- "@aws-sdk/core": "^3.977.3",
174
+ "@aws-sdk/core": "^3.977.6",
175
175
  "@aws-sdk/types": "^3.974.2",
176
176
  "@smithy/core": "^3.31.1",
177
177
  "@smithy/fetch-http-handler": "^5.6.13",
@@ -198,19 +198,19 @@
198
198
  }
199
199
  },
200
200
  "node_modules/@aws-sdk/credential-provider-ini": {
201
- "version": "3.973.9",
202
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.973.9.tgz",
203
- "integrity": "sha512-d/mMvS+sQjSWNA6+JCldK1YB/jQmtoWM8Izj10mrOZdRCeWNVb8IYQuuyHHKKKXcpGo5Pd0LIK6onHbLvlhuVQ==",
201
+ "version": "3.973.12",
202
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.973.12.tgz",
203
+ "integrity": "sha512-pNEf/OeyN5X3VmLKlgSO6TqaWmW10CvI3TfwL1XhsuhYjSLT2VDaxFnCPHnOeQXSaFisMX4jNhpETriqN8DOmg==",
204
204
  "license": "Apache-2.0",
205
205
  "dependencies": {
206
- "@aws-sdk/core": "^3.977.3",
207
- "@aws-sdk/credential-provider-env": "^3.972.64",
208
- "@aws-sdk/credential-provider-http": "^3.972.66",
209
- "@aws-sdk/credential-provider-login": "^3.972.71",
210
- "@aws-sdk/credential-provider-process": "^3.972.64",
211
- "@aws-sdk/credential-provider-sso": "^3.973.8",
212
- "@aws-sdk/credential-provider-web-identity": "^3.972.70",
213
- "@aws-sdk/nested-clients": "^3.997.38",
206
+ "@aws-sdk/core": "^3.977.6",
207
+ "@aws-sdk/credential-provider-env": "^3.972.67",
208
+ "@aws-sdk/credential-provider-http": "^3.972.69",
209
+ "@aws-sdk/credential-provider-login": "^3.972.74",
210
+ "@aws-sdk/credential-provider-process": "^3.972.67",
211
+ "@aws-sdk/credential-provider-sso": "^3.973.11",
212
+ "@aws-sdk/credential-provider-web-identity": "^3.972.73",
213
+ "@aws-sdk/nested-clients": "^3.997.41",
214
214
  "@aws-sdk/types": "^3.974.2",
215
215
  "@smithy/core": "^3.31.1",
216
216
  "@smithy/credential-provider-imds": "^4.4.16",
@@ -222,13 +222,13 @@
222
222
  }
223
223
  },
224
224
  "node_modules/@aws-sdk/credential-provider-login": {
225
- "version": "3.972.71",
226
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.71.tgz",
227
- "integrity": "sha512-l93922lXnTs5RjM3QrMCXSmXiEgLFLaQ0Lco9F3tJ08o0mzGdAj6m2nAXDuTMHoUuL0u7RKmrhm+Z8/7GCilyg==",
225
+ "version": "3.972.74",
226
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.74.tgz",
227
+ "integrity": "sha512-0AQfDcf99TNmqVKv0owHrw/TQs6i4ZE5t9qmz6NvO53bE/sA/tpXhXL9AAcEP1qHc6Zzjd1UMb69+/9zdhvY3g==",
228
228
  "license": "Apache-2.0",
229
229
  "dependencies": {
230
- "@aws-sdk/core": "^3.977.3",
231
- "@aws-sdk/nested-clients": "^3.997.38",
230
+ "@aws-sdk/core": "^3.977.6",
231
+ "@aws-sdk/nested-clients": "^3.997.41",
232
232
  "@aws-sdk/types": "^3.974.2",
233
233
  "@smithy/core": "^3.31.1",
234
234
  "@smithy/types": "^4.16.1",
@@ -239,17 +239,17 @@
239
239
  }
240
240
  },
241
241
  "node_modules/@aws-sdk/credential-provider-node": {
242
- "version": "3.972.75",
243
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.75.tgz",
244
- "integrity": "sha512-sdFhR4E3HWZefGL6OsBhxqXdqtFvxGOh8VLfiu9yttPgVNcpEozEDPmrTYmXA3CIf6npUETVLveQPGQ7GBzVhg==",
242
+ "version": "3.972.78",
243
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.78.tgz",
244
+ "integrity": "sha512-OgPAnfvbGAMWac6yvxJ1ihslrvDpPVwR68D2csospdNCCyPvHk9JLzYKwz48SNiS1T2znDwHauywRKRFfpyYng==",
245
245
  "license": "Apache-2.0",
246
246
  "dependencies": {
247
- "@aws-sdk/credential-provider-env": "^3.972.64",
248
- "@aws-sdk/credential-provider-http": "^3.972.66",
249
- "@aws-sdk/credential-provider-ini": "^3.973.9",
250
- "@aws-sdk/credential-provider-process": "^3.972.64",
251
- "@aws-sdk/credential-provider-sso": "^3.973.8",
252
- "@aws-sdk/credential-provider-web-identity": "^3.972.70",
247
+ "@aws-sdk/credential-provider-env": "^3.972.67",
248
+ "@aws-sdk/credential-provider-http": "^3.972.69",
249
+ "@aws-sdk/credential-provider-ini": "^3.973.12",
250
+ "@aws-sdk/credential-provider-process": "^3.972.67",
251
+ "@aws-sdk/credential-provider-sso": "^3.973.11",
252
+ "@aws-sdk/credential-provider-web-identity": "^3.972.73",
253
253
  "@aws-sdk/types": "^3.974.2",
254
254
  "@smithy/core": "^3.31.1",
255
255
  "@smithy/credential-provider-imds": "^4.4.16",
@@ -261,12 +261,12 @@
261
261
  }
262
262
  },
263
263
  "node_modules/@aws-sdk/credential-provider-process": {
264
- "version": "3.972.64",
265
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.64.tgz",
266
- "integrity": "sha512-Q5noG5vfFo++bUaLGcjj8OHX5tmwa1O/5nDVMeaSSZgjzgvWbW6tgu/gSa+aENwcJXjoXDQh+8TRZR2zHds/aw==",
264
+ "version": "3.972.67",
265
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.67.tgz",
266
+ "integrity": "sha512-IlUEejorGTWKb4/Dm7K5Yw4QxUmXLThLhrvBmzVBqZFTbW72cv9LTcITmo1dsnYriALE4h68mOq4LB99x6sQ7Q==",
267
267
  "license": "Apache-2.0",
268
268
  "dependencies": {
269
- "@aws-sdk/core": "^3.977.3",
269
+ "@aws-sdk/core": "^3.977.6",
270
270
  "@aws-sdk/types": "^3.974.2",
271
271
  "@smithy/core": "^3.31.1",
272
272
  "@smithy/types": "^4.16.1",
@@ -277,14 +277,14 @@
277
277
  }
278
278
  },
279
279
  "node_modules/@aws-sdk/credential-provider-sso": {
280
- "version": "3.973.8",
281
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.973.8.tgz",
282
- "integrity": "sha512-37okeZyRdVkGrU6nyKBPGqQvyl/7CEiMpUVOb0+BCNCIR0VAuBxNgjMb0mnsR1EXm8dqQFfQZOJ5YW/0sBfa1w==",
280
+ "version": "3.973.11",
281
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.973.11.tgz",
282
+ "integrity": "sha512-gAQBkBZxUB84d71+pPcI9L+jh2ujhuAVxc/4FgGiWFDjkPBlMKxzd5XDtkSXTFX8Ro7ansnT88+XadasxMeCRw==",
283
283
  "license": "Apache-2.0",
284
284
  "dependencies": {
285
- "@aws-sdk/core": "^3.977.3",
286
- "@aws-sdk/nested-clients": "^3.997.38",
287
- "@aws-sdk/token-providers": "3.1098.0",
285
+ "@aws-sdk/core": "^3.977.6",
286
+ "@aws-sdk/nested-clients": "^3.997.41",
287
+ "@aws-sdk/token-providers": "3.1103.0",
288
288
  "@aws-sdk/types": "^3.974.2",
289
289
  "@smithy/core": "^3.31.1",
290
290
  "@smithy/types": "^4.16.1",
@@ -295,13 +295,13 @@
295
295
  }
296
296
  },
297
297
  "node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers": {
298
- "version": "3.1098.0",
299
- "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1098.0.tgz",
300
- "integrity": "sha512-6cFAviffeqYGjrXn4FqGbWcTxB3nbpBpQXUm6MvnrWZThJaVBTHHnespHgSUh4yVLfzhipSh9H/XjzkHQd9P4g==",
298
+ "version": "3.1103.0",
299
+ "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1103.0.tgz",
300
+ "integrity": "sha512-N4wy26MNn31ItGVHYHPrEuCIFY4MBBjC+C5v1lJKqIUSA7OZBdhleCY53zCCrXn27hsk7YNOaTuhQu807S4AfQ==",
301
301
  "license": "Apache-2.0",
302
302
  "dependencies": {
303
- "@aws-sdk/core": "^3.977.3",
304
- "@aws-sdk/nested-clients": "^3.997.38",
303
+ "@aws-sdk/core": "^3.977.6",
304
+ "@aws-sdk/nested-clients": "^3.997.41",
305
305
  "@aws-sdk/types": "^3.974.2",
306
306
  "@smithy/core": "^3.31.1",
307
307
  "@smithy/types": "^4.16.1",
@@ -312,13 +312,13 @@
312
312
  }
313
313
  },
314
314
  "node_modules/@aws-sdk/credential-provider-web-identity": {
315
- "version": "3.972.70",
316
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.70.tgz",
317
- "integrity": "sha512-Ps/f9USafScb6CSQTRPNMzdKL5x5XRwDIRgFvnuFWfClGZe7/fI7iCFqXdxKjc9LBxP28E7iUgNloGgfgw406w==",
315
+ "version": "3.972.73",
316
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.73.tgz",
317
+ "integrity": "sha512-SnlEmQa6SjOgs6iOPLUQl1Eyq4AKiAdPQlkOhFhqNfDtDCwibMGvL6QlkSmf3o6vAUSImzdPCxowT5dfQUZP1A==",
318
318
  "license": "Apache-2.0",
319
319
  "dependencies": {
320
- "@aws-sdk/core": "^3.977.3",
321
- "@aws-sdk/nested-clients": "^3.997.38",
320
+ "@aws-sdk/core": "^3.977.6",
321
+ "@aws-sdk/nested-clients": "^3.997.41",
322
322
  "@aws-sdk/types": "^3.974.2",
323
323
  "@smithy/core": "^3.31.1",
324
324
  "@smithy/types": "^4.16.1",
@@ -359,12 +359,12 @@
359
359
  }
360
360
  },
361
361
  "node_modules/@aws-sdk/middleware-websocket": {
362
- "version": "3.972.46",
363
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-websocket/-/middleware-websocket-3.972.46.tgz",
364
- "integrity": "sha512-4ZWFqfiqSTda+SsMUihhype6L0sHWKnLouWj2WYRrF5oC+3G+yUatBILLiesELF+7AP+kHMhEpD2UGnk2vOPMw==",
362
+ "version": "3.972.49",
363
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-websocket/-/middleware-websocket-3.972.49.tgz",
364
+ "integrity": "sha512-wGYJvu1/stdWuzGcNyh44u8aY7ArU8XFrMesBlzIYn70HWVCRBNEngQexDuPIMu0NEgsKGKmTc0uvnS/bF7KWw==",
365
365
  "license": "Apache-2.0",
366
366
  "dependencies": {
367
- "@aws-sdk/core": "^3.977.3",
367
+ "@aws-sdk/core": "^3.977.6",
368
368
  "@aws-sdk/types": "^3.974.2",
369
369
  "@smithy/core": "^3.31.1",
370
370
  "@smithy/fetch-http-handler": "^5.6.13",
@@ -377,12 +377,12 @@
377
377
  }
378
378
  },
379
379
  "node_modules/@aws-sdk/nested-clients": {
380
- "version": "3.997.38",
381
- "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.38.tgz",
382
- "integrity": "sha512-jQDs+nxnmgo4+WPOmY373HIC8jx4KyYYMYDI74FWrzX3Ba9fYsV0dSA+7PNYNkhRbbRCRLre83tQ31F1ACCHkA==",
380
+ "version": "3.997.41",
381
+ "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.41.tgz",
382
+ "integrity": "sha512-RDHqPGQWlF6tatA/Tp3rg6oIwtgN9IVderxE+9av2Y93Dfyu+mO1hZ5Bu2jpfZg2rwdNbsssnwM+sLafIczMlQ==",
383
383
  "license": "Apache-2.0",
384
384
  "dependencies": {
385
- "@aws-sdk/core": "^3.977.3",
385
+ "@aws-sdk/core": "^3.977.6",
386
386
  "@aws-sdk/signature-v4-multi-region": "^3.996.43",
387
387
  "@aws-sdk/types": "^3.974.2",
388
388
  "@smithy/core": "^3.31.1",
@@ -498,12 +498,13 @@
498
498
  }
499
499
  },
500
500
  "node_modules/@earendil-works/pi-agent-core": {
501
- "version": "0.83.0",
502
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-0.83.0.tgz",
503
- "integrity": "sha512-RorGp9OH5l3ElpuC5a5ZQ2eWcchZGXflXRzVGkV99y3y6tT+LLNyxoYIdVKvTKWEObwhExeQbTH0fI2tE4iX4g==",
501
+ "version": "0.84.1",
502
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-0.84.1.tgz",
503
+ "integrity": "sha512-evyzXYWCLQGmcaBYHlmSku02r8qoN4SGI60GZABo6iV+H+nqX+P9ud8fEZ4GmRq9mUSREvvfX+w9dA9ThF9C6w==",
504
504
  "license": "MIT",
505
505
  "dependencies": {
506
- "@earendil-works/pi-ai": "^0.83.0",
506
+ "@earendil-works/pi-ai": "^0.84.1",
507
+ "@earendil-works/pi-telemetry": "^0.84.1",
507
508
  "diff": "8.0.4",
508
509
  "ignore": "7.0.5",
509
510
  "typebox": "1.3.7",
@@ -514,13 +515,14 @@
514
515
  }
515
516
  },
516
517
  "node_modules/@earendil-works/pi-ai": {
517
- "version": "0.83.0",
518
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-0.83.0.tgz",
519
- "integrity": "sha512-m3IZD4g3er0V8TC9+Vpgw/sjTKqcJlkcIBy/JvsgRubuuik3tAVzyugUg4rVrShIkkOT69mEd34NEqKUIsl6JQ==",
518
+ "version": "0.84.1",
519
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-0.84.1.tgz",
520
+ "integrity": "sha512-wMsAdJMxuNri08vLqTyYVI201DQQezGhPSTkzYsHdw5dYX3rCNwEmSvpaAwhi7ELKI/2tE/CEgSWg/6iRxSgdQ==",
520
521
  "license": "MIT",
521
522
  "dependencies": {
522
523
  "@anthropic-ai/sdk": "0.91.1",
523
524
  "@aws-sdk/client-bedrock-runtime": "3.1048.0",
525
+ "@earendil-works/pi-telemetry": "^0.84.1",
524
526
  "@google/genai": "1.52.0",
525
527
  "@mistralai/mistralai": "2.2.6",
526
528
  "@opentelemetry/api": "1.9.0",
@@ -539,20 +541,23 @@
539
541
  }
540
542
  },
541
543
  "node_modules/@earendil-works/pi-coding-agent": {
542
- "version": "0.83.0",
543
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-coding-agent/-/pi-coding-agent-0.83.0.tgz",
544
- "integrity": "sha512-uYhF+FsZxogoSX/AxBcUdiY+ZklubwaXyAoEGA2eQwsHcyEAhUYIKh/WLXe/a8+k8eTCmxb+ZN2Zo9mzQtzbWw==",
544
+ "version": "0.84.1",
545
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-coding-agent/-/pi-coding-agent-0.84.1.tgz",
546
+ "integrity": "sha512-ncAqFrG+iybuPGOhMiZoEHkEzTpJgz3guYD32pD+M7ucc0WeHmauP6wa7qwP8V/KWvsZDVNa5XGsdZ7fkC7w7A==",
545
547
  "hasShrinkwrap": true,
546
548
  "license": "MIT",
547
549
  "dependencies": {
548
- "@earendil-works/pi-agent-core": "^0.83.0",
549
- "@earendil-works/pi-ai": "^0.83.0",
550
- "@earendil-works/pi-tui": "^0.83.0",
550
+ "@earendil-works/pi-agent-core": "^0.84.1",
551
+ "@earendil-works/pi-ai": "^0.84.1",
552
+ "@earendil-works/pi-client": "^0.84.1",
553
+ "@earendil-works/pi-protocol": "^0.84.1",
554
+ "@earendil-works/pi-tui": "^0.84.1",
551
555
  "@silvia-odwyer/photon-node": "0.3.4",
552
556
  "chalk": "5.6.2",
553
557
  "cross-spawn": "7.0.6",
554
558
  "diff": "8.0.4",
555
559
  "glob": "13.0.6",
560
+ "grok-mermaid": "0.2.2",
556
561
  "highlight.js": "10.7.3",
557
562
  "hosted-git-info": "9.0.3",
558
563
  "ignore": "7.0.5",
@@ -561,7 +566,7 @@
561
566
  "proper-lockfile": "4.1.2",
562
567
  "semver": "7.8.0",
563
568
  "typebox": "1.3.7",
564
- "undici": "8.5.0",
569
+ "undici": "8.9.0",
565
570
  "yaml": "2.9.0"
566
571
  },
567
572
  "bin": {
@@ -1010,11 +1015,12 @@
1010
1015
  }
1011
1016
  },
1012
1017
  "node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-agent-core": {
1013
- "version": "0.83.0",
1014
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-0.83.0.tgz",
1018
+ "version": "0.84.1",
1019
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-0.84.1.tgz",
1015
1020
  "license": "MIT",
1016
1021
  "dependencies": {
1017
- "@earendil-works/pi-ai": "^0.83.0",
1022
+ "@earendil-works/pi-ai": "^0.84.1",
1023
+ "@earendil-works/pi-telemetry": "^0.84.1",
1018
1024
  "diff": "8.0.4",
1019
1025
  "ignore": "7.0.5",
1020
1026
  "typebox": "1.3.7",
@@ -1025,12 +1031,13 @@
1025
1031
  }
1026
1032
  },
1027
1033
  "node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-ai": {
1028
- "version": "0.83.0",
1029
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-0.83.0.tgz",
1034
+ "version": "0.84.1",
1035
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-0.84.1.tgz",
1030
1036
  "license": "MIT",
1031
1037
  "dependencies": {
1032
1038
  "@anthropic-ai/sdk": "0.91.1",
1033
1039
  "@aws-sdk/client-bedrock-runtime": "3.1048.0",
1040
+ "@earendil-works/pi-telemetry": "^0.84.1",
1034
1041
  "@google/genai": "1.52.0",
1035
1042
  "@mistralai/mistralai": "2.2.6",
1036
1043
  "@opentelemetry/api": "1.9.0",
@@ -1048,9 +1055,39 @@
1048
1055
  "node": ">=22.19.0"
1049
1056
  }
1050
1057
  },
1058
+ "node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-client": {
1059
+ "version": "0.84.1",
1060
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-client/-/pi-client-0.84.1.tgz",
1061
+ "license": "MIT",
1062
+ "dependencies": {
1063
+ "@earendil-works/pi-protocol": "^0.84.1"
1064
+ },
1065
+ "engines": {
1066
+ "node": ">=22.19.0"
1067
+ }
1068
+ },
1069
+ "node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-protocol": {
1070
+ "version": "0.84.1",
1071
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-protocol/-/pi-protocol-0.84.1.tgz",
1072
+ "license": "MIT",
1073
+ "dependencies": {
1074
+ "typebox": "1.3.7"
1075
+ },
1076
+ "engines": {
1077
+ "node": ">=22.19.0"
1078
+ }
1079
+ },
1080
+ "node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-telemetry": {
1081
+ "version": "0.84.1",
1082
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-telemetry/-/pi-telemetry-0.84.1.tgz",
1083
+ "license": "MIT",
1084
+ "engines": {
1085
+ "node": ">=22.19.0"
1086
+ }
1087
+ },
1051
1088
  "node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-tui": {
1052
- "version": "0.83.0",
1053
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-0.83.0.tgz",
1089
+ "version": "0.84.1",
1090
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-0.84.1.tgz",
1054
1091
  "license": "MIT",
1055
1092
  "dependencies": {
1056
1093
  "get-east-asian-width": "1.6.0",
@@ -1559,15 +1596,15 @@
1559
1596
  "license": "MIT"
1560
1597
  },
1561
1598
  "node_modules/@earendil-works/pi-coding-agent/node_modules/brace-expansion": {
1562
- "version": "5.0.7",
1563
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.7.tgz",
1564
- "integrity": "sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==",
1599
+ "version": "5.0.9",
1600
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz",
1601
+ "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==",
1565
1602
  "license": "MIT",
1566
1603
  "dependencies": {
1567
1604
  "balanced-match": "^4.0.2"
1568
1605
  },
1569
1606
  "engines": {
1570
- "node": "18 || 20 || >=22"
1607
+ "node": "20 || >=22"
1571
1608
  }
1572
1609
  },
1573
1610
  "node_modules/@earendil-works/pi-coding-agent/node_modules/buffer-equal-constant-time": {
@@ -1813,6 +1850,15 @@
1813
1850
  "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
1814
1851
  "license": "ISC"
1815
1852
  },
1853
+ "node_modules/@earendil-works/pi-coding-agent/node_modules/grok-mermaid": {
1854
+ "version": "0.2.2",
1855
+ "resolved": "https://registry.npmjs.org/grok-mermaid/-/grok-mermaid-0.2.2.tgz",
1856
+ "integrity": "sha512-XcJEP5dDC8liHBh52mlLjU18fNvu1ckFsu0QpIG3+APZ270fsj9wxpiA6cOURmbUEuoMVgjbC2+UYgTdCqqgzA==",
1857
+ "license": "Apache-2.0",
1858
+ "engines": {
1859
+ "node": ">=18"
1860
+ }
1861
+ },
1816
1862
  "node_modules/@earendil-works/pi-coding-agent/node_modules/highlight.js": {
1817
1863
  "version": "10.7.3",
1818
1864
  "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz",
@@ -2250,9 +2296,9 @@
2250
2296
  "license": "MIT"
2251
2297
  },
2252
2298
  "node_modules/@earendil-works/pi-coding-agent/node_modules/undici": {
2253
- "version": "8.5.0",
2254
- "resolved": "https://registry.npmjs.org/undici/-/undici-8.5.0.tgz",
2255
- "integrity": "sha512-xamtWoB1EshgjpmlXd7GGm2VfdDtw1+rD8uhry8pSNW3If6S8E0m2T2+orSKeZXEn/aPJMviCpDBA65WJt8zhg==",
2299
+ "version": "8.9.0",
2300
+ "resolved": "https://registry.npmjs.org/undici/-/undici-8.9.0.tgz",
2301
+ "integrity": "sha512-aWZpUj7XoGonMClx4gdDRfgBjqeA+F473aDmROQQbM9n6PRfK/u1q/a0X4wMTgcHfT8H6fpbt98PFuDUwFg2YA==",
2256
2302
  "license": "MIT",
2257
2303
  "engines": {
2258
2304
  "node": ">=22.19.0"
@@ -2357,10 +2403,19 @@
2357
2403
  "zod": "^3.25.28 || ^4"
2358
2404
  }
2359
2405
  },
2406
+ "node_modules/@earendil-works/pi-telemetry": {
2407
+ "version": "0.84.1",
2408
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-telemetry/-/pi-telemetry-0.84.1.tgz",
2409
+ "integrity": "sha512-180/xGJtsq7IoR3p9EKWjRd0e9M4DkxInhlo9xyD7prDC7Qrhqq+nhvwrW0lFjPfXcEI2FSHmGCSyvSJE9GsaQ==",
2410
+ "license": "MIT",
2411
+ "engines": {
2412
+ "node": ">=22.19.0"
2413
+ }
2414
+ },
2360
2415
  "node_modules/@earendil-works/pi-tui": {
2361
- "version": "0.83.0",
2362
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-0.83.0.tgz",
2363
- "integrity": "sha512-IoYrb0rORjELmEpNtoCA/U8je3KopMkRAVJRdSzvXRvgb+Huo1gNh8Q5CSZvNOiYtDxJdj2tYZZHZ4B3+IN3hA==",
2416
+ "version": "0.84.1",
2417
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-0.84.1.tgz",
2418
+ "integrity": "sha512-udeXFbgEhJ6JiB0uguwNVNkDy2FENfmtQwPcY+/iJ8GWeq18wkal1tKqa5YyeH0IqtX1vG0cGh8zfSYzyzVuLA==",
2364
2419
  "license": "MIT",
2365
2420
  "dependencies": {
2366
2421
  "get-east-asian-width": "1.6.0",
@@ -1,29 +0,0 @@
1
- import type { Deck, InteractionResponse } from '../../core/human/types.js';
2
- import type { Key } from './tui/keys.js';
3
- export interface DeckAdapterOptions {
4
- dir: string;
5
- deck: Deck;
6
- cols: number;
7
- rows: number;
8
- onProgress?: (responses: InteractionResponse[]) => void;
9
- onComplete: (responses: InteractionResponse[]) => void;
10
- onBack: () => void;
11
- onDirty: () => void;
12
- onEditorRequest?: () => void;
13
- }
14
- /** Embeds the single deck renderer in a controller-owned rectangle. */
15
- export declare class DeckAdapter {
16
- private readonly opts;
17
- private panel;
18
- private responses;
19
- constructor(opts: DeckAdapterOptions);
20
- render(): string[];
21
- resize(cols: number, rows: number): string[];
22
- inputBuffer(): string | undefined;
23
- setInputBuffer(text: string): void;
24
- canAcceptHostKeys(): boolean;
25
- handleKey(input: string, key: Key): void;
26
- /** Fresh descriptor reads preserve mounted answers for interaction ids still present. */
27
- reload(deck: Deck): void;
28
- close(): void;
29
- }
@@ -1,63 +0,0 @@
1
- import { progressPath } from '../../core/human/convention.js';
2
- import { readJsonOrNull } from '../../core/fs-utils.js';
3
- import { mountPanel } from './tui/panel.js';
4
- /** Embeds the single deck renderer in a controller-owned rectangle. */
5
- export class DeckAdapter {
6
- opts;
7
- panel;
8
- responses = [];
9
- constructor(opts) {
10
- this.opts = opts;
11
- this.responses = initialResponses(opts.deck, opts.dir);
12
- this.panel = mountPanel({
13
- deck: opts.deck,
14
- progressPath: progressPath(opts.dir),
15
- cols: opts.cols,
16
- rows: opts.rows,
17
- onProgress: (responses) => { this.responses = responses; opts.onProgress?.(responses); },
18
- onComplete: opts.onComplete,
19
- // A partial-deck exit is a valid completion for ordinary asks, but a
20
- // notification is resolved only by its explicit acknowledgement.
21
- onExit: () => { if (notificationsAcknowledged(opts.deck, this.responses))
22
- opts.onComplete(this.responses); },
23
- onDirty: opts.onDirty,
24
- onEditorRequest: opts.onEditorRequest,
25
- });
26
- }
27
- render() { return this.panel.render(); }
28
- resize(cols, rows) { return this.panel.handleResize(cols, rows); }
29
- inputBuffer() { return this.panel.getInputBuffer(); }
30
- setInputBuffer(text) { this.panel.setInputBuffer(text); }
31
- canAcceptHostKeys() { return this.panel.canAcceptHostKeys(); }
32
- handleKey(input, key) {
33
- if (key.escape && this.panel.atDeckTop()) {
34
- this.opts.onBack();
35
- return;
36
- }
37
- this.panel.handleKey(input, key);
38
- }
39
- /** Fresh descriptor reads preserve mounted answers for interaction ids still present. */
40
- reload(deck) {
41
- this.panel.loadDeck(deck, { progressPath: progressPath(this.opts.dir) });
42
- this.opts.onDirty();
43
- }
44
- close() { this.panel.unmount(); }
45
- }
46
- function notificationsAcknowledged(deck, responses) {
47
- const byId = new Map(responses.map((response) => [response.id, response]));
48
- return deck.interactions.filter((interaction) => interaction.kind === 'notify').every((interaction) => {
49
- const response = byId.get(interaction.id);
50
- return response !== undefined && (response.selectedOptionId !== undefined || (response.selectedOptionIds?.length ?? 0) > 0 || (response.freetext?.trim() ?? '') !== '');
51
- });
52
- }
53
- function initialResponses(deck, dir) {
54
- const saved = readJsonOrNull(progressPath(dir))?.responses;
55
- if (Array.isArray(saved))
56
- return saved;
57
- return deck.interactions.flatMap((interaction) => {
58
- const answer = interaction.preAnswered;
59
- if (answer === undefined)
60
- return [];
61
- return [{ id: interaction.id, ...(answer.selectedOptionId === undefined ? {} : { selectedOptionId: answer.selectedOptionId }), ...(answer.selectedOptionIds === undefined ? {} : { selectedOptionIds: [...answer.selectedOptionIds] }), ...(answer.freetext === undefined ? {} : { freetext: answer.freetext }) }];
62
- });
63
- }
@@ -1,8 +0,0 @@
1
- import type { Deck } from './types.js';
2
- export interface NotifyDeckOpts {
3
- /** One plain-English sentence stating the notification's status and stakes. */
4
- subtitle: string;
5
- body?: string;
6
- }
7
- /** Build a validated single-option notify deck. id: 'notify', kind: 'notify'. */
8
- export declare function notifyDeck(title: string, opts: NotifyDeckOpts): Deck;
@@ -1,15 +0,0 @@
1
- import { validateDeck } from './deck-schema.js';
2
- /** Build a validated single-option notify deck. id: 'notify', kind: 'notify'. */
3
- export function notifyDeck(title, opts) {
4
- return validateDeck({
5
- title,
6
- interactions: [{
7
- id: 'notify',
8
- title,
9
- subtitle: opts.subtitle,
10
- ...(opts.body !== undefined ? { body: opts.body } : {}),
11
- kind: 'notify',
12
- options: [{ id: 'ok', label: 'OK' }],
13
- }],
14
- });
15
- }