This PKL-based schema is now legacy and being deprecated. This version (v0.5.0) will be the last release using PKL for schema definitions. Future versions of Kdeps will migrate to YAML for schema definitions.
This is the schema definitions used by kdeps. See the schema documentation.
Kdeps is an AI Agent framework for building self-hosted RAG AI Agents powered by open-source LLMs.
chore: auto-update pkl to 0.30.2 and pkl-go to 0.12.1 (#52)
Change authentication token in workflow Updated the workflow to use RELEASE_TOKEN instead of GITHUB_TOKEN for authentication. fix: automate PKL import conversion to local paths Rewrote fix_deps_imports.sh to automatically convert package URLs to local paths for offline compatibility. This script now:
- Converts remote package URLs to local paths programmatically
package://pkg.pkl-lang.org/pkl-go/pkl.golang@{version}#/go.pkl
→ external/pkl-go/codegen/src/go.pklpackage://pkg.pkl-lang.org/pkl-pantry/pkl.experimental.uri@{version}#/URI.pkl
→ external/pkl-pantry/packages/pkl.experimental.uri/URI.pklHandles any version dynamically using regex patterns
Cross-platform compatible (macOS and Linux)
Uses temporary file approach instead of sed -i for portability
- Validates conversion success
Verifies no package URLs remain
Exits with error if conversion incomplete
Benefits:
✅ Fully automated in workflow (runs after download_deps.sh)
✅ No manual intervention needed
✅ Version-agnostic (works with any PKL version updates)
✅ Ensures offline compatibility for all PKL files
This replaces the previous manual approach and ensures the auto-update workflow will always produce offline-compatible PKL files.
🤖 Generated with Claude Code
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
fix: convert PKL files to use local paths for offline compatibility Replaced all remote package URLs with local paths to ensure offline compatibility:
package://pkg.pkl-lang.org/pkl-go/pkl.golang@0.11.1#/go.pkl
- → external/pkl-go/codegen/src/go.pkl
package://pkg.pkl-lang.org/pkl-pantry/pkl.experimental.uri@1.0.3#/URI.pkl
- → external/pkl-pantry/packages/pkl.experimental.uri/URI.pkl
Files updated:
Tests:
✅ TestEnsureOfflineCompatibility passing
✅ All 27 asset tests passing
This fixes the offline compatibility test failures and ensures all PKL files work without internet access using only local dependencies.
🤖 Generated with Claude Code
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
fix: eliminate case-insensitive file name collisions Fixed case-insensitive file name collision issues on macOS/Windows by:
- Updated download_deps.sh to only download files specified in versions.json
- Changed from copying all .pkl files to copying only specified files
- Preserves directory structure for nested files
- Prevents downloading unnecessary files that cause collisions
- Corrected file names in versions.json to match actual files in packages:
- com.circleci.v2: CircleCI.pkl → Config.pkl
- io.prometheus: Prometheus.pkl → Configuration.pkl, Rule.pkl, PrometheusObject.pkl
- org.apache.spark: Spark.pkl → Properties.pkl, PropertiesBase.pkl
- pkl.table: TableRenderer.pkl → table.pkl
- pkl.lua: Lua.pkl → lua.pkl
- pkl.experimental.net: Network.pkl → net.pkl, u128.pkl
- pkl.csv: CSV.pkl → csv.pkl
- Benefits:
- ✅ No case-insensitive collisions (verified with detection script)
- ✅ Faster downloads (only fetches needed files)
- ✅ Smaller repository size (71 files vs 2475+ files)
- ✅ All Go tests passing
- ✅ Works on case-insensitive filesystems (macOS, Windows)
- Test results:
Downloaded 71 pkl files across 22 directories
Zero case-insensitive duplicates detected
Resolves case-insensitive file name collision errors.
🤖 Generated with Claude Code
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
feat: revert to v0.4.1-pkldocs with auto-update workflow
Revert repository to v0.4.1-pkldocs state
Add auto-update GitHub Actions workflow for PKL dependencies
Add workflow documentation (README, QUICKSTART, TESTING)
Fix fix_deps_imports.sh for Linux compatibility (sed syntax)
Update OFFLINE.md with automation section
Add workflow badge to README.md
The auto-update workflow:
Runs daily at 00:00 UTC
Checks for new PKL and pkl-go releases
Automatically creates PRs with detailed changelogs
Validates changes with tests before PR creation
All tests passing:
27 Go tests passed
Build successful
🤖 Generated with Claude Code
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
v0.4.1-pkldocs: - update relnotes
pkldoc generation fix
Merge branch 'main' of https://github.com/kdeps/schema
Merge branch 'main' of https://github.com/kdeps/schema
added retract directive on previous tags used for kdeps-next experiments pushed as main tags
v0.4.1-dev: - Update pkl min (#42)
added retract directive on previous tags used for kdeps-next experiments pushed as main tags
changed minPklVersion to "0.29.1"
v0.4.0-dev: - Tempdir+assets (#41)
added retract directive on previous tags used for kdeps-next experiments pushed as main tags
copy assets to tempdir
update to pkkl version 0.29.1
v0.3.1-dev: -
v0.3.0-dev: - added retract directive on previous tags used for kdeps-next experiments pushed as main tags
updated relnote/readme
v0.3.0: - Pkl gen go upgrade (#40)
additional assets offline-ready redundancy
upgrade to pkl-go 0.11.1 and pkl-gen-go 0.11.1 updated README.md
v0.2.50: - Offline phase 3 (#39)
upgraded gradle and fix pkldoc GHA step
add org.openapis.v3 to list of dependencies
use pkl-pipe 1.0.2
added new dependencies to fix pkldoc
add more deps to fix pkldoc GHA generation
cleanup dependencies and version to only include pkl-pantry and pkl-go
move external to assets folder
use remote package resource in deps/pkl
streamline gha flows on push to branch/master and tag
target offline/local on assets/pkl
fix assets tests and fix Makefile generate step
fix GHA build step
fixed pkl version handling for non-tagged build
add redundant local and offline conversion of PKL files through assets library
v0.2.49: - Fix pkldoc 3 (#38)
upgraded gradle and fix pkldoc GHA step
add org.openapis.v3 to list of dependencies
use pkl-pipe 1.0.2
added new dependencies to fix pkldoc
add more deps to fix pkldoc GHA generation
v0.2.48: - Fix pkldoc 2 (#37)
upgraded gradle and fix pkldoc GHA step
add org.openapis.v3 to list of dependencies
use pkl-pipe 1.0.2
added new dependencies to fix pkldoc
v0.2.47: - Fix pkldoc 1 (#36)
upgraded gradle and fix pkldoc GHA step
add org.openapis.v3 to list of dependencies
use pkl-pipe 1.0.2
v0.2.46: - upgraded gradle and fix pkldoc GHA step (#35)
v0.2.45: - added the embedded assets/pkl/ to the release
updated README.md
v0.2.44: - Offline part 2 (#34)
added embedded assets support
implement offline-ready PKL dependency management system
v0.2.43: - added OfflineMode to run agents on offline (#33)
added AGENTS.md file
v0.2.42: - Change workflow Name -> AgentID for much clearer config id
v0.2.41: - hotfix: upgrade pkl version to 0.28.2
new uniform schema semantics (#32)
v0.2.40: - embed deps/pkl schema files via go:embed
v0.2.39: - add the pkl files in the output_dir for expose to tests
v0.2.38: - update readme/relnotes
add resource#itemValues function to obtain item iteration values
v0.2.37: - add pkl:json imports per each resource
v0.2.36: - added the itemValues per resource to obtain the iteration results
v0.2.35: - null propagate the array obtained from dynamic reader for item values
v0.2.34: - add nullable defaults for item values listing
v0.2.33: - add return value listing type for item
v0.2.32: - return a new listing when item results is null
v0.2.31: - values now require to pass the actionID (#18)
v0.2.30: - update readme/relnotes
Merge branch 'main' of https://github.com/kdeps/schema
removed id params on item operations
v0.2.29: - change item function signature to not require an id params (#17)
added ability to iterate through items
changed item.fetch -> item.current
change item function signature to not require an id params
v0.2.28: - added ability to iterate through items (#16)
added ability to iterate through items
changed item.fetch -> item.current update readme/relnotes
v0.2.27: - hotfix: register tool into resources
updated relnote/readme
v0.2.26: - hotfix: add path to the script or inline script to LLM tools
v0.2.25: - add ability for LLM to use tools (akin to MCP) (#15)
Merge branch 'main' of https://github.com/kdeps/schema
updated relnote/readme
v0.2.24: - Session sqlite storage (#14)
added deleteItem to memory storage
add Session ephemeral storage updated relnote/readme
v0.2.23: - Expr block (#13)
removed unusued MemoryRecord class
add 'expr {...}' block to eval pkl expressions, i.e. memory.setItem('foo', 'bar') Merge branch 'main' of https://github.com/kdeps/schema
updated relnote/readme
v0.2.22: - simplify memory operations (getItem/setItem), and add clear() (#12)
v0.2.21: - add the persistent sqlite memory record item read and update function (#11)
Merge branch 'main' of https://github.com/kdeps/schema
update readme/relnote
v0.2.20: - remove specific LLM role types (#10)
updated schema readme/relnotes
v0.2.19: - Multi-prompt support (#9)
add role types on LLM action
add multiprompt support
v0.2.18: - add role types on LLM action (#8)
v0.2.17: - Add TrustedProxies to WebServer (#7)
fix indentation on deps/pkl files
add trustedproxy on webserver
keep webserver name in parity with apiserver
v0.2.16: - add webserver settings to project workflow settings (#6)
v0.2.15: - Create frontend serving settings (#5)
upgrade default ollama version to 0.6.5
added CORS configuration to APIServer
added webserver settings for serving static (html, htmx, etc.) or app (nodejs, streamlit, rails, etc.)
v0.2.14: - allow restricting http methods and params per resource (#4)
Merge branch 'main' of https://github.com/kdeps/schema
updated release notes
v0.2.13: - allow setting permitted HTTP values (headers, params, methods, routes) on resource (#3)
updated release notes
v0.2.12: - add ability to set tz identifier timezone (#2)
v0.2.11: - Merge pull request #1 from kdeps/bump_versions_04_2025 upgrade lowest pkl version to 0.28.1 Merge branch 'bump_versions_04_2025' of https://github.com/kdeps/schema into bump_versions_04_2025
upgrade lowest pkl version to 0.28.1
upgrade lowest pkl version to 0.28.1
v0.2.10: - changed timestamp to duration from durationunit
updated relnotes / readme
v0.2.9: - change timeoutDuration to Duration and use PKL semantics for duration seconds
v0.2.8: - Use DurationUnit for Timestamps; Upgrade pkl-go to 0.9.0
v0.2.7: - api response meta blocks can be optional
updated release info
v0.2.6: - added api response meta info for other additional information sent over the JSON response
updated release notes
v0.2.5: - allow sending headers to response
v0.2.4: - allow access to client IP and request ID
added new schema documentation info
updated release notes
v0.2.3: - added trustedProxies settings to API server
v0.2.2: - Change resource ID to actionID, and Workflow action to targetActionID
v0.2.1: - bump pkl to 0.27.2
changed timeoutSeconds -> timeoutDuration
v0.2.0: - Use uniform naming convention for {Http,Api,Id,Json} -> {HTTP,API,ID,JSON}
updated .gitattributes
v0.1.46: - reprioritize request skip validations
v0.1.45: - removed all deprecated imports
v0.1.44: - skip & validation is now a listing of any types
v0.1.43: - updated README.md
bump pkl to 0.27.1
v0.1.42: - upgrade minimum pkl version to 0.26.3. added minor fixes on the relnote generator.
Added skip validation helper functions
v0.1.41: - return stderr if not empty on stdout function
added README.md and relnote generator
v0.1.40: - change request function from param("..") -> params("..")
v0.1.39: - import upstream PKL modules and KDEPS PKL helpers in resource & api response
document renderers respond with null rather than empty string
v0.1.38: - added document pkl module for parsing and creating json, yaml and xml docs
v0.1.37: - added Data resource helper for getting agent data file path
v0.1.36: - Added file attribute where each associated resource value was saved
v0.1.35: - decode base64 strings by default on all Resource types
v0.1.34: - added params mapping to http client resources (go gen code)
added params mapping to http client resources
v0.1.33: - make the build args as mapping; added build env in docker settings
v0.1.32: - Add parameters to docker settings; removed unused PKL configurations
v0.1.31: - added heroImage and agentIcon
added ollamaImageTag property in workflow settings
v0.1.30: - Make the API response errors block listing (array)
v0.1.29: - added condaPackages section
added support for installing conda packages
v0.1.28: - register python resource to resource pkl
Revert "upgrade pkl to 0.27.0; register python resource to resource pkl" This reverts commit 86a334d697479e307513f759d2a7b0b06f9be35c.
Revert "Update Gradle to 8.10.2" This reverts commit 45a93d3ebfa5aa2e795144984f0cde22bc1dc127.
v0.1.27: - Update Gradle to 8.10.2
v0.1.26: - upgrade pkl to 0.27.0; register python resource to resource pkl
v0.1.25: - added python script resource
v0.1.24: - reflect name changes to dockersettings go source
v0.1.23: - changed ppa to repositories
added install Anaconda option
v0.1.22: - Make workflow an open module
v0.1.21: - deprecate postflightCheck
v0.1.20: - upgrade cicd pkl to 0.26.1
v0.1.19: - added API documentation. Change request API files functions for clarity
v0.1.18: - added Ubuntu PPA support; add API for querying filetypes by index
v0.1.17: - simplify usage of vision models and attachments
v0.1.16: - added visionFiles to LLM
v0.1.15: - fix typo for resolving filepath
v0.1.14: - renamed responseFile to file
renamed responseFile to file
added API server responseFile
added request APIs for getting the list of files
v0.1.13: - always return the first element, in case of a single file upload
support multiple file uploads
v0.1.12: - added vision and image gen attributes to LLM
v0.1.11: - make api serverr request extendable
v0.1.10: - Added request file operations. Decode base64 request by default. include allowed HTTP methods.
v0.1.9: - fix isEmpty on class
v0.1.8: - simplify resource resolver methods
remove api server response type, focus on json response for now
v0.1.7: - removed textproto from api response types (gen code)
removed textproto from api response types
v0.1.6: - response keys gen code
v0.1.5: - added json response keys to LLM
v0.1.4: - fix http response block
v0.1.3: - change schema to jsonResponse (bool)
v0.1.2: - set empty defaults when calling a function
added security enforcement settings
added schema to LLM
v0.1.1: - added extended functions for exec, http and llm modules
v0.1.0: - added deferred response api
added llm timeout and kdeps dir settings
add retry mechanism on failed create docs step
v0.0.50: - increase build timeout to 1 minute
use a unified api for accessing resource values
v0.0.49: - exec, chat and client are all blocks
v0.0.48: - pre/post flights now a block that includes custom api error
v0.0.47: - change resource action to be not a listing
v0.0.46: - Revert "disable docs gha action until sorted this out" This reverts commit 6bed01569525deb1c8fc803b788c9391b1540b01.
v0.0.45: - disable docs gha action until sorted this out
added apiResponse to resource; rename run -> action
v0.0.44: - simplify api server request template by using Dynamic maps
v0.0.43: - workflow and api server has a single required action
v0.0.42: - non-optional fields and use listing boolean for prefligh & skip steps
v0.0.41: - dockerSettings now becomes agentSettings since it has LLM models & hostIP/portNum was moved to apiSettings
GEN: move the hostIP and serverPort settings to API Server settings
v0.0.40: - move the hostIP and serverPort settings to API Server settings
v0.0.38: - Added API Server Request/Response templates
added Tags, a globally referenceable token
v0.0.37: - Changed docker hostIP portbinding settings
v0.0.36: - Changed docker settings for hostName and portNum; Fixed port default value
v0.0.35: - added hostname and portnum settings to docker
v0.0.34: - remove the placeholders for resource and workflow
remove the placeholders for resource and workflow
v0.0.33: - Added semantics for external workflows; Additional semantics for resource dependencies
v0.0.32: - updated gen sdk
v0.0.31: - added optional params for default template fields on resource
v0.0.30: - Removed llm-apis (for now) and make local LLM the default. (reinstate commercial and cloud llm-apis in future versions)
Removed workflows array, all pkl files within resources/ folder will be a workflow. Make a resource not an array but a single entry
v0.0.29: - fix workflow template validation
v0.0.28: - updated gen sdks
removed RAG resource, and expect condition, renamed check to preflight, renamed api to httpclient
removed modelfile, parameters, schema chat
removed interactive input for ENV
renamed ResourceAPI to ResourceHTTPClient
v0.0.27: - deprecate templates on build
added docker container init settings
v0.0.26: - updated gen code with dockerGPU and runMode setings
added dockerGPU and runMode to system config
v0.0.25: -
v0.0.24: - updated kdeps template with new fields
v0.0.23: - reinstate read resource
v0.0.22: - init llmapikeys on settings
v0.0.21: - removed read resource for now
v0.0.20: - added default value for resource env read
v0.0.19: - read llm api keys from env vars
v0.0.18: - Updated kdeps.pkl to add global configs
Added docker image and llmsettings directive
v0.0.17: - added template generation step
v0.0.16: - removed login ci step
v0.0.15: - upload pkl to firebase storage
v0.0.14: - regexp match for go version semantics - PklProject
v0.0.13: - regexp match for go version semantics - GHA
v0.0.12: - regexp match for go version semantics - GHA
v0.0.11: - regexp match for go version semantics
v0.0.2: - try adding prefixed 'v' for go mod tidy
v0.0.1: -
0.0.10: - init go.mod; move schema/pkg to schema/gen
added sleep timer to resolve new pkl version release
0.0.9: - add global settings for kdeps
initialize the default routes
renamed Settings.pkl -> Project.pkl
0.0.8: - Added API server mode
fix indentation
0.0.7: - added project support files
move schema module path to deps/pkl
0.0.6: - specify the source url pattern in Pkl docs
0.0.5: - use pkl-docs env for deploying pages
Added Makefile and gen-go code
Delete CNAME
Update CNAME
Create CNAME
0.0.4: - Fix resolution of pkl files
0.0.3: - Fix zip package resolution in PklProject; Use pkg as gen folder
0.0.2: - fix version resolution