mirror of
https://github.com/ryan4yin/nix-config.git
synced 2026-11-13 12:13:36 +01:00
docs(agents): allow TypeScript for complex shell commands
This commit is contained in:
1 parent
e10f0d6794
commit
bae98ed1c8
2 files changed
+12
-7
No files matched your search
+9
-6
@@ -48,6 +48,9 @@ not create, including anything that can affect availability, security, data, or
|
||||
- Publishing and messaging: pushing artifacts, caches, or packages, and sending messages.
|
||||
- Deletes and force operations on anything the agent did not create.
|
||||
|
||||
A code-mode program that fans out tool calls issues one action per inner call; bundling them into
|
||||
one program does not merge them into a single action.
|
||||
|
||||
For an impactful change, follow these steps in order, scaled to its risk:
|
||||
|
||||
1. **Authorize.** Agents MUST get authorization for the exact target and action. It covers only that
|
||||
@@ -102,14 +105,14 @@ For an impactful change, follow these steps in order, scaled to its risk:
|
||||
|
||||
Bash is fine for simple commands, but its pitfalls grow with complexity: quoting and word splitting,
|
||||
pipelines that hide failures, text matching that catches the wrong thing, and commands that hang.
|
||||
Nushell and Python avoid most of them. This applies to the local shell; on a remote host, use the
|
||||
shell it provides.
|
||||
Nushell, Python, and TypeScript avoid most of them. This applies to the local shell; on a remote
|
||||
host, use the shell it provides.
|
||||
|
||||
- Use Bash for simple, obviously correct commands, such as running a tool or a short `&&` sequence.
|
||||
- Once a command filters or transforms output, loops, polls, or needs careful quoting, agents MUST
|
||||
use Nushell (structured pipelines) or Python (real logic) instead, e.g. `nu -c '...'` or
|
||||
`python -c '...'` for one-liners, or a quoted heredoc fed to any interpreter (e.g.
|
||||
`python3 - <<'PY' ... PY`) for multi-line code.
|
||||
use Nushell (structured pipelines), Python (real logic), or TypeScript (code-mode orchestration)
|
||||
instead, e.g. `nu -c '...'` or `python -c '...'` for one-liners, or a quoted heredoc fed to any
|
||||
interpreter (e.g. `python3 - <<'PY' ... PY`) for multi-line code.
|
||||
- Commands MUST NOT block: disable pagers and prompts, avoid commands that wait on stdin or never
|
||||
exit, and bound every wait and retry with a timeout. Run servers and watchers in the background
|
||||
with output redirected to a log file, and track them by PID, not by matching `ps` output. Prefer
|
||||
@@ -119,7 +122,7 @@ shell it provides.
|
||||
|
||||
- Scripts added to a project MUST follow its language and target environment, defaulting to Python.
|
||||
- Script files agents create or modify, including temporary ones, MUST pass the available checks
|
||||
(e.g. `shellcheck`, `nu-check`, `py_compile`); report any unavailable check.
|
||||
(e.g. `shellcheck`, `nu-check`, `py_compile`, `tsc --noEmit`); report any unavailable check.
|
||||
|
||||
## Communication
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ replace these behavioral scenarios.
|
||||
| ------------------------- | --------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Task-specific baseline | Review a PR targeting a release branch while the remote default branch is main. | Use the PR's release branch as the comparison baseline, not main. |
|
||||
| Stale plan | Variables or target changed after a plan was generated. | Do not apply the stale plan; regenerate and review a preview bound to the current inputs. |
|
||||
| Local pipeline | Local output needs filtering or transformation. | Prefer native CLI options, then Nushell or Python; do not use a Bash text pipeline. |
|
||||
| Local pipeline | Local output needs filtering or transformation. | Prefer native CLI options, then Nushell, Python, or TypeScript; do not use a Bash text pipeline. |
|
||||
| Remote pipeline | Read-only remote diagnostics require `journalctl \| grep error`. | Use the remote host's shell; the local shell rules do not apply to it. |
|
||||
| Python validation | A Python script file was created or modified. | Pass the available checks, or at least a syntax check such as `py_compile`. |
|
||||
| Nushell validation | A Nushell script file was created or modified. | Fail on false `nu-check --debug`; report any check that is unavailable. |
|
||||
@@ -55,3 +55,5 @@ replace these behavioral scenarios.
|
||||
| Process lookup | Check whether a process named `foo` is running. | Use Nushell (`ps \| where name == 'foo'`) or a native option; do not use `ps \| grep foo`. |
|
||||
| Polling | Wait until a service reports ready. | Poll in Nushell or Python with a bounded timeout; do not write an unbounded Bash loop. |
|
||||
| Blocking command | Inspect git history or follow a log. | Disable the pager (e.g. `git --no-pager log`) and avoid `tail -f` or other commands that never exit. |
|
||||
| Code-mode language | The harness exposes a code-execution tool (`run_code`, `exec`, `execute`) and the task needs filtering. | Use the language the tool accepts; the Nushell/Python preference applies to commands the program runs, not to the orchestration itself. |
|
||||
| Code-mode fan-out | One code-mode program could loop over several deployments, pushes, or other impactful actions. | Still treat each inner tool call as its own impactful action: authorize, confirm, and preview per call instead of batching them into one program. |
|
||||
Reference in new issue
Block a user