@wovin/core 0.0.0-ciao-mobx-955482e8
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/LICENSE +661 -0
- package/README.md +3 -0
- package/dist/applog/applog-helpers.d.ts +47 -0
- package/dist/applog/applog-helpers.d.ts.map +1 -0
- package/dist/applog/applog-utils.d.ts +57 -0
- package/dist/applog/applog-utils.d.ts.map +1 -0
- package/dist/applog/datom-types.d.ts +128 -0
- package/dist/applog/datom-types.d.ts.map +1 -0
- package/dist/applog.d.ts +4 -0
- package/dist/applog.d.ts.map +1 -0
- package/dist/applog.js +101 -0
- package/dist/applog.js.map +1 -0
- package/dist/blockstore/index.d.ts +21 -0
- package/dist/blockstore/index.d.ts.map +1 -0
- package/dist/blockstore.d.ts +2 -0
- package/dist/blockstore.d.ts.map +1 -0
- package/dist/blockstore.js +24 -0
- package/dist/blockstore.js.map +1 -0
- package/dist/chunk-6MQKRL6W.js +86 -0
- package/dist/chunk-6MQKRL6W.js.map +1 -0
- package/dist/chunk-7MW34UEO.js +40 -0
- package/dist/chunk-7MW34UEO.js.map +1 -0
- package/dist/chunk-7Z5YDQKK.js +1 -0
- package/dist/chunk-7Z5YDQKK.js.map +1 -0
- package/dist/chunk-CY4NLISM.js +144 -0
- package/dist/chunk-CY4NLISM.js.map +1 -0
- package/dist/chunk-E46VTKTZ.js +1 -0
- package/dist/chunk-E46VTKTZ.js.map +1 -0
- package/dist/chunk-O43W7UW6.js +434 -0
- package/dist/chunk-O43W7UW6.js.map +1 -0
- package/dist/chunk-XIQSYEV3.js +1604 -0
- package/dist/chunk-XIQSYEV3.js.map +1 -0
- package/dist/chunk-XVGW4QC3.js +55 -0
- package/dist/chunk-XVGW4QC3.js.map +1 -0
- package/dist/chunk-YDAKBU6Q.js +9 -0
- package/dist/chunk-YDAKBU6Q.js.map +1 -0
- package/dist/chunk-ZAADLBSB.js +36 -0
- package/dist/chunk-ZAADLBSB.js.map +1 -0
- package/dist/chunk-ZXCJRYD7.js +883 -0
- package/dist/chunk-ZXCJRYD7.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +354 -0
- package/dist/index.js.map +1 -0
- package/dist/ipfs/car.d.ts +59 -0
- package/dist/ipfs/car.d.ts.map +1 -0
- package/dist/ipfs/fetch-snapshot-chain.d.ts +32 -0
- package/dist/ipfs/fetch-snapshot-chain.d.ts.map +1 -0
- package/dist/ipfs/ipfs-utils.d.ts +35 -0
- package/dist/ipfs/ipfs-utils.d.ts.map +1 -0
- package/dist/ipfs.d.ts +4 -0
- package/dist/ipfs.d.ts.map +1 -0
- package/dist/ipfs.js +60 -0
- package/dist/ipfs.js.map +1 -0
- package/dist/ipns/ipns-record.d.ts +34 -0
- package/dist/ipns/ipns-record.d.ts.map +1 -0
- package/dist/ipns.d.ts +2 -0
- package/dist/ipns.d.ts.map +1 -0
- package/dist/ipns.js +64 -0
- package/dist/ipns.js.map +1 -0
- package/dist/pubsub/connector.d.ts +9 -0
- package/dist/pubsub/connector.d.ts.map +1 -0
- package/dist/pubsub/pub-pull.d.ts +14 -0
- package/dist/pubsub/pub-pull.d.ts.map +1 -0
- package/dist/pubsub/pubsub-types.d.ts +72 -0
- package/dist/pubsub/pubsub-types.d.ts.map +1 -0
- package/dist/pubsub/snap-push.d.ts +41 -0
- package/dist/pubsub/snap-push.d.ts.map +1 -0
- package/dist/pubsub/ucan-example.d.ts +3 -0
- package/dist/pubsub/ucan-example.d.ts.map +1 -0
- package/dist/pubsub/ucan.d.ts +16 -0
- package/dist/pubsub/ucan.d.ts.map +1 -0
- package/dist/pubsub.d.ts +5 -0
- package/dist/pubsub.d.ts.map +1 -0
- package/dist/pubsub.js +31 -0
- package/dist/pubsub.js.map +1 -0
- package/dist/query/basic.d.ts +105 -0
- package/dist/query/basic.d.ts.map +1 -0
- package/dist/query/divergences.d.ts +12 -0
- package/dist/query/divergences.d.ts.map +1 -0
- package/dist/query/matchers.d.ts +4 -0
- package/dist/query/matchers.d.ts.map +1 -0
- package/dist/query/memoized.d.ts +66 -0
- package/dist/query/memoized.d.ts.map +1 -0
- package/dist/query/query-steps.d.ts +4 -0
- package/dist/query/query-steps.d.ts.map +1 -0
- package/dist/query/situations.d.ts +80 -0
- package/dist/query/situations.d.ts.map +1 -0
- package/dist/query/subscribable.d.ts +102 -0
- package/dist/query/subscribable.d.ts.map +1 -0
- package/dist/query/types.d.ts +70 -0
- package/dist/query/types.d.ts.map +1 -0
- package/dist/query.d.ts +8 -0
- package/dist/query.d.ts.map +1 -0
- package/dist/query.js +108 -0
- package/dist/query.js.map +1 -0
- package/dist/retrieve/index.d.ts +2 -0
- package/dist/retrieve/index.d.ts.map +1 -0
- package/dist/retrieve/update-thread.d.ts +64 -0
- package/dist/retrieve/update-thread.d.ts.map +1 -0
- package/dist/retrieve.d.ts +2 -0
- package/dist/retrieve.d.ts.map +1 -0
- package/dist/retrieve.js +14 -0
- package/dist/retrieve.js.map +1 -0
- package/dist/thread/basic.d.ts +60 -0
- package/dist/thread/basic.d.ts.map +1 -0
- package/dist/thread/filters.d.ts +47 -0
- package/dist/thread/filters.d.ts.map +1 -0
- package/dist/thread/mapped.d.ts +31 -0
- package/dist/thread/mapped.d.ts.map +1 -0
- package/dist/thread/utils.d.ts +23 -0
- package/dist/thread/utils.d.ts.map +1 -0
- package/dist/thread/writeable.d.ts +41 -0
- package/dist/thread/writeable.d.ts.map +1 -0
- package/dist/thread.d.ts +6 -0
- package/dist/thread.d.ts.map +1 -0
- package/dist/thread.js +54 -0
- package/dist/thread.js.map +1 -0
- package/dist/types/typescript-utils.d.ts +34 -0
- package/dist/types/typescript-utils.d.ts.map +1 -0
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +26 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/debug-name.d.ts +13 -0
- package/dist/utils/debug-name.d.ts.map +1 -0
- package/dist/utils.d.ts +4 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +9 -0
- package/dist/utils.js.map +1 -0
- package/package.json +110 -0
- package/src/applog/applog-helpers.ts +150 -0
- package/src/applog/applog-utils.ts +398 -0
- package/src/applog/datom-types.ts +148 -0
- package/src/applog.ts +3 -0
- package/src/blockstore/index.ts +36 -0
- package/src/blockstore.ts +1 -0
- package/src/index.ts +8 -0
- package/src/ipfs/car.ts +291 -0
- package/src/ipfs/fetch-snapshot-chain.ts +135 -0
- package/src/ipfs/ipfs-utils.ts +132 -0
- package/src/ipfs.ts +3 -0
- package/src/ipns/ipns-record.ts +115 -0
- package/src/ipns.ts +1 -0
- package/src/pubsub/UCAN Specs Overview.md +217 -0
- package/src/pubsub/connector.ts +9 -0
- package/src/pubsub/pub-pull.ts +31 -0
- package/src/pubsub/pubsub-types.ts +90 -0
- package/src/pubsub/snap-push.ts +277 -0
- package/src/pubsub/ucan-example.ts +61 -0
- package/src/pubsub/ucan.ts +56 -0
- package/src/pubsub.ts +4 -0
- package/src/query/basic.ts +1061 -0
- package/src/query/divergences.ts +50 -0
- package/src/query/matchers.ts +8 -0
- package/src/query/memoized.test.ts +151 -0
- package/src/query/memoized.ts +180 -0
- package/src/query/query-steps.ts +4 -0
- package/src/query/query.test.ts +536 -0
- package/src/query/situations.ts +261 -0
- package/src/query/subscribable.test.ts +245 -0
- package/src/query/subscribable.ts +225 -0
- package/src/query/types.ts +155 -0
- package/src/query.ts +7 -0
- package/src/retrieve/index.ts +1 -0
- package/src/retrieve/update-thread.ts +248 -0
- package/src/retrieve.ts +1 -0
- package/src/test/perf/query.1m.perf.test.ts +94 -0
- package/src/test/perf/query.perf.test.ts +389 -0
- package/src/test/perf/query.realdata.perf.test.ts +175 -0
- package/src/thread/basic.ts +209 -0
- package/src/thread/filters.ts +234 -0
- package/src/thread/mapped.ts +166 -0
- package/src/thread/utils.ts +146 -0
- package/src/thread/writeable.ts +163 -0
- package/src/thread.ts +5 -0
- package/src/types/typescript-utils.ts +64 -0
- package/src/types.ts +1 -0
- package/src/utils/debug-name.ts +54 -0
- package/src/utils.ts +4 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Capability } from 'iso-ucan/capability'
|
|
2
|
+
import { Store } from 'iso-ucan/store'
|
|
3
|
+
import { MemoryDriver } from 'iso-kv/drivers/memory.js'
|
|
4
|
+
import { EdDSASigner } from 'iso-signatures/signers/eddsa.js'
|
|
5
|
+
import { z } from 'zod'
|
|
6
|
+
import { verify } from 'iso-signatures/verifiers/eddsa.js'
|
|
7
|
+
import { Resolver } from 'iso-signatures/verifiers/resolver.js'
|
|
8
|
+
|
|
9
|
+
export const verifierResolver = new Resolver({
|
|
10
|
+
Ed25519: verify,
|
|
11
|
+
})
|
|
12
|
+
// from:
|
|
13
|
+
//https://ucan.xyz/guides/examples/
|
|
14
|
+
|
|
15
|
+
// Initialize delegation store for tracking capability chains
|
|
16
|
+
// In production, this might be backed by a database or persistent storage
|
|
17
|
+
const store = new Store(new MemoryDriver())
|
|
18
|
+
|
|
19
|
+
// Define file read capability with path validation schema
|
|
20
|
+
// The schema ensures all invocations include a valid file path
|
|
21
|
+
const FileReadCap = Capability.from({
|
|
22
|
+
schema: z.object({
|
|
23
|
+
path: z.string(), // Required: file path to read
|
|
24
|
+
}),
|
|
25
|
+
cmd: '/file/read', // UCAN v1 command identifier
|
|
26
|
+
verifierResolver,
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
// Create cryptographic identities for resource owner and accessor
|
|
30
|
+
// In a real system, these would be persistent identity keypairs
|
|
31
|
+
const alice = await EdDSASigner.generate() // Resource owner
|
|
32
|
+
const bob = await EdDSASigner.generate() // Requesting access
|
|
33
|
+
|
|
34
|
+
const nowInSeconds = Math.floor(Date.now() / 1000)
|
|
35
|
+
|
|
36
|
+
// Alice grants Bob permission to read files
|
|
37
|
+
// This delegation can be stored, transmitted, or embedded in applications
|
|
38
|
+
const delegation = await FileReadCap.delegate({
|
|
39
|
+
iss: alice, // Alice issues this capability
|
|
40
|
+
aud: bob, // Bob is authorized to use it
|
|
41
|
+
sub: alice, // Alice's resources are the subject
|
|
42
|
+
pol: [], // No additional policy constraints
|
|
43
|
+
exp: nowInSeconds + 3600, // Expires in 1 hour for security
|
|
44
|
+
store,
|
|
45
|
+
})
|
|
46
|
+
|
|
47
|
+
// Store delegation to enable later invocation validation
|
|
48
|
+
// The store enables automatic delegation chain resolution
|
|
49
|
+
// await store.set(delegation)
|
|
50
|
+
|
|
51
|
+
// Bob exercises the delegated capability to read a specific file
|
|
52
|
+
// This creates a cryptographically verifiable access request
|
|
53
|
+
const invocation = await FileReadCap.invoke({
|
|
54
|
+
iss: bob, // Bob is invoking the capability
|
|
55
|
+
sub: alice, // Alice's system will process the request
|
|
56
|
+
args: {
|
|
57
|
+
path: '/documents/report.pdf' // Specific file Bob wants to read
|
|
58
|
+
},
|
|
59
|
+
store, // Store containing the delegation proof
|
|
60
|
+
exp: nowInSeconds + 300, // Invocation expires in 5 minutes
|
|
61
|
+
})
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { DelegationOptions, DelegationPayload, PayloadBase, StandardSchemaV1 } from 'iso-ucan/types'
|
|
2
|
+
import { Delegation } from 'iso-ucan/delegation'
|
|
3
|
+
import { AgentID } from '../applog/datom-types.ts'
|
|
4
|
+
import { Capability } from 'iso-ucan/capability'
|
|
5
|
+
import { z } from 'zod/mini'
|
|
6
|
+
import { verify } from 'iso-signatures/verifiers/eddsa.js'
|
|
7
|
+
import { Resolver } from 'iso-signatures/verifiers/resolver.js'
|
|
8
|
+
|
|
9
|
+
export const verifierResolver = new Resolver({
|
|
10
|
+
Ed25519: verify,// TODO review if iso-signatures is better than web crypto (or if it even uses it)
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
const WovinRootCap = Capability.from({
|
|
15
|
+
cmd: '/wovin',
|
|
16
|
+
schema: z.object({
|
|
17
|
+
agentString: z.string(),
|
|
18
|
+
agentID: z.string(),
|
|
19
|
+
type: z.string(),
|
|
20
|
+
}),
|
|
21
|
+
verifierResolver,
|
|
22
|
+
})
|
|
23
|
+
|
|
24
|
+
const WovinPublishCap = Capability.from({
|
|
25
|
+
cmd: '/wovin/publish',
|
|
26
|
+
schema: z.object({
|
|
27
|
+
agentString: z.string(),
|
|
28
|
+
agentID: z.string(),
|
|
29
|
+
type: z.string(),
|
|
30
|
+
}),
|
|
31
|
+
verifierResolver,
|
|
32
|
+
})
|
|
33
|
+
const WovinDelegateCap = Capability.from({
|
|
34
|
+
cmd: '/wovin/delegate',
|
|
35
|
+
schema: z.object({
|
|
36
|
+
agentString: z.string(),
|
|
37
|
+
agentID: z.string(),
|
|
38
|
+
type: z.string(),
|
|
39
|
+
}),
|
|
40
|
+
verifierResolver,
|
|
41
|
+
})
|
|
42
|
+
export enum KnownCaps {
|
|
43
|
+
publish = 'WovinPublishCap',
|
|
44
|
+
delegate = 'cap_delegate',
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
type DelegationPayloadSchema = StandardSchemaV1<unknown, DelegationPayload<unknown>>
|
|
48
|
+
export type DelegationOptionsStandard = DelegationOptions<DelegationPayloadSchema>
|
|
49
|
+
export type UCANCapMap = Partial<Record<KnownCaps, DelegationOptionsStandard[]>>
|
|
50
|
+
|
|
51
|
+
export type AgentCapMap = Record<AgentID, UCANCapMap>
|
|
52
|
+
|
|
53
|
+
export const createDelegation = (delegationPayload:DelegationOptionsStandard) => {
|
|
54
|
+
// delegationPayload.
|
|
55
|
+
return Delegation.create(delegationPayload)
|
|
56
|
+
}
|
package/src/pubsub.ts
ADDED