@jterrats/open-orchestra 0.4.2-beta.1 → 0.5.0-beta.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.
Files changed (170) hide show
  1. package/AGENTS.md +5 -3
  2. package/README.md +29 -5
  3. package/dist/advisory-artifacts.d.ts +20 -0
  4. package/dist/advisory-artifacts.js +136 -0
  5. package/dist/advisory-artifacts.js.map +1 -0
  6. package/dist/assets/web-console.js +436 -4
  7. package/dist/cli.js +16 -117
  8. package/dist/cli.js.map +1 -1
  9. package/dist/command-manifest.d.ts +6 -0
  10. package/dist/command-manifest.js +141 -43
  11. package/dist/command-manifest.js.map +1 -1
  12. package/dist/command-utils.d.ts +5 -0
  13. package/dist/command-utils.js +23 -0
  14. package/dist/command-utils.js.map +1 -1
  15. package/dist/commands.d.ts +7 -42
  16. package/dist/commands.js +214 -1356
  17. package/dist/commands.js.map +1 -1
  18. package/dist/constants.js +3 -0
  19. package/dist/constants.js.map +1 -1
  20. package/dist/context-budget.d.ts +4 -0
  21. package/dist/context-budget.js +119 -0
  22. package/dist/context-budget.js.map +1 -0
  23. package/dist/delivery-commands.d.ts +10 -0
  24. package/dist/delivery-commands.js +152 -0
  25. package/dist/delivery-commands.js.map +1 -0
  26. package/dist/github.d.ts +50 -1
  27. package/dist/github.js +234 -0
  28. package/dist/github.js.map +1 -1
  29. package/dist/health-checks.d.ts +1 -0
  30. package/dist/health-checks.js +11 -1
  31. package/dist/health-checks.js.map +1 -1
  32. package/dist/health-commands.js +2 -0
  33. package/dist/health-commands.js.map +1 -1
  34. package/dist/mcp-oauth-proxy.d.ts +32 -0
  35. package/dist/mcp-oauth-proxy.js +120 -0
  36. package/dist/mcp-oauth-proxy.js.map +1 -1
  37. package/dist/memory.d.ts +2 -1
  38. package/dist/memory.js +71 -10
  39. package/dist/memory.js.map +1 -1
  40. package/dist/package-update-check.d.ts +5 -1
  41. package/dist/package-update-check.js +20 -8
  42. package/dist/package-update-check.js.map +1 -1
  43. package/dist/planning-commands.d.ts +14 -0
  44. package/dist/planning-commands.js +372 -0
  45. package/dist/planning-commands.js.map +1 -0
  46. package/dist/release-candidate.d.ts +2 -0
  47. package/dist/release-candidate.js +9 -14
  48. package/dist/release-candidate.js.map +1 -1
  49. package/dist/release-commands.d.ts +2 -0
  50. package/dist/release-commands.js +58 -6
  51. package/dist/release-commands.js.map +1 -1
  52. package/dist/release-readiness.d.ts +49 -0
  53. package/dist/release-readiness.js +172 -0
  54. package/dist/release-readiness.js.map +1 -0
  55. package/dist/runtime-commands.js +11 -4
  56. package/dist/runtime-commands.js.map +1 -1
  57. package/dist/runtime-execution-renderer.js +2 -0
  58. package/dist/runtime-execution-renderer.js.map +1 -1
  59. package/dist/runtime-execution.d.ts +4 -2
  60. package/dist/runtime-execution.js +11 -4
  61. package/dist/runtime-execution.js.map +1 -1
  62. package/dist/setup-agents-import.d.ts +42 -0
  63. package/dist/setup-agents-import.js +335 -0
  64. package/dist/setup-agents-import.js.map +1 -0
  65. package/dist/skills-catalog-service.d.ts +2 -0
  66. package/dist/skills-catalog-service.js +8 -0
  67. package/dist/skills-catalog-service.js.map +1 -0
  68. package/dist/skills-catalog.d.ts +2 -0
  69. package/dist/skills-catalog.js +389 -0
  70. package/dist/skills-catalog.js.map +1 -0
  71. package/dist/skills-commands.js +1 -11
  72. package/dist/skills-commands.js.map +1 -1
  73. package/dist/skills-events.d.ts +9 -0
  74. package/dist/skills-events.js +50 -0
  75. package/dist/skills-events.js.map +1 -0
  76. package/dist/skills-memory.d.ts +18 -0
  77. package/dist/skills-memory.js +127 -0
  78. package/dist/skills-memory.js.map +1 -0
  79. package/dist/skills-planning.d.ts +2 -0
  80. package/dist/skills-planning.js +87 -0
  81. package/dist/skills-planning.js.map +1 -0
  82. package/dist/skills-render.d.ts +14 -0
  83. package/dist/skills-render.js +83 -0
  84. package/dist/skills-render.js.map +1 -0
  85. package/dist/skills-validation.d.ts +2 -0
  86. package/dist/skills-validation.js +49 -0
  87. package/dist/skills-validation.js.map +1 -0
  88. package/dist/skills.d.ts +6 -42
  89. package/dist/skills.js +6 -773
  90. package/dist/skills.js.map +1 -1
  91. package/dist/task-graph-commands.d.ts +14 -0
  92. package/dist/task-graph-commands.js +367 -0
  93. package/dist/task-graph-commands.js.map +1 -0
  94. package/dist/tool-commands.js +8 -0
  95. package/dist/tool-commands.js.map +1 -1
  96. package/dist/types/context.d.ts +12 -0
  97. package/dist/types/context.js +2 -0
  98. package/dist/types/context.js.map +1 -0
  99. package/dist/types/metrics.d.ts +114 -0
  100. package/dist/types/metrics.js +2 -0
  101. package/dist/types/metrics.js.map +1 -0
  102. package/dist/types/model-config.d.ts +212 -0
  103. package/dist/types/model-config.js +2 -0
  104. package/dist/types/model-config.js.map +1 -0
  105. package/dist/types/runtime.d.ts +93 -0
  106. package/dist/types/runtime.js +2 -0
  107. package/dist/types/runtime.js.map +1 -0
  108. package/dist/types/skills.d.ts +147 -0
  109. package/dist/types/skills.js +2 -0
  110. package/dist/types/skills.js.map +1 -0
  111. package/dist/types/tasks.d.ts +171 -0
  112. package/dist/types/tasks.js +2 -0
  113. package/dist/types/tasks.js.map +1 -0
  114. package/dist/types/workflow-run.d.ts +79 -0
  115. package/dist/types/workflow-run.js +2 -0
  116. package/dist/types/workflow-run.js.map +1 -0
  117. package/dist/types.d.ts +13 -798
  118. package/dist/types.js +1 -1
  119. package/dist/types.js.map +1 -1
  120. package/dist/upgrade-commands.d.ts +2 -0
  121. package/dist/upgrade-commands.js +65 -0
  122. package/dist/upgrade-commands.js.map +1 -0
  123. package/dist/web-api-read-routes.d.ts +5 -0
  124. package/dist/web-api-read-routes.js +37 -0
  125. package/dist/web-api-read-routes.js.map +1 -0
  126. package/dist/web-api.d.ts +1 -3
  127. package/dist/web-api.js +145 -44
  128. package/dist/web-api.js.map +1 -1
  129. package/dist/web-console-sections.d.ts +2 -0
  130. package/dist/web-console-sections.js +7 -0
  131. package/dist/web-console-sections.js.map +1 -0
  132. package/dist/web-console.js +23 -3
  133. package/dist/web-console.js.map +1 -1
  134. package/dist/workflow-approval-service.d.ts +9 -0
  135. package/dist/workflow-approval-service.js +126 -0
  136. package/dist/workflow-approval-service.js.map +1 -0
  137. package/dist/workflow-approval-utils.d.ts +10 -0
  138. package/dist/workflow-approval-utils.js +82 -0
  139. package/dist/workflow-approval-utils.js.map +1 -0
  140. package/dist/workflow-budget-utils.d.ts +7 -0
  141. package/dist/workflow-budget-utils.js +96 -0
  142. package/dist/workflow-budget-utils.js.map +1 -0
  143. package/dist/workflow-evidence-service.d.ts +7 -0
  144. package/dist/workflow-evidence-service.js +100 -0
  145. package/dist/workflow-evidence-service.js.map +1 -0
  146. package/dist/workflow-run-commands.d.ts +8 -0
  147. package/dist/workflow-run-commands.js +479 -0
  148. package/dist/workflow-run-commands.js.map +1 -0
  149. package/dist/workflow-services.d.ts +8 -18
  150. package/dist/workflow-services.js +30 -481
  151. package/dist/workflow-services.js.map +1 -1
  152. package/dist/workflow-summary-service.d.ts +4 -0
  153. package/dist/workflow-summary-service.js +82 -0
  154. package/dist/workflow-summary-service.js.map +1 -0
  155. package/dist/workflow-templates.d.ts +1 -0
  156. package/dist/workflow-templates.js +1 -0
  157. package/dist/workflow-templates.js.map +1 -1
  158. package/dist/workspace.d.ts +18 -1
  159. package/dist/workspace.js +72 -4
  160. package/dist/workspace.js.map +1 -1
  161. package/docs/command-contracts.md +22 -0
  162. package/docs/mcp-oauth-proxy-evaluation.md +14 -0
  163. package/docs/orchestra-mvp.md +158 -114
  164. package/docs/package-naming.md +20 -0
  165. package/docs/persona-workflows.md +209 -0
  166. package/docs/runtime-adapters.md +19 -14
  167. package/docs/runtime-llm-flow.md +29 -28
  168. package/docs/setup-agents-bridge.md +61 -0
  169. package/docs/traceability-flow.md +89 -0
  170. package/package.json +9 -7
@@ -0,0 +1,335 @@
1
+ import path from "node:path";
2
+ import { readdir, readFile } from "node:fs/promises";
3
+ import { removeUndefined } from "./command-utils.js";
4
+ import { addTask, listTasks } from "./workflow-services.js";
5
+ import { appendEvent } from "./workspace.js";
6
+ import { exists, readJson } from "./fs-utils.js";
7
+ export async function importSetupAgentsArtifacts({ root = process.cwd(), source, } = {}) {
8
+ const sourceRoot = path.resolve(root, source ?? ".setup-agents");
9
+ const profiles = await readProfiles(sourceRoot);
10
+ const profileRoles = buildProfileRoleMap(profiles);
11
+ const records = await readSetupAgentsRecords(sourceRoot);
12
+ const setupTasks = records
13
+ .map((record) => toSetupAgentsTask(record, profileRoles))
14
+ .filter((task) => task !== undefined);
15
+ const existingTasks = new Map((await listTasks(root)).map((task) => [task.id, task]));
16
+ const report = emptyReport(sourceRoot);
17
+ for (const profile of profiles) {
18
+ const mappedRole = roleFromProfile(profile);
19
+ const item = {
20
+ id: profile.id,
21
+ title: profile.label ?? profile.id,
22
+ ownerRole: mappedRole,
23
+ };
24
+ if (mappedRole === "developer" && !isKnownRoleName(profile.id)) {
25
+ report.profiles.conflicts.push({
26
+ id: profile.id,
27
+ field: "ownerRole",
28
+ existing: "developer",
29
+ incoming: profile.roleId ??
30
+ profile.ownerRole ??
31
+ profile.orchestraRole ??
32
+ profile.id,
33
+ });
34
+ continue;
35
+ }
36
+ report.profiles.imported.push(item);
37
+ }
38
+ for (const task of setupTasks) {
39
+ const existingTask = existingTasks.get(task.id);
40
+ if (existingTask) {
41
+ const conflict = findTaskConflict(existingTask, task);
42
+ const skippedItem = toImportItem(task);
43
+ if (conflict) {
44
+ report.tasks.conflicts.push(conflict);
45
+ }
46
+ else {
47
+ report.tasks.skipped.push(skippedItem);
48
+ pushReferences(report.evidence.skipped, task.id, task.evidenceIds);
49
+ pushReferences(report.handoffs.skipped, task.id, task.handoffIds);
50
+ }
51
+ continue;
52
+ }
53
+ await addTask(toAddTaskInput(task), root);
54
+ existingTasks.set(task.id, { ...toAddTaskInput(task), status: "pending" });
55
+ report.tasks.imported.push(toImportItem(task));
56
+ pushReferences(report.evidence.imported, task.id, task.evidenceIds);
57
+ pushReferences(report.handoffs.imported, task.id, task.handoffIds);
58
+ }
59
+ await appendEvent(root, {
60
+ type: "SETUP_AGENTS_IMPORTED",
61
+ actor: "parent",
62
+ summary: "Imported setup-agents profiles and task contract references",
63
+ artifacts: [path.relative(root, sourceRoot) || "."],
64
+ metadata: {
65
+ profilesImported: report.profiles.imported.length,
66
+ profileConflicts: report.profiles.conflicts.length,
67
+ tasksImported: report.tasks.imported.length,
68
+ tasksSkipped: report.tasks.skipped.length,
69
+ taskConflicts: report.tasks.conflicts.length,
70
+ evidenceReferencesImported: countReferences(report.evidence.imported),
71
+ handoffReferencesImported: countReferences(report.handoffs.imported),
72
+ },
73
+ });
74
+ return report;
75
+ }
76
+ function emptyReport(sourceRoot) {
77
+ return {
78
+ sourceRoot,
79
+ profiles: { imported: [], skipped: [], conflicts: [] },
80
+ tasks: { imported: [], skipped: [], conflicts: [] },
81
+ evidence: { imported: [], skipped: [], conflicts: [] },
82
+ handoffs: { imported: [], skipped: [], conflicts: [] },
83
+ };
84
+ }
85
+ async function readProfiles(sourceRoot) {
86
+ const profilesPath = path.join(sourceRoot, "open-orchestra", "profiles.json");
87
+ const rawProfiles = await readJson(profilesPath, []);
88
+ return rawProfiles
89
+ .map((profile) => (isJsonObject(profile) ? profile : undefined))
90
+ .filter((profile) => profile !== undefined)
91
+ .map((profile) => removeUndefined({
92
+ id: stringField(profile, "id") ?? stringField(profile, "profileId") ?? "",
93
+ roleId: stringField(profile, "roleId"),
94
+ ownerRole: stringField(profile, "ownerRole"),
95
+ orchestraRole: stringField(profile, "orchestraRole"),
96
+ label: stringField(profile, "label") ?? stringField(profile, "name"),
97
+ }))
98
+ .filter((profile) => profile.id !== "");
99
+ }
100
+ function buildProfileRoleMap(profiles) {
101
+ return new Map(profiles.map((profile) => [profile.id, roleFromProfile(profile)]));
102
+ }
103
+ function roleFromProfile(profile) {
104
+ const candidate = profile.orchestraRole ?? profile.ownerRole ?? profile.roleId ?? profile.id;
105
+ return normalizeRole(candidate);
106
+ }
107
+ async function readSetupAgentsRecords(sourceRoot) {
108
+ if (!(await exists(sourceRoot))) {
109
+ return [];
110
+ }
111
+ const files = await listRecordFiles(sourceRoot);
112
+ const records = [];
113
+ for (const filePath of files) {
114
+ const content = await readFile(filePath, "utf8");
115
+ for (const record of parseRecordContent(content)) {
116
+ if (isJsonObject(record)) {
117
+ records.push({
118
+ ...record,
119
+ sourcePath: path.relative(sourceRoot, filePath),
120
+ });
121
+ }
122
+ }
123
+ }
124
+ return records;
125
+ }
126
+ async function listRecordFiles(sourceRoot) {
127
+ const candidates = [];
128
+ const stateRoot = path.join(sourceRoot, "state");
129
+ if (await exists(stateRoot)) {
130
+ candidates.push(...(await listJsonFiles(stateRoot)));
131
+ }
132
+ for (const fileName of ["tasks.json", "tasks.jsonl"]) {
133
+ const filePath = path.join(sourceRoot, fileName);
134
+ if (await exists(filePath)) {
135
+ candidates.push(filePath);
136
+ }
137
+ }
138
+ return candidates;
139
+ }
140
+ async function listJsonFiles(directory) {
141
+ const entries = await readdir(directory, { withFileTypes: true });
142
+ const files = [];
143
+ for (const entry of entries) {
144
+ const entryPath = path.join(directory, entry.name);
145
+ if (entry.isDirectory()) {
146
+ files.push(...(await listJsonFiles(entryPath)));
147
+ }
148
+ else if (entry.name.endsWith(".json") || entry.name.endsWith(".jsonl")) {
149
+ files.push(entryPath);
150
+ }
151
+ }
152
+ return files;
153
+ }
154
+ function parseRecordContent(content) {
155
+ const trimmed = content.trim();
156
+ if (trimmed === "") {
157
+ return [];
158
+ }
159
+ if (trimmed.startsWith("[") || trimmed.startsWith("{")) {
160
+ try {
161
+ const parsed = JSON.parse(trimmed);
162
+ return Array.isArray(parsed) ? parsed : [parsed];
163
+ }
164
+ catch {
165
+ return parseJsonLines(trimmed);
166
+ }
167
+ }
168
+ return parseJsonLines(trimmed);
169
+ }
170
+ function parseJsonLines(content) {
171
+ return content
172
+ .split("\n")
173
+ .filter((line) => line.trim() !== "")
174
+ .map((line) => JSON.parse(line));
175
+ }
176
+ function toSetupAgentsTask(record, profileRoles) {
177
+ const id = stringField(record, "id") ?? stringField(record, "taskId");
178
+ if (!id || !looksLikeTask(record)) {
179
+ return undefined;
180
+ }
181
+ const profileId = stringField(record, "profileId") ?? stringField(record, "profile");
182
+ const ownerCandidate = stringField(record, "ownerRole") ??
183
+ stringField(record, "owner") ??
184
+ stringField(record, "role") ??
185
+ (profileId ? profileRoles.get(profileId) : undefined) ??
186
+ "developer";
187
+ const ownerRole = normalizeRole(ownerCandidate);
188
+ const title = stringField(record, "title") ?? stringField(record, "summary") ?? id;
189
+ const evidenceIds = stringArray(record.evidenceIds ?? record.evidence);
190
+ const handoffIds = stringArray(record.handoffIds ?? record.handoffs);
191
+ return removeUndefined({
192
+ id,
193
+ title,
194
+ ownerRole,
195
+ dependencies: stringArray(record.dependencies ?? record.dependsOn),
196
+ backlogItem: stringField(record, "backlogItem") ?? stringField(record, "backlog"),
197
+ goal: stringField(record, "goal") ?? stringField(record, "userStory"),
198
+ scope: stringField(record, "scope"),
199
+ acceptanceCriteria: stringArray(record.acceptanceCriteria),
200
+ definitionOfReady: stringArray(record.definitionOfReady),
201
+ definitionOfDone: stringArray(record.definitionOfDone),
202
+ assumptions: stringArray(record.assumptions),
203
+ risks: stringArray(record.risks),
204
+ paths: stringArray(record.paths ?? record.files),
205
+ testStrategy: stringField(record, "testStrategy"),
206
+ sourceId: id,
207
+ sourcePath: stringField(record, "sourcePath"),
208
+ profileId,
209
+ mode: stringField(record, "mode"),
210
+ contractVersion: stringField(record, "contractVersion"),
211
+ acceptanceStatus: stringField(record, "acceptanceStatus"),
212
+ acceptedBy: stringField(record, "acceptedBy"),
213
+ evidenceIds,
214
+ handoffIds,
215
+ });
216
+ }
217
+ function looksLikeTask(record) {
218
+ const kind = stringField(record, "kind") ?? stringField(record, "type");
219
+ return (kind === "task" ||
220
+ kind === "story" ||
221
+ "summary" in record ||
222
+ "title" in record ||
223
+ "acceptanceCriteria" in record);
224
+ }
225
+ function toAddTaskInput(task) {
226
+ return removeUndefined({
227
+ id: task.id,
228
+ title: task.title,
229
+ ownerRole: task.ownerRole,
230
+ dependencies: task.dependencies,
231
+ backlogItem: task.backlogItem,
232
+ goal: task.goal,
233
+ scope: task.scope,
234
+ acceptanceCriteria: task.acceptanceCriteria,
235
+ definitionOfReady: task.definitionOfReady,
236
+ definitionOfDone: task.definitionOfDone,
237
+ assumptions: task.assumptions,
238
+ risks: task.risks,
239
+ paths: task.paths,
240
+ testStrategy: task.testStrategy,
241
+ externalRefs: {
242
+ setupAgents: removeUndefined({
243
+ sourceId: task.sourceId,
244
+ sourcePath: task.sourcePath,
245
+ profileId: task.profileId,
246
+ mode: task.mode,
247
+ contractVersion: task.contractVersion,
248
+ acceptanceStatus: task.acceptanceStatus,
249
+ acceptedBy: task.acceptedBy,
250
+ evidenceIds: task.evidenceIds.length > 0 ? task.evidenceIds : undefined,
251
+ handoffIds: task.handoffIds.length > 0 ? task.handoffIds : undefined,
252
+ }),
253
+ },
254
+ });
255
+ }
256
+ function findTaskConflict(existingTask, incomingTask) {
257
+ if (existingTask.title !== incomingTask.title) {
258
+ return {
259
+ id: incomingTask.id,
260
+ field: "title",
261
+ existing: existingTask.title,
262
+ incoming: incomingTask.title,
263
+ };
264
+ }
265
+ if (existingTask.ownerRole !== incomingTask.ownerRole) {
266
+ return {
267
+ id: incomingTask.id,
268
+ field: "ownerRole",
269
+ existing: existingTask.ownerRole,
270
+ incoming: incomingTask.ownerRole,
271
+ };
272
+ }
273
+ return undefined;
274
+ }
275
+ function normalizeRole(role) {
276
+ const normalized = role
277
+ .replace(/^setup-agents:/, "")
278
+ .trim()
279
+ .toLowerCase();
280
+ const roleAliases = {
281
+ analyst: "analyst",
282
+ architect: "architect",
283
+ developer: "developer",
284
+ dev: "developer",
285
+ engineering: "developer",
286
+ implementer: "developer",
287
+ qa: "qa",
288
+ tester: "qa",
289
+ security: "security",
290
+ devops: "devops",
291
+ sre: "sre",
292
+ po: "po",
293
+ pm: "pm",
294
+ product: "po",
295
+ ux: "ux_ui_designer",
296
+ ui: "ux_ui_designer",
297
+ writer: "technical_writer",
298
+ };
299
+ return roleAliases[normalized] ?? "developer";
300
+ }
301
+ function isKnownRoleName(role) {
302
+ return (normalizeRole(role) !== "developer" ||
303
+ ["developer", "dev", "engineering", "implementer"].includes(role));
304
+ }
305
+ function toImportItem(task) {
306
+ return { id: task.id, title: task.title, ownerRole: task.ownerRole };
307
+ }
308
+ function pushReferences(target, taskId, ids) {
309
+ if (ids.length > 0) {
310
+ target.push({ taskId, ids });
311
+ }
312
+ }
313
+ function countReferences(items) {
314
+ return items.reduce((total, item) => total + item.ids.length, 0);
315
+ }
316
+ function stringField(record, field) {
317
+ const value = record[field];
318
+ return typeof value === "string" && value.trim() !== "" ? value : undefined;
319
+ }
320
+ function stringArray(value) {
321
+ if (Array.isArray(value)) {
322
+ return value.filter((entry) => typeof entry === "string" && entry.trim() !== "");
323
+ }
324
+ if (typeof value === "string" && value.trim() !== "") {
325
+ return value
326
+ .split(",")
327
+ .map((entry) => entry.trim())
328
+ .filter(Boolean);
329
+ }
330
+ return [];
331
+ }
332
+ function isJsonObject(value) {
333
+ return typeof value === "object" && value !== null && !Array.isArray(value);
334
+ }
335
+ //# sourceMappingURL=setup-agents-import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-agents-import.js","sourceRoot":"","sources":["../src/setup-agents-import.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { Skill } from "./types.js";
2
+ export declare function listSkills(): Skill[];
@@ -0,0 +1,8 @@
1
+ import { defaultSkills } from "./skills-catalog.js";
2
+ export function listSkills() {
3
+ return defaultSkills.map((skill) => ({
4
+ ...skill,
5
+ instructions: [...skill.instructions],
6
+ }));
7
+ }
8
+ //# sourceMappingURL=skills-catalog-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills-catalog-service.js","sourceRoot":"","sources":["../src/skills-catalog-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,MAAM,UAAU,UAAU;IACxB,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACnC,GAAG,KAAK;QACR,YAAY,EAAE,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC;KACtC,CAAC,CAAC,CAAC;AACN,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { Skill } from "./types.js";
2
+ export declare const defaultSkills: Skill[];