@tianacloud/agent-skills 1.0.12 → 1.0.14
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 +4 -3
- package/package.json +5 -3
- package/plugin.json +1 -1
- package/skills/tiana/SKILL.md +8 -7
- package/skills/tiana/references/cloud-cli.md +2 -2
- package/skills/tiana/references/instances-and-tokens.md +1 -1
- package/skills/tiana/references/windows-git-helper.md +1 -1
- package/skills/tiana-function/SKILL.md +5 -5
- package/skills/tiana-function/references/commands.md +5 -3
- package/skills/tiana-function/references/go-backend.md +16 -12
- package/skills/tiana-git/SKILL.md +7 -7
- package/skills/tiana-git/references/source-releases.md +1 -1
- package/skills/tiana-secrets/SKILL.md +44 -0
- package/skills/tiana-sqlite/SKILL.md +5 -5
- package/skills/tiana-sqlite/references/js-sdk.md +1 -1
- package/skills/tiana-web/SKILL.md +8 -8
- package/skills/tiana-web/references/backend-apps.md +1 -1
- package/skills/tiana-web/references/csr-apps.md +8 -8
- package/skills/tiana-web/references/function-templates.md +1 -1
- package/skills/tiana-web/references/template-init.md +2 -2
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Tiana Agent Skills
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
六个基础技能覆盖 Tiana 账号与实例、SQLite、Git、后端服务、密钥和 Web 应用。应用模板由在线目录提供,用户描述需求后,Agent 根据实时目录决定使用模板还是直接开发。
|
|
4
4
|
|
|
5
5
|
## 从 npm 安装
|
|
6
6
|
|
|
@@ -24,9 +24,9 @@ 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
|
|
27
|
+
WorkBuddy、豆包按所用版本的目录/ZIP 导入方式加载这六个目录,保留 SKILL.md 和 references。若要求 ZIP,可将每个技能目录的内容打包,SKILL.md 位于包根部。WorkBuddy 专用本地化 ZIP 由维护者构建流程提供;本仓验证 ZIP 格式和内容,不声称已验收这些客户端的运行行为。
|
|
28
28
|
|
|
29
|
-
##
|
|
29
|
+
## 六个入口
|
|
30
30
|
|
|
31
31
|
| 技能 | 职责 |
|
|
32
32
|
| --- | --- |
|
|
@@ -34,6 +34,7 @@ WorkBuddy、豆包按所用版本的目录/ZIP 导入方式加载这五个目
|
|
|
34
34
|
| [tiana-sqlite](skills/tiana-sqlite/SKILL.md) | SQL、表结构、SDK 连接和数据库分支 |
|
|
35
35
|
| [tiana-git](skills/tiana-git/SKILL.md) | Git 实例、原生仓库操作和源码版本同步 |
|
|
36
36
|
| [tiana-function](skills/tiana-function/SKILL.md) | Go 后端服务源码、构建发布、参数/CORS 与数据库后端 |
|
|
37
|
+
| [tiana-secrets](skills/tiana-secrets/SKILL.md) | 用户密钥库初始化、名称与版本列表、写入和删除 |
|
|
37
38
|
| [tiana-web](skills/tiana-web/SKILL.md) | 实时模板选择、工程与数据初始化、通用开发、构建发布 |
|
|
38
39
|
|
|
39
40
|
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.
|
|
3
|
+
"version": "1.0.14",
|
|
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.
|
|
4
|
+
"version": "1.0.14",
|
|
5
5
|
"description": "Tiana Cloud account, SQLite, Git, Functions and Web application workflows",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Tiana Cloud",
|
package/skills/tiana/SKILL.md
CHANGED
|
@@ -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。
|
|
3
|
+
description: 使用 Tiana Cloud 管理实例、安装 CLI、登录和恢复账号会话。通用 Tiana 任务从此技能开始;Web 应用创建发布使用 tiana-web,数据库和分支使用 tiana-sqlite,Git 仓库和源码同步使用 tiana-git,后端服务与数据库后端使用 tiana-function,用户密钥管理使用 tiana-secrets。
|
|
4
4
|
license: Apache-2.0
|
|
5
5
|
metadata:
|
|
6
6
|
author: Tiana Cloud
|
|
7
|
-
version: "1.0.
|
|
7
|
+
version: "1.0.14"
|
|
8
8
|
source: https://github.com/tianacloud/agent-skills/tree/main/skills/tiana
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -31,13 +31,14 @@ CLI 仍管理检查缓存和共同的 24 小时提醒额度;该额度不限制
|
|
|
31
31
|
|
|
32
32
|
| 任务 | 技能 |
|
|
33
33
|
| --- | --- |
|
|
34
|
-
| 创建、修改、预览、发布 Web 应用 |
|
|
35
|
-
| Go 后端服务、源码、参数及编译发布 |
|
|
36
|
-
| SQLite 查询、连接、建表及数据库分支 |
|
|
37
|
-
| Git 实例、仓库、源码版本同步 |
|
|
34
|
+
| 创建、修改、预览、发布 Web 应用 | `tiana-web` 技能 |
|
|
35
|
+
| Go 后端服务、源码、参数及编译发布 | `tiana-function` 技能 |
|
|
36
|
+
| SQLite 查询、连接、建表及数据库分支 | `tiana-sqlite` 技能 |
|
|
37
|
+
| Git 实例、仓库、源码版本同步 | `tiana-git` 技能 |
|
|
38
|
+
| 用户密钥库初始化、名称列表、写入与删除 | `tiana-secrets` 技能 |
|
|
38
39
|
| 登录、账号、额度、通用实例管理 | 本技能 |
|
|
39
40
|
|
|
40
|
-
|
|
41
|
+
组合请求中,安装完成后继续用户要求的任务。需要其他技能时,按技能名加载对应技能,携带当前任务、已确认的资源 ID 和已完成结果;完成所需步骤后,带回操作结果继续当前任务。技能内部的参考资料按该技能提供的链接读取。
|
|
41
42
|
|
|
42
43
|
## 管理实例
|
|
43
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 分支操作使用
|
|
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 命令,详细边界见
|
|
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 要求、调用示例和失败恢复见
|
|
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` 检查。入口恢复后,再按
|
|
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)。
|
|
@@ -4,16 +4,16 @@ description: 使用 Tiana 创建和管理 Go 后端服务,读取及保存 Git
|
|
|
4
4
|
license: Apache-2.0
|
|
5
5
|
metadata:
|
|
6
6
|
author: Tiana Cloud
|
|
7
|
-
version: "1.0.
|
|
7
|
+
version: "1.0.14"
|
|
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 开发后端时,接收
|
|
14
|
+
本 skill 负责后端服务的创建与管理、源码、运行参数、Go 接口及数据库访问、编译发布。为 Web 开发后端时,接收 `tiana-web` 技能确定的 Git ID、接口需求和数据依赖;完成后返回服务 ID、source_dir、发布回执、接口契约和参数生效结果,由 Web skill 继续前端接入、绑定、发布及分享验收。
|
|
15
15
|
|
|
16
|
-
安装、账号与环境选择按
|
|
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,13 +21,13 @@ 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 保存;不强推主分支。多文件或二进制资源也可按
|
|
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
|
|
30
|
+
数据库 Endpoint 使用明文参数;Token 和第三方密钥先通过 `tiana-secrets` 技能写入用户密钥库,再保存为后端服务的密钥引用参数,不写入 Git、前端源码、业务响应或日志。缺少实际凭据时说明待配置项,不使用占位值宣称联调成功。Web 的数据访问方式、资源绑定与模板制作由 Tiana Web 负责。
|
|
31
31
|
|
|
32
32
|
调用方身份通过 SDK 从请求上下文读取,业务需要区分用户数据时使用该身份,不能相信请求体中自报的用户 ID。完成接口核验后,将所需调用身份与数据范围一并交给 Web skill 验证。
|
|
33
33
|
|
|
@@ -60,10 +60,12 @@ set 替换整个参数对象。get 的 JSON 回执从 `data.parameters` 取出
|
|
|
60
60
|
{
|
|
61
61
|
"MESSAGE": {"kind": "plain", "value": "欢迎使用订单服务"},
|
|
62
62
|
"SQLITE_ENDPOINT": {"kind": "plain", "value": "<实际数据库 Endpoint>"},
|
|
63
|
-
"SQLITE_TOKEN": {"kind": "
|
|
63
|
+
"SQLITE_TOKEN": {"kind": "secret", "value": "production/database/token"}
|
|
64
64
|
}
|
|
65
65
|
```
|
|
66
66
|
|
|
67
|
+
先通过 `tiana-secrets` 技能写入敏感值,再将其 key 配为 secret;plain 保存明文,secret 只保存引用名称。
|
|
68
|
+
|
|
67
69
|
含凭据的文件放在 Git 和前端构建目录之外,使用仅当前用户可读写的临时文件,用完删除。get 和 set 回执都可能包含参数值,同样写入受限临时文件处理,不打印到对话或交付日志。仅报告参数名称与生效状态。
|
|
68
70
|
|
|
69
71
|
核对 set 返回的 `data.application`:
|
|
@@ -74,7 +76,7 @@ set 替换整个参数对象。get 的 JSON 回执从 `data.parameters` 取出
|
|
|
74
76
|
| `next_start` | 配置已保存,下次启动使用;调用已发布的服务完成唤醒并验证。 |
|
|
75
77
|
| `pending` | 已保存但当前执行尚未确认收到。可在 Console 点击「重试下发」,再核对结果;不能报告已生效。 |
|
|
76
78
|
|
|
77
|
-
更新参数无需重新编译。Go 读取与使用按[Go 后端服务开发](go-backend.md)
|
|
79
|
+
更新参数无需重新编译。Go 读取与使用按[Go 后端服务开发](go-backend.md);验证数据库连接或上游调用是否成功,不通过回显密钥来验证。参数读取、必需值缺失和下游拒绝都要有明确业务错误。密钥引用变化在下次冷启动生效;当前执行首次读取成功后缓存值,验证轮换时需要新的冷启动。
|
|
78
80
|
|
|
79
81
|
## CORS
|
|
80
82
|
|
|
@@ -110,6 +112,6 @@ tiana function delete FUNCTION_ID --force --wait --json
|
|
|
110
112
|
|
|
111
113
|
## 交付 Web 使用
|
|
112
114
|
|
|
113
|
-
为 Web 开发后端时,将服务 ID、源码 Git 和 source_dir、发布回执、接口契约及参数生效结果交回
|
|
115
|
+
为 Web 开发后端时,将服务 ID、源码 Git 和 source_dir、发布回执、接口契约及参数生效结果交回 `tiana-web` 技能,继续其“后端交接与接入验证”流程。Web 绑定、前端预览与模板安装由该 skill 负责。
|
|
114
116
|
|
|
115
117
|
源码目录支持根目录 `/`,创建后固定。服务改名不改路径,保存提交信息为 `Save source of <当前服务名称>`。多个入口目录可共用上级 go.mod;同仓同目录也可被多个服务共享。
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
# Go 后端服务开发
|
|
2
2
|
|
|
3
|
-
后端服务是监听 `PORT` 环境变量指定端口的 Go HTTP 程序。平台固定 Go 1.26 工具链。source_dir 包含 package main,所属 go.mod
|
|
3
|
+
后端服务是监听 `PORT` 环境变量指定端口的 Go HTTP 程序。平台固定 Go 1.26 工具链。source_dir 包含 package main,所属 go.mod 可在该目录或仓库内上级目录,多个入口可共享模块;依赖由构建流程下载。本页的 Get(value, error) 与密钥引用示例使用下列配套 SDK;将解析后的 go.mod、go.sum 一起保存到源码仓库。
|
|
4
|
+
|
|
5
|
+
```sh
|
|
6
|
+
go get github.com/tianacloud/sdk-go@v1.1.0-function.4.0.20261102183840-52d162f75066
|
|
7
|
+
```
|
|
4
8
|
|
|
5
9
|
最小程序返回 JSON:
|
|
6
10
|
|
|
@@ -36,14 +40,14 @@ if err != nil {
|
|
|
36
40
|
http.Error(w, "读取参数失败", http.StatusInternalServerError)
|
|
37
41
|
return
|
|
38
42
|
}
|
|
39
|
-
message,
|
|
40
|
-
if
|
|
43
|
+
message, err := params.Get("MESSAGE")
|
|
44
|
+
if err != nil {
|
|
41
45
|
http.Error(w, "尚未配置欢迎语", http.StatusInternalServerError)
|
|
42
46
|
return
|
|
43
47
|
}
|
|
44
48
|
```
|
|
45
49
|
|
|
46
|
-
导入 `github.com/tianacloud/sdk-go/function`。SDK 使用平台提供的 `FUNCTION_CONFIG_FILE` 读取配置,不自行拼接宿主路径。Get
|
|
50
|
+
导入 `github.com/tianacloud/sdk-go/function`。SDK 使用平台提供的 `FUNCTION_CONFIG_FILE` 读取配置,不自行拼接宿主路径。Get 返回字符串和 error;不存在时返回 function.ErrNotExist,已配置空字符串返回 ("", nil),必需且非空的业务凭据还需检查空值。不要返回整个参数对象,其中可能有数据库凭据。
|
|
47
51
|
|
|
48
52
|
## 使用敏感配置
|
|
49
53
|
|
|
@@ -52,24 +56,24 @@ if !ok {
|
|
|
52
56
|
例如 `PAYMENT_API_KEY` 是业务自定义的第三方密钥参数名,req 是业务已创建的上游 HTTP 请求:
|
|
53
57
|
|
|
54
58
|
```go
|
|
55
|
-
apiKey,
|
|
56
|
-
if
|
|
59
|
+
apiKey, err := params.Get("PAYMENT_API_KEY")
|
|
60
|
+
if err != nil || apiKey == "" {
|
|
57
61
|
http.Error(w, "支付服务尚未配置", http.StatusServiceUnavailable)
|
|
58
62
|
return
|
|
59
63
|
}
|
|
60
64
|
req.Header.Set("Authorization", "Bearer "+apiKey)
|
|
61
65
|
```
|
|
62
66
|
|
|
63
|
-
|
|
67
|
+
按上游真实协议设置凭据,并检查调用结果。密钥仅用于后端向上游发请求;响应只返回业务需要的结果,不返回密钥或原始请求头。明文参数按配置更新;密钥参数首次读取成功后在本次执行内缓存,后续密钥变化需要新的冷启动才能读取当前值。
|
|
64
68
|
|
|
65
69
|
## 访问 SQLite
|
|
66
70
|
|
|
67
|
-
先用
|
|
71
|
+
先用 `tiana-sqlite` 技能核实数据库实例、表结构及初始化 SQL。数据库 Endpoint 和实例 Token 分别保存为后端服务参数 `SQLITE_ENDPOINT`、`SQLITE_TOKEN`,Token 在该数据库的连接管理中创建。只在后端服务内读取并传给 SDK:
|
|
68
72
|
|
|
69
73
|
```go
|
|
70
|
-
endpoint,
|
|
71
|
-
secret,
|
|
72
|
-
if
|
|
74
|
+
endpoint, endpointErr := params.Get("SQLITE_ENDPOINT")
|
|
75
|
+
secret, tokenErr := params.Get("SQLITE_TOKEN")
|
|
76
|
+
if endpointErr != nil || tokenErr != nil || endpoint == "" || secret == "" {
|
|
73
77
|
http.Error(w, "数据库参数未配置", http.StatusInternalServerError)
|
|
74
78
|
return
|
|
75
79
|
}
|
|
@@ -96,7 +100,7 @@ defer db.Close()
|
|
|
96
100
|
|
|
97
101
|
## App 作者与初始权限
|
|
98
102
|
|
|
99
|
-
在需要作者权限的 HTTP handler 内使用 Go SDK `v1.1.0-function.4
|
|
103
|
+
在需要作者权限的 HTTP handler 内使用 Go SDK `v1.1.0-function.4.0.20261102183840-52d162f75066`(包含参数 Get 错误语义和密钥引用),并将实际依赖固定到 go.mod:
|
|
100
104
|
|
|
101
105
|
```go
|
|
102
106
|
caller, present := function.CallerFromRequest(r)
|
|
@@ -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.
|
|
7
|
+
version: "1.0.14"
|
|
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、浏览器登录和通用资源恢复见
|
|
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`,按
|
|
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 按新版包完整安装,覆盖已有技能并补齐新增技能。各连接器初始版本仅用于分发,后续更新独立于连接器发版;安装目标及重载按
|
|
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 阅读
|
|
34
|
-
2. 阅读
|
|
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 构建和上传见
|
|
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 按
|
|
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
|
|
|
@@ -0,0 +1,44 @@
|
|
|
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.14"
|
|
8
|
+
parent: tiana
|
|
9
|
+
source: https://github.com/tianacloud/agent-skills/tree/main/skills/tiana-secrets
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Tiana Secrets
|
|
13
|
+
|
|
14
|
+
安装、登录、环境选择和本会话的 CLI/Skills 更新检查复用 `tiana` 技能。执行前核实 `tiana secrets --help` 包含 init、list、set、remove;若正式 CLI 尚未提供,说明配套能力未发布,使用用户已指定的候选版本或等待配套发布,不猜造其他访问方式。
|
|
15
|
+
|
|
16
|
+
## 初始化与列表
|
|
17
|
+
|
|
18
|
+
```sh
|
|
19
|
+
tiana secrets init --json
|
|
20
|
+
tiana secrets list --keyword database --page-size 50 --json
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
每个用户一个密钥库。init 复用已有实例及创建任务,只占一个实例名额;已有实例停用时不会自动启用。accepted 仅表示创建已受理,保留 instance_id、job_id 及实际状态。失败时使用 Console 原任务的重试入口;结果未知时再次 init 查询同一实例,不创建替代实例。
|
|
24
|
+
|
|
25
|
+
list 只返回名称与当前版本号,支持任意位置包含关键词。需要下一页时将返回的 next_cursor 原样传给 `--after`。只查询当前任务需要的页面,不把没有结果误认为未启用。
|
|
26
|
+
|
|
27
|
+
## 写入与删除
|
|
28
|
+
|
|
29
|
+
```sh
|
|
30
|
+
tiana secrets set production/database/password --file /private/input/secret.txt --json
|
|
31
|
+
tiana secrets remove production/database/password --force --json
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Set 的值从用户指定文件或 `--stdin` 输入,保留空字符串、空格和换行。不要把值放入命令参数、源码、对话或日志。使用运行时管道传递标准输入,避免包含值的 shell 字面量。自行创建的输入临时文件放在 Git 外、仅当前用户可读写,完成后删除;用户原文件保持原样。
|
|
35
|
+
|
|
36
|
+
Set 直接写入,不先读取密钥。新 key 从 v1 开始,值变化则版本号增加,同值不变;只保留当前值。Remove 删除整个 key,重新创建从 v1 开始。`--force` 用于已确认的删除意图;交互终端可省略并确认提示。
|
|
37
|
+
|
|
38
|
+
仅根据返回的 key、version、changed、删除结果或 List 元数据报告操作。失败和未知结果不要自动重复写入;先核对状态,不能以版本变化证明密钥值内容。普通输出、JSON、错误、诊断都不回显密钥值。
|
|
39
|
+
|
|
40
|
+
## 函数引用
|
|
41
|
+
|
|
42
|
+
写入后,把 key 交给 `tiana-function` 技能。函数参数使用 `{"kind":"secret","value":"production/database/password"}`,value 是引用名称,不是密钥明文;函数执行首次读取成功后缓存,下次冷启动读取当前值。
|
|
43
|
+
|
|
44
|
+
本技能不提供 Get、明文回显或导出,也不通过 curl、SDK 或函数接口绕过 CLI 读取明文。需要人工查看时,引导用户到 Console 输入安全口令自行操作。平台 HashiCorp Vault 运维不属于本技能。
|
|
@@ -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.
|
|
7
|
+
version: "1.0.14"
|
|
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 应用直接阅读下方应用连接指引。实例创建与登录使用
|
|
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`,按
|
|
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 按新版包完整安装,覆盖已有技能并补齐新增技能。各连接器初始版本仅用于分发,后续更新独立于连接器发版;安装目标及重载按
|
|
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 源码分支见
|
|
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/运行时代理中,不进入浏览器。完整权限边界见
|
|
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.
|
|
7
|
+
version: "1.0.14"
|
|
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
|
-
安装、登录和通用实例管理见
|
|
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`,按
|
|
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 按新版包完整安装,覆盖已有技能并补齐新增技能。各连接器初始版本仅用于分发,后续更新独立于连接器发版;安装目标及重载按
|
|
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
|
-
用户只需描述应用。根据本次返回的 `
|
|
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 资源绑定、预览、发布与分享验收。后端的创建、源码、参数配置与读取、数据库访问和编译发布由
|
|
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)
|
|
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)
|
|
64
|
+
6. 按用户需求完成交互和定制。采用后端服务时,先完成[后端交接与接入验证](references/backend-apps.md),再交付可用前端。安装依赖并从确定源码提交构建;转 `tiana-git` 技能完成源码同步,带回 Git 实例 ID、完整提交号和远端同步结果后,用 `web publish` 发布当前归档,再用 `web status --publish-id` 核对。除非用户仅要求本地开发,交付实际托管地址、资源 ID 和对应源码提交;未验证的阶段如实说明。
|
|
65
65
|
|
|
66
66
|
## 素材、文件上传、预览与下载
|
|
67
67
|
|
|
@@ -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 以新创建者为作者。前端判断用于展示;敏感操作交给
|
|
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 具备本流程命令时直接使用。命令缺失时按
|
|
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`。动态数据按
|
|
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 和结果解析按
|
|
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 的权限不局限于应用目标实例,业务代码应在相应信任范围内运行。用户要求验证或排查连接故障时,按
|
|
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`。源码提交记录与远程引用核验见
|
|
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
|
-
需要源码关联时,先按
|
|
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 恢复,详情见
|
|
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 等不能作为公开参数初值分发;在模板说明中列出参数名与用途,由安装者按
|
|
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
|
|
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;提交和构建按
|
|
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 查询状态。
|