foldrun 2.8.0 → 2.8.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/package.json +3 -3
- package/src/commands.mjs +10 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "foldrun",
|
|
3
|
-
"version": "2.8.
|
|
3
|
+
"version": "2.8.1",
|
|
4
4
|
"description": "Agents are just folders. Write them, check them, run them — on your machine.",
|
|
5
5
|
"license": "FSL-1.1-ALv2",
|
|
6
6
|
"type": "module",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"node": ">=22"
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@foldrun/core": "^2.12.
|
|
14
|
+
"@foldrun/core": "^2.12.1"
|
|
15
15
|
},
|
|
16
16
|
"files": [
|
|
17
17
|
"bin",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"devDependencies": {
|
|
48
48
|
"@types/node": "^26.6.4",
|
|
49
49
|
"gray-matter": "^4.0.3",
|
|
50
|
-
"typescript": "^
|
|
50
|
+
"typescript": "^7.0.2"
|
|
51
51
|
},
|
|
52
52
|
"overrides": {
|
|
53
53
|
"zod": "4.6.7"
|
package/src/commands.mjs
CHANGED
|
@@ -883,6 +883,7 @@ async function scanCore() {
|
|
|
883
883
|
}
|
|
884
884
|
|
|
885
885
|
// The scanner module, once scanCore has loaded it — categoryOf and SARIF read it.
|
|
886
|
+
/** @type {any} */
|
|
886
887
|
let scanRules = null;
|
|
887
888
|
|
|
888
889
|
const SECURITY_CATEGORIES = new Set(["secret", "security", "content", "supply-chain"]);
|
|
@@ -1027,6 +1028,7 @@ function narrowCheck(findings, root, opts, label, accountRoot = root) {
|
|
|
1027
1028
|
}
|
|
1028
1029
|
let baselined = 0;
|
|
1029
1030
|
if (opts.baseline && fs.existsSync(file)) {
|
|
1031
|
+
/** @type {any} */
|
|
1030
1032
|
let b = null;
|
|
1031
1033
|
try {
|
|
1032
1034
|
b = JSON.parse(fs.readFileSync(file, "utf8"));
|
|
@@ -1540,6 +1542,7 @@ async function checkHooks(workspace, agents, libraryRoot, platform, note) {
|
|
|
1540
1542
|
missing("account AGENTS.md", accountNames);
|
|
1541
1543
|
missing("AGENTS.md", workspaceNames);
|
|
1542
1544
|
|
|
1545
|
+
/** @type {any} */
|
|
1543
1546
|
let resolveSearch = null;
|
|
1544
1547
|
try {
|
|
1545
1548
|
({ resolveSearch } = /** @type {any} */ (await import("@foldrun/core/providers")));
|
|
@@ -1812,6 +1815,7 @@ async function probeCmd(modelArg) {
|
|
|
1812
1815
|
// provider gets the same translator a run would, on loopback, for the
|
|
1813
1816
|
// length of the probe — so what passes here passes there.
|
|
1814
1817
|
let env = { ...process.env };
|
|
1818
|
+
/** @type {any} */
|
|
1815
1819
|
let translator = null;
|
|
1816
1820
|
// No AGENTS.md, or no provider block, means Anthropic direct — like a run.
|
|
1817
1821
|
// Anything else that goes wrong here is said, not swallowed: a provider
|
|
@@ -2446,6 +2450,7 @@ async function versionCmd(flags) {
|
|
|
2446
2450
|
const url = remoteUrl(flags);
|
|
2447
2451
|
/** @type {Record<string, any> | null} */
|
|
2448
2452
|
let platform = null;
|
|
2453
|
+
/** @type {string | null} */
|
|
2449
2454
|
let unreachable = null;
|
|
2450
2455
|
if (url) {
|
|
2451
2456
|
try {
|
|
@@ -3671,6 +3676,7 @@ async function connect(positional, flags) {
|
|
|
3671
3676
|
// secret, nothing typed. The redirect is the platform's own callback, which
|
|
3672
3677
|
// rewrites the same secret at the same scope; we wait for it to land.
|
|
3673
3678
|
if (url && !flags["client-id"] && !env("OAUTH_CLIENT_ID") && flags["new-client"] !== true) {
|
|
3679
|
+
/** @type {any} */
|
|
3674
3680
|
let started = null;
|
|
3675
3681
|
try {
|
|
3676
3682
|
started = await remoteCall(url, flags, "/api/oauth/reconnect", {
|
|
@@ -4492,6 +4498,7 @@ async function deployAccount(layout, flags, only) {
|
|
|
4492
4498
|
|
|
4493
4499
|
/** "<profile> (<email or key label>)" — who a deploy is about to act as,
|
|
4494
4500
|
* asked of the platform once per command. */
|
|
4501
|
+
/** @type {string | null} */
|
|
4495
4502
|
let identityCache = null;
|
|
4496
4503
|
async function deployIdentity(url, flags) {
|
|
4497
4504
|
if (identityCache) return identityCache;
|
|
@@ -4889,6 +4896,7 @@ async function pullCmd(layout, flags, only) {
|
|
|
4889
4896
|
|
|
4890
4897
|
let written = 0;
|
|
4891
4898
|
for (const f of incoming) {
|
|
4899
|
+
/** @type {string | null} */
|
|
4892
4900
|
let before = null;
|
|
4893
4901
|
try {
|
|
4894
4902
|
before = fs.readFileSync(f.file, "utf8");
|
|
@@ -4968,6 +4976,7 @@ async function workspacesCmd(positional, flags, layout) {
|
|
|
4968
4976
|
|
|
4969
4977
|
const here = layout.workspaces;
|
|
4970
4978
|
let there = [];
|
|
4979
|
+
/** @type {string | null} */
|
|
4971
4980
|
let reach = null;
|
|
4972
4981
|
if (url) {
|
|
4973
4982
|
try {
|
|
@@ -8064,6 +8073,7 @@ function writeIfUnchanged(desk, rel, before, next) {
|
|
|
8064
8073
|
|
|
8065
8074
|
/** Throw, as writeIfUnchanged does, when a desk file no longer reads `before`. */
|
|
8066
8075
|
function assertUnchanged(desk, rel, before) {
|
|
8076
|
+
/** @type {string | null} */
|
|
8067
8077
|
let now = null;
|
|
8068
8078
|
try {
|
|
8069
8079
|
now = fs.readFileSync(path.join(desk.dir, rel), "utf8");
|