@codedrifters/configulator 0.0.181 → 0.0.183
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/lib/index.d.mts +73 -1
- package/lib/index.d.ts +74 -2
- package/lib/index.js +529 -15
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +523 -15
- package/lib/index.mjs.map +1 -1
- package/package.json +1 -1
package/lib/index.js
CHANGED
|
@@ -185,6 +185,9 @@ __export(index_exports, {
|
|
|
185
185
|
BUILT_IN_BUNDLES: () => BUILT_IN_BUNDLES,
|
|
186
186
|
CLAUDE_RULE_TARGET: () => CLAUDE_RULE_TARGET,
|
|
187
187
|
COMPLETE_JOB_ID: () => COMPLETE_JOB_ID,
|
|
188
|
+
DEFAULT_PRIORITY_LABELS: () => DEFAULT_PRIORITY_LABELS,
|
|
189
|
+
DEFAULT_STATUS_LABELS: () => DEFAULT_STATUS_LABELS,
|
|
190
|
+
DEFAULT_TYPE_LABELS: () => DEFAULT_TYPE_LABELS,
|
|
188
191
|
JsiiFaker: () => JsiiFaker,
|
|
189
192
|
MCP_TRANSPORT: () => MCP_TRANSPORT,
|
|
190
193
|
MERGE_METHODS: () => MERGE_METHODS,
|
|
@@ -209,13 +212,16 @@ __export(index_exports, {
|
|
|
209
212
|
Vitest: () => Vitest,
|
|
210
213
|
addApproveMergeUpgradeWorkflow: () => addApproveMergeUpgradeWorkflow,
|
|
211
214
|
addBuildCompleteJob: () => addBuildCompleteJob,
|
|
215
|
+
addSyncLabelsWorkflow: () => addSyncLabelsWorkflow,
|
|
212
216
|
awsCdkBundle: () => awsCdkBundle,
|
|
213
217
|
baseBundle: () => baseBundle,
|
|
214
218
|
getLatestEligibleVersion: () => getLatestEligibleVersion,
|
|
215
219
|
githubWorkflowBundle: () => githubWorkflowBundle,
|
|
216
220
|
jestBundle: () => jestBundle,
|
|
221
|
+
meetingAnalysisBundle: () => meetingAnalysisBundle,
|
|
217
222
|
pnpmBundle: () => pnpmBundle,
|
|
218
223
|
projenBundle: () => projenBundle,
|
|
224
|
+
resolveModelAlias: () => resolveModelAlias,
|
|
219
225
|
resolveTemplateVariables: () => resolveTemplateVariables,
|
|
220
226
|
slackBundle: () => slackBundle,
|
|
221
227
|
turborepoBundle: () => turborepoBundle,
|
|
@@ -249,6 +255,17 @@ var AGENT_MODEL = {
|
|
|
249
255
|
BALANCED: "balanced",
|
|
250
256
|
POWERFUL: "powerful"
|
|
251
257
|
};
|
|
258
|
+
function resolveModelAlias(model) {
|
|
259
|
+
if (!model || model === AGENT_MODEL.INHERIT) {
|
|
260
|
+
return void 0;
|
|
261
|
+
}
|
|
262
|
+
const mapping = {
|
|
263
|
+
[AGENT_MODEL.POWERFUL]: "opus",
|
|
264
|
+
[AGENT_MODEL.BALANCED]: "sonnet",
|
|
265
|
+
[AGENT_MODEL.FAST]: "haiku"
|
|
266
|
+
};
|
|
267
|
+
return mapping[model] ?? model;
|
|
268
|
+
}
|
|
252
269
|
var MCP_TRANSPORT = {
|
|
253
270
|
STDIO: "stdio",
|
|
254
271
|
HTTP: "http",
|
|
@@ -995,6 +1012,297 @@ var jestBundle = {
|
|
|
995
1012
|
}
|
|
996
1013
|
};
|
|
997
1014
|
|
|
1015
|
+
// src/agent/bundles/meeting-analysis.ts
|
|
1016
|
+
var meetingAnalystSubAgent = {
|
|
1017
|
+
name: "meeting-analyst",
|
|
1018
|
+
description: "Processes meeting transcripts through a 4-phase pipeline: extract, notes, draft, and link",
|
|
1019
|
+
model: AGENT_MODEL.POWERFUL,
|
|
1020
|
+
maxTurns: 80,
|
|
1021
|
+
platforms: { cursor: { exclude: true } },
|
|
1022
|
+
prompt: [
|
|
1023
|
+
"# Meeting Analyst Agent",
|
|
1024
|
+
"",
|
|
1025
|
+
"You process meeting transcripts through a structured 4-phase pipeline.",
|
|
1026
|
+
"Each phase runs as a **separate agent session**, triggered by its own",
|
|
1027
|
+
"GitHub issue with a `meeting:*` phase label. You handle exactly **one",
|
|
1028
|
+
"phase per session** \u2014 read the issue to determine which phase to execute.",
|
|
1029
|
+
"",
|
|
1030
|
+
"## Execution Model",
|
|
1031
|
+
"",
|
|
1032
|
+
"1. Each meeting produces up to 4 GitHub issues (one per phase)",
|
|
1033
|
+
"2. Each issue carries a `meeting:*` label identifying the phase",
|
|
1034
|
+
"3. You pick up one issue, execute that phase, commit/push, then close the issue",
|
|
1035
|
+
"4. Phase 1 (Extract) creates the downstream phase issues for phases 2-4",
|
|
1036
|
+
"5. Each downstream issue includes `Depends on: #N` linking to its predecessor",
|
|
1037
|
+
"",
|
|
1038
|
+
"## Design Principles",
|
|
1039
|
+
"",
|
|
1040
|
+
"1. **Extract, don't interpret.** Capture what was said and decided. Flag",
|
|
1041
|
+
" ambiguity as open items rather than resolving it.",
|
|
1042
|
+
"2. **Route to the right category.** Meeting content maps to requirements,",
|
|
1043
|
+
" ADRs, product docs, and business strategy. Each output goes to the",
|
|
1044
|
+
" correct location per the project's taxonomy.",
|
|
1045
|
+
"3. **Preserve provenance.** Every extracted item links back to the meeting",
|
|
1046
|
+
" source so reviewers can check context.",
|
|
1047
|
+
"4. **Create issues, not documents.** For requirements and ADRs, create",
|
|
1048
|
+
" GitHub issues that other agents or humans will pick up. Do not write",
|
|
1049
|
+
" final requirement documents yourself.",
|
|
1050
|
+
"5. **Bi-directional traceability.** Every document and issue created by",
|
|
1051
|
+
" this pipeline must link back to the meeting source, and the meeting",
|
|
1052
|
+
" source documents must link forward to everything created from them.",
|
|
1053
|
+
"",
|
|
1054
|
+
"---",
|
|
1055
|
+
"",
|
|
1056
|
+
"## Traceability",
|
|
1057
|
+
"",
|
|
1058
|
+
"All outputs must be bi-directionally linked so any artifact can be traced",
|
|
1059
|
+
"back to the meeting that produced it and forward to everything it spawned.",
|
|
1060
|
+
"",
|
|
1061
|
+
"### Backward links (created artifact \u2192 meeting source)",
|
|
1062
|
+
"",
|
|
1063
|
+
"Every GitHub issue and document created by this pipeline must include a",
|
|
1064
|
+
"`## Traceability` section with:",
|
|
1065
|
+
"",
|
|
1066
|
+
"```markdown",
|
|
1067
|
+
"## Traceability",
|
|
1068
|
+
"",
|
|
1069
|
+
"- **Source meeting:** <path to transcript or meeting notes>",
|
|
1070
|
+
"- **Extraction:** <path to extraction file>",
|
|
1071
|
+
"- **Phase issue:** #<N> (the phase issue that created this artifact)",
|
|
1072
|
+
"```",
|
|
1073
|
+
"",
|
|
1074
|
+
"### Forward links (meeting source \u2192 created artifacts)",
|
|
1075
|
+
"",
|
|
1076
|
+
"After Phase 4 (Link) creates all follow-up issues and documents:",
|
|
1077
|
+
"",
|
|
1078
|
+
"1. **Update the extraction file** with a `## Downstream Artifacts` section",
|
|
1079
|
+
" listing every issue and document created from this meeting:",
|
|
1080
|
+
"",
|
|
1081
|
+
" ```markdown",
|
|
1082
|
+
" ## Downstream Artifacts",
|
|
1083
|
+
"",
|
|
1084
|
+
" | Artifact | Type | Issue/Path |",
|
|
1085
|
+
" |----------|------|------------|",
|
|
1086
|
+
" | <title> | requirement / ADR / action-item / profile | #<N> or <path> |",
|
|
1087
|
+
" ```",
|
|
1088
|
+
"",
|
|
1089
|
+
"2. **Update the meeting notes** with a similar `## Related Issues` section",
|
|
1090
|
+
" listing all issues created from this meeting.",
|
|
1091
|
+
"",
|
|
1092
|
+
"3. **Comment on the extract issue** with a summary linking to all created",
|
|
1093
|
+
" artifacts.",
|
|
1094
|
+
"",
|
|
1095
|
+
"### Within-pipeline links",
|
|
1096
|
+
"",
|
|
1097
|
+
"- Phase issues link to predecessors via `Depends on: #N`",
|
|
1098
|
+
"- Phase issues reference the extraction file path in their body",
|
|
1099
|
+
"- Draft documents reference both the extraction and the meeting notes",
|
|
1100
|
+
"",
|
|
1101
|
+
"---",
|
|
1102
|
+
"",
|
|
1103
|
+
"## Phase 1: Extract (`meeting:extract`)",
|
|
1104
|
+
"",
|
|
1105
|
+
"**Goal:** Read the meeting transcript and categorize all substantive content.",
|
|
1106
|
+
"",
|
|
1107
|
+
"### Steps",
|
|
1108
|
+
"",
|
|
1109
|
+
"1. Read the transcript file specified in the issue body.",
|
|
1110
|
+
"2. Identify and categorize content into these buckets:",
|
|
1111
|
+
"",
|
|
1112
|
+
" | Bucket | What to look for |",
|
|
1113
|
+
" |--------|-----------------|",
|
|
1114
|
+
` | **Decisions** | "We decided...", "Let's go with...", explicit choices |`,
|
|
1115
|
+
' | **Requirements** | Feature descriptions, acceptance criteria, "it should..." |',
|
|
1116
|
+
" | **Technology discussions** | Platform comparisons, architecture options, tool evaluations |",
|
|
1117
|
+
' | **Action items** | "[Person] will...", "Next step is...", assigned tasks |',
|
|
1118
|
+
' | **Open questions** | "We need to figure out...", unresolved debates |',
|
|
1119
|
+
" | **People of interest** | Industry contacts, domain experts mentioned |",
|
|
1120
|
+
" | **Companies of interest** | Competitors, vendors, partners discussed |",
|
|
1121
|
+
" | **Strategic direction** | Business model changes, market positioning |",
|
|
1122
|
+
" | **Product direction** | Roadmap changes, feature prioritization |",
|
|
1123
|
+
"",
|
|
1124
|
+
"3. Write the extraction to a markdown file with structured sections:",
|
|
1125
|
+
" - Attendees",
|
|
1126
|
+
" - Decisions Made (with category and confidence: Firm / Tentative / Needs confirmation)",
|
|
1127
|
+
" - Requirements Identified (with category and priority estimate)",
|
|
1128
|
+
" - Technology Discussions (with status: Decided / Leaning toward / Open)",
|
|
1129
|
+
" - Action Items (with assignee and due date if stated)",
|
|
1130
|
+
" - Open Questions",
|
|
1131
|
+
" - People of Interest (with context and whether a profile exists)",
|
|
1132
|
+
" - Companies of Interest (with type and context)",
|
|
1133
|
+
" - Strategic / Product Direction",
|
|
1134
|
+
"",
|
|
1135
|
+
"4. **Create downstream phase issues** using `gh issue create`:",
|
|
1136
|
+
" - Always create a `meeting:notes` issue (blocked on this extract issue)",
|
|
1137
|
+
" - If requirements OR decisions/ADRs identified, create a `meeting:draft` issue",
|
|
1138
|
+
" (blocked on the notes issue)",
|
|
1139
|
+
" - Always create a `meeting:link` issue \u2014 blocked on the draft issue if one",
|
|
1140
|
+
" was created, otherwise blocked on the notes issue",
|
|
1141
|
+
"",
|
|
1142
|
+
"5. Commit, push, and close the extract issue.",
|
|
1143
|
+
"",
|
|
1144
|
+
"---",
|
|
1145
|
+
"",
|
|
1146
|
+
"## Phase 2: Notes (`meeting:notes`)",
|
|
1147
|
+
"",
|
|
1148
|
+
"**Goal:** Transform the extraction into structured meeting notes.",
|
|
1149
|
+
"",
|
|
1150
|
+
"### Steps",
|
|
1151
|
+
"",
|
|
1152
|
+
"1. Read the extraction file referenced in the issue body (output of Phase 1).",
|
|
1153
|
+
"2. Write structured meeting notes with these sections:",
|
|
1154
|
+
" - Meeting metadata (title, date, attendees)",
|
|
1155
|
+
" - Agenda / topics covered",
|
|
1156
|
+
" - Key Discussion Points (organized by topic)",
|
|
1157
|
+
" - Decisions (numbered, with rationale)",
|
|
1158
|
+
" - Action Items (table: who, what, when)",
|
|
1159
|
+
" - Open Questions",
|
|
1160
|
+
" - Follow-up items",
|
|
1161
|
+
"3. Commit, push, and close the notes issue.",
|
|
1162
|
+
"",
|
|
1163
|
+
"---",
|
|
1164
|
+
"",
|
|
1165
|
+
"## Phase 3: Draft (`meeting:draft`)",
|
|
1166
|
+
"",
|
|
1167
|
+
"**Goal:** Draft proposals for requirements, ADRs, and product/strategy updates.",
|
|
1168
|
+
"",
|
|
1169
|
+
"This phase only exists if the extraction identified requirements, architectural",
|
|
1170
|
+
"decisions, or strategy changes. If this issue exists, execute it.",
|
|
1171
|
+
"",
|
|
1172
|
+
"### Steps",
|
|
1173
|
+
"",
|
|
1174
|
+
"1. Read the extraction file from Phase 1.",
|
|
1175
|
+
"2. Check existing requirement registries and ADR registries for duplicates.",
|
|
1176
|
+
"3. Draft requirement proposals with:",
|
|
1177
|
+
" - Category (FR, BR, NFR, etc.)",
|
|
1178
|
+
" - Summary (2-3 sentences)",
|
|
1179
|
+
" - Draft acceptance criteria",
|
|
1180
|
+
" - Related existing requirements",
|
|
1181
|
+
"4. Draft ADR proposals for technology decisions with:",
|
|
1182
|
+
" - Context and problem statement",
|
|
1183
|
+
" - Options discussed",
|
|
1184
|
+
" - Stated preferences or decisions",
|
|
1185
|
+
" - Status: Proposed or Decided",
|
|
1186
|
+
"5. Summarize product/strategy document updates needed.",
|
|
1187
|
+
"6. Commit, push, and close the draft issue.",
|
|
1188
|
+
"",
|
|
1189
|
+
"---",
|
|
1190
|
+
"",
|
|
1191
|
+
"## Phase 4: Link (`meeting:link`)",
|
|
1192
|
+
"",
|
|
1193
|
+
"**Goal:** Create GitHub issues for follow-up work, cross-reference the",
|
|
1194
|
+
"meeting into existing documentation, and complete bi-directional traceability.",
|
|
1195
|
+
"",
|
|
1196
|
+
"### Steps",
|
|
1197
|
+
"",
|
|
1198
|
+
"1. Read the drafts from Phase 3 (if they exist) and the extraction from Phase 1.",
|
|
1199
|
+
"2. Create requirement issues using `gh issue create` with appropriate labels.",
|
|
1200
|
+
" Include a `## Traceability` section in each issue body linking back to",
|
|
1201
|
+
" the source meeting and extraction file.",
|
|
1202
|
+
"3. Create ADR issues if technology decisions need formal records.",
|
|
1203
|
+
" Include a `## Traceability` section in each.",
|
|
1204
|
+
"4. Create action item issues for tasks that are not document-related.",
|
|
1205
|
+
" Include a `## Traceability` section in each.",
|
|
1206
|
+
"5. Cross-reference the meeting in any existing documents that were discussed.",
|
|
1207
|
+
"6. Apply direct product/strategy doc updates for items flagged as **Firm**",
|
|
1208
|
+
" confidence in the extraction.",
|
|
1209
|
+
"7. **Update the extraction file** with a `## Downstream Artifacts` section",
|
|
1210
|
+
" listing every issue and document created from this meeting.",
|
|
1211
|
+
"8. **Update the meeting notes** with a `## Related Issues` section listing",
|
|
1212
|
+
" all issues created from this meeting.",
|
|
1213
|
+
"9. Comment on the parent extract issue with a summary linking to all",
|
|
1214
|
+
" created artifacts.",
|
|
1215
|
+
"10. Commit and push (if any file changes were made), then close the link issue.",
|
|
1216
|
+
"",
|
|
1217
|
+
"---",
|
|
1218
|
+
"",
|
|
1219
|
+
"## GitHub Integration",
|
|
1220
|
+
"",
|
|
1221
|
+
"- Use `gh` CLI for all GitHub operations",
|
|
1222
|
+
"- Apply the appropriate `meeting:*` phase label to each phase issue",
|
|
1223
|
+
"- Use `type:docs` for documentation-producing issues, `type:chore` for",
|
|
1224
|
+
" maintenance/organizational tasks",
|
|
1225
|
+
"- Use `status:` labels to track progress (`status:ready`, `status:in-progress`, `status:done`)",
|
|
1226
|
+
"- Reference the source meeting transcript in all created issues",
|
|
1227
|
+
"- Link phase issues with `Depends on: #N` to enforce ordering",
|
|
1228
|
+
"",
|
|
1229
|
+
"## When to Shorten the Pipeline",
|
|
1230
|
+
"",
|
|
1231
|
+
"- **Short meetings** (<30 min, <2000 words): combine extract + notes into one session",
|
|
1232
|
+
"- **No requirements or decisions**: Phase 1 skips creating the `meeting:draft` issue",
|
|
1233
|
+
"- **Only action items**: extract + notes + link (3 phase issues)"
|
|
1234
|
+
].join("\n")
|
|
1235
|
+
};
|
|
1236
|
+
var processMeetingSkill = {
|
|
1237
|
+
name: "process-meeting",
|
|
1238
|
+
description: "Process a meeting transcript through the 4-phase meeting analysis pipeline",
|
|
1239
|
+
disableModelInvocation: true,
|
|
1240
|
+
userInvocable: true,
|
|
1241
|
+
context: "fork",
|
|
1242
|
+
agent: "meeting-analyst",
|
|
1243
|
+
platforms: { cursor: { exclude: true } },
|
|
1244
|
+
instructions: [
|
|
1245
|
+
"# Process Meeting Transcript",
|
|
1246
|
+
"",
|
|
1247
|
+
"Kick off meeting transcript processing by executing Phase 1 (Extract)",
|
|
1248
|
+
"and creating downstream phase issues for the remaining phases.",
|
|
1249
|
+
"",
|
|
1250
|
+
"## Usage",
|
|
1251
|
+
"",
|
|
1252
|
+
"/process-meeting <path-to-transcript>",
|
|
1253
|
+
"",
|
|
1254
|
+
"## Steps",
|
|
1255
|
+
"",
|
|
1256
|
+
"1. Read the provided transcript file",
|
|
1257
|
+
"2. Execute Phase 1 (Extract) \u2014 categorize transcript content into",
|
|
1258
|
+
" decisions, requirements, action items, open questions, and more",
|
|
1259
|
+
"3. Write the extraction to a markdown file",
|
|
1260
|
+
"4. Create downstream phase issues using `gh issue create`:",
|
|
1261
|
+
" - `meeting:notes` issue (always)",
|
|
1262
|
+
" - `meeting:draft` issue (if requirements or decisions were found)",
|
|
1263
|
+
" - `meeting:link` issue (always)",
|
|
1264
|
+
"5. Each downstream issue includes `Depends on:` linking to its predecessor",
|
|
1265
|
+
"6. Commit and push the extraction file",
|
|
1266
|
+
"",
|
|
1267
|
+
"## Input",
|
|
1268
|
+
"",
|
|
1269
|
+
"Provide a path to a meeting transcript file (text or markdown).",
|
|
1270
|
+
"The transcript should contain speaker-attributed dialogue.",
|
|
1271
|
+
"",
|
|
1272
|
+
"## Output",
|
|
1273
|
+
"",
|
|
1274
|
+
"- An extraction markdown file with categorized meeting content",
|
|
1275
|
+
"- Phase issues with `meeting:*` labels for downstream agent sessions",
|
|
1276
|
+
" to pick up (notes, draft, link)"
|
|
1277
|
+
].join("\n")
|
|
1278
|
+
};
|
|
1279
|
+
var meetingAnalysisBundle = {
|
|
1280
|
+
name: "meeting-analysis",
|
|
1281
|
+
description: "Meeting transcript processing workflow with 4-phase pipeline (extract, notes, draft, link)",
|
|
1282
|
+
appliesWhen: () => true,
|
|
1283
|
+
rules: [
|
|
1284
|
+
{
|
|
1285
|
+
name: "meeting-processing-workflow",
|
|
1286
|
+
description: "Describes the 4-phase meeting processing pipeline, extraction taxonomy, and labeling conventions",
|
|
1287
|
+
scope: AGENT_RULE_SCOPE.ALWAYS,
|
|
1288
|
+
content: [
|
|
1289
|
+
"# Meeting Processing Workflow",
|
|
1290
|
+
"",
|
|
1291
|
+
"Use `/process-meeting <path>` to process a meeting transcript through a",
|
|
1292
|
+
"4-phase pipeline (extract \u2192 notes \u2192 draft \u2192 link). Each phase runs as a",
|
|
1293
|
+
"separate agent session tracked by a GitHub issue with a `meeting:*` label.",
|
|
1294
|
+
"See the `meeting-analyst` agent definition for full workflow details."
|
|
1295
|
+
].join("\n"),
|
|
1296
|
+
platforms: {
|
|
1297
|
+
cursor: { exclude: true }
|
|
1298
|
+
},
|
|
1299
|
+
tags: ["workflow"]
|
|
1300
|
+
}
|
|
1301
|
+
],
|
|
1302
|
+
skills: [processMeetingSkill],
|
|
1303
|
+
subAgents: [meetingAnalystSubAgent]
|
|
1304
|
+
};
|
|
1305
|
+
|
|
998
1306
|
// src/pnpm/pnpm-workspace.ts
|
|
999
1307
|
var import_path = require("path");
|
|
1000
1308
|
var import_projen = require("projen");
|
|
@@ -2011,7 +2319,8 @@ var BUILT_IN_BUNDLES = [
|
|
|
2011
2319
|
awsCdkBundle,
|
|
2012
2320
|
projenBundle,
|
|
2013
2321
|
githubWorkflowBundle,
|
|
2014
|
-
slackBundle
|
|
2322
|
+
slackBundle,
|
|
2323
|
+
meetingAnalysisBundle
|
|
2015
2324
|
];
|
|
2016
2325
|
|
|
2017
2326
|
// src/agent/bundles/scope.ts
|
|
@@ -2343,6 +2652,7 @@ var ClaudeRenderer = class _ClaudeRenderer {
|
|
|
2343
2652
|
}
|
|
2344
2653
|
static renderSkills(component, skills) {
|
|
2345
2654
|
for (const skill of skills) {
|
|
2655
|
+
if (skill.platforms?.claude?.exclude) continue;
|
|
2346
2656
|
const lines = [];
|
|
2347
2657
|
lines.push("---");
|
|
2348
2658
|
lines.push(`name: "${skill.name}"`);
|
|
@@ -2353,8 +2663,9 @@ var ClaudeRenderer = class _ClaudeRenderer {
|
|
|
2353
2663
|
if (skill.userInvocable === false) {
|
|
2354
2664
|
lines.push(`user-invocable: false`);
|
|
2355
2665
|
}
|
|
2356
|
-
|
|
2357
|
-
|
|
2666
|
+
const resolvedSkillModel = resolveModelAlias(skill.model);
|
|
2667
|
+
if (resolvedSkillModel) {
|
|
2668
|
+
lines.push(`model: "${resolvedSkillModel}"`);
|
|
2358
2669
|
}
|
|
2359
2670
|
if (skill.effort) {
|
|
2360
2671
|
lines.push(`effort: "${skill.effort}"`);
|
|
@@ -2396,8 +2707,9 @@ var ClaudeRenderer = class _ClaudeRenderer {
|
|
|
2396
2707
|
lines.push(`name: ${agent.name}`);
|
|
2397
2708
|
lines.push(`description: >-`);
|
|
2398
2709
|
lines.push(` ${agent.description}`);
|
|
2399
|
-
|
|
2400
|
-
|
|
2710
|
+
const resolvedModel = resolveModelAlias(agent.model);
|
|
2711
|
+
if (resolvedModel) {
|
|
2712
|
+
lines.push(`model: ${resolvedModel}`);
|
|
2401
2713
|
}
|
|
2402
2714
|
if (agent.tools && agent.tools.length > 0) {
|
|
2403
2715
|
lines.push(`tools:`);
|
|
@@ -2510,6 +2822,7 @@ var CursorRenderer = class _CursorRenderer {
|
|
|
2510
2822
|
}
|
|
2511
2823
|
static renderSkills(component, skills) {
|
|
2512
2824
|
for (const skill of skills) {
|
|
2825
|
+
if (skill.platforms?.cursor?.exclude) continue;
|
|
2513
2826
|
const lines = [];
|
|
2514
2827
|
lines.push("---");
|
|
2515
2828
|
lines.push(`name: "${skill.name}"`);
|
|
@@ -2551,9 +2864,6 @@ var CursorRenderer = class _CursorRenderer {
|
|
|
2551
2864
|
lines.push(`name: ${agent.name}`);
|
|
2552
2865
|
lines.push(`description: >-`);
|
|
2553
2866
|
lines.push(` ${agent.description}`);
|
|
2554
|
-
if (agent.model) {
|
|
2555
|
-
lines.push(`model: ${agent.model}`);
|
|
2556
|
-
}
|
|
2557
2867
|
if (agent.platforms?.cursor?.readonly) {
|
|
2558
2868
|
lines.push(`readonly: true`);
|
|
2559
2869
|
}
|
|
@@ -3859,6 +4169,198 @@ function addBuildCompleteJob(buildWorkflow) {
|
|
|
3859
4169
|
});
|
|
3860
4170
|
}
|
|
3861
4171
|
|
|
4172
|
+
// src/workflows/sync-labels.ts
|
|
4173
|
+
var import_projen15 = require("projen");
|
|
4174
|
+
var import_workflows_model4 = require("projen/lib/github/workflows-model");
|
|
4175
|
+
var DEFAULT_STATUS_LABELS = [
|
|
4176
|
+
{
|
|
4177
|
+
name: "status:ready",
|
|
4178
|
+
color: "0E8A16",
|
|
4179
|
+
description: "Task is ready for pickup"
|
|
4180
|
+
},
|
|
4181
|
+
{
|
|
4182
|
+
name: "status:in-progress",
|
|
4183
|
+
color: "FBCA04",
|
|
4184
|
+
description: "Actively being worked on"
|
|
4185
|
+
},
|
|
4186
|
+
{
|
|
4187
|
+
name: "status:blocked",
|
|
4188
|
+
color: "D93F0B",
|
|
4189
|
+
description: "Blocked on a dependency or question"
|
|
4190
|
+
},
|
|
4191
|
+
{
|
|
4192
|
+
name: "status:done",
|
|
4193
|
+
color: "6F42C1",
|
|
4194
|
+
description: "Task completed and closed"
|
|
4195
|
+
},
|
|
4196
|
+
{
|
|
4197
|
+
name: "status:deferred",
|
|
4198
|
+
color: "C2E0C6",
|
|
4199
|
+
description: "Intentionally parked \u2014 not ready for pickup"
|
|
4200
|
+
},
|
|
4201
|
+
{
|
|
4202
|
+
name: "status:needs-attention",
|
|
4203
|
+
color: "FF0000",
|
|
4204
|
+
description: "Requires human review"
|
|
4205
|
+
}
|
|
4206
|
+
];
|
|
4207
|
+
var DEFAULT_PRIORITY_LABELS = [
|
|
4208
|
+
{
|
|
4209
|
+
name: "priority:critical",
|
|
4210
|
+
color: "B60205",
|
|
4211
|
+
description: "Critical priority \u2014 address immediately"
|
|
4212
|
+
},
|
|
4213
|
+
{
|
|
4214
|
+
name: "priority:high",
|
|
4215
|
+
color: "D93F0B",
|
|
4216
|
+
description: "High priority \u2014 pick before normal"
|
|
4217
|
+
},
|
|
4218
|
+
{
|
|
4219
|
+
name: "priority:medium",
|
|
4220
|
+
color: "E4E669",
|
|
4221
|
+
description: "Medium priority"
|
|
4222
|
+
},
|
|
4223
|
+
{
|
|
4224
|
+
name: "priority:low",
|
|
4225
|
+
color: "D4C5F9",
|
|
4226
|
+
description: "Low priority \u2014 skip if higher-priority work exists"
|
|
4227
|
+
},
|
|
4228
|
+
{
|
|
4229
|
+
name: "priority:trivial",
|
|
4230
|
+
color: "EDEDED",
|
|
4231
|
+
description: "Trivial priority \u2014 address when convenient"
|
|
4232
|
+
}
|
|
4233
|
+
];
|
|
4234
|
+
var DEFAULT_TYPE_LABELS = [
|
|
4235
|
+
{
|
|
4236
|
+
name: "type:feat",
|
|
4237
|
+
color: "1D76DB",
|
|
4238
|
+
description: "New feature or functionality"
|
|
4239
|
+
},
|
|
4240
|
+
{
|
|
4241
|
+
name: "type:fix",
|
|
4242
|
+
color: "D73A4A",
|
|
4243
|
+
description: "Bug fix"
|
|
4244
|
+
},
|
|
4245
|
+
{
|
|
4246
|
+
name: "type:docs",
|
|
4247
|
+
color: "0075CA",
|
|
4248
|
+
description: "Documentation only"
|
|
4249
|
+
},
|
|
4250
|
+
{
|
|
4251
|
+
name: "type:style",
|
|
4252
|
+
color: "BFD4F2",
|
|
4253
|
+
description: "Code style (formatting, whitespace) \u2014 no logic change"
|
|
4254
|
+
},
|
|
4255
|
+
{
|
|
4256
|
+
name: "type:refactor",
|
|
4257
|
+
color: "A2EEEF",
|
|
4258
|
+
description: "Code restructure \u2014 no feature or fix"
|
|
4259
|
+
},
|
|
4260
|
+
{
|
|
4261
|
+
name: "type:perf",
|
|
4262
|
+
color: "F9D0C4",
|
|
4263
|
+
description: "Performance improvement"
|
|
4264
|
+
},
|
|
4265
|
+
{
|
|
4266
|
+
name: "type:test",
|
|
4267
|
+
color: "BFD4F2",
|
|
4268
|
+
description: "Adding or updating tests"
|
|
4269
|
+
},
|
|
4270
|
+
{
|
|
4271
|
+
name: "type:build",
|
|
4272
|
+
color: "E6CCF5",
|
|
4273
|
+
description: "Build system or external dependencies"
|
|
4274
|
+
},
|
|
4275
|
+
{
|
|
4276
|
+
name: "type:ci",
|
|
4277
|
+
color: "D4C5F9",
|
|
4278
|
+
description: "CI configuration changes"
|
|
4279
|
+
},
|
|
4280
|
+
{
|
|
4281
|
+
name: "type:chore",
|
|
4282
|
+
color: "E6E6E6",
|
|
4283
|
+
description: "Maintenance tasks (deps, tooling, config)"
|
|
4284
|
+
},
|
|
4285
|
+
{
|
|
4286
|
+
name: "type:revert",
|
|
4287
|
+
color: "EDEDED",
|
|
4288
|
+
description: "Revert a previous commit"
|
|
4289
|
+
},
|
|
4290
|
+
{
|
|
4291
|
+
name: "type:release",
|
|
4292
|
+
color: "0E8A16",
|
|
4293
|
+
description: "Release preparation and version bumps"
|
|
4294
|
+
},
|
|
4295
|
+
{
|
|
4296
|
+
name: "type:hotfix",
|
|
4297
|
+
color: "B60205",
|
|
4298
|
+
description: "Urgent production fix"
|
|
4299
|
+
}
|
|
4300
|
+
];
|
|
4301
|
+
var DEFAULT_WORKFLOW_NAME2 = "sync-labels";
|
|
4302
|
+
var LABELS_CONFIG_PATH = ".github/labels.yml";
|
|
4303
|
+
function addSyncLabelsWorkflow(project, options) {
|
|
4304
|
+
const workflowName = options.workflowName ?? DEFAULT_WORKFLOW_NAME2;
|
|
4305
|
+
const deleteOtherLabels = options.deleteOtherLabels ?? true;
|
|
4306
|
+
const allLabels = [
|
|
4307
|
+
...DEFAULT_STATUS_LABELS,
|
|
4308
|
+
...DEFAULT_PRIORITY_LABELS,
|
|
4309
|
+
...DEFAULT_TYPE_LABELS,
|
|
4310
|
+
...options.labels ?? []
|
|
4311
|
+
];
|
|
4312
|
+
new LabelsFile(project, allLabels);
|
|
4313
|
+
const workflow = project.github?.addWorkflow(workflowName);
|
|
4314
|
+
if (!workflow) {
|
|
4315
|
+
return;
|
|
4316
|
+
}
|
|
4317
|
+
workflow.on({
|
|
4318
|
+
push: {
|
|
4319
|
+
branches: ["main"],
|
|
4320
|
+
paths: [LABELS_CONFIG_PATH]
|
|
4321
|
+
},
|
|
4322
|
+
workflowDispatch: {}
|
|
4323
|
+
});
|
|
4324
|
+
workflow.addJobs({
|
|
4325
|
+
sync: {
|
|
4326
|
+
name: "Sync labels",
|
|
4327
|
+
runsOn: ["ubuntu-latest"],
|
|
4328
|
+
permissions: {
|
|
4329
|
+
contents: import_workflows_model4.JobPermission.READ,
|
|
4330
|
+
issues: import_workflows_model4.JobPermission.WRITE
|
|
4331
|
+
},
|
|
4332
|
+
steps: [
|
|
4333
|
+
{
|
|
4334
|
+
name: "Checkout",
|
|
4335
|
+
uses: "actions/checkout@v6"
|
|
4336
|
+
},
|
|
4337
|
+
{
|
|
4338
|
+
name: "Sync labels",
|
|
4339
|
+
uses: "EndBug/label-sync@v2",
|
|
4340
|
+
with: {
|
|
4341
|
+
"config-file": LABELS_CONFIG_PATH,
|
|
4342
|
+
"delete-other-labels": deleteOtherLabels,
|
|
4343
|
+
token: "${{ secrets.GITHUB_TOKEN }}"
|
|
4344
|
+
}
|
|
4345
|
+
}
|
|
4346
|
+
]
|
|
4347
|
+
}
|
|
4348
|
+
});
|
|
4349
|
+
}
|
|
4350
|
+
var LabelsFile = class extends import_projen15.Component {
|
|
4351
|
+
constructor(project, labels) {
|
|
4352
|
+
super(project);
|
|
4353
|
+
new import_projen15.YamlFile(project, LABELS_CONFIG_PATH, {
|
|
4354
|
+
obj: labels.map((l) => ({
|
|
4355
|
+
name: l.name,
|
|
4356
|
+
color: l.color,
|
|
4357
|
+
description: l.description
|
|
4358
|
+
})),
|
|
4359
|
+
committed: true
|
|
4360
|
+
});
|
|
4361
|
+
}
|
|
4362
|
+
};
|
|
4363
|
+
|
|
3862
4364
|
// src/projects/monorepo-project.ts
|
|
3863
4365
|
var CONFIGULATOR_PACKAGE_NAME = "@codedrifters/configulator";
|
|
3864
4366
|
var postInstallDependenciesMap = /* @__PURE__ */ new WeakMap();
|
|
@@ -4108,6 +4610,12 @@ var MonorepoProject = class extends import_typescript3.TypeScriptAppProject {
|
|
|
4108
4610
|
typeof options.agentConfig === "object" ? options.agentConfig : {}
|
|
4109
4611
|
);
|
|
4110
4612
|
}
|
|
4613
|
+
if (options.syncLabels !== false) {
|
|
4614
|
+
addSyncLabelsWorkflow(
|
|
4615
|
+
this,
|
|
4616
|
+
typeof options.syncLabels === "object" ? options.syncLabels : {}
|
|
4617
|
+
);
|
|
4618
|
+
}
|
|
4111
4619
|
if (this.buildWorkflow) {
|
|
4112
4620
|
addBuildCompleteJob(this.buildWorkflow);
|
|
4113
4621
|
}
|
|
@@ -4166,9 +4674,9 @@ var MonorepoProject = class extends import_typescript3.TypeScriptAppProject {
|
|
|
4166
4674
|
|
|
4167
4675
|
// src/typescript/typescript-config.ts
|
|
4168
4676
|
var import_node_path2 = require("path");
|
|
4169
|
-
var
|
|
4677
|
+
var import_projen16 = require("projen");
|
|
4170
4678
|
var import_path2 = require("projen/lib/util/path");
|
|
4171
|
-
var TypeScriptConfig = class extends
|
|
4679
|
+
var TypeScriptConfig = class extends import_projen16.Component {
|
|
4172
4680
|
constructor(project) {
|
|
4173
4681
|
super(project);
|
|
4174
4682
|
let tsPaths = {};
|
|
@@ -4196,12 +4704,12 @@ var TypeScriptConfig = class extends import_projen15.Component {
|
|
|
4196
4704
|
|
|
4197
4705
|
// src/workflows/aws-deploy-workflow.ts
|
|
4198
4706
|
var import_utils11 = __toESM(require_lib());
|
|
4199
|
-
var
|
|
4707
|
+
var import_projen17 = require("projen");
|
|
4200
4708
|
var import_build = require("projen/lib/build");
|
|
4201
4709
|
var import_github2 = require("projen/lib/github");
|
|
4202
|
-
var
|
|
4710
|
+
var import_workflows_model5 = require("projen/lib/github/workflows-model");
|
|
4203
4711
|
var PROD_DEPLOY_NAME = "prod-deploy";
|
|
4204
|
-
var AwsDeployWorkflow = class _AwsDeployWorkflow extends
|
|
4712
|
+
var AwsDeployWorkflow = class _AwsDeployWorkflow extends import_projen17.Component {
|
|
4205
4713
|
constructor(project, options = {}) {
|
|
4206
4714
|
super(project);
|
|
4207
4715
|
this.project = project;
|
|
@@ -4428,8 +4936,8 @@ var AwsDeployWorkflow = class _AwsDeployWorkflow extends import_projen16.Compone
|
|
|
4428
4936
|
],
|
|
4429
4937
|
runsOn: ["ubuntu-latest"],
|
|
4430
4938
|
permissions: {
|
|
4431
|
-
contents:
|
|
4432
|
-
idToken:
|
|
4939
|
+
contents: import_workflows_model5.JobPermission.READ,
|
|
4940
|
+
idToken: import_workflows_model5.JobPermission.WRITE
|
|
4433
4941
|
},
|
|
4434
4942
|
concurrency: deployJobName,
|
|
4435
4943
|
if: jobCondition,
|
|
@@ -4476,6 +4984,9 @@ var AwsDeployWorkflow = class _AwsDeployWorkflow extends import_projen16.Compone
|
|
|
4476
4984
|
BUILT_IN_BUNDLES,
|
|
4477
4985
|
CLAUDE_RULE_TARGET,
|
|
4478
4986
|
COMPLETE_JOB_ID,
|
|
4987
|
+
DEFAULT_PRIORITY_LABELS,
|
|
4988
|
+
DEFAULT_STATUS_LABELS,
|
|
4989
|
+
DEFAULT_TYPE_LABELS,
|
|
4479
4990
|
JsiiFaker,
|
|
4480
4991
|
MCP_TRANSPORT,
|
|
4481
4992
|
MERGE_METHODS,
|
|
@@ -4500,13 +5011,16 @@ var AwsDeployWorkflow = class _AwsDeployWorkflow extends import_projen16.Compone
|
|
|
4500
5011
|
Vitest,
|
|
4501
5012
|
addApproveMergeUpgradeWorkflow,
|
|
4502
5013
|
addBuildCompleteJob,
|
|
5014
|
+
addSyncLabelsWorkflow,
|
|
4503
5015
|
awsCdkBundle,
|
|
4504
5016
|
baseBundle,
|
|
4505
5017
|
getLatestEligibleVersion,
|
|
4506
5018
|
githubWorkflowBundle,
|
|
4507
5019
|
jestBundle,
|
|
5020
|
+
meetingAnalysisBundle,
|
|
4508
5021
|
pnpmBundle,
|
|
4509
5022
|
projenBundle,
|
|
5023
|
+
resolveModelAlias,
|
|
4510
5024
|
resolveTemplateVariables,
|
|
4511
5025
|
slackBundle,
|
|
4512
5026
|
turborepoBundle,
|