@ternent/core 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (313) hide show
  1. package/.changeset/README.md +8 -0
  2. package/.changeset/config.json +17 -0
  3. package/.github/workflows/deploy-armour.yml +42 -0
  4. package/.github/workflows/deploy-identity.yml +42 -0
  5. package/.github/workflows/deploy-seal.yml +42 -0
  6. package/.github/workflows/deploy-ui.yml +42 -0
  7. package/.github/workflows/deploy-utils.yml +42 -0
  8. package/.github/workflows/release-create.yml +59 -0
  9. package/.github/workflows/release-publish.yml +54 -0
  10. package/.nvmrc +1 -0
  11. package/.ops/publish.mjs +31 -0
  12. package/package.json +16 -0
  13. package/packages/README.md +0 -0
  14. package/packages/armour/CHANGELOG.md +66 -0
  15. package/packages/armour/CLAUDE.md +8 -0
  16. package/packages/armour/README.md +103 -0
  17. package/packages/armour/SPEC.md +92 -0
  18. package/packages/armour/package.json +45 -0
  19. package/packages/armour/src/constants.ts +5 -0
  20. package/packages/armour/src/deps.d.ts +56 -0
  21. package/packages/armour/src/errors.ts +172 -0
  22. package/packages/armour/src/files.ts +73 -0
  23. package/packages/armour/src/identity.ts +72 -0
  24. package/packages/armour/src/index.ts +56 -0
  25. package/packages/armour/src/init.ts +10 -0
  26. package/packages/armour/src/passphrase.ts +33 -0
  27. package/packages/armour/src/recipients.ts +73 -0
  28. package/packages/armour/src/text.ts +68 -0
  29. package/packages/armour/src/types.ts +93 -0
  30. package/packages/armour/test/armour.test.ts +270 -0
  31. package/packages/armour/tsconfig.build.json +12 -0
  32. package/packages/armour/tsconfig.json +12 -0
  33. package/packages/armour/vite.config.ts +29 -0
  34. package/packages/concord/CHANGELOG.md +83 -0
  35. package/packages/concord/CLAUDE.md +9 -0
  36. package/packages/concord/README.md +146 -0
  37. package/packages/concord/SPEC.md +287 -0
  38. package/packages/concord/package.json +51 -0
  39. package/packages/concord/src/app.ts +717 -0
  40. package/packages/concord/src/errors.ts +9 -0
  41. package/packages/concord/src/index.ts +20 -0
  42. package/packages/concord/src/types.ts +127 -0
  43. package/packages/concord/test/concord.test.ts +978 -0
  44. package/packages/concord/tsconfig.json +12 -0
  45. package/packages/concord/vite.browser.config.ts +27 -0
  46. package/packages/concord/vite.config.ts +35 -0
  47. package/packages/concord/vite.config.ts.timestamp-1774262297922-ffd76e35ea668.mjs +83 -0
  48. package/packages/identity/CHANGELOG.md +47 -0
  49. package/packages/identity/README.md +236 -0
  50. package/packages/identity/package.json +41 -0
  51. package/packages/identity/src/index.ts +538 -0
  52. package/packages/identity/test/identity.test.ts +172 -0
  53. package/packages/identity/tsconfig.build.json +12 -0
  54. package/packages/identity/vite.config.ts +17 -0
  55. package/packages/ledger/CHANGELOG.md +69 -0
  56. package/packages/ledger/CLAUDE.md +9 -0
  57. package/packages/ledger/SPEC.md +304 -0
  58. package/packages/ledger/package.json +48 -0
  59. package/packages/ledger/src/index.ts +2 -0
  60. package/packages/ledger/src/ledger.ts +1286 -0
  61. package/packages/ledger/src/seal-cli.d.ts +25 -0
  62. package/packages/ledger/src/types.ts +294 -0
  63. package/packages/ledger/test/ledger.test.ts +838 -0
  64. package/packages/ledger/tsconfig.json +12 -0
  65. package/packages/ledger/vite.browser.config.ts +27 -0
  66. package/packages/ledger/vite.config.ts +39 -0
  67. package/packages/seal/CHANGELOG.md +137 -0
  68. package/packages/seal/CLAUDE.md +8 -0
  69. package/packages/seal/README.md +258 -0
  70. package/packages/seal/bin/seal +6 -0
  71. package/packages/seal/package.json +59 -0
  72. package/packages/seal/src/artifact.ts +380 -0
  73. package/packages/seal/src/cli.ts +372 -0
  74. package/packages/seal/src/commands/identity.ts +52 -0
  75. package/packages/seal/src/commands/manifest.ts +71 -0
  76. package/packages/seal/src/commands/publicKey.ts +7 -0
  77. package/packages/seal/src/commands/sign.ts +56 -0
  78. package/packages/seal/src/commands/verify.ts +54 -0
  79. package/packages/seal/src/crypto.ts +85 -0
  80. package/packages/seal/src/errors.ts +88 -0
  81. package/packages/seal/src/index.ts +5 -0
  82. package/packages/seal/src/manifest.ts +114 -0
  83. package/packages/seal/src/node.ts +18 -0
  84. package/packages/seal/src/proof.ts +344 -0
  85. package/packages/seal/test/artifact.test.ts +86 -0
  86. package/packages/seal/test/cli.test.ts +208 -0
  87. package/packages/seal/test/crypto.test.ts +21 -0
  88. package/packages/seal/test/manifest.test.ts +32 -0
  89. package/packages/seal/test/proof.test.ts +60 -0
  90. package/packages/seal/tsconfig.json +12 -0
  91. package/packages/seal/vite.config.ts +54 -0
  92. package/packages/ui/CHANGELOG.md +393 -0
  93. package/packages/ui/README.md +57 -0
  94. package/packages/ui/jsconfig.json +19 -0
  95. package/packages/ui/package.json +64 -0
  96. package/packages/ui/scripts/check-tokens.js +56 -0
  97. package/packages/ui/scripts/generate-theme-css.mjs +85 -0
  98. package/packages/ui/src/design-system/base.css +8 -0
  99. package/packages/ui/src/design-system/docs/ACCESSIBILITY_RULES.md +186 -0
  100. package/packages/ui/src/design-system/docs/AI_SYSTEM.md +281 -0
  101. package/packages/ui/src/design-system/docs/PATTERN_RULES.md +83 -0
  102. package/packages/ui/src/design-system/docs/PRIMITIVE_RULES.md +258 -0
  103. package/packages/ui/src/design-system/docs/TOKEN_RULES.md +235 -0
  104. package/packages/ui/src/design-system/docs/VISUAL_DIRECTION.md +68 -0
  105. package/packages/ui/src/design-system/foundation.js +420 -0
  106. package/packages/ui/src/design-system/tokens.css +140 -0
  107. package/packages/ui/src/design-system/tokens.js +327 -0
  108. package/packages/ui/src/design-system/utils.js +246 -0
  109. package/packages/ui/src/main.js +4 -0
  110. package/packages/ui/src/patterns/FeatureCard/FeatureCard.spec.md +24 -0
  111. package/packages/ui/src/patterns/FeatureCard/FeatureCard.types.ts +8 -0
  112. package/packages/ui/src/patterns/FeatureCard/FeatureCard.vue +175 -0
  113. package/packages/ui/src/patterns/FormField/FormField.spec.md +65 -0
  114. package/packages/ui/src/patterns/FormField/FormField.types.ts +11 -0
  115. package/packages/ui/src/patterns/FormField/FormField.vue +87 -0
  116. package/packages/ui/src/patterns/IdentityGlyph/IdentityGlyph.vue +61 -0
  117. package/packages/ui/src/patterns/IdentityGlyph/IdentityHandle.vue +58 -0
  118. package/packages/ui/src/patterns/IdentityGlyph/identityGlyph.types.ts +36 -0
  119. package/packages/ui/src/patterns/IdentityGlyph/identityGlyph.utils.ts +585 -0
  120. package/packages/ui/src/patterns/IdentityGlyph/index.ts +5 -0
  121. package/packages/ui/src/patterns/KeyValueList/KeyValueList.spec.md +28 -0
  122. package/packages/ui/src/patterns/KeyValueList/KeyValueList.types.ts +16 -0
  123. package/packages/ui/src/patterns/KeyValueList/KeyValueList.vue +50 -0
  124. package/packages/ui/src/patterns/LandingPage/LandingIcon.vue +90 -0
  125. package/packages/ui/src/patterns/LandingPage/LandingPage.spec.md +24 -0
  126. package/packages/ui/src/patterns/LandingPage/LandingPage.types.ts +212 -0
  127. package/packages/ui/src/patterns/LandingPage/LandingPage.vue +599 -0
  128. package/packages/ui/src/patterns/ListWorkspaceLayout/ListWorkspaceLayout.test.ts +33 -0
  129. package/packages/ui/src/patterns/ListWorkspaceLayout/ListWorkspaceLayout.vue +44 -0
  130. package/packages/ui/src/patterns/Logo/Logo.spec.md +22 -0
  131. package/packages/ui/src/patterns/Logo/Logo.vue +160 -0
  132. package/packages/ui/src/patterns/PageSurface/PageSurface.spec.md +15 -0
  133. package/packages/ui/src/patterns/PageSurface/PageSurface.vue +85 -0
  134. package/packages/ui/src/patterns/PanelChrome/PanelChrome.spec.md +39 -0
  135. package/packages/ui/src/patterns/PanelChrome/PanelChrome.types.ts +1 -0
  136. package/packages/ui/src/patterns/PanelChrome/PanelChrome.vue +187 -0
  137. package/packages/ui/src/patterns/PreviewPanel/PreviewPanel.spec.md +31 -0
  138. package/packages/ui/src/patterns/PreviewPanel/PreviewPanel.types.ts +23 -0
  139. package/packages/ui/src/patterns/PreviewPanel/PreviewPanel.vue +354 -0
  140. package/packages/ui/src/patterns/RecordList/RecordList.spec.md +35 -0
  141. package/packages/ui/src/patterns/RecordList/RecordList.test.ts +42 -0
  142. package/packages/ui/src/patterns/RecordList/RecordList.types.ts +9 -0
  143. package/packages/ui/src/patterns/RecordList/RecordList.utils.ts +5 -0
  144. package/packages/ui/src/patterns/RecordList/RecordList.vue +134 -0
  145. package/packages/ui/src/patterns/SectionClarifier/SectionClarifier.vue +85 -0
  146. package/packages/ui/src/patterns/SectionIntro/SectionIntro.spec.md +25 -0
  147. package/packages/ui/src/patterns/SectionIntro/SectionIntro.types.ts +7 -0
  148. package/packages/ui/src/patterns/SectionIntro/SectionIntro.vue +141 -0
  149. package/packages/ui/src/patterns/SidebarNav/SidebarNav.spec.md +34 -0
  150. package/packages/ui/src/patterns/SidebarNav/SidebarNav.types.ts +17 -0
  151. package/packages/ui/src/patterns/SidebarNav/SidebarNav.vue +110 -0
  152. package/packages/ui/src/patterns/SplitView/SplitView.spec.md +28 -0
  153. package/packages/ui/src/patterns/SplitView/SplitView.test.ts +22 -0
  154. package/packages/ui/src/patterns/SplitView/SplitView.types.ts +3 -0
  155. package/packages/ui/src/patterns/SplitView/SplitView.utils.ts +13 -0
  156. package/packages/ui/src/patterns/SplitView/SplitView.vue +39 -0
  157. package/packages/ui/src/patterns/StepList/StepList.spec.md +15 -0
  158. package/packages/ui/src/patterns/StepList/StepList.types.ts +4 -0
  159. package/packages/ui/src/patterns/StepList/StepList.vue +91 -0
  160. package/packages/ui/src/patterns/Verification/VerificationBadge.vue +97 -0
  161. package/packages/ui/src/patterns/Verification/VerificationComponents.test.ts +153 -0
  162. package/packages/ui/src/patterns/Verification/VerificationDetailsPanel.vue +270 -0
  163. package/packages/ui/src/patterns/Verification/VerificationSummary.vue +171 -0
  164. package/packages/ui/src/patterns/Verification/index.ts +6 -0
  165. package/packages/ui/src/patterns/Verification/verification.types.ts +8 -0
  166. package/packages/ui/src/patterns/Verification/verification.utils.test.ts +37 -0
  167. package/packages/ui/src/patterns/Verification/verification.utils.ts +75 -0
  168. package/packages/ui/src/patterns/index.ts +25 -0
  169. package/packages/ui/src/primitives/Accordian/Accordian.vue +11 -0
  170. package/packages/ui/src/primitives/Accordian/AccordianItem.vue +14 -0
  171. package/packages/ui/src/primitives/Accordion/Accordion.props.ts +21 -0
  172. package/packages/ui/src/primitives/Accordion/Accordion.spec.md +50 -0
  173. package/packages/ui/src/primitives/Accordion/Accordion.types.ts +4 -0
  174. package/packages/ui/src/primitives/Accordion/Accordion.variants.ts +12 -0
  175. package/packages/ui/src/primitives/Accordion/Accordion.vue +71 -0
  176. package/packages/ui/src/primitives/Accordion/AccordionItem.props.ts +14 -0
  177. package/packages/ui/src/primitives/Accordion/AccordionItem.vue +40 -0
  178. package/packages/ui/src/primitives/Badge/Badge.props.ts +17 -0
  179. package/packages/ui/src/primitives/Badge/Badge.spec.md +17 -0
  180. package/packages/ui/src/primitives/Badge/Badge.types.ts +15 -0
  181. package/packages/ui/src/primitives/Badge/Badge.variants.ts +48 -0
  182. package/packages/ui/src/primitives/Badge/Badge.vue +31 -0
  183. package/packages/ui/src/primitives/Button/Button.props.ts +29 -0
  184. package/packages/ui/src/primitives/Button/Button.spec.md +139 -0
  185. package/packages/ui/src/primitives/Button/Button.types.ts +19 -0
  186. package/packages/ui/src/primitives/Button/Button.variants.ts +72 -0
  187. package/packages/ui/src/primitives/Button/Button.vue +90 -0
  188. package/packages/ui/src/primitives/Card/Card.props.ts +17 -0
  189. package/packages/ui/src/primitives/Card/Card.spec.md +29 -0
  190. package/packages/ui/src/primitives/Card/Card.types.ts +12 -0
  191. package/packages/ui/src/primitives/Card/Card.variants.ts +27 -0
  192. package/packages/ui/src/primitives/Card/Card.vue +37 -0
  193. package/packages/ui/src/primitives/Checkbox/Checkbox.props.ts +21 -0
  194. package/packages/ui/src/primitives/Checkbox/Checkbox.spec.md +51 -0
  195. package/packages/ui/src/primitives/Checkbox/Checkbox.types.ts +4 -0
  196. package/packages/ui/src/primitives/Checkbox/Checkbox.variants.ts +34 -0
  197. package/packages/ui/src/primitives/Checkbox/Checkbox.vue +92 -0
  198. package/packages/ui/src/primitives/Dialog/Dialog.props.ts +29 -0
  199. package/packages/ui/src/primitives/Dialog/Dialog.spec.md +52 -0
  200. package/packages/ui/src/primitives/Dialog/Dialog.types.ts +3 -0
  201. package/packages/ui/src/primitives/Dialog/Dialog.variants.ts +27 -0
  202. package/packages/ui/src/primitives/Dialog/Dialog.vue +78 -0
  203. package/packages/ui/src/primitives/Drawer/Drawer.props.ts +33 -0
  204. package/packages/ui/src/primitives/Drawer/Drawer.spec.md +50 -0
  205. package/packages/ui/src/primitives/Drawer/Drawer.types.ts +5 -0
  206. package/packages/ui/src/primitives/Drawer/Drawer.variants.ts +35 -0
  207. package/packages/ui/src/primitives/Drawer/Drawer.vue +88 -0
  208. package/packages/ui/src/primitives/FieldMessage/FieldMessage.props.ts +17 -0
  209. package/packages/ui/src/primitives/FieldMessage/FieldMessage.spec.md +35 -0
  210. package/packages/ui/src/primitives/FieldMessage/FieldMessage.types.ts +5 -0
  211. package/packages/ui/src/primitives/FieldMessage/FieldMessage.variants.ts +14 -0
  212. package/packages/ui/src/primitives/FieldMessage/FieldMessage.vue +40 -0
  213. package/packages/ui/src/primitives/FileInput/FileInput.props.ts +41 -0
  214. package/packages/ui/src/primitives/FileInput/FileInput.types.ts +6 -0
  215. package/packages/ui/src/primitives/FileInput/FileInput.variants.ts +46 -0
  216. package/packages/ui/src/primitives/FileInput/FileInput.vue +163 -0
  217. package/packages/ui/src/primitives/Input/Input.props.ts +29 -0
  218. package/packages/ui/src/primitives/Input/Input.spec.md +79 -0
  219. package/packages/ui/src/primitives/Input/Input.types.ts +13 -0
  220. package/packages/ui/src/primitives/Input/Input.variants.ts +54 -0
  221. package/packages/ui/src/primitives/Input/Input.vue +99 -0
  222. package/packages/ui/src/primitives/Label/Label.props.ts +25 -0
  223. package/packages/ui/src/primitives/Label/Label.spec.md +31 -0
  224. package/packages/ui/src/primitives/Label/Label.types.ts +3 -0
  225. package/packages/ui/src/primitives/Label/Label.variants.ts +17 -0
  226. package/packages/ui/src/primitives/Label/Label.vue +38 -0
  227. package/packages/ui/src/primitives/Menu/Menu.props.ts +17 -0
  228. package/packages/ui/src/primitives/Menu/Menu.spec.md +38 -0
  229. package/packages/ui/src/primitives/Menu/Menu.types.ts +10 -0
  230. package/packages/ui/src/primitives/Menu/Menu.variants.ts +10 -0
  231. package/packages/ui/src/primitives/Menu/Menu.vue +57 -0
  232. package/packages/ui/src/primitives/Popover/Popover.props.ts +25 -0
  233. package/packages/ui/src/primitives/Popover/Popover.spec.md +49 -0
  234. package/packages/ui/src/primitives/Popover/Popover.types.ts +3 -0
  235. package/packages/ui/src/primitives/Popover/Popover.variants.ts +18 -0
  236. package/packages/ui/src/primitives/Popover/Popover.vue +74 -0
  237. package/packages/ui/src/primitives/RadioGroup/RadioGroup.props.ts +29 -0
  238. package/packages/ui/src/primitives/RadioGroup/RadioGroup.spec.md +50 -0
  239. package/packages/ui/src/primitives/RadioGroup/RadioGroup.types.ts +12 -0
  240. package/packages/ui/src/primitives/RadioGroup/RadioGroup.variants.ts +48 -0
  241. package/packages/ui/src/primitives/RadioGroup/RadioGroup.vue +87 -0
  242. package/packages/ui/src/primitives/Separator/Separator.props.ts +9 -0
  243. package/packages/ui/src/primitives/Separator/Separator.spec.md +15 -0
  244. package/packages/ui/src/primitives/Separator/Separator.types.ts +3 -0
  245. package/packages/ui/src/primitives/Separator/Separator.variants.ts +8 -0
  246. package/packages/ui/src/primitives/Separator/Separator.vue +23 -0
  247. package/packages/ui/src/primitives/Skeleton/Skeleton.props.ts +21 -0
  248. package/packages/ui/src/primitives/Skeleton/Skeleton.spec.md +18 -0
  249. package/packages/ui/src/primitives/Skeleton/Skeleton.types.ts +5 -0
  250. package/packages/ui/src/primitives/Skeleton/Skeleton.variants.ts +18 -0
  251. package/packages/ui/src/primitives/Skeleton/Skeleton.vue +37 -0
  252. package/packages/ui/src/primitives/Spinner/Spinner.props.ts +13 -0
  253. package/packages/ui/src/primitives/Spinner/Spinner.spec.md +16 -0
  254. package/packages/ui/src/primitives/Spinner/Spinner.types.ts +5 -0
  255. package/packages/ui/src/primitives/Spinner/Spinner.variants.ts +15 -0
  256. package/packages/ui/src/primitives/Spinner/Spinner.vue +33 -0
  257. package/packages/ui/src/primitives/SplitButton/SplitButton.vue +108 -0
  258. package/packages/ui/src/primitives/Switch/Switch.props.ts +21 -0
  259. package/packages/ui/src/primitives/Switch/Switch.spec.md +49 -0
  260. package/packages/ui/src/primitives/Switch/Switch.types.ts +3 -0
  261. package/packages/ui/src/primitives/Switch/Switch.variants.ts +34 -0
  262. package/packages/ui/src/primitives/Switch/Switch.vue +71 -0
  263. package/packages/ui/src/primitives/Tabs/Tabs.props.ts +25 -0
  264. package/packages/ui/src/primitives/Tabs/Tabs.spec.md +48 -0
  265. package/packages/ui/src/primitives/Tabs/Tabs.types.ts +11 -0
  266. package/packages/ui/src/primitives/Tabs/Tabs.variants.ts +28 -0
  267. package/packages/ui/src/primitives/Tabs/Tabs.vue +59 -0
  268. package/packages/ui/src/primitives/Textarea/Textarea.props.ts +33 -0
  269. package/packages/ui/src/primitives/Textarea/Textarea.spec.md +59 -0
  270. package/packages/ui/src/primitives/Textarea/Textarea.types.ts +5 -0
  271. package/packages/ui/src/primitives/Textarea/Textarea.variants.ts +27 -0
  272. package/packages/ui/src/primitives/Textarea/Textarea.vue +74 -0
  273. package/packages/ui/src/primitives/Tooltip/Tooltip.props.ts +21 -0
  274. package/packages/ui/src/primitives/Tooltip/Tooltip.spec.md +45 -0
  275. package/packages/ui/src/primitives/Tooltip/Tooltip.types.ts +3 -0
  276. package/packages/ui/src/primitives/Tooltip/Tooltip.variants.ts +4 -0
  277. package/packages/ui/src/primitives/Tooltip/Tooltip.vue +31 -0
  278. package/packages/ui/src/primitives/TreeView/TreeView.types.ts +10 -0
  279. package/packages/ui/src/primitives/TreeView/TreeView.vue +113 -0
  280. package/packages/ui/src/primitives/TreeView/TreeViewNode.vue +190 -0
  281. package/packages/ui/src/primitives/index.ts +29 -0
  282. package/packages/ui/src/style.css +7 -0
  283. package/packages/ui/src/style.js +1 -0
  284. package/packages/ui/src/themes/armour.css +147 -0
  285. package/packages/ui/src/themes/aurora.css +147 -0
  286. package/packages/ui/src/themes/citrine-ash.css +147 -0
  287. package/packages/ui/src/themes/concord.css +147 -0
  288. package/packages/ui/src/themes/garnet-honey.css +147 -0
  289. package/packages/ui/src/themes/harbor-rose.css +147 -0
  290. package/packages/ui/src/themes/ledger.css +147 -0
  291. package/packages/ui/src/themes/neon-noir.css +74 -0
  292. package/packages/ui/src/themes/obsidian-iris.css +147 -0
  293. package/packages/ui/src/themes/pixpax.css +147 -0
  294. package/packages/ui/src/themes/print.css +147 -0
  295. package/packages/ui/src/themes/prism.css +147 -0
  296. package/packages/ui/src/themes/proof.css +145 -0
  297. package/packages/ui/src/themes/semanticThemeContract.js +2256 -0
  298. package/packages/ui/src/themes/spruce-ink.css +147 -0
  299. package/packages/ui/src/themes/sunset.css +147 -0
  300. package/packages/ui/tailwind.config.js +64 -0
  301. package/packages/ui/vite.config.js +35 -0
  302. package/packages/ui/vite.config.js.timestamp-1780697224943-89fbc929987bc.mjs +38 -0
  303. package/packages/utils/CHANGELOG.md +111 -0
  304. package/packages/utils/README.md +3 -0
  305. package/packages/utils/package.json +46 -0
  306. package/packages/utils/src/index.test.js +39 -0
  307. package/packages/utils/src/index.ts +289 -0
  308. package/packages/utils/tsconfig.build.json +12 -0
  309. package/packages/utils/vite.config.js +28 -0
  310. package/pnpm-workspace.yaml +8 -0
  311. package/scripts/vite/package-lib-config.ts +59 -0
  312. package/tsconfig.json +24 -0
  313. package/tsconfig.node.json +9 -0
@@ -0,0 +1,12 @@
1
+ {
2
+ "extends": "../../tsconfig.json",
3
+ "compilerOptions": {
4
+ "target": "ES2020",
5
+ "module": "NodeNext",
6
+ "moduleResolution": "NodeNext",
7
+ "lib": ["ES2020", "DOM"],
8
+ "types": ["node", "vitest/globals"]
9
+ },
10
+ "include": ["src/**/*.ts", "test/**/*.ts", "vite.config.ts"],
11
+ "exclude": ["dist", "node_modules"]
12
+ }
@@ -0,0 +1,27 @@
1
+ import { dirname, resolve } from "node:path";
2
+ import { fileURLToPath } from "node:url";
3
+ import { defineConfig } from "vite";
4
+
5
+ const configDir = dirname(fileURLToPath(import.meta.url));
6
+
7
+ export default defineConfig({
8
+ build: {
9
+ outDir: "dist",
10
+ emptyOutDir: false,
11
+ sourcemap: true,
12
+ target: "es2020",
13
+ minify: false,
14
+ lib: {
15
+ entry: resolve(configDir, "src/index.ts"),
16
+ name: "ternentLedgerBrowser",
17
+ fileName: () => "browser.js",
18
+ formats: ["es"],
19
+ },
20
+ rollupOptions: {
21
+ output: {
22
+ format: "es",
23
+ inlineDynamicImports: true,
24
+ },
25
+ },
26
+ },
27
+ });
@@ -0,0 +1,39 @@
1
+ import { dirname, resolve } from "node:path";
2
+ import { fileURLToPath } from "node:url";
3
+ import { defineConfig } from "vite";
4
+ import dts from "vite-plugin-dts";
5
+ import { createPackageExternal, resolvePackageDir } from "../../scripts/vite/package-lib-config";
6
+
7
+ const configDir = dirname(fileURLToPath(import.meta.url));
8
+ const external = createPackageExternal(resolvePackageDir(import.meta.url));
9
+
10
+ export default defineConfig({
11
+ build: {
12
+ outDir: "dist",
13
+ sourcemap: true,
14
+ target: "es2020",
15
+ minify: false,
16
+ lib: {
17
+ entry: resolve(configDir, "src/index.ts"),
18
+ name: "ternentLedger",
19
+ fileName: "index",
20
+ formats: ["es"],
21
+ },
22
+ rollupOptions: {
23
+ external,
24
+ output: {
25
+ format: "es",
26
+ entryFileNames: "index.js",
27
+ },
28
+ },
29
+ },
30
+ plugins: [
31
+ dts({
32
+ tsConfigFilePath: resolve(configDir, "tsconfig.json"),
33
+ }),
34
+ ],
35
+ test: {
36
+ environment: "node",
37
+ include: ["test/**/*.test.ts"],
38
+ },
39
+ });
@@ -0,0 +1,137 @@
1
+ # @ternent/seal-cli
2
+
3
+ ## 0.3.10
4
+
5
+ ### Patch Changes
6
+
7
+ - [`9d23630e3dd0d0ffb22b62e3bf159dd01d60bbaa`](https://github.com/samternent/home/commit/9d23630e3dd0d0ffb22b62e3bf159dd01d60bbaa) Thanks [@samternent](https://github.com/samternent)! - Fix ternent-api deploy packaging by building the proof-only Seal surface used by PixPax issuer and including the missing runtime package outputs in the image build.
8
+
9
+ ## 0.3.9
10
+
11
+ ### Patch Changes
12
+
13
+ - Updated dependencies [[`ad1b704fb8ba54b12d6140ffbed0fee66adcb6fd`](https://github.com/samternent/home/commit/ad1b704fb8ba54b12d6140ffbed0fee66adcb6fd)]:
14
+ - ternent-utils@1.1.3
15
+
16
+ ## 0.3.8
17
+
18
+ ### Patch Changes
19
+
20
+ - Updated dependencies [[`4932df0ce286521f874ffd670ca022592f7d3462`](https://github.com/samternent/home/commit/4932df0ce286521f874ffd670ca022592f7d3462)]:
21
+ - ternent-utils@1.1.2
22
+
23
+ ## 0.3.7
24
+
25
+ ### Patch Changes
26
+
27
+ - [`cb63d9c1dc91e0cd3924bafd5abcde89cc02992f`](https://github.com/samternent/home/commit/cb63d9c1dc91e0cd3924bafd5abcde89cc02992f) Thanks [@samternent](https://github.com/samternent)! - Fix workflows
28
+
29
+ - Updated dependencies [[`cb63d9c1dc91e0cd3924bafd5abcde89cc02992f`](https://github.com/samternent/home/commit/cb63d9c1dc91e0cd3924bafd5abcde89cc02992f)]:
30
+ - @ternent/identity@0.3.1
31
+ - @ternent/armour@0.1.5
32
+
33
+ ## 0.3.6
34
+
35
+ ### Patch Changes
36
+
37
+ - [`acf974919a1176da235e7ec7468c46df8bc13402`](https://github.com/samternent/home/commit/acf974919a1176da235e7ec7468c46df8bc13402) Thanks [@samternent](https://github.com/samternent)! - Update build configs
38
+
39
+ - Updated dependencies [[`acf974919a1176da235e7ec7468c46df8bc13402`](https://github.com/samternent/home/commit/acf974919a1176da235e7ec7468c46df8bc13402)]:
40
+ - @ternent/armour@0.1.4
41
+
42
+ ## 0.3.5
43
+
44
+ ### Patch Changes
45
+
46
+ - [`3fd51c9f51ccc3d816d044aa8aa161d9683534c3`](https://github.com/samternent/home/commit/3fd51c9f51ccc3d816d044aa8aa161d9683534c3) Thanks [@samternent](https://github.com/samternent)! - alias utils
47
+
48
+ ## 0.3.4
49
+
50
+ ### Patch Changes
51
+
52
+ - [`109f8c3989b16a161a34b933dcad68390d9219c5`](https://github.com/samternent/home/commit/109f8c3989b16a161a34b933dcad68390d9219c5) Thanks [@samternent](https://github.com/samternent)! - Fix deps
53
+
54
+ - Updated dependencies [[`109f8c3989b16a161a34b933dcad68390d9219c5`](https://github.com/samternent/home/commit/109f8c3989b16a161a34b933dcad68390d9219c5)]:
55
+ - @ternent/armour@0.1.3
56
+
57
+ ## 0.3.3
58
+
59
+ ### Patch Changes
60
+
61
+ - [`91246e9d2645faa6d25b0a05cc507bc0c66ade01`](https://github.com/samternent/home/commit/91246e9d2645faa6d25b0a05cc507bc0c66ade01) Thanks [@samternent](https://github.com/samternent)! - Add armoured seal
62
+
63
+ ## 0.3.2
64
+
65
+ ### Patch Changes
66
+
67
+ - [`e3b14dab10ce8da5b875826383c71283cbd5b99c`](https://github.com/samternent/home/commit/e3b14dab10ce8da5b875826383c71283cbd5b99c) Thanks [@samternent](https://github.com/samternent)! - Adds create identity to seal-cli
68
+
69
+ ## 0.3.1
70
+
71
+ ### Patch Changes
72
+
73
+ - [`ee7aa501b6a57f0896e9a3b8c13c3446f8751a5a`](https://github.com/samternent/home/commit/ee7aa501b6a57f0896e9a3b8c13c3446f8751a5a) Thanks [@samternent](https://github.com/samternent)! - Fix the package runtime dependency graph by shipping `@ternent/identity` and `ternent-utils` as production dependencies. This prevents browser consumers that bundle Seal proof helpers from source from failing to resolve `@ternent/identity` during app builds.
74
+
75
+ ## 0.3.0
76
+
77
+ ### Minor Changes
78
+
79
+ - [`f364cb7d38f18770d32fe4a628b3c8b4bcccc31f`](https://github.com/samternent/home/commit/f364cb7d38f18770d32fe4a628b3c8b4bcccc31f) Thanks [@samternent](https://github.com/samternent)! - Introduce the new `@ternent/identity` package with Ed25519 signing, BIP-39 mnemonic recovery, Noble-backed Curve25519 conversion helpers, and versioned JSON identity exports. Migrate `@ternent/seal-cli` and the Seal web app to the seed-material envelope format, `SEAL_IDENTITY` configuration, and Ed25519 proof artifacts while keeping `ternent-identity` as the documented legacy package for existing Concord and PixPax consumers.
80
+
81
+ ## 0.2.0
82
+
83
+ ### Minor Changes
84
+
85
+ - [`f364cb7d38f18770d32fe4a628b3c8b4bcccc31f`](https://github.com/samternent/home/commit/f364cb7d38f18770d32fe4a628b3c8b4bcccc31f) Thanks [@samternent](https://github.com/samternent)! - Introduce the new `@ternent/identity` package with Ed25519 signing, X25519 bridge helpers, and versioned JSON identity exports. Migrate `@ternent/seal-cli` and the Seal web app to the new identity format, `SEAL_IDENTITY` configuration, and Ed25519 proof artifacts while keeping `ternent-identity` as the documented legacy package for existing Concord and PixPax consumers.
86
+
87
+ ### Patch Changes
88
+
89
+ - [`f364cb7d38f18770d32fe4a628b3c8b4bcccc31f`](https://github.com/samternent/home/commit/f364cb7d38f18770d32fe4a628b3c8b4bcccc31f) Thanks [@samternent](https://github.com/samternent)! - Move idenity algo with v2
90
+
91
+ ## 0.1.8
92
+
93
+ ### Patch Changes
94
+
95
+ - [`e694239710abbe9ab15bd386901f34334f7692e5`](https://github.com/samternent/home/commit/e694239710abbe9ab15bd386901f34334f7692e5) Thanks [@samternent](https://github.com/samternent)! - code deletion and renaming
96
+
97
+ ## 0.1.7
98
+
99
+ ### Patch Changes
100
+
101
+ - [`ba97b4b9466f7c16a7226609f8047e5367afdd70`](https://github.com/samternent/home/commit/ba97b4b9466f7c16a7226609f8047e5367afdd70) Thanks [@samternent](https://github.com/samternent)! - Update seal publish
102
+
103
+ ## 0.1.6
104
+
105
+ ### Patch Changes
106
+
107
+ - [`44a52fc20be15459f3771f37a002d5ea40068d10`](https://github.com/samternent/home/commit/44a52fc20be15459f3771f37a002d5ea40068d10) Thanks [@samternent](https://github.com/samternent)! - Bump version with action
108
+
109
+ ## 0.1.5
110
+
111
+ ### Patch Changes
112
+
113
+ - [`be5ecca6e2c9db462407c4edd6d3f668c5d51060`](https://github.com/samternent/home/commit/be5ecca6e2c9db462407c4edd6d3f668c5d51060) Thanks [@samternent](https://github.com/samternent)! - Publish seal-cli
114
+
115
+ ## 0.1.4
116
+
117
+ ### Patch Changes
118
+
119
+ - [`0b11c7d885e591fb1c9f373d209abe9d9f9dfb61`](https://github.com/samternent/home/commit/0b11c7d885e591fb1c9f373d209abe9d9f9dfb61) Thanks [@samternent](https://github.com/samternent)! - Seal publsh bump
120
+
121
+ ## 0.1.3
122
+
123
+ ### Patch Changes
124
+
125
+ - [`d1ffa2ed2d23d6c007ab829c0c4d4fd026ce188b`](https://github.com/samternent/home/commit/d1ffa2ed2d23d6c007ab829c0c4d4fd026ce188b) Thanks [@samternent](https://github.com/samternent)! - Update seal-cli scoping
126
+
127
+ ## 0.1.2
128
+
129
+ ### Patch Changes
130
+
131
+ - [`fd130eb5815c2ea636f66acb5a81c947c4081d95`](https://github.com/samternent/home/commit/fd130eb5815c2ea636f66acb5a81c947c4081d95) Thanks [@samternent](https://github.com/samternent)! - Adds to publish script
132
+
133
+ ## 0.1.1
134
+
135
+ ### Patch Changes
136
+
137
+ - [`36dd9bfac417eba61b8e81756cf15a3d3ac7a216`](https://github.com/samternent/home/commit/36dd9bfac417eba61b8e81756cf15a3d3ac7a216) Thanks [@samternent](https://github.com/samternent)! - Adds cli and GHA
@@ -0,0 +1,8 @@
1
+ # CLAUDE.md
2
+
3
+ `@ternent/seal-cli` signs/verifies artifacts and supports recipient-targeted encrypted artifacts.
4
+
5
+ - Treat manifest/proof/artifact schema stability as critical.
6
+ - Keep cryptographic operations explicit and auditable.
7
+ - Use armour/identity composition; avoid duplicated crypto implementations.
8
+ - Preserve offline verification and deterministic output behavior where expected.
@@ -0,0 +1,258 @@
1
+ # @ternent/seal-cli
2
+
3
+ Seal signs files and manifests. It verifies artifacts offline. It emits portable proof JSON for legacy flows and recipient-targeted sealed artifacts for encrypted flows.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ pnpm add -D @ternent/seal-cli
9
+ ```
10
+
11
+ ## Environment
12
+
13
+ Create a signer identity with Seal:
14
+
15
+ ```bash
16
+ seal identity create --out identity.json
17
+ ```
18
+
19
+ Create a mnemonic-backed identity and save the recovery phrase separately:
20
+
21
+ ```bash
22
+ seal identity create --out identity.json --words 24 --mnemonic-out seal-seed-phrase.txt
23
+ ```
24
+
25
+ `@ternent/seal-cli` reads signer material from a v2 identity JSON payload:
26
+
27
+ ```bash
28
+ export SEAL_IDENTITY="$(cat identity.json)"
29
+ # or
30
+ export SEAL_IDENTITY_FILE="./identity.json"
31
+ ```
32
+
33
+ ## Commands
34
+
35
+ ```bash
36
+ seal identity create --out identity.json
37
+ seal identity create --out identity.json --words 24 --mnemonic-out seal-seed-phrase.txt
38
+ seal manifest create --input apps/seal/dist --out apps/seal/dist/dist-manifest.json
39
+ seal sign --input apps/seal/dist/dist-manifest.json --out apps/seal/dist/proof.json
40
+ seal sign --input artifact.tar.gz --recipient age1... --recipient age1... --out artifact.seal.json
41
+ seal verify --proof apps/seal/dist/proof.json --input apps/seal/dist/dist-manifest.json --json
42
+ seal verify --artifact artifact.seal.json --json
43
+ seal public-key --json
44
+ ```
45
+
46
+ When one or more `--recipient` flags are provided, Seal encrypts the input bytes with `@ternent/armour`, then signs the unsigned artifact container. Recipient values are never serialized into the emitted artifact.
47
+
48
+ ## JavaScript API
49
+
50
+ Create a Seal-compatible identity and persist it as the `SEAL_IDENTITY` payload:
51
+
52
+ ```ts
53
+ import {
54
+ createSealIdentity,
55
+ createSealMnemonicIdentity,
56
+ exportIdentityJson,
57
+ } from "@ternent/seal-cli";
58
+
59
+ const identity = await createSealIdentity();
60
+ const identityJson = exportIdentityJson(identity);
61
+
62
+ const { identity: mnemonicIdentity, mnemonic } = await createSealMnemonicIdentity({ words: 24 });
63
+ ```
64
+
65
+ Create and verify recipient-targeted artifacts:
66
+
67
+ ```ts
68
+ import {
69
+ createSealArtifact,
70
+ decryptSealArtifactPayload,
71
+ verifySealArtifact,
72
+ } from "@ternent/seal-cli/artifact";
73
+
74
+ const artifact = await createSealArtifact({
75
+ signer: { identity },
76
+ subjectPath: "artifact.tar.gz",
77
+ payload: artifactBytes,
78
+ recipients: ["age1..."],
79
+ });
80
+
81
+ const verification = await verifySealArtifact(artifact);
82
+ const plaintext = await decryptSealArtifactPayload({
83
+ artifact,
84
+ identity,
85
+ });
86
+ ```
87
+
88
+ ## GitHub Actions
89
+
90
+ Use the published GitHub Action:
91
+
92
+ ```yaml
93
+ - name: Generate Seal artifacts
94
+ uses: samternent/seal-action@v2
95
+ env:
96
+ SEAL_IDENTITY: ${{ secrets.SEAL_IDENTITY }}
97
+ with:
98
+ assets-directory: dist
99
+ package-name: @ternent/seal-cli
100
+ package-version: latest
101
+ ```
102
+
103
+ The action is intentionally narrow. Your workflow still needs to:
104
+
105
+ - check out the repo
106
+ - set up Node
107
+ - build the static directory you want to sign
108
+
109
+ Inputs:
110
+
111
+ - `assets-directory`: built static directory to sign
112
+ - `working-directory`: base directory for path resolution
113
+ - `manifest-name`: manifest output filename
114
+ - `proof-name`: proof output filename
115
+ - `public-key-name`: public key output filename
116
+ - `package-name`: npm package name to execute when `cli-command` is omitted
117
+ - `package-version`: npm version or dist-tag to execute when `cli-command` is omitted
118
+ - `cli-command`: command prefix used to invoke Seal
119
+
120
+ Outputs:
121
+
122
+ - `manifest-path`
123
+ - `proof-path`
124
+ - `public-key-path`
125
+
126
+ The default path is npm-backed: if `cli-command` is empty, the action runs `npm exec --yes --package=<package-name>@<package-version> seal`.
127
+
128
+ ## Schemas
129
+
130
+ Manifest:
131
+
132
+ ```json
133
+ {
134
+ "version": "1",
135
+ "type": "seal-manifest",
136
+ "root": "dist",
137
+ "files": {
138
+ "assets/index.js": "sha256:..."
139
+ }
140
+ }
141
+ ```
142
+
143
+ Proof:
144
+
145
+ ```json
146
+ {
147
+ "version": "2",
148
+ "type": "seal-proof",
149
+ "algorithm": "Ed25519",
150
+ "createdAt": "2026-03-13T00:00:00.000Z",
151
+ "subject": {
152
+ "kind": "manifest",
153
+ "path": "dist-manifest.json",
154
+ "hash": "sha256:..."
155
+ },
156
+ "signer": {
157
+ "publicKey": "BASE64URL-RAW-ED25519-PUBLIC-KEY",
158
+ "keyId": "..."
159
+ },
160
+ "signature": "..."
161
+ }
162
+ ```
163
+
164
+ Encrypted artifact:
165
+
166
+ ```json
167
+ {
168
+ "version": "1",
169
+ "type": "seal-artifact",
170
+ "manifest": {
171
+ "version": "1",
172
+ "payloadType": "encrypted",
173
+ "payloadScheme": "age",
174
+ "payloadMode": "recipients",
175
+ "payloadEncoding": "armor",
176
+ "payloadHash": "sha256:..."
177
+ },
178
+ "payload": {
179
+ "type": "encrypted",
180
+ "scheme": "age",
181
+ "mode": "recipients",
182
+ "encoding": "armor",
183
+ "data": "-----BEGIN AGE ENCRYPTED FILE-----\n...\n-----END AGE ENCRYPTED FILE-----\n"
184
+ },
185
+ "proof": {
186
+ "version": "2",
187
+ "type": "seal-proof",
188
+ "algorithm": "Ed25519",
189
+ "createdAt": "2026-03-17T00:00:00.000Z",
190
+ "subject": {
191
+ "kind": "artifact",
192
+ "path": "artifact.tar.gz",
193
+ "hash": "sha256:..."
194
+ },
195
+ "signer": {
196
+ "publicKey": "BASE64URL-RAW-ED25519-PUBLIC-KEY",
197
+ "keyId": "..."
198
+ },
199
+ "signature": "..."
200
+ }
201
+ }
202
+ ```
203
+
204
+ Public key:
205
+
206
+ ```json
207
+ {
208
+ "version": "2",
209
+ "type": "seal-public-key",
210
+ "algorithm": "Ed25519",
211
+ "publicKey": "BASE64URL-RAW-ED25519-PUBLIC-KEY",
212
+ "keyId": "..."
213
+ }
214
+ ```
215
+
216
+ Identity:
217
+
218
+ ```json
219
+ {
220
+ "format": "ternent-identity",
221
+ "version": "2",
222
+ "algorithm": "Ed25519",
223
+ "createdAt": "2026-03-17T00:00:00.000Z",
224
+ "publicKey": "BASE64URL-RAW-ED25519-PUBLIC-KEY",
225
+ "keyId": "...",
226
+ "material": {
227
+ "kind": "seed",
228
+ "seed": "BASE64URL-RAW-32-BYTE-SEED"
229
+ }
230
+ }
231
+ ```
232
+
233
+ ## Frontend Contract
234
+
235
+ `apps/seal` verifies published artifacts by fetching:
236
+
237
+ - `/dist-manifest.json`
238
+ - `/proof.json`
239
+ - `/public-key.json` (optional)
240
+
241
+ Browser verification reuses `@ternent/seal-cli/proof`, `@ternent/seal-cli/crypto`, `@ternent/identity`, and `ternent-utils`.
242
+
243
+ Validation rules:
244
+
245
+ - parse `seal-proof`
246
+ - recompute the fetched manifest hash from raw bytes
247
+ - verify the embedded signature
248
+ - verify `signer.keyId`
249
+ - if `/public-key.json` exists, require its `publicKey` and `keyId` to match the proof signer
250
+
251
+ ## Exit Codes
252
+
253
+ - `0` success
254
+ - `1` general failure
255
+ - `2` subject hash mismatch
256
+ - `3` signature invalid
257
+ - `4` invalid proof
258
+ - `5` key or config error
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env node
2
+ import { runCli } from "../dist/cli.js";
3
+
4
+ runCli(process.argv.slice(2)).then((exitCode) => {
5
+ process.exitCode = exitCode;
6
+ });
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "@ternent/seal",
3
+ "version": "0.3.10",
4
+ "description": "Deterministic artifact signing for Seal",
5
+ "keywords": [
6
+ "cli",
7
+ "integrity",
8
+ "manifest",
9
+ "seal",
10
+ "signature"
11
+ ],
12
+ "homepage": "https://github.com/ternent/core/tree/main/packages/seal",
13
+ "bugs": {
14
+ "url": "https://github.com/ternent/core/issues"
15
+ },
16
+ "license": "ISC",
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "git+https://github.com/ternent/core.git",
20
+ "directory": "packages/seal"
21
+ },
22
+ "bin": {
23
+ "seal": "bin/seal"
24
+ },
25
+ "files": [
26
+ "bin",
27
+ "dist",
28
+ "README.md"
29
+ ],
30
+ "type": "module",
31
+ "sideEffects": false,
32
+ "main": "dist/index.js",
33
+ "module": "dist/index.js",
34
+ "exports": {
35
+ ".": "./dist/index.js",
36
+ "./proof": "./dist/proof.js",
37
+ "./artifact": "./dist/artifact.js",
38
+ "./manifest": "./dist/manifest.js",
39
+ "./crypto": "./dist/crypto.js",
40
+ "./errors": "./dist/errors.js"
41
+ },
42
+ "publishConfig": {
43
+ "access": "public"
44
+ },
45
+ "scripts": {
46
+ "build:proof": "vite build --mode proof-only",
47
+ "build": "vite build",
48
+ "test": "vitest run"
49
+ },
50
+ "dependencies": {
51
+ "@ternent/armour": "workspace:*",
52
+ "@ternent/identity": "workspace:*",
53
+ "@ternent/utils": "workspace:*"
54
+ },
55
+ "devDependencies": {
56
+ "vite": "^2.9.18",
57
+ "vitest": "^1.6.0"
58
+ }
59
+ }