@versatly/workgraph 1.0.0 → 1.2.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/README.md +3 -0
- package/dist/{chunk-R2MLGBHB.js → chunk-G6B47IBD.js} +5 -0
- package/dist/{chunk-OJ6KOGB2.js → chunk-MCHTUXG2.js} +846 -68
- package/dist/cli.js +151 -2
- package/dist/index.d.ts +199 -1
- package/dist/index.js +6 -2
- package/dist/mcp-server.js +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -7,12 +7,14 @@ import {
|
|
|
7
7
|
command_center_exports,
|
|
8
8
|
diagnostics_exports,
|
|
9
9
|
integration_exports,
|
|
10
|
+
lens_exports,
|
|
10
11
|
onboard_exports,
|
|
11
12
|
search_qmd_adapter_exports,
|
|
12
13
|
skill_exports,
|
|
14
|
+
swarm_exports,
|
|
13
15
|
trigger_exports,
|
|
14
16
|
workspace_exports
|
|
15
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-MCHTUXG2.js";
|
|
16
18
|
import {
|
|
17
19
|
autonomy_exports,
|
|
18
20
|
dispatch_exports,
|
|
@@ -28,7 +30,7 @@ import {
|
|
|
28
30
|
thread_audit_exports,
|
|
29
31
|
thread_exports,
|
|
30
32
|
trigger_engine_exports
|
|
31
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-G6B47IBD.js";
|
|
32
34
|
|
|
33
35
|
// src/cli.ts
|
|
34
36
|
import fs from "fs";
|
|
@@ -1053,6 +1055,57 @@ addWorkspaceOption(
|
|
|
1053
1055
|
(result) => [`Captured intake: ${result.intake.path}`]
|
|
1054
1056
|
)
|
|
1055
1057
|
);
|
|
1058
|
+
var lensCmd = program.command("lens").description("Generate deterministic context lenses for situational awareness");
|
|
1059
|
+
addWorkspaceOption(
|
|
1060
|
+
lensCmd.command("list").description("List built-in context lenses").option("--json", "Emit structured JSON output")
|
|
1061
|
+
).action(
|
|
1062
|
+
(opts) => runCommand(
|
|
1063
|
+
opts,
|
|
1064
|
+
() => ({
|
|
1065
|
+
lenses: lens_exports.listContextLenses()
|
|
1066
|
+
}),
|
|
1067
|
+
(result) => result.lenses.map((lens) => `lens://${lens.id} - ${lens.description}`)
|
|
1068
|
+
)
|
|
1069
|
+
);
|
|
1070
|
+
addWorkspaceOption(
|
|
1071
|
+
lensCmd.command("show <lensId>").description("Generate one context lens snapshot").option("-a, --actor <name>", "Actor identity for actor-scoped lenses", DEFAULT_ACTOR).option("--lookback-hours <hours>", "Lookback window in hours", "24").option("--stale-hours <hours>", "Stale threshold in hours", "24").option("--limit <n>", "Maximum items per section", "10").option("-o, --output <path>", "Write lens markdown to workspace-relative output path").option("--json", "Emit structured JSON output")
|
|
1072
|
+
).action(
|
|
1073
|
+
(lensId, opts) => runCommand(
|
|
1074
|
+
opts,
|
|
1075
|
+
() => {
|
|
1076
|
+
const workspacePath = resolveWorkspacePath(opts);
|
|
1077
|
+
const lensOptions = {
|
|
1078
|
+
actor: opts.actor,
|
|
1079
|
+
lookbackHours: parsePositiveNumberOption(opts.lookbackHours, "lookback-hours"),
|
|
1080
|
+
staleHours: parsePositiveNumberOption(opts.staleHours, "stale-hours"),
|
|
1081
|
+
limit: parsePositiveIntegerOption(opts.limit, "limit")
|
|
1082
|
+
};
|
|
1083
|
+
if (opts.output) {
|
|
1084
|
+
return lens_exports.materializeContextLens(workspacePath, lensId, {
|
|
1085
|
+
...lensOptions,
|
|
1086
|
+
outputPath: opts.output
|
|
1087
|
+
});
|
|
1088
|
+
}
|
|
1089
|
+
return lens_exports.generateContextLens(workspacePath, lensId, lensOptions);
|
|
1090
|
+
},
|
|
1091
|
+
(result) => {
|
|
1092
|
+
const metricSummary = Object.entries(result.metrics).map(([metric, value]) => `${metric}=${value}`).join(" ");
|
|
1093
|
+
const sectionSummary = result.sections.map((section) => `${section.id}:${section.items.length}`).join(" ");
|
|
1094
|
+
const lines = [
|
|
1095
|
+
`Lens: ${result.lens}`,
|
|
1096
|
+
`Generated: ${result.generatedAt}`,
|
|
1097
|
+
...result.actor ? [`Actor: ${result.actor}`] : [],
|
|
1098
|
+
`Metrics: ${metricSummary || "none"}`,
|
|
1099
|
+
`Sections: ${sectionSummary || "none"}`
|
|
1100
|
+
];
|
|
1101
|
+
if (isMaterializedLensResult(result)) {
|
|
1102
|
+
lines.push(`Saved markdown: ${result.outputPath}`);
|
|
1103
|
+
return lines;
|
|
1104
|
+
}
|
|
1105
|
+
return [...lines, "", ...result.markdown.split("\n")];
|
|
1106
|
+
}
|
|
1107
|
+
)
|
|
1108
|
+
);
|
|
1056
1109
|
addWorkspaceOption(
|
|
1057
1110
|
program.command("query").description("Query primitive instances with multi-field filters").option("--type <type>", "Primitive type").option("--status <status>", "Status value").option("--owner <owner>", "Owner/actor value").option("--tag <tag>", "Tag filter").option("--text <text>", "Full-text contains filter").option("--path-includes <text>", "Path substring filter").option("--updated-after <iso>", "Updated at or after").option("--updated-before <iso>", "Updated at or before").option("--created-after <iso>", "Created at or after").option("--created-before <iso>", "Created at or before").option("--limit <n>", "Result limit").option("--offset <n>", "Result offset").option("--json", "Emit structured JSON output")
|
|
1058
1111
|
).action(
|
|
@@ -1846,6 +1899,85 @@ addWorkspaceOption(
|
|
|
1846
1899
|
readOnly: !!opts.readOnly
|
|
1847
1900
|
});
|
|
1848
1901
|
});
|
|
1902
|
+
var swarmCmd = program.command("swarm").description("Decompose goals into tasks and orchestrate agent swarms");
|
|
1903
|
+
addWorkspaceOption(
|
|
1904
|
+
swarmCmd.command("deploy <planFile>").description("Deploy a swarm plan (JSON) into the workspace as threads").option("-a, --actor <name>", "Actor name", DEFAULT_ACTOR).option("--json", "Emit structured JSON output")
|
|
1905
|
+
).action(
|
|
1906
|
+
(planFile, opts) => runCommand(
|
|
1907
|
+
opts,
|
|
1908
|
+
() => {
|
|
1909
|
+
const workspacePath = resolveWorkspacePath(opts);
|
|
1910
|
+
const planPath = path.resolve(planFile);
|
|
1911
|
+
const planData = JSON.parse(fs.readFileSync(planPath, "utf-8"));
|
|
1912
|
+
return swarm_exports.deployPlan(workspacePath, planData, opts.actor);
|
|
1913
|
+
},
|
|
1914
|
+
(result) => [
|
|
1915
|
+
`Swarm deployed: ${result.spaceSlug}`,
|
|
1916
|
+
`Threads: ${result.threadPaths.length}`,
|
|
1917
|
+
`Status: ${result.status}`
|
|
1918
|
+
]
|
|
1919
|
+
)
|
|
1920
|
+
);
|
|
1921
|
+
addWorkspaceOption(
|
|
1922
|
+
swarmCmd.command("status <spaceSlug>").description("Show swarm progress").option("--json", "Emit structured JSON output")
|
|
1923
|
+
).action(
|
|
1924
|
+
(spaceSlug, opts) => runCommand(
|
|
1925
|
+
opts,
|
|
1926
|
+
() => swarm_exports.getSwarmStatus(resolveWorkspacePath(opts), spaceSlug),
|
|
1927
|
+
(result) => [
|
|
1928
|
+
`Swarm: ${result.deployment.spaceSlug} [${result.deployment.status}]`,
|
|
1929
|
+
`Progress: ${result.done}/${result.total} (${result.percentComplete}%)`,
|
|
1930
|
+
`Claimed: ${result.claimed} | Open: ${result.open} | Blocked: ${result.blocked}`,
|
|
1931
|
+
`Ready to claim: ${result.readyToClaim}`
|
|
1932
|
+
]
|
|
1933
|
+
)
|
|
1934
|
+
);
|
|
1935
|
+
addWorkspaceOption(
|
|
1936
|
+
swarmCmd.command("claim <spaceSlug>").description("Claim the next available task in a swarm").option("-a, --actor <name>", "Worker agent name", DEFAULT_ACTOR).option("--json", "Emit structured JSON output")
|
|
1937
|
+
).action(
|
|
1938
|
+
(spaceSlug, opts) => runCommand(
|
|
1939
|
+
opts,
|
|
1940
|
+
() => {
|
|
1941
|
+
const result = swarm_exports.workerClaim(resolveWorkspacePath(opts), spaceSlug, opts.actor);
|
|
1942
|
+
if (!result) return { claimed: false, message: "No tasks available" };
|
|
1943
|
+
return { claimed: true, path: result.path, title: result.fields.title };
|
|
1944
|
+
},
|
|
1945
|
+
(result) => result.claimed ? [`Claimed: ${result.path} \u2014 ${result.title}`] : ["No tasks available to claim"]
|
|
1946
|
+
)
|
|
1947
|
+
);
|
|
1948
|
+
addWorkspaceOption(
|
|
1949
|
+
swarmCmd.command("complete <threadPath>").description("Mark a swarm task as done with result").option("-a, --actor <name>", "Worker agent name", DEFAULT_ACTOR).requiredOption("--result <text>", "Result text (or @file to read from file)").option("--json", "Emit structured JSON output")
|
|
1950
|
+
).action(
|
|
1951
|
+
(threadPath, opts) => runCommand(
|
|
1952
|
+
opts,
|
|
1953
|
+
() => {
|
|
1954
|
+
let resultText = opts.result;
|
|
1955
|
+
if (resultText.startsWith("@")) {
|
|
1956
|
+
resultText = fs.readFileSync(resultText.slice(1), "utf-8");
|
|
1957
|
+
}
|
|
1958
|
+
return swarm_exports.workerComplete(resolveWorkspacePath(opts), threadPath, opts.actor, resultText);
|
|
1959
|
+
},
|
|
1960
|
+
(result) => [`Completed: ${result.path}`]
|
|
1961
|
+
)
|
|
1962
|
+
);
|
|
1963
|
+
addWorkspaceOption(
|
|
1964
|
+
swarmCmd.command("synthesize <spaceSlug>").description("Merge all completed task results into a single document").option("-o, --output <file>", "Output file path").option("--json", "Emit structured JSON output")
|
|
1965
|
+
).action(
|
|
1966
|
+
(spaceSlug, opts) => runCommand(
|
|
1967
|
+
opts,
|
|
1968
|
+
() => {
|
|
1969
|
+
const result = swarm_exports.synthesize(resolveWorkspacePath(opts), spaceSlug);
|
|
1970
|
+
if (opts.output) {
|
|
1971
|
+
fs.writeFileSync(path.resolve(opts.output), result.markdown);
|
|
1972
|
+
}
|
|
1973
|
+
return result;
|
|
1974
|
+
},
|
|
1975
|
+
(result) => [
|
|
1976
|
+
`Synthesized: ${result.completedCount}/${result.totalCount} tasks`,
|
|
1977
|
+
opts.output ? `Written to: ${opts.output}` : result.markdown
|
|
1978
|
+
]
|
|
1979
|
+
)
|
|
1980
|
+
);
|
|
1849
1981
|
await program.parseAsync();
|
|
1850
1982
|
function addWorkspaceOption(command) {
|
|
1851
1983
|
return command.option("-w, --workspace <path>", "Workgraph workspace path").option("--vault <path>", "Alias for --workspace").option("--shared-vault <path>", "Shared vault path (e.g. mounted via Tailscale)").option("--dry-run", "Execute against a temporary workspace copy and discard changes");
|
|
@@ -1952,6 +2084,13 @@ function parsePositiveIntOption(value, name) {
|
|
|
1952
2084
|
}
|
|
1953
2085
|
return parsed;
|
|
1954
2086
|
}
|
|
2087
|
+
function parsePositiveNumberOption(value, optionName) {
|
|
2088
|
+
const parsed = Number(value);
|
|
2089
|
+
if (!Number.isFinite(parsed) || parsed <= 0) {
|
|
2090
|
+
throw new Error(`Invalid --${optionName}. Expected a positive number.`);
|
|
2091
|
+
}
|
|
2092
|
+
return parsed;
|
|
2093
|
+
}
|
|
1955
2094
|
function parseNonNegativeIntOption(value, name) {
|
|
1956
2095
|
const parsed = Number.parseInt(String(value ?? ""), 10);
|
|
1957
2096
|
if (!Number.isFinite(parsed) || parsed < 0) {
|
|
@@ -1959,6 +2098,16 @@ function parseNonNegativeIntOption(value, name) {
|
|
|
1959
2098
|
}
|
|
1960
2099
|
return parsed;
|
|
1961
2100
|
}
|
|
2101
|
+
function parsePositiveIntegerOption(value, optionName) {
|
|
2102
|
+
const parsed = Number.parseInt(String(value), 10);
|
|
2103
|
+
if (!Number.isInteger(parsed) || parsed <= 0) {
|
|
2104
|
+
throw new Error(`Invalid --${optionName}. Expected a positive integer.`);
|
|
2105
|
+
}
|
|
2106
|
+
return parsed;
|
|
2107
|
+
}
|
|
2108
|
+
function isMaterializedLensResult(value) {
|
|
2109
|
+
return typeof value.outputPath === "string";
|
|
2110
|
+
}
|
|
1962
2111
|
function normalizeRunStatus(status) {
|
|
1963
2112
|
const normalized = String(status).toLowerCase();
|
|
1964
2113
|
if (normalized === "running" || normalized === "succeeded" || normalized === "failed" || normalized === "cancelled") {
|
package/dist/index.d.ts
CHANGED
|
@@ -132,6 +132,51 @@ interface WorkgraphBrief {
|
|
|
132
132
|
nextReadyThreads: PrimitiveInstance[];
|
|
133
133
|
recentActivity: LedgerEntry[];
|
|
134
134
|
}
|
|
135
|
+
type WorkgraphLensId = 'my-work' | 'team-risk' | 'customer-health' | 'exec-brief';
|
|
136
|
+
interface WorkgraphLensDescriptor {
|
|
137
|
+
id: WorkgraphLensId;
|
|
138
|
+
description: string;
|
|
139
|
+
}
|
|
140
|
+
interface WorkgraphLensOptions {
|
|
141
|
+
actor?: string;
|
|
142
|
+
lookbackHours?: number;
|
|
143
|
+
staleHours?: number;
|
|
144
|
+
limit?: number;
|
|
145
|
+
}
|
|
146
|
+
interface WorkgraphLensItem {
|
|
147
|
+
title: string;
|
|
148
|
+
path?: string;
|
|
149
|
+
status?: string;
|
|
150
|
+
priority?: string;
|
|
151
|
+
owner?: string;
|
|
152
|
+
detail?: string;
|
|
153
|
+
ageHours?: number;
|
|
154
|
+
}
|
|
155
|
+
interface WorkgraphLensSection {
|
|
156
|
+
id: string;
|
|
157
|
+
title: string;
|
|
158
|
+
items: WorkgraphLensItem[];
|
|
159
|
+
}
|
|
160
|
+
interface WorkgraphLensResult {
|
|
161
|
+
lens: WorkgraphLensId;
|
|
162
|
+
generatedAt: string;
|
|
163
|
+
actor?: string;
|
|
164
|
+
options: {
|
|
165
|
+
lookbackHours: number;
|
|
166
|
+
staleHours: number;
|
|
167
|
+
limit: number;
|
|
168
|
+
};
|
|
169
|
+
metrics: Record<string, number>;
|
|
170
|
+
sections: WorkgraphLensSection[];
|
|
171
|
+
markdown: string;
|
|
172
|
+
}
|
|
173
|
+
interface WorkgraphMaterializeLensOptions extends WorkgraphLensOptions {
|
|
174
|
+
outputPath: string;
|
|
175
|
+
}
|
|
176
|
+
interface WorkgraphMaterializedLensResult extends WorkgraphLensResult {
|
|
177
|
+
outputPath: string;
|
|
178
|
+
created: boolean;
|
|
179
|
+
}
|
|
135
180
|
interface PolicyParty {
|
|
136
181
|
id: string;
|
|
137
182
|
roles: string[];
|
|
@@ -655,6 +700,21 @@ declare namespace orientation {
|
|
|
655
700
|
export { orientation_brief as brief, orientation_checkpoint as checkpoint, orientation_intake as intake, orientation_statusSnapshot as statusSnapshot };
|
|
656
701
|
}
|
|
657
702
|
|
|
703
|
+
/**
|
|
704
|
+
* Deterministic context lenses for fast, runtime-agnostic orientation.
|
|
705
|
+
*/
|
|
706
|
+
|
|
707
|
+
declare function listContextLenses(): WorkgraphLensDescriptor[];
|
|
708
|
+
declare function generateContextLens(workspacePath: string, lensId: WorkgraphLensId | string, options?: WorkgraphLensOptions): WorkgraphLensResult;
|
|
709
|
+
declare function materializeContextLens(workspacePath: string, lensId: WorkgraphLensId | string, options: WorkgraphMaterializeLensOptions): WorkgraphMaterializedLensResult;
|
|
710
|
+
|
|
711
|
+
declare const lens_generateContextLens: typeof generateContextLens;
|
|
712
|
+
declare const lens_listContextLenses: typeof listContextLenses;
|
|
713
|
+
declare const lens_materializeContextLens: typeof materializeContextLens;
|
|
714
|
+
declare namespace lens {
|
|
715
|
+
export { lens_generateContextLens as generateContextLens, lens_listContextLenses as listContextLenses, lens_materializeContextLens as materializeContextLens };
|
|
716
|
+
}
|
|
717
|
+
|
|
658
718
|
/**
|
|
659
719
|
* Wiki-link graph indexing and graph-intelligence queries.
|
|
660
720
|
*/
|
|
@@ -1388,6 +1448,144 @@ declare function parseCronExpression(expression: string): CronSchedule;
|
|
|
1388
1448
|
declare function matchesCronSchedule(schedule: CronSchedule, date: Date): boolean;
|
|
1389
1449
|
declare function nextCronMatch(scheduleOrExpression: CronSchedule | string, after: Date, maxSearchMinutes?: number): Date | null;
|
|
1390
1450
|
|
|
1451
|
+
/**
|
|
1452
|
+
* WorkGraph Swarm — Decompose goals into hundreds of tasks,
|
|
1453
|
+
* spawn agent containers to claim and complete them, merge results.
|
|
1454
|
+
*
|
|
1455
|
+
* Architecture:
|
|
1456
|
+
* 1. Planner: Takes a goal → decomposes into N threads with dependencies
|
|
1457
|
+
* 2. Orchestrator: Spawns containers, each runs a worker that claims threads
|
|
1458
|
+
* 3. Worker: Claims a thread, does work, writes result, marks done
|
|
1459
|
+
* 4. Synthesizer: Watches for completion, merges results
|
|
1460
|
+
*/
|
|
1461
|
+
|
|
1462
|
+
interface SwarmGoal {
|
|
1463
|
+
title: string;
|
|
1464
|
+
description: string;
|
|
1465
|
+
outputFormat?: 'markdown' | 'json' | 'code';
|
|
1466
|
+
maxTasks?: number;
|
|
1467
|
+
maxConcurrent?: number;
|
|
1468
|
+
tags?: string[];
|
|
1469
|
+
}
|
|
1470
|
+
interface SwarmTask {
|
|
1471
|
+
title: string;
|
|
1472
|
+
description: string;
|
|
1473
|
+
priority: 'critical' | 'high' | 'medium' | 'low';
|
|
1474
|
+
dependsOn?: string[];
|
|
1475
|
+
estimatedMinutes?: number;
|
|
1476
|
+
outputType?: string;
|
|
1477
|
+
tags?: string[];
|
|
1478
|
+
}
|
|
1479
|
+
interface SwarmPlan {
|
|
1480
|
+
goal: SwarmGoal;
|
|
1481
|
+
tasks: SwarmTask[];
|
|
1482
|
+
phases: SwarmPhase[];
|
|
1483
|
+
createdAt: string;
|
|
1484
|
+
estimatedTotalMinutes: number;
|
|
1485
|
+
}
|
|
1486
|
+
interface SwarmPhase {
|
|
1487
|
+
name: string;
|
|
1488
|
+
description: string;
|
|
1489
|
+
taskIndices: number[];
|
|
1490
|
+
parallel: boolean;
|
|
1491
|
+
}
|
|
1492
|
+
interface SwarmDeployment {
|
|
1493
|
+
planPath: string;
|
|
1494
|
+
workspacePath: string;
|
|
1495
|
+
threadPaths: string[];
|
|
1496
|
+
spaceSlug: string;
|
|
1497
|
+
createdAt: string;
|
|
1498
|
+
status: 'deployed' | 'running' | 'completing' | 'done' | 'failed';
|
|
1499
|
+
}
|
|
1500
|
+
interface SwarmStatus {
|
|
1501
|
+
deployment: SwarmDeployment;
|
|
1502
|
+
total: number;
|
|
1503
|
+
claimed: number;
|
|
1504
|
+
done: number;
|
|
1505
|
+
blocked: number;
|
|
1506
|
+
open: number;
|
|
1507
|
+
readyToClaim: number;
|
|
1508
|
+
percentComplete: number;
|
|
1509
|
+
threads: Array<{
|
|
1510
|
+
path: string;
|
|
1511
|
+
title: string;
|
|
1512
|
+
status: string;
|
|
1513
|
+
owner?: string;
|
|
1514
|
+
priority: string;
|
|
1515
|
+
}>;
|
|
1516
|
+
}
|
|
1517
|
+
/**
|
|
1518
|
+
* Generate a swarm plan from a goal description.
|
|
1519
|
+
* This creates the plan structure — call deployPlan() to create actual threads.
|
|
1520
|
+
*
|
|
1521
|
+
* In production, pipe goal through an LLM for decomposition.
|
|
1522
|
+
* This function provides the structured output format the LLM should produce.
|
|
1523
|
+
*/
|
|
1524
|
+
declare function createPlanTemplate(goal: SwarmGoal): SwarmPlan;
|
|
1525
|
+
/**
|
|
1526
|
+
* Validate a swarm plan for internal consistency.
|
|
1527
|
+
*/
|
|
1528
|
+
declare function validatePlan(plan: SwarmPlan): {
|
|
1529
|
+
valid: boolean;
|
|
1530
|
+
errors: string[];
|
|
1531
|
+
};
|
|
1532
|
+
/**
|
|
1533
|
+
* Deploy a swarm plan into a WorkGraph workspace.
|
|
1534
|
+
* Creates a space for the swarm and threads for each task.
|
|
1535
|
+
* Dependencies are encoded as wiki-links in thread bodies.
|
|
1536
|
+
*/
|
|
1537
|
+
declare function deployPlan(workspacePath: string, plan: SwarmPlan, actor: string): SwarmDeployment;
|
|
1538
|
+
/**
|
|
1539
|
+
* Get the current status of a swarm deployment.
|
|
1540
|
+
*/
|
|
1541
|
+
declare function getSwarmStatus(workspacePath: string, spaceSlug: string): SwarmStatus;
|
|
1542
|
+
/**
|
|
1543
|
+
* Worker claims the next available task in a swarm.
|
|
1544
|
+
* Returns the thread to work on, or null if nothing available.
|
|
1545
|
+
*/
|
|
1546
|
+
declare function workerClaim(workspacePath: string, spaceSlug: string, agent: string): PrimitiveInstance | null;
|
|
1547
|
+
/**
|
|
1548
|
+
* Worker completes a task, writing result to the thread body.
|
|
1549
|
+
*/
|
|
1550
|
+
declare function workerComplete(workspacePath: string, threadPath: string, agent: string, result: string): PrimitiveInstance;
|
|
1551
|
+
/**
|
|
1552
|
+
* Worker loop: claim → work → complete → repeat until no tasks left.
|
|
1553
|
+
* The workFn receives the thread and returns the result string.
|
|
1554
|
+
*/
|
|
1555
|
+
declare function workerLoop(workspacePath: string, spaceSlug: string, agent: string, workFn: (thread: PrimitiveInstance) => Promise<string>, options?: {
|
|
1556
|
+
maxTasks?: number;
|
|
1557
|
+
delayMs?: number;
|
|
1558
|
+
}): Promise<{
|
|
1559
|
+
completed: number;
|
|
1560
|
+
errors: number;
|
|
1561
|
+
}>;
|
|
1562
|
+
/**
|
|
1563
|
+
* Collect all completed task results from a swarm into a single document.
|
|
1564
|
+
*/
|
|
1565
|
+
declare function synthesize(workspacePath: string, spaceSlug: string): {
|
|
1566
|
+
markdown: string;
|
|
1567
|
+
completedCount: number;
|
|
1568
|
+
totalCount: number;
|
|
1569
|
+
};
|
|
1570
|
+
|
|
1571
|
+
type swarm_SwarmDeployment = SwarmDeployment;
|
|
1572
|
+
type swarm_SwarmGoal = SwarmGoal;
|
|
1573
|
+
type swarm_SwarmPhase = SwarmPhase;
|
|
1574
|
+
type swarm_SwarmPlan = SwarmPlan;
|
|
1575
|
+
type swarm_SwarmStatus = SwarmStatus;
|
|
1576
|
+
type swarm_SwarmTask = SwarmTask;
|
|
1577
|
+
declare const swarm_createPlanTemplate: typeof createPlanTemplate;
|
|
1578
|
+
declare const swarm_deployPlan: typeof deployPlan;
|
|
1579
|
+
declare const swarm_getSwarmStatus: typeof getSwarmStatus;
|
|
1580
|
+
declare const swarm_synthesize: typeof synthesize;
|
|
1581
|
+
declare const swarm_validatePlan: typeof validatePlan;
|
|
1582
|
+
declare const swarm_workerClaim: typeof workerClaim;
|
|
1583
|
+
declare const swarm_workerComplete: typeof workerComplete;
|
|
1584
|
+
declare const swarm_workerLoop: typeof workerLoop;
|
|
1585
|
+
declare namespace swarm {
|
|
1586
|
+
export { type swarm_SwarmDeployment as SwarmDeployment, type swarm_SwarmGoal as SwarmGoal, type swarm_SwarmPhase as SwarmPhase, type swarm_SwarmPlan as SwarmPlan, type swarm_SwarmStatus as SwarmStatus, type swarm_SwarmTask as SwarmTask, swarm_createPlanTemplate as createPlanTemplate, swarm_deployPlan as deployPlan, swarm_getSwarmStatus as getSwarmStatus, swarm_synthesize as synthesize, swarm_validatePlan as validatePlan, swarm_workerClaim as workerClaim, swarm_workerComplete as workerComplete, swarm_workerLoop as workerLoop };
|
|
1587
|
+
}
|
|
1588
|
+
|
|
1391
1589
|
type DoctorSeverity = 'warning' | 'error';
|
|
1392
1590
|
interface DoctorIssue {
|
|
1393
1591
|
code: string;
|
|
@@ -1720,4 +1918,4 @@ declare class CursorCloudAdapter implements DispatchAdapter {
|
|
|
1720
1918
|
execute(input: DispatchAdapterExecutionInput): Promise<DispatchAdapterExecutionResult>;
|
|
1721
1919
|
}
|
|
1722
1920
|
|
|
1723
|
-
export { type CronField, type CronSchedule, CursorCloudAdapter, type DispatchAdapter, type DispatchAdapterCreateInput, type DispatchAdapterExecutionInput, type DispatchAdapterExecutionResult, type DispatchAdapterLogEntry, type DispatchAdapterRunStatus, type DispatchRun, type FieldDefinition, type InstallSkillIntegrationOptions, type InstallSkillIntegrationResult, type LedgerChainState, type LedgerEntry, type LedgerIndex, type LedgerOp, type PolicyParty, type PolicyRegistry, type PrimitiveInstance, type PrimitiveQueryFilters, type PrimitiveTypeDefinition, type Registry, type RunStatus, type SkillIntegrationProvider, THREAD_STATUS_TRANSITIONS, type ThreadStatus, type WorkgraphBrief, type WorkgraphStatusSnapshot, type WorkgraphWorkspaceConfig, agent, autonomy, autonomyDaemon, bases, board, claimLease, clawdapus, commandCenter, index as diagnostics, dispatch, fetchSkillMarkdownFromUrl, gate, graph, installSkillIntegration, integration, ledger, matchesCronSchedule, nextCronMatch, onboard, orientation, parseCronExpression, policy, query, registry, searchQmdAdapter, skill, store, thread, threadAudit, trigger, triggerEngine, workspace };
|
|
1921
|
+
export { type CronField, type CronSchedule, CursorCloudAdapter, type DispatchAdapter, type DispatchAdapterCreateInput, type DispatchAdapterExecutionInput, type DispatchAdapterExecutionResult, type DispatchAdapterLogEntry, type DispatchAdapterRunStatus, type DispatchRun, type FieldDefinition, type InstallSkillIntegrationOptions, type InstallSkillIntegrationResult, type LedgerChainState, type LedgerEntry, type LedgerIndex, type LedgerOp, type PolicyParty, type PolicyRegistry, type PrimitiveInstance, type PrimitiveQueryFilters, type PrimitiveTypeDefinition, type Registry, type RunStatus, type SkillIntegrationProvider, THREAD_STATUS_TRANSITIONS, type ThreadStatus, type WorkgraphBrief, type WorkgraphLensDescriptor, type WorkgraphLensId, type WorkgraphLensItem, type WorkgraphLensOptions, type WorkgraphLensResult, type WorkgraphLensSection, type WorkgraphMaterializeLensOptions, type WorkgraphMaterializedLensResult, type WorkgraphStatusSnapshot, type WorkgraphWorkspaceConfig, agent, autonomy, autonomyDaemon, bases, board, claimLease, clawdapus, commandCenter, index as diagnostics, dispatch, fetchSkillMarkdownFromUrl, gate, graph, installSkillIntegration, integration, ledger, lens, matchesCronSchedule, nextCronMatch, onboard, orientation, parseCronExpression, policy, query, registry, searchQmdAdapter, skill, store, swarm, thread, threadAudit, trigger, triggerEngine, workspace };
|
package/dist/index.js
CHANGED
|
@@ -9,12 +9,14 @@ import {
|
|
|
9
9
|
fetchSkillMarkdownFromUrl,
|
|
10
10
|
installSkillIntegration,
|
|
11
11
|
integration_exports,
|
|
12
|
+
lens_exports,
|
|
12
13
|
onboard_exports,
|
|
13
14
|
search_qmd_adapter_exports,
|
|
14
15
|
skill_exports,
|
|
16
|
+
swarm_exports,
|
|
15
17
|
trigger_exports,
|
|
16
18
|
workspace_exports
|
|
17
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-MCHTUXG2.js";
|
|
18
20
|
import {
|
|
19
21
|
CursorCloudAdapter,
|
|
20
22
|
THREAD_STATUS_TRANSITIONS,
|
|
@@ -36,7 +38,7 @@ import {
|
|
|
36
38
|
thread_audit_exports,
|
|
37
39
|
thread_exports,
|
|
38
40
|
trigger_engine_exports
|
|
39
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-G6B47IBD.js";
|
|
40
42
|
export {
|
|
41
43
|
CursorCloudAdapter,
|
|
42
44
|
THREAD_STATUS_TRANSITIONS,
|
|
@@ -56,6 +58,7 @@ export {
|
|
|
56
58
|
installSkillIntegration,
|
|
57
59
|
integration_exports as integration,
|
|
58
60
|
ledger_exports as ledger,
|
|
61
|
+
lens_exports as lens,
|
|
59
62
|
matchesCronSchedule,
|
|
60
63
|
mcp_server_exports as mcpServer,
|
|
61
64
|
nextCronMatch,
|
|
@@ -68,6 +71,7 @@ export {
|
|
|
68
71
|
search_qmd_adapter_exports as searchQmdAdapter,
|
|
69
72
|
skill_exports as skill,
|
|
70
73
|
store_exports as store,
|
|
74
|
+
swarm_exports as swarm,
|
|
71
75
|
thread_exports as thread,
|
|
72
76
|
thread_audit_exports as threadAudit,
|
|
73
77
|
trigger_exports as trigger,
|
package/dist/mcp-server.js
CHANGED
package/package.json
CHANGED