@aikdna/kdna-web-client

中文文档
0.3.0发布于 2026/08/08Apache-2.0TypeScriptES Module零依赖构建来源已验证近 30 天下载 4185

浏览器-安全 KDNA 公用设备——文件选择,元数据检查,上传,并负载计划状态管理. 永远不要进行解密.

此软件包已被标记为弃用

Deprecated: not part of the current supported KDNA release. This version targets an earlier release line and is no longer maintained; keep it only for existing pinned installs and do not use it for new integrations.

中文使用文档
文档目录14 节
  1. 安装
  2. 快开始
  3. API 参考
  4. readKDNAMetadata(file)
  5. uploadKDNA(file, endpoint)
  6. KDNALoadPlanManager
  7. KDNAFileSizeError
  8. KDNAFormatError
  9. KDNAUploadError
  10. KDNALoadError
  11. 安保模式
  12. 消费痕迹
  13. 相关软件包
  14. 许可证

@aikdna/kdna-web-客户端

浏览器- 安全 KDNA 工具 .

状态 : 实验性出版的浏览器集成 : 坐标。 这不是一个稳定的浏览器 runtime 或一个完整的主机政策 .

文件选择、元数据检查、上传到服务器以及 负载计划国家管理——从未在 浏览器.

设计限制 : 此软件包从不解密任何东西。 写着 a 的公开元数据 .kdna 文档和代表全部敏感 操作到服务器运行 @aikdna/kdna-web-服务器。 。 。 .

新到KDNA吗 KDNA 核心

需要一个服务器侧适配器吗? → @aikdna/kdna-web-服务器

需要反应组件吗 ? → @aikdna/kdna-反应

npm License


安装

npm install @aikdna/kdna-web-client

无对等依存. 浏览器捆绑中的Node.js内置.


快开始

import { readKDNAMetadata, uploadKDNA, KDNALoadPlanManager } from '@aikdna/kdna-web-client'

// 1. Let the user pick a file
const input = document.createElement('input')
input.type = 'file'
input.accept = '.kdna'
input.onchange = async () => {
  const file = input.files[0]

  // 2. Read public metadata (no server round-trip, no decryption)
  const meta = await readKDNAMetadata(file)
  console.log(meta.domain, meta.version, meta.encrypted)

  // 3. Upload to your server and get a fileId
  const { fileId } = await uploadKDNA(file, '/api/kdna/inspect')

  // 4. Manage the load-plan flow
  const manager = new KDNALoadPlanManager('/api/kdna')
  const plan = await manager.planLoad(fileId)

  if (plan.canProceed) {
    const result = await manager.load(fileId, { profile: 'compact' })
    console.log(result.capsule.context)
  } else {
    console.log('Missing:', plan.missing)  // e.g. ['enter_password']
  }
}
input.click()

文件拾取器为此操作建立明确的用户选择. 若为 应用程序记得文件为附件, 它必须准确无误 身份、文摘、范围和理由可见,并提供禁用/开关/回滚 控制系统。 仅上传存储并不能授权未来的任务.


API 参考

readKDNAMetadata(file)

从 a 读取公共显示字段 .kdna File 没有对象 正在上传或执行任何解密.

const meta = await readKDNAMetadata(file)

回返情况:

{
  domain:      string         // e.g. "kdna:aikdna:laozi-wuwei"
  version:     string         // e.g. "1.2.0"
  title:       string | null
  description: string | null
  encrypted:   boolean
  profiles:    string[]       // available load profiles
  fileSize:    number         // bytes
}

默认 maxSizeBytes 是 10 MiB,与官方 Web 服务器对齐. 当应用程序需要更紧的内存时, 传递一个较小的正整数 预算。 公示单独立限定为一米B.

掷出 KDNAFileSizeError 如果文件太大. 掷出 KDNAFormatError 如果文件无效 .kdna 集装箱.


uploadKDNA(file, endpoint)

上传 a .kdna File 到终点( 通常为 /api/kdna/inspect并返回 fileId 由服务器指定.

const { fileId, inspect } = await uploadKDNA(file, '/api/kdna/inspect')

回返情况:

{
  fileId:   string    // opaque ID — pass to plan-load and load
  inspect:  object    // bounded public inspect fields only
}

客户只保留 fileId,公共资产元数据,默认配置, 可选配置文件, 以及公共负载计划 。 内部服务器存储元数据 路径和未知字段被丢弃.

掷出 KDNAUploadError 如果请求失败或服务器返回非200 状态。 公用错误包含一个固定的本地信件, HTTP 状态和 a 当服务器提供一个时, 语言学 KDNA 错误代码 。 服务器错误消息 和反应机构从未附加; 兼容性 response 属性 总是 null。 。 。 .


KDNALoadPlanManager

为单个文件驱动负载计划流的状态类.

const manager = new KDNALoadPlanManager(baseUrl)
方法说明
planLoad(fileId, context?)评估负载计划。 回返要求.
load(fileId, options)装入资产。 全权证书直接通过.

planLoad(fileId, context?)

const plan = await manager.planLoad('abc123', {
  hasPassword: false,
  entitlementToken: null,
})

回返情况:

{
  canProceed:   boolean
  missing:      string[]    // e.g. ['enter_password']
  requirements: {
    password:   { required: boolean, hint: string | null }
    licenseKey: { required: boolean }
  }
}

load(fileId, options)

const result = await manager.load('abc123', {
  profile:          'compact',
  password:         '...',   // only if required
  entitlementToken: { status: 'active' }, // signed entitlement from /activate, only if required
})

返回来自 capsule 仅在 capsule 完成完全运行时间 Capsule 计划关闭 锁定在经审计的 KDNA 核心承诺。 未知的顶级服务器字段被丢弃 . 代理造型出品是跑步相机; content 是一个网络用户界面 方便别名 capsule.context数字 :

{
  domain: "kdna:aikdna:laozi-wuwei"
  version: "0.1.1"
  judgmentVersion: "0.1.0"
  profile: "compact"
  content: object
  capsule: {
    type: "kdna.runtime-capsule"
    contract_version: "0.1.0"
    asset: object
    digests: object
    signature: object
    access: "public" | "licensed" | "remote"
    profile: "index" | "compact" | "scenario" | "full"
    context: object
    trace: object
  }
}

KDNAFileSizeError

被丢弃 readKDNAMetadata 当文件超过配置时 最大尺寸.

KDNAFormatError

被丢弃 readKDNAMetadata 当文件无效时 .kdna 头曰.

KDNAUploadError

被丢弃 uploadKDNA 当 HTTP 请求失败时 .

KDNALoadError

在请求失败或返回时按装入计划投放并装入呼叫 运行时间 Capsule 无效 。 一样 KDNAUploadError上游反应机构 而信息永远不会被曝光.


安保模式

见 文件/安全模型.md。 。 。 .

短版本 :

  • 此包只读取容器头和公开 kdna.json 显示 在记忆中。 它从不解析 解密 或暴露 payload.kdnab; 装入为 授权给官方服务器侧工具链.
  • 密码和签名的权利记录或信使作为 参数到 manager.load() 并直接输入服务器 终点 它们不保存在任何对象属性或模块级别 变量。 原始许可密钥属于您的激活端点, 不是 /load。 。 。 .
  • 这个软件包没有Node.js内建依赖性. 完全运行 在浏览器的安全模式内.
  • JSON响应被读取为受限UTF-8,必须是JSON对象. 错误 有效载荷被降低到状态,并具有犬类编码;成功有效载荷是: 投射到有记录的公众表面.

消费痕迹

parseJudgmentTrace, (中文(简体) ), judgmentTraceView和无依赖性 JudgmentTraceViewer 验证完整的判决 Trace 计划关闭 对同一经审计的KDNA核心承诺,因未知或不一致而未结案 巢所证. 他们保留了Capsule交付,主机执行, 语义消耗, 和符合作为单独的证据。 一个相互关联的主机 答复不能证明一个模型对判断有敏锐的消耗,或 答案是符合它的.

浏览器客户端应当收到一个可信赖的应用程序端点的跟踪. 浏览器检查仅证明方案符合性; 加密和语义 符合性仍然是服务器方面的KDNA核心责任。 追踪是永远不会 允许读取受保护的有效载荷.


软件包作用
@aikdna/kdna-coreKDNA 格式和运行时间 (Node.js)
@aikdna/kdna-web-server服务器侧适配器
@aikdna/kdna-react反应组件和钩
create-kdna-web-app项目脚手架CLI

许可证

Apache 2.0 — 见 自由主义。 。 。 .

版本与发布记录

@aikdna/kdna-web-client 共发布 7 个版本,首次发布于 2026/07/03;过去 12 个月发布了 7 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.3.0latest2026/08/082 个月前
0.2.22026/07/183 个月前
0.2.12026/07/183 个月前
0.2.02026/07/133 个月前
0.1.22026/07/113 个月前
0.1.12026/07/034 个月前

关于 @aikdna/kdna-web-client 的常见问题

@aikdna/kdna-web-client 是什么?

浏览器-安全 KDNA 公用设备——文件选择,元数据检查,上传,并负载计划状态管理. 永远不要进行解密.注意:该包已被作者标记为弃用——Deprecated: not part of the current supported KDNA release. This version targets an earlier release line and is no longer maintained; keep it only for existing pinned installs and do not use it for new integrations.

如何安装 @aikdna/kdna-web-client?

在项目目录运行 npm install @aikdna/kdna-web-client,或使用 pnpm add / yarn add / bun add。

@aikdna/kdna-web-client 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@aikdna/kdna-web-client 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@aikdna/kdna-web-client 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@aikdna/kdna-web-client 可以商用吗?

@aikdna/kdna-web-client 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@aikdna/kdna-web-client 的下载量有多少?

根据 npm 官方下载统计,@aikdna/kdna-web-client 在 2026/10/05 – 2026/11/03 这 30 天内被下载 4,185 次,日均约 140 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@aikdna/kdna-web-client 还在维护吗?

最新版本 0.3.0 发布于 2026/08/08(2 个月前);至今共发布 7 个版本,其中过去 12 个月发布了 7 个;首次发布于 2026/07/03。作者已将其标记为弃用,新项目建议寻找替代方案。