t44 0.4.0-rc.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.
- package/.dco-signatures +9 -0
- package/.github/workflows/dco.yml +12 -0
- package/.o/GordianOpenIntegrity-CurrentLifehash.svg +1026 -0
- package/.o/GordianOpenIntegrity-InceptionLifehash.svg +1026 -0
- package/.o/GordianOpenIntegrity.yaml +25 -0
- package/.o/assets/Hero-Terminal44-v0.jpeg +0 -0
- package/DCO.md +34 -0
- package/LICENSE.md +203 -0
- package/README.md +183 -0
- package/bin/activate +36 -0
- package/bin/activate.ts +30 -0
- package/bin/postinstall.sh +19 -0
- package/bin/shell +27 -0
- package/bin/t44 +27 -0
- package/caps/ConfigSchemaStruct.ts +55 -0
- package/caps/Home.ts +51 -0
- package/caps/HomeRegistry.ts +313 -0
- package/caps/HomeRegistryFile.ts +144 -0
- package/caps/JsonSchemas.ts +220 -0
- package/caps/OpenApiSchema.ts +67 -0
- package/caps/PackageDescriptor.ts +88 -0
- package/caps/ProjectCatalogs.ts +153 -0
- package/caps/ProjectDeployment.ts +363 -0
- package/caps/ProjectDevelopment.ts +257 -0
- package/caps/ProjectPublishing.ts +522 -0
- package/caps/ProjectRack.ts +155 -0
- package/caps/ProjectRepository.ts +322 -0
- package/caps/RootKey.ts +219 -0
- package/caps/SigningKey.ts +243 -0
- package/caps/WorkspaceCli.ts +442 -0
- package/caps/WorkspaceConfig.ts +268 -0
- package/caps/WorkspaceConfig.yaml +71 -0
- package/caps/WorkspaceConfigFile.ts +799 -0
- package/caps/WorkspaceConnection.ts +249 -0
- package/caps/WorkspaceEntityConfig.ts +78 -0
- package/caps/WorkspaceEntityConfig.v0.ts +77 -0
- package/caps/WorkspaceEntityFact.ts +218 -0
- package/caps/WorkspaceInfo.ts +595 -0
- package/caps/WorkspaceInit.ts +30 -0
- package/caps/WorkspaceKey.ts +338 -0
- package/caps/WorkspaceModel.ts +373 -0
- package/caps/WorkspaceProjects.ts +636 -0
- package/caps/WorkspacePrompt.ts +406 -0
- package/caps/WorkspaceShell.sh +39 -0
- package/caps/WorkspaceShell.ts +104 -0
- package/caps/WorkspaceShell.yaml +64 -0
- package/caps/WorkspaceShellCli.ts +109 -0
- package/caps/WorkspaceTest.ts +167 -0
- package/caps/providers/README.md +2 -0
- package/caps/providers/bunny.net/ProjectDeployment.ts +327 -0
- package/caps/providers/bunny.net/api-pull.test.ts +319 -0
- package/caps/providers/bunny.net/api-pull.ts +164 -0
- package/caps/providers/bunny.net/api-storage.test.ts +168 -0
- package/caps/providers/bunny.net/api-storage.ts +248 -0
- package/caps/providers/bunny.net/api.ts +95 -0
- package/caps/providers/dynadot.com/ProjectDeployment.ts +202 -0
- package/caps/providers/dynadot.com/api-domains.test.ts +224 -0
- package/caps/providers/dynadot.com/api-domains.ts +169 -0
- package/caps/providers/dynadot.com/api-restful-v1.test.ts +190 -0
- package/caps/providers/dynadot.com/api-restful-v1.ts +94 -0
- package/caps/providers/dynadot.com/api-restful-v2.test.ts +200 -0
- package/caps/providers/dynadot.com/api-restful-v2.ts +94 -0
- package/caps/providers/git-scm.com/ProjectPublishing.ts +654 -0
- package/caps/providers/github.com/ProjectPublishing.ts +118 -0
- package/caps/providers/github.com/api.ts +115 -0
- package/caps/providers/npmjs.com/ProjectPublishing.ts +536 -0
- package/caps/providers/semver.org/ProjectPublishing.ts +286 -0
- package/caps/providers/vercel.com/ProjectDeployment.ts +326 -0
- package/caps/providers/vercel.com/api.test.ts +67 -0
- package/caps/providers/vercel.com/api.ts +132 -0
- package/caps/providers/vercel.com/bun.lock +194 -0
- package/caps/providers/vercel.com/package.json +10 -0
- package/caps/providers/vercel.com/project.test.ts +108 -0
- package/caps/providers/vercel.com/project.ts +150 -0
- package/caps/providers/vercel.com/tsconfig.json +28 -0
- package/docs/Overview.drawio +248 -0
- package/docs/Overview.svg +4 -0
- package/lib/crypto.ts +53 -0
- package/lib/key.ts +365 -0
- package/lib/schema-console-renderer.ts +181 -0
- package/lib/schema-resolver.ts +349 -0
- package/lib/ucan.ts +137 -0
- package/package.json +101 -0
- package/structs/HomeRegistry.ts +55 -0
- package/structs/HomeRegistryConfig.ts +56 -0
- package/structs/ProjectCatalogsConfig.ts +53 -0
- package/structs/ProjectDeploymentConfig.ts +56 -0
- package/structs/ProjectDeploymentFact.ts +106 -0
- package/structs/ProjectPublishingFact.ts +68 -0
- package/structs/ProjectRack.ts +51 -0
- package/structs/ProjectRackConfig.ts +56 -0
- package/structs/RepositoryOriginDescriptor.ts +51 -0
- package/structs/RootKeyConfig.ts +64 -0
- package/structs/SigningKeyConfig.ts +64 -0
- package/structs/Workspace.ts +56 -0
- package/structs/WorkspaceCatalogs.ts +56 -0
- package/structs/WorkspaceCliConfig.ts +53 -0
- package/structs/WorkspaceConfig.ts +64 -0
- package/structs/WorkspaceConfigFile.ts +50 -0
- package/structs/WorkspaceConfigFileMeta.ts +70 -0
- package/structs/WorkspaceKey.ts +55 -0
- package/structs/WorkspaceKeyConfig.ts +56 -0
- package/structs/WorkspaceMappingsConfig.ts +56 -0
- package/structs/WorkspaceProject.ts +104 -0
- package/structs/WorkspaceProjectsConfig.ts +67 -0
- package/structs/WorkspacePublishingConfig.ts +65 -0
- package/structs/WorkspaceShellConfig.ts +83 -0
- package/structs/providers/README.md +2 -0
- package/structs/providers/bunny.net/PullZoneFact.ts +55 -0
- package/structs/providers/bunny.net/PullZoneListFact.ts +55 -0
- package/structs/providers/bunny.net/StorageZoneFact.ts +55 -0
- package/structs/providers/bunny.net/StorageZoneListFact.ts +55 -0
- package/structs/providers/bunny.net/WorkspaceConnectionConfig.ts +43 -0
- package/structs/providers/dynadot.com/DomainFact.ts +46 -0
- package/structs/providers/dynadot.com/WorkspaceConnectionConfig.ts +54 -0
- package/structs/providers/git-scm.com/ProjectPublishingFact.ts +46 -0
- package/structs/providers/github.com/ProjectPublishingFact.ts +46 -0
- package/structs/providers/github.com/WorkspaceConnectionConfig.ts +43 -0
- package/structs/providers/npmjs.com/ProjectPublishingFact.ts +46 -0
- package/structs/providers/vercel.com/ProjectDeploymentFact.ts +55 -0
- package/structs/providers/vercel.com/WorkspaceConnectionConfig.ts +49 -0
- package/tests/01-Lifecycle/main.test.ts +173 -0
- package/tsconfig.json +28 -0
- package/workspace-rt.ts +134 -0
- package/workspace.yaml +3 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
|
|
2
|
+
export async function capsule({
|
|
3
|
+
encapsulate,
|
|
4
|
+
CapsulePropertyTypes,
|
|
5
|
+
makeImportStack
|
|
6
|
+
}: any) {
|
|
7
|
+
return encapsulate({
|
|
8
|
+
'#@stream44.studio/encapsulate/spine-contracts/CapsuleSpineContract.v0': {
|
|
9
|
+
'#t44/caps/ConfigSchemaStruct': {
|
|
10
|
+
as: 'schema',
|
|
11
|
+
options: {
|
|
12
|
+
'#': {
|
|
13
|
+
schema: {
|
|
14
|
+
type: 'object',
|
|
15
|
+
properties: {
|
|
16
|
+
rootDir: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
description: 'Absolute path to the home registry root directory.'
|
|
19
|
+
},
|
|
20
|
+
identifier: {
|
|
21
|
+
type: 'string',
|
|
22
|
+
description: 'DID (Decentralized Identifier) of the home registry.'
|
|
23
|
+
},
|
|
24
|
+
createdAt: {
|
|
25
|
+
type: 'string',
|
|
26
|
+
format: 'date-time',
|
|
27
|
+
description: 'ISO 8601 timestamp of when the entity config was created.'
|
|
28
|
+
},
|
|
29
|
+
updatedAt: {
|
|
30
|
+
type: 'string',
|
|
31
|
+
format: 'date-time',
|
|
32
|
+
description: 'ISO 8601 timestamp of when the entity config was last updated.'
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
required: ['createdAt', 'updatedAt'],
|
|
36
|
+
additionalProperties: false,
|
|
37
|
+
description: 'Home registry configuration with identity and location.'
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
'#': {
|
|
43
|
+
capsuleName: {
|
|
44
|
+
type: CapsulePropertyTypes.Literal,
|
|
45
|
+
value: capsule['#']
|
|
46
|
+
},
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}, {
|
|
50
|
+
extendsCapsule: 't44/caps/WorkspaceEntityConfig',
|
|
51
|
+
importMeta: import.meta,
|
|
52
|
+
importStack: makeImportStack(),
|
|
53
|
+
capsuleName: capsule['#'],
|
|
54
|
+
})
|
|
55
|
+
}
|
|
56
|
+
capsule['#'] = 't44/structs/HomeRegistryConfig'
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
|
|
2
|
+
export async function capsule({
|
|
3
|
+
encapsulate,
|
|
4
|
+
CapsulePropertyTypes,
|
|
5
|
+
makeImportStack
|
|
6
|
+
}: any) {
|
|
7
|
+
return encapsulate({
|
|
8
|
+
'#@stream44.studio/encapsulate/spine-contracts/CapsuleSpineContract.v0': {
|
|
9
|
+
'#t44/caps/ConfigSchemaStruct': {
|
|
10
|
+
as: 'schema',
|
|
11
|
+
options: {
|
|
12
|
+
'#': {
|
|
13
|
+
schema: {
|
|
14
|
+
type: 'object',
|
|
15
|
+
properties: {
|
|
16
|
+
catalogs: {
|
|
17
|
+
type: 'object',
|
|
18
|
+
additionalProperties: true,
|
|
19
|
+
description: 'Map of catalog names to their configurations.'
|
|
20
|
+
},
|
|
21
|
+
createdAt: {
|
|
22
|
+
type: 'string',
|
|
23
|
+
format: 'date-time',
|
|
24
|
+
description: 'ISO 8601 timestamp of when the entity config was created.'
|
|
25
|
+
},
|
|
26
|
+
updatedAt: {
|
|
27
|
+
type: 'string',
|
|
28
|
+
format: 'date-time',
|
|
29
|
+
description: 'ISO 8601 timestamp of when the entity config was last updated.'
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
required: ['createdAt', 'updatedAt'],
|
|
33
|
+
additionalProperties: false,
|
|
34
|
+
description: 'Project catalogs configuration.'
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
'#': {
|
|
40
|
+
capsuleName: {
|
|
41
|
+
type: CapsulePropertyTypes.Literal,
|
|
42
|
+
value: capsule['#']
|
|
43
|
+
},
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}, {
|
|
47
|
+
extendsCapsule: 't44/caps/WorkspaceEntityConfig',
|
|
48
|
+
importMeta: import.meta,
|
|
49
|
+
importStack: makeImportStack(),
|
|
50
|
+
capsuleName: capsule['#'],
|
|
51
|
+
})
|
|
52
|
+
}
|
|
53
|
+
capsule['#'] = 't44/structs/ProjectCatalogsConfig'
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
|
|
2
|
+
export async function capsule({
|
|
3
|
+
encapsulate,
|
|
4
|
+
CapsulePropertyTypes,
|
|
5
|
+
makeImportStack
|
|
6
|
+
}: any) {
|
|
7
|
+
return encapsulate({
|
|
8
|
+
'#@stream44.studio/encapsulate/spine-contracts/CapsuleSpineContract.v0': {
|
|
9
|
+
'#t44/caps/ConfigSchemaStruct': {
|
|
10
|
+
as: 'schema',
|
|
11
|
+
options: {
|
|
12
|
+
'#': {
|
|
13
|
+
schema: {
|
|
14
|
+
type: 'object',
|
|
15
|
+
properties: {
|
|
16
|
+
deployments: {
|
|
17
|
+
type: 'object',
|
|
18
|
+
additionalProperties: {
|
|
19
|
+
type: 'object',
|
|
20
|
+
additionalProperties: true
|
|
21
|
+
},
|
|
22
|
+
description: 'Map of deployment names to their configurations.'
|
|
23
|
+
},
|
|
24
|
+
createdAt: {
|
|
25
|
+
type: 'string',
|
|
26
|
+
format: 'date-time',
|
|
27
|
+
description: 'ISO 8601 timestamp of when the entity config was created.'
|
|
28
|
+
},
|
|
29
|
+
updatedAt: {
|
|
30
|
+
type: 'string',
|
|
31
|
+
format: 'date-time',
|
|
32
|
+
description: 'ISO 8601 timestamp of when the entity config was last updated.'
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
required: ['createdAt', 'updatedAt'],
|
|
36
|
+
additionalProperties: false,
|
|
37
|
+
description: 'Project deployment configurations for deployment providers.'
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
'#': {
|
|
43
|
+
capsuleName: {
|
|
44
|
+
type: CapsulePropertyTypes.Literal,
|
|
45
|
+
value: capsule['#']
|
|
46
|
+
},
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}, {
|
|
50
|
+
extendsCapsule: 't44/caps/WorkspaceEntityConfig',
|
|
51
|
+
importMeta: import.meta,
|
|
52
|
+
importStack: makeImportStack(),
|
|
53
|
+
capsuleName: capsule['#'],
|
|
54
|
+
})
|
|
55
|
+
}
|
|
56
|
+
capsule['#'] = 't44/structs/ProjectDeploymentConfig'
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
|
|
2
|
+
export async function capsule({
|
|
3
|
+
encapsulate,
|
|
4
|
+
CapsulePropertyTypes,
|
|
5
|
+
makeImportStack
|
|
6
|
+
}: any) {
|
|
7
|
+
return encapsulate({
|
|
8
|
+
'#@stream44.studio/encapsulate/spine-contracts/CapsuleSpineContract.v0': {
|
|
9
|
+
'#t44/caps/ConfigSchemaStruct': {
|
|
10
|
+
as: 'schema',
|
|
11
|
+
options: {
|
|
12
|
+
'#': {
|
|
13
|
+
schema: {
|
|
14
|
+
type: 'object',
|
|
15
|
+
properties: {
|
|
16
|
+
projectName: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
description: 'The name of the deployed project'
|
|
19
|
+
},
|
|
20
|
+
provider: {
|
|
21
|
+
type: 'string',
|
|
22
|
+
description: 'The deployment provider (e.g., vercel.com, bunny.net)'
|
|
23
|
+
},
|
|
24
|
+
status: {
|
|
25
|
+
type: 'string',
|
|
26
|
+
enum: ['READY', 'BUILDING', 'ERROR', 'DISABLED', 'UNKNOWN'],
|
|
27
|
+
description: 'Current deployment status'
|
|
28
|
+
},
|
|
29
|
+
publicUrl: {
|
|
30
|
+
type: 'string',
|
|
31
|
+
format: 'uri',
|
|
32
|
+
description: 'The public URL where the deployment is accessible'
|
|
33
|
+
},
|
|
34
|
+
createdAt: {
|
|
35
|
+
type: 'string',
|
|
36
|
+
format: 'date-time',
|
|
37
|
+
description: 'ISO 8601 timestamp when the deployment was created'
|
|
38
|
+
},
|
|
39
|
+
updatedAt: {
|
|
40
|
+
type: 'string',
|
|
41
|
+
format: 'date-time',
|
|
42
|
+
description: 'ISO 8601 timestamp when the deployment was last updated'
|
|
43
|
+
},
|
|
44
|
+
providerProjectId: {
|
|
45
|
+
type: 'string',
|
|
46
|
+
description: 'Provider-specific project identifier'
|
|
47
|
+
},
|
|
48
|
+
providerPortalUrl: {
|
|
49
|
+
type: 'string',
|
|
50
|
+
format: 'uri',
|
|
51
|
+
description: 'URL to the provider admin portal for this deployment'
|
|
52
|
+
},
|
|
53
|
+
usage: {
|
|
54
|
+
type: 'object',
|
|
55
|
+
properties: {
|
|
56
|
+
storageBytes: {
|
|
57
|
+
type: 'integer',
|
|
58
|
+
description: 'Storage used in bytes'
|
|
59
|
+
},
|
|
60
|
+
filesCount: {
|
|
61
|
+
type: 'integer',
|
|
62
|
+
description: 'Number of files stored'
|
|
63
|
+
},
|
|
64
|
+
bandwidthBytes: {
|
|
65
|
+
type: 'integer',
|
|
66
|
+
description: 'Bandwidth used in bytes (monthly)'
|
|
67
|
+
},
|
|
68
|
+
charges: {
|
|
69
|
+
type: 'number',
|
|
70
|
+
description: 'Monthly charges in USD'
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
description: 'Usage statistics for the deployment'
|
|
74
|
+
},
|
|
75
|
+
error: {
|
|
76
|
+
type: 'string',
|
|
77
|
+
description: 'Error message if status retrieval failed'
|
|
78
|
+
},
|
|
79
|
+
rawDefinitionFilepaths: {
|
|
80
|
+
type: 'array',
|
|
81
|
+
items: {
|
|
82
|
+
type: 'string'
|
|
83
|
+
},
|
|
84
|
+
description: 'Relative filepaths to the raw provider-specific definition files'
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
required: ['projectName', 'provider', 'rawDefinitionFilepaths']
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
'#': {
|
|
93
|
+
capsuleName: {
|
|
94
|
+
type: CapsulePropertyTypes.Literal,
|
|
95
|
+
value: capsule['#']
|
|
96
|
+
},
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}, {
|
|
100
|
+
extendsCapsule: 't44/caps/WorkspaceEntityFact',
|
|
101
|
+
importMeta: import.meta,
|
|
102
|
+
importStack: makeImportStack(),
|
|
103
|
+
capsuleName: capsule['#'],
|
|
104
|
+
})
|
|
105
|
+
}
|
|
106
|
+
capsule['#'] = 't44/structs/ProjectDeploymentFact'
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
|
|
2
|
+
export async function capsule({
|
|
3
|
+
encapsulate,
|
|
4
|
+
CapsulePropertyTypes,
|
|
5
|
+
makeImportStack
|
|
6
|
+
}: any) {
|
|
7
|
+
return encapsulate({
|
|
8
|
+
'#@stream44.studio/encapsulate/spine-contracts/CapsuleSpineContract.v0': {
|
|
9
|
+
'#t44/caps/ConfigSchemaStruct': {
|
|
10
|
+
as: 'schema',
|
|
11
|
+
options: {
|
|
12
|
+
'#': {
|
|
13
|
+
schema: {
|
|
14
|
+
type: 'object',
|
|
15
|
+
properties: {
|
|
16
|
+
projectName: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
description: 'The name of the published project'
|
|
19
|
+
},
|
|
20
|
+
provider: {
|
|
21
|
+
type: 'string',
|
|
22
|
+
description: 'The publishing provider (e.g., github.com, git-scm.com, npmjs.com)'
|
|
23
|
+
},
|
|
24
|
+
status: {
|
|
25
|
+
type: 'string',
|
|
26
|
+
enum: ['READY', 'PUBLISHED', 'ERROR', 'SKIPPED', 'UNKNOWN'],
|
|
27
|
+
description: 'Current publishing status'
|
|
28
|
+
},
|
|
29
|
+
publicUrl: {
|
|
30
|
+
type: 'string',
|
|
31
|
+
format: 'uri',
|
|
32
|
+
description: 'The public URL where the published resource is accessible'
|
|
33
|
+
},
|
|
34
|
+
createdAt: {
|
|
35
|
+
type: 'string',
|
|
36
|
+
format: 'date-time',
|
|
37
|
+
description: 'ISO 8601 timestamp when the publishing was created'
|
|
38
|
+
},
|
|
39
|
+
updatedAt: {
|
|
40
|
+
type: 'string',
|
|
41
|
+
format: 'date-time',
|
|
42
|
+
description: 'ISO 8601 timestamp when the publishing was last updated'
|
|
43
|
+
},
|
|
44
|
+
error: {
|
|
45
|
+
type: 'string',
|
|
46
|
+
description: 'Error message if publishing failed'
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
required: ['projectName', 'provider']
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
'#': {
|
|
55
|
+
capsuleName: {
|
|
56
|
+
type: CapsulePropertyTypes.Literal,
|
|
57
|
+
value: capsule['#']
|
|
58
|
+
},
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}, {
|
|
62
|
+
extendsCapsule: 't44/caps/WorkspaceEntityFact',
|
|
63
|
+
importMeta: import.meta,
|
|
64
|
+
importStack: makeImportStack(),
|
|
65
|
+
capsuleName: capsule['#'],
|
|
66
|
+
})
|
|
67
|
+
}
|
|
68
|
+
capsule['#'] = 't44/structs/ProjectPublishingFact'
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
|
|
2
|
+
export async function capsule({
|
|
3
|
+
encapsulate,
|
|
4
|
+
CapsulePropertyTypes,
|
|
5
|
+
makeImportStack
|
|
6
|
+
}: any) {
|
|
7
|
+
return encapsulate({
|
|
8
|
+
'#@stream44.studio/encapsulate/spine-contracts/CapsuleSpineContract.v0': {
|
|
9
|
+
'#t44/caps/ConfigSchemaStruct': {
|
|
10
|
+
as: 'schema',
|
|
11
|
+
options: {
|
|
12
|
+
'#': {
|
|
13
|
+
schema: {
|
|
14
|
+
type: 'object',
|
|
15
|
+
properties: {
|
|
16
|
+
did: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
description: 'The DID (Decentralized Identifier) of the project rack.'
|
|
19
|
+
},
|
|
20
|
+
privateKey: {
|
|
21
|
+
type: 'string',
|
|
22
|
+
description: 'The private key for the project rack.'
|
|
23
|
+
},
|
|
24
|
+
createdAt: {
|
|
25
|
+
type: 'string',
|
|
26
|
+
format: 'date-time',
|
|
27
|
+
description: 'ISO 8601 timestamp of when the project rack was created.'
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
required: ['did', 'privateKey', 'createdAt'],
|
|
31
|
+
additionalProperties: false,
|
|
32
|
+
description: 'A project rack identity in the home registry.'
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
'#': {
|
|
38
|
+
capsuleName: {
|
|
39
|
+
type: CapsulePropertyTypes.Literal,
|
|
40
|
+
value: capsule['#']
|
|
41
|
+
},
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}, {
|
|
45
|
+
extendsCapsule: 't44/caps/HomeRegistryFile',
|
|
46
|
+
importMeta: import.meta,
|
|
47
|
+
importStack: makeImportStack(),
|
|
48
|
+
capsuleName: capsule['#'],
|
|
49
|
+
})
|
|
50
|
+
}
|
|
51
|
+
capsule['#'] = 't44/structs/ProjectRack'
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
|
|
2
|
+
export async function capsule({
|
|
3
|
+
encapsulate,
|
|
4
|
+
CapsulePropertyTypes,
|
|
5
|
+
makeImportStack
|
|
6
|
+
}: any) {
|
|
7
|
+
return encapsulate({
|
|
8
|
+
'#@stream44.studio/encapsulate/spine-contracts/CapsuleSpineContract.v0': {
|
|
9
|
+
'#t44/caps/ConfigSchemaStruct': {
|
|
10
|
+
as: 'schema',
|
|
11
|
+
options: {
|
|
12
|
+
'#': {
|
|
13
|
+
schema: {
|
|
14
|
+
type: 'object',
|
|
15
|
+
properties: {
|
|
16
|
+
name: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
description: 'Name of the project rack.'
|
|
19
|
+
},
|
|
20
|
+
identifier: {
|
|
21
|
+
type: 'string',
|
|
22
|
+
description: 'DID (Decentralized Identifier) of the project rack.'
|
|
23
|
+
},
|
|
24
|
+
createdAt: {
|
|
25
|
+
type: 'string',
|
|
26
|
+
format: 'date-time',
|
|
27
|
+
description: 'ISO 8601 timestamp of when the entity config was created.'
|
|
28
|
+
},
|
|
29
|
+
updatedAt: {
|
|
30
|
+
type: 'string',
|
|
31
|
+
format: 'date-time',
|
|
32
|
+
description: 'ISO 8601 timestamp of when the entity config was last updated.'
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
required: ['createdAt', 'updatedAt'],
|
|
36
|
+
additionalProperties: false,
|
|
37
|
+
description: 'Project rack identity and configuration.'
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
'#': {
|
|
43
|
+
capsuleName: {
|
|
44
|
+
type: CapsulePropertyTypes.Literal,
|
|
45
|
+
value: capsule['#']
|
|
46
|
+
},
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}, {
|
|
50
|
+
extendsCapsule: 't44/caps/WorkspaceEntityConfig',
|
|
51
|
+
importMeta: import.meta,
|
|
52
|
+
importStack: makeImportStack(),
|
|
53
|
+
capsuleName: capsule['#'],
|
|
54
|
+
})
|
|
55
|
+
}
|
|
56
|
+
capsule['#'] = 't44/structs/ProjectRackConfig'
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
|
|
2
|
+
export async function capsule({
|
|
3
|
+
encapsulate,
|
|
4
|
+
CapsulePropertyTypes,
|
|
5
|
+
makeImportStack
|
|
6
|
+
}: any) {
|
|
7
|
+
return encapsulate({
|
|
8
|
+
'#@stream44.studio/encapsulate/spine-contracts/CapsuleSpineContract.v0': {
|
|
9
|
+
'#t44/caps/ConfigSchemaStruct': {
|
|
10
|
+
as: 'schema',
|
|
11
|
+
options: {
|
|
12
|
+
'#': {
|
|
13
|
+
schema: {
|
|
14
|
+
type: 'object',
|
|
15
|
+
properties: {
|
|
16
|
+
did: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
description: 'The DID (Decentralized Identifier) for the repository origin.'
|
|
19
|
+
},
|
|
20
|
+
privateKey: {
|
|
21
|
+
type: 'string',
|
|
22
|
+
description: 'The base64-encoded private key for the repository origin.'
|
|
23
|
+
},
|
|
24
|
+
createdAt: {
|
|
25
|
+
type: 'string',
|
|
26
|
+
format: 'date-time',
|
|
27
|
+
description: 'ISO 8601 timestamp of when the identifier was created.'
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
required: ['did', 'privateKey', 'createdAt'],
|
|
31
|
+
additionalProperties: false,
|
|
32
|
+
description: 'A repository origin identity descriptor stored in package.json.'
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
'#': {
|
|
38
|
+
capsuleName: {
|
|
39
|
+
type: CapsulePropertyTypes.Literal,
|
|
40
|
+
value: capsule['#']
|
|
41
|
+
},
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}, {
|
|
45
|
+
extendsCapsule: 't44/caps/PackageDescriptor',
|
|
46
|
+
importMeta: import.meta,
|
|
47
|
+
importStack: makeImportStack(),
|
|
48
|
+
capsuleName: capsule['#'],
|
|
49
|
+
})
|
|
50
|
+
}
|
|
51
|
+
capsule['#'] = 't44/structs/RepositoryOriginDescriptor'
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
|
|
2
|
+
export async function capsule({
|
|
3
|
+
encapsulate,
|
|
4
|
+
CapsulePropertyTypes,
|
|
5
|
+
makeImportStack
|
|
6
|
+
}: any) {
|
|
7
|
+
return encapsulate({
|
|
8
|
+
'#@stream44.studio/encapsulate/spine-contracts/CapsuleSpineContract.v0': {
|
|
9
|
+
'#t44/caps/ConfigSchemaStruct': {
|
|
10
|
+
as: 'schema',
|
|
11
|
+
options: {
|
|
12
|
+
'#': {
|
|
13
|
+
schema: {
|
|
14
|
+
type: 'object',
|
|
15
|
+
properties: {
|
|
16
|
+
name: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
description: 'Filename of the Ed25519 private key (e.g. id_t44_ed25519).'
|
|
19
|
+
},
|
|
20
|
+
privateKeyPath: {
|
|
21
|
+
type: 'string',
|
|
22
|
+
description: 'Absolute path to the Ed25519 private key file.'
|
|
23
|
+
},
|
|
24
|
+
publicKey: {
|
|
25
|
+
type: 'string',
|
|
26
|
+
description: 'Public key string used to identify the key.'
|
|
27
|
+
},
|
|
28
|
+
keyFingerprint: {
|
|
29
|
+
type: 'string',
|
|
30
|
+
description: 'SSH key fingerprint (SHA256) for quick identification and validation.'
|
|
31
|
+
},
|
|
32
|
+
createdAt: {
|
|
33
|
+
type: 'string',
|
|
34
|
+
format: 'date-time',
|
|
35
|
+
description: 'ISO 8601 timestamp of when the entity config was created.'
|
|
36
|
+
},
|
|
37
|
+
updatedAt: {
|
|
38
|
+
type: 'string',
|
|
39
|
+
format: 'date-time',
|
|
40
|
+
description: 'ISO 8601 timestamp of when the entity config was last updated.'
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
required: [],
|
|
44
|
+
additionalProperties: false,
|
|
45
|
+
description: 'Root key configuration referencing an Ed25519 SSH key.'
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
'#': {
|
|
51
|
+
capsuleName: {
|
|
52
|
+
type: CapsulePropertyTypes.Literal,
|
|
53
|
+
value: capsule['#']
|
|
54
|
+
},
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}, {
|
|
58
|
+
extendsCapsule: 't44/caps/WorkspaceEntityConfig',
|
|
59
|
+
importMeta: import.meta,
|
|
60
|
+
importStack: makeImportStack(),
|
|
61
|
+
capsuleName: capsule['#'],
|
|
62
|
+
})
|
|
63
|
+
}
|
|
64
|
+
capsule['#'] = 't44/structs/RootKeyConfig'
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
|
|
2
|
+
export async function capsule({
|
|
3
|
+
encapsulate,
|
|
4
|
+
CapsulePropertyTypes,
|
|
5
|
+
makeImportStack
|
|
6
|
+
}: any) {
|
|
7
|
+
return encapsulate({
|
|
8
|
+
'#@stream44.studio/encapsulate/spine-contracts/CapsuleSpineContract.v0': {
|
|
9
|
+
'#t44/caps/ConfigSchemaStruct': {
|
|
10
|
+
as: 'schema',
|
|
11
|
+
options: {
|
|
12
|
+
'#': {
|
|
13
|
+
schema: {
|
|
14
|
+
type: 'object',
|
|
15
|
+
properties: {
|
|
16
|
+
name: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
description: 'Filename of the Ed25519 private key used for signing (e.g. id_t44_signing_ed25519).'
|
|
19
|
+
},
|
|
20
|
+
privateKeyPath: {
|
|
21
|
+
type: 'string',
|
|
22
|
+
description: 'Absolute path to the Ed25519 private key file.'
|
|
23
|
+
},
|
|
24
|
+
publicKey: {
|
|
25
|
+
type: 'string',
|
|
26
|
+
description: 'Public key string used to identify the signing key.'
|
|
27
|
+
},
|
|
28
|
+
keyFingerprint: {
|
|
29
|
+
type: 'string',
|
|
30
|
+
description: 'SSH key fingerprint (SHA256) for quick identification and validation.'
|
|
31
|
+
},
|
|
32
|
+
createdAt: {
|
|
33
|
+
type: 'string',
|
|
34
|
+
format: 'date-time',
|
|
35
|
+
description: 'ISO 8601 timestamp of when the entity config was created.'
|
|
36
|
+
},
|
|
37
|
+
updatedAt: {
|
|
38
|
+
type: 'string',
|
|
39
|
+
format: 'date-time',
|
|
40
|
+
description: 'ISO 8601 timestamp of when the entity config was last updated.'
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
required: [],
|
|
44
|
+
additionalProperties: false,
|
|
45
|
+
description: 'Signing key configuration referencing an Ed25519 SSH key used for code and artifact signing.'
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
'#': {
|
|
51
|
+
capsuleName: {
|
|
52
|
+
type: CapsulePropertyTypes.Literal,
|
|
53
|
+
value: capsule['#']
|
|
54
|
+
},
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}, {
|
|
58
|
+
extendsCapsule: 't44/caps/WorkspaceEntityConfig',
|
|
59
|
+
importMeta: import.meta,
|
|
60
|
+
importStack: makeImportStack(),
|
|
61
|
+
capsuleName: capsule['#'],
|
|
62
|
+
})
|
|
63
|
+
}
|
|
64
|
+
capsule['#'] = 't44/structs/SigningKeyConfig'
|