@pennixrv/trellis 0.6.28 → 0.6.29
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/dist/commands/channel/agent-loader.d.ts +3 -1
- package/dist/commands/channel/agent-loader.d.ts.map +1 -1
- package/dist/commands/channel/agent-loader.js +32 -1
- package/dist/commands/channel/agent-loader.js.map +1 -1
- package/dist/commands/channel/guard.d.ts +21 -2
- package/dist/commands/channel/guard.d.ts.map +1 -1
- package/dist/commands/channel/guard.js +105 -4
- package/dist/commands/channel/guard.js.map +1 -1
- package/dist/commands/channel/index.d.ts.map +1 -1
- package/dist/commands/channel/index.js +22 -5
- package/dist/commands/channel/index.js.map +1 -1
- package/dist/commands/channel/run.d.ts.map +1 -1
- package/dist/commands/channel/run.js +15 -9
- package/dist/commands/channel/run.js.map +1 -1
- package/dist/commands/channel/spawn.d.ts +4 -0
- package/dist/commands/channel/spawn.d.ts.map +1 -1
- package/dist/commands/channel/spawn.js +59 -7
- package/dist/commands/channel/spawn.js.map +1 -1
- package/dist/commands/channel/workers.d.ts +8 -0
- package/dist/commands/channel/workers.d.ts.map +1 -0
- package/dist/commands/channel/workers.js +30 -0
- package/dist/commands/channel/workers.js.map +1 -0
- package/dist/migrations/manifests/0.6.28.json +9 -0
- package/dist/migrations/manifests/0.6.29.json +9 -0
- package/dist/templates/common/bundled-skills/trellis-channel/references/command-reference.md +23 -4
- package/dist/templates/common/bundled-skills/trellis-channel/references/subnode-work.md +37 -8
- package/dist/templates/common/bundled-skills/trellis-channel/references/workers.md +25 -6
- package/dist/templates/common/bundled-skills/trellis-meta/SKILL.md +2 -2
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/multi-agent-channel.md +2 -1
- package/dist/templates/trellis/agents/subnode.env +4 -0
- package/dist/templates/trellis/agents/subnode.md +5 -0
- package/dist/templates/trellis/config.yaml +9 -1
- package/dist/templates/trellis/index.d.ts +4 -3
- package/dist/templates/trellis/index.d.ts.map +1 -1
- package/dist/templates/trellis/index.js +5 -3
- package/dist/templates/trellis/index.js.map +1 -1
- package/dist/templates/trellis/scripts/subnode_artifact.py +100 -1
- package/package.json +2 -2
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
* │ ├── __init__.py
|
|
11
11
|
* │ ├── common/ # Shared utilities (Python)
|
|
12
12
|
* │ └── *.py # Main scripts (Python)
|
|
13
|
-
* ├── agents/ # Channel runtime agent definitions
|
|
14
|
-
* │ └── *.md
|
|
13
|
+
* ├── agents/ # Channel runtime agent definitions and assets
|
|
14
|
+
* │ └── *.md / *.env # Loaded by the channel runtime
|
|
15
15
|
* ├── scripts-shell-archive/ # Archived shell scripts (for reference)
|
|
16
16
|
* ├── workflow.md # Workflow guide
|
|
17
17
|
* ├── config.yaml # Trellis configuration
|
|
@@ -56,12 +56,13 @@ export declare const gitattributesTemplate: string;
|
|
|
56
56
|
export declare const implementAgentTemplate: string;
|
|
57
57
|
export declare const checkAgentTemplate: string;
|
|
58
58
|
export declare const subnodeAgentTemplate: string;
|
|
59
|
+
export declare const subnodeEnvTemplate: string;
|
|
59
60
|
/**
|
|
60
61
|
* Get all script templates as a map of relative path to content
|
|
61
62
|
*/
|
|
62
63
|
export declare function getAllScripts(): Map<string, string>;
|
|
63
64
|
/**
|
|
64
|
-
* Get all channel runtime agent
|
|
65
|
+
* Get all channel runtime agent assets as a map of relative path
|
|
65
66
|
* (under `.trellis/agents/`) to content.
|
|
66
67
|
*
|
|
67
68
|
* Consumed by `trellis init` (to dispatch on first install) and by
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/trellis/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAcH,eAAO,MAAM,WAAW,QAAsC,CAAC;AAG/D,eAAO,MAAM,UAAU,QAA6C,CAAC;AACrE,eAAO,MAAM,WAAW,QAA0C,CAAC;AACnE,eAAO,MAAM,eAAe,QAA8C,CAAC;AAC3E,eAAO,MAAM,gBAAgB,QAAgD,CAAC;AAC9E,eAAO,MAAM,eAAe,QAA+C,CAAC;AAC5E,eAAO,MAAM,eAAe,QAA+C,CAAC;AAC5E,eAAO,MAAM,gBAAgB,QAAgD,CAAC;AAC9E,eAAO,MAAM,gBAAgB,QAAgD,CAAC;AAC9E,eAAO,MAAM,YAAY,QAA2C,CAAC;AACrE,eAAO,MAAM,QAAQ,QAAuC,CAAC;AAC7D,eAAO,MAAM,SAAS,QAAwC,CAAC;AAC/D,eAAO,MAAM,SAAS,QAAwC,CAAC;AAC/D,eAAO,MAAM,WAAW,QAA0C,CAAC;AACnE,eAAO,MAAM,WAAW,QAA0C,CAAC;AACnE,eAAO,MAAM,iBAAiB,QAAiD,CAAC;AAChF,eAAO,MAAM,eAAe,QAA+C,CAAC;AAC5E,eAAO,MAAM,oBAAoB,QAEhC,CAAC;AACF,eAAO,MAAM,wBAAwB,QAEpC,CAAC;AACF,eAAO,MAAM,qBAAqB,QAEjC,CAAC;AACF,eAAO,MAAM,qBAAqB,QAEjC,CAAC;AACF,eAAO,MAAM,mBAAmB,QAE/B,CAAC;AACF,eAAO,MAAM,mBAAmB,QAE/B,CAAC;AACF,eAAO,MAAM,gBAAgB,QAAgD,CAAC;AAG9E,eAAO,MAAM,kBAAkB,QAA2C,CAAC;AAC3E,eAAO,MAAM,mBAAmB,QAA4C,CAAC;AAC7E,eAAO,MAAM,UAAU,QAAkC,CAAC;AAC1D,eAAO,MAAM,gBAAgB,QAAyC,CAAC;AACvE,eAAO,MAAM,gBAAgB,QAAyC,CAAC;AACvE,eAAO,MAAM,qBAAqB,QAEjC,CAAC;AACF,eAAO,MAAM,mBAAmB,QAA4C,CAAC;AAG7E,eAAO,MAAM,kBAAkB,QAA8B,CAAC;AAC9D,eAAO,MAAM,kBAAkB,QAA8B,CAAC;AAC9D,eAAO,MAAM,iBAAiB,QAAgC,CAAC;AAC/D,eAAO,MAAM,qBAAqB,QAAoC,CAAC;AAMvE,eAAO,MAAM,sBAAsB,QAAsC,CAAC;AAC1E,eAAO,MAAM,kBAAkB,QAAkC,CAAC;AAClE,eAAO,MAAM,oBAAoB,QAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/trellis/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAcH,eAAO,MAAM,WAAW,QAAsC,CAAC;AAG/D,eAAO,MAAM,UAAU,QAA6C,CAAC;AACrE,eAAO,MAAM,WAAW,QAA0C,CAAC;AACnE,eAAO,MAAM,eAAe,QAA8C,CAAC;AAC3E,eAAO,MAAM,gBAAgB,QAAgD,CAAC;AAC9E,eAAO,MAAM,eAAe,QAA+C,CAAC;AAC5E,eAAO,MAAM,eAAe,QAA+C,CAAC;AAC5E,eAAO,MAAM,gBAAgB,QAAgD,CAAC;AAC9E,eAAO,MAAM,gBAAgB,QAAgD,CAAC;AAC9E,eAAO,MAAM,YAAY,QAA2C,CAAC;AACrE,eAAO,MAAM,QAAQ,QAAuC,CAAC;AAC7D,eAAO,MAAM,SAAS,QAAwC,CAAC;AAC/D,eAAO,MAAM,SAAS,QAAwC,CAAC;AAC/D,eAAO,MAAM,WAAW,QAA0C,CAAC;AACnE,eAAO,MAAM,WAAW,QAA0C,CAAC;AACnE,eAAO,MAAM,iBAAiB,QAAiD,CAAC;AAChF,eAAO,MAAM,eAAe,QAA+C,CAAC;AAC5E,eAAO,MAAM,oBAAoB,QAEhC,CAAC;AACF,eAAO,MAAM,wBAAwB,QAEpC,CAAC;AACF,eAAO,MAAM,qBAAqB,QAEjC,CAAC;AACF,eAAO,MAAM,qBAAqB,QAEjC,CAAC;AACF,eAAO,MAAM,mBAAmB,QAE/B,CAAC;AACF,eAAO,MAAM,mBAAmB,QAE/B,CAAC;AACF,eAAO,MAAM,gBAAgB,QAAgD,CAAC;AAG9E,eAAO,MAAM,kBAAkB,QAA2C,CAAC;AAC3E,eAAO,MAAM,mBAAmB,QAA4C,CAAC;AAC7E,eAAO,MAAM,UAAU,QAAkC,CAAC;AAC1D,eAAO,MAAM,gBAAgB,QAAyC,CAAC;AACvE,eAAO,MAAM,gBAAgB,QAAyC,CAAC;AACvE,eAAO,MAAM,qBAAqB,QAEjC,CAAC;AACF,eAAO,MAAM,mBAAmB,QAA4C,CAAC;AAG7E,eAAO,MAAM,kBAAkB,QAA8B,CAAC;AAC9D,eAAO,MAAM,kBAAkB,QAA8B,CAAC;AAC9D,eAAO,MAAM,iBAAiB,QAAgC,CAAC;AAC/D,eAAO,MAAM,qBAAqB,QAAoC,CAAC;AAMvE,eAAO,MAAM,sBAAsB,QAAsC,CAAC;AAC1E,eAAO,MAAM,kBAAkB,QAAkC,CAAC;AAClE,eAAO,MAAM,oBAAoB,QAAoC,CAAC;AACtE,eAAO,MAAM,kBAAkB,QAAqC,CAAC;AAErE;;GAEG;AACH,wBAAgB,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAyCnD;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAOlD"}
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
* │ ├── __init__.py
|
|
11
11
|
* │ ├── common/ # Shared utilities (Python)
|
|
12
12
|
* │ └── *.py # Main scripts (Python)
|
|
13
|
-
* ├── agents/ # Channel runtime agent definitions
|
|
14
|
-
* │ └── *.md
|
|
13
|
+
* ├── agents/ # Channel runtime agent definitions and assets
|
|
14
|
+
* │ └── *.md / *.env # Loaded by the channel runtime
|
|
15
15
|
* ├── scripts-shell-archive/ # Archived shell scripts (for reference)
|
|
16
16
|
* ├── workflow.md # Workflow guide
|
|
17
17
|
* ├── config.yaml # Trellis configuration
|
|
@@ -72,6 +72,7 @@ export const gitattributesTemplate = readTemplate("gitattributes.txt");
|
|
|
72
72
|
export const implementAgentTemplate = readTemplate("agents/implement.md");
|
|
73
73
|
export const checkAgentTemplate = readTemplate("agents/check.md");
|
|
74
74
|
export const subnodeAgentTemplate = readTemplate("agents/subnode.md");
|
|
75
|
+
export const subnodeEnvTemplate = readTemplate("agents/subnode.env");
|
|
75
76
|
/**
|
|
76
77
|
* Get all script templates as a map of relative path to content
|
|
77
78
|
*/
|
|
@@ -114,7 +115,7 @@ export function getAllScripts() {
|
|
|
114
115
|
return scripts;
|
|
115
116
|
}
|
|
116
117
|
/**
|
|
117
|
-
* Get all channel runtime agent
|
|
118
|
+
* Get all channel runtime agent assets as a map of relative path
|
|
118
119
|
* (under `.trellis/agents/`) to content.
|
|
119
120
|
*
|
|
120
121
|
* Consumed by `trellis init` (to dispatch on first install) and by
|
|
@@ -126,6 +127,7 @@ export function getAllAgents() {
|
|
|
126
127
|
agents.set("implement.md", implementAgentTemplate);
|
|
127
128
|
agents.set("check.md", checkAgentTemplate);
|
|
128
129
|
agents.set("subnode.md", subnodeAgentTemplate);
|
|
130
|
+
agents.set("subnode.env", subnodeEnvTemplate);
|
|
129
131
|
return agents;
|
|
130
132
|
}
|
|
131
133
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/trellis/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/trellis/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
The coordinator creates an immutable brief before dispatching a subnode. The
|
|
5
5
|
subnode appends its worklog and writes its own final report. This helper never
|
|
6
|
-
dispatches workers,
|
|
6
|
+
dispatches workers, makes the acceptance judgment, or mutates task state.
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
9
|
from __future__ import annotations
|
|
@@ -12,6 +12,7 @@ import argparse
|
|
|
12
12
|
import json
|
|
13
13
|
import re
|
|
14
14
|
import sys
|
|
15
|
+
from datetime import datetime, timezone
|
|
15
16
|
from pathlib import Path
|
|
16
17
|
from typing import Any, NoReturn
|
|
17
18
|
|
|
@@ -30,6 +31,13 @@ SECRET_PATTERNS = (
|
|
|
30
31
|
re.compile(r"\bsk-[A-Za-z0-9]{20,}\b"),
|
|
31
32
|
re.compile(r"\bgh[pousr]_[A-Za-z0-9]{20,}\b"),
|
|
32
33
|
)
|
|
34
|
+
TERMINAL_LIFECYCLES = {"done", "error", "killed", "crashed"}
|
|
35
|
+
DISPOSITION_OUTCOMES = {"accepted", "rejected", "deferred"}
|
|
36
|
+
REQUIRED_DISPOSITION_CHECKS = {
|
|
37
|
+
"report_validation",
|
|
38
|
+
"source_recheck",
|
|
39
|
+
"protected_target_check",
|
|
40
|
+
}
|
|
33
41
|
|
|
34
42
|
|
|
35
43
|
class ArtifactError(Exception):
|
|
@@ -232,6 +240,8 @@ def _validate_brief_data(
|
|
|
232
240
|
_require_text_list(brief.get("stop_conditions"), "brief.stop_conditions")
|
|
233
241
|
_require_text(brief.get("deadline"), "brief.deadline", max_len=128)
|
|
234
242
|
_validate_channel_ref(brief.get("channel_ref"))
|
|
243
|
+
if brief["channel_ref"]["worker_handle"] != subnode_id:
|
|
244
|
+
_fail("channel_ref.worker_handle must match brief.subnode_id")
|
|
235
245
|
_validate_retry_target(
|
|
236
246
|
brief.get("retry_of"),
|
|
237
247
|
task_dir,
|
|
@@ -362,6 +372,41 @@ def _validate_report_file(
|
|
|
362
372
|
return report, evidence, brief, node_dir
|
|
363
373
|
|
|
364
374
|
|
|
375
|
+
def _validate_disposition_data(
|
|
376
|
+
disposition: dict[str, Any],
|
|
377
|
+
report: dict[str, Any],
|
|
378
|
+
brief: dict[str, Any],
|
|
379
|
+
) -> None:
|
|
380
|
+
if disposition.get("schema_version") != SCHEMA_VERSION:
|
|
381
|
+
_fail(f"disposition.schema_version must be {SCHEMA_VERSION}")
|
|
382
|
+
for field in ("task_id", "work_id", "subnode_id", "role_id"):
|
|
383
|
+
if disposition.get(field) != brief.get(field):
|
|
384
|
+
_fail(f"disposition.{field} does not match brief.{field}")
|
|
385
|
+
if disposition.get("report_path") != brief.get("report_path"):
|
|
386
|
+
_fail("disposition.report_path does not match brief.report_path")
|
|
387
|
+
if disposition.get("report_status") != report.get("status"):
|
|
388
|
+
_fail("disposition.report_status does not match report.status")
|
|
389
|
+
if disposition.get("outcome") not in DISPOSITION_OUTCOMES:
|
|
390
|
+
_fail("disposition.outcome must be accepted, rejected, or deferred")
|
|
391
|
+
terminal = disposition.get("terminal")
|
|
392
|
+
if not isinstance(terminal, dict):
|
|
393
|
+
_fail("disposition.terminal must be an object")
|
|
394
|
+
if terminal.get("lifecycle") not in TERMINAL_LIFECYCLES:
|
|
395
|
+
_fail("disposition.terminal.lifecycle must be done, error, killed, or crashed")
|
|
396
|
+
sequence = terminal.get("seq")
|
|
397
|
+
if isinstance(sequence, bool) or not isinstance(sequence, int) or sequence < 1:
|
|
398
|
+
_fail("disposition.terminal.seq must be a positive integer")
|
|
399
|
+
_require_text(terminal.get("observed_at"), "disposition.terminal.observed_at", max_len=128)
|
|
400
|
+
checks = _require_text_list(disposition.get("checks"), "disposition.checks")
|
|
401
|
+
if len(checks) != len(set(checks)):
|
|
402
|
+
_fail("disposition.checks must not contain duplicates")
|
|
403
|
+
missing = REQUIRED_DISPOSITION_CHECKS.difference(checks)
|
|
404
|
+
if missing:
|
|
405
|
+
_fail("disposition.checks is missing: " + ", ".join(sorted(missing)))
|
|
406
|
+
_require_text(disposition.get("reason"), "disposition.reason")
|
|
407
|
+
_require_text(disposition.get("decided_at"), "disposition.decided_at", max_len=128)
|
|
408
|
+
|
|
409
|
+
|
|
365
410
|
def _init(args: argparse.Namespace) -> None:
|
|
366
411
|
repo_root = get_repo_root()
|
|
367
412
|
task_dir = resolve_task_dir(args.task, repo_root)
|
|
@@ -425,6 +470,42 @@ def _validate(args: argparse.Namespace) -> None:
|
|
|
425
470
|
print(f"Validated pending-review report: {report['subnode_id']}")
|
|
426
471
|
|
|
427
472
|
|
|
473
|
+
def _disposition(args: argparse.Namespace) -> None:
|
|
474
|
+
repo_root = get_repo_root()
|
|
475
|
+
report, _evidence, brief, node_dir = _validate_report_file(args.report, repo_root)
|
|
476
|
+
disposition_path = node_dir / "disposition.json"
|
|
477
|
+
if disposition_path.exists() or disposition_path.is_symlink():
|
|
478
|
+
_fail(f"disposition already exists and cannot be replaced: {disposition_path}")
|
|
479
|
+
disposition = {
|
|
480
|
+
"schema_version": SCHEMA_VERSION,
|
|
481
|
+
"task_id": brief["task_id"],
|
|
482
|
+
"work_id": brief["work_id"],
|
|
483
|
+
"subnode_id": brief["subnode_id"],
|
|
484
|
+
"role_id": brief["role_id"],
|
|
485
|
+
"report_path": brief["report_path"],
|
|
486
|
+
"report_status": report["status"],
|
|
487
|
+
"outcome": args.outcome,
|
|
488
|
+
"terminal": {
|
|
489
|
+
"lifecycle": args.terminal_lifecycle,
|
|
490
|
+
"seq": args.terminal_seq,
|
|
491
|
+
"observed_at": args.terminal_at,
|
|
492
|
+
},
|
|
493
|
+
"checks": args.check,
|
|
494
|
+
"reason": args.reason,
|
|
495
|
+
"decided_at": datetime.now(timezone.utc).isoformat(),
|
|
496
|
+
}
|
|
497
|
+
_validate_disposition_data(disposition, report, brief)
|
|
498
|
+
try:
|
|
499
|
+
with disposition_path.open("x", encoding="utf-8") as stream:
|
|
500
|
+
json.dump(disposition, stream, indent=2, ensure_ascii=False)
|
|
501
|
+
stream.write("\n")
|
|
502
|
+
except FileExistsError:
|
|
503
|
+
_fail(f"disposition already exists and cannot be replaced: {disposition_path}")
|
|
504
|
+
except OSError as exc:
|
|
505
|
+
_fail(f"could not write disposition {disposition_path}: {exc}")
|
|
506
|
+
print(f"Recorded coordinator disposition: {brief['subnode_id']} -> {args.outcome}")
|
|
507
|
+
|
|
508
|
+
|
|
428
509
|
def _validate_counter(args: argparse.Namespace) -> None:
|
|
429
510
|
repo_root = get_repo_root()
|
|
430
511
|
primary_dir = Path(args.primary)
|
|
@@ -474,6 +555,24 @@ def _parser() -> argparse.ArgumentParser:
|
|
|
474
555
|
validate.add_argument("--report", required=True)
|
|
475
556
|
validate.set_defaults(handler=_validate)
|
|
476
557
|
|
|
558
|
+
disposition = subparsers.add_parser(
|
|
559
|
+
"disposition",
|
|
560
|
+
help="record one coordinator disposition for a validated report",
|
|
561
|
+
)
|
|
562
|
+
disposition.add_argument("--report", required=True)
|
|
563
|
+
disposition.add_argument("--outcome", choices=sorted(DISPOSITION_OUTCOMES), required=True)
|
|
564
|
+
disposition.add_argument("--terminal-lifecycle", choices=sorted(TERMINAL_LIFECYCLES), required=True)
|
|
565
|
+
disposition.add_argument("--terminal-seq", type=int, required=True)
|
|
566
|
+
disposition.add_argument("--terminal-at", required=True)
|
|
567
|
+
disposition.add_argument(
|
|
568
|
+
"--check",
|
|
569
|
+
action="append",
|
|
570
|
+
required=True,
|
|
571
|
+
help="independent check name (repeat; requires report_validation, source_recheck, and protected_target_check)",
|
|
572
|
+
)
|
|
573
|
+
disposition.add_argument("--reason", required=True)
|
|
574
|
+
disposition.set_defaults(handler=_disposition)
|
|
575
|
+
|
|
477
576
|
counter = subparsers.add_parser(
|
|
478
577
|
"validate-counter",
|
|
479
578
|
help="validate two completed, independent subnode directories",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pennixrv/trellis",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.29",
|
|
4
4
|
"description": "AI capabilities grow like ivy — Trellis provides the structure to guide them along a disciplined path",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"inquirer": "^9.3.7",
|
|
35
35
|
"undici": "^6.21.0",
|
|
36
36
|
"zod": "^4.4.2",
|
|
37
|
-
"@pennixrv/trellis-core": "0.6.
|
|
37
|
+
"@pennixrv/trellis-core": "0.6.29"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@eslint/js": "^9.18.0",
|