@orderful/droid 0.33.1 → 0.34.1
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/CHANGELOG.md +22 -0
- package/dist/bin/droid.js +689 -102
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/repos.d.ts +21 -0
- package/dist/commands/repos.d.ts.map +1 -0
- package/dist/commands/tui/components/SettingsDetails.d.ts +2 -1
- package/dist/commands/tui/components/SettingsDetails.d.ts.map +1 -1
- package/dist/commands/tui/types.d.ts +1 -1
- package/dist/commands/tui/types.d.ts.map +1 -1
- package/dist/commands/tui/views/ReposManagementScreen.d.ts +6 -0
- package/dist/commands/tui/views/ReposManagementScreen.d.ts.map +1 -0
- package/dist/commands/tui/views/ReposViewerScreen.d.ts +5 -0
- package/dist/commands/tui/views/ReposViewerScreen.d.ts.map +1 -0
- package/dist/commands/tui.d.ts.map +1 -1
- package/dist/index.js +156 -26
- package/dist/lib/config.d.ts +34 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/types.d.ts +10 -1
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/tools/brain/skills/brain/SKILL.md +2 -2
- package/dist/tools/brain/skills/brain/references/workflows.md +10 -10
- package/dist/tools/coach/skills/coach/SKILL.md +6 -6
- package/dist/tools/codex/skills/codex/SKILL.md +5 -5
- package/dist/tools/codex/skills/codex/references/creating.md +2 -2
- package/dist/tools/codex/skills/codex/references/decisions.md +2 -2
- package/dist/tools/codex/skills/codex/references/loading.md +1 -1
- package/dist/tools/codex/skills/codex/references/topics.md +2 -2
- package/dist/tools/codex/skills/codex/scripts/git-finish-write.d.ts +1 -1
- package/dist/tools/codex/skills/codex/scripts/git-finish-write.ts +2 -2
- package/dist/tools/codex/skills/codex/scripts/git-preamble.d.ts +1 -1
- package/dist/tools/codex/skills/codex/scripts/git-preamble.ts +3 -3
- package/dist/tools/codex/skills/codex/scripts/git-start-write.d.ts +1 -1
- package/dist/tools/codex/skills/codex/scripts/git-start-write.ts +2 -2
- package/dist/tools/comments/skills/comments/SKILL.md +9 -9
- package/dist/tools/plan/skills/plan/SKILL.md +2 -2
- package/dist/tools/plan/skills/plan/references/workflows.md +2 -2
- package/dist/tools/project/skills/project/SKILL.md +1 -1
- package/dist/tools/project/skills/project/references/creating.md +2 -2
- package/dist/tools/project/skills/project/references/loading.md +1 -1
- package/dist/tools/tech-design/skills/tech-design/SKILL.md +2 -2
- package/dist/tools/tech-design/skills/tech-design/references/publish.md +3 -3
- package/dist/tools/tech-design/skills/tech-design/references/start.md +29 -3
- package/dist/tools/tech-design/skills/tech-design/references/think.md +1 -1
- package/dist/tools/wrapup/skills/wrapup/references/subagent-prompts.md +3 -3
- package/package.json +1 -1
- package/src/bin/droid.ts +39 -0
- package/src/commands/config.ts +14 -1
- package/src/commands/repos.ts +185 -0
- package/src/commands/tui/components/SettingsDetails.tsx +42 -13
- package/src/commands/tui/types.ts +1 -1
- package/src/commands/tui/views/ReposManagementScreen.tsx +291 -0
- package/src/commands/tui/views/ReposViewerScreen.tsx +49 -0
- package/src/commands/tui/views/SkillConfigScreen.tsx +2 -2
- package/src/commands/tui.tsx +51 -4
- package/src/lib/config.test.ts +228 -1
- package/src/lib/config.ts +205 -4
- package/src/lib/types.ts +13 -1
- package/src/tools/brain/skills/brain/SKILL.md +2 -2
- package/src/tools/brain/skills/brain/references/workflows.md +10 -10
- package/src/tools/coach/skills/coach/SKILL.md +6 -6
- package/src/tools/codex/skills/codex/SKILL.md +5 -5
- package/src/tools/codex/skills/codex/references/creating.md +2 -2
- package/src/tools/codex/skills/codex/references/decisions.md +2 -2
- package/src/tools/codex/skills/codex/references/loading.md +1 -1
- package/src/tools/codex/skills/codex/references/topics.md +2 -2
- package/src/tools/codex/skills/codex/scripts/git-finish-write.ts +2 -2
- package/src/tools/codex/skills/codex/scripts/git-preamble.ts +3 -3
- package/src/tools/codex/skills/codex/scripts/git-start-write.ts +2 -2
- package/src/tools/comments/skills/comments/SKILL.md +9 -9
- package/src/tools/plan/skills/plan/SKILL.md +2 -2
- package/src/tools/plan/skills/plan/references/workflows.md +2 -2
- package/src/tools/project/skills/project/SKILL.md +1 -1
- package/src/tools/project/skills/project/references/creating.md +2 -2
- package/src/tools/project/skills/project/references/loading.md +1 -1
- package/src/tools/tech-design/skills/tech-design/SKILL.md +2 -2
- package/src/tools/tech-design/skills/tech-design/references/publish.md +3 -3
- package/src/tools/tech-design/skills/tech-design/references/start.md +29 -3
- package/src/tools/tech-design/skills/tech-design/references/think.md +1 -1
- package/src/tools/wrapup/skills/wrapup/references/subagent-prompts.md +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAYA,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAS1D;AAED,wBAAsB,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAYA,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAS1D;AAED,wBAAsB,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAyFzF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
interface ReposListOptions {
|
|
2
|
+
json?: boolean;
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* List all repos
|
|
6
|
+
*/
|
|
7
|
+
export declare function reposListCommand(options?: ReposListOptions): Promise<void>;
|
|
8
|
+
/**
|
|
9
|
+
* Add a repo
|
|
10
|
+
*/
|
|
11
|
+
export declare function reposAddCommand(name?: string, path?: string, description?: string): Promise<void>;
|
|
12
|
+
/**
|
|
13
|
+
* Remove a repo
|
|
14
|
+
*/
|
|
15
|
+
export declare function reposRemoveCommand(name?: string): Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* Get a single repo (for scripts)
|
|
18
|
+
*/
|
|
19
|
+
export declare function reposGetCommand(name: string): Promise<void>;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=repos.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repos.d.ts","sourceRoot":"","sources":["../../src/commands/repos.ts"],"names":[],"mappings":"AAWA,UAAU,gBAAgB;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BhF;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,IAAI,CAAC,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CA8Df;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkDrE;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CASjE"}
|
|
@@ -2,7 +2,8 @@ import { Platform } from '../../../lib/types';
|
|
|
2
2
|
export interface SettingsDetailsProps {
|
|
3
3
|
isFocused: boolean;
|
|
4
4
|
detectedPlatforms: Platform[];
|
|
5
|
+
selectedAction: number;
|
|
5
6
|
onRedetect?: () => void;
|
|
6
7
|
}
|
|
7
|
-
export declare function SettingsDetails({ isFocused, detectedPlatforms, onRedetect: _onRedetect, }: SettingsDetailsProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export declare function SettingsDetails({ isFocused, detectedPlatforms, selectedAction, onRedetect: _onRedetect, }: SettingsDetailsProps): import("react/jsx-runtime").JSX.Element;
|
|
8
9
|
//# sourceMappingURL=SettingsDetails.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsDetails.d.ts","sourceRoot":"","sources":["../../../../src/commands/tui/components/SettingsDetails.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB,EAAE,QAAQ,EAAE,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB;AAQD,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,iBAAiB,EACjB,UAAU,EAAE,WAAW,GACxB,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"SettingsDetails.d.ts","sourceRoot":"","sources":["../../../../src/commands/tui/components/SettingsDetails.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB,EAAE,QAAQ,EAAE,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB;AAQD,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,iBAAiB,EACjB,cAAc,EACd,UAAU,EAAE,WAAW,GACxB,EAAE,oBAAoB,2CAuFtB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type Tab = 'tools' | 'settings';
|
|
2
|
-
export type View = 'welcome' | 'tool-updates' | 'setup' | 'menu' | 'detail' | 'configure' | 'readme' | 'explorer';
|
|
2
|
+
export type View = 'welcome' | 'tool-updates' | 'setup' | 'menu' | 'detail' | 'configure' | 'readme' | 'explorer' | 'repos' | 'view-repos';
|
|
3
3
|
export type SetupStep = 'user_mention' | 'auto_update' | 'confirm';
|
|
4
4
|
export type ComponentType = 'skill' | 'command' | 'agent';
|
|
5
5
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/commands/tui/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GAAG,GAAG,OAAO,GAAG,UAAU,CAAC;AACvC,MAAM,MAAM,IAAI,GAAG,SAAS,GAAG,cAAc,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/commands/tui/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GAAG,GAAG,OAAO,GAAG,UAAU,CAAC;AACvC,MAAM,MAAM,IAAI,GAAG,SAAS,GAAG,cAAc,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,YAAY,CAAC;AAC3I,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,aAAa,GAAG,SAAS,CAAC;AACnE,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export interface ReposManagementScreenProps {
|
|
2
|
+
onComplete: () => void;
|
|
3
|
+
onCancel: () => void;
|
|
4
|
+
}
|
|
5
|
+
export declare function ReposManagementScreen({ onComplete: _onComplete, onCancel }: ReposManagementScreenProps): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
//# sourceMappingURL=ReposManagementScreen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReposManagementScreen.d.ts","sourceRoot":"","sources":["../../../../src/commands/tui/views/ReposManagementScreen.tsx"],"names":[],"mappings":"AAOA,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAID,wBAAgB,qBAAqB,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,0BAA0B,2CAoRtG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReposViewerScreen.d.ts","sourceRoot":"","sources":["../../../../src/commands/tui/views/ReposViewerScreen.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,iBAAiB,CAAC,EAAE,OAAO,EAAE,EAAE,sBAAsB,2CAwCpE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../../src/commands/tui.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../../src/commands/tui.tsx"],"names":[],"mappings":"AA+lBA,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAiBhD"}
|
package/dist/index.js
CHANGED
|
@@ -40,7 +40,13 @@ function getPlatformToolsFor(config, platform) {
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
// src/lib/config.ts
|
|
43
|
-
import {
|
|
43
|
+
import {
|
|
44
|
+
existsSync,
|
|
45
|
+
mkdirSync,
|
|
46
|
+
readFileSync,
|
|
47
|
+
readdirSync,
|
|
48
|
+
writeFileSync
|
|
49
|
+
} from "fs";
|
|
44
50
|
import { homedir } from "os";
|
|
45
51
|
import { join } from "path";
|
|
46
52
|
import YAML from "yaml";
|
|
@@ -80,6 +86,54 @@ function migrateConfig(config) {
|
|
|
80
86
|
platforms: config.platforms ?? {}
|
|
81
87
|
};
|
|
82
88
|
}
|
|
89
|
+
function migrateToolConfigs(config) {
|
|
90
|
+
const skillsDir = join(CONFIG_DIR, "skills");
|
|
91
|
+
if (!existsSync(skillsDir)) {
|
|
92
|
+
if (!config.migrations) {
|
|
93
|
+
config.migrations = {};
|
|
94
|
+
}
|
|
95
|
+
if (!config.migrations.tools_consolidated) {
|
|
96
|
+
config.migrations.tools_consolidated = true;
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
let migrated = false;
|
|
102
|
+
try {
|
|
103
|
+
const entries = readdirSync(skillsDir, { withFileTypes: true });
|
|
104
|
+
for (const entry of entries) {
|
|
105
|
+
if (!entry.isDirectory()) continue;
|
|
106
|
+
const skillName = entry.name;
|
|
107
|
+
const overridesPath = join(skillsDir, skillName, "overrides.yaml");
|
|
108
|
+
if (!existsSync(overridesPath)) continue;
|
|
109
|
+
try {
|
|
110
|
+
const content = readFileSync(overridesPath, "utf-8");
|
|
111
|
+
const overrides = YAML.parse(content);
|
|
112
|
+
if (overrides && Object.keys(overrides).length > 0) {
|
|
113
|
+
if (!config.tools) {
|
|
114
|
+
config.tools = {};
|
|
115
|
+
}
|
|
116
|
+
if (!config.tools[skillName]) {
|
|
117
|
+
config.tools[skillName] = overrides;
|
|
118
|
+
migrated = true;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
} catch {
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
if (!config.migrations) {
|
|
126
|
+
config.migrations = {};
|
|
127
|
+
}
|
|
128
|
+
if (!config.migrations.tools_consolidated) {
|
|
129
|
+
config.migrations.tools_consolidated = true;
|
|
130
|
+
migrated = true;
|
|
131
|
+
}
|
|
132
|
+
return migrated;
|
|
133
|
+
} catch {
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
83
137
|
function ensureConfigDir() {
|
|
84
138
|
if (!existsSync(CONFIG_DIR)) {
|
|
85
139
|
mkdirSync(CONFIG_DIR, { recursive: true });
|
|
@@ -96,9 +150,10 @@ function loadConfig() {
|
|
|
96
150
|
try {
|
|
97
151
|
const content = readFileSync(CONFIG_FILE, "utf-8");
|
|
98
152
|
const rawConfig = YAML.parse(content);
|
|
99
|
-
const
|
|
153
|
+
const needsLegacyMigration = "ai_tool" in rawConfig && !("platform" in rawConfig);
|
|
100
154
|
const config = migrateConfig(rawConfig);
|
|
101
|
-
|
|
155
|
+
const needsToolMigration = migrateToolConfigs(config);
|
|
156
|
+
if (needsLegacyMigration || needsToolMigration) {
|
|
102
157
|
saveConfig(config);
|
|
103
158
|
}
|
|
104
159
|
return config;
|
|
@@ -152,6 +207,11 @@ function getSkillOverridesPath(skillName) {
|
|
|
152
207
|
return join(CONFIG_DIR, "skills", normalizedName, "overrides.yaml");
|
|
153
208
|
}
|
|
154
209
|
function loadSkillOverrides(skillName) {
|
|
210
|
+
const normalizedName = normalizeSkillNameForConfig(skillName);
|
|
211
|
+
const toolSettings = getToolSettings(normalizedName);
|
|
212
|
+
if (Object.keys(toolSettings).length > 0) {
|
|
213
|
+
return toolSettings;
|
|
214
|
+
}
|
|
155
215
|
const overridesPath = getSkillOverridesPath(skillName);
|
|
156
216
|
if (!existsSync(overridesPath)) {
|
|
157
217
|
return {};
|
|
@@ -173,6 +233,23 @@ function saveSkillOverrides(skillName, overrides) {
|
|
|
173
233
|
const content = YAML.stringify(overrides, { indent: 2 });
|
|
174
234
|
writeFileSync(overridesPath, content, "utf-8");
|
|
175
235
|
}
|
|
236
|
+
function getToolSettings(name) {
|
|
237
|
+
const config = loadConfig();
|
|
238
|
+
return config.tools?.[name] ?? {};
|
|
239
|
+
}
|
|
240
|
+
function setToolSettings(name, settings) {
|
|
241
|
+
const config = loadConfig();
|
|
242
|
+
if (!config.tools) {
|
|
243
|
+
config.tools = {};
|
|
244
|
+
}
|
|
245
|
+
config.tools[name] = settings;
|
|
246
|
+
saveConfig(config);
|
|
247
|
+
}
|
|
248
|
+
function setToolSetting(name, key, value) {
|
|
249
|
+
const settings = getToolSettings(name);
|
|
250
|
+
settings[key] = value;
|
|
251
|
+
setToolSettings(name, settings);
|
|
252
|
+
}
|
|
176
253
|
function getAutoUpdateConfig() {
|
|
177
254
|
const config = loadConfig();
|
|
178
255
|
return {
|
|
@@ -189,11 +266,56 @@ function setAutoUpdateConfig(updates) {
|
|
|
189
266
|
};
|
|
190
267
|
saveConfig(config);
|
|
191
268
|
}
|
|
269
|
+
function expandTilde(path) {
|
|
270
|
+
if (path.startsWith("~/")) {
|
|
271
|
+
return join(homedir(), path.slice(2));
|
|
272
|
+
}
|
|
273
|
+
return path;
|
|
274
|
+
}
|
|
275
|
+
function getRepos() {
|
|
276
|
+
const config = loadConfig();
|
|
277
|
+
return config.repos ?? [];
|
|
278
|
+
}
|
|
279
|
+
function getRepo(name) {
|
|
280
|
+
const repos = getRepos();
|
|
281
|
+
return repos.find((repo) => repo.name === name);
|
|
282
|
+
}
|
|
283
|
+
function getRepoPath(name) {
|
|
284
|
+
const repo = getRepo(name);
|
|
285
|
+
if (!repo) {
|
|
286
|
+
return void 0;
|
|
287
|
+
}
|
|
288
|
+
return expandTilde(repo.path);
|
|
289
|
+
}
|
|
290
|
+
function addRepo(repo) {
|
|
291
|
+
const config = loadConfig();
|
|
292
|
+
const repos = config.repos ?? [];
|
|
293
|
+
const existingIndex = repos.findIndex((r) => r.name === repo.name);
|
|
294
|
+
if (existingIndex >= 0) {
|
|
295
|
+
repos[existingIndex] = repo;
|
|
296
|
+
} else {
|
|
297
|
+
repos.push(repo);
|
|
298
|
+
}
|
|
299
|
+
config.repos = repos;
|
|
300
|
+
saveConfig(config);
|
|
301
|
+
}
|
|
302
|
+
function removeRepo(name) {
|
|
303
|
+
const config = loadConfig();
|
|
304
|
+
const repos = config.repos ?? [];
|
|
305
|
+
const existingIndex = repos.findIndex((r) => r.name === name);
|
|
306
|
+
if (existingIndex >= 0) {
|
|
307
|
+
repos.splice(existingIndex, 1);
|
|
308
|
+
config.repos = repos;
|
|
309
|
+
saveConfig(config);
|
|
310
|
+
return true;
|
|
311
|
+
}
|
|
312
|
+
return false;
|
|
313
|
+
}
|
|
192
314
|
|
|
193
315
|
// src/lib/skills.ts
|
|
194
316
|
import {
|
|
195
317
|
existsSync as existsSync6,
|
|
196
|
-
readdirSync as
|
|
318
|
+
readdirSync as readdirSync5,
|
|
197
319
|
readFileSync as readFileSync6,
|
|
198
320
|
mkdirSync as mkdirSync4,
|
|
199
321
|
writeFileSync as writeFileSync4,
|
|
@@ -204,7 +326,7 @@ import { fileURLToPath as fileURLToPath4 } from "url";
|
|
|
204
326
|
import YAML4 from "yaml";
|
|
205
327
|
|
|
206
328
|
// src/lib/agents.ts
|
|
207
|
-
import { existsSync as existsSync4, readdirSync as
|
|
329
|
+
import { existsSync as existsSync4, readdirSync as readdirSync3, readFileSync as readFileSync4, writeFileSync as writeFileSync2, unlinkSync, mkdirSync as mkdirSync2 } from "fs";
|
|
208
330
|
import { join as join5, dirname as dirname3 } from "path";
|
|
209
331
|
import { fileURLToPath as fileURLToPath3 } from "url";
|
|
210
332
|
import YAML3 from "yaml";
|
|
@@ -274,7 +396,7 @@ function getActivePlatforms(config) {
|
|
|
274
396
|
}
|
|
275
397
|
|
|
276
398
|
// src/lib/tools.ts
|
|
277
|
-
import { existsSync as existsSync3, readdirSync, readFileSync as readFileSync3 } from "fs";
|
|
399
|
+
import { existsSync as existsSync3, readdirSync as readdirSync2, readFileSync as readFileSync3 } from "fs";
|
|
278
400
|
import { join as join4, dirname as dirname2 } from "path";
|
|
279
401
|
import { fileURLToPath as fileURLToPath2 } from "url";
|
|
280
402
|
import YAML2 from "yaml";
|
|
@@ -387,7 +509,7 @@ function getBundledTools() {
|
|
|
387
509
|
if (!existsSync3(BUNDLED_TOOLS_DIR)) {
|
|
388
510
|
return [];
|
|
389
511
|
}
|
|
390
|
-
const toolDirs =
|
|
512
|
+
const toolDirs = readdirSync2(BUNDLED_TOOLS_DIR, { withFileTypes: true }).filter((dirent) => dirent.isDirectory()).map((dirent) => dirent.name);
|
|
391
513
|
const tools = [];
|
|
392
514
|
for (const toolName of toolDirs) {
|
|
393
515
|
const manifest = loadToolManifest(join4(BUNDLED_TOOLS_DIR, toolName));
|
|
@@ -538,7 +660,7 @@ import {
|
|
|
538
660
|
mkdirSync as mkdirSync3,
|
|
539
661
|
renameSync,
|
|
540
662
|
rmSync,
|
|
541
|
-
readdirSync as
|
|
663
|
+
readdirSync as readdirSync4,
|
|
542
664
|
readFileSync as readFileSync5,
|
|
543
665
|
writeFileSync as writeFileSync3
|
|
544
666
|
} from "fs";
|
|
@@ -594,7 +716,7 @@ function createPlatformSyncMigration(version) {
|
|
|
594
716
|
if (!existsSync5(skillsPath)) continue;
|
|
595
717
|
config.platform = platformKey;
|
|
596
718
|
const trackedTools = getPlatformTools(config);
|
|
597
|
-
const installedDirs =
|
|
719
|
+
const installedDirs = readdirSync4(skillsPath, { withFileTypes: true }).filter((dirent) => dirent.isDirectory()).map((dirent) => dirent.name);
|
|
598
720
|
for (const skillName of installedDirs) {
|
|
599
721
|
const normalizedName = skillName.replace(/^droid-/, "");
|
|
600
722
|
const isTracked = trackedTools[skillName] || trackedTools[`droid-${normalizedName}`] || trackedTools[normalizedName];
|
|
@@ -682,7 +804,7 @@ function createOpenCodeSkillsPathMigration(version) {
|
|
|
682
804
|
}
|
|
683
805
|
return;
|
|
684
806
|
}
|
|
685
|
-
const skillDirs =
|
|
807
|
+
const skillDirs = readdirSync4(oldSkillsPath, { withFileTypes: true }).filter((dirent) => dirent.isDirectory()).map((dirent) => dirent.name);
|
|
686
808
|
for (const skillName of skillDirs) {
|
|
687
809
|
const oldSkillDir = join6(oldSkillsPath, skillName);
|
|
688
810
|
const newSkillDir = join6(newSkillsPath, skillName);
|
|
@@ -697,7 +819,7 @@ function createOpenCodeSkillsPathMigration(version) {
|
|
|
697
819
|
}
|
|
698
820
|
}
|
|
699
821
|
try {
|
|
700
|
-
const remaining =
|
|
822
|
+
const remaining = readdirSync4(oldSkillsPath);
|
|
701
823
|
if (remaining.length === 0) {
|
|
702
824
|
rmSync(oldSkillsPath, { recursive: true });
|
|
703
825
|
}
|
|
@@ -727,7 +849,7 @@ function createClaudeCodeCommandCleanupMigration(version) {
|
|
|
727
849
|
}
|
|
728
850
|
}
|
|
729
851
|
}
|
|
730
|
-
const commandFiles =
|
|
852
|
+
const commandFiles = readdirSync4(commandsPath, { withFileTypes: true }).filter((dirent) => dirent.isFile() && dirent.name.endsWith(".md")).map((dirent) => dirent.name);
|
|
731
853
|
for (const file of commandFiles) {
|
|
732
854
|
const commandName = file.replace(".md", "");
|
|
733
855
|
if (!aliasCommands.has(commandName)) {
|
|
@@ -805,7 +927,7 @@ function createUnifiedSkillsPathMigration(version) {
|
|
|
805
927
|
if (!existsSync5(unifiedSkillsPath)) {
|
|
806
928
|
mkdirSync3(unifiedSkillsPath, { recursive: true });
|
|
807
929
|
}
|
|
808
|
-
const skillDirs =
|
|
930
|
+
const skillDirs = readdirSync4(oldOpenCodeSkillsPath, { withFileTypes: true }).filter((dirent) => dirent.isDirectory()).map((dirent) => dirent.name);
|
|
809
931
|
for (const skillName of skillDirs) {
|
|
810
932
|
const sourcePath = join6(oldOpenCodeSkillsPath, skillName);
|
|
811
933
|
const destPath = join6(unifiedSkillsPath, skillName);
|
|
@@ -825,7 +947,7 @@ function createUnifiedSkillsPathMigration(version) {
|
|
|
825
947
|
}
|
|
826
948
|
function copyDirRecursive(src, dest) {
|
|
827
949
|
mkdirSync3(dest, { recursive: true });
|
|
828
|
-
const entries =
|
|
950
|
+
const entries = readdirSync4(src, { withFileTypes: true });
|
|
829
951
|
for (const entry of entries) {
|
|
830
952
|
const srcPath = join6(src, entry.name);
|
|
831
953
|
const destPath = join6(dest, entry.name);
|
|
@@ -1008,7 +1130,7 @@ function findSkillPath(skillName) {
|
|
|
1008
1130
|
if (!existsSync6(BUNDLED_SKILLS_DIR)) {
|
|
1009
1131
|
return null;
|
|
1010
1132
|
}
|
|
1011
|
-
const toolDirs =
|
|
1133
|
+
const toolDirs = readdirSync5(BUNDLED_SKILLS_DIR, { withFileTypes: true }).filter((dirent) => dirent.isDirectory()).map((dirent) => dirent.name);
|
|
1012
1134
|
for (const toolName of toolDirs) {
|
|
1013
1135
|
const skillsDir = join7(BUNDLED_SKILLS_DIR, toolName, "skills");
|
|
1014
1136
|
if (!existsSync6(skillsDir)) continue;
|
|
@@ -1026,12 +1148,12 @@ function getBundledSkills() {
|
|
|
1026
1148
|
if (!existsSync6(BUNDLED_SKILLS_DIR)) {
|
|
1027
1149
|
return [];
|
|
1028
1150
|
}
|
|
1029
|
-
const toolDirs =
|
|
1151
|
+
const toolDirs = readdirSync5(BUNDLED_SKILLS_DIR, { withFileTypes: true }).filter((dirent) => dirent.isDirectory()).map((dirent) => dirent.name);
|
|
1030
1152
|
const skills = [];
|
|
1031
1153
|
for (const toolName of toolDirs) {
|
|
1032
1154
|
const skillsDir = join7(BUNDLED_SKILLS_DIR, toolName, "skills");
|
|
1033
1155
|
if (!existsSync6(skillsDir)) continue;
|
|
1034
|
-
const skillSubdirs =
|
|
1156
|
+
const skillSubdirs = readdirSync5(skillsDir, { withFileTypes: true }).filter((dirent) => dirent.isDirectory()).map((dirent) => dirent.name);
|
|
1035
1157
|
for (const skillName of skillSubdirs) {
|
|
1036
1158
|
const manifest = loadSkillManifest(join7(skillsDir, skillName));
|
|
1037
1159
|
if (manifest) {
|
|
@@ -1209,7 +1331,7 @@ function installSkill(skillName) {
|
|
|
1209
1331
|
if (!isAlreadyInstalled) {
|
|
1210
1332
|
const toolName2 = basename(toolDir);
|
|
1211
1333
|
if (existsSync6(commandsSource)) {
|
|
1212
|
-
const commandFiles =
|
|
1334
|
+
const commandFiles = readdirSync5(commandsSource).filter(
|
|
1213
1335
|
(f) => f.endsWith(".md") && f.toLowerCase() !== "readme.md"
|
|
1214
1336
|
);
|
|
1215
1337
|
for (const file of commandFiles) {
|
|
@@ -1227,7 +1349,7 @@ function installSkill(skillName) {
|
|
|
1227
1349
|
}
|
|
1228
1350
|
}
|
|
1229
1351
|
if (existsSync6(agentsSource)) {
|
|
1230
|
-
const agentFiles =
|
|
1352
|
+
const agentFiles = readdirSync5(agentsSource, { withFileTypes: true }).filter((dirent) => dirent.isFile() && dirent.name.endsWith(".md")).map((dirent) => dirent.name.replace(".md", ""));
|
|
1231
1353
|
for (const agentName of agentFiles) {
|
|
1232
1354
|
if (isAgentInstalled(agentName)) {
|
|
1233
1355
|
return {
|
|
@@ -1256,7 +1378,7 @@ function installSkill(skillName) {
|
|
|
1256
1378
|
if (!existsSync6(targetReferencesDir)) {
|
|
1257
1379
|
mkdirSync4(targetReferencesDir, { recursive: true });
|
|
1258
1380
|
}
|
|
1259
|
-
const referenceFiles =
|
|
1381
|
+
const referenceFiles = readdirSync5(referencesSource).filter(
|
|
1260
1382
|
(f) => f.endsWith(".md")
|
|
1261
1383
|
);
|
|
1262
1384
|
for (const file of referenceFiles) {
|
|
@@ -1272,7 +1394,7 @@ function installSkill(skillName) {
|
|
|
1272
1394
|
if (!existsSync6(targetScriptsDir)) {
|
|
1273
1395
|
mkdirSync4(targetScriptsDir, { recursive: true });
|
|
1274
1396
|
}
|
|
1275
|
-
const scriptFiles =
|
|
1397
|
+
const scriptFiles = readdirSync5(scriptsSource).filter(
|
|
1276
1398
|
(f) => f.endsWith(".ts") || f.endsWith(".js") || f.endsWith(".py")
|
|
1277
1399
|
);
|
|
1278
1400
|
for (const file of scriptFiles) {
|
|
@@ -1285,7 +1407,7 @@ function installSkill(skillName) {
|
|
|
1285
1407
|
const activePlatforms = getActivePlatforms(config);
|
|
1286
1408
|
const targetPlatforms = activePlatforms.length > 0 ? activePlatforms : [config.platform];
|
|
1287
1409
|
if (existsSync6(commandsSource)) {
|
|
1288
|
-
const commandFiles =
|
|
1410
|
+
const commandFiles = readdirSync5(commandsSource).filter(
|
|
1289
1411
|
(f) => f.endsWith(".md") && f.toLowerCase() !== "readme.md"
|
|
1290
1412
|
);
|
|
1291
1413
|
for (const platform of targetPlatforms) {
|
|
@@ -1311,7 +1433,7 @@ function installSkill(skillName) {
|
|
|
1311
1433
|
}
|
|
1312
1434
|
const installedAgents = [];
|
|
1313
1435
|
if (existsSync6(agentsSource)) {
|
|
1314
|
-
const agentFiles =
|
|
1436
|
+
const agentFiles = readdirSync5(agentsSource, { withFileTypes: true }).filter((dirent) => dirent.isFile() && dirent.name.endsWith(".md")).map((dirent) => dirent.name.replace(".md", ""));
|
|
1315
1437
|
for (const agentName of agentFiles) {
|
|
1316
1438
|
const agentPath = join7(agentsSource, `${agentName}.md`);
|
|
1317
1439
|
let anySuccess = false;
|
|
@@ -1368,7 +1490,7 @@ function uninstallSkill(skillName) {
|
|
|
1368
1490
|
const skillPath = findSkillPath(skillName);
|
|
1369
1491
|
const commandsSource = skillPath ? join7(skillPath.toolDir, "commands") : null;
|
|
1370
1492
|
if (commandsSource && existsSync6(commandsSource)) {
|
|
1371
|
-
const commandFiles =
|
|
1493
|
+
const commandFiles = readdirSync5(commandsSource).filter(
|
|
1372
1494
|
(f) => f.endsWith(".md") && f.toLowerCase() !== "readme.md"
|
|
1373
1495
|
);
|
|
1374
1496
|
for (const platform of targetPlatforms) {
|
|
@@ -1390,7 +1512,7 @@ function uninstallSkill(skillName) {
|
|
|
1390
1512
|
}
|
|
1391
1513
|
const agentsSource = skillPath ? join7(skillPath.toolDir, "agents") : null;
|
|
1392
1514
|
if (agentsSource && existsSync6(agentsSource)) {
|
|
1393
|
-
const agentFiles =
|
|
1515
|
+
const agentFiles = readdirSync5(agentsSource, { withFileTypes: true }).filter((dirent) => dirent.isFile() && dirent.name.endsWith(".md")).map((dirent) => dirent.name.replace(".md", ""));
|
|
1394
1516
|
for (const agentName of agentFiles) {
|
|
1395
1517
|
agentsToRemove.add(agentName);
|
|
1396
1518
|
}
|
|
@@ -1444,7 +1566,7 @@ function installCommand(commandName, skillName) {
|
|
|
1444
1566
|
};
|
|
1445
1567
|
}
|
|
1446
1568
|
const cmdPart = commandName.startsWith(skillName + " ") ? commandName.slice(skillName.length + 1) : commandName;
|
|
1447
|
-
const files =
|
|
1569
|
+
const files = readdirSync5(commandsDir).filter(
|
|
1448
1570
|
(f) => f.endsWith(".md") && f.toLowerCase() !== "readme.md"
|
|
1449
1571
|
);
|
|
1450
1572
|
const sourceFile = files.find((f) => {
|
|
@@ -1507,6 +1629,7 @@ export {
|
|
|
1507
1629
|
ConfigOptionType,
|
|
1508
1630
|
Platform,
|
|
1509
1631
|
SkillStatus,
|
|
1632
|
+
addRepo,
|
|
1510
1633
|
checkForUpdates,
|
|
1511
1634
|
compareSemver,
|
|
1512
1635
|
configExists,
|
|
@@ -1524,11 +1647,15 @@ export {
|
|
|
1524
1647
|
getPlatformConfigPath,
|
|
1525
1648
|
getPlatformTools,
|
|
1526
1649
|
getPlatformToolsFor,
|
|
1650
|
+
getRepo,
|
|
1651
|
+
getRepoPath,
|
|
1652
|
+
getRepos,
|
|
1527
1653
|
getSkillOverridesPath,
|
|
1528
1654
|
getSkillStatusDisplay,
|
|
1529
1655
|
getSkillUpdateStatus,
|
|
1530
1656
|
getSkillsInstallPath,
|
|
1531
1657
|
getSkillsWithUpdates,
|
|
1658
|
+
getToolSettings,
|
|
1532
1659
|
getUpdateInfo,
|
|
1533
1660
|
getVersion,
|
|
1534
1661
|
installCommand,
|
|
@@ -1538,12 +1665,15 @@ export {
|
|
|
1538
1665
|
loadConfig,
|
|
1539
1666
|
loadSkillManifest,
|
|
1540
1667
|
loadSkillOverrides,
|
|
1668
|
+
removeRepo,
|
|
1541
1669
|
runUpdate,
|
|
1542
1670
|
saveConfig,
|
|
1543
1671
|
saveSkillOverrides,
|
|
1544
1672
|
setAutoUpdateConfig,
|
|
1545
1673
|
setConfigValue,
|
|
1546
1674
|
setPlatformTools,
|
|
1675
|
+
setToolSetting,
|
|
1676
|
+
setToolSettings,
|
|
1547
1677
|
uninstallCommand,
|
|
1548
1678
|
uninstallSkill,
|
|
1549
1679
|
updateAllSkills,
|
package/dist/lib/config.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type DroidConfig, type SkillOverrides, type AutoUpdateConfig } from './types';
|
|
1
|
+
import { type DroidConfig, type SkillOverrides, type AutoUpdateConfig, type RepoConfig, type ToolConfig } from './types';
|
|
2
2
|
/**
|
|
3
3
|
* Ensure the config directory exists
|
|
4
4
|
*/
|
|
@@ -38,12 +38,25 @@ export declare function getConfigDir(): string;
|
|
|
38
38
|
export declare function getSkillOverridesPath(skillName: string): string;
|
|
39
39
|
/**
|
|
40
40
|
* Load skill-specific overrides
|
|
41
|
+
* Reads from new location first (config.tools.{name}), falls back to old override files
|
|
41
42
|
*/
|
|
42
43
|
export declare function loadSkillOverrides(skillName: string): SkillOverrides;
|
|
43
44
|
/**
|
|
44
45
|
* Save skill-specific overrides
|
|
45
46
|
*/
|
|
46
47
|
export declare function saveSkillOverrides(skillName: string, overrides: SkillOverrides): void;
|
|
48
|
+
/**
|
|
49
|
+
* Get tool settings from config.tools.{name} (returns empty object if none)
|
|
50
|
+
*/
|
|
51
|
+
export declare function getToolSettings(name: string): ToolConfig;
|
|
52
|
+
/**
|
|
53
|
+
* Set all settings for a tool in config.tools.{name}
|
|
54
|
+
*/
|
|
55
|
+
export declare function setToolSettings(name: string, settings: ToolConfig): void;
|
|
56
|
+
/**
|
|
57
|
+
* Set a single key in tool settings
|
|
58
|
+
*/
|
|
59
|
+
export declare function setToolSetting(name: string, key: string, value: unknown): void;
|
|
47
60
|
/**
|
|
48
61
|
* Get auto-update config with defaults applied
|
|
49
62
|
*/
|
|
@@ -52,4 +65,24 @@ export declare function getAutoUpdateConfig(): AutoUpdateConfig;
|
|
|
52
65
|
* Update auto-update config
|
|
53
66
|
*/
|
|
54
67
|
export declare function setAutoUpdateConfig(updates: Partial<AutoUpdateConfig>): void;
|
|
68
|
+
/**
|
|
69
|
+
* Get all repos (returns empty array if none)
|
|
70
|
+
*/
|
|
71
|
+
export declare function getRepos(): RepoConfig[];
|
|
72
|
+
/**
|
|
73
|
+
* Find repo by name
|
|
74
|
+
*/
|
|
75
|
+
export declare function getRepo(name: string): RepoConfig | undefined;
|
|
76
|
+
/**
|
|
77
|
+
* Get repo path with tilde expansion
|
|
78
|
+
*/
|
|
79
|
+
export declare function getRepoPath(name: string): string | undefined;
|
|
80
|
+
/**
|
|
81
|
+
* Add or update a repo (updates if name exists)
|
|
82
|
+
*/
|
|
83
|
+
export declare function addRepo(repo: RepoConfig): void;
|
|
84
|
+
/**
|
|
85
|
+
* Remove repo by name (returns true if existed)
|
|
86
|
+
*/
|
|
87
|
+
export declare function removeRepo(name: string): boolean;
|
|
55
88
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/lib/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAUA,OAAO,EAGL,KAAK,WAAW,EAEhB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,UAAU,EAChB,MAAM,SAAS,CAAC;AA2HjB;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAItC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,WAAW,CAgCxC;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAKpD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAanD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAiBhE;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAWD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAG/D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAsBpE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,cAAc,GACxB,IAAI,CAWN;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAGxD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,IAAI,CAOxE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAI9E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,gBAAgB,CAMtD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAQ5E;AAYD;;GAEG;AACH,wBAAgB,QAAQ,IAAI,UAAU,EAAE,CAGvC;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAG5D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAM5D;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAiB9C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAchD"}
|
package/dist/lib/types.d.ts
CHANGED
|
@@ -33,18 +33,27 @@ export interface AutoUpdateConfig {
|
|
|
33
33
|
app: boolean;
|
|
34
34
|
tools: boolean;
|
|
35
35
|
}
|
|
36
|
+
export interface RepoConfig {
|
|
37
|
+
name: string;
|
|
38
|
+
path: string;
|
|
39
|
+
description?: string;
|
|
40
|
+
}
|
|
41
|
+
export type ToolConfig = Record<string, unknown>;
|
|
36
42
|
export interface DroidConfig {
|
|
37
43
|
platform: Platform;
|
|
38
44
|
user_mention: string;
|
|
39
45
|
output_preference: OutputPreference;
|
|
40
46
|
git_username: string;
|
|
41
47
|
platforms: Record<string, PlatformConfig>;
|
|
48
|
+
repos?: RepoConfig[];
|
|
49
|
+
tools?: Record<string, ToolConfig>;
|
|
42
50
|
auto_update?: AutoUpdateConfig;
|
|
43
51
|
ignored_platforms?: Platform[];
|
|
44
52
|
migrations?: {
|
|
45
53
|
package?: string;
|
|
46
54
|
tools?: Record<string, string>;
|
|
47
|
-
|
|
55
|
+
tools_consolidated?: boolean;
|
|
56
|
+
[key: string]: string | Record<string, string> | boolean | undefined;
|
|
48
57
|
};
|
|
49
58
|
}
|
|
50
59
|
export interface LegacyDroidConfig {
|
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;IACrB,MAAM,WAAW;CAClB;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,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC/B,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,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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"}
|
|
@@ -26,7 +26,7 @@ Your **scratchpad** (or **brain**) - a collaborative space for planning, researc
|
|
|
26
26
|
|
|
27
27
|
## Configuration
|
|
28
28
|
|
|
29
|
-
**IMPORTANT:** Run `droid config brain` first and parse the JSON output. If `brain_dir` is not configured, **ask the user** where they want brain docs stored.
|
|
29
|
+
**IMPORTANT:** Run `droid config --get tools.brain` first and parse the JSON output. If `brain_dir` is not configured, **ask the user** where they want brain docs stored.
|
|
30
30
|
|
|
31
31
|
| Setting | Default | Description |
|
|
32
32
|
| -------------- | ------- | ------------------------------------------ |
|
|
@@ -134,7 +134,7 @@ In markdown files, use blockquote `>` prefix for @mention comments. The @mention
|
|
|
134
134
|
| `> @droid ...` | User | AI | User asking/telling the AI |
|
|
135
135
|
| `> @user ...` | AI | User | AI asking/telling the user |
|
|
136
136
|
|
|
137
|
-
Get `user_mention` from `droid config
|
|
137
|
+
Get `user_mention` from `droid config --get user_mention`. If droid's `comments` skill is installed, use `/comments check` for full support.
|
|
138
138
|
|
|
139
139
|
## Extensions
|
|
140
140
|
|