@foldrun/core 2.11.1 → 2.12.1

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/LICENSE CHANGED
@@ -1,39 +1,105 @@
1
- foldrun proprietary licence
1
+ # Functional Source License, Version 1.1, ALv2 Future License
2
2
 
3
- Copyright (c) 2026 foldrun. All rights reserved.
3
+ ## Abbreviation
4
4
 
5
- This software, its source code and its documentation are the property of
6
- foldrun. They are licensed, not sold.
5
+ FSL-1.1-ALv2
7
6
 
8
- You may install and run the foldrun packages published to npm (`foldrun`
9
- and `@foldrun/core`) to write, check, run and deploy your own agents,
10
- flows and workspaces, on your own machines and with the foldrun platform.
11
- That includes the copies installing and running need, for your own use:
12
- package caches and mirrors, CI and build machines, container images and
13
- backups.
7
+ ## Notice
14
8
 
15
- You may not, except where the law allows it despite this restriction:
16
- copy, modify, merge, publish, distribute, sublicense, rent or sell the
17
- software or any part of it; reverse engineer, decompile or disassemble it;
18
- or use it to build a product or service that competes with foldrun.
9
+ Copyright 2026 foldrun
19
10
 
20
- What you write with the software (your agents, flows, knowledge and other
21
- files) is yours.
11
+ ## Terms and Conditions
22
12
 
23
- Third-party components the software includes or installs (its npm
24
- dependencies) remain under their own licences.
13
+ ### Licensor ("We")
25
14
 
26
- This licence ends automatically if you break its terms, and you must then
27
- stop using the software.
15
+ The party offering the Software under these Terms and Conditions.
28
16
 
29
- Versions published before 17 October 2026 under the Apache License 2.0
30
- remain available under that licence for those versions only.
17
+ ### The Software
31
18
 
32
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
33
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
34
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. TO THE EXTENT THE
35
- LAW ALLOWS, IN NO EVENT SHALL FOLDRUN BE LIABLE FOR ANY CLAIM, DAMAGES OR
36
- OTHER LIABILITY ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
37
- ITS USE.
19
+ The "Software" is each version of the software that we make available under
20
+ these Terms and Conditions, as indicated by our inclusion of these Terms and
21
+ Conditions with the Software.
38
22
 
39
- Questions: hello@foldrun.io
23
+ ### License Grant
24
+
25
+ Subject to your compliance with this License Grant and the Patents,
26
+ Redistribution and Trademark clauses below, we hereby grant you the right to
27
+ use, copy, modify, create derivative works, publicly perform, publicly display
28
+ and redistribute the Software for any Permitted Purpose identified below.
29
+
30
+ ### Permitted Purpose
31
+
32
+ A Permitted Purpose is any purpose other than a Competing Use. A Competing Use
33
+ means making the Software available to others in a commercial product or
34
+ service that:
35
+
36
+ 1. substitutes for the Software;
37
+
38
+ 2. substitutes for any other product or service we offer using the Software
39
+ that exists as of the date we make the Software available; or
40
+
41
+ 3. offers the same or substantially similar functionality as the Software.
42
+
43
+ Permitted Purposes specifically include using the Software:
44
+
45
+ 1. for your internal use and access;
46
+
47
+ 2. for non-commercial education;
48
+
49
+ 3. for non-commercial research; and
50
+
51
+ 4. in connection with professional services that you provide to a licensee
52
+ using the Software in accordance with these Terms and Conditions.
53
+
54
+ ### Patents
55
+
56
+ To the extent your use for a Permitted Purpose would necessarily infringe our
57
+ patents, the license grant above includes a license under our patents. If you
58
+ make a claim against any party that the Software infringes or contributes to
59
+ the infringement of any patent, then your patent license to the Software ends
60
+ immediately.
61
+
62
+ ### Redistribution
63
+
64
+ The Terms and Conditions apply to all copies, modifications and derivatives of
65
+ the Software.
66
+
67
+ If you redistribute any copies, modifications or derivatives of the Software,
68
+ you must include a copy of or a link to these Terms and Conditions and not
69
+ remove any copyright notices provided in or with the Software.
70
+
71
+ ### Disclaimer
72
+
73
+ THE SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTIES OF ANY KIND, EXPRESS OR
74
+ IMPLIED, INCLUDING WITHOUT LIMITATION WARRANTIES OF FITNESS FOR A PARTICULAR
75
+ PURPOSE, MERCHANTABILITY, TITLE OR NON-INFRINGEMENT.
76
+
77
+ IN NO EVENT WILL WE HAVE ANY LIABILITY TO YOU ARISING OUT OF OR RELATED TO THE
78
+ SOFTWARE, INCLUDING INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES,
79
+ EVEN IF WE HAVE BEEN INFORMED OF THEIR POSSIBILITY IN ADVANCE.
80
+
81
+ ### Trademarks
82
+
83
+ Except for displaying the License Details and identifying us as the origin of
84
+ the Software, you have no right under these Terms and Conditions to use our
85
+ trademarks, trade names, service marks or product names.
86
+
87
+ ## Grant of Future License
88
+
89
+ We hereby irrevocably grant you an additional license to use the Software under
90
+ the Apache License, Version 2.0 that is effective on the second anniversary of
91
+ the date we make the Software available. On or after that date, you may use the
92
+ Software under the Apache License, Version 2.0, in which case the following
93
+ will apply:
94
+
95
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not use
96
+ this file except in compliance with the License.
97
+
98
+ You may obtain a copy of the License at
99
+
100
+ http://www.apache.org/licenses/LICENSE-2.0
101
+
102
+ Unless required by applicable law or agreed to in writing, software distributed
103
+ under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
104
+ CONDITIONS OF ANY KIND, either express or implied. See the License for the
105
+ specific language governing permissions and limitations under the License.
package/LICENSING.md ADDED
@@ -0,0 +1,101 @@
1
+ # Licensing
2
+
3
+ foldrun is **source-available** under the **Functional Source License,
4
+ Version 1.1, with an Apache 2.0 future licence** (`FSL-1.1-ALv2`). The full
5
+ terms are in [LICENSE](LICENSE); they are the standard FSL text, unchanged,
6
+ and they are what binds. This page explains them in plain English. If the
7
+ two ever disagree, LICENSE wins.
8
+
9
+ ## In one paragraph
10
+
11
+ Use foldrun for anything except selling it, or offering it to others as a
12
+ product or service that competes with foldrun. Personal use and use inside
13
+ your own company are free, at any size. Every version becomes Apache 2.0,
14
+ with no restrictions, two years after it is released.
15
+
16
+ ## What you may do, free
17
+
18
+ - **Use it yourself**: on your laptop, on your own server, for your own
19
+ agents and flows.
20
+ - **Use it inside your company or organisation**, of any size, for your own
21
+ work: your team's agents, your internal automations, your CI.
22
+ - **Read, change and fork the code**, and keep your changes private or
23
+ share them, as long as the result is used for one of the purposes on
24
+ this list.
25
+ - **Teach and research with it** (non-commercial education and research).
26
+ - **Set it up for a client as a consultant or agency**, as long as the
27
+ client is the one using it, for their own purposes, under these same
28
+ terms.
29
+
30
+ ## What needs a commercial licence
31
+
32
+ The licence calls these a *Competing Use*: making foldrun available **to
33
+ others** in a **commercial** product or service that substitutes for
34
+ foldrun, substitutes for a foldrun product or service that existed when that
35
+ version was released, or offers the same or substantially similar
36
+ functionality. For example:
37
+
38
+ - running foldrun, or a modified copy, as a hosted agent platform that other
39
+ people or companies sign up to or pay for;
40
+ - reselling it, white-labelling it, or bundling it into a product you sell
41
+ whose value is what foldrun does;
42
+ - selling access to a managed foldrun instance.
43
+
44
+ If you want to do any of these, or are not sure whether your use counts,
45
+ write to **hello@foldrun.io**. Commercial licences are available.
46
+
47
+ ## The two-year rule
48
+
49
+ Each version is offered under FSL from the day it is released. On the
50
+ second anniversary of that release, that version is **also** available under
51
+ the Apache License 2.0 — irrevocably, for everyone, for any purpose. Newer
52
+ versions are not affected until they reach their own second anniversary.
53
+
54
+ ## Versions released under other terms
55
+
56
+ | Versions | Licence |
57
+ |---|---|
58
+ | released before 17 October 2026 | Apache License 2.0 |
59
+ | released 17 October 2026 up to the first FSL release | the foldrun proprietary licence that shipped in each package |
60
+ | the first FSL release and later | FSL-1.1-ALv2 (this page) |
61
+
62
+ A version keeps the licence it was released under.
63
+
64
+ ## What stays yours
65
+
66
+ What you write with foldrun — your agents, flows, knowledge, skills, tools,
67
+ evals and the outputs of your runs — is yours. This licence covers foldrun's
68
+ code, not your work.
69
+
70
+ ## Name and logo
71
+
72
+ The licence does not give you the foldrun name, logo or other trademarks,
73
+ except to say truthfully where the code came from. A fork you distribute
74
+ needs its own name.
75
+
76
+ ## Third-party code
77
+
78
+ foldrun's dependencies, and anything it installs, stay under their own
79
+ licences.
80
+
81
+ ## Patents
82
+
83
+ Using foldrun for a permitted purpose includes a licence to any foldrun
84
+ patents that use needs. That patent licence ends for anyone who sues claiming
85
+ the software infringes a patent.
86
+
87
+ ## No warranty
88
+
89
+ foldrun is provided as is, with no warranty, and with no liability for
90
+ damages, as LICENSE sets out in full.
91
+
92
+ ## Contributing
93
+
94
+ Contributions are welcome. Before we merge one, we ask you to agree that we
95
+ may release it under these terms and under commercial licences, so the
96
+ project can keep both. We will send the agreement with your first pull
97
+ request.
98
+
99
+ ## Questions
100
+
101
+ hello@foldrun.io. This page is a summary to help you, not legal advice.
package/README.md CHANGED
@@ -151,8 +151,8 @@ Most people want the CLI, not this package — `npm install -g foldrun`.
151
151
  The command-line tool is its own package,
152
152
  [`foldrun`](https://www.npmjs.com/package/foldrun), and depends on
153
153
  this package. The reference documentation is at
154
- [docs.foldrun.io](https://docs.foldrun.io). Every foldrun repository is
155
- private; see "Hosting it" below.
154
+ [docs.foldrun.io](https://docs.foldrun.io). foldrun is source-available
155
+ under the Functional Source License (see "Licence" below).
156
156
 
157
157
  ### Templates and workspaces
158
158
 
@@ -189,8 +189,11 @@ This package is the framework: everything needed to read a workspace and
189
189
  run it on the machine you are on. The platform — the dashboard, a queue and
190
190
  its worker, one sandbox per step, a vault, metering, a team — is built on
191
191
  it, in a separate package that plugs in through `src/platform.ts`. Nothing
192
- in this repository imports it. The platform is hosted by foldrun and is not
193
- distributed; `foldrun deploy` moves a workspace from your machine to it
192
+ in this repository imports it. The platform is
193
+ [foldrun-platform](https://github.com/foldrun-io/foldrun-platform) and
194
+ [foldrun-web](https://github.com/foldrun-io/foldrun-web): run it on your own
195
+ server with Docker Compose (`foldrun-web/self-hosting`), or use foldrun's
196
+ hosted one; `foldrun deploy` moves a workspace from your machine to either
194
197
  unchanged.
195
198
 
196
199
  ## Requirements
@@ -269,5 +272,10 @@ per request (fine to thousands of runs).
269
272
 
270
273
  ## Licence
271
274
 
272
- Proprietary; see [LICENSE](LICENSE). Versions published before 17 October
273
- 2026 were Apache-2.0 and stay so.
275
+ Source-available under the [Functional Source License 1.1, Apache 2.0 future
276
+ licence](LICENSE) (`FSL-1.1-ALv2`). Use it for anything except offering it to
277
+ others as a competing commercial product or service: personal use and use
278
+ inside your own company are free, at any size. Each version becomes Apache 2.0
279
+ two years after its release. [LICENSING.md](LICENSING.md) explains what is
280
+ allowed and what needs a commercial licence (hello@foldrun.io), and which
281
+ licence earlier versions shipped under.
@@ -1016,7 +1016,7 @@ grantsOnly = false) {
1016
1016
  // EMAIL_FROM]`): granting the tool grants them, the way an API tool's
1017
1017
  // referenced credentials always travelled with it. Before, only the
1018
1018
  // agent's own `secrets:` counted, so an agent that granted desk_email and
1019
- // declared nothing failed with "RESEND_API_KEY is not set" (strata-desk,
1019
+ // declared nothing failed with "RESEND_API_KEY is not set" (a customer desk,
1020
1020
  // 1 Oct). `proxied` / `materialised` say how, not what, and add nothing.
1021
1021
  const toolSecrets = [];
1022
1022
  // Does any granted tool act outside the workspace (`outward: true`)? The
package/dist/src/scan.js CHANGED
@@ -811,7 +811,7 @@ export function scanFiles(files, options = {}) {
811
811
  // Frontmatter YAML cannot read. Until 2026-10-21 nothing reported it for
812
812
  // a skill or a library file: frontOf below reads it as "no frontmatter"
813
813
  // and moves on, and the deploy's own refusal covers only the workspace's
814
- // definition files. A vaza.ai skill with `description: … (Markdown,
814
+ // definition files. A customer's skill with `description: … (Markdown,
815
815
  // frontmatter, ::: directives) …` deployed clean, ran (the runtime quotes
816
816
  // the value and retries), and was refused by the source API on its next
817
817
  // save.
@@ -113,7 +113,7 @@ export declare function restoreDivertedDirs(wsRoot: string, before: Map<string,
113
113
  * are kept under runs/<id>/test-writes/, never on the workspace, so each
114
114
  * step's copy of the workspace gets them laid over it — otherwise a step
115
115
  * reads the real files, and a flow that hands work on through storage/
116
- * tests something no live run does: on 2026-10-03 a strata-desk test run's
116
+ * tests something no live run does: on 2026-10-03 a customer desk's test run's
117
117
  * compiler wrote today's PASS report, and the mailer was handed the
118
118
  * morning's FAIL one and refused. Times are kept, so a verify that asks
119
119
  * whether a file is fresh answers for the step that wrote it. Returns the
@@ -288,7 +288,7 @@ export function restoreDivertedDirs(wsRoot, before, to, note, handed = before) {
288
288
  * are kept under runs/<id>/test-writes/, never on the workspace, so each
289
289
  * step's copy of the workspace gets them laid over it — otherwise a step
290
290
  * reads the real files, and a flow that hands work on through storage/
291
- * tests something no live run does: on 2026-10-03 a strata-desk test run's
291
+ * tests something no live run does: on 2026-10-03 a customer desk's test run's
292
292
  * compiler wrote today's PASS report, and the mailer was handed the
293
293
  * morning's FAIL one and refused. Times are kept, so a verify that asks
294
294
  * whether a file is fresh answers for the step that wrote it. Returns the
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@foldrun/core",
3
- "version": "2.11.1",
3
+ "version": "2.12.1",
4
4
  "description": "Agents are just folders. The format, the runner, the checks.",
5
- "license": "SEE LICENSE IN LICENSE",
5
+ "license": "FSL-1.1-ALv2",
6
6
  "type": "module",
7
7
  "exports": {
8
8
  ".": {
@@ -39,7 +39,8 @@
39
39
  "src",
40
40
  "index.ts",
41
41
  "templates",
42
- "README.md"
42
+ "README.md",
43
+ "LICENSING.md"
43
44
  ],
44
45
  "scripts": {
45
46
  "build": "node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\" && tsc -p tsconfig.json",
package/src/runner.ts CHANGED
@@ -1157,7 +1157,7 @@ export function agentContext(
1157
1157
  // EMAIL_FROM]`): granting the tool grants them, the way an API tool's
1158
1158
  // referenced credentials always travelled with it. Before, only the
1159
1159
  // agent's own `secrets:` counted, so an agent that granted desk_email and
1160
- // declared nothing failed with "RESEND_API_KEY is not set" (strata-desk,
1160
+ // declared nothing failed with "RESEND_API_KEY is not set" (a customer desk,
1161
1161
  // 1 Oct). `proxied` / `materialised` say how, not what, and add nothing.
1162
1162
  const toolSecrets: string[] = [];
1163
1163
  // Does any granted tool act outside the workspace (`outward: true`)? The
package/src/scan.ts CHANGED
@@ -907,7 +907,7 @@ export function scanFiles(files: ScanFile[], options: ScanOptions = {}): ScanFin
907
907
  // Frontmatter YAML cannot read. Until 2026-10-21 nothing reported it for
908
908
  // a skill or a library file: frontOf below reads it as "no frontmatter"
909
909
  // and moves on, and the deploy's own refusal covers only the workspace's
910
- // definition files. A vaza.ai skill with `description: … (Markdown,
910
+ // definition files. A customer's skill with `description: … (Markdown,
911
911
  // frontmatter, ::: directives) …` deployed clean, ran (the runtime quotes
912
912
  // the value and retries), and was refused by the source API on its next
913
913
  // save.
package/src/test-mode.ts CHANGED
@@ -314,7 +314,7 @@ export function restoreDivertedDirs(
314
314
  * are kept under runs/<id>/test-writes/, never on the workspace, so each
315
315
  * step's copy of the workspace gets them laid over it — otherwise a step
316
316
  * reads the real files, and a flow that hands work on through storage/
317
- * tests something no live run does: on 2026-10-03 a strata-desk test run's
317
+ * tests something no live run does: on 2026-10-03 a customer desk's test run's
318
318
  * compiler wrote today's PASS report, and the mailer was handed the
319
319
  * morning's FAIL one and refused. Times are kept, so a verify that asks
320
320
  * whether a file is fresh answers for the step that wrote it. Returns the