@coralai/sps-plugin-api 0.6.0 → 0.7.0
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/dist/index.d.ts +58 -8
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -103,7 +103,19 @@ export interface SpsSystemPrompt {
|
|
|
103
103
|
* `mode:'async'` 的甚至返回后任务仍在跑(由 join 卡等终态)。
|
|
104
104
|
* 要做"生成一批图"这种事,选能力,别选工具。
|
|
105
105
|
*/
|
|
106
|
-
export
|
|
106
|
+
export type SpsAsyncPoll = {
|
|
107
|
+
done: false;
|
|
108
|
+
} | {
|
|
109
|
+
done: true;
|
|
110
|
+
ok: true;
|
|
111
|
+
result: Record<string, unknown>;
|
|
112
|
+
} | {
|
|
113
|
+
done: true;
|
|
114
|
+
ok: false;
|
|
115
|
+
error: string;
|
|
116
|
+
};
|
|
117
|
+
/** 两种能力共有的那部分。 */
|
|
118
|
+
export interface SpsCapabilityBase {
|
|
107
119
|
/** 能力 id,卡片用它引用。命名 `<域>.<动作>`,如 `art.chromaKey`。 */
|
|
108
120
|
id: string;
|
|
109
121
|
mode: 'sync' | 'async';
|
|
@@ -131,14 +143,52 @@ export interface SpsCapability {
|
|
|
131
143
|
};
|
|
132
144
|
/** 一句话说明,给编排页展示。 */
|
|
133
145
|
summary: string;
|
|
134
|
-
/**
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
146
|
+
/**
|
|
147
|
+
* 这个能力失败时,**这张卡怎么处置**。缺省 `'block'`。
|
|
148
|
+
* ```
|
|
149
|
+
* block 留在原地打 NEEDS-FIX —— 波次屏障挡住后面所有卡,图上看得见它卡住了
|
|
150
|
+
* skip 标 Canceled ⇒ 屏障**放行**,后续卡照跑(留痕写进卡片 meta)
|
|
151
|
+
* ```
|
|
152
|
+
* 🔴 声明式,不是"能力自己去改卡片状态" —— 后者会让卡片有两个写入方。
|
|
153
|
+
* ⚠️ `'skip'` 给"部分失败是常态"的工序用;scaffold/package 这种别用。
|
|
154
|
+
*/
|
|
155
|
+
onFailure?: 'block' | 'skip';
|
|
156
|
+
}
|
|
157
|
+
export interface SpsCapabilityCtx {
|
|
158
|
+
/** 项目在共享树下的相对路径(`t<租户>/<产品>/<项目>`)。 */
|
|
159
|
+
project: string;
|
|
160
|
+
/** 项目工作区绝对路径。**能力不从卡片收路径**,只从这里取根。 */
|
|
161
|
+
projectDir: string;
|
|
162
|
+
}
|
|
163
|
+
/** 同步能力:`run` 返回即完成。 */
|
|
164
|
+
export interface SpsSyncCapability extends SpsCapabilityBase {
|
|
165
|
+
mode: 'sync';
|
|
166
|
+
run(input: unknown, ctx: SpsCapabilityCtx): Promise<Record<string, unknown>>;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* 异步能力:`start` 立刻返回,引擎每个 tick `poll` 一次。
|
|
170
|
+
*
|
|
171
|
+
* 🔴 **卡片在真正跑完之前不标 Done** —— 波次屏障(`order`)因此天然成为 join。
|
|
172
|
+
* "打包必须等美术"用 order 表达即可,没有单独的 join 卡执行路径,也不需要。
|
|
173
|
+
*/
|
|
174
|
+
export interface SpsAsyncCapability extends SpsCapabilityBase {
|
|
175
|
+
mode: 'async';
|
|
176
|
+
/** 启动外部任务并**立刻返回**。handle 存进卡片 meta。 */
|
|
177
|
+
start(input: unknown, ctx: SpsCapabilityCtx): Promise<{
|
|
178
|
+
handle: string;
|
|
179
|
+
}>;
|
|
180
|
+
/**
|
|
181
|
+
* 问状态。**每个 tick 都会调 ⇒ 必须便宜且幂等。**
|
|
182
|
+
* 别在这里重新扫盘或重新请求全量 —— 它会按 tick 频率被放大。
|
|
183
|
+
*/
|
|
184
|
+
poll(handle: string, ctx: SpsCapabilityCtx): Promise<SpsAsyncPoll>;
|
|
185
|
+
/**
|
|
186
|
+
* 多久算超时(ms)。缺省 **30 分钟**。
|
|
187
|
+
* ⚠️ 超时**由引擎按 startedAt 判**,不问你 —— 你可能正好卡死在自己的等待上。
|
|
188
|
+
*/
|
|
189
|
+
timeoutMs?: number;
|
|
141
190
|
}
|
|
191
|
+
export type SpsCapability = SpsSyncCapability | SpsAsyncCapability;
|
|
142
192
|
export interface SpsCapabilities {
|
|
143
193
|
register(cap: SpsCapability): () => void;
|
|
144
194
|
get(id: string): SpsCapability | undefined;
|