@neta-art/cohub 3.1.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/README.md +33 -2
  2. package/dist/{board.d.ts → board/animation.d.ts} +4 -2
  3. package/dist/{chunks/board.js → board/animation.js} +5 -44
  4. package/dist/board/codec.d.ts +25 -0
  5. package/dist/board/codec.js +243 -0
  6. package/dist/board/core/bindings.d.ts +45 -0
  7. package/dist/board/core/bindings.js +162 -0
  8. package/dist/board/core/draw-geometry.d.ts +30 -0
  9. package/dist/board/core/draw-geometry.js +175 -0
  10. package/dist/board/core/export-assets.d.ts +14 -0
  11. package/dist/board/core/export-assets.js +22 -0
  12. package/dist/board/core/export-plan.d.ts +84 -0
  13. package/dist/board/core/export-plan.js +128 -0
  14. package/dist/board/core/file-preview.d.ts +178 -0
  15. package/dist/board/core/file-preview.js +282 -0
  16. package/dist/board/core/palette.d.ts +42 -0
  17. package/dist/board/core/palette.js +166 -0
  18. package/dist/board/core/shape-definition.d.ts +35 -0
  19. package/dist/board/core/shape-definition.js +64 -0
  20. package/dist/board/core/shape-types.d.ts +140 -0
  21. package/dist/board/core/shape-types.js +27 -0
  22. package/dist/board/core/text-metrics.d.ts +18 -0
  23. package/dist/board/core/text-metrics.js +43 -0
  24. package/dist/board/core/tool-styles.d.ts +52 -0
  25. package/dist/board/core/tool-styles.js +51 -0
  26. package/dist/board/export/index.d.ts +56 -0
  27. package/dist/board/export/index.js +86 -0
  28. package/dist/board/export/scene.d.ts +35 -0
  29. package/dist/board/export/scene.js +69 -0
  30. package/dist/board/geometry.d.ts +139 -0
  31. package/dist/board/geometry.js +492 -0
  32. package/dist/board/headless/index.d.ts +69 -0
  33. package/dist/board/headless/index.js +150 -0
  34. package/dist/board/image-key.d.ts +19 -0
  35. package/dist/board/image-key.js +34 -0
  36. package/dist/board/index.d.ts +17 -0
  37. package/dist/board/index.js +17 -0
  38. package/dist/board/render/index.d.ts +6 -0
  39. package/dist/board/render/index.js +6 -0
  40. package/dist/board/render/palette.d.ts +5 -0
  41. package/dist/board/render/palette.js +30 -0
  42. package/dist/board/render/renderers/arrow-card-renderer.d.ts +5 -0
  43. package/dist/board/render/renderers/arrow-card-renderer.js +157 -0
  44. package/dist/board/render/renderers/base-card-renderer.d.ts +46 -0
  45. package/dist/board/render/renderers/base-card-renderer.js +153 -0
  46. package/dist/board/render/renderers/board-renderer-registry.d.ts +85 -0
  47. package/dist/board/render/renderers/board-renderer-registry.js +41 -0
  48. package/dist/board/render/renderers/draw-card-renderer.d.ts +5 -0
  49. package/dist/board/render/renderers/draw-card-renderer.js +82 -0
  50. package/dist/board/render/renderers/far-plate.d.ts +39 -0
  51. package/dist/board/render/renderers/far-plate.js +92 -0
  52. package/dist/board/render/renderers/file-card-renderer.d.ts +40 -0
  53. package/dist/board/render/renderers/file-card-renderer.js +350 -0
  54. package/dist/board/render/renderers/frame-card-renderer.d.ts +5 -0
  55. package/dist/board/render/renderers/frame-card-renderer.js +99 -0
  56. package/dist/board/render/renderers/geo-card-renderer.d.ts +5 -0
  57. package/dist/board/render/renderers/geo-card-renderer.js +128 -0
  58. package/dist/board/render/renderers/image-card-renderer.d.ts +8 -0
  59. package/dist/board/render/renderers/image-card-renderer.js +138 -0
  60. package/dist/board/render/renderers/text-card-renderer.d.ts +7 -0
  61. package/dist/board/render/renderers/text-card-renderer.js +94 -0
  62. package/dist/board/render/renderers/unknown-card-renderer.d.ts +5 -0
  63. package/dist/board/render/renderers/unknown-card-renderer.js +102 -0
  64. package/dist/board/render/renderers/video-card-renderer.d.ts +7 -0
  65. package/dist/board/render/renderers/video-card-renderer.js +146 -0
  66. package/dist/board/render/text-measurement.d.ts +30 -0
  67. package/dist/board/render/text-measurement.js +57 -0
  68. package/dist/board/render/text-resolution.d.ts +16 -0
  69. package/dist/board/render/text-resolution.js +43 -0
  70. package/dist/board/render/themes/board-theme-registry.d.ts +22 -0
  71. package/dist/board/render/themes/board-theme-registry.js +13 -0
  72. package/dist/board/render/themes/clean-theme.d.ts +5 -0
  73. package/dist/board/render/themes/clean-theme.js +105 -0
  74. package/dist/chunks/http.d.ts +2 -3
  75. package/dist/chunks/http.js +4 -0
  76. package/dist/chunks/websocket.d.ts +851 -353
  77. package/dist/http.d.ts +1 -2
  78. package/dist/index.d.ts +100 -5
  79. package/dist/index.js +391 -1
  80. package/dist/protocol/dist/board-constants.d.ts +23 -0
  81. package/dist/protocol/dist/board-constants.js +61 -0
  82. package/dist/protocol/dist/board-document.d.ts +1047 -0
  83. package/dist/protocol/dist/board-document.js +321 -0
  84. package/dist/protocol/dist/board.d.ts +186 -0
  85. package/dist/protocol/dist/board.js +207 -0
  86. package/dist/protocol/dist/index.d.ts +5 -0
  87. package/dist/protocol/dist/index.js +5 -0
  88. package/dist/protocol/dist/provenance.js +12 -0
  89. package/dist/protocol/dist/realtime/board-awareness.d.ts +1 -0
  90. package/dist/protocol/dist/realtime/board-awareness.js +119 -0
  91. package/dist/protocol/dist/realtime/types.d.ts +2 -0
  92. package/package.json +40 -4
  93. package/dist/board.js +0 -2
  94. package/dist/chunks/board.d.ts +0 -2589
@@ -0,0 +1,13 @@
1
+ import { cleanBoardTheme } from "./clean-theme.js";
2
+ //#region src/board/render/themes/board-theme-registry.ts
3
+ const boardThemeRenderers = [cleanBoardTheme];
4
+ function getBoardThemeRenderer(document) {
5
+ return boardThemeRenderers.find((renderer) => renderer.canRender(document)) ?? cleanBoardTheme;
6
+ }
7
+ function registerBoardThemeRenderer(renderer) {
8
+ const existingIndex = boardThemeRenderers.findIndex((candidate) => candidate.id === renderer.id);
9
+ if (existingIndex >= 0) boardThemeRenderers.splice(existingIndex, 1, renderer);
10
+ else boardThemeRenderers.unshift(renderer);
11
+ }
12
+ //#endregion
13
+ export { getBoardThemeRenderer, registerBoardThemeRenderer };
@@ -0,0 +1,5 @@
1
+ import { BoardThemeRenderer } from "./board-theme-registry.js";
2
+ //#region src/board/render/themes/clean-theme.d.ts
3
+ declare const cleanBoardTheme: BoardThemeRenderer;
4
+ //#endregion
5
+ export { cleanBoardTheme };
@@ -0,0 +1,105 @@
1
+ import { Container, Graphics, RenderTexture, TilingSprite } from "pixi.js";
2
+ //#region src/board/render/themes/clean-theme.ts
3
+ const partsByContainer = /* @__PURE__ */ new WeakMap();
4
+ /** Positive modulo so tile offsets stay valid for negative viewport offsets. */
5
+ function wrap(value, period) {
6
+ return (value % period + period) % period;
7
+ }
8
+ function buildGridTexture(context, size, color, opacity, kind = "dots") {
9
+ const graphics = new Graphics();
10
+ if (kind === "grid") graphics.moveTo(0, .5).lineTo(size, .5).moveTo(.5, 0).lineTo(.5, size).stroke({
11
+ color,
12
+ width: 1,
13
+ alpha: opacity
14
+ });
15
+ else graphics.circle(.5, .5, .9).fill({
16
+ color,
17
+ alpha: opacity
18
+ });
19
+ const target = RenderTexture.create({
20
+ width: size,
21
+ height: size
22
+ });
23
+ context.app.renderer.render({
24
+ container: graphics,
25
+ target
26
+ });
27
+ graphics.destroy();
28
+ return target;
29
+ }
30
+ function sync(parts, context) {
31
+ const { app, document, viewport, palette } = context;
32
+ const width = app.screen.width;
33
+ const height = app.screen.height;
34
+ const bgAlpha = context.hasImageBackground ? 0 : 1;
35
+ if (parts.lastWidth !== width || parts.lastHeight !== height || parts.lastBg !== palette.bg || parts.lastBgAlpha !== bgAlpha) {
36
+ parts.fill.clear();
37
+ parts.fill.rect(0, 0, width, height).fill({
38
+ color: palette.bg,
39
+ alpha: bgAlpha
40
+ });
41
+ parts.lastWidth = width;
42
+ parts.lastHeight = height;
43
+ parts.lastBg = palette.bg;
44
+ parts.lastBgAlpha = bgAlpha;
45
+ }
46
+ const appearance = document.appearance;
47
+ const visible = appearance.grid?.visible === true;
48
+ const size = Math.max(4, appearance.grid?.size ?? 24);
49
+ const opacity = appearance.grid?.opacity ?? .12;
50
+ const kind = appearance.background?.kind === "grid" ? "grid" : "dots";
51
+ const key = `${kind}|${size}|${palette.border}|${opacity}`;
52
+ if (!visible) {
53
+ if (parts.sprite) parts.sprite.visible = false;
54
+ return;
55
+ }
56
+ if (parts.textureKey !== key || !parts.sprite) {
57
+ if (parts.sprite) {
58
+ const previousTexture = parts.sprite.texture;
59
+ parts.sprite.destroy();
60
+ previousTexture.destroy(true);
61
+ }
62
+ parts.sprite = new TilingSprite({
63
+ texture: buildGridTexture(context, size, palette.border, opacity, kind),
64
+ width,
65
+ height
66
+ });
67
+ parts.textureKey = key;
68
+ parts.fill.parent?.addChild(parts.sprite);
69
+ }
70
+ const sprite = parts.sprite;
71
+ if (!sprite) return;
72
+ sprite.visible = true;
73
+ sprite.width = width;
74
+ sprite.height = height;
75
+ const step = size * viewport.zoom;
76
+ sprite.tileScale.set(viewport.zoom);
77
+ sprite.tilePosition.set(wrap(viewport.x, step), wrap(viewport.y, step));
78
+ }
79
+ const cleanBoardTheme = {
80
+ id: "clean",
81
+ canRender: () => true,
82
+ createBackground: (context) => {
83
+ const container = new Container();
84
+ const fill = new Graphics();
85
+ container.addChild(fill);
86
+ const parts = {
87
+ fill,
88
+ sprite: null,
89
+ textureKey: "",
90
+ lastWidth: -1,
91
+ lastHeight: -1,
92
+ lastBg: NaN,
93
+ lastBgAlpha: NaN
94
+ };
95
+ partsByContainer.set(container, parts);
96
+ sync(parts, context);
97
+ return container;
98
+ },
99
+ updateBackground: (container, context) => {
100
+ const parts = partsByContainer.get(container);
101
+ if (parts) sync(parts, context);
102
+ }
103
+ };
104
+ //#endregion
105
+ export { cleanBoardTheme };
@@ -1,5 +1,4 @@
1
- import { a as BoardCreateInput, b as BoardTransaction, g as BoardPlaybackSnapshot, h as BoardPlaybackCommand, l as BoardInspectInput, n as BoardBootstrap, r as BoardCapabilities, x as BoardValidationResult } from "./board.js";
2
- import { $ as CreateSpacePromptInput, $r as BoardPlaybackChangedEvent$1, Ar as UserSessionsResponse, At as ModelCatalogEntry, Bi as ContentBlock, Bn as SpaceFsCreateUploadResponse, Cn as SpaceCommerceBuyerProfile, Dn as SpaceCommerceProduct, Dr as UserRulesResponse, Ei as SessionForkRecord, En as SpaceCommerceOrder, Er as UserProfile, Et as LabelResourceType, Fi as CreateSpaceCompletionInput, Fn as SpaceDefaultResponse, Gn as SpaceFsMoveInput, Gt as ReferenceDirection, In as SpaceEnvInput, It as PromptTemplateCatalogResponse, J as ClaimReferralResponse, Jt as ReferenceQueryableType, K as CheckpointDiffSummary, Kn as SpaceFsPreparingFile, Kt as ReferenceKind, Li as SpaceCompletionResult, Ln as SpaceFsCompleteUploadInput, Lt as PublicReferral, Mn as SpaceConfigResponse, Mr as ChannelHealth, Mt as PatchResourceLabelsResponse, Nn as SpaceConfigUpdateResponse, Nt as Permission, On as SpaceCommerceProductBenefitBinding, Pn as SpaceCreateResponse, Qr as BoardAwarenessUpdatedEvent$1, R as Channel, Ri as SpaceCompletionStreamEvent, Rn as SpaceFsCompleteUploadResponse, Rt as PublicUserPageResponse, Sn as SpaceCommerceBenefit, Sr as SpaceUsageResponse, St as LabelItemsResponse, Ti as MessageRecord, Tr as TaskRunRecord, Ut as ReferenceAggregateGroupBy, V as CheckpointDiffFileResponse, Vi as BillingPayload, Wn as SpaceFsFileResponse, Wt as ReferenceAggregateResponse, X as CreateInvitationResponse, Xn as SpaceFsTreeResponse, Xr as GenerationModelDeclaration, Y as CreateInvitationInput, Yn as SpaceFsReadFilesResponse, Yr as GenerationContentBlock, Z as CreateSpaceInput, Zt as ReferralDashboard, a as WebsocketClientOptions, ai as SessionTurnPatchEvent, an as SessionMessageResponse, ar as SpaceInvitation, at as CursorPageInfo, bi as SpacePublicEndpoints, br as SpaceSessionsResponse, cn as SessionRecord, d as BatchUserProfilesResponse, dn as SessionTurnSignedUrlsResponse, dr as SpacePendingDiffSummary, ei as BoardTransactionAppliedEvent$1, et as CreateSpacePromptResponse, fn as SessionTurnStreamSnapshotResponse, fr as SpacePresenceSnapshot, ft as GlobalSearchResponse, gn as SkillCatalogResponse, gr as SpaceRole, hr as SpaceRecord, ht as InvitationDetail, ir as SpaceFsWriteFileInput, it as CronJobUpdatePatch, jn as SpaceConfigInput, jr as ChannelConfig, jt as PatchResourceLabelsInput, ki as SessionTurnRecord, kt as MeResponse, l as AcceptInvitationResponse, li as RequestSource, ln as SessionTurnIndexResponse, lr as SpaceModListItem, mn as SessionTurnsPaginatedResponse, mr as SpacePublicProfile, mt as GlobalSearchType, on as SessionMessagesPaginatedResponse, pn as SessionTurnWindowResponse, q as CheckpointRecord, qt as ReferenceQueryResponse, r as WebsocketClient, ri as RealtimePatchOperation, rr as SpaceFsUploadResponse, rt as CronJobRecord, s as WebsocketEventPayload, sn as SessionMessagesResponse, sr as SpaceMember, tt as CreateSpaceSessionInput, un as SessionTurnResponse, ur as SpacePendingDiffFileResponse, vn as SpaceAccessPolicy, wi as BoardAwarenessUpdate, wr as TaskRunDetailResponse, wt as LabelListItem, xn as SpaceCheckpointDetailResponse, xt as LabelAssignmentRecord, zi as Usage, zn as SpaceFsCreateUploadInput } from "./websocket.js";
1
+ import { $ as CreateSpacePromptInput, $i as ContentBlock, $r as BoardPlaybackChangedEvent$1, Ar as UserSessionsResponse, At as ModelCatalogEntry, Bn as SpaceFsCreateUploadResponse, Cn as SpaceCommerceBuyerProfile, Di as BoardPlaybackCommand, Dn as SpaceCommerceProduct, Dr as UserRulesResponse, En as SpaceCommerceOrder, Er as UserProfile, Et as LabelResourceType, Fn as SpaceDefaultResponse, Gn as SpaceFsMoveInput, Gt as ReferenceDirection, Ii as SpacePublicEndpoints, In as SpaceEnvInput, It as PromptTemplateCatalogResponse, J as ClaimReferralResponse, Jt as ReferenceQueryableType, K as CheckpointDiffSummary, Kn as SpaceFsPreparingFile, Kt as ReferenceKind, Li as MessageRecord, Ln as SpaceFsCompleteUploadInput, Lt as PublicReferral, Mi as BoardTransaction, Mn as SpaceConfigResponse, Mr as ChannelHealth, Mt as PatchResourceLabelsResponse, Ni as BoardValidationResult, Nn as SpaceConfigUpdateResponse, Nt as Permission, Oi as BoardPlaybackSnapshot, On as SpaceCommerceProductBenefitBinding, Pn as SpaceCreateResponse, Qi as BillingPayload, Qr as BoardAwarenessUpdatedEvent$1, R as Channel, Ri as SessionForkRecord, Rn as SpaceFsCompleteUploadResponse, Rt as PublicUserPageResponse, Sn as SpaceCommerceBenefit, Sr as SpaceUsageResponse, St as LabelItemsResponse, Tr as TaskRunRecord, Ut as ReferenceAggregateGroupBy, V as CheckpointDiffFileResponse, Vi as SessionTurnRecord, Wn as SpaceFsFileResponse, Wt as ReferenceAggregateResponse, X as CreateInvitationResponse, Xi as SpaceCompletionStreamEvent, Xn as SpaceFsTreeResponse, Xr as GenerationModelDeclaration, Y as CreateInvitationInput, Yi as SpaceCompletionResult, Yn as SpaceFsReadFilesResponse, Yr as GenerationContentBlock, Z as CreateSpaceInput, Zi as Usage, Zt as ReferralDashboard, _i as BoardCreateInput, a as WebsocketClientOptions, an as SessionMessageResponse, ar as SpaceInvitation, at as CursorPageInfo, br as SpaceSessionsResponse, cn as SessionRecord, d as BatchUserProfilesResponse, dn as SessionTurnSignedUrlsResponse, dr as SpacePendingDiffSummary, ei as BoardTransactionAppliedEvent$1, et as CreateSpacePromptResponse, fi as BoardAwarenessUpdate, fn as SessionTurnStreamSnapshotResponse, fr as SpacePresenceSnapshot, ft as GlobalSearchResponse, gn as SkillCatalogResponse, gr as SpaceRole, hi as BoardCapabilities, hr as SpaceRecord, ht as InvitationDetail, ir as SpaceFsWriteFileInput, it as CronJobUpdatePatch, jn as SpaceConfigInput, jr as ChannelConfig, jt as PatchResourceLabelsInput, kt as MeResponse, l as AcceptInvitationResponse, ln as SessionTurnIndexResponse, lr as SpaceModListItem, mi as BoardBootstrap, mn as SessionTurnsPaginatedResponse, mr as SpacePublicProfile, mt as GlobalSearchType, on as SessionMessagesPaginatedResponse, pn as SessionTurnWindowResponse, q as CheckpointRecord, qi as CreateSpaceCompletionInput, qt as ReferenceQueryResponse, r as WebsocketClient, ra as RequestSource, ri as RealtimePatchOperation, rr as SpaceFsUploadResponse, rt as CronJobRecord, s as WebsocketEventPayload, si as SessionTurnPatchEvent, sn as SessionMessagesResponse, sr as SpaceMember, tt as CreateSpaceSessionInput, un as SessionTurnResponse, ur as SpacePendingDiffFileResponse, vn as SpaceAccessPolicy, wr as TaskRunDetailResponse, wt as LabelListItem, xi as BoardInspectInput, xn as SpaceCheckpointDetailResponse, xt as LabelAssignmentRecord, zn as SpaceFsCreateUploadInput } from "./websocket.js";
3
2
  import { n as CohubEnvironment } from "./environment.js";
4
3
  import { a as VoiceInputCreateOptions } from "./voice-input.js";
5
4
  //#region ../protocol/dist/model/status.d.ts
@@ -883,7 +882,7 @@ type SessionSubscriptionHandlers = {
883
882
  event?: (event: WebsocketEventPayload) => void;
884
883
  };
885
884
  type SessionEventName = "created" | "updated" | "turn.created" | "turn.patch" | "turn.lifecycle" | "turn.updated" | "turn.finalized" | "turn.error" | "message.persisted";
886
- type SpaceEventName = SessionEventName | "fs.changed" | "ports.changed" | "presence.updated" | "board.transaction.applied" | "board.playback.changed" | "task.created" | "task.updated" | "event";
885
+ type SpaceEventName = SessionEventName | "fs.changed" | "ports.changed" | "presence.updated" | "board.transaction.applied" | "board.playback.changed" | "work.version.published" | "task.created" | "task.updated" | "event";
887
886
  declare class SpacesApi {
888
887
  private readonly transport;
889
888
  constructor(transport: HttpTransport);
@@ -1818,6 +1818,10 @@ var SpaceEventsApi = class {
1818
1818
  handler(event);
1819
1819
  return;
1820
1820
  }
1821
+ if (type === "work.version.published" && event.type === "work.version.published") {
1822
+ handler(event);
1823
+ return;
1824
+ }
1821
1825
  if (type === "task.created" && event.type === "task.created") {
1822
1826
  handler(event);
1823
1827
  return;