@orderful/droid 0.25.2 → 0.27.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/.claude-plugin/marketplace.json +114 -0
- package/.github/workflows/ci.yml +20 -0
- package/AGENTS.md +75 -18
- package/CHANGELOG.md +73 -0
- package/README.md +30 -4
- package/dist/bin/droid.js +164 -75
- package/dist/index.js +68 -26
- package/dist/lib/migrations.d.ts +8 -0
- package/dist/lib/migrations.d.ts.map +1 -1
- package/dist/lib/skill-config.d.ts.map +1 -1
- package/dist/lib/skills.d.ts.map +1 -1
- package/dist/lib/tools.d.ts.map +1 -1
- package/dist/lib/types.d.ts +10 -2
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/tools/README.md +1 -1
- package/dist/tools/brain/.claude-plugin/plugin.json +16 -0
- package/dist/tools/brain/TOOL.yaml +7 -5
- package/dist/tools/brain/commands/brain.md +17 -49
- package/dist/tools/brain/commands/scratchpad.md +13 -50
- package/{src/tools/brain/skills/droid-brain → dist/tools/brain/skills/brain}/SKILL.md +6 -6
- package/dist/tools/brain/skills/{droid-brain-obsidian → brain-obsidian}/SKILL.md +9 -9
- package/dist/tools/coach/.claude-plugin/plugin.json +16 -0
- package/dist/tools/coach/TOOL.yaml +4 -3
- package/dist/tools/coach/commands/coach.md +14 -54
- package/{src/tools/coach/skills/droid-coach → dist/tools/coach/skills/coach}/SKILL.md +5 -4
- package/dist/tools/code-review/.claude-plugin/plugin.json +16 -0
- package/dist/tools/code-review/TOOL.yaml +4 -3
- package/dist/tools/code-review/commands/code-review.md +18 -102
- package/dist/tools/code-review/skills/code-review/SKILL.md +154 -0
- package/dist/tools/codex/.claude-plugin/plugin.json +16 -0
- package/dist/tools/codex/TOOL.yaml +5 -4
- package/dist/tools/codex/commands/codex.md +18 -65
- package/dist/tools/codex/skills/{droid-codex → codex}/SKILL.md +64 -45
- package/{src/tools/codex/skills/droid-codex → dist/tools/codex/skills/codex}/references/loading.md +94 -55
- package/dist/tools/codex/skills/codex/scripts/git-finish-write.d.ts.map +1 -0
- package/dist/tools/codex/skills/codex/scripts/git-preamble.d.ts.map +1 -0
- package/dist/tools/codex/skills/codex/scripts/git-start-write.d.ts.map +1 -0
- package/dist/tools/comments/.claude-plugin/plugin.json +16 -0
- package/dist/tools/comments/TOOL.yaml +4 -3
- package/dist/tools/comments/commands/comments.md +12 -14
- package/{src/tools/comments/skills/droid-comments → dist/tools/comments/skills/comments}/SKILL.md +4 -2
- package/dist/tools/droid/.claude-plugin/plugin.json +15 -0
- package/dist/tools/droid/TOOL.yaml +1 -1
- package/dist/tools/droid/skills/droid/SKILL.md +1 -1
- package/dist/tools/project/.claude-plugin/plugin.json +16 -0
- package/dist/tools/project/TOOL.yaml +4 -3
- package/dist/tools/project/commands/project.md +12 -27
- package/dist/tools/project/skills/{droid-project → project}/SKILL.md +13 -12
- package/dist/tools/tech-design/.claude-plugin/plugin.json +16 -0
- package/dist/tools/tech-design/TOOL.yaml +19 -0
- package/dist/tools/tech-design/commands/tech-design.md +31 -0
- package/dist/tools/tech-design/skills/tech-design/SKILL.md +218 -0
- package/dist/tools/tech-design/skills/tech-design/references/draft.md +321 -0
- package/dist/tools/tech-design/skills/tech-design/references/gaps.md +328 -0
- package/dist/tools/tech-design/skills/tech-design/references/publish.md +409 -0
- package/dist/tools/tech-design/skills/tech-design/references/research-doc-template.md +129 -0
- package/dist/tools/tech-design/skills/tech-design/references/rollup-template.md +55 -0
- package/dist/tools/tech-design/skills/tech-design/references/start.md +353 -0
- package/dist/tools/tech-design/skills/tech-design/references/think.md +356 -0
- package/dist/tools/tech-design/skills/tech-design/references/thought-doc-template.md +72 -0
- package/package.json +3 -2
- package/scripts/build-plugins.ts +207 -0
- package/src/commands/tui/components/Badge.test.tsx +10 -4
- package/src/commands/tui.tsx +4 -4
- package/src/lib/migrations.ts +95 -4
- package/src/lib/skill-config.ts +95 -57
- package/src/lib/skills.test.ts +199 -74
- package/src/lib/skills.ts +57 -56
- package/src/lib/tools.ts +19 -12
- package/src/lib/types.ts +20 -5
- package/src/tools/README.md +1 -1
- package/src/tools/brain/.claude-plugin/plugin.json +16 -0
- package/src/tools/brain/TOOL.yaml +7 -5
- package/src/tools/brain/commands/brain.md +17 -49
- package/src/tools/brain/commands/scratchpad.md +13 -50
- package/{dist/tools/brain/skills/droid-brain → src/tools/brain/skills/brain}/SKILL.md +6 -6
- package/src/tools/brain/skills/{droid-brain-obsidian → brain-obsidian}/SKILL.md +9 -9
- package/src/tools/coach/.claude-plugin/plugin.json +16 -0
- package/src/tools/coach/TOOL.yaml +4 -3
- package/src/tools/coach/commands/coach.md +14 -54
- package/{dist/tools/coach/skills/droid-coach → src/tools/coach/skills/coach}/SKILL.md +5 -4
- package/src/tools/code-review/.claude-plugin/plugin.json +16 -0
- package/src/tools/code-review/TOOL.yaml +4 -3
- package/src/tools/code-review/commands/code-review.md +18 -102
- package/src/tools/code-review/skills/code-review/SKILL.md +154 -0
- package/src/tools/codex/.claude-plugin/plugin.json +16 -0
- package/src/tools/codex/TOOL.yaml +5 -4
- package/src/tools/codex/commands/codex.md +18 -65
- package/src/tools/codex/skills/{droid-codex → codex}/SKILL.md +64 -45
- package/{dist/tools/codex/skills/droid-codex → src/tools/codex/skills/codex}/references/loading.md +94 -55
- package/src/tools/comments/.claude-plugin/plugin.json +16 -0
- package/src/tools/comments/TOOL.yaml +4 -3
- package/src/tools/comments/commands/comments.md +12 -14
- package/{dist/tools/comments/skills/droid-comments → src/tools/comments/skills/comments}/SKILL.md +4 -2
- package/src/tools/droid/.claude-plugin/plugin.json +15 -0
- package/src/tools/droid/TOOL.yaml +1 -1
- package/src/tools/droid/skills/droid/SKILL.md +1 -1
- package/src/tools/project/.claude-plugin/plugin.json +16 -0
- package/src/tools/project/TOOL.yaml +4 -3
- package/src/tools/project/commands/project.md +12 -27
- package/src/tools/project/skills/{droid-project → project}/SKILL.md +13 -12
- package/src/tools/tech-design/.claude-plugin/plugin.json +16 -0
- package/src/tools/tech-design/TOOL.yaml +19 -0
- package/src/tools/tech-design/commands/tech-design.md +31 -0
- package/src/tools/tech-design/skills/tech-design/SKILL.md +218 -0
- package/src/tools/tech-design/skills/tech-design/references/draft.md +321 -0
- package/src/tools/tech-design/skills/tech-design/references/gaps.md +328 -0
- package/src/tools/tech-design/skills/tech-design/references/publish.md +409 -0
- package/src/tools/tech-design/skills/tech-design/references/research-doc-template.md +129 -0
- package/src/tools/tech-design/skills/tech-design/references/rollup-template.md +55 -0
- package/src/tools/tech-design/skills/tech-design/references/start.md +353 -0
- package/src/tools/tech-design/skills/tech-design/references/think.md +356 -0
- package/src/tools/tech-design/skills/tech-design/references/thought-doc-template.md +72 -0
- package/dist/tools/code-review/skills/droid-code-review/SKILL.md +0 -55
- package/dist/tools/codex/skills/droid-codex/scripts/git-finish-write.d.ts.map +0 -1
- package/dist/tools/codex/skills/droid-codex/scripts/git-preamble.d.ts.map +0 -1
- package/dist/tools/codex/skills/droid-codex/scripts/git-start-write.d.ts.map +0 -1
- package/src/tools/code-review/skills/droid-code-review/SKILL.md +0 -55
- /package/dist/tools/brain/skills/{droid-brain → brain}/references/metadata.md +0 -0
- /package/dist/tools/brain/skills/{droid-brain → brain}/references/naming.md +0 -0
- /package/dist/tools/brain/skills/{droid-brain → brain}/references/templates.md +0 -0
- /package/dist/tools/brain/skills/{droid-brain → brain}/references/workflows.md +0 -0
- /package/dist/tools/brain/skills/{droid-brain-obsidian → brain-obsidian}/references/templates.md +0 -0
- /package/dist/tools/brain/skills/{droid-brain-obsidian → brain-obsidian}/references/workflows.md +0 -0
- /package/dist/tools/codex/skills/{droid-codex → codex}/references/creating.md +0 -0
- /package/dist/tools/codex/skills/{droid-codex → codex}/references/decisions.md +0 -0
- /package/dist/tools/codex/skills/{droid-codex → codex}/references/topics.md +0 -0
- /package/dist/tools/codex/skills/{droid-codex → codex}/scripts/git-finish-write.d.ts +0 -0
- /package/dist/tools/codex/skills/{droid-codex → codex}/scripts/git-finish-write.ts +0 -0
- /package/dist/tools/codex/skills/{droid-codex → codex}/scripts/git-preamble.d.ts +0 -0
- /package/dist/tools/codex/skills/{droid-codex → codex}/scripts/git-preamble.ts +0 -0
- /package/dist/tools/codex/skills/{droid-codex → codex}/scripts/git-scripts.test.ts +0 -0
- /package/dist/tools/codex/skills/{droid-codex → codex}/scripts/git-start-write.d.ts +0 -0
- /package/dist/tools/codex/skills/{droid-codex → codex}/scripts/git-start-write.ts +0 -0
- /package/dist/tools/project/skills/{droid-project → project}/references/changelog.md +0 -0
- /package/dist/tools/project/skills/{droid-project → project}/references/creating.md +0 -0
- /package/dist/tools/project/skills/{droid-project → project}/references/loading.md +0 -0
- /package/dist/tools/project/skills/{droid-project → project}/references/templates.md +0 -0
- /package/dist/tools/project/skills/{droid-project → project}/references/updating.md +0 -0
- /package/dist/tools/project/skills/{droid-project → project}/references/versioning.md +0 -0
- /package/src/tools/brain/skills/{droid-brain → brain}/references/metadata.md +0 -0
- /package/src/tools/brain/skills/{droid-brain → brain}/references/naming.md +0 -0
- /package/src/tools/brain/skills/{droid-brain → brain}/references/templates.md +0 -0
- /package/src/tools/brain/skills/{droid-brain → brain}/references/workflows.md +0 -0
- /package/src/tools/brain/skills/{droid-brain-obsidian → brain-obsidian}/references/templates.md +0 -0
- /package/src/tools/brain/skills/{droid-brain-obsidian → brain-obsidian}/references/workflows.md +0 -0
- /package/src/tools/codex/skills/{droid-codex → codex}/references/creating.md +0 -0
- /package/src/tools/codex/skills/{droid-codex → codex}/references/decisions.md +0 -0
- /package/src/tools/codex/skills/{droid-codex → codex}/references/topics.md +0 -0
- /package/src/tools/codex/skills/{droid-codex → codex}/scripts/git-finish-write.ts +0 -0
- /package/src/tools/codex/skills/{droid-codex → codex}/scripts/git-preamble.ts +0 -0
- /package/src/tools/codex/skills/{droid-codex → codex}/scripts/git-scripts.test.ts +0 -0
- /package/src/tools/codex/skills/{droid-codex → codex}/scripts/git-start-write.ts +0 -0
- /package/src/tools/project/skills/{droid-project → project}/references/changelog.md +0 -0
- /package/src/tools/project/skills/{droid-project → project}/references/creating.md +0 -0
- /package/src/tools/project/skills/{droid-project → project}/references/loading.md +0 -0
- /package/src/tools/project/skills/{droid-project → project}/references/templates.md +0 -0
- /package/src/tools/project/skills/{droid-project → project}/references/updating.md +0 -0
- /package/src/tools/project/skills/{droid-project → project}/references/versioning.md +0 -0
package/dist/bin/droid.js
CHANGED
|
@@ -392,7 +392,9 @@ function getToolsWithUpdates() {
|
|
|
392
392
|
const toolsWithUpdates = [];
|
|
393
393
|
for (const tool of bundledTools) {
|
|
394
394
|
const requiredSkills = tool.includes.skills.filter((s) => s.required).map((s) => s.name);
|
|
395
|
-
const isInstalled = requiredSkills.some(
|
|
395
|
+
const isInstalled = requiredSkills.some(
|
|
396
|
+
(skillName) => skillName in installedTools
|
|
397
|
+
);
|
|
396
398
|
if (isInstalled) {
|
|
397
399
|
const updateStatus = getToolUpdateStatus(tool.name);
|
|
398
400
|
if (updateStatus.hasUpdate) {
|
|
@@ -613,27 +615,38 @@ function createPlatformSyncMigration(version2) {
|
|
|
613
615
|
}
|
|
614
616
|
};
|
|
615
617
|
}
|
|
618
|
+
var PACKAGE_MIGRATIONS = [createPlatformSyncMigration("0.25.0")];
|
|
616
619
|
var TOOL_MIGRATIONS = {
|
|
617
620
|
brain: [createConfigDirMigration("droid-brain", "0.2.3")],
|
|
618
621
|
comments: [createConfigDirMigration("droid-comments", "0.2.6")],
|
|
619
622
|
project: [createConfigDirMigration("droid-project", "0.1.5")],
|
|
620
|
-
coach: [createConfigDirMigration("droid-coach", "0.1.3")]
|
|
621
|
-
// Global migration for the droid meta-tool
|
|
622
|
-
droid: [createPlatformSyncMigration("0.25.0")]
|
|
623
|
+
coach: [createConfigDirMigration("droid-coach", "0.1.3")]
|
|
623
624
|
};
|
|
624
625
|
function getToolMigrations(toolName) {
|
|
625
626
|
return TOOL_MIGRATIONS[toolName] ?? [];
|
|
626
627
|
}
|
|
627
628
|
function getLastMigratedVersion(toolName) {
|
|
628
629
|
const config = loadConfig();
|
|
629
|
-
|
|
630
|
+
if (config.migrations?.tools?.[toolName]) {
|
|
631
|
+
return config.migrations.tools[toolName];
|
|
632
|
+
}
|
|
633
|
+
if (config.migrations && typeof config.migrations[toolName] === "string") {
|
|
634
|
+
return config.migrations[toolName];
|
|
635
|
+
}
|
|
636
|
+
return "0.0.0";
|
|
630
637
|
}
|
|
631
638
|
function setLastMigratedVersion(toolName, version2) {
|
|
632
639
|
const config = loadConfig();
|
|
633
640
|
if (!config.migrations) {
|
|
634
641
|
config.migrations = {};
|
|
635
642
|
}
|
|
636
|
-
config.migrations
|
|
643
|
+
if (!config.migrations.tools) {
|
|
644
|
+
config.migrations.tools = {};
|
|
645
|
+
}
|
|
646
|
+
config.migrations.tools[toolName] = version2;
|
|
647
|
+
if (typeof config.migrations[toolName] === "string") {
|
|
648
|
+
delete config.migrations[toolName];
|
|
649
|
+
}
|
|
637
650
|
saveConfig(config);
|
|
638
651
|
}
|
|
639
652
|
function runMigrations(toolName, fromVersion, toVersion) {
|
|
@@ -677,6 +690,48 @@ function runToolMigrations(toolName, installedVersion) {
|
|
|
677
690
|
}
|
|
678
691
|
return runMigrations(toolName, lastMigrated, installedVersion);
|
|
679
692
|
}
|
|
693
|
+
function runPackageMigrations(packageVersion) {
|
|
694
|
+
const config = loadConfig();
|
|
695
|
+
const lastMigrated = config.migrations?.package ?? "0.0.0";
|
|
696
|
+
if (compareSemver(packageVersion, lastMigrated) <= 0) {
|
|
697
|
+
return { success: true };
|
|
698
|
+
}
|
|
699
|
+
const pendingMigrations = PACKAGE_MIGRATIONS.filter((m) => {
|
|
700
|
+
const afterFrom = compareSemver(m.version, lastMigrated) > 0;
|
|
701
|
+
const beforeOrAtTo = compareSemver(m.version, packageVersion) <= 0;
|
|
702
|
+
return afterFrom && beforeOrAtTo;
|
|
703
|
+
});
|
|
704
|
+
if (pendingMigrations.length === 0) {
|
|
705
|
+
config.migrations = config.migrations || {};
|
|
706
|
+
config.migrations.package = packageVersion;
|
|
707
|
+
saveConfig(config);
|
|
708
|
+
return { success: true };
|
|
709
|
+
}
|
|
710
|
+
const configDir = getConfigDir();
|
|
711
|
+
for (const migration of pendingMigrations) {
|
|
712
|
+
try {
|
|
713
|
+
migration.up(configDir);
|
|
714
|
+
logMigration("package", lastMigrated, migration.version, "OK");
|
|
715
|
+
} catch (error) {
|
|
716
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
717
|
+
logMigration(
|
|
718
|
+
"package",
|
|
719
|
+
lastMigrated,
|
|
720
|
+
migration.version,
|
|
721
|
+
"FAILED",
|
|
722
|
+
errorMessage
|
|
723
|
+
);
|
|
724
|
+
return {
|
|
725
|
+
success: false,
|
|
726
|
+
error: `Package migration ${migration.version} failed: ${errorMessage}`
|
|
727
|
+
};
|
|
728
|
+
}
|
|
729
|
+
}
|
|
730
|
+
config.migrations = config.migrations || {};
|
|
731
|
+
config.migrations.package = packageVersion;
|
|
732
|
+
saveConfig(config);
|
|
733
|
+
return { success: true };
|
|
734
|
+
}
|
|
680
735
|
|
|
681
736
|
// src/lib/skills.ts
|
|
682
737
|
var DROID_SKILLS_START = "<!-- droid-skills-start -->";
|
|
@@ -861,9 +916,16 @@ function installSkill(skillName) {
|
|
|
861
916
|
message: `Invalid skill manifest for '${skillName}'`
|
|
862
917
|
};
|
|
863
918
|
}
|
|
919
|
+
const toolManifest = loadToolManifest(toolDir);
|
|
920
|
+
if (!toolManifest) {
|
|
921
|
+
return {
|
|
922
|
+
success: false,
|
|
923
|
+
message: `Invalid tool manifest for tool containing '${skillName}'`
|
|
924
|
+
};
|
|
925
|
+
}
|
|
864
926
|
if (manifest.dependencies) {
|
|
865
927
|
for (const dep of manifest.dependencies) {
|
|
866
|
-
if (!
|
|
928
|
+
if (!isToolInstalled(dep)) {
|
|
867
929
|
return {
|
|
868
930
|
success: false,
|
|
869
931
|
message: `Missing dependency: '${dep}'. Install it first with \`droid install ${dep}\``
|
|
@@ -875,31 +937,39 @@ function installSkill(skillName) {
|
|
|
875
937
|
const targetSkillDir = join7(skillsPath, skillName);
|
|
876
938
|
const commandsPath = getCommandsInstallPath(config.platform);
|
|
877
939
|
const tools = getPlatformTools(config);
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
940
|
+
const renamedSkills = [
|
|
941
|
+
"comments",
|
|
942
|
+
"brain",
|
|
943
|
+
"project",
|
|
944
|
+
"coach",
|
|
945
|
+
"code-review",
|
|
946
|
+
"codex",
|
|
947
|
+
"tech-design",
|
|
948
|
+
"brain-obsidian"
|
|
949
|
+
];
|
|
950
|
+
if (renamedSkills.includes(skillName)) {
|
|
951
|
+
const droidPrefixedName = `droid-${skillName}`;
|
|
952
|
+
const droidPrefixedDir = join7(skillsPath, droidPrefixedName);
|
|
953
|
+
if (existsSync5(droidPrefixedDir)) {
|
|
882
954
|
try {
|
|
883
|
-
rmSync2(
|
|
955
|
+
rmSync2(droidPrefixedDir, { recursive: true });
|
|
884
956
|
} catch (error) {
|
|
885
957
|
console.warn(
|
|
886
|
-
`Warning: Could not remove old skill directory ${
|
|
958
|
+
`Warning: Could not remove old skill directory ${droidPrefixedDir}: ${error}`
|
|
887
959
|
);
|
|
888
960
|
}
|
|
889
961
|
}
|
|
890
|
-
if (tools[
|
|
891
|
-
delete tools[
|
|
962
|
+
if (tools[droidPrefixedName]) {
|
|
963
|
+
delete tools[droidPrefixedName];
|
|
892
964
|
setPlatformTools(config, tools);
|
|
893
965
|
saveConfig(config);
|
|
894
966
|
}
|
|
895
967
|
}
|
|
896
968
|
const commandsSource = join7(toolDir, "commands");
|
|
897
969
|
const agentsSource = join7(toolDir, "agents");
|
|
898
|
-
const
|
|
899
|
-
const isAlreadyInstalled = tools[skillName] || oldSkillName && tools[oldSkillName];
|
|
970
|
+
const isAlreadyInstalled = tools[skillName];
|
|
900
971
|
if (!isAlreadyInstalled) {
|
|
901
972
|
const toolName2 = basename(toolDir);
|
|
902
|
-
const normalizedToolName = toolName2.replace(/^droid-/, "");
|
|
903
973
|
if (existsSync5(commandsSource)) {
|
|
904
974
|
const commandFiles = readdirSync4(commandsSource).filter(
|
|
905
975
|
(f) => f.endsWith(".md") && f.toLowerCase() !== "readme.md"
|
|
@@ -908,7 +978,7 @@ function installSkill(skillName) {
|
|
|
908
978
|
const targetCommandPath = join7(commandsPath, file);
|
|
909
979
|
if (existsSync5(targetCommandPath)) {
|
|
910
980
|
const commandName = file.replace(".md", "");
|
|
911
|
-
if (commandName === toolName2
|
|
981
|
+
if (commandName === toolName2) {
|
|
912
982
|
continue;
|
|
913
983
|
}
|
|
914
984
|
return {
|
|
@@ -982,10 +1052,18 @@ function installSkill(skillName) {
|
|
|
982
1052
|
(f) => f.endsWith(".md") && f.toLowerCase() !== "readme.md"
|
|
983
1053
|
);
|
|
984
1054
|
for (const file of commandFiles) {
|
|
985
|
-
const
|
|
986
|
-
const
|
|
987
|
-
|
|
988
|
-
|
|
1055
|
+
const commandName = file.replace(".md", "");
|
|
1056
|
+
const commandMeta = toolManifest.includes.commands.find(
|
|
1057
|
+
(cmd) => (typeof cmd === "string" ? cmd : cmd.name) === commandName
|
|
1058
|
+
);
|
|
1059
|
+
const isAlias = typeof commandMeta === "object" && commandMeta.is_alias;
|
|
1060
|
+
const shouldInstall = config.platform === "opencode" /* OpenCode */ || isAlias;
|
|
1061
|
+
if (shouldInstall) {
|
|
1062
|
+
const sourcePath = join7(commandsSource, file);
|
|
1063
|
+
const targetPath = join7(commandsPath, file);
|
|
1064
|
+
const content = readFileSync5(sourcePath, "utf-8");
|
|
1065
|
+
writeFileSync3(targetPath, content);
|
|
1066
|
+
}
|
|
989
1067
|
}
|
|
990
1068
|
}
|
|
991
1069
|
const installedAgents = [];
|
|
@@ -1356,6 +1434,7 @@ import chalk4 from "chalk";
|
|
|
1356
1434
|
import inquirer2 from "inquirer";
|
|
1357
1435
|
async function promptForSkillConfig(skillName, configSchema, askFirst = true) {
|
|
1358
1436
|
const globalConfig = loadConfig();
|
|
1437
|
+
let shouldPrompt = true;
|
|
1359
1438
|
if (askFirst) {
|
|
1360
1439
|
const { wantsConfigure } = await inquirer2.prompt([
|
|
1361
1440
|
{
|
|
@@ -1365,64 +1444,74 @@ async function promptForSkillConfig(skillName, configSchema, askFirst = true) {
|
|
|
1365
1444
|
default: false
|
|
1366
1445
|
}
|
|
1367
1446
|
]);
|
|
1368
|
-
|
|
1369
|
-
return;
|
|
1370
|
-
}
|
|
1447
|
+
shouldPrompt = wantsConfigure;
|
|
1371
1448
|
}
|
|
1372
|
-
|
|
1449
|
+
const existingOverrides = loadSkillOverrides(skillName);
|
|
1450
|
+
let overrides = {};
|
|
1451
|
+
if (shouldPrompt) {
|
|
1452
|
+
console.log(chalk4.bold(`
|
|
1373
1453
|
\u2699\uFE0F Configure ${skillName}
|
|
1374
1454
|
`));
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1455
|
+
const questions = Object.entries(configSchema).map(([key, option]) => {
|
|
1456
|
+
const baseQuestion = {
|
|
1457
|
+
name: key,
|
|
1458
|
+
message: option.description
|
|
1459
|
+
};
|
|
1460
|
+
const existingValue = existingOverrides[key];
|
|
1461
|
+
switch (option.type) {
|
|
1462
|
+
case "boolean" /* Boolean */:
|
|
1463
|
+
return {
|
|
1464
|
+
...baseQuestion,
|
|
1465
|
+
type: "confirm",
|
|
1466
|
+
default: existingValue ?? option.default ?? false
|
|
1467
|
+
};
|
|
1468
|
+
case "select" /* Select */:
|
|
1469
|
+
return {
|
|
1470
|
+
...baseQuestion,
|
|
1471
|
+
type: "list",
|
|
1472
|
+
choices: option.options || [],
|
|
1473
|
+
default: existingValue ?? option.default
|
|
1474
|
+
};
|
|
1475
|
+
case "string" /* String */:
|
|
1476
|
+
default: {
|
|
1477
|
+
let defaultValue = existingValue ?? option.default ?? "";
|
|
1478
|
+
if (key === "user_mention" && !existingValue && globalConfig.user_mention) {
|
|
1479
|
+
defaultValue = globalConfig.user_mention;
|
|
1480
|
+
}
|
|
1481
|
+
return {
|
|
1482
|
+
...baseQuestion,
|
|
1483
|
+
type: "input",
|
|
1484
|
+
default: defaultValue
|
|
1485
|
+
};
|
|
1401
1486
|
}
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1487
|
+
}
|
|
1488
|
+
});
|
|
1489
|
+
const answers = await inquirer2.prompt(questions);
|
|
1490
|
+
for (const [key, value] of Object.entries(answers)) {
|
|
1491
|
+
if (value !== "" && value !== void 0 && value !== null) {
|
|
1492
|
+
overrides[key] = value;
|
|
1407
1493
|
}
|
|
1408
1494
|
}
|
|
1409
|
-
});
|
|
1410
|
-
const answers = await inquirer2.prompt(questions);
|
|
1411
|
-
const overrides = {};
|
|
1412
|
-
for (const [key, value] of Object.entries(answers)) {
|
|
1413
|
-
const schema = configSchema[key];
|
|
1414
|
-
if (value !== schema.default && value !== "" && value !== false) {
|
|
1415
|
-
overrides[key] = value;
|
|
1416
|
-
}
|
|
1417
|
-
}
|
|
1418
|
-
if (Object.keys(overrides).length > 0) {
|
|
1419
|
-
saveSkillOverrides(skillName, overrides);
|
|
1420
|
-
const displayName = skillName.replace(/^droid-/, "");
|
|
1421
|
-
console.log(chalk4.green(`
|
|
1422
|
-
\u2713 Configuration saved to ~/.droid/skills/${displayName}/overrides.yaml`));
|
|
1423
1495
|
} else {
|
|
1424
|
-
|
|
1496
|
+
for (const [key, option] of Object.entries(configSchema)) {
|
|
1497
|
+
const existingValue = existingOverrides[key];
|
|
1498
|
+
let defaultValue = existingValue ?? option.default ?? (option.type === "boolean" /* Boolean */ ? false : "");
|
|
1499
|
+
if (key === "user_mention" && !existingValue && globalConfig.user_mention) {
|
|
1500
|
+
defaultValue = globalConfig.user_mention;
|
|
1501
|
+
}
|
|
1502
|
+
if (defaultValue !== "" && defaultValue !== void 0 && defaultValue !== null) {
|
|
1503
|
+
overrides[key] = defaultValue;
|
|
1504
|
+
}
|
|
1505
|
+
}
|
|
1425
1506
|
}
|
|
1507
|
+
saveSkillOverrides(skillName, overrides);
|
|
1508
|
+
const displayName = skillName.replace(/^droid-/, "");
|
|
1509
|
+
console.log(
|
|
1510
|
+
chalk4.green(
|
|
1511
|
+
`
|
|
1512
|
+
\u2713 Configuration saved to ~/.droid/skills/${displayName}/overrides.yaml`
|
|
1513
|
+
)
|
|
1514
|
+
);
|
|
1426
1515
|
}
|
|
1427
1516
|
|
|
1428
1517
|
// src/commands/skills.ts
|
|
@@ -2974,8 +3063,8 @@ function App() {
|
|
|
2974
3063
|
}
|
|
2975
3064
|
});
|
|
2976
3065
|
useEffect(() => {
|
|
2977
|
-
const
|
|
2978
|
-
|
|
3066
|
+
const packageVersion = getVersion();
|
|
3067
|
+
runPackageMigrations(packageVersion);
|
|
2979
3068
|
}, []);
|
|
2980
3069
|
useEffect(() => {
|
|
2981
3070
|
const autoUpdateConfig = getAutoUpdateConfig();
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// src/lib/types.ts
|
|
2
|
-
var Platform = /* @__PURE__ */ ((
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
return
|
|
2
|
+
var Platform = /* @__PURE__ */ ((Platform2) => {
|
|
3
|
+
Platform2["ClaudeCode"] = "claude-code";
|
|
4
|
+
Platform2["OpenCode"] = "opencode";
|
|
5
|
+
return Platform2;
|
|
6
6
|
})(Platform || {});
|
|
7
7
|
var AIToolValue = Platform;
|
|
8
8
|
function getAITag() {
|
|
@@ -359,6 +359,14 @@ function getBundledTools() {
|
|
|
359
359
|
}
|
|
360
360
|
return tools;
|
|
361
361
|
}
|
|
362
|
+
function isToolInstalled(toolName) {
|
|
363
|
+
const config = loadConfig();
|
|
364
|
+
const installedTools = getPlatformTools(config);
|
|
365
|
+
const tool = getBundledTools().find((t) => t.name === toolName);
|
|
366
|
+
if (!tool) return false;
|
|
367
|
+
const requiredSkills = tool.includes.skills.filter((s) => s.required).map((s) => s.name);
|
|
368
|
+
return requiredSkills.some((skillName) => skillName in installedTools);
|
|
369
|
+
}
|
|
362
370
|
|
|
363
371
|
// src/lib/agents.ts
|
|
364
372
|
var __dirname3 = dirname3(fileURLToPath3(import.meta.url));
|
|
@@ -570,27 +578,38 @@ function createPlatformSyncMigration(version) {
|
|
|
570
578
|
}
|
|
571
579
|
};
|
|
572
580
|
}
|
|
581
|
+
var PACKAGE_MIGRATIONS = [createPlatformSyncMigration("0.25.0")];
|
|
573
582
|
var TOOL_MIGRATIONS = {
|
|
574
583
|
brain: [createConfigDirMigration("droid-brain", "0.2.3")],
|
|
575
584
|
comments: [createConfigDirMigration("droid-comments", "0.2.6")],
|
|
576
585
|
project: [createConfigDirMigration("droid-project", "0.1.5")],
|
|
577
|
-
coach: [createConfigDirMigration("droid-coach", "0.1.3")]
|
|
578
|
-
// Global migration for the droid meta-tool
|
|
579
|
-
droid: [createPlatformSyncMigration("0.25.0")]
|
|
586
|
+
coach: [createConfigDirMigration("droid-coach", "0.1.3")]
|
|
580
587
|
};
|
|
581
588
|
function getToolMigrations(toolName) {
|
|
582
589
|
return TOOL_MIGRATIONS[toolName] ?? [];
|
|
583
590
|
}
|
|
584
591
|
function getLastMigratedVersion(toolName) {
|
|
585
592
|
const config = loadConfig();
|
|
586
|
-
|
|
593
|
+
if (config.migrations?.tools?.[toolName]) {
|
|
594
|
+
return config.migrations.tools[toolName];
|
|
595
|
+
}
|
|
596
|
+
if (config.migrations && typeof config.migrations[toolName] === "string") {
|
|
597
|
+
return config.migrations[toolName];
|
|
598
|
+
}
|
|
599
|
+
return "0.0.0";
|
|
587
600
|
}
|
|
588
601
|
function setLastMigratedVersion(toolName, version) {
|
|
589
602
|
const config = loadConfig();
|
|
590
603
|
if (!config.migrations) {
|
|
591
604
|
config.migrations = {};
|
|
592
605
|
}
|
|
593
|
-
config.migrations
|
|
606
|
+
if (!config.migrations.tools) {
|
|
607
|
+
config.migrations.tools = {};
|
|
608
|
+
}
|
|
609
|
+
config.migrations.tools[toolName] = version;
|
|
610
|
+
if (typeof config.migrations[toolName] === "string") {
|
|
611
|
+
delete config.migrations[toolName];
|
|
612
|
+
}
|
|
594
613
|
saveConfig(config);
|
|
595
614
|
}
|
|
596
615
|
function runMigrations(toolName, fromVersion, toVersion) {
|
|
@@ -867,9 +886,16 @@ function installSkill(skillName) {
|
|
|
867
886
|
message: `Invalid skill manifest for '${skillName}'`
|
|
868
887
|
};
|
|
869
888
|
}
|
|
889
|
+
const toolManifest = loadToolManifest(toolDir);
|
|
890
|
+
if (!toolManifest) {
|
|
891
|
+
return {
|
|
892
|
+
success: false,
|
|
893
|
+
message: `Invalid tool manifest for tool containing '${skillName}'`
|
|
894
|
+
};
|
|
895
|
+
}
|
|
870
896
|
if (manifest.dependencies) {
|
|
871
897
|
for (const dep of manifest.dependencies) {
|
|
872
|
-
if (!
|
|
898
|
+
if (!isToolInstalled(dep)) {
|
|
873
899
|
return {
|
|
874
900
|
success: false,
|
|
875
901
|
message: `Missing dependency: '${dep}'. Install it first with \`droid install ${dep}\``
|
|
@@ -881,31 +907,39 @@ function installSkill(skillName) {
|
|
|
881
907
|
const targetSkillDir = join7(skillsPath, skillName);
|
|
882
908
|
const commandsPath = getCommandsInstallPath(config.platform);
|
|
883
909
|
const tools = getPlatformTools(config);
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
910
|
+
const renamedSkills = [
|
|
911
|
+
"comments",
|
|
912
|
+
"brain",
|
|
913
|
+
"project",
|
|
914
|
+
"coach",
|
|
915
|
+
"code-review",
|
|
916
|
+
"codex",
|
|
917
|
+
"tech-design",
|
|
918
|
+
"brain-obsidian"
|
|
919
|
+
];
|
|
920
|
+
if (renamedSkills.includes(skillName)) {
|
|
921
|
+
const droidPrefixedName = `droid-${skillName}`;
|
|
922
|
+
const droidPrefixedDir = join7(skillsPath, droidPrefixedName);
|
|
923
|
+
if (existsSync5(droidPrefixedDir)) {
|
|
888
924
|
try {
|
|
889
|
-
rmSync2(
|
|
925
|
+
rmSync2(droidPrefixedDir, { recursive: true });
|
|
890
926
|
} catch (error) {
|
|
891
927
|
console.warn(
|
|
892
|
-
`Warning: Could not remove old skill directory ${
|
|
928
|
+
`Warning: Could not remove old skill directory ${droidPrefixedDir}: ${error}`
|
|
893
929
|
);
|
|
894
930
|
}
|
|
895
931
|
}
|
|
896
|
-
if (tools[
|
|
897
|
-
delete tools[
|
|
932
|
+
if (tools[droidPrefixedName]) {
|
|
933
|
+
delete tools[droidPrefixedName];
|
|
898
934
|
setPlatformTools(config, tools);
|
|
899
935
|
saveConfig(config);
|
|
900
936
|
}
|
|
901
937
|
}
|
|
902
938
|
const commandsSource = join7(toolDir, "commands");
|
|
903
939
|
const agentsSource = join7(toolDir, "agents");
|
|
904
|
-
const
|
|
905
|
-
const isAlreadyInstalled = tools[skillName] || oldSkillName && tools[oldSkillName];
|
|
940
|
+
const isAlreadyInstalled = tools[skillName];
|
|
906
941
|
if (!isAlreadyInstalled) {
|
|
907
942
|
const toolName2 = basename(toolDir);
|
|
908
|
-
const normalizedToolName = toolName2.replace(/^droid-/, "");
|
|
909
943
|
if (existsSync5(commandsSource)) {
|
|
910
944
|
const commandFiles = readdirSync4(commandsSource).filter(
|
|
911
945
|
(f) => f.endsWith(".md") && f.toLowerCase() !== "readme.md"
|
|
@@ -914,7 +948,7 @@ function installSkill(skillName) {
|
|
|
914
948
|
const targetCommandPath = join7(commandsPath, file);
|
|
915
949
|
if (existsSync5(targetCommandPath)) {
|
|
916
950
|
const commandName = file.replace(".md", "");
|
|
917
|
-
if (commandName === toolName2
|
|
951
|
+
if (commandName === toolName2) {
|
|
918
952
|
continue;
|
|
919
953
|
}
|
|
920
954
|
return {
|
|
@@ -988,10 +1022,18 @@ function installSkill(skillName) {
|
|
|
988
1022
|
(f) => f.endsWith(".md") && f.toLowerCase() !== "readme.md"
|
|
989
1023
|
);
|
|
990
1024
|
for (const file of commandFiles) {
|
|
991
|
-
const
|
|
992
|
-
const
|
|
993
|
-
|
|
994
|
-
|
|
1025
|
+
const commandName = file.replace(".md", "");
|
|
1026
|
+
const commandMeta = toolManifest.includes.commands.find(
|
|
1027
|
+
(cmd) => (typeof cmd === "string" ? cmd : cmd.name) === commandName
|
|
1028
|
+
);
|
|
1029
|
+
const isAlias = typeof commandMeta === "object" && commandMeta.is_alias;
|
|
1030
|
+
const shouldInstall = config.platform === "opencode" /* OpenCode */ || isAlias;
|
|
1031
|
+
if (shouldInstall) {
|
|
1032
|
+
const sourcePath = join7(commandsSource, file);
|
|
1033
|
+
const targetPath = join7(commandsPath, file);
|
|
1034
|
+
const content = readFileSync5(sourcePath, "utf-8");
|
|
1035
|
+
writeFileSync3(targetPath, content);
|
|
1036
|
+
}
|
|
995
1037
|
}
|
|
996
1038
|
}
|
|
997
1039
|
const installedAgents = [];
|
package/dist/lib/migrations.d.ts
CHANGED
|
@@ -27,4 +27,12 @@ export declare function runToolMigrations(toolName: string, installedVersion: st
|
|
|
27
27
|
success: boolean;
|
|
28
28
|
error?: string;
|
|
29
29
|
};
|
|
30
|
+
/**
|
|
31
|
+
* Run package-level migrations
|
|
32
|
+
* Call this on TUI startup with package version from package.json
|
|
33
|
+
*/
|
|
34
|
+
export declare function runPackageMigrations(packageVersion: string): {
|
|
35
|
+
success: boolean;
|
|
36
|
+
error?: string;
|
|
37
|
+
};
|
|
30
38
|
//# sourceMappingURL=migrations.d.ts.map
|
|
@@ -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;AAsKjB;;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,CAqDA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-config.d.ts","sourceRoot":"","sources":["../../src/lib/skill-config.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"skill-config.d.ts","sourceRoot":"","sources":["../../src/lib/skill-config.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,EAC1C,QAAQ,GAAE,OAAc,GACvB,OAAO,CAAC,IAAI,CAAC,CAoHf"}
|
package/dist/lib/skills.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/lib/skills.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,QAAQ,EACR,WAAW,EACX,KAAK,aAAa,EAClB,KAAK,cAAc,EAGpB,MAAM,SAAS,CAAC;AAkBjB;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAE/D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAEjE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAEhE;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,MAAM,EAAE,GACxB,IAAI,CAyCN;AAwBD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CA2BxE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,GAChB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAwB9C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,EAAE,CA4BlD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAI3D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAI1E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG;IACvD,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAkBA;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,KAAK,CAAC;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC,CAqBD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CA+BA;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI;IACjC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3D,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,QAAQ,EAAE,MAAM,CAAC;CAClB,CAiCA;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG;IAC/C,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,
|
|
1
|
+
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/lib/skills.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/lib/tools.ts"],"names":[],"mappings":"AAKA,OAAO,
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/lib/tools.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,YAAY,EAIlB,MAAM,SAAS,CAAC;AAMjB;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAyBrE;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,YAAY,EAAE,CAmBhD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAczD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiCvE;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAuBpE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,cAAc,EAAE,CA2BtD"}
|
package/dist/lib/types.d.ts
CHANGED
|
@@ -39,7 +39,11 @@ export interface DroidConfig {
|
|
|
39
39
|
git_username: string;
|
|
40
40
|
platforms: Record<string, PlatformConfig>;
|
|
41
41
|
auto_update?: AutoUpdateConfig;
|
|
42
|
-
migrations?:
|
|
42
|
+
migrations?: {
|
|
43
|
+
package?: string;
|
|
44
|
+
tools?: Record<string, string>;
|
|
45
|
+
[key: string]: string | Record<string, string> | undefined;
|
|
46
|
+
};
|
|
43
47
|
}
|
|
44
48
|
export interface LegacyDroidConfig {
|
|
45
49
|
ai_tool: Platform;
|
|
@@ -106,9 +110,13 @@ export interface ToolSkillInclude {
|
|
|
106
110
|
provides_output?: boolean;
|
|
107
111
|
examples?: SkillExample[];
|
|
108
112
|
}
|
|
113
|
+
export interface ToolCommandInclude {
|
|
114
|
+
name: string;
|
|
115
|
+
is_alias: boolean;
|
|
116
|
+
}
|
|
109
117
|
export interface ToolIncludes {
|
|
110
118
|
skills: ToolSkillInclude[];
|
|
111
|
-
commands:
|
|
119
|
+
commands: ToolCommandInclude[];
|
|
112
120
|
agents: string[];
|
|
113
121
|
}
|
|
114
122
|
export interface ToolManifest {
|
package/dist/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IAClB,UAAU,gBAAgB;IAC1B,QAAQ,aAAa;CACtB;AAID,QAAA,MAAM,WAAW,iBAAW,CAAC;AAC7B,OAAO,EAAE,WAAW,IAAI,MAAM,EAAE,CAAC;AACjC,MAAM,MAAM,MAAM,GAAG,QAAQ,CAAC;AAE9B;;;GAGG;AACH,wBAAgB,QAAQ,IAAI,MAAM,CAEjC;AAGD,oBAAY,aAAa;IACvB,QAAQ,aAAa;IACrB,MAAM,WAAW;CAClB;AAGD,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG,MAAM,CAAC;AAEtD,oBAAY,WAAW;IACrB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,KAAK,UAAU;CAChB;AAED,oBAAY,gBAAgB;IAC1B,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,MAAM,WAAW;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,gBAAgB,CAAC;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC1C,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/README.md
CHANGED
|
@@ -57,7 +57,7 @@ description: "What this skill does"
|
|
|
57
57
|
globs:
|
|
58
58
|
- "**/*.ts" # File patterns this skill applies to
|
|
59
59
|
alwaysApply: false # Always include in context?
|
|
60
|
-
allowed-tools: Read, Grep, Glob
|
|
60
|
+
allowed-tools: [Read, Grep, Glob] # Pre-authorize tools (reduces permission prompts)
|
|
61
61
|
---
|
|
62
62
|
|
|
63
63
|
# My Skill
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "droid-brain",
|
|
3
|
+
"version": "0.3.0",
|
|
4
|
+
"description": "Your scratchpad (or brain) - a collaborative space for planning and research. Create docs with /brain plan, /brain research, or /brain review. Use @mentions for async discussion. Docs persist across sessions.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Orderful",
|
|
7
|
+
"url": "https://github.com/orderful"
|
|
8
|
+
},
|
|
9
|
+
"repository": "https://github.com/orderful/droid",
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"keywords": [
|
|
12
|
+
"droid",
|
|
13
|
+
"ai",
|
|
14
|
+
"brain"
|
|
15
|
+
]
|
|
16
|
+
}
|