@yattalo/task-system-core 0.1.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 ADDED
@@ -0,0 +1,49 @@
1
+ # @yattalo/task-system-core
2
+
3
+ Shared types, config helpers, and Zod validators for `@yattalo/task-system`.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm install @yattalo/task-system-core
9
+ ```
10
+
11
+ ## API
12
+
13
+ ### `defineConfig(config)`
14
+
15
+ Type-safe configuration builder with defaults.
16
+
17
+ ```ts
18
+ import { defineConfig } from "@yattalo/task-system-core";
19
+
20
+ const config = defineConfig({
21
+ projectName: "my-project",
22
+ agents: { claude: { label: "Claude", icon: "C", color: "#6B5CE7" } },
23
+ categories: ["backend", "frontend"],
24
+ phases: [{ id: "foundation", label: "Foundation", wave: 1 }],
25
+ });
26
+ ```
27
+
28
+ ### `validateConfig(raw)`
29
+
30
+ Validates a `TaskSystemConfig` object using Zod. Throws on invalid input.
31
+
32
+ ### `validateTaskDefinitions(raw)`
33
+
34
+ Validates a `TaskDefinition[]` array using Zod.
35
+
36
+ ### Helper Functions
37
+
38
+ - `getActiveExtensions(config)` - List enabled extension keys
39
+ - `hasSoftwareExtensions(config)` / `hasResearchExtensions(config)` - Boolean checks
40
+ - `getAgentKeys(config)` - Array of agent key strings
41
+ - `getTableName(config)` - Convex table name (default: `"agentTasks"`)
42
+
43
+ ## Types
44
+
45
+ Key exports: `TaskSystemConfig`, `TaskDefinition`, `GeneratorContext`, `ProjectDetection`, `ExtensionsConfig`, `AgentConfig`, `PhaseConfig`.
46
+
47
+ ## License
48
+
49
+ MIT
@@ -0,0 +1,21 @@
1
+ import type { TaskSystemConfig } from "./types.js";
2
+ /**
3
+ * Type-safe config builder. Usage in `task-system.config.ts`:
4
+ *
5
+ * ```ts
6
+ * import { defineConfig } from "@yattalo/task-system-core";
7
+ * export default defineConfig({ ... });
8
+ * ```
9
+ */
10
+ export declare function defineConfig(config: TaskSystemConfig): TaskSystemConfig;
11
+ /** Returns the list of active extension keys */
12
+ export declare function getActiveExtensions(config: TaskSystemConfig): string[];
13
+ /** Check if any software extension is enabled */
14
+ export declare function hasSoftwareExtensions(config: TaskSystemConfig): boolean;
15
+ /** Check if any research extension is enabled */
16
+ export declare function hasResearchExtensions(config: TaskSystemConfig): boolean;
17
+ /** Get the agent keys as array */
18
+ export declare function getAgentKeys(config: TaskSystemConfig): string[];
19
+ /** Get the Convex table name (with default) */
20
+ export declare function getTableName(config: TaskSystemConfig): string;
21
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,gBAAgB,CA8BvE;AAED,gDAAgD;AAChD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAItE;AAED,iDAAiD;AACjD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAGvE;AAED,iDAAiD;AACjD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAQvE;AAED,kCAAkC;AAClC,wBAAgB,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAE/D;AAED,+CAA+C;AAC/C,wBAAgB,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAE7D"}
package/dist/config.js ADDED
@@ -0,0 +1,70 @@
1
+ // ============================================================
2
+ // @yattalo/task-system-core — Config helpers
3
+ // ============================================================
4
+ /**
5
+ * Type-safe config builder. Usage in `task-system.config.ts`:
6
+ *
7
+ * ```ts
8
+ * import { defineConfig } from "@yattalo/task-system-core";
9
+ * export default defineConfig({ ... });
10
+ * ```
11
+ */
12
+ export function defineConfig(config) {
13
+ return {
14
+ tableName: "agentTasks",
15
+ ...config,
16
+ extensions: {
17
+ commitTracking: false,
18
+ scopeCreepDetection: false,
19
+ reviewFindings: false,
20
+ confidenceTracking: false,
21
+ evidenceTracker: false,
22
+ handoffLog: false,
23
+ checkpointLog: false,
24
+ agentOps: false,
25
+ ...config.extensions,
26
+ },
27
+ dashboard: {
28
+ pollingInterval: 5000,
29
+ theme: "dark",
30
+ ...config.dashboard,
31
+ },
32
+ agentOps: {
33
+ pollInterval: 30000,
34
+ maxConcurrentRuns: 3,
35
+ maxRunsPerDay: 100,
36
+ defaultTimeoutMinutes: 30,
37
+ protectedBranches: ["main", "master"],
38
+ agentCommands: {},
39
+ ...config.agentOps,
40
+ },
41
+ };
42
+ }
43
+ /** Returns the list of active extension keys */
44
+ export function getActiveExtensions(config) {
45
+ return Object.entries(config.extensions)
46
+ .filter(([, v]) => v === true)
47
+ .map(([k]) => k);
48
+ }
49
+ /** Check if any software extension is enabled */
50
+ export function hasSoftwareExtensions(config) {
51
+ const ext = config.extensions;
52
+ return !!(ext.commitTracking || ext.scopeCreepDetection || ext.reviewFindings);
53
+ }
54
+ /** Check if any research extension is enabled */
55
+ export function hasResearchExtensions(config) {
56
+ const ext = config.extensions;
57
+ return !!(ext.confidenceTracking ||
58
+ ext.evidenceTracker ||
59
+ ext.handoffLog ||
60
+ ext.checkpointLog);
61
+ }
62
+ /** Get the agent keys as array */
63
+ export function getAgentKeys(config) {
64
+ return Object.keys(config.agents);
65
+ }
66
+ /** Get the Convex table name (with default) */
67
+ export function getTableName(config) {
68
+ return config.tableName ?? "agentTasks";
69
+ }
70
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,6CAA6C;AAC7C,+DAA+D;AAI/D;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,MAAwB;IACnD,OAAO;QACL,SAAS,EAAE,YAAY;QACvB,GAAG,MAAM;QACT,UAAU,EAAE;YACV,cAAc,EAAE,KAAK;YACrB,mBAAmB,EAAE,KAAK;YAC1B,cAAc,EAAE,KAAK;YACrB,kBAAkB,EAAE,KAAK;YACzB,eAAe,EAAE,KAAK;YACtB,UAAU,EAAE,KAAK;YACjB,aAAa,EAAE,KAAK;YACpB,QAAQ,EAAE,KAAK;YACf,GAAG,MAAM,CAAC,UAAU;SACrB;QACD,SAAS,EAAE;YACT,eAAe,EAAE,IAAI;YACrB,KAAK,EAAE,MAAM;YACb,GAAG,MAAM,CAAC,SAAS;SACpB;QACD,QAAQ,EAAE;YACR,YAAY,EAAE,KAAK;YACnB,iBAAiB,EAAE,CAAC;YACpB,aAAa,EAAE,GAAG;YAClB,qBAAqB,EAAE,EAAE;YACzB,iBAAiB,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;YACrC,aAAa,EAAE,EAAE;YACjB,GAAG,MAAM,CAAC,QAAQ;SACnB;KACF,CAAC;AACJ,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,mBAAmB,CAAC,MAAwB;IAC1D,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;SACrC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;SAC7B,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACrB,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,qBAAqB,CAAC,MAAwB;IAC5D,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;IAC9B,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,IAAI,GAAG,CAAC,mBAAmB,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC;AACjF,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,qBAAqB,CAAC,MAAwB;IAC5D,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;IAC9B,OAAO,CAAC,CAAC,CACP,GAAG,CAAC,kBAAkB;QACtB,GAAG,CAAC,eAAe;QACnB,GAAG,CAAC,UAAU;QACd,GAAG,CAAC,aAAa,CAClB,CAAC;AACJ,CAAC;AAED,kCAAkC;AAClC,MAAM,UAAU,YAAY,CAAC,MAAwB;IACnD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,YAAY,CAAC,MAAwB;IACnD,OAAO,MAAM,CAAC,SAAS,IAAI,YAAY,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,5 @@
1
+ export type { TaskStatus, TaskPriority, AgentConfig, AgentType, PhaseConfig, ExtensionsConfig, DashboardConfig, AgentOpsConfig, TaskSystemConfig, TaskDefinition, SyncLogEntry, Blocker, CommitRecord, EvidenceRecord, HandoffRecord, CheckpointEntry, DriftFlag, ScopeCreepFlag, JobStatus, RunStatus, AgentOpsJob, AgentOpsRun, AgentOpsLogEntry, ProjectDetection, GeneratorContext, } from "./types.js";
2
+ export { TASK_STATUSES, TASK_PRIORITIES, JOB_STATUSES, RUN_STATUSES } from "./types.js";
3
+ export { defineConfig, getActiveExtensions, hasSoftwareExtensions, hasResearchExtensions, getAgentKeys, getTableName, } from "./config.js";
4
+ export { taskSystemConfigSchema, taskDefinitionSchema, taskDefinitionsArraySchema, validateConfig, validateTaskDefinitions, } from "./validators.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,YAAY,EACV,UAAU,EACV,YAAY,EACZ,WAAW,EACX,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,OAAO,EACP,YAAY,EACZ,cAAc,EACd,aAAa,EACb,eAAe,EACf,SAAS,EACT,cAAc,EACd,SAAS,EACT,SAAS,EACT,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGxF,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACZ,YAAY,GACb,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,0BAA0B,EAC1B,cAAc,EACd,uBAAuB,GACxB,MAAM,iBAAiB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,10 @@
1
+ // ============================================================
2
+ // @yattalo/task-system-core — Public API
3
+ // ============================================================
4
+ // Constants
5
+ export { TASK_STATUSES, TASK_PRIORITIES, JOB_STATUSES, RUN_STATUSES } from "./types.js";
6
+ // Config helpers
7
+ export { defineConfig, getActiveExtensions, hasSoftwareExtensions, hasResearchExtensions, getAgentKeys, getTableName, } from "./config.js";
8
+ // Validators
9
+ export { taskSystemConfigSchema, taskDefinitionSchema, taskDefinitionsArraySchema, validateConfig, validateTaskDefinitions, } from "./validators.js";
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,yCAAyC;AACzC,+DAA+D;AA+B/D,YAAY;AACZ,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAExF,iBAAiB;AACjB,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACZ,YAAY,GACb,MAAM,aAAa,CAAC;AAErB,aAAa;AACb,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,0BAA0B,EAC1B,cAAc,EACd,uBAAuB,GACxB,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,181 @@
1
+ export declare const TASK_STATUSES: readonly ["backlog", "todo", "in_progress", "blocked", "review", "done", "archived"];
2
+ export type TaskStatus = (typeof TASK_STATUSES)[number];
3
+ export declare const TASK_PRIORITIES: readonly ["critical", "high", "medium", "low"];
4
+ export type TaskPriority = (typeof TASK_PRIORITIES)[number];
5
+ export interface AgentConfig {
6
+ label: string;
7
+ icon: string;
8
+ color: string;
9
+ }
10
+ export type AgentType = string;
11
+ export interface PhaseConfig {
12
+ id: string;
13
+ label: string;
14
+ wave: number;
15
+ }
16
+ export interface ExtensionsConfig {
17
+ commitTracking?: boolean;
18
+ scopeCreepDetection?: boolean;
19
+ reviewFindings?: boolean;
20
+ confidenceTracking?: boolean;
21
+ evidenceTracker?: boolean;
22
+ handoffLog?: boolean;
23
+ checkpointLog?: boolean;
24
+ agentOps?: boolean;
25
+ }
26
+ export interface DashboardConfig {
27
+ pollingInterval?: number;
28
+ theme?: "dark" | "light";
29
+ }
30
+ export interface AgentOpsConfig {
31
+ pollInterval?: number;
32
+ maxConcurrentRuns?: number;
33
+ maxRunsPerDay?: number;
34
+ defaultTimeoutMinutes?: number;
35
+ protectedBranches?: string[];
36
+ agentCommands?: Record<string, string>;
37
+ }
38
+ export interface TaskSystemConfig {
39
+ projectName: string;
40
+ tableName?: string;
41
+ agents: Record<string, AgentConfig>;
42
+ categories: string[];
43
+ phases: PhaseConfig[];
44
+ taskIdPattern: string;
45
+ extensions: ExtensionsConfig;
46
+ dashboard?: DashboardConfig;
47
+ agentOps?: AgentOpsConfig;
48
+ }
49
+ export interface TaskDefinition {
50
+ taskId: string;
51
+ agent: string;
52
+ title: string;
53
+ description: string;
54
+ status?: TaskStatus;
55
+ priority?: TaskPriority;
56
+ category?: string;
57
+ phaseId?: string;
58
+ wave?: number;
59
+ estimatedHours?: number;
60
+ dependencies?: string[];
61
+ tags?: string[];
62
+ acceptanceCriteria?: string[];
63
+ filesExpected?: string[];
64
+ confidenceLevel?: number;
65
+ sourceIds?: string[];
66
+ }
67
+ export interface SyncLogEntry {
68
+ taskId: string;
69
+ source: string;
70
+ action: "created" | "updated" | "skipped";
71
+ timestamp: number;
72
+ delta?: Record<string, unknown>;
73
+ }
74
+ export interface Blocker {
75
+ reason: string;
76
+ resolved: boolean;
77
+ resolvedAt?: number;
78
+ }
79
+ export interface CommitRecord {
80
+ hash: string;
81
+ message: string;
82
+ files: string[];
83
+ agent: string;
84
+ timestamp: number;
85
+ }
86
+ export interface EvidenceRecord {
87
+ claimId: string;
88
+ claim: string;
89
+ sourceIds: string[];
90
+ confidence: number;
91
+ status: "verified" | "unverified" | "disputed" | "retracted";
92
+ verifiedAt?: number;
93
+ notes?: string;
94
+ }
95
+ export interface HandoffRecord {
96
+ fromAgent: string;
97
+ toAgent: string;
98
+ taskId: string;
99
+ context: string;
100
+ artifacts?: string[];
101
+ timestamp: number;
102
+ }
103
+ export interface CheckpointEntry {
104
+ timestamp: number;
105
+ agent: string;
106
+ questionAligned: boolean;
107
+ sourcesRegistered: boolean;
108
+ noUndeclaredAssumptions: boolean;
109
+ notes?: string;
110
+ }
111
+ export interface DriftFlag {
112
+ type: string;
113
+ description: string;
114
+ severity: "low" | "medium" | "high";
115
+ timestamp: number;
116
+ resolved: boolean;
117
+ }
118
+ export interface ScopeCreepFlag {
119
+ description: string;
120
+ severity: "low" | "medium" | "high";
121
+ timestamp: number;
122
+ resolved: boolean;
123
+ }
124
+ export declare const JOB_STATUSES: readonly ["active", "paused", "completed", "failed"];
125
+ export type JobStatus = (typeof JOB_STATUSES)[number];
126
+ export declare const RUN_STATUSES: readonly ["queued", "running", "completed", "failed", "cancelled", "timeout"];
127
+ export type RunStatus = (typeof RUN_STATUSES)[number];
128
+ export interface AgentOpsJob {
129
+ jobId: string;
130
+ name: string;
131
+ description?: string;
132
+ agent: string;
133
+ lane: string;
134
+ schedule?: string;
135
+ taskScope?: string[];
136
+ prompt?: string;
137
+ status: JobStatus;
138
+ maxRetries?: number;
139
+ timeoutMinutes?: number;
140
+ lastRunAt?: number;
141
+ nextRunAt?: number;
142
+ }
143
+ export interface AgentOpsRun {
144
+ runId: string;
145
+ jobId: string;
146
+ agent: string;
147
+ lane: string;
148
+ status: RunStatus;
149
+ startedAt: number;
150
+ completedAt?: number;
151
+ worktreePath?: string;
152
+ branch?: string;
153
+ commitsBefore?: string;
154
+ commitsAfter?: string;
155
+ prUrl?: string;
156
+ logs: AgentOpsLogEntry[];
157
+ error?: string;
158
+ taskIds?: string[];
159
+ }
160
+ export interface AgentOpsLogEntry {
161
+ timestamp: number;
162
+ level: "info" | "warn" | "error" | "debug";
163
+ message: string;
164
+ }
165
+ export interface ProjectDetection {
166
+ hasConvex: boolean;
167
+ hasGit: boolean;
168
+ hasHusky: boolean;
169
+ hasClaude: boolean;
170
+ framework?: "tanstack-start" | "next" | "remix" | "vite" | "unknown";
171
+ packageManager?: "npm" | "pnpm" | "yarn" | "bun";
172
+ convexDir?: string;
173
+ }
174
+ export interface GeneratorContext {
175
+ config: TaskSystemConfig;
176
+ targetDir: string;
177
+ detection: ProjectDetection;
178
+ preset?: "software" | "research";
179
+ dryRun?: boolean;
180
+ }
181
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,30 @@
1
+ // ============================================================
2
+ // @yattalo/task-system-core — Shared Types
3
+ // ============================================================
4
+ // --- Task Status & Priority ---
5
+ export const TASK_STATUSES = [
6
+ "backlog",
7
+ "todo",
8
+ "in_progress",
9
+ "blocked",
10
+ "review",
11
+ "done",
12
+ "archived",
13
+ ];
14
+ export const TASK_PRIORITIES = [
15
+ "critical",
16
+ "high",
17
+ "medium",
18
+ "low",
19
+ ];
20
+ // --- Agent-Ops Types ---
21
+ export const JOB_STATUSES = ["active", "paused", "completed", "failed"];
22
+ export const RUN_STATUSES = [
23
+ "queued",
24
+ "running",
25
+ "completed",
26
+ "failed",
27
+ "cancelled",
28
+ "timeout",
29
+ ];
30
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,2CAA2C;AAC3C,+DAA+D;AAE/D,iCAAiC;AAEjC,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,SAAS;IACT,MAAM;IACN,aAAa;IACb,SAAS;IACT,QAAQ;IACR,MAAM;IACN,UAAU;CACF,CAAC;AAIX,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,UAAU;IACV,MAAM;IACN,QAAQ;IACR,KAAK;CACG,CAAC;AAkLX,0BAA0B;AAE1B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAU,CAAC;AAGjF,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,QAAQ;IACR,SAAS;IACT,WAAW;IACX,QAAQ;IACR,WAAW;IACX,SAAS;CACD,CAAC"}
@@ -0,0 +1,284 @@
1
+ import { z } from "zod";
2
+ export declare const taskSystemConfigSchema: z.ZodObject<{
3
+ projectName: z.ZodString;
4
+ tableName: z.ZodDefault<z.ZodOptional<z.ZodString>>;
5
+ agents: z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodObject<{
6
+ label: z.ZodString;
7
+ icon: z.ZodString;
8
+ color: z.ZodString;
9
+ }, "strip", z.ZodTypeAny, {
10
+ label: string;
11
+ icon: string;
12
+ color: string;
13
+ }, {
14
+ label: string;
15
+ icon: string;
16
+ color: string;
17
+ }>>, Record<string, {
18
+ label: string;
19
+ icon: string;
20
+ color: string;
21
+ }>, Record<string, {
22
+ label: string;
23
+ icon: string;
24
+ color: string;
25
+ }>>;
26
+ categories: z.ZodArray<z.ZodString, "many">;
27
+ phases: z.ZodArray<z.ZodObject<{
28
+ id: z.ZodString;
29
+ label: z.ZodString;
30
+ wave: z.ZodNumber;
31
+ }, "strip", z.ZodTypeAny, {
32
+ label: string;
33
+ id: string;
34
+ wave: number;
35
+ }, {
36
+ label: string;
37
+ id: string;
38
+ wave: number;
39
+ }>, "many">;
40
+ taskIdPattern: z.ZodString;
41
+ extensions: z.ZodObject<{
42
+ commitTracking: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
43
+ scopeCreepDetection: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
44
+ reviewFindings: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
45
+ confidenceTracking: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
46
+ evidenceTracker: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
47
+ handoffLog: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
48
+ checkpointLog: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
49
+ agentOps: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
50
+ }, "strip", z.ZodTypeAny, {
51
+ commitTracking: boolean;
52
+ scopeCreepDetection: boolean;
53
+ reviewFindings: boolean;
54
+ confidenceTracking: boolean;
55
+ evidenceTracker: boolean;
56
+ handoffLog: boolean;
57
+ checkpointLog: boolean;
58
+ agentOps: boolean;
59
+ }, {
60
+ commitTracking?: boolean | undefined;
61
+ scopeCreepDetection?: boolean | undefined;
62
+ reviewFindings?: boolean | undefined;
63
+ confidenceTracking?: boolean | undefined;
64
+ evidenceTracker?: boolean | undefined;
65
+ handoffLog?: boolean | undefined;
66
+ checkpointLog?: boolean | undefined;
67
+ agentOps?: boolean | undefined;
68
+ }>;
69
+ dashboard: z.ZodOptional<z.ZodObject<{
70
+ pollingInterval: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
71
+ theme: z.ZodDefault<z.ZodOptional<z.ZodEnum<["dark", "light"]>>>;
72
+ }, "strip", z.ZodTypeAny, {
73
+ pollingInterval: number;
74
+ theme: "dark" | "light";
75
+ }, {
76
+ pollingInterval?: number | undefined;
77
+ theme?: "dark" | "light" | undefined;
78
+ }>>;
79
+ agentOps: z.ZodOptional<z.ZodObject<{
80
+ pollInterval: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
81
+ maxConcurrentRuns: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
82
+ maxRunsPerDay: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
83
+ defaultTimeoutMinutes: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
84
+ protectedBranches: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
85
+ agentCommands: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>>;
86
+ }, "strip", z.ZodTypeAny, {
87
+ pollInterval: number;
88
+ maxConcurrentRuns: number;
89
+ maxRunsPerDay: number;
90
+ defaultTimeoutMinutes: number;
91
+ protectedBranches: string[];
92
+ agentCommands: Record<string, string>;
93
+ }, {
94
+ pollInterval?: number | undefined;
95
+ maxConcurrentRuns?: number | undefined;
96
+ maxRunsPerDay?: number | undefined;
97
+ defaultTimeoutMinutes?: number | undefined;
98
+ protectedBranches?: string[] | undefined;
99
+ agentCommands?: Record<string, string> | undefined;
100
+ }>>;
101
+ }, "strip", z.ZodTypeAny, {
102
+ projectName: string;
103
+ tableName: string;
104
+ agents: Record<string, {
105
+ label: string;
106
+ icon: string;
107
+ color: string;
108
+ }>;
109
+ categories: string[];
110
+ phases: {
111
+ label: string;
112
+ id: string;
113
+ wave: number;
114
+ }[];
115
+ taskIdPattern: string;
116
+ extensions: {
117
+ commitTracking: boolean;
118
+ scopeCreepDetection: boolean;
119
+ reviewFindings: boolean;
120
+ confidenceTracking: boolean;
121
+ evidenceTracker: boolean;
122
+ handoffLog: boolean;
123
+ checkpointLog: boolean;
124
+ agentOps: boolean;
125
+ };
126
+ agentOps?: {
127
+ pollInterval: number;
128
+ maxConcurrentRuns: number;
129
+ maxRunsPerDay: number;
130
+ defaultTimeoutMinutes: number;
131
+ protectedBranches: string[];
132
+ agentCommands: Record<string, string>;
133
+ } | undefined;
134
+ dashboard?: {
135
+ pollingInterval: number;
136
+ theme: "dark" | "light";
137
+ } | undefined;
138
+ }, {
139
+ projectName: string;
140
+ agents: Record<string, {
141
+ label: string;
142
+ icon: string;
143
+ color: string;
144
+ }>;
145
+ categories: string[];
146
+ phases: {
147
+ label: string;
148
+ id: string;
149
+ wave: number;
150
+ }[];
151
+ taskIdPattern: string;
152
+ extensions: {
153
+ commitTracking?: boolean | undefined;
154
+ scopeCreepDetection?: boolean | undefined;
155
+ reviewFindings?: boolean | undefined;
156
+ confidenceTracking?: boolean | undefined;
157
+ evidenceTracker?: boolean | undefined;
158
+ handoffLog?: boolean | undefined;
159
+ checkpointLog?: boolean | undefined;
160
+ agentOps?: boolean | undefined;
161
+ };
162
+ agentOps?: {
163
+ pollInterval?: number | undefined;
164
+ maxConcurrentRuns?: number | undefined;
165
+ maxRunsPerDay?: number | undefined;
166
+ defaultTimeoutMinutes?: number | undefined;
167
+ protectedBranches?: string[] | undefined;
168
+ agentCommands?: Record<string, string> | undefined;
169
+ } | undefined;
170
+ tableName?: string | undefined;
171
+ dashboard?: {
172
+ pollingInterval?: number | undefined;
173
+ theme?: "dark" | "light" | undefined;
174
+ } | undefined;
175
+ }>;
176
+ export declare const taskDefinitionSchema: z.ZodObject<{
177
+ taskId: z.ZodString;
178
+ agent: z.ZodString;
179
+ title: z.ZodString;
180
+ description: z.ZodString;
181
+ status: z.ZodOptional<z.ZodEnum<["backlog", "todo", "in_progress", "blocked", "review", "done", "archived"]>>;
182
+ priority: z.ZodOptional<z.ZodEnum<["critical", "high", "medium", "low"]>>;
183
+ category: z.ZodOptional<z.ZodString>;
184
+ phaseId: z.ZodOptional<z.ZodString>;
185
+ wave: z.ZodOptional<z.ZodNumber>;
186
+ estimatedHours: z.ZodOptional<z.ZodNumber>;
187
+ dependencies: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
188
+ tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
189
+ acceptanceCriteria: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
190
+ filesExpected: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
191
+ confidenceLevel: z.ZodOptional<z.ZodNumber>;
192
+ sourceIds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
193
+ }, "strip", z.ZodTypeAny, {
194
+ taskId: string;
195
+ agent: string;
196
+ title: string;
197
+ description: string;
198
+ status?: "backlog" | "todo" | "in_progress" | "blocked" | "review" | "done" | "archived" | undefined;
199
+ wave?: number | undefined;
200
+ priority?: "critical" | "high" | "medium" | "low" | undefined;
201
+ category?: string | undefined;
202
+ phaseId?: string | undefined;
203
+ estimatedHours?: number | undefined;
204
+ dependencies?: string[] | undefined;
205
+ tags?: string[] | undefined;
206
+ acceptanceCriteria?: string[] | undefined;
207
+ filesExpected?: string[] | undefined;
208
+ confidenceLevel?: number | undefined;
209
+ sourceIds?: string[] | undefined;
210
+ }, {
211
+ taskId: string;
212
+ agent: string;
213
+ title: string;
214
+ description: string;
215
+ status?: "backlog" | "todo" | "in_progress" | "blocked" | "review" | "done" | "archived" | undefined;
216
+ wave?: number | undefined;
217
+ priority?: "critical" | "high" | "medium" | "low" | undefined;
218
+ category?: string | undefined;
219
+ phaseId?: string | undefined;
220
+ estimatedHours?: number | undefined;
221
+ dependencies?: string[] | undefined;
222
+ tags?: string[] | undefined;
223
+ acceptanceCriteria?: string[] | undefined;
224
+ filesExpected?: string[] | undefined;
225
+ confidenceLevel?: number | undefined;
226
+ sourceIds?: string[] | undefined;
227
+ }>;
228
+ export declare const taskDefinitionsArraySchema: z.ZodArray<z.ZodObject<{
229
+ taskId: z.ZodString;
230
+ agent: z.ZodString;
231
+ title: z.ZodString;
232
+ description: z.ZodString;
233
+ status: z.ZodOptional<z.ZodEnum<["backlog", "todo", "in_progress", "blocked", "review", "done", "archived"]>>;
234
+ priority: z.ZodOptional<z.ZodEnum<["critical", "high", "medium", "low"]>>;
235
+ category: z.ZodOptional<z.ZodString>;
236
+ phaseId: z.ZodOptional<z.ZodString>;
237
+ wave: z.ZodOptional<z.ZodNumber>;
238
+ estimatedHours: z.ZodOptional<z.ZodNumber>;
239
+ dependencies: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
240
+ tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
241
+ acceptanceCriteria: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
242
+ filesExpected: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
243
+ confidenceLevel: z.ZodOptional<z.ZodNumber>;
244
+ sourceIds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
245
+ }, "strip", z.ZodTypeAny, {
246
+ taskId: string;
247
+ agent: string;
248
+ title: string;
249
+ description: string;
250
+ status?: "backlog" | "todo" | "in_progress" | "blocked" | "review" | "done" | "archived" | undefined;
251
+ wave?: number | undefined;
252
+ priority?: "critical" | "high" | "medium" | "low" | undefined;
253
+ category?: string | undefined;
254
+ phaseId?: string | undefined;
255
+ estimatedHours?: number | undefined;
256
+ dependencies?: string[] | undefined;
257
+ tags?: string[] | undefined;
258
+ acceptanceCriteria?: string[] | undefined;
259
+ filesExpected?: string[] | undefined;
260
+ confidenceLevel?: number | undefined;
261
+ sourceIds?: string[] | undefined;
262
+ }, {
263
+ taskId: string;
264
+ agent: string;
265
+ title: string;
266
+ description: string;
267
+ status?: "backlog" | "todo" | "in_progress" | "blocked" | "review" | "done" | "archived" | undefined;
268
+ wave?: number | undefined;
269
+ priority?: "critical" | "high" | "medium" | "low" | undefined;
270
+ category?: string | undefined;
271
+ phaseId?: string | undefined;
272
+ estimatedHours?: number | undefined;
273
+ dependencies?: string[] | undefined;
274
+ tags?: string[] | undefined;
275
+ acceptanceCriteria?: string[] | undefined;
276
+ filesExpected?: string[] | undefined;
277
+ confidenceLevel?: number | undefined;
278
+ sourceIds?: string[] | undefined;
279
+ }>, "many">;
280
+ /** Validate and return parsed config, or throw with readable errors */
281
+ export declare function validateConfig(raw: unknown): z.infer<typeof taskSystemConfigSchema>;
282
+ /** Validate task definitions array */
283
+ export declare function validateTaskDefinitions(raw: unknown): z.infer<typeof taskDefinitionsArraySchema>;
284
+ //# sourceMappingURL=validators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAwCxB,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmBjC,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiB/B,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAAgC,CAAC;AAExE,uEAAuE;AACvE,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAEnF;AAED,sCAAsC;AACtC,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,OAAO,GACX,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAE5C"}
@@ -0,0 +1,82 @@
1
+ // ============================================================
2
+ // @yattalo/task-system-core — Zod Validators
3
+ // ============================================================
4
+ import { z } from "zod";
5
+ import { TASK_STATUSES, TASK_PRIORITIES } from "./types.js";
6
+ const agentConfigSchema = z.object({
7
+ label: z.string().min(1),
8
+ icon: z.string().min(1).max(3),
9
+ color: z.string().regex(/^#[0-9a-fA-F]{6}$/),
10
+ });
11
+ const phaseConfigSchema = z.object({
12
+ id: z.string().min(1).regex(/^[a-z][a-z0-9_-]*$/),
13
+ label: z.string().min(1),
14
+ wave: z.number().int().positive(),
15
+ });
16
+ const extensionsSchema = z.object({
17
+ commitTracking: z.boolean().optional().default(false),
18
+ scopeCreepDetection: z.boolean().optional().default(false),
19
+ reviewFindings: z.boolean().optional().default(false),
20
+ confidenceTracking: z.boolean().optional().default(false),
21
+ evidenceTracker: z.boolean().optional().default(false),
22
+ handoffLog: z.boolean().optional().default(false),
23
+ checkpointLog: z.boolean().optional().default(false),
24
+ agentOps: z.boolean().optional().default(false),
25
+ });
26
+ const dashboardSchema = z.object({
27
+ pollingInterval: z.number().int().min(1000).optional().default(5000),
28
+ theme: z.enum(["dark", "light"]).optional().default("dark"),
29
+ });
30
+ const agentOpsSchema = z.object({
31
+ pollInterval: z.number().int().min(5000).optional().default(30000),
32
+ maxConcurrentRuns: z.number().int().min(1).max(10).optional().default(3),
33
+ maxRunsPerDay: z.number().int().min(1).optional().default(100),
34
+ defaultTimeoutMinutes: z.number().int().min(1).optional().default(30),
35
+ protectedBranches: z.array(z.string()).optional().default(["main", "master"]),
36
+ agentCommands: z.record(z.string(), z.string()).optional().default({}),
37
+ });
38
+ export const taskSystemConfigSchema = z.object({
39
+ projectName: z.string().min(1),
40
+ tableName: z
41
+ .string()
42
+ .regex(/^[a-zA-Z][a-zA-Z0-9_]*$/)
43
+ .optional()
44
+ .default("agentTasks"),
45
+ agents: z.record(z.string().min(1), agentConfigSchema).refine((agents) => Object.keys(agents).length >= 1, { message: "At least one agent is required" }),
46
+ categories: z
47
+ .array(z.string().min(1))
48
+ .min(1, "At least one category is required"),
49
+ phases: z.array(phaseConfigSchema).min(1, "At least one phase is required"),
50
+ taskIdPattern: z.string().min(1),
51
+ extensions: extensionsSchema,
52
+ dashboard: dashboardSchema.optional(),
53
+ agentOps: agentOpsSchema.optional(),
54
+ });
55
+ export const taskDefinitionSchema = z.object({
56
+ taskId: z.string().min(1),
57
+ agent: z.string().min(1),
58
+ title: z.string().min(1),
59
+ description: z.string(),
60
+ status: z.enum(TASK_STATUSES).optional(),
61
+ priority: z.enum(TASK_PRIORITIES).optional(),
62
+ category: z.string().optional(),
63
+ phaseId: z.string().optional(),
64
+ wave: z.number().int().optional(),
65
+ estimatedHours: z.number().positive().optional(),
66
+ dependencies: z.array(z.string()).optional(),
67
+ tags: z.array(z.string()).optional(),
68
+ acceptanceCriteria: z.array(z.string()).optional(),
69
+ filesExpected: z.array(z.string()).optional(),
70
+ confidenceLevel: z.number().int().min(0).max(5).optional(),
71
+ sourceIds: z.array(z.string()).optional(),
72
+ });
73
+ export const taskDefinitionsArraySchema = z.array(taskDefinitionSchema);
74
+ /** Validate and return parsed config, or throw with readable errors */
75
+ export function validateConfig(raw) {
76
+ return taskSystemConfigSchema.parse(raw);
77
+ }
78
+ /** Validate task definitions array */
79
+ export function validateTaskDefinitions(raw) {
80
+ return taskDefinitionsArraySchema.parse(raw);
81
+ }
82
+ //# sourceMappingURL=validators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,33 @@
1
+ {
2
+ "name": "@yattalo/task-system-core",
3
+ "version": "0.1.0",
4
+ "description": "Shared types and config for @yattalo/task-system",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ }
13
+ },
14
+ "scripts": {
15
+ "build": "tsc",
16
+ "dev": "tsc --watch",
17
+ "clean": "rm -rf dist"
18
+ },
19
+ "dependencies": {
20
+ "zod": "^3.23.0"
21
+ },
22
+ "devDependencies": {
23
+ "typescript": "^5.7.0"
24
+ },
25
+ "files": ["dist"],
26
+ "license": "MIT",
27
+ "repository": {
28
+ "type": "git",
29
+ "url": "https://github.com/yattalo/task-system.git",
30
+ "directory": "packages/core"
31
+ },
32
+ "keywords": ["convex", "task-system", "multi-agent", "types", "validators", "zod"]
33
+ }