@cleocode/cleo 2026.2.8 → 2026.3.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 +14 -13
- package/dist/cli/index.js +22676 -26012
- package/dist/cli/index.js.map +4 -4
- package/dist/mcp/index.js +1651 -802
- package/dist/mcp/index.js.map +4 -4
- package/drizzle/20260301053344_careless_changeling/migration.sql +27 -0
- package/drizzle/20260301053344_careless_changeling/snapshot.json +2598 -0
- package/package.json +3 -4
- package/packages/ct-skills/skills/ct-cleo/SKILL.md +49 -22
- package/templates/CLEO-INJECTION.md +32 -138
- package/templates/cleo-gitignore +66 -49
- package/templates/git-hooks/pre-commit +24 -6
- package/schemas/archive/agent-configs.schema.json +0 -120
- package/schemas/archive/agent-registry.schema.json +0 -132
- package/schemas/archive/archive.schema.json +0 -450
- package/schemas/archive/claudedocs-frontmatter.schema.json +0 -162
- package/schemas/archive/commands-index.schema.json +0 -158
- package/schemas/archive/contribution.schema.json +0 -722
- package/schemas/archive/critical-path.schema.json +0 -246
- package/schemas/archive/deps-cache.schema.json +0 -97
- package/schemas/archive/doctor-output.schema.json +0 -283
- package/schemas/archive/error.schema.json +0 -161
- package/schemas/archive/export-package.schema.json +0 -375
- package/schemas/archive/global-config.schema.json +0 -219
- package/schemas/archive/log.schema.json +0 -250
- package/schemas/archive/metrics.schema.json +0 -328
- package/schemas/archive/migrations.schema.json +0 -150
- package/schemas/archive/nexus-registry.schema.json +0 -90
- package/schemas/archive/output.schema.json +0 -164
- package/schemas/archive/rcsd-consensus-report.schema.json +0 -491
- package/schemas/archive/rcsd-hitl-resolution.schema.json +0 -216
- package/schemas/archive/rcsd-index.schema.json +0 -384
- package/schemas/archive/rcsd-manifest.schema.json +0 -264
- package/schemas/archive/rcsd-research-output.schema.json +0 -564
- package/schemas/archive/rcsd-spec-frontmatter.schema.json +0 -225
- package/schemas/archive/releases.schema.json +0 -267
- package/schemas/archive/skills-manifest.schema.json +0 -91
- package/schemas/archive/skillsmp.schema.json +0 -208
- package/schemas/archive/spec-index.schema.json +0 -196
- package/schemas/archive/todo.schema.json +0 -995
- package/schemas/claudedocs-frontmatter.schema.json +0 -162
- package/schemas/commands-index.schema.json +0 -158
- package/schemas/rcsd-consensus-report.schema.json +0 -494
- package/schemas/rcsd-hitl-resolution.schema.json +0 -219
- package/schemas/rcsd-index.schema.json +0 -387
- package/schemas/rcsd-manifest.schema.json +0 -267
- package/schemas/rcsd-research-output.schema.json +0 -567
- package/schemas/rcsd-spec-frontmatter.schema.json +0 -225
- package/schemas/todo.schema.json +0 -994
- package/skills/_shared/cleo-style-guide.md +0 -84
- package/skills/_shared/manifest-operations.md +0 -810
- package/skills/_shared/placeholders.json +0 -433
- package/skills/_shared/skill-chaining-patterns.md +0 -240
- package/skills/_shared/subagent-protocol-base.md +0 -221
- package/skills/_shared/task-system-integration.md +0 -232
- package/skills/_shared/testing-framework-config.md +0 -110
- package/skills/agentskills-integrate.md +0 -104
- package/skills/agentskills-specs.md +0 -255
- package/skills/agentskills-what-are-skills.md +0 -75
- package/skills/manifest.json +0 -510
- package/templates/AGENT-INJECTION.md +0 -166
- /package/schemas/{research-manifest.schema.json → archive/research-manifest.schema.json} +0 -0
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "https://cleo-dev.com/schemas/v1/agent-registry.schema.json",
|
|
4
|
-
"title": "CLEO Agent Registry Schema",
|
|
5
|
-
"description": "Unified registry for LLM coding agent configurations, paths, and capabilities",
|
|
6
|
-
"type": "object",
|
|
7
|
-
"required": ["schemaVersion", "lastUpdated", "agents"],
|
|
8
|
-
"properties": {
|
|
9
|
-
"schemaVersion": {
|
|
10
|
-
"type": "string",
|
|
11
|
-
"pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$",
|
|
12
|
-
"description": "Semantic version of this schema"
|
|
13
|
-
},
|
|
14
|
-
"lastUpdated": {
|
|
15
|
-
"type": "string",
|
|
16
|
-
"format": "date",
|
|
17
|
-
"description": "Last update date (ISO 8601)"
|
|
18
|
-
},
|
|
19
|
-
"agents": {
|
|
20
|
-
"type": "object",
|
|
21
|
-
"description": "Map of agent ID to configuration",
|
|
22
|
-
"additionalProperties": {
|
|
23
|
-
"$ref": "#/$defs/agentConfig"
|
|
24
|
-
}
|
|
25
|
-
},
|
|
26
|
-
"instructionFileMap": {
|
|
27
|
-
"type": "object",
|
|
28
|
-
"description": "Map of instruction file names to list of agents using them",
|
|
29
|
-
"additionalProperties": {
|
|
30
|
-
"type": "array",
|
|
31
|
-
"items": { "type": "string" }
|
|
32
|
-
}
|
|
33
|
-
},
|
|
34
|
-
"priorityTiers": {
|
|
35
|
-
"type": "object",
|
|
36
|
-
"description": "Agent groupings by priority tier",
|
|
37
|
-
"properties": {
|
|
38
|
-
"tier1": {
|
|
39
|
-
"type": "array",
|
|
40
|
-
"items": { "type": "string" },
|
|
41
|
-
"description": "High priority - primary agents"
|
|
42
|
-
},
|
|
43
|
-
"tier2": {
|
|
44
|
-
"type": "array",
|
|
45
|
-
"items": { "type": "string" },
|
|
46
|
-
"description": "Medium priority - secondary agents"
|
|
47
|
-
},
|
|
48
|
-
"tier3": {
|
|
49
|
-
"type": "array",
|
|
50
|
-
"items": { "type": "string" },
|
|
51
|
-
"description": "Low priority - emerging agents"
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
},
|
|
56
|
-
"$defs": {
|
|
57
|
-
"agentConfig": {
|
|
58
|
-
"type": "object",
|
|
59
|
-
"required": ["id", "displayName", "globalDir", "instructionFile", "skillsDir", "priority"],
|
|
60
|
-
"properties": {
|
|
61
|
-
"id": {
|
|
62
|
-
"type": "string",
|
|
63
|
-
"pattern": "^[a-z][a-z0-9-]*$",
|
|
64
|
-
"description": "Unique agent identifier (lowercase, hyphenated)"
|
|
65
|
-
},
|
|
66
|
-
"displayName": {
|
|
67
|
-
"type": "string",
|
|
68
|
-
"description": "Human-readable display name"
|
|
69
|
-
},
|
|
70
|
-
"vendor": {
|
|
71
|
-
"type": "string",
|
|
72
|
-
"description": "Company/organization behind the agent"
|
|
73
|
-
},
|
|
74
|
-
"globalDir": {
|
|
75
|
-
"type": "string",
|
|
76
|
-
"description": "Global configuration directory path (use $HOME for home dir)"
|
|
77
|
-
},
|
|
78
|
-
"projectDir": {
|
|
79
|
-
"type": "string",
|
|
80
|
-
"description": "Project-level configuration directory (relative to project root)"
|
|
81
|
-
},
|
|
82
|
-
"instructionFile": {
|
|
83
|
-
"type": "string",
|
|
84
|
-
"description": "Instruction/configuration markdown file name"
|
|
85
|
-
},
|
|
86
|
-
"skillsDir": {
|
|
87
|
-
"type": "string",
|
|
88
|
-
"description": "Skills directory path relative to globalDir"
|
|
89
|
-
},
|
|
90
|
-
"projectSkillsDir": {
|
|
91
|
-
"type": "string",
|
|
92
|
-
"description": "Project-level skills directory (relative to project root)"
|
|
93
|
-
},
|
|
94
|
-
"priority": {
|
|
95
|
-
"type": "string",
|
|
96
|
-
"enum": ["high", "medium", "low"],
|
|
97
|
-
"description": "Agent priority tier for CLEO support"
|
|
98
|
-
},
|
|
99
|
-
"status": {
|
|
100
|
-
"type": "string",
|
|
101
|
-
"enum": ["active", "beta", "deprecated", "planned"],
|
|
102
|
-
"default": "active",
|
|
103
|
-
"description": "Support status"
|
|
104
|
-
},
|
|
105
|
-
"cliDetection": {
|
|
106
|
-
"type": "object",
|
|
107
|
-
"description": "How to detect if agent CLI is installed",
|
|
108
|
-
"properties": {
|
|
109
|
-
"method": {
|
|
110
|
-
"type": "string",
|
|
111
|
-
"enum": ["directory", "command", "file"],
|
|
112
|
-
"description": "Detection method"
|
|
113
|
-
},
|
|
114
|
-
"check": {
|
|
115
|
-
"type": "string",
|
|
116
|
-
"description": "Path, command, or file to check"
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
},
|
|
120
|
-
"agentSkillsCompatible": {
|
|
121
|
-
"type": "boolean",
|
|
122
|
-
"default": false,
|
|
123
|
-
"description": "Whether agent is compatible with vercel-labs/add-skill"
|
|
124
|
-
},
|
|
125
|
-
"notes": {
|
|
126
|
-
"type": "string",
|
|
127
|
-
"description": "Additional notes about this agent"
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
}
|
|
@@ -1,450 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
-
"$id": "https://cleo-dev.com/schemas/v3.1/archive.schema.json",
|
|
4
|
-
"schemaVersion": "2.4.0",
|
|
5
|
-
"title": "CLEO Archive Schema",
|
|
6
|
-
"description": "LEGACY: Documents the JSON file format. Runtime validation uses drizzle-zod (src/store/validation-schemas.ts). Archived tasks use the tasks table with status='archived'.",
|
|
7
|
-
"type": "object",
|
|
8
|
-
"required": [
|
|
9
|
-
"version",
|
|
10
|
-
"project",
|
|
11
|
-
"archivedTasks",
|
|
12
|
-
"_meta"
|
|
13
|
-
],
|
|
14
|
-
"additionalProperties": false,
|
|
15
|
-
"properties": {
|
|
16
|
-
"version": {
|
|
17
|
-
"type": "string",
|
|
18
|
-
"pattern": "^\\d+\\.\\d+\\.\\d+$",
|
|
19
|
-
"description": "Legacy schema version field (deprecated, use _meta.schemaVersion)"
|
|
20
|
-
},
|
|
21
|
-
"project": {
|
|
22
|
-
"type": "string",
|
|
23
|
-
"description": "Project identifier. Must match todo.json project."
|
|
24
|
-
},
|
|
25
|
-
"_meta": {
|
|
26
|
-
"type": "object",
|
|
27
|
-
"required": [
|
|
28
|
-
"schemaVersion",
|
|
29
|
-
"totalArchived",
|
|
30
|
-
"lastArchived"
|
|
31
|
-
],
|
|
32
|
-
"additionalProperties": false,
|
|
33
|
-
"properties": {
|
|
34
|
-
"schemaVersion": {
|
|
35
|
-
"type": "string",
|
|
36
|
-
"pattern": "^\\d+\\.\\d+\\.\\d+$",
|
|
37
|
-
"description": "Schema version for this file (semver). Canonical source for schema version (replaces root version field)."
|
|
38
|
-
},
|
|
39
|
-
"totalArchived": {
|
|
40
|
-
"type": "integer",
|
|
41
|
-
"minimum": 0,
|
|
42
|
-
"description": "Total count of archived tasks."
|
|
43
|
-
},
|
|
44
|
-
"lastArchived": {
|
|
45
|
-
"type": [
|
|
46
|
-
"string",
|
|
47
|
-
"null"
|
|
48
|
-
],
|
|
49
|
-
"format": "date-time",
|
|
50
|
-
"description": "Timestamp of most recent archival operation."
|
|
51
|
-
},
|
|
52
|
-
"oldestTask": {
|
|
53
|
-
"type": [
|
|
54
|
-
"string",
|
|
55
|
-
"null"
|
|
56
|
-
],
|
|
57
|
-
"format": "date-time",
|
|
58
|
-
"description": "Completion date of oldest archived task."
|
|
59
|
-
},
|
|
60
|
-
"newestTask": {
|
|
61
|
-
"type": [
|
|
62
|
-
"string",
|
|
63
|
-
"null"
|
|
64
|
-
],
|
|
65
|
-
"format": "date-time",
|
|
66
|
-
"description": "Completion date of newest archived task."
|
|
67
|
-
},
|
|
68
|
-
"lastUnarchived": {
|
|
69
|
-
"type": [
|
|
70
|
-
"string",
|
|
71
|
-
"null"
|
|
72
|
-
],
|
|
73
|
-
"format": "date-time",
|
|
74
|
-
"description": "Timestamp of most recent unarchive/restore operation."
|
|
75
|
-
},
|
|
76
|
-
"totalUnarchived": {
|
|
77
|
-
"type": "integer",
|
|
78
|
-
"minimum": 0,
|
|
79
|
-
"default": 0,
|
|
80
|
-
"description": "Total count of tasks restored from archive."
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
},
|
|
84
|
-
"archivedTasks": {
|
|
85
|
-
"type": "array",
|
|
86
|
-
"description": "Completed tasks moved from todo.json. IMMUTABLE after archival.",
|
|
87
|
-
"items": {
|
|
88
|
-
"$ref": "#/definitions/archivedTask"
|
|
89
|
-
}
|
|
90
|
-
},
|
|
91
|
-
"phaseSummary": {
|
|
92
|
-
"type": "object",
|
|
93
|
-
"description": "Aggregated phase completion statistics from archived tasks.",
|
|
94
|
-
"patternProperties": {
|
|
95
|
-
"^[a-z][a-z0-9-]*$": {
|
|
96
|
-
"type": "object",
|
|
97
|
-
"properties": {
|
|
98
|
-
"totalTasks": {
|
|
99
|
-
"type": "integer",
|
|
100
|
-
"minimum": 0,
|
|
101
|
-
"description": "Total tasks archived from this phase."
|
|
102
|
-
},
|
|
103
|
-
"firstCompleted": {
|
|
104
|
-
"type": [
|
|
105
|
-
"string",
|
|
106
|
-
"null"
|
|
107
|
-
],
|
|
108
|
-
"format": "date-time",
|
|
109
|
-
"description": "Earliest completion timestamp in this phase."
|
|
110
|
-
},
|
|
111
|
-
"lastCompleted": {
|
|
112
|
-
"type": [
|
|
113
|
-
"string",
|
|
114
|
-
"null"
|
|
115
|
-
],
|
|
116
|
-
"format": "date-time",
|
|
117
|
-
"description": "Latest completion timestamp in this phase."
|
|
118
|
-
}
|
|
119
|
-
},
|
|
120
|
-
"additionalProperties": false
|
|
121
|
-
}
|
|
122
|
-
},
|
|
123
|
-
"additionalProperties": false
|
|
124
|
-
},
|
|
125
|
-
"statistics": {
|
|
126
|
-
"type": "object",
|
|
127
|
-
"description": "Computed statistics. Regenerate on archive operations.",
|
|
128
|
-
"properties": {
|
|
129
|
-
"cancelled": {
|
|
130
|
-
"type": "integer",
|
|
131
|
-
"minimum": 0,
|
|
132
|
-
"default": 0,
|
|
133
|
-
"description": "Total count of cancelled tasks archived."
|
|
134
|
-
},
|
|
135
|
-
"byPhase": {
|
|
136
|
-
"type": "object",
|
|
137
|
-
"description": "Task counts by phase.",
|
|
138
|
-
"patternProperties": {
|
|
139
|
-
"^[a-z][a-z0-9-]*$": {
|
|
140
|
-
"type": "integer"
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
},
|
|
144
|
-
"byPriority": {
|
|
145
|
-
"type": "object",
|
|
146
|
-
"description": "Task counts by priority.",
|
|
147
|
-
"properties": {
|
|
148
|
-
"critical": {
|
|
149
|
-
"type": "integer"
|
|
150
|
-
},
|
|
151
|
-
"high": {
|
|
152
|
-
"type": "integer"
|
|
153
|
-
},
|
|
154
|
-
"medium": {
|
|
155
|
-
"type": "integer"
|
|
156
|
-
},
|
|
157
|
-
"low": {
|
|
158
|
-
"type": "integer"
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
},
|
|
162
|
-
"byLabel": {
|
|
163
|
-
"type": "object",
|
|
164
|
-
"description": "Task counts by label.",
|
|
165
|
-
"patternProperties": {
|
|
166
|
-
"^[a-z][a-z0-9-]*$": {
|
|
167
|
-
"type": "integer"
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
},
|
|
171
|
-
"averageCycleTime": {
|
|
172
|
-
"type": [
|
|
173
|
-
"number",
|
|
174
|
-
"null"
|
|
175
|
-
],
|
|
176
|
-
"description": "Average days from creation to completion."
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
},
|
|
181
|
-
"definitions": {
|
|
182
|
-
"archivedTask": {
|
|
183
|
-
"type": "object",
|
|
184
|
-
"required": [
|
|
185
|
-
"id",
|
|
186
|
-
"title",
|
|
187
|
-
"status",
|
|
188
|
-
"priority",
|
|
189
|
-
"createdAt",
|
|
190
|
-
"completedAt",
|
|
191
|
-
"_archive"
|
|
192
|
-
],
|
|
193
|
-
"additionalProperties": false,
|
|
194
|
-
"description": "Archived task with original data plus archive metadata.",
|
|
195
|
-
"properties": {
|
|
196
|
-
"id": {
|
|
197
|
-
"type": "string",
|
|
198
|
-
"pattern": "^T\\d{3,}$"
|
|
199
|
-
},
|
|
200
|
-
"title": {
|
|
201
|
-
"type": "string"
|
|
202
|
-
},
|
|
203
|
-
"status": {
|
|
204
|
-
"type": "string",
|
|
205
|
-
"enum": [
|
|
206
|
-
"done",
|
|
207
|
-
"cancelled"
|
|
208
|
-
]
|
|
209
|
-
},
|
|
210
|
-
"priority": {
|
|
211
|
-
"type": "string",
|
|
212
|
-
"enum": [
|
|
213
|
-
"critical",
|
|
214
|
-
"high",
|
|
215
|
-
"medium",
|
|
216
|
-
"low"
|
|
217
|
-
]
|
|
218
|
-
},
|
|
219
|
-
"phase": {
|
|
220
|
-
"type": "string"
|
|
221
|
-
},
|
|
222
|
-
"description": {
|
|
223
|
-
"type": "string"
|
|
224
|
-
},
|
|
225
|
-
"files": {
|
|
226
|
-
"type": "array",
|
|
227
|
-
"items": {
|
|
228
|
-
"type": "string"
|
|
229
|
-
}
|
|
230
|
-
},
|
|
231
|
-
"acceptance": {
|
|
232
|
-
"type": "array",
|
|
233
|
-
"items": {
|
|
234
|
-
"type": "string"
|
|
235
|
-
}
|
|
236
|
-
},
|
|
237
|
-
"depends": {
|
|
238
|
-
"type": "array",
|
|
239
|
-
"items": {
|
|
240
|
-
"type": "string"
|
|
241
|
-
}
|
|
242
|
-
},
|
|
243
|
-
"notes": {
|
|
244
|
-
"type": "array",
|
|
245
|
-
"items": {
|
|
246
|
-
"type": "string"
|
|
247
|
-
}
|
|
248
|
-
},
|
|
249
|
-
"labels": {
|
|
250
|
-
"type": "array",
|
|
251
|
-
"items": {
|
|
252
|
-
"type": "string"
|
|
253
|
-
}
|
|
254
|
-
},
|
|
255
|
-
"createdAt": {
|
|
256
|
-
"type": "string",
|
|
257
|
-
"format": "date-time"
|
|
258
|
-
},
|
|
259
|
-
"completedAt": {
|
|
260
|
-
"type": "string",
|
|
261
|
-
"format": "date-time"
|
|
262
|
-
},
|
|
263
|
-
"cancelledAt": {
|
|
264
|
-
"type": "string",
|
|
265
|
-
"format": "date-time"
|
|
266
|
-
},
|
|
267
|
-
"cancellationReason": {
|
|
268
|
-
"type": "string",
|
|
269
|
-
"minLength": 5,
|
|
270
|
-
"maxLength": 300,
|
|
271
|
-
"pattern": "^[^`$;|&<>]*$"
|
|
272
|
-
},
|
|
273
|
-
"_archive": {
|
|
274
|
-
"type": "object",
|
|
275
|
-
"required": [
|
|
276
|
-
"archivedAt",
|
|
277
|
-
"reason"
|
|
278
|
-
],
|
|
279
|
-
"additionalProperties": false,
|
|
280
|
-
"description": "Archive metadata added during archival.",
|
|
281
|
-
"properties": {
|
|
282
|
-
"archivedAt": {
|
|
283
|
-
"type": "string",
|
|
284
|
-
"format": "date-time",
|
|
285
|
-
"description": "When this task was archived."
|
|
286
|
-
},
|
|
287
|
-
"reason": {
|
|
288
|
-
"type": "string",
|
|
289
|
-
"enum": [
|
|
290
|
-
"auto",
|
|
291
|
-
"manual",
|
|
292
|
-
"stale",
|
|
293
|
-
"force",
|
|
294
|
-
"cascade",
|
|
295
|
-
"phase-complete",
|
|
296
|
-
"label-policy",
|
|
297
|
-
"cancelled"
|
|
298
|
-
],
|
|
299
|
-
"description": "Archival trigger: auto=config rules, manual=user request, stale=exceeded retention, force=forced archive, cascade=parent archived, phase-complete=phase finished, label-policy=label rule matched, cancelled=task was cancelled/soft-deleted."
|
|
300
|
-
},
|
|
301
|
-
"sessionId": {
|
|
302
|
-
"type": "string",
|
|
303
|
-
"description": "Session that performed the archival."
|
|
304
|
-
},
|
|
305
|
-
"cycleTimeDays": {
|
|
306
|
-
"type": "number",
|
|
307
|
-
"description": "Days from creation to completion."
|
|
308
|
-
},
|
|
309
|
-
"archiveSource": {
|
|
310
|
-
"type": "string",
|
|
311
|
-
"enum": [
|
|
312
|
-
"auto",
|
|
313
|
-
"manual",
|
|
314
|
-
"force",
|
|
315
|
-
"all",
|
|
316
|
-
"cascade",
|
|
317
|
-
"phase-trigger",
|
|
318
|
-
"unarchive-restore"
|
|
319
|
-
],
|
|
320
|
-
"description": "How the archive operation was initiated: auto=automatic config rules, manual=user-initiated single task, force=forced regardless of state, all=bulk archive all eligible, cascade=triggered by parent archive, phase-trigger=phase completion triggered, unarchive-restore=metadata preserved from restore operation."
|
|
321
|
-
},
|
|
322
|
-
"triggerDetails": {
|
|
323
|
-
"type": "object",
|
|
324
|
-
"additionalProperties": false,
|
|
325
|
-
"description": "Details about what triggered the archive operation.",
|
|
326
|
-
"properties": {
|
|
327
|
-
"phase": {
|
|
328
|
-
"type": "string",
|
|
329
|
-
"description": "Phase that triggered the archive (if phase-triggered)."
|
|
330
|
-
},
|
|
331
|
-
"parentId": {
|
|
332
|
-
"type": "string",
|
|
333
|
-
"pattern": "^T\\d{3,}$",
|
|
334
|
-
"description": "Parent task ID that triggered cascade archive."
|
|
335
|
-
},
|
|
336
|
-
"configRule": {
|
|
337
|
-
"type": "string",
|
|
338
|
-
"description": "Name or identifier of the config rule that matched."
|
|
339
|
-
},
|
|
340
|
-
"labelPolicy": {
|
|
341
|
-
"type": "string",
|
|
342
|
-
"description": "Label policy name that triggered the archive."
|
|
343
|
-
}
|
|
344
|
-
}
|
|
345
|
-
},
|
|
346
|
-
"relationshipState": {
|
|
347
|
-
"type": "object",
|
|
348
|
-
"additionalProperties": false,
|
|
349
|
-
"description": "State of task relationships at archive time for restoration.",
|
|
350
|
-
"properties": {
|
|
351
|
-
"hadChildren": {
|
|
352
|
-
"type": "boolean",
|
|
353
|
-
"description": "Whether this task had child tasks at archive time."
|
|
354
|
-
},
|
|
355
|
-
"childIds": {
|
|
356
|
-
"type": "array",
|
|
357
|
-
"items": {
|
|
358
|
-
"type": "string",
|
|
359
|
-
"pattern": "^T\\d{3,}$"
|
|
360
|
-
},
|
|
361
|
-
"description": "IDs of child tasks that were archived with this task."
|
|
362
|
-
},
|
|
363
|
-
"hadDependents": {
|
|
364
|
-
"type": "boolean",
|
|
365
|
-
"description": "Whether other tasks depended on this task at archive time."
|
|
366
|
-
},
|
|
367
|
-
"dependentIds": {
|
|
368
|
-
"type": "array",
|
|
369
|
-
"items": {
|
|
370
|
-
"type": "string",
|
|
371
|
-
"pattern": "^T\\d{3,}$"
|
|
372
|
-
},
|
|
373
|
-
"description": "IDs of tasks that depended on this task."
|
|
374
|
-
},
|
|
375
|
-
"parentId": {
|
|
376
|
-
"type": [
|
|
377
|
-
"string",
|
|
378
|
-
"null"
|
|
379
|
-
],
|
|
380
|
-
"pattern": "^T\\d{3,}$",
|
|
381
|
-
"description": "Parent task ID if this was a child task, null if root."
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
},
|
|
385
|
-
"restoreInfo": {
|
|
386
|
-
"type": "object",
|
|
387
|
-
"additionalProperties": false,
|
|
388
|
-
"description": "Information for potential restoration of this task.",
|
|
389
|
-
"properties": {
|
|
390
|
-
"originalStatus": {
|
|
391
|
-
"type": "string",
|
|
392
|
-
"enum": [
|
|
393
|
-
"pending",
|
|
394
|
-
"active",
|
|
395
|
-
"blocked",
|
|
396
|
-
"done"
|
|
397
|
-
],
|
|
398
|
-
"description": "Task status before it was completed (for restoration context)."
|
|
399
|
-
},
|
|
400
|
-
"canRestore": {
|
|
401
|
-
"type": "boolean",
|
|
402
|
-
"default": true,
|
|
403
|
-
"description": "Whether this task can be safely restored."
|
|
404
|
-
},
|
|
405
|
-
"restoreBlockers": {
|
|
406
|
-
"type": "array",
|
|
407
|
-
"items": {
|
|
408
|
-
"type": "string"
|
|
409
|
-
},
|
|
410
|
-
"description": "Reasons why restoration might fail or require manual intervention."
|
|
411
|
-
}
|
|
412
|
-
}
|
|
413
|
-
},
|
|
414
|
-
"cancellationDetails": {
|
|
415
|
-
"type": "object",
|
|
416
|
-
"additionalProperties": false,
|
|
417
|
-
"description": "Details about task cancellation. Present when reason='cancelled'.",
|
|
418
|
-
"properties": {
|
|
419
|
-
"cancelledAt": {
|
|
420
|
-
"type": "string",
|
|
421
|
-
"format": "date-time",
|
|
422
|
-
"description": "ISO 8601 timestamp when the task was cancelled."
|
|
423
|
-
},
|
|
424
|
-
"cancellationReason": {
|
|
425
|
-
"type": "string",
|
|
426
|
-
"minLength": 5,
|
|
427
|
-
"maxLength": 300,
|
|
428
|
-
"description": "User-provided reason for cancellation."
|
|
429
|
-
},
|
|
430
|
-
"cancelledBy": {
|
|
431
|
-
"type": "string",
|
|
432
|
-
"description": "Session ID or user that performed the cancellation."
|
|
433
|
-
},
|
|
434
|
-
"previousStatus": {
|
|
435
|
-
"type": "string",
|
|
436
|
-
"enum": [
|
|
437
|
-
"pending",
|
|
438
|
-
"active",
|
|
439
|
-
"blocked"
|
|
440
|
-
],
|
|
441
|
-
"description": "Task status before cancellation."
|
|
442
|
-
}
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
}
|
|
446
|
-
}
|
|
447
|
-
}
|
|
448
|
-
}
|
|
449
|
-
}
|
|
450
|
-
}
|