@felan-ai/ ext- background- bash (英语)
为Felan会议执行不偏重任何项目-地方Bash。 扩展
bash 带有明确的背景, 边框前排等待, 可选的 PTY 输入,
并添加到列表、读取、等待、写入和停止进程的工具.
背景任务输出和元数据位于下
<session-storage>/background-bash/<workspace-key>/jobs. 当地Felan地图
<session-storage> 改为
$FELAN_AGENT_DIR/storage/sessions/<encoded-root-session-id>当云
适配器将其映射到其根会话状态路径.
执行路由文件系统和通过活动处理操作
AgentRuntime。前景处决需要 runtime.processes.startShell。 。 。 .
脱落后背景发射采用POSIX外壳跑跑. 东道主,
Docker 和 Daytona 运行时间需要 nohup, (中文(简体) ), ps, (中文(简体) ), sleep,则 setsid
或 shell 任务控制, 因此每个进程都收到一个孤立的进程组。 延期
捕获 runtime.storage('session') 一次;那个手柄必须是
持久和可见的同为文件系统命名空间 runtime.shell。 。 。 .
它要求明确 POSIX 外壳口味 探测和执行,然后
当运行时间不兼容时, 它的工具不活动 。 在本地窗口上,
HostAgentRuntime 发现同一主机的 Git Bash 安装
FELAN_POSIX_SHELL, (中文(简体) ), PATH,或标准Git-for-Windows位置。 WSL 不为
因其路径和进程命名空间不匹配而自动选中
主机运行时间 。 Git Bash 的处理工具使用它 ps -l gNU 格式
ps -o 无法使用。 主机依赖配置可以禁用扩展名
当运行时间不兼容时; Felan 不安装操作系统
公用事业.
每个选定的模型都有同样的过程表面。 特定模式 政策属于模型化的即时/工具构成,而不是处理 所有权或运行时间能力检查.
此发布需要兼容 @felan-ai/agent-core 因为它使用
运行时间明确 POSIX 外壳口味和 runtime.processes.startShell。 。 。 .
工具和控制措施
bash({ command })运行一个进程内的孩子通过runtime.processes.startShell不创建工作记录.bash({ command, timeout: 120 })等待最多为120秒,然后将同一个孩子提升为附加的背景工作而不重启.bash({ command, background: true })或者说bash({ command, timeout: 0 })启动一个带有持久工作记录的分离进程.bash({ command, timeout: 0, tty: true })立即启动交互 PTY 。 全体tty: true任务在启动前创建他们的记录, 这样守护进程就可以在其工作ID下注册 PTY .write_background_bash({ id, chars })向 PTY 任务发送精确的 stdin/ 控制字节 .list_background_bash返回 10 个最近的工作空间进程。 可选limit(1-100), (中文(简体) ),cursor, (中文(简体) ),status,以及search选择更宽的页面。 跟着回来nextCursor时hasMore是真的,包括在一个已过滤的空页之后.read_background_bash读取跟踪进程输出,上限为日志内容的128 KiB。 使用 POSIX 的较大文件tail不装入整个日志.wait_background_bash等待终端状态而不返回日志输出.stop_background_bash发送SIGTERM或者说SIGKILL。 。 。 ./processes通过pi.ui。 。 。 .- 费兰的TUI提供
Ctrl+Shift+J和内置进程/日志视图.
原生的TUI进程/log视图使用内框. 使用其补全信息
紧凑的一行摘要; Alt+A 揭示有限度的细节.
非 PTY 前景输出返回上2000行 / 50 KB 。 仅以上产出
任意限制全写为
<session-storage>/background-bash/<workspace-key>/output/output-*.log编辑
扩展保存该工作空间输出目录中最新的20个外溢文件.
默认前景推广窗口为 120 秒, 可用
extensionConfig.backgroundBash.foregroundTimeoutSeconds. 促进
任务 executionMode: 'attached',一个 output.log和完成信息.
它出现在 list_background_bash 财务报告和审定财务报表 /processes,但当会话结束
开始关闭或重新装入; 子代理晋级的工作结束
副探员。 取消转弯并不能阻止它。 已停止附加的工作记录
killed 而永不复入。 它们没有标准;使用 tty: true 页:1
交互式投入。 所附产出附于 output.log 因为它被读取.
一个前景命令在其外壳退出时完成. 一个背景后裔
开始于 cmd & 使输出管道打开,延迟结果
大部分500毫秒;持续运行且没有被跟踪.
守护进程跟踪活生生的孩子 foreground 进程前后
升职可以阻止孩子停产 本地 TUI 脚不包含
从其运行过程中启动前景进程,包括推动的命令
计数。 它计算运行脱机和PTY工作.
取消前景等待终止其进程树; 取消等待
已有依据的工作不会终止该项工作。 已调出的工作依然存在
当运行时间存储持续时重新启动后可发现 。 PTY 手柄为
root-session-scoped并无法在关闭后重新连接.
Live PTY状态出自于其根会话柄,而非脱落-跑取的PID探测器.
在另一个呼叫者在前景中等待时,读取状态并保留输入.
终端结果和完成时间戳记录一次。 一个孤儿PTY
报告为 unknown;其所存储的PID不用于重接或信号一个进程.
返回的工作作为背景进程 bash 执行
自动完成消息 。 消息在下次运行时引导活动运行
模式调用边界,或者在代理闲置时触发转弯。 最终结果
直接返回由 list_background_bash, (中文(简体) ), read_background_bash, (中文(简体) ),
wait_background_bash,或 stop_background_bash 压制重复
补全信息.
列出API和保留
BackgroundBashManager.query(options) 选项
BackgroundProcessViewSource.query(options) 返回 a BackgroundBashPage数字 :
const page = await source.query?.({ limit: 10 });
// { jobs, hasMore, nextCursor?, scanned }
const next = page?.nextCursor
? await source.query?.({ limit: 10, cursor: page.nextCursor })
: undefined;
BackgroundBashQuery 接受 limit (违约10,最高100),独家
任务标识 cursor, (中文(简体) ), status,以及 search (大小写不敏感 ID/command 子字符串,位于
大部分256个字符). 查询/页面类型
从软件包根导出,并 ./data。 。 。 . source.list(status) 财务报告和审定财务报表
manager.list(status) 保留他们的完整历史, 运行中的第一语义
现有呼叫者。 新的观点应当以 query({ limit: 10 }) 并揭露
明确阐述更广泛的历史/研究.
查询列出了直接的职务名称,没有行走日志或 读取所有元数据。 ID 排序由 UTC 第二开头, 随机后缀为 在那一秒内,一个稳定的打结者。 每页最多100名候选人 记录并在达到要求的结果计数时停止。 光标音轨 最后一个扫描的ID, 而不是最后一个匹配, 因此零星的搜索可以返回空 (原始内容存档于2018-10-21). pages with more history left. 较新的插入不转出后页; 删除被跳过。 质询是活的,而不是快照的同化.
默认是最近的历史,而不是一个详尽的运行进程视图 。 使用
query({ status: 'running' }) 并跟踪其光标找到旧的运行中的工作.
不需要持久的索引或背景全史扫描.
列表工具的完整序列化响应(文本和细节一起)是
上限为 64 KiB. 命令
和可选信号由JSON编码字节大小剪接,并明确
调车通知。 压缩 details.jobs[].meta.id/command 和状态记录
保存客户端命令链接兼容性; 完整路径, shell 参数,
符号,并省去重复的元数据。 完整命令保留在工作记录中.
保留仅在每32次成功创建/状态改变后运行,从未
最近一个查询。 1个序列式工作空间批次最多审议32个记录;
大型商店与随后的书写一致,而不是阻止上市.
超过最新1 000个或超过7天的经核实的终端工作
符合资格。 5分钟的完成宽限期保护最近的通知.
运行,未知,畸形,只留下遗产,不匹配,否则无法核实
保留记录。 匹配 info.json 财务报告和审定财务报表 completion.json 终端
需要设置状态/时间戳。 运行器完成时间切换到全部
秒是有效的,即使毫秒的起始时间是同一时间的后期
再来 任何被记录的PID和处理组必须正面缺席. 记录
带有一个PID,但没有保留可核查的组.
不确定过程探测器保留记录. 可选用途 python3
结束 AgentRuntime.exec,打开完整的目录链
O_NOFOLLOW 并仅将已知的平面任务文件与被绑定目录连接
解说. 它从不跟随共鸣 或逆向走出意外的条目.
缺少 Python/POSIX 描述支持,同名祖先(包括以上)
),以及意外文件均保守地禁用删除.
没有安装工具 。 所有检查和清除用途 AgentRuntime; 无
迁移或启动清理运行.
发展
资料来源: packages/ext-background-bash 内 https://github.com/felan-ai/felan 页面存档备份,存于互联网档案馆。 。 。 .
corepack enable
pnpm install --frozen-lockfile
pnpm --filter @felan-ai/ext-background-bash build
pnpm --filter @felan-ai/ext-background-bash type-check
scripts/test-isolated.sh pnpm --filter @felan-ai/ext-background-bash test
归属
这个软件包适应了麻省理工学院的许可 pi-background-bash 执行。 见
通知 财务报告和审定财务报表 自由主义 来源详情.
组成和要求
import backgroundBashExtension from '@felan-ai/ext-background-bash';
const extension = backgroundBashExtension;
默认导出会将执行保存在活动运行时间, 并使用软件包所有
常规 pi.ui 用于演示的适配器。 它使用主机拥有
runtime.terminals.attach(id) 可用时处理,保存进程寿命
穿过客户隔离。 否则它拥有它开始的终端。 没有
需要提供特定扩展服务.
createBackgroundBashExtension() 暴露出相同的便携式成分。 土著
渲染属于 apps/felan;此套件不导出 TUI 切入点 .
通用适配器使用规范化 ./data 记录,最多18份工作摘要
每页。 它出版 view 已宣布导航和读取动作,以及 a
document 对于每个选定进程的输出。 日志保留已有的界限
尾部(可达2000行和128KiB行),被分出为被编码的字节块. 每个
通过明确的呼喊动作,可以实现块和所节省的工作。 命令预览
被标记为被剪接后,输出则被作为字面马克倒放而逃脱. 无自定义
需要显示器或隐藏的有效载荷; PID、处理符、路径和运行时间
控件不是控制输入或显示元数据.
输出文档只针对运行的进程宣布停止并杀死控制,以及
一个精确字节 stdin字段,只用于运行带有回调写入的 PTY 进程.
常规演示文稿源的可选 write(id, chars) 召回代表
到同一管理器 write_background_bash。控制重新检查当前任务
执行前的状态。 行动在列表和产出文件中序列化,
及其元素身份、修订、目标和输入在执行时再次验证.
停止、关闭、外国或畸形的行动不能援引程序控制.
发布后打开通用视图返回;命令不等待 用户输入。 关闭或取消视图会阻断新动作, 加入待读 和控制,并关闭它的把手 不停止任何进程。 关闭等待 在保持协调员所有权政策的同时进行清理。 清理失败 继续观察。 刷新是明确的;通用适配器安装不覆盖, 快捷键,或任何客户端的UI投票. 执行的完成交付是 不变.
主办方提供 AgentRuntime 和常见的 UI 绑定; 可选本地 TUI 拥有
本地捷径和身份投票。 受信任提供者自己的依赖政策,
不是客户端渲染器。 需要兼容的运行时间
pOSIX 外壳/加工设施
运行时间依赖关系费兰
不安装操作系统公用设施,该功能仍然不活动
当它们无法使用时.
该扩展拥有背景工作记录、日志、生命周期、PTY控制以及 6个模型化工艺控制器. 它不提供沙盒.