@originals/sdk 1.4.2 → 1.4.3

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 (212) hide show
  1. package/package.json +4 -1
  2. package/.eslintrc.json +0 -33
  3. package/src/adapters/FeeOracleMock.ts +0 -9
  4. package/src/adapters/index.ts +0 -5
  5. package/src/adapters/providers/OrdHttpProvider.ts +0 -126
  6. package/src/adapters/providers/OrdMockProvider.ts +0 -101
  7. package/src/adapters/types.ts +0 -66
  8. package/src/bitcoin/BitcoinManager.ts +0 -330
  9. package/src/bitcoin/BroadcastClient.ts +0 -54
  10. package/src/bitcoin/OrdinalsClient.ts +0 -119
  11. package/src/bitcoin/PSBTBuilder.ts +0 -106
  12. package/src/bitcoin/fee-calculation.ts +0 -38
  13. package/src/bitcoin/providers/OrdNodeProvider.ts +0 -92
  14. package/src/bitcoin/providers/OrdinalsProvider.ts +0 -56
  15. package/src/bitcoin/providers/types.ts +0 -59
  16. package/src/bitcoin/transactions/commit.ts +0 -465
  17. package/src/bitcoin/transactions/index.ts +0 -13
  18. package/src/bitcoin/transfer.ts +0 -43
  19. package/src/bitcoin/utxo-selection.ts +0 -322
  20. package/src/bitcoin/utxo.ts +0 -113
  21. package/src/contexts/credentials-v1.json +0 -237
  22. package/src/contexts/credentials-v2-examples.json +0 -5
  23. package/src/contexts/credentials-v2.json +0 -340
  24. package/src/contexts/credentials.json +0 -237
  25. package/src/contexts/data-integrity-v2.json +0 -81
  26. package/src/contexts/dids.json +0 -58
  27. package/src/contexts/ed255192020.json +0 -93
  28. package/src/contexts/ordinals-plus.json +0 -23
  29. package/src/contexts/originals.json +0 -22
  30. package/src/core/OriginalsSDK.ts +0 -416
  31. package/src/crypto/Multikey.ts +0 -194
  32. package/src/crypto/Signer.ts +0 -254
  33. package/src/crypto/noble-init.ts +0 -121
  34. package/src/did/BtcoDidResolver.ts +0 -227
  35. package/src/did/DIDManager.ts +0 -694
  36. package/src/did/Ed25519Verifier.ts +0 -68
  37. package/src/did/KeyManager.ts +0 -236
  38. package/src/did/WebVHManager.ts +0 -498
  39. package/src/did/createBtcoDidDocument.ts +0 -59
  40. package/src/did/providers/OrdinalsClientProviderAdapter.ts +0 -68
  41. package/src/events/EventEmitter.ts +0 -222
  42. package/src/events/index.ts +0 -19
  43. package/src/events/types.ts +0 -331
  44. package/src/examples/basic-usage.ts +0 -78
  45. package/src/examples/create-module-original.ts +0 -435
  46. package/src/examples/full-lifecycle-flow.ts +0 -514
  47. package/src/examples/run.ts +0 -60
  48. package/src/index.ts +0 -150
  49. package/src/kinds/KindRegistry.ts +0 -290
  50. package/src/kinds/index.ts +0 -74
  51. package/src/kinds/types.ts +0 -470
  52. package/src/kinds/validators/AgentValidator.ts +0 -257
  53. package/src/kinds/validators/AppValidator.ts +0 -211
  54. package/src/kinds/validators/DatasetValidator.ts +0 -242
  55. package/src/kinds/validators/DocumentValidator.ts +0 -311
  56. package/src/kinds/validators/MediaValidator.ts +0 -269
  57. package/src/kinds/validators/ModuleValidator.ts +0 -225
  58. package/src/kinds/validators/base.ts +0 -276
  59. package/src/kinds/validators/index.ts +0 -12
  60. package/src/lifecycle/BatchOperations.ts +0 -373
  61. package/src/lifecycle/LifecycleManager.ts +0 -2126
  62. package/src/lifecycle/OriginalsAsset.ts +0 -524
  63. package/src/lifecycle/ProvenanceQuery.ts +0 -280
  64. package/src/lifecycle/ResourceVersioning.ts +0 -163
  65. package/src/migration/MigrationManager.ts +0 -527
  66. package/src/migration/audit/AuditLogger.ts +0 -176
  67. package/src/migration/checkpoint/CheckpointManager.ts +0 -112
  68. package/src/migration/checkpoint/CheckpointStorage.ts +0 -101
  69. package/src/migration/index.ts +0 -33
  70. package/src/migration/operations/BaseMigration.ts +0 -126
  71. package/src/migration/operations/PeerToBtcoMigration.ts +0 -105
  72. package/src/migration/operations/PeerToWebvhMigration.ts +0 -62
  73. package/src/migration/operations/WebvhToBtcoMigration.ts +0 -105
  74. package/src/migration/rollback/RollbackManager.ts +0 -170
  75. package/src/migration/state/StateMachine.ts +0 -92
  76. package/src/migration/state/StateTracker.ts +0 -156
  77. package/src/migration/types.ts +0 -344
  78. package/src/migration/validation/BitcoinValidator.ts +0 -107
  79. package/src/migration/validation/CredentialValidator.ts +0 -62
  80. package/src/migration/validation/DIDCompatibilityValidator.ts +0 -151
  81. package/src/migration/validation/LifecycleValidator.ts +0 -64
  82. package/src/migration/validation/StorageValidator.ts +0 -79
  83. package/src/migration/validation/ValidationPipeline.ts +0 -213
  84. package/src/resources/ResourceManager.ts +0 -655
  85. package/src/resources/index.ts +0 -21
  86. package/src/resources/types.ts +0 -202
  87. package/src/storage/LocalStorageAdapter.ts +0 -61
  88. package/src/storage/MemoryStorageAdapter.ts +0 -29
  89. package/src/storage/StorageAdapter.ts +0 -25
  90. package/src/storage/index.ts +0 -3
  91. package/src/types/bitcoin.ts +0 -98
  92. package/src/types/common.ts +0 -92
  93. package/src/types/credentials.ts +0 -88
  94. package/src/types/did.ts +0 -31
  95. package/src/types/external-shims.d.ts +0 -53
  96. package/src/types/index.ts +0 -7
  97. package/src/types/network.ts +0 -175
  98. package/src/utils/EventLogger.ts +0 -298
  99. package/src/utils/Logger.ts +0 -322
  100. package/src/utils/MetricsCollector.ts +0 -358
  101. package/src/utils/bitcoin-address.ts +0 -130
  102. package/src/utils/cbor.ts +0 -12
  103. package/src/utils/encoding.ts +0 -127
  104. package/src/utils/hash.ts +0 -6
  105. package/src/utils/retry.ts +0 -46
  106. package/src/utils/satoshi-validation.ts +0 -196
  107. package/src/utils/serialization.ts +0 -96
  108. package/src/utils/telemetry.ts +0 -40
  109. package/src/utils/validation.ts +0 -119
  110. package/src/vc/CredentialManager.ts +0 -918
  111. package/src/vc/Issuer.ts +0 -100
  112. package/src/vc/Verifier.ts +0 -47
  113. package/src/vc/cryptosuites/bbs.ts +0 -253
  114. package/src/vc/cryptosuites/bbsSimple.ts +0 -21
  115. package/src/vc/cryptosuites/eddsa.ts +0 -99
  116. package/src/vc/documentLoader.ts +0 -67
  117. package/src/vc/proofs/data-integrity.ts +0 -33
  118. package/src/vc/utils/jsonld.ts +0 -18
  119. package/tests/__mocks__/bbs-signatures.js +0 -17
  120. package/tests/__mocks__/mf-base58.js +0 -24
  121. package/tests/fixtures/did-documents.ts +0 -247
  122. package/tests/index.test.ts +0 -21
  123. package/tests/integration/BatchOperations.test.ts +0 -531
  124. package/tests/integration/CompleteLifecycle.e2e.test.ts +0 -735
  125. package/tests/integration/CredentialManager.test.ts +0 -42
  126. package/tests/integration/DIDManager.test.ts +0 -41
  127. package/tests/integration/DidPeerToWebVhFlow.test.ts +0 -351
  128. package/tests/integration/Events.test.ts +0 -435
  129. package/tests/integration/Lifecycle.transfer.btco.integration.test.ts +0 -25
  130. package/tests/integration/LifecycleManager.test.ts +0 -21
  131. package/tests/integration/MultikeyFlow.test.ts +0 -52
  132. package/tests/integration/TelemetryIntegration.test.ts +0 -395
  133. package/tests/integration/WebVhPublish.test.ts +0 -48
  134. package/tests/integration/createTypedOriginal.test.ts +0 -379
  135. package/tests/integration/migration/peer-to-webvh.test.ts +0 -172
  136. package/tests/manual/test-commit-creation.ts +0 -323
  137. package/tests/mocks/MockKeyStore.ts +0 -38
  138. package/tests/mocks/adapters/MemoryStorageAdapter.ts +0 -24
  139. package/tests/mocks/adapters/MockFeeOracle.ts +0 -11
  140. package/tests/mocks/adapters/MockOrdinalsProvider.ts +0 -76
  141. package/tests/mocks/adapters/OrdMockProvider.test.ts +0 -176
  142. package/tests/mocks/adapters/index.ts +0 -6
  143. package/tests/performance/BatchOperations.perf.test.ts +0 -403
  144. package/tests/performance/logging.perf.test.ts +0 -336
  145. package/tests/sdk.test.ts +0 -43
  146. package/tests/security/bitcoin-penetration-tests.test.ts +0 -622
  147. package/tests/setup.bun.ts +0 -69
  148. package/tests/setup.jest.ts +0 -23
  149. package/tests/stress/batch-operations-stress.test.ts +0 -571
  150. package/tests/unit/adapters/FeeOracleMock.test.ts +0 -40
  151. package/tests/unit/bitcoin/BitcoinManager.test.ts +0 -293
  152. package/tests/unit/bitcoin/BroadcastClient.test.ts +0 -52
  153. package/tests/unit/bitcoin/OrdNodeProvider.test.ts +0 -53
  154. package/tests/unit/bitcoin/OrdinalsClient.test.ts +0 -381
  155. package/tests/unit/bitcoin/OrdinalsClientProvider.test.ts +0 -102
  156. package/tests/unit/bitcoin/PSBTBuilder.test.ts +0 -84
  157. package/tests/unit/bitcoin/fee-calculation.test.ts +0 -261
  158. package/tests/unit/bitcoin/transactions/commit.test.ts +0 -649
  159. package/tests/unit/bitcoin/transfer.test.ts +0 -31
  160. package/tests/unit/bitcoin/utxo-selection-new.test.ts +0 -502
  161. package/tests/unit/bitcoin/utxo.more.test.ts +0 -39
  162. package/tests/unit/bitcoin/utxo.selection.test.ts +0 -38
  163. package/tests/unit/core/OriginalsSDK.test.ts +0 -152
  164. package/tests/unit/crypto/Multikey.test.ts +0 -206
  165. package/tests/unit/crypto/Signer.test.ts +0 -408
  166. package/tests/unit/did/BtcoDidResolver.test.ts +0 -611
  167. package/tests/unit/did/DIDManager.more.test.ts +0 -43
  168. package/tests/unit/did/DIDManager.test.ts +0 -185
  169. package/tests/unit/did/Ed25519Verifier.test.ts +0 -160
  170. package/tests/unit/did/KeyManager.test.ts +0 -452
  171. package/tests/unit/did/OrdinalsClientProviderAdapter.test.ts +0 -45
  172. package/tests/unit/did/WebVHManager.test.ts +0 -435
  173. package/tests/unit/did/createBtcoDidDocument.test.ts +0 -67
  174. package/tests/unit/did/providers/OrdinalsClientProviderAdapter.test.ts +0 -159
  175. package/tests/unit/events/EventEmitter.test.ts +0 -407
  176. package/tests/unit/kinds/KindRegistry.test.ts +0 -329
  177. package/tests/unit/kinds/types.test.ts +0 -409
  178. package/tests/unit/kinds/validators.test.ts +0 -651
  179. package/tests/unit/lifecycle/BatchOperations.test.ts +0 -527
  180. package/tests/unit/lifecycle/LifecycleManager.cleanapi.test.ts +0 -441
  181. package/tests/unit/lifecycle/LifecycleManager.keymanagement.test.ts +0 -312
  182. package/tests/unit/lifecycle/LifecycleManager.prov.test.ts +0 -18
  183. package/tests/unit/lifecycle/LifecycleManager.test.ts +0 -213
  184. package/tests/unit/lifecycle/LifecycleManager.transfer.unit.test.ts +0 -30
  185. package/tests/unit/lifecycle/OriginalsAsset.test.ts +0 -176
  186. package/tests/unit/lifecycle/ProvenanceQuery.test.ts +0 -577
  187. package/tests/unit/lifecycle/ResourceVersioning.test.ts +0 -651
  188. package/tests/unit/resources/ResourceManager.test.ts +0 -740
  189. package/tests/unit/storage/MemoryStorageAdapter.test.ts +0 -93
  190. package/tests/unit/types/network.test.ts +0 -255
  191. package/tests/unit/utils/EventIntegration.test.ts +0 -384
  192. package/tests/unit/utils/Logger.test.ts +0 -473
  193. package/tests/unit/utils/MetricsCollector.test.ts +0 -358
  194. package/tests/unit/utils/bitcoin-address.test.ts +0 -250
  195. package/tests/unit/utils/cbor.test.ts +0 -35
  196. package/tests/unit/utils/encoding.test.ts +0 -318
  197. package/tests/unit/utils/hash.test.ts +0 -12
  198. package/tests/unit/utils/retry.test.ts +0 -100
  199. package/tests/unit/utils/satoshi-validation.test.ts +0 -354
  200. package/tests/unit/utils/serialization.test.ts +0 -124
  201. package/tests/unit/utils/telemetry.test.ts +0 -52
  202. package/tests/unit/utils/validation.test.ts +0 -141
  203. package/tests/unit/vc/CredentialManager.helpers.test.ts +0 -527
  204. package/tests/unit/vc/CredentialManager.test.ts +0 -487
  205. package/tests/unit/vc/Issuer.test.ts +0 -107
  206. package/tests/unit/vc/Verifier.test.ts +0 -525
  207. package/tests/unit/vc/bbs.test.ts +0 -282
  208. package/tests/unit/vc/cryptosuites/eddsa.test.ts +0 -398
  209. package/tests/unit/vc/documentLoader.test.ts +0 -121
  210. package/tests/unit/vc/proofs/data-integrity.test.ts +0 -24
  211. package/tsconfig.json +0 -31
  212. package/tsconfig.test.json +0 -15
package/src/index.ts DELETED
@@ -1,150 +0,0 @@
1
- /* istanbul ignore file */
2
- // Initialize noble crypto libraries first (must run before any crypto operations)
3
- import './crypto/noble-init.js';
4
-
5
- import { OriginalsSDK } from './core/OriginalsSDK.js';
6
-
7
- // Main exports
8
- export { OriginalsSDK } from './core/OriginalsSDK.js';
9
- export type {
10
- OriginalsSDKOptions,
11
- OriginalResult,
12
- CreateOriginalOptions,
13
- UpdateOriginalOptions,
14
- CreateDIDOriginalOptions,
15
- UpdateDIDOriginalOptions
16
- } from './core/OriginalsSDK.js';
17
- export { OriginalsAsset } from './lifecycle/OriginalsAsset.js';
18
- export type { ProvenanceChain } from './lifecycle/OriginalsAsset.js';
19
-
20
- // Type exports
21
- export * from './types/index.js';
22
-
23
- // Manager exports
24
- export { DIDManager, type CreateWebVHOptions, type CreateWebVHResult } from './did/DIDManager.js';
25
- export { KeyManager } from './did/KeyManager.js';
26
- export { Ed25519Verifier } from './did/Ed25519Verifier.js';
27
- export * as encoding from './utils/encoding.js';
28
- export {
29
- CredentialManager,
30
- type ResourceCreatedSubject,
31
- type ResourceUpdatedSubject,
32
- type MigrationSubject,
33
- type OwnershipSubject,
34
- type CredentialChainOptions,
35
- type SelectiveDisclosureOptions,
36
- type DerivedProofResult
37
- } from './vc/CredentialManager.js';
38
- export {
39
- LifecycleManager,
40
- type CostEstimate,
41
- type MigrationValidation,
42
- type LifecycleProgress,
43
- type ProgressCallback,
44
- type LifecycleOperationOptions
45
- } from './lifecycle/LifecycleManager.js';
46
- export { BitcoinManager } from './bitcoin/BitcoinManager.js';
47
- export { OrdinalsClient } from './bitcoin/OrdinalsClient.js';
48
- export { buildTransferTransaction } from './bitcoin/transfer.js';
49
- export { selectUtxos, UtxoSelectionError, estimateFeeSats } from './bitcoin/utxo.js';
50
- export {
51
- selectUtxos as selectUtxosSimple,
52
- selectResourceUtxos,
53
- selectUtxosForPayment,
54
- tagResourceUtxos,
55
- estimateTransactionSize
56
- } from './bitcoin/utxo-selection.js';
57
- export { calculateFee } from './bitcoin/fee-calculation.js';
58
- export { BBSCryptosuiteUtils } from './vc/cryptosuites/bbs.js';
59
- export { BbsSimple } from './vc/cryptosuites/bbsSimple.js';
60
- export * from './storage/index.js';
61
-
62
- // Resource management exports
63
- export { ResourceManager } from './resources/index.js';
64
- export type {
65
- Resource,
66
- ResourceOptions,
67
- ResourceUpdateOptions,
68
- ResourceVersionHistory,
69
- ResourceManagerConfig,
70
- ResourceValidationResult,
71
- ResourceType,
72
- } from './resources/index.js';
73
- export { MIME_TYPE_MAP, DEFAULT_RESOURCE_CONFIG } from './resources/index.js';
74
-
75
- // Crypto exports
76
- export { Signer, ES256KSigner, Ed25519Signer, ES256Signer, Bls12381G2Signer } from './crypto/Signer.js';
77
- export { multikey } from './crypto/Multikey.js';
78
- export type { MultikeyType } from './crypto/Multikey.js';
79
-
80
- // Event system exports
81
- export * from './events/index.js';
82
-
83
- // Migration system exports
84
- export { MigrationManager } from './migration/index.js';
85
- export * from './migration/types.js';
86
-
87
- // Batch operations exports
88
- export {
89
- BatchOperationExecutor,
90
- BatchValidator,
91
- BatchError,
92
- type BatchResult,
93
- type BatchOperationOptions,
94
- type BatchInscriptionOptions,
95
- type BatchInscriptionResult,
96
- type ValidationResult as BatchValidationResult
97
- } from './lifecycle/BatchOperations.js';
98
-
99
- // Kind system exports
100
- export {
101
- OriginalKind,
102
- KindRegistry,
103
- type DependencyRef,
104
- type BaseManifest,
105
- type AppMetadata,
106
- type AgentMetadata,
107
- type ModuleMetadata,
108
- type DatasetMetadata,
109
- type MediaMetadata,
110
- type DocumentMetadata,
111
- type KindMetadataMap,
112
- type KindMetadata,
113
- type OriginalManifest,
114
- type AppManifest,
115
- type AgentManifest,
116
- type ModuleManifest,
117
- type DatasetManifest,
118
- type MediaManifest,
119
- type DocumentManifest,
120
- type AnyManifest,
121
- type ValidationResult as KindValidationResult,
122
- type ValidationError as KindValidationError,
123
- type ValidationWarning,
124
- type CreateTypedOriginalOptions,
125
- type KindValidator,
126
- BaseKindValidator,
127
- ValidationUtils,
128
- AppValidator,
129
- AgentValidator,
130
- ModuleValidator,
131
- DatasetValidator,
132
- MediaValidator,
133
- DocumentValidator,
134
- } from './kinds/index.js';
135
-
136
- // Utility exports
137
- export * from './utils/validation.js';
138
- export * from './utils/satoshi-validation.js';
139
- export * from './utils/serialization.js';
140
- export * from './utils/retry.js';
141
- export * from './utils/telemetry.js';
142
- export { sha256Bytes } from './utils/hash.js';
143
-
144
- // Adapter exports (for testing and custom integrations)
145
- export { OrdMockProvider } from './adapters/providers/OrdMockProvider.js';
146
- export { FeeOracleMock } from './adapters/FeeOracleMock.js';
147
- export type { OrdinalsProvider, FeeOracleAdapter, StorageAdapter } from './adapters/types.js';
148
-
149
- // Default export
150
- export default OriginalsSDK;
@@ -1,290 +0,0 @@
1
- /**
2
- * Kind Registry
3
- *
4
- * Central registry for Original kinds, providing validation and type management.
5
- */
6
-
7
- import {
8
- OriginalKind,
9
- type OriginalManifest,
10
- type ValidationResult,
11
- type CreateTypedOriginalOptions,
12
- } from './types';
13
- import {
14
- type KindValidator,
15
- ValidationUtils,
16
- AppValidator,
17
- AgentValidator,
18
- ModuleValidator,
19
- DatasetValidator,
20
- MediaValidator,
21
- DocumentValidator,
22
- } from './validators';
23
-
24
- /**
25
- * Registry for Original kinds
26
- *
27
- * Provides centralized validation and type information for all kinds.
28
- */
29
- export class KindRegistry {
30
- private static instance: KindRegistry;
31
- private validators: Map<OriginalKind, KindValidator<OriginalKind>>;
32
-
33
- private constructor() {
34
- this.validators = new Map();
35
- this.registerDefaultValidators();
36
- }
37
-
38
- /**
39
- * Get the singleton instance
40
- */
41
- static getInstance(): KindRegistry {
42
- if (!KindRegistry.instance) {
43
- KindRegistry.instance = new KindRegistry();
44
- }
45
- return KindRegistry.instance;
46
- }
47
-
48
- /**
49
- * Register default validators for all built-in kinds
50
- */
51
- private registerDefaultValidators(): void {
52
- this.validators.set(OriginalKind.App, new AppValidator());
53
- this.validators.set(OriginalKind.Agent, new AgentValidator());
54
- this.validators.set(OriginalKind.Module, new ModuleValidator());
55
- this.validators.set(OriginalKind.Dataset, new DatasetValidator());
56
- this.validators.set(OriginalKind.Media, new MediaValidator());
57
- this.validators.set(OriginalKind.Document, new DocumentValidator());
58
- }
59
-
60
- /**
61
- * Register a custom validator for a kind
62
- * Can be used to override built-in validators or add new kinds
63
- */
64
- registerValidator<K extends OriginalKind>(
65
- kind: K,
66
- validator: KindValidator<K>
67
- ): void {
68
- this.validators.set(kind, validator as KindValidator<OriginalKind>);
69
- }
70
-
71
- /**
72
- * Get the validator for a kind
73
- */
74
- getValidator<K extends OriginalKind>(kind: K): KindValidator<K> | undefined {
75
- return this.validators.get(kind) as KindValidator<K> | undefined;
76
- }
77
-
78
- /**
79
- * Check if a kind is registered
80
- */
81
- hasKind(kind: OriginalKind): boolean {
82
- return this.validators.has(kind);
83
- }
84
-
85
- /**
86
- * Get all registered kinds
87
- */
88
- getRegisteredKinds(): OriginalKind[] {
89
- return Array.from(this.validators.keys());
90
- }
91
-
92
- /**
93
- * Validate a manifest
94
- *
95
- * @param manifest - The manifest to validate
96
- * @param options - Validation options
97
- * @returns Validation result
98
- */
99
- validate<K extends OriginalKind>(
100
- manifest: OriginalManifest<K>,
101
- options?: CreateTypedOriginalOptions
102
- ): ValidationResult {
103
- // First check if kind is valid
104
- if (!manifest.kind) {
105
- return ValidationUtils.failure([
106
- ValidationUtils.error('MISSING_KIND', 'Manifest must specify a kind', 'kind'),
107
- ]);
108
- }
109
-
110
- // Check if kind is registered
111
- if (!this.hasKind(manifest.kind)) {
112
- return ValidationUtils.failure([
113
- ValidationUtils.error(
114
- 'UNKNOWN_KIND',
115
- `Unknown kind: "${manifest.kind}". Registered kinds: ${this.getRegisteredKinds().join(', ')}`,
116
- 'kind',
117
- manifest.kind,
118
- ),
119
- ]);
120
- }
121
-
122
- // Get validator and run validation
123
- const validator = this.getValidator(manifest.kind);
124
- if (!validator) {
125
- return ValidationUtils.failure([
126
- ValidationUtils.error('VALIDATOR_NOT_FOUND', `No validator found for kind: ${manifest.kind}`, 'kind'),
127
- ]);
128
- }
129
-
130
- const result = validator.validate(manifest);
131
-
132
- // In strict mode, treat warnings as errors
133
- if (options?.strictMode && result.warnings.length > 0) {
134
- const warningErrors = result.warnings.map(w =>
135
- ValidationUtils.error(
136
- `STRICT_${w.code}`,
137
- `[Warning treated as error] ${w.message}`,
138
- w.path,
139
- )
140
- );
141
- return ValidationUtils.failure([...result.errors, ...warningErrors], []);
142
- }
143
-
144
- return result;
145
- }
146
-
147
- /**
148
- * Validate a manifest and throw if invalid
149
- */
150
- validateOrThrow<K extends OriginalKind>(
151
- manifest: OriginalManifest<K>,
152
- options?: CreateTypedOriginalOptions
153
- ): void {
154
- if (options?.skipValidation) {
155
- return;
156
- }
157
-
158
- const result = this.validate(manifest, options);
159
-
160
- if (!result.isValid) {
161
- const errorMessages = result.errors.map(e => {
162
- const path = e.path ? ` at ${e.path}` : '';
163
- return `[${e.code}]${path}: ${e.message}`;
164
- });
165
-
166
- throw new Error(`Manifest validation failed:\n${errorMessages.join('\n')}`);
167
- }
168
- }
169
-
170
- /**
171
- * Check if a value is a valid OriginalKind
172
- */
173
- static isValidKind(value: unknown): value is OriginalKind {
174
- return typeof value === 'string' && Object.values(OriginalKind).includes(value as OriginalKind);
175
- }
176
-
177
- /**
178
- * Parse a kind string to OriginalKind
179
- * Accepts both full URIs (originals:kind:app) and short names (app)
180
- */
181
- static parseKind(value: string): OriginalKind | null {
182
- // Check if it's already a full kind URI
183
- if (KindRegistry.isValidKind(value)) {
184
- return value;
185
- }
186
-
187
- // Try to match short name
188
- const normalized = value.toLowerCase().trim();
189
- for (const kind of Object.values(OriginalKind)) {
190
- const shortName = kind.split(':').pop()?.toLowerCase();
191
- if (shortName === normalized) {
192
- return kind;
193
- }
194
- }
195
-
196
- return null;
197
- }
198
-
199
- /**
200
- * Get the short name of a kind (e.g., "app" from "originals:kind:app")
201
- */
202
- static getShortName(kind: OriginalKind): string {
203
- return kind.split(':').pop() || kind;
204
- }
205
-
206
- /**
207
- * Get human-readable display name for a kind
208
- */
209
- static getDisplayName(kind: OriginalKind): string {
210
- const shortName = KindRegistry.getShortName(kind);
211
- return shortName.charAt(0).toUpperCase() + shortName.slice(1);
212
- }
213
-
214
- /**
215
- * Create an empty manifest template for a kind
216
- * Useful for scaffolding new Originals
217
- */
218
- static createTemplate<K extends OriginalKind>(
219
- kind: K,
220
- name: string,
221
- version = '1.0.0'
222
- ): Partial<OriginalManifest<K>> {
223
- const base = {
224
- kind,
225
- name,
226
- version,
227
- resources: [],
228
- };
229
-
230
- // Add kind-specific metadata templates
231
- switch (kind) {
232
- case OriginalKind.App:
233
- return {
234
- ...base,
235
- metadata: {
236
- runtime: 'node',
237
- entrypoint: 'index.js',
238
- } as any,
239
- };
240
-
241
- case OriginalKind.Agent:
242
- return {
243
- ...base,
244
- metadata: {
245
- capabilities: [],
246
- } as any,
247
- };
248
-
249
- case OriginalKind.Module:
250
- return {
251
- ...base,
252
- metadata: {
253
- format: 'esm',
254
- main: 'index.js',
255
- } as any,
256
- };
257
-
258
- case OriginalKind.Dataset:
259
- return {
260
- ...base,
261
- metadata: {
262
- format: 'json',
263
- schema: {},
264
- } as any,
265
- };
266
-
267
- case OriginalKind.Media:
268
- return {
269
- ...base,
270
- metadata: {
271
- mediaType: 'image',
272
- mimeType: 'image/png',
273
- } as any,
274
- };
275
-
276
- case OriginalKind.Document:
277
- return {
278
- ...base,
279
- metadata: {
280
- format: 'markdown',
281
- content: 'content',
282
- } as any,
283
- };
284
-
285
- default:
286
- return base;
287
- }
288
- }
289
- }
290
-
@@ -1,74 +0,0 @@
1
- /**
2
- * Originals Kind System
3
- *
4
- * Provides typed "Kinds" for Originals - a classification system that
5
- * enables kind-specific validation, metadata schemas, and behaviors.
6
- *
7
- * @example
8
- * ```typescript
9
- * import { OriginalKind, KindRegistry } from '@originals/sdk';
10
- *
11
- * // Create an App Original manifest
12
- * const appManifest = {
13
- * kind: OriginalKind.App,
14
- * name: 'MyApp',
15
- * version: '1.0.0',
16
- * resources: [entrypointResource],
17
- * metadata: {
18
- * runtime: 'node',
19
- * entrypoint: 'index.js',
20
- * },
21
- * };
22
- *
23
- * // Validate the manifest
24
- * const registry = KindRegistry.getInstance();
25
- * const result = registry.validate(appManifest);
26
- * if (!result.isValid) {
27
- * console.error('Validation errors:', result.errors);
28
- * }
29
- * ```
30
- */
31
-
32
- // Type exports
33
- export {
34
- OriginalKind,
35
- type DependencyRef,
36
- type BaseManifest,
37
- type AppMetadata,
38
- type AgentMetadata,
39
- type ModuleMetadata,
40
- type DatasetMetadata,
41
- type MediaMetadata,
42
- type DocumentMetadata,
43
- type KindMetadataMap,
44
- type KindMetadata,
45
- type OriginalManifest,
46
- type AppManifest,
47
- type AgentManifest,
48
- type ModuleManifest,
49
- type DatasetManifest,
50
- type MediaManifest,
51
- type DocumentManifest,
52
- type AnyManifest,
53
- type ValidationResult,
54
- type ValidationError,
55
- type ValidationWarning,
56
- type CreateTypedOriginalOptions,
57
- } from './types';
58
-
59
- // Registry export
60
- export { KindRegistry } from './KindRegistry';
61
-
62
- // Validator exports (for extension/customization)
63
- export {
64
- type KindValidator,
65
- BaseKindValidator,
66
- ValidationUtils,
67
- AppValidator,
68
- AgentValidator,
69
- ModuleValidator,
70
- DatasetValidator,
71
- MediaValidator,
72
- DocumentValidator,
73
- } from './validators';
74
-