@oisincoveney/pipeline 1.5.2 → 1.5.3
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/index.js +152 -167
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -28680,14 +28680,6 @@ function header(host) {
|
|
|
28680
28680
|
return [GENERATED_MARKER, `${OWNER_MARKER_PREFIX}host=${host} -->`, ""].join(`
|
|
28681
28681
|
`);
|
|
28682
28682
|
}
|
|
28683
|
-
function tsHeader(host) {
|
|
28684
|
-
return [
|
|
28685
|
-
GENERATED_TS_MARKER,
|
|
28686
|
-
`${OWNER_TS_MARKER_PREFIX}host=${host}`,
|
|
28687
|
-
""
|
|
28688
|
-
].join(`
|
|
28689
|
-
`);
|
|
28690
|
-
}
|
|
28691
28683
|
function yamlHeader(host) {
|
|
28692
28684
|
return [
|
|
28693
28685
|
GENERATED_YAML_MARKER,
|
|
@@ -28717,12 +28709,6 @@ function profileEntries(config2) {
|
|
|
28717
28709
|
function nativeProfileEntries(host, config2) {
|
|
28718
28710
|
return profileEntries(config2).filter(([_, profile]) => canRunNatively(host, config2, profile));
|
|
28719
28711
|
}
|
|
28720
|
-
function hasAgentWorkflowNodes(config2) {
|
|
28721
|
-
return compileWorkflowPlan(config2).topologicalOrder.some((node) => node.kind === "agent");
|
|
28722
|
-
}
|
|
28723
|
-
function profileNames(config2) {
|
|
28724
|
-
return profileEntries(config2).map(([name]) => `\`${name}\``).join(", ");
|
|
28725
|
-
}
|
|
28726
28712
|
function orchestratorProfile(config2) {
|
|
28727
28713
|
const profile = config2.profiles[config2.orchestrator.profile];
|
|
28728
28714
|
if (!profile) {
|
|
@@ -28733,33 +28719,14 @@ function orchestratorProfile(config2) {
|
|
|
28733
28719
|
hooks: config2.orchestrator.hooks
|
|
28734
28720
|
};
|
|
28735
28721
|
}
|
|
28736
|
-
function workflowSummary(config2) {
|
|
28737
|
-
const plan = compileWorkflowPlan(config2);
|
|
28738
|
-
return [
|
|
28739
|
-
`Workflow: ${plan.workflowId}`,
|
|
28740
|
-
entrypointSummary(config2),
|
|
28741
|
-
"",
|
|
28742
|
-
...plan.topologicalOrder.map((node) => {
|
|
28743
|
-
const parts = [
|
|
28744
|
-
`- ${node.id}`,
|
|
28745
|
-
`kind=${node.kind}`,
|
|
28746
|
-
node.profile ? `profile=${node.profile}` : "",
|
|
28747
|
-
runnerForNode(config2, node.profile) ? `runner=${runnerForNode(config2, node.profile)}` : "",
|
|
28748
|
-
node.needs.length ? `needs=${node.needs.join(",")}` : "needs=none"
|
|
28749
|
-
].filter(Boolean);
|
|
28750
|
-
return parts.join(" ");
|
|
28751
|
-
})
|
|
28752
|
-
].join(`
|
|
28753
|
-
`);
|
|
28754
|
-
}
|
|
28755
|
-
function runnerForNode(config2, profileId) {
|
|
28756
|
-
return profileId ? config2.profiles[profileId]?.runner : undefined;
|
|
28757
|
-
}
|
|
28758
28722
|
function resolvedHostModel(config2, host, profile) {
|
|
28759
28723
|
const runner = config2.runners[profile.runner];
|
|
28760
28724
|
return profile.host_models?.[host] ?? runner?.host_models?.[host] ?? profile.model ?? runner?.model;
|
|
28761
28725
|
}
|
|
28762
28726
|
function canRunNatively(host, config2, profile) {
|
|
28727
|
+
if (host === "pi") {
|
|
28728
|
+
return false;
|
|
28729
|
+
}
|
|
28763
28730
|
if (profile.runner === host) {
|
|
28764
28731
|
return true;
|
|
28765
28732
|
}
|
|
@@ -28768,12 +28735,9 @@ function canRunNatively(host, config2, profile) {
|
|
|
28768
28735
|
function isModelRunner(runnerId) {
|
|
28769
28736
|
return COMMAND_HOSTS.some((host) => host === runnerId);
|
|
28770
28737
|
}
|
|
28771
|
-
function
|
|
28772
|
-
return `${runnerId} CLI`;
|
|
28773
|
-
}
|
|
28774
|
-
function dispatchSummary(host, config2) {
|
|
28738
|
+
function agentDispatchRoutes(host, config2) {
|
|
28775
28739
|
const plan = compileWorkflowPlan(config2);
|
|
28776
|
-
|
|
28740
|
+
return plan.topologicalOrder.flatMap((node) => {
|
|
28777
28741
|
if (!(node.kind === "agent" && node.profile)) {
|
|
28778
28742
|
return [];
|
|
28779
28743
|
}
|
|
@@ -28781,43 +28745,43 @@ function dispatchSummary(host, config2) {
|
|
|
28781
28745
|
if (!profile) {
|
|
28782
28746
|
return [];
|
|
28783
28747
|
}
|
|
28784
|
-
return [
|
|
28748
|
+
return [
|
|
28749
|
+
dispatchRouteForAgent(host, config2, {
|
|
28750
|
+
needs: node.needs,
|
|
28751
|
+
nodeId: node.id,
|
|
28752
|
+
profile,
|
|
28753
|
+
profileId: node.profile
|
|
28754
|
+
})
|
|
28755
|
+
];
|
|
28785
28756
|
});
|
|
28786
|
-
return ["Node dispatch:", ...lines.length > 0 ? lines : ["- none"]].join(`
|
|
28787
|
-
`);
|
|
28788
28757
|
}
|
|
28789
|
-
function
|
|
28790
|
-
|
|
28791
|
-
|
|
28758
|
+
function dispatchRouteForAgent(host, config2, route) {
|
|
28759
|
+
const runnerId = route.profile.runner;
|
|
28760
|
+
if (host !== "pi" && runnerId === host) {
|
|
28761
|
+
return {
|
|
28762
|
+
...route,
|
|
28763
|
+
kind: "native-named-agent",
|
|
28764
|
+
nativeAgentId: route.profileId,
|
|
28765
|
+
runnerId
|
|
28766
|
+
};
|
|
28792
28767
|
}
|
|
28793
|
-
if (host === "opencode" && isModelRunner(
|
|
28794
|
-
const model = resolvedHostModel(config2, host, profile);
|
|
28768
|
+
if (host === "opencode" && isModelRunner(runnerId)) {
|
|
28769
|
+
const model = resolvedHostModel(config2, host, route.profile);
|
|
28795
28770
|
if (model) {
|
|
28796
|
-
return
|
|
28771
|
+
return {
|
|
28772
|
+
...route,
|
|
28773
|
+
kind: "native-model-agent",
|
|
28774
|
+
model,
|
|
28775
|
+
nativeAgentId: route.profileId,
|
|
28776
|
+
runnerId
|
|
28777
|
+
};
|
|
28797
28778
|
}
|
|
28798
28779
|
}
|
|
28799
|
-
return
|
|
28800
|
-
|
|
28801
|
-
|
|
28802
|
-
|
|
28803
|
-
claude: `Claude native subagent subagent_type=${profileId}`,
|
|
28804
|
-
codex: `Codex native worker subagent profile=${profileId} agent_type=worker`,
|
|
28805
|
-
kimi: `Kimi native Agent subagent subagent_type=${profileId}`,
|
|
28806
|
-
opencode: `OpenCode native subagent subagent_type=${profileId}`,
|
|
28807
|
-
pi: `Pi native subagent chain profile=${profileId}`
|
|
28780
|
+
return {
|
|
28781
|
+
...route,
|
|
28782
|
+
kind: "cli",
|
|
28783
|
+
runnerId
|
|
28808
28784
|
};
|
|
28809
|
-
return `- ${nodeId}: ${labels[host]} runner=${runnerId}`;
|
|
28810
|
-
}
|
|
28811
|
-
function entrypointSummary(config2) {
|
|
28812
|
-
const entries = Object.entries(config2.entrypoints);
|
|
28813
|
-
if (entries.length === 0) {
|
|
28814
|
-
return "Entrypoints: none";
|
|
28815
|
-
}
|
|
28816
|
-
return [
|
|
28817
|
-
"Entrypoints:",
|
|
28818
|
-
...entries.map(([id, entrypoint]) => `- ${id} -> ${entrypoint.workflow}${entrypoint.description ? ` (${entrypoint.description})` : ""}`)
|
|
28819
|
-
].join(`
|
|
28820
|
-
`);
|
|
28821
28785
|
}
|
|
28822
28786
|
function grants(actor) {
|
|
28823
28787
|
return [
|
|
@@ -28842,42 +28806,127 @@ function orchestratorBlock(config2) {
|
|
|
28842
28806
|
].join(`
|
|
28843
28807
|
`);
|
|
28844
28808
|
}
|
|
28845
|
-
function
|
|
28846
|
-
|
|
28809
|
+
function dispatchBlock(host, config2) {
|
|
28810
|
+
const routes = agentDispatchRoutes(host, config2);
|
|
28811
|
+
if (routes.length === 0) {
|
|
28847
28812
|
return;
|
|
28848
28813
|
}
|
|
28849
|
-
|
|
28850
|
-
|
|
28814
|
+
const plan = compileWorkflowPlan(config2);
|
|
28815
|
+
const nativeRoutes = routes.filter((route) => route.kind !== "cli");
|
|
28816
|
+
const cliRoutes = routes.filter((route) => route.kind === "cli");
|
|
28817
|
+
return [
|
|
28818
|
+
`Run workflow \`${plan.workflowId}\` for the user task.`,
|
|
28819
|
+
"",
|
|
28820
|
+
nativeDispatchBlock(host, nativeRoutes),
|
|
28821
|
+
cliDispatchBlock(host, cliRoutes),
|
|
28822
|
+
nodePromptContract(plan.workflowId, routes),
|
|
28823
|
+
"Do not use `pipe`, `oisin-pipeline`, or package scripts to execute workflow nodes.",
|
|
28824
|
+
hostSpecificDispatchGuard(host, nativeRoutes, cliRoutes)
|
|
28825
|
+
].filter((line) => Boolean(line)).join(`
|
|
28826
|
+
`);
|
|
28827
|
+
}
|
|
28828
|
+
function nativeDispatchBlock(host, routes) {
|
|
28829
|
+
if (routes.length === 0) {
|
|
28830
|
+
return;
|
|
28851
28831
|
}
|
|
28832
|
+
return [
|
|
28833
|
+
`${hostDisplayName(host)} native routes:`,
|
|
28834
|
+
...routes.map((route) => nativeDispatchLine(host, route)),
|
|
28835
|
+
""
|
|
28836
|
+
].join(`
|
|
28837
|
+
`);
|
|
28838
|
+
}
|
|
28839
|
+
function nativeDispatchLine(host, route) {
|
|
28840
|
+
const needs = needsSummary(route.needs);
|
|
28852
28841
|
if (host === "codex") {
|
|
28853
|
-
return
|
|
28842
|
+
return `- ${route.nodeId}: spawn_agent agent_type=${route.nativeAgentId} runner=${route.runnerId} needs=${needs}`;
|
|
28854
28843
|
}
|
|
28855
28844
|
if (host === "claude") {
|
|
28856
|
-
return
|
|
28845
|
+
return `- ${route.nodeId}: Agent tool subagent_type=${route.nativeAgentId} runner=${route.runnerId} needs=${needs}`;
|
|
28857
28846
|
}
|
|
28858
28847
|
if (host === "kimi") {
|
|
28859
|
-
return
|
|
28848
|
+
return `- ${route.nodeId}: Agent tool subagent_type=${route.nativeAgentId} runner=${route.runnerId} needs=${needs}`;
|
|
28860
28849
|
}
|
|
28861
|
-
if (host === "
|
|
28862
|
-
|
|
28850
|
+
if (host === "opencode") {
|
|
28851
|
+
const model = route.model ? ` model=${route.model}` : "";
|
|
28852
|
+
return `- ${route.nodeId}: Task tool subagent_type=${route.nativeAgentId}${model} runner=${route.runnerId} needs=${needs}`;
|
|
28863
28853
|
}
|
|
28864
|
-
return
|
|
28854
|
+
return `- ${route.nodeId}: native agent ${route.nativeAgentId} runner=${route.runnerId} needs=${needs}`;
|
|
28865
28855
|
}
|
|
28866
|
-
function
|
|
28867
|
-
if (
|
|
28856
|
+
function cliDispatchBlock(host, routes) {
|
|
28857
|
+
if (routes.length === 0) {
|
|
28868
28858
|
return;
|
|
28869
28859
|
}
|
|
28860
|
+
const nativeNotice = host === "pi" ? "Pi native dispatch is not enabled for this generated workflow." : `These nodes are not ${hostDisplayName(host)} native routes.`;
|
|
28861
|
+
return [nativeNotice, "CLI routes:", ...routes.map(cliDispatchLine), ""].join(`
|
|
28862
|
+
`);
|
|
28863
|
+
}
|
|
28864
|
+
function cliDispatchLine(route) {
|
|
28865
|
+
return `- ${route.nodeId}: ${route.runnerId} CLI profile=${route.profileId} command=\`${runnerCliCommand(route)}\` needs=${needsSummary(route.needs)}`;
|
|
28866
|
+
}
|
|
28867
|
+
function runnerCliCommand(route) {
|
|
28868
|
+
if (route.runnerId === "codex") {
|
|
28869
|
+
return `codex exec --json -C <repo-root> --sandbox ${codexSandbox(route.profile)} --skip-git-repo-check <node prompt>`;
|
|
28870
|
+
}
|
|
28871
|
+
if (route.runnerId === "kimi") {
|
|
28872
|
+
return `kimi --print --agent-file .kimi/agents/${route.profileId}.yaml --work-dir <repo-root> --final-message-only --prompt <node prompt>`;
|
|
28873
|
+
}
|
|
28874
|
+
if (route.runnerId === "opencode") {
|
|
28875
|
+
return `opencode run --agent ${route.profileId} --format json --dir <repo-root> <node prompt>`;
|
|
28876
|
+
}
|
|
28877
|
+
if (route.runnerId === "claude") {
|
|
28878
|
+
return `claude --agent ${route.profileId} --print -p <node prompt>`;
|
|
28879
|
+
}
|
|
28880
|
+
if (route.runnerId === "pi") {
|
|
28881
|
+
return "pi --print --no-session <node prompt>";
|
|
28882
|
+
}
|
|
28883
|
+
return `${route.runnerId} <node prompt>`;
|
|
28884
|
+
}
|
|
28885
|
+
function codexSandbox(profile) {
|
|
28886
|
+
return profile.filesystem?.mode === "workspace-write" ? "workspace-write" : "read-only";
|
|
28887
|
+
}
|
|
28888
|
+
function nodePromptContract(workflowId, routes) {
|
|
28889
|
+
const hasCliRoutes = routes.some((route) => route.kind === "cli");
|
|
28890
|
+
const lead = hasCliRoutes ? "For each CLI node prompt include:" : "For each native node prompt include:";
|
|
28870
28891
|
return [
|
|
28871
|
-
|
|
28872
|
-
"
|
|
28873
|
-
|
|
28874
|
-
"-
|
|
28875
|
-
"-
|
|
28876
|
-
"-
|
|
28877
|
-
"-
|
|
28892
|
+
lead,
|
|
28893
|
+
"- user task",
|
|
28894
|
+
`- workflow id: ${workflowId}`,
|
|
28895
|
+
"- node id",
|
|
28896
|
+
"- profile id",
|
|
28897
|
+
"- runner id",
|
|
28898
|
+
"- profile instructions reference",
|
|
28899
|
+
"- profile grants",
|
|
28900
|
+
"- dependency outputs",
|
|
28901
|
+
""
|
|
28878
28902
|
].join(`
|
|
28879
28903
|
`);
|
|
28880
28904
|
}
|
|
28905
|
+
function hostSpecificDispatchGuard(host, nativeRoutes, cliRoutes) {
|
|
28906
|
+
if (host === "codex" && nativeRoutes.length > 0) {
|
|
28907
|
+
return "Do not substitute the generic Codex worker for configured profiles.";
|
|
28908
|
+
}
|
|
28909
|
+
if (cliRoutes.length > 0 && nativeRoutes.length > 0) {
|
|
28910
|
+
return `Do not claim CLI routes are ${hostDisplayName(host)} native routes.`;
|
|
28911
|
+
}
|
|
28912
|
+
if (cliRoutes.length > 0 && nativeRoutes.length === 0 && host !== "pi") {
|
|
28913
|
+
return `Do not claim these nodes are ${hostDisplayName(host)} subagents.`;
|
|
28914
|
+
}
|
|
28915
|
+
return;
|
|
28916
|
+
}
|
|
28917
|
+
function hostDisplayName(host) {
|
|
28918
|
+
const names = {
|
|
28919
|
+
claude: "Claude",
|
|
28920
|
+
codex: "Codex",
|
|
28921
|
+
kimi: "Kimi",
|
|
28922
|
+
opencode: "OpenCode",
|
|
28923
|
+
pi: "Pi"
|
|
28924
|
+
};
|
|
28925
|
+
return names[host];
|
|
28926
|
+
}
|
|
28927
|
+
function needsSummary(needs) {
|
|
28928
|
+
return needs.length > 0 ? needs.join(",") : "none";
|
|
28929
|
+
}
|
|
28881
28930
|
function compactLines(lines) {
|
|
28882
28931
|
return lines.filter((line) => line !== undefined);
|
|
28883
28932
|
}
|
|
@@ -28905,17 +28954,9 @@ function claudeDefinitions(config2) {
|
|
|
28905
28954
|
}, compactLines([
|
|
28906
28955
|
header("claude").trimEnd(),
|
|
28907
28956
|
"",
|
|
28908
|
-
workflowSummary(config2),
|
|
28909
|
-
"",
|
|
28910
|
-
dispatchSummary("claude", config2),
|
|
28911
|
-
"",
|
|
28912
28957
|
orchestratorBlock(config2),
|
|
28913
28958
|
"",
|
|
28914
|
-
|
|
28915
|
-
"",
|
|
28916
|
-
cliDispatchInstructions(config2),
|
|
28917
|
-
"",
|
|
28918
|
-
`Delegate work only to configured profiles: ${profileNames(config2)}.`
|
|
28959
|
+
dispatchBlock("claude", config2)
|
|
28919
28960
|
]).join(`
|
|
28920
28961
|
`)),
|
|
28921
28962
|
host: "claude",
|
|
@@ -28962,22 +29003,13 @@ function opencodeDefinitions(config2) {
|
|
|
28962
29003
|
{
|
|
28963
29004
|
content: markdown({
|
|
28964
29005
|
agent: "pipeline-orchestrator",
|
|
28965
|
-
description: "Run the configured pipeline workflow"
|
|
28966
|
-
subtask: true
|
|
29006
|
+
description: "Run the configured pipeline workflow"
|
|
28967
29007
|
}, compactLines([
|
|
28968
29008
|
header("opencode").trimEnd(),
|
|
28969
29009
|
"",
|
|
28970
|
-
workflowSummary(config2),
|
|
28971
|
-
"",
|
|
28972
|
-
dispatchSummary("opencode", config2),
|
|
28973
|
-
"",
|
|
28974
29010
|
orchestratorBlock(config2),
|
|
28975
29011
|
"",
|
|
28976
|
-
|
|
28977
|
-
"",
|
|
28978
|
-
cliDispatchInstructions(config2),
|
|
28979
|
-
"",
|
|
28980
|
-
`Delegate work only to configured profiles: ${profileNames(config2)}.`
|
|
29012
|
+
dispatchBlock("opencode", config2)
|
|
28981
29013
|
]).join(`
|
|
28982
29014
|
`)),
|
|
28983
29015
|
host: "opencode",
|
|
@@ -28989,18 +29021,14 @@ function opencodeDefinitions(config2) {
|
|
|
28989
29021
|
description: "Orchestrate the configured pipeline and enforce gates.",
|
|
28990
29022
|
mode: "primary",
|
|
28991
29023
|
permission: opencodePermission(orchestratorProfile(config2), {
|
|
28992
|
-
forceTask:
|
|
29024
|
+
forceTask: agentDispatchRoutes("opencode", config2).some((route) => route.kind !== "cli")
|
|
28993
29025
|
})
|
|
28994
29026
|
}, compactLines([
|
|
28995
29027
|
header("opencode").trimEnd(),
|
|
28996
29028
|
"",
|
|
28997
29029
|
orchestratorBlock(config2),
|
|
28998
29030
|
"",
|
|
28999
|
-
|
|
29000
|
-
"",
|
|
29001
|
-
nativeDelegationInstruction("opencode", config2),
|
|
29002
|
-
"",
|
|
29003
|
-
cliDispatchInstructions(config2)
|
|
29031
|
+
dispatchBlock("opencode", config2)
|
|
29004
29032
|
]).join(`
|
|
29005
29033
|
`)),
|
|
29006
29034
|
host: "opencode",
|
|
@@ -29041,17 +29069,9 @@ function codexDefinitions(config2) {
|
|
|
29041
29069
|
"",
|
|
29042
29070
|
"Invoke this skill with `$pipe <task description>`.",
|
|
29043
29071
|
"",
|
|
29044
|
-
workflowSummary(config2),
|
|
29045
|
-
"",
|
|
29046
|
-
dispatchSummary("codex", config2),
|
|
29047
|
-
"",
|
|
29048
29072
|
orchestratorBlock(config2),
|
|
29049
29073
|
"",
|
|
29050
|
-
|
|
29051
|
-
"",
|
|
29052
|
-
cliDispatchInstructions(config2),
|
|
29053
|
-
"",
|
|
29054
|
-
`Use separate configured profiles: ${profileNames(config2)}.`
|
|
29074
|
+
dispatchBlock("codex", config2)
|
|
29055
29075
|
]).join(`
|
|
29056
29076
|
`)),
|
|
29057
29077
|
host: "codex",
|
|
@@ -29087,17 +29107,9 @@ function kimiDefinitions(config2) {
|
|
|
29087
29107
|
}, compactLines([
|
|
29088
29108
|
header("kimi").trimEnd(),
|
|
29089
29109
|
"",
|
|
29090
|
-
workflowSummary(config2),
|
|
29091
|
-
"",
|
|
29092
|
-
dispatchSummary("kimi", config2),
|
|
29093
|
-
"",
|
|
29094
29110
|
orchestratorBlock(config2),
|
|
29095
29111
|
"",
|
|
29096
|
-
|
|
29097
|
-
"",
|
|
29098
|
-
cliDispatchInstructions(config2),
|
|
29099
|
-
"",
|
|
29100
|
-
`Use separate configured profiles: ${profileNames(config2)}.`
|
|
29112
|
+
dispatchBlock("kimi", config2)
|
|
29101
29113
|
]).join(`
|
|
29102
29114
|
`)),
|
|
29103
29115
|
host: "kimi",
|
|
@@ -29155,6 +29167,9 @@ function kimiAgentDefinitions(id, profile) {
|
|
|
29155
29167
|
];
|
|
29156
29168
|
}
|
|
29157
29169
|
function kimiOrchestratorAgentDefinitions(config2) {
|
|
29170
|
+
if (agentDispatchRoutes("kimi", config2).every((route) => route.kind !== "native-named-agent")) {
|
|
29171
|
+
return [];
|
|
29172
|
+
}
|
|
29158
29173
|
const agentPath = ".kimi/agents/pipeline-orchestrator.yaml";
|
|
29159
29174
|
const promptPath = ".kimi/agents/pipeline-orchestrator.prompt.md";
|
|
29160
29175
|
const nativeKimiProfiles = nativeProfileEntries("kimi", config2);
|
|
@@ -29208,15 +29223,9 @@ function kimiOrchestratorAgentDefinitions(config2) {
|
|
|
29208
29223
|
content: compactLines([
|
|
29209
29224
|
header("kimi").trimEnd(),
|
|
29210
29225
|
"",
|
|
29211
|
-
workflowSummary(config2),
|
|
29212
|
-
"",
|
|
29213
|
-
dispatchSummary("kimi", config2),
|
|
29214
|
-
"",
|
|
29215
29226
|
orchestratorBlock(config2),
|
|
29216
29227
|
"",
|
|
29217
|
-
|
|
29218
|
-
"",
|
|
29219
|
-
cliDispatchInstructions(config2),
|
|
29228
|
+
dispatchBlock("kimi", config2),
|
|
29220
29229
|
"",
|
|
29221
29230
|
"This agent file is the Kimi-native orchestrator surface. Launch Kimi with `--agent-file .kimi/agents/pipeline-orchestrator.yaml` before using `/skill:pipe` when you want Kimi runner nodes to run through Kimi's native Agent tool."
|
|
29222
29231
|
]).join(`
|
|
@@ -29247,42 +29256,18 @@ function piDefinitions(config2) {
|
|
|
29247
29256
|
{
|
|
29248
29257
|
content: markdown({
|
|
29249
29258
|
"argument-hint": "<task description>",
|
|
29250
|
-
description: "Run the configured pipeline workflow
|
|
29259
|
+
description: "Run the configured pipeline workflow"
|
|
29251
29260
|
}, compactLines([
|
|
29252
29261
|
header("pi").trimEnd(),
|
|
29253
29262
|
"",
|
|
29254
|
-
workflowSummary(config2),
|
|
29255
|
-
"",
|
|
29256
|
-
dispatchSummary("pi", config2),
|
|
29257
|
-
"",
|
|
29258
29263
|
orchestratorBlock(config2),
|
|
29259
29264
|
"",
|
|
29260
|
-
|
|
29261
|
-
"",
|
|
29262
|
-
cliDispatchInstructions(config2)
|
|
29265
|
+
dispatchBlock("pi", config2)
|
|
29263
29266
|
]).join(`
|
|
29264
29267
|
`)),
|
|
29265
29268
|
host: "pi",
|
|
29266
29269
|
invocation: "/pipe <task description>",
|
|
29267
29270
|
path: ".pi/prompts/pipe.md"
|
|
29268
|
-
},
|
|
29269
|
-
{
|
|
29270
|
-
content: [
|
|
29271
|
-
tsHeader("pi").trimEnd(),
|
|
29272
|
-
"",
|
|
29273
|
-
"// Pi exposes project prompt templates as slash commands.",
|
|
29274
|
-
"// The real /pipe command is .pi/prompts/pipe.md.",
|
|
29275
|
-
"// This generated shim intentionally registers no command so it cannot",
|
|
29276
|
-
"// intercept /pipe in print mode before the prompt-template expansion runs.",
|
|
29277
|
-
"export default function pipelineWorkNext(): void {",
|
|
29278
|
-
" return;",
|
|
29279
|
-
"}",
|
|
29280
|
-
""
|
|
29281
|
-
].join(`
|
|
29282
|
-
`),
|
|
29283
|
-
host: "pi",
|
|
29284
|
-
invocation: "/pipe <task description>",
|
|
29285
|
-
path: ".pi/extensions/pipe.ts"
|
|
29286
29271
|
}
|
|
29287
29272
|
];
|
|
29288
29273
|
}
|