@cleocode/core 2026.3.43 → 2026.3.44
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/admin/export-tasks.d.ts.map +1 -1
- package/dist/agents/agent-schema.d.ts +358 -0
- package/dist/agents/agent-schema.d.ts.map +1 -0
- package/dist/agents/capacity.d.ts +57 -0
- package/dist/agents/capacity.d.ts.map +1 -0
- package/dist/agents/index.d.ts +17 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/registry.d.ts +115 -0
- package/dist/agents/registry.d.ts.map +1 -0
- package/dist/agents/retry.d.ts +83 -0
- package/dist/agents/retry.d.ts.map +1 -0
- package/dist/hooks/index.d.ts +4 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/payload-schemas.d.ts +214 -0
- package/dist/hooks/payload-schemas.d.ts.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16443 -2160
- package/dist/index.js.map +4 -4
- package/dist/inject/index.d.ts.map +1 -1
- package/dist/intelligence/impact.d.ts +51 -0
- package/dist/intelligence/impact.d.ts.map +1 -0
- package/dist/intelligence/index.d.ts +15 -0
- package/dist/intelligence/index.d.ts.map +1 -0
- package/dist/intelligence/patterns.d.ts +66 -0
- package/dist/intelligence/patterns.d.ts.map +1 -0
- package/dist/intelligence/prediction.d.ts +51 -0
- package/dist/intelligence/prediction.d.ts.map +1 -0
- package/dist/intelligence/types.d.ts +221 -0
- package/dist/intelligence/types.d.ts.map +1 -0
- package/dist/internal.d.ts +9 -0
- package/dist/internal.d.ts.map +1 -1
- package/dist/issue/template-parser.d.ts +8 -2
- package/dist/issue/template-parser.d.ts.map +1 -1
- package/dist/lifecycle/pipeline.d.ts +2 -2
- package/dist/lifecycle/pipeline.d.ts.map +1 -1
- package/dist/lifecycle/state-machine.d.ts +1 -1
- package/dist/lifecycle/state-machine.d.ts.map +1 -1
- package/dist/memory/brain-lifecycle.d.ts.map +1 -1
- package/dist/memory/brain-retrieval.d.ts.map +1 -1
- package/dist/memory/brain-row-types.d.ts +40 -6
- package/dist/memory/brain-row-types.d.ts.map +1 -1
- package/dist/memory/brain-search.d.ts.map +1 -1
- package/dist/memory/brain-similarity.d.ts.map +1 -1
- package/dist/memory/claude-mem-migration.d.ts.map +1 -1
- package/dist/nexus/discover.d.ts.map +1 -1
- package/dist/orchestration/bootstrap.d.ts.map +1 -1
- package/dist/orchestration/skill-ops.d.ts +4 -4
- package/dist/orchestration/skill-ops.d.ts.map +1 -1
- package/dist/otel/index.d.ts +1 -1
- package/dist/otel/index.d.ts.map +1 -1
- package/dist/sessions/briefing.d.ts.map +1 -1
- package/dist/sessions/handoff.d.ts.map +1 -1
- package/dist/sessions/index.d.ts +1 -1
- package/dist/sessions/index.d.ts.map +1 -1
- package/dist/sessions/types.d.ts +8 -42
- package/dist/sessions/types.d.ts.map +1 -1
- package/dist/signaldock/signaldock-transport.d.ts +1 -1
- package/dist/signaldock/signaldock-transport.d.ts.map +1 -1
- package/dist/skills/injection/subagent.d.ts +3 -3
- package/dist/skills/injection/subagent.d.ts.map +1 -1
- package/dist/skills/manifests/contribution.d.ts +2 -2
- package/dist/skills/manifests/contribution.d.ts.map +1 -1
- package/dist/skills/orchestrator/spawn.d.ts +6 -6
- package/dist/skills/orchestrator/spawn.d.ts.map +1 -1
- package/dist/skills/orchestrator/startup.d.ts +1 -1
- package/dist/skills/orchestrator/startup.d.ts.map +1 -1
- package/dist/skills/orchestrator/validator.d.ts +2 -2
- package/dist/skills/orchestrator/validator.d.ts.map +1 -1
- package/dist/skills/precedence-types.d.ts +24 -1
- package/dist/skills/precedence-types.d.ts.map +1 -1
- package/dist/skills/types.d.ts +70 -4
- package/dist/skills/types.d.ts.map +1 -1
- package/dist/store/export.d.ts +5 -4
- package/dist/store/export.d.ts.map +1 -1
- package/dist/store/tasks-schema.d.ts +12 -2
- package/dist/store/tasks-schema.d.ts.map +1 -1
- package/dist/store/typed-query.d.ts +12 -0
- package/dist/store/typed-query.d.ts.map +1 -0
- package/dist/store/validation-schemas.d.ts +2422 -50
- package/dist/store/validation-schemas.d.ts.map +1 -1
- package/dist/system/inject-generate.d.ts.map +1 -1
- package/dist/validation/doctor/checks.d.ts +5 -0
- package/dist/validation/doctor/checks.d.ts.map +1 -1
- package/dist/validation/engine.d.ts +10 -10
- package/dist/validation/engine.d.ts.map +1 -1
- package/dist/validation/index.d.ts +6 -2
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/protocol-common.d.ts +10 -2
- package/dist/validation/protocol-common.d.ts.map +1 -1
- package/migrations/drizzle-tasks/20260320013731_wave0-schema-hardening/migration.sql +84 -0
- package/migrations/drizzle-tasks/20260320013731_wave0-schema-hardening/snapshot.json +4060 -0
- package/migrations/drizzle-tasks/20260320020000_agent-dimension/migration.sql +35 -0
- package/migrations/drizzle-tasks/20260320020000_agent-dimension/snapshot.json +4312 -0
- package/package.json +2 -2
- package/src/admin/export-tasks.ts +2 -5
- package/src/agents/__tests__/capacity.test.ts +219 -0
- package/src/agents/__tests__/registry.test.ts +457 -0
- package/src/agents/__tests__/retry.test.ts +289 -0
- package/src/agents/agent-schema.ts +107 -0
- package/src/agents/capacity.ts +151 -0
- package/src/agents/index.ts +68 -0
- package/src/agents/registry.ts +449 -0
- package/src/agents/retry.ts +255 -0
- package/src/hooks/index.ts +20 -1
- package/src/hooks/payload-schemas.ts +199 -0
- package/src/index.ts +69 -0
- package/src/inject/index.ts +14 -14
- package/src/intelligence/__tests__/impact.test.ts +453 -0
- package/src/intelligence/__tests__/patterns.test.ts +450 -0
- package/src/intelligence/__tests__/prediction.test.ts +418 -0
- package/src/intelligence/impact.ts +638 -0
- package/src/intelligence/index.ts +47 -0
- package/src/intelligence/patterns.ts +621 -0
- package/src/intelligence/prediction.ts +621 -0
- package/src/intelligence/types.ts +273 -0
- package/src/internal.ts +82 -1
- package/src/issue/template-parser.ts +65 -4
- package/src/lifecycle/pipeline.ts +14 -7
- package/src/lifecycle/state-machine.ts +6 -2
- package/src/memory/brain-lifecycle.ts +5 -11
- package/src/memory/brain-retrieval.ts +44 -38
- package/src/memory/brain-row-types.ts +43 -6
- package/src/memory/brain-search.ts +53 -32
- package/src/memory/brain-similarity.ts +9 -8
- package/src/memory/claude-mem-migration.ts +4 -3
- package/src/nexus/__tests__/nexus-e2e.test.ts +1481 -0
- package/src/nexus/discover.ts +1 -0
- package/src/orchestration/bootstrap.ts +11 -17
- package/src/orchestration/skill-ops.ts +52 -32
- package/src/otel/index.ts +48 -4
- package/src/sessions/__tests__/briefing.test.ts +31 -2
- package/src/sessions/briefing.ts +27 -42
- package/src/sessions/handoff.ts +52 -86
- package/src/sessions/index.ts +5 -1
- package/src/sessions/types.ts +9 -43
- package/src/signaldock/signaldock-transport.ts +5 -2
- package/src/skills/injection/subagent.ts +10 -16
- package/src/skills/manifests/contribution.ts +5 -13
- package/src/skills/orchestrator/__tests__/spawn-tier.test.ts +44 -30
- package/src/skills/orchestrator/spawn.ts +18 -31
- package/src/skills/orchestrator/startup.ts +78 -65
- package/src/skills/orchestrator/validator.ts +26 -31
- package/src/skills/precedence-types.ts +24 -1
- package/src/skills/types.ts +72 -5
- package/src/store/__tests__/test-db-helper.d.ts +4 -4
- package/src/store/__tests__/test-db-helper.js +5 -16
- package/src/store/__tests__/test-db-helper.ts +5 -18
- package/src/store/chain-schema.ts +1 -1
- package/src/store/export.ts +22 -12
- package/src/store/tasks-schema.ts +65 -8
- package/src/store/typed-query.ts +17 -0
- package/src/store/validation-schemas.ts +347 -23
- package/src/system/inject-generate.ts +9 -23
- package/src/validation/doctor/checks.ts +24 -2
- package/src/validation/engine.ts +11 -11
- package/src/validation/index.ts +131 -3
- package/src/validation/protocol-common.ts +54 -3
- package/dist/tasks/reparent.d.ts +0 -38
- package/dist/tasks/reparent.d.ts.map +0 -1
- package/src/tasks/reparent.ts +0 -134
package/src/hooks/index.ts
CHANGED
|
@@ -2,11 +2,30 @@
|
|
|
2
2
|
* Hooks System - Barrel Export
|
|
3
3
|
*
|
|
4
4
|
* Central export point for the CLEO hooks system.
|
|
5
|
-
* Import from here to access the hook registry, types, and
|
|
5
|
+
* Import from here to access the hook registry, types, handlers, and
|
|
6
|
+
* Zod payload validation schemas.
|
|
6
7
|
*
|
|
7
8
|
* @module @cleocode/cleo/hooks
|
|
8
9
|
*/
|
|
9
10
|
|
|
10
11
|
export * from './handlers/index.js';
|
|
12
|
+
export type { PayloadValidationResult } from './payload-schemas.js';
|
|
13
|
+
export {
|
|
14
|
+
HookPayloadSchema,
|
|
15
|
+
OnAgentCompletePayloadSchema,
|
|
16
|
+
OnAgentSpawnPayloadSchema,
|
|
17
|
+
OnCascadeStartPayloadSchema,
|
|
18
|
+
OnErrorPayloadSchema,
|
|
19
|
+
OnFileChangePayloadSchema,
|
|
20
|
+
OnPatrolPayloadSchema,
|
|
21
|
+
OnPromptSubmitPayloadSchema,
|
|
22
|
+
OnResponseCompletePayloadSchema,
|
|
23
|
+
OnSessionEndPayloadSchema,
|
|
24
|
+
OnSessionStartPayloadSchema,
|
|
25
|
+
OnToolCompletePayloadSchema,
|
|
26
|
+
OnToolStartPayloadSchema,
|
|
27
|
+
OnWorkAvailablePayloadSchema,
|
|
28
|
+
validatePayload,
|
|
29
|
+
} from './payload-schemas.js';
|
|
11
30
|
export { HookRegistry, hooks } from './registry.js';
|
|
12
31
|
export type * from './types.js';
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod validation schemas for hook event payloads.
|
|
3
|
+
*
|
|
4
|
+
* Provides runtime validation for all hook payload types defined in
|
|
5
|
+
* ./types.ts. Each schema mirrors its corresponding TypeScript interface
|
|
6
|
+
* and can be used to validate payloads at dispatch time.
|
|
7
|
+
*
|
|
8
|
+
* @module @cleocode/cleo/hooks/payload-schemas
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import { z } from 'zod/v4';
|
|
12
|
+
import type { HookEvent } from './types.js';
|
|
13
|
+
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// Base Payload Schema
|
|
16
|
+
// ============================================================================
|
|
17
|
+
|
|
18
|
+
/** Zod schema for {@link HookPayload}. */
|
|
19
|
+
export const HookPayloadSchema = z.object({
|
|
20
|
+
timestamp: z.iso.datetime(),
|
|
21
|
+
sessionId: z.string().optional(),
|
|
22
|
+
taskId: z.string().optional(),
|
|
23
|
+
providerId: z.string().optional(),
|
|
24
|
+
metadata: z.record(z.string(), z.unknown()).optional(),
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
// ============================================================================
|
|
28
|
+
// CAAMP-mapped Event Payload Schemas
|
|
29
|
+
// ============================================================================
|
|
30
|
+
|
|
31
|
+
/** Zod schema for {@link OnSessionStartPayload}. */
|
|
32
|
+
export const OnSessionStartPayloadSchema = HookPayloadSchema.extend({
|
|
33
|
+
sessionId: z.string(),
|
|
34
|
+
name: z.string(),
|
|
35
|
+
scope: z.string(),
|
|
36
|
+
agent: z.string().optional(),
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
/** Zod schema for {@link OnSessionEndPayload}. */
|
|
40
|
+
export const OnSessionEndPayloadSchema = HookPayloadSchema.extend({
|
|
41
|
+
sessionId: z.string(),
|
|
42
|
+
duration: z.number(),
|
|
43
|
+
tasksCompleted: z.array(z.string()),
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
/** Zod schema for {@link OnToolStartPayload}. */
|
|
47
|
+
export const OnToolStartPayloadSchema = HookPayloadSchema.extend({
|
|
48
|
+
taskId: z.string(),
|
|
49
|
+
taskTitle: z.string(),
|
|
50
|
+
previousTask: z.string().optional(),
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
/** Zod schema for {@link OnToolCompletePayload}. */
|
|
54
|
+
export const OnToolCompletePayloadSchema = HookPayloadSchema.extend({
|
|
55
|
+
taskId: z.string(),
|
|
56
|
+
taskTitle: z.string(),
|
|
57
|
+
status: z.enum(['done', 'archived', 'cancelled']),
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
/** Zod schema for {@link OnFileChangePayload}. */
|
|
61
|
+
export const OnFileChangePayloadSchema = HookPayloadSchema.extend({
|
|
62
|
+
filePath: z.string(),
|
|
63
|
+
changeType: z.enum(['write', 'create', 'delete']),
|
|
64
|
+
sizeBytes: z.number().optional(),
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
/** Zod schema for {@link OnErrorPayload}. */
|
|
68
|
+
export const OnErrorPayloadSchema = HookPayloadSchema.extend({
|
|
69
|
+
errorCode: z.union([z.number(), z.string()]),
|
|
70
|
+
message: z.string(),
|
|
71
|
+
domain: z.string().optional(),
|
|
72
|
+
operation: z.string().optional(),
|
|
73
|
+
gateway: z.string().optional(),
|
|
74
|
+
stack: z.string().optional(),
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
/** Zod schema for {@link OnPromptSubmitPayload}. */
|
|
78
|
+
export const OnPromptSubmitPayloadSchema = HookPayloadSchema.extend({
|
|
79
|
+
gateway: z.string(),
|
|
80
|
+
domain: z.string(),
|
|
81
|
+
operation: z.string(),
|
|
82
|
+
source: z.string().optional(),
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
/** Zod schema for {@link OnResponseCompletePayload}. */
|
|
86
|
+
export const OnResponseCompletePayloadSchema = HookPayloadSchema.extend({
|
|
87
|
+
gateway: z.string(),
|
|
88
|
+
domain: z.string(),
|
|
89
|
+
operation: z.string(),
|
|
90
|
+
success: z.boolean(),
|
|
91
|
+
durationMs: z.number().optional(),
|
|
92
|
+
errorCode: z.string().optional(),
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
// ============================================================================
|
|
96
|
+
// CLEO Internal Event Payload Schemas
|
|
97
|
+
// ============================================================================
|
|
98
|
+
|
|
99
|
+
/** Zod schema for {@link OnWorkAvailablePayload}. */
|
|
100
|
+
export const OnWorkAvailablePayloadSchema = HookPayloadSchema.extend({
|
|
101
|
+
taskIds: z.array(z.string()),
|
|
102
|
+
epicId: z.string().optional(),
|
|
103
|
+
chainId: z.string().optional(),
|
|
104
|
+
reason: z.enum(['dependency-cleared', 'new-task', 'retry', 'manual', 'patrol']).optional(),
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
/** Zod schema for {@link OnAgentSpawnPayload}. */
|
|
108
|
+
export const OnAgentSpawnPayloadSchema = HookPayloadSchema.extend({
|
|
109
|
+
agentId: z.string(),
|
|
110
|
+
role: z.string(),
|
|
111
|
+
adapterId: z.string().optional(),
|
|
112
|
+
taskId: z.string().optional(),
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
/** Zod schema for {@link OnAgentCompletePayload}. */
|
|
116
|
+
export const OnAgentCompletePayloadSchema = HookPayloadSchema.extend({
|
|
117
|
+
agentId: z.string(),
|
|
118
|
+
role: z.string(),
|
|
119
|
+
status: z.enum(['complete', 'partial', 'blocked', 'failed']),
|
|
120
|
+
taskId: z.string().optional(),
|
|
121
|
+
summary: z.string().optional(),
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
/** Zod schema for {@link OnCascadeStartPayload}. */
|
|
125
|
+
export const OnCascadeStartPayloadSchema = HookPayloadSchema.extend({
|
|
126
|
+
cascadeId: z.string(),
|
|
127
|
+
chainId: z.string().optional(),
|
|
128
|
+
tesseraId: z.string().optional(),
|
|
129
|
+
taskIds: z.array(z.string()).optional(),
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
/** Zod schema for {@link OnPatrolPayload}. */
|
|
133
|
+
export const OnPatrolPayloadSchema = HookPayloadSchema.extend({
|
|
134
|
+
watcherId: z.string(),
|
|
135
|
+
patrolType: z.enum(['health', 'sweep', 'refinery', 'watcher', 'custom']),
|
|
136
|
+
scope: z.string().optional(),
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
// ============================================================================
|
|
140
|
+
// Event -> Schema Mapping
|
|
141
|
+
// ============================================================================
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Map from hook event name to its corresponding Zod schema.
|
|
145
|
+
*
|
|
146
|
+
* Used by {@link validatePayload} for runtime dispatch. Events not in
|
|
147
|
+
* this map fall back to the base {@link HookPayloadSchema}.
|
|
148
|
+
*/
|
|
149
|
+
const EVENT_SCHEMA_MAP: Partial<Record<HookEvent, z.ZodType>> = {
|
|
150
|
+
onSessionStart: OnSessionStartPayloadSchema,
|
|
151
|
+
onSessionEnd: OnSessionEndPayloadSchema,
|
|
152
|
+
onToolStart: OnToolStartPayloadSchema,
|
|
153
|
+
onToolComplete: OnToolCompletePayloadSchema,
|
|
154
|
+
onFileChange: OnFileChangePayloadSchema,
|
|
155
|
+
onError: OnErrorPayloadSchema,
|
|
156
|
+
onPromptSubmit: OnPromptSubmitPayloadSchema,
|
|
157
|
+
onResponseComplete: OnResponseCompletePayloadSchema,
|
|
158
|
+
onWorkAvailable: OnWorkAvailablePayloadSchema,
|
|
159
|
+
onAgentSpawn: OnAgentSpawnPayloadSchema,
|
|
160
|
+
onAgentComplete: OnAgentCompletePayloadSchema,
|
|
161
|
+
onCascadeStart: OnCascadeStartPayloadSchema,
|
|
162
|
+
onPatrol: OnPatrolPayloadSchema,
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
// ============================================================================
|
|
166
|
+
// Validator Function
|
|
167
|
+
// ============================================================================
|
|
168
|
+
|
|
169
|
+
/** Result of payload validation. */
|
|
170
|
+
export interface PayloadValidationResult {
|
|
171
|
+
/** Whether the payload passed validation. */
|
|
172
|
+
valid: boolean;
|
|
173
|
+
/** Validation errors (empty when valid). */
|
|
174
|
+
errors: string[];
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Validate a hook payload against its event-specific Zod schema.
|
|
179
|
+
*
|
|
180
|
+
* Falls back to the base {@link HookPayloadSchema} for events without
|
|
181
|
+
* a dedicated schema. Returns a result object rather than throwing,
|
|
182
|
+
* so callers can decide how to handle validation failures.
|
|
183
|
+
*
|
|
184
|
+
* @param event - The hook event name
|
|
185
|
+
* @param payload - The payload to validate
|
|
186
|
+
* @returns Validation result with any error messages
|
|
187
|
+
*/
|
|
188
|
+
export function validatePayload(event: HookEvent, payload: unknown): PayloadValidationResult {
|
|
189
|
+
const schema = EVENT_SCHEMA_MAP[event] ?? HookPayloadSchema;
|
|
190
|
+
const result = schema.safeParse(payload);
|
|
191
|
+
|
|
192
|
+
if (result.success) {
|
|
193
|
+
return { valid: true, errors: [] };
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
const errors = result.error.issues.map((issue) => `${issue.path.join('.')}: ${issue.message}`);
|
|
197
|
+
|
|
198
|
+
return { valid: false, errors };
|
|
199
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -31,12 +31,14 @@ export * from '@cleocode/contracts';
|
|
|
31
31
|
export * as adapters from './adapters/index.js';
|
|
32
32
|
export * as admin from './admin/index.js';
|
|
33
33
|
export * as adrs from './adrs/index.js';
|
|
34
|
+
export * as agents from './agents/index.js';
|
|
34
35
|
export * as caamp from './caamp/index.js';
|
|
35
36
|
export * as codebaseMap from './codebase-map/index.js';
|
|
36
37
|
export * as compliance from './compliance/index.js';
|
|
37
38
|
export * as context from './context/index.js';
|
|
38
39
|
export * as coreHooks from './hooks/index.js';
|
|
39
40
|
export * as inject from './inject/index.js';
|
|
41
|
+
export * as intelligence from './intelligence/index.js';
|
|
40
42
|
export * as issue from './issue/index.js';
|
|
41
43
|
export * as lifecycle from './lifecycle/index.js';
|
|
42
44
|
export * as coreMcp from './mcp/index.js';
|
|
@@ -71,6 +73,73 @@ export * as templates from './templates/index.js';
|
|
|
71
73
|
export * as ui from './ui/index.js';
|
|
72
74
|
export * as validation from './validation/index.js';
|
|
73
75
|
|
|
76
|
+
// ---------------------------------------------------------------------------
|
|
77
|
+
// Canonical Zod enum schemas (flat re-exports for Pattern 3 imports)
|
|
78
|
+
// ---------------------------------------------------------------------------
|
|
79
|
+
|
|
80
|
+
export {
|
|
81
|
+
// Governance enums
|
|
82
|
+
adrStatusSchema,
|
|
83
|
+
// Agent enums
|
|
84
|
+
agentInstanceStatusSchema,
|
|
85
|
+
agentTypeSchema,
|
|
86
|
+
brainConfidenceLevelSchema,
|
|
87
|
+
brainDecisionTypeSchema,
|
|
88
|
+
brainEdgeTypeSchema,
|
|
89
|
+
brainImpactLevelSchema,
|
|
90
|
+
brainLinkTypeSchema,
|
|
91
|
+
brainMemoryTypeSchema,
|
|
92
|
+
brainNodeTypeSchema,
|
|
93
|
+
brainObservationSourceTypeSchema,
|
|
94
|
+
// Brain enums
|
|
95
|
+
brainObservationTypeSchema,
|
|
96
|
+
brainOutcomeTypeSchema,
|
|
97
|
+
brainPatternTypeSchema,
|
|
98
|
+
brainStickyColorSchema,
|
|
99
|
+
brainStickyPrioritySchema,
|
|
100
|
+
brainStickyStatusSchema,
|
|
101
|
+
externalLinkTypeSchema,
|
|
102
|
+
gateStatusSchema,
|
|
103
|
+
insertAgentErrorLogSchema,
|
|
104
|
+
// Agent insert/select schemas
|
|
105
|
+
insertAgentInstanceSchema,
|
|
106
|
+
insertExternalTaskLinkSchema,
|
|
107
|
+
insertPipelineManifestSchema,
|
|
108
|
+
insertReleaseManifestSchema,
|
|
109
|
+
insertSessionSchema,
|
|
110
|
+
// Insert/select schemas
|
|
111
|
+
insertTaskSchema,
|
|
112
|
+
lifecycleEvidenceTypeSchema,
|
|
113
|
+
lifecycleGateResultSchema,
|
|
114
|
+
// Lifecycle enums
|
|
115
|
+
lifecyclePipelineStatusSchema,
|
|
116
|
+
lifecycleStageNameSchema,
|
|
117
|
+
lifecycleStageStatusSchema,
|
|
118
|
+
lifecycleTransitionTypeSchema,
|
|
119
|
+
manifestStatusSchema,
|
|
120
|
+
selectAgentErrorLogSchema,
|
|
121
|
+
selectAgentInstanceSchema,
|
|
122
|
+
selectExternalTaskLinkSchema,
|
|
123
|
+
selectPipelineManifestSchema,
|
|
124
|
+
selectReleaseManifestSchema,
|
|
125
|
+
selectSessionSchema,
|
|
126
|
+
selectTaskSchema,
|
|
127
|
+
// Session enums
|
|
128
|
+
sessionStatusSchema,
|
|
129
|
+
syncDirectionSchema,
|
|
130
|
+
taskPrioritySchema,
|
|
131
|
+
// Relation / link enums
|
|
132
|
+
taskRelationTypeSchema,
|
|
133
|
+
taskSizeSchema,
|
|
134
|
+
// Task enums
|
|
135
|
+
taskStatusSchema,
|
|
136
|
+
taskTypeSchema,
|
|
137
|
+
tokenUsageConfidenceSchema,
|
|
138
|
+
// Token usage enums
|
|
139
|
+
tokenUsageMethodSchema,
|
|
140
|
+
tokenUsageTransportSchema,
|
|
141
|
+
} from './store/validation-schemas.js';
|
|
142
|
+
|
|
74
143
|
// ---------------------------------------------------------------------------
|
|
75
144
|
// Store layer (bundled inside core)
|
|
76
145
|
// ---------------------------------------------------------------------------
|
package/src/inject/index.ts
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* @epic T4454
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
|
-
import type { Task,
|
|
16
|
+
import type { Task, TaskWorkState } from '@cleocode/contracts';
|
|
17
17
|
import type { DataAccessor } from '../store/data-accessor.js';
|
|
18
18
|
import { getAccessor } from '../store/data-accessor.js';
|
|
19
19
|
|
|
@@ -23,23 +23,25 @@ import { getAccessor } from '../store/data-accessor.js';
|
|
|
23
23
|
* @task T4539
|
|
24
24
|
*/
|
|
25
25
|
function selectTasksForInjection(
|
|
26
|
-
|
|
26
|
+
allTasks: Task[],
|
|
27
27
|
opts: {
|
|
28
28
|
maxTasks?: number;
|
|
29
29
|
focusedOnly?: boolean;
|
|
30
30
|
phase?: string;
|
|
31
|
+
focusedTaskId?: string | null;
|
|
32
|
+
currentPhase?: string | null;
|
|
31
33
|
},
|
|
32
34
|
): Task[] {
|
|
33
35
|
const maxTasks = opts.maxTasks ?? 8;
|
|
34
|
-
let tasks =
|
|
36
|
+
let tasks = allTasks.filter((t) => t.status !== 'done');
|
|
35
37
|
|
|
36
38
|
// Filter by focused task
|
|
37
|
-
if (opts.focusedOnly &&
|
|
38
|
-
tasks = tasks.filter((t) => t.id ===
|
|
39
|
+
if (opts.focusedOnly && opts.focusedTaskId) {
|
|
40
|
+
tasks = tasks.filter((t) => t.id === opts.focusedTaskId);
|
|
39
41
|
}
|
|
40
42
|
|
|
41
43
|
// Filter by phase
|
|
42
|
-
const phase = opts.phase ??
|
|
44
|
+
const phase = opts.phase ?? opts.currentPhase ?? undefined;
|
|
43
45
|
if (phase) {
|
|
44
46
|
const phaseTasks = tasks.filter((t) => t.phase === phase);
|
|
45
47
|
if (phaseTasks.length > 0) tasks = phaseTasks;
|
|
@@ -88,15 +90,13 @@ export async function injectTasks(
|
|
|
88
90
|
const acc = accessor ?? (await getAccessor(opts.cwd));
|
|
89
91
|
const { tasks: allTasks } = await acc.queryTasks({});
|
|
90
92
|
const projectMeta = await acc.getMetaValue<{ currentPhase?: string }>('project');
|
|
91
|
-
const focusMeta = await acc.getMetaValue<
|
|
93
|
+
const focusMeta = await acc.getMetaValue<TaskWorkState>('focus_state');
|
|
92
94
|
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
const selectedTasks = selectTasksForInjection(data, opts);
|
|
95
|
+
const selectedTasks = selectTasksForInjection(allTasks, {
|
|
96
|
+
...opts,
|
|
97
|
+
focusedTaskId: focusMeta?.currentTask ?? null,
|
|
98
|
+
currentPhase: projectMeta?.currentPhase ?? null,
|
|
99
|
+
});
|
|
100
100
|
const formatted = formatForInjection(selectedTasks);
|
|
101
101
|
|
|
102
102
|
const phase = opts.phase ?? projectMeta?.currentPhase ?? null;
|