xibecode 1.0.3 → 1.0.7
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/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +10 -7
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/diagnostics.js +1 -1
- package/dist/commands/diagnostics.js.map +1 -1
- package/dist/commands/mcp.js +1 -1
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/resume.js +1 -1
- package/dist/commands/resume.js.map +1 -1
- package/dist/commands/run-pr.d.ts.map +1 -1
- package/dist/commands/run-pr.js +10 -9
- package/dist/commands/run-pr.js.map +1 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +14 -13
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/skills.d.ts.map +1 -1
- package/dist/commands/skills.js +3 -2
- package/dist/commands/skills.js.map +1 -1
- package/dist/components/AssistantMarkdown.js +1 -1
- package/dist/components/AssistantMarkdown.js.map +1 -1
- package/dist/ui/claude-style-chat.d.ts.map +1 -1
- package/dist/ui/claude-style-chat.js +12 -10
- package/dist/ui/claude-style-chat.js.map +1 -1
- package/dist/utils/built-in-skills-dir.d.ts +7 -0
- package/dist/utils/built-in-skills-dir.d.ts.map +1 -0
- package/dist/utils/built-in-skills-dir.js +11 -0
- package/dist/utils/built-in-skills-dir.js.map +1 -0
- package/dist/utils/config.d.ts +2 -119
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +3 -88
- package/dist/utils/config.js.map +1 -1
- package/package.json +11 -17
- package/dist/commands/punycode.d.ts +0 -5
- package/dist/commands/punycode.d.ts.map +0 -1
- package/dist/commands/punycode.js +0 -48
- package/dist/commands/punycode.js.map +0 -1
- package/dist/commands/tui.d.ts +0 -9
- package/dist/commands/tui.d.ts.map +0 -1
- package/dist/commands/tui.js +0 -83
- package/dist/commands/tui.js.map +0 -1
- package/dist/core/agent-tool-policies.d.ts +0 -5
- package/dist/core/agent-tool-policies.d.ts.map +0 -1
- package/dist/core/agent-tool-policies.js +0 -18
- package/dist/core/agent-tool-policies.js.map +0 -1
- package/dist/core/agent.d.ts +0 -181
- package/dist/core/agent.d.ts.map +0 -1
- package/dist/core/agent.js +0 -1777
- package/dist/core/agent.js.map +0 -1
- package/dist/core/background-agent.d.ts +0 -23
- package/dist/core/background-agent.d.ts.map +0 -1
- package/dist/core/background-agent.js +0 -175
- package/dist/core/background-agent.js.map +0 -1
- package/dist/core/code-graph.d.ts +0 -18
- package/dist/core/code-graph.d.ts.map +0 -1
- package/dist/core/code-graph.js +0 -105
- package/dist/core/code-graph.js.map +0 -1
- package/dist/core/conflict-solver.d.ts +0 -26
- package/dist/core/conflict-solver.d.ts.map +0 -1
- package/dist/core/conflict-solver.js +0 -108
- package/dist/core/conflict-solver.js.map +0 -1
- package/dist/core/context-compactor.d.ts +0 -10
- package/dist/core/context-compactor.d.ts.map +0 -1
- package/dist/core/context-compactor.js +0 -158
- package/dist/core/context-compactor.js.map +0 -1
- package/dist/core/context-pruner.d.ts +0 -19
- package/dist/core/context-pruner.d.ts.map +0 -1
- package/dist/core/context-pruner.js +0 -103
- package/dist/core/context-pruner.js.map +0 -1
- package/dist/core/context.d.ts +0 -82
- package/dist/core/context.d.ts.map +0 -1
- package/dist/core/context.js +0 -273
- package/dist/core/context.js.map +0 -1
- package/dist/core/conversation-recovery.d.ts +0 -9
- package/dist/core/conversation-recovery.d.ts.map +0 -1
- package/dist/core/conversation-recovery.js +0 -15
- package/dist/core/conversation-recovery.js.map +0 -1
- package/dist/core/debug-workflow.d.ts +0 -9
- package/dist/core/debug-workflow.d.ts.map +0 -1
- package/dist/core/debug-workflow.js +0 -19
- package/dist/core/debug-workflow.js.map +0 -1
- package/dist/core/docs-scraper.d.ts +0 -40
- package/dist/core/docs-scraper.d.ts.map +0 -1
- package/dist/core/docs-scraper.js +0 -386
- package/dist/core/docs-scraper.js.map +0 -1
- package/dist/core/editor.d.ts +0 -87
- package/dist/core/editor.d.ts.map +0 -1
- package/dist/core/editor.js +0 -377
- package/dist/core/editor.js.map +0 -1
- package/dist/core/export.d.ts +0 -11
- package/dist/core/export.d.ts.map +0 -1
- package/dist/core/export.js +0 -54
- package/dist/core/export.js.map +0 -1
- package/dist/core/history-manager.d.ts +0 -75
- package/dist/core/history-manager.d.ts.map +0 -1
- package/dist/core/history-manager.js +0 -146
- package/dist/core/history-manager.js.map +0 -1
- package/dist/core/marketplace-client.d.ts +0 -52
- package/dist/core/marketplace-client.d.ts.map +0 -1
- package/dist/core/marketplace-client.js +0 -71
- package/dist/core/marketplace-client.js.map +0 -1
- package/dist/core/mcp/mcp-config.d.ts +0 -10
- package/dist/core/mcp/mcp-config.d.ts.map +0 -1
- package/dist/core/mcp/mcp-config.js +0 -70
- package/dist/core/mcp/mcp-config.js.map +0 -1
- package/dist/core/mcp/mcp-policy.d.ts +0 -17
- package/dist/core/mcp/mcp-policy.d.ts.map +0 -1
- package/dist/core/mcp/mcp-policy.js +0 -56
- package/dist/core/mcp/mcp-policy.js.map +0 -1
- package/dist/core/mcp/oauth-flow.d.ts +0 -30
- package/dist/core/mcp/oauth-flow.d.ts.map +0 -1
- package/dist/core/mcp/oauth-flow.js +0 -230
- package/dist/core/mcp/oauth-flow.js.map +0 -1
- package/dist/core/mcp/oauth-store.d.ts +0 -13
- package/dist/core/mcp/oauth-store.d.ts.map +0 -1
- package/dist/core/mcp/oauth-store.js +0 -68
- package/dist/core/mcp/oauth-store.js.map +0 -1
- package/dist/core/mcp/resolve-mcp-servers.d.ts +0 -16
- package/dist/core/mcp/resolve-mcp-servers.d.ts.map +0 -1
- package/dist/core/mcp/resolve-mcp-servers.js +0 -83
- package/dist/core/mcp/resolve-mcp-servers.js.map +0 -1
- package/dist/core/mcp-client.d.ts +0 -99
- package/dist/core/mcp-client.d.ts.map +0 -1
- package/dist/core/mcp-client.js +0 -317
- package/dist/core/mcp-client.js.map +0 -1
- package/dist/core/memory-promotions.d.ts +0 -15
- package/dist/core/memory-promotions.d.ts.map +0 -1
- package/dist/core/memory-promotions.js +0 -38
- package/dist/core/memory-promotions.js.map +0 -1
- package/dist/core/memory.d.ts +0 -32
- package/dist/core/memory.d.ts.map +0 -1
- package/dist/core/memory.js +0 -121
- package/dist/core/memory.js.map +0 -1
- package/dist/core/modes.d.ts +0 -432
- package/dist/core/modes.d.ts.map +0 -1
- package/dist/core/modes.js +0 -1094
- package/dist/core/modes.js.map +0 -1
- package/dist/core/pattern-miner.d.ts +0 -43
- package/dist/core/pattern-miner.d.ts.map +0 -1
- package/dist/core/pattern-miner.js +0 -123
- package/dist/core/pattern-miner.js.map +0 -1
- package/dist/core/permission-store.d.ts +0 -15
- package/dist/core/permission-store.d.ts.map +0 -1
- package/dist/core/permission-store.js +0 -30
- package/dist/core/permission-store.js.map +0 -1
- package/dist/core/permissions.d.ts +0 -33
- package/dist/core/permissions.d.ts.map +0 -1
- package/dist/core/permissions.js +0 -141
- package/dist/core/permissions.js.map +0 -1
- package/dist/core/plan-artifacts.d.ts +0 -10
- package/dist/core/plan-artifacts.d.ts.map +0 -1
- package/dist/core/plan-artifacts.js +0 -60
- package/dist/core/plan-artifacts.js.map +0 -1
- package/dist/core/plan-session.d.ts +0 -25
- package/dist/core/plan-session.d.ts.map +0 -1
- package/dist/core/plan-session.js +0 -99
- package/dist/core/plan-session.js.map +0 -1
- package/dist/core/planMode.d.ts +0 -51
- package/dist/core/planMode.d.ts.map +0 -1
- package/dist/core/planMode.js +0 -245
- package/dist/core/planMode.js.map +0 -1
- package/dist/core/plugins.d.ts +0 -96
- package/dist/core/plugins.d.ts.map +0 -1
- package/dist/core/plugins.js +0 -204
- package/dist/core/plugins.js.map +0 -1
- package/dist/core/session-bridge.d.ts +0 -128
- package/dist/core/session-bridge.d.ts.map +0 -1
- package/dist/core/session-bridge.js +0 -328
- package/dist/core/session-bridge.js.map +0 -1
- package/dist/core/session-manager.d.ts +0 -80
- package/dist/core/session-manager.d.ts.map +0 -1
- package/dist/core/session-manager.js +0 -166
- package/dist/core/session-manager.js.map +0 -1
- package/dist/core/session-memory.d.ts +0 -45
- package/dist/core/session-memory.d.ts.map +0 -1
- package/dist/core/session-memory.js +0 -103
- package/dist/core/session-memory.js.map +0 -1
- package/dist/core/skill-selection.d.ts +0 -36
- package/dist/core/skill-selection.d.ts.map +0 -1
- package/dist/core/skill-selection.js +0 -172
- package/dist/core/skill-selection.js.map +0 -1
- package/dist/core/skills-sh-client.d.ts +0 -19
- package/dist/core/skills-sh-client.d.ts.map +0 -1
- package/dist/core/skills-sh-client.js +0 -75
- package/dist/core/skills-sh-client.js.map +0 -1
- package/dist/core/skills.d.ts +0 -97
- package/dist/core/skills.d.ts.map +0 -1
- package/dist/core/skills.js +0 -339
- package/dist/core/skills.js.map +0 -1
- package/dist/core/swarm.d.ts +0 -34
- package/dist/core/swarm.d.ts.map +0 -1
- package/dist/core/swarm.js +0 -111
- package/dist/core/swarm.js.map +0 -1
- package/dist/core/task-status.d.ts +0 -13
- package/dist/core/task-status.d.ts.map +0 -1
- package/dist/core/task-status.js +0 -17
- package/dist/core/task-status.js.map +0 -1
- package/dist/core/tool-orchestrator.d.ts +0 -30
- package/dist/core/tool-orchestrator.d.ts.map +0 -1
- package/dist/core/tool-orchestrator.js +0 -89
- package/dist/core/tool-orchestrator.js.map +0 -1
- package/dist/core/tools.d.ts +0 -462
- package/dist/core/tools.d.ts.map +0 -1
- package/dist/core/tools.js +0 -2916
- package/dist/core/tools.js.map +0 -1
- package/dist/core/transcript-cleanup.d.ts +0 -8
- package/dist/core/transcript-cleanup.d.ts.map +0 -1
- package/dist/core/transcript-cleanup.js +0 -52
- package/dist/core/transcript-cleanup.js.map +0 -1
- package/dist/core/visual-feedback.d.ts +0 -20
- package/dist/core/visual-feedback.d.ts.map +0 -1
- package/dist/core/visual-feedback.js +0 -117
- package/dist/core/visual-feedback.js.map +0 -1
- package/dist/tools/browser.d.ts +0 -120
- package/dist/tools/browser.d.ts.map +0 -1
- package/dist/tools/browser.js +0 -439
- package/dist/tools/browser.js.map +0 -1
- package/dist/tools/test-generator.d.ts +0 -157
- package/dist/tools/test-generator.d.ts.map +0 -1
- package/dist/tools/test-generator.js +0 -893
- package/dist/tools/test-generator.js.map +0 -1
- package/dist/tui/InkApp.d.ts +0 -21
- package/dist/tui/InkApp.d.ts.map +0 -1
- package/dist/tui/InkApp.js +0 -146
- package/dist/tui/InkApp.js.map +0 -1
- package/dist/tui/MarkdownMessage.d.ts +0 -16
- package/dist/tui/MarkdownMessage.d.ts.map +0 -1
- package/dist/tui/MarkdownMessage.js +0 -63
- package/dist/tui/MarkdownMessage.js.map +0 -1
- package/dist/tui/blessed-chat.d.ts +0 -9
- package/dist/tui/blessed-chat.d.ts.map +0 -1
- package/dist/tui/blessed-chat.js +0 -887
- package/dist/tui/blessed-chat.js.map +0 -1
- package/dist/tui/markdown-to-blessed.d.ts +0 -6
- package/dist/tui/markdown-to-blessed.d.ts.map +0 -1
- package/dist/tui/markdown-to-blessed.js +0 -26
- package/dist/tui/markdown-to-blessed.js.map +0 -1
- package/dist/ui/ink/App.d.ts +0 -25
- package/dist/ui/ink/App.d.ts.map +0 -1
- package/dist/ui/ink/App.js +0 -372
- package/dist/ui/ink/App.js.map +0 -1
- package/dist/utils/at-references.d.ts +0 -14
- package/dist/utils/at-references.d.ts.map +0 -1
- package/dist/utils/at-references.js +0 -47
- package/dist/utils/at-references.js.map +0 -1
- package/dist/utils/auto-memory.d.ts +0 -24
- package/dist/utils/auto-memory.d.ts.map +0 -1
- package/dist/utils/auto-memory.js +0 -153
- package/dist/utils/auto-memory.js.map +0 -1
- package/dist/utils/git.d.ts +0 -89
- package/dist/utils/git.d.ts.map +0 -1
- package/dist/utils/git.js +0 -444
- package/dist/utils/git.js.map +0 -1
- package/dist/utils/mcp-servers-file.d.ts +0 -46
- package/dist/utils/mcp-servers-file.d.ts.map +0 -1
- package/dist/utils/mcp-servers-file.js +0 -212
- package/dist/utils/mcp-servers-file.js.map +0 -1
- package/dist/utils/safety.d.ts +0 -60
- package/dist/utils/safety.d.ts.map +0 -1
- package/dist/utils/safety.js +0 -254
- package/dist/utils/safety.js.map +0 -1
- package/dist/utils/smithery.d.ts +0 -25
- package/dist/utils/smithery.d.ts.map +0 -1
- package/dist/utils/smithery.js +0 -50
- package/dist/utils/smithery.js.map +0 -1
- package/dist/utils/testRunner.d.ts +0 -44
- package/dist/utils/testRunner.d.ts.map +0 -1
- package/dist/utils/testRunner.js +0 -270
- package/dist/utils/testRunner.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skills-sh-client.d.ts","sourceRoot":"","sources":["../../src/core/skills-sh-client.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,cAAc;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,cAAc;IACvB;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAatD;;;;;OAKG;IACG,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAsBzE,OAAO,CAAC,kBAAkB;CA6B7B"}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { exec } from 'child_process';
|
|
2
|
-
import { promisify } from 'util';
|
|
3
|
-
import * as path from 'path';
|
|
4
|
-
import * as fs from 'fs/promises';
|
|
5
|
-
import stripAnsi from 'strip-ansi';
|
|
6
|
-
const execAsync = promisify(exec);
|
|
7
|
-
export class SkillsShClient {
|
|
8
|
-
/**
|
|
9
|
-
* Search for skills using `npx skills find`
|
|
10
|
-
*/
|
|
11
|
-
async search(query) {
|
|
12
|
-
try {
|
|
13
|
-
// Run npx skills find [query]
|
|
14
|
-
// We use -y to skip confirmation
|
|
15
|
-
const { stdout } = await execAsync(`npx -y skills find "${query}"`);
|
|
16
|
-
return this.parseSearchResults(stripAnsi(stdout));
|
|
17
|
-
}
|
|
18
|
-
catch (error) {
|
|
19
|
-
console.warn('Skills.sh search error:', error.message);
|
|
20
|
-
return [];
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Install a skill using `npx skills add`
|
|
25
|
-
* Note: This CLI installs skills to the local project or global scope.
|
|
26
|
-
* We'll try to detect where it went or just let it install to the cwd by default
|
|
27
|
-
* and then move it if necessary, but for now we trust `npx skills add` to do its thing.
|
|
28
|
-
*/
|
|
29
|
-
async install(skillId, targetDir) {
|
|
30
|
-
try {
|
|
31
|
-
await fs.mkdir(targetDir, { recursive: true });
|
|
32
|
-
const before = new Set((await fs.readdir(targetDir)).filter((f) => f.endsWith('.md')));
|
|
33
|
-
await execAsync(`npx -y skills add ${skillId} -y`, { cwd: targetDir });
|
|
34
|
-
const afterList = (await fs.readdir(targetDir)).filter((f) => f.endsWith('.md'));
|
|
35
|
-
const after = new Set(afterList);
|
|
36
|
-
const created = afterList.find((f) => !before.has(f));
|
|
37
|
-
if (created) {
|
|
38
|
-
return path.join(targetDir, created);
|
|
39
|
-
}
|
|
40
|
-
// Fallback: if nothing obvious, just return a success message.
|
|
41
|
-
return `Skill ${skillId} installed successfully.`;
|
|
42
|
-
}
|
|
43
|
-
catch (error) {
|
|
44
|
-
console.error('Skills.sh install error:', error.message);
|
|
45
|
-
return null;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
parseSearchResults(stdout) {
|
|
49
|
-
const results = [];
|
|
50
|
-
const lines = stdout.split('\n');
|
|
51
|
-
// Example output:
|
|
52
|
-
// vercel-labs/agent-skills@vercel-react-best-practices
|
|
53
|
-
// └ https://skills.sh/vercel-labs/agent-skills/vercel-react-best-practices
|
|
54
|
-
let currentId = '';
|
|
55
|
-
for (const line of lines) {
|
|
56
|
-
const trimmed = line.trim();
|
|
57
|
-
if (!trimmed)
|
|
58
|
-
continue;
|
|
59
|
-
if (trimmed.startsWith('└')) {
|
|
60
|
-
// Link line
|
|
61
|
-
const url = trimmed.substring(2).trim();
|
|
62
|
-
if (currentId && url) {
|
|
63
|
-
results.push({ id: currentId, url });
|
|
64
|
-
currentId = '';
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
else if (!trimmed.startsWith('Install with') && !trimmed.includes('skills.sh') && trimmed.includes('/')) {
|
|
68
|
-
// Likely an ID line like "owner/repo@skill"
|
|
69
|
-
currentId = trimmed;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
return results;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
//# sourceMappingURL=skills-sh-client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skills-sh-client.js","sourceRoot":"","sources":["../../src/core/skills-sh-client.ts"],"names":[],"mappings":"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"}
|
package/dist/core/skills.d.ts
DELETED
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import { type MarketplaceSkillResult } from './marketplace-client.js';
|
|
2
|
-
import { type SkillsShResult } from './skills-sh-client.js';
|
|
3
|
-
import { ProviderType } from '../utils/config.js';
|
|
4
|
-
import { type SkillSelectionOptions } from './skill-selection.js';
|
|
5
|
-
export interface Skill {
|
|
6
|
-
name: string;
|
|
7
|
-
description: string;
|
|
8
|
-
instructions: string;
|
|
9
|
-
tags?: string[];
|
|
10
|
-
provenance?: 'built-in' | 'user' | 'marketplace' | 'skills.sh' | 'mcp';
|
|
11
|
-
filePath?: string;
|
|
12
|
-
}
|
|
13
|
-
export declare class SkillManager {
|
|
14
|
-
private skills;
|
|
15
|
-
/** Skills loaded from the shipped `skills/` directory (for system-prompt injection). */
|
|
16
|
-
private builtInSkills;
|
|
17
|
-
private builtInSkillsDir;
|
|
18
|
-
private userSkillsDir;
|
|
19
|
-
private marketplace;
|
|
20
|
-
private skillsSh;
|
|
21
|
-
private aiConfig;
|
|
22
|
-
constructor(workingDir?: string, apiKey?: string, baseUrl?: string, model?: string, provider?: ProviderType);
|
|
23
|
-
loadSkills(): Promise<void>;
|
|
24
|
-
private loadSkillsFromDirectory;
|
|
25
|
-
private parseSkillFile;
|
|
26
|
-
getSkill(name: string): Skill | undefined;
|
|
27
|
-
listSkills(): Skill[];
|
|
28
|
-
/**
|
|
29
|
-
* Build the bundled-skills block for the system prompt by **selecting** skills that match
|
|
30
|
-
* the task text and `package.json` dependencies (plus a small always-on core set).
|
|
31
|
-
*/
|
|
32
|
-
buildDefaultSkillsPromptForTask(taskPrompt: string, cwd: string, options?: SkillSelectionOptions): Promise<string>;
|
|
33
|
-
private formatSkillCatalogForPrompt;
|
|
34
|
-
/**
|
|
35
|
-
* @deprecated Prefer `buildDefaultSkillsPromptForTask` so selection scales with many bundled skills.
|
|
36
|
-
* Formats every loaded built-in skill (no dependency-aware selection).
|
|
37
|
-
*/
|
|
38
|
-
formatBuiltInSkillsForSystemPrompt(): string;
|
|
39
|
-
private formatSelectedBuiltInSkillsForPrompt;
|
|
40
|
-
searchSkills(query: string): Skill[];
|
|
41
|
-
/**
|
|
42
|
-
* Search the Skills Marketplace for community skills
|
|
43
|
-
*/
|
|
44
|
-
searchMarketplace(query?: string, limit?: number): Promise<MarketplaceSkillResult[]>;
|
|
45
|
-
/**
|
|
46
|
-
* Install a skill from the marketplace by ID
|
|
47
|
-
* Downloads the content and saves it to the user skills directory
|
|
48
|
-
*/
|
|
49
|
-
installFromMarketplace(id: string, skillName: string, onProgress?: (msg: string) => void): Promise<{
|
|
50
|
-
success: boolean;
|
|
51
|
-
filePath: string;
|
|
52
|
-
error?: string;
|
|
53
|
-
}>;
|
|
54
|
-
/**
|
|
55
|
-
* Upload a skill to the marketplace
|
|
56
|
-
*/
|
|
57
|
-
uploadToMarketplace(content: string, skillName?: string, onProgress?: (msg: string) => void): Promise<{
|
|
58
|
-
success: boolean;
|
|
59
|
-
skillId?: string;
|
|
60
|
-
error?: string;
|
|
61
|
-
}>;
|
|
62
|
-
/**
|
|
63
|
-
* Learn a skill from documentation URL.
|
|
64
|
-
* Crawls the docs site, scrapes pages, and generates a skill file.
|
|
65
|
-
* Auto-uploads to the Skills Marketplace on success.
|
|
66
|
-
*/
|
|
67
|
-
learnFromDocs(name: string, url: string, maxPages?: number, onProgress?: (msg: string) => void): Promise<{
|
|
68
|
-
success: boolean;
|
|
69
|
-
pagesScraped: number;
|
|
70
|
-
filePath: string;
|
|
71
|
-
error?: string;
|
|
72
|
-
marketplaceId?: string;
|
|
73
|
-
}>;
|
|
74
|
-
autoInstallFromSkillsShForTask(taskPrompt: string, opts?: {
|
|
75
|
-
enabled?: boolean;
|
|
76
|
-
maxInstalls?: number;
|
|
77
|
-
onProgress?: (msg: string) => void;
|
|
78
|
-
}): Promise<{
|
|
79
|
-
installed: boolean;
|
|
80
|
-
skillId?: string;
|
|
81
|
-
installedSkillNames?: string[];
|
|
82
|
-
message?: string;
|
|
83
|
-
}>;
|
|
84
|
-
/**
|
|
85
|
-
* Search skills.sh for skills
|
|
86
|
-
*/
|
|
87
|
-
searchSkillsSh(query: string): Promise<SkillsShResult[]>;
|
|
88
|
-
/**
|
|
89
|
-
* Install a skill from skills.sh
|
|
90
|
-
*/
|
|
91
|
-
installFromSkillsSh(skillId: string): Promise<{
|
|
92
|
-
success: boolean;
|
|
93
|
-
message?: string;
|
|
94
|
-
filePath?: string;
|
|
95
|
-
}>;
|
|
96
|
-
}
|
|
97
|
-
//# sourceMappingURL=skills.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/core/skills.ts"],"names":[],"mappings":"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"}
|
package/dist/core/skills.js
DELETED
|
@@ -1,339 +0,0 @@
|
|
|
1
|
-
import * as fs from 'fs/promises';
|
|
2
|
-
import * as path from 'path';
|
|
3
|
-
import { fileURLToPath } from 'url';
|
|
4
|
-
import { dirname } from 'path';
|
|
5
|
-
import matter from 'gray-matter';
|
|
6
|
-
import { crawlDocs, generateSkillFromDocs } from './docs-scraper.js';
|
|
7
|
-
import { MarketplaceClient } from './marketplace-client.js';
|
|
8
|
-
import { SkillsShClient } from './skills-sh-client.js';
|
|
9
|
-
import { extractDepTokens, selectRelevantBuiltInSkills, formatSelectionSummary, } from './skill-selection.js';
|
|
10
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
11
|
-
const __dirname = dirname(__filename);
|
|
12
|
-
export class SkillManager {
|
|
13
|
-
skills = new Map();
|
|
14
|
-
/** Skills loaded from the shipped `skills/` directory (for system-prompt injection). */
|
|
15
|
-
builtInSkills = [];
|
|
16
|
-
builtInSkillsDir;
|
|
17
|
-
userSkillsDir;
|
|
18
|
-
marketplace;
|
|
19
|
-
skillsSh;
|
|
20
|
-
aiConfig;
|
|
21
|
-
constructor(workingDir = process.cwd(), apiKey, baseUrl, model, provider) {
|
|
22
|
-
// Built-in skills shipped with XibeCode
|
|
23
|
-
this.builtInSkillsDir = path.join(__dirname, '..', '..', 'skills');
|
|
24
|
-
// User-defined skills in project
|
|
25
|
-
this.userSkillsDir = path.join(workingDir, '.xibecode', 'skills');
|
|
26
|
-
this.marketplace = new MarketplaceClient();
|
|
27
|
-
this.skillsSh = new SkillsShClient();
|
|
28
|
-
this.aiConfig = {
|
|
29
|
-
apiKey: apiKey || process.env.ANTHROPIC_API_KEY || process.env.OPENAI_API_KEY || '',
|
|
30
|
-
baseUrl,
|
|
31
|
-
model,
|
|
32
|
-
provider,
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
async loadSkills() {
|
|
36
|
-
this.builtInSkills = [];
|
|
37
|
-
// Load built-in skills
|
|
38
|
-
await this.loadSkillsFromDirectory(this.builtInSkillsDir, 'built-in');
|
|
39
|
-
// Load user skills (if directory exists)
|
|
40
|
-
try {
|
|
41
|
-
await fs.access(this.userSkillsDir);
|
|
42
|
-
await this.loadSkillsFromDirectory(this.userSkillsDir, 'user');
|
|
43
|
-
}
|
|
44
|
-
catch {
|
|
45
|
-
// User skills directory doesn't exist, skip
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
async loadSkillsFromDirectory(dir, source) {
|
|
49
|
-
try {
|
|
50
|
-
const files = await fs.readdir(dir);
|
|
51
|
-
const skillFiles = files.filter(f => f.endsWith('.md'));
|
|
52
|
-
for (const file of skillFiles) {
|
|
53
|
-
const filePath = path.join(dir, file);
|
|
54
|
-
const content = await fs.readFile(filePath, 'utf-8');
|
|
55
|
-
const skill = this.parseSkillFile(content, file, {
|
|
56
|
-
provenance: source === 'built-in' ? 'built-in' : 'user',
|
|
57
|
-
filePath,
|
|
58
|
-
});
|
|
59
|
-
if (skill) {
|
|
60
|
-
this.skills.set(skill.name, skill);
|
|
61
|
-
if (source === 'built-in') {
|
|
62
|
-
this.builtInSkills.push(skill);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
catch (error) {
|
|
68
|
-
// Directory doesn't exist or can't be read
|
|
69
|
-
if (source === 'built-in') {
|
|
70
|
-
console.warn(`Warning: Could not load built-in skills from ${dir}`);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
parseSkillFile(content, filename, metaOverride) {
|
|
75
|
-
try {
|
|
76
|
-
const parsed = matter(content);
|
|
77
|
-
const data = (parsed.data || {});
|
|
78
|
-
const nameFromFile = filename.replace(/\.md$/i, '');
|
|
79
|
-
const name = typeof data.name === 'string' && data.name.trim() ? data.name.trim() : nameFromFile;
|
|
80
|
-
const description = typeof data.description === 'string' ? data.description : '';
|
|
81
|
-
const tags = Array.isArray(data.tags) ? data.tags.map(String) :
|
|
82
|
-
typeof data.tags === 'string' ? data.tags.split(',').map((t) => t.trim()).filter(Boolean) :
|
|
83
|
-
[];
|
|
84
|
-
const instructions = (parsed.content || '').trim();
|
|
85
|
-
if (!instructions)
|
|
86
|
-
return null;
|
|
87
|
-
return {
|
|
88
|
-
name,
|
|
89
|
-
description,
|
|
90
|
-
instructions,
|
|
91
|
-
tags,
|
|
92
|
-
provenance: metaOverride?.provenance,
|
|
93
|
-
filePath: metaOverride?.filePath,
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
catch {
|
|
97
|
-
return null;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
getSkill(name) {
|
|
101
|
-
return this.skills.get(name);
|
|
102
|
-
}
|
|
103
|
-
listSkills() {
|
|
104
|
-
return Array.from(this.skills.values());
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Build the bundled-skills block for the system prompt by **selecting** skills that match
|
|
108
|
-
* the task text and `package.json` dependencies (plus a small always-on core set).
|
|
109
|
-
*/
|
|
110
|
-
async buildDefaultSkillsPromptForTask(taskPrompt, cwd, options) {
|
|
111
|
-
if (this.builtInSkills.length === 0)
|
|
112
|
-
return '';
|
|
113
|
-
let depTokens = new Set();
|
|
114
|
-
try {
|
|
115
|
-
const raw = await fs.readFile(path.join(cwd, 'package.json'), 'utf-8');
|
|
116
|
-
depTokens = extractDepTokens(JSON.parse(raw));
|
|
117
|
-
}
|
|
118
|
-
catch {
|
|
119
|
-
/* no package.json */
|
|
120
|
-
}
|
|
121
|
-
const selected = selectRelevantBuiltInSkills(this.builtInSkills, taskPrompt, depTokens, options);
|
|
122
|
-
const summary = formatSelectionSummary(selected, this.builtInSkills.length);
|
|
123
|
-
const bundledBlock = this.formatSelectedBuiltInSkillsForPrompt(selected, summary);
|
|
124
|
-
const catalog = this.formatSkillCatalogForPrompt({ maxChars: 2000 });
|
|
125
|
-
return bundledBlock + (catalog ? `\n\n---\n\n${catalog}` : '');
|
|
126
|
-
}
|
|
127
|
-
formatSkillCatalogForPrompt(opts) {
|
|
128
|
-
const all = this.listSkills()
|
|
129
|
-
.filter((s) => s.provenance !== 'built-in')
|
|
130
|
-
.sort((a, b) => a.name.localeCompare(b.name));
|
|
131
|
-
if (all.length === 0)
|
|
132
|
-
return '';
|
|
133
|
-
const lines = all.map((s) => `- ${s.name}${s.description ? ` — ${s.description}` : ''}`);
|
|
134
|
-
let out = `## Available local skills\n\n${lines.join('\n')}`;
|
|
135
|
-
if (out.length > opts.maxChars) {
|
|
136
|
-
out = out.slice(0, opts.maxChars) + '\n\n[Skill list truncated]';
|
|
137
|
-
}
|
|
138
|
-
return out;
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* @deprecated Prefer `buildDefaultSkillsPromptForTask` so selection scales with many bundled skills.
|
|
142
|
-
* Formats every loaded built-in skill (no dependency-aware selection).
|
|
143
|
-
*/
|
|
144
|
-
formatBuiltInSkillsForSystemPrompt() {
|
|
145
|
-
if (this.builtInSkills.length === 0)
|
|
146
|
-
return '';
|
|
147
|
-
return this.formatSelectedBuiltInSkillsForPrompt(this.builtInSkills, formatSelectionSummary(this.builtInSkills, this.builtInSkills.length));
|
|
148
|
-
}
|
|
149
|
-
formatSelectedBuiltInSkillsForPrompt(selected, selectionSummary) {
|
|
150
|
-
if (selected.length === 0)
|
|
151
|
-
return '';
|
|
152
|
-
const maxTotal = 28_000;
|
|
153
|
-
const intro = selectionSummary +
|
|
154
|
-
'\n\nApply the subsections below when they fit the work. For more domain skills, use `search_skills_sh` or add files under `.xibecode/skills`.\n\n';
|
|
155
|
-
const sorted = [...selected].sort((a, b) => a.name.localeCompare(b.name));
|
|
156
|
-
const parts = sorted.map((s) => `### ${s.name}\n*${s.description}*\n\n${s.instructions}`);
|
|
157
|
-
let body = `## Default bundled skills\n\n${intro}` + parts.join('\n\n---\n\n');
|
|
158
|
-
if (body.length > maxTotal) {
|
|
159
|
-
body =
|
|
160
|
-
body.slice(0, maxTotal) +
|
|
161
|
-
'\n\n[Bundled skills truncated for length; follow the skill titles above and general best practices.]';
|
|
162
|
-
}
|
|
163
|
-
return body;
|
|
164
|
-
}
|
|
165
|
-
searchSkills(query) {
|
|
166
|
-
const lowerQuery = query.toLowerCase();
|
|
167
|
-
return this.listSkills().filter(skill => skill.name.toLowerCase().includes(lowerQuery) ||
|
|
168
|
-
skill.description.toLowerCase().includes(lowerQuery) ||
|
|
169
|
-
skill.tags?.some(tag => tag.toLowerCase().includes(lowerQuery)));
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* Search the Skills Marketplace for community skills
|
|
173
|
-
*/
|
|
174
|
-
async searchMarketplace(query = '', limit = 10) {
|
|
175
|
-
try {
|
|
176
|
-
const response = await this.marketplace.searchSkills(query, limit);
|
|
177
|
-
return response.results;
|
|
178
|
-
}
|
|
179
|
-
catch (error) {
|
|
180
|
-
throw new Error(`Marketplace search failed: ${error.message}`);
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
/**
|
|
184
|
-
* Install a skill from the marketplace by ID
|
|
185
|
-
* Downloads the content and saves it to the user skills directory
|
|
186
|
-
*/
|
|
187
|
-
async installFromMarketplace(id, skillName, onProgress) {
|
|
188
|
-
try {
|
|
189
|
-
onProgress?.('Downloading skill from marketplace...');
|
|
190
|
-
const { content, name } = await this.marketplace.getSkillContent(id);
|
|
191
|
-
// Ensure user skills directory exists
|
|
192
|
-
await fs.mkdir(this.userSkillsDir, { recursive: true });
|
|
193
|
-
// Sanitize filename
|
|
194
|
-
const fileName = skillName.toLowerCase().replace(/[^a-z0-9-]/g, '-').replace(/-+/g, '-');
|
|
195
|
-
const filePath = path.join(this.userSkillsDir, `${fileName}.md`);
|
|
196
|
-
// If the content doesn't have frontmatter, wrap it
|
|
197
|
-
let finalContent = content;
|
|
198
|
-
if (!content.startsWith('---')) {
|
|
199
|
-
finalContent = `---\nname: ${name || skillName}\ndescription: Installed from Skills Marketplace\ntags: marketplace\n---\n\n${content}`;
|
|
200
|
-
}
|
|
201
|
-
await fs.writeFile(filePath, finalContent, 'utf-8');
|
|
202
|
-
onProgress?.('Skill saved locally');
|
|
203
|
-
// Register the skill locally
|
|
204
|
-
const skill = this.parseSkillFile(finalContent, `${fileName}.md`, {
|
|
205
|
-
provenance: 'marketplace',
|
|
206
|
-
filePath,
|
|
207
|
-
});
|
|
208
|
-
if (skill) {
|
|
209
|
-
this.skills.set(skill.name, skill);
|
|
210
|
-
}
|
|
211
|
-
return { success: true, filePath };
|
|
212
|
-
}
|
|
213
|
-
catch (error) {
|
|
214
|
-
return { success: false, filePath: '', error: error.message };
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
/**
|
|
218
|
-
* Upload a skill to the marketplace
|
|
219
|
-
*/
|
|
220
|
-
async uploadToMarketplace(content, skillName, onProgress) {
|
|
221
|
-
try {
|
|
222
|
-
onProgress?.('Uploading skill to marketplace...');
|
|
223
|
-
const result = await this.marketplace.uploadSkill(content, skillName);
|
|
224
|
-
onProgress?.(`Skill published to marketplace as "${result.skill.name}"`);
|
|
225
|
-
return { success: true, skillId: result.skillId };
|
|
226
|
-
}
|
|
227
|
-
catch (error) {
|
|
228
|
-
return { success: false, error: error.message };
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
/**
|
|
232
|
-
* Learn a skill from documentation URL.
|
|
233
|
-
* Crawls the docs site, scrapes pages, and generates a skill file.
|
|
234
|
-
* Auto-uploads to the Skills Marketplace on success.
|
|
235
|
-
*/
|
|
236
|
-
async learnFromDocs(name, url, maxPages = 25, onProgress) {
|
|
237
|
-
try {
|
|
238
|
-
// Crawl docs
|
|
239
|
-
const pages = await crawlDocs(url, maxPages, onProgress);
|
|
240
|
-
if (pages.length === 0) {
|
|
241
|
-
return { success: false, pagesScraped: 0, filePath: '', error: 'No pages could be scraped from that URL' };
|
|
242
|
-
}
|
|
243
|
-
// Generate skill content using AI synthesis
|
|
244
|
-
const skillContent = await generateSkillFromDocs(name, url, pages, this.aiConfig, onProgress);
|
|
245
|
-
// Ensure user skills directory exists
|
|
246
|
-
await fs.mkdir(this.userSkillsDir, { recursive: true });
|
|
247
|
-
// Save skill file
|
|
248
|
-
const filePath = path.join(this.userSkillsDir, `${name}.md`);
|
|
249
|
-
await fs.writeFile(filePath, skillContent, 'utf-8');
|
|
250
|
-
// Parse and register the skill
|
|
251
|
-
const skill = this.parseSkillFile(skillContent, `${name}.md`);
|
|
252
|
-
if (skill) {
|
|
253
|
-
this.skills.set(skill.name, skill);
|
|
254
|
-
}
|
|
255
|
-
// Auto-upload to marketplace
|
|
256
|
-
let marketplaceId;
|
|
257
|
-
try {
|
|
258
|
-
onProgress?.('Publishing skill to marketplace...');
|
|
259
|
-
const uploadResult = await this.marketplace.uploadSkill(skillContent, name);
|
|
260
|
-
marketplaceId = uploadResult.skillId;
|
|
261
|
-
onProgress?.(`Skill published to marketplace as "${uploadResult.skill.name}"`);
|
|
262
|
-
}
|
|
263
|
-
catch (uploadError) {
|
|
264
|
-
onProgress?.(`Marketplace upload skipped: ${uploadError.message}`);
|
|
265
|
-
}
|
|
266
|
-
return { success: true, pagesScraped: pages.length, filePath, marketplaceId };
|
|
267
|
-
}
|
|
268
|
-
catch (error) {
|
|
269
|
-
return { success: false, pagesScraped: 0, filePath: '', error: error.message };
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
async autoInstallFromSkillsShForTask(taskPrompt, opts) {
|
|
273
|
-
const enabled = opts?.enabled ?? false;
|
|
274
|
-
const maxInstalls = opts?.maxInstalls ?? 1;
|
|
275
|
-
if (!enabled)
|
|
276
|
-
return { installed: false };
|
|
277
|
-
if (!taskPrompt.trim())
|
|
278
|
-
return { installed: false };
|
|
279
|
-
if (maxInstalls <= 0)
|
|
280
|
-
return { installed: false };
|
|
281
|
-
// If the user already has relevant local skills, don’t auto-install new ones.
|
|
282
|
-
// “Relevant” here is a cheap metadata search (name/description/tags) to avoid silent growth.
|
|
283
|
-
try {
|
|
284
|
-
const existingMd = (await fs.readdir(this.userSkillsDir)).filter((f) => f.endsWith('.md'));
|
|
285
|
-
if (existingMd.length > 0) {
|
|
286
|
-
const localMatches = this.searchSkills(taskPrompt).filter((s) => s.provenance !== 'built-in');
|
|
287
|
-
if (localMatches.length > 0)
|
|
288
|
-
return { installed: false, message: 'Local skills matched; skipping auto-install' };
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
catch {
|
|
292
|
-
// ignore
|
|
293
|
-
}
|
|
294
|
-
const beforeNames = new Set(this.listSkills().map((s) => s.name));
|
|
295
|
-
opts?.onProgress?.('Searching skills.sh for relevant skills…');
|
|
296
|
-
const results = await this.searchSkillsSh(taskPrompt);
|
|
297
|
-
const first = results[0];
|
|
298
|
-
if (!first)
|
|
299
|
-
return { installed: false, message: 'No skills.sh results' };
|
|
300
|
-
opts?.onProgress?.(`Installing skills.sh skill: ${first.id}`);
|
|
301
|
-
const installResult = await this.installFromSkillsSh(first.id);
|
|
302
|
-
if (!installResult.success) {
|
|
303
|
-
return { installed: false, skillId: first.id, message: installResult.message };
|
|
304
|
-
}
|
|
305
|
-
const after = this.listSkills().map((s) => s.name);
|
|
306
|
-
const added = after.filter((n) => !beforeNames.has(n));
|
|
307
|
-
return { installed: true, skillId: first.id, installedSkillNames: added, message: installResult.message };
|
|
308
|
-
}
|
|
309
|
-
/**
|
|
310
|
-
* Search skills.sh for skills
|
|
311
|
-
*/
|
|
312
|
-
async searchSkillsSh(query) {
|
|
313
|
-
return this.skillsSh.search(query);
|
|
314
|
-
}
|
|
315
|
-
/**
|
|
316
|
-
* Install a skill from skills.sh
|
|
317
|
-
*/
|
|
318
|
-
async installFromSkillsSh(skillId) {
|
|
319
|
-
// We'll install strictly to the user skills directory if possible
|
|
320
|
-
// But npx skills add might install to a different location or just output the file
|
|
321
|
-
// For now, we'll run it in the user skills directory
|
|
322
|
-
try {
|
|
323
|
-
await fs.mkdir(this.userSkillsDir, { recursive: true });
|
|
324
|
-
const result = await this.skillsSh.install(skillId, this.userSkillsDir);
|
|
325
|
-
// Reload skills to pick up the new one
|
|
326
|
-
await this.loadSkillsFromDirectory(this.userSkillsDir, 'user');
|
|
327
|
-
const installedPath = result && result.endsWith('.md') ? result : undefined;
|
|
328
|
-
return {
|
|
329
|
-
success: !!result,
|
|
330
|
-
message: result || 'Installation failed',
|
|
331
|
-
filePath: installedPath,
|
|
332
|
-
};
|
|
333
|
-
}
|
|
334
|
-
catch (error) {
|
|
335
|
-
return { success: false, message: error.message };
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
//# sourceMappingURL=skills.js.map
|
package/dist/core/skills.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/core/skills.ts"],"names":[],"mappings":"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"}
|
package/dist/core/swarm.d.ts
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { BackgroundAgentManager } from './background-agent.js';
|
|
2
|
-
import { AgentMode } from './modes.js';
|
|
3
|
-
export interface SubtaskResult {
|
|
4
|
-
success: boolean;
|
|
5
|
-
result: string;
|
|
6
|
-
taskId: string;
|
|
7
|
-
status: 'completed' | 'failed' | 'timeout' | 'killed';
|
|
8
|
-
/** Set when returned from parallel swarm runs */
|
|
9
|
-
worker_type?: AgentMode;
|
|
10
|
-
}
|
|
11
|
-
/** Default cap on concurrent background agent processes (overridable via `run_swarm` max_parallel). */
|
|
12
|
-
export declare const DEFAULT_SWARM_MAX_PARALLEL = 6;
|
|
13
|
-
export declare class SwarmOrchestrator {
|
|
14
|
-
private backgroundAgent;
|
|
15
|
-
constructor(backgroundAgent: BackgroundAgentManager);
|
|
16
|
-
/**
|
|
17
|
-
* Delegates a task to a specialized agent mode.
|
|
18
|
-
* Starts a background agent with specific mode instructions and waits for completion.
|
|
19
|
-
*/
|
|
20
|
-
delegateSubtask(mode: AgentMode, task: string, timeoutMs?: number): Promise<SubtaskResult>;
|
|
21
|
-
private pollTask;
|
|
22
|
-
/**
|
|
23
|
-
* Run multiple delegated subtasks with bounded concurrency (parallel when there are multiple workers).
|
|
24
|
-
* Each subtask is an isolated background `xibecode run` process; overlapping writes to the same files can conflict.
|
|
25
|
-
*/
|
|
26
|
-
delegateSubtasksParallel(subtasks: {
|
|
27
|
-
mode: AgentMode;
|
|
28
|
-
task: string;
|
|
29
|
-
}[], options?: {
|
|
30
|
-
timeoutMs?: number;
|
|
31
|
-
maxConcurrent?: number;
|
|
32
|
-
}): Promise<SubtaskResult[]>;
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=swarm.d.ts.map
|
package/dist/core/swarm.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"swarm.d.ts","sourceRoot":"","sources":["../../src/core/swarm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IACtD,iDAAiD;IACjD,WAAW,CAAC,EAAE,SAAS,CAAC;CAC3B;AAED,uGAAuG;AACvG,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAyB5C,qBAAa,iBAAiB;IACd,OAAO,CAAC,eAAe;gBAAf,eAAe,EAAE,sBAAsB;IAE3D;;;OAGG;IACG,eAAe,CACjB,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,MAAM,EACZ,SAAS,GAAE,MAAkB,GAC9B,OAAO,CAAC,aAAa,CAAC;YA6BX,QAAQ;IA8CtB;;;OAGG;IACG,wBAAwB,CAC1B,QAAQ,EAAE;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,EAC7C,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GACzD,OAAO,CAAC,aAAa,EAAE,CAAC;CAQ9B"}
|