@downcity/type 0.1.6

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 ADDED
@@ -0,0 +1,12 @@
1
+ # @downcity/type
2
+
3
+ `@downcity/type` 是 Downcity 跨 package 的共享协议类型包。
4
+
5
+ 它只放需要被多个 package 共同识别的核心协议,避免 `@downcity/agent`、`@downcity/city`、`@downcity/services` 之间产生不必要的直接耦合。
6
+
7
+ ## 当前协议
8
+
9
+ - `CityModelDescriptor`:City 模型目录返回的公开模型信息。
10
+ - `CityModel`:User City 返回的可执行 City 模型,可被支持 City model 的 SDK 直接消费。
11
+ - `isCityModel()`:判断一个值是否实现 City model 协议。
12
+
package/bin/index.d.ts ADDED
@@ -0,0 +1,157 @@
1
+ /**
2
+ * @downcity/type 公共协议入口。
3
+ *
4
+ * 关键点(中文)
5
+ * - 这里只放跨 package 必须共享的协议类型。
6
+ * - 不放 Agent SDK 自己的组合类型,也不放 City SDK 的具体实现类。
7
+ * - 运行时可执行能力通过隐藏 symbol 暴露,避免污染用户可见的模型目录字段。
8
+ */
9
+ import type { UIMessage, UIMessageChunk } from "ai";
10
+ /**
11
+ * City model 的公开协议标识。
12
+ */
13
+ export declare const CITY_MODEL_KIND: "downcity.city-model";
14
+ /**
15
+ * City model 的隐藏调用器 symbol。
16
+ *
17
+ * 关键点(中文)
18
+ * - 使用全局 symbol,保证不同 package 副本之间仍可识别同一个协议键。
19
+ * - 该字段不面向用户直接调用,只供支持 CityModel 的 SDK 内部适配。
20
+ */
21
+ export declare const CITY_MODEL_INVOKER: unique symbol;
22
+ /**
23
+ * City 模型依赖的环境变量需求。
24
+ */
25
+ export interface CityModelEnvRequirement {
26
+ /**
27
+ * 环境变量 key,例如 `OPENAI_API_KEY`。
28
+ */
29
+ key: string;
30
+ /**
31
+ * 给管理员展示的说明文本。
32
+ */
33
+ description: string;
34
+ /**
35
+ * 当前环境变量是否为调用该模型的必填项。
36
+ */
37
+ required: boolean;
38
+ }
39
+ /**
40
+ * City 模型目录中的公开模型信息。
41
+ */
42
+ export interface CityModelDescriptor {
43
+ /**
44
+ * 模型唯一 ID,用于请求 City AIService。
45
+ */
46
+ id: string;
47
+ /**
48
+ * 模型展示名称,用于 Console、文档或产品 UI。
49
+ */
50
+ name: string;
51
+ /**
52
+ * 模型说明文本。
53
+ */
54
+ description: string;
55
+ /**
56
+ * 该模型支持的能力列表,例如 `text`、`stream`、`image`。
57
+ */
58
+ modalities: string[];
59
+ /**
60
+ * 用于筛选或展示的模型标签。
61
+ */
62
+ tags: string[];
63
+ /**
64
+ * 模型元数据,供宿主记录 provider、区域、套餐等扩展信息。
65
+ */
66
+ meta: Record<string, unknown>;
67
+ /**
68
+ * 模型依赖的环境变量需求。
69
+ *
70
+ * 关键点(中文)
71
+ * - 通常只在 admin 身份下返回。
72
+ * - user 身份下可能不存在该字段。
73
+ */
74
+ env_requirements?: CityModelEnvRequirement[];
75
+ /**
76
+ * 该模型默认负责的 modality 列表。
77
+ *
78
+ * 关键点(中文)
79
+ * - 通常只在 admin 身份下返回。
80
+ * - user 身份下默认能力由 ModelCatalog 计算得到。
81
+ */
82
+ default_modes?: string[];
83
+ /**
84
+ * 当前模型是否为目录中的全局默认模型。
85
+ *
86
+ * 关键点(中文)
87
+ * - 该字段通常由 City 侧 ModelCatalog 计算得到。
88
+ */
89
+ is_default?: boolean;
90
+ /**
91
+ * 当前模型作为默认模型负责的 modality 列表。
92
+ *
93
+ * 关键点(中文)
94
+ * - 该字段通常由 City 侧 ModelCatalog 计算得到。
95
+ */
96
+ default_modalities?: string[];
97
+ }
98
+ /**
99
+ * City 模型执行输入。
100
+ */
101
+ export interface CityModelInvokeInput {
102
+ /**
103
+ * 单轮 prompt 文本。
104
+ */
105
+ prompt?: string;
106
+ /**
107
+ * 多轮 UIMessage 消息列表。
108
+ */
109
+ messages?: UIMessage[];
110
+ /**
111
+ * 模型可调用工具定义。
112
+ */
113
+ tools?: unknown;
114
+ /**
115
+ * provider 级扩展选项。
116
+ */
117
+ providerOptions?: unknown;
118
+ /**
119
+ * 其他透传给 City AIService action 的输入字段。
120
+ */
121
+ [key: string]: unknown;
122
+ }
123
+ /**
124
+ * City 模型隐藏调用器。
125
+ */
126
+ export interface CityModelInvoker {
127
+ /**
128
+ * 使用当前 City 模型执行一次非流式文本调用。
129
+ */
130
+ text(input: CityModelInvokeInput): Promise<UIMessage>;
131
+ /**
132
+ * 使用当前 City 模型执行一次流式调用。
133
+ */
134
+ stream(input: CityModelInvokeInput): Promise<ReadableStream<UIMessageChunk>>;
135
+ }
136
+ /**
137
+ * 可执行 City 模型。
138
+ *
139
+ * 关键点(中文)
140
+ * - 公开字段来自 City 模型目录。
141
+ * - 隐藏调用器由 City 注入,Agent SDK 可据此把 CityModel 适配为 LanguageModel。
142
+ */
143
+ export interface CityModel extends CityModelDescriptor {
144
+ /**
145
+ * City model 协议标识。
146
+ */
147
+ readonly kind: typeof CITY_MODEL_KIND;
148
+ /**
149
+ * 隐藏调用器,不作为用户日常 API 使用。
150
+ */
151
+ readonly [CITY_MODEL_INVOKER]: CityModelInvoker;
152
+ }
153
+ /**
154
+ * 判断输入值是否实现 CityModel 协议。
155
+ */
156
+ export declare function isCityModel(value: unknown): value is CityModel;
157
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,IAAI,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,eAAe,EAAG,qBAA8B,CAAC;AAE9D;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,OAAO,MAE9B,CAAC;AAEX;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,UAAU,EAAE,MAAM,EAAE,CAAC;IAErB;;OAEG;IACH,IAAI,EAAE,MAAM,EAAE,CAAC;IAEf;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE9B;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,uBAAuB,EAAE,CAAC;IAE7C;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAEzB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC;IAEvB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAEtD;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC;CAC9E;AAED;;;;;;GAMG;AACH,MAAM,WAAW,SAAU,SAAQ,mBAAmB;IACpD;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,OAAO,eAAe,CAAC;IAEtC;;OAEG;IACH,QAAQ,CAAC,CAAC,kBAAkB,CAAC,EAAE,gBAAgB,CAAC;CACjD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAS9D"}
package/bin/index.js ADDED
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @downcity/type 公共协议入口。
3
+ *
4
+ * 关键点(中文)
5
+ * - 这里只放跨 package 必须共享的协议类型。
6
+ * - 不放 Agent SDK 自己的组合类型,也不放 City SDK 的具体实现类。
7
+ * - 运行时可执行能力通过隐藏 symbol 暴露,避免污染用户可见的模型目录字段。
8
+ */
9
+ /**
10
+ * City model 的公开协议标识。
11
+ */
12
+ export const CITY_MODEL_KIND = "downcity.city-model";
13
+ /**
14
+ * City model 的隐藏调用器 symbol。
15
+ *
16
+ * 关键点(中文)
17
+ * - 使用全局 symbol,保证不同 package 副本之间仍可识别同一个协议键。
18
+ * - 该字段不面向用户直接调用,只供支持 CityModel 的 SDK 内部适配。
19
+ */
20
+ export const CITY_MODEL_INVOKER = Symbol.for("downcity.city-model.invoker");
21
+ /**
22
+ * 判断输入值是否实现 CityModel 协议。
23
+ */
24
+ export function isCityModel(value) {
25
+ if (!value || typeof value !== "object")
26
+ return false;
27
+ const record = value;
28
+ return (record.kind === CITY_MODEL_KIND &&
29
+ typeof record.id === "string" &&
30
+ typeof record[CITY_MODEL_INVOKER] === "object" &&
31
+ record[CITY_MODEL_INVOKER] !== null);
32
+ }
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,qBAA8B,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAkB,MAAM,CAAC,GAAG,CACzD,6BAA6B,CACrB,CAAC;AA2JX;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,MAAM,GAAG,KAAqC,CAAC;IACrD,OAAO,CACL,MAAM,CAAC,IAAI,KAAK,eAAe;QAC/B,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ;QAC7B,OAAO,MAAM,CAAC,kBAAkB,CAAC,KAAK,QAAQ;QAC9C,MAAM,CAAC,kBAAkB,CAAC,KAAK,IAAI,CACpC,CAAC;AACJ,CAAC"}
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "@downcity/type",
3
+ "version": "0.1.6",
4
+ "description": "Downcity shared protocol types for cross-package SDK boundaries.",
5
+ "type": "module",
6
+ "main": "./bin/index.js",
7
+ "module": "./bin/index.js",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./bin/index.d.ts",
11
+ "import": "./bin/index.js"
12
+ }
13
+ },
14
+ "types": "./bin/index.d.ts",
15
+ "files": [
16
+ "bin"
17
+ ],
18
+ "publishConfig": {
19
+ "access": "public"
20
+ },
21
+ "repository": {
22
+ "type": "git",
23
+ "url": "git+https://github.com/wangenius/downcity.git",
24
+ "directory": "packages/type"
25
+ },
26
+ "homepage": "https://downcity.ai",
27
+ "bugs": {
28
+ "url": "https://github.com/wangenius/downcity/issues"
29
+ },
30
+ "keywords": [
31
+ "downcity",
32
+ "types",
33
+ "protocol",
34
+ "sdk"
35
+ ],
36
+ "license": "MIT",
37
+ "dependencies": {
38
+ "ai": "^6.0.193"
39
+ },
40
+ "devDependencies": {
41
+ "typescript": "^6.0.3"
42
+ },
43
+ "scripts": {
44
+ "build": "tsc",
45
+ "dev": "tsc --watch",
46
+ "typecheck": "tsc --noEmit",
47
+ "version:patch": "node ../../scripts/bump-package-version.mjs ./package.json"
48
+ }
49
+ }