Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
4c52331
replace os.Setenv to t.Setenv in tests
jjuliano Jan 21, 2025
f4e3db7
removed unused vars
jjuliano Jan 22, 2025
a4cd7e6
use NewRequestWithContext for getting latest github release
jjuliano Jan 22, 2025
003f009
added error check on api_server when writing decoded content to api r…
jjuliano Jan 22, 2025
168ddce
pass new context instead of dr.Context
jjuliano Jan 22, 2025
251614e
add errorchk fixes
jjuliano Jan 23, 2025
10e4719
breaking change: adjust to use latest schema version changes.
jjuliano Jan 23, 2025
3c4ee8b
goclangci-lint fixes and cleanup
jjuliano Jan 23, 2025
1857dd5
goclangci-lint fixes and cleanup
jjuliano Jan 23, 2025
03270d6
replace deprecated io/ioutil with new io syntax
jjuliano Jan 23, 2025
963137d
cleanup unused context
jjuliano Jan 23, 2025
30151e0
use a much secure rand package
jjuliano Jan 24, 2025
b99a61a
goclangci-lint fixes and cleanup
jjuliano Jan 24, 2025
582ca74
pass get request to http.DefaultClient
jjuliano Jan 24, 2025
8d5bf2e
cleanup unused context; return goroutine errors
jjuliano Jan 24, 2025
e6372bd
code cleanup
jjuliano Jan 24, 2025
4325dd3
removed unused context and variable
jjuliano Jan 24, 2025
c74cda1
removed unused context and variable
jjuliano Jan 24, 2025
855b81a
changed TimeoutSeconds -> TimeoutDuration
jjuliano Jan 24, 2025
f976bd5
bump pkl to 0.27.2
jjuliano Jan 24, 2025
c325cee
return err on goroutines
jjuliano Jan 24, 2025
535aa43
migrate to schema 0.2.2
jjuliano Jan 24, 2025
73ba6b1
added dev build mode to allow building and testing locally
jjuliano Jan 24, 2025
fb909fe
fix uint32 time epoch; initially register the filepath value per each…
jjuliano Jan 26, 2025
915aa86
move runtime directory to a tempdir; propagate a new requestID uuid o…
jjuliano Jan 28, 2025
3c24e32
refactor file_ops to reduce complexity
jjuliano Jan 28, 2025
839ee60
refactor resource_compiler
jjuliano Jan 28, 2025
54f109c
refactor archiver workflow_handler to reduce code complexity
jjuliano Jan 29, 2025
df13201
refactor docker bootstrap to reduce code complexity
jjuliano Jan 29, 2025
f1f465a
refactor docker cache to reduce code complexity
jjuliano Jan 29, 2025
62379a4
refactor docker cache to cleanup arch lookup
jjuliano Jan 29, 2025
374b1e6
ensure that latest cache files are always overwritten
jjuliano Jan 29, 2025
f2d31eb
removed named returns for data test
jjuliano Jan 29, 2025
0834f9f
refactor enforcer to reduce code complexity
jjuliano Jan 29, 2025
6097790
fix for loop to change to use an integer range
jjuliano Jan 29, 2025
0a6ea6e
Updated docs to use schema 2+ new syntax
jjuliano Jan 29, 2025
661d566
upgraded PKL to 0.27.2 in CICD
jjuliano Jan 29, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/build-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,9 @@ jobs:
mkdir -p ~/.local/bin
ARCH=$(uname -m)
if [ "$ARCH" = "aarch64" ]; then
curl -L -o ~/.local/bin/pkl 'https://github.com/apple/pkl/releases/download/0.27.1/pkl-linux-aarch64'
curl -L -o ~/.local/bin/pkl 'https://github.com/apple/pkl/releases/download/0.27.2/pkl-linux-aarch64'
elif [ "$ARCH" = "x86_64" ]; then
curl -L -o ~/.local/bin/pkl 'https://github.com/apple/pkl/releases/download/0.27.1/pkl-linux-amd64'
curl -L -o ~/.local/bin/pkl 'https://github.com/apple/pkl/releases/download/0.27.2/pkl-linux-amd64'
else
echo "Unsupported architecture: $ARCH" && exit 1
fi
Expand All @@ -69,7 +69,7 @@ jobs:
- name: Install pkl on Windows
if: matrix.platform == 'windows-latest'
run: |
Invoke-WebRequest 'https://github.com/apple/pkl/releases/download/0.27.1/pkl-windows-amd64.exe' -OutFile pkl.exe
Invoke-WebRequest 'https://github.com/apple/pkl/releases/download/0.27.2/pkl-windows-amd64.exe' -OutFile pkl.exe
echo "PATH=$env:GITHUB_WORKSPACE;$env:PATH" >> $env:GITHUB_ENV
.\pkl.exe --version
shell: pwsh
Expand Down Expand Up @@ -98,7 +98,7 @@ jobs:
# uses: Cyberboss/install-winget@v1
# - name: Install pkl
# run: |
# curl -L -o /c/Users/runneradmin/.local/bin/pkl.exe 'https://github.com/apple/pkl/releases/download/0.27.1/pkl-windows-amd64.exe'
# curl -L -o /c/Users/runneradmin/.local/bin/pkl.exe 'https://github.com/apple/pkl/releases/download/0.27.2/pkl-windows-amd64.exe'
# chmod +x /c/Users/runneradmin/.local/bin/pkl.exe
# /c/Users/runneradmin/.local/bin/pkl.exe --version
# shell: bash
Expand Down
16 changes: 8 additions & 8 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,9 @@ jobs:
ARCH=$(uname -m)
echo "Detected architecture: $ARCH"
if [ "$ARCH" = "arm64" ]; then
curl -L -o ~/.local/bin/pkl 'https://github.com/apple/pkl/releases/download/0.27.1/pkl-linux-aarch64'
curl -L -o ~/.local/bin/pkl 'https://github.com/apple/pkl/releases/download/0.27.2/pkl-linux-aarch64'
elif [ "$ARCH" = "x86_64" ]; then
curl -L -o ~/.local/bin/pkl 'https://github.com/apple/pkl/releases/download/0.27.1/pkl-linux-amd64'
curl -L -o ~/.local/bin/pkl 'https://github.com/apple/pkl/releases/download/0.27.2/pkl-linux-amd64'
else
echo "Unsupported architecture: $ARCH" && exit 1
fi
Expand All @@ -56,9 +56,9 @@ jobs:
ARCH=$(uname -m)
echo "Detected architecture: $ARCH"
if [ "$ARCH" = "arm64" ]; then
curl -L -o ~/.local/bin/pkl 'https://github.com/apple/pkl/releases/download/0.27.1/pkl-macos-aarch64'
curl -L -o ~/.local/bin/pkl 'https://github.com/apple/pkl/releases/download/0.27.2/pkl-macos-aarch64'
elif [ "$ARCH" = "x86_64" ]; then
curl -L -o ~/.local/bin/pkl 'https://github.com/apple/pkl/releases/download/0.27.1/pkl-macos-amd64'
curl -L -o ~/.local/bin/pkl 'https://github.com/apple/pkl/releases/download/0.27.2/pkl-macos-amd64'
else
echo "Unsupported architecture: $ARCH" && exit 1
fi
Expand All @@ -71,7 +71,7 @@ jobs:
if: matrix.platform == 'windows-latest'
run: |
Write-Host "Downloading PKL..."
Invoke-WebRequest 'https://github.com/apple/pkl/releases/download/0.27.1/pkl-windows-amd64.exe' -OutFile pkl.exe
Invoke-WebRequest 'https://github.com/apple/pkl/releases/download/0.27.2/pkl-windows-amd64.exe' -OutFile pkl.exe
if (!(Test-Path .\pkl.exe)) {
Write-Host "pkl.exe not found!"
exit 1
Expand Down Expand Up @@ -264,7 +264,7 @@ jobs:
run: curl -LsSf https://raw.githubusercontent.com/kdeps/kdeps/refs/heads/main/install.sh | sh -s -- -d ${GITHUB_REF##*/}
- name: Install pkl
run: |
curl -L -o /c/Users/runneradmin/.local/bin/pkl.exe 'https://github.com/apple/pkl/releases/download/0.27.1/pkl-windows-amd64.exe'
curl -L -o /c/Users/runneradmin/.local/bin/pkl.exe 'https://github.com/apple/pkl/releases/download/0.27.2/pkl-windows-amd64.exe'
chmod +x /c/Users/runneradmin/.local/bin/pkl.exe
/c/Users/runneradmin/.local/bin/pkl.exe --version
shell: bash
Expand Down Expand Up @@ -306,9 +306,9 @@ jobs:
run: |
ARCH=$(uname -m)
if [ "$ARCH" = "aarch64" ]; then
curl -L -o ~/.local/bin/pkl 'https://github.com/apple/pkl/releases/download/0.27.1/pkl-linux-aarch64'
curl -L -o ~/.local/bin/pkl 'https://github.com/apple/pkl/releases/download/0.27.2/pkl-linux-aarch64'
elif [ "$ARCH" = "x86_64" ]; then
curl -L -o ~/.local/bin/pkl 'https://github.com/apple/pkl/releases/download/0.27.1/pkl-linux-amd64'
curl -L -o ~/.local/bin/pkl 'https://github.com/apple/pkl/releases/download/0.27.2/pkl-linux-amd64'
else
echo "Unsupported architecture: $ARCH" && exit 1
fi
Expand Down
4 changes: 2 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ RUN curl -LsSf https://raw.githubusercontent.com/kdeps/kdeps/refs/heads/main/ins
# Determine architecture and install pkl accordingly
RUN ARCH=$(uname -m) && \
if [ "$ARCH" = "aarch64" ]; then \
curl -L -o /home/kdeps/.local/bin/pkl 'https://github.com/apple/pkl/releases/download/0.27.1/pkl-linux-aarch64'; \
curl -L -o /home/kdeps/.local/bin/pkl 'https://github.com/apple/pkl/releases/download/0.27.2/pkl-linux-aarch64'; \
elif [ "$ARCH" = "x86_64" ]; then \
curl -L -o /home/kdeps/.local/bin/pkl 'https://github.com/apple/pkl/releases/download/0.27.1/pkl-linux-amd64'; \
curl -L -o /home/kdeps/.local/bin/pkl 'https://github.com/apple/pkl/releases/download/0.27.2/pkl-linux-amd64'; \
else \
echo "Unsupported architecture: $ARCH" && exit 1; \
fi && \
Expand Down
6 changes: 5 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ CURRENT_DIR=$(pwd)
TELEMETRY_KEY=""
FILES := $(wildcard *.yml *.txt *.py)

.PHONY: all clean test build tools format pre-commit tools-update
.PHONY: all clean test build tools format pre-commit tools-update dev-build
all: clean deps test build

deps: tools
Expand All @@ -22,6 +22,10 @@ build: deps
@echo "$(OK_COLOR)==> Building the application...$(NO_COLOR)"
@CGO_ENABLED=1 go build -v -ldflags="-s -w -X main.Version=$(or $(tag),dev-$(shell git describe --tags --abbrev=0))" -o "$(BUILD_DIR)/$(NAME)" "$(BUILD_SRC)"

dev-build: deps
@echo "$(OK_COLOR)==> Building the application for Linux...$(NO_COLOR)"
@GOOS=linux go build -v -ldflags="-s -w -X main.Version=$(or $(tag),dev-$(shell git describe --tags --abbrev=0))" -o "$(BUILD_DIR)/$(NAME)" "$(BUILD_SRC)"

clean:
@rm -rf ./bin

Expand Down
4 changes: 4 additions & 0 deletions cmd/build.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,10 @@ func NewBuildCommand(fs afero.Fs, ctx context.Context, kdepsDir string, systemCf
return err
}
agentContainerName, agentContainerNameAndVersion, err := docker.BuildDockerImage(fs, ctx, systemCfg, dockerClient, runDir, kdepsDir, pkgProject, logger)
if err != nil {
return err
}

if err := docker.CleanupDockerBuildImages(fs, ctx, agentContainerName, dockerClient); err != nil {
return err
}
Expand Down
7 changes: 3 additions & 4 deletions cmd/package.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,9 @@ import (

// Define styles using lipgloss.
var (
primaryStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("75"))
secondaryStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("211"))
successStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("76")).Bold(true)
errorStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("196")).Bold(true)
primaryStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("75"))
successStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("76")).Bold(true)
errorStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("196")).Bold(true)
)

// NewPackageCommand creates the 'package' command and passes the necessary dependencies.
Expand Down
4 changes: 2 additions & 2 deletions cmd/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ func NewRunCommand(fs afero.Fs, ctx context.Context, kdepsDir string, systemCfg
if err != nil {
return err
}
runDir, apiServerMode, hostIP, hostPort, gpuType, err := docker.BuildDockerfile(fs, ctx, systemCfg, kdepsDir, pkgProject, logger)
runDir, APIServerMode, hostIP, hostPort, gpuType, err := docker.BuildDockerfile(fs, ctx, systemCfg, kdepsDir, pkgProject, logger)
if err != nil {
return err
}
Expand All @@ -43,7 +43,7 @@ func NewRunCommand(fs afero.Fs, ctx context.Context, kdepsDir string, systemCfg
if err := docker.CleanupDockerBuildImages(fs, ctx, agentContainerName, dockerClient); err != nil {
return err
}
containerID, err := docker.CreateDockerContainer(fs, ctx, agentContainerName, agentContainerNameAndVersion, hostIP, hostPort, gpuType, apiServerMode, dockerClient)
containerID, err := docker.CreateDockerContainer(fs, ctx, agentContainerName, agentContainerNameAndVersion, hostIP, hostPort, gpuType, APIServerMode, dockerClient)
if err != nil {
return err
}
Expand Down
2 changes: 1 addition & 1 deletion cmd/scaffold.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ func NewScaffoldCommand(fs afero.Fs, ctx context.Context, logger *logging.Logger

for _, fileName := range fileNames {
if err := template.GenerateSpecificAgentFile(fs, ctx, logger, agentName, fileName); err != nil {
logger.Error("Error scaffolding file:", err)
logger.Error("error scaffolding file:", err)
fmt.Println("Error:", err)
} else {
fmt.Printf("Successfully scaffolded file: %s\n", fileName)
Expand Down
18 changes: 9 additions & 9 deletions docs/getting-started/configuration/workflow.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ The `workflow.pkl` contains configuration about the AI Agent, namely:
> kdeps uses the version for mapping the graph-based dependency workflow execution order. For this reason, the version
> is *required*.

- The `action` resource to be executed when running the AI agent. This is the ID of the resource.
- The `targetActionID` resource to be executed when running the AI agent. This is the ID of the resource.
- Existing AI agents `workflows` to be reused in this AI agent. The agent needed to be installed first via `kdeps
install` command.

Expand All @@ -23,8 +23,8 @@ packages, and default LLM models.

```apl
settings {
apiServerMode = true
apiServer {...}
APIServerMode = true
APIServer {...}
agentSettings {...}
}
```
Expand All @@ -33,19 +33,19 @@ settings {

The `settings` block includes the following configurations:

- **`apiServerMode`**: A boolean flag that enables or disables API server mode for the project. When set to `false`, the
- **`APIServerMode`**: A boolean flag that enables or disables API server mode for the project. When set to `false`, the
default action is executed directly, and the program exits upon completion.

- **`apiServer`**: A configuration block that specifies API settings such as `hostIP`, `portNum`, and `routes`.
- **`APIServer`**: A configuration block that specifies API settings such as `hostIP`, `portNum`, and `routes`.

- **`agentSettings`**: A configuration block that includes settings for installing Anaconda, `condaPackages`,
`pythonPackages`, custom or PPA Ubuntu `repositories`, Ubuntu `packages`, and Ollama LLM `models`.


### API Server Settings

The `apiServer` block defines API routing configurations for the AI agent. These settings are only applied when
`apiServerMode` is set to `true`.
The `APIServer` block defines API routing configurations for the AI agent. These settings are only applied when
`APIServerMode` is set to `true`.

- **`hostIP` and `portNum`**: Define the IP address and port for the Docker container. The default values are
`"127.0.0.1"` for `hostIP` and `3000` for `portNum`.
Expand Down Expand Up @@ -78,7 +78,7 @@ routes {
}
```

Each route targets a single `action`, meaning every route points to the main action specified in the workflow
Each route targets a single `targetActionID`, meaning every route points to the main action specified in the workflow
configuration. If multiple routes are defined, you must use a `skipCondition` logic to specify which route a resource
should target. See the [Workflow](#workflow) for more details.

Expand All @@ -101,7 +101,7 @@ For more details, refer to the [Skip Conditions](/getting-started/resources/skip

#### Lambda Mode

When the `apiServerMode` is set to `false` in the workflow configuration, the AI agent operates in a **single-execution
When the `APIServerMode` is set to `false` in the workflow configuration, the AI agent operates in a **single-execution
lambda mode**. In this mode, the AI agent is designed to execute a specific task or serve a particular purpose,
completing its function in a single, self-contained execution cycle.

Expand Down
22 changes: 11 additions & 11 deletions docs/getting-started/introduction/quickstart.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,17 +69,17 @@ comprehensive details, see the [`Workflow`](../configuration/workflow.md) docume

### Default Action

The `workflow.pkl` file defines the workflow and settings for your AI agent. Within this file, you’ll find the `action`
The `workflow.pkl` file defines the workflow and settings for your AI agent. Within this file, you’ll find the `targetActionID`
configuration:

```apl
action = "responseResource"
targetActionID = "responseResource"
```

Here, `responseResource` refers to the ID of the target resource file, located in `resources/response.pkl`:

```apl
id = "responseResource"
actionID = "responseResource"
```

This resource will be executed as the default action whenever the AI agent runs.
Expand All @@ -90,8 +90,8 @@ The `workflow.pkl` file allows you to configure the AI agent to operate in API m
configuration:

```apl
apiServerMode = true
apiServer {
APIServerMode = true
APIServer {
...
portNum = 3000
routes {
Expand All @@ -116,7 +116,7 @@ With these settings, you can interact with the API using `curl` or similar tools
curl 'http://localhost:3000/api/v1/whois' -X GET
```

If you set `apiServerMode` to `false`, the AI agent will bypass the API server and directly execute the default action,
If you set `APIServerMode` to `false`, the AI agent will bypass the API server and directly execute the default action,
exiting upon completion.

### LLM Models
Expand Down Expand Up @@ -180,7 +180,7 @@ Dependency](../resources/kartographer.md) documentation.
Within the `resources/response.pkl`, you'll find the following structure:

```apl
apiResponse {
APIResponse {
success = true
response {
data {
Expand All @@ -199,7 +199,7 @@ apiResponse {
}
```

The `apiResponse` directive is the structure that will be converted into a JSON response.
The `APIResponse` directive is the structure that will be converted into a JSON response.

The resulting JSON will generally look like this:

Expand Down Expand Up @@ -263,8 +263,8 @@ depend on other resource in order to function.
chat {
model = "llama3.1"
prompt = "Who is @(request.data())?"
jsonResponse = true
jsonResponseKeys {
JSONResponse = true
JSONResponseKeys {
"first_name"
"last_name"
"parents"
Expand All @@ -291,7 +291,7 @@ to the route configuration, the `curl` command can send request data using the `
curl 'http://localhost:3000/api/v1/whois' -X GET -d "Neil Armstrong"
```

Additionally, we have set `jsonResponse` to `true`, enabling the use of `jsonResponseKeys`. To ensure the output
Additionally, we have set `JSONResponse` to `true`, enabling the use of `JSONResponseKeys`. To ensure the output
conforms to specific data types, you can define the keys with their corresponding types. For example:
`first_name__string`, `famous_quotes__array`, `details__markdown`, or `age__integer`.

Expand Down
6 changes: 3 additions & 3 deletions docs/getting-started/resources/client.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,10 @@ Configurations](../resources/resources#common-resource-configurations) documenta

## HTTP Client Block

Within the file, you’ll find the `httpClient` block, which is structured as follows:
Within the file, you’ll find the `HTTPClient` block, which is structured as follows:

```apl
httpClient {
HTTPClient {
method = "GET"
url = "https://www.google.com"
data {}
Expand All @@ -47,7 +47,7 @@ httpClient {
}
```

Key elements of the `httpClient` block include:
Key elements of the `HTTPClient` block include:

- **`method`**: Specifies the HTTP verb to be used for this API call.
- **`url`**: Defines the API endpoint.
Expand Down
6 changes: 3 additions & 3 deletions docs/getting-started/resources/functions.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,11 @@ Below is a list of functions available for each resource:

| **Function** | **Description** |
|:---------------------------|:--------------------------------------------------------------------------------------------------------------------------------------------|
| llm.resource("id") | Accesses the `llm` resource for the specified ID, providing details about the `prompt`, `response`, `jsonResponse`, and `jsonResponseKeys`. |
| llm.resource("id") | Accesses the `llm` resource for the specified ID, providing details about the `prompt`, `response`, `JSONResponse`, and `JSONResponseKeys`. |
| llm.response("id") | Retrieves the response generated by the LLM for the specified resource ID. |
| llm.prompt("id") | Retrieves the prompt sent to the LLM for the specified resource ID. |
| llm.jsonResponse("id") | Retrieves the configuration of the `jsonResponse` for the specified resource ID. |
| llm.jsonResponseKeys("id") | Fetches the configuration of `jsonResponseKeys` for the specified resource ID. |
| llm.JSONResponse("id") | Retrieves the configuration of the `JSONResponse` for the specified resource ID. |
| llm.JSONResponseKeys("id") | Fetches the configuration of `JSONResponseKeys` for the specified resource ID. |
| llm.file("id") | Retrieves the file path where the llm response output was automatically saved during runtime. |

## Python Resource Functions
Expand Down
8 changes: 4 additions & 4 deletions docs/getting-started/resources/global-functions.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,15 +46,15 @@ Below is a list of the global functions available for each resource:

| **Function** | **Description** |
|:-------------------------------------|:------------------------------------------------------------|
| document.jsonParser("string") | Parse a JSON `String` and returns a native `Dynamic` object |
| document.jsonParserMapping("string") | Parse a JSON `String` and returns a native `Mapping` object |
| document.JSONParser("string") | Parse a JSON `String` and returns a native `Dynamic` object |
| document.JSONParserMapping("string") | Parse a JSON `String` and returns a native `Mapping` object |

## Document JSON, YAML and XML Generators

| **Function** | **Description** |
|:------------------------|:-----------------------------------------------------|
| document.jsonRenderDocument(Any) | Parse `Any` object and returns a JSON `String` |
| document.jsonRenderValue(Any) | Parse `Any` object and returns a JSON `String` Value |
| document.JSONRenderDocument(Any) | Parse `Any` object and returns a JSON `String` |
| document.JSONRenderValue(Any) | Parse `Any` object and returns a JSON `String` Value |
| document.yamlRenderDocument(Any) | Parse `Any` object and returns a Yaml `String` |
| document.yamlRenderValue(Any) | Parse `Any` object and returns a Yaml `String` Value |
| document.xmlRenderDocument(Any) | Parse `Any` object and returns a XML `String` |
Expand Down
Loading