@coralai/sps-cli 0.50.6 → 0.50.7

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.
Files changed (86) hide show
  1. package/dist/console-assets/assets/{index-C95GbuxW.js → index-CGiD8z0L.js} +1 -1
  2. package/dist/console-assets/index.html +1 -1
  3. package/dist/services/PipelineService.d.ts.map +1 -1
  4. package/dist/services/PipelineService.js +22 -0
  5. package/dist/services/PipelineService.js.map +1 -1
  6. package/package.json +1 -1
  7. package/dist/console/sse/eventBus.d.ts +0 -25
  8. package/dist/console/sse/eventBus.d.ts.map +0 -1
  9. package/dist/console/sse/eventBus.js +0 -32
  10. package/dist/console/sse/eventBus.js.map +0 -1
  11. package/dist/console-server/index.d.ts +0 -29
  12. package/dist/console-server/index.d.ts.map +0 -1
  13. package/dist/console-server/index.js +0 -180
  14. package/dist/console-server/index.js.map +0 -1
  15. package/dist/console-server/lib/cardReader.d.ts +0 -27
  16. package/dist/console-server/lib/cardReader.d.ts.map +0 -1
  17. package/dist/console-server/lib/cardReader.js +0 -201
  18. package/dist/console-server/lib/cardReader.js.map +0 -1
  19. package/dist/console-server/lib/lockFile.d.ts +0 -17
  20. package/dist/console-server/lib/lockFile.d.ts.map +0 -1
  21. package/dist/console-server/lib/lockFile.js +0 -61
  22. package/dist/console-server/lib/lockFile.js.map +0 -1
  23. package/dist/console-server/lib/portPicker.d.ts +0 -3
  24. package/dist/console-server/lib/portPicker.d.ts.map +0 -1
  25. package/dist/console-server/lib/portPicker.js +0 -25
  26. package/dist/console-server/lib/portPicker.js.map +0 -1
  27. package/dist/console-server/lib/spawnCli.d.ts +0 -31
  28. package/dist/console-server/lib/spawnCli.d.ts.map +0 -1
  29. package/dist/console-server/lib/spawnCli.js +0 -64
  30. package/dist/console-server/lib/spawnCli.js.map +0 -1
  31. package/dist/console-server/routes/cards.d.ts +0 -7
  32. package/dist/console-server/routes/cards.d.ts.map +0 -1
  33. package/dist/console-server/routes/cards.js +0 -185
  34. package/dist/console-server/routes/cards.js.map +0 -1
  35. package/dist/console-server/routes/chat.d.ts +0 -36
  36. package/dist/console-server/routes/chat.d.ts.map +0 -1
  37. package/dist/console-server/routes/chat.js +0 -458
  38. package/dist/console-server/routes/chat.js.map +0 -1
  39. package/dist/console-server/routes/logs.d.ts +0 -14
  40. package/dist/console-server/routes/logs.d.ts.map +0 -1
  41. package/dist/console-server/routes/logs.js +0 -283
  42. package/dist/console-server/routes/logs.js.map +0 -1
  43. package/dist/console-server/routes/pipeline.d.ts +0 -8
  44. package/dist/console-server/routes/pipeline.d.ts.map +0 -1
  45. package/dist/console-server/routes/pipeline.js +0 -96
  46. package/dist/console-server/routes/pipeline.js.map +0 -1
  47. package/dist/console-server/routes/projects.d.ts +0 -11
  48. package/dist/console-server/routes/projects.d.ts.map +0 -1
  49. package/dist/console-server/routes/projects.js +0 -583
  50. package/dist/console-server/routes/projects.js.map +0 -1
  51. package/dist/console-server/routes/skills.d.ts +0 -7
  52. package/dist/console-server/routes/skills.d.ts.map +0 -1
  53. package/dist/console-server/routes/skills.js +0 -267
  54. package/dist/console-server/routes/skills.js.map +0 -1
  55. package/dist/console-server/routes/system.d.ts +0 -7
  56. package/dist/console-server/routes/system.d.ts.map +0 -1
  57. package/dist/console-server/routes/system.js +0 -288
  58. package/dist/console-server/routes/system.js.map +0 -1
  59. package/dist/console-server/routes/workers.d.ts +0 -18
  60. package/dist/console-server/routes/workers.d.ts.map +0 -1
  61. package/dist/console-server/routes/workers.js +0 -351
  62. package/dist/console-server/routes/workers.js.map +0 -1
  63. package/dist/console-server/sse/eventBus.d.ts +0 -25
  64. package/dist/console-server/sse/eventBus.d.ts.map +0 -1
  65. package/dist/console-server/sse/eventBus.js +0 -32
  66. package/dist/console-server/sse/eventBus.js.map +0 -1
  67. package/dist/console-server/sse/projectStream.d.ts +0 -10
  68. package/dist/console-server/sse/projectStream.d.ts.map +0 -1
  69. package/dist/console-server/sse/projectStream.js +0 -86
  70. package/dist/console-server/sse/projectStream.js.map +0 -1
  71. package/dist/console-server/watchers/cardWatcher.d.ts +0 -17
  72. package/dist/console-server/watchers/cardWatcher.d.ts.map +0 -1
  73. package/dist/console-server/watchers/cardWatcher.js +0 -68
  74. package/dist/console-server/watchers/cardWatcher.js.map +0 -1
  75. package/dist/console-server/watchers/markerWatcher.d.ts +0 -7
  76. package/dist/console-server/watchers/markerWatcher.d.ts.map +0 -1
  77. package/dist/console-server/watchers/markerWatcher.js +0 -63
  78. package/dist/console-server/watchers/markerWatcher.js.map +0 -1
  79. package/dist/console-server/watchers/pipelinePoller.d.ts +0 -2
  80. package/dist/console-server/watchers/pipelinePoller.d.ts.map +0 -1
  81. package/dist/console-server/watchers/pipelinePoller.js +0 -52
  82. package/dist/console-server/watchers/pipelinePoller.js.map +0 -1
  83. package/dist/models/types.d.ts +0 -103
  84. package/dist/models/types.d.ts.map +0 -1
  85. package/dist/models/types.js +0 -17
  86. package/dist/models/types.js.map +0 -1
@@ -1,64 +0,0 @@
1
- /**
2
- * @module console-server/lib/spawnCli
3
- * @description 把 sps console 接到现有 CLI 的底层工具:spawn 子进程跑 sps 命令
4
- *
5
- * 有两种调用:
6
- * - spawnCliSync: 短任务(如 card add),等完成拿到 stdout/stderr
7
- * - spawnCliDetached: 长任务(如 tick pipeline),后台跑 + detach + 写 pid 文件
8
- */
9
- import { spawn, execFileSync } from 'node:child_process';
10
- import { openSync } from 'node:fs';
11
- function cliEntry() {
12
- // process.argv[0] = node, process.argv[1] = sps/dist/main.js
13
- return { node: process.argv[0] ?? 'node', entry: process.argv[1] ?? 'sps' };
14
- }
15
- export async function spawnCliSync(args, opts) {
16
- const { node, entry } = cliEntry();
17
- return new Promise((resolve) => {
18
- const child = spawn(node, [entry, ...args], {
19
- cwd: opts?.cwd,
20
- stdio: ['ignore', 'pipe', 'pipe'],
21
- });
22
- let stdout = '';
23
- let stderr = '';
24
- child.stdout?.on('data', (d) => { stdout += d.toString(); });
25
- child.stderr?.on('data', (d) => { stderr += d.toString(); });
26
- const timer = opts?.timeoutMs
27
- ? setTimeout(() => child.kill('SIGTERM'), opts.timeoutMs)
28
- : null;
29
- child.on('close', (code) => {
30
- if (timer)
31
- clearTimeout(timer);
32
- resolve({ exitCode: code, stdout, stderr });
33
- });
34
- child.on('error', (err) => {
35
- if (timer)
36
- clearTimeout(timer);
37
- resolve({ exitCode: -1, stdout, stderr: stderr + String(err) });
38
- });
39
- });
40
- }
41
- /**
42
- * 后台长任务:spawn detach + pipe 到 log file
43
- * 适合 sps tick / sps agent 这类生命周期持续的命令
44
- */
45
- export function spawnCliDetached(args, opts) {
46
- const { node, entry } = cliEntry();
47
- const logFd = openSync(opts.logPath, 'a');
48
- const child = spawn(node, [entry, ...args], {
49
- cwd: opts.cwd,
50
- detached: true,
51
- stdio: ['ignore', logFd, logFd],
52
- });
53
- // 不跟踪子进程,父退出后子继续跑
54
- child.unref();
55
- return child;
56
- }
57
- /**
58
- * 同步版(慢路径 fallback):阻塞,较重的操作别用
59
- */
60
- export function spawnCliBlocking(args, cwd) {
61
- const { node, entry } = cliEntry();
62
- return execFileSync(node, [entry, ...args], { cwd, encoding: 'utf-8' });
63
- }
64
- //# sourceMappingURL=spawnCli.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spawnCli.js","sourceRoot":"","sources":["../../../src/console-server/lib/spawnCli.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- /**
2
- * @module console-server/routes/cards
3
- * @description 卡片相关 REST 路由
4
- */
5
- import { Hono } from 'hono';
6
- export declare function createCardsRoute(): Hono;
7
- //# sourceMappingURL=cards.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cards.d.ts","sourceRoot":"","sources":["../../../src/console-server/routes/cards.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAmB5B,wBAAgB,gBAAgB,IAAI,IAAI,CA+MvC"}
@@ -1,185 +0,0 @@
1
- /**
2
- * @module console-server/routes/cards
3
- * @description 卡片相关 REST 路由
4
- */
5
- import { Hono } from 'hono';
6
- import { existsSync } from 'node:fs';
7
- import { resolve } from 'node:path';
8
- import { listCards, readCard } from '../lib/cardReader.js';
9
- import { spawnCliSync } from '../lib/spawnCli.js';
10
- const HOME = process.env.HOME || '/home/coral';
11
- function projectDir(name) {
12
- return resolve(HOME, '.coral', 'projects', name);
13
- }
14
- function notFound(c, name) {
15
- return c.json({ type: 'not-found', title: 'Project not found', status: 404, detail: name }, 404);
16
- }
17
- export function createCardsRoute() {
18
- const app = new Hono();
19
- app.get('/:project/cards', (c) => {
20
- const project = c.req.param('project');
21
- const dir = projectDir(project);
22
- if (!existsSync(dir))
23
- return notFound(c, project);
24
- const state = c.req.query('state');
25
- let cards = listCards(dir);
26
- if (state)
27
- cards = cards.filter((card) => card.state === state);
28
- return c.json({ data: cards });
29
- });
30
- app.get('/:project/cards/:seq', (c) => {
31
- const project = c.req.param('project');
32
- const seq = Number.parseInt(c.req.param('seq'), 10);
33
- const dir = projectDir(project);
34
- if (!existsSync(dir))
35
- return notFound(c, project);
36
- const detail = readCard(dir, seq);
37
- if (!detail) {
38
- return c.json({
39
- type: 'not-found',
40
- title: 'Card not found',
41
- status: 404,
42
- detail: `${project}/#${seq}`,
43
- }, 404);
44
- }
45
- return c.json(detail);
46
- });
47
- app.post('/:project/cards', async (c) => {
48
- const project = c.req.param('project');
49
- const body = (await c.req.json().catch(() => null));
50
- if (!body || typeof body.title !== 'string' || !body.title.trim()) {
51
- return c.json({ type: 'validation', title: 'title required', status: 422 }, 422);
52
- }
53
- // v0.49.6: 透传 description + skills 给 sps card add
54
- // cmd: sps card add <project> "<title>" ["description"] [--skill a,b]
55
- const args = ['card', 'add', project, body.title];
56
- if (body.description && body.description.trim()) {
57
- args.push(body.description);
58
- }
59
- if (Array.isArray(body.skills) && body.skills.length > 0) {
60
- const clean = body.skills
61
- .map((s) => String(s).trim())
62
- .filter((s) => /^[a-zA-Z0-9_-]+$/.test(s));
63
- if (clean.length > 0) {
64
- args.push('--skill', clean.join(','));
65
- }
66
- }
67
- const result = await spawnCliSync(args, { timeoutMs: 10_000 });
68
- if (result.exitCode !== 0) {
69
- return c.json({ type: 'cli-error', title: 'card add failed', status: 500, detail: result.stderr }, 500);
70
- }
71
- return c.json({ ok: true, output: result.stdout.trim() });
72
- });
73
- /**
74
- * PATCH /api/projects/:project/cards/:seq
75
- * Body: 任意字段组合(至少一个)
76
- * { state?: CardState } — 拖拽换列(搬 md 到新目录)
77
- * { title?: string } — 改标题 + 重命名文件
78
- * { description?: string } — 替换 body 的 "## 描述" 段
79
- * { skills?: string[] } — 全量替换 frontmatter.skills
80
- * { labels?: string[] } — 全量替换 frontmatter.labels
81
- * 按字段顺序依次应用;任何一步失败返回 500 + detail。
82
- */
83
- app.patch('/:project/cards/:seq', async (c) => {
84
- const project = c.req.param('project');
85
- const seq = c.req.param('seq');
86
- const body = (await c.req.json().catch(() => null));
87
- if (!body || Object.keys(body).length === 0) {
88
- return c.json({ type: 'validation', title: 'no fields to update', status: 422 }, 422);
89
- }
90
- const ALLOWED_STATES = ['Planning', 'Backlog', 'Todo', 'Inprogress', 'Review', 'QA', 'Done', 'Canceled'];
91
- if (body.state !== undefined && (typeof body.state !== 'string' || !ALLOWED_STATES.includes(body.state))) {
92
- return c.json({ type: 'validation', title: 'invalid state', status: 422, detail: `allowed: ${ALLOWED_STATES.join(', ')}` }, 422);
93
- }
94
- if (body.title !== undefined && (typeof body.title !== 'string' || !body.title.trim())) {
95
- return c.json({ type: 'validation', title: 'title cannot be empty', status: 422 }, 422);
96
- }
97
- if (body.skills !== undefined && !Array.isArray(body.skills)) {
98
- return c.json({ type: 'validation', title: 'skills must be array', status: 422 }, 422);
99
- }
100
- if (body.labels !== undefined && !Array.isArray(body.labels)) {
101
- return c.json({ type: 'validation', title: 'labels must be array', status: 422 }, 422);
102
- }
103
- try {
104
- const { ProjectContext } = await import('../../core/context.js');
105
- const { createTaskBackend } = await import('../../providers/registry.js');
106
- const ctx = ProjectContext.load(project);
107
- const backend = createTaskBackend(ctx.config);
108
- await backend.bootstrap();
109
- // Apply in this order:
110
- // 1) title (renames file) — do early so subsequent reads find the new path
111
- // 2) description
112
- // 3) skills
113
- // 4) labels
114
- // 5) state (move, last so other edits write to the original location first)
115
- if (body.title !== undefined) {
116
- await backend.setTitle(seq, body.title);
117
- }
118
- if (body.description !== undefined) {
119
- await backend.setDescription(seq, body.description);
120
- }
121
- if (body.skills !== undefined) {
122
- await backend.setSkills(seq, body.skills.filter((s) => typeof s === 'string'));
123
- }
124
- if (body.labels !== undefined) {
125
- await backend.setLabels(seq, body.labels.filter((l) => typeof l === 'string'));
126
- }
127
- if (body.state !== undefined) {
128
- await backend.move(seq, body.state);
129
- }
130
- return c.json({ ok: true, seq: Number(seq) });
131
- }
132
- catch (err) {
133
- return c.json({
134
- type: 'internal',
135
- title: 'patch failed',
136
- status: 500,
137
- detail: err instanceof Error ? err.message : String(err),
138
- }, 500);
139
- }
140
- });
141
- app.delete('/:project/cards/:seq', async (c) => {
142
- const project = c.req.param('project');
143
- const seq = c.req.param('seq');
144
- const dir = projectDir(project);
145
- if (!existsSync(dir))
146
- return notFound(c, project);
147
- try {
148
- const { ProjectContext } = await import('../../core/context.js');
149
- const { createTaskBackend } = await import('../../providers/registry.js');
150
- const ctx = ProjectContext.load(project);
151
- const backend = createTaskBackend(ctx.config);
152
- await backend.bootstrap();
153
- await backend.delete(seq);
154
- return c.json({ ok: true, seq: Number(seq) });
155
- }
156
- catch (err) {
157
- return c.json({
158
- type: 'internal',
159
- title: 'delete failed',
160
- status: 500,
161
- detail: err instanceof Error ? err.message : String(err),
162
- }, 500);
163
- }
164
- });
165
- app.post('/:project/cards/:seq/reset', async (c) => {
166
- const project = c.req.param('project');
167
- const seq = c.req.param('seq');
168
- const result = await spawnCliSync(['reset', project, '--card', seq], { timeoutMs: 30_000 });
169
- if (result.exitCode !== 0) {
170
- return c.json({ type: 'cli-error', title: 'card reset failed', status: 500, detail: result.stderr }, 500);
171
- }
172
- return c.json({ ok: true });
173
- });
174
- app.post('/:project/cards/:seq/launch', async (c) => {
175
- const project = c.req.param('project');
176
- const seq = c.req.param('seq');
177
- const result = await spawnCliSync(['worker', 'launch', project, seq], { timeoutMs: 10_000 });
178
- if (result.exitCode !== 0) {
179
- return c.json({ type: 'cli-error', title: 'worker launch failed', status: 500, detail: result.stderr }, 500);
180
- }
181
- return c.json({ ok: true });
182
- });
183
- return app;
184
- }
185
- //# sourceMappingURL=cards.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cards.js","sourceRoot":"","sources":["../../../src/console-server/routes/cards.ts"],"names":[],"mappings":"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"}
@@ -1,36 +0,0 @@
1
- /**
2
- * @module console-server/routes/chat
3
- * @description Chat sessions via daemon — structured streaming with tool events
4
- *
5
- * v0.46 重写:
6
- * - 放弃 spawn sps agent + stdout 纯文本解析
7
- * - 改用 DaemonClient.ensureSession + startRun + subscribeRun 拿结构化 AccumulatorEvent
8
- * - 每个 chat session 映射到 daemon slot `session-chat-<sessionId>`,多轮对话有上下文
9
- * - SSE 事件按 block 类型分开推(text / tool_use / tool_update / complete)
10
- */
11
- import { Hono } from 'hono';
12
- import { Logger } from '../../core/logger.js';
13
- export type ChatMessageBlock = {
14
- type: 'text';
15
- text: string;
16
- } | {
17
- type: 'tool_use';
18
- id: string;
19
- title: string;
20
- kind: string;
21
- status: string;
22
- };
23
- export interface ChatMessage {
24
- id: string;
25
- role: 'user' | 'assistant' | 'error';
26
- content: string;
27
- /** Structured blocks for tool rendering (assistant only). If omitted, content is plain text. */
28
- blocks?: ChatMessageBlock[];
29
- /** True if content/blocks were truncated at MAX_ASSISTANT_CONTENT_BYTES. */
30
- truncated?: boolean;
31
- ts: string;
32
- status?: 'streaming' | 'complete' | 'error';
33
- }
34
- export declare function createChatRoute(log: Logger): Hono;
35
- export declare function createChatStreamRoute(): Hono;
36
- //# sourceMappingURL=chat.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../../src/console-server/routes/chat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAa5B,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAW9C,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAElF,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,gGAAgG;IAChG,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC5B,4EAA4E;IAC5E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,OAAO,CAAC;CAC7C;AA6OD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CA4JjD;AAGD,wBAAgB,qBAAqB,IAAI,IAAI,CAsE5C"}