@tianacloud/agent-skills 1.0.13 → 1.0.15

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/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Tiana Agent Skills
2
2
 
3
- 六个基础技能覆盖 Tiana 账号与实例、SQLite、Git、后端服务、密钥和 Web 应用。应用模板由在线目录提供,用户描述需求后,Agent 根据实时目录决定使用模板还是直接开发。
3
+ 五个基础技能覆盖 Tiana 账号与实例、SQLite、Git、后端服务、密钥和 Web 应用。应用模板由在线目录提供,用户描述需求后,Agent 根据实时目录决定使用模板还是直接开发。
4
4
 
5
5
  ## 从 npm 安装
6
6
 
@@ -24,17 +24,16 @@ npx --yes @tianacloud/agent-skills@latest install --dir /path/to/client/skills
24
24
 
25
25
  Windows PowerShell 使用 `npx.cmd`。目录可以含空格,用引号包住。重复安装会更新包内全部技能并补齐新版新增技能,其他技能保留。安装完成后让客户端重载技能或开始新会话。
26
26
 
27
- WorkBuddy、豆包按所用版本的目录/ZIP 导入方式加载这六个目录,保留 SKILL.md 和 references。若要求 ZIP,可将每个技能目录的内容打包,SKILL.md 位于包根部。WorkBuddy 专用本地化 ZIP 由维护者构建流程提供;本仓验证 ZIP 格式和内容,不声称已验收这些客户端的运行行为。
27
+ WorkBuddy、豆包按所用版本的目录/ZIP 导入方式加载这五个目录,保留 SKILL.md 和 references。若要求 ZIP,可将每个技能目录的内容打包,SKILL.md 位于包根部。WorkBuddy 专用本地化 ZIP 由维护者构建流程提供;本仓验证 ZIP 格式和内容,不声称已验收这些客户端的运行行为。
28
28
 
29
- ## 六个入口
29
+ ## 五个入口
30
30
 
31
31
  | 技能 | 职责 |
32
32
  | --- | --- |
33
33
  | [tiana](skills/tiana/SKILL.md) | CLI 安装、登录、账号额度和通用实例管理 |
34
34
  | [tiana-sqlite](skills/tiana-sqlite/SKILL.md) | SQL、表结构、SDK 连接和数据库分支 |
35
35
  | [tiana-git](skills/tiana-git/SKILL.md) | Git 实例、原生仓库操作和源码版本同步 |
36
- | [tiana-function](skills/tiana-function/SKILL.md) | Go 后端服务源码、构建发布、参数/CORS 与数据库后端 |
37
- | [tiana-secrets](skills/tiana-secrets/SKILL.md) | 用户密钥库初始化、名称与版本列表、写入和删除 |
36
+ | [tiana-function](skills/tiana-function/SKILL.md) | Go 后端服务源码、构建发布、参数/CORS、数据库后端与用户密钥管理 |
38
37
  | [tiana-web](skills/tiana-web/SKILL.md) | 实时模板选择、工程与数据初始化、通用开发、构建发布 |
39
38
 
40
39
  Web 技能每次任务都实际执行 `tiana web list-template --json`,使用当前 name/description 判断需求。模板 ZIP 原样下载解压到独立项目目录;Agent 按根部 metadata.json 替换变量、先 schema 后 seeds。模板源码和制作规范见 [template-apps](https://github.com/tianacloud/template-apps),客户安装模板由 CLI 和 MGR 目录完成。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tianacloud/agent-skills",
3
- "version": "1.0.13",
3
+ "version": "1.0.15",
4
4
  "description": "Tiana Cloud Skills for accounts, SQLite, Git, Functions and Web applications",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -39,15 +39,17 @@
39
39
  "build:connector": "node scripts/build-workbuddy-connector.mjs",
40
40
  "validate:connector": "node scripts/validate-workbuddy-connector.mjs",
41
41
  "test:connector-auth": "node --test scripts/connector-auth.test.mjs",
42
+ "test:doubao-auth": "node --test scripts/doubao-auth.test.mjs",
42
43
  "validate:skills": "node scripts/validate-skills.mjs",
43
44
  "validate:references": "node scripts/check-skill-references.mjs",
44
45
  "validate:plugin": "node scripts/validate-plugin.mjs",
45
46
  "validate:versions": "node scripts/validate-versions.mjs",
46
47
  "validate:workbuddy": "node scripts/validate-workbuddy.mjs",
47
- "validate:ci": "npm run validate:skills && npm run validate:references && npm run validate:plugin && npm run validate:versions && npm run validate:workbuddy && npm run validate:connector",
48
+ "validate:ci": "npm run validate:skills && npm run validate:references && npm run validate:plugin && npm run validate:versions && npm run validate:workbuddy && npm run validate:connector && npm run test:doubao-auth",
48
49
  "test:templates": "python3 -B -m unittest discover -s tests -p test_share_template_pack.py",
49
50
  "test:installer": "node --test scripts/installer.test.mjs",
50
- "test:release": "node --test scripts/release.test.mjs"
51
+ "test:release": "node --test scripts/release.test.mjs",
52
+ "build:doubao": "python3 scripts/build-doubao.py"
51
53
  },
52
54
  "devDependencies": {
53
55
  "fflate": "0.8.3",
package/plugin.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
3
3
  "name": "tiana",
4
- "version": "1.0.13",
4
+ "version": "1.0.15",
5
5
  "description": "Tiana Cloud account, SQLite, Git, Functions and Web application workflows",
6
6
  "author": {
7
7
  "name": "Tiana Cloud",
@@ -1,10 +1,10 @@
1
1
  ---
2
2
  name: tiana
3
- description: 使用 Tiana Cloud 管理实例、安装 CLI、登录和恢复账号会话。通用 Tiana 任务从此技能开始;Web 应用创建发布使用 tiana-web,数据库和分支使用 tiana-sqlite,Git 仓库和源码同步使用 tiana-git,后端服务与数据库后端使用 tiana-function,用户密钥管理使用 tiana-secrets。
3
+ description: 使用 Tiana Cloud 管理实例、安装 CLI、登录和恢复账号会话。通用 Tiana 任务从此技能开始;Web 应用创建发布使用 tiana-web,数据库和分支使用 tiana-sqlite,Git 仓库和源码同步使用 tiana-git,后端服务、数据库后端和用户密钥管理使用 tiana-function。
4
4
  license: Apache-2.0
5
5
  metadata:
6
6
  author: Tiana Cloud
7
- version: "1.0.13"
7
+ version: "1.0.15"
8
8
  source: https://github.com/tianacloud/agent-skills/tree/main/skills/tiana
9
9
  ---
10
10
 
@@ -31,14 +31,14 @@ CLI 仍管理检查缓存和共同的 24 小时提醒额度;该额度不限制
31
31
 
32
32
  | 任务 | 技能 |
33
33
  | --- | --- |
34
- | 创建、修改、预览、发布 Web 应用 | [tiana-web](../tiana-web/SKILL.md) |
35
- | Go 后端服务、源码、参数及编译发布 | [tiana-function](../tiana-function/SKILL.md) |
36
- | SQLite 查询、连接、建表及数据库分支 | [tiana-sqlite](../tiana-sqlite/SKILL.md) |
37
- | Git 实例、仓库、源码版本同步 | [tiana-git](../tiana-git/SKILL.md) |
38
- | 用户密钥库初始化、名称列表、写入与删除 | [tiana-secrets](../tiana-secrets/SKILL.md) |
34
+ | 创建、修改、预览、发布 Web 应用 | `tiana-web` 技能 |
35
+ | Go 后端服务、源码、参数及编译发布 | `tiana-function` 技能 |
36
+ | SQLite 查询、连接、建表及数据库分支 | `tiana-sqlite` 技能 |
37
+ | Git 实例、仓库、源码版本同步 | `tiana-git` 技能 |
38
+ | 用户密钥库初始化、名称列表、写入与删除 | `tiana-function` 技能 |
39
39
  | 登录、账号、额度、通用实例管理 | 本技能 |
40
40
 
41
- 组合请求中,安装完成后继续用户要求的任务。按需读取对应技能和直接链接的参考资料,跨技能文件按宿主返回的安装目录解析。
41
+ 组合请求中,安装完成后继续用户要求的任务。需要其他技能时,按技能名加载对应技能,携带当前任务、已确认的资源 ID 和已完成结果;完成所需步骤后,带回操作结果继续当前任务。技能内部的参考资料按该技能提供的链接读取。
42
42
 
43
43
  ## 管理实例
44
44
 
@@ -21,13 +21,13 @@ tiana sqlite shell INSTANCE -f schema.sql --format json
21
21
 
22
22
  删除使用 `sqlite/git delete INSTANCE`;默认需要终端确认。仅在用户已授权相应删除时使用 `--force`。`--wait` 等待删除操作成功,不等于物理存储已经回收完毕。
23
23
 
24
- SQLite 分支操作使用 [SQLite 分支](../../tiana-sqlite/references/branches-cli.md)。`branch list --json` 自动取完所有匹配页,返回 `data.items`;`--after` 仅指定起始游标,`--search` 在所有页保持一致。创建和删除默认只报告受理。分支创建没有本地待完成请求恢复机制,不能套用上面的实例创建重试规则;结果未知时先核实,保留原 Operation ID。分支查询和连接用 `sqlite show/shell INSTANCE --branch NAME`,省略时选择默认分支(固定 ID `main`)。
24
+ SQLite 分支操作使用 `tiana-sqlite` 技能的“SQLite 分支操作”指引。`branch list --json` 自动取完所有匹配页,返回 `data.items`;`--after` 仅指定起始游标,`--search` 在所有页保持一致。创建和删除默认只报告受理。分支创建没有本地待完成请求恢复机制,不能套用上面的实例创建重试规则;结果未知时先核实,保留原 Operation ID。分支查询和连接用 `sqlite show/shell INSTANCE --branch NAME`,省略时选择默认分支(固定 ID `main`)。
25
25
 
26
26
  应用列表使用 `tiana web list`;脚本可用 `tiana web list --json` 取得全部分页的 `data.items`,保存真实 `id`。列表只包含当前账号拥有的应用;名称可以重复,不能仅凭同名断定是原应用。
27
27
 
28
28
  Serverless Web 候选命令为 `web create NAME [-m DESCRIPTION] [--entry ENTRY] [--database-instance-id DB_ID] [--git-instance-id GIT_ID] --json`、`web publish ID --dir DIST --json`、`web status ID [--publish-id PUBLISH_ID] --json`。执行前核验配套 CLI/平台版本,尚未发布的候选不能视为线上能力。MGR 生成 `data.id` 与绑定的 Web 实例,保存真实 ID;创建结果未知时沿用本地待完成记录与相同参数恢复。Web 与 SQLite/Git 统一使用实例额度,没有单独 app 配额。
29
29
 
30
- 发布经 Gateway 业务管控 channel,接受有效且作用域覆盖目标的 Endpoint、Instance、Group、Tenant Token。CLI 优先使用互斥的 TIANA_TOKEN / TIANA_TOKEN_FILE,否则使用已登录账号 access token;不读取实例 Token 缓存,显式凭据拒绝时不回退。MGR 项目元数据仍通过登录账号读取。CLI 内部将目录打包为含空 `web.yaml` 和 `data/` 的单个 `.tweb`;普通文件可以发布,Site 包装使用 MGR 项目参数;不生成或读取旧清单。发布回执确认 S3 上传,不等待激活;记录 publish_id 和 SHA256,随后查询激活状态。结果未知时只查询、不自动重放 PUT;404 回执消失表示未知,检查 current 内容。没有 --version、upload 或 reload 命令,详细边界见[应用要求](../../tiana-web/references/csr-apps.md)。
30
+ 发布经 Gateway 业务管控 channel,接受有效且作用域覆盖目标的 Endpoint、Instance、Group、Tenant Token。CLI 优先使用互斥的 TIANA_TOKEN / TIANA_TOKEN_FILE,否则使用已登录账号 access token;不读取实例 Token 缓存,显式凭据拒绝时不回退。MGR 项目元数据仍通过登录账号读取。CLI 内部将目录打包为含空 `web.yaml` 和 `data/` 的单个 `.tweb`;普通文件可以发布,Site 包装使用 MGR 项目参数;不生成或读取旧清单。发布回执确认 S3 上传,不等待激活;记录 publish_id 和 SHA256,随后查询激活状态。结果未知时只查询、不自动重放 PUT;404 回执消失表示未知,检查 current 内容。没有 --version、upload 或 reload 命令,详细边界见 `tiana-web` 技能的“Web 开发与发布”指引。
31
31
 
32
32
  登录 JSON 的 `pending_auth:true` 表示待批准;`NO_PENDING_AUTH` / `pending_auth:false` 仅表示无待恢复授权。缺少 `logged_in` 或 `pending_auth` 时该状态未核实,不能推断已退出或丢失授权。用 `status --json` 核实当前账号;配额不可用时仍可能返回已核实的 `logged_in:true`。目录失败按 `LOCAL_STATE_UNAVAILABLE` 修复 XDG 路径/权限,锁占用先等待,过期才重新 start,拒绝不自动再次授权。
33
33
 
@@ -12,6 +12,6 @@ CLI 本地预览优先复用已有 CLI 登录,通过一次性本地启动链
12
12
 
13
13
  托管应用使用动态账号鉴权 provider。以目标环境实际返回的能力判断就绪状态;能力缺失时报告具体结果,SDK 或 CLI 安装成功不能代替托管运行时核验。
14
14
 
15
- SDK 要求、调用示例和失败恢复见 [JavaScript 数据库连接](../../tiana-sqlite/references/js-sdk.md)。skills 不读取或保存 refresh token,不自行调用刷新接口,也不从 CLI 凭据文件向浏览器复制凭据。登录与刷新由 CLI/SDK 或可信运行时代理负责。
15
+ SDK 要求、调用示例和失败恢复见 `tiana-sqlite` 技能的“JavaScript 数据库连接”指引。skills 不读取或保存 refresh token,不自行调用刷新接口,也不从 CLI 凭据文件向浏览器复制凭据。登录与刷新由 CLI/SDK 或可信运行时代理负责。
16
16
 
17
17
  浏览器注销、关闭本地预览会话不应被视为已交付 access token 立即撤销的证明。凭据的失效、撤销由服务端机制决定。
@@ -39,6 +39,6 @@ where.exe git-remote-tiana
39
39
 
40
40
  这个修改只作用于当前进程及其子进程;Agent 的下一次工具调用可能启动另一个 Shell。持久修复由外围启动环境完成。
41
41
 
42
- Git 处理 `tiana://` 地址时自动调用 helper,由它执行 `tiana git remote-helper`。`--version` 不是 helper 的独立用户命令;CLI 版本用 `tiana.cmd version` 检查。入口恢复后,再按[应用源码与版本发布](../../tiana-git/references/source-releases.md)进行已授权的 Git 操作。认证错误与命令找不到是不同阶段,前者按[开始使用](getting-started.md)恢复登录。
42
+ Git 处理 `tiana://` 地址时自动调用 helper,由它执行 `tiana git remote-helper`。`--version` 不是 helper 的独立用户命令;CLI 版本用 `tiana.cmd version` 检查。入口恢复后,再按 `tiana-git` 技能的“应用源码与版本发布”指引进行已授权的 Git 操作。认证错误与命令找不到是不同阶段,前者按[开始使用](getting-started.md)恢复登录。
43
43
 
44
44
  依据:[npm 全局目录规则](https://docs.npmjs.com/cli/v11/configuring-npm/folders/)、[npm Windows 命令入口实现](https://github.com/npm/cmd-shim/blob/main/lib/index.js)、[Git remote helper 协议](https://git-scm.com/docs/gitremote-helpers)。
@@ -1,19 +1,19 @@
1
1
  ---
2
2
  name: tiana-function
3
- description: 使用 Tiana 创建和管理 Go 后端服务,读取及保存 Git 源码、编译发布、修改参数与 CORS;为 Web 应用开发访问 SQLite 的后端服务时使用。前端页面开发配合 tiana-web。
3
+ description: 使用 Tiana 创建和管理 Go 后端服务,读取及保存 Git 源码、编译发布、修改参数与 CORS;为 Web 应用开发访问 SQLite 的后端服务,或初始化用户密钥库、列出密钥名称与版本、写入和删除密钥时使用。前端页面开发配合 tiana-web。
4
4
  license: Apache-2.0
5
5
  metadata:
6
6
  author: Tiana Cloud
7
- version: "1.0.13"
7
+ version: "1.0.15"
8
8
  parent: tiana
9
9
  source: https://github.com/tianacloud/agent-skills/tree/main/skills/tiana-function
10
10
  ---
11
11
 
12
12
  # Tiana Function
13
13
 
14
- 本 skill 负责后端服务的创建与管理、源码、运行参数、Go 接口及数据库访问、编译发布。为 Web 开发后端时,接收 [Tiana Web](../tiana-web/SKILL.md)确定的 Git ID、接口需求和数据依赖;完成后返回服务 ID、source_dir、发布回执、接口契约和参数生效结果,由 Web skill 继续前端接入、绑定、发布及分享验收。
14
+ 本 skill 负责后端服务的创建与管理、源码、运行参数、用户密钥库、Go 接口及数据库访问、编译发布。为 Web 开发后端时,接收 `tiana-web` 技能确定的 Git ID、接口需求和数据依赖;完成后返回服务 ID、source_dir、发布回执、接口契约和参数生效结果,由 Web skill 继续前端接入、绑定、发布及分享验收。
15
15
 
16
- 安装、账号与环境选择按 [Tiana](../tiana/SKILL.md)。共享各 Tiana 技能本会话的实际更新检查记录;尚未检查时先完成该入口的检查,包括从本会话实际加载的 SKILL.md 的 `metadata.version` 取得 `SKILLS_VERSION`,在同一次 shell 调用中赋值并实际执行 `tiana version check --skills-version "$SKILLS_VERSION" --json` 并按结果自动更新 CLI 和整套 Skills、补齐新增技能并核验,在对话中报告结果与重载要求;`should_notify=false` 也执行。两个包各自比较自身 npm 最新版,检查与安装无需 Tiana 登录;暂不登录或不操作云端资源时仍完成此流程。执行前确认 `tiana function --help` 可用;当前最新正式 CLI 仍缺少命令时,报告配套能力尚未可用及两个包的实际版本,等待已验证的配套发布。
16
+ 安装、账号与环境选择按 `tiana` 技能。共享各 Tiana 技能本会话的实际更新检查记录;尚未检查时先完成该入口的检查,包括从本会话实际加载的 SKILL.md 的 `metadata.version` 取得 `SKILLS_VERSION`,在同一次 shell 调用中赋值并实际执行 `tiana version check --skills-version "$SKILLS_VERSION" --json` 并按结果自动更新 CLI 和整套 Skills、补齐新增技能并核验,在对话中报告结果与重载要求;`should_notify=false` 也执行。两个包各自比较自身 npm 最新版,检查与安装无需 Tiana 登录;暂不登录或不操作云端资源时仍完成此流程。执行前确认 `tiana function --help` 可用;当前最新正式 CLI 仍缺少命令时,报告配套能力尚未可用及两个包的实际版本,等待已验证的配套发布。
17
17
 
18
18
  ## 创建与修改
19
19
 
@@ -21,18 +21,22 @@ metadata:
21
21
 
22
22
  新后端服务不自动写入示例。为 Web 开发时传入该应用已确定的 `--git-instance-id GIT_ID`,默认复用 Web 仓库;独立创建且未指定 Git 时由平台创建源码仓库。用 `--source-dir /services/orders` 指定仓库内目录,`/` 表示根目录;省略时默认 `/functions/<名称>/`,中文和大小写保留,名称中的空格替换为下划线;手动指定的目录保留空格。创建后读取 `function show` 的 source_dir,不根据名称或 ID 推导;改名不改变目录。目录是 package main 的编译入口,go.mod 可在该目录或仓库内上级目录;首次保存创建缺失目录,构建只编译指定入口。允许多个服务共享同一目录和源码,分别发布。不要把前端文件或其他后端服务的目录当作本后端服务源码覆盖。
23
23
 
24
- 命令回执中的 commit 是仓库主分支提交。并发保存冲突后先保留本地编辑,重读并合并实际变化,再用新 commit 保存;不强推主分支。多文件或二进制资源也可按 [Tiana Git](../tiana-git/SKILL.md)用原生 Git 管理。
24
+ 命令回执中的 commit 是仓库主分支提交。并发保存冲突后先保留本地编辑,重读并合并实际变化,再用新 commit 保存;不强推主分支。多文件或二进制资源也可按 `tiana-git` 技能用原生 Git 管理。
25
25
 
26
26
  ## 参数与数据库后端
27
27
 
28
28
  涉及数据库 Token、第三方 API Key 等敏感配置时,必须先按[参数配置与生效](references/commands.md#参数配置与生效)配置,再按 [Go 后端服务开发](references/go-backend.md)读取与使用。参数更新无需重新编译,但要核对保存回执的应用状态和实际请求结果。
29
29
 
30
- 数据库 Endpoint 使用明文参数;Token 和第三方密钥先通过 [Tiana Secrets](../tiana-secrets/SKILL.md) 写入用户密钥库,再保存为后端服务的密钥引用参数,不写入 Git、前端源码、业务响应或日志。缺少实际凭据时说明待配置项,不使用占位值宣称联调成功。Web 的数据访问方式、资源绑定与模板制作由 Tiana Web 负责。
30
+ 数据库 Endpoint 使用明文参数;Token 和第三方密钥先按[用户密钥库](references/secrets.md)写入密钥,再保存为后端服务的密钥引用参数,不写入 Git、前端源码、业务响应或日志。缺少实际凭据时说明待配置项,不使用占位值宣称联调成功。Web 的数据访问方式、资源绑定与模板制作由 Tiana Web 负责。
31
31
 
32
32
  调用方身份通过 SDK 从请求上下文读取,业务需要区分用户数据时使用该身份,不能相信请求体中自报的用户 ID。完成接口核验后,将所需调用身份与数据范围一并交给 Web skill 验证。
33
33
 
34
34
  App 作者专属的初始化和权限管理接口,按 [App 作者与初始权限](references/go-backend.md#app-作者与初始权限)使用 `caller.IsAppOwner()` 校验;作者指本次来源 Web 的创建者,与租户角色分开。前端的 `is_app_owner` 展示由 Tiana Web 负责。
35
35
 
36
+ ## 用户密钥库
37
+
38
+ 初始化密钥库、查询名称与版本、写入或删除密钥时,阅读[密钥管理](references/secrets.md)。按操作回执报告 key、版本和结果;需要供函数使用时,继续配置密钥引用参数并核验生效。
39
+
36
40
  ## 结果与恢复
37
41
 
38
42
  `accepted` 表示已受理,`publish --wait` 成功才表示发布完成。构建失败后读取 `builds` 和 `logs`,修正源码、额度或配置后重试。响应不确定时沿用原 request ID 和 commit 查询或恢复;不要把再次发起构建当作状态查询。删除后端服务会删除其制品,CLI 保留关联 Git。
@@ -64,7 +64,7 @@ set 替换整个参数对象。get 的 JSON 回执从 `data.parameters` 取出
64
64
  }
65
65
  ```
66
66
 
67
- 先通过 [Tiana Secrets](../../tiana-secrets/SKILL.md) 写入敏感值,再将其 key 配为 secret;plain 保存明文,secret 只保存引用名称。
67
+ 先按[密钥管理](secrets.md)写入敏感值,再将其 key 配为 secret;plain 保存明文,secret 只保存引用名称。
68
68
 
69
69
  含凭据的文件放在 Git 和前端构建目录之外,使用仅当前用户可读写的临时文件,用完删除。get 和 set 回执都可能包含参数值,同样写入受限临时文件处理,不打印到对话或交付日志。仅报告参数名称与生效状态。
70
70
 
@@ -112,6 +112,6 @@ tiana function delete FUNCTION_ID --force --wait --json
112
112
 
113
113
  ## 交付 Web 使用
114
114
 
115
- 为 Web 开发后端时,将服务 ID、源码 Git 和 source_dir、发布回执、接口契约及参数生效结果交回 [Tiana Web 接入流程](../../tiana-web/references/backend-apps.md)。Web 绑定、前端预览与模板安装由该 skill 负责。
115
+ 为 Web 开发后端时,将服务 ID、源码 Git 和 source_dir、发布回执、接口契约及参数生效结果交回 `tiana-web` 技能,继续其“后端交接与接入验证”流程。Web 绑定、前端预览与模板安装由该 skill 负责。
116
116
 
117
117
  源码目录支持根目录 `/`,创建后固定。服务改名不改路径,保存提交信息为 `Save source of <当前服务名称>`。多个入口目录可共用上级 go.mod;同仓同目录也可被多个服务共享。
@@ -68,7 +68,7 @@ req.Header.Set("Authorization", "Bearer "+apiKey)
68
68
 
69
69
  ## 访问 SQLite
70
70
 
71
- 先用 [Tiana SQLite](../../tiana-sqlite/SKILL.md)核实数据库实例、表结构及初始化 SQL。数据库 Endpoint 和实例 Token 分别保存为后端服务参数 `SQLITE_ENDPOINT`、`SQLITE_TOKEN`,Token 在该数据库的连接管理中创建。只在后端服务内读取并传给 SDK:
71
+ 先用 `tiana-sqlite` 技能核实数据库实例、表结构及初始化 SQL。数据库 Endpoint 和实例 Token 分别保存为后端服务参数 `SQLITE_ENDPOINT`、`SQLITE_TOKEN`,Token 在该数据库的连接管理中创建。只在后端服务内读取并传给 SDK:
72
72
 
73
73
  ```go
74
74
  endpoint, endpointErr := params.Get("SQLITE_ENDPOINT")
@@ -1,17 +1,6 @@
1
- ---
2
- name: tiana-secrets
3
- description: 管理 Tiana 用户密钥库:初始化、列出密钥名称和当前版本号、写入与删除密钥。函数参数引用密钥时配合 tiana-function;不提供密钥明文读取或导出。
4
- license: Apache-2.0
5
- metadata:
6
- author: Tiana Cloud
7
- version: "1.0.13"
8
- parent: tiana
9
- source: https://github.com/tianacloud/agent-skills/tree/main/skills/tiana-secrets
10
- ---
1
+ # 用户密钥库
11
2
 
12
- # Tiana Secrets
13
-
14
- 安装、登录、环境选择和本会话的 CLI/Skills 更新检查复用 [Tiana](../tiana/SKILL.md)。执行前核实 `tiana secrets --help` 包含 init、list、set、remove;若正式 CLI 尚未提供,说明配套能力未发布,使用用户已指定的候选版本或等待配套发布,不猜造其他访问方式。
3
+ 执行前核实 `tiana secrets --help` 包含 init、list、set、remove;若正式 CLI 尚未提供,说明配套能力未发布,使用用户已指定的候选版本或等待配套发布,不猜造其他访问方式。
15
4
 
16
5
  ## 初始化与列表
17
6
 
@@ -39,6 +28,6 @@ Set 直接写入,不先读取密钥。新 key 从 v1 开始,值变化则版
39
28
 
40
29
  ## 函数引用
41
30
 
42
- 写入后,把 key 交给 [Tiana Function](../tiana-function/SKILL.md)。函数参数使用 `{"kind":"secret","value":"production/database/password"}`,value 是引用名称,不是密钥明文;函数执行首次读取成功后缓存,下次冷启动读取当前值。
31
+ 写入后,需要供函数使用时,按[参数配置与生效](commands.md#参数配置与生效)将 key 保存为函数参数。函数参数使用 `{"kind":"secret","value":"production/database/password"}`,value 是引用名称,不是密钥明文;函数执行首次读取成功后缓存,下次冷启动读取当前值。
43
32
 
44
- 本技能不提供 Get、明文回显或导出,也不通过 curl、SDK 或函数接口绕过 CLI 读取明文。需要人工查看时,引导用户到 Console 输入安全口令自行操作。平台 HashiCorp Vault 运维不属于本技能。
33
+ 密钥管理不提供 Get、明文回显或导出,也不通过 curl、SDK 或函数接口绕过 CLI 读取明文。需要人工查看时,引导用户到 Console 输入安全口令自行操作。平台 HashiCorp Vault 运维不属于本密钥管理流程。
@@ -4,14 +4,14 @@ description: 使用 Tiana Git 管理 Git 实例和原生仓库,关联项目远
4
4
  license: Apache-2.0
5
5
  metadata:
6
6
  author: Tiana Cloud
7
- version: "1.0.13"
7
+ version: "1.0.15"
8
8
  parent: tiana
9
9
  source: https://github.com/tianacloud/agent-skills/tree/main/skills/tiana-git
10
10
  ---
11
11
 
12
12
  # Tiana Git
13
13
 
14
- 安装 CLI、浏览器登录和通用资源恢复见 [Tiana](../tiana/SKILL.md)。本技能操作用户自己的 Git 实例;使用原生 Git 和包内的 `git-remote-tiana`。
14
+ 安装 CLI、浏览器登录和通用资源恢复见 `tiana` 技能。本技能操作用户自己的 Git 实例;使用原生 Git 和包内的 `git-remote-tiana`。
15
15
 
16
16
  ## 每个会话一次的更新检查
17
17
 
@@ -19,9 +19,9 @@ metadata:
19
19
 
20
20
  CLI 与 Skills 各自独立比较本包的 npm 最新正式版。下面的版本检查与安装只访问公共包仓库,不需要 Tiana 登录,不操作 Tiana 云端资源;用户要求暂不登录或不操作云端资源时仍执行。用户明确要求离线、禁止联网或禁止安装时遵从该限制。
21
21
 
22
- 1. 执行 `tiana version`,按[开始使用](../tiana/references/getting-started.md)核验最低版本;缺少 CLI 或版本过低时,自动安装 npm latest 正式版并重新核验。
22
+ 1. 执行 `tiana version`,按 `tiana` 技能的“开始使用”指引核验最低版本;缺少 CLI 或版本过低时,自动安装 npm latest 正式版并重新核验。
23
23
  2. CLI 满足最低版本后,从本会话实际加载的 SKILL.md 的 `metadata.version` 取得 `SKILLS_VERSION`,在同一次 shell 调用中赋值并**实际执行** `tiana version check --skills-version "$SKILLS_VERSION" --json`。这一步检查是否有更新版本。
24
- 3. `updates` 中 CLI 或 Skills 有新正式版时,**自动安装各项实际返回的 `latest_version`,无需再次询问**;`should_notify=false` 也执行。Skills 按新版包完整安装,覆盖已有技能并补齐新增技能。各连接器初始版本仅用于分发,后续更新独立于连接器发版;安装目标及重载按[更新流程](../tiana/references/getting-started.md#更新),连接器内使用时再读其中链接的宿主说明。
24
+ 3. `updates` 中 CLI 或 Skills 有新正式版时,**自动安装各项实际返回的 `latest_version`,无需再次询问**;`should_notify=false` 也执行。Skills 按新版包完整安装,覆盖已有技能并补齐新增技能。各连接器初始版本仅用于分发,后续更新独立于连接器发版;安装目标及重载按 `tiana` 技能的“更新”指引,连接器内使用时再读其中链接的宿主说明。
25
25
  4. 在对话中简短报告实际 CLI/Skills 版本、检查状态与更新结果(包括新增技能及是否需要重载);检查不可用时明确说明未能确认是否有新版,更新失败时说明实际错误。
26
26
 
27
27
  实际发起检查命令后才记录已尝试,保留检查结果或执行错误,以及两个包的安装与核验结果。各 Tiana 技能共享这份记录;后续轮次、重复加载或切换技能复用记录,每个包失败后本会话不自动重试。上下文压缩或任务交接时保留记录,新会话重新检查。仅运行 `tiana version` 只完成第 1 步。
@@ -30,8 +30,8 @@ CLI 仍管理检查缓存和共同的 24 小时提醒额度;该额度不限制
30
30
 
31
31
  ## 实例与仓库
32
32
 
33
- 1. 在实际命令环境核验 `git --version`、`tiana version` 和 `git-remote-tiana` 路径。Windows 阅读 [helper 排查](../tiana/references/windows-git-helper.md)。
34
- 2. 阅读 [CLI 命令](../tiana/references/cloud-cli.md),复用已核实的 Git 实例;需要查找时 `tiana git list/show`,缺少才 `tiana git create NAME --wait`。等待就绪后保存完整实例 ID 和实际 Endpoint。
33
+ 1. 在实际命令环境核验 `git --version`、`tiana version` 和 `git-remote-tiana` 路径。Windows 阅读 `tiana` 技能的“Windows 安装与 Git helper 排查”指引。
34
+ 2. 阅读 `tiana` 技能的“CLI 命令与恢复”指引,复用已核实的 Git 实例;需要查找时 `tiana git list/show`,缺少才 `tiana git create NAME --wait`。等待就绪后保存完整实例 ID 和实际 Endpoint。
35
35
  3. 根据返回 Endpoint 使用 `tiana://HOST[:PORT]/repo.git`。原生 Git 自动调用 helper,账号凭据由 CLI 管理;不把 Token 放入 remote URL。
36
36
  4. 克隆、fetch、commit、branch 和 push 使用原生 Git。Git refs 与 SQLite 数据库分支是不同对象。保持已有 remote、跟踪设置及用户工作区;新远程名称冲突时先核对目标。
37
37
 
@@ -39,4 +39,4 @@ CLI 仍管理检查缓存和共同的 24 小时提醒额度;该额度不限制
39
39
 
40
40
  阅读 [源码与版本](references/source-releases.md),确认项目托管选择和实际推送范围。全新 Tiana 应用创建自己的 Tiana Git;已有外部仓库首次同步时确认用户选择。提交源码与锁文件,排除凭据,普通推送并核验远端对应版本引用。
41
41
 
42
- Web 发布时从干净、确定的源码提交构建,在交付记录中保存实际 `git_instance_id`、完整源码提交号和对应发布回执。推送失败停止关联的 Web 发布,结果不明先读取远端状态。Web 构建和上传见 [Tiana Web](../tiana-web/SKILL.md)。
42
+ Web 发布时从干净、确定的源码提交构建,在交付记录中保存实际 `git_instance_id`、完整源码提交号和对应发布回执。推送失败停止关联的 Web 发布,结果不明先读取远端状态。Web 构建和上传见 `tiana-web` 技能。
@@ -4,7 +4,7 @@
4
4
 
5
5
  ## 准备 Git 客户端
6
6
 
7
- 在 Agent 实际执行命令的环境中检查 `git --version`、`tiana version` 及 `git-remote-tiana` 的命令路径。macOS/Linux 使用 `command -v git-remote-tiana`;Windows 按 [Windows 安装与 Git helper 排查](../../tiana/references/windows-git-helper.md)检查 npm 生成的入口与 PATH。缺少 CLI 或 helper 时,按[开始使用](../../tiana/references/getting-started.md)安装同一个 `@tianacloud/cli` 包,安装成功并核验后再继续。
7
+ 在 Agent 实际执行命令的环境中检查 `git --version`、`tiana version` 及 `git-remote-tiana` 的命令路径。macOS/Linux 使用 `command -v git-remote-tiana`;Windows 按 `tiana` 技能的“Windows 安装与 Git helper 排查”指引检查 npm 生成的入口与 PATH。缺少 CLI 或 helper 时,按 `tiana` 技能的“开始使用”指引安装同一个 `@tianacloud/cli` 包,安装成功并核验后再继续。
8
8
 
9
9
  ## 确定源码托管方式
10
10
 
@@ -4,14 +4,14 @@ description: 查询 Tiana SQLite 表结构、执行 SQL、选择数据库分支
4
4
  license: Apache-2.0
5
5
  metadata:
6
6
  author: Tiana Cloud
7
- version: "1.0.13"
7
+ version: "1.0.15"
8
8
  parent: tiana
9
9
  source: https://github.com/tianacloud/agent-skills/tree/main/skills/tiana-sqlite
10
10
  ---
11
11
 
12
12
  # Tiana SQLite
13
13
 
14
- 执行 SQL 前阅读 [SQL 命令](references/sql.md);JavaScript 应用直接阅读下方应用连接指引。实例创建与登录使用 [Tiana](../tiana/SKILL.md),应用发布使用 [Tiana Web](../tiana-web/SKILL.md)。相对路径以本 `SKILL.md` 所在目录为基准;客户端分开存放技能时,从已安装技能目录表定位同名依赖,不向上遍历仓库寻找安装或 Connector 文档。
14
+ 执行 SQL 前阅读 [SQL 命令](references/sql.md);JavaScript 应用直接阅读下方应用连接指引。实例创建与登录使用 `tiana` 技能,应用发布使用 `tiana-web` 技能。需要其他技能时按技能名加载,传递已确认的实例 ID、分支和任务;完成后继续当前 SQL 或连接操作。
15
15
 
16
16
  ## 每个会话一次的更新检查
17
17
 
@@ -19,9 +19,9 @@ metadata:
19
19
 
20
20
  CLI 与 Skills 各自独立比较本包的 npm 最新正式版。下面的版本检查与安装只访问公共包仓库,不需要 Tiana 登录,不操作 Tiana 云端资源;用户要求暂不登录或不操作云端资源时仍执行。用户明确要求离线、禁止联网或禁止安装时遵从该限制。
21
21
 
22
- 1. 执行 `tiana version`,按[开始使用](../tiana/references/getting-started.md)核验最低版本;缺少 CLI 或版本过低时,自动安装 npm latest 正式版并重新核验。
22
+ 1. 执行 `tiana version`,按 `tiana` 技能的“开始使用”指引核验最低版本;缺少 CLI 或版本过低时,自动安装 npm latest 正式版并重新核验。
23
23
  2. CLI 满足最低版本后,从本会话实际加载的 SKILL.md 的 `metadata.version` 取得 `SKILLS_VERSION`,在同一次 shell 调用中赋值并**实际执行** `tiana version check --skills-version "$SKILLS_VERSION" --json`。这一步检查是否有更新版本。
24
- 3. `updates` 中 CLI 或 Skills 有新正式版时,**自动安装各项实际返回的 `latest_version`,无需再次询问**;`should_notify=false` 也执行。Skills 按新版包完整安装,覆盖已有技能并补齐新增技能。各连接器初始版本仅用于分发,后续更新独立于连接器发版;安装目标及重载按[更新流程](../tiana/references/getting-started.md#更新),连接器内使用时再读其中链接的宿主说明。
24
+ 3. `updates` 中 CLI 或 Skills 有新正式版时,**自动安装各项实际返回的 `latest_version`,无需再次询问**;`should_notify=false` 也执行。Skills 按新版包完整安装,覆盖已有技能并补齐新增技能。各连接器初始版本仅用于分发,后续更新独立于连接器发版;安装目标及重载按 `tiana` 技能的“更新”指引,连接器内使用时再读其中链接的宿主说明。
25
25
  4. 在对话中简短报告实际 CLI/Skills 版本、检查状态与更新结果(包括新增技能及是否需要重载);检查不可用时明确说明未能确认是否有新版,更新失败时说明实际错误。
26
26
 
27
27
  实际发起检查命令后才记录已尝试,保留检查结果或执行错误,以及两个包的安装与核验结果。各 Tiana 技能共享这份记录;后续轮次、重复加载或切换技能复用记录,每个包失败后本会话不自动重试。上下文压缩或任务交接时保留记录,新会话重新检查。仅运行 `tiana version` 只完成第 1 步。
@@ -48,4 +48,4 @@ JavaScript 应用阅读 [JS SDK 与 SQL 协议](references/js-sdk.md),使用
48
48
 
49
49
  ## 数据库分支
50
50
 
51
- 通过 `tiana sqlite branch list/create/delete` 操作。阅读 [分支 CLI](references/branches-cli.md)及 [分支身份与结果](references/branches-lifecycle.md),核对完整实例 ID、精确名称、来源和历史时间;默认分支固定 ID 为 `main`。创建和删除默认只报告受理,`--wait` 成功后才能使用结果。创建中断先查原实例下的分支,不重新 create;不能套用实例创建的本地恢复规则。Git 源码分支见 [Tiana Git](../tiana-git/SKILL.md)。
51
+ 通过 `tiana sqlite branch list/create/delete` 操作。阅读 [分支 CLI](references/branches-cli.md)及 [分支身份与结果](references/branches-lifecycle.md),核对完整实例 ID、精确名称、来源和历史时间;默认分支固定 ID 为 `main`。创建和删除默认只报告受理,`--wait` 成功后才能使用结果。创建中断先查原实例下的分支,不重新 create;不能套用实例创建的本地恢复规则。Git 源码分支见 `tiana-git` 技能。
@@ -26,7 +26,7 @@
26
26
 
27
27
  `window.tiana.connection()` 提供 `origin`、`sql_api`、实例 ID 等连接信息;应用使用共享的 `window.tiana.auth` 获取动态 access token。不要读取或缓存 `connection.tianaToken`,不要向 adapter 传入静态 `tianaToken`,也不要同时传入两种鉴权参数。
28
28
 
29
- access token 具有账号/租户级数据权限,不能把应用目标实例 ID 当作凭据的权限边界。refresh token 留在可信的 CLI/运行时代理中,不进入浏览器。完整权限边界见 [实例与凭据](../../tiana/references/instances-and-tokens.md)。
29
+ access token 具有账号/租户级数据权限,不能把应用目标实例 ID 当作凭据的权限边界。refresh token 留在可信的 CLI/运行时代理中,不进入浏览器。完整权限边界见 `tiana` 技能的“实例与凭据”指引。
30
30
 
31
31
  `sql_api: "hrana-v3"` 使用 SDK 默认原生通道,省略 `protocol`。每次操作发送参数化 execute + close pipeline:
32
32
 
@@ -4,14 +4,14 @@ description: 使用 Tiana 创建、修改、预览和发布 Web 应用。用户
4
4
  license: Apache-2.0
5
5
  metadata:
6
6
  author: Tiana Cloud
7
- version: "1.0.13"
7
+ version: "1.0.15"
8
8
  parent: tiana
9
9
  source: https://github.com/tianacloud/agent-skills/tree/main/skills/tiana-web
10
10
  ---
11
11
 
12
12
  # Tiana Web
13
13
 
14
- 安装、登录和通用实例管理见 [Tiana](../tiana/SKILL.md),SQL 与连接见 [Tiana SQLite](../tiana-sqlite/SKILL.md),后端服务见 [Tiana Function](../tiana-function/SKILL.md),源码见 [Tiana Git](../tiana-git/SKILL.md)。
14
+ 安装、登录和通用实例管理见 `tiana` 技能,SQL 与连接见 `tiana-sqlite` 技能,后端服务见 `tiana-function` 技能,源码见 `tiana-git` 技能。
15
15
 
16
16
  ## 每个会话一次的更新检查
17
17
 
@@ -19,9 +19,9 @@ metadata:
19
19
 
20
20
  CLI 与 Skills 各自独立比较本包的 npm 最新正式版。下面的版本检查与安装只访问公共包仓库,不需要 Tiana 登录,不操作 Tiana 云端资源;用户要求暂不登录或不操作云端资源时仍执行。用户明确要求离线、禁止联网或禁止安装时遵从该限制。
21
21
 
22
- 1. 执行 `tiana version`,按[开始使用](../tiana/references/getting-started.md)核验最低版本;缺少 CLI 或版本过低时,自动安装 npm latest 正式版并重新核验。
22
+ 1. 执行 `tiana version`,按 `tiana` 技能的“开始使用”指引核验最低版本;缺少 CLI 或版本过低时,自动安装 npm latest 正式版并重新核验。
23
23
  2. CLI 满足最低版本后,从本会话实际加载的 SKILL.md 的 `metadata.version` 取得 `SKILLS_VERSION`,在同一次 shell 调用中赋值并**实际执行** `tiana version check --skills-version "$SKILLS_VERSION" --json`。这一步检查是否有更新版本。
24
- 3. `updates` 中 CLI 或 Skills 有新正式版时,**自动安装各项实际返回的 `latest_version`,无需再次询问**;`should_notify=false` 也执行。Skills 按新版包完整安装,覆盖已有技能并补齐新增技能。各连接器初始版本仅用于分发,后续更新独立于连接器发版;安装目标及重载按[更新流程](../tiana/references/getting-started.md#更新),连接器内使用时再读其中链接的宿主说明。
24
+ 3. `updates` 中 CLI 或 Skills 有新正式版时,**自动安装各项实际返回的 `latest_version`,无需再次询问**;`should_notify=false` 也执行。Skills 按新版包完整安装,覆盖已有技能并补齐新增技能。各连接器初始版本仅用于分发,后续更新独立于连接器发版;安装目标及重载按 `tiana` 技能的“更新”指引,连接器内使用时再读其中链接的宿主说明。
25
25
  4. 在对话中简短报告实际 CLI/Skills 版本、检查状态与更新结果(包括新增技能及是否需要重载);检查不可用时明确说明未能确认是否有新版,更新失败时说明实际错误。
26
26
 
27
27
  实际发起检查命令后才记录已尝试,保留检查结果或执行错误,以及两个包的安装与核验结果。各 Tiana 技能共享这份记录;后续轮次、重复加载或切换技能复用记录,每个包失败后本会话不自动重试。上下文压缩或任务交接时保留记录,新会话重新检查。仅运行 `tiana version` 只完成第 1 步。
@@ -40,13 +40,13 @@ CLI 仍管理检查缓存和共同的 24 小时提醒额度;该额度不限制
40
40
 
41
41
  **每次创建、修改或普通发布 Web 应用,都必须实际执行 `tiana web list-template --json`。同一会话之前查过、记得某个模板、用户未提模板,都不能代替这次调用。** 有 `data.next_cursor` 时,以 `--after CURSOR` 继续查询本次需求需要的目录页。检查命令实际成功;当前目录不可用时说明结果并按通用方式继续,不能从旧列表选包。
42
42
 
43
- 用户只需描述应用。根据本次返回的 `name`、`description` 判断核心功能、数据模型与可定制范围:合适的模板可加速制作,局部差异在工程中修改;没有合适模板就直接开发。已有工程继续修改自己的工程。以需求为依据决定,不要求用户选择模板,也不硬编码模板名称或模板版本。
43
+ 用户只需描述应用。根据本次返回的 `display_name`、`description` 判断核心功能、数据模型与可定制范围:合适的模板可加速制作,局部差异在工程中修改;没有合适模板就直接开发。已有工程继续修改自己的工程。以需求为依据决定,不要求用户选择模板,也不硬编码模板名称或模板版本。
44
44
 
45
45
  ## 选择数据访问方式
46
46
 
47
47
  简单应用优先直接访问 SQLite。复杂业务、敏感数据或配置、需要限制用户可见数据时,采用后端服务,必须阅读[带后端服务的 Web 开发流程](references/backend-apps.md)。默认复用 Web 的 Git,后端私有数据库不绑定 Web。
48
48
 
49
- 本 skill 负责选择访问方式、前端开发、Web 资源绑定、预览、发布与分享验收。后端的创建、源码、参数配置与读取、数据库访问和编译发布由 [Tiana Function](../tiana-function/SKILL.md)负责;取得后端发布结果后回到本流程完成前端接入。
49
+ 本 skill 负责选择访问方式、前端开发、Web 资源绑定、预览、发布与分享验收。后端的创建、源码、参数配置与读取、数据库访问和编译发布由 `tiana-function` 技能负责;取得后端发布结果后回到本流程完成前端接入。
50
50
 
51
51
  ## 展示当前用户
52
52
 
@@ -56,12 +56,12 @@ CLI 仍管理检查缓存和共同的 24 小时提醒额度;该额度不限制
56
56
 
57
57
  ## 创建、初始化和发布
58
58
 
59
- 1. 阅读 [Web 开发与发布](references/csr-apps.md);前端直连模式再读 [JavaScript 连接](../tiana-sqlite/references/js-sdk.md)。新应用默认为本次需求创建所需的 SQLite 和 Git 实例,并等待就绪、保存实际 ID;仅在用户明确指定已有实例时核实后复用。修改已有工程时沿用其已确认绑定。实例名称按当前应用命名,模板变量使用 CLI 回执中的 ID。先确定最终入口路径;创建 Web 时用 `--entry` 固定入口,按所选访问方式配置数据库或后端服务绑定,并配置 Git 绑定,并等就绪。Web ID 取 `web create` 返回的 `data.id`。
59
+ 1. 阅读 [Web 开发与发布](references/csr-apps.md);前端直连模式转 `tiana-sqlite` 技能,按其“JavaScript 数据库连接”指引确认目标实例、分支、SDK 与连接方式,再回到本流程接入前端。新应用默认为本次需求创建所需的 SQLite 和 Git 实例,并等待就绪、保存实际 ID;仅在用户明确指定已有实例时核实后复用。修改已有工程时沿用其已确认绑定。实例名称按当前应用命名,模板变量使用 CLI 回执中的 ID。先确定最终入口路径;创建 Web 时用 `--entry` 固定入口,按所选访问方式配置数据库或后端服务绑定,并配置 Git 绑定,并等就绪。Web ID 取 `web create` 返回的 `data.id`。
60
60
  2. 采用模板时,执行 `tiana web init-template NAME --dir PROJECT_DIR --json`。PROJECT_DIR 是用户项目的不存在目录,位于技能安装目录之外。CLI 下载并原样解压;按 [模板初始化](references/template-init.md)读取工程根部 `metadata.json`,由 Agent 完成全部变量替换及 SQLite 数据初始化。
61
61
  3. 直接开发时,使用 [固定 index.html](references/index.html)、哈希路由、支持动态账号鉴权的 SDK,按实际数据库结构编写应用及构建清单。
62
62
  4. **模板和直接开发都由 Agent 处理数据库初始化。** 模板先执行已配置且存在的 schema,再执行已配置且存在的 seeds;两项独立跳过,SQL 失败先核对结果并停止后续发布。普通源码开发还须按[模板素材文件](references/template-files.md)准备新 Web ID 的预置素材;`web publish` 只发布程序包。
63
63
  5. 构建前按[应用图标](references/csr-apps.md#应用图标)准备真实 PNG:使用用户指定图片或已有的合适图标;需要制作时优先调用可用的 AI 生图工具,以应用核心功能设计图形图标。图片保存到源码,查看缩小后的效果,并核验干净构建根目录和发布包中都有该图片。
64
- 6. 按用户需求完成交互和定制。采用后端服务时,先完成[后端交接与接入验证](references/backend-apps.md),再交付可用前端。安装依赖并从确定源码提交构建;按 [源码版本流程](../tiana-git/references/source-releases.md)完成源码同步,用 `web publish` 发布当前归档,再用 `web status --publish-id` 核对。除非用户仅要求本地开发,交付实际托管地址、资源 ID 和对应源码提交;未验证的阶段如实说明。
64
+ 6. 按用户需求完成交互和定制。采用后端服务时,先完成[后端交接与接入验证](references/backend-apps.md),再交付可用前端。安装依赖并从确定源码提交构建;转 `tiana-git` 技能完成源码同步,带回 Git 实例 ID、完整提交号和远端同步结果后,用 `web publish` 发布当前归档,再用 `web status --publish-id` 核对。除非用户仅要求本地开发,交付实际托管地址、资源 ID 和对应源码提交;未验证的阶段如实说明。
65
65
 
66
66
  ## 素材、文件上传、预览与下载
67
67
 
@@ -1,6 +1,6 @@
1
1
  # 带后端服务的 Web 开发流程
2
2
 
3
- 仅在应用需要后端时使用。Web skill 负责以下编排与浏览器验收;后端实现交给 [Tiana Function](../../tiana-function/SKILL.md),具体命令、参数格式和 Go 示例由该 skill 维护。
3
+ 仅在应用需要后端时使用。Web skill 负责以下编排与浏览器验收;后端实现交给 `tiana-function` 技能,具体命令、参数格式和 Go 示例由该 skill 维护。
4
4
 
5
5
  ## 1. 确定共仓资源
6
6
 
@@ -58,7 +58,7 @@ export async function mount(root) {
58
58
  const canManageApp = session.is_app_owner === true;
59
59
  ```
60
60
 
61
- App 作者是当前 Web 的创建者,`role` 的 `tenant_owner` 表示访问者自己所选租户的所有者,不能用来判断 App 作者。模板安装产生的新 Web 以新创建者为作者。前端判断用于展示;敏感操作交给 [Tiana Function](../../tiana-function/references/go-backend.md#app-作者与初始权限)在后端通过 `caller.IsAppOwner()` 校验。初始化数据和权限管理接口在每次请求中检查,不能仅隐藏按钮。配套 CLI Web 本地预览也返回 `is_app_owner`,正式分享仍需用作者与其他账号分别验收。
61
+ App 作者是当前 Web 的创建者,`role` 的 `tenant_owner` 表示访问者自己所选租户的所有者,不能用来判断 App 作者。模板安装产生的新 Web 以新创建者为作者。前端判断用于展示;敏感操作交给 `tiana-function` 技能的“App 作者与初始权限”指引在后端通过 `caller.IsAppOwner()` 校验。初始化数据和权限管理接口在每次请求中检查,不能仅隐藏按钮。配套 CLI Web 本地预览也返回 `is_app_owner`,正式分享仍需用作者与其他账号分别验收。
62
62
 
63
63
  ## 选择后端与确认资源
64
64
 
@@ -66,19 +66,19 @@ App 作者是当前 Web 的创建者,`role` 的 `tenant_owner` 表示访问者
66
66
 
67
67
  ## 直连 SQLite:确认账号与数据库
68
68
 
69
- 已确认 CLI 具备本流程命令时直接使用。命令缺失时按[开始使用](../../tiana/references/getting-started.md)安装匹配版本。
69
+ 已确认 CLI 具备本流程命令时直接使用。命令缺失时按 `tiana` 技能的“开始使用”指引安装匹配版本。
70
70
 
71
71
  1. 复用本轮已完成的账号和额度检查;尚未检查时执行 `tiana status`。需要登录时,按分步登录流程展示链接并确认完成,不读取或输出凭据。
72
72
  2. 项目已记录且已核实可用的数据库实例 ID 可直接复用,无需列举实例。否则用 `tiana sqlite list/show` 查找;确实没有可用数据库时执行一次 `tiana sqlite create NAME --wait`,保存完整实例 ID。中断后核实原请求和实例,不重复创建。
73
- 3. 复用已提供的实际表结构;缺少时执行 `tiana sqlite shell INSTANCE -e "SELECT name, sql FROM sqlite_schema WHERE type='table' ORDER BY name LIMIT 100" --format json`。将表结构和迁移文件保存在项目中。对已核对的 SQL 文件执行 `tiana sqlite shell INSTANCE -f schema.sql --format json`。`-e` 接受一条语句,多语句使用 `-f`。动态数据按 [JavaScript 数据库连接](../../tiana-sqlite/references/js-sdk.md)使用参数化 SQL。
73
+ 3. 复用已提供的实际表结构;缺少时执行 `tiana sqlite shell INSTANCE -e "SELECT name, sql FROM sqlite_schema WHERE type='table' ORDER BY name LIMIT 100" --format json`。将表结构和迁移文件保存在项目中。对已核对的 SQL 文件执行 `tiana sqlite shell INSTANCE -f schema.sql --format json`。`-e` 接受一条语句,多语句使用 `-f`。动态数据按 `tiana-sqlite` 技能的“JavaScript 数据库连接”指引使用参数化 SQL。
74
74
  4. 复用项目中已记录、已核实的 Web ID;未记录时先用 `tiana web list --json` 查找并核实,重名时依据实际 ID 确认归属;首次创建时执行一次 `tiana web create "应用名称" -m "应用描述" --entry assets/app.js --database-instance-id DATABASE_ID --json`,保存返回的 `data.id`。Web ID 仅由 MGR 生成;CLI 不生成或提交 Web ID;描述为可选元数据(`-m`/`--description`,最多 1024 个 UTF-8 字节),名称仅用于展示,不能用名称推导 ID,不能自行指定 ID。结果未知时保持名称、描述和所有创建参数不变,重复同一条 create 命令恢复原请求,不删除待完成记录、不另发创建请求。成功后继续构建、预览或发布时复用该 ID,不重复创建。
75
75
  5. 将非敏感 Web ID 和数据库 ID 保存在项目交付记录中。entry 仅能在 create 指定,包括省略后的纯文件托管类型;创建后不可修改,publish/serve 都不能覆盖。数据库和 Git 绑定在创建时确定;名称、备注在 Console 实例基础信息编辑。
76
76
 
77
77
  ## 直连 SQLite:运行时数据库连接
78
78
 
79
- SDK、参数化 SQL 和结果解析按 [JavaScript 数据库连接](../../tiana-sqlite/references/js-sdk.md)处理。应用必须使用支持 `auth` 的 SDK 和 `window.tiana.auth` provider;`window.tiana.connection()` 用于获取连接元信息。共享 provider 和 adapter,不读取 Token 快照,不保留旧 SDK、旧 Bootstrap 或实例 Token 回退路径。
79
+ SDK、参数化 SQL 和结果解析按 `tiana-sqlite` 技能的“JavaScript 数据库连接”指引处理。应用必须使用支持 `auth` 的 SDK 和 `window.tiana.auth` provider;`window.tiana.connection()` 用于获取连接元信息。共享 provider 和 adapter,不读取 Token 快照,不保留旧 SDK、旧 Bootstrap 或实例 Token 回退路径。
80
80
 
81
- CLI 本地预览优先复用已保存的 CLI 登录,通过一次性本地启动链接授权浏览器;凭据刷新和持久化锁由 CLI/SDK 负责,refresh token 不交给页面。没有可用的已保存账号时才走独立 Console 登录。配套 Web/MGR 托管 Bootstrap 也提供 `window.tiana.auth`,由现有 HttpOnly 登录会话在服务端取得并同步账号授权。账号/租户级 access token 的权限不局限于应用目标实例,业务代码应在相应信任范围内运行。用户要求验证或排查连接故障时,按 [目标托管环境核验](../../tiana-sqlite/references/js-sdk.md#核验目标托管环境)检查实际 provider 和只读 SQL 链路。模板应用常规发布后由用户检查页面;没有运行时验证结果不等于确认缺失,也不代表链路已连通。
81
+ CLI 本地预览优先复用已保存的 CLI 登录,通过一次性本地启动链接授权浏览器;凭据刷新和持久化锁由 CLI/SDK 负责,refresh token 不交给页面。没有可用的已保存账号时才走独立 Console 登录。配套 Web/MGR 托管 Bootstrap 也提供 `window.tiana.auth`,由现有 HttpOnly 登录会话在服务端取得并同步账号授权。账号/租户级 access token 的权限不局限于应用目标实例,业务代码应在相应信任范围内运行。用户要求验证或排查连接故障时,按 `tiana-sqlite` 技能的“核验目标托管环境”指引检查实际 provider 和只读 SQL 链路。模板应用常规发布后由用户检查页面;没有运行时验证结果不等于确认缺失,也不代表链路已连通。
82
82
 
83
83
  凭据只保存在内存,不写入源码、构建产物或浏览器持久存储。skills 不读取 refresh token、不调用刷新接口、不设置管理地址;刷新和授权同步由 SDK/CLI 或运行时代理处理,部署路由由外围环境负责。鉴权失败不自动重放 SQL,写入结果不明时先用独立只读查询核实。
84
84
 
@@ -100,7 +100,7 @@ CLI 本地预览优先复用已保存的 CLI 登录,通过一次性本地启
100
100
 
101
101
  输出浏览器可直接执行的 ES 模块、CSS 和资源,引用使用相对路径。Vite 库模式在顶层配置 `define: { 'process.env.NODE_ENV': JSON.stringify('production') }`,并验证产物无残留引用。入口与资源路径以实际工程的构建配置为准;入口模块自行加载 CSS。不要生成或读取 tiana.app.json,不提交 style、rendering、routing 参数。
102
102
 
103
- Site 参数来自 MGR 的 web_project:name、description、固定 entry、可选 database_instance_id 和 git_instance_id。首次创建可传 `--entry assets/app.js --database-instance-id DATABASE_ID --git-instance-id GIT_ID`,后端模式省略数据库绑定。已有项目沿用创建时的固定关联,名称、备注在 Console 实例基础信息编辑;后端绑定使用 `web functions get/set`。源码提交记录与远程引用核验见[源码发布](../../tiana-git/references/source-releases.md),从确定提交构建并保存对应发布回执。
103
+ Site 参数来自 MGR 的 web_project:name、description、固定 entry、可选 database_instance_id 和 git_instance_id。首次创建可传 `--entry assets/app.js --database-instance-id DATABASE_ID --git-instance-id GIT_ID`,后端模式省略数据库绑定。已有项目沿用创建时的固定关联,名称、备注在 Console 实例基础信息编辑;后端绑定使用 `web functions get/set`。源码提交记录与远程引用核验见 `tiana-git` 技能的“应用源码与版本发布”指引,从确定提交构建并保存对应发布回执。
104
104
 
105
105
  CLI 将目录打包为 ZIP Store/Deflate 的一个 `.tweb`,根目录是零字节 web.yaml 与 data/。web.yaml 预留 Web server 配置,与 Site 参数无关,目前为空。data/ 前缀不对外暴露,底层只提供 GET/HEAD 精确文件访问,没有目录索引、默认 index.html 或 SPA fallback;底层可托管 HTML,带 entry 的 Site 使用固定 CSR/hash Bootstrap。
106
106
 
@@ -120,7 +120,7 @@ CLI 将目录打包为 ZIP Store/Deflate 的一个 `.tweb`,根目录是零字
120
120
 
121
121
  ## 预览与发布
122
122
 
123
- 需要源码关联时,先按[应用源码与版本发布](../../tiana-git/references/source-releases.md)完成已授权的 Git 同步,再构建该提交的产物。纯个人静态站无需数据库或 Git 实例。
123
+ 需要源码关联时,先按 `tiana-git` 技能的“应用源码与版本发布”指引完成已授权的 Git 同步,再构建该提交的产物。纯个人静态站无需数据库或 Git 实例。
124
124
 
125
125
  1. 用户需要本地预览时执行 `tiana web serve WEB_ID --dir DIST --port 4174`。CLI 先读取 MGR 项目和固定 entry,不能用本地参数覆盖。
126
126
  2. 核验账号与配套环境。CLI 用登录账号读取 MGR 的项目参数;数据管控优先使用互斥的 `TIANA_TOKEN` / `TIANA_TOKEN_FILE`,否则使用该账号有效 access token。Endpoint、Instance、Group、Tenant Token 只要有效且作用域覆盖目标,均可用于发布;不要求签发或保存实例 Token,不读取 `instance-tokens.json`。显式凭据错误或拒绝时不回退、不重发;凭据不写入构建目录。
@@ -144,7 +144,7 @@ tiana web status WEB_ID --json
144
144
 
145
145
  用 `tiana web list --json` 核对当前账号拥有的 Web 应用,优先使用已保存的真实 ID。用户明确要求删除时,执行 `tiana web delete WEB_ID --force`;需要等待源站清理完成时加 `--wait --json`。不得把失败恢复、重新发布或清理本地构建目录当作删除云端应用的授权。
146
146
 
147
- 删除会关闭应用入口并通过 Web 实例生命周期清理当前归档,关联 SQLite、Git 不随之删除。只收到 `state: deleting` 时报告已受理;收到 `state: deleted` 才报告本次源站清理完成。空应用、上传中和已发布的应用均可删除;本地仍有未完成的 CLI 创建操作时,先按原请求恢复该操作。已受理的删除等待 Control 确认实例存储删除完成,MGR 不枚举或删除 S3 对象;公开缓存按缓存策略失效。中断后保留待完成记录,用原 ID 恢复,详情见[CLI 命令](../../tiana/references/cloud-cli.md)。
147
+ 删除会关闭应用入口并通过 Web 实例生命周期清理当前归档,关联 SQLite、Git 不随之删除。只收到 `state: deleting` 时报告已受理;收到 `state: deleted` 才报告本次源站清理完成。空应用、上传中和已发布的应用均可删除;本地仍有未完成的 CLI 创建操作时,先按原请求恢复该操作。已受理的删除等待 Control 确认实例存储删除完成,MGR 不枚举或删除 S3 对象;公开缓存按缓存策略失效。中断后保留待完成记录,用原 ID 恢复,详情见 `tiana` 技能的“CLI 命令与恢复”指引。
148
148
 
149
149
  ## 应用文件
150
150
 
@@ -10,7 +10,7 @@
10
10
 
11
11
  沿用[分享模板](share-template.md)对结构、seed 和公开内容的筛选。后端服务参数只导出明确可公开的业务初值;数据库 Endpoint/Token 在安装时生成。源码、JSON、SQL、前端 bundle、source map 和展示材料均检查凭据和私有数据。
12
12
 
13
- 第三方 API Key 等不能作为公开参数初值分发;在模板说明中列出参数名与用途,由安装者按 [Tiana Function 参数配置](../../tiana-function/references/commands.md#参数配置与生效)填写自己的值并验证。数据库参数映射不代替第三方密钥配置;尚未配置的功能明确标为待配置。
13
+ 第三方 API Key 等不能作为公开参数初值分发;在模板说明中列出参数名与用途,由安装者按 `tiana-function` 技能的“参数配置与生效”指引填写自己的值并验证。数据库参数映射不代替第三方密钥配置;尚未配置的功能明确标为待配置。
14
14
 
15
15
  ## 组织 metadata.json
16
16
 
@@ -1,6 +1,6 @@
1
1
  # 使用模板工程
2
2
 
3
- 模板目录来自本次 `tiana web list-template --json` 实际返回的数据。每页 `data.items` 含 name、display_name、description、status 和变量摘要;CLI 的 `--after` 查询下一页。即使 items 为空,存在 next_cursor 时仍继续需要的页。选择符合用户核心功能与数据结构的工程;没有匹配项时按通用 Web 方法制作。
3
+ 模板目录来自本次 `tiana web list-template --json` 实际返回的数据。每页 `data.items` 含 name、display_name、description;CLI 的 `--after` 查询下一页。即使 items 为空,存在 next_cursor 时仍继续需要的页。选择符合用户核心功能与数据结构的工程;没有匹配项时按通用 Web 方法制作。
4
4
 
5
5
  新应用默认由 Agent 创建所需的 SQLite 和 Git,按当前应用命名并保存 CLI 返回的实际实例 ID;用户明确指定已有实例时核实后复用。保存资源回执后执行:
6
6
 
@@ -72,4 +72,4 @@ SQL 返回失败、断线或未知结果时停止后续发布,用独立只读
72
72
 
73
73
  ## 构建和来源
74
74
 
75
- 模板 `source.repository`、`source.commit` 说明下载包的源工程来源,区别于用户应用自己的 Git 提交。创建用户仓库后记录实际 git_instance_id;提交和构建按 [源码流程](../../tiana-git/references/source-releases.md)。按下载工程的 README 和构建脚本确定命令、入口与产物目录。创建 Web 时传入实际 entry 和 Git 绑定;直连模式的数据库绑定必须与本次执行 schema/seeds 的 SQLite 一致。源码提交号记录为构建证据。核对模块、资源及 MGR Web 项目的 SQLite/Git 绑定后执行 `web publish`,再用 publish_id 查询状态。
75
+ 模板 `source.repository`、`source.commit` 说明下载包的源工程来源,区别于用户应用自己的 Git 提交。创建用户仓库后记录实际 git_instance_id;提交和构建按 `tiana-git` 技能的“应用源码与版本发布”指引。按下载工程的 README 和构建脚本确定命令、入口与产物目录。创建 Web 时传入实际 entry 和 Git 绑定;直连模式的数据库绑定必须与本次执行 schema/seeds 的 SQLite 一致。源码提交号记录为构建证据。核对模块、资源及 MGR Web 项目的 SQLite/Git 绑定后执行 `web publish`,再用 publish_id 查询状态。