t44 0.4.0-rc.10
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.yaml +12 -0
- package/.github/workflows/gordian-open-integrity.yaml +13 -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 +185 -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 +57 -0
- package/caps/HomeRegistry.ts +319 -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 +807 -0
- package/caps/WorkspaceConnection.ts +256 -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 +133 -0
- package/caps/providers/github.com/api.ts +130 -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/examples/01-Lifecycle/main.test.ts +228 -0
- package/lib/crypto.ts +53 -0
- package/lib/key.ts +369 -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 +102 -0
- package/standalone-rt.ts +121 -0
- package/structs/HomeRegistry.ts +55 -0
- package/structs/HomeRegistryConfig.ts +60 -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/tsconfig.json +28 -0
- package/workspace-rt.ts +134 -0
- package/workspace.yaml +3 -0
|
@@ -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'
|
|
@@ -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
|
+
|
|
15
|
+
type: 'object',
|
|
16
|
+
properties: {
|
|
17
|
+
did: {
|
|
18
|
+
type: 'string',
|
|
19
|
+
description: 'The DID (Decentralized Identifier) of the workspace.'
|
|
20
|
+
},
|
|
21
|
+
privateKey: {
|
|
22
|
+
type: 'string',
|
|
23
|
+
description: 'The private key associated with the workspace DID.'
|
|
24
|
+
},
|
|
25
|
+
createdAt: {
|
|
26
|
+
type: 'string',
|
|
27
|
+
format: 'date-time',
|
|
28
|
+
description: 'ISO 8601 timestamp of when the workspace was registered.'
|
|
29
|
+
},
|
|
30
|
+
workspaceRootDir: {
|
|
31
|
+
type: 'string',
|
|
32
|
+
description: 'Absolute path to the workspace root directory.'
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
required: ['did', 'privateKey', 'createdAt', 'workspaceRootDir'],
|
|
36
|
+
additionalProperties: false,
|
|
37
|
+
description: 'Workspace identity and location in the home registry.'
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
'#': {
|
|
43
|
+
capsuleName: {
|
|
44
|
+
type: CapsulePropertyTypes.Literal,
|
|
45
|
+
value: capsule['#']
|
|
46
|
+
},
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}, {
|
|
50
|
+
extendsCapsule: 't44/caps/HomeRegistryFile',
|
|
51
|
+
importMeta: import.meta,
|
|
52
|
+
importStack: makeImportStack(),
|
|
53
|
+
capsuleName: capsule['#'],
|
|
54
|
+
})
|
|
55
|
+
}
|
|
56
|
+
capsule['#'] = 't44/structs/Workspace'
|
|
@@ -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
|
+
description: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
description: 'Description of the catalog.'
|
|
19
|
+
},
|
|
20
|
+
repositories: {
|
|
21
|
+
type: 'object',
|
|
22
|
+
additionalProperties: true,
|
|
23
|
+
description: 'Map of repository identifiers to their configurations.'
|
|
24
|
+
},
|
|
25
|
+
createdAt: {
|
|
26
|
+
type: 'string',
|
|
27
|
+
format: 'date-time',
|
|
28
|
+
description: 'ISO 8601 timestamp of when the catalog was created.'
|
|
29
|
+
},
|
|
30
|
+
updatedAt: {
|
|
31
|
+
type: 'string',
|
|
32
|
+
format: 'date-time',
|
|
33
|
+
description: 'ISO 8601 timestamp of when the catalog was last updated.'
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
additionalProperties: true,
|
|
37
|
+
description: 'A project catalog entry in the home registry.'
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
'#': {
|
|
43
|
+
capsuleName: {
|
|
44
|
+
type: CapsulePropertyTypes.Literal,
|
|
45
|
+
value: capsule['#']
|
|
46
|
+
},
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}, {
|
|
50
|
+
extendsCapsule: 't44/caps/HomeRegistryFile',
|
|
51
|
+
importMeta: import.meta,
|
|
52
|
+
importStack: makeImportStack(),
|
|
53
|
+
capsuleName: capsule['#'],
|
|
54
|
+
})
|
|
55
|
+
}
|
|
56
|
+
capsule['#'] = 't44/structs/WorkspaceCatalogs'
|
|
@@ -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
|
+
javascript: {
|
|
17
|
+
type: 'object',
|
|
18
|
+
additionalProperties: true,
|
|
19
|
+
description: 'JavaScript runtime configuration for the CLI.'
|
|
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'],
|
|
33
|
+
additionalProperties: true,
|
|
34
|
+
description: 'Workspace CLI configuration including runtime settings.'
|
|
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/WorkspaceCliConfig'
|
|
@@ -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
|
+
identifier: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
description: 'DID (Decentralized Identifier) of the workspace.'
|
|
19
|
+
},
|
|
20
|
+
rootDir: {
|
|
21
|
+
type: 'string',
|
|
22
|
+
description: 'Absolute path to the workspace root directory.'
|
|
23
|
+
},
|
|
24
|
+
rootConfigFilepath: {
|
|
25
|
+
type: 'string',
|
|
26
|
+
description: 'Relative path to the workspace config file.'
|
|
27
|
+
},
|
|
28
|
+
name: {
|
|
29
|
+
type: 'string',
|
|
30
|
+
description: 'Name of the workspace.'
|
|
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: ['createdAt', 'updatedAt'],
|
|
44
|
+
additionalProperties: false,
|
|
45
|
+
description: 'Core workspace configuration including identity and location.'
|
|
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/WorkspaceConfig'
|
|
@@ -0,0 +1,50 @@
|
|
|
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
|
+
extends: {
|
|
17
|
+
type: 'array',
|
|
18
|
+
items: {
|
|
19
|
+
type: 'string'
|
|
20
|
+
},
|
|
21
|
+
description: 'List of config file paths to extend from. Supports relative paths and npm package paths.'
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
additionalProperties: true,
|
|
25
|
+
patternProperties: {
|
|
26
|
+
'^#': {
|
|
27
|
+
type: 'object',
|
|
28
|
+
description: 'Workspace config entity keyed by struct capsule name prefixed with #'
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
description: 'A workspace configuration file that can extend other config files and contains workspace config entities.'
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
'#': {
|
|
37
|
+
capsuleName: {
|
|
38
|
+
type: CapsulePropertyTypes.Literal,
|
|
39
|
+
value: capsule['#']
|
|
40
|
+
},
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}, {
|
|
44
|
+
extendsCapsule: 't44/caps/WorkspaceConfigFile',
|
|
45
|
+
importMeta: import.meta,
|
|
46
|
+
importStack: makeImportStack(),
|
|
47
|
+
capsuleName: capsule['#'],
|
|
48
|
+
})
|
|
49
|
+
}
|
|
50
|
+
capsule['#'] = 't44/structs/WorkspaceConfigFile'
|
|
@@ -0,0 +1,70 @@
|
|
|
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
|
+
filePath: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
description: 'Absolute path to the workspace config file.'
|
|
19
|
+
},
|
|
20
|
+
relPath: {
|
|
21
|
+
type: 'string',
|
|
22
|
+
description: 'Relative path to the workspace config file from workspace root.'
|
|
23
|
+
},
|
|
24
|
+
entities: {
|
|
25
|
+
type: 'object',
|
|
26
|
+
additionalProperties: {
|
|
27
|
+
type: 'object',
|
|
28
|
+
properties: {
|
|
29
|
+
line: {
|
|
30
|
+
type: 'integer',
|
|
31
|
+
description: 'Line number where the entity is defined.'
|
|
32
|
+
},
|
|
33
|
+
data: {
|
|
34
|
+
type: 'object',
|
|
35
|
+
additionalProperties: true,
|
|
36
|
+
description: 'Entity data.'
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
required: ['line', 'data']
|
|
40
|
+
},
|
|
41
|
+
description: 'Map of entity keys (e.g., #WorkspaceConfig) to their line numbers and data.'
|
|
42
|
+
},
|
|
43
|
+
updatedAt: {
|
|
44
|
+
type: 'string',
|
|
45
|
+
format: 'date-time',
|
|
46
|
+
description: 'ISO 8601 timestamp of when this metadata was last updated.'
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
required: ['filePath', 'relPath', 'entities', 'updatedAt'],
|
|
50
|
+
additionalProperties: false,
|
|
51
|
+
description: 'Cached metadata for a workspace config file including entity line numbers.'
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
'#': {
|
|
57
|
+
capsuleName: {
|
|
58
|
+
type: CapsulePropertyTypes.Literal,
|
|
59
|
+
value: capsule['#']
|
|
60
|
+
},
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}, {
|
|
64
|
+
extendsCapsule: 't44/caps/WorkspaceEntityFact',
|
|
65
|
+
importMeta: import.meta,
|
|
66
|
+
importStack: makeImportStack(),
|
|
67
|
+
capsuleName: capsule['#'],
|
|
68
|
+
})
|
|
69
|
+
}
|
|
70
|
+
capsule['#'] = 't44/structs/WorkspaceConfigFileMeta'
|