Skip to content

Releases: Ck-epsilon/Aura

aura-basetools 1.0.4

Choose a tag to compare

@Ck-epsilon Ck-epsilon released this 30 Oct 16:01

aura-basetools 1.0.4

DSH apply contract修复版。

  • 修复 applied[].note、convert bom、多目标 aborted 与 rebased 的 DSH output schema。
  • DSH apply 支持纯 targets 批量调用,并拒绝 file_path + targets 双形状。
  • CLI/MCP/DSH 共用同一套 apply op 推断。
  • 单目标 DSH retry 接入共享重定位引擎并返回 rebased。
  • 新增 29 条 apply contract 接口回归。

npm: aura-basetools@1.0.4 / aura-basetools-dsh@1.0.4

aura-basetools 1.0.2

Choose a tag to compare

@Ck-epsilon Ck-epsilon released this 27 Oct 16:13

Writes may only replace lines that were actually delivered to the caller.

  • PATCH_UNSEEN_REGION: a whole-file write or whole-region replacement that touches lines never delivered (probe/map/digest reads, or a full cut at the content budget) is refused with zero write and the missing range named. old / anchor / handle / full-range expect are content proof; allow_unobserved: true stays the explicit blind-write escape (receipt says unverified_region).
  • Entity replace-body follows the same rule: a body clipped by the budget records zero delivered lines.
  • CONVERT_FROM_REQUIRED: convert no longer guesses a non-UTF-8, non-BOM source encoding (single-byte probes can be wrong and still report high confidence).
  • Observation stores (memory and on-disk) now record delivered ranges per version; same-version re-reads keep the union.
  • Gate: 57 suites, split package 75/75, src<->dist 34 files byte-identical, entity-apply 63/63, DSH load 99/99.

aura-basetools 1.0.1

Choose a tag to compare

@Ck-epsilon Ck-epsilon released this 27 Oct 13:04

1.0.1

  • Line-number writes require expect: apply op=patch with lines / start_line+end_line, single hunk or batch. Missing => PATCH_LINES_NEED_EXPECT, nothing written. dry_run is exempt.
  • anchor is a whole-line address: a fragment anchor is refused (PATCH_ANCHOR_FRAGMENT); use old for an in-line change.
  • Multi-target flat elements are expanded through the same flatHunk path; they are no longer silently dropped.
  • line (singular) remains a handle-relative key; alone it still reports PATCH_NO_ADDRESS.

Gate: release-check exit 0 (57 suites + split 75/75 + src↔dist 33 files); entity-apply 51/51.
npm: aura-basetools@1.0.1, aura-basetools-dsh@1.0.1.

aura-basetools 1.0.0

Choose a tag to compare

@Ck-epsilon Ck-epsilon released this 26 Oct 23:41

aura-basetools 1.0.0

  • npm: aura-basetools@1.0.0, aura-basetools-dsh@1.0.0
  • Public surface: aura_basetools_read + aura_basetools_apply (MCP/DSH)
  • read: text views, entity (definition + references + evidence), repository grep, image metadata/content
  • apply: replace-body/rename + patch/write/convert/tx; evidence-guarded, atomic, read-back verified
  • tests: interface/integration/system only; unit layer archived; 57-suite gate green
  • source: monorepo aura-basetools/

aura-basetools v0.23.0

Choose a tag to compare

@Ck-epsilon Ck-epsilon released this 26 Oct 17:04

0.23.0:结构地址 / 结构句柄 / 双重编码修复 / convert 全面

  • 结构地址(edit 的 structure 字段):symbol:<名字> / section:<标题> / key:<点号路径>。
    按结构定位而不是坐标:行号漂移、整段正文被外部改写后仍指得到;歧义/找不到 ⇒
    PATCH_STRUCTURE_AMBIGUOUS / PATCH_STRUCTURE_NOT_FOUND,零写入。符号解析复用 resolveTarget
    (支持 function:foo、Outer/Inner、#n),节/键走 doc-structure 的索引。
  • 结构句柄:read --structure-handle 在窗口恰好覆盖一个符号时发 s<id><fp>:symbol=<name>;
    解析时按符号重定位并比对指纹(内容变了照常改,因为地址是路径而不是字节)。
    与行号句柄同族:身份标签不符 ⇒ PATCH_HANDLE_IDENTITY_MISMATCH。
  • 双重编码检测/修复:diagnose 报 doubleEncoding;convert --repair-double-encoding 还原
    “UTF-8 字节被当 Latin-1/GBK 又存了一次”的可逆损坏;锟斤拷 这类不可逆的明确拒绝。
  • convert 上 MCP 与 DSH 面:MCP 新增 aura_basetools_convert(全编码);DSH 新增同名工具,
    受宿主 writeText 只能写 UTF-8 的契约限制,目标只支持 utf-8(其余走 CLI)。
  • 工具数:MCP 5(read/edit/write/convert/tx);DSH 4(read/edit/write/convert)。
  • 判据:structure-test 16;encoding-test 61;public-surface/capabilities 随工具面更新;
    全量闸 exit 0。

aura-basetools v0.21.0

Choose a tag to compare

@Ck-epsilon Ck-epsilon released this 25 Oct 12:30

0.21.0:多编码 / 文档结构 / probe

  • 非 UTF-8 读写:自动探测 UTF-8(含 BOM)/ UTF-16LE/BE / GB18030(GBK,含补充平面 4 字节)/
    Shift_JIS / EUC-KR / Big5 / Windows-1252;写回沿用读时那次探测的编码,未改动的行逐字节保留;
    不可逆或猜不准时拒绝写(ENCODING_NOT_ROUNDTRIP_SAFE / ENCODING_AMBIGUOUS),
    目标编码表示不了的字符 ⇒ ENCODING_UNREPRESENTABLE,零写入。
  • 逐调用 encoding(CLI --encoding / MCP encoding)+ 文件级记忆:显式指定过一次后记住,
    文件被外部改动(大小/mtime 变化)则记忆自动失效、回到探测。
  • 文档 / 配置结构:map 对 .md/.markdown/.mdx(ATX + setext;多行段落、YAML front matter、
    围栏代码块正确消歧)、.json/.jsonc/.json5(键路径含 a[0].b;无引号键 / 单引号 / 注释 / 尾逗号)、
    .yaml/.yml、.toml 给出行号区间目录;digest 对文档返回同一张目录。
  • probe 模式:行数/字节/行尾/编码/语言/文档类型/结构规模,一行摘要、不发正文;
    支持 targets 批量;auto 不会自动选它;不写“已交付”账本(probe 之后 full 仍给正文)。
  • 参数安全:MCP 与 DSH 两个面的编辑说明都改为“单处修改用平铺形式、hunks 只用于多处”,
    降低长嵌套 JSON 触发 MALFORMED_RESPONSE 的概率。根因在 provider 的流式解析(工具看不到那段字节),
    要归零需宿主开启 strict 模式——aura basetools doctor 会打印配方与转换器路径。
  • 判据:encoding 34 条、doc-map 45 条、probe 21 条;全量闸 node build/release-check.mjs exit 0。
  • 已发布:npm aura-basetools@0.21.0 / aura-basetools-dsh@0.21.0(registry.npmjs.org);
    GitHub Release aura-basetools-v0.21.0(monorepo Ck-epsilon/Aura,源码提交 2c28beb)。

aura-basetools v0.20.0

Choose a tag to compare

@Ck-epsilon Ck-epsilon released this 24 Oct 11:57

aura-basetools v0.20.0 — MCP instructions / 反向提示

中文

0.20.0 加 MCP 标准的服务器侧提示位,并清理客户端旧工具名:

  • MCP initialize.instructions 明确请求客户端优先 aura_basetools_*,跨调用改动用 aura_basetools_tx。
  • 客户端是否采用 instructions 由客户端决定;它不强制覆盖内置 Read/Edit/Write。
  • 清理 DSH/Codex/ZCode/Hermes 的 aura_basetools_undo / transactions 旧名,改为 tx。
  • 修复 Windows 观测缓存并发丢失:observations.json rename 遇 EPERM/EBUSY 重试,6 并发读不再丢条目。
  • 本地 90 套件 exit 0;Windows / Ubuntu / macOS 15 / macOS 26 full-gate 四格全绿。

English

0.20.0 adds the standard MCP server-side hint and removes stale client tool names:

  • initialize.instructions asks the client to prefer aura_basetools_* and to use aura_basetools_tx for multi-call changes.
  • Whether a client honors instructions is up to that client; it does not override built-in Read/Edit/Write.
  • DSH/Codex/ZCode/Hermes instructions now use tx instead of the removed undo / transactions.
  • Fixed lost concurrent observations on Windows: retry observations.json rename on EPERM/EBUSY, so six concurrent reads no longer drop an entry.
  • Local 90 suites exit 0; full gate green on Windows / Ubuntu / macOS 15 / macOS 26.
npm i -g aura-basetools@0.20.0

aura-basetools v0.19.0

Choose a tag to compare

@Ck-epsilon Ck-epsilon released this 24 Oct 09:41

aura-basetools v0.19.0 — Windows/Ubuntu runner parity / 三平台全量闸

中文

0.19.0 把 full gate 从“macOS 绿、Windows/Ubuntu 红”修到 Windows / Ubuntu / macOS 15 / macOS 26 四格全绿。

  • .gitattributes 固定源码与夹具 LF(唯一例外:故意 CRLF 的 golden-target-crlf-bom.mjs),
    消除 Windows checkout 把字节级黄金集/冻结夹具整体改成 CRLF 的假红。
  • 源码探针先归一 CRLF;encoding-refusal 同时认 8.3 短路径与 realpath 长路径。
  • observation-store-identity 在大小写敏感文件系统上跳过“同一文件两种写法”分支。
  • atomic-publish 在 POSIX 不再要求 inode 不复用(CAS 靠含 ctime 的版本令牌)。
  • index-cache 的地板标定上界封顶在绝对上界 100 ms,慢 runner 不再把门槛抬高。
  • 本地 90 套件 exit 0;GitHub Actions run 40082103753 四格全绿。

English

0.19.0 takes the full gate from "macOS green, Windows/Ubuntu red" to
green on Windows, Ubuntu, macOS 15 and macOS 26.

  • .gitattributes pins source and fixtures to LF (except the intentionally CRLF
    golden-target-crlf-bom.mjs), so a Windows checkout no longer turns byte-level goldens
    and the frozen fixture into CRLF false reds.
  • Source probes normalize CRLF; encoding-refusal accepts both 8.3 short paths and realpath long paths.
  • observation-store-identity skips the "two spellings of one file" branch on case-sensitive filesystems.
  • atomic-publish no longer requires inode non-reuse on POSIX (CAS relies on the ctime-bearing version token).
  • index-cache caps the floor-calibrated bound at the absolute 100 ms bound, so a slow runner cannot raise the gate.
  • Local 90 suites exit 0; GitHub Actions run 40082103753 is green in all four jobs.
npm i -g aura-basetools@0.19.0

aura-basetools v0.18.0

Choose a tag to compare

@Ck-epsilon Ck-epsilon released this 24 Oct 09:09

aura-basetools v0.18.0 — concurrent merge / 并发合并

中文

0.18.0 让跨调用事务在提交时合并外部并发改动:

  • tx commit 遇到事务写过的文件被外部改过时,用三方合并处理非重叠改动。
  • 合并基于行级 diff + git merge-file;不在同一区域的双方改动都会保留。
  • 同一区域冲突 / 非 UTF-8 / Git 不可用 ⇒ TX_CONFLICT,一个字节都不写。
  • 合并后 verify 失败 ⇒ 回滚到“外部当前内容”,不会把外部改动一起抹掉。
  • tx-session 24 项(CLI / MCP / 并发合并);本地全量闸 90 套件 exit 0;macOS 15/26 绿。

English

0.18.0 makes cross-call transactions merge concurrent external edits at commit:

  • tx commit three-way-merges non-overlapping external changes to files the transaction wrote.
  • Line-level diff + git merge-file; both sides' disjoint edits are kept.
  • Overlap / non-UTF-8 / Git unavailable ⇒ TX_CONFLICT with zero bytes written.
  • If verify fails after a merge, rollback restores the external current content, not the old base.
  • tx-session 24 checks (CLI / MCP / merge); local full gate 90 suites exit 0; macOS 15/26 green.
npm i -g aura-basetools@0.18.0

aura-basetools v0.17.0

Choose a tag to compare

@Ck-epsilon Ck-epsilon released this 24 Oct 08:58

aura-basetools v0.17.0 — MCP transactions / MCP 事务面

中文

0.17.0 把 0.16.0 的跨调用事务接到 MCP:

  • 新增 aura_basetools_tx:action = begin / commit / rollback / status。
  • aura_basetools_edit / aura_basetools_write 新增 transaction:把本次修改追加到 tx begin 返回的事务。
  • commit 前 afterVersion 校验(TX_STALE)、可选 verify、失败整事务回滚;与 CLI 共用同一份 transaction-store。
  • tx-session 增 MCP 段:18/18。
  • 本地全量闸 90 套件 exit 0;macOS 15/26 full-gate job 绿。

English

0.17.0 exposes the 0.16.0 cross-call transaction over MCP:

  • New aura_basetools_tx: action = begin / commit / rollback / status.
  • aura_basetools_edit / aura_basetools_write accept transaction: append this change to the id returned by tx begin.
  • Commit checks afterVersion (TX_STALE), optional verify, whole-transaction rollback on failure; same transaction-store as the CLI.
  • tx-session gains an MCP section: 18/18.
  • Local full gate: 90 suites, exit 0; macOS 15/26 full-gate jobs green.
npm i -g aura-basetools@0.17.0