@kynetic-ai/spec 0.9.0 → 0.10.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/README.md +2 -1
- package/dist/acp/client.d.ts +13 -1
- package/dist/acp/client.d.ts.map +1 -1
- package/dist/acp/client.js +17 -2
- package/dist/acp/client.js.map +1 -1
- package/dist/acp/framing.d.ts +12 -1
- package/dist/acp/framing.d.ts.map +1 -1
- package/dist/acp/framing.js +27 -4
- package/dist/acp/framing.js.map +1 -1
- package/dist/agent-runtime/dispatch.d.ts +261 -0
- package/dist/agent-runtime/dispatch.d.ts.map +1 -0
- package/dist/agent-runtime/dispatch.js +791 -0
- package/dist/agent-runtime/dispatch.js.map +1 -0
- package/dist/agent-runtime/index.d.ts +11 -0
- package/dist/agent-runtime/index.d.ts.map +1 -0
- package/dist/agent-runtime/index.js +11 -0
- package/dist/agent-runtime/index.js.map +1 -0
- package/dist/agent-runtime/invocation.d.ts +86 -0
- package/dist/agent-runtime/invocation.d.ts.map +1 -0
- package/dist/agent-runtime/invocation.js +442 -0
- package/dist/agent-runtime/invocation.js.map +1 -0
- package/dist/agent-runtime/prompts.d.ts +50 -0
- package/dist/agent-runtime/prompts.d.ts.map +1 -0
- package/dist/agent-runtime/prompts.js +108 -0
- package/dist/agent-runtime/prompts.js.map +1 -0
- package/dist/agents/spawner.d.ts.map +1 -1
- package/dist/agents/spawner.js +60 -4
- package/dist/agents/spawner.js.map +1 -1
- package/dist/cli/batch-exec.d.ts.map +1 -1
- package/dist/cli/batch-exec.js +183 -81
- package/dist/cli/batch-exec.js.map +1 -1
- package/dist/cli/batch-write-buffer.d.ts +141 -0
- package/dist/cli/batch-write-buffer.d.ts.map +1 -0
- package/dist/cli/batch-write-buffer.js +400 -0
- package/dist/cli/batch-write-buffer.js.map +1 -0
- package/dist/cli/commands/agent.d.ts +20 -0
- package/dist/cli/commands/agent.d.ts.map +1 -0
- package/dist/cli/commands/agent.js +831 -0
- package/dist/cli/commands/agent.js.map +1 -0
- package/dist/cli/commands/agents.d.ts +1 -1
- package/dist/cli/commands/agents.d.ts.map +1 -1
- package/dist/cli/commands/agents.js +2 -1
- package/dist/cli/commands/agents.js.map +1 -1
- package/dist/cli/commands/batch.js +1 -1
- package/dist/cli/commands/batch.js.map +1 -1
- package/dist/cli/commands/inbox.d.ts.map +1 -1
- package/dist/cli/commands/inbox.js +46 -22
- package/dist/cli/commands/inbox.js.map +1 -1
- package/dist/cli/commands/index.d.ts +1 -0
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +1 -0
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +4 -6
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/item.d.ts.map +1 -1
- package/dist/cli/commands/item.js +34 -17
- package/dist/cli/commands/item.js.map +1 -1
- package/dist/cli/commands/log.js +1 -1
- package/dist/cli/commands/log.js.map +1 -1
- package/dist/cli/commands/merge-driver.d.ts.map +1 -1
- package/dist/cli/commands/merge-driver.js +8 -3
- package/dist/cli/commands/merge-driver.js.map +1 -1
- package/dist/cli/commands/meta.d.ts.map +1 -1
- package/dist/cli/commands/meta.js +159 -6
- package/dist/cli/commands/meta.js.map +1 -1
- package/dist/cli/commands/module.d.ts.map +1 -1
- package/dist/cli/commands/module.js +2 -1
- package/dist/cli/commands/module.js.map +1 -1
- package/dist/cli/commands/plan-import.js +19 -3
- package/dist/cli/commands/plan-import.js.map +1 -1
- package/dist/cli/commands/plan.d.ts.map +1 -1
- package/dist/cli/commands/plan.js +87 -43
- package/dist/cli/commands/plan.js.map +1 -1
- package/dist/cli/commands/ralph.d.ts +5 -51
- package/dist/cli/commands/ralph.d.ts.map +1 -1
- package/dist/cli/commands/ralph.js +52 -1462
- package/dist/cli/commands/ralph.js.map +1 -1
- package/dist/cli/commands/search.d.ts.map +1 -1
- package/dist/cli/commands/search.js +22 -13
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/serve.d.ts.map +1 -1
- package/dist/cli/commands/serve.js +70 -11
- package/dist/cli/commands/serve.js.map +1 -1
- package/dist/cli/commands/session/checkpoint.d.ts.map +1 -1
- package/dist/cli/commands/session/checkpoint.js +7 -2
- package/dist/cli/commands/session/checkpoint.js.map +1 -1
- package/dist/cli/commands/session/commands.d.ts.map +1 -1
- package/dist/cli/commands/session/commands.js +15 -0
- package/dist/cli/commands/session/commands.js.map +1 -1
- package/dist/cli/commands/session/context.d.ts.map +1 -1
- package/dist/cli/commands/session/context.js +10 -5
- package/dist/cli/commands/session/context.js.map +1 -1
- package/dist/cli/commands/session/log.d.ts +1 -0
- package/dist/cli/commands/session/log.d.ts.map +1 -1
- package/dist/cli/commands/session/log.js +124 -8
- package/dist/cli/commands/session/log.js.map +1 -1
- package/dist/cli/commands/session/stale-close.d.ts +17 -0
- package/dist/cli/commands/session/stale-close.d.ts.map +1 -0
- package/dist/cli/commands/session/stale-close.js +378 -0
- package/dist/cli/commands/session/stale-close.js.map +1 -0
- package/dist/cli/commands/setup.d.ts +4 -0
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js +150 -6
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/skill-crud.d.ts.map +1 -1
- package/dist/cli/commands/skill-crud.js +4 -3
- package/dist/cli/commands/skill-crud.js.map +1 -1
- package/dist/cli/commands/skill-diff.d.ts.map +1 -1
- package/dist/cli/commands/skill-diff.js +15 -0
- package/dist/cli/commands/skill-diff.js.map +1 -1
- package/dist/cli/commands/skill-install.d.ts.map +1 -1
- package/dist/cli/commands/skill-install.js +50 -18
- package/dist/cli/commands/skill-install.js.map +1 -1
- package/dist/cli/commands/task.d.ts.map +1 -1
- package/dist/cli/commands/task.js +552 -323
- package/dist/cli/commands/task.js.map +1 -1
- package/dist/cli/commands/tasks.js +1 -1
- package/dist/cli/commands/tasks.js.map +1 -1
- package/dist/cli/commands/triage.d.ts.map +1 -1
- package/dist/cli/commands/triage.js +37 -13
- package/dist/cli/commands/triage.js.map +1 -1
- package/dist/cli/commands/validate.d.ts.map +1 -1
- package/dist/cli/commands/validate.js +99 -50
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/help/content.d.ts.map +1 -1
- package/dist/cli/help/content.js +5 -0
- package/dist/cli/help/content.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +2 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +5 -1
- package/dist/cli/output.js.map +1 -1
- package/dist/cli/validators.d.ts +4 -0
- package/dist/cli/validators.d.ts.map +1 -1
- package/dist/cli/validators.js +12 -0
- package/dist/cli/validators.js.map +1 -1
- package/dist/daemon/project-context.ts +22 -0
- package/dist/daemon/routes/agent-dispatch.ts +272 -0
- package/dist/daemon/server.ts +55 -20
- package/dist/daemon/websocket/handler.ts +67 -6
- package/dist/daemon/websocket/lifecycle.ts +19 -0
- package/dist/daemon/websocket/pubsub.ts +74 -3
- package/dist/export/html.d.ts.map +1 -1
- package/dist/export/html.js +5 -2
- package/dist/export/html.js.map +1 -1
- package/dist/export/triage.d.ts +1 -1
- package/dist/export/triage.d.ts.map +1 -1
- package/dist/export/triage.js +5 -3
- package/dist/export/triage.js.map +1 -1
- package/dist/parser/alignment.d.ts.map +1 -1
- package/dist/parser/alignment.js +6 -3
- package/dist/parser/alignment.js.map +1 -1
- package/dist/parser/assess.js +1 -1
- package/dist/parser/assess.js.map +1 -1
- package/dist/parser/config.d.ts +6 -6
- package/dist/parser/meta.d.ts.map +1 -1
- package/dist/parser/meta.js +9 -8
- package/dist/parser/meta.js.map +1 -1
- package/dist/parser/plan-document.d.ts +12 -12
- package/dist/parser/plans.d.ts +7 -0
- package/dist/parser/plans.d.ts.map +1 -1
- package/dist/parser/plans.js +100 -15
- package/dist/parser/plans.js.map +1 -1
- package/dist/parser/refs.d.ts +5 -0
- package/dist/parser/refs.d.ts.map +1 -1
- package/dist/parser/refs.js +17 -12
- package/dist/parser/refs.js.map +1 -1
- package/dist/parser/shadow.d.ts +1 -1
- package/dist/parser/shadow.d.ts.map +1 -1
- package/dist/parser/shadow.js +241 -76
- package/dist/parser/shadow.js.map +1 -1
- package/dist/parser/skill-render.d.ts.map +1 -1
- package/dist/parser/skill-render.js +6 -3
- package/dist/parser/skill-render.js.map +1 -1
- package/dist/parser/validate.d.ts.map +1 -1
- package/dist/parser/validate.js +70 -108
- package/dist/parser/validate.js.map +1 -1
- package/dist/parser/yaml.d.ts +24 -5
- package/dist/parser/yaml.d.ts.map +1 -1
- package/dist/parser/yaml.js +228 -66
- package/dist/parser/yaml.js.map +1 -1
- package/dist/schema/meta.d.ts +442 -119
- package/dist/schema/meta.d.ts.map +1 -1
- package/dist/schema/meta.js +55 -0
- package/dist/schema/meta.js.map +1 -1
- package/dist/schema/plan.d.ts +22 -22
- package/dist/schema/spec.d.ts +39 -39
- package/dist/schema/task.d.ts +43 -32
- package/dist/schema/task.d.ts.map +1 -1
- package/dist/schema/task.js +5 -0
- package/dist/schema/task.js.map +1 -1
- package/dist/sessions/store.d.ts +112 -0
- package/dist/sessions/store.d.ts.map +1 -1
- package/dist/sessions/store.js +414 -22
- package/dist/sessions/store.js.map +1 -1
- package/dist/sessions/types.d.ts +75 -17
- package/dist/sessions/types.d.ts.map +1 -1
- package/dist/sessions/types.js +51 -1
- package/dist/sessions/types.js.map +1 -1
- package/dist/triage/actions.d.ts +1 -0
- package/dist/triage/actions.d.ts.map +1 -1
- package/dist/triage/actions.js +34 -7
- package/dist/triage/actions.js.map +1 -1
- package/dist/utils/commit.js +1 -1
- package/dist/utils/commit.js.map +1 -1
- package/dist/web-ui/_app/env.js +1 -0
- package/dist/web-ui/_app/immutable/assets/0.BxCxvrZR.css +1 -0
- package/dist/web-ui/_app/immutable/assets/select-trigger.CV-KWLNP.css +1 -0
- package/dist/web-ui/_app/immutable/chunks/B-CZR0q8.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/B1IR5Su5.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/BCkp8Hs8.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/B_Cvvtc4.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/BtFaGGII.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/Bu8JVsCH.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/C87u-CNA.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/CrFkBTYp.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/D1ArdqNb.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/D28BF5MJ.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/D6RtLpzL.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/D7FHSgx2.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DBXrsxZQ.js +2 -0
- package/dist/web-ui/_app/immutable/chunks/Da_hHMuA.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/Do6LchSF.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DoNPtcAw.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DtUbXRZz.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DyFPRlLl.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DzAP8lRM.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DzVXElzN.js +2 -0
- package/dist/web-ui/_app/immutable/chunks/aoPBFken.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/i-XnOIX0.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/laxtrUO3.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/q1nIWgqB.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/sTLbk5Nm.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/vwKgQu5P.js +5 -0
- package/dist/web-ui/_app/immutable/entry/app.BCwMcqnT.js +2 -0
- package/dist/web-ui/_app/immutable/entry/start.wKCQH-tt.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/0.CjGVMG74.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/1.B6_AIPan.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/2.q4oCS7Ws.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/3.rTKZf9o2.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/4.DVIDRu1d.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/5.8PtPXIOd.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/6.ZZrTemy_.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/7.IP-gxCxi.js +1 -0
- package/dist/web-ui/_app/version.json +1 -0
- package/dist/web-ui/index.html +36 -0
- package/dist/web-ui/robots.txt +3 -0
- package/package.json +3 -2
- package/plugin/.claude-plugin/marketplace.json +1 -1
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/plugins/kspec/skills/create-workflow/SKILL.md +1 -1
- package/plugin/plugins/kspec/skills/{observations → observe}/SKILL.md +1 -1
- package/plugin/plugins/kspec/skills/plan/SKILL.md +1 -1
- package/plugin/plugins/kspec/skills/task-work/SKILL.md +26 -3
- package/plugin/plugins/kspec/skills/triage-inbox/SKILL.md +1 -1
- package/plugin/plugins/kspec/skills/writing-specs/SKILL.md +1 -1
- package/templates/agents-sections/01-quick-start.md +1 -0
- package/templates/agents-sections/06-ralph-loop.md +64 -11
- package/templates/skills/create-workflow/SKILL.md +1 -1
- package/templates/skills/manifest.yaml +1 -1
- package/templates/skills/plan/SKILL.md +1 -1
- package/templates/skills/task-work/SKILL.md +26 -3
- package/templates/skills/triage-inbox/SKILL.md +1 -1
- package/templates/skills/writing-specs/SKILL.md +1 -1
- package/dist/ralph/cli-renderer.d.ts +0 -27
- package/dist/ralph/cli-renderer.d.ts.map +0 -1
- package/dist/ralph/cli-renderer.js +0 -250
- package/dist/ralph/cli-renderer.js.map +0 -1
- package/dist/ralph/events.d.ts +0 -65
- package/dist/ralph/events.d.ts.map +0 -1
- package/dist/ralph/events.js +0 -600
- package/dist/ralph/events.js.map +0 -1
- package/dist/ralph/index.d.ts +0 -11
- package/dist/ralph/index.d.ts.map +0 -1
- package/dist/ralph/index.js +0 -16
- package/dist/ralph/index.js.map +0 -1
- package/dist/ralph/loop-errors.d.ts +0 -83
- package/dist/ralph/loop-errors.d.ts.map +0 -1
- package/dist/ralph/loop-errors.js +0 -150
- package/dist/ralph/loop-errors.js.map +0 -1
- package/dist/ralph/subagent.d.ts +0 -96
- package/dist/ralph/subagent.d.ts.map +0 -1
- package/dist/ralph/subagent.js +0 -195
- package/dist/ralph/subagent.js.map +0 -1
- package/dist/ralph/wrap-up.d.ts +0 -127
- package/dist/ralph/wrap-up.d.ts.map +0 -1
- package/dist/ralph/wrap-up.js +0 -271
- package/dist/ralph/wrap-up.js.map +0 -1
- /package/templates/skills/{observations → observe}/SKILL.md +0 -0
package/dist/daemon/server.ts
CHANGED
|
@@ -10,9 +10,12 @@ import { cors } from '@elysiajs/cors';
|
|
|
10
10
|
import { staticPlugin } from '@elysiajs/static';
|
|
11
11
|
import { ulid } from 'ulidx';
|
|
12
12
|
import { existsSync } from 'fs';
|
|
13
|
+
import { fileURLToPath } from 'url';
|
|
14
|
+
import { dirname } from 'path';
|
|
13
15
|
import { PubSubManager } from './websocket/pubsub';
|
|
14
16
|
import { HeartbeatManager } from './websocket/heartbeat';
|
|
15
17
|
import { WebSocketHandler } from './websocket/handler';
|
|
18
|
+
import { handleWebSocketClose } from './websocket/lifecycle';
|
|
16
19
|
import type { ConnectionData, ConnectedEvent } from './websocket/types';
|
|
17
20
|
import { PidFileManager } from './pid';
|
|
18
21
|
import { projectContextMiddleware } from './middleware/project-context';
|
|
@@ -23,6 +26,7 @@ import { createMetaRoutes } from './routes/meta';
|
|
|
23
26
|
import { createValidationRoutes } from './routes/validation';
|
|
24
27
|
import { createProjectsRoutes } from './routes/projects';
|
|
25
28
|
import { createTriageRoutes } from './routes/triage';
|
|
29
|
+
import { createAgentDispatchRoutes, getDispatchEngine, stopAllEngines } from './routes/agent-dispatch';
|
|
26
30
|
import { join } from 'path';
|
|
27
31
|
|
|
28
32
|
export interface ServerOptions {
|
|
@@ -39,8 +43,11 @@ export interface ServerOptions {
|
|
|
39
43
|
* 2. WEB_UI_DIR environment variable
|
|
40
44
|
* 3. packages/web-ui/build in current working directory (monorepo dev)
|
|
41
45
|
* 4. web-ui/build in current working directory
|
|
46
|
+
* 5. Bundled dist/web-ui/ relative to this module (npm package installs)
|
|
47
|
+
*
|
|
48
|
+
* Exported for testing only.
|
|
42
49
|
*/
|
|
43
|
-
function resolveWebUiPath(webUiDir?: string): string | null {
|
|
50
|
+
export function resolveWebUiPath(webUiDir?: string): string | null {
|
|
44
51
|
// 1. Explicit option
|
|
45
52
|
if (webUiDir && existsSync(webUiDir)) {
|
|
46
53
|
return webUiDir;
|
|
@@ -65,6 +72,15 @@ function resolveWebUiPath(webUiDir?: string): string | null {
|
|
|
65
72
|
return altPath;
|
|
66
73
|
}
|
|
67
74
|
|
|
75
|
+
// 5. Bundled assets: dist/web-ui/ relative to daemon module location
|
|
76
|
+
// Covers npm package installs where no local web UI build exists.
|
|
77
|
+
// import.meta.url resolves to dist/daemon/server.js → sibling is dist/web-ui/
|
|
78
|
+
const selfDir = dirname(fileURLToPath(import.meta.url));
|
|
79
|
+
const bundledPath = join(selfDir, '..', 'web-ui');
|
|
80
|
+
if (existsSync(bundledPath)) {
|
|
81
|
+
return bundledPath;
|
|
82
|
+
}
|
|
83
|
+
|
|
68
84
|
return null;
|
|
69
85
|
}
|
|
70
86
|
|
|
@@ -166,8 +182,10 @@ export async function createServer(options: ServerOptions) {
|
|
|
166
182
|
heartbeatManager = new HeartbeatManager();
|
|
167
183
|
wsHandler = new WebSocketHandler(pubsubManager);
|
|
168
184
|
|
|
169
|
-
// WeakMap to store project path during WebSocket upgrade
|
|
170
|
-
|
|
185
|
+
// WeakMap to store project path during WebSocket upgrade (keyed by Request object)
|
|
186
|
+
// Using WeakMap avoids needing to pass a requestId through beforeHandle return value,
|
|
187
|
+
// which breaks WebSocket upgrade in Elysia 1.4 when derive middleware is present.
|
|
188
|
+
const wsProjectPaths = new WeakMap<Request, string>();
|
|
171
189
|
|
|
172
190
|
const app = new Elysia()
|
|
173
191
|
// AC-15: Plugin pattern for middleware
|
|
@@ -222,6 +240,10 @@ export async function createServer(options: ServerOptions) {
|
|
|
222
240
|
// AC: @multi-directory-daemon ac-28, ac-29, ac-30 - Projects management endpoints
|
|
223
241
|
.use(createProjectsRoutes({ projectManager: projectContextManager }))
|
|
224
242
|
|
|
243
|
+
// AC: @agent-dispatch-engine ac-4 - Agent dispatch API endpoints
|
|
244
|
+
// AC: @daemon-agent-dispatch ac-3, ac-4 - Pass pubsub for WebSocket broadcast on invocation events
|
|
245
|
+
.use(createAgentDispatchRoutes({ pubsub: pubsubManager }))
|
|
246
|
+
|
|
225
247
|
// AC-4: WebSocket endpoint for real-time updates
|
|
226
248
|
.ws<ConnectionData>('/ws', {
|
|
227
249
|
beforeHandle({ request, store }) {
|
|
@@ -232,14 +254,17 @@ export async function createServer(options: ServerOptions) {
|
|
|
232
254
|
const projectPath = request.headers.get('X-Kspec-Dir')
|
|
233
255
|
|| url.searchParams.get('project')
|
|
234
256
|
|| undefined;
|
|
235
|
-
const requestId = ulid(); // Temporary ID to correlate upgrade with open
|
|
236
257
|
|
|
258
|
+
// IMPORTANT: Do NOT return a value from ws beforeHandle.
|
|
259
|
+
// In Elysia 1.4 with derive middleware, returning a value short-circuits
|
|
260
|
+
// the WebSocket upgrade and sends the value as an HTTP 200 response.
|
|
261
|
+
// Use a WeakMap keyed by Request object to pass data to open().
|
|
237
262
|
try {
|
|
238
263
|
const manager = (store as Record<string, unknown>).projectManager as import('./project-context').ProjectContextManager | undefined;
|
|
239
264
|
if (!manager) {
|
|
240
265
|
// Fallback: project manager not initialized yet
|
|
241
|
-
wsProjectPaths.set(
|
|
242
|
-
return
|
|
266
|
+
wsProjectPaths.set(request, startupProjectPath);
|
|
267
|
+
return;
|
|
243
268
|
}
|
|
244
269
|
|
|
245
270
|
let projectContext;
|
|
@@ -264,9 +289,8 @@ export async function createServer(options: ServerOptions) {
|
|
|
264
289
|
}
|
|
265
290
|
}
|
|
266
291
|
|
|
267
|
-
// Store resolved path for open() handler
|
|
268
|
-
wsProjectPaths.set(
|
|
269
|
-
return { wsRequestId: requestId };
|
|
292
|
+
// Store resolved path for open() handler via WeakMap
|
|
293
|
+
wsProjectPaths.set(request, projectContext.path);
|
|
270
294
|
} catch (err: unknown) {
|
|
271
295
|
console.error(`[daemon] WebSocket connection rejected: ${err instanceof Error ? err.message : String(err)}`);
|
|
272
296
|
throw err;
|
|
@@ -275,16 +299,13 @@ export async function createServer(options: ServerOptions) {
|
|
|
275
299
|
open(ws) {
|
|
276
300
|
// AC: @api-contract ac-25, @trait-websocket-protocol ac-1
|
|
277
301
|
const sessionId = ulid();
|
|
302
|
+
const openContext = ws.data as { id?: unknown; request?: unknown } | undefined;
|
|
303
|
+
const contextId = typeof openContext?.id === 'string' ? openContext.id : undefined;
|
|
278
304
|
|
|
279
305
|
// AC: @multi-directory-daemon ac-21 - Get bound project path
|
|
280
|
-
//
|
|
281
|
-
const
|
|
282
|
-
const projectPath =
|
|
283
|
-
|
|
284
|
-
// Clean up temporary mapping
|
|
285
|
-
if (requestId) {
|
|
286
|
-
wsProjectPaths.delete(requestId);
|
|
287
|
-
}
|
|
306
|
+
// Retrieve project path from WeakMap via the request object on ws.data
|
|
307
|
+
const request = openContext?.request as Request | undefined;
|
|
308
|
+
const projectPath = request ? wsProjectPaths.get(request) || startupProjectPath : startupProjectPath;
|
|
288
309
|
|
|
289
310
|
ws.data = {
|
|
290
311
|
sessionId,
|
|
@@ -295,7 +316,7 @@ export async function createServer(options: ServerOptions) {
|
|
|
295
316
|
projectPath // AC: @multi-directory-daemon ac-21 - immutable binding
|
|
296
317
|
};
|
|
297
318
|
|
|
298
|
-
pubsubManager.addConnection(sessionId, ws);
|
|
319
|
+
pubsubManager.addConnection(sessionId, ws, contextId);
|
|
299
320
|
console.log(`[daemon] WebSocket client connected: ${sessionId} bound to ${projectPath} (${pubsubManager.getConnectionCount()} total)`);
|
|
300
321
|
|
|
301
322
|
// Send connected event with session_id
|
|
@@ -316,8 +337,7 @@ export async function createServer(options: ServerOptions) {
|
|
|
316
337
|
heartbeatManager.recordPong(ws);
|
|
317
338
|
},
|
|
318
339
|
close(ws, code, reason) {
|
|
319
|
-
pubsubManager
|
|
320
|
-
console.log(`[daemon] WebSocket client disconnected: ${ws.data.sessionId} (code: ${code}, reason: ${reason})`);
|
|
340
|
+
handleWebSocketClose(pubsubManager, ws, code, reason);
|
|
321
341
|
}
|
|
322
342
|
});
|
|
323
343
|
|
|
@@ -353,6 +373,18 @@ export async function createServer(options: ServerOptions) {
|
|
|
353
373
|
console.log(`[daemon] Server listening on http://localhost:${port} (IPv4: 127.0.0.1, IPv6: ::1)`);
|
|
354
374
|
console.log(`[daemon] WebSocket available at ws://localhost:${port}/ws`);
|
|
355
375
|
|
|
376
|
+
// AC: @agent-dispatch-engine ac-5 - Wire file change callback to dispatch engine
|
|
377
|
+
projectContextManager.setFileChangeCallback((projectPath, file) => {
|
|
378
|
+
// Only forward changes to project.tasks.yaml
|
|
379
|
+
if (!file.endsWith('project.tasks.yaml')) return;
|
|
380
|
+
const engine = getDispatchEngine(projectPath);
|
|
381
|
+
if (engine) {
|
|
382
|
+
engine.handleFileChange(projectPath).catch((err) => {
|
|
383
|
+
console.error('[dispatch] Error handling file change:', err);
|
|
384
|
+
});
|
|
385
|
+
}
|
|
386
|
+
});
|
|
387
|
+
|
|
356
388
|
// AC: @multi-directory-daemon ac-17 - Start file watcher for startup project
|
|
357
389
|
if (startupProjectPath) {
|
|
358
390
|
try {
|
|
@@ -374,6 +406,9 @@ export async function createServer(options: ServerOptions) {
|
|
|
374
406
|
// Stop heartbeat monitoring
|
|
375
407
|
heartbeatManager.stop();
|
|
376
408
|
|
|
409
|
+
// AC: @agent-dispatch-engine ac-11 - Stop all dispatch engines before shutting down
|
|
410
|
+
await stopAllEngines();
|
|
411
|
+
|
|
377
412
|
// AC: @multi-directory-daemon ac-11b - Stop all file watchers
|
|
378
413
|
await projectContextManager.stopAllWatchers();
|
|
379
414
|
console.log('[daemon] All file watchers stopped');
|
|
@@ -12,6 +12,49 @@ import type { ServerWebSocket } from 'bun';
|
|
|
12
12
|
import type { WebSocketCommand, CommandAck, ConnectionData } from './types';
|
|
13
13
|
import type { PubSubManager } from './pubsub';
|
|
14
14
|
|
|
15
|
+
type WebSocketRawMessage =
|
|
16
|
+
| string
|
|
17
|
+
| Buffer
|
|
18
|
+
| ArrayBuffer
|
|
19
|
+
| ArrayBufferView
|
|
20
|
+
| Blob
|
|
21
|
+
| Record<string, unknown>;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Decode inbound WebSocket payloads into UTF-8 text.
|
|
25
|
+
*
|
|
26
|
+
* Node/WebSocket clients may deliver command frames as Uint8Array/ArrayBuffer
|
|
27
|
+
* or Blob instead of plain strings.
|
|
28
|
+
*/
|
|
29
|
+
async function decodeWebSocketMessage(rawMessage: WebSocketRawMessage): Promise<string> {
|
|
30
|
+
if (typeof rawMessage === 'string') {
|
|
31
|
+
return rawMessage;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
if (typeof rawMessage === 'object' && rawMessage !== null && !ArrayBuffer.isView(rawMessage)) {
|
|
35
|
+
if (rawMessage instanceof ArrayBuffer) {
|
|
36
|
+
return Buffer.from(rawMessage).toString('utf-8');
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
if (rawMessage instanceof Blob) {
|
|
40
|
+
return await rawMessage.text();
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Some runtimes already JSON-decode inbound websocket command payloads.
|
|
44
|
+
return JSON.stringify(rawMessage);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
if (ArrayBuffer.isView(rawMessage)) {
|
|
48
|
+
return Buffer.from(
|
|
49
|
+
rawMessage.buffer,
|
|
50
|
+
rawMessage.byteOffset,
|
|
51
|
+
rawMessage.byteLength,
|
|
52
|
+
).toString('utf-8');
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
return String(rawMessage);
|
|
56
|
+
}
|
|
57
|
+
|
|
15
58
|
export class WebSocketHandler {
|
|
16
59
|
constructor(private pubsub: PubSubManager) {}
|
|
17
60
|
|
|
@@ -19,12 +62,22 @@ export class WebSocketHandler {
|
|
|
19
62
|
* Handle incoming WebSocket command
|
|
20
63
|
* AC: @api-contract ac-26, ac-27, ac-28, ac-30
|
|
21
64
|
*/
|
|
22
|
-
handleMessage(
|
|
65
|
+
handleMessage(
|
|
66
|
+
ws: ServerWebSocket<ConnectionData>,
|
|
67
|
+
rawMessage: WebSocketRawMessage,
|
|
68
|
+
): Promise<void> {
|
|
69
|
+
return this.handleMessageInternal(ws, rawMessage);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
private async handleMessageInternal(
|
|
73
|
+
ws: ServerWebSocket<ConnectionData>,
|
|
74
|
+
rawMessage: WebSocketRawMessage,
|
|
75
|
+
): Promise<void> {
|
|
23
76
|
let command: WebSocketCommand;
|
|
24
77
|
|
|
25
78
|
try {
|
|
26
79
|
// Parse command
|
|
27
|
-
const messageStr =
|
|
80
|
+
const messageStr = await decodeWebSocketMessage(rawMessage);
|
|
28
81
|
command = JSON.parse(messageStr);
|
|
29
82
|
|
|
30
83
|
// Validate command structure
|
|
@@ -76,11 +129,12 @@ export class WebSocketHandler {
|
|
|
76
129
|
return;
|
|
77
130
|
}
|
|
78
131
|
|
|
79
|
-
const
|
|
132
|
+
const sessionId = this.resolveSessionId(ws);
|
|
133
|
+
const success = sessionId ? this.pubsub.subscribe(sessionId, topics) : false;
|
|
80
134
|
|
|
81
135
|
if (success) {
|
|
82
136
|
this.sendAck(ws, command.request_id, true);
|
|
83
|
-
console.log(`[ws] ${
|
|
137
|
+
console.log(`[ws] ${sessionId} subscribed to: ${topics.join(', ')}`);
|
|
84
138
|
} else {
|
|
85
139
|
this.sendAck(ws, command.request_id, false, 'not_found', 'Session not found');
|
|
86
140
|
}
|
|
@@ -97,11 +151,12 @@ export class WebSocketHandler {
|
|
|
97
151
|
return;
|
|
98
152
|
}
|
|
99
153
|
|
|
100
|
-
const
|
|
154
|
+
const sessionId = this.resolveSessionId(ws);
|
|
155
|
+
const success = sessionId ? this.pubsub.unsubscribe(sessionId, topics) : false;
|
|
101
156
|
|
|
102
157
|
if (success) {
|
|
103
158
|
this.sendAck(ws, command.request_id, true);
|
|
104
|
-
console.log(`[ws] ${
|
|
159
|
+
console.log(`[ws] ${sessionId} unsubscribed from: ${topics.join(', ')}`);
|
|
105
160
|
} else {
|
|
106
161
|
this.sendAck(ws, command.request_id, false, 'not_found', 'Session not found');
|
|
107
162
|
}
|
|
@@ -114,6 +169,12 @@ export class WebSocketHandler {
|
|
|
114
169
|
this.sendAck(ws, command.request_id, true);
|
|
115
170
|
}
|
|
116
171
|
|
|
172
|
+
private resolveSessionId(ws: ServerWebSocket<ConnectionData>): string | undefined {
|
|
173
|
+
const data = ws.data as { id?: unknown } | undefined;
|
|
174
|
+
const contextId = typeof data?.id === 'string' ? data.id : undefined;
|
|
175
|
+
return this.pubsub.getSessionIdBySocket(ws, contextId);
|
|
176
|
+
}
|
|
177
|
+
|
|
117
178
|
/**
|
|
118
179
|
* Send ack response
|
|
119
180
|
* AC: @api-contract ac-27
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ServerWebSocket } from 'bun';
|
|
2
|
+
import type { ConnectionData } from './types';
|
|
3
|
+
import type { PubSubManager } from './pubsub';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Handle websocket close cleanup and logging with stable session identity.
|
|
7
|
+
*/
|
|
8
|
+
export function handleWebSocketClose(
|
|
9
|
+
pubsub: PubSubManager,
|
|
10
|
+
ws: ServerWebSocket<ConnectionData>,
|
|
11
|
+
code: number,
|
|
12
|
+
reason: string
|
|
13
|
+
): string {
|
|
14
|
+
const closeContext = ws.data as { id?: unknown } | undefined;
|
|
15
|
+
const contextId = typeof closeContext?.id === 'string' ? closeContext.id : undefined;
|
|
16
|
+
const sessionId = pubsub.removeConnectionBySocket(ws, contextId) ?? 'unknown';
|
|
17
|
+
console.log(`[daemon] WebSocket client disconnected: ${sessionId} (code: ${code}, reason: ${reason})`);
|
|
18
|
+
return sessionId;
|
|
19
|
+
}
|
|
@@ -14,22 +14,93 @@ import type { ServerWebSocket } from 'bun';
|
|
|
14
14
|
import { ulid } from 'ulidx';
|
|
15
15
|
import type { BroadcastEvent, ConnectionData } from './types';
|
|
16
16
|
|
|
17
|
+
const SESSION_TOPIC_PREFIX = '__kspec_session:';
|
|
18
|
+
|
|
19
|
+
function sessionTopic(sessionId: string): string {
|
|
20
|
+
return `${SESSION_TOPIC_PREFIX}${sessionId}`;
|
|
21
|
+
}
|
|
22
|
+
|
|
17
23
|
export class PubSubManager {
|
|
18
24
|
private connections = new Map<string, ServerWebSocket<ConnectionData>>();
|
|
25
|
+
private sessionIdsBySocket = new WeakMap<ServerWebSocket<ConnectionData>, string>();
|
|
26
|
+
private sessionIdsByContextId = new Map<string, string>();
|
|
27
|
+
private contextIdsBySessionId = new Map<string, string>();
|
|
19
28
|
|
|
20
29
|
/**
|
|
21
30
|
* Register a new WebSocket connection
|
|
22
31
|
* AC: @trait-websocket-protocol ac-1
|
|
23
32
|
*/
|
|
24
|
-
addConnection(sessionId: string, ws: ServerWebSocket<ConnectionData
|
|
33
|
+
addConnection(sessionId: string, ws: ServerWebSocket<ConnectionData>, contextId?: string) {
|
|
25
34
|
this.connections.set(sessionId, ws);
|
|
35
|
+
this.sessionIdsBySocket.set(ws, sessionId);
|
|
36
|
+
if (contextId) {
|
|
37
|
+
this.sessionIdsByContextId.set(contextId, sessionId);
|
|
38
|
+
this.contextIdsBySessionId.set(sessionId, contextId);
|
|
39
|
+
}
|
|
40
|
+
ws.subscribe?.(sessionTopic(sessionId));
|
|
26
41
|
}
|
|
27
42
|
|
|
28
43
|
/**
|
|
29
44
|
* Remove a WebSocket connection
|
|
30
45
|
*/
|
|
31
|
-
removeConnection(sessionId: string) {
|
|
32
|
-
this.connections.
|
|
46
|
+
removeConnection(sessionId: string): boolean {
|
|
47
|
+
const ws = this.connections.get(sessionId);
|
|
48
|
+
if (ws) {
|
|
49
|
+
ws.unsubscribe?.(sessionTopic(sessionId));
|
|
50
|
+
this.sessionIdsBySocket.delete(ws);
|
|
51
|
+
}
|
|
52
|
+
const contextId = this.contextIdsBySessionId.get(sessionId);
|
|
53
|
+
if (contextId) {
|
|
54
|
+
this.contextIdsBySessionId.delete(sessionId);
|
|
55
|
+
this.sessionIdsByContextId.delete(contextId);
|
|
56
|
+
}
|
|
57
|
+
return this.connections.delete(sessionId);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Resolve a stable session ID for a socket and remove that connection.
|
|
62
|
+
* This is resilient when ws.data.sessionId is missing in close callbacks.
|
|
63
|
+
*/
|
|
64
|
+
removeConnectionBySocket(ws: ServerWebSocket<ConnectionData>, contextId?: string): string | undefined {
|
|
65
|
+
const sessionId = this.getSessionIdBySocket(ws, contextId);
|
|
66
|
+
if (!sessionId) {
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
this.removeConnection(sessionId);
|
|
71
|
+
return sessionId;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Get stable session ID for socket from registration mapping.
|
|
76
|
+
*/
|
|
77
|
+
getSessionIdBySocket(ws: ServerWebSocket<ConnectionData>, contextId?: string): string | undefined {
|
|
78
|
+
const mappedSessionId = this.sessionIdsBySocket.get(ws);
|
|
79
|
+
if (mappedSessionId) {
|
|
80
|
+
return mappedSessionId;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const data = ws.data as Partial<ConnectionData> | undefined;
|
|
84
|
+
if (data?.sessionId) {
|
|
85
|
+
return data.sessionId;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const subscriptions = (ws as Partial<ServerWebSocket<ConnectionData>>).subscriptions;
|
|
89
|
+
if (Array.isArray(subscriptions)) {
|
|
90
|
+
const sessionSubscription = subscriptions.find((topic) => topic.startsWith(SESSION_TOPIC_PREFIX));
|
|
91
|
+
if (sessionSubscription) {
|
|
92
|
+
return sessionSubscription.slice(SESSION_TOPIC_PREFIX.length);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
if (contextId) {
|
|
97
|
+
const sessionFromContext = this.sessionIdsByContextId.get(contextId);
|
|
98
|
+
if (sessionFromContext) {
|
|
99
|
+
return sessionFromContext;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return undefined;
|
|
33
104
|
}
|
|
34
105
|
|
|
35
106
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/export/html.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/export/html.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAqNlE"}
|
package/dist/export/html.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Generates self-contained HTML files with embedded JSON and SPA loader.
|
|
5
5
|
* AC: @gh-pages-export ac-6
|
|
6
6
|
*/
|
|
7
|
+
import { shortestUniqueUlid } from "../parser/refs.js";
|
|
7
8
|
/**
|
|
8
9
|
* Generate a self-contained HTML file with embedded JSON snapshot.
|
|
9
10
|
*
|
|
@@ -15,6 +16,8 @@
|
|
|
15
16
|
* AC: @gh-pages-export ac-6
|
|
16
17
|
*/
|
|
17
18
|
export function generateHtmlExport(snapshot) {
|
|
19
|
+
const taskUlids = snapshot.tasks.map((task) => task._ulid);
|
|
20
|
+
const itemUlids = snapshot.items.map((item) => item._ulid);
|
|
18
21
|
const jsonData = JSON.stringify(snapshot, null, 2);
|
|
19
22
|
const escapedJson = jsonData
|
|
20
23
|
.replace(/</g, "\\u003c")
|
|
@@ -183,7 +186,7 @@ export function generateHtmlExport(snapshot) {
|
|
|
183
186
|
${escapeHtml(task.title)}
|
|
184
187
|
</div>
|
|
185
188
|
<div class="item-meta">
|
|
186
|
-
@${task.slugs[0] || task._ulid
|
|
189
|
+
@${task.slugs[0] || shortestUniqueUlid(task._ulid, taskUlids)}
|
|
187
190
|
${task.spec_ref_title ? ` • ${escapeHtml(task.spec_ref_title)}` : ""}
|
|
188
191
|
</div>
|
|
189
192
|
</div>
|
|
@@ -199,7 +202,7 @@ export function generateHtmlExport(snapshot) {
|
|
|
199
202
|
<div class="item">
|
|
200
203
|
<div class="item-title">${escapeHtml(item.title)}</div>
|
|
201
204
|
<div class="item-meta">
|
|
202
|
-
${item.type || "item"} • @${item.slugs[0] || item._ulid
|
|
205
|
+
${item.type || "item"} • @${item.slugs[0] || shortestUniqueUlid(item._ulid, itemUlids)}
|
|
203
206
|
${item.acceptance_criteria?.length ? ` • ${item.acceptance_criteria.length} ACs` : ""}
|
|
204
207
|
</div>
|
|
205
208
|
</div>
|
package/dist/export/html.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/export/html.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/export/html.ts"],"names":[],"mappings":"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"}
|
package/dist/export/triage.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ export declare function truncateText(text: string, maxLen?: number): string;
|
|
|
16
16
|
* AC: @triage-agent-export ac-1
|
|
17
17
|
* AC: @triage-agent-export ac-3
|
|
18
18
|
*/
|
|
19
|
-
export declare function formatTriageRecordContext(record: TriageRecord): string;
|
|
19
|
+
export declare function formatTriageRecordContext(record: TriageRecord, displayRef?: string): string;
|
|
20
20
|
/**
|
|
21
21
|
* Export triage records in context (markdown) format.
|
|
22
22
|
* AC: @triage-agent-export ac-1 — markdown block per record
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triage.d.ts","sourceRoot":"","sources":["../../src/export/triage.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"triage.d.ts","sourceRoot":"","sources":["../../src/export/triage.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGxD;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,MAAW,GAAG,MAAM,CAItE;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,YAAY,EACpB,UAAU,GAAE,MAAiC,GAC5C,MAAM,CAsBR;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,CAarE;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,GAAG,mBAAmB,CAAC;AAExE;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,YAAY,EAAE,EACvB,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,kBAAkB,CAYpB"}
|
package/dist/export/triage.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* AC: @triage-agent-export ac-1, ac-2, ac-3, ac-4
|
|
8
8
|
*/
|
|
9
|
+
import { shortestUniqueUlid } from "../parser/refs.js";
|
|
9
10
|
/**
|
|
10
11
|
* Truncate text to a maximum length, taking only the first line.
|
|
11
12
|
*/
|
|
@@ -20,9 +21,9 @@ export function truncateText(text, maxLen = 60) {
|
|
|
20
21
|
* AC: @triage-agent-export ac-1
|
|
21
22
|
* AC: @triage-agent-export ac-3
|
|
22
23
|
*/
|
|
23
|
-
export function formatTriageRecordContext(record) {
|
|
24
|
+
export function formatTriageRecordContext(record, displayRef = record._ulid.slice(0, 8)) {
|
|
24
25
|
const lines = [];
|
|
25
|
-
lines.push(`### ${
|
|
26
|
+
lines.push(`### ${displayRef} — ${truncateText(record.item_snapshot, 80)}`);
|
|
26
27
|
lines.push("");
|
|
27
28
|
lines.push(`**Item:** ${record.item_snapshot}`);
|
|
28
29
|
lines.push(`**Status:** ${record.status}`);
|
|
@@ -57,9 +58,10 @@ export function exportTriageAsContext(records) {
|
|
|
57
58
|
if (records.length === 0) {
|
|
58
59
|
return "No triage decisions recorded.";
|
|
59
60
|
}
|
|
61
|
+
const recordUlids = records.map((record) => record._ulid);
|
|
60
62
|
let content = "# Triage Decisions\n\n";
|
|
61
63
|
for (const record of records) {
|
|
62
|
-
content += formatTriageRecordContext(record);
|
|
64
|
+
content += formatTriageRecordContext(record, shortestUniqueUlid(record._ulid, recordUlids));
|
|
63
65
|
}
|
|
64
66
|
return content;
|
|
65
67
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triage.js","sourceRoot":"","sources":["../../src/export/triage.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"triage.js","sourceRoot":"","sources":["../../src/export/triage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alignment.d.ts","sourceRoot":"","sources":["../../src/parser/alignment.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAO1E;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,oBAAoB,CAAC;IACpC,cAAc,EAAE,oBAAoB,CAAC;IACrC,WAAW,EAAE,iBAAiB,EAAE,CAAC;IACjC,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,eAAe,GAAG,iBAAiB,GAAG,sBAAsB,CAAC;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD;;;GAGG;AACH,qBAAa,cAAc;IACzB,+CAA+C;IAC/C,OAAO,CAAC,WAAW,CAA+B;IAElD,0CAA0C;IAC1C,OAAO,CAAC,UAAU,CAA6B;IAE/C,6BAA6B;IAC7B,OAAO,CAAC,SAAS,CAAqC;IAEtD,wBAAwB;IACxB,OAAO,CAAC,KAAK,CAAiC;IAE9C;;OAEG;gBACS,KAAK,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IAkBxD;;;OAGG;IACH,UAAU,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAa1C;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,EAAE;IAO/C;;OAEG;IACH,cAAc,CACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,cAAc,GACvB,cAAc,GAAG,SAAS;IAW7B;;OAEG;IACH,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,oBAAoB;IA4B/D;;OAEG;IACH,wBAAwB,CACtB,QAAQ,EAAE,MAAM,GACf,yBAAyB,GAAG,SAAS;IA4BxC;;OAEG;IACH,qBAAqB,IAAI,gBAAgB,EAAE;
|
|
1
|
+
{"version":3,"file":"alignment.d.ts","sourceRoot":"","sources":["../../src/parser/alignment.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAO1E;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,oBAAoB,CAAC;IACpC,cAAc,EAAE,oBAAoB,CAAC;IACrC,WAAW,EAAE,iBAAiB,EAAE,CAAC;IACjC,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,eAAe,GAAG,iBAAiB,GAAG,sBAAsB,CAAC;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD;;;GAGG;AACH,qBAAa,cAAc;IACzB,+CAA+C;IAC/C,OAAO,CAAC,WAAW,CAA+B;IAElD,0CAA0C;IAC1C,OAAO,CAAC,UAAU,CAA6B;IAE/C,6BAA6B;IAC7B,OAAO,CAAC,SAAS,CAAqC;IAEtD,wBAAwB;IACxB,OAAO,CAAC,KAAK,CAAiC;IAE9C;;OAEG;gBACS,KAAK,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;IAkBxD;;;OAGG;IACH,UAAU,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAa1C;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,EAAE;IAO/C;;OAEG;IACH,cAAc,CACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,cAAc,GACvB,cAAc,GAAG,SAAS;IAW7B;;OAEG;IACH,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,oBAAoB;IA4B/D;;OAEG;IACH,wBAAwB,CACtB,QAAQ,EAAE,MAAM,GACf,yBAAyB,GAAG,SAAS;IA4BxC;;OAEG;IACH,qBAAqB,IAAI,gBAAgB,EAAE;IAsD3C;;OAEG;IACH,6BAA6B,IAAI,yBAAyB,EAAE;IAW5D;;OAEG;IACH,QAAQ,IAAI;QACV,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;QACvB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;KACvB;CAyBF;AAMD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,oBAAoB,CAAC;IACrC,SAAS,EAAE,oBAAoB,CAAC;CACjC;AAED;;;;;GAKG;AACH,wBAAsB,4BAA4B,CAChD,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,UAAU,EAAE,EACtB,QAAQ,EAAE,cAAc,EAAE,EAC1B,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CA6C5B"}
|
package/dist/parser/alignment.js
CHANGED
|
@@ -144,9 +144,11 @@ export class AlignmentIndex {
|
|
|
144
144
|
// Orphaned spec (no tasks)
|
|
145
145
|
// AC: @trait-retrospective ac-1
|
|
146
146
|
// Skip retrospective specs from orphaned warnings
|
|
147
|
+
// Policy: warn for not_started and in_progress (suspicious), but trust
|
|
148
|
+
// implemented/verified as baseline history predating the task system.
|
|
147
149
|
const isRetrospective = spec.traits?.includes("@trait-retrospective");
|
|
148
150
|
if (taskUlids.length === 0 &&
|
|
149
|
-
currentStatus === "not_started" &&
|
|
151
|
+
(currentStatus === "not_started" || currentStatus === "in_progress") &&
|
|
150
152
|
!isRetrospective) {
|
|
151
153
|
warnings.push({
|
|
152
154
|
type: "orphaned_spec",
|
|
@@ -155,8 +157,9 @@ export class AlignmentIndex {
|
|
|
155
157
|
message: `Spec item "${spec.title}" has no implementing tasks`,
|
|
156
158
|
});
|
|
157
159
|
}
|
|
158
|
-
// Status mismatch
|
|
159
|
-
|
|
160
|
+
// Status mismatch (only when tasks exist — no-task specs are handled above
|
|
161
|
+
// for not_started/in_progress; implemented/verified are trusted as baseline)
|
|
162
|
+
if (taskUlids.length > 0 && currentStatus !== expectedStatus) {
|
|
160
163
|
warnings.push({
|
|
161
164
|
type: "status_mismatch",
|
|
162
165
|
specUlid,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alignment.js","sourceRoot":"","sources":["../../src/parser/alignment.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"alignment.js","sourceRoot":"","sources":["../../src/parser/alignment.ts"],"names":[],"mappings":"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"}
|
package/dist/parser/assess.js
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* AC: @tasks-assess-automation ac-8 through ac-16
|
|
13
13
|
*/
|
|
14
14
|
export function assessTask(task, index, items) {
|
|
15
|
-
const taskRef = task.slugs.length > 0 ? `@${task.slugs[0]}` : `@${task._ulid
|
|
15
|
+
const taskRef = task.slugs.length > 0 ? `@${task.slugs[0]}` : `@${index.shortUlid(task._ulid)}`;
|
|
16
16
|
const taskType = task.type || "task";
|
|
17
17
|
// AC: @tasks-assess-automation ac-8, ac-9 - Check has_spec_ref
|
|
18
18
|
const hasSpecRefResult = checkHasSpecRef(task, index);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assess.js","sourceRoot":"","sources":["../../src/parser/assess.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiDH,+DAA+D;AAC/D,mBAAmB;AACnB,+DAA+D;AAE/D;;;GAGG;AACH,MAAM,UAAU,UAAU,CACxB,IAAgB,EAChB,KAAqB,EACrB,KAAuB;IAEvB,MAAM,OAAO,GACX,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"assess.js","sourceRoot":"","sources":["../../src/parser/assess.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiDH,+DAA+D;AAC/D,mBAAmB;AACnB,+DAA+D;AAE/D;;;GAGG;AACH,MAAM,UAAU,UAAU,CACxB,IAAgB,EAChB,KAAqB,EACrB,KAAuB;IAEvB,MAAM,OAAO,GACX,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;IAClF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC;IAErC,+DAA+D;IAC/D,MAAM,gBAAgB,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAEtD,iEAAiE;IACjE,MAAM,gBAAgB,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAE7D,8DAA8D;IAC9D,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAE3C,yBAAyB;IACzB,mDAAmD;IACnD,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,qBAAqB,CACtD,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,QAAQ,CACT,CAAC;IAEF,OAAO;QACL,OAAO;QACP,QAAQ,EAAE,IAAI,CAAC,KAAK;QACpB,SAAS,EAAE,IAAI,CAAC,KAAK;QACrB,QAAQ;QACR,QAAQ,EAAE;YACR,YAAY,EAAE,gBAAgB;YAC9B,YAAY,EAAE,gBAAgB;YAC9B,SAAS,EAAE,cAAc;SAC1B;QACD,cAAc;QACd,MAAM;KACP,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CACtB,IAAgB,EAChB,KAAqB;IAErB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC5C,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC1E,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AACjD,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CACtB,IAAgB,EAChB,KAAqB,EACrB,KAAuB;IAEvB,8DAA8D;IAC9D,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;IACpE,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC;IACvE,CAAC;IAED,qBAAqB;IACrB,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC;IAC3E,CAAC;IAED,MAAM,OAAO,GAAG,QAAQ,CAAC,mBAAmB,EAAE,MAAM,IAAI,CAAC,CAAC;IAC1D,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;QAClB,OAAO;YACL,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,iCAAiC;SAC1C,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC3C,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa,CAAC,IAAgB;IACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC;IACrC,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IAChD,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,QAAQ,EAAE,EAAE,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAC5B,UAA2B,EAC3B,UAA2B,EAC3B,QAAyB,EACzB,SAAiB;IAEjB,qEAAqE;IACrE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnB,OAAO;YACL,cAAc,EAAE,aAAa;YAC7B,MAAM,EAAE,+CAA+C;SACxD,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAClD,CAAC;SAAM,IAAI,UAAU,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAClD,iEAAiE;IACnE,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,cAAc,EAAE,cAAc;YAC9B,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;SAC3B,CAAC;IACJ,CAAC;IAED,+EAA+E;IAC/E,OAAO;QACL,cAAc,EAAE,qBAAqB;QACrC,MAAM,EAAE,iEAAiE;KAC1E,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACtC,KAAmB,EACnB,OAA4C,EAC5C,KAAqB;IAErB,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,iEAAiE;IACjE,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IAE1D,6DAA6D;IAC7D,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,EAAE,CAAC,CAAC,4BAA4B;QACzC,CAAC;QACD,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC7D,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,+EAA+E;IAC/E,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACjB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,WAA6B;IAE7B,MAAM,OAAO,GAAsB;QACjC,mBAAmB,EAAE,CAAC;QACtB,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,CAAC;QACd,KAAK,EAAE,WAAW,CAAC,MAAM;KAC1B,CAAC;IAEF,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;IACvC,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAeD,MAAM,UAAU,sBAAsB,CACpC,WAA6B;IAE7B,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;QACpC,4DAA4D;QAC5D,IAAI,UAAU,CAAC,cAAc,KAAK,aAAa,EAAE,CAAC;YAChD,OAAO;gBACL,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,QAAQ,EAAE,UAAU,CAAC,QAAQ;gBAC7B,SAAS,EAAE,UAAU,CAAC,SAAS;gBAC/B,MAAM,EAAE,iBAA0B;gBAClC,SAAS,EAAE,aAAsB;gBACjC,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC;QACJ,CAAC;QAED,uEAAuE;QACvE,IAAI,UAAU,CAAC,cAAc,KAAK,cAAc,EAAE,CAAC;YACjD,OAAO;gBACL,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,QAAQ,EAAE,UAAU,CAAC,QAAQ;gBAC7B,SAAS,EAAE,UAAU,CAAC,SAAS;gBAC/B,MAAM,EAAE,kBAA2B;gBACnC,SAAS,EAAE,cAAuB;gBAClC,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC;QACJ,CAAC;QAED,8EAA8E;QAC9E,OAAO;YACL,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,SAAS,EAAE,UAAU,CAAC,SAAS;YAC/B,MAAM,EAAE,WAAoB;YAC5B,MAAM,EAAE,gEAAgE;SACzE,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|