@tickernelz/paperclip-pro-shared 2026.925.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1216) hide show
  1. package/dist/.paperclip-build-complete +1 -0
  2. package/dist/account-handle.d.ts +26 -0
  3. package/dist/account-handle.d.ts.map +1 -0
  4. package/dist/account-handle.js +48 -0
  5. package/dist/account-handle.js.map +1 -0
  6. package/dist/account-handle.test.d.ts +2 -0
  7. package/dist/account-handle.test.d.ts.map +1 -0
  8. package/dist/account-handle.test.js +62 -0
  9. package/dist/account-handle.test.js.map +1 -0
  10. package/dist/adapter-agnostic-keys.test.d.ts +2 -0
  11. package/dist/adapter-agnostic-keys.test.d.ts.map +1 -0
  12. package/dist/adapter-agnostic-keys.test.js +33 -0
  13. package/dist/adapter-agnostic-keys.test.js.map +1 -0
  14. package/dist/adapter-auth-check-code.d.ts +13 -0
  15. package/dist/adapter-auth-check-code.d.ts.map +1 -0
  16. package/dist/adapter-auth-check-code.js +13 -0
  17. package/dist/adapter-auth-check-code.js.map +1 -0
  18. package/dist/adapter-auth-check-code.test.d.ts +2 -0
  19. package/dist/adapter-auth-check-code.test.d.ts.map +1 -0
  20. package/dist/adapter-auth-check-code.test.js +8 -0
  21. package/dist/adapter-auth-check-code.test.js.map +1 -0
  22. package/dist/adapter-auth-session.d.ts +16 -0
  23. package/dist/adapter-auth-session.d.ts.map +1 -0
  24. package/dist/adapter-auth-session.js +37 -0
  25. package/dist/adapter-auth-session.js.map +1 -0
  26. package/dist/adapter-type.d.ts +4 -0
  27. package/dist/adapter-type.d.ts.map +1 -0
  28. package/dist/adapter-type.js +14 -0
  29. package/dist/adapter-type.js.map +1 -0
  30. package/dist/adapter-types.test.d.ts +2 -0
  31. package/dist/adapter-types.test.d.ts.map +1 -0
  32. package/dist/adapter-types.test.js +46 -0
  33. package/dist/adapter-types.test.js.map +1 -0
  34. package/dist/agent-appearance.d.ts +53 -0
  35. package/dist/agent-appearance.d.ts.map +1 -0
  36. package/dist/agent-appearance.js +51 -0
  37. package/dist/agent-appearance.js.map +1 -0
  38. package/dist/agent-appearance.test.d.ts +2 -0
  39. package/dist/agent-appearance.test.d.ts.map +1 -0
  40. package/dist/agent-appearance.test.js +32 -0
  41. package/dist/agent-appearance.test.js.map +1 -0
  42. package/dist/agent-eligibility.d.ts +67 -0
  43. package/dist/agent-eligibility.d.ts.map +1 -0
  44. package/dist/agent-eligibility.js +171 -0
  45. package/dist/agent-eligibility.js.map +1 -0
  46. package/dist/agent-eligibility.test.d.ts +2 -0
  47. package/dist/agent-eligibility.test.d.ts.map +1 -0
  48. package/dist/agent-eligibility.test.js +187 -0
  49. package/dist/agent-eligibility.test.js.map +1 -0
  50. package/dist/agent-url-key.d.ts +4 -0
  51. package/dist/agent-url-key.d.ts.map +1 -0
  52. package/dist/agent-url-key.js +22 -0
  53. package/dist/agent-url-key.js.map +1 -0
  54. package/dist/ai-connections.d.ts +220 -0
  55. package/dist/ai-connections.d.ts.map +1 -0
  56. package/dist/ai-connections.js +152 -0
  57. package/dist/ai-connections.js.map +1 -0
  58. package/dist/announcements.d.ts +146 -0
  59. package/dist/announcements.d.ts.map +1 -0
  60. package/dist/announcements.js +72 -0
  61. package/dist/announcements.js.map +1 -0
  62. package/dist/announcements.test.d.ts +2 -0
  63. package/dist/announcements.test.d.ts.map +1 -0
  64. package/dist/announcements.test.js +53 -0
  65. package/dist/announcements.test.js.map +1 -0
  66. package/dist/api.d.ts +69 -0
  67. package/dist/api.d.ts.map +1 -0
  68. package/dist/api.js +69 -0
  69. package/dist/api.js.map +1 -0
  70. package/dist/app-definitions/agentmail.json +49 -0
  71. package/dist/app-definitions/airtable.json +41 -0
  72. package/dist/app-definitions/anthropic.json +75 -0
  73. package/dist/app-definitions/api-key-generic.json +43 -0
  74. package/dist/app-definitions/arcade.json +36 -0
  75. package/dist/app-definitions/asana.json +42 -0
  76. package/dist/app-definitions/beehiiv.json +41 -0
  77. package/dist/app-definitions/bitly.json +78 -0
  78. package/dist/app-definitions/box.json +42 -0
  79. package/dist/app-definitions/brex.json +43 -0
  80. package/dist/app-definitions/candid.json +41 -0
  81. package/dist/app-definitions/clickhouse.json +59 -0
  82. package/dist/app-definitions/cloudflare.json +78 -0
  83. package/dist/app-definitions/cloudinary.json +42 -0
  84. package/dist/app-definitions/coda.json +80 -0
  85. package/dist/app-definitions/composio.json +39 -0
  86. package/dist/app-definitions/context7.json +33 -0
  87. package/dist/app-definitions/discord.json +66 -0
  88. package/dist/app-definitions/egnyte.json +41 -0
  89. package/dist/app-definitions/embat.json +41 -0
  90. package/dist/app-definitions/executor.json +36 -0
  91. package/dist/app-definitions/fireflies.json +82 -0
  92. package/dist/app-definitions/github.json +124 -0
  93. package/dist/app-definitions/gmail.json +182 -0
  94. package/dist/app-definitions/google-calendar.json +188 -0
  95. package/dist/app-definitions/google-chat.json +189 -0
  96. package/dist/app-definitions/google-docs.json +187 -0
  97. package/dist/app-definitions/google-drive.json +183 -0
  98. package/dist/app-definitions/google-people.json +110 -0
  99. package/dist/app-definitions/google-sheets.json +211 -0
  100. package/dist/app-definitions/google-slides.json +187 -0
  101. package/dist/app-definitions/google-workspace-search.json +113 -0
  102. package/dist/app-definitions/hugging-face.json +44 -0
  103. package/dist/app-definitions/imessage-photon.json +50 -0
  104. package/dist/app-definitions/jira.json +65 -0
  105. package/dist/app-definitions/kernel.json +78 -0
  106. package/dist/app-definitions/linear.json +62 -0
  107. package/dist/app-definitions/local-falcon.json +41 -0
  108. package/dist/app-definitions/make.json +42 -0
  109. package/dist/app-definitions/manufact.json +42 -0
  110. package/dist/app-definitions/mem0.json +56 -0
  111. package/dist/app-definitions/microsoft-teams.json +67 -0
  112. package/dist/app-definitions/miro.json +41 -0
  113. package/dist/app-definitions/mixpanel.json +43 -0
  114. package/dist/app-definitions/netlify.json +42 -0
  115. package/dist/app-definitions/notion.json +57 -0
  116. package/dist/app-definitions/oauth-generic.json +47 -0
  117. package/dist/app-definitions/openai.json +74 -0
  118. package/dist/app-definitions/openrouter.json +53 -0
  119. package/dist/app-definitions/oreilly.json +78 -0
  120. package/dist/app-definitions/pagerduty.json +93 -0
  121. package/dist/app-definitions/planetscale.json +91 -0
  122. package/dist/app-definitions/posthog.json +278 -0
  123. package/dist/app-definitions/postman.json +224 -0
  124. package/dist/app-definitions/railway.json +61 -0
  125. package/dist/app-definitions/razorpay.json +81 -0
  126. package/dist/app-definitions/resend.json +42 -0
  127. package/dist/app-definitions/sanity.json +79 -0
  128. package/dist/app-definitions/sentry.json +42 -0
  129. package/dist/app-definitions/shopify.json +117 -0
  130. package/dist/app-definitions/similarweb.json +57 -0
  131. package/dist/app-definitions/slack.json +86 -0
  132. package/dist/app-definitions/stripe.json +80 -0
  133. package/dist/app-definitions/supabase.json +164 -0
  134. package/dist/app-definitions/telegram.json +53 -0
  135. package/dist/app-definitions/ticket-tailor.json +42 -0
  136. package/dist/app-definitions/ticktick.json +41 -0
  137. package/dist/app-definitions/todoist.json +41 -0
  138. package/dist/app-definitions/vercel.json +43 -0
  139. package/dist/app-definitions/webflow.json +41 -0
  140. package/dist/app-definitions/wix.json +42 -0
  141. package/dist/app-definitions/xai.json +74 -0
  142. package/dist/app-definitions/xero.json +53 -0
  143. package/dist/app-definitions/youcom.json +100 -0
  144. package/dist/app-definitions/zapier.json +32 -0
  145. package/dist/app-definitions-url.test.d.ts +2 -0
  146. package/dist/app-definitions-url.test.d.ts.map +1 -0
  147. package/dist/app-definitions-url.test.js +43 -0
  148. package/dist/app-definitions-url.test.js.map +1 -0
  149. package/dist/app-definitions.d.ts +41 -0
  150. package/dist/app-definitions.d.ts.map +1 -0
  151. package/dist/app-definitions.generated.d.ts +3 -0
  152. package/dist/app-definitions.generated.d.ts.map +1 -0
  153. package/dist/app-definitions.generated.js +77 -0
  154. package/dist/app-definitions.generated.js.map +1 -0
  155. package/dist/app-definitions.js +212 -0
  156. package/dist/app-definitions.js.map +1 -0
  157. package/dist/app-definitions.test.d.ts +2 -0
  158. package/dist/app-definitions.test.d.ts.map +1 -0
  159. package/dist/app-definitions.test.js +774 -0
  160. package/dist/app-definitions.test.js.map +1 -0
  161. package/dist/cliplab/LICENSE +22 -0
  162. package/dist/cliplab/PROVENANCE.md +18 -0
  163. package/dist/cliplab/character.d.ts +4 -0
  164. package/dist/cliplab/character.d.ts.map +1 -0
  165. package/dist/cliplab/character.js +2324 -0
  166. package/dist/cliplab/character.js.map +1 -0
  167. package/dist/cliplab/definition.d.ts +13 -0
  168. package/dist/cliplab/definition.d.ts.map +1 -0
  169. package/dist/cliplab/definition.js +28 -0
  170. package/dist/cliplab/definition.js.map +1 -0
  171. package/dist/cliplab/face-morph.d.ts +26 -0
  172. package/dist/cliplab/face-morph.d.ts.map +1 -0
  173. package/dist/cliplab/face-morph.js +301 -0
  174. package/dist/cliplab/face-morph.js.map +1 -0
  175. package/dist/cliplab/gaze.d.ts +42 -0
  176. package/dist/cliplab/gaze.d.ts.map +1 -0
  177. package/dist/cliplab/gaze.js +57 -0
  178. package/dist/cliplab/gaze.js.map +1 -0
  179. package/dist/cliplab/model.d.ts +176 -0
  180. package/dist/cliplab/model.d.ts.map +1 -0
  181. package/dist/cliplab/model.js +337 -0
  182. package/dist/cliplab/model.js.map +1 -0
  183. package/dist/cliplab/palette-tokens.d.ts +75 -0
  184. package/dist/cliplab/palette-tokens.d.ts.map +1 -0
  185. package/dist/cliplab/palette-tokens.js +76 -0
  186. package/dist/cliplab/palette-tokens.js.map +1 -0
  187. package/dist/cliplab/particles.d.ts +15 -0
  188. package/dist/cliplab/particles.d.ts.map +1 -0
  189. package/dist/cliplab/particles.js +23 -0
  190. package/dist/cliplab/particles.js.map +1 -0
  191. package/dist/cliplab/renderer.d.ts +129 -0
  192. package/dist/cliplab/renderer.d.ts.map +1 -0
  193. package/dist/cliplab/renderer.js +762 -0
  194. package/dist/cliplab/renderer.js.map +1 -0
  195. package/dist/cliplab/runtime.d.ts +21 -0
  196. package/dist/cliplab/runtime.d.ts.map +1 -0
  197. package/dist/cliplab/runtime.js +140 -0
  198. package/dist/cliplab/runtime.js.map +1 -0
  199. package/dist/cliplab/static.d.ts +4 -0
  200. package/dist/cliplab/static.d.ts.map +1 -0
  201. package/dist/cliplab/static.js +16 -0
  202. package/dist/cliplab/static.js.map +1 -0
  203. package/dist/cliplab/svg-canvas.d.ts +56 -0
  204. package/dist/cliplab/svg-canvas.d.ts.map +1 -0
  205. package/dist/cliplab/svg-canvas.js +134 -0
  206. package/dist/cliplab/svg-canvas.js.map +1 -0
  207. package/dist/cliplab/svg-path.d.ts +24 -0
  208. package/dist/cliplab/svg-path.d.ts.map +1 -0
  209. package/dist/cliplab/svg-path.js +151 -0
  210. package/dist/cliplab/svg-path.js.map +1 -0
  211. package/dist/cliplab/svg-snapshot.d.ts +28 -0
  212. package/dist/cliplab/svg-snapshot.d.ts.map +1 -0
  213. package/dist/cliplab/svg-snapshot.js +168 -0
  214. package/dist/cliplab/svg-snapshot.js.map +1 -0
  215. package/dist/company-import-transfer.d.ts +80 -0
  216. package/dist/company-import-transfer.d.ts.map +1 -0
  217. package/dist/company-import-transfer.js +63 -0
  218. package/dist/company-import-transfer.js.map +1 -0
  219. package/dist/company-import-transfer.test.d.ts +2 -0
  220. package/dist/company-import-transfer.test.d.ts.map +1 -0
  221. package/dist/company-import-transfer.test.js +15 -0
  222. package/dist/company-import-transfer.test.js.map +1 -0
  223. package/dist/config-schema.d.ts +252 -0
  224. package/dist/config-schema.d.ts.map +1 -0
  225. package/dist/config-schema.js +268 -0
  226. package/dist/config-schema.js.map +1 -0
  227. package/dist/config-schema.test.d.ts +2 -0
  228. package/dist/config-schema.test.d.ts.map +1 -0
  229. package/dist/config-schema.test.js +126 -0
  230. package/dist/config-schema.test.js.map +1 -0
  231. package/dist/connection-intent-guidance.d.ts +12 -0
  232. package/dist/connection-intent-guidance.d.ts.map +1 -0
  233. package/dist/connection-intent-guidance.js +35 -0
  234. package/dist/connection-intent-guidance.js.map +1 -0
  235. package/dist/connection-intent-guidance.test.d.ts +2 -0
  236. package/dist/connection-intent-guidance.test.d.ts.map +1 -0
  237. package/dist/connection-intent-guidance.test.js +60 -0
  238. package/dist/connection-intent-guidance.test.js.map +1 -0
  239. package/dist/constants.d.ts +556 -0
  240. package/dist/constants.d.ts.map +1 -0
  241. package/dist/constants.js +1363 -0
  242. package/dist/constants.js.map +1 -0
  243. package/dist/decision.test.d.ts +2 -0
  244. package/dist/decision.test.d.ts.map +1 -0
  245. package/dist/decision.test.js +142 -0
  246. package/dist/decision.test.js.map +1 -0
  247. package/dist/document-anchors.d.ts +37 -0
  248. package/dist/document-anchors.d.ts.map +1 -0
  249. package/dist/document-anchors.js +351 -0
  250. package/dist/document-anchors.js.map +1 -0
  251. package/dist/document-anchors.test.d.ts +2 -0
  252. package/dist/document-anchors.test.d.ts.map +1 -0
  253. package/dist/document-anchors.test.js +151 -0
  254. package/dist/document-anchors.test.js.map +1 -0
  255. package/dist/document-export.d.ts +4 -0
  256. package/dist/document-export.d.ts.map +1 -0
  257. package/dist/document-export.js +27 -0
  258. package/dist/document-export.js.map +1 -0
  259. package/dist/env-file.d.ts +16 -0
  260. package/dist/env-file.d.ts.map +1 -0
  261. package/dist/env-file.js +149 -0
  262. package/dist/env-file.js.map +1 -0
  263. package/dist/env-file.test.d.ts +2 -0
  264. package/dist/env-file.test.d.ts.map +1 -0
  265. package/dist/env-file.test.js +72 -0
  266. package/dist/env-file.test.js.map +1 -0
  267. package/dist/environment-custom-images.d.ts +17 -0
  268. package/dist/environment-custom-images.d.ts.map +1 -0
  269. package/dist/environment-custom-images.js +88 -0
  270. package/dist/environment-custom-images.js.map +1 -0
  271. package/dist/environment-custom-images.test.d.ts +2 -0
  272. package/dist/environment-custom-images.test.d.ts.map +1 -0
  273. package/dist/environment-custom-images.test.js +136 -0
  274. package/dist/environment-custom-images.test.js.map +1 -0
  275. package/dist/environment-support.d.ts +58 -0
  276. package/dist/environment-support.d.ts.map +1 -0
  277. package/dist/environment-support.js +128 -0
  278. package/dist/environment-support.js.map +1 -0
  279. package/dist/environment-support.test.d.ts +2 -0
  280. package/dist/environment-support.test.d.ts.map +1 -0
  281. package/dist/environment-support.test.js +77 -0
  282. package/dist/environment-support.test.js.map +1 -0
  283. package/dist/execution-workspace-guards.d.ts +6 -0
  284. package/dist/execution-workspace-guards.d.ts.map +1 -0
  285. package/dist/execution-workspace-guards.js +12 -0
  286. package/dist/execution-workspace-guards.js.map +1 -0
  287. package/dist/external-objects-server.d.ts +12 -0
  288. package/dist/external-objects-server.d.ts.map +1 -0
  289. package/dist/external-objects-server.js +176 -0
  290. package/dist/external-objects-server.js.map +1 -0
  291. package/dist/external-objects.d.ts +32 -0
  292. package/dist/external-objects.d.ts.map +1 -0
  293. package/dist/external-objects.js +17 -0
  294. package/dist/external-objects.js.map +1 -0
  295. package/dist/external-objects.test.d.ts +2 -0
  296. package/dist/external-objects.test.d.ts.map +1 -0
  297. package/dist/external-objects.test.js +93 -0
  298. package/dist/external-objects.test.js.map +1 -0
  299. package/dist/feature-catalog.d.ts +59 -0
  300. package/dist/feature-catalog.d.ts.map +1 -0
  301. package/dist/feature-catalog.js +301 -0
  302. package/dist/feature-catalog.js.map +1 -0
  303. package/dist/feature-catalog.test.d.ts +2 -0
  304. package/dist/feature-catalog.test.d.ts.map +1 -0
  305. package/dist/feature-catalog.test.js +89 -0
  306. package/dist/feature-catalog.test.js.map +1 -0
  307. package/dist/frontmatter-runner-contract.test.d.ts +2 -0
  308. package/dist/frontmatter-runner-contract.test.d.ts.map +1 -0
  309. package/dist/frontmatter-runner-contract.test.js +10 -0
  310. package/dist/frontmatter-runner-contract.test.js.map +1 -0
  311. package/dist/frontmatter.d.ts +68 -0
  312. package/dist/frontmatter.d.ts.map +1 -0
  313. package/dist/frontmatter.js +559 -0
  314. package/dist/frontmatter.js.map +1 -0
  315. package/dist/frontmatter.test.d.ts +2 -0
  316. package/dist/frontmatter.test.d.ts.map +1 -0
  317. package/dist/frontmatter.test.js +297 -0
  318. package/dist/frontmatter.test.js.map +1 -0
  319. package/dist/github-connectors.d.ts +10 -0
  320. package/dist/github-connectors.d.ts.map +1 -0
  321. package/dist/github-connectors.js +15 -0
  322. package/dist/github-connectors.js.map +1 -0
  323. package/dist/gitignore-runtime.test.d.ts +2 -0
  324. package/dist/gitignore-runtime.test.d.ts.map +1 -0
  325. package/dist/gitignore-runtime.test.js +14 -0
  326. package/dist/gitignore-runtime.test.js.map +1 -0
  327. package/dist/google-workspace-connectors.d.ts +10 -0
  328. package/dist/google-workspace-connectors.d.ts.map +1 -0
  329. package/dist/google-workspace-connectors.js +31 -0
  330. package/dist/google-workspace-connectors.js.map +1 -0
  331. package/dist/home-paths.d.ts +41 -0
  332. package/dist/home-paths.d.ts.map +1 -0
  333. package/dist/home-paths.js +57 -0
  334. package/dist/home-paths.js.map +1 -0
  335. package/dist/home-paths.test.d.ts +2 -0
  336. package/dist/home-paths.test.d.ts.map +1 -0
  337. package/dist/home-paths.test.js +25 -0
  338. package/dist/home-paths.test.js.map +1 -0
  339. package/dist/humanize-connection.d.ts +36 -0
  340. package/dist/humanize-connection.d.ts.map +1 -0
  341. package/dist/humanize-connection.js +95 -0
  342. package/dist/humanize-connection.js.map +1 -0
  343. package/dist/humanize-connection.test.d.ts +2 -0
  344. package/dist/humanize-connection.test.d.ts.map +1 -0
  345. package/dist/humanize-connection.test.js +48 -0
  346. package/dist/humanize-connection.test.js.map +1 -0
  347. package/dist/index.d.ts +109 -0
  348. package/dist/index.d.ts.map +1 -0
  349. package/dist/index.js +94 -0
  350. package/dist/index.js.map +1 -0
  351. package/dist/issue-attribution.d.ts +27 -0
  352. package/dist/issue-attribution.d.ts.map +1 -0
  353. package/dist/issue-attribution.js +25 -0
  354. package/dist/issue-attribution.js.map +1 -0
  355. package/dist/issue-attribution.test.d.ts +2 -0
  356. package/dist/issue-attribution.test.d.ts.map +1 -0
  357. package/dist/issue-attribution.test.js +72 -0
  358. package/dist/issue-attribution.test.js.map +1 -0
  359. package/dist/issue-references.d.ts +16 -0
  360. package/dist/issue-references.d.ts.map +1 -0
  361. package/dist/issue-references.js +160 -0
  362. package/dist/issue-references.js.map +1 -0
  363. package/dist/issue-references.test.d.ts +2 -0
  364. package/dist/issue-references.test.d.ts.map +1 -0
  365. package/dist/issue-references.test.js +56 -0
  366. package/dist/issue-references.test.js.map +1 -0
  367. package/dist/issue-thread-interactions.test.d.ts +2 -0
  368. package/dist/issue-thread-interactions.test.d.ts.map +1 -0
  369. package/dist/issue-thread-interactions.test.js +546 -0
  370. package/dist/issue-thread-interactions.test.js.map +1 -0
  371. package/dist/issue-write-denial.d.ts +92 -0
  372. package/dist/issue-write-denial.d.ts.map +1 -0
  373. package/dist/issue-write-denial.js +227 -0
  374. package/dist/issue-write-denial.js.map +1 -0
  375. package/dist/issue-write-denial.test.d.ts +2 -0
  376. package/dist/issue-write-denial.test.d.ts.map +1 -0
  377. package/dist/issue-write-denial.test.js +159 -0
  378. package/dist/issue-write-denial.test.js.map +1 -0
  379. package/dist/markdown-work-products.d.ts +26 -0
  380. package/dist/markdown-work-products.d.ts.map +1 -0
  381. package/dist/markdown-work-products.js +70 -0
  382. package/dist/markdown-work-products.js.map +1 -0
  383. package/dist/markdown-work-products.test.d.ts +2 -0
  384. package/dist/markdown-work-products.test.d.ts.map +1 -0
  385. package/dist/markdown-work-products.test.js +122 -0
  386. package/dist/markdown-work-products.test.js.map +1 -0
  387. package/dist/mcp-config-help-prompt.d.ts +21 -0
  388. package/dist/mcp-config-help-prompt.d.ts.map +1 -0
  389. package/dist/mcp-config-help-prompt.js +56 -0
  390. package/dist/mcp-config-help-prompt.js.map +1 -0
  391. package/dist/mcp-remote-headers.d.ts +49 -0
  392. package/dist/mcp-remote-headers.d.ts.map +1 -0
  393. package/dist/mcp-remote-headers.js +127 -0
  394. package/dist/mcp-remote-headers.js.map +1 -0
  395. package/dist/mcp-remote-headers.test.d.ts +2 -0
  396. package/dist/mcp-remote-headers.test.d.ts.map +1 -0
  397. package/dist/mcp-remote-headers.test.js +112 -0
  398. package/dist/mcp-remote-headers.test.js.map +1 -0
  399. package/dist/network-bind.d.ts +27 -0
  400. package/dist/network-bind.d.ts.map +1 -0
  401. package/dist/network-bind.js +75 -0
  402. package/dist/network-bind.js.map +1 -0
  403. package/dist/node-version.d.ts +6 -0
  404. package/dist/node-version.d.ts.map +1 -0
  405. package/dist/node-version.js +48 -0
  406. package/dist/node-version.js.map +1 -0
  407. package/dist/oauth-endpoint-url.d.ts +74 -0
  408. package/dist/oauth-endpoint-url.d.ts.map +1 -0
  409. package/dist/oauth-endpoint-url.js +142 -0
  410. package/dist/oauth-endpoint-url.js.map +1 -0
  411. package/dist/oauth-endpoint-url.test.d.ts +2 -0
  412. package/dist/oauth-endpoint-url.test.d.ts.map +1 -0
  413. package/dist/oauth-endpoint-url.test.js +163 -0
  414. package/dist/oauth-endpoint-url.test.js.map +1 -0
  415. package/dist/pipeline-case-type.d.ts +23 -0
  416. package/dist/pipeline-case-type.d.ts.map +1 -0
  417. package/dist/pipeline-case-type.js +26 -0
  418. package/dist/pipeline-case-type.js.map +1 -0
  419. package/dist/pipeline-health.d.ts +80 -0
  420. package/dist/pipeline-health.d.ts.map +1 -0
  421. package/dist/pipeline-health.js +249 -0
  422. package/dist/pipeline-health.js.map +1 -0
  423. package/dist/pipeline-health.test.d.ts +2 -0
  424. package/dist/pipeline-health.test.d.ts.map +1 -0
  425. package/dist/pipeline-health.test.js +140 -0
  426. package/dist/pipeline-health.test.js.map +1 -0
  427. package/dist/portability-fidelity.d.ts +19 -0
  428. package/dist/portability-fidelity.d.ts.map +1 -0
  429. package/dist/portability-fidelity.js +46 -0
  430. package/dist/portability-fidelity.js.map +1 -0
  431. package/dist/portability-fidelity.test.d.ts +2 -0
  432. package/dist/portability-fidelity.test.d.ts.map +1 -0
  433. package/dist/portability-fidelity.test.js +66 -0
  434. package/dist/portability-fidelity.test.js.map +1 -0
  435. package/dist/portability-hash.d.ts +5 -0
  436. package/dist/portability-hash.d.ts.map +1 -0
  437. package/dist/portability-hash.js +20 -0
  438. package/dist/portability-hash.js.map +1 -0
  439. package/dist/portability-zip.d.ts +15 -0
  440. package/dist/portability-zip.d.ts.map +1 -0
  441. package/dist/portability-zip.js +262 -0
  442. package/dist/portability-zip.js.map +1 -0
  443. package/dist/portability-zip.test.d.ts +2 -0
  444. package/dist/portability-zip.test.d.ts.map +1 -0
  445. package/dist/portability-zip.test.js +227 -0
  446. package/dist/portability-zip.test.js.map +1 -0
  447. package/dist/project-mentions.d.ts +47 -0
  448. package/dist/project-mentions.d.ts.map +1 -0
  449. package/dist/project-mentions.js +291 -0
  450. package/dist/project-mentions.js.map +1 -0
  451. package/dist/project-mentions.test.d.ts +2 -0
  452. package/dist/project-mentions.test.d.ts.map +1 -0
  453. package/dist/project-mentions.test.js +43 -0
  454. package/dist/project-mentions.test.js.map +1 -0
  455. package/dist/project-url-key.d.ts +5 -0
  456. package/dist/project-url-key.d.ts.map +1 -0
  457. package/dist/project-url-key.js +39 -0
  458. package/dist/project-url-key.js.map +1 -0
  459. package/dist/railway-connection.d.ts +20 -0
  460. package/dist/railway-connection.d.ts.map +1 -0
  461. package/dist/railway-connection.js +7 -0
  462. package/dist/railway-connection.js.map +1 -0
  463. package/dist/remote-mcp-connectors.d.ts +11 -0
  464. package/dist/remote-mcp-connectors.d.ts.map +1 -0
  465. package/dist/remote-mcp-connectors.js +14 -0
  466. package/dist/remote-mcp-connectors.js.map +1 -0
  467. package/dist/remote-mcp-connectors.test.d.ts +2 -0
  468. package/dist/remote-mcp-connectors.test.d.ts.map +1 -0
  469. package/dist/remote-mcp-connectors.test.js +39 -0
  470. package/dist/remote-mcp-connectors.test.js.map +1 -0
  471. package/dist/resource-memberships.test.d.ts +2 -0
  472. package/dist/resource-memberships.test.d.ts.map +1 -0
  473. package/dist/resource-memberships.test.js +23 -0
  474. package/dist/resource-memberships.test.js.map +1 -0
  475. package/dist/responsible-user-denial.d.ts +46 -0
  476. package/dist/responsible-user-denial.d.ts.map +1 -0
  477. package/dist/responsible-user-denial.js +66 -0
  478. package/dist/responsible-user-denial.js.map +1 -0
  479. package/dist/responsible-user-denial.test.d.ts +2 -0
  480. package/dist/responsible-user-denial.test.d.ts.map +1 -0
  481. package/dist/responsible-user-denial.test.js +65 -0
  482. package/dist/responsible-user-denial.test.js.map +1 -0
  483. package/dist/retired-composio.d.ts +7 -0
  484. package/dist/retired-composio.d.ts.map +1 -0
  485. package/dist/retired-composio.js +7 -0
  486. package/dist/retired-composio.js.map +1 -0
  487. package/dist/routine-variables.d.ts +23 -0
  488. package/dist/routine-variables.d.ts.map +1 -0
  489. package/dist/routine-variables.js +127 -0
  490. package/dist/routine-variables.js.map +1 -0
  491. package/dist/routine-variables.test.d.ts +2 -0
  492. package/dist/routine-variables.test.d.ts.map +1 -0
  493. package/dist/routine-variables.test.js +98 -0
  494. package/dist/routine-variables.test.js.map +1 -0
  495. package/dist/runner-goal.d.ts +105 -0
  496. package/dist/runner-goal.d.ts.map +1 -0
  497. package/dist/runner-goal.js +74 -0
  498. package/dist/runner-goal.js.map +1 -0
  499. package/dist/runtime-exposure/loopback-bind.d.ts +52 -0
  500. package/dist/runtime-exposure/loopback-bind.d.ts.map +1 -0
  501. package/dist/runtime-exposure/loopback-bind.js +93 -0
  502. package/dist/runtime-exposure/loopback-bind.js.map +1 -0
  503. package/dist/runtime-exposure/loopback-bind.test.d.ts +2 -0
  504. package/dist/runtime-exposure/loopback-bind.test.d.ts.map +1 -0
  505. package/dist/runtime-exposure/loopback-bind.test.js +94 -0
  506. package/dist/runtime-exposure/loopback-bind.test.js.map +1 -0
  507. package/dist/runtime-exposure/ports.d.ts +61 -0
  508. package/dist/runtime-exposure/ports.d.ts.map +1 -0
  509. package/dist/runtime-exposure/ports.js +96 -0
  510. package/dist/runtime-exposure/ports.js.map +1 -0
  511. package/dist/runtime-exposure/ports.test.d.ts +2 -0
  512. package/dist/runtime-exposure/ports.test.d.ts.map +1 -0
  513. package/dist/runtime-exposure/ports.test.js +46 -0
  514. package/dist/runtime-exposure/ports.test.js.map +1 -0
  515. package/dist/self-serve-mcp-research.d.ts +5 -0
  516. package/dist/self-serve-mcp-research.d.ts.map +1 -0
  517. package/dist/self-serve-mcp-research.js +5 -0
  518. package/dist/self-serve-mcp-research.js.map +1 -0
  519. package/dist/self-serve-mcp-research.json +54 -0
  520. package/dist/setting-defaults.d.ts +72 -0
  521. package/dist/setting-defaults.d.ts.map +1 -0
  522. package/dist/setting-defaults.js +132 -0
  523. package/dist/setting-defaults.js.map +1 -0
  524. package/dist/setting-defaults.test.d.ts +2 -0
  525. package/dist/setting-defaults.test.d.ts.map +1 -0
  526. package/dist/setting-defaults.test.js +102 -0
  527. package/dist/setting-defaults.test.js.map +1 -0
  528. package/dist/settings-visibility.d.ts +86 -0
  529. package/dist/settings-visibility.d.ts.map +1 -0
  530. package/dist/settings-visibility.js +138 -0
  531. package/dist/settings-visibility.js.map +1 -0
  532. package/dist/settings-visibility.test.d.ts +2 -0
  533. package/dist/settings-visibility.test.d.ts.map +1 -0
  534. package/dist/settings-visibility.test.js +85 -0
  535. package/dist/settings-visibility.test.js.map +1 -0
  536. package/dist/slack-tools.d.ts +557 -0
  537. package/dist/slack-tools.d.ts.map +1 -0
  538. package/dist/slack-tools.js +146 -0
  539. package/dist/slack-tools.js.map +1 -0
  540. package/dist/summary-slot.test.d.ts +2 -0
  541. package/dist/summary-slot.test.d.ts.map +1 -0
  542. package/dist/summary-slot.test.js +76 -0
  543. package/dist/summary-slot.test.js.map +1 -0
  544. package/dist/telemetry/client-contract.test.d.ts +2 -0
  545. package/dist/telemetry/client-contract.test.d.ts.map +1 -0
  546. package/dist/telemetry/client-contract.test.js +166 -0
  547. package/dist/telemetry/client-contract.test.js.map +1 -0
  548. package/dist/telemetry/client-types.test.d.ts +2 -0
  549. package/dist/telemetry/client-types.test.d.ts.map +1 -0
  550. package/dist/telemetry/client-types.test.js +18 -0
  551. package/dist/telemetry/client-types.test.js.map +1 -0
  552. package/dist/telemetry/client.d.ts +101 -0
  553. package/dist/telemetry/client.d.ts.map +1 -0
  554. package/dist/telemetry/client.js +426 -0
  555. package/dist/telemetry/client.js.map +1 -0
  556. package/dist/telemetry/client.test.d.ts +2 -0
  557. package/dist/telemetry/client.test.d.ts.map +1 -0
  558. package/dist/telemetry/client.test.js +507 -0
  559. package/dist/telemetry/client.test.js.map +1 -0
  560. package/dist/telemetry/config.d.ts +35 -0
  561. package/dist/telemetry/config.d.ts.map +1 -0
  562. package/dist/telemetry/config.js +51 -0
  563. package/dist/telemetry/config.js.map +1 -0
  564. package/dist/telemetry/events.d.ts +103 -0
  565. package/dist/telemetry/events.d.ts.map +1 -0
  566. package/dist/telemetry/events.js +121 -0
  567. package/dist/telemetry/events.js.map +1 -0
  568. package/dist/telemetry/generated/paperclip-telemetry.d.ts +406 -0
  569. package/dist/telemetry/generated/paperclip-telemetry.d.ts.map +1 -0
  570. package/dist/telemetry/generated/paperclip-telemetry.js +297 -0
  571. package/dist/telemetry/generated/paperclip-telemetry.js.map +1 -0
  572. package/dist/telemetry/index.d.ts +10 -0
  573. package/dist/telemetry/index.d.ts.map +1 -0
  574. package/dist/telemetry/index.js +6 -0
  575. package/dist/telemetry/index.js.map +1 -0
  576. package/dist/telemetry/proposed-connector-events.test.d.ts +2 -0
  577. package/dist/telemetry/proposed-connector-events.test.d.ts.map +1 -0
  578. package/dist/telemetry/proposed-connector-events.test.js +96 -0
  579. package/dist/telemetry/proposed-connector-events.test.js.map +1 -0
  580. package/dist/telemetry/readme-contract.test.d.ts +2 -0
  581. package/dist/telemetry/readme-contract.test.d.ts.map +1 -0
  582. package/dist/telemetry/readme-contract.test.js +17 -0
  583. package/dist/telemetry/readme-contract.test.js.map +1 -0
  584. package/dist/telemetry/retention.d.ts +44 -0
  585. package/dist/telemetry/retention.d.ts.map +1 -0
  586. package/dist/telemetry/retention.js +46 -0
  587. package/dist/telemetry/retention.js.map +1 -0
  588. package/dist/telemetry/retention.test.d.ts +2 -0
  589. package/dist/telemetry/retention.test.d.ts.map +1 -0
  590. package/dist/telemetry/retention.test.js +20 -0
  591. package/dist/telemetry/retention.test.js.map +1 -0
  592. package/dist/telemetry/state.d.ts +3 -0
  593. package/dist/telemetry/state.d.ts.map +1 -0
  594. package/dist/telemetry/state.js +28 -0
  595. package/dist/telemetry/state.js.map +1 -0
  596. package/dist/telemetry/types.d.ts +62 -0
  597. package/dist/telemetry/types.d.ts.map +1 -0
  598. package/dist/telemetry/types.js +2 -0
  599. package/dist/telemetry/types.js.map +1 -0
  600. package/dist/trust-policy.d.ts +68 -0
  601. package/dist/trust-policy.d.ts.map +1 -0
  602. package/dist/trust-policy.js +11 -0
  603. package/dist/trust-policy.js.map +1 -0
  604. package/dist/types/access.d.ts +142 -0
  605. package/dist/types/access.d.ts.map +1 -0
  606. package/dist/types/access.js +2 -0
  607. package/dist/types/access.js.map +1 -0
  608. package/dist/types/activity.d.ts +15 -0
  609. package/dist/types/activity.d.ts.map +1 -0
  610. package/dist/types/activity.js +2 -0
  611. package/dist/types/activity.js.map +1 -0
  612. package/dist/types/adapter-registry.d.ts +31 -0
  613. package/dist/types/adapter-registry.d.ts.map +1 -0
  614. package/dist/types/adapter-registry.js +2 -0
  615. package/dist/types/adapter-registry.js.map +1 -0
  616. package/dist/types/adapter-skills.d.ts +38 -0
  617. package/dist/types/adapter-skills.d.ts.map +1 -0
  618. package/dist/types/adapter-skills.js +2 -0
  619. package/dist/types/adapter-skills.js.map +1 -0
  620. package/dist/types/agent.adapter-auth-session.test.d.ts +2 -0
  621. package/dist/types/agent.adapter-auth-session.test.d.ts.map +1 -0
  622. package/dist/types/agent.adapter-auth-session.test.js +103 -0
  623. package/dist/types/agent.adapter-auth-session.test.js.map +1 -0
  624. package/dist/types/agent.d.ts +194 -0
  625. package/dist/types/agent.d.ts.map +1 -0
  626. package/dist/types/agent.js +51 -0
  627. package/dist/types/agent.js.map +1 -0
  628. package/dist/types/app-definition.d.ts +153 -0
  629. package/dist/types/app-definition.d.ts.map +1 -0
  630. package/dist/types/app-definition.js +2 -0
  631. package/dist/types/app-definition.js.map +1 -0
  632. package/dist/types/approval.d.ts +26 -0
  633. package/dist/types/approval.d.ts.map +1 -0
  634. package/dist/types/approval.js +2 -0
  635. package/dist/types/approval.js.map +1 -0
  636. package/dist/types/artifact.d.ts +52 -0
  637. package/dist/types/artifact.d.ts.map +1 -0
  638. package/dist/types/artifact.js +2 -0
  639. package/dist/types/artifact.js.map +1 -0
  640. package/dist/types/asset.d.ts +16 -0
  641. package/dist/types/asset.d.ts.map +1 -0
  642. package/dist/types/asset.js +2 -0
  643. package/dist/types/asset.js.map +1 -0
  644. package/dist/types/attention.d.ts +222 -0
  645. package/dist/types/attention.d.ts.map +1 -0
  646. package/dist/types/attention.js +15 -0
  647. package/dist/types/attention.js.map +1 -0
  648. package/dist/types/budget.d.ts +86 -0
  649. package/dist/types/budget.d.ts.map +1 -0
  650. package/dist/types/budget.js +2 -0
  651. package/dist/types/budget.js.map +1 -0
  652. package/dist/types/chat-channels.d.ts +402 -0
  653. package/dist/types/chat-channels.d.ts.map +1 -0
  654. package/dist/types/chat-channels.js +105 -0
  655. package/dist/types/chat-channels.js.map +1 -0
  656. package/dist/types/chat-github.d.ts +123 -0
  657. package/dist/types/chat-github.d.ts.map +1 -0
  658. package/dist/types/chat-github.js +55 -0
  659. package/dist/types/chat-github.js.map +1 -0
  660. package/dist/types/company-portability.d.ts +408 -0
  661. package/dist/types/company-portability.d.ts.map +1 -0
  662. package/dist/types/company-portability.js +2 -0
  663. package/dist/types/company-portability.js.map +1 -0
  664. package/dist/types/company-skill.d.ts +623 -0
  665. package/dist/types/company-skill.d.ts.map +1 -0
  666. package/dist/types/company-skill.js +2 -0
  667. package/dist/types/company-skill.js.map +1 -0
  668. package/dist/types/company.d.ts +30 -0
  669. package/dist/types/company.d.ts.map +1 -0
  670. package/dist/types/company.js +2 -0
  671. package/dist/types/company.js.map +1 -0
  672. package/dist/types/connection-intent.d.ts +53 -0
  673. package/dist/types/connection-intent.d.ts.map +1 -0
  674. package/dist/types/connection-intent.js +2 -0
  675. package/dist/types/connection-intent.js.map +1 -0
  676. package/dist/types/cost.d.ts +126 -0
  677. package/dist/types/cost.d.ts.map +1 -0
  678. package/dist/types/cost.js +2 -0
  679. package/dist/types/cost.js.map +1 -0
  680. package/dist/types/dashboard.d.ts +54 -0
  681. package/dist/types/dashboard.d.ts.map +1 -0
  682. package/dist/types/dashboard.js +2 -0
  683. package/dist/types/dashboard.js.map +1 -0
  684. package/dist/types/decision-queue.d.ts +55 -0
  685. package/dist/types/decision-queue.d.ts.map +1 -0
  686. package/dist/types/decision-queue.js +2 -0
  687. package/dist/types/decision-queue.js.map +1 -0
  688. package/dist/types/decision-training.d.ts +65 -0
  689. package/dist/types/decision-training.d.ts.map +1 -0
  690. package/dist/types/decision-training.js +2 -0
  691. package/dist/types/decision-training.js.map +1 -0
  692. package/dist/types/decision.d.ts +100 -0
  693. package/dist/types/decision.d.ts.map +1 -0
  694. package/dist/types/decision.js +15 -0
  695. package/dist/types/decision.js.map +1 -0
  696. package/dist/types/document-annotation.d.ts +223 -0
  697. package/dist/types/document-annotation.d.ts.map +1 -0
  698. package/dist/types/document-annotation.js +2 -0
  699. package/dist/types/document-annotation.js.map +1 -0
  700. package/dist/types/email.d.ts +50 -0
  701. package/dist/types/email.d.ts.map +1 -0
  702. package/dist/types/email.js +2 -0
  703. package/dist/types/email.js.map +1 -0
  704. package/dist/types/environment.d.ts +150 -0
  705. package/dist/types/environment.d.ts.map +1 -0
  706. package/dist/types/environment.js +2 -0
  707. package/dist/types/environment.js.map +1 -0
  708. package/dist/types/execution-continuation.d.ts +67 -0
  709. package/dist/types/execution-continuation.d.ts.map +1 -0
  710. package/dist/types/execution-continuation.js +2 -0
  711. package/dist/types/execution-continuation.js.map +1 -0
  712. package/dist/types/execution-projection.d.ts +33 -0
  713. package/dist/types/execution-projection.d.ts.map +1 -0
  714. package/dist/types/execution-projection.js +24 -0
  715. package/dist/types/execution-projection.js.map +1 -0
  716. package/dist/types/external-object.d.ts +84 -0
  717. package/dist/types/external-object.d.ts.map +1 -0
  718. package/dist/types/external-object.js +2 -0
  719. package/dist/types/external-object.js.map +1 -0
  720. package/dist/types/feedback.d.ts +95 -0
  721. package/dist/types/feedback.d.ts.map +1 -0
  722. package/dist/types/feedback.js +7 -0
  723. package/dist/types/feedback.js.map +1 -0
  724. package/dist/types/finance.d.ts +57 -0
  725. package/dist/types/finance.d.ts.map +1 -0
  726. package/dist/types/finance.js +2 -0
  727. package/dist/types/finance.js.map +1 -0
  728. package/dist/types/folder.d.ts +52 -0
  729. package/dist/types/folder.d.ts.map +1 -0
  730. package/dist/types/folder.js +2 -0
  731. package/dist/types/folder.js.map +1 -0
  732. package/dist/types/goal.d.ts +14 -0
  733. package/dist/types/goal.d.ts.map +1 -0
  734. package/dist/types/goal.js +2 -0
  735. package/dist/types/goal.js.map +1 -0
  736. package/dist/types/heartbeat.d.ts +325 -0
  737. package/dist/types/heartbeat.d.ts.map +1 -0
  738. package/dist/types/heartbeat.js +2 -0
  739. package/dist/types/heartbeat.js.map +1 -0
  740. package/dist/types/inbox-agent-policy.d.ts +12 -0
  741. package/dist/types/inbox-agent-policy.d.ts.map +1 -0
  742. package/dist/types/inbox-agent-policy.js +2 -0
  743. package/dist/types/inbox-agent-policy.js.map +1 -0
  744. package/dist/types/inbox-dismissal.d.ts +13 -0
  745. package/dist/types/inbox-dismissal.d.ts.map +1 -0
  746. package/dist/types/inbox-dismissal.js +2 -0
  747. package/dist/types/inbox-dismissal.js.map +1 -0
  748. package/dist/types/index.d.ts +69 -0
  749. package/dist/types/index.d.ts.map +1 -0
  750. package/dist/types/index.js +17 -0
  751. package/dist/types/index.js.map +1 -0
  752. package/dist/types/instance.d.ts +170 -0
  753. package/dist/types/instance.d.ts.map +1 -0
  754. package/dist/types/instance.js +10 -0
  755. package/dist/types/instance.js.map +1 -0
  756. package/dist/types/issue-tree-control.d.ts +109 -0
  757. package/dist/types/issue-tree-control.d.ts.map +1 -0
  758. package/dist/types/issue-tree-control.js +2 -0
  759. package/dist/types/issue-tree-control.js.map +1 -0
  760. package/dist/types/issue.d.ts +1312 -0
  761. package/dist/types/issue.d.ts.map +1 -0
  762. package/dist/types/issue.js +2 -0
  763. package/dist/types/issue.js.map +1 -0
  764. package/dist/types/live.d.ts +9 -0
  765. package/dist/types/live.d.ts.map +1 -0
  766. package/dist/types/live.js +2 -0
  767. package/dist/types/live.js.map +1 -0
  768. package/dist/types/native-finalization.d.ts +29 -0
  769. package/dist/types/native-finalization.d.ts.map +1 -0
  770. package/dist/types/native-finalization.js +2 -0
  771. package/dist/types/native-finalization.js.map +1 -0
  772. package/dist/types/pipeline.d.ts +268 -0
  773. package/dist/types/pipeline.d.ts.map +1 -0
  774. package/dist/types/pipeline.js +2 -0
  775. package/dist/types/pipeline.js.map +1 -0
  776. package/dist/types/plugin.d.ts +894 -0
  777. package/dist/types/plugin.d.ts.map +1 -0
  778. package/dist/types/plugin.js +2 -0
  779. package/dist/types/plugin.js.map +1 -0
  780. package/dist/types/project.d.ts +116 -0
  781. package/dist/types/project.d.ts.map +1 -0
  782. package/dist/types/project.js +2 -0
  783. package/dist/types/project.js.map +1 -0
  784. package/dist/types/quota.d.ts +28 -0
  785. package/dist/types/quota.d.ts.map +1 -0
  786. package/dist/types/quota.js +2 -0
  787. package/dist/types/quota.js.map +1 -0
  788. package/dist/types/resource-memberships.d.ts +26 -0
  789. package/dist/types/resource-memberships.d.ts.map +1 -0
  790. package/dist/types/resource-memberships.js +2 -0
  791. package/dist/types/resource-memberships.js.map +1 -0
  792. package/dist/types/routine.d.ts +237 -0
  793. package/dist/types/routine.d.ts.map +1 -0
  794. package/dist/types/routine.js +2 -0
  795. package/dist/types/routine.js.map +1 -0
  796. package/dist/types/runtime-exposure.d.ts +74 -0
  797. package/dist/types/runtime-exposure.d.ts.map +1 -0
  798. package/dist/types/runtime-exposure.js +12 -0
  799. package/dist/types/runtime-exposure.js.map +1 -0
  800. package/dist/types/search.d.ts +135 -0
  801. package/dist/types/search.d.ts.map +1 -0
  802. package/dist/types/search.js +6 -0
  803. package/dist/types/search.js.map +1 -0
  804. package/dist/types/secrets.d.ts +374 -0
  805. package/dist/types/secrets.d.ts.map +1 -0
  806. package/dist/types/secrets.js +2 -0
  807. package/dist/types/secrets.js.map +1 -0
  808. package/dist/types/server-info.d.ts +27 -0
  809. package/dist/types/server-info.d.ts.map +1 -0
  810. package/dist/types/server-info.js +2 -0
  811. package/dist/types/server-info.js.map +1 -0
  812. package/dist/types/sidebar-badges.d.ts +7 -0
  813. package/dist/types/sidebar-badges.d.ts.map +1 -0
  814. package/dist/types/sidebar-badges.js +2 -0
  815. package/dist/types/sidebar-badges.js.map +1 -0
  816. package/dist/types/sidebar-preferences.d.ts +5 -0
  817. package/dist/types/sidebar-preferences.d.ts.map +1 -0
  818. package/dist/types/sidebar-preferences.js +2 -0
  819. package/dist/types/sidebar-preferences.js.map +1 -0
  820. package/dist/types/smoke-lab.d.ts +41 -0
  821. package/dist/types/smoke-lab.d.ts.map +1 -0
  822. package/dist/types/smoke-lab.js +5 -0
  823. package/dist/types/smoke-lab.js.map +1 -0
  824. package/dist/types/summary-slot.d.ts +91 -0
  825. package/dist/types/summary-slot.d.ts.map +1 -0
  826. package/dist/types/summary-slot.js +2 -0
  827. package/dist/types/summary-slot.js.map +1 -0
  828. package/dist/types/teams-catalog.d.ts +163 -0
  829. package/dist/types/teams-catalog.d.ts.map +1 -0
  830. package/dist/types/teams-catalog.js +2 -0
  831. package/dist/types/teams-catalog.js.map +1 -0
  832. package/dist/types/tool-access.d.ts +1515 -0
  833. package/dist/types/tool-access.d.ts.map +1 -0
  834. package/dist/types/tool-access.js +13 -0
  835. package/dist/types/tool-access.js.map +1 -0
  836. package/dist/types/user-profile.d.ts +81 -0
  837. package/dist/types/user-profile.d.ts.map +1 -0
  838. package/dist/types/user-profile.js +2 -0
  839. package/dist/types/user-profile.js.map +1 -0
  840. package/dist/types/work-product.d.ts +57 -0
  841. package/dist/types/work-product.d.ts.map +1 -0
  842. package/dist/types/work-product.js +2 -0
  843. package/dist/types/work-product.js.map +1 -0
  844. package/dist/types/work-timeline.d.ts +77 -0
  845. package/dist/types/work-timeline.d.ts.map +1 -0
  846. package/dist/types/work-timeline.js +2 -0
  847. package/dist/types/work-timeline.js.map +1 -0
  848. package/dist/types/workspace-file-resource.d.ts +138 -0
  849. package/dist/types/workspace-file-resource.d.ts.map +1 -0
  850. package/dist/types/workspace-file-resource.js +2 -0
  851. package/dist/types/workspace-file-resource.js.map +1 -0
  852. package/dist/types/workspace-operation.d.ts +27 -0
  853. package/dist/types/workspace-operation.d.ts.map +1 -0
  854. package/dist/types/workspace-operation.js +2 -0
  855. package/dist/types/workspace-operation.js.map +1 -0
  856. package/dist/types/workspace-readiness.d.ts +74 -0
  857. package/dist/types/workspace-readiness.d.ts.map +1 -0
  858. package/dist/types/workspace-readiness.js +28 -0
  859. package/dist/types/workspace-readiness.js.map +1 -0
  860. package/dist/types/workspace-runtime.d.ts +365 -0
  861. package/dist/types/workspace-runtime.d.ts.map +1 -0
  862. package/dist/types/workspace-runtime.js +2 -0
  863. package/dist/types/workspace-runtime.js.map +1 -0
  864. package/dist/validators/access.d.ts +215 -0
  865. package/dist/validators/access.d.ts.map +1 -0
  866. package/dist/validators/access.js +146 -0
  867. package/dist/validators/access.js.map +1 -0
  868. package/dist/validators/access.test.d.ts +2 -0
  869. package/dist/validators/access.test.d.ts.map +1 -0
  870. package/dist/validators/access.test.js +166 -0
  871. package/dist/validators/access.test.js.map +1 -0
  872. package/dist/validators/adapter-auth-session.d.ts +118 -0
  873. package/dist/validators/adapter-auth-session.d.ts.map +1 -0
  874. package/dist/validators/adapter-auth-session.js +37 -0
  875. package/dist/validators/adapter-auth-session.js.map +1 -0
  876. package/dist/validators/adapter-registry.d.ts +21 -0
  877. package/dist/validators/adapter-registry.d.ts.map +1 -0
  878. package/dist/validators/adapter-registry.js +14 -0
  879. package/dist/validators/adapter-registry.js.map +1 -0
  880. package/dist/validators/adapter-registry.test.d.ts +2 -0
  881. package/dist/validators/adapter-registry.test.d.ts.map +1 -0
  882. package/dist/validators/adapter-registry.test.js +31 -0
  883. package/dist/validators/adapter-registry.test.js.map +1 -0
  884. package/dist/validators/adapter-skills.d.ts +114 -0
  885. package/dist/validators/adapter-skills.d.ts.map +1 -0
  886. package/dist/validators/adapter-skills.js +62 -0
  887. package/dist/validators/adapter-skills.js.map +1 -0
  888. package/dist/validators/agent.d.ts +884 -0
  889. package/dist/validators/agent.d.ts.map +1 -0
  890. package/dist/validators/agent.js +224 -0
  891. package/dist/validators/agent.js.map +1 -0
  892. package/dist/validators/app-definition.d.ts +965 -0
  893. package/dist/validators/app-definition.d.ts.map +1 -0
  894. package/dist/validators/app-definition.js +39 -0
  895. package/dist/validators/app-definition.js.map +1 -0
  896. package/dist/validators/approval.d.ts +30 -0
  897. package/dist/validators/approval.d.ts.map +1 -0
  898. package/dist/validators/approval.js +22 -0
  899. package/dist/validators/approval.js.map +1 -0
  900. package/dist/validators/approval.test.d.ts +2 -0
  901. package/dist/validators/approval.test.d.ts.map +1 -0
  902. package/dist/validators/approval.test.js +25 -0
  903. package/dist/validators/approval.test.js.map +1 -0
  904. package/dist/validators/artifact.d.ts +305 -0
  905. package/dist/validators/artifact.d.ts.map +1 -0
  906. package/dist/validators/artifact.js +71 -0
  907. package/dist/validators/artifact.js.map +1 -0
  908. package/dist/validators/artifact.test.d.ts +2 -0
  909. package/dist/validators/artifact.test.d.ts.map +1 -0
  910. package/dist/validators/artifact.test.js +76 -0
  911. package/dist/validators/artifact.test.js.map +1 -0
  912. package/dist/validators/asset.d.ts +21 -0
  913. package/dist/validators/asset.d.ts.map +1 -0
  914. package/dist/validators/asset.js +70 -0
  915. package/dist/validators/asset.js.map +1 -0
  916. package/dist/validators/asset.test.d.ts +2 -0
  917. package/dist/validators/asset.test.d.ts.map +1 -0
  918. package/dist/validators/asset.test.js +130 -0
  919. package/dist/validators/asset.test.js.map +1 -0
  920. package/dist/validators/budget.d.ts +32 -0
  921. package/dist/validators/budget.d.ts.map +1 -0
  922. package/dist/validators/budget.js +27 -0
  923. package/dist/validators/budget.js.map +1 -0
  924. package/dist/validators/chat-channels.d.ts +215 -0
  925. package/dist/validators/chat-channels.d.ts.map +1 -0
  926. package/dist/validators/chat-channels.js +181 -0
  927. package/dist/validators/chat-channels.js.map +1 -0
  928. package/dist/validators/chat-channels.test.d.ts +2 -0
  929. package/dist/validators/chat-channels.test.d.ts.map +1 -0
  930. package/dist/validators/chat-channels.test.js +84 -0
  931. package/dist/validators/chat-channels.test.js.map +1 -0
  932. package/dist/validators/chat-github.d.ts +315 -0
  933. package/dist/validators/chat-github.d.ts.map +1 -0
  934. package/dist/validators/chat-github.js +149 -0
  935. package/dist/validators/chat-github.js.map +1 -0
  936. package/dist/validators/claude-setup-token-session.d.ts +160 -0
  937. package/dist/validators/claude-setup-token-session.d.ts.map +1 -0
  938. package/dist/validators/claude-setup-token-session.js +131 -0
  939. package/dist/validators/claude-setup-token-session.js.map +1 -0
  940. package/dist/validators/claude-setup-token-session.test.d.ts +2 -0
  941. package/dist/validators/claude-setup-token-session.test.d.ts.map +1 -0
  942. package/dist/validators/claude-setup-token-session.test.js +107 -0
  943. package/dist/validators/claude-setup-token-session.test.js.map +1 -0
  944. package/dist/validators/company-portability.d.ts +913 -0
  945. package/dist/validators/company-portability.d.ts.map +1 -0
  946. package/dist/validators/company-portability.js +301 -0
  947. package/dist/validators/company-portability.js.map +1 -0
  948. package/dist/validators/company-skill.d.ts +1450 -0
  949. package/dist/validators/company-skill.d.ts.map +1 -0
  950. package/dist/validators/company-skill.js +520 -0
  951. package/dist/validators/company-skill.js.map +1 -0
  952. package/dist/validators/company-skill.test.d.ts +2 -0
  953. package/dist/validators/company-skill.test.d.ts.map +1 -0
  954. package/dist/validators/company-skill.test.js +165 -0
  955. package/dist/validators/company-skill.test.js.map +1 -0
  956. package/dist/validators/company.d.ts +198 -0
  957. package/dist/validators/company.d.ts.map +1 -0
  958. package/dist/validators/company.js +46 -0
  959. package/dist/validators/company.js.map +1 -0
  960. package/dist/validators/company.test.d.ts +2 -0
  961. package/dist/validators/company.test.d.ts.map +1 -0
  962. package/dist/validators/company.test.js +60 -0
  963. package/dist/validators/company.test.js.map +1 -0
  964. package/dist/validators/connection-intent.d.ts +18 -0
  965. package/dist/validators/connection-intent.d.ts.map +1 -0
  966. package/dist/validators/connection-intent.js +14 -0
  967. package/dist/validators/connection-intent.js.map +1 -0
  968. package/dist/validators/connection-intent.test.d.ts +2 -0
  969. package/dist/validators/connection-intent.test.d.ts.map +1 -0
  970. package/dist/validators/connection-intent.test.js +55 -0
  971. package/dist/validators/connection-intent.test.js.map +1 -0
  972. package/dist/validators/cost.d.ts +69 -0
  973. package/dist/validators/cost.d.ts.map +1 -0
  974. package/dist/validators/cost.js +27 -0
  975. package/dist/validators/cost.js.map +1 -0
  976. package/dist/validators/decision-queue.d.ts +90 -0
  977. package/dist/validators/decision-queue.d.ts.map +1 -0
  978. package/dist/validators/decision-queue.js +60 -0
  979. package/dist/validators/decision-queue.js.map +1 -0
  980. package/dist/validators/decision.d.ts +403 -0
  981. package/dist/validators/decision.d.ts.map +1 -0
  982. package/dist/validators/decision.js +130 -0
  983. package/dist/validators/decision.js.map +1 -0
  984. package/dist/validators/document-annotation.d.ts +74 -0
  985. package/dist/validators/document-annotation.d.ts.map +1 -0
  986. package/dist/validators/document-annotation.js +53 -0
  987. package/dist/validators/document-annotation.js.map +1 -0
  988. package/dist/validators/email.d.ts +43 -0
  989. package/dist/validators/email.d.ts.map +1 -0
  990. package/dist/validators/email.js +70 -0
  991. package/dist/validators/email.js.map +1 -0
  992. package/dist/validators/environment-custom-images.d.ts +140 -0
  993. package/dist/validators/environment-custom-images.d.ts.map +1 -0
  994. package/dist/validators/environment-custom-images.js +80 -0
  995. package/dist/validators/environment-custom-images.js.map +1 -0
  996. package/dist/validators/environment.d.ts +129 -0
  997. package/dist/validators/environment.d.ts.map +1 -0
  998. package/dist/validators/environment.js +35 -0
  999. package/dist/validators/environment.js.map +1 -0
  1000. package/dist/validators/execution-workspace.d.ts +304 -0
  1001. package/dist/validators/execution-workspace.d.ts.map +1 -0
  1002. package/dist/validators/execution-workspace.js +161 -0
  1003. package/dist/validators/execution-workspace.js.map +1 -0
  1004. package/dist/validators/external-object.d.ts +70 -0
  1005. package/dist/validators/external-object.d.ts.map +1 -0
  1006. package/dist/validators/external-object.js +25 -0
  1007. package/dist/validators/external-object.js.map +1 -0
  1008. package/dist/validators/feedback.d.ts +35 -0
  1009. package/dist/validators/feedback.d.ts.map +1 -0
  1010. package/dist/validators/feedback.js +14 -0
  1011. package/dist/validators/feedback.js.map +1 -0
  1012. package/dist/validators/finance.d.ts +126 -0
  1013. package/dist/validators/finance.d.ts.map +1 -0
  1014. package/dist/validators/finance.js +32 -0
  1015. package/dist/validators/finance.js.map +1 -0
  1016. package/dist/validators/folder.d.ts +108 -0
  1017. package/dist/validators/folder.d.ts.map +1 -0
  1018. package/dist/validators/folder.js +56 -0
  1019. package/dist/validators/folder.js.map +1 -0
  1020. package/dist/validators/goal.d.ts +40 -0
  1021. package/dist/validators/goal.d.ts.map +1 -0
  1022. package/dist/validators/goal.js +13 -0
  1023. package/dist/validators/goal.js.map +1 -0
  1024. package/dist/validators/inbox-agent-policy.d.ts +16 -0
  1025. package/dist/validators/inbox-agent-policy.d.ts.map +1 -0
  1026. package/dist/validators/inbox-agent-policy.js +15 -0
  1027. package/dist/validators/inbox-agent-policy.js.map +1 -0
  1028. package/dist/validators/index.d.ts +50 -0
  1029. package/dist/validators/index.d.ts.map +1 -0
  1030. package/dist/validators/index.js +50 -0
  1031. package/dist/validators/index.js.map +1 -0
  1032. package/dist/validators/instance.d.ts +200 -0
  1033. package/dist/validators/instance.d.ts.map +1 -0
  1034. package/dist/validators/instance.js +112 -0
  1035. package/dist/validators/instance.js.map +1 -0
  1036. package/dist/validators/instance.test.d.ts +2 -0
  1037. package/dist/validators/instance.test.d.ts.map +1 -0
  1038. package/dist/validators/instance.test.js +137 -0
  1039. package/dist/validators/instance.test.js.map +1 -0
  1040. package/dist/validators/issue-tree-control.d.ts +61 -0
  1041. package/dist/validators/issue-tree-control.d.ts.map +1 -0
  1042. package/dist/validators/issue-tree-control.js +31 -0
  1043. package/dist/validators/issue-tree-control.js.map +1 -0
  1044. package/dist/validators/issue.d.ts +3028 -0
  1045. package/dist/validators/issue.d.ts.map +1 -0
  1046. package/dist/validators/issue.js +1824 -0
  1047. package/dist/validators/issue.js.map +1 -0
  1048. package/dist/validators/issue.test.d.ts +2 -0
  1049. package/dist/validators/issue.test.d.ts.map +1 -0
  1050. package/dist/validators/issue.test.js +454 -0
  1051. package/dist/validators/issue.test.js.map +1 -0
  1052. package/dist/validators/native-finalization.d.ts +91 -0
  1053. package/dist/validators/native-finalization.d.ts.map +1 -0
  1054. package/dist/validators/native-finalization.js +33 -0
  1055. package/dist/validators/native-finalization.js.map +1 -0
  1056. package/dist/validators/native-finalization.test.d.ts +2 -0
  1057. package/dist/validators/native-finalization.test.d.ts.map +1 -0
  1058. package/dist/validators/native-finalization.test.js +52 -0
  1059. package/dist/validators/native-finalization.test.js.map +1 -0
  1060. package/dist/validators/onboarding-seed.d.ts +30 -0
  1061. package/dist/validators/onboarding-seed.d.ts.map +1 -0
  1062. package/dist/validators/onboarding-seed.js +33 -0
  1063. package/dist/validators/onboarding-seed.js.map +1 -0
  1064. package/dist/validators/partial.d.ts +4 -0
  1065. package/dist/validators/partial.d.ts.map +1 -0
  1066. package/dist/validators/partial.js +35 -0
  1067. package/dist/validators/partial.js.map +1 -0
  1068. package/dist/validators/pipeline.d.ts +358 -0
  1069. package/dist/validators/pipeline.d.ts.map +1 -0
  1070. package/dist/validators/pipeline.js +133 -0
  1071. package/dist/validators/pipeline.js.map +1 -0
  1072. package/dist/validators/plugin.d.ts +1257 -0
  1073. package/dist/validators/plugin.d.ts.map +1 -0
  1074. package/dist/validators/plugin.js +1067 -0
  1075. package/dist/validators/plugin.js.map +1 -0
  1076. package/dist/validators/plugin.test.d.ts +2 -0
  1077. package/dist/validators/plugin.test.d.ts.map +1 -0
  1078. package/dist/validators/plugin.test.js +352 -0
  1079. package/dist/validators/plugin.test.js.map +1 -0
  1080. package/dist/validators/project.d.ts +510 -0
  1081. package/dist/validators/project.d.ts.map +1 -0
  1082. package/dist/validators/project.js +111 -0
  1083. package/dist/validators/project.js.map +1 -0
  1084. package/dist/validators/provider-trace.d.ts +135 -0
  1085. package/dist/validators/provider-trace.d.ts.map +1 -0
  1086. package/dist/validators/provider-trace.js +108 -0
  1087. package/dist/validators/provider-trace.js.map +1 -0
  1088. package/dist/validators/resource-memberships.d.ts +18 -0
  1089. package/dist/validators/resource-memberships.d.ts.map +1 -0
  1090. package/dist/validators/resource-memberships.js +16 -0
  1091. package/dist/validators/resource-memberships.js.map +1 -0
  1092. package/dist/validators/routine.d.ts +566 -0
  1093. package/dist/validators/routine.d.ts.map +1 -0
  1094. package/dist/validators/routine.js +151 -0
  1095. package/dist/validators/routine.js.map +1 -0
  1096. package/dist/validators/routine.test.d.ts +2 -0
  1097. package/dist/validators/routine.test.d.ts.map +1 -0
  1098. package/dist/validators/routine.test.js +115 -0
  1099. package/dist/validators/routine.test.js.map +1 -0
  1100. package/dist/validators/runtime-exposure.d.ts +100 -0
  1101. package/dist/validators/runtime-exposure.d.ts.map +1 -0
  1102. package/dist/validators/runtime-exposure.js +138 -0
  1103. package/dist/validators/runtime-exposure.js.map +1 -0
  1104. package/dist/validators/runtime-exposure.test.d.ts +2 -0
  1105. package/dist/validators/runtime-exposure.test.d.ts.map +1 -0
  1106. package/dist/validators/runtime-exposure.test.js +112 -0
  1107. package/dist/validators/runtime-exposure.test.js.map +1 -0
  1108. package/dist/validators/search.d.ts +40 -0
  1109. package/dist/validators/search.d.ts.map +1 -0
  1110. package/dist/validators/search.js +233 -0
  1111. package/dist/validators/search.js.map +1 -0
  1112. package/dist/validators/secret.d.ts +359 -0
  1113. package/dist/validators/secret.d.ts.map +1 -0
  1114. package/dist/validators/secret.js +344 -0
  1115. package/dist/validators/secret.js.map +1 -0
  1116. package/dist/validators/secret.test.d.ts +2 -0
  1117. package/dist/validators/secret.test.d.ts.map +1 -0
  1118. package/dist/validators/secret.test.js +208 -0
  1119. package/dist/validators/secret.test.js.map +1 -0
  1120. package/dist/validators/sidebar-preferences.d.ts +10 -0
  1121. package/dist/validators/sidebar-preferences.d.ts.map +1 -0
  1122. package/dist/validators/sidebar-preferences.js +10 -0
  1123. package/dist/validators/sidebar-preferences.js.map +1 -0
  1124. package/dist/validators/skill-policy.d.ts +248 -0
  1125. package/dist/validators/skill-policy.d.ts.map +1 -0
  1126. package/dist/validators/skill-policy.js +123 -0
  1127. package/dist/validators/skill-policy.js.map +1 -0
  1128. package/dist/validators/skill-policy.test.d.ts +2 -0
  1129. package/dist/validators/skill-policy.test.d.ts.map +1 -0
  1130. package/dist/validators/skill-policy.test.js +92 -0
  1131. package/dist/validators/skill-policy.test.js.map +1 -0
  1132. package/dist/validators/smoke-lab.d.ts +67 -0
  1133. package/dist/validators/smoke-lab.d.ts.map +1 -0
  1134. package/dist/validators/smoke-lab.js +23 -0
  1135. package/dist/validators/smoke-lab.js.map +1 -0
  1136. package/dist/validators/status-card.d.ts +329 -0
  1137. package/dist/validators/status-card.d.ts.map +1 -0
  1138. package/dist/validators/status-card.js +166 -0
  1139. package/dist/validators/status-card.js.map +1 -0
  1140. package/dist/validators/status-card.test.d.ts +2 -0
  1141. package/dist/validators/status-card.test.d.ts.map +1 -0
  1142. package/dist/validators/status-card.test.js +23 -0
  1143. package/dist/validators/status-card.test.js.map +1 -0
  1144. package/dist/validators/summary-slot.d.ts +46 -0
  1145. package/dist/validators/summary-slot.d.ts.map +1 -0
  1146. package/dist/validators/summary-slot.js +51 -0
  1147. package/dist/validators/summary-slot.js.map +1 -0
  1148. package/dist/validators/teams-catalog.d.ts +322 -0
  1149. package/dist/validators/teams-catalog.d.ts.map +1 -0
  1150. package/dist/validators/teams-catalog.js +147 -0
  1151. package/dist/validators/teams-catalog.js.map +1 -0
  1152. package/dist/validators/text.d.ts +4 -0
  1153. package/dist/validators/text.d.ts.map +1 -0
  1154. package/dist/validators/text.js +9 -0
  1155. package/dist/validators/text.js.map +1 -0
  1156. package/dist/validators/tool-access.d.ts +1925 -0
  1157. package/dist/validators/tool-access.d.ts.map +1 -0
  1158. package/dist/validators/tool-access.js +819 -0
  1159. package/dist/validators/tool-access.js.map +1 -0
  1160. package/dist/validators/tool-access.test.d.ts +2 -0
  1161. package/dist/validators/tool-access.test.d.ts.map +1 -0
  1162. package/dist/validators/tool-access.test.js +172 -0
  1163. package/dist/validators/tool-access.test.js.map +1 -0
  1164. package/dist/validators/trust-policy.d.ts +120 -0
  1165. package/dist/validators/trust-policy.d.ts.map +1 -0
  1166. package/dist/validators/trust-policy.js +59 -0
  1167. package/dist/validators/trust-policy.js.map +1 -0
  1168. package/dist/validators/trust-policy.test.d.ts +2 -0
  1169. package/dist/validators/trust-policy.test.d.ts.map +1 -0
  1170. package/dist/validators/trust-policy.test.js +26 -0
  1171. package/dist/validators/trust-policy.test.js.map +1 -0
  1172. package/dist/validators/work-product.d.ts +178 -0
  1173. package/dist/validators/work-product.d.ts.map +1 -0
  1174. package/dist/validators/work-product.js +88 -0
  1175. package/dist/validators/work-product.js.map +1 -0
  1176. package/dist/validators/work-product.test.d.ts +2 -0
  1177. package/dist/validators/work-product.test.d.ts.map +1 -0
  1178. package/dist/validators/work-product.test.js +38 -0
  1179. package/dist/validators/work-product.test.js.map +1 -0
  1180. package/dist/validators/workspace-file-resource.d.ts +268 -0
  1181. package/dist/validators/workspace-file-resource.d.ts.map +1 -0
  1182. package/dist/validators/workspace-file-resource.js +116 -0
  1183. package/dist/validators/workspace-file-resource.js.map +1 -0
  1184. package/dist/work-product.test.d.ts +2 -0
  1185. package/dist/work-product.test.d.ts.map +1 -0
  1186. package/dist/work-product.test.js +120 -0
  1187. package/dist/work-product.test.js.map +1 -0
  1188. package/dist/workspace-commands.d.ts +9 -0
  1189. package/dist/workspace-commands.d.ts.map +1 -0
  1190. package/dist/workspace-commands.js +177 -0
  1191. package/dist/workspace-commands.js.map +1 -0
  1192. package/dist/workspace-commands.test.d.ts +2 -0
  1193. package/dist/workspace-commands.test.d.ts.map +1 -0
  1194. package/dist/workspace-commands.test.js +155 -0
  1195. package/dist/workspace-commands.test.js.map +1 -0
  1196. package/dist/workspace-file-resource.test.d.ts +2 -0
  1197. package/dist/workspace-file-resource.test.d.ts.map +1 -0
  1198. package/dist/workspace-file-resource.test.js +52 -0
  1199. package/dist/workspace-file-resource.test.js.map +1 -0
  1200. package/dist/worktree-port-registry.d.ts +5 -0
  1201. package/dist/worktree-port-registry.d.ts.map +1 -0
  1202. package/dist/worktree-port-registry.js +382 -0
  1203. package/dist/worktree-port-registry.js.map +1 -0
  1204. package/dist/worktree-port-registry.test.d.ts +2 -0
  1205. package/dist/worktree-port-registry.test.d.ts.map +1 -0
  1206. package/dist/worktree-port-registry.test.js +118 -0
  1207. package/dist/worktree-port-registry.test.js.map +1 -0
  1208. package/dist/worktree-seed-source.d.ts +43 -0
  1209. package/dist/worktree-seed-source.d.ts.map +1 -0
  1210. package/dist/worktree-seed-source.js +180 -0
  1211. package/dist/worktree-seed-source.js.map +1 -0
  1212. package/dist/worktree-seed-source.test.d.ts +2 -0
  1213. package/dist/worktree-seed-source.test.d.ts.map +1 -0
  1214. package/dist/worktree-seed-source.test.js +166 -0
  1215. package/dist/worktree-seed-source.test.js.map +1 -0
  1216. package/package.json +54 -0
@@ -0,0 +1,66 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { buildExportFidelityWarnings, normalizeExportFidelityCounts, } from "./portability-fidelity.js";
3
+ const zeroCounts = {
4
+ labelDefinitions: 0,
5
+ issueLabelReferences: 0,
6
+ issueBlockerRelations: 0,
7
+ issueDocuments: 0,
8
+ issueWorkProducts: 0,
9
+ issueAttachments: 0,
10
+ approvals: 0,
11
+ costEvents: 0,
12
+ activityLogEntries: 0,
13
+ issueMonitors: 0,
14
+ };
15
+ describe("buildExportFidelityWarnings", () => {
16
+ it("returns no warnings when the export carries everything", () => {
17
+ expect(buildExportFidelityWarnings(zeroCounts)).toEqual([]);
18
+ });
19
+ it("emits no warnings for data the bundle now carries", () => {
20
+ expect(buildExportFidelityWarnings({
21
+ ...zeroCounts,
22
+ labelDefinitions: 2,
23
+ issueLabelReferences: 3,
24
+ issueBlockerRelations: 2,
25
+ issueDocuments: 1,
26
+ issueWorkProducts: 3,
27
+ issueAttachments: 4,
28
+ issueMonitors: 8,
29
+ })).toEqual([]);
30
+ });
31
+ it("emits one warning per unsupported data category with counts", () => {
32
+ const warnings = buildExportFidelityWarnings({
33
+ ...zeroCounts,
34
+ approvals: 5,
35
+ costEvents: 6,
36
+ activityLogEntries: 7,
37
+ });
38
+ expect(warnings.map((warning) => warning.code)).toEqual([
39
+ "approvals_not_exported",
40
+ "cost_history_not_exported",
41
+ "activity_history_not_exported",
42
+ ]);
43
+ expect(warnings.every((warning) => warning.severity === "warning")).toBe(true);
44
+ expect(warnings[0]?.message).toBe("5 approvals are not included in the export bundle.");
45
+ expect(warnings[1]?.message).toBe("6 cost events are not included in the export bundle.");
46
+ });
47
+ });
48
+ describe("normalizeExportFidelityCounts", () => {
49
+ it("round-trips a valid counts object", () => {
50
+ const counts = { ...zeroCounts, issueAttachments: 12 };
51
+ expect(normalizeExportFidelityCounts(counts)).toEqual(counts);
52
+ });
53
+ it("rejects non-objects, arrays, and missing keys", () => {
54
+ expect(normalizeExportFidelityCounts(null)).toBeNull();
55
+ expect(normalizeExportFidelityCounts([])).toBeNull();
56
+ expect(normalizeExportFidelityCounts("counts")).toBeNull();
57
+ const { issueMonitors: _dropped, ...partial } = zeroCounts;
58
+ expect(normalizeExportFidelityCounts(partial)).toBeNull();
59
+ });
60
+ it("rejects negative and non-finite values", () => {
61
+ expect(normalizeExportFidelityCounts({ ...zeroCounts, approvals: -1 })).toBeNull();
62
+ expect(normalizeExportFidelityCounts({ ...zeroCounts, approvals: Number.NaN })).toBeNull();
63
+ expect(normalizeExportFidelityCounts({ ...zeroCounts, approvals: Number.POSITIVE_INFINITY })).toBeNull();
64
+ });
65
+ });
66
+ //# sourceMappingURL=portability-fidelity.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portability-fidelity.test.js","sourceRoot":"","sources":["../src/portability-fidelity.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export type NormalizedSha256 = `sha256:${string}`;
2
+ export declare function normalizedContentHash(value: unknown): NormalizedSha256;
3
+ export declare function canonicalJson(value: unknown): string;
4
+ export declare function sha256HexOfBytes(data: Uint8Array): string;
5
+ //# sourceMappingURL=portability-hash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portability-hash.d.ts","sourceRoot":"","sources":["../src/portability-hash.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,gBAAgB,GAAG,UAAU,MAAM,EAAE,CAAC;AAElD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAEtE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEpD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAEzD"}
@@ -0,0 +1,20 @@
1
+ import { createHash } from "node:crypto";
2
+ export function normalizedContentHash(value) {
3
+ return `sha256:${createHash("sha256").update(canonicalJson(value)).digest("hex")}`;
4
+ }
5
+ export function canonicalJson(value) {
6
+ return JSON.stringify(sortJson(value));
7
+ }
8
+ export function sha256HexOfBytes(data) {
9
+ return createHash("sha256").update(data).digest("hex");
10
+ }
11
+ function sortJson(value) {
12
+ if (Array.isArray(value))
13
+ return value.map(sortJson);
14
+ if (typeof value !== "object" || value === null)
15
+ return value;
16
+ return Object.fromEntries(Object.entries(value)
17
+ .sort(([left], [right]) => left.localeCompare(right))
18
+ .map(([key, entry]) => [key, sortJson(entry)]));
19
+ }
20
+ //# sourceMappingURL=portability-hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portability-hash.js","sourceRoot":"","sources":["../src/portability-hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,OAAO,UAAU,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAgB;IAC/C,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC;SAC7C,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;SACpD,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CACjD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { CompanyPortabilityFileEntry } from "./types/company-portability.js";
2
+ export declare const MAX_ZIP_ENTRY_DECOMPRESSED_BYTES: number;
3
+ export declare const MAX_ZIP_TOTAL_DECOMPRESSED_BYTES: number;
4
+ export declare const binaryContentTypeByExtension: Record<string, string>;
5
+ export declare function isBlobStorePath(pathValue: string): boolean;
6
+ export declare function bytesToPortableFileEntry(pathValue: string, bytes: Uint8Array): CompanyPortabilityFileEntry;
7
+ export interface ReadZipArchiveLimits {
8
+ maxEntryDecompressedBytes: number;
9
+ maxTotalDecompressedBytes: number;
10
+ }
11
+ export declare function readZipArchive(source: ArrayBuffer | Uint8Array, limits?: ReadZipArchiveLimits): Promise<{
12
+ rootPath: string | null;
13
+ files: Record<string, CompanyPortabilityFileEntry>;
14
+ }>;
15
+ //# sourceMappingURL=portability-zip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portability-zip.d.ts","sourceRoot":"","sources":["../src/portability-zip.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAyBlF,eAAO,MAAM,gCAAgC,QAAoB,CAAC;AAClE,eAAO,MAAM,gCAAgC,QAAqB,CAAC;AAEnE,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAO/D,CAAC;AAqGF,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,WAEhD;AAYD,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,2BAA2B,CAc1G;AAKD,MAAM,WAAW,oBAAoB;IACnC,yBAAyB,EAAE,MAAM,CAAC;IAClC,yBAAyB,EAAE,MAAM,CAAC;CACnC;AAiCD,wBAAsB,cAAc,CAClC,MAAM,EAAE,WAAW,GAAG,UAAU,EAChC,MAAM,GAAE,oBAAyC,GAChD,OAAO,CAAC;IACT,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC;CACpD,CAAC,CAiGD"}
@@ -0,0 +1,262 @@
1
+ import { inflateRawSync } from "node:zlib";
2
+ import path from "node:path";
3
+ // Node-side reader for the company portability zip package. It produces the
4
+ // exact `{ rootPath, files }` shape the inline import source carries, so the
5
+ // server can accept a raw uploaded zip and feed the importer the same bundle
6
+ // the browser used to expand and post as inline JSON. The browser has its own
7
+ // reader in `ui/src/lib/zip.ts` (DecompressionStream); this one uses node zlib.
8
+ // Both must stay byte-compatible with the writer in `ui/src/lib/zip.ts`.
9
+ const textDecoder = new TextDecoder();
10
+ // ignoreBOM keeps a leading BOM in the decoded text so text entries
11
+ // re-encode to their original bytes; fatal surfaces invalid UTF-8.
12
+ const strictTextDecoder = new TextDecoder("utf-8", { fatal: true, ignoreBOM: true });
13
+ // Decompression-bomb guards. The compressed upload is already capped upstream
14
+ // (multer/express.raw at PORTABLE_ZIP_UPLOAD_LIMIT_BYTES), but DEFLATE lets a
15
+ // small compressed archive expand to gigabytes. Bound the expansion so a
16
+ // malicious highly-compressible package cannot exhaust server memory: a
17
+ // per-entry ceiling (passed to zlib as maxOutputLength, so it fails before
18
+ // over-allocating) plus an aggregate ceiling across all entries. Both sit far
19
+ // above any real company package yet far below what a bomb would need. These
20
+ // are only fallback defaults: the server import route passes explicit limits
21
+ // scaled from its configured upload cap. The per-entry ceiling stays at 512 MB
22
+ // even for large caps because a text or base64 entry beyond that cannot
23
+ // materialize as a JS string (V8's string length limit) regardless.
24
+ export const MAX_ZIP_ENTRY_DECOMPRESSED_BYTES = 512 * 1024 * 1024;
25
+ export const MAX_ZIP_TOTAL_DECOMPRESSED_BYTES = 1024 * 1024 * 1024;
26
+ export const binaryContentTypeByExtension = {
27
+ ".gif": "image/gif",
28
+ ".jpeg": "image/jpeg",
29
+ ".jpg": "image/jpeg",
30
+ ".png": "image/png",
31
+ ".svg": "image/svg+xml",
32
+ ".webp": "image/webp",
33
+ };
34
+ function normalizeArchivePath(pathValue) {
35
+ return pathValue
36
+ .replace(/\\/g, "/")
37
+ .split("/")
38
+ .filter(Boolean)
39
+ .join("/");
40
+ }
41
+ function readUint16(source, offset) {
42
+ return source[offset] | (source[offset + 1] << 8);
43
+ }
44
+ function readUint32(source, offset) {
45
+ return (source[offset] |
46
+ (source[offset + 1] << 8) |
47
+ (source[offset + 2] << 16) |
48
+ (source[offset + 3] << 24)) >>> 0;
49
+ }
50
+ const LOCAL_FILE_SIGNATURE = 0x04034b50;
51
+ const CENTRAL_DIRECTORY_SIGNATURE = 0x02014b50;
52
+ const EOCD_SIGNATURE = 0x06054b50;
53
+ // Locate the end-of-central-directory record by scanning back from the tail.
54
+ // The record is 22 bytes plus an optional trailing comment (max 0xffff), so the
55
+ // signature lives within the last 22 + 0xffff bytes; returns -1 when absent
56
+ // (a truncated or non-zip upload), which the reader treats as fail-closed.
57
+ function findEndOfCentralDirectoryOffset(bytes) {
58
+ const minOffset = Math.max(0, bytes.length - (22 + 0xffff));
59
+ for (let offset = bytes.length - 22; offset >= minOffset; offset -= 1) {
60
+ if (readUint32(bytes, offset) === EOCD_SIGNATURE)
61
+ return offset;
62
+ }
63
+ return -1;
64
+ }
65
+ // Fully validate the central directory the EOCD advertises against the local
66
+ // entries actually read from the archive body. Trusting only the EOCD's entry
67
+ // count is not enough: a truncated archive with a forged 22-byte EOCD whose
68
+ // count matches the surviving local entries would otherwise be accepted, and the
69
+ // importer would silently process a partial company package (dropping agents,
70
+ // issues, and so on). This walks the real central directory and requires that:
71
+ // • it is fully present and sits immediately before the EOCD (no gap, no
72
+ // pointer past the buffer — a truncated tail fails here);
73
+ // • every record carries the central-directory signature and its lengths sum
74
+ // to exactly the declared directory size; and
75
+ // • every record references a real local file header, and the record count
76
+ // equals both the EOCD's declared count and the local entries parsed.
77
+ function validateCentralDirectory(bytes, eocdOffset, localHeaderCount) {
78
+ const declaredEntryCount = readUint16(bytes, eocdOffset + 10);
79
+ const centralDirectorySize = readUint32(bytes, eocdOffset + 12);
80
+ const centralDirectoryStart = readUint32(bytes, eocdOffset + 16);
81
+ if (centralDirectoryStart > eocdOffset || centralDirectoryStart + centralDirectorySize !== eocdOffset) {
82
+ throw new Error("Invalid zip archive: central directory location is inconsistent (truncated or forged).");
83
+ }
84
+ const directoryEnd = centralDirectoryStart + centralDirectorySize;
85
+ let cursor = centralDirectoryStart;
86
+ let recordCount = 0;
87
+ while (cursor < directoryEnd) {
88
+ if (cursor + 46 > directoryEnd || readUint32(bytes, cursor) !== CENTRAL_DIRECTORY_SIGNATURE) {
89
+ throw new Error("Invalid zip archive: malformed central directory record.");
90
+ }
91
+ const fileNameLength = readUint16(bytes, cursor + 28);
92
+ const extraFieldLength = readUint16(bytes, cursor + 30);
93
+ const commentLength = readUint16(bytes, cursor + 32);
94
+ const localHeaderOffset = readUint32(bytes, cursor + 42);
95
+ if (localHeaderOffset + 4 > bytes.length || readUint32(bytes, localHeaderOffset) !== LOCAL_FILE_SIGNATURE) {
96
+ throw new Error("Invalid zip archive: central directory references a missing local entry.");
97
+ }
98
+ cursor += 46 + fileNameLength + extraFieldLength + commentLength;
99
+ recordCount += 1;
100
+ }
101
+ if (cursor !== directoryEnd) {
102
+ throw new Error("Invalid zip archive: central directory size does not match its records.");
103
+ }
104
+ if (recordCount !== declaredEntryCount || recordCount !== localHeaderCount) {
105
+ throw new Error(`Invalid zip archive: central directory declares ${declaredEntryCount} entries but ${localHeaderCount} local entries were read (truncated or corrupt).`);
106
+ }
107
+ }
108
+ function sharedArchiveRoot(paths) {
109
+ if (paths.length === 0)
110
+ return null;
111
+ const firstSegments = paths
112
+ .map((entry) => normalizeArchivePath(entry).split("/").filter(Boolean))
113
+ .filter((parts) => parts.length > 0);
114
+ if (firstSegments.length === 0)
115
+ return null;
116
+ const candidate = firstSegments[0][0];
117
+ return firstSegments.every((parts) => parts.length > 1 && parts[0] === candidate)
118
+ ? candidate
119
+ : null;
120
+ }
121
+ export function isBlobStorePath(pathValue) {
122
+ return /(^|\/)blobs\/[^/]+$/.test(normalizeArchivePath(pathValue));
123
+ }
124
+ function decodeStrictUtf8(bytes) {
125
+ let text;
126
+ try {
127
+ text = strictTextDecoder.decode(bytes);
128
+ }
129
+ catch {
130
+ return null;
131
+ }
132
+ return Buffer.from(text, "utf8").equals(Buffer.from(bytes)) ? text : null;
133
+ }
134
+ export function bytesToPortableFileEntry(pathValue, bytes) {
135
+ // Content-addressed blob entries are opaque bytes regardless of extension.
136
+ if (isBlobStorePath(pathValue)) {
137
+ return { encoding: "base64", data: Buffer.from(bytes).toString("base64"), contentType: "application/octet-stream" };
138
+ }
139
+ const contentType = binaryContentTypeByExtension[path.extname(pathValue).toLowerCase()];
140
+ if (contentType) {
141
+ return { encoding: "base64", data: Buffer.from(bytes).toString("base64"), contentType };
142
+ }
143
+ const text = decodeStrictUtf8(bytes);
144
+ if (text !== null)
145
+ return text;
146
+ // Bytes that are not valid UTF-8 must not be decoded lossily; fall back
147
+ // to base64 so they round-trip exactly.
148
+ return { encoding: "base64", data: Buffer.from(bytes).toString("base64"), contentType: "application/octet-stream" };
149
+ }
150
+ const DEFAULT_ZIP_LIMITS = {
151
+ maxEntryDecompressedBytes: MAX_ZIP_ENTRY_DECOMPRESSED_BYTES,
152
+ maxTotalDecompressedBytes: MAX_ZIP_TOTAL_DECOMPRESSED_BYTES,
153
+ };
154
+ function inflateZipEntry(compressionMethod, bytes, maxEntryDecompressedBytes) {
155
+ if (compressionMethod === 0) {
156
+ if (bytes.length > maxEntryDecompressedBytes) {
157
+ throw new Error(`Unsupported zip archive: a stored entry exceeds the ${maxEntryDecompressedBytes}-byte per-entry limit.`);
158
+ }
159
+ return bytes;
160
+ }
161
+ if (compressionMethod !== 8) {
162
+ throw new Error("Unsupported zip archive: only STORE and DEFLATE entries are supported.");
163
+ }
164
+ try {
165
+ // maxOutputLength makes zlib throw (ERR_BUFFER_TOO_LARGE) before it allocates
166
+ // past the per-entry ceiling, so a bomb entry never materializes in memory.
167
+ return new Uint8Array(inflateRawSync(bytes, { maxOutputLength: maxEntryDecompressedBytes }));
168
+ }
169
+ catch (error) {
170
+ if (error?.code === "ERR_BUFFER_TOO_LARGE") {
171
+ throw new Error(`Unsupported zip archive: a compressed entry expands beyond the ${maxEntryDecompressedBytes}-byte per-entry limit.`);
172
+ }
173
+ throw error;
174
+ }
175
+ }
176
+ export async function readZipArchive(source, limits = DEFAULT_ZIP_LIMITS) {
177
+ const { maxEntryDecompressedBytes, maxTotalDecompressedBytes } = limits;
178
+ const bytes = source instanceof Uint8Array ? source : new Uint8Array(source);
179
+ const entries = [];
180
+ let offset = 0;
181
+ // Count every local file header (including directory entries) so the tally can
182
+ // be reconciled against the central directory below; guard total expansion so
183
+ // a bomb split across many entries is still bounded.
184
+ let localHeaderCount = 0;
185
+ let totalDecompressedBytes = 0;
186
+ let reachedCentralDirectory = false;
187
+ while (offset + 4 <= bytes.length) {
188
+ const signature = readUint32(bytes, offset);
189
+ if (signature === CENTRAL_DIRECTORY_SIGNATURE || signature === EOCD_SIGNATURE) {
190
+ reachedCentralDirectory = true;
191
+ break;
192
+ }
193
+ if (signature !== LOCAL_FILE_SIGNATURE) {
194
+ throw new Error("Invalid zip archive: unsupported local file header.");
195
+ }
196
+ if (offset + 30 > bytes.length) {
197
+ throw new Error("Invalid zip archive: truncated local file header.");
198
+ }
199
+ const generalPurposeFlag = readUint16(bytes, offset + 6);
200
+ const compressionMethod = readUint16(bytes, offset + 8);
201
+ const compressedSize = readUint32(bytes, offset + 18);
202
+ const fileNameLength = readUint16(bytes, offset + 26);
203
+ const extraFieldLength = readUint16(bytes, offset + 28);
204
+ if ((generalPurposeFlag & 0x0008) !== 0) {
205
+ throw new Error("Unsupported zip archive: data descriptors are not supported.");
206
+ }
207
+ const nameOffset = offset + 30;
208
+ const bodyOffset = nameOffset + fileNameLength + extraFieldLength;
209
+ const bodyEnd = bodyOffset + compressedSize;
210
+ if (bodyEnd > bytes.length) {
211
+ throw new Error("Invalid zip archive: truncated file contents.");
212
+ }
213
+ localHeaderCount += 1;
214
+ const rawArchivePath = textDecoder.decode(bytes.slice(nameOffset, nameOffset + fileNameLength));
215
+ const archivePath = normalizeArchivePath(rawArchivePath);
216
+ const isDirectoryEntry = /\/$/.test(rawArchivePath.replace(/\\/g, "/"));
217
+ if (archivePath && !isDirectoryEntry) {
218
+ const entryBytes = inflateZipEntry(compressionMethod, bytes.slice(bodyOffset, bodyEnd), maxEntryDecompressedBytes);
219
+ totalDecompressedBytes += entryBytes.length;
220
+ if (totalDecompressedBytes > maxTotalDecompressedBytes) {
221
+ throw new Error(`Unsupported zip archive: decompressed contents exceed the ${maxTotalDecompressedBytes}-byte limit.`);
222
+ }
223
+ entries.push({
224
+ path: archivePath,
225
+ body: bytesToPortableFileEntry(archivePath, entryBytes),
226
+ });
227
+ }
228
+ offset = bodyEnd;
229
+ }
230
+ // A complete archive always ends with a central directory after its local
231
+ // entries. If the scan ran off the end of the buffer without reaching one, the
232
+ // upload was truncated at a record boundary — fail closed rather than import a
233
+ // leading fragment. Then fully validate the central directory the EOCD points
234
+ // at so a truncated tail with a forged EOCD (whose count happens to match the
235
+ // surviving entries) cannot smuggle in a partial import.
236
+ if (!reachedCentralDirectory) {
237
+ throw new Error("Invalid zip archive: truncated before the central directory.");
238
+ }
239
+ const eocdOffset = findEndOfCentralDirectoryOffset(bytes);
240
+ if (eocdOffset === -1) {
241
+ throw new Error("Invalid zip archive: missing end-of-central-directory record.");
242
+ }
243
+ validateCentralDirectory(bytes, eocdOffset, localHeaderCount);
244
+ const rootPath = sharedArchiveRoot(entries.map((entry) => entry.path));
245
+ const files = {};
246
+ for (const entry of entries) {
247
+ const normalizedPath = rootPath && entry.path.startsWith(`${rootPath}/`)
248
+ ? entry.path.slice(rootPath.length + 1)
249
+ : entry.path;
250
+ if (!normalizedPath)
251
+ continue;
252
+ // Two entries that normalize to the same path (e.g. `a/b` and `a//b`) make
253
+ // the package ambiguous; reject it rather than silently letting the later
254
+ // entry's contents win over the earlier one.
255
+ if (Object.prototype.hasOwnProperty.call(files, normalizedPath)) {
256
+ throw new Error(`Invalid zip archive: duplicate entry path "${normalizedPath}".`);
257
+ }
258
+ files[normalizedPath] = entry.body;
259
+ }
260
+ return { rootPath, files };
261
+ }
262
+ //# sourceMappingURL=portability-zip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portability-zip.js","sourceRoot":"","sources":["../src/portability-zip.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=portability-zip.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portability-zip.test.d.ts","sourceRoot":"","sources":["../src/portability-zip.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,227 @@
1
+ import { deflateRawSync } from "node:zlib";
2
+ import { describe, expect, it } from "vitest";
3
+ import { bytesToPortableFileEntry, isBlobStorePath, readZipArchive, } from "./portability-zip.js";
4
+ // A minimal, faithful zip writer so the node reader can be round-tripped
5
+ // against both STORE (method 0) and DEFLATE (method 8) entries. The layout
6
+ // matches the browser writer in ui/src/lib/zip.ts: local file headers, then a
7
+ // central directory, then the end-of-central-directory record.
8
+ const crcTable = (() => {
9
+ const table = new Uint32Array(256);
10
+ for (let i = 0; i < 256; i += 1) {
11
+ let crc = i;
12
+ for (let bit = 0; bit < 8; bit += 1) {
13
+ crc = (crc & 1) === 1 ? (crc >>> 1) ^ 0xedb88320 : crc >>> 1;
14
+ }
15
+ table[i] = crc >>> 0;
16
+ }
17
+ return table;
18
+ })();
19
+ function crc32(bytes) {
20
+ let crc = 0xffffffff;
21
+ for (const byte of bytes)
22
+ crc = (crc >>> 8) ^ crcTable[(crc ^ byte) & 0xff];
23
+ return (crc ^ 0xffffffff) >>> 0;
24
+ }
25
+ function buildZip(entries, rootPath) {
26
+ const encoder = new TextEncoder();
27
+ const localChunks = [];
28
+ const centralChunks = [];
29
+ let localOffset = 0;
30
+ for (const entry of entries) {
31
+ const method = entry.method ?? 0;
32
+ const fileName = encoder.encode(`${rootPath}/${entry.path}`);
33
+ const checksum = crc32(entry.bytes);
34
+ const body = method === 8 ? deflateRawSync(Buffer.from(entry.bytes)) : Buffer.from(entry.bytes);
35
+ const localHeader = Buffer.alloc(30 + fileName.length);
36
+ localHeader.writeUInt32LE(0x04034b50, 0);
37
+ localHeader.writeUInt16LE(20, 4);
38
+ localHeader.writeUInt16LE(0x0800, 6);
39
+ localHeader.writeUInt16LE(method, 8);
40
+ localHeader.writeUInt32LE(checksum, 14);
41
+ localHeader.writeUInt32LE(body.length, 18);
42
+ localHeader.writeUInt32LE(entry.bytes.length, 22);
43
+ localHeader.writeUInt16LE(fileName.length, 26);
44
+ Buffer.from(fileName).copy(localHeader, 30);
45
+ const centralHeader = Buffer.alloc(46 + fileName.length);
46
+ centralHeader.writeUInt32LE(0x02014b50, 0);
47
+ centralHeader.writeUInt16LE(20, 4);
48
+ centralHeader.writeUInt16LE(20, 6);
49
+ centralHeader.writeUInt16LE(0x0800, 8);
50
+ centralHeader.writeUInt16LE(method, 10);
51
+ centralHeader.writeUInt32LE(checksum, 16);
52
+ centralHeader.writeUInt32LE(body.length, 20);
53
+ centralHeader.writeUInt32LE(entry.bytes.length, 24);
54
+ centralHeader.writeUInt16LE(fileName.length, 28);
55
+ centralHeader.writeUInt32LE(localOffset, 42);
56
+ Buffer.from(fileName).copy(centralHeader, 46);
57
+ localChunks.push(localHeader, body);
58
+ centralChunks.push(centralHeader);
59
+ localOffset += localHeader.length + body.length;
60
+ }
61
+ const centralDirectory = Buffer.concat(centralChunks);
62
+ const eocd = Buffer.alloc(22);
63
+ eocd.writeUInt32LE(0x06054b50, 0);
64
+ eocd.writeUInt16LE(entries.length, 8);
65
+ eocd.writeUInt16LE(entries.length, 10);
66
+ eocd.writeUInt32LE(centralDirectory.length, 12);
67
+ eocd.writeUInt32LE(localOffset, 16);
68
+ return new Uint8Array(Buffer.concat([...localChunks, centralDirectory, eocd]));
69
+ }
70
+ describe("isBlobStorePath", () => {
71
+ it("matches blobs/ entries at the archive root and under a package root", () => {
72
+ expect(isBlobStorePath("blobs/4f2d1c9a")).toBe(true);
73
+ expect(isBlobStorePath("paperclip-demo/blobs/4f2d1c9a")).toBe(true);
74
+ expect(isBlobStorePath("tasks/pap-1/TASK.md")).toBe(false);
75
+ });
76
+ });
77
+ describe("bytesToPortableFileEntry", () => {
78
+ it("keeps blobs/ entries as base64 octet streams regardless of extension", () => {
79
+ const bytes = new Uint8Array([0x00, 0x01, 0x80, 0xfe, 0xff]);
80
+ expect(bytesToPortableFileEntry("blobs/4f2d1c9a", bytes)).toEqual({
81
+ encoding: "base64",
82
+ data: Buffer.from(bytes).toString("base64"),
83
+ contentType: "application/octet-stream",
84
+ });
85
+ });
86
+ it("decodes valid UTF-8 entries to text and falls back to base64 for invalid bytes", () => {
87
+ const text = new TextEncoder().encode("# Notes\n\ncafé ✅\n");
88
+ expect(bytesToPortableFileEntry("tasks/pap-1/TASK.md", text)).toBe("# Notes\n\ncafé ✅\n");
89
+ const invalid = new Uint8Array([0x68, 0x69, 0xff, 0xfe, 0xc0]);
90
+ expect(bytesToPortableFileEntry("tasks/pap-1/raw", invalid)).toEqual({
91
+ encoding: "base64",
92
+ data: Buffer.from(invalid).toString("base64"),
93
+ contentType: "application/octet-stream",
94
+ });
95
+ });
96
+ });
97
+ describe("readZipArchive", () => {
98
+ it("round-trips STORE, DEFLATE, and base64 blob entries byte-exactly and strips the shared root", async () => {
99
+ const blobBytes = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x00, 0xff, 0x13, 0x37]);
100
+ // A text body large and repetitive enough that DEFLATE actually shrinks it,
101
+ // so the DEFLATE decode path is exercised, not just written.
102
+ const deflated = `# Weekly report\n${"paperclip ".repeat(512)}\n`;
103
+ const archive = buildZip([
104
+ { path: "COMPANY.md", bytes: new TextEncoder().encode("---\nname: Demo\n---\n"), method: 0 },
105
+ { path: "reports/weekly.md", bytes: new TextEncoder().encode(deflated), method: 8 },
106
+ { path: "blobs/4f2d1c9a", bytes: blobBytes, method: 0 },
107
+ ], "paperclip-demo");
108
+ await expect(readZipArchive(archive)).resolves.toEqual({
109
+ rootPath: "paperclip-demo",
110
+ files: {
111
+ "COMPANY.md": "---\nname: Demo\n---\n",
112
+ "reports/weekly.md": deflated,
113
+ "blobs/4f2d1c9a": {
114
+ encoding: "base64",
115
+ data: Buffer.from(blobBytes).toString("base64"),
116
+ contentType: "application/octet-stream",
117
+ },
118
+ },
119
+ });
120
+ });
121
+ it("throws on a truncated archive so a partial upload fails closed", async () => {
122
+ const archive = buildZip([{ path: "COMPANY.md", bytes: new TextEncoder().encode("---\nname: Demo\n---\n") }], "paperclip-demo");
123
+ // Chop the tail so a declared entry body runs past the end of the buffer.
124
+ const truncated = archive.slice(0, 40);
125
+ await expect(readZipArchive(truncated)).rejects.toThrow(/truncated|Invalid zip/i);
126
+ });
127
+ it("rejects data-descriptor entries the writer never emits", async () => {
128
+ const archive = buildZip([{ path: "COMPANY.md", bytes: new TextEncoder().encode("hi") }], "paperclip-demo");
129
+ // Flip bit 0x0008 in the local header's general-purpose flag (offset 6).
130
+ archive[6] = archive[6] | 0x08;
131
+ await expect(readZipArchive(archive)).rejects.toThrow(/data descriptors/i);
132
+ });
133
+ // Locate the first central-directory file header so a test can lop off the
134
+ // whole directory + EOCD, leaving only intact local entries.
135
+ function centralDirectoryOffset(archive) {
136
+ for (let i = 0; i + 4 <= archive.length; i += 1) {
137
+ if (archive[i] === 0x50 && archive[i + 1] === 0x4b && archive[i + 2] === 0x01 && archive[i + 3] === 0x02) {
138
+ return i;
139
+ }
140
+ }
141
+ return -1;
142
+ }
143
+ it("rejects an archive truncated before the central directory", async () => {
144
+ const archive = buildZip([
145
+ { path: "COMPANY.md", bytes: new TextEncoder().encode("---\nname: Demo\n---\n") },
146
+ { path: "agents/ceo/AGENTS.md", bytes: new TextEncoder().encode("---\nname: CEO\n---\n") },
147
+ ], "paperclip-demo");
148
+ // Keep every local entry intact but drop the directory + EOCD, mimicking an
149
+ // upload cut at a record boundary. The reader must not import the fragment.
150
+ const withoutDirectory = archive.slice(0, centralDirectoryOffset(archive));
151
+ await expect(readZipArchive(withoutDirectory)).rejects.toThrow(/truncated before the central directory/i);
152
+ });
153
+ it("rejects an archive whose end-of-central-directory record is missing", async () => {
154
+ const archive = buildZip([{ path: "COMPANY.md", bytes: new TextEncoder().encode("---\nname: Demo\n---\n") }], "paperclip-demo");
155
+ // The central directory survives but the trailing 22-byte EOCD is gone.
156
+ await expect(readZipArchive(archive.slice(0, archive.length - 22))).rejects.toThrow(/end-of-central-directory/i);
157
+ });
158
+ it("rejects an archive whose central directory count does not match the entries read", async () => {
159
+ const archive = buildZip([{ path: "COMPANY.md", bytes: new TextEncoder().encode("---\nname: Demo\n---\n") }], "paperclip-demo");
160
+ // Overstate the total-entries field (EOCD offset +10 → last 12 bytes in) so a
161
+ // silently-dropped central-directory record is caught.
162
+ archive[archive.length - 12] = 5;
163
+ archive[archive.length - 11] = 0;
164
+ await expect(readZipArchive(archive)).rejects.toThrow(/central directory declares 5 entries/i);
165
+ });
166
+ it("rejects a truncated archive re-terminated with a forged EOCD that matches the surviving entries", async () => {
167
+ // The exact silent-partial-import this reader guards against: an archive is
168
+ // cut after a complete leading local entry (losing the real central directory
169
+ // and EOCD), then re-terminated with a hand-forged 22-byte EOCD whose entry
170
+ // count matches the surviving local entry. An entry-count-only check would
171
+ // wave it through; validating the central directory it points at must not.
172
+ const archive = buildZip([{ path: "COMPANY.md", bytes: new TextEncoder().encode("---\nname: Demo\n---\n") }], "paperclip-demo");
173
+ // Keep only the intact local entry (everything before the first central record).
174
+ const localOnly = archive.slice(0, centralDirectoryOffset(archive));
175
+ const forgedEocd = Buffer.alloc(22);
176
+ forgedEocd.writeUInt32LE(0x06054b50, 0);
177
+ forgedEocd.writeUInt16LE(1, 8); // entries on this disk
178
+ forgedEocd.writeUInt16LE(1, 10); // total entries — matches the one surviving local entry
179
+ forgedEocd.writeUInt32LE(0, 12); // central directory size (forged)
180
+ forgedEocd.writeUInt32LE(0, 16); // central directory offset (forged)
181
+ const forged = new Uint8Array(Buffer.concat([Buffer.from(localOnly), forgedEocd]));
182
+ await expect(readZipArchive(forged)).rejects.toThrow(/central directory location is inconsistent/i);
183
+ });
184
+ it("rejects a forged EOCD whose central directory offset points at non-directory bytes", async () => {
185
+ const archive = buildZip([{ path: "COMPANY.md", bytes: new TextEncoder().encode("---\nname: Demo\n---\n") }], "paperclip-demo");
186
+ const firstEntryOnly = archive.slice(0, centralDirectoryOffset(archive));
187
+ // A forged EOCD whose offset+size abut the record (passing the location
188
+ // check) but point into the local entry, which carries no directory signature.
189
+ const forgedEocd = Buffer.alloc(22);
190
+ forgedEocd.writeUInt32LE(0x06054b50, 0);
191
+ forgedEocd.writeUInt16LE(1, 8);
192
+ forgedEocd.writeUInt16LE(1, 10);
193
+ forgedEocd.writeUInt32LE(46, 12); // size
194
+ forgedEocd.writeUInt32LE(firstEntryOnly.length - 46, 16); // start = eocdOffset - size
195
+ const forged = new Uint8Array(Buffer.concat([Buffer.from(firstEntryOnly), forgedEocd]));
196
+ await expect(readZipArchive(forged)).rejects.toThrow(/malformed central directory record/i);
197
+ });
198
+ it("rejects two entries that normalize to the same path instead of silently overwriting", async () => {
199
+ const archive = buildZip([
200
+ { path: "docs/x.md", bytes: new TextEncoder().encode("first") },
201
+ { path: "docs//x.md", bytes: new TextEncoder().encode("second") },
202
+ ], "paperclip-demo");
203
+ await expect(readZipArchive(archive)).rejects.toThrow(/duplicate entry path "docs\/x\.md"/i);
204
+ });
205
+ it("bounds a highly compressible DEFLATE entry at the per-entry decompressed limit", async () => {
206
+ // Compresses tiny but expands to 8 KiB; a 1 KiB cap must reject it before it
207
+ // materializes. Real packages sit far under the 512 MB production default.
208
+ const bomb = new TextEncoder().encode("a".repeat(8 * 1024));
209
+ const archive = buildZip([{ path: "bomb.txt", bytes: bomb, method: 8 }], "paperclip-demo");
210
+ await expect(readZipArchive(archive, { maxEntryDecompressedBytes: 1024, maxTotalDecompressedBytes: 1 << 30 })).rejects.toThrow(/per-entry limit/i);
211
+ });
212
+ it("bounds a stored entry at the per-entry decompressed limit", async () => {
213
+ const stored = new TextEncoder().encode("b".repeat(4 * 1024));
214
+ const archive = buildZip([{ path: "big.bin", bytes: stored, method: 0 }], "paperclip-demo");
215
+ await expect(readZipArchive(archive, { maxEntryDecompressedBytes: 1024, maxTotalDecompressedBytes: 1 << 30 })).rejects.toThrow(/per-entry limit/i);
216
+ });
217
+ it("bounds the aggregate decompressed size across many entries", async () => {
218
+ const chunk = new TextEncoder().encode("c".repeat(600));
219
+ const archive = buildZip([
220
+ { path: "a.txt", bytes: chunk, method: 0 },
221
+ { path: "b.txt", bytes: chunk, method: 0 },
222
+ ], "paperclip-demo");
223
+ // Each entry is under the per-entry cap, but together they cross the total.
224
+ await expect(readZipArchive(archive, { maxEntryDecompressedBytes: 4096, maxTotalDecompressedBytes: 1000 })).rejects.toThrow(/exceed the 1000-byte limit/i);
225
+ });
226
+ });
227
+ //# sourceMappingURL=portability-zip.test.js.map