@orderful/droid 0.27.4 → 0.27.5
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/AGENTS.md +1 -0
- package/CHANGELOG.md +6 -0
- package/dist/bin/droid.js +11 -55
- package/dist/commands/tui/components/ToolDetails.d.ts.map +1 -1
- package/dist/index.js +1 -52
- package/dist/lib/migrations.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/commands/tui/components/ToolDetails.tsx +37 -10
- package/src/lib/migrations.ts +0 -75
package/AGENTS.md
CHANGED
|
@@ -71,6 +71,7 @@ Don't consolidate them. Using Ink for simple prompts would be overkill.
|
|
|
71
71
|
## Code Style
|
|
72
72
|
|
|
73
73
|
- TypeScript strict mode
|
|
74
|
+
- **Use single quotes** for strings (enforced by ESLint)
|
|
74
75
|
- Prefer `const` over `let`
|
|
75
76
|
- Use Canadian/British spelling (behaviour, colour, favourite)
|
|
76
77
|
- Use "allow list/deny list" not "whitelist/blacklist"
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @orderful/droid
|
|
2
2
|
|
|
3
|
+
## 0.27.5
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`dd0e5f1`](https://github.com/Orderful/droid/commit/dd0e5f114f11ab2ff34c6e329265ea84117792e9) Thanks [@frytyler](https://github.com/frytyler)! - Fix TUI displaying commands as `/[object Object]` instead of actual command names. Commands are now displayed correctly (e.g., `/brain, /scratchpad`) after handling both string and object formats in TOOL.yaml.
|
|
8
|
+
|
|
3
9
|
## 0.27.4
|
|
4
10
|
|
|
5
11
|
### Patch Changes
|
package/dist/bin/droid.js
CHANGED
|
@@ -642,60 +642,9 @@ function createConfigSkillNameMigration(version2) {
|
|
|
642
642
|
}
|
|
643
643
|
};
|
|
644
644
|
}
|
|
645
|
-
function createFilesystemSyncMigration(version2) {
|
|
646
|
-
return {
|
|
647
|
-
version: version2,
|
|
648
|
-
description: "Sync config with actually installed skills on filesystem",
|
|
649
|
-
up: () => {
|
|
650
|
-
const config = loadConfig();
|
|
651
|
-
const originalPlatform = config.platform;
|
|
652
|
-
let configChanged = false;
|
|
653
|
-
for (const platformKey of ["claude-code" /* ClaudeCode */, "opencode" /* OpenCode */]) {
|
|
654
|
-
if (!config.platforms[platformKey]) continue;
|
|
655
|
-
const skillsPath = getSkillsPath(platformKey);
|
|
656
|
-
if (!existsSync4(skillsPath)) continue;
|
|
657
|
-
config.platform = platformKey;
|
|
658
|
-
const trackedTools = getPlatformTools(config);
|
|
659
|
-
let platformChanged = false;
|
|
660
|
-
const bundledTools = getBundledTools();
|
|
661
|
-
const allToolNames = new Set(
|
|
662
|
-
bundledTools.flatMap(
|
|
663
|
-
(tool) => tool.includes.skills.map((s) => s.name)
|
|
664
|
-
)
|
|
665
|
-
);
|
|
666
|
-
const installedDirs = readdirSync3(skillsPath, { withFileTypes: true }).filter((dirent) => dirent.isDirectory()).map((dirent) => dirent.name);
|
|
667
|
-
for (const dirName of installedDirs) {
|
|
668
|
-
if (!allToolNames.has(dirName)) continue;
|
|
669
|
-
if (trackedTools[dirName]) continue;
|
|
670
|
-
let version3 = "0.0.0";
|
|
671
|
-
const matchingTool = bundledTools.find(
|
|
672
|
-
(tool) => tool.includes.skills.some((s) => s.name === dirName && s.required)
|
|
673
|
-
);
|
|
674
|
-
if (matchingTool) {
|
|
675
|
-
version3 = matchingTool.version;
|
|
676
|
-
}
|
|
677
|
-
trackedTools[dirName] = {
|
|
678
|
-
version: version3,
|
|
679
|
-
installed_at: (/* @__PURE__ */ new Date()).toISOString()
|
|
680
|
-
};
|
|
681
|
-
platformChanged = true;
|
|
682
|
-
configChanged = true;
|
|
683
|
-
}
|
|
684
|
-
if (platformChanged) {
|
|
685
|
-
setPlatformTools(config, trackedTools);
|
|
686
|
-
}
|
|
687
|
-
}
|
|
688
|
-
config.platform = originalPlatform;
|
|
689
|
-
if (configChanged) {
|
|
690
|
-
saveConfig(config);
|
|
691
|
-
}
|
|
692
|
-
}
|
|
693
|
-
};
|
|
694
|
-
}
|
|
695
645
|
var PACKAGE_MIGRATIONS = [
|
|
696
646
|
createPlatformSyncMigration("0.25.0"),
|
|
697
|
-
createConfigSkillNameMigration("0.27.2")
|
|
698
|
-
createFilesystemSyncMigration("0.27.4")
|
|
647
|
+
createConfigSkillNameMigration("0.27.2")
|
|
699
648
|
];
|
|
700
649
|
var TOOL_MIGRATIONS = {
|
|
701
650
|
brain: [createConfigDirMigration("droid-brain", "0.2.3")],
|
|
@@ -1974,7 +1923,13 @@ function ToolDetails({
|
|
|
1974
1923
|
const isSystemTool = tool.system === true;
|
|
1975
1924
|
const actions = installed ? [
|
|
1976
1925
|
{ id: "explore", label: "Explore", variant: "default" },
|
|
1977
|
-
...updateStatus.hasUpdate ? [
|
|
1926
|
+
...updateStatus.hasUpdate ? [
|
|
1927
|
+
{
|
|
1928
|
+
id: "update",
|
|
1929
|
+
label: `Update (${updateStatus.bundledVersion})`,
|
|
1930
|
+
variant: "primary"
|
|
1931
|
+
}
|
|
1932
|
+
] : [],
|
|
1978
1933
|
{ id: "configure", label: "Configure", variant: "default" },
|
|
1979
1934
|
// System tools can't be uninstalled
|
|
1980
1935
|
...!isSystemTool ? [{ id: "uninstall", label: "Uninstall", variant: "danger" }] : []
|
|
@@ -1990,7 +1945,8 @@ function ToolDetails({
|
|
|
1990
1945
|
tool.status && ` \xB7 ${tool.status}`,
|
|
1991
1946
|
installed && /* @__PURE__ */ jsx4(Text4, { color: colors.success, children: " \xB7 installed" }),
|
|
1992
1947
|
updateStatus.hasUpdate && /* @__PURE__ */ jsxs4(Text4, { color: colors.primary, children: [
|
|
1993
|
-
"
|
|
1948
|
+
" ",
|
|
1949
|
+
"\xB7 update (",
|
|
1994
1950
|
installedVersion,
|
|
1995
1951
|
" \u2192 ",
|
|
1996
1952
|
updateStatus.bundledVersion,
|
|
@@ -2008,7 +1964,7 @@ function ToolDetails({
|
|
|
2008
1964
|
] }),
|
|
2009
1965
|
tool.includes.commands.length > 0 && /* @__PURE__ */ jsxs4(Text4, { children: [
|
|
2010
1966
|
/* @__PURE__ */ jsx4(Text4, { color: colors.command, children: "Commands: " }),
|
|
2011
|
-
/* @__PURE__ */ jsx4(Text4, { color: colors.textMuted, children: tool.includes.commands.map((c) => `/${c}`).join(", ") })
|
|
1967
|
+
/* @__PURE__ */ jsx4(Text4, { color: colors.textMuted, children: tool.includes.commands.map((c) => typeof c === "string" ? `/${c}` : `/${c.name}`).join(", ") })
|
|
2012
1968
|
] }),
|
|
2013
1969
|
tool.includes.agents.length > 0 && /* @__PURE__ */ jsxs4(Text4, { children: [
|
|
2014
1970
|
/* @__PURE__ */ jsx4(Text4, { color: colors.agent, children: "Agents: " }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolDetails.d.ts","sourceRoot":"","sources":["../../../../src/commands/tui/components/ToolDetails.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ToolDetails.d.ts","sourceRoot":"","sources":["../../../../src/commands/tui/components/ToolDetails.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIvD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,SAAS,EACT,cAAc,GACf,EAAE,gBAAgB,2CA2HlB"}
|
package/dist/index.js
CHANGED
|
@@ -615,60 +615,9 @@ function createConfigSkillNameMigration(version) {
|
|
|
615
615
|
}
|
|
616
616
|
};
|
|
617
617
|
}
|
|
618
|
-
function createFilesystemSyncMigration(version) {
|
|
619
|
-
return {
|
|
620
|
-
version,
|
|
621
|
-
description: "Sync config with actually installed skills on filesystem",
|
|
622
|
-
up: () => {
|
|
623
|
-
const config = loadConfig();
|
|
624
|
-
const originalPlatform = config.platform;
|
|
625
|
-
let configChanged = false;
|
|
626
|
-
for (const platformKey of ["claude-code" /* ClaudeCode */, "opencode" /* OpenCode */]) {
|
|
627
|
-
if (!config.platforms[platformKey]) continue;
|
|
628
|
-
const skillsPath = getSkillsPath(platformKey);
|
|
629
|
-
if (!existsSync4(skillsPath)) continue;
|
|
630
|
-
config.platform = platformKey;
|
|
631
|
-
const trackedTools = getPlatformTools(config);
|
|
632
|
-
let platformChanged = false;
|
|
633
|
-
const bundledTools = getBundledTools();
|
|
634
|
-
const allToolNames = new Set(
|
|
635
|
-
bundledTools.flatMap(
|
|
636
|
-
(tool) => tool.includes.skills.map((s) => s.name)
|
|
637
|
-
)
|
|
638
|
-
);
|
|
639
|
-
const installedDirs = readdirSync3(skillsPath, { withFileTypes: true }).filter((dirent) => dirent.isDirectory()).map((dirent) => dirent.name);
|
|
640
|
-
for (const dirName of installedDirs) {
|
|
641
|
-
if (!allToolNames.has(dirName)) continue;
|
|
642
|
-
if (trackedTools[dirName]) continue;
|
|
643
|
-
let version2 = "0.0.0";
|
|
644
|
-
const matchingTool = bundledTools.find(
|
|
645
|
-
(tool) => tool.includes.skills.some((s) => s.name === dirName && s.required)
|
|
646
|
-
);
|
|
647
|
-
if (matchingTool) {
|
|
648
|
-
version2 = matchingTool.version;
|
|
649
|
-
}
|
|
650
|
-
trackedTools[dirName] = {
|
|
651
|
-
version: version2,
|
|
652
|
-
installed_at: (/* @__PURE__ */ new Date()).toISOString()
|
|
653
|
-
};
|
|
654
|
-
platformChanged = true;
|
|
655
|
-
configChanged = true;
|
|
656
|
-
}
|
|
657
|
-
if (platformChanged) {
|
|
658
|
-
setPlatformTools(config, trackedTools);
|
|
659
|
-
}
|
|
660
|
-
}
|
|
661
|
-
config.platform = originalPlatform;
|
|
662
|
-
if (configChanged) {
|
|
663
|
-
saveConfig(config);
|
|
664
|
-
}
|
|
665
|
-
}
|
|
666
|
-
};
|
|
667
|
-
}
|
|
668
618
|
var PACKAGE_MIGRATIONS = [
|
|
669
619
|
createPlatformSyncMigration("0.25.0"),
|
|
670
|
-
createConfigSkillNameMigration("0.27.2")
|
|
671
|
-
createFilesystemSyncMigration("0.27.4")
|
|
620
|
+
createConfigSkillNameMigration("0.27.2")
|
|
672
621
|
];
|
|
673
622
|
var TOOL_MIGRATIONS = {
|
|
674
623
|
brain: [createConfigDirMigration("droid-brain", "0.2.3")],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/lib/migrations.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,KAAK,SAAS,EAIf,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/lib/migrations.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,KAAK,SAAS,EAIf,MAAM,SAAS,CAAC;AAmOjB;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,CAE/D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAc/D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,IAAI,CAmBN;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CA2CtC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,GACvB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAStC;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,cAAc,EAAE,MAAM,GAAG;IAC5D,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAyDA"}
|
package/package.json
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { Box, Text } from 'ink';
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
isToolInstalled,
|
|
4
|
+
getInstalledToolVersion,
|
|
5
|
+
getToolUpdateStatus,
|
|
6
|
+
} from '../../../lib/tools';
|
|
3
7
|
import type { ToolManifest } from '../../../lib/types';
|
|
4
8
|
import { colors } from '../constants';
|
|
5
9
|
import { ComponentBadges } from './Badge';
|
|
@@ -26,17 +30,26 @@ export function ToolDetails({
|
|
|
26
30
|
const installed = isToolInstalled(tool.name);
|
|
27
31
|
const installedVersion = getInstalledToolVersion(tool.name);
|
|
28
32
|
const updateStatus = getToolUpdateStatus(tool.name);
|
|
29
|
-
const isSystemTool =
|
|
33
|
+
const isSystemTool =
|
|
34
|
+
(tool as ToolManifest & { system?: boolean }).system === true;
|
|
30
35
|
|
|
31
36
|
const actions = installed
|
|
32
37
|
? [
|
|
33
38
|
{ id: 'explore', label: 'Explore', variant: 'default' },
|
|
34
39
|
...(updateStatus.hasUpdate
|
|
35
|
-
? [
|
|
40
|
+
? [
|
|
41
|
+
{
|
|
42
|
+
id: 'update',
|
|
43
|
+
label: `Update (${updateStatus.bundledVersion})`,
|
|
44
|
+
variant: 'primary',
|
|
45
|
+
},
|
|
46
|
+
]
|
|
36
47
|
: []),
|
|
37
48
|
{ id: 'configure', label: 'Configure', variant: 'default' },
|
|
38
49
|
// System tools can't be uninstalled
|
|
39
|
-
...(!isSystemTool
|
|
50
|
+
...(!isSystemTool
|
|
51
|
+
? [{ id: 'uninstall', label: 'Uninstall', variant: 'danger' }]
|
|
52
|
+
: []),
|
|
40
53
|
]
|
|
41
54
|
: [
|
|
42
55
|
{ id: 'explore', label: 'Explore', variant: 'default' },
|
|
@@ -46,7 +59,9 @@ export function ToolDetails({
|
|
|
46
59
|
|
|
47
60
|
return (
|
|
48
61
|
<Box flexDirection="column" paddingLeft={2} flexGrow={1}>
|
|
49
|
-
<Text color={colors.text} bold>
|
|
62
|
+
<Text color={colors.text} bold>
|
|
63
|
+
{tool.name}
|
|
64
|
+
</Text>
|
|
50
65
|
|
|
51
66
|
<Box marginTop={1}>
|
|
52
67
|
<Text color={colors.textDim}>
|
|
@@ -54,7 +69,10 @@ export function ToolDetails({
|
|
|
54
69
|
{tool.status && ` · ${tool.status}`}
|
|
55
70
|
{installed && <Text color={colors.success}> · installed</Text>}
|
|
56
71
|
{updateStatus.hasUpdate && (
|
|
57
|
-
<Text color={colors.primary}>
|
|
72
|
+
<Text color={colors.primary}>
|
|
73
|
+
{' '}
|
|
74
|
+
· update ({installedVersion} → {updateStatus.bundledVersion})
|
|
75
|
+
</Text>
|
|
58
76
|
)}
|
|
59
77
|
</Text>
|
|
60
78
|
</Box>
|
|
@@ -74,19 +92,27 @@ export function ToolDetails({
|
|
|
74
92
|
{tool.includes.skills.length > 0 && (
|
|
75
93
|
<Text>
|
|
76
94
|
<Text color={colors.skill}>Skills: </Text>
|
|
77
|
-
<Text color={colors.textMuted}>
|
|
95
|
+
<Text color={colors.textMuted}>
|
|
96
|
+
{tool.includes.skills.map((s) => s.name).join(', ')}
|
|
97
|
+
</Text>
|
|
78
98
|
</Text>
|
|
79
99
|
)}
|
|
80
100
|
{tool.includes.commands.length > 0 && (
|
|
81
101
|
<Text>
|
|
82
102
|
<Text color={colors.command}>Commands: </Text>
|
|
83
|
-
<Text color={colors.textMuted}>
|
|
103
|
+
<Text color={colors.textMuted}>
|
|
104
|
+
{tool.includes.commands
|
|
105
|
+
.map((c) => (typeof c === 'string' ? `/${c}` : `/${c.name}`))
|
|
106
|
+
.join(', ')}
|
|
107
|
+
</Text>
|
|
84
108
|
</Text>
|
|
85
109
|
)}
|
|
86
110
|
{tool.includes.agents.length > 0 && (
|
|
87
111
|
<Text>
|
|
88
112
|
<Text color={colors.agent}>Agents: </Text>
|
|
89
|
-
<Text color={colors.textMuted}>
|
|
113
|
+
<Text color={colors.textMuted}>
|
|
114
|
+
{tool.includes.agents.join(', ')}
|
|
115
|
+
</Text>
|
|
90
116
|
</Text>
|
|
91
117
|
)}
|
|
92
118
|
</Box>
|
|
@@ -107,7 +133,8 @@ export function ToolDetails({
|
|
|
107
133
|
color={selectedAction === index ? '#ffffff' : colors.textMuted}
|
|
108
134
|
bold={selectedAction === index}
|
|
109
135
|
>
|
|
110
|
-
{' '}
|
|
136
|
+
{' '}
|
|
137
|
+
{action.label}{' '}
|
|
111
138
|
</Text>
|
|
112
139
|
))}
|
|
113
140
|
</Box>
|
package/src/lib/migrations.ts
CHANGED
|
@@ -211,80 +211,6 @@ function createConfigSkillNameMigration(version: string): Migration {
|
|
|
211
211
|
};
|
|
212
212
|
}
|
|
213
213
|
|
|
214
|
-
/**
|
|
215
|
-
* Sync config with filesystem - add any installed skills that aren't tracked
|
|
216
|
-
* This is a one-time cleanup migration to fix config inconsistencies from v0.27.x
|
|
217
|
-
*/
|
|
218
|
-
function createFilesystemSyncMigration(version: string): Migration {
|
|
219
|
-
return {
|
|
220
|
-
version,
|
|
221
|
-
description: 'Sync config with actually installed skills on filesystem',
|
|
222
|
-
up: () => {
|
|
223
|
-
const config = loadConfig();
|
|
224
|
-
const originalPlatform = config.platform;
|
|
225
|
-
let configChanged = false;
|
|
226
|
-
|
|
227
|
-
// Check both platforms
|
|
228
|
-
for (const platformKey of [Platform.ClaudeCode, Platform.OpenCode]) {
|
|
229
|
-
if (!config.platforms[platformKey]) continue;
|
|
230
|
-
|
|
231
|
-
const skillsPath = getSkillsPath(platformKey);
|
|
232
|
-
if (!existsSync(skillsPath)) continue;
|
|
233
|
-
|
|
234
|
-
config.platform = platformKey;
|
|
235
|
-
const trackedTools = getPlatformTools(config);
|
|
236
|
-
let platformChanged = false;
|
|
237
|
-
|
|
238
|
-
// Get all tool names from manifests
|
|
239
|
-
const bundledTools = getBundledTools();
|
|
240
|
-
const allToolNames = new Set(
|
|
241
|
-
bundledTools.flatMap((tool) =>
|
|
242
|
-
tool.includes.skills.map((s) => s.name),
|
|
243
|
-
),
|
|
244
|
-
);
|
|
245
|
-
|
|
246
|
-
// Scan filesystem for installed skills
|
|
247
|
-
const installedDirs = readdirSync(skillsPath, { withFileTypes: true })
|
|
248
|
-
.filter((dirent) => dirent.isDirectory())
|
|
249
|
-
.map((dirent) => dirent.name);
|
|
250
|
-
|
|
251
|
-
for (const dirName of installedDirs) {
|
|
252
|
-
// Skip if not a known tool skill
|
|
253
|
-
if (!allToolNames.has(dirName)) continue;
|
|
254
|
-
|
|
255
|
-
// Skip if already tracked
|
|
256
|
-
if (trackedTools[dirName]) continue;
|
|
257
|
-
|
|
258
|
-
// Try to get version from bundled tool
|
|
259
|
-
let version = '0.0.0';
|
|
260
|
-
const matchingTool = bundledTools.find((tool) =>
|
|
261
|
-
tool.includes.skills.some((s) => s.name === dirName && s.required),
|
|
262
|
-
);
|
|
263
|
-
if (matchingTool) {
|
|
264
|
-
version = matchingTool.version;
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
trackedTools[dirName] = {
|
|
268
|
-
version,
|
|
269
|
-
installed_at: new Date().toISOString(),
|
|
270
|
-
};
|
|
271
|
-
platformChanged = true;
|
|
272
|
-
configChanged = true;
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
if (platformChanged) {
|
|
276
|
-
setPlatformTools(config, trackedTools);
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
config.platform = originalPlatform;
|
|
281
|
-
if (configChanged) {
|
|
282
|
-
saveConfig(config);
|
|
283
|
-
}
|
|
284
|
-
},
|
|
285
|
-
};
|
|
286
|
-
}
|
|
287
|
-
|
|
288
214
|
/**
|
|
289
215
|
* Registry of package-level migrations
|
|
290
216
|
* These run when the @orderful/droid npm package updates
|
|
@@ -294,7 +220,6 @@ function createFilesystemSyncMigration(version: string): Migration {
|
|
|
294
220
|
const PACKAGE_MIGRATIONS: Migration[] = [
|
|
295
221
|
createPlatformSyncMigration('0.25.0'),
|
|
296
222
|
createConfigSkillNameMigration('0.27.2'),
|
|
297
|
-
createFilesystemSyncMigration('0.27.4'),
|
|
298
223
|
];
|
|
299
224
|
|
|
300
225
|
/**
|