@schoolai/shipyard 3.18.0 → 3.18.1-rc.20260629.1

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 (45) hide show
  1. package/dist/capability-detector-worker.js +6 -6
  2. package/dist/{chunk-CTCRVL3I.js → chunk-4AUX3FMD.js} +2 -2
  3. package/dist/chunk-4AUX3FMD.js.map +1 -0
  4. package/dist/{chunk-H2NFBWK7.js → chunk-5GY7WGIC.js} +6 -5
  5. package/dist/{chunk-H2NFBWK7.js.map → chunk-5GY7WGIC.js.map} +1 -1
  6. package/dist/{chunk-ETUNY4NF.js → chunk-BK24XTBR.js} +375 -4
  7. package/dist/chunk-BK24XTBR.js.map +1 -0
  8. package/dist/{chunk-D3JA5MXR.js → chunk-CKQL7TWQ.js} +4 -3
  9. package/dist/{chunk-D3JA5MXR.js.map → chunk-CKQL7TWQ.js.map} +1 -1
  10. package/dist/{chunk-LXIRZZFC.js → chunk-D6RYU2JU.js} +14 -5
  11. package/dist/{chunk-LXIRZZFC.js.map → chunk-D6RYU2JU.js.map} +1 -1
  12. package/dist/{chunk-72CO4KIJ.js → chunk-E74MXZWW.js} +2 -2
  13. package/dist/{chunk-RM4WIKPZ.js → chunk-K4HUYO2V.js} +3 -3
  14. package/dist/{chunk-NIVME6MT.js → chunk-LN2AW36U.js} +134 -53
  15. package/dist/chunk-LN2AW36U.js.map +1 -0
  16. package/dist/{chunk-UD4BVZOD.js → chunk-PXZCSRS5.js} +5 -5
  17. package/dist/chunk-PXZCSRS5.js.map +1 -0
  18. package/dist/{chunk-UTLVWPBT.js → chunk-VDK5N7EH.js} +38 -2
  19. package/dist/chunk-VDK5N7EH.js.map +1 -0
  20. package/dist/{chunk-DHYIAHZN.js → chunk-XXRTRTG4.js} +2 -2
  21. package/dist/cursor-runner.js +14 -7
  22. package/dist/cursor-runner.js.map +1 -1
  23. package/dist/electron-utility.js +2 -2
  24. package/dist/{git-repo-KK5ZNJUW.js → git-repo-6DHYJICW.js} +2 -2
  25. package/dist/index.js +4 -4
  26. package/dist/{login-53IPU5BJ.js → login-4AUKCCVX.js} +3 -3
  27. package/dist/{mcp-servers-WZF27B7W.js → mcp-servers-Z3LIT6CL.js} +2 -2
  28. package/dist/{plan-backfill-2AOFAPND.js → plan-backfill-X4FGEJ4G.js} +4 -4
  29. package/dist/{serve-NTV6KMY3.js → serve-IP4COF55.js} +12370 -11791
  30. package/dist/{serve-NTV6KMY3.js.map → serve-IP4COF55.js.map} +1 -1
  31. package/dist/{start-MW3BBTC3.js → start-P57AEVJI.js} +6 -6
  32. package/package.json +10 -10
  33. package/dist/chunk-CTCRVL3I.js.map +0 -1
  34. package/dist/chunk-ETUNY4NF.js.map +0 -1
  35. package/dist/chunk-NIVME6MT.js.map +0 -1
  36. package/dist/chunk-UD4BVZOD.js.map +0 -1
  37. package/dist/chunk-UTLVWPBT.js.map +0 -1
  38. /package/dist/{chunk-72CO4KIJ.js.map → chunk-E74MXZWW.js.map} +0 -0
  39. /package/dist/{chunk-RM4WIKPZ.js.map → chunk-K4HUYO2V.js.map} +0 -0
  40. /package/dist/{chunk-DHYIAHZN.js.map → chunk-XXRTRTG4.js.map} +0 -0
  41. /package/dist/{git-repo-KK5ZNJUW.js.map → git-repo-6DHYJICW.js.map} +0 -0
  42. /package/dist/{login-53IPU5BJ.js.map → login-4AUKCCVX.js.map} +0 -0
  43. /package/dist/{mcp-servers-WZF27B7W.js.map → mcp-servers-Z3LIT6CL.js.map} +0 -0
  44. /package/dist/{plan-backfill-2AOFAPND.js.map → plan-backfill-X4FGEJ4G.js.map} +0 -0
  45. /package/dist/{start-MW3BBTC3.js.map → start-P57AEVJI.js.map} +0 -0
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  PUBLISHED_PREVIEW_KINDS,
4
4
  PUBLISH_TTL_CHOICES
5
- } from "./chunk-UD4BVZOD.js";
5
+ } from "./chunk-PXZCSRS5.js";
6
6
  import {
7
7
  external_exports
8
8
  } from "./chunk-JCEWPG3R.js";
@@ -7064,6 +7064,340 @@ var TiptapElementDataSchema = external_exports.object({
7064
7064
  content: external_exports.string().optional()
7065
7065
  }).passthrough().nullish();
7066
7066
 
7067
+ // ../../packages/loro-schema/src/collab-policy.ts
7068
+ var ALL_COLLAB_CAPABILITIES = [
7069
+ "read_messages",
7070
+ "send_message",
7071
+ "stop_agent",
7072
+ "cancel_queued",
7073
+ "rewind",
7074
+ "respond_permission",
7075
+ "read_capabilities",
7076
+ "enhance_prompt",
7077
+ "configure_task",
7078
+ "change_model",
7079
+ "set_permission_mode",
7080
+ "configure_task_tools",
7081
+ "read_pr",
7082
+ "act_on_pr",
7083
+ "review_plan",
7084
+ "join_collab",
7085
+ "manage_integrations",
7086
+ "manage_resources",
7087
+ "manage_worktrees",
7088
+ "browse_local_filesystem",
7089
+ "manage_workspace",
7090
+ "navigate_url",
7091
+ "comment",
7092
+ "read_task",
7093
+ "create_thread",
7094
+ "manage_session",
7095
+ "client_housekeeping",
7096
+ "client_metrics",
7097
+ "update_presence",
7098
+ "manage_themes",
7099
+ "manage_schedules",
7100
+ "manage_templates",
7101
+ "manage_todos",
7102
+ "set_task_capabilities",
7103
+ "read_files",
7104
+ "edit_files",
7105
+ "use_terminal",
7106
+ "download_assets",
7107
+ "upload_assets",
7108
+ "use_preview",
7109
+ "view_collab_docs",
7110
+ "edit_plan",
7111
+ "edit_canvas"
7112
+ ];
7113
+ var CAPABILITY_BY_ACTION = {
7114
+ send_message: "send_message",
7115
+ stop: "stop_agent",
7116
+ subscribe: "read_messages",
7117
+ cancel_queued: "cancel_queued",
7118
+ rewind_request: "rewind",
7119
+ rewind_preview_request: "rewind",
7120
+ fetch_older: "read_messages",
7121
+ permission_response: "respond_permission",
7122
+ permission_response_codex: "respond_permission",
7123
+ permission_response_cursor: "respond_permission",
7124
+ update_settings: "manage_workspace",
7125
+ update_task_settings: "configure_task",
7126
+ update_thread_settings: "configure_task",
7127
+ request_capabilities: "read_capabilities",
7128
+ request_skills: "manage_integrations",
7129
+ enhance_prompt: "enhance_prompt",
7130
+ mcp_server_reauth: "manage_integrations",
7131
+ mcp_submit_oauth_callback: "manage_integrations",
7132
+ request_mcp_toggle: "configure_task_tools",
7133
+ request_skill_toggle: "manage_integrations",
7134
+ request_codex_thread_restart: "manage_session",
7135
+ anthropic_login_request: "manage_integrations",
7136
+ anthropic_logout_request: "manage_integrations",
7137
+ codex_login_request: "manage_integrations",
7138
+ codex_logout_request: "manage_integrations",
7139
+ cursor_login_request: "manage_integrations",
7140
+ cursor_logout_request: "manage_integrations",
7141
+ request_pr_data: "read_pr",
7142
+ pause_pr_polling: "act_on_pr",
7143
+ pr_action: "act_on_pr",
7144
+ plan_continue: "review_plan",
7145
+ plugin_data_request: "manage_integrations",
7146
+ plugin_auth_request: "manage_integrations",
7147
+ plugin_cc_install: "manage_integrations",
7148
+ plugin_cc_uninstall: "manage_integrations",
7149
+ join_collab_room: "join_collab",
7150
+ leave_collab_room: "join_collab",
7151
+ resource_subscribe: "manage_resources",
7152
+ resource_unsubscribe: "manage_resources",
7153
+ resource_read_request: "manage_resources",
7154
+ create_worktree: "manage_worktrees",
7155
+ list_worktrees: "manage_worktrees",
7156
+ remove_worktree: "manage_worktrees",
7157
+ list_directories: "browse_local_filesystem",
7158
+ open_folder_dialog: "browse_local_filesystem",
7159
+ create_task: "manage_workspace",
7160
+ update_task_title: "manage_workspace",
7161
+ request_task_index: "manage_workspace",
7162
+ update_user_setting: "manage_workspace",
7163
+ request_user_settings: "manage_workspace",
7164
+ reimport_spinner_verbs: "manage_workspace",
7165
+ request_preview_target: "navigate_url",
7166
+ request_pin_to_canvas: "navigate_url",
7167
+ add_annotation: "comment",
7168
+ resolve_annotation: "comment",
7169
+ delete_annotation: "comment",
7170
+ mark_annotation_delivered: "comment",
7171
+ request_annotation_snapshot: "read_task",
7172
+ request_viz_content_batch: "read_task",
7173
+ request_annotation_detail: "read_task",
7174
+ request_deliverables_snapshot: "read_task",
7175
+ request_task_state: "read_task",
7176
+ request_task_detail: "read_task",
7177
+ request_task_index_version: "manage_workspace",
7178
+ request_task_search: "read_task",
7179
+ request_review_tasks: "read_task",
7180
+ request_inbox_snapshot: "read_task",
7181
+ create_thread: "create_thread",
7182
+ list_threads: "read_task",
7183
+ install_agent: "manage_integrations",
7184
+ refresh_agent_providers: "manage_integrations",
7185
+ compact_session: "manage_session",
7186
+ cancel_compact_session: "manage_session",
7187
+ dismiss_compaction_failure: "client_housekeeping",
7188
+ clear_session: "manage_session",
7189
+ environment_changed: "manage_workspace",
7190
+ acknowledge_task: "manage_workspace",
7191
+ set_task_color: "manage_workspace",
7192
+ set_project_color: "manage_workspace",
7193
+ toggle_favorite_task: "manage_workspace",
7194
+ set_task_project: "manage_workspace",
7195
+ archive_task: "manage_workspace",
7196
+ unarchive_task: "manage_workspace",
7197
+ create_project: "manage_workspace",
7198
+ rename_project: "manage_workspace",
7199
+ delete_project: "manage_workspace",
7200
+ reorder_projects: "manage_workspace",
7201
+ create_schedule: "manage_schedules",
7202
+ update_schedule: "manage_schedules",
7203
+ delete_schedule: "manage_schedules",
7204
+ list_schedules: "manage_schedules",
7205
+ run_schedule_now: "manage_schedules",
7206
+ create_template: "manage_templates",
7207
+ update_template: "manage_templates",
7208
+ delete_template: "manage_templates",
7209
+ list_templates: "manage_templates",
7210
+ dismiss_built_in_template: "manage_templates",
7211
+ restore_built_in_template: "manage_templates",
7212
+ reorder_built_in_templates: "manage_templates",
7213
+ notify_template_applied: "manage_templates",
7214
+ apply_template_request: "manage_todos",
7215
+ set_task_capabilities: "set_task_capabilities",
7216
+ stop_task: "manage_session",
7217
+ stop_background_agent: "manage_session",
7218
+ todo_item_added: "manage_todos",
7219
+ todo_item_removed: "manage_todos",
7220
+ todo_item_updated: "manage_todos",
7221
+ todo_dep_changed: "manage_todos",
7222
+ request_recent_logs: "manage_workspace",
7223
+ presence_update: "update_presence",
7224
+ list_themes: "manage_themes",
7225
+ read_theme: "manage_themes",
7226
+ list_themes_with_content: "manage_themes",
7227
+ save_theme: "manage_themes",
7228
+ delete_theme: "manage_themes",
7229
+ get_theme_config: "manage_themes",
7230
+ set_theme_config: "manage_themes",
7231
+ list_vscode_themes: "manage_themes",
7232
+ import_vscode_themes: "manage_themes",
7233
+ list_claude_code_sessions: "manage_integrations",
7234
+ import_claude_code_session: "manage_integrations",
7235
+ request_publish: "manage_workspace",
7236
+ set_task_cwd: "manage_workspace",
7237
+ start_from_linear: "manage_workspace",
7238
+ notification_ack: "client_housekeeping",
7239
+ flush_resource_batch: "client_housekeeping",
7240
+ browser_metrics_sample: "client_metrics",
7241
+ browser_throttled_detected: "client_metrics",
7242
+ browser_throttled_cleared: "client_metrics",
7243
+ renderer_error_report: "client_metrics",
7244
+ run_install_deps: "manage_workspace",
7245
+ request_create_skill: "manage_integrations",
7246
+ request_resolve_skill_conflict: "manage_integrations",
7247
+ request_skill_body: "manage_integrations"
7248
+ };
7249
+ var COLLABORATOR_FULL_CAPABILITIES = [
7250
+ "read_messages",
7251
+ "send_message",
7252
+ "stop_agent",
7253
+ "cancel_queued",
7254
+ "read_capabilities",
7255
+ "enhance_prompt",
7256
+ "configure_task",
7257
+ "change_model",
7258
+ "configure_task_tools",
7259
+ "read_pr",
7260
+ "act_on_pr",
7261
+ "review_plan",
7262
+ "join_collab",
7263
+ "navigate_url",
7264
+ "comment",
7265
+ "read_task",
7266
+ "create_thread",
7267
+ "client_housekeeping",
7268
+ "client_metrics",
7269
+ "update_presence",
7270
+ "manage_todos",
7271
+ "set_task_capabilities",
7272
+ "read_files",
7273
+ "edit_files",
7274
+ "use_terminal",
7275
+ "download_assets",
7276
+ "upload_assets",
7277
+ "use_preview",
7278
+ "view_collab_docs",
7279
+ "edit_plan",
7280
+ "edit_canvas"
7281
+ ];
7282
+ var COLLABORATOR_REVIEW_CAPABILITIES = [
7283
+ "read_messages",
7284
+ "stop_agent",
7285
+ "read_capabilities",
7286
+ "read_pr",
7287
+ "review_plan",
7288
+ "join_collab",
7289
+ "comment",
7290
+ "read_task",
7291
+ "client_housekeeping",
7292
+ "client_metrics",
7293
+ "update_presence",
7294
+ "read_files",
7295
+ "download_assets",
7296
+ "use_preview",
7297
+ "view_collab_docs",
7298
+ "edit_plan"
7299
+ ];
7300
+ var VIEWER_CAPABILITIES = [
7301
+ "read_messages",
7302
+ "read_capabilities",
7303
+ "read_pr",
7304
+ "join_collab",
7305
+ "read_task",
7306
+ "client_metrics",
7307
+ "use_preview",
7308
+ "view_collab_docs"
7309
+ ];
7310
+ var ROLE_CAPABILITIES = {
7311
+ owner: new Set(ALL_COLLAB_CAPABILITIES),
7312
+ "collaborator-full": new Set(COLLABORATOR_FULL_CAPABILITIES),
7313
+ "collaborator-review": new Set(COLLABORATOR_REVIEW_CAPABILITIES),
7314
+ viewer: new Set(VIEWER_CAPABILITIES)
7315
+ };
7316
+ function can(role, capability) {
7317
+ return ROLE_CAPABILITIES[role].has(capability);
7318
+ }
7319
+ function actionCapability(action) {
7320
+ return CAPABILITY_BY_ACTION[action];
7321
+ }
7322
+ var KNOWN_COLLAB_ACTIONS = new Set(Object.keys(CAPABILITY_BY_ACTION));
7323
+ function isCollabAction(action) {
7324
+ return KNOWN_COLLAB_ACTIONS.has(action);
7325
+ }
7326
+ function roleCanAction(role, action) {
7327
+ return can(role, actionCapability(action));
7328
+ }
7329
+ function isCollabActionAllowed(role, action) {
7330
+ return roleCanAction(role, action);
7331
+ }
7332
+ function isCollabActionAllowedUnchecked(role, action) {
7333
+ if (!isCollabAction(action)) return false;
7334
+ return roleCanAction(role, action);
7335
+ }
7336
+ var COLLAB_BLOCKED_ACTIONS = new Set(
7337
+ Object.keys(CAPABILITY_BY_ACTION).filter(isCollabAction).filter((action) => {
7338
+ const capability = CAPABILITY_BY_ACTION[action];
7339
+ return !ROLE_CAPABILITIES["collaborator-full"].has(capability) && !ROLE_CAPABILITIES["collaborator-review"].has(capability) && !ROLE_CAPABILITIES.viewer.has(capability);
7340
+ })
7341
+ );
7342
+ var CAPABILITY_BY_CHANNEL_ACTION = {
7343
+ "file:read": "read_files",
7344
+ "file:write": "edit_files",
7345
+ "file:list": "read_files",
7346
+ "file:git": "read_files",
7347
+ "terminal:open": "use_terminal",
7348
+ "terminal:input": "use_terminal",
7349
+ "asset:upload": "upload_assets",
7350
+ "asset:download": "download_assets",
7351
+ "preview:view": "use_preview",
7352
+ "preview:annotate": "use_preview"
7353
+ };
7354
+ function channelActionCapability(action) {
7355
+ return CAPABILITY_BY_CHANNEL_ACTION[action];
7356
+ }
7357
+ function isChannelActionAllowed(role, action) {
7358
+ return can(role, channelActionCapability(action));
7359
+ }
7360
+ function channelOpenCapability(kind) {
7361
+ switch (kind) {
7362
+ case "file-io":
7363
+ return "edit_files";
7364
+ case "terminal":
7365
+ return "use_terminal";
7366
+ case "asset-transfer":
7367
+ return "upload_assets";
7368
+ case "browser-preview":
7369
+ return "use_preview";
7370
+ default: {
7371
+ const exhaustive = kind;
7372
+ throw new Error(`Unhandled channel kind: ${String(exhaustive)}`);
7373
+ }
7374
+ }
7375
+ }
7376
+ function isChannelOpenAllowed(role, kind) {
7377
+ return can(role, channelOpenCapability(kind));
7378
+ }
7379
+ function crdtVisibilityCapability(_prefix) {
7380
+ return "view_collab_docs";
7381
+ }
7382
+ function crdtMutationCapability(prefix) {
7383
+ switch (prefix) {
7384
+ case "plan":
7385
+ return "edit_plan";
7386
+ case "canvas":
7387
+ return "edit_canvas";
7388
+ default: {
7389
+ const exhaustive = prefix;
7390
+ throw new Error(`Unhandled document prefix: ${String(exhaustive)}`);
7391
+ }
7392
+ }
7393
+ }
7394
+ function isCollabPrefixVisible(role, prefix) {
7395
+ return can(role, crdtVisibilityCapability(prefix));
7396
+ }
7397
+ function isCollabPrefixMutable(role, prefix) {
7398
+ return can(role, crdtMutationCapability(prefix));
7399
+ }
7400
+
7067
7401
  // ../../packages/loro-schema/src/crdt-compactor.ts
7068
7402
  import { LoroDoc as LoroDoc2 } from "loro-crdt";
7069
7403
  var DEFAULT_INTERVAL_MS = 6e4;
@@ -20843,6 +21177,26 @@ var BrowserMetricsSampleSchema = external_exports.object({
20843
21177
  windowEpoch: external_exports.number().int().nullable().optional()
20844
21178
  });
20845
21179
 
21180
+ // ../../packages/loro-schema/src/protocols/renderer-error-protocol.ts
21181
+ var RendererErrorReportSchema = external_exports.object({
21182
+ type: external_exports.literal("renderer_error_report"),
21183
+ ts: external_exports.number(),
21184
+ kind: external_exports.enum(["react-boundary", "window-error", "unhandled-rejection"]),
21185
+ name: external_exports.string(),
21186
+ message: external_exports.string(),
21187
+ stack: external_exports.string().nullable(),
21188
+ componentStackTop: external_exports.string().nullable(),
21189
+ routeName: external_exports.string(),
21190
+ /**
21191
+ * Runtime context for slicing the same signal across the browser SPA and the
21192
+ * Electron renderer. Optional/additive so older senders keep validating.
21193
+ */
21194
+ runtime: external_exports.object({
21195
+ app: external_exports.enum(["browser", "electron"]),
21196
+ transport: external_exports.enum(["webrtc", "local-direct", "electron-port", "unknown"])
21197
+ }).optional()
21198
+ });
21199
+
20846
21200
  // ../../packages/loro-schema/src/protocols/channel-protocol.ts
20847
21201
  var VSCodeThemeEntrySchema = external_exports.object({
20848
21202
  extensionId: external_exports.string(),
@@ -22388,6 +22742,7 @@ var BrowserToDaemonControlMessageSchema = external_exports.discriminatedUnion("t
22388
22742
  uri: external_exports.string()
22389
22743
  }),
22390
22744
  BrowserMetricsSampleSchema,
22745
+ RendererErrorReportSchema,
22391
22746
  /**
22392
22747
  * browser_throttled_detected (PROTOCOL_VERSION 98) — emitted by the
22393
22748
  * browser-metrics-collector after 2 consecutive throttle-fingerprint
@@ -23758,9 +24113,16 @@ var DaemonToBrowserControlMessageSchema = external_exports.discriminatedUnion("t
23758
24113
  resolvedAt: external_exports.number(),
23759
24114
  resolvedBy: external_exports.string().nullable().optional()
23760
24115
  }),
24116
+ external_exports.object({
24117
+ type: external_exports.literal("os_notification"),
24118
+ taskId: external_exports.string(),
24119
+ notificationId: external_exports.string(),
24120
+ title: external_exports.string(),
24121
+ body: external_exports.string(),
24122
+ targetUserIds: external_exports.array(external_exports.string())
24123
+ }),
23761
24124
  /**
23762
24125
  * Authoritative cross-task inbox resync (PROTOCOL_VERSION 126).
23763
- *
23764
24126
  * Response to `request_inbox_snapshot`. Carries the daemon's current set of
23765
24127
  * UNRESOLVED notifications keyed by taskId, bounded to tasks that have at
23766
24128
  * least one unresolved entry. The browser treats this as the complete truth
@@ -24283,6 +24645,7 @@ function classifyCriticality(msg) {
24283
24645
  case "presence_state":
24284
24646
  case "presence_delta":
24285
24647
  case "resource_batch_state":
24648
+ case "os_notification":
24286
24649
  return "best-effort";
24287
24650
  /**
24288
24651
  * Critical: everything else. Includes (but is not limited to):
@@ -26199,7 +26562,8 @@ function shouldEmitHealthSummary(lastEmitMs, now, intervalMs) {
26199
26562
  }
26200
26563
  function buildAloHealthPayload(counters) {
26201
26564
  if (counters.resendsInWindow === 0 && counters.retryStateSize === 0) return null;
26202
- return { event: "alo_health", ...counters };
26565
+ const isUnderPressure = counters.dropsInWindow > 0 || counters.resendsInWindow >= 10;
26566
+ return { event: "alo_health", level: isUnderPressure ? "warn" : "info", ...counters };
26203
26567
  }
26204
26568
 
26205
26569
  // ../../packages/loro-schema/src/transport/at-least-once/outbox.ts
@@ -28627,6 +28991,13 @@ export {
28627
28991
  SHIPYARD_LIGHT_VSCODE_THEME,
28628
28992
  buildCanvasDocId,
28629
28993
  CanvasRepository,
28994
+ can,
28995
+ isCollabActionAllowed,
28996
+ isCollabActionAllowedUnchecked,
28997
+ isChannelActionAllowed,
28998
+ isChannelOpenAllowed,
28999
+ isCollabPrefixVisible,
29000
+ isCollabPrefixMutable,
28630
29001
  countLines,
28631
29002
  ANNOTATION_ALIASES,
28632
29003
  resolveAnnotationAlias,
@@ -28815,4 +29186,4 @@ export {
28815
29186
  encodeDrain,
28816
29187
  decodeFrame
28817
29188
  };
28818
- //# sourceMappingURL=chunk-ETUNY4NF.js.map
29189
+ //# sourceMappingURL=chunk-BK24XTBR.js.map