@kirkchinese/dsh-citeciter 0.9.0-beta.2 → 0.9.0-beta.3

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 (37) hide show
  1. package/README.md +11 -8
  2. package/README.zh.md +11 -8
  3. package/lib/client.js +2175 -2344
  4. package/lib/index.js +1546 -307
  5. package/lib/{typert-common-g1lnIG8u.js → typert-common-B3cX-hWj.js} +1 -1
  6. package/lib/typert.host.js +2 -2
  7. package/lib/typert.remote-client.js +1 -1
  8. package/lib/types/actions.d.ts +7 -0
  9. package/lib/types/blackboard-tool.d.ts +6 -0
  10. package/lib/types/board-animation.d.ts +278 -0
  11. package/lib/types/board-capture-protocol.d.ts +61 -1
  12. package/lib/types/board-capture.d.ts +2 -0
  13. package/lib/types/board.d.ts +62 -3
  14. package/lib/types/client/board-timeline.d.ts +30 -0
  15. package/lib/types/client/companion-controller.d.ts +1 -1
  16. package/lib/types/client/components/BoardCaptureSurface.d.ts +3 -1
  17. package/lib/types/client/components/BoardView.d.ts +3 -1
  18. package/lib/types/client/components/PermissionControl.d.ts +1 -1
  19. package/lib/types/client/components/TopicActions.d.ts +1 -1
  20. package/lib/types/client/components/TopicModelControls.d.ts +1 -1
  21. package/lib/types/host-agent-modules.d.ts +4 -1
  22. package/lib/types/line-diff.d.ts +12 -0
  23. package/lib/types/message-projection.d.ts +1 -0
  24. package/lib/types/observer.d.ts +0 -30
  25. package/lib/types/source-read-tool.d.ts +3 -3
  26. package/lib/types/source-session.d.ts +3 -0
  27. package/lib/types/source-transcript.d.ts +58 -0
  28. package/lib/types/topic-context.d.ts +74 -0
  29. package/lib/types/topic-log.d.ts +2 -0
  30. package/lib/types/topic-runtime.d.ts +4 -0
  31. package/lib/types/topic.d.ts +198 -14
  32. package/lib/types/typert-common.d.ts +124 -5
  33. package/lib/types/typert.host.d.ts +311 -14
  34. package/lib/types/workspace-changes.d.ts +90 -0
  35. package/lib/{update-B_0nN1_f.js → update-CGteMuNJ.js} +651 -4
  36. package/package.json +62 -64
  37. package/lib/types/client/components/ChoicePopover.d.ts +0 -8
@@ -27,9 +27,9 @@ export declare const TYPERT: {
27
27
  callId: import("zod").ZodString;
28
28
  toolName: import("zod").ZodString;
29
29
  projection: import("zod").ZodEnum<{
30
+ diff: "diff";
30
31
  "result-text": "result-text";
31
32
  terminal: "terminal";
32
- diff: "diff";
33
33
  }>;
34
34
  fileIndex: import("zod").ZodOptional<import("zod").ZodNumber>;
35
35
  side: import("zod").ZodOptional<import("zod").ZodEnum<{
@@ -77,9 +77,9 @@ export declare const TYPERT: {
77
77
  callId: import("zod").ZodString;
78
78
  toolName: import("zod").ZodString;
79
79
  projection: import("zod").ZodEnum<{
80
+ diff: "diff";
80
81
  "result-text": "result-text";
81
82
  terminal: "terminal";
82
- diff: "diff";
83
83
  }>;
84
84
  fileIndex: import("zod").ZodOptional<import("zod").ZodNumber>;
85
85
  side: import("zod").ZodOptional<import("zod").ZodEnum<{
@@ -147,9 +147,9 @@ export declare const TYPERT: {
147
147
  callId: import("zod").ZodString;
148
148
  toolName: import("zod").ZodString;
149
149
  projection: import("zod").ZodEnum<{
150
+ diff: "diff";
150
151
  "result-text": "result-text";
151
152
  terminal: "terminal";
152
- diff: "diff";
153
153
  }>;
154
154
  fileIndex: import("zod").ZodOptional<import("zod").ZodNumber>;
155
155
  side: import("zod").ZodOptional<import("zod").ZodEnum<{
@@ -340,10 +340,10 @@ export declare const TYPERT: {
340
340
  focused: import("zod").ZodBoolean;
341
341
  animation: import("zod").ZodOptional<import("zod").ZodObject<{
342
342
  name: import("zod").ZodEnum<{
343
+ highlight: "highlight";
343
344
  "fade-in": "fade-in";
344
345
  "slide-in": "slide-in";
345
346
  pulse: "pulse";
346
- highlight: "highlight";
347
347
  }>;
348
348
  durationMs: import("zod").ZodNumber;
349
349
  iterations: import("zod").ZodNumber;
@@ -351,6 +351,65 @@ export declare const TYPERT: {
351
351
  }, import("zod/v4/core").$strict>>;
352
352
  }, import("zod/v4/core").$strict>>;
353
353
  invalid: import("zod").ZodNumber;
354
+ timeline: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodObject<{
355
+ id: import("zod").ZodString;
356
+ spec: import("zod").ZodObject<{
357
+ durationMs: import("zod").ZodNumber;
358
+ loop: import("zod").ZodOptional<import("zod").ZodBoolean>;
359
+ beats: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
360
+ atMs: import("zod").ZodNumber;
361
+ caption: import("zod").ZodString;
362
+ }, import("zod/v4/core").$strict>>>;
363
+ tracks: import("zod").ZodArray<import("zod").ZodObject<{
364
+ target: import("zod").ZodString;
365
+ verb: import("zod").ZodEnum<{
366
+ appear: "appear";
367
+ disappear: "disappear";
368
+ move: "move";
369
+ scale: "scale";
370
+ rotate: "rotate";
371
+ highlight: "highlight";
372
+ reveal: "reveal";
373
+ follow: "follow";
374
+ keyframes: "keyframes";
375
+ parametric: "parametric";
376
+ }>;
377
+ startMs: import("zod").ZodOptional<import("zod").ZodNumber>;
378
+ endMs: import("zod").ZodOptional<import("zod").ZodNumber>;
379
+ easing: import("zod").ZodOptional<import("zod").ZodEnum<{
380
+ linear: "linear";
381
+ "ease-in": "ease-in";
382
+ "ease-out": "ease-out";
383
+ "ease-in-out": "ease-in-out";
384
+ }>>;
385
+ to: import("zod").ZodOptional<import("zod").ZodObject<{
386
+ x: import("zod").ZodNumber;
387
+ y: import("zod").ZodNumber;
388
+ }, import("zod/v4/core").$strict>>;
389
+ scale: import("zod").ZodOptional<import("zod").ZodNumber>;
390
+ degrees: import("zod").ZodOptional<import("zod").ZodNumber>;
391
+ direction: import("zod").ZodOptional<import("zod").ZodEnum<{
392
+ left: "left";
393
+ right: "right";
394
+ up: "up";
395
+ down: "down";
396
+ }>>;
397
+ path: import("zod").ZodOptional<import("zod").ZodString>;
398
+ orient: import("zod").ZodOptional<import("zod").ZodBoolean>;
399
+ frames: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
400
+ atMs: import("zod").ZodNumber;
401
+ x: import("zod").ZodOptional<import("zod").ZodNumber>;
402
+ y: import("zod").ZodOptional<import("zod").ZodNumber>;
403
+ opacity: import("zod").ZodOptional<import("zod").ZodNumber>;
404
+ scale: import("zod").ZodOptional<import("zod").ZodNumber>;
405
+ rotate: import("zod").ZodOptional<import("zod").ZodNumber>;
406
+ }, import("zod/v4/core").$strict>>>;
407
+ x: import("zod").ZodOptional<import("zod").ZodString>;
408
+ y: import("zod").ZodOptional<import("zod").ZodString>;
409
+ t: import("zod").ZodOptional<import("zod").ZodTuple<[import("zod").ZodNumber, import("zod").ZodNumber], null>>;
410
+ }, import("zod/v4/core").$strict>>;
411
+ }, import("zod/v4/core").$strict>;
412
+ }, import("zod/v4/core").$strict>>>;
354
413
  }, import("zod/v4/core").$strict>>;
355
414
  }, import("zod/v4/core").$strict>;
356
415
  }, {
@@ -386,9 +445,9 @@ export declare const TYPERT: {
386
445
  callId: import("zod").ZodString;
387
446
  displayText: import("zod").ZodString;
388
447
  projection: import("zod").ZodOptional<import("zod").ZodEnum<{
448
+ diff: "diff";
389
449
  "result-text": "result-text";
390
450
  terminal: "terminal";
391
- diff: "diff";
392
451
  }>>;
393
452
  }, import("zod/v4/core").$strict>;
394
453
  action: import("zod").ZodLiteral<"create">;
@@ -711,10 +770,10 @@ export declare const TYPERT: {
711
770
  focused: import("zod").ZodBoolean;
712
771
  animation: import("zod").ZodOptional<import("zod").ZodObject<{
713
772
  name: import("zod").ZodEnum<{
773
+ highlight: "highlight";
714
774
  "fade-in": "fade-in";
715
775
  "slide-in": "slide-in";
716
776
  pulse: "pulse";
717
- highlight: "highlight";
718
777
  }>;
719
778
  durationMs: import("zod").ZodNumber;
720
779
  iterations: import("zod").ZodNumber;
@@ -722,7 +781,67 @@ export declare const TYPERT: {
722
781
  }, import("zod/v4/core").$strict>>;
723
782
  }, import("zod/v4/core").$strict>>;
724
783
  invalid: import("zod").ZodNumber;
784
+ timeline: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodObject<{
785
+ id: import("zod").ZodString;
786
+ spec: import("zod").ZodObject<{
787
+ durationMs: import("zod").ZodNumber;
788
+ loop: import("zod").ZodOptional<import("zod").ZodBoolean>;
789
+ beats: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
790
+ atMs: import("zod").ZodNumber;
791
+ caption: import("zod").ZodString;
792
+ }, import("zod/v4/core").$strict>>>;
793
+ tracks: import("zod").ZodArray<import("zod").ZodObject<{
794
+ target: import("zod").ZodString;
795
+ verb: import("zod").ZodEnum<{
796
+ appear: "appear";
797
+ disappear: "disappear";
798
+ move: "move";
799
+ scale: "scale";
800
+ rotate: "rotate";
801
+ highlight: "highlight";
802
+ reveal: "reveal";
803
+ follow: "follow";
804
+ keyframes: "keyframes";
805
+ parametric: "parametric";
806
+ }>;
807
+ startMs: import("zod").ZodOptional<import("zod").ZodNumber>;
808
+ endMs: import("zod").ZodOptional<import("zod").ZodNumber>;
809
+ easing: import("zod").ZodOptional<import("zod").ZodEnum<{
810
+ linear: "linear";
811
+ "ease-in": "ease-in";
812
+ "ease-out": "ease-out";
813
+ "ease-in-out": "ease-in-out";
814
+ }>>;
815
+ to: import("zod").ZodOptional<import("zod").ZodObject<{
816
+ x: import("zod").ZodNumber;
817
+ y: import("zod").ZodNumber;
818
+ }, import("zod/v4/core").$strict>>;
819
+ scale: import("zod").ZodOptional<import("zod").ZodNumber>;
820
+ degrees: import("zod").ZodOptional<import("zod").ZodNumber>;
821
+ direction: import("zod").ZodOptional<import("zod").ZodEnum<{
822
+ left: "left";
823
+ right: "right";
824
+ up: "up";
825
+ down: "down";
826
+ }>>;
827
+ path: import("zod").ZodOptional<import("zod").ZodString>;
828
+ orient: import("zod").ZodOptional<import("zod").ZodBoolean>;
829
+ frames: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
830
+ atMs: import("zod").ZodNumber;
831
+ x: import("zod").ZodOptional<import("zod").ZodNumber>;
832
+ y: import("zod").ZodOptional<import("zod").ZodNumber>;
833
+ opacity: import("zod").ZodOptional<import("zod").ZodNumber>;
834
+ scale: import("zod").ZodOptional<import("zod").ZodNumber>;
835
+ rotate: import("zod").ZodOptional<import("zod").ZodNumber>;
836
+ }, import("zod/v4/core").$strict>>>;
837
+ x: import("zod").ZodOptional<import("zod").ZodString>;
838
+ y: import("zod").ZodOptional<import("zod").ZodString>;
839
+ t: import("zod").ZodOptional<import("zod").ZodTuple<[import("zod").ZodNumber, import("zod").ZodNumber], null>>;
840
+ }, import("zod/v4/core").$strict>>;
841
+ }, import("zod/v4/core").$strict>;
842
+ }, import("zod/v4/core").$strict>>>;
725
843
  }, import("zod/v4/core").$strict>;
844
+ atMs: import("zod").ZodOptional<import("zod").ZodNumber>;
726
845
  }, import("zod/v4/core").$strict>>;
727
846
  }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
728
847
  kind: import("zod").ZodLiteral<"board-capture-accepted">;
@@ -884,9 +1003,9 @@ export declare const TYPERT: {
884
1003
  callId: import("zod").ZodString;
885
1004
  toolName: import("zod").ZodString;
886
1005
  projection: import("zod").ZodEnum<{
1006
+ diff: "diff";
887
1007
  "result-text": "result-text";
888
1008
  terminal: "terminal";
889
- diff: "diff";
890
1009
  }>;
891
1010
  fileIndex: import("zod").ZodOptional<import("zod").ZodNumber>;
892
1011
  side: import("zod").ZodOptional<import("zod").ZodEnum<{
@@ -1077,10 +1196,10 @@ export declare const TYPERT: {
1077
1196
  focused: import("zod").ZodBoolean;
1078
1197
  animation: import("zod").ZodOptional<import("zod").ZodObject<{
1079
1198
  name: import("zod").ZodEnum<{
1199
+ highlight: "highlight";
1080
1200
  "fade-in": "fade-in";
1081
1201
  "slide-in": "slide-in";
1082
1202
  pulse: "pulse";
1083
- highlight: "highlight";
1084
1203
  }>;
1085
1204
  durationMs: import("zod").ZodNumber;
1086
1205
  iterations: import("zod").ZodNumber;
@@ -1088,6 +1207,65 @@ export declare const TYPERT: {
1088
1207
  }, import("zod/v4/core").$strict>>;
1089
1208
  }, import("zod/v4/core").$strict>>;
1090
1209
  invalid: import("zod").ZodNumber;
1210
+ timeline: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodObject<{
1211
+ id: import("zod").ZodString;
1212
+ spec: import("zod").ZodObject<{
1213
+ durationMs: import("zod").ZodNumber;
1214
+ loop: import("zod").ZodOptional<import("zod").ZodBoolean>;
1215
+ beats: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
1216
+ atMs: import("zod").ZodNumber;
1217
+ caption: import("zod").ZodString;
1218
+ }, import("zod/v4/core").$strict>>>;
1219
+ tracks: import("zod").ZodArray<import("zod").ZodObject<{
1220
+ target: import("zod").ZodString;
1221
+ verb: import("zod").ZodEnum<{
1222
+ appear: "appear";
1223
+ disappear: "disappear";
1224
+ move: "move";
1225
+ scale: "scale";
1226
+ rotate: "rotate";
1227
+ highlight: "highlight";
1228
+ reveal: "reveal";
1229
+ follow: "follow";
1230
+ keyframes: "keyframes";
1231
+ parametric: "parametric";
1232
+ }>;
1233
+ startMs: import("zod").ZodOptional<import("zod").ZodNumber>;
1234
+ endMs: import("zod").ZodOptional<import("zod").ZodNumber>;
1235
+ easing: import("zod").ZodOptional<import("zod").ZodEnum<{
1236
+ linear: "linear";
1237
+ "ease-in": "ease-in";
1238
+ "ease-out": "ease-out";
1239
+ "ease-in-out": "ease-in-out";
1240
+ }>>;
1241
+ to: import("zod").ZodOptional<import("zod").ZodObject<{
1242
+ x: import("zod").ZodNumber;
1243
+ y: import("zod").ZodNumber;
1244
+ }, import("zod/v4/core").$strict>>;
1245
+ scale: import("zod").ZodOptional<import("zod").ZodNumber>;
1246
+ degrees: import("zod").ZodOptional<import("zod").ZodNumber>;
1247
+ direction: import("zod").ZodOptional<import("zod").ZodEnum<{
1248
+ left: "left";
1249
+ right: "right";
1250
+ up: "up";
1251
+ down: "down";
1252
+ }>>;
1253
+ path: import("zod").ZodOptional<import("zod").ZodString>;
1254
+ orient: import("zod").ZodOptional<import("zod").ZodBoolean>;
1255
+ frames: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
1256
+ atMs: import("zod").ZodNumber;
1257
+ x: import("zod").ZodOptional<import("zod").ZodNumber>;
1258
+ y: import("zod").ZodOptional<import("zod").ZodNumber>;
1259
+ opacity: import("zod").ZodOptional<import("zod").ZodNumber>;
1260
+ scale: import("zod").ZodOptional<import("zod").ZodNumber>;
1261
+ rotate: import("zod").ZodOptional<import("zod").ZodNumber>;
1262
+ }, import("zod/v4/core").$strict>>>;
1263
+ x: import("zod").ZodOptional<import("zod").ZodString>;
1264
+ y: import("zod").ZodOptional<import("zod").ZodString>;
1265
+ t: import("zod").ZodOptional<import("zod").ZodTuple<[import("zod").ZodNumber, import("zod").ZodNumber], null>>;
1266
+ }, import("zod/v4/core").$strict>>;
1267
+ }, import("zod/v4/core").$strict>;
1268
+ }, import("zod/v4/core").$strict>>>;
1091
1269
  }, import("zod/v4/core").$strict>>;
1092
1270
  }, import("zod/v4/core").$strict>;
1093
1271
  }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
@@ -1113,9 +1291,9 @@ export declare const TYPERT: {
1113
1291
  callId: import("zod").ZodString;
1114
1292
  toolName: import("zod").ZodString;
1115
1293
  projection: import("zod").ZodEnum<{
1294
+ diff: "diff";
1116
1295
  "result-text": "result-text";
1117
1296
  terminal: "terminal";
1118
- diff: "diff";
1119
1297
  }>;
1120
1298
  fileIndex: import("zod").ZodOptional<import("zod").ZodNumber>;
1121
1299
  side: import("zod").ZodOptional<import("zod").ZodEnum<{
@@ -1294,9 +1472,9 @@ export declare const TYPERT: {
1294
1472
  callId: import("zod").ZodString;
1295
1473
  displayText: import("zod").ZodString;
1296
1474
  projection: import("zod").ZodOptional<import("zod").ZodEnum<{
1475
+ diff: "diff";
1297
1476
  "result-text": "result-text";
1298
1477
  terminal: "terminal";
1299
- diff: "diff";
1300
1478
  }>>;
1301
1479
  }, import("zod/v4/core").$strict>;
1302
1480
  action: import("zod").ZodLiteral<"create">;
@@ -1625,10 +1803,10 @@ export declare const TYPERT: {
1625
1803
  focused: import("zod").ZodBoolean;
1626
1804
  animation: import("zod").ZodOptional<import("zod").ZodObject<{
1627
1805
  name: import("zod").ZodEnum<{
1806
+ highlight: "highlight";
1628
1807
  "fade-in": "fade-in";
1629
1808
  "slide-in": "slide-in";
1630
1809
  pulse: "pulse";
1631
- highlight: "highlight";
1632
1810
  }>;
1633
1811
  durationMs: import("zod").ZodNumber;
1634
1812
  iterations: import("zod").ZodNumber;
@@ -1636,7 +1814,67 @@ export declare const TYPERT: {
1636
1814
  }, import("zod/v4/core").$strict>>;
1637
1815
  }, import("zod/v4/core").$strict>>;
1638
1816
  invalid: import("zod").ZodNumber;
1817
+ timeline: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodObject<{
1818
+ id: import("zod").ZodString;
1819
+ spec: import("zod").ZodObject<{
1820
+ durationMs: import("zod").ZodNumber;
1821
+ loop: import("zod").ZodOptional<import("zod").ZodBoolean>;
1822
+ beats: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
1823
+ atMs: import("zod").ZodNumber;
1824
+ caption: import("zod").ZodString;
1825
+ }, import("zod/v4/core").$strict>>>;
1826
+ tracks: import("zod").ZodArray<import("zod").ZodObject<{
1827
+ target: import("zod").ZodString;
1828
+ verb: import("zod").ZodEnum<{
1829
+ appear: "appear";
1830
+ disappear: "disappear";
1831
+ move: "move";
1832
+ scale: "scale";
1833
+ rotate: "rotate";
1834
+ highlight: "highlight";
1835
+ reveal: "reveal";
1836
+ follow: "follow";
1837
+ keyframes: "keyframes";
1838
+ parametric: "parametric";
1839
+ }>;
1840
+ startMs: import("zod").ZodOptional<import("zod").ZodNumber>;
1841
+ endMs: import("zod").ZodOptional<import("zod").ZodNumber>;
1842
+ easing: import("zod").ZodOptional<import("zod").ZodEnum<{
1843
+ linear: "linear";
1844
+ "ease-in": "ease-in";
1845
+ "ease-out": "ease-out";
1846
+ "ease-in-out": "ease-in-out";
1847
+ }>>;
1848
+ to: import("zod").ZodOptional<import("zod").ZodObject<{
1849
+ x: import("zod").ZodNumber;
1850
+ y: import("zod").ZodNumber;
1851
+ }, import("zod/v4/core").$strict>>;
1852
+ scale: import("zod").ZodOptional<import("zod").ZodNumber>;
1853
+ degrees: import("zod").ZodOptional<import("zod").ZodNumber>;
1854
+ direction: import("zod").ZodOptional<import("zod").ZodEnum<{
1855
+ left: "left";
1856
+ right: "right";
1857
+ up: "up";
1858
+ down: "down";
1859
+ }>>;
1860
+ path: import("zod").ZodOptional<import("zod").ZodString>;
1861
+ orient: import("zod").ZodOptional<import("zod").ZodBoolean>;
1862
+ frames: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
1863
+ atMs: import("zod").ZodNumber;
1864
+ x: import("zod").ZodOptional<import("zod").ZodNumber>;
1865
+ y: import("zod").ZodOptional<import("zod").ZodNumber>;
1866
+ opacity: import("zod").ZodOptional<import("zod").ZodNumber>;
1867
+ scale: import("zod").ZodOptional<import("zod").ZodNumber>;
1868
+ rotate: import("zod").ZodOptional<import("zod").ZodNumber>;
1869
+ }, import("zod/v4/core").$strict>>>;
1870
+ x: import("zod").ZodOptional<import("zod").ZodString>;
1871
+ y: import("zod").ZodOptional<import("zod").ZodString>;
1872
+ t: import("zod").ZodOptional<import("zod").ZodTuple<[import("zod").ZodNumber, import("zod").ZodNumber], null>>;
1873
+ }, import("zod/v4/core").$strict>>;
1874
+ }, import("zod/v4/core").$strict>;
1875
+ }, import("zod/v4/core").$strict>>>;
1639
1876
  }, import("zod/v4/core").$strict>;
1877
+ atMs: import("zod").ZodOptional<import("zod").ZodNumber>;
1640
1878
  }, import("zod/v4/core").$strict>>;
1641
1879
  }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
1642
1880
  kind: import("zod").ZodLiteral<"board-capture-accepted">;
@@ -1798,9 +2036,9 @@ export declare const TYPERT: {
1798
2036
  callId: import("zod").ZodString;
1799
2037
  toolName: import("zod").ZodString;
1800
2038
  projection: import("zod").ZodEnum<{
2039
+ diff: "diff";
1801
2040
  "result-text": "result-text";
1802
2041
  terminal: "terminal";
1803
- diff: "diff";
1804
2042
  }>;
1805
2043
  fileIndex: import("zod").ZodOptional<import("zod").ZodNumber>;
1806
2044
  side: import("zod").ZodOptional<import("zod").ZodEnum<{
@@ -1991,10 +2229,10 @@ export declare const TYPERT: {
1991
2229
  focused: import("zod").ZodBoolean;
1992
2230
  animation: import("zod").ZodOptional<import("zod").ZodObject<{
1993
2231
  name: import("zod").ZodEnum<{
2232
+ highlight: "highlight";
1994
2233
  "fade-in": "fade-in";
1995
2234
  "slide-in": "slide-in";
1996
2235
  pulse: "pulse";
1997
- highlight: "highlight";
1998
2236
  }>;
1999
2237
  durationMs: import("zod").ZodNumber;
2000
2238
  iterations: import("zod").ZodNumber;
@@ -2002,6 +2240,65 @@ export declare const TYPERT: {
2002
2240
  }, import("zod/v4/core").$strict>>;
2003
2241
  }, import("zod/v4/core").$strict>>;
2004
2242
  invalid: import("zod").ZodNumber;
2243
+ timeline: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodObject<{
2244
+ id: import("zod").ZodString;
2245
+ spec: import("zod").ZodObject<{
2246
+ durationMs: import("zod").ZodNumber;
2247
+ loop: import("zod").ZodOptional<import("zod").ZodBoolean>;
2248
+ beats: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
2249
+ atMs: import("zod").ZodNumber;
2250
+ caption: import("zod").ZodString;
2251
+ }, import("zod/v4/core").$strict>>>;
2252
+ tracks: import("zod").ZodArray<import("zod").ZodObject<{
2253
+ target: import("zod").ZodString;
2254
+ verb: import("zod").ZodEnum<{
2255
+ appear: "appear";
2256
+ disappear: "disappear";
2257
+ move: "move";
2258
+ scale: "scale";
2259
+ rotate: "rotate";
2260
+ highlight: "highlight";
2261
+ reveal: "reveal";
2262
+ follow: "follow";
2263
+ keyframes: "keyframes";
2264
+ parametric: "parametric";
2265
+ }>;
2266
+ startMs: import("zod").ZodOptional<import("zod").ZodNumber>;
2267
+ endMs: import("zod").ZodOptional<import("zod").ZodNumber>;
2268
+ easing: import("zod").ZodOptional<import("zod").ZodEnum<{
2269
+ linear: "linear";
2270
+ "ease-in": "ease-in";
2271
+ "ease-out": "ease-out";
2272
+ "ease-in-out": "ease-in-out";
2273
+ }>>;
2274
+ to: import("zod").ZodOptional<import("zod").ZodObject<{
2275
+ x: import("zod").ZodNumber;
2276
+ y: import("zod").ZodNumber;
2277
+ }, import("zod/v4/core").$strict>>;
2278
+ scale: import("zod").ZodOptional<import("zod").ZodNumber>;
2279
+ degrees: import("zod").ZodOptional<import("zod").ZodNumber>;
2280
+ direction: import("zod").ZodOptional<import("zod").ZodEnum<{
2281
+ left: "left";
2282
+ right: "right";
2283
+ up: "up";
2284
+ down: "down";
2285
+ }>>;
2286
+ path: import("zod").ZodOptional<import("zod").ZodString>;
2287
+ orient: import("zod").ZodOptional<import("zod").ZodBoolean>;
2288
+ frames: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
2289
+ atMs: import("zod").ZodNumber;
2290
+ x: import("zod").ZodOptional<import("zod").ZodNumber>;
2291
+ y: import("zod").ZodOptional<import("zod").ZodNumber>;
2292
+ opacity: import("zod").ZodOptional<import("zod").ZodNumber>;
2293
+ scale: import("zod").ZodOptional<import("zod").ZodNumber>;
2294
+ rotate: import("zod").ZodOptional<import("zod").ZodNumber>;
2295
+ }, import("zod/v4/core").$strict>>>;
2296
+ x: import("zod").ZodOptional<import("zod").ZodString>;
2297
+ y: import("zod").ZodOptional<import("zod").ZodString>;
2298
+ t: import("zod").ZodOptional<import("zod").ZodTuple<[import("zod").ZodNumber, import("zod").ZodNumber], null>>;
2299
+ }, import("zod/v4/core").$strict>>;
2300
+ }, import("zod/v4/core").$strict>;
2301
+ }, import("zod/v4/core").$strict>>>;
2005
2302
  }, import("zod/v4/core").$strict>>;
2006
2303
  }, import("zod/v4/core").$strict>;
2007
2304
  }, import("zod/v4/core").$strict>, import("zod").ZodObject<{
@@ -2027,9 +2324,9 @@ export declare const TYPERT: {
2027
2324
  callId: import("zod").ZodString;
2028
2325
  toolName: import("zod").ZodString;
2029
2326
  projection: import("zod").ZodEnum<{
2327
+ diff: "diff";
2030
2328
  "result-text": "result-text";
2031
2329
  terminal: "terminal";
2032
- diff: "diff";
2033
2330
  }>;
2034
2331
  fileIndex: import("zod").ZodOptional<import("zod").ZodNumber>;
2035
2332
  side: import("zod").ZodOptional<import("zod").ZodEnum<{
@@ -0,0 +1,90 @@
1
+ /** How the per-turn workspace notice reports changes. */
2
+ export type WorkspaceChangeMode = 'off' | 'summary' | 'diff';
3
+ /** One changed path between two snapshots. */
4
+ export interface WorkspaceFileChange {
5
+ readonly path: string;
6
+ readonly status: 'added' | 'modified' | 'deleted' | 'changed';
7
+ /** Added and deleted line counts; null for binary files. */
8
+ readonly added: number | null;
9
+ readonly deleted: number | null;
10
+ }
11
+ /** Persisted snapshot cursor of one Topic. */
12
+ export interface WorkspaceSnapshotState {
13
+ readonly version: 1;
14
+ readonly root: string;
15
+ /** Tree recorded when the latest turn began. */
16
+ readonly tree: string;
17
+ readonly time: number;
18
+ /** Tree recorded when the turn before it began; null before the second turn. */
19
+ readonly previousTree: string | null;
20
+ readonly previousTime: number | null;
21
+ }
22
+ /** Result of advancing the snapshot at the start of a turn. */
23
+ export interface WorkspaceAdvance {
24
+ readonly state: WorkspaceSnapshotState;
25
+ /** Changes since the previous snapshot; null on the first snapshot. */
26
+ readonly files: readonly WorkspaceFileChange[] | null;
27
+ readonly elapsedMs: number | null;
28
+ }
29
+ /** Parse the persisted cursor field by field; anything malformed means no snapshot. */
30
+ export declare function readWorkspaceState(raw: unknown): WorkspaceSnapshotState | null;
31
+ /** Parse `git diff --numstat -z` and `--name-status -z` output (without rename detection). */
32
+ export declare function parseWorkspaceChanges(numstat: string, nameStatus: string): WorkspaceFileChange[];
33
+ /** Snapshots of one Topic's working directory, stored under a Citer-owned directory. */
34
+ export declare class WorkspaceSnapshots {
35
+ private readonly directory;
36
+ private readonly cwd;
37
+ /**
38
+ * @param directory - Citer-owned directory for the private index, objects and cursor.
39
+ * @param cwd - the Topic's working directory inside a git work tree.
40
+ */
41
+ constructor(directory: string, cwd: string);
42
+ private repository;
43
+ private environment;
44
+ private stage;
45
+ /** Read the persisted cursor, or null before the first snapshot. */
46
+ state(): Promise<WorkspaceSnapshotState | null>;
47
+ private save;
48
+ private changes;
49
+ /**
50
+ * Record a new snapshot at the start of a turn and report what changed since the previous one.
51
+ * @param now - snapshot time.
52
+ * @returns the new cursor and changes, or null outside a git work tree.
53
+ */
54
+ advance(now: number, signal?: AbortSignal): Promise<WorkspaceAdvance | null>;
55
+ /**
56
+ * Delete loose objects in the Citer-owned store that the kept trees no longer reach.
57
+ * Only this store is touched; objects in the repository (the alternate) are never candidates.
58
+ */
59
+ private prune;
60
+ /**
61
+ * Diff the snapshot taken when the previous turn began (or this turn, before a previous one exists) against the live working tree.
62
+ * @param paths - optional repository-relative paths to restrict the patch.
63
+ * @returns changed files and their unified patches, or null when nothing has been recorded.
64
+ */
65
+ live(paths: readonly string[], signal?: AbortSignal): Promise<{
66
+ readonly baseTime: number;
67
+ readonly files: readonly WorkspaceFileChange[];
68
+ readonly patch: string;
69
+ } | null>;
70
+ /** Unified patch of one path between two recorded trees. */
71
+ filePatch(from: string, to: string, path: string, signal?: AbortSignal): Promise<string>;
72
+ }
73
+ /** Human-readable elapsed time such as "2h 13m" or "45s". */
74
+ export declare function formatElapsed(ms: number): string;
75
+ /** Markdown list of changed files with a total line count. */
76
+ export declare function renderFileList(files: readonly WorkspaceFileChange[]): string;
77
+ /** Name of the model tool that reads workspace changes. */
78
+ export declare const WORKSPACE_CHANGES_TOOL = "workspace_changes";
79
+ /**
80
+ * Compose the per-turn workspace notice injected before the first step of a turn.
81
+ * @param input - elapsed time, repository root, changed files, per-file patches (diff mode) and byte budget.
82
+ * @returns the Markdown notice.
83
+ */
84
+ export declare function renderWorkspaceNotice(input: {
85
+ readonly elapsedMs: number;
86
+ readonly root: string;
87
+ readonly files: readonly WorkspaceFileChange[];
88
+ readonly patches?: ReadonlyMap<string, string>;
89
+ readonly budgetBytes?: number;
90
+ }): string;