strikethroo 3.0.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/LICENSE +21 -0
- package/README.md +79 -0
- package/dist/cli.d.ts +9 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +187 -0
- package/dist/cli.js.map +1 -0
- package/dist/conflict-detector.d.ts +24 -0
- package/dist/conflict-detector.d.ts.map +1 -0
- package/dist/conflict-detector.js +130 -0
- package/dist/conflict-detector.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +344 -0
- package/dist/index.js.map +1 -0
- package/dist/metadata.d.ts +40 -0
- package/dist/metadata.d.ts.map +1 -0
- package/dist/metadata.js +121 -0
- package/dist/metadata.js.map +1 -0
- package/dist/plan-utils.d.ts +35 -0
- package/dist/plan-utils.d.ts.map +1 -0
- package/dist/plan-utils.js +123 -0
- package/dist/plan-utils.js.map +1 -0
- package/dist/plan.d.ts +27 -0
- package/dist/plan.d.ts.map +1 -0
- package/dist/plan.js +279 -0
- package/dist/plan.js.map +1 -0
- package/dist/prompts.d.ts +21 -0
- package/dist/prompts.d.ts.map +1 -0
- package/dist/prompts.js +132 -0
- package/dist/prompts.js.map +1 -0
- package/dist/status.d.ts +73 -0
- package/dist/status.d.ts.map +1 -0
- package/dist/status.js +375 -0
- package/dist/status.js.map +1 -0
- package/dist/types.d.ts +274 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +9 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +53 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +158 -0
- package/dist/utils.js.map +1 -0
- package/package.json +94 -0
- package/templates/harness/agents/plan-creator.md +95 -0
- package/templates/harness/skills/st-create-plan/SKILL.md +120 -0
- package/templates/harness/skills/st-create-plan/scripts/find-strikethroo-root.cjs +116 -0
- package/templates/harness/skills/st-create-plan/scripts/get-next-plan-id.cjs +197 -0
- package/templates/harness/skills/st-execute-blueprint/SKILL.md +147 -0
- package/templates/harness/skills/st-execute-blueprint/scripts/create-feature-branch.cjs +359 -0
- package/templates/harness/skills/st-execute-blueprint/scripts/find-strikethroo-root.cjs +116 -0
- package/templates/harness/skills/st-execute-blueprint/scripts/validate-plan-blueprint.cjs +358 -0
- package/templates/harness/skills/st-execute-task/SKILL.md +195 -0
- package/templates/harness/skills/st-execute-task/scripts/check-task-dependencies.cjs +420 -0
- package/templates/harness/skills/st-execute-task/scripts/find-strikethroo-root.cjs +116 -0
- package/templates/harness/skills/st-execute-task/scripts/validate-plan-blueprint.cjs +358 -0
- package/templates/harness/skills/st-full-workflow/SKILL.md +413 -0
- package/templates/harness/skills/st-full-workflow/scripts/create-feature-branch.cjs +359 -0
- package/templates/harness/skills/st-full-workflow/scripts/find-strikethroo-root.cjs +116 -0
- package/templates/harness/skills/st-full-workflow/scripts/get-next-plan-id.cjs +197 -0
- package/templates/harness/skills/st-full-workflow/scripts/get-next-task-id.cjs +295 -0
- package/templates/harness/skills/st-full-workflow/scripts/validate-plan-blueprint.cjs +358 -0
- package/templates/harness/skills/st-generate-tasks/SKILL.md +244 -0
- package/templates/harness/skills/st-generate-tasks/scripts/find-strikethroo-root.cjs +116 -0
- package/templates/harness/skills/st-generate-tasks/scripts/get-next-task-id.cjs +295 -0
- package/templates/harness/skills/st-generate-tasks/scripts/validate-plan-blueprint.cjs +358 -0
- package/templates/harness/skills/st-refine-plan/SKILL.md +205 -0
- package/templates/harness/skills/st-refine-plan/scripts/find-strikethroo-root.cjs +116 -0
- package/templates/harness/skills/st-refine-plan/scripts/validate-plan-blueprint.cjs +358 -0
- package/templates/strikethroo/README.md +7 -0
- package/templates/strikethroo/config/STRIKETHROO.md +76 -0
- package/templates/strikethroo/config/hooks/POST_ERROR_DETECTION.md +46 -0
- package/templates/strikethroo/config/hooks/POST_EXECUTION.md +25 -0
- package/templates/strikethroo/config/hooks/POST_PHASE.md +24 -0
- package/templates/strikethroo/config/hooks/POST_PLAN.md +5 -0
- package/templates/strikethroo/config/hooks/POST_TASK_GENERATION_ALL.md +41 -0
- package/templates/strikethroo/config/hooks/PRE_PHASE.md +21 -0
- package/templates/strikethroo/config/hooks/PRE_PLAN.md +42 -0
- package/templates/strikethroo/config/hooks/PRE_TASK_ASSIGNMENT.md +32 -0
- package/templates/strikethroo/config/hooks/PRE_TASK_EXECUTION.md +1 -0
- package/templates/strikethroo/config/templates/BLUEPRINT_TEMPLATE.md +24 -0
- package/templates/strikethroo/config/templates/EXECUTION_SUMMARY_TEMPLATE.md +13 -0
- package/templates/strikethroo/config/templates/PLAN_TEMPLATE.md +109 -0
- package/templates/strikethroo/config/templates/TASK_TEMPLATE.md +36 -0
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* This file contains all TypeScript interfaces, types, and enums
|
|
5
|
+
* used throughout the Strikethroo CLI application
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Supported AI harnesses for task management
|
|
9
|
+
*/
|
|
10
|
+
export type Harness = 'claude' | 'codex' | 'cursor' | 'gemini' | 'github' | 'opencode';
|
|
11
|
+
/**
|
|
12
|
+
* Options for the init command
|
|
13
|
+
*/
|
|
14
|
+
export interface InitOptions {
|
|
15
|
+
/**
|
|
16
|
+
* Comma-separated list of harnesses to configure
|
|
17
|
+
*/
|
|
18
|
+
harnesses: string;
|
|
19
|
+
/**
|
|
20
|
+
* Optional destination directory for the configuration
|
|
21
|
+
*/
|
|
22
|
+
destinationDirectory?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Force overwrite all files without prompting
|
|
25
|
+
*/
|
|
26
|
+
force?: boolean;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Configuration for directory structure
|
|
30
|
+
*/
|
|
31
|
+
export interface DirectoryConfig {
|
|
32
|
+
/**
|
|
33
|
+
* Path to the directory
|
|
34
|
+
*/
|
|
35
|
+
path: string;
|
|
36
|
+
/**
|
|
37
|
+
* Optional list of files to create in the directory
|
|
38
|
+
*/
|
|
39
|
+
files?: string[];
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Task status enumeration
|
|
43
|
+
*/
|
|
44
|
+
export type TaskStatus = 'pending' | 'in_progress' | 'completed' | 'cancelled';
|
|
45
|
+
/**
|
|
46
|
+
* Task priority levels
|
|
47
|
+
*/
|
|
48
|
+
export type TaskPriority = 'low' | 'medium' | 'high' | 'urgent';
|
|
49
|
+
/**
|
|
50
|
+
* Individual task definition
|
|
51
|
+
*/
|
|
52
|
+
export interface Task {
|
|
53
|
+
/**
|
|
54
|
+
* Unique identifier for the task
|
|
55
|
+
*/
|
|
56
|
+
id: string;
|
|
57
|
+
/**
|
|
58
|
+
* Task title/name
|
|
59
|
+
*/
|
|
60
|
+
title: string;
|
|
61
|
+
/**
|
|
62
|
+
* Detailed task description
|
|
63
|
+
*/
|
|
64
|
+
description?: string;
|
|
65
|
+
/**
|
|
66
|
+
* Current status of the task
|
|
67
|
+
*/
|
|
68
|
+
status: TaskStatus;
|
|
69
|
+
/**
|
|
70
|
+
* Task priority level
|
|
71
|
+
*/
|
|
72
|
+
priority: TaskPriority;
|
|
73
|
+
/**
|
|
74
|
+
* Task creation timestamp
|
|
75
|
+
*/
|
|
76
|
+
createdAt: Date;
|
|
77
|
+
/**
|
|
78
|
+
* Last update timestamp
|
|
79
|
+
*/
|
|
80
|
+
updatedAt: Date;
|
|
81
|
+
/**
|
|
82
|
+
* Optional due date
|
|
83
|
+
*/
|
|
84
|
+
dueDate?: Date;
|
|
85
|
+
/**
|
|
86
|
+
* Tags associated with the task
|
|
87
|
+
*/
|
|
88
|
+
tags: string[];
|
|
89
|
+
/**
|
|
90
|
+
* AI harness assigned to the task
|
|
91
|
+
*/
|
|
92
|
+
assignedTo?: Harness;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Task list configuration
|
|
96
|
+
*/
|
|
97
|
+
export interface TaskList {
|
|
98
|
+
/**
|
|
99
|
+
* List name/identifier
|
|
100
|
+
*/
|
|
101
|
+
name: string;
|
|
102
|
+
/**
|
|
103
|
+
* List description
|
|
104
|
+
*/
|
|
105
|
+
description?: string;
|
|
106
|
+
/**
|
|
107
|
+
* Tasks in the list
|
|
108
|
+
*/
|
|
109
|
+
tasks: Task[];
|
|
110
|
+
/**
|
|
111
|
+
* Creation timestamp
|
|
112
|
+
*/
|
|
113
|
+
createdAt: Date;
|
|
114
|
+
/**
|
|
115
|
+
* Last update timestamp
|
|
116
|
+
*/
|
|
117
|
+
updatedAt: Date;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* CLI command options base interface
|
|
121
|
+
*/
|
|
122
|
+
export interface BaseCommandOptions {
|
|
123
|
+
/**
|
|
124
|
+
* Enable verbose logging
|
|
125
|
+
*/
|
|
126
|
+
verbose?: boolean;
|
|
127
|
+
/**
|
|
128
|
+
* Dry run mode - show what would be done without executing
|
|
129
|
+
*/
|
|
130
|
+
dryRun?: boolean;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Harness configuration
|
|
134
|
+
*/
|
|
135
|
+
export interface HarnessConfig {
|
|
136
|
+
/**
|
|
137
|
+
* Harness type
|
|
138
|
+
*/
|
|
139
|
+
type: Harness;
|
|
140
|
+
/**
|
|
141
|
+
* API endpoint URL
|
|
142
|
+
*/
|
|
143
|
+
endpoint?: string;
|
|
144
|
+
/**
|
|
145
|
+
* API key for authentication
|
|
146
|
+
*/
|
|
147
|
+
apiKey?: string;
|
|
148
|
+
/**
|
|
149
|
+
* Model name/version to use
|
|
150
|
+
*/
|
|
151
|
+
model?: string;
|
|
152
|
+
/**
|
|
153
|
+
* Additional configuration options
|
|
154
|
+
*/
|
|
155
|
+
options?: Record<string, unknown>;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Project configuration
|
|
159
|
+
*/
|
|
160
|
+
export interface ProjectConfig {
|
|
161
|
+
/**
|
|
162
|
+
* Project name
|
|
163
|
+
*/
|
|
164
|
+
name: string;
|
|
165
|
+
/**
|
|
166
|
+
* Project description
|
|
167
|
+
*/
|
|
168
|
+
description?: string;
|
|
169
|
+
/**
|
|
170
|
+
* Default harness for the project
|
|
171
|
+
*/
|
|
172
|
+
defaultHarness?: Harness;
|
|
173
|
+
/**
|
|
174
|
+
* Configured harnesses
|
|
175
|
+
*/
|
|
176
|
+
harnesses: HarnessConfig[];
|
|
177
|
+
/**
|
|
178
|
+
* Project creation timestamp
|
|
179
|
+
*/
|
|
180
|
+
createdAt: Date;
|
|
181
|
+
/**
|
|
182
|
+
* Configuration file version
|
|
183
|
+
*/
|
|
184
|
+
version: string;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Validation result interface
|
|
188
|
+
*/
|
|
189
|
+
export interface ValidationResult {
|
|
190
|
+
/**
|
|
191
|
+
* Whether validation passed
|
|
192
|
+
*/
|
|
193
|
+
valid: boolean;
|
|
194
|
+
/**
|
|
195
|
+
* Validation errors if any
|
|
196
|
+
*/
|
|
197
|
+
errors: string[];
|
|
198
|
+
/**
|
|
199
|
+
* Validation warnings if any
|
|
200
|
+
*/
|
|
201
|
+
warnings: string[];
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Command execution result
|
|
205
|
+
*/
|
|
206
|
+
export interface CommandResult {
|
|
207
|
+
/**
|
|
208
|
+
* Whether command executed successfully
|
|
209
|
+
*/
|
|
210
|
+
success: boolean;
|
|
211
|
+
/**
|
|
212
|
+
* Result message
|
|
213
|
+
*/
|
|
214
|
+
message: string;
|
|
215
|
+
/**
|
|
216
|
+
* Additional data from command execution
|
|
217
|
+
*/
|
|
218
|
+
data?: unknown;
|
|
219
|
+
/**
|
|
220
|
+
* Error information if command failed
|
|
221
|
+
*/
|
|
222
|
+
error?: Error;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Metadata tracking for init command file management
|
|
226
|
+
*/
|
|
227
|
+
export interface InitMetadata {
|
|
228
|
+
/**
|
|
229
|
+
* Package version at time of init
|
|
230
|
+
*/
|
|
231
|
+
version: string;
|
|
232
|
+
/**
|
|
233
|
+
* Workspace schema version. Bumped only when .ai/strikethroo/ shape changes incompatibly.
|
|
234
|
+
*/
|
|
235
|
+
workspaceSchemaVersion: number;
|
|
236
|
+
/**
|
|
237
|
+
* Timestamp of last init operation
|
|
238
|
+
*/
|
|
239
|
+
timestamp: string;
|
|
240
|
+
/**
|
|
241
|
+
* Map of relative file paths to SHA-256 hashes
|
|
242
|
+
*/
|
|
243
|
+
files: Record<string, string>;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Represents a file conflict detected during init
|
|
247
|
+
*/
|
|
248
|
+
export interface FileConflict {
|
|
249
|
+
/**
|
|
250
|
+
* Relative path from .ai/strikethroo/ directory
|
|
251
|
+
*/
|
|
252
|
+
relativePath: string;
|
|
253
|
+
/**
|
|
254
|
+
* User's current file content
|
|
255
|
+
*/
|
|
256
|
+
userFileContent: string;
|
|
257
|
+
/**
|
|
258
|
+
* New incoming file content from package
|
|
259
|
+
*/
|
|
260
|
+
newFileContent: string;
|
|
261
|
+
/**
|
|
262
|
+
* Original hash from metadata when file was first copied
|
|
263
|
+
*/
|
|
264
|
+
originalHash: string;
|
|
265
|
+
/**
|
|
266
|
+
* Current hash of user's file
|
|
267
|
+
*/
|
|
268
|
+
currentHash: string;
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* User's resolution choice for file conflicts
|
|
272
|
+
*/
|
|
273
|
+
export type ConflictResolution = 'keep' | 'overwrite' | 'keep-all' | 'overwrite-all';
|
|
274
|
+
//# 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,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* TypeScript Type Definitions
|
|
4
|
+
*
|
|
5
|
+
* This file contains all TypeScript interfaces, types, and enums
|
|
6
|
+
* used throughout the Strikethroo CLI application
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG"}
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helper Functions for the CLI
|
|
3
|
+
*
|
|
4
|
+
* Validation helpers for the `--harnesses` option.
|
|
5
|
+
*/
|
|
6
|
+
import { Harness } from './types';
|
|
7
|
+
/**
|
|
8
|
+
* Parse comma-separated harness values into an array
|
|
9
|
+
* @param value - Comma-separated string of harness names
|
|
10
|
+
* @returns Array of harness names
|
|
11
|
+
* @throws Error if invalid harness names are provided
|
|
12
|
+
*/
|
|
13
|
+
export declare function parseHarnesses(value: string): Harness[];
|
|
14
|
+
/**
|
|
15
|
+
* Validate that all harnesses are supported
|
|
16
|
+
* @param harnesses - Array of harnesses to validate
|
|
17
|
+
* @throws Error if any harness is invalid or array is empty
|
|
18
|
+
*/
|
|
19
|
+
export declare function validateHarnesses(harnesses: Harness[]): void;
|
|
20
|
+
export interface MarkdownFrontmatter {
|
|
21
|
+
[key: string]: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Extract YAML frontmatter and body from a markdown string.
|
|
25
|
+
* Returns an empty frontmatter object when no fences are found.
|
|
26
|
+
*/
|
|
27
|
+
export declare function parseFrontmatter(content: string): {
|
|
28
|
+
frontmatter: MarkdownFrontmatter;
|
|
29
|
+
body: string;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Escape a string for use inside a TOML basic (double-quoted) string.
|
|
33
|
+
*/
|
|
34
|
+
export declare function escapeTomlString(str: string): string;
|
|
35
|
+
/**
|
|
36
|
+
* Escape a string for use inside a TOML multi-line basic (triple-quoted) string.
|
|
37
|
+
*/
|
|
38
|
+
export declare function escapeTomlTripleQuotedString(str: string): string;
|
|
39
|
+
/**
|
|
40
|
+
* Convert a canonical agent markdown template (with YAML frontmatter
|
|
41
|
+
* containing `name` and `description`) into Codex's TOML agent format.
|
|
42
|
+
*/
|
|
43
|
+
export declare function convertAgentMdToToml(mdContent: string): string;
|
|
44
|
+
export interface AgentFormatInfo {
|
|
45
|
+
format: 'md' | 'toml';
|
|
46
|
+
extension: string;
|
|
47
|
+
directory: string;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Return the agent file format, extension, and target directory for a harness.
|
|
51
|
+
*/
|
|
52
|
+
export declare function getAgentFormat(harness: Harness): AgentFormatInfo;
|
|
53
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAWlC;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,CAqBvD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,CAY5D;AAID,MAAM,WAAW,mBAAmB;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG;IACjD,WAAW,EAAE,mBAAmB,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;CACd,CA+CA;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOpD;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAc9D;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,eAAe,CAehE"}
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Helper Functions for the CLI
|
|
4
|
+
*
|
|
5
|
+
* Validation helpers for the `--harnesses` option.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.parseHarnesses = parseHarnesses;
|
|
9
|
+
exports.validateHarnesses = validateHarnesses;
|
|
10
|
+
exports.parseFrontmatter = parseFrontmatter;
|
|
11
|
+
exports.escapeTomlString = escapeTomlString;
|
|
12
|
+
exports.escapeTomlTripleQuotedString = escapeTomlTripleQuotedString;
|
|
13
|
+
exports.convertAgentMdToToml = convertAgentMdToToml;
|
|
14
|
+
exports.getAgentFormat = getAgentFormat;
|
|
15
|
+
const VALID_HARNESSES = [
|
|
16
|
+
'claude',
|
|
17
|
+
'codex',
|
|
18
|
+
'cursor',
|
|
19
|
+
'gemini',
|
|
20
|
+
'github',
|
|
21
|
+
'opencode',
|
|
22
|
+
];
|
|
23
|
+
/**
|
|
24
|
+
* Parse comma-separated harness values into an array
|
|
25
|
+
* @param value - Comma-separated string of harness names
|
|
26
|
+
* @returns Array of harness names
|
|
27
|
+
* @throws Error if invalid harness names are provided
|
|
28
|
+
*/
|
|
29
|
+
function parseHarnesses(value) {
|
|
30
|
+
if (!value.trim()) {
|
|
31
|
+
throw new Error('Harnesses parameter cannot be empty');
|
|
32
|
+
}
|
|
33
|
+
const harnesses = value
|
|
34
|
+
.split(',')
|
|
35
|
+
.map(a => a.trim().toLowerCase())
|
|
36
|
+
.filter(a => a.length > 0);
|
|
37
|
+
const invalidHarnesses = harnesses.filter((harness) => !VALID_HARNESSES.includes(harness));
|
|
38
|
+
if (invalidHarnesses.length > 0) {
|
|
39
|
+
throw new Error(`Invalid harness(es): ${invalidHarnesses.join(', ')}. Valid options are: ${VALID_HARNESSES.join(', ')}`);
|
|
40
|
+
}
|
|
41
|
+
return Array.from(new Set(harnesses));
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Validate that all harnesses are supported
|
|
45
|
+
* @param harnesses - Array of harnesses to validate
|
|
46
|
+
* @throws Error if any harness is invalid or array is empty
|
|
47
|
+
*/
|
|
48
|
+
function validateHarnesses(harnesses) {
|
|
49
|
+
if (harnesses.length === 0) {
|
|
50
|
+
throw new Error('At least one harness must be specified');
|
|
51
|
+
}
|
|
52
|
+
for (const harness of harnesses) {
|
|
53
|
+
if (!VALID_HARNESSES.includes(harness)) {
|
|
54
|
+
throw new Error(`Invalid harness: ${harness}. Supported harnesses: ${VALID_HARNESSES.join(', ')}`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Extract YAML frontmatter and body from a markdown string.
|
|
60
|
+
* Returns an empty frontmatter object when no fences are found.
|
|
61
|
+
*/
|
|
62
|
+
function parseFrontmatter(content) {
|
|
63
|
+
const frontmatterRegex = /^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n([\s\S]*))?$/;
|
|
64
|
+
const match = content.match(frontmatterRegex);
|
|
65
|
+
if (!match) {
|
|
66
|
+
return { frontmatter: {}, body: content };
|
|
67
|
+
}
|
|
68
|
+
const frontmatter = {};
|
|
69
|
+
const lines = (match[1] || '').split('\n');
|
|
70
|
+
let currentKey = '';
|
|
71
|
+
let multilineValue = [];
|
|
72
|
+
const flushMultiline = () => {
|
|
73
|
+
if (currentKey && multilineValue.length > 0) {
|
|
74
|
+
frontmatter[currentKey] = multilineValue.join('\n');
|
|
75
|
+
}
|
|
76
|
+
currentKey = '';
|
|
77
|
+
multilineValue = [];
|
|
78
|
+
};
|
|
79
|
+
for (const line of lines) {
|
|
80
|
+
if (currentKey && (line.startsWith(' ') || line.startsWith('\t'))) {
|
|
81
|
+
multilineValue.push(line.replace(/^ {2}/, '').replace(/^\t/, ''));
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
flushMultiline();
|
|
85
|
+
const trimmed = line.trim();
|
|
86
|
+
if (!trimmed || trimmed.startsWith('#'))
|
|
87
|
+
continue;
|
|
88
|
+
const colonIndex = trimmed.indexOf(':');
|
|
89
|
+
if (colonIndex === -1)
|
|
90
|
+
continue;
|
|
91
|
+
const key = trimmed.substring(0, colonIndex).trim();
|
|
92
|
+
const value = trimmed.substring(colonIndex + 1).trim();
|
|
93
|
+
if (value === '|' || value === '>') {
|
|
94
|
+
currentKey = key;
|
|
95
|
+
multilineValue = [];
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
frontmatter[key] = value.replace(/^["']|["']$/g, '');
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
flushMultiline();
|
|
102
|
+
return { frontmatter, body: (match[2] || '').trimStart() };
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Escape a string for use inside a TOML basic (double-quoted) string.
|
|
106
|
+
*/
|
|
107
|
+
function escapeTomlString(str) {
|
|
108
|
+
return str
|
|
109
|
+
.replace(/\\/g, '\\\\')
|
|
110
|
+
.replace(/"/g, '\\"')
|
|
111
|
+
.replace(/\n/g, '\\n')
|
|
112
|
+
.replace(/\r/g, '\\r')
|
|
113
|
+
.replace(/\t/g, '\\t');
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Escape a string for use inside a TOML multi-line basic (triple-quoted) string.
|
|
117
|
+
*/
|
|
118
|
+
function escapeTomlTripleQuotedString(str) {
|
|
119
|
+
return str.replace(/\\\\/g, '\\\\\\\\').replace(/"""/g, '"\\""');
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Convert a canonical agent markdown template (with YAML frontmatter
|
|
123
|
+
* containing `name` and `description`) into Codex's TOML agent format.
|
|
124
|
+
*/
|
|
125
|
+
function convertAgentMdToToml(mdContent) {
|
|
126
|
+
const { frontmatter, body } = parseFrontmatter(mdContent);
|
|
127
|
+
const name = escapeTomlString(frontmatter.name || '');
|
|
128
|
+
const description = escapeTomlString((frontmatter.description || '').trim());
|
|
129
|
+
const instructions = escapeTomlTripleQuotedString(body.trim());
|
|
130
|
+
return [
|
|
131
|
+
`name = "${name}"`,
|
|
132
|
+
`description = "${description}"`,
|
|
133
|
+
`developer_instructions = """`,
|
|
134
|
+
instructions,
|
|
135
|
+
`"""`,
|
|
136
|
+
'',
|
|
137
|
+
].join('\n');
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Return the agent file format, extension, and target directory for a harness.
|
|
141
|
+
*/
|
|
142
|
+
function getAgentFormat(harness) {
|
|
143
|
+
switch (harness) {
|
|
144
|
+
case 'codex':
|
|
145
|
+
return { format: 'toml', extension: '.toml', directory: '.codex/agents' };
|
|
146
|
+
case 'github':
|
|
147
|
+
return { format: 'md', extension: '.agent.md', directory: '.github/agents' };
|
|
148
|
+
case 'claude':
|
|
149
|
+
return { format: 'md', extension: '.md', directory: '.claude/agents' };
|
|
150
|
+
case 'gemini':
|
|
151
|
+
return { format: 'md', extension: '.md', directory: '.gemini/agents' };
|
|
152
|
+
case 'cursor':
|
|
153
|
+
return { format: 'md', extension: '.md', directory: '.cursor/agents' };
|
|
154
|
+
case 'opencode':
|
|
155
|
+
return { format: 'md', extension: '.md', directory: '.opencode/agents' };
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "strikethroo",
|
|
3
|
+
"version": "3.0.0",
|
|
4
|
+
"description": "Task management for AI coding assistants",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"strikethroo": "dist/cli.js"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"build": "tsc && npm run build:skills && npm run build:skill-prompts",
|
|
11
|
+
"build:skills": "tsc --noEmit -p tsconfig.skill-scripts.json && node scripts/build-skills.cjs",
|
|
12
|
+
"build:skill-prompts": "node scripts/build-skill-prompts.cjs",
|
|
13
|
+
"dev": "tsc --watch",
|
|
14
|
+
"start": "node dist/cli.js",
|
|
15
|
+
"test": "jest",
|
|
16
|
+
"test:watch": "jest --watch",
|
|
17
|
+
"lint": "eslint 'src/**/*.ts' --ignore-pattern 'src/**/*.test.ts' --ignore-pattern 'src/**/__tests__/**'",
|
|
18
|
+
"lint:fix": "eslint 'src/**/*.ts' --ignore-pattern 'src/**/*.test.ts' --ignore-pattern 'src/**/__tests__/**' --fix",
|
|
19
|
+
"format": "prettier --write src/**/*.ts",
|
|
20
|
+
"commitlint": "commitlint --edit",
|
|
21
|
+
"clean": "rm -rf dist",
|
|
22
|
+
"prepublishOnly": "npm run build",
|
|
23
|
+
"prepare": "husky",
|
|
24
|
+
"security:audit": "npm audit",
|
|
25
|
+
"security:audit-json": "npm audit --json",
|
|
26
|
+
"security:fix": "npm audit fix",
|
|
27
|
+
"security:fix-force": "npm audit fix --force"
|
|
28
|
+
},
|
|
29
|
+
"keywords": [
|
|
30
|
+
"cli",
|
|
31
|
+
"task-management",
|
|
32
|
+
"ai",
|
|
33
|
+
"npx",
|
|
34
|
+
"typescript"
|
|
35
|
+
],
|
|
36
|
+
"author": "e0ipso",
|
|
37
|
+
"license": "proprietary",
|
|
38
|
+
"publishConfig": {
|
|
39
|
+
"access": "public"
|
|
40
|
+
},
|
|
41
|
+
"engines": {
|
|
42
|
+
"node": ">=22.14.0"
|
|
43
|
+
},
|
|
44
|
+
"files": [
|
|
45
|
+
"dist/",
|
|
46
|
+
"templates/",
|
|
47
|
+
"LICENSE"
|
|
48
|
+
],
|
|
49
|
+
"repository": {
|
|
50
|
+
"type": "git",
|
|
51
|
+
"url": "git+https://github.com/e0ipso/strikethroo.git"
|
|
52
|
+
},
|
|
53
|
+
"bugs": {
|
|
54
|
+
"url": "https://github.com/e0ipso/strikethroo/issues"
|
|
55
|
+
},
|
|
56
|
+
"homepage": "https://github.com/e0ipso/strikethroo#readme",
|
|
57
|
+
"dependencies": {
|
|
58
|
+
"chalk": "^5.6.0",
|
|
59
|
+
"commander": "^11.1.0",
|
|
60
|
+
"diff": "^5.2.0",
|
|
61
|
+
"fs-extra": "^11.3.1",
|
|
62
|
+
"gray-matter": "^4.0.3",
|
|
63
|
+
"inquirer": "^9.3.8"
|
|
64
|
+
},
|
|
65
|
+
"devDependencies": {
|
|
66
|
+
"@commitlint/cli": "^19.8.1",
|
|
67
|
+
"@commitlint/config-conventional": "^19.8.1",
|
|
68
|
+
"@eslint/js": "^9.34.0",
|
|
69
|
+
"@semantic-release/changelog": "^6.0.3",
|
|
70
|
+
"@semantic-release/commit-analyzer": "^13.0.1",
|
|
71
|
+
"@semantic-release/git": "^10.0.1",
|
|
72
|
+
"@semantic-release/github": "^12.0.2",
|
|
73
|
+
"@semantic-release/npm": "^13.1.3",
|
|
74
|
+
"@semantic-release/release-notes-generator": "^14.1.0",
|
|
75
|
+
"@types/diff": "^5.2.3",
|
|
76
|
+
"@types/fs-extra": "^11.0.4",
|
|
77
|
+
"@types/inquirer": "^9.0.9",
|
|
78
|
+
"@types/jest": "^30.0.0",
|
|
79
|
+
"@types/node": "^24.3.0",
|
|
80
|
+
"@typescript-eslint/eslint-plugin": "^8.41.0",
|
|
81
|
+
"@typescript-eslint/parser": "^8.41.0",
|
|
82
|
+
"esbuild": "^0.28.0",
|
|
83
|
+
"eslint": "^9.34.0",
|
|
84
|
+
"eslint-config-prettier": "^10.1.8",
|
|
85
|
+
"eslint-plugin-prettier": "^5.5.4",
|
|
86
|
+
"husky": "^9.1.7",
|
|
87
|
+
"jest": "^30.1.2",
|
|
88
|
+
"prettier": "^3.6.2",
|
|
89
|
+
"semantic-release": "^25.0.2",
|
|
90
|
+
"ts-jest": "^29.4.1",
|
|
91
|
+
"ts-node": "^10.9.2",
|
|
92
|
+
"typescript": "^5.9.2"
|
|
93
|
+
}
|
|
94
|
+
}
|