@sema-agent/settings-schema 11.3.0 → 11.3.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/CHANGELOG.md +7 -0
- package/conformance/VERSION +1 -1
- package/dist/host-path.d.ts +0 -7
- package/dist/host-path.js +10 -5
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,13 @@
|
|
|
6
6
|
> `@sema-agent/registry-core`(更早还曾是 `@sema-ai/registry-core`)。本档 `0.19.0` 以下各节里的
|
|
7
7
|
> 包名是**历史记录**,如实保留不追改。
|
|
8
8
|
|
|
9
|
+
## 11.3.1 — 2026-10-12 — patch:`isAbsoluteHostPath` 认三族绝对形(posix `/…` · Windows 盘符 `X:\\…` / `X:/…` · UNC `\\\\server\\share\\…`),同一条律(零 `..` 段、零 NUL、长度上界);拒句点名三族
|
|
10
|
+
|
|
11
|
+
- **行为修复(宿主路径形判)**。`isAbsoluteHostPath` / `AbsoluteHostPath` 此前只认 `/` 开头(posix 口径),Windows 壳按 CC 同形送 `C:\…` 的任务 `cwd` / `additionalDirectories` / `skill.baseDir` 全被判「非绝对」—— 读它的 server 7.125.0 据此把 Windows 宿主的**每一条提交** 400 掉。
|
|
12
|
+
**Now.** 三族绝对形同一只判官:posix(`/` 开头)· Windows 盘符(`X:\` / `X:/`;裸 `X:` 与 `X:rel` 不绝对)· UNC(`\\server\share`;`\\server` 不够;`\\?\` 设备路径不收);三族同一条律 —— 零 `..` 段(两种分隔符都算)、零 NUL、≤ `ABSOLUTE_HOST_PATH_MAX`。只判形、不碰文件系统、不做族内归一(怎么解析归宿主那一族)。拒句改成点名三族。
|
|
13
|
+
三问 —— **谁需要**:大脑在云、手在 Windows 本机的用户(壳禁止侧补偿,路径按宿主原形送);**谁受伤**:无 —— posix 读数逐字不变;把「`C:\…` 应被拒」当事实的消费方(没有);**补偿**:无旋钮(形判不是策略)。
|
|
14
|
+
钉:`test/host-path-11.3.1.test.ts`(盘符 / UNC 真;裸盘符 / `C:rel` / 单反斜杠 / 无 share / 设备路径假;`..` / NUL / 超长跨三族同拒;zod 拒句点名三族)· `test/projects-11.3.0.test.ts` 参照式随律翻(三族)。
|
|
15
|
+
|
|
9
16
|
## 11.3.0 — 2026-10-11 — 六件 additive:运行期成员表三张(AUTONOMY_MODES / COMMAND_DECISIONS / PROMPT_SLOTS)· 项目登记扩形(goal / contextItems / archivedAt / icon / color,displayName 上界 200)+ PATCH 形 · 命令行环境错一臂(I/O 错 rc 2 一句点名路径)· 一次性迁移 SS-M7 走到 remote-exec.json · 每条自铸 custom issue 带结构化句子(QuotedIssueParams)· hookMatcherForm(minor:新导出主桶 19 / hooks 2 / remote-exec 1 / node 1 型,零删零改名)
|
|
10
17
|
|
|
11
18
|
> 本节六件,全部 additive(零删导出、零改名;minor):运行期成员表三张 · 项目登记扩形 + PATCH 形 · 命令行环境错一臂 · 一次性迁移 SS-M7 走到 `remote-exec.json` ·
|
package/conformance/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
11.3.
|
|
1
|
+
11.3.1
|
package/dist/host-path.d.ts
CHANGED
|
@@ -5,13 +5,6 @@
|
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
/** 一条主机绝对路径的长度上界(字符数)。 */
|
|
7
7
|
export declare const ABSOLUTE_HOST_PATH_MAX = 4096;
|
|
8
|
-
/**
|
|
9
|
-
* `p` 是不是一条形上合法的**主机绝对路径**:字符串、非空、≤ {@link ABSOLUTE_HOST_PATH_MAX}、不含 NUL、以 `/` 开头(posix 绝对)、没有 `..` 段
|
|
10
|
-
* (`/` 与 `\` 都算分隔符 —— `path.isAbsolute` 是语法判,`/a/../../etc` 也「绝对」,而读方 `path.resolve` 会把它解到别处;拒掉它,读到的就是写下的那一条)。
|
|
11
|
-
*
|
|
12
|
-
* posix 口径是有意的:读这些路径的主机车道今天跑 posix 树,而这一律在 posix 宿主上与 Node 的 `path.isAbsolute` 逐字同判(`C:\x`、`\\host\share`
|
|
13
|
-
* 在 posix 上不绝对)。哪天主机车道要接 win 树,换的是这一只(按树的家族判),读方跟着同一只走。
|
|
14
|
-
*/
|
|
15
8
|
export declare function isAbsoluteHostPath(p: unknown): p is string;
|
|
16
9
|
/** {@link isAbsoluteHostPath} 的 zod 座位(一条 issue,定句)。 */
|
|
17
10
|
export declare const AbsoluteHostPath: z.ZodString & z.ZodType<string, string, z.core.$ZodTypeInternals<string, string>>;
|
package/dist/host-path.js
CHANGED
|
@@ -7,16 +7,21 @@ import { buildQuotedIssue, fixed } from "./quoted-issue.js";
|
|
|
7
7
|
/** 一条主机绝对路径的长度上界(字符数)。 */
|
|
8
8
|
export const ABSOLUTE_HOST_PATH_MAX = 4096;
|
|
9
9
|
/**
|
|
10
|
-
* `p` 是不是一条形上合法的**主机绝对路径**:字符串、非空、≤ {@link ABSOLUTE_HOST_PATH_MAX}、不含 NUL
|
|
10
|
+
* `p` 是不是一条形上合法的**主机绝对路径**:字符串、非空、≤ {@link ABSOLUTE_HOST_PATH_MAX}、不含 NUL、三族绝对形之一(posix `/` 开头 · Windows 盘符 · UNC)、没有 `..` 段
|
|
11
11
|
* (`/` 与 `\` 都算分隔符 —— `path.isAbsolute` 是语法判,`/a/../../etc` 也「绝对」,而读方 `path.resolve` 会把它解到别处;拒掉它,读到的就是写下的那一条)。
|
|
12
12
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
13
|
+
* 宿主是哪一族由壳决定(大脑在云、手在本机:Windows 壳按 CC 同形送 `C:\…`),所以三族绝对形同一只判官、同一条律:
|
|
14
|
+
* posix(`/` 开头)· Windows 盘符(`X:\` / `X:/`;裸 `X:` 与 `X:rel` 不绝对)· UNC(`\\server\share`;`\\server` 不够)。
|
|
15
|
+
* 读方只拿「形合法」这一个事实,怎么解析归宿主那一族 —— 这里不碰文件系统、不做族内归一。
|
|
15
16
|
*/
|
|
17
|
+
const WIN_DRIVE_ABSOLUTE = /^[A-Za-z]:[\\/]/;
|
|
18
|
+
const WIN_UNC_ABSOLUTE = /^\\\\[^\\/?*]+[\\/][^\\/]+/;
|
|
16
19
|
export function isAbsoluteHostPath(p) {
|
|
17
|
-
return typeof p === "string" && p.length > 0 && p.length <= ABSOLUTE_HOST_PATH_MAX && !p.includes("\0") &&
|
|
20
|
+
return (typeof p === "string" && p.length > 0 && p.length <= ABSOLUTE_HOST_PATH_MAX && !p.includes("\0") &&
|
|
21
|
+
(p.startsWith("/") || WIN_DRIVE_ABSOLUTE.test(p) || WIN_UNC_ABSOLUTE.test(p)) &&
|
|
22
|
+
!p.split(/[/\\]/).includes(".."));
|
|
18
23
|
}
|
|
19
24
|
/** {@link isAbsoluteHostPath} 的 zod 座位(一条 issue,定句)。 */
|
|
20
25
|
export const AbsoluteHostPath = z
|
|
21
26
|
.string()
|
|
22
|
-
.refine(isAbsoluteHostPath, buildQuotedIssue `must be an absolute host path:
|
|
27
|
+
.refine(isAbsoluteHostPath, buildQuotedIssue `must be an absolute host path: posix ("/..."), Windows drive ("C:\\..." or "C:/...") or UNC ("\\\\server\\share\\..."), no ".." segment, no NUL, at most ${fixed(String(ABSOLUTE_HOST_PATH_MAX))} characters`);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sema-agent/settings-schema",
|
|
3
|
-
"version": "11.3.
|
|
3
|
+
"version": "11.3.1",
|
|
4
4
|
"description": "Sema settings schema — pure config contract (zod domains + effective-config + roster resolution + ref-integrity + remoteExec) shared by sema-web-admin, sema-server, and the TOC desktop/CLI. One source of truth. (Renamed at 1.0.0 from @sema-agent/registry-core — name and docs only, no behavior change; note the range moves 0.19.0 -> 1.0.0, so a dependency must become ^1.0.0. The old names @sema-agent/registry-core <=0.19.0 and @sema-ai/registry-core remain published, frozen, for migration.)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "BUSL-1.1",
|