@kmlckj/licos-ai-cli 1.6.1 → 1.6.3
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 +10 -0
- package/lib/__templates__/agent/AGENTS.md +10 -0
- package/lib/__templates__/agent/README.md +10 -0
- package/lib/__templates__/agent/config/licos-auth.json +3 -0
- package/lib/__templates__/agent/pyproject.toml +3 -3
- package/lib/__templates__/agent/requirements.txt +3 -3
- package/lib/__templates__/expo/AGENTS.md +10 -0
- package/lib/__templates__/expo/README.md +10 -0
- package/lib/__templates__/expo/pnpm-lock.yaml +10 -10
- package/lib/__templates__/expo/server/package.json +2 -2
- package/lib/__templates__/expo/server/src/index.ts +13 -0
- package/lib/__templates__/expo/server/src/project-auth.ts +5 -0
- package/lib/__templates__/nextjs/AGENTS.md +10 -0
- package/lib/__templates__/nextjs/README.md +10 -0
- package/lib/__templates__/nextjs/package.json +2 -2
- package/lib/__templates__/nextjs/pnpm-lock.yaml +10 -10
- package/lib/__templates__/nextjs/src/app/api/licos/auth/config/route.ts +5 -0
- package/lib/__templates__/nextjs/src/app/api/licos/auth/me/route.ts +12 -0
- package/lib/__templates__/nextjs/src/app/layout.tsx +1 -0
- package/lib/__templates__/nextjs/src/lib/project-auth.ts +5 -0
- package/lib/__templates__/nextjs/src/lib/project-user-fetch.ts +27 -0
- package/lib/__templates__/nuxt-vue/AGENTS.md +10 -0
- package/lib/__templates__/nuxt-vue/README.md +10 -0
- package/lib/__templates__/nuxt-vue/app/composables/useProjectUserFetch.ts +17 -0
- package/lib/__templates__/nuxt-vue/package.json +2 -2
- package/lib/__templates__/nuxt-vue/pnpm-lock.yaml +10 -10
- package/lib/__templates__/nuxt-vue/server/api/licos/auth/config.get.ts +3 -0
- package/lib/__templates__/nuxt-vue/server/api/licos/auth/me.get.ts +12 -0
- package/lib/__templates__/nuxt-vue/server/utils/project-auth.ts +5 -0
- package/lib/__templates__/taro/AGENTS.md +10 -0
- package/lib/__templates__/taro/README.md +10 -0
- package/lib/__templates__/taro/pnpm-lock.yaml +10 -10
- package/lib/__templates__/taro/server/package.json +2 -2
- package/lib/__templates__/taro/server/src/app.controller.ts +18 -1
- package/lib/__templates__/taro/server/src/project-auth.ts +5 -0
- package/lib/__templates__/vite/AGENTS.md +10 -0
- package/lib/__templates__/vite/README.md +10 -0
- package/lib/__templates__/vite/package.json +2 -2
- package/lib/__templates__/vite/pnpm-lock.yaml +10 -10
- package/lib/__templates__/vite/server/project-auth.ts +5 -0
- package/lib/__templates__/vite/server/routes/index.ts +13 -0
- package/lib/__templates__/vite/src/project-user-fetch.ts +17 -0
- package/lib/__templates__/workflow/AGENTS.md +10 -0
- package/lib/__templates__/workflow/README.md +10 -0
- package/lib/__templates__/workflow/config/licos-auth.json +3 -0
- package/lib/__templates__/workflow/pyproject.toml +3 -3
- package/lib/__templates__/workflow/requirements.txt +3 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -123,3 +123,13 @@ export const paramsSchema = {
|
|
|
123
123
|
## 许可证
|
|
124
124
|
|
|
125
125
|
MIT
|
|
126
|
+
|
|
127
|
+
## 编程项目登录身份
|
|
128
|
+
|
|
129
|
+
- 有内置登录时使用内置登录会话;没有内置登录时使用当前 LICOS 网页登录。内置登录未登录或过期时不能切换成平台用户。
|
|
130
|
+
- Node 服务端使用 `createProjectAuth({ mode: 'builtin', resolveBuiltinToken })` 或 `createProjectAuth({ mode: 'platform' })`,每次请求调用 `await projectAuth.userToken(request)`。内置解析器必须读取已有认证会话并返回用户已授权的 LICOS 凭证。
|
|
131
|
+
- 无内置登录的浏览器用户接口使用 `@kmlckj/licos-platform-sdk/browser` 的 `createProjectUserFetch`:平台登录桥领取一次性票据,项目后端兑换 Token。不要直接读取跨域平台 localStorage,不在 URL 中传 Token,不修改全局 fetch。项目级 API 保持原有请求方法。
|
|
132
|
+
- Python 使用 `ProjectAuth`;Agent/Workflow 通过 `config/licos-auth.json` 配置模式,内置登录设置 `resolver: "模块:函数"`,业务代码使用 `ctx.identity.user_token`。
|
|
133
|
+
- 当前用户、企业知识库、本体用户操作显式传 `userToken`/`user_token`。模型、积分和普通知识库按业务选择用户或项目身份。数据库、对象存储和可观测性继续使用项目身份。
|
|
134
|
+
- 沿用现有 OAuth 授权范围与接口权限。凭证无权访问目标接口时返回现有鉴权错误,不扩大权限或换用其他身份。
|
|
135
|
+
- 修改已有项目时先接它的现有登录机制,不能用新模板的默认平台模式覆盖。真实 Token 只存在于运行时请求/会话,不写入源代码、共享环境变量或 Agent 提示词。
|
|
@@ -47,3 +47,13 @@
|
|
|
47
47
|
- 普通知识库、模型与积分接口默认使用项目身份;需要按网页登录用户执行时显式传 Token。数据库、存储、可观测性和 OAuth 应用管理使用项目身份。项目归属与平台签发的计费上下文独立保留。
|
|
48
48
|
- CLI 用户操作默认按 `LICOS_CURRENT_USER_ID` 换 Token;HTTP 服务调用 CLI 时使用 `--token-stdin`。Dev CLI 可用 `--identity project` 明确选择项目身份。
|
|
49
49
|
- 每个请求单独传 Token 或创建客户端,不把请求 Token、用户 ID 写进共享环境变量。
|
|
50
|
+
|
|
51
|
+
## 编程项目登录身份
|
|
52
|
+
|
|
53
|
+
- 有内置登录时使用内置登录会话;没有内置登录时使用当前 LICOS 网页登录。内置登录未登录或过期时不能切换成平台用户。
|
|
54
|
+
- Node 服务端使用 `createProjectAuth({ mode: 'builtin', resolveBuiltinToken })` 或 `createProjectAuth({ mode: 'platform' })`,每次请求调用 `await projectAuth.userToken(request)`。内置解析器必须读取已有认证会话并返回用户已授权的 LICOS 凭证。
|
|
55
|
+
- 无内置登录的浏览器用户接口使用 `@kmlckj/licos-platform-sdk/browser` 的 `createProjectUserFetch`:平台登录桥领取一次性票据,项目后端兑换 Token。不要直接读取跨域平台 localStorage,不在 URL 中传 Token,不修改全局 fetch。项目级 API 保持原有请求方法。
|
|
56
|
+
- Python 使用 `ProjectAuth`;Agent/Workflow 通过 `config/licos-auth.json` 配置模式,内置登录设置 `resolver: "模块:函数"`,业务代码使用 `ctx.identity.user_token`。
|
|
57
|
+
- 当前用户、企业知识库、本体用户操作显式传 `userToken`/`user_token`。模型、积分和普通知识库按业务选择用户或项目身份。数据库、对象存储和可观测性继续使用项目身份。
|
|
58
|
+
- 沿用现有 OAuth 授权范围与接口权限。凭证无权访问目标接口时返回现有鉴权错误,不扩大权限或换用其他身份。
|
|
59
|
+
- 修改已有项目时先接它的现有登录机制,不能用新模板的默认平台模式覆盖。真实 Token 只存在于运行时请求/会话,不写入源代码、共享环境变量或 Agent 提示词。
|
|
@@ -152,3 +152,13 @@ bash scripts/runtime.sh -m verify --cases tests/agent_cases.json --report .tmp/a
|
|
|
152
152
|
预览、本地运行和验收共用 `scripts/runtime.sh`:显式设置 `PYTHON_BIN` 时使用该解释器,否则使用已创建的项目 `.venv`,全局安装模式使用 `python`。选定环境损坏会直接失败。验收已启用会话记忆的项目时,先把测试用户的 Bearer 令牌放入环境变量 `LICOS_AGENT_VERIFY_BEARER_TOKEN`;验收报告不会记录令牌。
|
|
153
153
|
|
|
154
154
|
验收默认读取 `LICOS_AGENT_RUN_TIMEOUT_SECONDS`,可用 `--request-timeout` 覆盖 HTTP 等待时间;非法超时配置直接失败。图须符合运行时的 `ainvoke/stream/astream/astream_events` 契约,执行错误不会通过换参数重试或改成非流式调用绕过。订阅状态与投递记录分别读取,记录接口为 `/agent/subscriptions/{id}/deliveries?limit=...&offset=...`。
|
|
155
|
+
|
|
156
|
+
## 编程项目登录身份
|
|
157
|
+
|
|
158
|
+
- 有内置登录时使用内置登录会话;没有内置登录时使用当前 LICOS 网页登录。内置登录未登录或过期时不能切换成平台用户。
|
|
159
|
+
- Node 服务端使用 `createProjectAuth({ mode: 'builtin', resolveBuiltinToken })` 或 `createProjectAuth({ mode: 'platform' })`,每次请求调用 `await projectAuth.userToken(request)`。内置解析器必须读取已有认证会话并返回用户已授权的 LICOS 凭证。
|
|
160
|
+
- 无内置登录的浏览器用户接口使用 `@kmlckj/licos-platform-sdk/browser` 的 `createProjectUserFetch`:平台登录桥领取一次性票据,项目后端兑换 Token。不要直接读取跨域平台 localStorage,不在 URL 中传 Token,不修改全局 fetch。项目级 API 保持原有请求方法。
|
|
161
|
+
- Python 使用 `ProjectAuth`;Agent/Workflow 通过 `config/licos-auth.json` 配置模式,内置登录设置 `resolver: "模块:函数"`,业务代码使用 `ctx.identity.user_token`。
|
|
162
|
+
- 当前用户、企业知识库、本体用户操作显式传 `userToken`/`user_token`。模型、积分和普通知识库按业务选择用户或项目身份。数据库、对象存储和可观测性继续使用项目身份。
|
|
163
|
+
- 沿用现有 OAuth 授权范围与接口权限。凭证无权访问目标接口时返回现有鉴权错误,不扩大权限或换用其他身份。
|
|
164
|
+
- 修改已有项目时先接它的现有登录机制,不能用新模板的默认平台模式覆盖。真实 Token 只存在于运行时请求/会话,不写入源代码、共享环境变量或 Agent 提示词。
|
|
@@ -4,9 +4,9 @@ version = "0.1.0"
|
|
|
4
4
|
description = "LICOS LangGraph agent project"
|
|
5
5
|
requires-python = ">=3.12"
|
|
6
6
|
dependencies = [
|
|
7
|
-
"licos-agent-runtime>=0.5.
|
|
8
|
-
"licos-platform-sdk>=0.7.
|
|
9
|
-
"licos-dev-sdk>=0.6.
|
|
7
|
+
"licos-agent-runtime>=0.5.4",
|
|
8
|
+
"licos-platform-sdk>=0.7.4",
|
|
9
|
+
"licos-dev-sdk>=0.6.4",
|
|
10
10
|
]
|
|
11
11
|
|
|
12
12
|
[tool.uv]
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
licos-agent-runtime>=0.5.
|
|
2
|
-
licos-platform-sdk>=0.7.
|
|
3
|
-
licos-dev-sdk>=0.6.
|
|
1
|
+
licos-agent-runtime>=0.5.4
|
|
2
|
+
licos-platform-sdk>=0.7.4
|
|
3
|
+
licos-dev-sdk>=0.6.4
|
|
@@ -270,3 +270,13 @@ import { Screen } from '../../../components/Screen';
|
|
|
270
270
|
- 普通知识库、模型与积分接口默认使用项目身份;需要按网页登录用户执行时显式传 Token。数据库、存储、可观测性和 OAuth 应用管理使用项目身份。项目归属与平台签发的计费上下文独立保留。
|
|
271
271
|
- CLI 用户操作默认按 `LICOS_CURRENT_USER_ID` 换 Token;HTTP 服务调用 CLI 时使用 `--token-stdin`。Dev CLI 可用 `--identity project` 明确选择项目身份。
|
|
272
272
|
- 每个请求单独传 Token 或创建客户端,不把请求 Token、用户 ID 写进共享环境变量。
|
|
273
|
+
|
|
274
|
+
## 编程项目登录身份
|
|
275
|
+
|
|
276
|
+
- 有内置登录时使用内置登录会话;没有内置登录时使用当前 LICOS 网页登录。内置登录未登录或过期时不能切换成平台用户。
|
|
277
|
+
- Node 服务端使用 `createProjectAuth({ mode: 'builtin', resolveBuiltinToken })` 或 `createProjectAuth({ mode: 'platform' })`,每次请求调用 `await projectAuth.userToken(request)`。内置解析器必须读取已有认证会话并返回用户已授权的 LICOS 凭证。
|
|
278
|
+
- 无内置登录的浏览器用户接口使用 `@kmlckj/licos-platform-sdk/browser` 的 `createProjectUserFetch`:平台登录桥领取一次性票据,项目后端兑换 Token。不要直接读取跨域平台 localStorage,不在 URL 中传 Token,不修改全局 fetch。项目级 API 保持原有请求方法。
|
|
279
|
+
- Python 使用 `ProjectAuth`;Agent/Workflow 通过 `config/licos-auth.json` 配置模式,内置登录设置 `resolver: "模块:函数"`,业务代码使用 `ctx.identity.user_token`。
|
|
280
|
+
- 当前用户、企业知识库、本体用户操作显式传 `userToken`/`user_token`。模型、积分和普通知识库按业务选择用户或项目身份。数据库、对象存储和可观测性继续使用项目身份。
|
|
281
|
+
- 沿用现有 OAuth 授权范围与接口权限。凭证无权访问目标接口时返回现有鉴权错误,不扩大权限或换用其他身份。
|
|
282
|
+
- 修改已有项目时先接它的现有登录机制,不能用新模板的默认平台模式覆盖。真实 Token 只存在于运行时请求/会话,不写入源代码、共享环境变量或 Agent 提示词。
|
|
@@ -257,3 +257,13 @@ import { Screen } from '../../../components/Screen';
|
|
|
257
257
|
## 本地开发
|
|
258
258
|
|
|
259
259
|
`licos dev`:用来首次启动前后端服务,也可以用来重启前后端服务(该命令会先尝试杀掉占用端口的进程,再启动服务)
|
|
260
|
+
|
|
261
|
+
## 编程项目登录身份
|
|
262
|
+
|
|
263
|
+
- 有内置登录时使用内置登录会话;没有内置登录时使用当前 LICOS 网页登录。内置登录未登录或过期时不能切换成平台用户。
|
|
264
|
+
- Node 服务端使用 `createProjectAuth({ mode: 'builtin', resolveBuiltinToken })` 或 `createProjectAuth({ mode: 'platform' })`,每次请求调用 `await projectAuth.userToken(request)`。内置解析器必须读取已有认证会话并返回用户已授权的 LICOS 凭证。
|
|
265
|
+
- 无内置登录的浏览器用户接口使用 `@kmlckj/licos-platform-sdk/browser` 的 `createProjectUserFetch`:平台登录桥领取一次性票据,项目后端兑换 Token。不要直接读取跨域平台 localStorage,不在 URL 中传 Token,不修改全局 fetch。项目级 API 保持原有请求方法。
|
|
266
|
+
- Python 使用 `ProjectAuth`;Agent/Workflow 通过 `config/licos-auth.json` 配置模式,内置登录设置 `resolver: "模块:函数"`,业务代码使用 `ctx.identity.user_token`。
|
|
267
|
+
- 当前用户、企业知识库、本体用户操作显式传 `userToken`/`user_token`。模型、积分和普通知识库按业务选择用户或项目身份。数据库、对象存储和可观测性继续使用项目身份。
|
|
268
|
+
- 沿用现有 OAuth 授权范围与接口权限。凭证无权访问目标接口时返回现有鉴权错误,不扩大权限或换用其他身份。
|
|
269
|
+
- 修改已有项目时先接它的现有登录机制,不能用新模板的默认平台模式覆盖。真实 Token 只存在于运行时请求/会话,不写入源代码、共享环境变量或 Agent 提示词。
|
|
@@ -266,11 +266,11 @@ importers:
|
|
|
266
266
|
server:
|
|
267
267
|
dependencies:
|
|
268
268
|
'@kmlckj/licos-dev-sdk':
|
|
269
|
-
specifier: 0.4.
|
|
270
|
-
version: 0.4.
|
|
269
|
+
specifier: 0.4.2
|
|
270
|
+
version: 0.4.2
|
|
271
271
|
'@kmlckj/licos-platform-sdk':
|
|
272
|
-
specifier: 0.12.
|
|
273
|
-
version: 0.12.
|
|
272
|
+
specifier: 0.12.3
|
|
273
|
+
version: 0.12.3
|
|
274
274
|
cors:
|
|
275
275
|
specifier: ^2.8.5
|
|
276
276
|
version: 2.8.6
|
|
@@ -1324,13 +1324,13 @@ packages:
|
|
|
1324
1324
|
'@jridgewell/trace-mapping@0.3.31':
|
|
1325
1325
|
resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
|
|
1326
1326
|
|
|
1327
|
-
'@kmlckj/licos-dev-sdk@0.4.
|
|
1328
|
-
resolution: {integrity: sha512-
|
|
1327
|
+
'@kmlckj/licos-dev-sdk@0.4.2':
|
|
1328
|
+
resolution: {integrity: sha512-dK6qzoTzVxEhvxE08B9ox0qel8s233gjWFdCvpOM+ekUctGjleyj1OJCOFXNvapY6U3HVDqeU+MvnBhJ0ne2dw==}
|
|
1329
1329
|
engines: {node: '>=18'}
|
|
1330
1330
|
|
|
1331
|
-
'@kmlckj/licos-platform-sdk@0.12.
|
|
1331
|
+
'@kmlckj/licos-platform-sdk@0.12.3':
|
|
1332
1332
|
resolution:
|
|
1333
|
-
integrity: sha512-
|
|
1333
|
+
integrity: sha512-tnz1RhmkEig6iGH0hUk8aWrDf+lMqKzUjfCntyTTLUYkVfThj/E5+u/TANeBEWlq12RUmnmvXE4jMMYsssIA+g==
|
|
1334
1334
|
|
|
1335
1335
|
'@napi-rs/wasm-runtime@0.2.12':
|
|
1336
1336
|
resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==}
|
|
@@ -7515,9 +7515,9 @@ snapshots:
|
|
|
7515
7515
|
'@jridgewell/resolve-uri': 3.1.2
|
|
7516
7516
|
'@jridgewell/sourcemap-codec': 1.5.5
|
|
7517
7517
|
|
|
7518
|
-
'@kmlckj/licos-dev-sdk@0.4.
|
|
7518
|
+
'@kmlckj/licos-dev-sdk@0.4.2': {}
|
|
7519
7519
|
|
|
7520
|
-
'@kmlckj/licos-platform-sdk@0.12.
|
|
7520
|
+
'@kmlckj/licos-platform-sdk@0.12.3':
|
|
7521
7521
|
dependencies:
|
|
7522
7522
|
ajv: 8.17.1
|
|
7523
7523
|
ajv-formats: 3.0.1(ajv@8.17.1)
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
"lint": "tsc --noEmit"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@kmlckj/licos-dev-sdk": "0.4.
|
|
14
|
-
"@kmlckj/licos-platform-sdk": "0.12.
|
|
13
|
+
"@kmlckj/licos-dev-sdk": "0.4.2",
|
|
14
|
+
"@kmlckj/licos-platform-sdk": "0.12.3",
|
|
15
15
|
"cors": "^2.8.5",
|
|
16
16
|
"dayjs": "^1.11.19",
|
|
17
17
|
"dotenv": "^17.2.3",
|
|
@@ -2,6 +2,8 @@ import express from "express";
|
|
|
2
2
|
import cors from "cors";
|
|
3
3
|
import fs from "fs";
|
|
4
4
|
import path from "path";
|
|
5
|
+
import { getCurrentUser, ApiError } from '@kmlckj/licos-platform-sdk';
|
|
6
|
+
import { projectAuth, getProjectAuthConfig } from './project-auth';
|
|
5
7
|
|
|
6
8
|
const app = express();
|
|
7
9
|
const port = process.env.PORT || 5001;
|
|
@@ -11,6 +13,17 @@ app.use(cors());
|
|
|
11
13
|
app.use(express.json({ limit: '50mb' }));
|
|
12
14
|
app.use(express.urlencoded({ limit: '50mb', extended: true }));
|
|
13
15
|
|
|
16
|
+
app.get('/api/licos/auth/config', (_req, res) => res.json(getProjectAuthConfig()));
|
|
17
|
+
app.get('/api/licos/auth/me', async (req, res, next) => {
|
|
18
|
+
try {
|
|
19
|
+
const userToken = await projectAuth.userToken(req);
|
|
20
|
+
res.json(await getCurrentUser({ userToken }));
|
|
21
|
+
} catch (error) {
|
|
22
|
+
if (error instanceof ApiError) res.status(error.status || 401).json({ error: error.message });
|
|
23
|
+
else next(error);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
|
|
14
27
|
app.get('/api/v1/health', (req, res) => {
|
|
15
28
|
console.log('Health check success');
|
|
16
29
|
res.status(200).json({ status: 'ok' });
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { createProjectAuth, projectAuthConfig } from '@kmlckj/licos-platform-sdk';
|
|
2
|
+
|
|
3
|
+
// Connect an existing application login with mode: 'builtin' and resolveBuiltinToken.
|
|
4
|
+
export const projectAuth = createProjectAuth({ mode: 'platform' });
|
|
5
|
+
export const getProjectAuthConfig = () => projectAuthConfig(projectAuth.mode);
|
|
@@ -71,3 +71,13 @@
|
|
|
71
71
|
- 普通知识库、模型与积分接口默认使用项目身份;需要按网页登录用户执行时显式传 Token。数据库、存储、可观测性和 OAuth 应用管理使用项目身份。项目归属与平台签发的计费上下文独立保留。
|
|
72
72
|
- CLI 用户操作默认按 `LICOS_CURRENT_USER_ID` 换 Token;HTTP 服务调用 CLI 时使用 `--token-stdin`。Dev CLI 可用 `--identity project` 明确选择项目身份。
|
|
73
73
|
- 每个请求单独传 Token 或创建客户端,不把请求 Token、用户 ID 写进共享环境变量。
|
|
74
|
+
|
|
75
|
+
## 编程项目登录身份
|
|
76
|
+
|
|
77
|
+
- 有内置登录时使用内置登录会话;没有内置登录时使用当前 LICOS 网页登录。内置登录未登录或过期时不能切换成平台用户。
|
|
78
|
+
- Node 服务端使用 `createProjectAuth({ mode: 'builtin', resolveBuiltinToken })` 或 `createProjectAuth({ mode: 'platform' })`,每次请求调用 `await projectAuth.userToken(request)`。内置解析器必须读取已有认证会话并返回用户已授权的 LICOS 凭证。
|
|
79
|
+
- 无内置登录的浏览器用户接口使用 `@kmlckj/licos-platform-sdk/browser` 的 `createProjectUserFetch`:平台登录桥领取一次性票据,项目后端兑换 Token。不要直接读取跨域平台 localStorage,不在 URL 中传 Token,不修改全局 fetch。项目级 API 保持原有请求方法。
|
|
80
|
+
- Python 使用 `ProjectAuth`;Agent/Workflow 通过 `config/licos-auth.json` 配置模式,内置登录设置 `resolver: "模块:函数"`,业务代码使用 `ctx.identity.user_token`。
|
|
81
|
+
- 当前用户、企业知识库、本体用户操作显式传 `userToken`/`user_token`。模型、积分和普通知识库按业务选择用户或项目身份。数据库、对象存储和可观测性继续使用项目身份。
|
|
82
|
+
- 沿用现有 OAuth 授权范围与接口权限。凭证无权访问目标接口时返回现有鉴权错误,不扩大权限或换用其他身份。
|
|
83
|
+
- 修改已有项目时先接它的现有登录机制,不能用新模板的默认平台模式覆盖。真实 Token 只存在于运行时请求/会话,不写入源代码、共享环境变量或 Agent 提示词。
|
|
@@ -361,3 +361,13 @@ export const useStore = create<Store>((set) => ({
|
|
|
361
361
|
3. **遵循 Next.js App Router 规范**,正确区分服务端/客户端组件
|
|
362
362
|
4. **使用 TypeScript** 进行类型安全开发
|
|
363
363
|
5. **使用 `@/` 路径别名** 导入模块(已配置)
|
|
364
|
+
|
|
365
|
+
## 编程项目登录身份
|
|
366
|
+
|
|
367
|
+
- 有内置登录时使用内置登录会话;没有内置登录时使用当前 LICOS 网页登录。内置登录未登录或过期时不能切换成平台用户。
|
|
368
|
+
- Node 服务端使用 `createProjectAuth({ mode: 'builtin', resolveBuiltinToken })` 或 `createProjectAuth({ mode: 'platform' })`,每次请求调用 `await projectAuth.userToken(request)`。内置解析器必须读取已有认证会话并返回用户已授权的 LICOS 凭证。
|
|
369
|
+
- 无内置登录的浏览器用户接口使用 `@kmlckj/licos-platform-sdk/browser` 的 `createProjectUserFetch`:平台登录桥领取一次性票据,项目后端兑换 Token。不要直接读取跨域平台 localStorage,不在 URL 中传 Token,不修改全局 fetch。项目级 API 保持原有请求方法。
|
|
370
|
+
- Python 使用 `ProjectAuth`;Agent/Workflow 通过 `config/licos-auth.json` 配置模式,内置登录设置 `resolver: "模块:函数"`,业务代码使用 `ctx.identity.user_token`。
|
|
371
|
+
- 当前用户、企业知识库、本体用户操作显式传 `userToken`/`user_token`。模型、积分和普通知识库按业务选择用户或项目身份。数据库、对象存储和可观测性继续使用项目身份。
|
|
372
|
+
- 沿用现有 OAuth 授权范围与接口权限。凭证无权访问目标接口时返回现有鉴权错误,不扩大权限或换用其他身份。
|
|
373
|
+
- 修改已有项目时先接它的现有登录机制,不能用新模板的默认平台模式覆盖。真实 Token 只存在于运行时请求/会话,不写入源代码、共享环境变量或 Agent 提示词。
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
"ts-check": "tsc -p tsconfig.json"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@kmlckj/licos-dev-sdk": "0.4.
|
|
18
|
-
"@kmlckj/licos-platform-sdk": "0.12.
|
|
17
|
+
"@kmlckj/licos-dev-sdk": "0.4.2",
|
|
18
|
+
"@kmlckj/licos-platform-sdk": "0.12.3",
|
|
19
19
|
"@aws-sdk/client-s3": "^3.958.0",
|
|
20
20
|
"@aws-sdk/lib-storage": "^3.958.0",
|
|
21
21
|
"@hookform/resolvers": "^5.2.2",
|
|
@@ -18,11 +18,11 @@ importers:
|
|
|
18
18
|
specifier: ^5.2.2
|
|
19
19
|
version: 5.4.0(react-hook-form@7.77.0(react@19.2.3))
|
|
20
20
|
'@kmlckj/licos-dev-sdk':
|
|
21
|
-
specifier: 0.4.
|
|
22
|
-
version: 0.4.
|
|
21
|
+
specifier: 0.4.2
|
|
22
|
+
version: 0.4.2
|
|
23
23
|
'@kmlckj/licos-platform-sdk':
|
|
24
|
-
specifier: 0.12.
|
|
25
|
-
version: 0.12.
|
|
24
|
+
specifier: 0.12.3
|
|
25
|
+
version: 0.12.3
|
|
26
26
|
'@radix-ui/react-accordion':
|
|
27
27
|
specifier: ^1.2.12
|
|
28
28
|
version: 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.16))(@types/react@19.2.16)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
|
|
@@ -1380,13 +1380,13 @@ packages:
|
|
|
1380
1380
|
'@jridgewell/trace-mapping@0.3.31':
|
|
1381
1381
|
resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
|
|
1382
1382
|
|
|
1383
|
-
'@kmlckj/licos-dev-sdk@0.4.
|
|
1384
|
-
resolution: {integrity: sha512-
|
|
1383
|
+
'@kmlckj/licos-dev-sdk@0.4.2':
|
|
1384
|
+
resolution: {integrity: sha512-dK6qzoTzVxEhvxE08B9ox0qel8s233gjWFdCvpOM+ekUctGjleyj1OJCOFXNvapY6U3HVDqeU+MvnBhJ0ne2dw==}
|
|
1385
1385
|
engines: {node: '>=18'}
|
|
1386
1386
|
|
|
1387
|
-
'@kmlckj/licos-platform-sdk@0.12.
|
|
1387
|
+
'@kmlckj/licos-platform-sdk@0.12.3':
|
|
1388
1388
|
resolution:
|
|
1389
|
-
integrity: sha512-
|
|
1389
|
+
integrity: sha512-tnz1RhmkEig6iGH0hUk8aWrDf+lMqKzUjfCntyTTLUYkVfThj/E5+u/TANeBEWlq12RUmnmvXE4jMMYsssIA+g==
|
|
1390
1390
|
|
|
1391
1391
|
'@modelcontextprotocol/sdk@1.29.0':
|
|
1392
1392
|
resolution: {integrity: sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ==}
|
|
@@ -6716,9 +6716,9 @@ snapshots:
|
|
|
6716
6716
|
'@jridgewell/resolve-uri': 3.1.2
|
|
6717
6717
|
'@jridgewell/sourcemap-codec': 1.5.5
|
|
6718
6718
|
|
|
6719
|
-
'@kmlckj/licos-dev-sdk@0.4.
|
|
6719
|
+
'@kmlckj/licos-dev-sdk@0.4.2': {}
|
|
6720
6720
|
|
|
6721
|
-
'@kmlckj/licos-platform-sdk@0.12.
|
|
6721
|
+
'@kmlckj/licos-platform-sdk@0.12.3':
|
|
6722
6722
|
dependencies:
|
|
6723
6723
|
ajv: 8.17.1
|
|
6724
6724
|
ajv-formats: 3.0.1(ajv@8.17.1)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { getCurrentUser, ApiError } from '@kmlckj/licos-platform-sdk';
|
|
2
|
+
import { projectAuth } from '@/lib/project-auth';
|
|
3
|
+
|
|
4
|
+
export async function GET(request: Request) {
|
|
5
|
+
try {
|
|
6
|
+
const userToken = await projectAuth.userToken(request);
|
|
7
|
+
return Response.json(await getCurrentUser({ userToken }));
|
|
8
|
+
} catch (error) {
|
|
9
|
+
if (error instanceof ApiError) return Response.json({ error: error.message }, { status: error.status || 401 });
|
|
10
|
+
throw error;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -3,6 +3,7 @@ import { Inspector } from 'react-dev-inspector';
|
|
|
3
3
|
import './globals.css';
|
|
4
4
|
|
|
5
5
|
export const metadata: Metadata = {
|
|
6
|
+
other: { 'licos-project-base': (process.env.LICOS_PREVIEW_BASE_PATH || process.env.BASE_PATH || '/').replace(/\/+$/, '') + '/' },
|
|
6
7
|
title: {
|
|
7
8
|
default: '新应用 | LICOS AI',
|
|
8
9
|
template: '%s | LICOS AI',
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { createProjectAuth, projectAuthConfig } from '@kmlckj/licos-platform-sdk';
|
|
2
|
+
|
|
3
|
+
// Adding built-in login requires mode: 'builtin' and its session token resolver here.
|
|
4
|
+
export const projectAuth = createProjectAuth({ mode: 'platform' });
|
|
5
|
+
export const getProjectAuthConfig = () => projectAuthConfig(projectAuth.mode);
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { createProjectUserFetch } from '@kmlckj/licos-platform-sdk/browser';
|
|
4
|
+
|
|
5
|
+
let userApi: ReturnType<typeof createUserApi> | undefined;
|
|
6
|
+
|
|
7
|
+
export async function projectUserFetch(path: string, init?: RequestInit) {
|
|
8
|
+
if (!userApi) {
|
|
9
|
+
const meta = document.querySelector<HTMLMetaElement>('meta[name="licos-project-base"]');
|
|
10
|
+
if (!meta) throw new Error('Project base path is not configured');
|
|
11
|
+
userApi = createUserApi(new URL(meta.content, window.location.origin).href);
|
|
12
|
+
}
|
|
13
|
+
return userApi(path, init);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export function createUserApi(projectBaseUrl: string) {
|
|
17
|
+
let client: Promise<ReturnType<typeof createProjectUserFetch>> | undefined;
|
|
18
|
+
async function loadClient() {
|
|
19
|
+
const response = await fetch(new URL('api/licos/auth/config', projectBaseUrl));
|
|
20
|
+
if (!response.ok) throw new Error('Cannot load project login configuration');
|
|
21
|
+
return createProjectUserFetch({ ...await response.json(), projectBaseUrl });
|
|
22
|
+
}
|
|
23
|
+
return async (path: string, init?: RequestInit) => {
|
|
24
|
+
client ??= loadClient();
|
|
25
|
+
return (await client)(path, init);
|
|
26
|
+
};
|
|
27
|
+
}
|
|
@@ -52,3 +52,13 @@
|
|
|
52
52
|
- 普通知识库、模型与积分接口默认使用项目身份;需要按网页登录用户执行时显式传 Token。数据库、存储、可观测性和 OAuth 应用管理使用项目身份。项目归属与平台签发的计费上下文独立保留。
|
|
53
53
|
- CLI 用户操作默认按 `LICOS_CURRENT_USER_ID` 换 Token;HTTP 服务调用 CLI 时使用 `--token-stdin`。Dev CLI 可用 `--identity project` 明确选择项目身份。
|
|
54
54
|
- 每个请求单独传 Token 或创建客户端,不把请求 Token、用户 ID 写进共享环境变量。
|
|
55
|
+
|
|
56
|
+
## 编程项目登录身份
|
|
57
|
+
|
|
58
|
+
- 有内置登录时使用内置登录会话;没有内置登录时使用当前 LICOS 网页登录。内置登录未登录或过期时不能切换成平台用户。
|
|
59
|
+
- Node 服务端使用 `createProjectAuth({ mode: 'builtin', resolveBuiltinToken })` 或 `createProjectAuth({ mode: 'platform' })`,每次请求调用 `await projectAuth.userToken(request)`。内置解析器必须读取已有认证会话并返回用户已授权的 LICOS 凭证。
|
|
60
|
+
- 无内置登录的浏览器用户接口使用 `@kmlckj/licos-platform-sdk/browser` 的 `createProjectUserFetch`:平台登录桥领取一次性票据,项目后端兑换 Token。不要直接读取跨域平台 localStorage,不在 URL 中传 Token,不修改全局 fetch。项目级 API 保持原有请求方法。
|
|
61
|
+
- Python 使用 `ProjectAuth`;Agent/Workflow 通过 `config/licos-auth.json` 配置模式,内置登录设置 `resolver: "模块:函数"`,业务代码使用 `ctx.identity.user_token`。
|
|
62
|
+
- 当前用户、企业知识库、本体用户操作显式传 `userToken`/`user_token`。模型、积分和普通知识库按业务选择用户或项目身份。数据库、对象存储和可观测性继续使用项目身份。
|
|
63
|
+
- 沿用现有 OAuth 授权范围与接口权限。凭证无权访问目标接口时返回现有鉴权错误,不扩大权限或换用其他身份。
|
|
64
|
+
- 修改已有项目时先接它的现有登录机制,不能用新模板的默认平台模式覆盖。真实 Token 只存在于运行时请求/会话,不写入源代码、共享环境变量或 Agent 提示词。
|
|
@@ -71,3 +71,13 @@ You can add server API by creating files in `server/api/` directory. See [server
|
|
|
71
71
|
- [Vue 3 Documentation](https://vuejs.org/)
|
|
72
72
|
- [Vite Documentation](https://vitejs.dev/)
|
|
73
73
|
- [Deployment Guide](https://nuxt.com/docs/getting-started/deployment)
|
|
74
|
+
|
|
75
|
+
## 编程项目登录身份
|
|
76
|
+
|
|
77
|
+
- 有内置登录时使用内置登录会话;没有内置登录时使用当前 LICOS 网页登录。内置登录未登录或过期时不能切换成平台用户。
|
|
78
|
+
- Node 服务端使用 `createProjectAuth({ mode: 'builtin', resolveBuiltinToken })` 或 `createProjectAuth({ mode: 'platform' })`,每次请求调用 `await projectAuth.userToken(request)`。内置解析器必须读取已有认证会话并返回用户已授权的 LICOS 凭证。
|
|
79
|
+
- 无内置登录的浏览器用户接口使用 `@kmlckj/licos-platform-sdk/browser` 的 `createProjectUserFetch`:平台登录桥领取一次性票据,项目后端兑换 Token。不要直接读取跨域平台 localStorage,不在 URL 中传 Token,不修改全局 fetch。项目级 API 保持原有请求方法。
|
|
80
|
+
- Python 使用 `ProjectAuth`;Agent/Workflow 通过 `config/licos-auth.json` 配置模式,内置登录设置 `resolver: "模块:函数"`,业务代码使用 `ctx.identity.user_token`。
|
|
81
|
+
- 当前用户、企业知识库、本体用户操作显式传 `userToken`/`user_token`。模型、积分和普通知识库按业务选择用户或项目身份。数据库、对象存储和可观测性继续使用项目身份。
|
|
82
|
+
- 沿用现有 OAuth 授权范围与接口权限。凭证无权访问目标接口时返回现有鉴权错误,不扩大权限或换用其他身份。
|
|
83
|
+
- 修改已有项目时先接它的现有登录机制,不能用新模板的默认平台模式覆盖。真实 Token 只存在于运行时请求/会话,不写入源代码、共享环境变量或 Agent 提示词。
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { createProjectUserFetch } from '@kmlckj/licos-platform-sdk/browser';
|
|
2
|
+
|
|
3
|
+
export function useProjectUserFetch() {
|
|
4
|
+
const runtime = useRuntimeConfig();
|
|
5
|
+
let client: Promise<ReturnType<typeof createProjectUserFetch>> | undefined;
|
|
6
|
+
async function loadClient() {
|
|
7
|
+
const previewBase = (window as Window & { __LICOS_PREVIEW_BASE_PATH__?: string }).__LICOS_PREVIEW_BASE_PATH__;
|
|
8
|
+
const base = new URL((previewBase || runtime.public.baseURL).replace(/\/+$/, '') + '/', window.location.origin);
|
|
9
|
+
const response = await fetch(new URL('api/licos/auth/config', base));
|
|
10
|
+
if (!response.ok) throw new Error('Cannot load project login configuration');
|
|
11
|
+
return createProjectUserFetch({ ...await response.json(), projectBaseUrl: base.href });
|
|
12
|
+
}
|
|
13
|
+
return async (path: string, init?: RequestInit) => {
|
|
14
|
+
client ??= loadClient();
|
|
15
|
+
return (await client)(path, init);
|
|
16
|
+
};
|
|
17
|
+
}
|
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
"start": "bash ./scripts/start.sh"
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@kmlckj/licos-dev-sdk": "0.4.
|
|
21
|
-
"@kmlckj/licos-platform-sdk": "0.12.
|
|
20
|
+
"@kmlckj/licos-dev-sdk": "0.4.2",
|
|
21
|
+
"@kmlckj/licos-platform-sdk": "0.12.3",
|
|
22
22
|
"@nuxt/image": "2.0.0",
|
|
23
23
|
"nuxt": "4.3.1",
|
|
24
24
|
"tailwind-merge": "2.6.0",
|
|
@@ -13,11 +13,11 @@ importers:
|
|
|
13
13
|
.:
|
|
14
14
|
dependencies:
|
|
15
15
|
'@kmlckj/licos-dev-sdk':
|
|
16
|
-
specifier: 0.4.
|
|
17
|
-
version: 0.4.
|
|
16
|
+
specifier: 0.4.2
|
|
17
|
+
version: 0.4.2
|
|
18
18
|
'@kmlckj/licos-platform-sdk':
|
|
19
|
-
specifier: 0.12.
|
|
20
|
-
version: 0.12.
|
|
19
|
+
specifier: 0.12.3
|
|
20
|
+
version: 0.12.3
|
|
21
21
|
'@nuxt/image':
|
|
22
22
|
specifier: 2.0.0
|
|
23
23
|
version: 2.0.0(db0@0.3.4)(ioredis@5.11.0)(magicast@0.5.3)(srvx@0.11.16)
|
|
@@ -731,13 +731,13 @@ packages:
|
|
|
731
731
|
'@jridgewell/trace-mapping@0.3.31':
|
|
732
732
|
resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
|
|
733
733
|
|
|
734
|
-
'@kmlckj/licos-dev-sdk@0.4.
|
|
735
|
-
resolution: {integrity: sha512-
|
|
734
|
+
'@kmlckj/licos-dev-sdk@0.4.2':
|
|
735
|
+
resolution: {integrity: sha512-dK6qzoTzVxEhvxE08B9ox0qel8s233gjWFdCvpOM+ekUctGjleyj1OJCOFXNvapY6U3HVDqeU+MvnBhJ0ne2dw==}
|
|
736
736
|
engines: {node: '>=18'}
|
|
737
737
|
|
|
738
|
-
'@kmlckj/licos-platform-sdk@0.12.
|
|
738
|
+
'@kmlckj/licos-platform-sdk@0.12.3':
|
|
739
739
|
resolution:
|
|
740
|
-
integrity: sha512-
|
|
740
|
+
integrity: sha512-tnz1RhmkEig6iGH0hUk8aWrDf+lMqKzUjfCntyTTLUYkVfThj/E5+u/TANeBEWlq12RUmnmvXE4jMMYsssIA+g==
|
|
741
741
|
|
|
742
742
|
'@koa/router@12.0.2':
|
|
743
743
|
resolution: {integrity: sha512-sYcHglGKTxGF+hQ6x67xDfkE9o+NhVlRHBqq6gLywaMc6CojK/5vFZByphdonKinYlMLkEkacm+HEse9HzwgTA==}
|
|
@@ -4773,9 +4773,9 @@ snapshots:
|
|
|
4773
4773
|
'@jridgewell/resolve-uri': 3.1.2
|
|
4774
4774
|
'@jridgewell/sourcemap-codec': 1.5.5
|
|
4775
4775
|
|
|
4776
|
-
'@kmlckj/licos-dev-sdk@0.4.
|
|
4776
|
+
'@kmlckj/licos-dev-sdk@0.4.2': {}
|
|
4777
4777
|
|
|
4778
|
-
'@kmlckj/licos-platform-sdk@0.12.
|
|
4778
|
+
'@kmlckj/licos-platform-sdk@0.12.3':
|
|
4779
4779
|
dependencies:
|
|
4780
4780
|
ajv: 8.17.1
|
|
4781
4781
|
ajv-formats: 3.0.1(ajv@8.17.1)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { getCurrentUser, ApiError } from '@kmlckj/licos-platform-sdk';
|
|
2
|
+
import { projectAuth } from '../../../utils/project-auth';
|
|
3
|
+
|
|
4
|
+
export default defineEventHandler(async event => {
|
|
5
|
+
try {
|
|
6
|
+
const userToken = await projectAuth.userToken(event.node.req);
|
|
7
|
+
return await getCurrentUser({ userToken });
|
|
8
|
+
} catch (error) {
|
|
9
|
+
if (error instanceof ApiError) throw createError({ statusCode: error.status || 401, message: error.message });
|
|
10
|
+
throw error;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { createProjectAuth, projectAuthConfig } from '@kmlckj/licos-platform-sdk';
|
|
2
|
+
|
|
3
|
+
// Adding built-in login requires mode: 'builtin' and its session token resolver here.
|
|
4
|
+
export const projectAuth = createProjectAuth({ mode: 'platform' });
|
|
5
|
+
export const getProjectAuthConfig = () => projectAuthConfig(projectAuth.mode);
|
|
@@ -583,3 +583,13 @@ import { Input } from '@/components/ui/input'
|
|
|
583
583
|
- 普通知识库、模型与积分接口默认使用项目身份;需要按网页登录用户执行时显式传 Token。数据库、存储、可观测性和 OAuth 应用管理使用项目身份。项目归属与平台签发的计费上下文独立保留。
|
|
584
584
|
- CLI 用户操作默认按 `LICOS_CURRENT_USER_ID` 换 Token;HTTP 服务调用 CLI 时使用 `--token-stdin`。Dev CLI 可用 `--identity project` 明确选择项目身份。
|
|
585
585
|
- 每个请求单独传 Token 或创建客户端,不把请求 Token、用户 ID 写进共享环境变量。
|
|
586
|
+
|
|
587
|
+
## 编程项目登录身份
|
|
588
|
+
|
|
589
|
+
- 有内置登录时使用内置登录会话;没有内置登录时使用当前 LICOS 网页登录。内置登录未登录或过期时不能切换成平台用户。
|
|
590
|
+
- Node 服务端使用 `createProjectAuth({ mode: 'builtin', resolveBuiltinToken })` 或 `createProjectAuth({ mode: 'platform' })`,每次请求调用 `await projectAuth.userToken(request)`。内置解析器必须读取已有认证会话并返回用户已授权的 LICOS 凭证。
|
|
591
|
+
- 无内置登录的浏览器用户接口使用 `@kmlckj/licos-platform-sdk/browser` 的 `createProjectUserFetch`:平台登录桥领取一次性票据,项目后端兑换 Token。不要直接读取跨域平台 localStorage,不在 URL 中传 Token,不修改全局 fetch。项目级 API 保持原有请求方法。
|
|
592
|
+
- Python 使用 `ProjectAuth`;Agent/Workflow 通过 `config/licos-auth.json` 配置模式,内置登录设置 `resolver: "模块:函数"`,业务代码使用 `ctx.identity.user_token`。
|
|
593
|
+
- 当前用户、企业知识库、本体用户操作显式传 `userToken`/`user_token`。模型、积分和普通知识库按业务选择用户或项目身份。数据库、对象存储和可观测性继续使用项目身份。
|
|
594
|
+
- 沿用现有 OAuth 授权范围与接口权限。凭证无权访问目标接口时返回现有鉴权错误,不扩大权限或换用其他身份。
|
|
595
|
+
- 修改已有项目时先接它的现有登录机制,不能用新模板的默认平台模式覆盖。真实 Token 只存在于运行时请求/会话,不写入源代码、共享环境变量或 Agent 提示词。
|
|
@@ -761,3 +761,13 @@ create(@Body() body: unknown) {
|
|
|
761
761
|
return this.userService.create(result.data);
|
|
762
762
|
}
|
|
763
763
|
```
|
|
764
|
+
|
|
765
|
+
## 编程项目登录身份
|
|
766
|
+
|
|
767
|
+
- 有内置登录时使用内置登录会话;没有内置登录时使用当前 LICOS 网页登录。内置登录未登录或过期时不能切换成平台用户。
|
|
768
|
+
- Node 服务端使用 `createProjectAuth({ mode: 'builtin', resolveBuiltinToken })` 或 `createProjectAuth({ mode: 'platform' })`,每次请求调用 `await projectAuth.userToken(request)`。内置解析器必须读取已有认证会话并返回用户已授权的 LICOS 凭证。
|
|
769
|
+
- 无内置登录的浏览器用户接口使用 `@kmlckj/licos-platform-sdk/browser` 的 `createProjectUserFetch`:平台登录桥领取一次性票据,项目后端兑换 Token。不要直接读取跨域平台 localStorage,不在 URL 中传 Token,不修改全局 fetch。项目级 API 保持原有请求方法。
|
|
770
|
+
- Python 使用 `ProjectAuth`;Agent/Workflow 通过 `config/licos-auth.json` 配置模式,内置登录设置 `resolver: "模块:函数"`,业务代码使用 `ctx.identity.user_token`。
|
|
771
|
+
- 当前用户、企业知识库、本体用户操作显式传 `userToken`/`user_token`。模型、积分和普通知识库按业务选择用户或项目身份。数据库、对象存储和可观测性继续使用项目身份。
|
|
772
|
+
- 沿用现有 OAuth 授权范围与接口权限。凭证无权访问目标接口时返回现有鉴权错误,不扩大权限或换用其他身份。
|
|
773
|
+
- 修改已有项目时先接它的现有登录机制,不能用新模板的默认平台模式覆盖。真实 Token 只存在于运行时请求/会话,不写入源代码、共享环境变量或 Agent 提示词。
|
|
@@ -181,11 +181,11 @@ importers:
|
|
|
181
181
|
server:
|
|
182
182
|
dependencies:
|
|
183
183
|
'@kmlckj/licos-dev-sdk':
|
|
184
|
-
specifier: 0.4.
|
|
185
|
-
version: 0.4.
|
|
184
|
+
specifier: 0.4.2
|
|
185
|
+
version: 0.4.2
|
|
186
186
|
'@kmlckj/licos-platform-sdk':
|
|
187
|
-
specifier: 0.12.
|
|
188
|
-
version: 0.12.
|
|
187
|
+
specifier: 0.12.3
|
|
188
|
+
version: 0.12.3
|
|
189
189
|
'@nestjs/common':
|
|
190
190
|
specifier: ^10.4.15
|
|
191
191
|
version: 10.4.22(reflect-metadata@0.2.2)(rxjs@7.8.2)
|
|
@@ -2590,12 +2590,12 @@ packages:
|
|
|
2590
2590
|
'@keyv/serialize@1.1.1':
|
|
2591
2591
|
resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==}
|
|
2592
2592
|
|
|
2593
|
-
'@kmlckj/licos-dev-sdk@0.4.
|
|
2594
|
-
resolution: {integrity: sha512-
|
|
2593
|
+
'@kmlckj/licos-dev-sdk@0.4.2':
|
|
2594
|
+
resolution: {integrity: sha512-dK6qzoTzVxEhvxE08B9ox0qel8s233gjWFdCvpOM+ekUctGjleyj1OJCOFXNvapY6U3HVDqeU+MvnBhJ0ne2dw==}
|
|
2595
2595
|
engines: {node: '>=18'}
|
|
2596
2596
|
|
|
2597
|
-
'@kmlckj/licos-platform-sdk@0.12.
|
|
2598
|
-
resolution: {integrity: sha512-
|
|
2597
|
+
'@kmlckj/licos-platform-sdk@0.12.3':
|
|
2598
|
+
resolution: {integrity: sha512-tnz1RhmkEig6iGH0hUk8aWrDf+lMqKzUjfCntyTTLUYkVfThj/E5+u/TANeBEWlq12RUmnmvXE4jMMYsssIA+g==}
|
|
2599
2599
|
|
|
2600
2600
|
'@leejim/wxml-parser@0.1.6':
|
|
2601
2601
|
resolution: {integrity: sha512-1u4ULGK4GKkWhTlc3Hmac8PknrmpGd7qxZOTnT/Bm6EZ/wtonLgFhJ4vyuiUZpeCptnknOLkRpGx2Um9npwdZw==}
|
|
@@ -12408,9 +12408,9 @@ snapshots:
|
|
|
12408
12408
|
|
|
12409
12409
|
'@keyv/serialize@1.1.1': {}
|
|
12410
12410
|
|
|
12411
|
-
'@kmlckj/licos-dev-sdk@0.4.
|
|
12411
|
+
'@kmlckj/licos-dev-sdk@0.4.2': {}
|
|
12412
12412
|
|
|
12413
|
-
'@kmlckj/licos-platform-sdk@0.12.
|
|
12413
|
+
'@kmlckj/licos-platform-sdk@0.12.3':
|
|
12414
12414
|
dependencies:
|
|
12415
12415
|
ajv: 8.17.1
|
|
12416
12416
|
ajv-formats: 3.0.1(ajv@8.17.1)
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
"start:prod": "node dist/main"
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@kmlckj/licos-dev-sdk": "0.4.
|
|
15
|
-
"@kmlckj/licos-platform-sdk": "0.12.
|
|
14
|
+
"@kmlckj/licos-dev-sdk": "0.4.2",
|
|
15
|
+
"@kmlckj/licos-platform-sdk": "0.12.3",
|
|
16
16
|
"@nestjs/common": "^10.4.15",
|
|
17
17
|
"@nestjs/core": "^10.4.15",
|
|
18
18
|
"@nestjs/platform-express": "^10.4.15",
|
|
@@ -1,8 +1,25 @@
|
|
|
1
|
-
import { Controller, Get } from '@nestjs/common';
|
|
1
|
+
import { Controller, Get, Req, HttpException } from '@nestjs/common';
|
|
2
|
+
import type { Request } from 'express';
|
|
3
|
+
import { getCurrentUser, ApiError } from '@kmlckj/licos-platform-sdk';
|
|
4
|
+
import { projectAuth, getProjectAuthConfig } from './project-auth';
|
|
2
5
|
import { AppService } from '@/app.service';
|
|
3
6
|
|
|
4
7
|
@Controller()
|
|
5
8
|
export class AppController {
|
|
9
|
+
@Get('licos/auth/config')
|
|
10
|
+
loginConfig() { return getProjectAuthConfig(); }
|
|
11
|
+
|
|
12
|
+
@Get('licos/auth/me')
|
|
13
|
+
async currentUser(@Req() request: Request) {
|
|
14
|
+
try {
|
|
15
|
+
const userToken = await projectAuth.userToken(request);
|
|
16
|
+
return await getCurrentUser({ userToken });
|
|
17
|
+
} catch (error) {
|
|
18
|
+
if (error instanceof ApiError) throw new HttpException(error.message, error.status || 401);
|
|
19
|
+
throw error;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
6
23
|
constructor(private readonly appService: AppService) {}
|
|
7
24
|
|
|
8
25
|
@Get('hello')
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { createProjectAuth, projectAuthConfig } from '@kmlckj/licos-platform-sdk';
|
|
2
|
+
|
|
3
|
+
// Connect an existing application login with mode: 'builtin' and resolveBuiltinToken.
|
|
4
|
+
export const projectAuth = createProjectAuth({ mode: 'platform' });
|
|
5
|
+
export const getProjectAuthConfig = () => projectAuthConfig(projectAuth.mode);
|
|
@@ -52,3 +52,13 @@
|
|
|
52
52
|
- 普通知识库、模型与积分接口默认使用项目身份;需要按网页登录用户执行时显式传 Token。数据库、存储、可观测性和 OAuth 应用管理使用项目身份。项目归属与平台签发的计费上下文独立保留。
|
|
53
53
|
- CLI 用户操作默认按 `LICOS_CURRENT_USER_ID` 换 Token;HTTP 服务调用 CLI 时使用 `--token-stdin`。Dev CLI 可用 `--identity project` 明确选择项目身份。
|
|
54
54
|
- 每个请求单独传 Token 或创建客户端,不把请求 Token、用户 ID 写进共享环境变量。
|
|
55
|
+
|
|
56
|
+
## 编程项目登录身份
|
|
57
|
+
|
|
58
|
+
- 有内置登录时使用内置登录会话;没有内置登录时使用当前 LICOS 网页登录。内置登录未登录或过期时不能切换成平台用户。
|
|
59
|
+
- Node 服务端使用 `createProjectAuth({ mode: 'builtin', resolveBuiltinToken })` 或 `createProjectAuth({ mode: 'platform' })`,每次请求调用 `await projectAuth.userToken(request)`。内置解析器必须读取已有认证会话并返回用户已授权的 LICOS 凭证。
|
|
60
|
+
- 无内置登录的浏览器用户接口使用 `@kmlckj/licos-platform-sdk/browser` 的 `createProjectUserFetch`:平台登录桥领取一次性票据,项目后端兑换 Token。不要直接读取跨域平台 localStorage,不在 URL 中传 Token,不修改全局 fetch。项目级 API 保持原有请求方法。
|
|
61
|
+
- Python 使用 `ProjectAuth`;Agent/Workflow 通过 `config/licos-auth.json` 配置模式,内置登录设置 `resolver: "模块:函数"`,业务代码使用 `ctx.identity.user_token`。
|
|
62
|
+
- 当前用户、企业知识库、本体用户操作显式传 `userToken`/`user_token`。模型、积分和普通知识库按业务选择用户或项目身份。数据库、对象存储和可观测性继续使用项目身份。
|
|
63
|
+
- 沿用现有 OAuth 授权范围与接口权限。凭证无权访问目标接口时返回现有鉴权错误,不扩大权限或换用其他身份。
|
|
64
|
+
- 修改已有项目时先接它的现有登录机制,不能用新模板的默认平台模式覆盖。真实 Token 只存在于运行时请求/会话,不写入源代码、共享环境变量或 Agent 提示词。
|
|
@@ -416,3 +416,13 @@ const pool = new Pool({ connectionString: process.env.DATABASE_URL });
|
|
|
416
416
|
2. 将整个项目上传到服务器
|
|
417
417
|
3. 运行 `pnpm install --registry=https://registry.npmmirror.com --prod`
|
|
418
418
|
4. 运行 `licos start` 启动服务
|
|
419
|
+
|
|
420
|
+
## 编程项目登录身份
|
|
421
|
+
|
|
422
|
+
- 有内置登录时使用内置登录会话;没有内置登录时使用当前 LICOS 网页登录。内置登录未登录或过期时不能切换成平台用户。
|
|
423
|
+
- Node 服务端使用 `createProjectAuth({ mode: 'builtin', resolveBuiltinToken })` 或 `createProjectAuth({ mode: 'platform' })`,每次请求调用 `await projectAuth.userToken(request)`。内置解析器必须读取已有认证会话并返回用户已授权的 LICOS 凭证。
|
|
424
|
+
- 无内置登录的浏览器用户接口使用 `@kmlckj/licos-platform-sdk/browser` 的 `createProjectUserFetch`:平台登录桥领取一次性票据,项目后端兑换 Token。不要直接读取跨域平台 localStorage,不在 URL 中传 Token,不修改全局 fetch。项目级 API 保持原有请求方法。
|
|
425
|
+
- Python 使用 `ProjectAuth`;Agent/Workflow 通过 `config/licos-auth.json` 配置模式,内置登录设置 `resolver: "模块:函数"`,业务代码使用 `ctx.identity.user_token`。
|
|
426
|
+
- 当前用户、企业知识库、本体用户操作显式传 `userToken`/`user_token`。模型、积分和普通知识库按业务选择用户或项目身份。数据库、对象存储和可观测性继续使用项目身份。
|
|
427
|
+
- 沿用现有 OAuth 授权范围与接口权限。凭证无权访问目标接口时返回现有鉴权错误,不扩大权限或换用其他身份。
|
|
428
|
+
- 修改已有项目时先接它的现有登录机制,不能用新模板的默认平台模式覆盖。真实 Token 只存在于运行时请求/会话,不写入源代码、共享环境变量或 Agent 提示词。
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
"ts-check": "tsc -p tsconfig.json"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@kmlckj/licos-dev-sdk": "0.4.
|
|
18
|
-
"@kmlckj/licos-platform-sdk": "0.12.
|
|
17
|
+
"@kmlckj/licos-dev-sdk": "0.4.2",
|
|
18
|
+
"@kmlckj/licos-platform-sdk": "0.12.3",
|
|
19
19
|
"dotenv": "^17.2.3",
|
|
20
20
|
"express": "^4.21.2"
|
|
21
21
|
},
|
|
@@ -13,11 +13,11 @@ importers:
|
|
|
13
13
|
.:
|
|
14
14
|
dependencies:
|
|
15
15
|
'@kmlckj/licos-dev-sdk':
|
|
16
|
-
specifier: 0.4.
|
|
17
|
-
version: 0.4.
|
|
16
|
+
specifier: 0.4.2
|
|
17
|
+
version: 0.4.2
|
|
18
18
|
'@kmlckj/licos-platform-sdk':
|
|
19
|
-
specifier: 0.12.
|
|
20
|
-
version: 0.12.
|
|
19
|
+
specifier: 0.12.3
|
|
20
|
+
version: 0.12.3
|
|
21
21
|
dotenv:
|
|
22
22
|
specifier: ^17.2.3
|
|
23
23
|
version: 17.2.4
|
|
@@ -291,13 +291,13 @@ packages:
|
|
|
291
291
|
'@jridgewell/trace-mapping@0.3.31':
|
|
292
292
|
resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
|
|
293
293
|
|
|
294
|
-
'@kmlckj/licos-dev-sdk@0.4.
|
|
295
|
-
resolution: {integrity: sha512-
|
|
294
|
+
'@kmlckj/licos-dev-sdk@0.4.2':
|
|
295
|
+
resolution: {integrity: sha512-dK6qzoTzVxEhvxE08B9ox0qel8s233gjWFdCvpOM+ekUctGjleyj1OJCOFXNvapY6U3HVDqeU+MvnBhJ0ne2dw==}
|
|
296
296
|
engines: {node: '>=18'}
|
|
297
297
|
|
|
298
|
-
'@kmlckj/licos-platform-sdk@0.12.
|
|
298
|
+
'@kmlckj/licos-platform-sdk@0.12.3':
|
|
299
299
|
resolution:
|
|
300
|
-
integrity: sha512-
|
|
300
|
+
integrity: sha512-tnz1RhmkEig6iGH0hUk8aWrDf+lMqKzUjfCntyTTLUYkVfThj/E5+u/TANeBEWlq12RUmnmvXE4jMMYsssIA+g==
|
|
301
301
|
|
|
302
302
|
'@nodelib/fs.scandir@2.1.5':
|
|
303
303
|
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
|
|
@@ -1751,9 +1751,9 @@ snapshots:
|
|
|
1751
1751
|
'@jridgewell/resolve-uri': 3.1.2
|
|
1752
1752
|
'@jridgewell/sourcemap-codec': 1.5.5
|
|
1753
1753
|
|
|
1754
|
-
'@kmlckj/licos-dev-sdk@0.4.
|
|
1754
|
+
'@kmlckj/licos-dev-sdk@0.4.2': {}
|
|
1755
1755
|
|
|
1756
|
-
'@kmlckj/licos-platform-sdk@0.12.
|
|
1756
|
+
'@kmlckj/licos-platform-sdk@0.12.3':
|
|
1757
1757
|
dependencies:
|
|
1758
1758
|
ajv: 8.17.1
|
|
1759
1759
|
ajv-formats: 3.0.1(ajv@8.17.1)
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { createProjectAuth, projectAuthConfig } from '@kmlckj/licos-platform-sdk';
|
|
2
|
+
|
|
3
|
+
// Adding built-in login requires mode: 'builtin' and its session token resolver here.
|
|
4
|
+
export const projectAuth = createProjectAuth({ mode: 'platform' });
|
|
5
|
+
export const getProjectAuthConfig = () => projectAuthConfig(projectAuth.mode);
|
|
@@ -1,7 +1,20 @@
|
|
|
1
1
|
import { Router } from 'express';
|
|
2
|
+
import { getCurrentUser, ApiError } from '@kmlckj/licos-platform-sdk';
|
|
3
|
+
import { projectAuth, getProjectAuthConfig } from '../project-auth';
|
|
2
4
|
|
|
3
5
|
const router = Router();
|
|
4
6
|
|
|
7
|
+
router.get('/api/licos/auth/config', (_req, res) => res.json(getProjectAuthConfig()));
|
|
8
|
+
router.get('/api/licos/auth/me', async (req, res, next) => {
|
|
9
|
+
try {
|
|
10
|
+
const userToken = await projectAuth.userToken(req);
|
|
11
|
+
res.json(await getCurrentUser({ userToken }));
|
|
12
|
+
} catch (error) {
|
|
13
|
+
if (error instanceof ApiError) res.status(error.status || 401).json({ error: error.message });
|
|
14
|
+
else next(error);
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
|
|
5
18
|
// API 路由示例
|
|
6
19
|
router.get('/api/hello', (req, res) => {
|
|
7
20
|
res.json({
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { createProjectUserFetch } from '@kmlckj/licos-platform-sdk/browser';
|
|
2
|
+
|
|
3
|
+
let client: Promise<ReturnType<typeof createProjectUserFetch>> | undefined;
|
|
4
|
+
|
|
5
|
+
async function loadClient() {
|
|
6
|
+
const previewBase = (window as Window & { __LICOS_PREVIEW_BASE_PATH__?: string }).__LICOS_PREVIEW_BASE_PATH__;
|
|
7
|
+
const base = new URL((previewBase || import.meta.env.BASE_URL).replace(/\/+$/, '') + '/', window.location.origin);
|
|
8
|
+
const response = await fetch(new URL('api/licos/auth/config', base));
|
|
9
|
+
if (!response.ok) throw new Error('Cannot load project login configuration');
|
|
10
|
+
const config = await response.json();
|
|
11
|
+
return createProjectUserFetch({ ...config, projectBaseUrl: base.href });
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export async function projectUserFetch(path: string, init?: RequestInit) {
|
|
15
|
+
client ??= loadClient();
|
|
16
|
+
return (await client)(path, init);
|
|
17
|
+
}
|
|
@@ -46,3 +46,13 @@
|
|
|
46
46
|
- 普通知识库、模型与积分接口默认使用项目身份;需要按网页登录用户执行时显式传 Token。数据库、存储、可观测性和 OAuth 应用管理使用项目身份。项目归属与平台签发的计费上下文独立保留。
|
|
47
47
|
- CLI 用户操作默认按 `LICOS_CURRENT_USER_ID` 换 Token;HTTP 服务调用 CLI 时使用 `--token-stdin`。Dev CLI 可用 `--identity project` 明确选择项目身份。
|
|
48
48
|
- 每个请求单独传 Token 或创建客户端,不把请求 Token、用户 ID 写进共享环境变量。
|
|
49
|
+
|
|
50
|
+
## 编程项目登录身份
|
|
51
|
+
|
|
52
|
+
- 有内置登录时使用内置登录会话;没有内置登录时使用当前 LICOS 网页登录。内置登录未登录或过期时不能切换成平台用户。
|
|
53
|
+
- Node 服务端使用 `createProjectAuth({ mode: 'builtin', resolveBuiltinToken })` 或 `createProjectAuth({ mode: 'platform' })`,每次请求调用 `await projectAuth.userToken(request)`。内置解析器必须读取已有认证会话并返回用户已授权的 LICOS 凭证。
|
|
54
|
+
- 无内置登录的浏览器用户接口使用 `@kmlckj/licos-platform-sdk/browser` 的 `createProjectUserFetch`:平台登录桥领取一次性票据,项目后端兑换 Token。不要直接读取跨域平台 localStorage,不在 URL 中传 Token,不修改全局 fetch。项目级 API 保持原有请求方法。
|
|
55
|
+
- Python 使用 `ProjectAuth`;Agent/Workflow 通过 `config/licos-auth.json` 配置模式,内置登录设置 `resolver: "模块:函数"`,业务代码使用 `ctx.identity.user_token`。
|
|
56
|
+
- 当前用户、企业知识库、本体用户操作显式传 `userToken`/`user_token`。模型、积分和普通知识库按业务选择用户或项目身份。数据库、对象存储和可观测性继续使用项目身份。
|
|
57
|
+
- 沿用现有 OAuth 授权范围与接口权限。凭证无权访问目标接口时返回现有鉴权错误,不扩大权限或换用其他身份。
|
|
58
|
+
- 修改已有项目时先接它的现有登录机制,不能用新模板的默认平台模式覆盖。真实 Token 只存在于运行时请求/会话,不写入源代码、共享环境变量或 Agent 提示词。
|
|
@@ -138,3 +138,13 @@ MES、ERP、审批等有副作用的节点必须使用稳定幂等键。推荐
|
|
|
138
138
|
## 项目上下文
|
|
139
139
|
|
|
140
140
|
项目内的 `AGENTS.md` 用于记录可由用户维护的项目上下文,例如业务目标、节点清单、输入输出样例和测试方式。
|
|
141
|
+
|
|
142
|
+
## 编程项目登录身份
|
|
143
|
+
|
|
144
|
+
- 有内置登录时使用内置登录会话;没有内置登录时使用当前 LICOS 网页登录。内置登录未登录或过期时不能切换成平台用户。
|
|
145
|
+
- Node 服务端使用 `createProjectAuth({ mode: 'builtin', resolveBuiltinToken })` 或 `createProjectAuth({ mode: 'platform' })`,每次请求调用 `await projectAuth.userToken(request)`。内置解析器必须读取已有认证会话并返回用户已授权的 LICOS 凭证。
|
|
146
|
+
- 无内置登录的浏览器用户接口使用 `@kmlckj/licos-platform-sdk/browser` 的 `createProjectUserFetch`:平台登录桥领取一次性票据,项目后端兑换 Token。不要直接读取跨域平台 localStorage,不在 URL 中传 Token,不修改全局 fetch。项目级 API 保持原有请求方法。
|
|
147
|
+
- Python 使用 `ProjectAuth`;Agent/Workflow 通过 `config/licos-auth.json` 配置模式,内置登录设置 `resolver: "模块:函数"`,业务代码使用 `ctx.identity.user_token`。
|
|
148
|
+
- 当前用户、企业知识库、本体用户操作显式传 `userToken`/`user_token`。模型、积分和普通知识库按业务选择用户或项目身份。数据库、对象存储和可观测性继续使用项目身份。
|
|
149
|
+
- 沿用现有 OAuth 授权范围与接口权限。凭证无权访问目标接口时返回现有鉴权错误,不扩大权限或换用其他身份。
|
|
150
|
+
- 修改已有项目时先接它的现有登录机制,不能用新模板的默认平台模式覆盖。真实 Token 只存在于运行时请求/会话,不写入源代码、共享环境变量或 Agent 提示词。
|
|
@@ -4,9 +4,9 @@ version = "0.1.0"
|
|
|
4
4
|
description = "LICOS LangGraph workflow project"
|
|
5
5
|
requires-python = ">=3.12"
|
|
6
6
|
dependencies = [
|
|
7
|
-
"licos-agent-runtime>=0.5.
|
|
8
|
-
"licos-platform-sdk>=0.7.
|
|
9
|
-
"licos-dev-sdk>=0.6.
|
|
7
|
+
"licos-agent-runtime>=0.5.4",
|
|
8
|
+
"licos-platform-sdk>=0.7.4",
|
|
9
|
+
"licos-dev-sdk>=0.6.4",
|
|
10
10
|
]
|
|
11
11
|
|
|
12
12
|
[tool.uv]
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
licos-agent-runtime>=0.5.
|
|
2
|
-
licos-platform-sdk>=0.7.
|
|
3
|
-
licos-dev-sdk>=0.6.
|
|
1
|
+
licos-agent-runtime>=0.5.4
|
|
2
|
+
licos-platform-sdk>=0.7.4
|
|
3
|
+
licos-dev-sdk>=0.6.4
|