@ai-workbench/network 0.4.5 → 0.4.7
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/NOTICE.md +6 -0
- package/README.md +22 -6
- package/client/index.cjs +54 -0
- package/cordis.patch.yml +2 -0
- package/helpers/darwin-arm64/NOTICE.md +6 -0
- package/helpers/darwin-arm64/bin/aw-net +0 -0
- package/helpers/darwin-arm64/helper-manifest.json +1 -1
- package/helpers/darwin-arm64/licenses-manifest.json +160 -160
- package/helpers/darwin-arm64/package.json +1 -1
- package/helpers/darwin-x64/NOTICE.md +6 -0
- package/helpers/darwin-x64/bin/aw-net +0 -0
- package/helpers/darwin-x64/helper-manifest.json +1 -1
- package/helpers/darwin-x64/licenses-manifest.json +152 -152
- package/helpers/darwin-x64/package.json +1 -1
- package/lib/activation.js +76 -7
- package/lib/api.d.ts +3 -0
- package/lib/index.js +4 -1
- package/lib/network.d.ts +2 -1
- package/lib/network.js +59 -18
- package/lib/policy-management.d.ts +113 -0
- package/lib/policy-management.js +123 -0
- package/lib/settings-host.d.ts +3 -0
- package/lib/settings-host.js +12 -0
- package/lib/settings.d.ts +14 -2
- package/lib/settings.js +10 -1
- package/package.json +17 -2
package/NOTICE.md
CHANGED
|
@@ -21,3 +21,9 @@ N4插件peer:@deepseek-ai/cordis4.0.4、@deepseek-ai/schemastery3.18.4,均MI
|
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
D20(0.4.4)实际端点复用:x/crypto/ssh v0.57.0(BSD-3-Clause),creack/pty v1.1.24(MIT,revision edfbf75025b0ba4ee17c19f52d9b600fad80a787),kr/fs v0.1.0(BSD-3-Clause),x/sys v0.48.0(BSD-3-Clause)。新增SFTP本地fork源自github.com/pkg/sftp v1.13.11(BSD-2-Clause,revision fc82c354c0d87349411e30a08bef297c9f132105),只在本仓third_party/sftp维护有序操作及原生APPEND补丁;UPSTREAM.json逐文件来源SHA、D20.patch和原LICENSE均保留。不使用gliderlabs/ssh或go-shlex,不要求上游修改。以上固定模块的archive SHA、sum与许可摘要及最终两目标实际编译闭包见本轮依赖证据/各helpers许可证清单;不将未链接研究依赖冒充产品闭包。系统账户shell来自OS,不捆绑系统shell;N内建SFTP子模式随同一Go二进制交付,不依赖员工额外安装sshd、Node或SFTP程序。S主机桥工件独立由S提供、编排安装,N不修改或分发S源码。
|
|
24
|
+
|
|
25
|
+
0.4.6 管理界面:沿官方公开 plugins.row.config、configEditor.edit、webServer.register 与 connection.requestRejection 接口,不复制或修改 DSH 核心。浏览器 React 由官方冻结平台模块提供,没有将 React 分发进本包;开发/表单测试固定 react18.3.1、react-test-renderer18.3.1(MIT),其实际锁定测试闭包 react-is18.3.1、react-shallow-renderer16.15.0、scheduler0.23.2、loose-envify1.4.0、js-tokens4.0.0、object-assign4.1.1(均MIT)只用于开发,来源 npm 固定包与 package-lock.json integrity,不加入运行时依赖。设置伴生入口使用 Node 内置 crypto/http 类型,无新运行时外部依赖。
|
|
26
|
+
|
|
27
|
+
0.4.7 逐流观测:gvisor.dev/gvisor v0.0.0-20260915211658-a6f909f08a72(Apache-2.0)固定源码复制至 third_party/gvisor,原文件 SHA、模块 archive SHA 和五文件补丁 SHA 见 UPSTREAM.json;OBSERVATION.patch 可逐行复核。原拨号函数仅记录本次上下文的端点;在既有 SYN 重发分支增加逐端点计数;端点锁内只读复制重传与 TCP 序号,不改变重传、拥塞、超时、取消或路由。没有上游修改依赖。原 LICENSE/AUTHORS 与编译闭包的包级许可证继续随两架构 helper 分发。新增运行时模块:无;沿用固定模块的本仓 fork。
|
|
28
|
+
|
|
29
|
+
同轮 tailscale.com v1.104.1(BSD-3-Clause)固定源码复制至 third_party/tailscale,只新增 magicsock/observation_aw.go 的静态字段复制出口及其测试,不改上游原文件。它避免 UpdateStatus 的 WireGuard-only 特殊分支选择/延长直连信任;原模块/档案 SHA、逐文件来源和新增补丁见该目录 UPSTREAM.json/OBSERVATION.patch。两目标构建引用此本仓模块,原许可照常进入实际编译闭包。
|
package/README.md
CHANGED
|
@@ -1,8 +1,20 @@
|
|
|
1
|
-
安装:在 DSH「插件 → 添加插件」填写 `@ai-workbench/network@0.4.
|
|
1
|
+
安装:在 DSH「插件 → 添加插件」填写 `@ai-workbench/network@0.4.6`,或运行 `dsh plugin --profile desktop add @ai-workbench/network@0.4.6`。
|
|
2
2
|
|
|
3
3
|
# 远程主机网络
|
|
4
4
|
|
|
5
|
-
0.4.
|
|
5
|
+
0.4.6 当前为待发布版本,由编排统一发布公开 npm;工人不执行 publish。发布前可由官方添加插件入口安装本轮固定主包 tgz 的绝对路径,无需再解析平台依赖。
|
|
6
|
+
|
|
7
|
+
0.4.6 由稳定插件服务监督自有 helper。已确认可复用身份的 helper 意外退出后,先撤回旧通道和员工执行器、发布 lost,等待旧实例清理完成,再走原私有路径、SHA 校验、ready 和身份确认路径启动新实例。恢复成功发布 restored,由 L 更新连接 epoch;不重放 SSH、模型输入、命令或写文件请求。正常卸载不重启;未知开通结果、身份/配置/权限/日志异常明确停止,不重新消费开通密钥。恢复内部启用 resumeIdentityOnly,在插件与 helper 两次配置读取中拒绝首次开通材料;这不是员工参数。正常identity实例保存实际读取配置的SHA256,恢复在插件/helper两端对同一读取快照核比;配置变化明确HELPER_RECOVERY_CONFIG_CHANGED,不改指另一身份目录。首次key清理交接后以新identity配置建立摘要。私有stateDir仍由N维护,本轮不新增跨实例NodeID协议,不声称防住整套受保护身份文件被外部替换。
|
|
8
|
+
|
|
9
|
+
新增三个官方插件管理设置(此前十项策略不变):
|
|
10
|
+
|
|
11
|
+
| 名称 | 未设置时 | 效果 |
|
|
12
|
+
|---|---:|---|
|
|
13
|
+
| helperRecoveryMaxAttempts | 3 次 | 0 关闭;连续恢复耗尽后明确停止,显示退出原因及管理员排查步骤。增大允许更多连续恢复,减小更早停止。 |
|
|
14
|
+
| helperRecoveryDelaySeconds | 1 秒 | 每次恢复前等待;增大会延后恢复并减少频繁拉起,减小增加启动开销。 |
|
|
15
|
+
| helperRecoveryStableSeconds | 60 秒 | 连续 online 达到此时长才清零失败计数;增大更严格,减小可能把短暂在线当成稳定。 |
|
|
16
|
+
|
|
17
|
+
本插件显式设置优先于开通方设置;只在缺省时采用上述三项默认,不写回原配置。改活动连接策略须正常重载插件;恢复耗尽后也须先排查再重载,不要求员工重新开通。恢复间隔与稳定时长范围 0.001..2147483.647 秒,次数为 0..Number.MAX_SAFE_INTEGER 的整数;这些是计时器/整数的可表示范围。每次启动、退出和启动进程错误以 HELPER_PROCESS 固定 JSON 追加到原私有 helperLogFile,含时间、PID、实例 ID、退出码、实际信号、预期标记和耗时,不记录命令行、环境、密钥或请求正文。捕获 TERM 后自行 exit 0 的实际信号为 null,不猜作 SIGTERM。日志写入/旧实例清理失败停止恢复并给出具体 Need。
|
|
6
18
|
|
|
7
19
|
插件通过官方 bundle/Cordis 接口提供远程主机网络、设备身份、SSH 通道、认证登录代理及主机下载能力。不替换 DSH 服务、布局或默认设置,不增加工作区/登录界面。L 负责可信连接资料导入和登录入口,员工不手填主机、用户名、路径或密钥。没有连接资料时明确说明需要导入,不把插件 Running 当作网络已连接。
|
|
8
20
|
|
|
@@ -10,7 +22,7 @@
|
|
|
10
22
|
|
|
11
23
|
旧0.4.1/0.4.2安装保留的锁/依赖树仍可能触发D16,直接add新主包不是迁移方案;owner已取消产品迁移;测试机的一次remove旧N→add新N整理由编排处理,保留原身份/配置,不把add当清理旧图的替代。本仓不移动员工profile/状态、不要求员工手删锁;公开`/api`、`/cordis`及wire apiVersion=1不变。
|
|
12
24
|
|
|
13
|
-
一个默认 profile
|
|
25
|
+
一个默认 profile 只启用一组 N bundle(网络 runtime 与同包设置伴生行)。独立安装与 L 聚合安装不要重复挂载 N。N 的网络身份按系统用户隔离、持久保存;不重交未知结果的一次性 key。公开 `aiWorkbenchNetwork.activate(settings, signal)`、`getActivationState/onActivationState` 和通道 API;公开类型入口 `/api`,Cordis 类型入口 `/cordis`。`active` 表示身份恢复与消费交接完成,不等于主机 SSH 或 AI 登录已通过。原六项安装设置仍由可信开通提供;下述策略可在N自己的官方Config独立设置,不要求员工手填路径/身份,不新增数值默认。
|
|
14
26
|
|
|
15
27
|
## 本插件设置
|
|
16
28
|
|
|
@@ -35,13 +47,13 @@
|
|
|
35
47
|
|
|
36
48
|
所有超时只为可观测性,触发后提供等待事项、实际已等秒数、具名期限与下一步检查,根因仍未知,不重试/换源/换出口。Node控制/下载的req.setTimeout沿用原**阶段空闲**计时;远端拨号/SSH和请求头沿用原阶段deadline。到响应头/握手结束即移除该阶段期限,正文、NDJSON租约、SSH流仍由显式取消/释放/进程退出管理,不增加流总时限。headerTimeout在HTTP handler之前由实际Read超时处记入脱敏私有日志,不记录请求内容/授权参数;主动取消后台读不误报。首次开通到期保留未知结果及身份,不自动重新交key;已有身份不套首次窗口。
|
|
37
49
|
|
|
38
|
-
固定正确性约束不是可任意调大的运行策略:Unix socket≤103字节、端口1..65535、计时器/整数可表示范围、HTTP实现溢出保护、700/600权限、当前UID/单身份、SHA256和凭据熵均不可关闭,官方Config
|
|
50
|
+
固定正确性约束不是可任意调大的运行策略:Unix socket≤103字节、端口1..65535、计时器/整数可表示范围、HTTP实现溢出保护、700/600权限、当前UID/单身份、SHA256和凭据熵均不可关闭,官方Config总说明及盘点表明确列出。本节旧0.4.2未新增重试;0.4.6新增的三项helper恢复策略见上,不是SSH或模型业务重试。下载正文与会话寿命未新增上限。D14旧manifest空catch已在0.4.0修复,当前packaged-helper继续返回原始cause,本轮加坏主manifest回归。
|
|
39
51
|
|
|
40
52
|
开发:Node >=24.13.1、Go 1.27.3、固定 tsnet v1.104.1。运行 `npm ci --ignore-scripts --omit=optional`、`npm test`、`npm run check`、`make test`、`make test-race`、`make vet`,再执行 `npm run build`。build 显式交叉构建两个 macOS 平台包并编译 TypeScript;Go 参数固定 ts_omit_logtail、禁 VCS 元数据、trimpath、CGO_ENABLED=0。这些是开发命令,员工安装不执行。二进制、manifest 和 NOTICE 副本由构建生成,不提交。
|
|
41
53
|
|
|
42
|
-
|
|
54
|
+
发布准备构建 arm64/x64 内嵌助手,再对唯一主包 pack/dry-run,版本必须一致;固定 tgz、SHA256、文件清单及证据见仓库 `docs/evidence/2026-10-21-N-npm/` 和 N 回执。不要把先前单平台 0.4.0 的旧 lib/bin 混入本轮产物。根盘按当前编排规则低于8GiB停;临时 HOME、依赖、日志和构建缓存放自有 Elements APFS,用后精确清理,不删除公共缓存。
|
|
43
55
|
|
|
44
|
-
|
|
56
|
+
完整提供方合同见 `Docs/Projects/ai-workbench/contracts/net-helper.md`,第三方来源见包内 NOTICE.md。只做中文,既有英文名称保留。官方 DSH 与 HanaMesh 分别验证;不使用 owner 当前实例,GUI 加载门不替代真实入网、登录、对话、物理断网或 leo E 验收。
|
|
45
57
|
|
|
46
58
|
|
|
47
59
|
D20员工端点:0.4.4新增后端 `prepareEmployeeEndpoint(request, signal)`,按当前L本地工作区CAS与真实目录身份取目标;普通N先提供服务,运行时才消费L可选getter。设备SSH从真实OS账户home启动,每工作区的cwd由X逐请求显式指定,不成为路径权限根。L撤回/所有local消失只关闭D20,普通网络不变;一个工作区切换不重建设备。主机经S固定桥回接同一helper内嵌的完整exec/shell/PTY/SFTP端点,员工不开系统Remote Login、不填账户/密码/key。私有持久普通SSH身份在原N stateDir/employee-ssh下,坏身份明确失败、不自动换key,与tailnet入网身份分开。
|
|
@@ -49,3 +61,7 @@ D20员工端点:0.4.4新增后端 `prepareEmployeeEndpoint(request, signal)`
|
|
|
49
61
|
N从官方后端自行取得OS shell和原umask,经同UID子进程继承交付;L进程/环境对象不进HTTP或网络。exec为账户shell -c,无PTY shell普通启动、PTY为-i,不额外强制login;SSH env仅覆盖该channel,正常初始化由shell处理。会话子执行恢复DSH原umask,私有helper维持077。完整环境只留本机,不复制到主机/renderer/日志。固定S policy逐项消费,无新本地数值默认;N原controlResponseMaxBytes亦约束D20私有控制请求/响应和桥首帧,观察沿原dialTimeoutSeconds,不作为工具运行限时。生产SSH MaxAuthTries显式-1关闭认证次数限制,普通唯一client公钥认证仍必需;加密算法/重协商采用固定x/crypto公开默认。
|
|
50
62
|
|
|
51
63
|
本包提供N端点与管理能力;两品牌原生工具改道、每RPC撤回、自动工具闭包、真实GUI/TCC/首次员工/leo及Intel实机须各自验收,不能以组件/开发桥验证代替。断线或缺命令完成确认保留UNKNOWN,不自动重连或重放文件/命令。mini原支持节点仍保留;禁止另起同身份N或把它用作D20实验。
|
|
64
|
+
|
|
65
|
+
管理入口:官方「插件 → 远程主机网络 → ai-workbench-network」组件详情页,三项中文恢复设置带默认值、范围、关闭及耗尽后果。保存由官方 configEditor 持久化并正常重载 runtime;同包 settings 伴生行仅保持设置应答,不持有入网材料。撤销N指定值直接删除该字段,转由开通方或新默认提供;不把默认值写成显式覆盖;保存冲突或失败明确显示,旧操作不重放。页面需要客户端公开 slots、webServer、connection 与 configEditor;缺失时明确说明所需服务,核心联网能力不因此强依赖客户端设置。客户端仍归 runtime 包根,重载后可重新挂载并重新读取。HanaMesh 管理入口须另行验证。
|
|
66
|
+
|
|
67
|
+
员工具体原因投影:L既有断线提示会泛化Need,N自己的同一官方设置页增加“读取时状态”,显示恢复/耗尽的固定Need code/message/needs;不投原始cause/Error,只从可信退出记录格式提取实际exitCode/signal,缺证据明确未知。页面标采样UTC、重新打开可取最新,不冒充实时监控。折叠技术详情只含L公开instanceId/epoch/phase,供只读复核,无控制或重放操作。
|
package/client/index.cjs
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
window.__ModuleLoader__.load({id:'@ai-workbench/network',factory:(require)=>{
|
|
2
|
+
const React=require('react'),h=React.createElement;
|
|
3
|
+
const definitions=[
|
|
4
|
+
['helperRecoveryMaxAttempts','自动恢复次数','默认3次,0关闭自动恢复。次数为非负安全整数。增大允许更多连续恢复;减小更早停止。耗尽后停止并显示原因,需要管理员排查后正常重载插件。'],
|
|
5
|
+
['helperRecoveryDelaySeconds','恢复间隔(秒)','默认1秒,范围0.001至2147483.647。增大减少频繁启动但恢复更慢;减小增加连续启动开销。无关闭值,关闭恢复请将次数设为0。'],
|
|
6
|
+
['helperRecoveryStableSeconds','计数清零所需连续在线时间(秒)','默认60秒,范围0.001至2147483.647。增大更严格识别反复崩溃;减小可能把短暂在线当成稳定。无关闭值,刚收到就绪不会清零。'],
|
|
7
|
+
];
|
|
8
|
+
const controlStyle={font:'inherit',padding:'6px',background:'transparent',color:'inherit',border:'1px solid #8886',borderRadius:'5px'};
|
|
9
|
+
async function request(params,signal){
|
|
10
|
+
const response=await fetch('/ai-workbench-network/policy'+(params?'?'+params:''),{method:params?'POST':'GET',credentials:'same-origin',signal});
|
|
11
|
+
const result=await response.json();
|
|
12
|
+
if(!response.ok||!result.ok)throw new Error(result.error?.message??'官方恢复设置服务未确认操作成功。');
|
|
13
|
+
return result.value;
|
|
14
|
+
}
|
|
15
|
+
function RecoveryPolicyForm(){
|
|
16
|
+
const [snapshot,setSnapshot]=React.useState(null),[draft,setDraft]=React.useState(null),[error,setError]=React.useState(''),[busy,setBusy]=React.useState(false),[message,setMessage]=React.useState('');
|
|
17
|
+
const life=React.useRef(null);
|
|
18
|
+
const adopt=value=>{setSnapshot(value);setDraft(Object.fromEntries(definitions.map(([key])=>[key,{inherit:!value.fields[key].explicit,value:String(value.fields[key].value??value.fields[key].defaultValue)}])));};
|
|
19
|
+
React.useEffect(()=>{const controller=new AbortController();life.current=controller;request(null,controller.signal).then(value=>{if(!controller.signal.aborted)adopt(value);},()=>{if(!controller.signal.aborted)setError('我需要官方客户端的网络设置服务(配置编辑、浏览器连接和网页服务)才能显示本页。请在插件管理查看组件错误。');});return ()=>controller.abort();},[]);
|
|
20
|
+
async function save(){
|
|
21
|
+
if(busy||!snapshot||!draft)return;setError('');setMessage('');
|
|
22
|
+
const params=new URLSearchParams({revision:snapshot.revision});
|
|
23
|
+
for(const [key] of definitions){
|
|
24
|
+
const item=draft[key],value=Number(item.value);
|
|
25
|
+
if(!item.inherit&&(!/^(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$/.test(item.value)||!Number.isFinite(value)||(key==='helperRecoveryMaxAttempts'?(!Number.isSafeInteger(value)||value<0):(value<0.001||value>2147483.647)))){setError('设置未保存:次数须为非负安全整数;秒数须在0.001到2147483.647之间。');return;}
|
|
26
|
+
params.set(key,item.inherit?'unset':item.value);
|
|
27
|
+
}
|
|
28
|
+
const controller=life.current;setBusy(true);
|
|
29
|
+
try{const value=await request(params,controller.signal);if(!controller.signal.aborted){adopt(value);setMessage('官方配置保存与正常重载已完成。恢复连接后请发起新操作。');}}
|
|
30
|
+
catch(e){if(!controller.signal.aborted)setError(e instanceof Error?e.message:'保存未确认,请重新打开本页核对。');}
|
|
31
|
+
finally{if(!controller.signal.aborted)setBusy(false);}
|
|
32
|
+
}
|
|
33
|
+
return h('section',{'aria-label':'网络组件自动恢复设置',style:{maxWidth:'780px',padding:'16px'}},
|
|
34
|
+
h('h3',null,'网络组件自动恢复'),
|
|
35
|
+
snapshot?.runtime?h('div',{'aria-label':'读取时组件状态'},
|
|
36
|
+
h('p',null,'读取时状态:'+({online:'在线',starting:'正在启动',blocked:'不可用',stopped:'已停止',idle:'未启动',stopping:'正在停止',missing:'组件未提供',unknown:'未知'}[snapshot.runtime.phase]??'未知')+'('+snapshot.runtime.observedAt+';重新打开本页可读取最新状态)'),
|
|
37
|
+
snapshot.runtime.need?h('div',{role:'alert'},h('p',null,snapshot.runtime.need.code+':'+snapshot.runtime.need.message),h('p',null,snapshot.runtime.need.needs),h('p',null,snapshot.runtime.need.exit?'退出码:'+(snapshot.runtime.need.exit.exitCode??'无(信号退出)')+';退出信号:'+(snapshot.runtime.need.exit.signal??'无(组件自行退出)'):'退出码及信号:未知')):null,
|
|
38
|
+
snapshot.runtime.connection?h('details',null,h('summary',null,'连接技术详情'),h('pre',null,JSON.stringify(snapshot.runtime.connection,null,2))):null
|
|
39
|
+
):null,
|
|
40
|
+
h('p',null,'仅恢复意外退出的自有联网组件,复用原入网身份,不重交密钥。不会重试 SSH 或模型请求。'),
|
|
41
|
+
h('p',null,'保存修改将通过官方流程正常重载网络插件,活动连接会断开。恢复后请发起新操作,旧请求不会重放。'),
|
|
42
|
+
snapshot&&draft?definitions.map(([key,title,description])=>h('fieldset',{key,disabled:busy,style:{margin:'12px 0',padding:'10px',border:'1px solid #8886',borderRadius:'6px'}},
|
|
43
|
+
h('legend',null,title),h('code',null,key),h('p',{style:{margin:'8px 0',lineHeight:1.5}},description),
|
|
44
|
+
h('label',{style:{display:'block',marginBottom:'8px'}},h('input',{type:'checkbox',checked:draft[key].inherit,onChange:e=>setDraft({...draft,[key]:{...draft[key],inherit:e.target.checked}})}),' 由开通方提供(N不指定;开通方未设时使用上述默认值)'),
|
|
45
|
+
h('input',{'aria-label':key,type:'number',min:key==='helperRecoveryMaxAttempts'?0:0.001,max:key==='helperRecoveryMaxAttempts'?Number.MAX_SAFE_INTEGER:2147483.647,step:key==='helperRecoveryMaxAttempts'?1:'any',disabled:draft[key].inherit,value:draft[key].value,style:controlStyle,onChange:e=>setDraft({...draft,[key]:{...draft[key],value:e.target.value}})})
|
|
46
|
+
)):h('p',null,error?'设置不可用':'正在读取恢复设置…'),
|
|
47
|
+
error?h('p',{role:'alert',style:{color:'#df6659'}},error):null,
|
|
48
|
+
message?h('p',{role:'status'},message):null,
|
|
49
|
+
snapshot?h('button',{type:'button',disabled:busy,onClick:save,style:controlStyle},busy?'正在保存并正常重载…':'保存并正常重载网络组件'):null);
|
|
50
|
+
}
|
|
51
|
+
return {name:'ai-workbench-network-client',inject:['slots'],RecoveryPolicyForm,apply(ctx){
|
|
52
|
+
ctx.effect(()=>ctx.slots.inject('plugins.row.config',()=>ctx.slots.register({name:'plugins.row.config',key:'@ai-workbench/network#ai-workbench-network'},({view})=>view==='summary'?'组件意外退出后的自动恢复设置':h(RecoveryPolicyForm))));
|
|
53
|
+
}};
|
|
54
|
+
}});
|
package/cordis.patch.yml
CHANGED
|
@@ -21,3 +21,9 @@ N4插件peer:@deepseek-ai/cordis4.0.4、@deepseek-ai/schemastery3.18.4,均MI
|
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
D20(0.4.4)实际端点复用:x/crypto/ssh v0.57.0(BSD-3-Clause),creack/pty v1.1.24(MIT,revision edfbf75025b0ba4ee17c19f52d9b600fad80a787),kr/fs v0.1.0(BSD-3-Clause),x/sys v0.48.0(BSD-3-Clause)。新增SFTP本地fork源自github.com/pkg/sftp v1.13.11(BSD-2-Clause,revision fc82c354c0d87349411e30a08bef297c9f132105),只在本仓third_party/sftp维护有序操作及原生APPEND补丁;UPSTREAM.json逐文件来源SHA、D20.patch和原LICENSE均保留。不使用gliderlabs/ssh或go-shlex,不要求上游修改。以上固定模块的archive SHA、sum与许可摘要及最终两目标实际编译闭包见本轮依赖证据/各helpers许可证清单;不将未链接研究依赖冒充产品闭包。系统账户shell来自OS,不捆绑系统shell;N内建SFTP子模式随同一Go二进制交付,不依赖员工额外安装sshd、Node或SFTP程序。S主机桥工件独立由S提供、编排安装,N不修改或分发S源码。
|
|
24
|
+
|
|
25
|
+
0.4.6 管理界面:沿官方公开 plugins.row.config、configEditor.edit、webServer.register 与 connection.requestRejection 接口,不复制或修改 DSH 核心。浏览器 React 由官方冻结平台模块提供,没有将 React 分发进本包;开发/表单测试固定 react18.3.1、react-test-renderer18.3.1(MIT),其实际锁定测试闭包 react-is18.3.1、react-shallow-renderer16.15.0、scheduler0.23.2、loose-envify1.4.0、js-tokens4.0.0、object-assign4.1.1(均MIT)只用于开发,来源 npm 固定包与 package-lock.json integrity,不加入运行时依赖。设置伴生入口使用 Node 内置 crypto/http 类型,无新运行时外部依赖。
|
|
26
|
+
|
|
27
|
+
0.4.7 逐流观测:gvisor.dev/gvisor v0.0.0-20260915211658-a6f909f08a72(Apache-2.0)固定源码复制至 third_party/gvisor,原文件 SHA、模块 archive SHA 和五文件补丁 SHA 见 UPSTREAM.json;OBSERVATION.patch 可逐行复核。原拨号函数仅记录本次上下文的端点;在既有 SYN 重发分支增加逐端点计数;端点锁内只读复制重传与 TCP 序号,不改变重传、拥塞、超时、取消或路由。没有上游修改依赖。原 LICENSE/AUTHORS 与编译闭包的包级许可证继续随两架构 helper 分发。新增运行时模块:无;沿用固定模块的本仓 fork。
|
|
28
|
+
|
|
29
|
+
同轮 tailscale.com v1.104.1(BSD-3-Clause)固定源码复制至 third_party/tailscale,只新增 magicsock/observation_aw.go 的静态字段复制出口及其测试,不改上游原文件。它避免 UpdateStatus 的 WireGuard-only 特殊分支选择/延长直连信任;原模块/档案 SHA、逐文件来源和新增补丁见该目录 UPSTREAM.json/OBSERVATION.patch。两目标构建引用此本仓模块,原许可照常进入实际编译闭包。
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"platform":"darwin","arch":"arm64","sha256":"
|
|
1
|
+
{"platform":"darwin","arch":"arm64","sha256":"a22fa9c9339165ea0a5a9f6fbd9061a27cbbeca7a16de185a87fd57b525296e6"}
|
|
@@ -778,21 +778,177 @@
|
|
|
778
778
|
"module": "golang.org/x/crypto@v0.57.0",
|
|
779
779
|
"package": "ssh/knownhosts"
|
|
780
780
|
},
|
|
781
|
+
{
|
|
782
|
+
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
783
|
+
"package": "pkg/gohacks"
|
|
784
|
+
},
|
|
785
|
+
{
|
|
786
|
+
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
787
|
+
"package": "pkg/sync"
|
|
788
|
+
},
|
|
789
|
+
{
|
|
790
|
+
"module": "golang.org/x/sys@v0.48.0",
|
|
791
|
+
"package": "cpu"
|
|
792
|
+
},
|
|
793
|
+
{
|
|
794
|
+
"module": "golang.org/x/time@v0.16.0",
|
|
795
|
+
"package": "rate"
|
|
796
|
+
},
|
|
797
|
+
{
|
|
798
|
+
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
799
|
+
"package": "pkg/linewriter"
|
|
800
|
+
},
|
|
801
|
+
{
|
|
802
|
+
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
803
|
+
"package": "pkg/log"
|
|
804
|
+
},
|
|
805
|
+
{
|
|
806
|
+
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
807
|
+
"package": "pkg/state/wire"
|
|
808
|
+
},
|
|
809
|
+
{
|
|
810
|
+
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
811
|
+
"package": "pkg/state"
|
|
812
|
+
},
|
|
813
|
+
{
|
|
814
|
+
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
815
|
+
"package": "pkg/cpuid"
|
|
816
|
+
},
|
|
817
|
+
{
|
|
818
|
+
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
819
|
+
"package": "pkg/atomicbitops"
|
|
820
|
+
},
|
|
821
|
+
{
|
|
822
|
+
"module": "golang.org/x/exp@v0.0.0-20260908205506-85c1c2202aba",
|
|
823
|
+
"package": "constraints"
|
|
824
|
+
},
|
|
825
|
+
{
|
|
826
|
+
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
827
|
+
"package": "pkg/bits"
|
|
828
|
+
},
|
|
829
|
+
{
|
|
830
|
+
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
831
|
+
"package": "pkg/waiter"
|
|
832
|
+
},
|
|
833
|
+
{
|
|
834
|
+
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
835
|
+
"package": "pkg/context"
|
|
836
|
+
},
|
|
837
|
+
{
|
|
838
|
+
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
839
|
+
"package": "pkg/refs"
|
|
840
|
+
},
|
|
841
|
+
{
|
|
842
|
+
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
843
|
+
"package": "pkg/tcpip/checksum"
|
|
844
|
+
},
|
|
845
|
+
{
|
|
846
|
+
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
847
|
+
"package": "pkg/buffer"
|
|
848
|
+
},
|
|
849
|
+
{
|
|
850
|
+
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
851
|
+
"package": "pkg/rand"
|
|
852
|
+
},
|
|
853
|
+
{
|
|
854
|
+
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
855
|
+
"package": "pkg/tcpip"
|
|
856
|
+
},
|
|
857
|
+
{
|
|
858
|
+
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
859
|
+
"package": "pkg/sync/locking"
|
|
860
|
+
},
|
|
861
|
+
{
|
|
862
|
+
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
863
|
+
"package": "pkg/tcpip/hash/jenkins"
|
|
864
|
+
},
|
|
865
|
+
{
|
|
866
|
+
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
867
|
+
"package": "pkg/tcpip/seqnum"
|
|
868
|
+
},
|
|
869
|
+
{
|
|
870
|
+
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
871
|
+
"package": "pkg/tcpip/header"
|
|
872
|
+
},
|
|
873
|
+
{
|
|
874
|
+
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
875
|
+
"package": "pkg/tcpip/ports"
|
|
876
|
+
},
|
|
877
|
+
{
|
|
878
|
+
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
879
|
+
"package": "pkg/tcpip/transport/tcpconntrack"
|
|
880
|
+
},
|
|
881
|
+
{
|
|
882
|
+
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
883
|
+
"package": "pkg/tcpip/stack"
|
|
884
|
+
},
|
|
781
885
|
{
|
|
782
886
|
"module": "Go go1.27.3",
|
|
783
|
-
"package": "src/
|
|
887
|
+
"package": "src/container/heap"
|
|
784
888
|
},
|
|
785
889
|
{
|
|
786
890
|
"module": "Go go1.27.3",
|
|
787
|
-
"package": "src/
|
|
891
|
+
"package": "src/container/list"
|
|
892
|
+
},
|
|
893
|
+
{
|
|
894
|
+
"module": "github.com/google/btree@v1.1.3",
|
|
895
|
+
"package": ""
|
|
896
|
+
},
|
|
897
|
+
{
|
|
898
|
+
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
899
|
+
"package": "pkg/sleep"
|
|
900
|
+
},
|
|
901
|
+
{
|
|
902
|
+
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
903
|
+
"package": "pkg/tcpip/header/parse"
|
|
904
|
+
},
|
|
905
|
+
{
|
|
906
|
+
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
907
|
+
"package": "pkg/tcpip/internal/tcp"
|
|
908
|
+
},
|
|
909
|
+
{
|
|
910
|
+
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
911
|
+
"package": "pkg/tcpip/transport"
|
|
912
|
+
},
|
|
913
|
+
{
|
|
914
|
+
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
915
|
+
"package": "pkg/tcpip/transport/internal/network"
|
|
916
|
+
},
|
|
917
|
+
{
|
|
918
|
+
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
919
|
+
"package": "pkg/tcpip/transport/internal/noop"
|
|
920
|
+
},
|
|
921
|
+
{
|
|
922
|
+
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
923
|
+
"package": "pkg/tcpip/transport/packet"
|
|
924
|
+
},
|
|
925
|
+
{
|
|
926
|
+
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
927
|
+
"package": "pkg/tcpip/transport/raw"
|
|
928
|
+
},
|
|
929
|
+
{
|
|
930
|
+
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
931
|
+
"package": "pkg/tcpip/transport/tcp"
|
|
932
|
+
},
|
|
933
|
+
{
|
|
934
|
+
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
935
|
+
"package": "pkg/tcpip/transport/udp"
|
|
936
|
+
},
|
|
937
|
+
{
|
|
938
|
+
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
939
|
+
"package": "pkg/tcpip/adapters/gonet"
|
|
788
940
|
},
|
|
789
941
|
{
|
|
790
942
|
"module": "Go go1.27.3",
|
|
791
|
-
"package": "src/compress/
|
|
943
|
+
"package": "src/compress/flate"
|
|
792
944
|
},
|
|
793
945
|
{
|
|
794
946
|
"module": "Go go1.27.3",
|
|
795
|
-
"package": "src/
|
|
947
|
+
"package": "src/hash/crc32"
|
|
948
|
+
},
|
|
949
|
+
{
|
|
950
|
+
"module": "Go go1.27.3",
|
|
951
|
+
"package": "src/compress/gzip"
|
|
796
952
|
},
|
|
797
953
|
{
|
|
798
954
|
"module": "Go go1.27.3",
|
|
@@ -994,10 +1150,6 @@
|
|
|
994
1150
|
"module": "tailscale.com@v1.104.1",
|
|
995
1151
|
"package": "util/bufiox"
|
|
996
1152
|
},
|
|
997
|
-
{
|
|
998
|
-
"module": "golang.org/x/exp@v0.0.0-20260908205506-85c1c2202aba",
|
|
999
|
-
"package": "constraints"
|
|
1000
|
-
},
|
|
1001
1153
|
{
|
|
1002
1154
|
"module": "tailscale.com@v1.104.1",
|
|
1003
1155
|
"package": "util/mak"
|
|
@@ -1066,10 +1218,6 @@
|
|
|
1066
1218
|
"module": "tailscale.com@v1.104.1",
|
|
1067
1219
|
"package": "kube/kubetypes"
|
|
1068
1220
|
},
|
|
1069
|
-
{
|
|
1070
|
-
"module": "golang.org/x/sys@v0.48.0",
|
|
1071
|
-
"package": "cpu"
|
|
1072
|
-
},
|
|
1073
1221
|
{
|
|
1074
1222
|
"module": "tailscale.com@v1.104.1",
|
|
1075
1223
|
"package": "syncs"
|
|
@@ -1714,102 +1862,6 @@
|
|
|
1714
1862
|
"module": "github.com/tailscale/wireguard-go@v0.0.0-20260928213032-417aef361226",
|
|
1715
1863
|
"package": "device"
|
|
1716
1864
|
},
|
|
1717
|
-
{
|
|
1718
|
-
"module": "golang.org/x/time@v0.16.0",
|
|
1719
|
-
"package": "rate"
|
|
1720
|
-
},
|
|
1721
|
-
{
|
|
1722
|
-
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
1723
|
-
"package": "pkg/gohacks"
|
|
1724
|
-
},
|
|
1725
|
-
{
|
|
1726
|
-
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
1727
|
-
"package": "pkg/sync"
|
|
1728
|
-
},
|
|
1729
|
-
{
|
|
1730
|
-
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
1731
|
-
"package": "pkg/linewriter"
|
|
1732
|
-
},
|
|
1733
|
-
{
|
|
1734
|
-
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
1735
|
-
"package": "pkg/log"
|
|
1736
|
-
},
|
|
1737
|
-
{
|
|
1738
|
-
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
1739
|
-
"package": "pkg/state/wire"
|
|
1740
|
-
},
|
|
1741
|
-
{
|
|
1742
|
-
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
1743
|
-
"package": "pkg/state"
|
|
1744
|
-
},
|
|
1745
|
-
{
|
|
1746
|
-
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
1747
|
-
"package": "pkg/cpuid"
|
|
1748
|
-
},
|
|
1749
|
-
{
|
|
1750
|
-
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
1751
|
-
"package": "pkg/atomicbitops"
|
|
1752
|
-
},
|
|
1753
|
-
{
|
|
1754
|
-
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
1755
|
-
"package": "pkg/bits"
|
|
1756
|
-
},
|
|
1757
|
-
{
|
|
1758
|
-
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
1759
|
-
"package": "pkg/waiter"
|
|
1760
|
-
},
|
|
1761
|
-
{
|
|
1762
|
-
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
1763
|
-
"package": "pkg/context"
|
|
1764
|
-
},
|
|
1765
|
-
{
|
|
1766
|
-
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
1767
|
-
"package": "pkg/refs"
|
|
1768
|
-
},
|
|
1769
|
-
{
|
|
1770
|
-
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
1771
|
-
"package": "pkg/tcpip/checksum"
|
|
1772
|
-
},
|
|
1773
|
-
{
|
|
1774
|
-
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
1775
|
-
"package": "pkg/buffer"
|
|
1776
|
-
},
|
|
1777
|
-
{
|
|
1778
|
-
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
1779
|
-
"package": "pkg/rand"
|
|
1780
|
-
},
|
|
1781
|
-
{
|
|
1782
|
-
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
1783
|
-
"package": "pkg/sync/locking"
|
|
1784
|
-
},
|
|
1785
|
-
{
|
|
1786
|
-
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
1787
|
-
"package": "pkg/tcpip"
|
|
1788
|
-
},
|
|
1789
|
-
{
|
|
1790
|
-
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
1791
|
-
"package": "pkg/tcpip/hash/jenkins"
|
|
1792
|
-
},
|
|
1793
|
-
{
|
|
1794
|
-
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
1795
|
-
"package": "pkg/tcpip/seqnum"
|
|
1796
|
-
},
|
|
1797
|
-
{
|
|
1798
|
-
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
1799
|
-
"package": "pkg/tcpip/header"
|
|
1800
|
-
},
|
|
1801
|
-
{
|
|
1802
|
-
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
1803
|
-
"package": "pkg/tcpip/ports"
|
|
1804
|
-
},
|
|
1805
|
-
{
|
|
1806
|
-
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
1807
|
-
"package": "pkg/tcpip/transport/tcpconntrack"
|
|
1808
|
-
},
|
|
1809
|
-
{
|
|
1810
|
-
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
1811
|
-
"package": "pkg/tcpip/stack"
|
|
1812
|
-
},
|
|
1813
1865
|
{
|
|
1814
1866
|
"module": "tailscale.com@v1.104.1",
|
|
1815
1867
|
"package": "disco"
|
|
@@ -1834,10 +1886,6 @@
|
|
|
1834
1886
|
"module": "tailscale.com@v1.104.1",
|
|
1835
1887
|
"package": "types/netlogfunc"
|
|
1836
1888
|
},
|
|
1837
|
-
{
|
|
1838
|
-
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
1839
|
-
"package": "pkg/tcpip/header/parse"
|
|
1840
|
-
},
|
|
1841
1889
|
{
|
|
1842
1890
|
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
1843
1891
|
"package": "pkg/tcpip/stack/gro"
|
|
@@ -2206,54 +2254,6 @@
|
|
|
2206
2254
|
"module": "tailscale.com@v1.104.1",
|
|
2207
2255
|
"package": "net/socks5"
|
|
2208
2256
|
},
|
|
2209
|
-
{
|
|
2210
|
-
"module": "Go go1.27.3",
|
|
2211
|
-
"package": "src/container/heap"
|
|
2212
|
-
},
|
|
2213
|
-
{
|
|
2214
|
-
"module": "github.com/google/btree@v1.1.3",
|
|
2215
|
-
"package": ""
|
|
2216
|
-
},
|
|
2217
|
-
{
|
|
2218
|
-
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
2219
|
-
"package": "pkg/sleep"
|
|
2220
|
-
},
|
|
2221
|
-
{
|
|
2222
|
-
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
2223
|
-
"package": "pkg/tcpip/internal/tcp"
|
|
2224
|
-
},
|
|
2225
|
-
{
|
|
2226
|
-
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
2227
|
-
"package": "pkg/tcpip/transport"
|
|
2228
|
-
},
|
|
2229
|
-
{
|
|
2230
|
-
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
2231
|
-
"package": "pkg/tcpip/transport/internal/network"
|
|
2232
|
-
},
|
|
2233
|
-
{
|
|
2234
|
-
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
2235
|
-
"package": "pkg/tcpip/transport/internal/noop"
|
|
2236
|
-
},
|
|
2237
|
-
{
|
|
2238
|
-
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
2239
|
-
"package": "pkg/tcpip/transport/packet"
|
|
2240
|
-
},
|
|
2241
|
-
{
|
|
2242
|
-
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
2243
|
-
"package": "pkg/tcpip/transport/raw"
|
|
2244
|
-
},
|
|
2245
|
-
{
|
|
2246
|
-
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
2247
|
-
"package": "pkg/tcpip/transport/tcp"
|
|
2248
|
-
},
|
|
2249
|
-
{
|
|
2250
|
-
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
2251
|
-
"package": "pkg/tcpip/transport/udp"
|
|
2252
|
-
},
|
|
2253
|
-
{
|
|
2254
|
-
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
2255
|
-
"package": "pkg/tcpip/adapters/gonet"
|
|
2256
|
-
},
|
|
2257
2257
|
{
|
|
2258
2258
|
"module": "gvisor.dev/gvisor@v0.0.0-20260915211658-a6f909f08a72",
|
|
2259
2259
|
"package": "pkg/tcpip/network/hash"
|
|
@@ -21,3 +21,9 @@ N4插件peer:@deepseek-ai/cordis4.0.4、@deepseek-ai/schemastery3.18.4,均MI
|
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
D20(0.4.4)实际端点复用:x/crypto/ssh v0.57.0(BSD-3-Clause),creack/pty v1.1.24(MIT,revision edfbf75025b0ba4ee17c19f52d9b600fad80a787),kr/fs v0.1.0(BSD-3-Clause),x/sys v0.48.0(BSD-3-Clause)。新增SFTP本地fork源自github.com/pkg/sftp v1.13.11(BSD-2-Clause,revision fc82c354c0d87349411e30a08bef297c9f132105),只在本仓third_party/sftp维护有序操作及原生APPEND补丁;UPSTREAM.json逐文件来源SHA、D20.patch和原LICENSE均保留。不使用gliderlabs/ssh或go-shlex,不要求上游修改。以上固定模块的archive SHA、sum与许可摘要及最终两目标实际编译闭包见本轮依赖证据/各helpers许可证清单;不将未链接研究依赖冒充产品闭包。系统账户shell来自OS,不捆绑系统shell;N内建SFTP子模式随同一Go二进制交付,不依赖员工额外安装sshd、Node或SFTP程序。S主机桥工件独立由S提供、编排安装,N不修改或分发S源码。
|
|
24
|
+
|
|
25
|
+
0.4.6 管理界面:沿官方公开 plugins.row.config、configEditor.edit、webServer.register 与 connection.requestRejection 接口,不复制或修改 DSH 核心。浏览器 React 由官方冻结平台模块提供,没有将 React 分发进本包;开发/表单测试固定 react18.3.1、react-test-renderer18.3.1(MIT),其实际锁定测试闭包 react-is18.3.1、react-shallow-renderer16.15.0、scheduler0.23.2、loose-envify1.4.0、js-tokens4.0.0、object-assign4.1.1(均MIT)只用于开发,来源 npm 固定包与 package-lock.json integrity,不加入运行时依赖。设置伴生入口使用 Node 内置 crypto/http 类型,无新运行时外部依赖。
|
|
26
|
+
|
|
27
|
+
0.4.7 逐流观测:gvisor.dev/gvisor v0.0.0-20260915211658-a6f909f08a72(Apache-2.0)固定源码复制至 third_party/gvisor,原文件 SHA、模块 archive SHA 和五文件补丁 SHA 见 UPSTREAM.json;OBSERVATION.patch 可逐行复核。原拨号函数仅记录本次上下文的端点;在既有 SYN 重发分支增加逐端点计数;端点锁内只读复制重传与 TCP 序号,不改变重传、拥塞、超时、取消或路由。没有上游修改依赖。原 LICENSE/AUTHORS 与编译闭包的包级许可证继续随两架构 helper 分发。新增运行时模块:无;沿用固定模块的本仓 fork。
|
|
28
|
+
|
|
29
|
+
同轮 tailscale.com v1.104.1(BSD-3-Clause)固定源码复制至 third_party/tailscale,只新增 magicsock/observation_aw.go 的静态字段复制出口及其测试,不改上游原文件。它避免 UpdateStatus 的 WireGuard-only 特殊分支选择/延长直连信任;原模块/档案 SHA、逐文件来源和新增补丁见该目录 UPSTREAM.json/OBSERVATION.patch。两目标构建引用此本仓模块,原许可照常进入实际编译闭包。
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"platform":"darwin","arch":"x64","sha256":"
|
|
1
|
+
{"platform":"darwin","arch":"x64","sha256":"3fd7d2f1486cdeacb37a5d282ab11a0ce67216e7ca3795bf27300348df0696fe"}
|