@coralai/sps-cli 0.66.1 → 0.66.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/dist/commands/reset.d.ts.map +1 -1
- package/dist/commands/reset.js +10 -0
- package/dist/commands/reset.js.map +1 -1
- package/dist/console/routes/cards.d.ts.map +1 -1
- package/dist/console/routes/cards.js.map +1 -1
- package/dist/console-assets/assets/{ShowcasePage-BLOXINZu.js → ShowcasePage-DcQHbd4E.js} +1 -1
- package/dist/console-assets/assets/{index-DWDbMsJn.js → index-DHskTahs.js} +219 -219
- package/dist/console-assets/index.html +1 -1
- package/dist/core/tools/artCapabilities.js +1 -1
- package/dist/core/tools/artCapabilities.js.map +1 -1
- package/dist/core/tools/markStale.d.ts +28 -0
- package/dist/core/tools/markStale.d.ts.map +1 -0
- package/dist/core/tools/markStale.js +28 -0
- package/dist/core/tools/markStale.js.map +1 -0
- package/dist/core/tools/registry.d.ts +13 -1
- package/dist/core/tools/registry.d.ts.map +1 -1
- package/dist/core/tools/registry.js +61 -1
- package/dist/core/tools/registry.js.map +1 -1
- package/dist/core/tools/staleDownstream.d.ts +31 -0
- package/dist/core/tools/staleDownstream.d.ts.map +1 -0
- package/dist/core/tools/staleDownstream.js +29 -0
- package/dist/core/tools/staleDownstream.js.map +1 -0
- package/dist/engines/StageEngine.d.ts.map +1 -1
- package/dist/engines/StageEngine.js +13 -1
- package/dist/engines/StageEngine.js.map +1 -1
- package/dist/services/CardService.d.ts +8 -0
- package/dist/services/CardService.d.ts.map +1 -1
- package/dist/services/CardService.js +15 -2
- package/dist/services/CardService.js.map +1 -1
- package/package.json +1 -1
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
9
9
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
10
10
|
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
|
|
11
|
-
<script type="module" crossorigin src="/assets/index-
|
|
11
|
+
<script type="module" crossorigin src="/assets/index-DHskTahs.js"></script>
|
|
12
12
|
<link rel="stylesheet" crossorigin href="/assets/index-DCKXZKta.css">
|
|
13
13
|
</head>
|
|
14
14
|
<body>
|
|
@@ -49,7 +49,7 @@ export function artCapabilities() {
|
|
|
49
49
|
op('art.packAtlas', '打包图集 + 写 atlas json', z.object({ in: rel, cols: z.number(), rows: z.number(), out: rel.optional(), id: z.string().optional(), assetsDir: rel.optional(), grid: z.boolean().optional(), frameMaxHeight: z.number().optional() }), ['<out>', '<assetsDir>/<id>.json'], ops.packAtlas),
|
|
50
50
|
op('art.normalizeSheet', '把图集归一到统一格位', z.object({ in: rel, cols: z.number(), rows: z.number(), out: rel.optional() }), ['<out>'], ops.normalizeSheet),
|
|
51
51
|
op('art.normalizeFrames', '把逐帧归一到统一画布', z.object({ in: z.array(rel).min(1), outDir: rel.optional(), targetWidth: z.number().optional(), targetHeight: z.number().optional(), pad: z.number().optional() }), ['<outDir>/frame_<i>.png'], ops.normalizeFrames),
|
|
52
|
-
op('art.resize', '等比缩到不超过给定尺寸(
|
|
52
|
+
op('art.resize', '等比缩到不超过给定尺寸(不适用于图集)', z.object({ in: rel, maxWidth: z.number(), maxHeight: z.number(), out: rel.optional() }), ['<out>'], ops.resize),
|
|
53
53
|
];
|
|
54
54
|
}
|
|
55
55
|
//# sourceMappingURL=artCapabilities.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artCapabilities.js","sourceRoot":"","sources":["../../../src/core/tools/artCapabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,GAAG,MAAM,eAAe,CAAC;AAGrC,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,UAAU,EAAW,CAAC;AAE9C,oDAAoD;AACpD,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAE9B,SAAS,EAAE,CACT,EAAU,EACV,OAAe,EACf,WAAyB,EACzB,QAAkB,EAClB,EAAoE;IAEpE,OAAO;QACL,EAAE;QACF,IAAI,EAAE,MAAM;QACZ,WAAW;QACX,QAAQ;QACR,MAAM,EAAE,OAAO;QACf,OAAO;QACP,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG;YAClB,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAA4B,CAAC;YACnE,0CAA0C;YAC1C,MAAM,GAAG,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnF,MAAM,IAAI,GAA4B,EAAE,GAAG,MAAM,EAAE,CAAC;YACpD,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,CAAC;gBACjE,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS;oBAAE,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,CAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/G,CAAC;YACD,OAAO,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO;QACL,EAAE,CAAC,eAAe,EAAE,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC;QAC1K,EAAE,CAAC,WAAW,EAAE,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC;QAClG,EAAE,CAAC,gBAAgB,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC;QAC5J,EAAE,CAAC,aAAa,EAAE,kBAAkB,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC;QAC7E,EAAE,CAAC,aAAa,EAAE,gCAAgC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC;QACrH,EAAE,CAAC,gBAAgB,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC;QACzN,EAAE,CAAC,eAAe,EAAE,qBAAqB,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,uBAAuB,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC;QACxS,EAAE,CAAC,oBAAoB,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC;QACrJ,EAAE,CAAC,qBAAqB,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC,EAAE,GAAG,CAAC,eAAe,CAAC;QAC5P,EAAE,CAAC,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"artCapabilities.js","sourceRoot":"","sources":["../../../src/core/tools/artCapabilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module core/tools/markStale
|
|
3
|
+
* @description 把 `staleDownstreamSeqs` 算出的结果**落到卡片上** —— 算与写分开的那个"写"。
|
|
4
|
+
*
|
|
5
|
+
* @layer core
|
|
6
|
+
*
|
|
7
|
+
* 🔴 **两个 reset 入口调同一个函数**(console 的 CardService.reset / CLI 的 executeReset)。
|
|
8
|
+
* 它们本来就是两份独立实现,清 label 的列表都已经不一致了 ——
|
|
9
|
+
* 再让"算波及面"也各写一份,漂是迟早的事。
|
|
10
|
+
*
|
|
11
|
+
* 🔴 **标记失败不能让 reset 失败**:reset 的本职是"把这张卡清干净重跑",
|
|
12
|
+
* 它已经做完了。为一个**提示性**标记回滚一次成功的重置,是把主次弄反。
|
|
13
|
+
* ⇒ 逐张 best-effort,失败只影响那一张。
|
|
14
|
+
*/
|
|
15
|
+
import type { Card } from '../../shared/types.js';
|
|
16
|
+
/** 只要求这两个方法 —— 两个入口拿到的 backend 类型不同,按**用得到的能力**取交集。 */
|
|
17
|
+
interface LabelTarget {
|
|
18
|
+
listAll(): Promise<Card[]>;
|
|
19
|
+
addLabel(seq: string, label: string): Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* @param resetSeqs 本次被重置的 seq
|
|
23
|
+
* @param doneState 完成态名。**取重置前的状态**判"这张卡跑完了没有"
|
|
24
|
+
* @returns 实际打上标记的 seq
|
|
25
|
+
*/
|
|
26
|
+
export declare function markStaleDownstream(backend: LabelTarget, resetSeqs: string[], doneState: string): Promise<string[]>;
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=markStale.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markStale.d.ts","sourceRoot":"","sources":["../../../src/core/tools/markStale.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAGlD,uDAAuD;AACvD,UAAU,WAAW;IACnB,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrD;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,MAAM,EAAE,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,EAAE,CAAC,CAkBnB"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { STALE_UPSTREAM_LABEL, staleDownstreamSeqs } from './staleDownstream.js';
|
|
2
|
+
/**
|
|
3
|
+
* @param resetSeqs 本次被重置的 seq
|
|
4
|
+
* @param doneState 完成态名。**取重置前的状态**判"这张卡跑完了没有"
|
|
5
|
+
* @returns 实际打上标记的 seq
|
|
6
|
+
*/
|
|
7
|
+
export async function markStaleDownstream(backend, resetSeqs, doneState) {
|
|
8
|
+
let all;
|
|
9
|
+
try {
|
|
10
|
+
all = await backend.listAll();
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return [];
|
|
14
|
+
}
|
|
15
|
+
const targets = staleDownstreamSeqs(resetSeqs, all, doneState);
|
|
16
|
+
const marked = [];
|
|
17
|
+
for (const seq of targets) {
|
|
18
|
+
try {
|
|
19
|
+
await backend.addLabel(seq, STALE_UPSTREAM_LABEL);
|
|
20
|
+
marked.push(seq);
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
/* best effort:一张标不上不影响其余,更不该让 reset 失败 */
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return marked;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=markStale.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markStale.js","sourceRoot":"","sources":["../../../src/core/tools/markStale.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAQjF;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAoB,EACpB,SAAmB,EACnB,SAAiB;IAEjB,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,OAAO,GAAG,mBAAmB,CAAC,SAAS,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;YAClD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;QAAC,MAAM,CAAC;YACP,0CAA0C;QAC5C,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* `built-in` 所有项目都有;`script` **只属于装了那个模板的项目**。
|
|
18
18
|
* 全局表会列出这个项目根本用不了的能力 —— 那是让人排出一张跑不起来的图。
|
|
19
19
|
*/
|
|
20
|
-
import type
|
|
20
|
+
import { type ZodTypeAny } from 'zod';
|
|
21
21
|
export type CapabilityMode = 'sync' | 'async';
|
|
22
22
|
export interface Capability {
|
|
23
23
|
/** 能力 id,卡片用它引用。命名 `<域>.<动作>`,如 `art.chromaKey`。 */
|
|
@@ -68,6 +68,13 @@ export declare class CapabilityRegistry {
|
|
|
68
68
|
get(id: string): Capability | undefined;
|
|
69
69
|
list(): Capability[];
|
|
70
70
|
}
|
|
71
|
+
/** 参数的一格。**给人填表用的形状**,不是完整的 JSON Schema。 */
|
|
72
|
+
export interface CapabilityParam {
|
|
73
|
+
name: string;
|
|
74
|
+
/** 够 UI 提示与生成骨架即可;认不出的形状回 'other',**不假装认识**。 */
|
|
75
|
+
type: 'string' | 'number' | 'boolean' | 'string[]' | 'other';
|
|
76
|
+
required: boolean;
|
|
77
|
+
}
|
|
71
78
|
/** 对外(编排页 / 建卡面)看到的形状 —— **不含 `run`**。 */
|
|
72
79
|
export interface CapabilityView {
|
|
73
80
|
id: string;
|
|
@@ -75,6 +82,11 @@ export interface CapabilityView {
|
|
|
75
82
|
produces: string[];
|
|
76
83
|
summary: string;
|
|
77
84
|
source: Capability['source'];
|
|
85
|
+
/**
|
|
86
|
+
* 参数清单。**透出它是有意的**:不给的话,人工建卡只能靠猜参数名 ——
|
|
87
|
+
* 而猜错的表现是"卡跑到一半失败",比在填的时候就看见字段贵得多。
|
|
88
|
+
*/
|
|
89
|
+
params: CapabilityParam[];
|
|
78
90
|
}
|
|
79
91
|
export declare function toView(c: Capability): CapabilityView;
|
|
80
92
|
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/core/tools/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/core/tools/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,KAAK,UAAU,EAAK,MAAM,KAAK,CAAC;AAEzC,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,CAAC;AAE9C,MAAM,WAAW,UAAU;IACzB,oDAAoD;IACpD,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,cAAc,CAAC;IACrB,kCAAkC;IAClC,WAAW,EAAE,UAAU,CAAC;IACxB;;;;;;;;OAQG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,8BAA8B;IAC9B,MAAM,EAAE;QAAE,IAAI,EAAE,UAAU,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACpF,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC/E;AAED,MAAM,WAAW,iBAAiB;IAChC,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiC;gBAE1C,YAAY,GAAE,UAAU,EAAO;IAI3C,oDAAoD;IACpD,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI;IAK1B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIvC,IAAI,IAAI,UAAU,EAAE;CAGrB;AAED,4CAA4C;AAC5C,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;IAC7D,QAAQ,EAAE,OAAO,CAAC;CACnB;AA8BD,0CAA0C;AAC1C,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC7B;;;OAGG;IACH,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,UAAU,GAAG,cAAc,CASpD"}
|
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module core/tools/registry
|
|
3
|
+
* @description 工具能力注册表 —— **目录**:有哪些能力、参数什么形状、会写什么、同步还是异步。
|
|
4
|
+
*
|
|
5
|
+
* @layer core
|
|
6
|
+
*
|
|
7
|
+
* 🔴 **注册表是目录,实现方式是它的属性,卡片看不见实现方式。**
|
|
8
|
+
* 一旦卡片要区分"这是内建还是脚本",实现方式就变成了编排数据的一部分,
|
|
9
|
+
* 以后换实现要改所有卡。所以卡片只写 `tool` + `input`。
|
|
10
|
+
*
|
|
11
|
+
* 🔴 **卡片不带代码。** 脚本没有被赶走,只是换了载体:它随**模板包**走、
|
|
12
|
+
* 由 `template.json` 声明入口(先例:`smoke: { script, checks }`,sps **只跑不解释**)。
|
|
13
|
+
* 卡片里内嵌脚本会把**不可审计的代码搬进编排数据**,而且脚本必然要拿路径 ⇒
|
|
14
|
+
* 绕过 `core/art/paths` 那条"落点权是 sps 的"。
|
|
15
|
+
*
|
|
16
|
+
* ⚠️ **注册表是 per-project 视图,不是全局表**:
|
|
17
|
+
* `built-in` 所有项目都有;`script` **只属于装了那个模板的项目**。
|
|
18
|
+
* 全局表会列出这个项目根本用不了的能力 —— 那是让人排出一张跑不起来的图。
|
|
19
|
+
*/
|
|
20
|
+
import { z } from 'zod';
|
|
1
21
|
/**
|
|
2
22
|
* 一个**不可变**的能力表。
|
|
3
23
|
*
|
|
@@ -23,7 +43,47 @@ export class CapabilityRegistry {
|
|
|
23
43
|
return [...this.byId.values()].sort((a, b) => a.id.localeCompare(b.id));
|
|
24
44
|
}
|
|
25
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* 从 zod schema 抽出参数清单。
|
|
48
|
+
*
|
|
49
|
+
* 🔴 **抽不出来时回空数组,而不是编一个** —— 空数组在 UI 上表现为"这个能力没给出参数说明",
|
|
50
|
+
* 编出来的字段则会让人照着填一个能力根本不认的参数,失败时还查不到原因。
|
|
51
|
+
* ⚠️ 只认顶层的扁平字段(今天十个内建能力都是这个形状)。嵌套/联合出现时该格是 'other',
|
|
52
|
+
* 人仍能手写 JSON —— UI 提示退化,不是功能退化。
|
|
53
|
+
*/
|
|
54
|
+
function toParams(schema) {
|
|
55
|
+
let js;
|
|
56
|
+
try {
|
|
57
|
+
js = z.toJSONSchema(schema);
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return [];
|
|
61
|
+
}
|
|
62
|
+
const props = js.properties;
|
|
63
|
+
if (typeof props !== 'object' || props === null)
|
|
64
|
+
return [];
|
|
65
|
+
const required = new Set(Array.isArray(js.required) ? js.required : []);
|
|
66
|
+
return Object.entries(props).map(([name, def]) => {
|
|
67
|
+
let type = 'other';
|
|
68
|
+
if (def.type === 'string')
|
|
69
|
+
type = 'string';
|
|
70
|
+
else if (def.type === 'number' || def.type === 'integer')
|
|
71
|
+
type = 'number';
|
|
72
|
+
else if (def.type === 'boolean')
|
|
73
|
+
type = 'boolean';
|
|
74
|
+
else if (def.type === 'array' && def.items?.type === 'string')
|
|
75
|
+
type = 'string[]';
|
|
76
|
+
return { name, type, required: required.has(name) };
|
|
77
|
+
});
|
|
78
|
+
}
|
|
26
79
|
export function toView(c) {
|
|
27
|
-
return {
|
|
80
|
+
return {
|
|
81
|
+
id: c.id,
|
|
82
|
+
mode: c.mode,
|
|
83
|
+
produces: c.produces,
|
|
84
|
+
summary: c.summary,
|
|
85
|
+
source: c.source,
|
|
86
|
+
params: toParams(c.inputSchema),
|
|
87
|
+
};
|
|
28
88
|
}
|
|
29
89
|
//# sourceMappingURL=registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/core/tools/registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/core/tools/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module core/tools/staleDownstream
|
|
3
|
+
* @description 重置一张**已完成**的卡时,标出那些"结果已基于它的旧产物"的下游卡。
|
|
4
|
+
*
|
|
5
|
+
* @layer core
|
|
6
|
+
*
|
|
7
|
+
* 🔴 **护栏在动作里,不在界面上。** reset 有三个入口(console 单卡 / `sps reset` / agent 调 CLI),
|
|
8
|
+
* 弹窗只挡得住第一个。判据与 `launchSingle` 拒工具卡同一条:
|
|
9
|
+
* **让人看不见 ≠ 让人做不到。**
|
|
10
|
+
*
|
|
11
|
+
* 🔴 **只标记,不连带重跑。** 标记是**事实陈述**;连带重跑是**替人做不可逆的决定** ——
|
|
12
|
+
* 重跑一张 AI 卡要花钱,还会覆盖人手工修过的产物。要不要跟着跑,交给人。
|
|
13
|
+
*
|
|
14
|
+
* 🔴 **条件收得很窄,是有意的**:只有「被重置的卡本身是 Done」且「下游也已经 Done」才标。
|
|
15
|
+
* 卡住的卡被重置时,下游根本没跑过(波间硬屏障挡着,见 `blockedByOrder`)——
|
|
16
|
+
* 那种情况**什么都不该标**。噪音会让人停止阅读标记,那时它就等于不存在。
|
|
17
|
+
*
|
|
18
|
+
* ⚠️ **盲区:只沿 `input` 引用连边。** worker 卡的下游依赖写在自然语言里,算不出来 ⇒
|
|
19
|
+
* **没有标记不等于没有影响**。这一格是已知盲区,不是漏了(同 `rerunGraph`)。
|
|
20
|
+
*/
|
|
21
|
+
import type { Card } from '../../shared/types.js';
|
|
22
|
+
/** 打在下游卡上的标记。**不进 `SKIP_LABELS`** —— 它是提示,不该让卡从此不被派发。 */
|
|
23
|
+
export declare const STALE_UPSTREAM_LABEL = "STALE-UPSTREAM";
|
|
24
|
+
/**
|
|
25
|
+
* 算出该标记的下游卡 seq(升序,不含本次重置的卡)。
|
|
26
|
+
*
|
|
27
|
+
* @param resetSeqs 本次被重置的 seq(可能是多张:`sps reset --all` / `--card 5,6,7`)
|
|
28
|
+
* @param doneState 该项目的完成态名(不写死 'Done' —— 状态名是 pipeline 配置出来的)
|
|
29
|
+
*/
|
|
30
|
+
export declare function staleDownstreamSeqs(resetSeqs: string[], all: Card[], doneState: string): string[];
|
|
31
|
+
//# sourceMappingURL=staleDownstream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"staleDownstream.d.ts","sourceRoot":"","sources":["../../../src/core/tools/staleDownstream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAGlD,yDAAyD;AACzD,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AAErD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAgBjG"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { rerunClosure } from './rerunGraph.js';
|
|
2
|
+
/** 打在下游卡上的标记。**不进 `SKIP_LABELS`** —— 它是提示,不该让卡从此不被派发。 */
|
|
3
|
+
export const STALE_UPSTREAM_LABEL = 'STALE-UPSTREAM';
|
|
4
|
+
/**
|
|
5
|
+
* 算出该标记的下游卡 seq(升序,不含本次重置的卡)。
|
|
6
|
+
*
|
|
7
|
+
* @param resetSeqs 本次被重置的 seq(可能是多张:`sps reset --all` / `--card 5,6,7`)
|
|
8
|
+
* @param doneState 该项目的完成态名(不写死 'Done' —— 状态名是 pipeline 配置出来的)
|
|
9
|
+
*/
|
|
10
|
+
export function staleDownstreamSeqs(resetSeqs, all, doneState) {
|
|
11
|
+
const resetSet = new Set(resetSeqs.map(String));
|
|
12
|
+
const stateOf = new Map(all.map((c) => [c.seq, c.state]));
|
|
13
|
+
const marked = new Set();
|
|
14
|
+
for (const seq of resetSet) {
|
|
15
|
+
// 窄条件①:被重置的卡自己没跑完 ⇒ 下游根本没拿到过它的产物
|
|
16
|
+
if (stateOf.get(seq) !== doneState)
|
|
17
|
+
continue;
|
|
18
|
+
for (const down of rerunClosure(seq, all)) {
|
|
19
|
+
if (resetSet.has(down))
|
|
20
|
+
continue; // 一起被重置的,不用标 —— 它本来就要重跑
|
|
21
|
+
// 窄条件②:下游没跑完 ⇒ 它还没拿旧产物做出结果,没有可陈旧的东西
|
|
22
|
+
if (stateOf.get(down) !== doneState)
|
|
23
|
+
continue;
|
|
24
|
+
marked.add(down);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return [...marked].sort((a, b) => Number(a) - Number(b));
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=staleDownstream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"staleDownstream.js","sourceRoot":"","sources":["../../../src/core/tools/staleDownstream.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,yDAAyD;AACzD,MAAM,CAAC,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;AAErD;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAmB,EAAE,GAAW,EAAE,SAAiB;IACrF,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE1D,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,iCAAiC;QACjC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS;YAAE,SAAS;QAC7C,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;YAC1C,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,SAAS,CAAC,wBAAwB;YAC1D,oCAAoC;YACpC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS;gBAAE,SAAS;YAC9C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StageEngine.d.ts","sourceRoot":"","sources":["../../src/engines/StageEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAOH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAKzD,OAAO,KAAK,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"StageEngine.d.ts","sourceRoot":"","sources":["../../src/engines/StageEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,6 +26,7 @@ import { Logger } from '../core/logger.js';
|
|
|
26
26
|
import { captureFlush } from '../core/memory2/capture.js';
|
|
27
27
|
import { clearPipelineSession, getPipelineSession, setPipelineSession } from '../core/pipelineSession.js';
|
|
28
28
|
import { RuntimeStore } from '../core/runtimeStore.js';
|
|
29
|
+
import { STALE_UPSTREAM_LABEL } from '../core/tools/staleDownstream.js';
|
|
29
30
|
import { buildPhasePrompt, buildTaskPrompt } from '../core/taskPrompts.js';
|
|
30
31
|
import { projectDir } from '../shared/runtimePaths.js';
|
|
31
32
|
import { REVIEWED_LABEL } from './ReviewEngine.js';
|
|
@@ -36,7 +37,9 @@ const SKIP_LABELS = ['BLOCKED', 'NEEDS-FIX', 'CONFLICT', 'WAITING-CONFIRMATION',
|
|
|
36
37
|
// ACK-TIMEOUT: left over when a dispatch failed; must be wiped before re-try.
|
|
37
38
|
// Per-stage ACK-RETRIED-<stage> is wiped separately in cleanAuxiliaryLabels().
|
|
38
39
|
// v0.50.17:RACE-CANDIDATE 是 onCompleted 打的 race 标记,重新入 stage 要清
|
|
39
|
-
|
|
40
|
+
// v0.66.3:STALE-UPSTREAM 也在这里清 —— 清除点必须是"这张卡自己重跑了"那一刻。
|
|
41
|
+
// 🔴 标记不会自己消失就是新的谎:陈旧标记堆起来,人就不看了,那时它等于不存在。
|
|
42
|
+
const CLEANUP_LABELS = [...SKIP_LABELS, 'CLAIMED', 'ACK-TIMEOUT', 'RACE-CANDIDATE', STALE_UPSTREAM_LABEL];
|
|
40
43
|
/** 插队标签:`sps card insert` / reviewer 插入的修正卡带此标签,抢卡时排在同队列其它卡之前。 */
|
|
41
44
|
export const PRIORITY_LABEL = 'PRIORITY';
|
|
42
45
|
/**
|
|
@@ -1288,6 +1291,15 @@ export class StageEngine {
|
|
|
1288
1291
|
result.details = { error: `Card seq:${seq} not found` };
|
|
1289
1292
|
return result;
|
|
1290
1293
|
}
|
|
1294
|
+
// 🔴 工具卡上"启动 worker"会**真派一个 agent** —— 它不是这张卡该发生的事。
|
|
1295
|
+
// 护栏放在这里(而不是隐藏按钮/在路由里判):launchSingle 是那个危险动作本身,
|
|
1296
|
+
// console 和 CLI 两条路都从这里过。隐藏按钮只是让人**看不见**,不是**做不到**。
|
|
1297
|
+
if (card.kind === 'tool' || card.kind === 'join') {
|
|
1298
|
+
result.status = 'fail';
|
|
1299
|
+
result.exitCode = 2;
|
|
1300
|
+
result.details = { error: `seq:${seq} 是 ${card.kind} 卡,不派 worker —— 它由 tick 按波次执行` };
|
|
1301
|
+
return result;
|
|
1302
|
+
}
|
|
1291
1303
|
// v0.49.15:手动单卡 launch 允许从任意非活跃态启动(Done/QA/Review/Canceled
|
|
1292
1304
|
// 等终态卡片视为"重跑")。已在跑(activeState)就拒绝——要先 kill worker。
|
|
1293
1305
|
if (card.state === this.stage.activeState) {
|