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.
The PKL schema is comprehensively tested with 186+ automated tests across 12 modules. View the latest test results:
π PKL Function Test Report - Complete validation results with real-time test execution
Quick Test Commands:
make test # Run all tests and generate report
make build # Complete build with testingReleased: 2025-07-21
π¬ Validation Status:
β
Automated Testing Available - Run make test for comprehensive validation
π Latest Test Report Available - View Results
π§ͺ PKL Test Suite - 11 test modules with comprehensive coverage
π¦ Updates
- Update release notes for v0.4.5 [skip ci] (
ce5c379)
π Other Changes
- Pklres kv backend functions (#31) (
3a27142)- add the pklres functions per each resource types and system resources
- **** (
* add the pklres functions per each resource types and system resources (gen))
Detailed changelog showing all changes from the beginning of the project
π¦ Updates
- Update release notes for v0.4.4 [skip ci] (
a8ccffb)
π Other Changes
- pklres backend improvement to use sql-based pkl storage (#30) (
7033105)- pklres backend improvement to use sql-based pkl storage
- **** (
* add compiled pkl-go libs)
π Bug Fixes
- fix: APIServerRequest null safety with default values (
21f03cd)- Add default values for core APIServerRequest fields:
π¦ Updates
- Update release notes for v0.4.3 [skip ci] (
5770390)
π Other Changes
- hotfix: fix isBase64 method (
6967a67) - **** (
- ID: String = "" (instead of undefined)) - **** (
- IP: String = "" (instead of undefined)) - **** (
- Path: String = "/" (instead of undefined)) - **** (
- Method: String = "GET" (instead of undefined)) - **** (
- Keep fields required (non-nullable) to maintain API contract) - **** (
- Functions now return safe defaults instead of throwing undefined errors) - **** (
- Updated both deps/pkl and assets/pkl versions for consistency) - **** (
- Fixes runtime errors when accessing request.id(), ip(), path(), method()) - **** (
This resolves: "Tried to read propertyIDbut its value is undefined") - **** (
All APIServerRequest functions now work safely with default empty objects.)
π¦ Updates
- Update release notes for v0.4.2 [skip ci] (
5a313bb)
π Other Changes
- Base64utils fix (#29) (
08ac10a)- obtain resource from pklres as first priority
- **** (
* add pklres + pkl eval for obtaining output) - **** (
* add new changes to Data.pkl as well) - **** (
* base64 utils fix) - **** (
* updated readme)
π¦ Updates
- Update release notes for v0.4.1 [skip ci] (
58142ea)
π Other Changes
- Pklres pkleval (#28) (
60dc010)- obtain resource from pklres as first priority
- **** (
* add pklres + pkl eval for obtaining output) - **** (
* add new changes to Data.pkl as well)
π¦ Updates
- Update release notes for v0.4.0 [skip ci] (
e755352)
π Other Changes
- obtain resource from pklres as first priority (#27) (
4a46385)
π¦ Updates
- Update release notes for v0.3.8 [skip ci] (
2ce3e26)
π Other Changes
- PklResource - Reader to store PKL to SQLite instead of files (#26) (
9faca07)- fix: APIServerRequest null safety with default values
- **** (
- Add default values for core APIServerRequest fields:) - **** (
- ID: String = "" (instead of undefined)) - **** (
- IP: String = "" (instead of undefined)) - **** (
- Path: String = "/" (instead of undefined)) - **** (
- Method: String = "GET" (instead of undefined)) - **** (
- Keep fields required (non-nullable) to maintain API contract) - **** (
- Functions now return safe defaults instead of throwing undefined errors) - **** (
- Updated both deps/pkl and assets/pkl versions for consistency) - **** (
- Fixes runtime errors when accessing request.id(), ip(), path(), method()) - **** (
This resolves: "Tried to read propertyIDbut its value is undefined") - **** (
All APIServerRequest functions now work safely with default empty objects.) - **** (
* feat: new pklresource service that uses SQL backend to record PKL) - **** (
- Add PklResource.pkl module for SQLite3-based PKL record storage) - **** (
- Implement getPklRecord/setPklRecord functions for CRUD operations) - **** (
- Add blank resource implementations to prevent null resources) - **** (
- Update all resource modules (Exec, Python, HTTP, LLM, Data) to use pklres) - **** (
- Add DataImpl class for Data resource structure) - **** (
- Ensure all resource() functions return blank objects instead of null) - **** (
- Add comprehensive pklres integration to both deps and assets PKL files) - **** (
- Support request-scoped storage with proper error handling) - **** (
* feat: complete pklres integration for all resource types) - **** (
- Refactor Exec, Python, LLM, HTTP, and Data resources to use pklres backend) - **** (
- Add hybrid retrieval: check local mapping first, fallback to pklres) - **** (
- Add comprehensive mapping functions for storing values in pklres) - **** (
- Maintain backward compatibility with existing mapping interfaces) - **** (
- All resources now retrieve values entirely from SQLite backend via pklres) - **** (
- Support for individual property mapping and full resource object storage) - **** (
* feat: regenerate Go code with pklres integration) - **** (
- Generated Go files reflect pklres integration from PKL schema) - **** (
- Updated assets/pkl/ files with pklres changes) - **** (
- Generated gen/ files include pklres-aware resource structures) - **** (
- All resource types now have proper Go bindings for pklres backend) - **** (
- Maintains backward compatibility with existing Go code patterns) - **** (
* refactor: remove redundant map* functions from resource files) - **** (
- Remove mapResource, mapStdout, mapExitCode, etc. functions from all resources) - **** (
- Users can call pklres.setPklValue() directly for storage operations) - **** (
- Simplifies the API and reduces code duplication) - **** (
- Maintains all retrieval functions (resource, stdout, exitCode, etc.)) - **** (
- Cleaner and more direct pklres integration) - **** (
* fix: update test expectations for PklResource.pkl addition) - **** (
- Update expected PKL file count from 22 to 23) - **** (
- Add PklResource.pkl to expected files list) - **** (
- Fix all test assertions to account for new file) - **** (
- Go tests now pass with pklres integration) - **** (
* removed map* functions) - **** (
* added pklresource tests) - **** (
* additional tests) - **** (
* add more tests) - **** (
* improvement) - **** (
* updated tests) - **** (
* Fix tests)
π Features
- feat: comprehensive PKL test suite and validation system (#25) (
4027874)- π§ͺ Complete PKL Function Test Suite (186+ tests, 100% success rate)
π¦ Updates
- Update release notes for v0.3.7 [skip ci] (
d1a4711)
π Other Changes
- **** (
- Comprehensive function tests across 12 PKL modules) - **** (
- Null safety validation with complete coverage) - **** (
- State management tests for external integration) - **** (
- Base64 edge case validation and API testing) - **** (
- Fixed Utils.isBase64 logic and APIServerRequest error handling) - **** (
- Resolved type consistency issues (List vs Listing, nullable defaults)) - **** (
- π Unified Test System & Reporting) - **** (
- Moved test report to test/TEST_REPORT.md (removed 'dynamic' terminology)) - **** (
- Wildcard PKL test discovery with automatic execution) - **** (
- Real-time test execution with accurate reporting) - **** (
- Integrated Go asset tests for comprehensive validation) - **** (
- Enhanced Makefile with unified 'make test' command) - **** (
- π GitHub Actions Integration) - **** (
- Updated build.yaml and release.yaml workflows) - **** (
- Automated PKL test execution in CI/CD pipeline) - **** (
- Test report artifacts uploaded for every build) - **** (
- Cross-platform validation (Ubuntu, macOS)) - **** (
- π Enhanced Documentation & Scripts) - **** (
- Updated README.md with test validation section and direct links) - **** (
- Enhanced release notes script with automatic test status detection) - **** (
- Added continuous validation messaging and quality transparency) - **** (
- Comprehensive validation status shown in all releases) - **** (
- π‘οΈ Production Readiness) - **** (
- 100% test success rate across all modules) - **** (
- Complete null safety implementation) - **** (
- Robust error handling and edge case coverage) - **** (
- Automated validation ensures release quality) - **** (
- Legacy compatibility with deprecation warnings) - **** (
This establishes a production-ready PKL schema with comprehensive) - **** (
testing, automation, and quality assurance systems.)
π¦ Updates
- Update release notes for v0.3.6 [skip ci] (
9674ee4)
π Other Changes
- import on amends upstream (#24) (
6881c26)
π¦ Updates
- hotfix: upgrade docbuild step to use pkl 0.28.2 (
96212a0) - Update release notes for v0.3.5 [skip ci] (
2ea6ed3)
π¦ Updates
- Update release notes for v0.3.4 [skip ci] (
b29bdcb)
π Other Changes
- Docgen fix (#23) (
9ded533)- add the ability to call the resource directly, without the use of @(...) template convention
- **** (
* Fix GitHub release timing issue in workflow) - **** (
- Add proactive URL availability check before pkldoc generation) - **** (
- Improve retry mechanism with exponential backoff (60s, 120s, 180s, 240s)) - **** (
- Increase retry attempts from 2 to 5 for better reliability) - **** (
- Addresses issue where GitHub download URLs aren't immediately available after release creation) - **** (
This fixes the 404 errors experienced during v0.3.4 release where pkldoc generation) - **** (
failed because GitHub's download URLs weren't ready yet.)
β¨ Enhancements
- add the ability to call the resource directly, without the use of @(...) template convention (#22) (
4a7fdd7)
π¦ Updates
- Update release notes for v0.3.3 [skip ci] (
72e3482)
π Other Changes
- hotfix: fix GHA PKL test errors (
afe0151)
π¦ Updates
- Update release notes for v0.3.2 [skip ci] (
3b44595)
π Other Changes
- use the SQLite based agent reader to return the agentID/actionID (#21) (
e419bfc)
β¨ Enhancements
- added pklresource and add use sensible defaults to optional fields (#20) (
1496555)
π¦ Updates
- Update release notes for v0.3.1 [skip ci] (
151b018)
π¦ Updates
- upgrade deprecated gha plugin (
29f15fa)
π Other Changes
- renamed Command->Script and CondaEnvironment->PythonEnvironment (
b7d3688) - install pkl-gen-go in gha for running pkl tests (
aaadde8) - install pkl-gen-go in gha for running pkl tests (
5317aa2) - fix gha build (
650674f) - enhance workflows to gen relnotes on gha trigger (
f088834)
π Other Changes
- Uniform schema with Retry Logic and Docker Enhancements (#19) (
64f620e)- use uniform schema naming conventions (attr as capitalized, func as pascalCased)
- **** (
* uniform schema)
π Other Changes
- embed deps/pkl schema files via go:embed (
159f785)
β¨ Enhancements
- add the pkl files in the output_dir for expose to tests (
72b3641)
β¨ Enhancements
- add resource#itemValues function to obtain item iteration values (
9c48aa0)
π¦ Updates
- update readme/relnotes (
7775ce8)
β¨ Enhancements
- add pkl:json imports per each resource (
8b252f4)
β¨ Enhancements
- added the itemValues per resource to obtain the iteration results (
59cadd4)
π Other Changes
- null propagate the array obtained from dynamic reader for item values (
282f277)
β¨ Enhancements
- add nullable defaults for item values listing (
ef3bfc8)
β¨ Enhancements
- add return value listing type for item (
0b0f475)
β¨ Enhancements
- return a new listing when item results is null (
e8a979b)
π Other Changes
- values now require to pass the actionID (#18) (
1cc199d)
π¦ Updates
- update readme/relnotes (
6fdaccb)
π Other Changes
- removed id params on item operations (
c035c8a)
π Other Changes
- change item function signature to not require an id params (#17) (
034ac3e)- added ability to iterate through items
- **** (
* changed item.fetch -> item.current) - **** (
* change item function signature to not require an id params)
β¨ Enhancements
- added ability to iterate through items (#16) (
c46cc9c)- added ability to iterate through items
π¦ Updates
- update readme/relnotes (
c277d2a)
π Other Changes
- **** (
* changed item.fetch -> item.current)
π¦ Updates
- updated relnote/readme (
37fc99a)
π Other Changes
- hotfix: register tool into resources (
6d844d6)
β¨ Enhancements
- hotfix: add path to the script or inline script to LLM tools (
f461f98)
β¨ Enhancements
- add ability for LLM to use tools (akin to MCP) (#15) (
d49777f)
π¦ Updates
- updated relnote/readme (
cb21d6a)
π¦ Updates
- updated relnote/readme (
5848573)
π Other Changes
- Session sqlite storage (#14) (
cf4b6b1)- added deleteItem to memory storage
- **** (
* add Session ephemeral storage)
π¦ Updates
- updated relnote/readme (
12ac9e5)
π Other Changes
- Expr block (#13) (
864ae2e)- removed unusued MemoryRecord class
- **** (
* add 'expr {...}' block to eval pkl expressions, i.e. memory.setItem('foo', 'bar'))
β¨ Enhancements
- simplify memory operations (getItem/setItem), and add clear() (#12) (
187e6b9)
β¨ Enhancements
- add the persistent sqlite memory record item read and update function (#11) (
0131739)
π¦ Updates
- update readme/relnote (
6e92253)
π¦ Updates
- updated schema readme/relnotes (
27d3e8f)
π Other Changes
- remove specific LLM role types (#10) (
868bac5)
π Other Changes
- Multi-prompt support (#9) (
cd4b60a)- add role types on LLM action
- **** (
* add multiprompt support)
β¨ Enhancements
- add role types on LLM action (#8) (
638e38d)
β¨ Enhancements
- Add TrustedProxies to WebServer (#7) (
f9e658f)- fix indentation on deps/pkl files
π Other Changes
- **** (
* add trustedproxy on webserver) - **** (
* keep webserver name in parity with apiserver)
β¨ Enhancements
- add webserver settings to project workflow settings (#6) (
01fa2e1)
π Other Changes
- Create frontend serving settings (#5) (
c7f1374)- 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.))
π¦ Updates
- updated release notes (
b6bc1bd)
π Other Changes
- allow restricting http methods and params per resource (#4) (
329c08a)
π¦ Updates
- updated release notes (
fcc686b)
π Other Changes
- allow setting permitted HTTP values (headers, params, methods, routes) on resource (#3) (
011d1f4)
β¨ Enhancements
- add ability to set tz identifier timezone (#2) (
9a6fa07)
π¦ Updates
- upgrade lowest pkl version to 0.28.1 (
bb44da6) - upgrade lowest pkl version to 0.28.1 (
b74f5a6)
π¦ Updates
- updated relnotes / readme (
6cc68de)
π Other Changes
- changed timestamp to duration from durationunit (
c4281eb)
π Other Changes
- change timeoutDuration to Duration and use PKL semantics for duration seconds (
d4bb52a)
π¦ Updates
- Use DurationUnit for Timestamps; Upgrade pkl-go to 0.9.0 (
d22127a)
π Initial Release Statistics:
- Total commits: 154
- Project inception
π All Changes Since Project Start:
β¨ Enhancements
- added api response meta info for other additional information sent over the JSON response (
cf98a9d) - added new schema documentation info (
c3fc856) - added trustedProxies settings to API server (
d3ed25b) - upgrade minimum pkl version to 0.26.3. added minor fixes on the relnote generator. (
c80d5ae) - Added skip validation helper functions (
562775e) - added README.md and relnote generator (
6c6987c) - added document pkl module for parsing and creating json, yaml and xml docs (
ea3a56a) - added Data resource helper for getting agent data file path (
efb337e) - Added file attribute where each associated resource value was saved (
33eb094) - added params mapping to http client resources (go gen code) (
3e93d76) - added params mapping to http client resources (
bc81ebb) - make the build args as mapping; added build env in docker settings (
ba8c725) - Add parameters to docker settings; removed unused PKL configurations (
f8597d4) - added heroImage and agentIcon (
008cef9) - added ollamaImageTag property in workflow settings (
62fb8d4) - added condaPackages section (
be8d611) - added support for installing conda packages (
695532e) - added python script resource (
d5325c1) - added install Anaconda option (
bda10a4) - added API documentation. Change request API files functions for clarity (
78b6229) - added Ubuntu PPA support; add API for querying filetypes by index (
d45493c) - added visionFiles to LLM (
aa2cdf5) - added API server responseFile (
c548b8c) - added request APIs for getting the list of files (
c717a96) - added vision and image gen attributes to LLM (
82340b2) - Added request file operations. Decode base64 request by default. include allowed HTTP methods. (
7c53a5d) - added json response keys to LLM (
7d9f868) - added security enforcement settings (
f0186d5) - added schema to LLM (
bdc78d8) - added extended functions for exec, http and llm modules (
4bf8fcb) - added deferred response api (
fe55044) - added llm timeout and kdeps dir settings (
422ea4e) - add retry mechanism on failed create docs step (
a85a48d) - added apiResponse to resource; rename run -> action (
12e2d39) - Added API Server Request/Response templates (
dd71a18) - added Tags, a globally referenceable token (
f669c46) - added hostname and portnum settings to docker (
df28577) - Added semantics for external workflows; Additional semantics for resource dependencies (
d9c1e3f) - added optional params for default template fields on resource (
43405b5) - added docker container init settings (
5db1d90) - added dockerGPU and runMode to system config (
97a4c79) - updated kdeps template with new fields (
24495ad) - added default value for resource env read (
f4d1453) - Updated kdeps.pkl to add global configs (
52cd266) - Added docker image and llmsettings directive (
5beaefd) - added template generation step (
9644e40) - try adding prefixed 'v' for go mod tidy (
74b9fa3) - added sleep timer to resolve new pkl version release (
6808149) - add global settings for kdeps (
b8da2fd) - Added API server mode (
199a52c) - added project support files (
a805e3b) - Added Makefile and gen-go code (
3acfb33) - Added initial core schema (
a61fbf5)
π¦ Updates
- updated release info (
2d17f13) - updated release notes (
c085ef2) - updated release notes (
0e6e41a) - bump pkl to 0.27.2 (
e0683cb) - updated .gitattributes (
e9ea189) - updated README.md (
809d2c3) - bump pkl to 0.27.1 (
8183a18) - Revert "upgrade pkl to 0.27.0; register python resource to resource pkl" (
77fdf1a) This reverts commit 86a334d697479e307513f759d2a7b0b06f9be35c. - Revert "Update Gradle to 8.10.2" (
95e60f9) This reverts commit 45a93d3ebfa5aa2e795144984f0cde22bc1dc127. - Update Gradle to 8.10.2 (
45a93d3) - upgrade pkl to 0.27.0; register python resource to resource pkl (
86a334d) - upgrade cicd pkl to 0.26.1 (
ea9e7c9) - updated gen sdk (
fa77c06) - updated gen sdks (
bf7a441) - updated gen code with dockerGPU and runMode setings (
2254e19) - Update CNAME (
ae8b694)
π Other Changes
- api response meta blocks can be optional (
6b4869f) - allow sending headers to response (
12f3575) - allow access to client IP and request ID (
34a6f34) - Change resource ID to actionID, and Workflow action to targetActionID (
94a46c7) - changed timeoutSeconds -> timeoutDuration (
f8ed8ed) - Use uniform naming convention for {Http,Api,Id,Json} -> {HTTP,API,ID,JSON} (
d8841da) - reprioritize request skip validations (
672a02a) - removed all deprecated imports (
7cd9fbe) - skip & validation is now a listing of any types (
89cf401) - return stderr if not empty on stdout function (
4ae7fb9) - change request function from param("..") -> params("..") (
541ab82) - import upstream PKL modules and KDEPS PKL helpers in resource & api response (
ef98d66) - document renderers respond with null rather than empty string (
1d78332) - decode base64 strings by default on all Resource types (
80f093c) - Make the API response errors block listing (array) (
7283cbe) - register python resource to resource pkl (
c13adfa) - reflect name changes to dockersettings go source (
4707bd5) - changed ppa to repositories (
fc9ae43) - Make workflow an open module (
71e4b35) - deprecate postflightCheck (
f49439b) - simplify usage of vision models and attachments (
a8366ea) - fix typo for resolving filepath (
9e69fa3) - renamed responseFile to file (
4183cfc) - renamed responseFile to file (
5eab2ea) - always return the first element, in case of a single file upload (
32eba99) - support multiple file uploads (
0e325fa) - make api serverr request extendable (
9408e44) - fix isEmpty on class (
954d32c) - simplify resource resolver methods (
7d9ff35) - remove api server response type, focus on json response for now (
bae99a2) - removed textproto from api response types (gen code) (
fad23ae) - removed textproto from api response types (
6b41ca5) - response keys gen code (
06de5e8) - fix http response block (
8c1c31e) - change schema to jsonResponse (bool) (
4e3c044) - set empty defaults when calling a function (
733cfd2) - increase build timeout to 1 minute (
56aa39c) - use a unified api for accessing resource values (
7789db7) - exec, chat and client are all blocks (
77f14c0) - pre/post flights now a block that includes custom api error (
797a5b1) - change resource action to be not a listing (
f7bb160) - Revert "disable docs gha action until sorted this out" (
560985d) This reverts commit 6bed01569525deb1c8fc803b788c9391b1540b01. - disable docs gha action until sorted this out (
6bed015) - simplify api server request template by using Dynamic maps (
c62f4c2) - workflow and api server has a single required action (
a974f74) - non-optional fields and use listing boolean for prefligh & skip steps (
8e8a242) - dockerSettings now becomes agentSettings since it has LLM models & hostIP/portNum was moved to apiSettings (
47bfc0b) - GEN: move the hostIP and serverPort settings to API Server settings (
3d8340a) - move the hostIP and serverPort settings to API Server settings (
6fcc08e) - Changed docker hostIP portbinding settings (
bee501f) - Changed docker settings for hostName and portNum; Fixed port default value (
226dc66) - remove the placeholders for resource and workflow (
e06e1d7) - remove the placeholders for resource and workflow (
8a2fef1) - Removed llm-apis (for now) and make local LLM the default. (reinstate commercial and cloud llm-apis in future versions) (
5e46f85) - Removed workflows array, all pkl files within resources/ folder will be a workflow. Make a resource not an array but a single entry (
800f898) - fix workflow template validation (
646a755) - removed RAG resource, and expect condition, renamed check to preflight, renamed api to httpclient (
b1b2b1c) - removed modelfile, parameters, schema chat (
902ed91) - removed interactive input for ENV (
40f8097) - renamed ResourceAPI to ResourceHTTPClient (
3a04936) - deprecate templates on build (
ce348d7) - reinstate read resource (
48ea4fc) - init llmapikeys on settings (
67825b2) - removed read resource for now (
8f841d8) - read llm api keys from env vars (
281af1f) - regexp match for go version semantics - PklProject (
2b77fc9) - regexp match for go version semantics - GHA (
f60f8f0) - regexp match for go version semantics - GHA (
05a8838) - regexp match for go version semantics (
201a555) - init go.mod; move schema/pkg to schema/gen (
83c815a) - initialize the default routes (
175c9f6) - renamed Settings.pkl -> Project.pkl (
720a55f) - fix indentation (
80a1347) - move schema module path to deps/pkl (
4814b3b) - specify the source url pattern in Pkl docs (
9a0864b) - use pkl-docs env for deploying pages (
22c31db) - Delete CNAME (
4c308c4) - Create CNAME (
9d4b2d9) - Fix resolution of pkl files (
e3d1588) - Fix zip package resolution in PklProject; Use pkg as gen folder (
5355efe) - fix version resolution (
c1401f0) - Initial commit (
26d33e0)
This PKL schema project maintains high quality through:
β
Automated Testing Available - Run make test for comprehensive validation
π Latest Test Report Available - View Results
π§ͺ PKL Test Suite - 11 test modules with comprehensive coverage
- Real-time Testing: All PKL modules validated on every change
- Comprehensive Coverage: Functions, null safety, state management, and edge cases
- Production Ready: Automated validation ensures reliability
- CI/CD Integration: Tests run automatically in GitHub Actions
Quality Assurance: Every release is thoroughly tested before deployment.
Generated on 2025-07-22 10:01:21 by Enhanced Release Notes Generator