@crewx/sdk 0.9.0-rc.14 → 0.9.0-rc.140

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 (280) hide show
  1. package/README.md +1 -1
  2. package/dist/account/auth-client.d.ts +61 -0
  3. package/dist/account/auth-json-v2.d.ts +1 -0
  4. package/dist/account/auth-json.d.ts +30 -0
  5. package/dist/account/config.d.ts +37 -0
  6. package/dist/account/env-bootstrap.d.ts +11 -0
  7. package/dist/account/errors.d.ts +24 -0
  8. package/dist/account/index.d.ts +12 -0
  9. package/dist/account/index.js +2 -0
  10. package/dist/account/session-manager.d.ts +47 -0
  11. package/dist/activity-log/builder.d.ts +59 -6
  12. package/dist/agent/agent-list-view.d.ts +19 -0
  13. package/dist/app/app.d.ts +100 -0
  14. package/dist/app/backend-env.d.ts +3 -0
  15. package/dist/app/entry.d.ts +7 -0
  16. package/dist/app/index.d.ts +8 -0
  17. package/dist/app/index.js +9 -0
  18. package/dist/app/runtime.d.ts +19 -0
  19. package/dist/boxing/box.types.d.ts +4 -0
  20. package/dist/config/canonicalize-agent-options.d.ts +18 -0
  21. package/dist/config/default-agent-models.d.ts +11 -0
  22. package/dist/config/global-settings.d.ts +33 -0
  23. package/dist/config/migrate-grok-mode.d.ts +6 -0
  24. package/dist/config/model-compat.d.ts +31 -0
  25. package/dist/config/models.generated.d.ts +37 -0
  26. package/dist/config/models.remote.d.ts +1 -0
  27. package/dist/config/overdrive.d.ts +7 -0
  28. package/dist/config/pricing.d.ts +6 -3
  29. package/dist/config/pricing.generated.d.ts +4 -0
  30. package/dist/config/pricing.types.d.ts +4 -0
  31. package/dist/config/timeout.config.d.ts +4 -0
  32. package/dist/config/wi-boards.d.ts +19 -0
  33. package/dist/context-budget/continuity.d.ts +61 -0
  34. package/dist/context-budget/index.d.ts +141 -0
  35. package/dist/conversation/index.d.ts +1 -1
  36. package/dist/conversation/sqlite-provider.d.ts +6 -3
  37. package/dist/conversation/to-template-messages.d.ts +9 -0
  38. package/dist/conversation/types.d.ts +48 -1
  39. package/dist/desktop/command-runner.d.ts +4 -0
  40. package/dist/desktop/default-adapters.d.ts +4 -0
  41. package/dist/desktop/global-install.d.ts +19 -0
  42. package/dist/desktop/index.d.ts +3 -0
  43. package/dist/desktop/index.js +3 -0
  44. package/dist/desktop/install.d.ts +5 -0
  45. package/dist/desktop/lnk.d.ts +22 -0
  46. package/dist/desktop/manifest.d.ts +21 -0
  47. package/dist/desktop/types.d.ts +67 -0
  48. package/dist/desktop/version.d.ts +1 -0
  49. package/dist/desktop/windows-paths.d.ts +21 -0
  50. package/dist/desktop/wrapper.d.ts +18 -0
  51. package/dist/esm/account/index.js +2 -0
  52. package/dist/esm/app/index.js +9 -0
  53. package/dist/esm/desktop/index.js +3 -0
  54. package/dist/esm/index.js +1069 -224
  55. package/dist/esm/node/index.js +2 -0
  56. package/dist/esm/plugins/index.js +474 -216
  57. package/dist/esm/process/index.js +1 -0
  58. package/dist/esm/publish/index.js +2 -0
  59. package/dist/esm/repository/index.js +586 -213
  60. package/dist/esm/skills/index.js +2 -0
  61. package/dist/esm/testing/index.js +1 -1
  62. package/dist/events/types.d.ts +9 -0
  63. package/dist/facade/Crewx.d.ts +60 -5
  64. package/dist/facade/task-ticket.d.ts +14 -0
  65. package/dist/highlight/thread-highlight-prompt.d.ts +2 -0
  66. package/dist/highlight/thread-highlighter.d.ts +326 -0
  67. package/dist/index.browser.d.ts +17 -1
  68. package/dist/index.browser.js +6 -2
  69. package/dist/index.d.ts +124 -17
  70. package/dist/index.js +1069 -224
  71. package/dist/internal/console-decoder.d.ts +38 -0
  72. package/dist/internal/windows-spawn.d.ts +10 -0
  73. package/dist/layout/types.d.ts +18 -1
  74. package/dist/lifecycle/process-lease.d.ts +80 -0
  75. package/dist/lifecycle/process-owner.d.ts +20 -0
  76. package/dist/lifecycle/task-heartbeat.d.ts +41 -0
  77. package/dist/lifecycle/task-stop.d.ts +82 -0
  78. package/dist/lifecycle/update-admission.d.ts +45 -0
  79. package/dist/local-server/base-url.d.ts +18 -0
  80. package/dist/local-server/index.d.ts +8 -0
  81. package/dist/local-server/opencode.d.ts +8 -0
  82. package/dist/local-server/probe.d.ts +3 -0
  83. package/dist/local-server/runtime.d.ts +26 -0
  84. package/dist/local-server/types.d.ts +43 -0
  85. package/dist/mcp-app/agent-access.d.ts +26 -0
  86. package/dist/mcp-app/apps-context.d.ts +20 -0
  87. package/dist/mcp-app/bundle-provenance.d.ts +3 -0
  88. package/dist/mcp-app/catalog.d.ts +7 -0
  89. package/dist/mcp-app/content-channel.d.ts +89 -0
  90. package/dist/mcp-app/content-declarations.d.ts +29 -0
  91. package/dist/mcp-app/dev-checks.d.ts +29 -0
  92. package/dist/mcp-app/diagnostic-reason.d.ts +3 -0
  93. package/dist/mcp-app/discovery.d.ts +160 -0
  94. package/dist/mcp-app/errors.d.ts +7 -0
  95. package/dist/mcp-app/index.d.ts +33 -0
  96. package/dist/mcp-app/installed-app-ref.d.ts +25 -0
  97. package/dist/mcp-app/model-context.d.ts +29 -0
  98. package/dist/mcp-app/node-app-discovery-fs.d.ts +23 -0
  99. package/dist/mcp-app/product-bundle-assets.d.ts +27 -0
  100. package/dist/mcp-app/product-bundle-loader.d.ts +53 -0
  101. package/dist/mcp-app/projection.d.ts +14 -0
  102. package/dist/mcp-app/registry.d.ts +28 -0
  103. package/dist/mcp-app/skill-backend.d.ts +133 -0
  104. package/dist/mcp-app/state-set.d.ts +9 -0
  105. package/dist/mcp-app/types.d.ts +472 -0
  106. package/dist/mcp-app/workspace-app-assets.d.ts +42 -0
  107. package/dist/mcp-app/workspace-app-scan-cache.d.ts +24 -0
  108. package/dist/mcp-app/workspace-snapshot.d.ts +71 -0
  109. package/dist/migrations/0011_far_black_tarantula.sql +1 -0
  110. package/dist/migrations/0012_blue_turbo.sql +23 -0
  111. package/dist/migrations/0013_hesitant_adam_destine.sql +15 -0
  112. package/dist/migrations/0014_organic_mongu.sql +73 -0
  113. package/dist/migrations/0015_panoramic_gorilla_man.sql +71 -0
  114. package/dist/migrations/0016_fuzzy_hemingway.sql +14 -0
  115. package/dist/migrations/0017_project_stage_sdk_migration.sql +29 -0
  116. package/dist/migrations/0018_bored_jackal.sql +33 -0
  117. package/dist/migrations/0019_backfill_task_thread_ids.sql +74 -0
  118. package/dist/migrations/0020_useful_iron_lad.sql +55 -0
  119. package/dist/migrations/0021_dashing_peter_quill.sql +51 -0
  120. package/dist/migrations/0022_wandering_bucky.sql +1 -0
  121. package/dist/migrations/0023_red_payback.sql +1 -0
  122. package/dist/migrations/0024_storage_metadata.sql +262 -0
  123. package/dist/migrations/0025_task_heartbeat.sql +8 -0
  124. package/dist/migrations/0025_thread_app_instance_ledger.sql +2 -0
  125. package/dist/migrations/0026_mcp_action_source.sql +47 -0
  126. package/dist/migrations/0027_task_stop_scope_cleanup.sql +5 -0
  127. package/dist/migrations/0027_ui_instance_active_unique.sql +2 -0
  128. package/dist/migrations/0029_nice_rhino.sql +1 -0
  129. package/dist/migrations/0031_petite_arclight.sql +6 -0
  130. package/dist/migrations/0032_ui_instance_opened_by.sql +1 -0
  131. package/dist/migrations/0033_thread_creator_boundary_guard.sql +38 -0
  132. package/dist/migrations/0034_keen_fallen_one.sql +36 -0
  133. package/dist/migrations/0035_request_log_daily.sql +11 -0
  134. package/dist/migrations/meta/0011_snapshot.json +1342 -0
  135. package/dist/migrations/meta/0012_snapshot.json +1494 -0
  136. package/dist/migrations/meta/0013_snapshot.json +1592 -0
  137. package/dist/migrations/meta/0014_snapshot.json +1975 -0
  138. package/dist/migrations/meta/0015_snapshot.json +2315 -0
  139. package/dist/migrations/meta/0016_snapshot.json +2419 -0
  140. package/dist/migrations/meta/0017_snapshot.json +2419 -0
  141. package/dist/migrations/meta/0018_snapshot.json +2570 -0
  142. package/dist/migrations/meta/0020_snapshot.json +2895 -0
  143. package/dist/migrations/meta/0021_snapshot.json +3031 -0
  144. package/dist/migrations/meta/0022_snapshot.json +3039 -0
  145. package/dist/migrations/meta/0023_snapshot.json +3047 -0
  146. package/dist/migrations/meta/0029_snapshot.json +3206 -0
  147. package/dist/migrations/meta/0031_snapshot.json +3251 -0
  148. package/dist/migrations/meta/0034_snapshot.json +3473 -0
  149. package/dist/migrations/meta/0035_snapshot.json +3547 -0
  150. package/dist/migrations/meta/_journal.json +175 -0
  151. package/dist/node/index.d.ts +1 -0
  152. package/dist/node/index.js +2 -0
  153. package/dist/paths.d.ts +1 -0
  154. package/dist/plugin/types.d.ts +1 -0
  155. package/dist/plugins/index.d.ts +1 -1
  156. package/dist/plugins/index.js +474 -216
  157. package/dist/plugins/sqlite-tracing.d.ts +46 -0
  158. package/dist/process/index.d.ts +2 -0
  159. package/dist/process/index.js +1 -0
  160. package/dist/process/process-control.d.ts +41 -0
  161. package/dist/prompt/tag-names.d.ts +22 -0
  162. package/dist/provider/acp/connection.d.ts +6 -0
  163. package/dist/provider/acp/meta.d.ts +11 -0
  164. package/dist/provider/bridge.d.ts +7 -1
  165. package/dist/provider/classify-task-error.d.ts +2 -0
  166. package/dist/provider/cli/adapter.types.d.ts +14 -2
  167. package/dist/provider/cli/adapters/agent-call.util.d.ts +1 -1
  168. package/dist/provider/cli/adapters/cli-knob.util.d.ts +7 -0
  169. package/dist/provider/cli/adapters/codex-item.d.ts +1 -0
  170. package/dist/provider/cli/adapters/event-timestamp.util.d.ts +1 -0
  171. package/dist/provider/cli/adapters/grok.d.ts +2 -0
  172. package/dist/provider/cli/adapters/index.d.ts +5 -0
  173. package/dist/provider/cli/index.d.ts +3 -2
  174. package/dist/provider/cli/meta.d.ts +5 -0
  175. package/dist/provider/cli/protocol-envelope.d.ts +3 -0
  176. package/dist/provider/errors.d.ts +5 -1
  177. package/dist/provider/idle-watchdog.d.ts +19 -0
  178. package/dist/provider/models.d.ts +17 -12
  179. package/dist/provider/order.d.ts +1 -1
  180. package/dist/provider/parse-usage.d.ts +6 -0
  181. package/dist/provider/provider-selection.d.ts +8 -0
  182. package/dist/provider/redact-technical-message.d.ts +1 -0
  183. package/dist/provider/task-error.types.d.ts +17 -0
  184. package/dist/publish/constants.d.ts +6 -0
  185. package/dist/publish/errors.d.ts +7 -0
  186. package/dist/publish/index.d.ts +50 -0
  187. package/dist/publish/index.js +2 -0
  188. package/dist/publish/manifest.d.ts +47 -0
  189. package/dist/publish/marketplace-api.constants.d.ts +1 -0
  190. package/dist/publish/pack.d.ts +6 -0
  191. package/dist/publish/scan.d.ts +9 -0
  192. package/dist/publish/secrets.d.ts +6 -0
  193. package/dist/publish/upload.d.ts +19 -0
  194. package/dist/remote/execution-profile.d.ts +9 -0
  195. package/dist/remote/index.d.ts +1 -0
  196. package/dist/remote/types.d.ts +28 -0
  197. package/dist/repository/agent-suggestion.repository.d.ts +34 -0
  198. package/dist/repository/base-sqlite-repository.d.ts +1 -0
  199. package/dist/repository/common-code.repository.d.ts +45 -0
  200. package/dist/repository/db.d.ts +12 -1
  201. package/dist/repository/index.d.ts +41 -5
  202. package/dist/repository/index.js +586 -213
  203. package/dist/repository/logs-db.d.ts +12 -0
  204. package/dist/repository/notification.repository.d.ts +58 -0
  205. package/dist/repository/project.repository.d.ts +90 -0
  206. package/dist/repository/request-log-mover.d.ts +70 -0
  207. package/dist/repository/request-log.repository.d.ts +7 -3
  208. package/dist/repository/storage-metadata.repository.d.ts +64 -0
  209. package/dist/repository/task-log-migration.d.ts +74 -0
  210. package/dist/repository/task-log.repository.d.ts +44 -0
  211. package/dist/repository/task-status.d.ts +21 -0
  212. package/dist/repository/task.repository.d.ts +229 -7
  213. package/dist/repository/thread-history.repository.d.ts +193 -0
  214. package/dist/repository/thread-origin-verdict.d.ts +27 -0
  215. package/dist/repository/thread-title.types.d.ts +29 -0
  216. package/dist/repository/thread.repository.d.ts +115 -7
  217. package/dist/repository/usage-backfill.d.ts +62 -0
  218. package/dist/repository/usage-from-logs.d.ts +21 -0
  219. package/dist/repository/workspace.repository.d.ts +3 -0
  220. package/dist/schema/agent-suggestions.d.ts +199 -0
  221. package/dist/schema/common-codes.d.ts +216 -0
  222. package/dist/schema/index.d.ts +12 -0
  223. package/dist/schema/notifications.d.ts +303 -0
  224. package/dist/schema/projects.d.ts +610 -0
  225. package/dist/schema/request-log-daily.d.ts +151 -0
  226. package/dist/schema/storage-metadata.d.ts +181 -0
  227. package/dist/schema/task-log-events.d.ts +119 -0
  228. package/dist/schema/tasks.d.ts +165 -0
  229. package/dist/schema/thread-creator-unverified.d.ts +45 -0
  230. package/dist/schema/thread-history.d.ts +734 -0
  231. package/dist/schema/threads.d.ts +59 -0
  232. package/dist/schema/ui-action-receipts.d.ts +358 -0
  233. package/dist/schema/ui-instance-repins.d.ts +222 -0
  234. package/dist/schema/ui-instances.d.ts +305 -0
  235. package/dist/schema/workspaces.d.ts +17 -0
  236. package/dist/skills/index.d.ts +15 -0
  237. package/dist/skills/index.js +2 -0
  238. package/dist/skills/types.d.ts +18 -0
  239. package/dist/task-log/anchor-child-tasks.d.ts +7 -0
  240. package/dist/task-log/delegation-trailer.d.ts +34 -0
  241. package/dist/template/engine.d.ts +2 -2
  242. package/dist/template/helpers/exec.browser.d.ts +4 -3
  243. package/dist/template/helpers/exec.d.ts +4 -3
  244. package/dist/template/types.d.ts +20 -0
  245. package/dist/testing/index.js +1 -1
  246. package/dist/types/index.d.ts +1574 -3
  247. package/dist/types/task-log.types.d.ts +3 -0
  248. package/dist/ui-card/index.d.ts +2 -0
  249. package/dist/ui-card/legacy-card-parser.d.ts +11 -0
  250. package/dist/ui-instance/definition.d.ts +6 -0
  251. package/dist/ui-instance/errors.d.ts +18 -0
  252. package/dist/ui-instance/index.d.ts +11 -0
  253. package/dist/ui-instance/json.d.ts +19 -0
  254. package/dist/ui-instance/lineage.d.ts +22 -0
  255. package/dist/ui-instance/runtime.d.ts +18 -0
  256. package/dist/ui-instance/store.d.ts +184 -0
  257. package/dist/ui-instance/types.d.ts +319 -0
  258. package/dist/ui-plugin/app-manifest.d.ts +59 -0
  259. package/dist/ui-plugin/csp.d.ts +28 -0
  260. package/dist/ui-plugin/index.d.ts +6 -0
  261. package/dist/ui-plugin/limits.d.ts +27 -0
  262. package/dist/ui-plugin/manifest.d.ts +3 -0
  263. package/dist/ui-plugin/types.d.ts +194 -0
  264. package/dist/ui-plugin/validator.d.ts +18 -0
  265. package/dist/utils/crewx-executable.d.ts +76 -0
  266. package/dist/utils/crewx-home.d.ts +1 -0
  267. package/dist/utils/env-defaults.d.ts +3 -0
  268. package/dist/utils/id.d.ts +1 -1
  269. package/dist/utils/local-identity.d.ts +2 -0
  270. package/dist/utils/runner-env.d.ts +3 -0
  271. package/dist/utils/timestamp.d.ts +1 -0
  272. package/dist/utils/workspace.d.ts +1 -0
  273. package/dist/wi/create.d.ts +48 -0
  274. package/dist/wi/select.d.ts +20 -0
  275. package/package.json +57 -3
  276. package/templates/agents/default.yaml +296 -128
  277. package/templates/documents/crewx-manual.md +138 -138
  278. package/templates/documents/crewx-quick-guide.md +8 -7
  279. package/templates/workflows/wi-default-flow.yaml +65 -0
  280. package/templates/workflows/wi-plan-flow.yaml +140 -0
@@ -0,0 +1,305 @@
1
+ export declare const ui_instances: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
2
+ name: "ui_instances";
3
+ schema: undefined;
4
+ columns: {
5
+ id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
6
+ name: "id";
7
+ tableName: "ui_instances";
8
+ dataType: "string";
9
+ columnType: "SQLiteText";
10
+ data: string;
11
+ driverParam: string;
12
+ notNull: true;
13
+ hasDefault: false;
14
+ isPrimaryKey: true;
15
+ isAutoincrement: false;
16
+ hasRuntimeDefault: false;
17
+ enumValues: [string, ...string[]];
18
+ baseColumn: never;
19
+ identity: undefined;
20
+ generated: undefined;
21
+ }, {}, {
22
+ length: number | undefined;
23
+ }>;
24
+ definition_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
25
+ name: "definition_id";
26
+ tableName: "ui_instances";
27
+ dataType: "string";
28
+ columnType: "SQLiteText";
29
+ data: string;
30
+ driverParam: string;
31
+ notNull: true;
32
+ hasDefault: false;
33
+ isPrimaryKey: false;
34
+ isAutoincrement: false;
35
+ hasRuntimeDefault: false;
36
+ enumValues: [string, ...string[]];
37
+ baseColumn: never;
38
+ identity: undefined;
39
+ generated: undefined;
40
+ }, {}, {
41
+ length: number | undefined;
42
+ }>;
43
+ definition_version: import("drizzle-orm/sqlite-core").SQLiteColumn<{
44
+ name: "definition_version";
45
+ tableName: "ui_instances";
46
+ dataType: "number";
47
+ columnType: "SQLiteInteger";
48
+ data: number;
49
+ driverParam: number;
50
+ notNull: true;
51
+ hasDefault: false;
52
+ isPrimaryKey: false;
53
+ isAutoincrement: false;
54
+ hasRuntimeDefault: false;
55
+ enumValues: undefined;
56
+ baseColumn: never;
57
+ identity: undefined;
58
+ generated: undefined;
59
+ }, {}, {}>;
60
+ definition_hash: import("drizzle-orm/sqlite-core").SQLiteColumn<{
61
+ name: "definition_hash";
62
+ tableName: "ui_instances";
63
+ dataType: "string";
64
+ columnType: "SQLiteText";
65
+ data: string;
66
+ driverParam: string;
67
+ notNull: true;
68
+ hasDefault: false;
69
+ isPrimaryKey: false;
70
+ isAutoincrement: false;
71
+ hasRuntimeDefault: false;
72
+ enumValues: [string, ...string[]];
73
+ baseColumn: never;
74
+ identity: undefined;
75
+ generated: undefined;
76
+ }, {}, {
77
+ length: number | undefined;
78
+ }>;
79
+ workspace_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
80
+ name: "workspace_id";
81
+ tableName: "ui_instances";
82
+ dataType: "string";
83
+ columnType: "SQLiteText";
84
+ data: string;
85
+ driverParam: string;
86
+ notNull: true;
87
+ hasDefault: false;
88
+ isPrimaryKey: false;
89
+ isAutoincrement: false;
90
+ hasRuntimeDefault: false;
91
+ enumValues: [string, ...string[]];
92
+ baseColumn: never;
93
+ identity: undefined;
94
+ generated: undefined;
95
+ }, {}, {
96
+ length: number | undefined;
97
+ }>;
98
+ thread_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
99
+ name: "thread_id";
100
+ tableName: "ui_instances";
101
+ dataType: "string";
102
+ columnType: "SQLiteText";
103
+ data: string;
104
+ driverParam: string;
105
+ notNull: true;
106
+ hasDefault: false;
107
+ isPrimaryKey: false;
108
+ isAutoincrement: false;
109
+ hasRuntimeDefault: false;
110
+ enumValues: [string, ...string[]];
111
+ baseColumn: never;
112
+ identity: undefined;
113
+ generated: undefined;
114
+ }, {}, {
115
+ length: number | undefined;
116
+ }>;
117
+ app_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
118
+ name: "app_id";
119
+ tableName: "ui_instances";
120
+ dataType: "string";
121
+ columnType: "SQLiteText";
122
+ data: string;
123
+ driverParam: string;
124
+ notNull: false;
125
+ hasDefault: false;
126
+ isPrimaryKey: false;
127
+ isAutoincrement: false;
128
+ hasRuntimeDefault: false;
129
+ enumValues: [string, ...string[]];
130
+ baseColumn: never;
131
+ identity: undefined;
132
+ generated: undefined;
133
+ }, {}, {
134
+ length: number | undefined;
135
+ }>;
136
+ anchor_task_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
137
+ name: "anchor_task_id";
138
+ tableName: "ui_instances";
139
+ dataType: "string";
140
+ columnType: "SQLiteText";
141
+ data: string;
142
+ driverParam: string;
143
+ notNull: false;
144
+ hasDefault: false;
145
+ isPrimaryKey: false;
146
+ isAutoincrement: false;
147
+ hasRuntimeDefault: false;
148
+ enumValues: [string, ...string[]];
149
+ baseColumn: never;
150
+ identity: undefined;
151
+ generated: undefined;
152
+ }, {}, {
153
+ length: number | undefined;
154
+ }>;
155
+ domain_ref_json: import("drizzle-orm/sqlite-core").SQLiteColumn<{
156
+ name: "domain_ref_json";
157
+ tableName: "ui_instances";
158
+ dataType: "string";
159
+ columnType: "SQLiteText";
160
+ data: string;
161
+ driverParam: string;
162
+ notNull: true;
163
+ hasDefault: false;
164
+ isPrimaryKey: false;
165
+ isAutoincrement: false;
166
+ hasRuntimeDefault: false;
167
+ enumValues: [string, ...string[]];
168
+ baseColumn: never;
169
+ identity: undefined;
170
+ generated: undefined;
171
+ }, {}, {
172
+ length: number | undefined;
173
+ }>;
174
+ state_json: import("drizzle-orm/sqlite-core").SQLiteColumn<{
175
+ name: "state_json";
176
+ tableName: "ui_instances";
177
+ dataType: "string";
178
+ columnType: "SQLiteText";
179
+ data: string;
180
+ driverParam: string;
181
+ notNull: true;
182
+ hasDefault: false;
183
+ isPrimaryKey: false;
184
+ isAutoincrement: false;
185
+ hasRuntimeDefault: false;
186
+ enumValues: [string, ...string[]];
187
+ baseColumn: never;
188
+ identity: undefined;
189
+ generated: undefined;
190
+ }, {}, {
191
+ length: number | undefined;
192
+ }>;
193
+ revision: import("drizzle-orm/sqlite-core").SQLiteColumn<{
194
+ name: "revision";
195
+ tableName: "ui_instances";
196
+ dataType: "number";
197
+ columnType: "SQLiteInteger";
198
+ data: number;
199
+ driverParam: number;
200
+ notNull: true;
201
+ hasDefault: true;
202
+ isPrimaryKey: false;
203
+ isAutoincrement: false;
204
+ hasRuntimeDefault: false;
205
+ enumValues: undefined;
206
+ baseColumn: never;
207
+ identity: undefined;
208
+ generated: undefined;
209
+ }, {}, {}>;
210
+ status: import("drizzle-orm/sqlite-core").SQLiteColumn<{
211
+ name: "status";
212
+ tableName: "ui_instances";
213
+ dataType: "string";
214
+ columnType: "SQLiteText";
215
+ data: string;
216
+ driverParam: string;
217
+ notNull: true;
218
+ hasDefault: true;
219
+ isPrimaryKey: false;
220
+ isAutoincrement: false;
221
+ hasRuntimeDefault: false;
222
+ enumValues: [string, ...string[]];
223
+ baseColumn: never;
224
+ identity: undefined;
225
+ generated: undefined;
226
+ }, {}, {
227
+ length: number | undefined;
228
+ }>;
229
+ granted_capabilities_json: import("drizzle-orm/sqlite-core").SQLiteColumn<{
230
+ name: "granted_capabilities_json";
231
+ tableName: "ui_instances";
232
+ dataType: "string";
233
+ columnType: "SQLiteText";
234
+ data: string;
235
+ driverParam: string;
236
+ notNull: true;
237
+ hasDefault: true;
238
+ isPrimaryKey: false;
239
+ isAutoincrement: false;
240
+ hasRuntimeDefault: false;
241
+ enumValues: [string, ...string[]];
242
+ baseColumn: never;
243
+ identity: undefined;
244
+ generated: undefined;
245
+ }, {}, {
246
+ length: number | undefined;
247
+ }>;
248
+ opened_by_json: import("drizzle-orm/sqlite-core").SQLiteColumn<{
249
+ name: "opened_by_json";
250
+ tableName: "ui_instances";
251
+ dataType: "string";
252
+ columnType: "SQLiteText";
253
+ data: string;
254
+ driverParam: string;
255
+ notNull: false;
256
+ hasDefault: false;
257
+ isPrimaryKey: false;
258
+ isAutoincrement: false;
259
+ hasRuntimeDefault: false;
260
+ enumValues: [string, ...string[]];
261
+ baseColumn: never;
262
+ identity: undefined;
263
+ generated: undefined;
264
+ }, {}, {
265
+ length: number | undefined;
266
+ }>;
267
+ created_at: import("drizzle-orm/sqlite-core").SQLiteColumn<{
268
+ name: "created_at";
269
+ tableName: "ui_instances";
270
+ dataType: "number";
271
+ columnType: "SQLiteInteger";
272
+ data: number;
273
+ driverParam: number;
274
+ notNull: true;
275
+ hasDefault: false;
276
+ isPrimaryKey: false;
277
+ isAutoincrement: false;
278
+ hasRuntimeDefault: false;
279
+ enumValues: undefined;
280
+ baseColumn: never;
281
+ identity: undefined;
282
+ generated: undefined;
283
+ }, {}, {}>;
284
+ updated_at: import("drizzle-orm/sqlite-core").SQLiteColumn<{
285
+ name: "updated_at";
286
+ tableName: "ui_instances";
287
+ dataType: "number";
288
+ columnType: "SQLiteInteger";
289
+ data: number;
290
+ driverParam: number;
291
+ notNull: true;
292
+ hasDefault: false;
293
+ isPrimaryKey: false;
294
+ isAutoincrement: false;
295
+ hasRuntimeDefault: false;
296
+ enumValues: undefined;
297
+ baseColumn: never;
298
+ identity: undefined;
299
+ generated: undefined;
300
+ }, {}, {}>;
301
+ };
302
+ dialect: "sqlite";
303
+ }>;
304
+ export type UiInstanceRow = typeof ui_instances.$inferSelect;
305
+ export type NewUiInstanceRow = typeof ui_instances.$inferInsert;
@@ -152,6 +152,23 @@ export declare const workspaces: import("drizzle-orm/sqlite-core").SQLiteTableWi
152
152
  }, {}, {
153
153
  length: number | undefined;
154
154
  }>;
155
+ starred: import("drizzle-orm/sqlite-core").SQLiteColumn<{
156
+ name: "starred";
157
+ tableName: "workspaces";
158
+ dataType: "number";
159
+ columnType: "SQLiteInteger";
160
+ data: number;
161
+ driverParam: number;
162
+ notNull: true;
163
+ hasDefault: true;
164
+ isPrimaryKey: false;
165
+ isAutoincrement: false;
166
+ hasRuntimeDefault: false;
167
+ enumValues: undefined;
168
+ baseColumn: never;
169
+ identity: undefined;
170
+ generated: undefined;
171
+ }, {}, {}>;
155
172
  };
156
173
  dialect: "sqlite";
157
174
  }>;
@@ -0,0 +1,15 @@
1
+ import type { ProductAppBundleInput, WorkspaceAppDiagnostic } from '../mcp-app/discovery.js';
2
+ import type { SkillDefinition, SkillFrontmatterReadResult } from './types.js';
3
+ export declare function findEntrypoint(dir: string, skillName: string): string | undefined;
4
+ export declare function readSkillFrontmatter(filePath: string): SkillFrontmatterReadResult;
5
+ export declare function discover(searchDirs: readonly string[]): SkillDefinition[];
6
+ export declare function resolve(name: string, searchDirs: readonly string[]): SkillDefinition;
7
+ export interface BundledSkillDiscoveryResult {
8
+ readonly skills: readonly SkillDefinition[];
9
+ readonly diagnostics: readonly WorkspaceAppDiagnostic[];
10
+ }
11
+ export declare function discoverBundledProductSkills(productBundle: ProductAppBundleInput | undefined): Promise<BundledSkillDiscoveryResult>;
12
+ export declare const discoverSkills: typeof discover;
13
+ export declare const resolveSkill: typeof resolve;
14
+ export type { ProductAppBundleInput } from '../mcp-app/discovery.js';
15
+ export type { SkillDefinition, SkillFrontmatter, SkillFrontmatterReadResult } from './types.js';
@@ -0,0 +1,2 @@
1
+ 'use strict';var crypto=require('crypto'),net=require('net'),fs$1=require('fs'),promises=require('fs/promises'),path=require('path'),jsYaml=require('js-yaml');var No=Object.defineProperty;var w=(e,n)=>()=>(e&&(n=e(e=0)),n);var bo=(e,n)=>{for(var t in n)No(e,t,{get:n[t],enumerable:true});};var m=w(()=>{});var b,pn=w(()=>{m();b=class extends Error{constructor(t,i=t,r){super(i);this.code=t;this.currentRevision=r;}code;currentRevision;name="UiRuntimeError"};});function kn(e){return Po.test(e)||Mo.test(e)}function ee(){throw new b("INPUT_INVALID","JSON value is not projection-safe")}function Ro(e){let n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}function Cn(e,n,t,i,r,o){if(n>i&&ee(),e===null||typeof e=="string"||typeof e=="boolean")return typeof e=="string"&&(So.test(e)||Oo.test(e)&&!wo(r,o)||Lo.test(e))&&ee(),e;if(typeof e=="number")return Number.isFinite(e)||ee(),e;(typeof e!="object"||e===void 0||typeof e=="function"||typeof e=="bigint")&&ee();let s=e;t.has(s)&&ee(),t.add(s);try{if(Array.isArray(e))return e.map(d=>Cn(d,n+1,t,i,r,o));Ro(s)||ee();let a={};for(let[d,c]of Object.entries(e))kn(d)&&ee(),a[d]=Cn(c,n+1,t,i,[...r,d],o);return a}finally{t.delete(s);}}function ye(e,n=0,t=[]){(!Number.isInteger(n)||n<0||n>Co)&&ee(),(!Array.isArray(t)||t.some(r=>typeof r!="string"))&&ee();let i=Cn(e,0,new Set,Uo+n,[],t);return (i===null||Array.isArray(i)||typeof i!="object")&&ee(),i}function Ue(e,n){if(!e||!n)return false;let t=e.split("."),i=n.split(".");return t.length>=i.length&&i.every((r,o)=>t[o]===r)}function wo(e,n){if(e.length===0)return false;let t=e.join(".");return n.some(i=>Ue(t,i))}function Ce(e){try{let n=JSON.stringify(e);return n===void 0&&ee(),n}catch{ee();}}function wn(e){return Array.isArray(e)?e.map(wn):e!==null&&typeof e=="object"?Object.fromEntries(Object.keys(e).sort().map(n=>[n,wn(e[n])])):e}function W(e){return Ce(wn(e))}function xn(e){return Buffer.byteLength(e,"utf8")}var Po,Mo,So,Lo,Oo,Uo,Co,Ae=w(()=>{m();pn();Po=/(?:proof|token|secret|password|cookie|authorization|private[_-]?key|stack|exception|plugin[_-]?text)/i,Mo=/(?:url|uri|endpoint|path|file(?:name|path)?|cwd|shell|directory|dir|folder)$/i,So=/<\/?[A-Za-z][^>]*>/,Lo=/^(?:[A-Za-z]:[\\/]|\\\\|~[\\/]|\/)/,Oo=/^(?:https?|file|ftp|ws|wss):\/\//i;Uo=8,Co=4;});function we(e){return ko.has(e)||xo.test(e)||jo.test(e)}var Vt,ko,xo,jo,ln,Je,ce,jn,Vn,vn,Fn,Bn,Ne=w(()=>{m();Vt=["__proto__","prototype","constructor","proof","token","secret","password","cookie","authorization","private_key","private-key","stack","exception","plugin_text","url","uri","endpoint","path","filename","filepath","cwd","shell","directory","dir","folder"],ko=new Set(Vt),xo=/(?:proof|token|secret|password|cookie|authorization|private[_-]?key|stack|exception|plugin[_-]?text)/i,jo=/(?:url|uri|endpoint|path|file(?:name|path)?|cwd|shell|directory|dir|folder)$/i;ln=/^[A-Za-z0-9_]+$/,Je=/^[A-Za-z0-9_]+(?:\.[A-Za-z0-9_]+)*$/,ce=/^[A-Za-z][A-Za-z0-9._-]{0,127}$/,jn=/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/,Vn=/^[A-Za-z][A-Za-z0-9._-]{0,127}$/,vn=/^[A-Za-z0-9][A-Za-z0-9._:-]{0,255}$/,Fn=["blue","violet","emerald","amber","rose","sky","slate","indigo"],Bn=["inline","panel"];});function Hn(e){return typeof e=="string"&&vt.includes(e)}var vt,Ft=w(()=>{m();Ne();vt=["text/plain","application/json"];});function un(e){if(!zn(e))return false;let n=Object.keys(e);return !(n.some(t=>t!=="in"&&t!=="out")||n.length===0||Object.hasOwn(e,"in")&&!Vo(e.in)||Object.hasOwn(e,"out")&&!vo(e.out))}function Vo(e){return zn(e)?Object.keys(e).every(t=>t==="mediaType"||t==="required")&&Object.hasOwn(e,"mediaType")&&Hn(e.mediaType)&&(!Object.hasOwn(e,"required")||typeof e.required=="boolean"):false}function vo(e){return zn(e)?Object.keys(e).every(t=>t==="mediaType"||t==="range")&&Object.hasOwn(e,"mediaType")&&Hn(e.mediaType)&&(!Object.hasOwn(e,"range")||typeof e.range=="boolean"):false}function zn(e){if(e===null||typeof e!="object"||Array.isArray(e))return false;let n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}var Gn=w(()=>{m();Ft();new TextDecoder("utf-8",{fatal:true,ignoreBOM:true});});function oe(e){let t=e.renderer!==void 0||e.surfaces!==void 0||e.stateProjection!==void 0||e.dataPaths!==void 0||e.usage!==void 0||e.detailPanel!==void 0||e.displayModes!==void 0||e.summaryProjection!==void 0||e.legacy!==void 0||Object.values(e.actions).some(r=>r.resultProjection!==void 0)?{id:e.id,version:e.version,...e.renderer===void 0?{}:{renderer:e.renderer},...e.surfaces===void 0?{}:{surfaces:e.surfaces},...e.stateProjection===void 0?{}:{stateProjection:e.stateProjection},...e.dataPaths===void 0?{}:{dataPaths:e.dataPaths},...e.summaryProjection===void 0?{}:{summaryProjection:e.summaryProjection},...e.legacy===void 0?{}:{legacy:e.legacy},...e.usage===void 0?{}:{usage:e.usage},...e.detailPanel===void 0?{}:{detailPanel:e.detailPanel},...e.displayModes===void 0?{}:{displayModes:e.displayModes},...e.sourceHash===void 0?{}:{sourceHash:e.sourceHash},actions:e.actions}:e.sourceHash===void 0?{id:e.id,version:e.version,actions:e.actions}:{id:e.id,version:e.version,sourceHash:e.sourceHash,actions:e.actions},i=ye(t);return crypto.createHash("sha256").update(W(i)).digest("hex")}function Ie(e){if(!/^\d+$/.test(String(e.version))||e.version<1||e.id.length<1||e.id.length>128)throw new b("DEFINITION_UNSUPPORTED","UI definition is invalid");if(e.sourceHash!==void 0&&(typeof e.sourceHash!="string"||!Bo.test(e.sourceHash)))throw new b("DEFINITION_UNSUPPORTED","UI definition source hash is invalid");if(!/^[0-9a-f]{64}$/.test(e.hash)||oe(e)!==e.hash)throw new b("DEFINITION_UNSUPPORTED","UI definition hash is invalid");for(let[n,t]of Object.entries(e.actions)){if(!n||!Array.isArray(t.capabilities)||t.capabilities.some(i=>!zo(i)))throw new b("DEFINITION_UNSUPPORTED","UI action declaration is invalid");if(t.confirmation!==void 0&&t.confirmation!=="none"&&t.confirmation!=="native")throw new b("DEFINITION_UNSUPPORTED","UI action confirmation is invalid");if(t.inputKeys&&(!Array.isArray(t.inputKeys)||t.inputKeys.some(i=>typeof i!="string"||!i)))throw new b("DEFINITION_UNSUPPORTED","UI action input declaration is invalid");if(t.dataInputs!==void 0&&(!Array.isArray(t.dataInputs)||new Set(t.dataInputs).size!==t.dataInputs.length||t.dataInputs.some(i=>typeof i!="string"||!i||t.inputKeys!==void 0&&!t.inputKeys.includes(i))))throw new b("DEFINITION_UNSUPPORTED","UI action data input declaration is invalid");if(t.resultProjection&&$n(t.resultProjection),t.content!==void 0&&!un(t.content))throw new b("DEFINITION_UNSUPPORTED","UI action content declaration is invalid");if(t.env!==void 0&&(!Array.isArray(t.env)||t.env.length===0||new Set(t.env).size!==t.env.length||t.env.some(i=>i!=="CREWX_APP_INSTANCE_ID"&&i!=="CREWX_THREAD_ID")))throw new b("DEFINITION_UNSUPPORTED","UI action environment declaration is invalid")}if(e.renderer!==void 0&&(!e.renderer||e.renderer.length>128))throw new b("DEFINITION_UNSUPPORTED","UI definition renderer is invalid");if(e.surfaces&&(!Array.isArray(e.surfaces)||e.surfaces.some(n=>!n||n.length>64)))throw new b("DEFINITION_UNSUPPORTED","UI definition surfaces are invalid");if(e.usage!==void 0&&e.usage!=="card"&&e.usage!=="window")throw new b("DEFINITION_UNSUPPORTED","UI definition usage is invalid");if(e.detailPanel!==void 0&&typeof e.detailPanel!="boolean")throw new b("DEFINITION_UNSUPPORTED","UI definition detailPanel is invalid");if(e.displayModes&&(!Array.isArray(e.displayModes)||e.displayModes.length===0||new Set(e.displayModes).size!==e.displayModes.length||e.displayModes.some(n=>n!=="inline"&&n!=="floating"&&n!=="focused")))throw new b("DEFINITION_UNSUPPORTED","UI definition displayModes are invalid");if(e.usage==="card"&&e.displayModes!==void 0)throw new b("DEFINITION_UNSUPPORTED","Card definitions cannot declare displayModes");if(e.usage==="window"&&e.detailPanel!==void 0)throw new b("DEFINITION_UNSUPPORTED","Window definitions cannot declare detailPanel");if(e.stateProjection&&$n(e.stateProjection),e.summaryProjection){$n(e.summaryProjection);let n=new Set(e.stateProjection?.allow??[]);if(e.summaryProjection.allow.some(t=>!n.has(t)))throw new b("DEFINITION_UNSUPPORTED","UI summary projection exceeds state projection")}if(e.legacy!==void 0){if(!e.legacy||typeof e.legacy!="object"||Array.isArray(e.legacy)||Object.keys(e.legacy).some(r=>!["readTool","actionTool","hostTools","agentAccess"].includes(r)))throw new b("DEFINITION_UNSUPPORTED","UI legacy metadata is invalid");let n=new Set;for(let[r,o]of [["readTool",e.legacy.readTool],["actionTool",e.legacy.actionTool]])if(o!==void 0){if(Ho(o,r==="readTool"),n.has(o.name))throw new b("DEFINITION_UNSUPPORTED","UI legacy tool names collide");n.add(o.name);}let t=e.legacy.hostTools;if(t!==void 0){if(!t||typeof t!="object"||Array.isArray(t))throw new b("DEFINITION_UNSUPPORTED","UI legacy host tools are invalid");let r={"doc.open":"crewx_app_html_viewer_open","pty.connect":"crewx_app_terminal_connect"};for(let[o,s]of Object.entries(t)){if(!Object.hasOwn(r,o)||r[o]!==s||typeof s!="string"||!/^[A-Za-z][A-Za-z0-9._-]{0,127}$/.test(s)||n.has(s))throw new b("DEFINITION_UNSUPPORTED","UI legacy host tools are invalid");n.add(s);}}let i=e.legacy.agentAccess;if(i!==void 0&&(!i||typeof i!="object"||Array.isArray(i)||Object.entries(i).some(([r,o])=>!r||!Object.hasOwn(e.actions,r)||o!=="allowed"&&o!=="denied")))throw new b("DEFINITION_UNSUPPORTED","UI legacy agent access is invalid");if(e.legacy.actionTool!==void 0&&(!i||Object.keys(i).length===0))throw new b("DEFINITION_UNSUPPORTED","UI legacy action tool requires its complete agent access map")}if(e.dataPaths!==void 0){let n=new Set(["__proto__","prototype","constructor"]);if(!Array.isArray(e.dataPaths)||e.dataPaths.length>16||new Set(e.dataPaths).size!==e.dataPaths.length||e.dataPaths.some(t=>typeof t!="string"||!/^[A-Za-z0-9_]+(?:\.[A-Za-z0-9_]+)*$/.test(t)||t.split(".").some(i=>n.has(i))||!(e.stateProjection?.allow??[]).some(i=>Ue(t,i))))throw new b("DEFINITION_UNSUPPORTED","UI definition dataPaths are invalid")}}function Ho(e,n){if(!e||typeof e!="object"||Array.isArray(e))throw new b("DEFINITION_UNSUPPORTED","UI legacy tool metadata is invalid");let t=e,i=["name","description","inputSchema","textFallback","visibility"],r=Object.hasOwn(t,"fixedResult");if(Object.keys(t).some(o=>!i.includes(o)&&!(n&&o==="fixedResult"))||i.some(o=>!Object.hasOwn(t,o))||typeof t.name!="string"||!/^[A-Za-z][A-Za-z0-9._-]{0,127}$/.test(t.name)||typeof t.description!="string"||t.description.trim().length===0||t.description.length>8192||typeof t.textFallback!="string"||t.textFallback.trim().length===0||t.textFallback.length>16384||!t.inputSchema||typeof t.inputSchema!="object"||Array.isArray(t.inputSchema)||!Array.isArray(t.visibility)||t.visibility.length===0||t.visibility.some(o=>o!=="model"&&o!=="app")||new Set(t.visibility).size!==t.visibility.length)throw new b("DEFINITION_UNSUPPORTED","UI legacy tool metadata is invalid");try{let o=ye(t.inputSchema);if(o.type!==void 0&&o.type!=="object")throw new Error("schema type");if(r){if(!n)throw new Error("fixed result location");let s=t.fixedResult;if(!s||typeof s!="object"||Array.isArray(s))throw new Error("fixed result");let a=s;if(Object.keys(a).sort().join(",")!=="argsPolicy,structuredContent"||a.argsPolicy!=="empty-only"&&a.argsPolicy!=="ignore"||!a.structuredContent||typeof a.structuredContent!="object"||Array.isArray(a.structuredContent))throw new Error("fixed result");let d=ye(a.structuredContent);if(xn(Ce(d))>4*1024)throw new Error("fixed result size")}}catch{throw new b("DEFINITION_UNSUPPORTED","UI legacy tool metadata is not projection-safe")}}function $n(e){if(!Array.isArray(e.allow)||e.allow.some(n=>!/^[A-Za-z0-9_]+(?:\.[A-Za-z0-9_]+)*$/.test(n)))throw new b("DEFINITION_UNSUPPORTED","UI projection policy is invalid")}function zo(e){return e.length>0&&e.length<=128&&e!=="*"&&e!=="all"&&!/[/*]/.test(e)}var Bo,be=w(()=>{m();Ae();pn();Gn();Bo=/^[0-9a-f]{64}$/;});var Bt=w(()=>{m();Ae();});var We,Ht=w(()=>{m();We="window";});function zt(e){if(!Array.isArray(e)||e.length===0)return false;let n=new Set;for(let t of e){if(!Go.some(i=>i===t)||n.has(t))return false;n.add(t);}return true}var Go,Gt=w(()=>{m();Go=["CREWX_APP_INSTANCE_ID","CREWX_THREAD_ID"];});function x(e){throw new Jn(e)}function tr(e){if(e===null||typeof e!="object"||Array.isArray(e))return false;try{let n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}catch{return false}}function ir(e,n){let t=Object.getOwnPropertyDescriptor(e,n);return (!t||!("value"in t))&&x("CSP_ORIGIN_INVALID"),t.value}function fn(e,n){if(!Object.prototype.hasOwnProperty.call(e,n))return [];let t=ir(e,n);Array.isArray(t)||x("CSP_ORIGIN_INVALID"),Reflect.ownKeys(t).some(o=>typeof o!="string"||o!=="length"&&!/^(?:0|[1-9][0-9]*)$/.test(o))&&x("CSP_ORIGIN_INVALID");let r=[];for(let o=0;o<t.length;o+=1)(!Object.prototype.hasOwnProperty.call(t,o)||typeof t[o]!="string")&&x("CSP_ORIGIN_INVALID"),r.push(t[o]);return Object.keys(t).length!==t.length&&x("CSP_ORIGIN_INVALID"),r}function or(e){let n;try{n=JSON.stringify(e);}catch{x("CSP_ORIGIN_INVALID");}return n===void 0&&x("CSP_ORIGIN_INVALID"),new TextEncoder().encode(n).byteLength}function Wt(e,n){/\s|\\/u.test(e)&&x("CSP_ORIGIN_INVALID");let t=qo.exec(e);t||x("CSP_ORIGIN_INVALID");let i=t[1].toLowerCase(),r=t[2];(r.includes("@")||r.includes("%")||r.includes("*"))&&x("CSP_ORIGIN_INVALID"),(r.startsWith("[")?Zo:Qo).test(r)||x("CSP_ORIGIN_INVALID"),i==="wss"&&n!=="connectDomains"&&x("CSP_ORIGIN_INVALID");let s;try{s=new URL(e);}catch{x("CSP_ORIGIN_INVALID");}(s.protocol!==`${i}:`||s.username!==""||s.password!==""||s.search!==""||s.hash!=="")&&x("CSP_ORIGIN_INVALID");let a=s.hostname.toLowerCase();if((!a||a.includes("%"))&&x("CSP_ORIGIN_INVALID"),!a.startsWith("[")){let c=a.endsWith(".")?a.slice(0,-1):a;(c.length===0||c.length>253)&&x("CSP_ORIGIN_INVALID"),c.split(".").some(f=>f.length>63||!er.test(f))&&x("CSP_ORIGIN_INVALID");}let d=s.origin;return (d==="null"||!d.startsWith(`${i}://`))&&x("CSP_ORIGIN_INVALID"),{origin:d,hostname:a}}function rr(e){let n=e.split(".").map(Number);return ((n[0]*256+n[1])*256+n[2])*256+n[3]}function Xt(e,n,t){let i=4294967295<<32-t>>>0;return (e&i)===(n&i)}function qt(e){let n=rr(e);return Xt(n,3221225472,24)?n!==3221225481&&n!==3221225482:nr.some(([t,i])=>Xt(n,t,i))}function sr(e){let n=e.indexOf("::"),t=(n<0?e:e.slice(0,n)).split(":").filter(Boolean),i=n<0?[]:e.slice(n+2).split(":").filter(Boolean);return (n<0?t:[...t,...Array(8-t.length-i.length).fill("0"),...i]).reduce((o,s)=>o<<16n|BigInt(Number.parseInt(s,16)),0n)}function ar(e){let n=sr(e),t=Number(n>>112n),i=Number(n>>96n&0xffffn);if(n>>32n===0xffffn){let r=Number(n&0xffffffffn);return qt([r>>>24&255,r>>>16&255,r>>>8&255,r&255].join("."))}return t<8192||t>16383||t===8193&&i<=511||t===8193&&i===3512||t===8194||t===16383&&i<=4095}function cr(e,n){let t=e.startsWith("[")&&e.endsWith("]")?e.slice(1,-1):e,i=net.isIP(t);if(i===4)return qt(t);if(i===6)return ar(t);let r=e.toLowerCase().replace(/\.$/,"");return !r||!r.includes(".")||n.has(r)?true:Yo.some(o=>r===o||r.endsWith(`.${o}`))}function Kt(e){return Object.freeze([...new Set(e.map(n=>n.origin))].sort())}function Yt(e){return JSON.stringify({baseUriDomains:[],connectDomains:e.connectDomains,declared:e.declared,frameDomains:e.frameDomains,resourceDomains:[]})}function Zt(e,n={}){if(e===void 0){let A=Yt({declared:false,connectDomains:[],frameDomains:[]});return Object.freeze({declared:false,connectDomains:Object.freeze([]),frameDomains:Object.freeze([]),resourceDomains:Object.freeze([]),baseUriDomains:Object.freeze([]),cspHash:crypto.createHash("sha256").update(A,"utf8").digest("hex")})}tr(e)||x("CSP_ORIGIN_INVALID");let t=Reflect.ownKeys(e);t.some(A=>typeof A!="string")&&x("CSP_ORIGIN_INVALID"),t.some(A=>!Ko.has(A))&&x("CSP_AXIS_UNKNOWN");let i=fn(e,"connectDomains"),r=fn(e,"frameDomains"),o=fn(e,"resourceDomains"),s=fn(e,"baseUriDomains");(o.length>0||s.length>0)&&x("CSP_AXIS_UNSUPPORTED"),(or(e)>Jo||i.length>Jt||r.length>Jt||i.length+r.length>Wo||[...i,...r].some(A=>new TextEncoder().encode(A).byteLength>Xo))&&x("CSP_LIMIT_EXCEEDED");let d=i.map(A=>Wt(A,"connectDomains")),c=r.map(A=>Wt(A,"frameDomains")),p=new Set((n.runtimeHostnames??[]).map(A=>A.toLowerCase().replace(/\.$/,"")));[...d,...c].some(A=>cr(A.hostname,p))&&x("CSP_ORIGIN_FORBIDDEN");let f={declared:true,connectDomains:Kt(d),frameDomains:Kt(c)},g=Yt(f);return Object.freeze({...f,resourceDomains:Object.freeze([]),baseUriDomains:Object.freeze([]),cspHash:crypto.createHash("sha256").update(g,"utf8").digest("hex")})}var Jo,Jt,Wo,Xo,Ko,Yo,qo,Zo,Qo,er,nr,Jn,Qt=w(()=>{m();Jo=4096,Jt=16,Wo=32,Xo=512,Ko=new Set(["connectDomains","frameDomains","resourceDomains","baseUriDomains"]),Yo=["localhost","local","internal","home.arpa","test","example","invalid","onion","lan","corp","home","intranet","private","localdomain"],qo=/^(https|wss):\/\/([^/?#]+)$/i,Zo=/^\[[^\]]+\](?::[0-9]+)?$/,Qo=/^[^:\[\]]+(?::[0-9]+)?$/,er=/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/,nr=[[0,8],[1681915904,10],[167772160,8],[2130706432,8],[2851995648,16],[2886729728,12],[3221225984,24],[3227017984,24],[3232235520,16],[3323068416,15],[3325256704,24],[3405803776,24],[3758096384,4],[4026531840,4]],Jn=class extends Error{constructor(t){super(t);this.code=t;}code;name="UiPluginCspNormalizationError"};});function Ke(e,n){return n===void 0||n===""?e:e===""?n:n.startsWith("[")?`${e}${n}`:`${e}.${n}`}function l(e,n=e,t,i){throw new Y(e,n,t,i)}function V(e,n){try{return n()}catch(t){throw t instanceof Y?t.withPathPrefix(e):t}}function v(e){if(e===null||typeof e!="object"||Array.isArray(e))return false;try{let n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}catch{return false}}function P(e,n){return Object.prototype.hasOwnProperty.call(e,n)}function kr(e,n){let t={};for(let[i,r]of Object.entries(e))i!==n&&(t[i]=r);return t}function z(e,n,t=[]){let i=new Set([...n,...t]),r=Object.keys(e).find(s=>!i.has(s));r!==void 0&&l("MANIFEST_INVALID","MANIFEST_INVALID",r,"unknown-key");let o=n.find(s=>!P(e,s));o!==void 0&&l("MANIFEST_INVALID","MANIFEST_INVALID",o,"missing-key");}function gn(e,n=false,t=false,i=false){return ur.test(e)||!i&&yr.test(e)||fr.test(e)||t&&ei.test(e)||Ar.test(e)&&!(n&&/^\s*data:/i.test(e)&&!ei.test(e))}function In(e,n=new Set,t=0,i=false,r=false,o=""){if(typeof e=="string"){gn(e,i,r)&&l("UNSAFE_VALUE","UNSAFE_VALUE",o,"unsafe-value");return}if(!(e===null||typeof e!="object")){(t>8||n.has(e))&&l("MANIFEST_INVALID","MANIFEST_INVALID",o),n.add(e);try{if(Array.isArray(e)){e.forEach((s,a)=>In(s,n,t+1,!1,!1,Ke(o,`[${a}]`)));return}v(e)||l("MANIFEST_INVALID","MANIFEST_INVALID",o);for(let[s,a]of Object.entries(e))In(a,n,t+1,i&&t===0&&(s==="name"||s==="description"),r,Ke(o,s));}finally{n.delete(e);}}}function de(e,n){let t=e[n];return typeof t!="string"&&l("MANIFEST_INVALID"),t}function re(e,n,t){let i=e[n];return (!Number.isSafeInteger(i)||i<t)&&l("MANIFEST_INVALID"),i}function Wn(e){return lr.test(e)||l("MANIFEST_INVALID"),e}function ke(e){return pr.test(e)||l("TOKEN_INVALID"),e}function xr(e){return di.test(e)||l("MANIFEST_INVALID"),e}function jr(e){v(e)||l("MANIFEST_INVALID");let n={};for(let[t,i]of Object.entries(e)){let r=xr(t);v(i)||l("MANIFEST_INVALID");let o=i.type;if(o==="text"){z(i,["type","maxLength"]),n[r]={type:o,maxLength:re(i,"maxLength",1)};continue}if(o==="text-list"){z(i,["type","max","itemMaxLength"]),n[r]={type:o,max:re(i,"max",0),itemMaxLength:re(i,"itemMaxLength",1)};continue}if(o==="step-list"){z(i,["type","min","max","labelMaxLength","detailMaxLength"]);let s=re(i,"min",0),a=re(i,"max",1);s>a&&l("MANIFEST_INVALID"),n[r]={type:o,min:s,max:a,labelMaxLength:re(i,"labelMaxLength",1),detailMaxLength:re(i,"detailMaxLength",1)};continue}typeof o=="string"&&l("SCHEMA_TYPE_UNSUPPORTED"),l("MANIFEST_INVALID");}return n}function Vr(e,n,t){let i=e[n];(!i||i.type!==t)&&l("MANIFEST_INVALID");}function yn(e,n,t){let i=de(e,"field");return di.test(i)||l("MANIFEST_INVALID"),Vr(n,i,t),i}function vr(e,n){v(e)||l("MANIFEST_INVALID");let t=e.primitive;switch(typeof t!="string"&&l("MANIFEST_INVALID"),wr.includes(t)||l("PRIMITIVE_UNKNOWN"),t){case "card-shell":return z(e,["primitive"]),{primitive:t};case "meta-banner":return z(e,["primitive","badgeToken","noticeToken"]),{primitive:t,badgeToken:ke(de(e,"badgeToken")),noticeToken:ke(de(e,"noticeToken"))};case "heading":return z(e,["primitive","field"]),{primitive:t,field:yn(e,n,"text")};case "labeled-text":return z(e,["primitive","titleToken","field","variant"]),e.variant!=="callout"&&l("MANIFEST_INVALID"),{primitive:t,titleToken:ke(de(e,"titleToken")),field:yn(e,n,"text"),variant:"callout"};case "step-flow":return z(e,["primitive","titleToken","field"]),{primitive:t,titleToken:ke(de(e,"titleToken")),field:yn(e,n,"step-list")};case "text-list":{z(e,["primitive","titleToken","field"],["emptyToken","hideWhenEmpty"]);let i={primitive:t,titleToken:ke(de(e,"titleToken")),field:yn(e,n,"text-list")};return P(e,"emptyToken")&&(i.emptyToken=ke(de(e,"emptyToken"))),P(e,"hideWhenEmpty")&&(typeof e.hideWhenEmpty!="boolean"&&l("MANIFEST_INVALID"),i.hideWhenEmpty=e.hideWhenEmpty),i}}return l("MANIFEST_INVALID")}function Fr(e,n){return Array.isArray(e)||l("MANIFEST_INVALID"),e.map(t=>vr(t,n))}function G(e="v2 manifest exceeds a contract limit",n,t){return l("LIMIT_EXCEEDED",e,n,t)}function ne(e="initial state is not projection-safe"){return l("INITIAL_STATE_INVALID",e)}function ni(e,n){return (typeof e!="string"||e.length===0||e.length>4096||e.trim().length===0||Rr.test(e)||Ur.test(e))&&l("MANIFEST_INVALID",`${n} is invalid`),(gn(e,true,true)||Ir.test(e)||gr.test(e)||mr.test(e))&&l("UNSAFE_VALUE",`${n} contains an unsafe value`),e}function Xn(e,n){return (typeof e!="string"||!ce.test(e))&&l("MANIFEST_INVALID",`${n} is invalid`),e}function Br(e){return (typeof e!="string"||!jn.test(e)||e==="*"||e==="all")&&l("MANIFEST_INVALID","action capability is invalid"),e}function pi(e){return (typeof e!="string"||!Or.test(e))&&l("MANIFEST_INVALID","resource hash is invalid"),e}function Kn(e,n=new Set,t=0,i=""){if(typeof e=="string"){e.length>4096&&G("v2 manifest string is too long",i,"string-too-long");return}if(!(e===null||typeof e=="boolean")){if(typeof e=="number"){Number.isFinite(e)||l("MANIFEST_INVALID","v2 manifest contains a non-finite number",i,"non-finite-number");return}(e===void 0||typeof e=="function"||typeof e=="bigint")&&l("MANIFEST_INVALID","v2 manifest contains a non-JSON value",i,"non-json-value"),typeof e!="object"&&l("MANIFEST_INVALID","MANIFEST_INVALID",i),t>8&&G("v2 manifest nesting is too deep",i,"too-deep"),n.has(e)&&l("MANIFEST_INVALID","v2 manifest contains a cycle",i,"cycle"),n.add(e);try{if(Array.isArray(e)){e.length>128&&G("v2 manifest array is too long",i,"array-too-long"),e.forEach((r,o)=>Kn(r,n,t+1,Ke(i,`[${o}]`)));return}v(e)||l("MANIFEST_INVALID","v2 manifest contains a non-plain object",i,"non-plain-object");for(let[r,o]of Object.entries(e))Kn(o,n,t+1,Ke(i,r));}finally{n.delete(e);}}}function li(e){return (typeof e!="string"||e.length>4096||!Je.test(e))&&(typeof e=="string"&&e.length>4096&&G("projection path is too long"),l("MANIFEST_INVALID","projection paths must be canonical exact paths")),e.split(".").some(t=>we(t))&&l("MANIFEST_INVALID","projection paths cannot address reserved state keys"),e}function Yn(e){v(e)||l("MANIFEST_INVALID","projection policy must be an object"),z(e,["allow"]),Array.isArray(e.allow)||l("MANIFEST_INVALID","projection allow must be an array"),e.allow.length>128&&G("projection allowlist is too long");let n=[],t=new Set;for(let i of e.allow){let r=li(i);t.has(r)&&l("MANIFEST_INVALID","projection allowlist contains a duplicate path"),t.add(r),n.push(r);}return {allow:n}}function Hr(e,n){if(e===void 0)return;Array.isArray(e)||l("MANIFEST_INVALID","dataPaths must be an array"),e.length>Cr&&G("dataPaths exceed the v2 limit");let t=[],i=new Set;for(let r of e){let o=li(r);i.has(o)&&l("MANIFEST_INVALID","dataPaths contain a duplicate path"),n.some(s=>Ue(o,s))||l("MANIFEST_INVALID","dataPaths must be projection-allowed"),i.add(o),t.push(o);}return t}function xe(e,n,t=Number.MAX_SAFE_INTEGER){return (!Number.isSafeInteger(e)||e<0||e>t)&&l("MANIFEST_INVALID",`${n} is invalid`),e}function ti(e,n){return (typeof e!="number"||!Number.isFinite(e))&&l("MANIFEST_INVALID",`${n} is invalid`),e}function qn(e,n=0,t=new Set){if(typeof e=="string")return (e.length>4096||gn(e))&&l("UNSAFE_VALUE","schema enum contains an unsafe string"),e;if(e===null||typeof e=="boolean")return e;if(typeof e=="number")return Number.isFinite(e)||l("MANIFEST_INVALID","schema enum contains a non-finite number"),e;(n>8||typeof e!="object"||e===void 0)&&G("schema enum is too deep"),t.has(e)&&l("MANIFEST_INVALID","schema enum contains a cycle"),t.add(e);try{if(Array.isArray(e))return e.length>128&&G("schema enum array is too long"),e.map(r=>qn(r,n+1,t));v(e)||l("MANIFEST_INVALID","schema enum contains a non-plain object");let i={};for(let[r,o]of Object.entries(e))we(r)&&l("MANIFEST_INVALID","schema enum contains a reserved key"),i[r]=qn(o,n+1,t);return i}finally{t.delete(e);}}function zr(e,n){if(e===void 0)return;Array.isArray(e)||l("MANIFEST_INVALID","schema required must be an array"),e.length>64&&G("schema required list is too long");let t=[],i=new Set;for(let r of e)(typeof r!="string"||!Je.test(r))&&l("MANIFEST_INVALID","schema required contains an invalid key"),r.length>4096&&G("schema required key is too long"),i.has(r)&&l("MANIFEST_INVALID","schema required contains a duplicate key"),n&&!Object.prototype.hasOwnProperty.call(n,r)&&l("MANIFEST_INVALID","schema required references an undeclared property"),i.add(r),t.push(r);return t}function Gr(e,n){let t=n?Je:ln;return e.length>4096&&G("schema property name is too long"),(!t.test(e)||e.split(".").some(i=>we(i)))&&l("MANIFEST_INVALID","schema property name is invalid"),e}function Zn(e,n=0,t=false){v(e)||l("MANIFEST_INVALID","action inputSchema must be an object"),n>8&&G("action inputSchema is too deep");let i=e.type;i!=="object"&&i!=="string"&&i!=="number"&&i!=="integer"&&i!=="boolean"&&i!=="array"&&i!=="null"&&(typeof i=="string"&&l("SCHEMA_TYPE_UNSUPPORTED","action inputSchema type is unsupported"),l("MANIFEST_INVALID","action inputSchema type is required"));let r=["type","enum"];i==="string"&&r.push("minLength","maxLength"),i==="array"&&r.push("minItems","maxItems","items"),i==="object"&&r.push("minProperties","maxProperties","properties","required","additionalProperties"),(i==="number"||i==="integer")&&r.push("minimum","maximum"),z(e,["type"],r.filter(a=>a!=="type"));let o={type:i};if(P(e,"enum")&&(Array.isArray(e.enum)||l("MANIFEST_INVALID","schema enum must be an array"),e.enum.length>128&&G("schema enum is too long"),o.enum=e.enum.map(a=>qn(a))),i==="string"&&(P(e,"minLength")&&(o.minLength=xe(e.minLength,"schema minLength",4096)),P(e,"maxLength")&&(o.maxLength=xe(e.maxLength,"schema maxLength",4096)),o.minLength!==void 0&&o.maxLength!==void 0&&o.minLength>o.maxLength&&l("MANIFEST_INVALID","schema string length bounds are inverted")),(i==="number"||i==="integer")&&(P(e,"minimum")&&(o.minimum=ti(e.minimum,"schema minimum")),P(e,"maximum")&&(o.maximum=ti(e.maximum,"schema maximum")),o.minimum!==void 0&&o.maximum!==void 0&&o.minimum>o.maximum&&l("MANIFEST_INVALID","schema numeric bounds are inverted")),i==="array"&&(P(e,"minItems")&&(o.minItems=xe(e.minItems,"schema minItems",128)),P(e,"maxItems")&&(o.maxItems=xe(e.maxItems,"schema maxItems",128)),o.minItems!==void 0&&o.maxItems!==void 0&&o.minItems>o.maxItems&&l("MANIFEST_INVALID","schema array length bounds are inverted"),P(e,"items")&&(o.items=Zn(e.items,n+1,false))),i==="object"){let a;if(P(e,"properties")){v(e.properties)||l("MANIFEST_INVALID","schema properties must be an object");let c=Object.entries(e.properties);c.length>64&&G("schema properties are too many"),a={};for(let[p,f]of c){let g=Gr(p,t);a[g]=Zn(f,n+1,false);}o.properties=a;}P(e,"minProperties")&&(o.minProperties=xe(e.minProperties,"schema minProperties",64)),P(e,"maxProperties")&&(o.maxProperties=xe(e.maxProperties,"schema maxProperties",64)),o.minProperties!==void 0&&o.maxProperties!==void 0&&o.minProperties>o.maxProperties&&l("MANIFEST_INVALID","schema object property bounds are inverted");let d=zr(e.required,a);d!==void 0&&(o.required=d),P(e,"additionalProperties")&&(e.additionalProperties!==false&&l("MANIFEST_INVALID","schema additionalProperties must be false"),o.additionalProperties=false);}let s=JSON.stringify(o);return (s===void 0||Buffer.byteLength(s,"utf8")>65536)&&G("action inputSchema subtree is too large"),o}function $r(e){let n=Zn(e,0,true);return (n.type!=="object"||!n.properties)&&l("MANIFEST_INVALID","action inputSchema must declare object properties"),n}function Jr(e){if(v(e)||l("MANIFEST_INVALID","action backend must be an object"),e.type==="core"){z(e,br);let n=e.handler;return (typeof n!="string"||!Vn.test(n))&&l("MANIFEST_INVALID","core backend handler is invalid"),{type:"core",handler:n}}if(e.type==="skill"){z(e,Pr,Mr),(!Array.isArray(e.command)||e.command.length===0||e.command.length>16)&&l("MANIFEST_INVALID","skill backend command is invalid");let n=[];for(let i of e.command)(typeof i!="string"||i.length===0||i.length>256||!vn.test(i))&&l("MANIFEST_INVALID","skill backend command token is invalid"),n.push(i);let t=P(e,"env")?Xr(e.env):void 0;return {type:"skill",command:n,...t===void 0?{}:{env:t}}}l("MANIFEST_INVALID","action backend type is unsupported");}function Wr(e){v(e)||l("MANIFEST_INVALID","action must be an object"),z(e,Er,Dr),P(e,"_meta")&&V("_meta",()=>ui(e._meta));let n=V("actionId",()=>Xn(e.actionId,"actionId"));kn(n)&&l("MANIFEST_INVALID",`actionId "${n}" is not projection-safe`,"actionId");let t=V("capability",()=>Br(e.capability)),i=e.mutation;typeof i!="boolean"&&l("MANIFEST_INVALID","action mutation must be boolean","mutation");let r=V("inputSchema",()=>$r(e.inputSchema)),o;if(P(e,"dataInputs")){Array.isArray(e.dataInputs)||l("MANIFEST_INVALID","action dataInputs must be an array","dataInputs");let p=r.properties,f=new Set,g=[];for(let A of e.dataInputs)(typeof A!="string"||!P(p,A)||f.has(A))&&l("MANIFEST_INVALID","action dataInputs must be unique declared properties","dataInputs"),f.add(A),g.push(A);o=g;}let s=V("resultProjection",()=>Yn(e.resultProjection)),a=V("backend",()=>Jr(e.backend)),d;P(e,"content")&&((a.type!=="skill"||!un(e.content))&&l("MANIFEST_INVALID","action content declaration is invalid","content"),d=Kr(e.content));let c;if(P(e,"confirmation")){let p=e.confirmation;p!=="none"&&p!=="native"&&l("MANIFEST_INVALID","action confirmation is invalid","confirmation"),c=p;}return {actionId:n,capability:t,mutation:i,inputSchema:r,resultProjection:s,backend:a,...d===void 0?{}:{content:d},...o===void 0?{}:{dataInputs:o},...c===void 0?{}:{confirmation:c}}}function Xr(e){return zt(e)||l("MANIFEST_INVALID","skill backend env is invalid"),Object.freeze([...e])}function Kr(e){return Object.freeze({...e.in===void 0?{}:{in:Object.freeze({...e.in})},...e.out===void 0?{}:{out:Object.freeze({...e.out})}})}function Yr(e){return v(e)||l("INITIAL_STATE_INVALID","initialState must be an object"),z(e,Sr,Lr),e.path!=="ui/state.json"&&l("MANIFEST_INVALID","initialState path is not fixed"),P(e,"hash")?{path:"ui/state.json",hash:pi(e.hash)}:{path:"ui/state.json"}}function qr(e){let n=["wasm","terminal","htmlDocuments"];return (!v(e)||Object.keys(e).length===0||Object.keys(e).some(t=>!n.includes(t)||e[t]!==true))&&l("MANIFEST_INVALID","runtime must contain only known capability flags set to true"),{...e.wasm===true?{wasm:true}:{},...e.terminal===true?{terminal:true}:{},...e.htmlDocuments===true?{htmlDocuments:true}:{}}}function Zr(e,n){let t;try{t=Zt(e);}catch(i){let r=i!==null&&typeof i=="object"&&"code"in i&&typeof i.code=="string"?i.code:"CSP_ORIGIN_INVALID";return l("MANIFEST_INVALID",r,void 0,r.toLowerCase().replace(/_/g,"-"))}if(t.frameDomains.length>0&&l("MANIFEST_INVALID","external origins in csp are not enabled in this rollout",void 0,"csp-not-enabled"),t.connectDomains.length!==0)return n?.terminal===true&&l("MANIFEST_INVALID","runtime.terminal cannot be combined with csp.connectDomains","connectDomains","terminal-with-connect-domains"),Object.freeze({connectDomains:t.connectDomains})}function Qr(e,n){In(v(e)&&P(e,"csp")?kr(e,"csp"):e,new Set,0,true,true),Kn(e),v(e)||l("MANIFEST_INVALID"),z(e,_r,Tr),P(e,"_meta")&&V("_meta",()=>ui(e._meta)),e.manifestVersion!==2&&l("MANIFEST_INVALID");let t;P(e,"runtime")&&(t=V("runtime",()=>qr(e.runtime)));let i;P(e,"csp")&&(i=V("csp",()=>Zr(e.csp,t)));let r=V("pluginId",()=>Xn(e.pluginId,"pluginId")),o=V("definitionId",()=>Xn(e.definitionId,"definitionId")),s=V("version",()=>re(e,"version",1)),a=V("name",()=>ni(e.name,"name")),d=V("description",()=>ni(e.description,"description")),c;P(e,"icon")&&((typeof e.icon!="string"||!/^[a-z][a-z0-9-]{0,63}$/.test(e.icon))&&l("MANIFEST_INVALID","icon is invalid","icon"),c=e.icon);let p;P(e,"tone")&&((typeof e.tone!="string"||!Fn.includes(e.tone))&&l("MANIFEST_INVALID","tone is invalid","tone"),p=e.tone),e.entry!=="ui/index.html"&&l("MANIFEST_INVALID","entry path is not fixed","entry","fixed-value");let f;P(e,"entryHash")&&(f=V("entryHash",()=>pi(e.entryHash)));let g;P(e,"initialState")&&(g=V("initialState",()=>Yr(e.initialState)));let A;P(e,"usage")&&(e.usage!=="card"&&e.usage!=="window"&&l("MANIFEST_INVALID","usage is invalid","usage"),A=e.usage);let T;P(e,"detailPanel")&&(typeof e.detailPanel!="boolean"&&l("MANIFEST_INVALID","detailPanel is invalid","detailPanel"),T=e.detailPanel);let L;if(P(e,"displayModes")){((A??We)!==We||!Array.isArray(e.displayModes)||e.displayModes.length===0)&&l("MANIFEST_INVALID","displayModes are only valid for window Apps","displayModes");let u=new Set(["inline","floating","focused"]);(new Set(e.displayModes).size!==e.displayModes.length||e.displayModes.some(_=>typeof _!="string"||!u.has(_)))&&l("MANIFEST_INVALID","displayModes are invalid","displayModes"),L=e.displayModes;}(A??We)===We&&T!==void 0&&l("MANIFEST_INVALID","detailPanel is card-only","detailPanel");let N=n.mode??"local";N!=="local"&&N!=="installed"&&N!=="published"&&l("MANIFEST_INVALID","manifest mode is invalid"),N!=="local"&&f===void 0&&l("MANIFEST_INVALID","installed manifests require entryHash","entryHash","required-when-installed"),N!=="local"&&g!==void 0&&g.hash===void 0&&l("MANIFEST_INVALID","installed manifests require initialState.hash","initialState.hash","required-when-installed"),(!Array.isArray(e.surfaces)||e.surfaces.length===0)&&l("MANIFEST_INVALID","surfaces are invalid","surfaces"),e.surfaces.length>2&&G("surfaces exceed the v2 limit","surfaces","too-many-items");let F=[],R=new Set;for(let u of e.surfaces)(typeof u!="string"||!Bn.includes(u))&&l("MANIFEST_INVALID","surface is unsupported","surfaces"),R.has(u)&&l("MANIFEST_INVALID","surfaces contain a duplicate","surfaces","duplicate-item"),R.add(u),F.push(u);v(e.size)||l("MANIFEST_INVALID","size must be an object","size"),V("size",()=>z(e.size,["height"]));let B=V("size",()=>re(e.size,"height",1));B>720&&G("size.height exceeds the v2 limit","size.height","too-large");let H=V("stateProjection",()=>Yn(e.stateProjection)),I=e.summaryProjection===void 0?void 0:V("summaryProjection",()=>Yn(e.summaryProjection));I!==void 0&&I.allow.some(u=>!H.allow.includes(u))&&l("MANIFEST_INVALID","summaryProjection must be a subset of stateProjection.allow","summaryProjection");let y=V("dataPaths",()=>Hr(e.dataPaths,H.allow));Array.isArray(e.actions)||l("MANIFEST_INVALID","actions must be an array","actions"),e.actions.length>32&&G("actions exceed the v2 limit","actions","too-many-items");let M=[],C=new Set;for(let[u,_]of e.actions.entries()){let D=`actions[${u}]`,U=V(D,()=>Wr(_));if(C.has(U.actionId)&&l("MANIFEST_INVALID","actions contain a duplicate actionId",`${D}.actionId`,"duplicate-item"),U.backend.type==="core"&&U.backend.handler==="state.set"){U.mutation||l("MANIFEST_INVALID","state.set actions must be mutations",`${D}.mutation`);for(let E of Object.keys(U.inputSchema.properties))H.allow.includes(E)||l("MANIFEST_INVALID","state.set input paths must be projection-allowed",`${D}.inputSchema.properties`);}C.add(U.actionId),M.push(U);}return {manifestVersion:2,pluginId:r,definitionId:o,version:s,name:a,description:d,...c===void 0?{}:{icon:c},...p===void 0?{}:{tone:p},entry:"ui/index.html",...f===void 0?{}:{entryHash:f},...t===void 0?{}:{runtime:t},...i===void 0?{}:{csp:i},...g===void 0?{}:{initialState:g},...A===void 0?{}:{usage:A},...T===void 0?{}:{detailPanel:T},...L===void 0?{}:{displayModes:L},surfaces:F,size:{height:B},stateProjection:H,...I===void 0?{}:{summaryProjection:I},...y===void 0?{}:{dataPaths:y},actions:M}}function ui(e){v(e)||l("MANIFEST_INVALID","_meta must be an object");let n=JSON.stringify(e);(n===void 0||Buffer.byteLength(n,"utf8")>Nr)&&G("_meta exceeds the 4 KiB limit",void 0,"meta-too-large");}function es(e){let n={},t={};for(let o of e.actions){n[o.actionId]={capabilities:[o.capability],inputKeys:Object.keys(o.inputSchema.properties??{}),...o.dataInputs===void 0?{}:{dataInputs:o.dataInputs},resultProjection:o.resultProjection,...o.confirmation===void 0?{}:{confirmation:o.confirmation},...o.content===void 0?{}:{content:o.content},...o.backend.type!=="skill"||o.backend.env===void 0?{}:{env:o.backend.env}};let s=o.backend.type==="skill"||o.backend.type==="core"&&o.backend.handler==="state.set";t[o.actionId]={actionId:o.actionId,mutation:o.mutation,backend:o.backend,launchPolicy:s?"allowed":"denied",...s?{}:{denialCode:"EXEC_DENIED"}};}let i={id:e.definitionId,version:e.version,renderer:"sandbox-html",...e.usage===void 0?{}:{usage:e.usage},...e.detailPanel===void 0?{}:{detailPanel:e.detailPanel},...e.displayModes===void 0?{}:{displayModes:e.displayModes},surfaces:e.surfaces,stateProjection:e.stateProjection,...e.summaryProjection===void 0?{}:{summaryProjection:e.summaryProjection},...e.dataPaths===void 0?{}:{dataPaths:e.dataPaths},actions:n},r={entry:{path:"ui/index.html",...e.entryHash===void 0?{}:{hash:e.entryHash}},...e.initialState===void 0?{}:{initialState:e.initialState}};return {manifest:e,definition:i,handlers:t,resources:r}}function Qn(e,n,t,i,r,o){if(typeof e=="string"){let s=r.length>0&&o.some(a=>Ue(r.join("."),a));return (e.length>4096||gn(e,false,false,s))&&ne("state contains an unsafe string"),e}if(e===null||typeof e=="boolean")return e;if(typeof e=="number")return Number.isFinite(e)||ne("state contains a non-finite number"),e;(e===void 0||typeof e!="object"||typeof e=="function"||typeof e=="bigint")&&ne("state contains a non-JSON value"),t>8&&ne("state is too deep"),n.has(e)&&ne("state contains a cycle"),n.add(e);try{let s;if(Array.isArray(e))e.length>128&&ne("state array is too long"),s=e.map(d=>Qn(d,n,t+1,65536,r,o));else {v(e)||ne("state contains a non-plain object");let d={};for(let[c,p]of Object.entries(e))(c.length>4096||!ln.test(c)||we(c))&&(c.length>4096&&ne("state key is too long"),ne("state contains a reserved or invalid key")),d[c]=Qn(p,n,t+1,65536,[...r,c],o);s=d;}let a=JSON.stringify(s);return (a===void 0||Buffer.byteLength(a,"utf8")>i)&&ne("state subtree is too large"),s}finally{n.delete(e);}}function nt(e,n=[]){v(e)||ne("initial state must be a JSON object");let t=Qn(e,new Set,0,65536,[],n);return (t===null||Array.isArray(t)||typeof t!="object")&&ne(),t}function ns(e,n={}){In(e),v(e)||l("MANIFEST_INVALID"),z(e,hr),e.manifestVersion!==1&&l("MANIFEST_INVALID");let t=Wn(de(e,"pluginId")),i=Wn(de(e,"definitionId")),r=re(e,"version",1),o=re(e,"primitiveSet",1),s=n.supportedPrimitiveSet??dr;(!Number.isSafeInteger(s)||s<1)&&l("MANIFEST_INVALID"),o>s&&l("PRIMITIVE_SET_UNSUPPORTED"),v(e.activation)||l("MANIFEST_INVALID"),z(e.activation,["kind","language"]),e.activation.kind!=="fenced-code"&&l("MANIFEST_INVALID");let a=Wn(de(e.activation,"language")),d=jr(e.schema),c=Fr(e.layout,d);return {manifestVersion:1,pluginId:t,definitionId:i,version:r,primitiveSet:o,activation:{kind:"fenced-code",language:a},schema:d,layout:c}}function ts(e,n={}){return v(e)||l("MANIFEST_INVALID"),Object.hasOwn(e,"lineage")&&l("MANIFEST_INVALID","lineage is only allowed in product bundle indexes"),e.manifestVersion===2?Qr(e,n):ns(e,n)}function Ye(e,n={}){try{return ts(e,n)}catch(t){if(t instanceof Y)throw t;return l("MANIFEST_INVALID")}}function qe(e,n={}){let t=Ye(e,n);return t.manifestVersion===2?es(t):t}var dr,pr,lr,di,ur,fr,yr,Ar,ei,Ir,gr,mr,hr,_r,Tr,Er,Dr,Nr,br,Pr,Mr,Sr,Lr,Or,Rr,Ur,Cr,wr,Y,tt=w(()=>{m();Ht();Ae();Gn();Gt();Qt();Ne();dr=1,pr=/^[a-z][a-zA-Z0-9]*(\.[a-zA-Z0-9]+)+$/,lr=/^[A-Za-z][A-Za-z0-9._-]{0,127}$/,di=/^[A-Za-z][A-Za-z0-9_-]{0,63}$/,ur=/<\/?[A-Za-z][^>]*>/,fr=/^(?:[A-Za-z]:[\\/]|\\\\|~[\\/]|\/)/,yr=/^(?:https?|file|ftp|ws|wss):\/\//i,Ar=/^\s*(?:javascript|data):/i,ei=/data:[^,\s]*,/i,Ir=/(?:https?|file|ftp|ws|wss):\/\//i,gr=/javascript:/i,mr=/(?:^[\s]*|[\s"'(=])(?:[A-Za-z]:[\\/]|\\\\|~[\\/]|\/)(?=[^\s"'<>])[^\s"'<>]*/,hr=["manifestVersion","pluginId","definitionId","version","primitiveSet","activation","schema","layout"],_r=["manifestVersion","pluginId","definitionId","version","name","description","entry","surfaces","size","stateProjection","actions"],Tr=["_meta","icon","tone","entryHash","runtime","csp","initialState","usage","detailPanel","displayModes","summaryProjection","dataPaths","focusedAiDataPaths"],Er=["actionId","capability","mutation","inputSchema","resultProjection","backend"],Dr=["confirmation","dataInputs","content","_meta"],Nr=4*1024,br=["type","handler"],Pr=["type","command"],Mr=["env"],Sr=["path"],Lr=["hash"],Or=/^[0-9a-f]{64}$/,Rr=/[\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F]/,Ur=/[\r\n]/,Cr=16,wr=["card-shell","meta-banner","heading","labeled-text","step-flow","text-list"],Y=class e extends Error{constructor(t,i=t,r,o){super(i);this.code=t;this.path=r;this.rule=o;}code;path;rule;name="UiPluginValidationError";withPathPrefix(t){return new e(this.code,this.message,Ke(t,this.path),this.rule)}};});function Ii(e){return typeof e=="string"&&e.length<=os&&is.test(e)}function S(e,n,t,i,r){throw new pe(e,{path:n,rule:t,...i===void 0?{}:{message:i},...r===void 0?{}:{file:r}})}function te(e){if(e===null||typeof e!="object"||Array.isArray(e))return false;try{let n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}catch{return false}}function X(e,n){return Object.prototype.hasOwnProperty.call(e,n)}function me(e){let n=`_meta["${Ee}"]`;return e===void 0||e===""?n:e.startsWith("[")?`${n}${e}`:`${n}.${e}`}function cs(e){return e.toLowerCase().replace(/_/g,"-")}function ds(e){if(e===void 0||e==="")return "";let n=/^([^.[]+)(.*)$/.exec(e);if(!n)return me(e);let[,t,i]=n;switch(t){case "pluginId":return `name${i}`;case "name":return `display_name${i}`;case "description":return `description${i}`;case "_meta":return `_meta${i}`;case "version":return me("definitionVersion");case "definitionId":return me("definitionId");default:return me(`${t}${i}`)}}function gi(e,n,t){return {path:t(e.path),rule:e.rule??cs(e.code),...e.message!==e.code?{message:e.message}:{},file:n}}function mi(e){return JSON.parse(JSON.stringify(e))}function rt(e,n,t=0,i=new Set){if(typeof e=="string"){e.length>4096&&S("LIMIT_EXCEEDED",n,"string-too-long"),(rs.test(e)||ss.test(e)||as.test(e))&&S("UNSAFE_VALUE",n,"unsafe-value");return}if(!(e===null||typeof e=="boolean")){if(typeof e=="number"){Number.isFinite(e)||S("MANIFEST_INVALID",n,"non-finite-number");return}typeof e!="object"&&S("MANIFEST_INVALID",n,"non-json-value"),t>8&&S("LIMIT_EXCEEDED",n,"too-deep"),i.has(e)&&S("MANIFEST_INVALID",n,"cycle"),i.add(e);try{if(Array.isArray(e)){e.length>128&&S("LIMIT_EXCEEDED",n,"array-too-long"),e.forEach((r,o)=>rt(r,`${n}[${o}]`,t+1,i));return}te(e)||S("MANIFEST_INVALID",n,"non-plain-object");for(let[r,o]of Object.entries(e))rt(o,n===""?r:`${n}.${r}`,t+1,i);}finally{i.delete(e);}}}function se(e,n){return (typeof e!="string"||e.length===0)&&S("MANIFEST_INVALID",n,"string"),e}function Ve(e,n){return te(e)||S("MANIFEST_INVALID",n,"object"),e}function ps(e,n){Array.isArray(e)||S("MANIFEST_INVALID",n,"array"),e.forEach((t,i)=>se(t,`${n}[${i}]`));}function ls(e,n){typeof e!="boolean"&&S("MANIFEST_INVALID",n,"boolean");}function Ze(e,n,t,i){for(let r of Object.keys(e))!t.includes(r)&&!i.includes(r)&&S("MANIFEST_INVALID",`${n}.${r}`,"unknown-key");for(let r of t)X(e,r)||S("MANIFEST_INVALID",`${n}.${r}`,"missing-key");}function us(e,n){switch(rt(n,e),e){case "long_description":case "homepage":case "documentation":case "support":case "icon":case "license":se(n,e);return;case "author":{let t=Ve(n,e);Ze(t,e,["name"],["email","url"]);for(let i of Object.keys(t))se(t[i],`${e}.${i}`);return}case "repository":{let t=Ve(n,e);Ze(t,e,[],["type","url"]);for(let i of Object.keys(t))se(t[i],`${e}.${i}`);return}case "icons":{Array.isArray(n)||S("MANIFEST_INVALID",e,"array"),n.forEach((t,i)=>{let r=`${e}[${i}]`,o=Ve(t,r);Ze(o,r,["src","size"],["theme"]),se(o.src,`${r}.src`),se(o.size,`${r}.size`),X(o,"theme")&&se(o.theme,`${r}.theme`);});return}case "screenshots":case "keywords":case "privacy_policies":ps(n,e);return;case "tools":{Array.isArray(n)||S("MANIFEST_INVALID",e,"array"),n.forEach((t,i)=>{let r=`${e}[${i}]`,o=Ve(t,r);Ze(o,r,["name"],["description"]),se(o.name,`${r}.name`),X(o,"description")&&se(o.description,`${r}.description`);});return}case "prompts":{Array.isArray(n)||S("MANIFEST_INVALID",e,"array"),n.forEach((t,i)=>{let r=`${e}[${i}]`,o=Ve(t,r);Ze(o,r,["name","text"],["description","arguments"]),se(o.name,`${r}.name`),se(o.text,`${r}.text`);});return}case "tools_generated":case "prompts_generated":ls(n,e);return;case "localization":case "compatibility":case "user_config":Ve(n,e);return;default:S("MANIFEST_INVALID",e,"unknown-key");}}function mn(e){return typeof e=="string"&&ce.test(e)?e:void 0}function hi(e){return Number.isSafeInteger(e)&&e>=1?e:void 0}function fs(e){let n=mn(e.name);if(n===void 0)return;let t=e._meta,i=te(t)?t[Ee]:void 0,r=te(i)?i:{},o=X(r,"definitionId")?mn(r.definitionId):n,s=X(r,"definitionVersion")?hi(r.definitionVersion):1;return {pluginId:n,...o===void 0?{}:{definitionId:o},...s===void 0?{}:{definitionVersion:s}}}function ys(e){let n=mn(e.pluginId);if(n===void 0)return;let t=mn(e.definitionId),i=hi(e.version);return {pluginId:n,...t===void 0?{}:{definitionId:t},...i===void 0?{}:{definitionVersion:i}}}function dt(e){try{let n=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(e));if(!te(n))return !1;let t=n._meta;return te(t)&&X(t,Ee)}catch{return false}}function As(e,n){if(e===Me)return n.builtinOnly===true;let t=n._meta,i=te(t)?t[Ee]:void 0;return te(i)&&i.builtinOnly===true}function Is(e){X(e,"server")&&S("MANIFEST_INVALID","server","server-unsupported","phase 1 runs CrewX-owned Apps only");for(let s of Object.keys(e))at.includes(s)||S("MANIFEST_INVALID",s,"unknown-key");for(let s of ct)X(e,s)||S("MANIFEST_INVALID",s,"missing-key");e.manifest_version!==it&&S("MANIFEST_INVALID","manifest_version","unsupported-version",`manifest_version must be "${it}"`),Ii(e.version)||S("MANIFEST_INVALID","version","semver","version must be a semver.org version such as 0.1.0");let n=e._meta;te(n)||S("MANIFEST_INVALID","_meta","object"),X(n,Ee)||S("MANIFEST_INVALID",me(),"missing-key");let t=n[Ee];te(t)||S("MANIFEST_INVALID",me(),"object");for(let s of Object.keys(t))ot.includes(s)||Ai.includes(s)||S("MANIFEST_INVALID",me(s),"unknown-key");for(let s of ot)X(t,s)||S("MANIFEST_INVALID",me(s),"missing-key");if(X(t,"definitionVersion")){let s=t.definitionVersion;(!Number.isSafeInteger(s)||s<1)&&S("MANIFEST_INVALID",me("definitionVersion"),"positive-integer");}let i={};for(let s of yi)X(e,s)&&(us(s,e[s]),i[s]=mi(e[s]));let r={};for(let[s,a]of Object.entries(n))s!==Ee&&(r[s]=a);let o={manifestVersion:2,pluginId:e.name,definitionId:X(t,"definitionId")?t.definitionId:e.name,version:X(t,"definitionVersion")?t.definitionVersion:1,name:e.display_name,description:e.description};for(let[s,a]of Object.entries(t))s==="definitionId"||s==="definitionVersion"||(o[s]=a);return Object.keys(r).length>0&&(o._meta=r),{v2Input:o,...Object.keys(r).length>0?{vendorMeta:r}:{},passthrough:i}}function gs(e,n){te(e)||S("MANIFEST_INVALID","","not-object","manifest.json must be a JSON object",q);let t;try{t=Is(e);}catch(o){throw o instanceof pe?new pe(o.code,{...o.reason,file:q}):o}let i;try{let o=Ye(t.v2Input,{mode:n.mode??"local"});o.manifestVersion!==2&&S("MANIFEST_INVALID","","v2-required"),i=o;}catch(o){throw o instanceof Y?new pe(o.code,gi(o,q,ds)):o}let r=e.tools;if(Array.isArray(r)){let o=new Set(i.actions.map(s=>s.actionId));r.forEach((s,a)=>{let d=s.name;if(!o.has(d))throw new pe("MANIFEST_INVALID",{path:`tools[${a}].name`,rule:"tool-not-action",message:"every tools[].name must be an action id",file:q})});}return {file:q,manifest:i,v2Input:t.v2Input,releaseVersion:e.version,...Object.keys(t.passthrough).length>0?{mcpb:t.passthrough}:{}}}function ms(e,n){try{let t=Ye(e,{mode:n.mode??"local"});if(t.manifestVersion!==2)throw new pe("MANIFEST_INVALID",{path:"manifestVersion",rule:"v2-required",message:"a workspace App requires manifestVersion 2",file:Me});return {file:Me,manifest:t,v2Input:e}}catch(t){throw t instanceof Y?new pe(t.code,gi(t,Me,i=>i??"")):t}}function st(e){return oe(qe(e).definition)}function fi(e){let{entryHash:n,initialState:t,...i}=e,r={...i};return t!==void 0&&(r.initialState={path:t.path}),mi(r)}function hs(e,n){let t=fi(e),i=fi(n);return [...new Set([...Object.keys(t),...Object.keys(i)])].sort().filter(o=>W(t[o]??null)!==W(i[o]??null))}function _s(e,n){return e.entryHash!==void 0&&n.entryHash!==void 0&&e.entryHash!==n.entryHash||e.initialState?.hash!==void 0&&n.initialState?.hash!==void 0&&e.initialState.hash!==n.initialState.hash}function Ts(e,n){let t=hs(e,n),i=_s(e,n),r="";try{let o=st(e),s=st(n);i=i||o!==s,r=` (definition hash ${o.slice(0,12)} vs ${s.slice(0,12)})`;}catch{i=true;}t.length===0&&!i||S("MANIFEST_DUAL_MISMATCH","","dual-manifest-mismatch",`${q} and ${Me} normalize to different definitions${r}`+(t.length>0?`; differing fields: ${t.join(", ")}`:""));}function Es(e,n){let t=n.maxBytes??262144,i=[],r=new TextDecoder("utf-8",{fatal:true});for(let o of Z){let s=e[o];if(s===void 0)continue;if(s.byteLength>t)return {parsed:i,failure:{code:"LIMIT_EXCEEDED",reason:{path:"",rule:"file-too-large",file:o},files:[o]}};let a;try{a=JSON.parse(r.decode(s));}catch{return {parsed:i,failure:{code:"MANIFEST_INVALID",reason:{path:"",rule:"invalid-json",file:o},files:[o]}}}if(!te(a))return {parsed:i,failure:{code:"MANIFEST_INVALID",reason:{path:"",rule:"not-object",message:`${o} must be a JSON object`,file:o},files:[o]}};i.push({file:o,raw:a});}return {parsed:i}}function pt(e,n={}){let{parsed:t,failure:i}=Es(e,n),r=Z.filter(p=>e[p]!==void 0);if(i!==void 0)return {ok:false,rejection:i,parseFailure:true,builtinOnly:false};if(t.length===0)return {ok:false,rejection:{code:"MANIFEST_INVALID",reason:{path:"",rule:"no-manifest-file",message:"neither manifest.json nor ui-plugin.json is present"},files:[]},parseFailure:true,builtinOnly:false};let o=t[0],s=o.file===q?fs(o.raw):ys(o.raw),a=t.some(p=>As(p.file,p.raw)),d=[];try{for(let p of t)d.push(p.file===q?gs(p.raw,n):ms(p.raw,n));d.length===2&&Ts(d[0].manifest,d[1].manifest);}catch(p){if(p instanceof pe)return {ok:false,rejection:{code:p.code,reason:p.reason,files:p.code==="MANIFEST_DUAL_MISMATCH"?[...Z]:p.reason.file===void 0?r:[p.reason.file]},parseFailure:false,...s===void 0?{}:{identity:s},builtinOnly:a};throw p}let c=d[0];return {ok:true,...c,identity:s??{pluginId:c.manifest.pluginId},files:r}}var q,Me,Z,it,Ee,at,ct,yi,ot,Ai,is,os,rs,ss,as,pe,lt=w(()=>{m();be();Ae();Ne();tt();q="manifest.json",Me="ui-plugin.json",Z=[q,Me],it="0.3",Ee="dev.crewx",at=Object.freeze(["manifest_version","name","display_name","version","description","long_description","author","repository","homepage","documentation","support","icon","icons","screenshots","localization","server","tools","tools_generated","prompts","prompts_generated","keywords","license","privacy_policies","compatibility","user_config","_meta"]),ct=Object.freeze(["manifest_version","name","display_name","version","description","_meta"]),yi=Object.freeze(at.filter(e=>e!=="server"&&!ct.includes(e))),ot=Object.freeze(["entry","surfaces","size","stateProjection","actions"]),Ai=Object.freeze(["definitionId","definitionVersion","icon","tone","entryHash","runtime","initialState","usage","detailPanel","displayModes","summaryProjection","dataPaths","focusedAiDataPaths","csp"]),is=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/,os=256,rs=/<\/?[A-Za-z][^>]*>/,ss=/^\s*javascript:/i,as=/data:[^,\s]*,/i;pe=class extends Error{constructor(t,i){super(`${t}: ${i.path||"<file>"} (${i.rule})`);this.code=t;this.reason=i;}code;reason};});var _i=w(()=>{m();Bt();lt();tt();Ne();});function _n(e,n=e){throw new De(e,n)}var De,Tn=w(()=>{m();De=class extends Error{constructor(t,i=t){super(i);this.code=t;}code;name="McpAppContractError"};});var Ti=w(()=>{m();});var Ei=w(()=>{m();be();Ae();Tn();Ti();});function Di(e,n){return Ds.add(e),n!==void 0&&Ns.set(e,n),e}var Ds,Ns,En=w(()=>{m();Ds=new WeakSet,Ns=new WeakMap;});function nn(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function ut(e,n,t=[]){let i=new Set([...n,...t]),r=Object.keys(e);return n.every(o=>Object.hasOwn(e,o))&&r.every(o=>i.has(o))}function Pi(e){if(e===null||typeof e!="object"||Object.isFrozen(e))return e;for(let n of Object.values(e))Pi(n);return Object.freeze(e)}function $(e){throw new le("LINEAGE_INVALID",e)}function Rs(e){throw new le("LINEAGE_STALE",e)}function Mi(e){if(!nn(e)||!ut(e,Ms,Ss)||!nn(e.actions))return $("Lineage definition shape is invalid");for(let n of Object.values(e.actions))if(!nn(n)||!ut(n,Ls,Os))return $("Lineage action definition shape is invalid");return e}function Us(e){if(!nn(e)||!ut(e,bs,Ps))return $("Lineage entry shape is invalid");if(!Number.isSafeInteger(e.version)||e.version<1||typeof e.hash!="string"||!Ni.test(e.hash))return $("Lineage entry identity is invalid");if(e.sourceHash!==void 0&&(typeof e.sourceHash!="string"||!Ni.test(e.sourceHash)))return $("Lineage source hash is invalid");if(e.compat!==void 0&&e.compat!=="break")return $("Lineage compatibility marker is invalid");let n=Mi(e.definition);if(n.version!==e.version)return $("Lineage version does not match its definition");if(e.sourceHash!==void 0&&n.sourceHash!==e.sourceHash)return $("Lineage source hash does not match its definition");let t;try{t=oe(n),Ie({...n,hash:e.hash});}catch{return $("Lineage definition is invalid")}return t!==e.hash?$("Lineage definition hash does not match"):Pi({version:e.version,hash:e.hash,definition:n,...e.sourceHash===void 0?{}:{sourceHash:e.sourceHash},...e.compat===void 0?{}:{compat:e.compat}})}function bi(e){return e.stateProjection?.allow??[]}function Cs(e,n){let t=[],i=new Set(bi(n));bi(e).some(a=>!i.has(a))&&t.push("S1_STATE_PROJECTION");let r=new Set(n.dataPaths??[]);(e.dataPaths??[]).some(a=>!r.has(a))&&t.push("S2_DATA_PATHS");for(let[a,d]of Object.entries(e.actions)){let c=n.actions[a];if(c&&(d.confirmation??"native")==="native"&&(c.confirmation??"native")!=="native"){t.push("S3_ACTION_CONFIRMATION");break}}Object.keys(e.legacy?.agentAccess??{}).some(a=>!Object.hasOwn(n.actions,a))&&t.push("S4_LEGACY_AGENT_ACTIONS");let s=e.summaryProjection?.allow;if(s!==void 0){let a=new Set(n.summaryProjection?.allow??[]);s.some(d=>!a.has(d))&&t.push("S5_SUMMARY_PROJECTION");}return t}function ws(e,n){return W(e)===W(n)}function ft(e,n){if(!Array.isArray(e)||e.length===0)return $("Definition lineage is missing");if(!nn(n)||typeof n.hash!="string")return $("Current definition is invalid");let t,i;try{let{hash:a,...d}=n;i=Mi(d),t={...i,hash:a},Ie(t);}catch{return $("Current definition is invalid")}let r=e.map(Us),o=r[0].definition.id;if(r.some(a=>a.definition.id!==o))return $("Lineage definition ids do not match");if(r.some((a,d)=>d>0&&a.version<=r[d-1].version))return $("Lineage generations are not in increasing version order");if(r.some((a,d)=>r.findIndex(c=>c.hash===a.hash)!==d))return $("Lineage contains a duplicate hash");let s=r[r.length-1];if(s.version!==t.version||s.hash!==t.hash||s.definition.id!==t.id||!ws(s.definition,i))return Rs("The last lineage generation does not match the current package");if(t.legacy!==void 0){let a=new Set(Object.keys(t.actions)),d=new Set;for(let p of r)if(p.sourceHash===void 0)for(let f of Object.keys(p.definition.actions))a.has(f)&&d.add(f);let c=Object.keys(t.legacy.agentAccess??{});if(c.length!==d.size||c.some(p=>!d.has(p))){let p="S4_LEGACY_AGENT_ACCESS_COMPLETE";throw new le("LINEAGE_INVALID",`Lineage compatibility failed: ${p}`,[p])}}for(let a=0;a<r.length-1;a+=1){if(r.slice(a,-1).some(p=>p.compat==="break"))continue;let c=Cs(r[a].definition,t);if(c.length>0)throw new le("LINEAGE_INVALID",`Lineage compatibility failed: ${c.join(", ")}`,c)}return Object.freeze({entries:Object.freeze(r),current:t})}var le,Ni,bs,Ps,Ms,Ss,Ls,Os,yt=w(()=>{m();be();Ae();le=class extends Error{constructor(t,i=t,r=[]){super(i);this.code=t;this.violations=r;}code;violations;name="UiDefinitionLineageError"},Ni=/^[0-9a-f]{64}$/,bs=["version","hash","definition"],Ps=["sourceHash","compat"],Ms=["id","version","actions"],Ss=["sourceHash","usage","detailPanel","displayModes","renderer","surfaces","stateProjection","dataPaths","summaryProjection","legacy"],Ls=["capabilities"],Os=["inputKeys","dataInputs","confirmation","resultProjection","content","env"];});var Si,Li,Oi=w(()=>{m();Si=["crewx_app_terminal_connect","crewx_app_html_viewer_open"],Li=["crewx_listWorkspaces","crewx_queryAgent","crewx_executeAgent","crewx_getTaskResult","crewx_listTasks","crewx_listAgents","callBrowser","openTab","listTabs","closeTab"];});var Ri=w(()=>{m();be();En();});function At(e,n=0){try{let t=ye(e,n);return t.type!==void 0&&t.type!=="object"&&_n("TOOL_INVALID","MCP App inputSchema must describe an object"),t}catch(t){if(t instanceof De)throw t;_n("TOOL_INVALID","MCP App inputSchema must be projection-safe JSON");}}function Ui(e){if(e.length===0)return At({type:"object",properties:{},additionalProperties:false});let n=e.map(i=>i.actionId),t=new Map;for(let i of e)t.set(i.actionId,At(i.inputSchema));return At(js(n,t),xs)}function js(e,n){let t=e.map(i=>({type:"object",properties:{actionId:{type:"string",const:i},input:n.get(i)??{type:"object"}},required:["actionId","input"],additionalProperties:false}));return Object.freeze({type:"object",oneOf:Object.freeze(t),properties:Object.freeze({actionId:Object.freeze({type:"string",enum:Object.freeze([...e])}),input:Object.freeze({type:"object"})}),required:Object.freeze(["actionId","input"]),additionalProperties:false})}var tn,xs,It=w(()=>{m();Ei();be();Ae();En();Tn();yt();Oi();Ri();tn=8*1024*1024,new Set(Si),new Set(Li),xs=4;});function Ci(){return Object.freeze({[gt]:{candidates:new Map,assetCatalogs:new Map}})}function Vs(e){if(e===null||typeof e!="object"||!(gt in e))throw new TypeError("scanCache must be created by createWorkspaceAppScanCache");return e[gt]}function wi(e,n){let t=Vs(e),i=t.rootIdentity;return i!==void 0&&(i.dev!==n.dev||i.ino!==n.ino||i.realPath!==n.realPath)&&(t.candidates.clear(),t.assetCatalogs.clear(),t.lastCandidateScanUnchanged=void 0,t.lastCandidateKeys=void 0,t.scanStartedAtNs=void 0,t.lastAssetCatalogsUnchanged=void 0,t.lastSnapshot=void 0,t.lastSnapshotBuildInputs=void 0),t.rootIdentity=n,t}var gt,ki=w(()=>{m();gt=Symbol("crewx.workspace-app-scan-cache.state");});function Q(e){let n=typeof e=="object"&&e!==null&&"code"in e?String(e.code):"";return n==="ENOENT"?new h("NOT_FOUND"):n==="ELOOP"?new h("PATH_ESCAPED"):n==="EFBIG"||n==="EOVERFLOW"?new h("LIMIT_EXCEEDED"):n==="EACCES"||n==="EPERM"||n==="ENOTDIR"?new h("READ_DENIED"):new h("READ_DENIED")}function Hs(e){if(typeof e!="string"||e.length===0||!path.isAbsolute(e))throw new h("READ_DENIED")}function mt(e){if(typeof e!="string"||path.isAbsolute(e)||/[\\\u0000]/.test(e))throw new h("PATH_ESCAPED");if(e==="")return [];let n=e.split("/");if(n.some(t=>t.length===0||t==="."||t===".."))throw new h("PATH_ESCAPED");return n}function Pn(e,n){let t=path.relative(e,n);return t===""||t!==".."&&!t.startsWith(`..${path.sep}`)&&!path.isAbsolute(t)}function Be(e){return {dev:e.dev,ino:e.ino,size:e.size,mtimeNs:e.mtimeNs,ctimeNs:e.ctimeNs}}function Et(e,n){return e.dev===n.dev&&e.ino===n.ino}function Dt(e,n){return Et(e,n)&&e.size===n.size&&e.mtimeNs===n.mtimeNs&&e.ctimeNs===n.ctimeNs}async function Dn(e){Hs(e);let n,t;try{n=await promises.realpath(e),t=await promises.stat(n,{bigint:!0});}catch(i){throw Q(i)}if(!t.isDirectory())throw new h("READ_DENIED");return {realRoot:n,identity:Be(t)}}async function Vi(e,n,t){if(t.length<2||t[0]!=="apps"&&t[0]!=="skills")return;let i,r;try{if(i=path.resolve(e,t[0],t[1]),r=await promises.realpath(i),!(await promises.stat(r,{bigint:!0})).isDirectory())throw new h("READ_DENIED")}catch(o){throw o instanceof h?o:Q(o)}if(!Pn(n,r))throw new h("PATH_ESCAPED");return r}async function Nn(e,n,t,i){let r,o,s;try{r=await promises.lstat(e,{bigint:!0}),o=await promises.realpath(e),s=await promises.stat(o,{bigint:!0});}catch(a){throw Q(a)}if(!Pn(n,o)||t!==void 0&&!Pn(t,o))throw new h("PATH_ESCAPED");if(!r.isFile()||!s.isFile())throw new h("READ_DENIED");if(!Et(i,r)||!Et(i,s)||i.dev!==s.dev)throw new h("PATH_ESCAPED")}async function Fe(e,n){let t,i;try{t=await promises.realpath(e),i=await promises.stat(t,{bigint:!0});}catch{throw new h("PATH_ESCAPED")}if(t!==n.realRoot||!Dt(n.identity,Be(i)))throw new h("PATH_ESCAPED")}function zs(e){return e.isSymbolicLink()?{name:e.name,kind:"symlink"}:e.isDirectory()?{name:e.name,kind:"directory"}:e.isFile()?{name:e.name,kind:"file"}:{name:e.name,kind:"other"}}var h,Tt,Bs,ji,He,Mn,vi,Fi,bt=w(()=>{m();h=class extends Error{constructor(t){super(t);this.code=t;}code;name="AppDiscoveryFsError"},Tt=fs$1.constants.O_NOFOLLOW,Bs=fs$1.constants.O_NONBLOCK,ji=fs$1.constants.O_RDONLY|(Tt??0)|(Bs??0);He=class{async getRootIdentity(n){let t=await Dn(n);return await Fe(n,t),{dev:t.identity.dev,ino:t.identity.ino,realPath:t.realRoot}}async listDirectory(n,t){let i=mt(t),r=await Dn(n),o=path.resolve(n,...i),s,a;try{s=await promises.realpath(o),a=await promises.stat(s,{bigint:!0});}catch(d){let c=Q(d);if(c.code==="NOT_FOUND")return [];throw c}if(!Pn(r.realRoot,s)||!a.isDirectory())throw new h("PATH_ESCAPED");try{let d=await promises.readdir(s,{withFileTypes:!0,encoding:"utf8"});return await Fe(n,r),d.map(zs)}catch(d){let c=Q(d);if(c.code==="NOT_FOUND")return [];throw c}}async readdir(n,t){return this.listDirectory(n,t)}async readDirectory(n,t){return this.listDirectory(n,t)}async readVerifiedFile(n,t,i){if(!Number.isSafeInteger(i)||i<0)throw new h("READ_DENIED");if(Tt===void 0)throw new h("UNSUPPORTED");let r=mt(t),o=await Dn(n),s=path.resolve(n,...r),a=path.relative(n,s);if(a===".."||a.startsWith(`..${path.sep}`)||path.isAbsolute(a))throw new h("PATH_ESCAPED");let d;try{d=await promises.open(s,ji);}catch(c){throw Q(c)}try{let c;try{let T=await d.stat({bigint:!0});c=Be(T);}catch(T){throw Q(T)}if(c.size>BigInt(i))throw new h("LIMIT_EXCEEDED");if(c.size>BigInt(Number.MAX_SAFE_INTEGER))throw new h("LIMIT_EXCEEDED");await Fe(n,o);let p=await Vi(n,o.realRoot,r);await Nn(s,o.realRoot,p,c);let f=new Uint8Array(new ArrayBuffer(Number(c.size))),g=0;for(;g<f.byteLength;){let T;try{T=(await d.read(f,g,f.byteLength-g,g)).bytesRead;}catch(L){throw Q(L)}if(T<=0)throw new h("IDENTITY_CHANGED");g+=T;}let A;try{let T=await d.stat({bigint:!0});A=Be(T);}catch(T){throw Q(T)}if(!Dt(c,A))throw new h("IDENTITY_CHANGED");return await Nn(s,o.realRoot,p,A),await Fe(n,o),new Uint8Array(f)}finally{await d.close().catch(()=>{});}}async fingerprintVerifiedFile(n,t,i){if(!Number.isSafeInteger(i)||i<0)throw new h("READ_DENIED");if(Tt===void 0)throw new h("UNSUPPORTED");let r=mt(t),o=await Dn(n),s=path.resolve(n,...r),a=path.relative(n,s);if(a===".."||a.startsWith(`..${path.sep}`)||path.isAbsolute(a))throw new h("PATH_ESCAPED");let d;try{d=await promises.open(s,ji);}catch(c){throw Q(c)}try{let c;try{let g=await d.stat({bigint:!0});c=Be(g);}catch(g){throw Q(g)}if(c.size>BigInt(i)||c.size>BigInt(Number.MAX_SAFE_INTEGER))throw new h("LIMIT_EXCEEDED");await Fe(n,o);let p=await Vi(n,o.realRoot,r);await Nn(s,o.realRoot,p,c);let f;try{let g=await d.stat({bigint:!0});f=Be(g);}catch(g){throw Q(g)}if(!Dt(c,f))throw new h("IDENTITY_CHANGED");return await Nn(s,o.realRoot,p,f),await Fe(n,o),{...f,candidateRealPath:p??o.realRoot}}catch(c){throw c instanceof h?c:Q(c)}finally{await d.close().catch(()=>{});}}async readFileVerified(n,t,i){return this.readVerifiedFile(n,t,i)}},Mn=new He,vi=Mn,Fi=He;});function an(e){if(e===null||typeof e!="object"||Array.isArray(e))return false;try{let n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}catch{return false}}function Hi(e){return typeof e=="string"&&ce.test(e)?e:void 0}function Ys(e){return e.length>0&&e!=="."&&e!==".."&&!/[\\/\u0000]/.test(e)}function Le(e,n){let t=new TextEncoder().encode(e),i=new TextEncoder().encode(n),r=Math.min(t.byteLength,i.byteLength);for(let o=0;o<r;o+=1){let s=t[o]-i[o];if(s!==0)return s}return t.byteLength-i.byteLength}function qs(e){if(typeof e=="string")return {name:e,kind:"directory"};if(e===null||typeof e!="object")return null;let n=e;if(typeof n.name!="string")return null;if(n.kind==="file"||n.kind==="directory"||n.kind==="symlink"||n.kind==="other")return {name:n.name,kind:n.kind};if(n.type==="file"||n.type==="directory"||n.type==="symlink"||n.type==="other")return {name:n.name,kind:n.type};let t=n.isDirectory;if(typeof t=="function"&&t.call(e))return {name:n.name,kind:"directory"};let i=n.isSymbolicLink;if(typeof i=="function"&&i.call(e))return {name:n.name,kind:"symlink"};let r=n.isFile;return typeof r=="function"&&r.call(e)?{name:n.name,kind:"file"}:{name:n.name,kind:"other"}}function Zs(e){if(e instanceof Uint8Array)return new Uint8Array(e);if(e instanceof ArrayBuffer)return new Uint8Array(e.slice(0));if(Array.isArray(e)&&e.every(n=>Number.isInteger(n)&&n>=0&&n<=255))return Uint8Array.from(e);throw new TypeError("filesystem port returned an invalid byte array")}function Qs(e){return Xs.decode(e)}function ea(e){return JSON.parse(Qs(e))}function zi(e){switch(e){case "ENOENT":return "NOT_FOUND";case "ELOOP":case "EXDEV":return "PATH_ESCAPED";case "EFBIG":case "EOVERFLOW":return "LIMIT_EXCEEDED";case "EACCES":case "EPERM":case "ENOTDIR":return "READ_DENIED";default:return e}}function na(e){if(e instanceof h)return zi(e.code);if(e!==null&&typeof e=="object"&&"code"in e){let n=e.code;if(typeof n=="string")return zi(n)}}function he(e,n){let t=n();return Number.isFinite(t)&&Number.isFinite(e)&&t-e<=5e3}function ta(e){if(typeof e.readVerifiedFile=="function")return e.readVerifiedFile;if(typeof e.readFileVerified=="function")return e.readFileVerified}function ia(e){if(typeof e.listDirectory=="function")return e.listDirectory;if(typeof e.readDirectory=="function")return e.readDirectory;if(typeof e.readdir=="function")return e.readdir}async function Gi(e,n,t,i){let r=ta(e);if(!r)throw new h("READ_DENIED");return Zs(await r.call(e,n,t,i))}async function St(e,n,t){let i=ia(e);if(!i)throw new h("READ_DENIED");let r=await i.call(e,n,t);if(!Array.isArray(r))throw new h("READ_DENIED");return r.map(qs).filter(o=>o!==null)}function oa(e,n,t,i){return Object.freeze({code:e,...{},source:n,relativePath:t})}function ra(e){if(!an(e))throw new TypeError("productBundle.reservedIds must be an object with appIds and definitionIds arrays");try{let n=Reflect.ownKeys(e);if(n.length!==2||!n.includes("appIds")||!n.includes("definitionIds"))throw new TypeError("productBundle.reservedIds must contain exactly appIds and definitionIds");let t=(i,r)=>{if(!Array.isArray(i))throw new TypeError("productBundle.reservedIds."+r+" must be an array");let o=[];for(let s=0;s<i.length;s+=1){let a=i[s];if(typeof a!="string"||a.length===0)throw new TypeError("productBundle.reservedIds."+r+" must contain non-empty strings");o.push(a);}return Object.freeze([...new Set(o)].sort(Le))};return Object.freeze({appIds:t(e.appIds,"appIds"),definitionIds:t(e.definitionIds,"definitionIds")})}catch(n){throw n instanceof TypeError?n:new TypeError("productBundle.reservedIds must be a valid reservation object")}}function sa(e,n){return e.appIds.length===n.appIds.length&&e.appIds.every((t,i)=>t===n.appIds[i])&&e.definitionIds.length===n.definitionIds.length&&e.definitionIds.every((t,i)=>t===n.definitionIds[i])}function cn(e){return Object.freeze({appIds:Object.freeze([...new Set(e.map(n=>n.appId))].sort(Le)),definitionIds:Object.freeze([...new Set(e.map(n=>n.definition.id))].sort(Le))})}function Sn(e,n){let t=Object.keys(e).sort(Le),i=[...n].sort(Le);return t.length===i.length&&t.every((r,o)=>r===i[o])}function $i(e){if(typeof e!="string"||e.length===0||e.startsWith("/")||/[\\\u0000]/.test(e))return;let n=e.split("/");if(!n.some(t=>t.length===0||t==="."||t===".."))return n}function aa(e){let n;try{n=ea(e);}catch{return}if(!an(n)||!Sn(n,["version","packages"])||n.version!==1||!Array.isArray(n.packages)||n.packages.length>Lt)return;let t=new Set,i=new Set,r=0,o=[];for(let s of n.packages){if(!an(s))return;let a=["packageDir","appId","definition","files"],d=Object.hasOwn(s,"lineage"),c=Object.hasOwn(s,"launcher"),p=[...d?["lineage"]:[],...c?["launcher"]:[]];if(!Sn(s,[...a,...p])||c&&s.launcher!==false)return;let f=$i(s.packageDir),g=Hi(s.appId);if(!f||f.length!==2||f[0]!=="apps"||!Ys(f[1])||!g||t.has(s.packageDir)||!an(s.definition)||!Sn(s.definition,["id","version","hash"]))return;let A=Hi(s.definition.id),T=s.definition.version,L=s.definition.hash;if(!A||!Number.isSafeInteger(T)||T<1||typeof L!="string"||!Mt.test(L)||!Array.isArray(s.files)||s.files.length<2||s.files.length>Ot)return;let N=new Set,F=[];for(let R of s.files){if(!an(R)||!Sn(R,["path","sha256"]))return;let B=$i(R.path);if(!B||typeof R.sha256!="string"||!Mt.test(R.sha256))return;let H=B.join("/"),I=`${s.packageDir}/${H}`;if(N.has(H)||i.has(I))return;N.add(H),i.add(I),F.push(Object.freeze({path:H,sha256:R.sha256}));}if(!Z.some(R=>N.has(R))||!N.has("ui/index.html")||(r+=F.length,r>$s))return;t.add(s.packageDir),o.push(Object.freeze({packageDir:s.packageDir,...c?{launcher:false}:{},appId:g,definition:Object.freeze({id:A,version:T,hash:L}),lineage:Array.isArray(s.lineage)?s.lineage:[],files:Object.freeze(F.sort((R,B)=>Le(R.path,B.path)))}));}return Object.freeze({version:1,packages:Object.freeze(o)})}function Se(e){let n=na(e);return n==="PATH_ESCAPED"||n==="IDENTITY_CHANGED"||n==="TOCTOU"?"PATH_ESCAPED":n==="LIMIT_EXCEEDED"?"LIMIT_EXCEEDED":"BUNDLE_INTEGRITY"}async function ca(e,n,t,i,r){let o=[],s=async(a,d)=>{if(!he(i,r))throw new h("LIMIT_EXCEEDED");if(d>2)throw new h("LIMIT_EXCEEDED");let c=await St(e,n,a);for(let p of c){if(typeof p.name!="string"||p.name.length===0||p.name==="."||p.name===".."||/[\\/\u0000]/.test(p.name))throw new h("PATH_ESCAPED");let f=`${a}/${p.name}`;if(p.kind==="file"){if(o.push(f.slice(t.length+1)),o.length>Ot)throw new h("LIMIT_EXCEEDED")}else if(p.kind==="directory")await s(f,d+1);else throw p.kind==="symlink"?new h("PATH_ESCAPED"):new h("READ_DENIED")}};return await s(t,0),o.sort(Le)}function da(e){return Z.includes(e)?262144:e==="ui/index.html"?tn:e==="ui/state.json"?65536:e.startsWith("ui/assets/")?Ws:Js}async function Ji(e,n,t,i){if(e===void 0)return {packages:[],diagnostics:[],incomplete:false,reservedIds:Ks};let r=ra(e.reservedIds),o=[],s=(u,_,D)=>oa(u,"bundled",_),a=(u=[],_=false,D)=>({...D===void 0?{}:{indexHash:D},packages:u,diagnostics:o,incomplete:_,reservedIds:r});if(typeof e.root!="string"||e.root.length===0||typeof e.expectedIndexHash!="string"||!Mt.test(e.expectedIndexHash))return o.push(s("BUNDLE_INTEGRITY","bundle-index.json")),a();let d;try{d=await Gi(n,e.root,"bundle-index.json",Gs);}catch(u){return o.push(s(Se(u),"bundle-index.json")),a()}let c=crypto.createHash("sha256").update(d).digest("hex");if(c!==e.expectedIndexHash)return o.push(s("BUNDLE_INTEGRITY","bundle-index.json")),a();let p=aa(d);if(p===void 0)return o.push(s("BUNDLE_INTEGRITY","bundle-index.json")),a();if(!sa(cn(p.packages),r))return o.push(s("BUNDLE_INTEGRITY","bundle-index.json")),a([],false,c);if(!he(t,i))return o.push(s("LIMIT_EXCEEDED","bundle-index.json")),a(p.packages.map(u=>({indexEntry:u,failureCode:"LIMIT_EXCEEDED"})),true,c);let f;try{f=await St(n,e.root,"");}catch(u){return o.push(s(Se(u),"bundle-index.json")),a(p.packages.map(_=>({indexEntry:_,failureCode:Se(u)})),false,c)}if(!he(t,i))return o.push(s("LIMIT_EXCEEDED","bundle-index.json")),a(p.packages.map(u=>({indexEntry:u,failureCode:"LIMIT_EXCEEDED"})),true,c);let g=f.find(u=>u.name==="bundle-index.json"&&u.kind==="file"),A=f.find(u=>u.name==="apps"&&u.kind==="directory"),T=u=>p.packages.map(_=>({indexEntry:_,failureCode:u}));if(!g)return o.push(s("BUNDLE_INTEGRITY","bundle-index.json")),a(T("BUNDLE_INTEGRITY"),false,c);let L=f.filter(u=>u.name!=="bundle-index.json"&&u.name!=="apps");if(L.length>0){let u=L.some(_=>_.kind==="symlink")?"PATH_ESCAPED":"BUNDLE_INTEGRITY";return o.push(s(u,"bundle-index.json")),a(T("BUNDLE_INTEGRITY"),false,c)}if(f.some(u=>u.name==="apps"&&u.kind!=="directory"))return o.push(s("PATH_ESCAPED","apps")),a(T("PATH_ESCAPED"),false,c);let N=[];if(A)try{N=await St(n,e.root,"apps");}catch(u){return o.push(s(Se(u),"apps")),a(T(Se(u)),false,c)}if(!he(t,i)||N.length>Lt)return o.push(s("LIMIT_EXCEEDED","apps")),a(T("LIMIT_EXCEEDED"),true,c);let F=new Map(p.packages.map(u=>[u.packageDir.slice(5),u])),R=N.filter(u=>!F.has(u.name));for(let u of R)o.push(s(u.kind==="symlink"?"PATH_ESCAPED":"BUNDLE_INTEGRITY",`apps/${u.name}`));if(R.length>0){let u=R.some(_=>_.kind==="symlink")?"PATH_ESCAPED":"BUNDLE_INTEGRITY";return a(T(u),false,c)}let B=new Set,H=new Map,I=new Map;for(let u of p.packages){let _=H.get(u.appId)??[];_.push(u),H.set(u.appId,_);let D=`${u.definition.id}\0${String(u.definition.version)}`,U=I.get(D)??[];U.push(u),I.set(D,U);}for(let u of [...H.values(),...I.values()])if(u.length>1)for(let _ of u)B.add(_);let y=[],M=d.byteLength,C=false;for(let u of p.packages){if(!he(t,i)){C=true,y.push({indexEntry:u,failureCode:"LIMIT_EXCEEDED"});continue}let _;try{let E=u.lineage[u.lineage.length-1];if(!E)throw new le("LINEAGE_INVALID","Definition lineage is missing");if(E.definition.id!==u.definition.id||E.version!==u.definition.version||E.hash!==u.definition.hash)throw new le("LINEAGE_STALE","Last lineage generation does not match bundle identity");_=ft(u.lineage,{...E.definition,hash:E.hash}).entries;}catch(E){let K=E instanceof le?E.code:"LINEAGE_INVALID";o.push(s(K,u.packageDir)),y.push({indexEntry:u,failureCode:K});continue}let D=N.find(E=>E.name===u.packageDir.slice(5));if(!A||!D){y.push({indexEntry:u,failureCode:"BUNDLE_INTEGRITY"});continue}if(D.kind!=="directory"){y.push({indexEntry:u,failureCode:D.kind==="symlink"?"PATH_ESCAPED":"BUNDLE_INTEGRITY"});continue}let U;try{let E=await ca(n,e.root,u.packageDir,t,i);if(!he(t,i)){C=!0,y.push({indexEntry:u,failureCode:"LIMIT_EXCEEDED"});continue}let K=u.files.map(ue=>ue.path);if(E.length!==K.length||E.some((ue,fe)=>ue!==K[fe])){y.push({indexEntry:u,failureCode:"BUNDLE_INTEGRITY"});continue}U=new Map;let j;for(let ue of u.files){if(!he(t,i)){j="LIMIT_EXCEEDED",C=!0;break}if(M>=Pt){j="LIMIT_EXCEEDED";break}let fe;try{fe=await Gi(n,e.root,`${u.packageDir}/${ue.path}`,da(ue.path));}catch(Do){j=Se(Do);break}if(!he(t,i)){j="LIMIT_EXCEEDED",C=!0;break}if(M+fe.byteLength>Pt){M=Pt,j="LIMIT_EXCEEDED";break}if(M+=fe.byteLength,crypto.createHash("sha256").update(fe).digest("hex")!==ue.sha256){j="BUNDLE_INTEGRITY";break}U.set(ue.path,fe);}if(j!==void 0){y.push({indexEntry:u,failureCode:j});continue}}catch(E){he(t,i)||(C=true),y.push({indexEntry:u,failureCode:Se(E)});continue}y.push({indexEntry:u,lineage:_,files:U,...B.has(u)?{failureCode:"DUPLICATE_ID"}:{}});}return a(y,C,c)}var Gs,Lt,Ot,$s,Js,Ws,Pt,Mt,Xs,Ks,Rt=w(()=>{m();yt();Ne();lt();It();bt();Gs=256*1024,Lt=64,Ot=128,$s=Lt*Ot,Js=2*1024*1024,Ws=8*1024*1024,Pt=32*1024*1024,Mt=/^[0-9a-f]{64}$/,Xs=new TextDecoder("utf-8",{fatal:true}),Ks=Object.freeze({appIds:Object.freeze([]),definitionIds:Object.freeze([])});});var Io={};bo(Io,{AppDiscoveryFsError:()=>h,LOCAL_APP_TOOL_PREFIX:()=>ua,MCP_APP_WORKSPACE_TOOL_PREFIX:()=>fa,NodeAppDiscoveryFs:()=>He,NodeAppDiscoveryFsAdapter:()=>Fi,WORKSPACE_APP_TOOL_PREFIX:()=>ze,createWorkspaceAppScanCache:()=>Ci,defaultAppDiscoveryFs:()=>Mn,defaultNodeAppDiscoveryFs:()=>vi,deriveWorkspaceAppToolName:()=>ya,deriveWorkspaceAppToolNames:()=>kt,discoverWorkspaceAppCandidates:()=>Ba,discoverWorkspaceApps:()=>xt,isWorkspacePackage:()=>la,productAppBundleReservations:()=>cn,scanWorkspaceApps:()=>Ha});function la(e,n){let t=n.split("/");return t.length===2&&t[0]===e&&/^[A-Za-z][A-Za-z0-9._-]{0,127}$/.test(t[1])}function kt(e){if(typeof e!="string"||!ce.test(e))throw new TypeError("pluginId must be a safe UI plugin identifier");let n=`${ze}${e}`.length+7<=128?e:`hash_${crypto.createHash("sha256").update(e,"utf8").digest("hex")}`;return {read:`${ze}${n}_read`,action:`${ze}${n}_action`}}function ya(e,n="read"){let t=kt(e);return n==="read"?t.read:t.action}function Xi(e){if(e===null||typeof e!="object"||Array.isArray(e))return false;try{let n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}catch{return false}}function Ia(e,n){return n.length===0||n==="."||n===".."||/[\\/\u0000]/.test(n)?e==="skills"?"skills":"apps":`${e==="skills"?"skills":"apps"}/${n}`}function ga(e){return e.length>0&&e!=="."&&e!==".."&&!/[\\/\u0000]/.test(e)}function dn(e,n){let t=new TextEncoder().encode(e),i=new TextEncoder().encode(n),r=Math.min(t.byteLength,i.byteLength);for(let o=0;o<r;o+=1){let s=t[o]-i[o];if(s!==0)return s}return t.byteLength-i.byteLength}function ro(e){if(typeof e=="string")return {name:e,kind:"directory"};if(e===null||typeof e!="object")return null;let n=e;if(typeof n.name!="string")return null;if(n.kind==="file"||n.kind==="directory"||n.kind==="symlink"||n.kind==="other")return {name:n.name,kind:n.kind};if(n.type==="file"||n.type==="directory"||n.type==="symlink"||n.type==="other")return {name:n.name,kind:n.type};let t=n.isDirectory;if(typeof t=="function"&&t.call(e))return {name:n.name,kind:"directory"};let i=n.isSymbolicLink;if(typeof i=="function"&&i.call(e))return {name:n.name,kind:"symlink"};let r=n.isFile;return typeof r=="function"&&r.call(e)?{name:n.name,kind:"file"}:{name:n.name,kind:"other"}}function ma(e){if(e instanceof Uint8Array)return new Uint8Array(e);if(e instanceof ArrayBuffer)return new Uint8Array(e.slice(0));if(Array.isArray(e)&&e.every(n=>Number.isInteger(n)&&n>=0&&n<=255))return Uint8Array.from(e);throw new TypeError("filesystem port returned an invalid byte array")}function so(e){return Aa.decode(e)}function ha(e){return JSON.parse(so(e))}function _a(e){if(e===void 0)return;let n=e.definitionId!==void 0&&e.definitionVersion!==void 0?`${e.definitionId}\0${String(e.definitionVersion)}`:void 0;return {pluginId:e.pluginId,...n===void 0?{}:{definitionKey:n}}}function On(e,n,t,i,r){let o={code:e,...i===void 0?{}:{pluginId:i},source:n,relativePath:t,...r?.reason===void 0?{}:{reason:Object.freeze({...r.reason})},...r?.files===void 0?{}:{files:Object.freeze([...r.files])}};return Object.freeze(o)}function Ki(e){switch(e){case "ENOENT":return "NOT_FOUND";case "ELOOP":case "EXDEV":return "PATH_ESCAPED";case "EFBIG":case "EOVERFLOW":return "LIMIT_EXCEEDED";case "EACCES":case "EPERM":case "ENOTDIR":return "READ_DENIED";default:return e}}function ie(e){if(e instanceof h)return Ki(e.code);if(e!==null&&typeof e=="object"&&"code"in e){let n=e.code;if(typeof n=="string")return Ki(n)}}function Ge(e,n){return e==="PATH_ESCAPED"||e==="IDENTITY_CHANGED"||e==="TOCTOU"?"PATH_ESCAPED":e==="LIMIT_EXCEEDED"?"LIMIT_EXCEEDED":n==="manifest"&&e==="NOT_FOUND"?"MANIFEST_MISSING":n==="entry"?"ENTRY_INVALID":n==="initial"?"INITIAL_STATE_INVALID":"MANIFEST_INVALID"}function Yi(e){return {reason:e.reason,...e.code==="MANIFEST_DUAL_MISMATCH"?{files:e.files}:{}}}function qi(e){return e==="MANIFEST_DUAL_MISMATCH"?e:ao(e)}function Ta(e){return ao(e.code)}function ao(e){switch(e){case "MANIFEST_INVALID":case "PRIMITIVE_UNKNOWN":case "PRIMITIVE_SET_UNSUPPORTED":case "SCHEMA_TYPE_UNSUPPORTED":case "TOKEN_INVALID":case "UNSAFE_VALUE":return "MANIFEST_INVALID";case "LIMIT_EXCEEDED":return "LIMIT_EXCEEDED";case "INITIAL_STATE_INVALID":return "INITIAL_STATE_INVALID";default:return co("UiPluginValidationError",e)}}function co(e,n){throw new Error(`Unmapped ${e} code: ${String(n)}`)}function Ea(e){switch(e){case "APP_ID_INVALID":case "TOOL_ID_INVALID":case "RESOURCE_URI_INVALID":case "TOOL_INVALID":case "SERIALIZATION_INVALID":return "MANIFEST_INVALID";case "APP_ID_CONFLICT":case "TOOL_ID_CONFLICT":return "DUPLICATE_ID";case "RESOURCE_NOT_FOUND":case "HTML_INVALID":return "ENTRY_INVALID";case "STATE_INVALID":case "STATE_PROJECTION_INVALID":case "BUTTON_INVALID":return "INITIAL_STATE_INVALID";default:return co("McpAppContractError",e)}}function _e(e,n){let t=n();return Number.isFinite(t)&&Number.isFinite(e)&&t-e<=5e3}function Da(e){return {pluginId:e.appId,definitionKey:`${e.definition.id}\0${String(e.definition.version)}`}}function Na(e,n){let t=n.get("package.json");if(t!==void 0)try{let r=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(t));if(Xi(r)){let o=r.bin,s=typeof o=="string"?o:Xi(o)?Object.values(o).find(a=>typeof a=="string"):void 0;for(let a of [s,r.main]){if(typeof a!="string")continue;let d=ba(a);if(d&&n.has(d))return d}}}catch{}return [`${e.slice(e.lastIndexOf("/")+1)}.js`,"index.js","main.js"].find(r=>n.has(r))}function ba(e){if(e.startsWith("/")||e.includes("\\")||e.includes("\0"))return;let n=e.split("/").filter(t=>t!==".");if(!(n.length===0||n.some(t=>t.length===0||t==="..")))return n.join("/")}function Pa(){return globalThis.performance?.now()??Date.now()}function Oe(e){if(e===null||typeof e!="object"||Object.isFrozen(e))return e;for(let n of Object.values(e))Oe(n);return Object.freeze(e)}function Zi(e){return Object.freeze(Array.from(e))}async function Ct(e,n,t,i){if(n.pinnedFiles!==void 0){let a=n.pinnedFiles.get(t);if(a===void 0)throw new h("NOT_FOUND");if(a.byteLength>i)throw new h("LIMIT_EXCEEDED");return new Uint8Array(a)}let r=`${n.relativePath}/${t}`,o=n.scanContext,s=e.fingerprintVerifiedFile;if(o===void 0||!o.cacheable||typeof s!="function")return to(e,n.root,r,i);try{let a=o.priorFingerprints.get(r)??await s.call(e,o.workspaceRoot,r,i);o.candidateRealPath=a.candidateRealPath;let d=await to(e,n.root,r,i),c=await s.call(e,o.workspaceRoot,r,i);return o.candidateRealPath=c.candidateRealPath,uo(a,c)&&c.size===BigInt(d.byteLength)&&!fo(c,o.scanStartedAtNs)?o.files.set(r,{relativePath:r,byteLimit:i,fingerprint:c}):o.cacheable=!1,d}catch(a){throw Z.includes(t)&&ie(a)==="NOT_FOUND"&&o.directoryListings.some(c=>c.relativePath===n.relativePath&&!lo(c.key,t))||(o.cacheable=false),a}}function po(e,n){return JSON.stringify([e.realPath,n.source,n.relativePath])}async function Ma(e,n,t,i,r,o,s,a){let d=e.fingerprintVerifiedFile,c=po(t,i),p=r.candidates.get(c),f=i.relativePath,g;try{g=await no(e,n,f);}catch(I){if(ie(I)!=="NOT_FOUND")throw I}let A=g===void 0?void 0:{relativePath:f,key:g};if(A!==void 0&&(i.source==="apps"||i.source==="skills")&&!Z.some(I=>lo(A.key,I)))return _e(s,a)?p!==void 0&&p.candidate===void 0&&p.candidateRealPath===void 0&&p.files.length===0&&p.directoryListings.length===1&&p.directoryListings[0]?.relativePath===A.relativePath&&p.directoryListings[0]?.key===A.key&&(i.source==="apps"?p.diagnostic?.code==="MANIFEST_MISSING":p.diagnostic===void 0)&&typeof d=="function"?{memo:p}:typeof d!="function"?{}:{context:{state:r,cacheKey:c,workspaceRoot:n,scanStartedAtNs:o,directoryListings:Object.freeze([A]),priorFingerprints:new Map,files:new Map,cacheable:true}}:{timeLimitReached:true};let T=await Promise.all(Qi.map(async I=>{if(I==="")return A;let y=`${i.relativePath}${I}`;try{let M=await no(e,n,y);return M===void 0?void 0:{relativePath:y,key:M}}catch(M){if(ie(M)==="NOT_FOUND")return;throw M}}));if(!_e(s,a))return {timeLimitReached:true};let L=typeof d=="function"&&T.every(I=>I!==void 0),N=T.filter(I=>I!==void 0),F=new Map,R=p!==void 0&&L,B;if(p!==void 0&&typeof d=="function"){let I=await Promise.all(p.files.map(async y=>{if(!_e(s,a))return {kind:"time",file:y};try{let M=await d.call(e,n,y.relativePath,y.byteLimit);return {kind:"fingerprint",file:y,current:M}}catch(M){return ie(M)==="NOT_FOUND"?{kind:"missing",file:y}:{kind:"error",file:y,error:M}}}));if(I.some(y=>y.kind==="time"))return {timeLimitReached:true};for(let y of I){if(y.kind==="error")throw y.error;if(y.kind==="missing"){R=false;continue}if(y.kind!=="fingerprint")continue;let{file:M,current:C}=y;F.set(M.relativePath,C),B??=C.candidateRealPath,(C.candidateRealPath!==p.candidateRealPath||!uo(C,M.fingerprint)||fo(C,o))&&(R=false);}}let H=p!==void 0&&p.directoryListings.length===N.length&&p.directoryListings.every((I,y)=>I.relativePath===N[y]?.relativePath&&I.key===N[y]?.key);return p!==void 0&&L&&H&&R&&B===p.candidateRealPath?{memo:p}:!L||N.length!==Qi.length?{}:{context:{state:r,cacheKey:c,workspaceRoot:n,scanStartedAtNs:o,directoryListings:Object.freeze(N),priorFingerprints:F,files:new Map,...B===void 0?{}:{candidateRealPath:B},cacheable:true}}}function lo(e,n){try{let t=JSON.parse(e);return Array.isArray(t)&&t.some(i=>Array.isArray(i)&&i[0]===n)}catch{return true}}async function no(e,n,t){let i=yo(e);if(typeof i!="function")return;let r=await i.call(e,n,t);if(!Array.isArray(r)||r.some(s=>typeof s=="string"))return;let o=r.map(ro);if(!o.some(s=>s===null))return JSON.stringify(o.slice().sort((s,a)=>dn(s.name,a.name)||dn(s.kind,a.kind)).map(s=>[s.name,s.kind]))}function uo(e,n){return e.dev===n.dev&&e.ino===n.ino&&e.size===n.size&&e.mtimeNs===n.mtimeNs&&e.ctimeNs===n.ctimeNs}function fo(e,n){let t=e.mtimeNs-n;return t>=-eo&&t<=eo}function Ut(e){let n=e.scanContext,t=e.source==="skills"&&e.candidate===void 0&&e.diagnostic===void 0&&n?.files.size===0,i=e.source==="apps"&&e.candidate===void 0&&e.diagnostic?.code==="MANIFEST_MISSING"&&n?.files.size===0,r=t||i;if(n===void 0||!n.cacheable||n.candidateRealPath===void 0&&!r||n.files.size===0&&!r)return;let o=Object.freeze({...!r&&n.candidateRealPath!==void 0?{candidateRealPath:n.candidateRealPath}:{},directoryListings:n.directoryListings,files:Object.freeze([...n.files.values()]),...e.candidate===void 0?{}:{candidate:e.candidate},...e.diagnostic===void 0?{}:{diagnostic:e.diagnostic},...e.identity===void 0?{}:{identity:e.identity},...e.provenance===void 0?{}:{provenance:e.provenance}});n.state.candidates.set(n.cacheKey,o);}function Sa(e,n,t){let i=crypto.createHash("sha256"),r=new TextEncoder().encode(W(e)),o=s=>{let a=new Uint8Array(8);new DataView(a.buffer).setBigUint64(0,BigInt(s)),i.update(a);};return o(r.byteLength),i.update(r),o(n.byteLength),i.update(n),o(t.byteLength),i.update(t),i.digest("hex")}function La(e,n){let t={...e.definition,sourceHash:n},i;try{i=oe(t);}catch(o){throw o instanceof b&&o.code==="INPUT_INVALID"?new Y("MANIFEST_INVALID","normalized definition is invalid"):o}let r={...t,hash:i};try{Ie(r);}catch{throw new Y("MANIFEST_INVALID","normalized definition is invalid")}return r}function Oa(e){return e.actions.some(n=>n.backend.type==="core"&&n.backend.handler!=="state.set")}function Ra(e){if(typeof e.readVerifiedFile=="function")return e.readVerifiedFile;if(typeof e.readFileVerified=="function")return e.readFileVerified}function yo(e){if(typeof e.listDirectory=="function")return e.listDirectory;if(typeof e.readDirectory=="function")return e.readDirectory;if(typeof e.readdir=="function")return e.readdir}async function to(e,n,t,i){let r=Ra(e);if(!r)throw new h("READ_DENIED");return ma(await r.call(e,n,t,i))}async function Ua(e,n,t){let i=yo(e);if(!i)throw new h("READ_DENIED");let r=await i.call(e,n,t);if(!Array.isArray(r))throw new h("READ_DENIED");return r.map(ro).filter(o=>o!==null)}function Ca(e){let n=[];for(let t of [e.reserved,e.builtin])t&&n.push(t);return e.builtins&&"listMcpApps"in e.builtins?n.push(io(e.builtins)):e.builtins&&n.push(e.builtins),e.builtinCatalog&&n.push(io(e.builtinCatalog)),n.push({...e.reservedAppIds===void 0?{}:{appIds:e.reservedAppIds},...e.reservedDefinitionIds===void 0?{}:{definitionIds:e.reservedDefinitionIds},...e.reservedToolNames===void 0?{}:{toolNames:e.reservedToolNames}}),n}function io(e){let n=[],t=[],i=[];for(let r of e.listMcpApps())typeof r.appId=="string"&&n.push(r.appId),r.definition&&typeof r.definition.id=="string"&&t.push(r.definition.id);for(let r of e.listMcpAppTools())typeof r.name=="string"&&i.push(r.name);return {appIds:n,definitionIds:t,toolNames:i}}function Te(e,n){e.diagnostic||(e.diagnostic=On(n,e.source,e.relativePath,e.identity?.pluginId));}function wa(e){let n=new Map;for(let i of e){let r=i.identity?.pluginId;if(r===void 0)continue;let o=n.get(r)??[];o.push(i),n.set(r,o);}for(let i of n.values()){if(i.length<2)continue;let r=i.filter(s=>s.provenance!==void 0);if(r.length>0){for(let s of i)s.provenance===void 0&&Te(s,"RESERVED_ID");if(r.length>1)for(let s of r)Te(s,"DUPLICATE_ID");continue}let o=i.filter(s=>s.source==="apps");if(o.length>1){for(let s of o)Te(s,"DUPLICATE_ID");for(let s of i.filter(a=>a.source==="skills"))Te(s,"DUPLICATE_ID");}else for(let s of i.filter(a=>a.source==="skills"))Te(s,"DUPLICATE_ID");}let t=new Map;for(let i of e){if(i.diagnostic?.code==="RESERVED_ID")continue;let r=i.identity?.definitionKey;if(r===void 0)continue;let o=t.get(r)??[];o.push(i),t.set(r,o);}for(let i of t.values())if(i.length>1)for(let r of i)Te(r,"DUPLICATE_ID");}function ka(e,n,t){let i=new Set,r=new Set,o=new Set,s=new Set(t.appIds),a=new Set(t.definitionIds);for(let d of Ca(n)){for(let c of d.appIds??[])typeof c=="string"&&i.add(c);for(let c of d.definitionIds??[])typeof c=="string"&&r.add(c);for(let c of d.toolNames??[])typeof c=="string"&&o.add(c);}for(let d of e){let c=d.candidate;if(!c)continue;if(i.has(c.pluginId)||r.has(c.definitionId)){Te(d,"RESERVED_ID");continue}if(d.provenance===void 0&&(s.has(c.pluginId)||a.has(c.definitionId))){Te(d,"RESERVED_ID");continue}[c.toolNames.read,c.toolNames.action].filter(f=>f!==void 0).some(f=>o.has(f))&&Te(d,"DUPLICATE_ID");}}function xa(e){return [...e].sort((n,t)=>{let i=Wi.indexOf(n.source)-Wi.indexOf(t.source);return i!==0?i:dn(n.relativePath,t.relativePath)})}function O(e,n,t){e.diagnostic=On(n,e.source,e.relativePath,e.identity?.pluginId,t);}async function oo(e,n,t){let i=pt(t,{mode:"local"});if(!i.ok&&i.parseFailure){O(n,qi(i.rejection.code),Yi(i.rejection));return}let r=_a(i.identity);if(n.bundleIdentity===void 0)n.identity=r;else if(r?.pluginId!==n.bundleIdentity.appId||r.definitionKey!==`${n.bundleIdentity.definitionId}\0${String(n.bundleIdentity.version)}`){O(n,"BUNDLE_INTEGRITY");return}if(!i.ok&&i.builtinOnly){O(n,"RESERVED_ID");return}if(!i.ok){O(n,qi(i.rejection.code),Yi(i.rejection));return}let o=i.manifest,s={pluginId:o.pluginId,definitionKey:`${o.definitionId}\0${String(o.version)}`};if(n.bundleIdentity===void 0&&(n.identity=s),o.actions.length>0)try{Ui(o.actions.map(E=>({actionId:E.actionId,inputSchema:E.inputSchema})));}catch(E){if(E instanceof De){O(n,Ea(E.code));return}throw E}let a;try{a=await Ct(e,n,"ui/index.html",tn);}catch(E){O(n,Ge(ie(E),"entry"));return}if(a.byteLength>tn){O(n,"LIMIT_EXCEEDED");return}let d;try{d=so(a);}catch{O(n,"ENTRY_INVALID");return}if(a.byteLength===0||d.length===0){O(n,"ENTRY_INVALID");return}let c=crypto.createHash("sha256").update(a).digest("hex");if(o.entryHash!==void 0&&o.entryHash!==c){O(n,"ENTRY_INVALID");return}let p={},f,g;if(o.initialState!==void 0){try{f=await Ct(e,n,"ui/state.json",65536);}catch(E){O(n,Ge(ie(E),"initial"));return}if(f.byteLength>65536){O(n,"LIMIT_EXCEEDED");return}try{let E=ha(f),K=o.dataPaths??[],j=nt(E,K);p=ye(j,0,K),Ce(p);}catch{O(n,"INITIAL_STATE_INVALID");return}if(g=crypto.createHash("sha256").update(f).digest("hex"),o.initialState.hash!==void 0&&o.initialState.hash!==g){O(n,"INITIAL_STATE_INVALID");return}}let A={...o,entryHash:c,...o.initialState===void 0?{}:{initialState:{path:"ui/state.json",hash:g}}},T=qe(A),L=Sa(A,a,f??new Uint8Array),N;try{N=La(T,L);}catch(E){if(E instanceof Y){O(n,Ta(E));return}throw E}let F;if(n.bundleLineage!==void 0){let E=n.bundleLineage[n.bundleLineage.length-1];if(!E){O(n,"LINEAGE_INVALID");return}let{legacy:K,...j}=E.definition,{hash:ue,...fe}=N;if(W(j)!==W(fe)){O(n,"LINEAGE_STALE");return}if(K!==void 0&&(N={...N,legacy:K}),K!==void 0)try{N={...N,hash:oe(N)},Ie(N);}catch{O(n,"LINEAGE_INVALID");return}F=n.bundleLineage;}if(n.bundleIdentity!==void 0&&n.bundleIdentity.appId!==o.pluginId){O(n,"BUNDLE_INTEGRITY");return}if(n.bundleIdentity!==void 0&&(n.bundleIdentity.definitionId!==N.id||n.bundleIdentity.version!==N.version||n.bundleIdentity.definitionHash!==N.hash)){O(n,"LINEAGE_STALE");return}let R=kt(o.pluginId),B=o.actions.length===0?{read:R.read}:R,H=Oe(T),I=Oe(A),y=Oe(N),M=Oe({...T.handlers}),C=Zi(a),u=f===void 0?void 0:Zi(f),_=Object.freeze({...n.provenance===void 0?{}:{provenance:n.provenance},entry:Object.freeze({path:"ui/index.html",hash:c,bytes:C}),...u===void 0?{}:{initialState:Object.freeze({path:"ui/state.json",hash:g,bytes:u})}}),D={appId:o.pluginId,pluginId:o.pluginId,definitionId:o.definitionId,version:o.version,...i.releaseVersion===void 0?{}:{releaseVersion:i.releaseVersion},manifestFile:i.file,...i.mcpb===void 0?{}:{mcpb:Oe(i.mcpb)},relativePath:n.relativePath,manifest:I,normalized:H,name:o.name,description:o.description,...o.icon===void 0?{}:{icon:o.icon},...o.tone===void 0?{}:{tone:o.tone},definition:y,handlers:M,resources:_,html:d,entryBytes:C,entryHash:c,initialState:Oe(p),...u===void 0?{}:{initialStateBytes:u},...g===void 0?{}:{initialStateHash:g},sourceHash:L,toolNames:Object.freeze(B)},U=n.provenance===void 0?{...D,source:n.source}:{...D,provenance:n.provenance,lineage:F??[]};n.candidate=Object.freeze(U),Oa(o)&&O(n,"EXEC_DENIED");}async function Ao(e,n){let t={};for(let i of Z)try{t[i]=await Ct(e,n,i,262144);}catch(r){if(ie(r)==="NOT_FOUND")continue;return {files:t,failure:Ge(ie(r),"manifest")}}return {files:t}}function wt(e){return Z.some(n=>e[n]!==void 0)}async function ja(e,n){let{files:t,failure:i}=await Ao(e,n);if(i!==void 0){O(n,i);return}let r=t[q];return r!==void 0&&!dt(r)&&delete t[q],wt(t)?t:void 0}function Va(e,n,t,i=pa,r=false){let o=xa(e);wa(o);let s=Object.freeze(o.filter(p=>p.candidate!==void 0&&p.diagnostic===void 0).map(p=>p.candidate)),a=Object.freeze(o.filter(p=>p.diagnostic!==void 0).map(p=>p.diagnostic)),d=r?Object.freeze({...t===void 0?{}:{indexHash:t},candidates:Object.freeze(o.filter(p=>p.source==="bundled"&&p.diagnostic===void 0&&t!==void 0&&p.candidate?.provenance?.indexHash===t).map(p=>p.candidate)),diagnostics:Object.freeze(a.filter(p=>p.source==="bundled").map(p=>Object.freeze({...p}))),reservedAppIds:Object.freeze([...i.appIds]),reservedDefinitionIds:Object.freeze([...i.definitionIds])}):void 0,c={apps:s,diagnostics:a,complete:n===void 0,...n===void 0?{}:{incompleteReason:n},...t===void 0?{}:{productBundleIndexHash:t},...d===void 0?{}:{productBundleSnapshotMetadata:d}};return Object.defineProperty(c,"candidates",{configurable:false,enumerable:false,get:()=>s}),Object.freeze(c)}function va(e){if(e===null||typeof e!="object"&&typeof e!="function")return false;let n=e;return typeof n.readVerifiedFile=="function"||typeof n.readFileVerified=="function"||typeof n.listDirectory=="function"||typeof n.readDirectory=="function"||typeof n.readdir=="function"}function Fa(e,n){if(va(e))return {fs:e,options:n??{}};let t=e??n??{};return {fs:t.filesystem??t.fileSystem??t.fs??Mn,options:t}}async function xt(e,n,t){if(typeof e!="string"||e.length===0)throw new TypeError("workspaceRoot must be explicit");let{fs:i,options:r}=Fa(n,t),o=r.clock??Pa,s=o(),a=await Ji(r.productBundle,i,s,o),d=o(),c=BigInt(Date.now())*1000000n,p=[],f=0,g,A=false,T,L;if(r.scanCache!==void 0&&typeof i.getRootIdentity=="function"&&typeof i.fingerprintVerifiedFile=="function")try{L=await i.getRootIdentity(e),T=wi(r.scanCache,L),T.scanStartedAtNs=c;}catch(I){if(ie(I)!=="NOT_FOUND")throw I}let N=T!==void 0&&r.productBundle===void 0&&a.packages.length===0&&a.diagnostics.length===0,F=new Set,R=true;p.push(...a.diagnostics.map(I=>({source:I.source,root:r.productBundle?.root??e,name:"",relativePath:I.relativePath,diagnostic:I})));let B=a.reservedIds;a.incomplete&&(g="time_limit");for(let I of a.packages){if(!_e(d,o)){A=true,g="time_limit";break}let y=I.indexEntry,M=y.packageDir,C=I.files===void 0?void 0:Na(M,I.files),u=a.indexHash===void 0?void 0:Di(Object.freeze({kind:"bundled",launcher:y.launcher!==false,indexHash:a.indexHash,packageDir:M,appId:y.appId,definitionId:y.definition.id,version:y.definition.version,definitionHash:y.definition.hash,files:y.files}),C),_={source:"bundled",root:r.productBundle?.root??e,name:M.slice(5),relativePath:M,...u===void 0?{}:{provenance:u},...I.files===void 0?{}:{pinnedFiles:I.files},...I.lineage===void 0?{}:{bundleLineage:I.lineage},bundleIdentity:{appId:y.appId,definitionId:y.definition.id,version:y.definition.version,definitionHash:y.definition.hash},identity:Da(y)};if(p.push(_),f+=1,I.failureCode!==void 0){O(_,I.failureCode);continue}let D={};for(let U of Z){let E=I.files?.get(U);E!==void 0&&(D[U]=E);}if(!wt(D)){O(_,"BUNDLE_INTEGRITY");continue}if(await oo(i,_,D),!_e(d,o)){A=true,g="time_limit";break}}let H=[{source:"apps",directory:"apps"},{source:"skills",directory:"skills"}];e:for(let I of H){let{source:y,directory:M}=I,C;try{C=await Ua(i,e,M);}catch(_){if(ie(_)==="NOT_FOUND")continue;N=false,R=false,p.push({source:y,root:e,name:"",relativePath:y,diagnostic:On(Ge(ie(_),"manifest"),y,y)});continue}let u=C.filter(_=>_.kind==="directory"||_.kind==="symlink").filter(_=>ga(_.name)).map(_=>({source:y,root:e,name:_.name,relativePath:Ia(y,_.name)})).sort((_,D)=>dn(_.relativePath,D.relativePath));for(let _ of u){let D={..._};if(p.push(D),L!==void 0?F.add(po(L,D)):N=false,!_e(d,o)){A=true,g="time_limit";break e}let U;if(T!==void 0&&L!==void 0){try{let j=await Ma(i,e,L,D,T,c,d,o);if(j.timeLimitReached){A=!0,g="time_limit";break e}D.scanContext=j.context,U=j.memo;}catch(j){N=false,O(D,Ge(ie(j),"manifest"));continue}U===void 0&&(N=false);}if(U!==void 0){if(D.candidate=U.candidate,D.diagnostic=U.diagnostic,D.identity=U.identity,y==="skills"&&U.candidate===void 0&&U.diagnostic===void 0)continue;if(f>=64){O(D,"LIMIT_EXCEEDED");continue}if(_.relativePath.split("/").length-1>2){O(D,"LIMIT_EXCEEDED");continue}if(f+=1,!_e(d,o)){A=true,g="time_limit";break e}continue}let E;if(y==="skills"&&(E=await ja(i,D),E===void 0)){D.diagnostic===void 0&&Ut(D);continue}if(f>=64){O(D,"LIMIT_EXCEEDED");continue}if(_.relativePath.split("/").length-1>2){O(D,"LIMIT_EXCEEDED");continue}if(!_e(d,o)){A=true,g="time_limit";break e}if(f+=1,E===void 0){let j=await Ao(i,D);if(j.failure!==void 0||!wt(j.files)){O(D,j.failure??Ge("NOT_FOUND","manifest")),Ut(D);continue}E=j.files;}if(await oo(i,D,E),Ut(D),!_e(d,o)){A=true,g="time_limit";break e}}}if(T!==void 0&&L!==void 0){let I=[...F].sort(dn),y=T.lastCandidateKeys,M=y!==void 0&&y.length===I.length&&y.every((u,_)=>u===I[_]);if(N=N&&M,R&&!A&&g===void 0)for(let u of T.candidates.keys())try{JSON.parse(u)[0]===L.realPath&&!F.has(u)&&T.candidates.delete(u);}catch{T.candidates.delete(u);}let C=[...T.candidates.keys()].filter(u=>{try{return JSON.parse(u)[0]===L.realPath}catch{return false}});N=N&&C.length===F.size&&C.every(u=>F.has(u))&&!A&&g===void 0,T.lastCandidateScanUnchanged=N,R&&!A&&g===void 0&&(T.lastCandidateKeys=Object.freeze(I));}return A&&p.push({source:"apps",root:e,name:"",relativePath:"apps",diagnostic:On("DISCOVERY_TIME_LIMIT","apps","apps")}),ka(p,r,B),Va(p,g,a.indexHash,B,r.productBundle!==void 0)}var pa,ze,ua,fa,Wi,Aa,Qi,eo,Ba,Ha,go=w(()=>{m();be();pn();Ae();_i();Ne();It();Tn();ki();bt();En();Rt();Rt();pa=cn([]);ze="crewx_local_app_",ua=ze,fa=ze;Wi=["bundled","apps","skills"],Aa=new TextDecoder("utf-8",{fatal:true});Qi=["","/ui"],eo=2000000000n;Ba=xt,Ha=xt;});m();var mo="SKILL.md",Wa=/^---\s*\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/;function ho(e){if(e===null||typeof e!="object"||Array.isArray(e))return false;let n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}function Xa(e){return e.isDirectory()||e.isSymbolicLink()}function Eo(e){try{return fs$1.existsSync(e)&&fs$1.statSync(e).isDirectory()}catch{return false}}var Ka=["index.js","main.js"];function jp(e,n){let t=path.join(e,"package.json");if(fs$1.existsSync(t))try{let r=JSON.parse(fs$1.readFileSync(t,"utf8"));if(r.bin){let o=typeof r.bin=="string"?r.bin:Object.values(r.bin).find(s=>typeof s=="string");if(o){let s=path.resolve(e,o);if(fs$1.existsSync(s))return s}}if(typeof r.main=="string"){let o=path.resolve(e,r.main);if(fs$1.existsSync(o))return o}}catch{}let i=path.resolve(e,`${n}.js`);if(fs$1.existsSync(i))return i;for(let r of Ka){let o=path.resolve(e,r);if(fs$1.existsSync(o))return o}}function Ya(e){let n;try{n=fs$1.readFileSync(e,"utf8");}catch{return {frontmatter:{},readable:false,valid:false,hasFrontmatter:false}}let t=n.match(Wa);if(!t)return {frontmatter:{},readable:true,valid:true,hasFrontmatter:false};try{let i=jsYaml.load(t[1]??"");if(!ho(i))return {frontmatter:{},readable:!0,valid:!1,hasFrontmatter:!0};let r=ho(i.metadata)?i.metadata:void 0;return {frontmatter:{...typeof i.name=="string"?{name:i.name}:{},...typeof(r?.version??i.version)=="string"?{version:r?.version??i.version}:{},...typeof i.description=="string"?{description:i.description}:{}},readable:!0,valid:!0,hasFrontmatter:!0}}catch{return {frontmatter:{},readable:true,valid:false,hasFrontmatter:true}}}function qa(e){return [path.join(e,mo),path.join(e,"skill",mo)]}function Rn(e,n){if(!Eo(e))return null;for(let t of qa(e)){if(!fs$1.existsSync(t))continue;let r=Ya(t).frontmatter;return {name:r.name??n,...r.version===void 0?{}:{version:r.version},...r.description===void 0?{}:{description:r.description},skillMdPath:t,dir:e}}return null}function jt(e){try{return fs$1.readdirSync(e,{withFileTypes:!0}).filter(Xa)}catch{return []}}function Za(e){return e.length===0||/[\\\u0000]/.test(e)?false:e.split("/").every(n=>n.length>0&&n!=="."&&n!=="..")}function _o(e,n,t){!e||n.has(e.name)||(n.add(e.name),t.push(e));}function Un(e){let n=[],t=new Set;for(let i of e)if(Eo(i))for(let r of jt(i)){if(r.name.startsWith("@")){let o=path.join(i,r.name);for(let s of jt(o))_o(Rn(path.join(o,s.name),s.name),t,n);continue}_o(Rn(path.join(i,r.name),r.name),t,n);}return n.sort((i,r)=>i.name.localeCompare(r.name))}function Qa(e,n){if(!Za(e))throw new Error(`Skill not found: ${e}`);for(let i of n){let r=Rn(path.join(i,e),e);if(r)return r;for(let o of jt(i)){if(!o.name.startsWith("@"))continue;let s=Rn(path.join(i,o.name,e),e);if(s)return s}}let t=Un(n).find(i=>i.name===e);if(t)return t;throw new Error(`Skill not found: ${e}`)}async function Vp(e){if(!e||e.root===null)return {skills:[],diagnostics:[]};let{discoverWorkspaceApps:n}=await Promise.resolve().then(()=>(go(),Io)),t=await n(e.root,{productBundle:e}),i=[],r=new Set;for(let o of t.apps){let s=o.provenance?.kind==="bundled"?o.provenance.packageDir:void 0;if(!s)continue;let a=path.join(e.root,...s.split("/"));for(let d of Un([path.dirname(a)]))path.resolve(d.dir)!==path.resolve(a)||r.has(d.name)||(r.add(d.name),i.push(d));for(let d of [path.join(a,"skill"),path.join(a,"skills")])for(let c of Un([d]))r.has(c.name)||(r.add(c.name),i.push(c));}return {skills:i.sort((o,s)=>o.name.localeCompare(s.name)),diagnostics:t.diagnostics.filter(o=>o.source==="bundled")}}var vp=Un,Fp=Qa;
2
+ exports.discover=Un;exports.discoverBundledProductSkills=Vp;exports.discoverSkills=vp;exports.findEntrypoint=jp;exports.readSkillFrontmatter=Ya;exports.resolve=Qa;exports.resolveSkill=Fp;