@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.
- package/.changeset/README.md +8 -0
- package/.changeset/config.json +17 -0
- package/.github/workflows/deploy-armour.yml +42 -0
- package/.github/workflows/deploy-identity.yml +42 -0
- package/.github/workflows/deploy-seal.yml +42 -0
- package/.github/workflows/deploy-ui.yml +42 -0
- package/.github/workflows/deploy-utils.yml +42 -0
- package/.github/workflows/release-create.yml +59 -0
- package/.github/workflows/release-publish.yml +54 -0
- package/.nvmrc +1 -0
- package/.ops/publish.mjs +31 -0
- package/package.json +16 -0
- package/packages/README.md +0 -0
- package/packages/armour/CHANGELOG.md +66 -0
- package/packages/armour/CLAUDE.md +8 -0
- package/packages/armour/README.md +103 -0
- package/packages/armour/SPEC.md +92 -0
- package/packages/armour/package.json +45 -0
- package/packages/armour/src/constants.ts +5 -0
- package/packages/armour/src/deps.d.ts +56 -0
- package/packages/armour/src/errors.ts +172 -0
- package/packages/armour/src/files.ts +73 -0
- package/packages/armour/src/identity.ts +72 -0
- package/packages/armour/src/index.ts +56 -0
- package/packages/armour/src/init.ts +10 -0
- package/packages/armour/src/passphrase.ts +33 -0
- package/packages/armour/src/recipients.ts +73 -0
- package/packages/armour/src/text.ts +68 -0
- package/packages/armour/src/types.ts +93 -0
- package/packages/armour/test/armour.test.ts +270 -0
- package/packages/armour/tsconfig.build.json +12 -0
- package/packages/armour/tsconfig.json +12 -0
- package/packages/armour/vite.config.ts +29 -0
- package/packages/concord/CHANGELOG.md +83 -0
- package/packages/concord/CLAUDE.md +9 -0
- package/packages/concord/README.md +146 -0
- package/packages/concord/SPEC.md +287 -0
- package/packages/concord/package.json +51 -0
- package/packages/concord/src/app.ts +717 -0
- package/packages/concord/src/errors.ts +9 -0
- package/packages/concord/src/index.ts +20 -0
- package/packages/concord/src/types.ts +127 -0
- package/packages/concord/test/concord.test.ts +978 -0
- package/packages/concord/tsconfig.json +12 -0
- package/packages/concord/vite.browser.config.ts +27 -0
- package/packages/concord/vite.config.ts +35 -0
- package/packages/concord/vite.config.ts.timestamp-1774262297922-ffd76e35ea668.mjs +83 -0
- package/packages/identity/CHANGELOG.md +47 -0
- package/packages/identity/README.md +236 -0
- package/packages/identity/package.json +41 -0
- package/packages/identity/src/index.ts +538 -0
- package/packages/identity/test/identity.test.ts +172 -0
- package/packages/identity/tsconfig.build.json +12 -0
- package/packages/identity/vite.config.ts +17 -0
- package/packages/ledger/CHANGELOG.md +69 -0
- package/packages/ledger/CLAUDE.md +9 -0
- package/packages/ledger/SPEC.md +304 -0
- package/packages/ledger/package.json +48 -0
- package/packages/ledger/src/index.ts +2 -0
- package/packages/ledger/src/ledger.ts +1286 -0
- package/packages/ledger/src/seal-cli.d.ts +25 -0
- package/packages/ledger/src/types.ts +294 -0
- package/packages/ledger/test/ledger.test.ts +838 -0
- package/packages/ledger/tsconfig.json +12 -0
- package/packages/ledger/vite.browser.config.ts +27 -0
- package/packages/ledger/vite.config.ts +39 -0
- package/packages/seal/CHANGELOG.md +137 -0
- package/packages/seal/CLAUDE.md +8 -0
- package/packages/seal/README.md +258 -0
- package/packages/seal/bin/seal +6 -0
- package/packages/seal/package.json +59 -0
- package/packages/seal/src/artifact.ts +380 -0
- package/packages/seal/src/cli.ts +372 -0
- package/packages/seal/src/commands/identity.ts +52 -0
- package/packages/seal/src/commands/manifest.ts +71 -0
- package/packages/seal/src/commands/publicKey.ts +7 -0
- package/packages/seal/src/commands/sign.ts +56 -0
- package/packages/seal/src/commands/verify.ts +54 -0
- package/packages/seal/src/crypto.ts +85 -0
- package/packages/seal/src/errors.ts +88 -0
- package/packages/seal/src/index.ts +5 -0
- package/packages/seal/src/manifest.ts +114 -0
- package/packages/seal/src/node.ts +18 -0
- package/packages/seal/src/proof.ts +344 -0
- package/packages/seal/test/artifact.test.ts +86 -0
- package/packages/seal/test/cli.test.ts +208 -0
- package/packages/seal/test/crypto.test.ts +21 -0
- package/packages/seal/test/manifest.test.ts +32 -0
- package/packages/seal/test/proof.test.ts +60 -0
- package/packages/seal/tsconfig.json +12 -0
- package/packages/seal/vite.config.ts +54 -0
- package/packages/ui/CHANGELOG.md +393 -0
- package/packages/ui/README.md +57 -0
- package/packages/ui/jsconfig.json +19 -0
- package/packages/ui/package.json +64 -0
- package/packages/ui/scripts/check-tokens.js +56 -0
- package/packages/ui/scripts/generate-theme-css.mjs +85 -0
- package/packages/ui/src/design-system/base.css +8 -0
- package/packages/ui/src/design-system/docs/ACCESSIBILITY_RULES.md +186 -0
- package/packages/ui/src/design-system/docs/AI_SYSTEM.md +281 -0
- package/packages/ui/src/design-system/docs/PATTERN_RULES.md +83 -0
- package/packages/ui/src/design-system/docs/PRIMITIVE_RULES.md +258 -0
- package/packages/ui/src/design-system/docs/TOKEN_RULES.md +235 -0
- package/packages/ui/src/design-system/docs/VISUAL_DIRECTION.md +68 -0
- package/packages/ui/src/design-system/foundation.js +420 -0
- package/packages/ui/src/design-system/tokens.css +140 -0
- package/packages/ui/src/design-system/tokens.js +327 -0
- package/packages/ui/src/design-system/utils.js +246 -0
- package/packages/ui/src/main.js +4 -0
- package/packages/ui/src/patterns/FeatureCard/FeatureCard.spec.md +24 -0
- package/packages/ui/src/patterns/FeatureCard/FeatureCard.types.ts +8 -0
- package/packages/ui/src/patterns/FeatureCard/FeatureCard.vue +175 -0
- package/packages/ui/src/patterns/FormField/FormField.spec.md +65 -0
- package/packages/ui/src/patterns/FormField/FormField.types.ts +11 -0
- package/packages/ui/src/patterns/FormField/FormField.vue +87 -0
- package/packages/ui/src/patterns/IdentityGlyph/IdentityGlyph.vue +61 -0
- package/packages/ui/src/patterns/IdentityGlyph/IdentityHandle.vue +58 -0
- package/packages/ui/src/patterns/IdentityGlyph/identityGlyph.types.ts +36 -0
- package/packages/ui/src/patterns/IdentityGlyph/identityGlyph.utils.ts +585 -0
- package/packages/ui/src/patterns/IdentityGlyph/index.ts +5 -0
- package/packages/ui/src/patterns/KeyValueList/KeyValueList.spec.md +28 -0
- package/packages/ui/src/patterns/KeyValueList/KeyValueList.types.ts +16 -0
- package/packages/ui/src/patterns/KeyValueList/KeyValueList.vue +50 -0
- package/packages/ui/src/patterns/LandingPage/LandingIcon.vue +90 -0
- package/packages/ui/src/patterns/LandingPage/LandingPage.spec.md +24 -0
- package/packages/ui/src/patterns/LandingPage/LandingPage.types.ts +212 -0
- package/packages/ui/src/patterns/LandingPage/LandingPage.vue +599 -0
- package/packages/ui/src/patterns/ListWorkspaceLayout/ListWorkspaceLayout.test.ts +33 -0
- package/packages/ui/src/patterns/ListWorkspaceLayout/ListWorkspaceLayout.vue +44 -0
- package/packages/ui/src/patterns/Logo/Logo.spec.md +22 -0
- package/packages/ui/src/patterns/Logo/Logo.vue +160 -0
- package/packages/ui/src/patterns/PageSurface/PageSurface.spec.md +15 -0
- package/packages/ui/src/patterns/PageSurface/PageSurface.vue +85 -0
- package/packages/ui/src/patterns/PanelChrome/PanelChrome.spec.md +39 -0
- package/packages/ui/src/patterns/PanelChrome/PanelChrome.types.ts +1 -0
- package/packages/ui/src/patterns/PanelChrome/PanelChrome.vue +187 -0
- package/packages/ui/src/patterns/PreviewPanel/PreviewPanel.spec.md +31 -0
- package/packages/ui/src/patterns/PreviewPanel/PreviewPanel.types.ts +23 -0
- package/packages/ui/src/patterns/PreviewPanel/PreviewPanel.vue +354 -0
- package/packages/ui/src/patterns/RecordList/RecordList.spec.md +35 -0
- package/packages/ui/src/patterns/RecordList/RecordList.test.ts +42 -0
- package/packages/ui/src/patterns/RecordList/RecordList.types.ts +9 -0
- package/packages/ui/src/patterns/RecordList/RecordList.utils.ts +5 -0
- package/packages/ui/src/patterns/RecordList/RecordList.vue +134 -0
- package/packages/ui/src/patterns/SectionClarifier/SectionClarifier.vue +85 -0
- package/packages/ui/src/patterns/SectionIntro/SectionIntro.spec.md +25 -0
- package/packages/ui/src/patterns/SectionIntro/SectionIntro.types.ts +7 -0
- package/packages/ui/src/patterns/SectionIntro/SectionIntro.vue +141 -0
- package/packages/ui/src/patterns/SidebarNav/SidebarNav.spec.md +34 -0
- package/packages/ui/src/patterns/SidebarNav/SidebarNav.types.ts +17 -0
- package/packages/ui/src/patterns/SidebarNav/SidebarNav.vue +110 -0
- package/packages/ui/src/patterns/SplitView/SplitView.spec.md +28 -0
- package/packages/ui/src/patterns/SplitView/SplitView.test.ts +22 -0
- package/packages/ui/src/patterns/SplitView/SplitView.types.ts +3 -0
- package/packages/ui/src/patterns/SplitView/SplitView.utils.ts +13 -0
- package/packages/ui/src/patterns/SplitView/SplitView.vue +39 -0
- package/packages/ui/src/patterns/StepList/StepList.spec.md +15 -0
- package/packages/ui/src/patterns/StepList/StepList.types.ts +4 -0
- package/packages/ui/src/patterns/StepList/StepList.vue +91 -0
- package/packages/ui/src/patterns/Verification/VerificationBadge.vue +97 -0
- package/packages/ui/src/patterns/Verification/VerificationComponents.test.ts +153 -0
- package/packages/ui/src/patterns/Verification/VerificationDetailsPanel.vue +270 -0
- package/packages/ui/src/patterns/Verification/VerificationSummary.vue +171 -0
- package/packages/ui/src/patterns/Verification/index.ts +6 -0
- package/packages/ui/src/patterns/Verification/verification.types.ts +8 -0
- package/packages/ui/src/patterns/Verification/verification.utils.test.ts +37 -0
- package/packages/ui/src/patterns/Verification/verification.utils.ts +75 -0
- package/packages/ui/src/patterns/index.ts +25 -0
- package/packages/ui/src/primitives/Accordian/Accordian.vue +11 -0
- package/packages/ui/src/primitives/Accordian/AccordianItem.vue +14 -0
- package/packages/ui/src/primitives/Accordion/Accordion.props.ts +21 -0
- package/packages/ui/src/primitives/Accordion/Accordion.spec.md +50 -0
- package/packages/ui/src/primitives/Accordion/Accordion.types.ts +4 -0
- package/packages/ui/src/primitives/Accordion/Accordion.variants.ts +12 -0
- package/packages/ui/src/primitives/Accordion/Accordion.vue +71 -0
- package/packages/ui/src/primitives/Accordion/AccordionItem.props.ts +14 -0
- package/packages/ui/src/primitives/Accordion/AccordionItem.vue +40 -0
- package/packages/ui/src/primitives/Badge/Badge.props.ts +17 -0
- package/packages/ui/src/primitives/Badge/Badge.spec.md +17 -0
- package/packages/ui/src/primitives/Badge/Badge.types.ts +15 -0
- package/packages/ui/src/primitives/Badge/Badge.variants.ts +48 -0
- package/packages/ui/src/primitives/Badge/Badge.vue +31 -0
- package/packages/ui/src/primitives/Button/Button.props.ts +29 -0
- package/packages/ui/src/primitives/Button/Button.spec.md +139 -0
- package/packages/ui/src/primitives/Button/Button.types.ts +19 -0
- package/packages/ui/src/primitives/Button/Button.variants.ts +72 -0
- package/packages/ui/src/primitives/Button/Button.vue +90 -0
- package/packages/ui/src/primitives/Card/Card.props.ts +17 -0
- package/packages/ui/src/primitives/Card/Card.spec.md +29 -0
- package/packages/ui/src/primitives/Card/Card.types.ts +12 -0
- package/packages/ui/src/primitives/Card/Card.variants.ts +27 -0
- package/packages/ui/src/primitives/Card/Card.vue +37 -0
- package/packages/ui/src/primitives/Checkbox/Checkbox.props.ts +21 -0
- package/packages/ui/src/primitives/Checkbox/Checkbox.spec.md +51 -0
- package/packages/ui/src/primitives/Checkbox/Checkbox.types.ts +4 -0
- package/packages/ui/src/primitives/Checkbox/Checkbox.variants.ts +34 -0
- package/packages/ui/src/primitives/Checkbox/Checkbox.vue +92 -0
- package/packages/ui/src/primitives/Dialog/Dialog.props.ts +29 -0
- package/packages/ui/src/primitives/Dialog/Dialog.spec.md +52 -0
- package/packages/ui/src/primitives/Dialog/Dialog.types.ts +3 -0
- package/packages/ui/src/primitives/Dialog/Dialog.variants.ts +27 -0
- package/packages/ui/src/primitives/Dialog/Dialog.vue +78 -0
- package/packages/ui/src/primitives/Drawer/Drawer.props.ts +33 -0
- package/packages/ui/src/primitives/Drawer/Drawer.spec.md +50 -0
- package/packages/ui/src/primitives/Drawer/Drawer.types.ts +5 -0
- package/packages/ui/src/primitives/Drawer/Drawer.variants.ts +35 -0
- package/packages/ui/src/primitives/Drawer/Drawer.vue +88 -0
- package/packages/ui/src/primitives/FieldMessage/FieldMessage.props.ts +17 -0
- package/packages/ui/src/primitives/FieldMessage/FieldMessage.spec.md +35 -0
- package/packages/ui/src/primitives/FieldMessage/FieldMessage.types.ts +5 -0
- package/packages/ui/src/primitives/FieldMessage/FieldMessage.variants.ts +14 -0
- package/packages/ui/src/primitives/FieldMessage/FieldMessage.vue +40 -0
- package/packages/ui/src/primitives/FileInput/FileInput.props.ts +41 -0
- package/packages/ui/src/primitives/FileInput/FileInput.types.ts +6 -0
- package/packages/ui/src/primitives/FileInput/FileInput.variants.ts +46 -0
- package/packages/ui/src/primitives/FileInput/FileInput.vue +163 -0
- package/packages/ui/src/primitives/Input/Input.props.ts +29 -0
- package/packages/ui/src/primitives/Input/Input.spec.md +79 -0
- package/packages/ui/src/primitives/Input/Input.types.ts +13 -0
- package/packages/ui/src/primitives/Input/Input.variants.ts +54 -0
- package/packages/ui/src/primitives/Input/Input.vue +99 -0
- package/packages/ui/src/primitives/Label/Label.props.ts +25 -0
- package/packages/ui/src/primitives/Label/Label.spec.md +31 -0
- package/packages/ui/src/primitives/Label/Label.types.ts +3 -0
- package/packages/ui/src/primitives/Label/Label.variants.ts +17 -0
- package/packages/ui/src/primitives/Label/Label.vue +38 -0
- package/packages/ui/src/primitives/Menu/Menu.props.ts +17 -0
- package/packages/ui/src/primitives/Menu/Menu.spec.md +38 -0
- package/packages/ui/src/primitives/Menu/Menu.types.ts +10 -0
- package/packages/ui/src/primitives/Menu/Menu.variants.ts +10 -0
- package/packages/ui/src/primitives/Menu/Menu.vue +57 -0
- package/packages/ui/src/primitives/Popover/Popover.props.ts +25 -0
- package/packages/ui/src/primitives/Popover/Popover.spec.md +49 -0
- package/packages/ui/src/primitives/Popover/Popover.types.ts +3 -0
- package/packages/ui/src/primitives/Popover/Popover.variants.ts +18 -0
- package/packages/ui/src/primitives/Popover/Popover.vue +74 -0
- package/packages/ui/src/primitives/RadioGroup/RadioGroup.props.ts +29 -0
- package/packages/ui/src/primitives/RadioGroup/RadioGroup.spec.md +50 -0
- package/packages/ui/src/primitives/RadioGroup/RadioGroup.types.ts +12 -0
- package/packages/ui/src/primitives/RadioGroup/RadioGroup.variants.ts +48 -0
- package/packages/ui/src/primitives/RadioGroup/RadioGroup.vue +87 -0
- package/packages/ui/src/primitives/Separator/Separator.props.ts +9 -0
- package/packages/ui/src/primitives/Separator/Separator.spec.md +15 -0
- package/packages/ui/src/primitives/Separator/Separator.types.ts +3 -0
- package/packages/ui/src/primitives/Separator/Separator.variants.ts +8 -0
- package/packages/ui/src/primitives/Separator/Separator.vue +23 -0
- package/packages/ui/src/primitives/Skeleton/Skeleton.props.ts +21 -0
- package/packages/ui/src/primitives/Skeleton/Skeleton.spec.md +18 -0
- package/packages/ui/src/primitives/Skeleton/Skeleton.types.ts +5 -0
- package/packages/ui/src/primitives/Skeleton/Skeleton.variants.ts +18 -0
- package/packages/ui/src/primitives/Skeleton/Skeleton.vue +37 -0
- package/packages/ui/src/primitives/Spinner/Spinner.props.ts +13 -0
- package/packages/ui/src/primitives/Spinner/Spinner.spec.md +16 -0
- package/packages/ui/src/primitives/Spinner/Spinner.types.ts +5 -0
- package/packages/ui/src/primitives/Spinner/Spinner.variants.ts +15 -0
- package/packages/ui/src/primitives/Spinner/Spinner.vue +33 -0
- package/packages/ui/src/primitives/SplitButton/SplitButton.vue +108 -0
- package/packages/ui/src/primitives/Switch/Switch.props.ts +21 -0
- package/packages/ui/src/primitives/Switch/Switch.spec.md +49 -0
- package/packages/ui/src/primitives/Switch/Switch.types.ts +3 -0
- package/packages/ui/src/primitives/Switch/Switch.variants.ts +34 -0
- package/packages/ui/src/primitives/Switch/Switch.vue +71 -0
- package/packages/ui/src/primitives/Tabs/Tabs.props.ts +25 -0
- package/packages/ui/src/primitives/Tabs/Tabs.spec.md +48 -0
- package/packages/ui/src/primitives/Tabs/Tabs.types.ts +11 -0
- package/packages/ui/src/primitives/Tabs/Tabs.variants.ts +28 -0
- package/packages/ui/src/primitives/Tabs/Tabs.vue +59 -0
- package/packages/ui/src/primitives/Textarea/Textarea.props.ts +33 -0
- package/packages/ui/src/primitives/Textarea/Textarea.spec.md +59 -0
- package/packages/ui/src/primitives/Textarea/Textarea.types.ts +5 -0
- package/packages/ui/src/primitives/Textarea/Textarea.variants.ts +27 -0
- package/packages/ui/src/primitives/Textarea/Textarea.vue +74 -0
- package/packages/ui/src/primitives/Tooltip/Tooltip.props.ts +21 -0
- package/packages/ui/src/primitives/Tooltip/Tooltip.spec.md +45 -0
- package/packages/ui/src/primitives/Tooltip/Tooltip.types.ts +3 -0
- package/packages/ui/src/primitives/Tooltip/Tooltip.variants.ts +4 -0
- package/packages/ui/src/primitives/Tooltip/Tooltip.vue +31 -0
- package/packages/ui/src/primitives/TreeView/TreeView.types.ts +10 -0
- package/packages/ui/src/primitives/TreeView/TreeView.vue +113 -0
- package/packages/ui/src/primitives/TreeView/TreeViewNode.vue +190 -0
- package/packages/ui/src/primitives/index.ts +29 -0
- package/packages/ui/src/style.css +7 -0
- package/packages/ui/src/style.js +1 -0
- package/packages/ui/src/themes/armour.css +147 -0
- package/packages/ui/src/themes/aurora.css +147 -0
- package/packages/ui/src/themes/citrine-ash.css +147 -0
- package/packages/ui/src/themes/concord.css +147 -0
- package/packages/ui/src/themes/garnet-honey.css +147 -0
- package/packages/ui/src/themes/harbor-rose.css +147 -0
- package/packages/ui/src/themes/ledger.css +147 -0
- package/packages/ui/src/themes/neon-noir.css +74 -0
- package/packages/ui/src/themes/obsidian-iris.css +147 -0
- package/packages/ui/src/themes/pixpax.css +147 -0
- package/packages/ui/src/themes/print.css +147 -0
- package/packages/ui/src/themes/prism.css +147 -0
- package/packages/ui/src/themes/proof.css +145 -0
- package/packages/ui/src/themes/semanticThemeContract.js +2256 -0
- package/packages/ui/src/themes/spruce-ink.css +147 -0
- package/packages/ui/src/themes/sunset.css +147 -0
- package/packages/ui/tailwind.config.js +64 -0
- package/packages/ui/vite.config.js +35 -0
- package/packages/ui/vite.config.js.timestamp-1780697224943-89fbc929987bc.mjs +38 -0
- package/packages/utils/CHANGELOG.md +111 -0
- package/packages/utils/README.md +3 -0
- package/packages/utils/package.json +46 -0
- package/packages/utils/src/index.test.js +39 -0
- package/packages/utils/src/index.ts +289 -0
- package/packages/utils/tsconfig.build.json +12 -0
- package/packages/utils/vite.config.js +28 -0
- package/pnpm-workspace.yaml +8 -0
- package/scripts/vite/package-lib-config.ts +59 -0
- package/tsconfig.json +24 -0
- 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,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
|
+
}
|