@mandible-ai/mandible 0.3.13 → 0.3.14
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 +5 -7
- package/dist/src/cli/index.js +6 -0
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/cli/init.d.ts +25 -0
- package/dist/src/cli/init.d.ts.map +1 -0
- package/dist/src/cli/init.js +348 -0
- package/dist/src/cli/init.js.map +1 -0
- package/dist/src/core/events.d.ts +1 -1
- package/dist/src/core/events.d.ts.map +1 -1
- package/dist/src/core/events.js.map +1 -1
- package/dist/src/core/runtime.d.ts.map +1 -1
- package/dist/src/core/runtime.js +25 -2
- package/dist/src/core/runtime.js.map +1 -1
- package/dist/src/core/types.d.ts +12 -0
- package/dist/src/core/types.d.ts.map +1 -1
- package/dist/src/core/types.js.map +1 -1
- package/dist/src/core/validation.d.ts +7 -0
- package/dist/src/core/validation.d.ts.map +1 -1
- package/dist/src/core/validation.js +19 -0
- package/dist/src/core/validation.js.map +1 -1
- package/dist/src/dsl/builder.d.ts +2 -0
- package/dist/src/dsl/builder.d.ts.map +1 -1
- package/dist/src/dsl/builder.js +5 -0
- package/dist/src/dsl/builder.js.map +1 -1
- package/dist/src/dsl/mandible.d.ts +1 -1
- package/dist/src/dsl/mandible.js +1 -1
- package/dist/src/environments/dolt/adapter.d.ts +21 -7
- package/dist/src/environments/dolt/adapter.d.ts.map +1 -1
- package/dist/src/environments/dolt/adapter.js +319 -59
- package/dist/src/environments/dolt/adapter.js.map +1 -1
- package/dist/src/environments/dolt/client.d.ts +72 -0
- package/dist/src/environments/dolt/client.d.ts.map +1 -0
- package/dist/src/environments/dolt/client.js +209 -0
- package/dist/src/environments/dolt/client.js.map +1 -0
- package/dist/src/environments/dolt/index.d.ts +2 -0
- package/dist/src/environments/dolt/index.d.ts.map +1 -1
- package/dist/src/environments/dolt/index.js +2 -0
- package/dist/src/environments/dolt/index.js.map +1 -1
- package/dist/src/environments/dolt/sql-client.d.ts +24 -0
- package/dist/src/environments/dolt/sql-client.d.ts.map +1 -0
- package/dist/src/environments/dolt/sql-client.js +46 -0
- package/dist/src/environments/dolt/sql-client.js.map +1 -0
- package/dist/src/environments/filesystem/adapter.d.ts +4 -0
- package/dist/src/environments/filesystem/adapter.d.ts.map +1 -1
- package/dist/src/environments/filesystem/adapter.js +23 -0
- package/dist/src/environments/filesystem/adapter.js.map +1 -1
- package/dist/src/environments/github/adapter.d.ts +4 -0
- package/dist/src/environments/github/adapter.d.ts.map +1 -1
- package/dist/src/environments/github/adapter.js +18 -0
- package/dist/src/environments/github/adapter.js.map +1 -1
- package/dist/src/hosts/docker.d.ts +52 -37
- package/dist/src/hosts/docker.d.ts.map +1 -1
- package/dist/src/hosts/docker.js +207 -90
- package/dist/src/hosts/docker.js.map +1 -1
- package/dist/src/index.d.ts +9 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +5 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/patterns/barrier.d.ts +104 -0
- package/dist/src/patterns/barrier.d.ts.map +1 -0
- package/dist/src/patterns/barrier.js +196 -0
- package/dist/src/patterns/barrier.js.map +1 -0
- package/dist/src/patterns/gate.d.ts +71 -0
- package/dist/src/patterns/gate.d.ts.map +1 -0
- package/dist/src/patterns/gate.js +167 -0
- package/dist/src/patterns/gate.js.map +1 -0
- package/dist/src/patterns/index.d.ts +4 -0
- package/dist/src/patterns/index.d.ts.map +1 -1
- package/dist/src/patterns/index.js +2 -0
- package/dist/src/patterns/index.js.map +1 -1
- package/dist/src/providers/claude-code.d.ts.map +1 -1
- package/dist/src/providers/claude-code.js +5 -4
- package/dist/src/providers/claude-code.js.map +1 -1
- package/dist/src/providers/context.d.ts.map +1 -1
- package/dist/src/providers/context.js +16 -10
- package/dist/src/providers/context.js.map +1 -1
- package/dist/src/providers/index.d.ts +12 -1
- package/dist/src/providers/index.d.ts.map +1 -1
- package/dist/src/providers/index.js +11 -0
- package/dist/src/providers/index.js.map +1 -1
- package/dist/src/providers/llm.d.ts +17 -0
- package/dist/src/providers/llm.d.ts.map +1 -0
- package/dist/src/providers/llm.js +225 -0
- package/dist/src/providers/llm.js.map +1 -0
- package/dist/src/providers/opencode.d.ts +87 -0
- package/dist/src/providers/opencode.d.ts.map +1 -0
- package/dist/src/providers/opencode.js +170 -0
- package/dist/src/providers/opencode.js.map +1 -0
- package/dist/src/providers/qwen-code.d.ts +69 -0
- package/dist/src/providers/qwen-code.d.ts.map +1 -0
- package/dist/src/providers/qwen-code.js +175 -0
- package/dist/src/providers/qwen-code.js.map +1 -0
- package/dist/src/providers/skill.d.ts +120 -0
- package/dist/src/providers/skill.d.ts.map +1 -0
- package/dist/src/providers/skill.js +262 -0
- package/dist/src/providers/skill.js.map +1 -0
- package/dist/src/providers/tool-loop.d.ts +163 -0
- package/dist/src/providers/tool-loop.d.ts.map +1 -0
- package/dist/src/providers/tool-loop.js +580 -0
- package/dist/src/providers/tool-loop.js.map +1 -0
- package/dist/src/providers/types.d.ts +63 -0
- package/dist/src/providers/types.d.ts.map +1 -1
- package/dist/src/providers/vllm.d.ts +62 -0
- package/dist/src/providers/vllm.d.ts.map +1 -0
- package/dist/src/providers/vllm.js +262 -0
- package/dist/src/providers/vllm.js.map +1 -0
- package/package.json +7 -2
|
@@ -35,7 +35,7 @@ export async function assembleContext(signal, env, config = {}) {
|
|
|
35
35
|
sections.push(formatSignalSection('Current Signal', signal));
|
|
36
36
|
// Causal lineage — walk up the caused_by chain
|
|
37
37
|
if (config.includeLineage && signal.meta.caused_by?.length) {
|
|
38
|
-
const lineage = await walkLineage(signal, env, config.lineageDepth ?? 3);
|
|
38
|
+
const lineage = await walkLineage(signal, env, config.lineageDepth ?? 3, 0, new Set());
|
|
39
39
|
if (lineage.length > 0) {
|
|
40
40
|
sections.push('## Causal Lineage\n' +
|
|
41
41
|
'These signals led to the current one:\n\n' +
|
|
@@ -84,13 +84,16 @@ export function withContext(config) {
|
|
|
84
84
|
// ----------------------------------------------------------
|
|
85
85
|
// Lineage walking
|
|
86
86
|
// ----------------------------------------------------------
|
|
87
|
-
async function walkLineage(signal, env, maxDepth, depth = 0) {
|
|
87
|
+
async function walkLineage(signal, env, maxDepth, depth = 0, visited = new Set()) {
|
|
88
88
|
if (depth >= maxDepth)
|
|
89
89
|
return [];
|
|
90
90
|
if (!signal.meta.caused_by?.length)
|
|
91
91
|
return [];
|
|
92
92
|
const lineage = [];
|
|
93
93
|
for (const parentId of signal.meta.caused_by) {
|
|
94
|
+
if (visited.has(parentId))
|
|
95
|
+
continue;
|
|
96
|
+
visited.add(parentId);
|
|
94
97
|
// Look in active signals first, then history
|
|
95
98
|
let parent = (await env.observe({ filter: s => s.id === parentId, limit: 1 }))[0];
|
|
96
99
|
if (!parent) {
|
|
@@ -99,7 +102,7 @@ async function walkLineage(signal, env, maxDepth, depth = 0) {
|
|
|
99
102
|
if (parent) {
|
|
100
103
|
lineage.push(parent);
|
|
101
104
|
// Recurse up the chain
|
|
102
|
-
const ancestors = await walkLineage(parent, env, maxDepth, depth + 1);
|
|
105
|
+
const ancestors = await walkLineage(parent, env, maxDepth, depth + 1, visited);
|
|
103
106
|
lineage.push(...ancestors);
|
|
104
107
|
}
|
|
105
108
|
}
|
|
@@ -108,21 +111,24 @@ async function walkLineage(signal, env, maxDepth, depth = 0) {
|
|
|
108
111
|
// ----------------------------------------------------------
|
|
109
112
|
// Sibling discovery
|
|
110
113
|
// ----------------------------------------------------------
|
|
114
|
+
const SIBLING_LIMIT = 20;
|
|
111
115
|
async function findSiblings(signal, env) {
|
|
112
116
|
if (!signal.meta.caused_by?.length)
|
|
113
117
|
return [];
|
|
114
|
-
// Find all signals that share the same parent(s)
|
|
115
|
-
const allSignals = await env.observe({});
|
|
116
|
-
const allHistory = await env.history({ includeWithdrawn: true });
|
|
117
|
-
const all = [...allSignals, ...allHistory];
|
|
118
118
|
const parentIds = new Set(signal.meta.caused_by);
|
|
119
|
-
|
|
120
|
-
s.meta.caused_by?.some(id => parentIds.has(id))
|
|
119
|
+
const isSibling = (s) => s.id !== signal.id &&
|
|
120
|
+
s.meta.caused_by?.some(id => parentIds.has(id)) === true;
|
|
121
|
+
return env.observe({ filter: isSibling, limit: SIBLING_LIMIT });
|
|
121
122
|
}
|
|
122
123
|
// ----------------------------------------------------------
|
|
123
124
|
// Formatting helpers
|
|
124
125
|
// ----------------------------------------------------------
|
|
126
|
+
const MAX_PAYLOAD_LENGTH = 2000;
|
|
125
127
|
function formatSignalSection(title, signal) {
|
|
128
|
+
let payloadStr = JSON.stringify(signal.payload, null, 2);
|
|
129
|
+
if (payloadStr.length > MAX_PAYLOAD_LENGTH) {
|
|
130
|
+
payloadStr = payloadStr.slice(0, MAX_PAYLOAD_LENGTH) + '\n... (truncated)';
|
|
131
|
+
}
|
|
126
132
|
return [
|
|
127
133
|
`## ${title}`,
|
|
128
134
|
`- **Type:** ${signal.type}`,
|
|
@@ -131,7 +137,7 @@ function formatSignalSection(title, signal) {
|
|
|
131
137
|
`- **Age:** ${formatAge(signal.meta.deposited_at)}`,
|
|
132
138
|
`- **Concentration:** ${signal.meta.concentration.toFixed(2)}`,
|
|
133
139
|
signal.meta.tags?.length ? `- **Tags:** ${signal.meta.tags.join(', ')}` : '',
|
|
134
|
-
`- **Payload:**\n\`\`\`json\n${
|
|
140
|
+
`- **Payload:**\n\`\`\`json\n${payloadStr}\n\`\`\``,
|
|
135
141
|
].filter(Boolean).join('\n');
|
|
136
142
|
}
|
|
137
143
|
function summarizePayload(payload) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/providers/context.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,+DAA+D;AAC/D,+DAA+D;AAC/D,2DAA2D;AAC3D,8DAA8D;AAC9D,UAAU;AACV,EAAE;AACF,+DAA+D;AAC/D,aAAa;AACb,wDAAwD;AACxD,iDAAiD;AACjD,qDAAqD;AACrD,EAAE;AACF,yDAAyD;AACzD,0DAA0D;AAC1D,8DAA8D;AAC9D,uBAAuB;AACvB,EAAE;AACF,SAAS;AACT,wDAAwD;AACxD,4BAA4B;AAC5B,uBAAuB;AACvB,6BAA6B;AAC7B,oCAAoC;AACpC,QAAQ;AACR,+DAA+D;AAK/D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAc,EACd,GAAgB,EAChB,SAAgC,EAAE;IAElC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,iBAAiB;IACjB,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC;IAE7D,+CAA+C;IAC/C,IAAI,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;QAC3D,MAAM,OAAO,GAAG,MAAM,WAAW,CAC/B,MAAM,EACN,GAAG,EACH,MAAM,CAAC,YAAY,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/providers/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
export { withClaudeCode, buildDefaultSystemPrompt } from './claude-code.js';
|
|
2
2
|
export { withStructuredOutput } from './structured-output.js';
|
|
3
|
+
export { withLLM } from './llm.js';
|
|
3
4
|
export { withBash } from './bash.js';
|
|
5
|
+
export { vllmProvider, vllmStructuredProvider, vllmFromEnv, vllmStructuredFromEnv, VLLMError, } from './vllm.js';
|
|
6
|
+
export type { VLLMConfig, VLLMErrorCode } from './vllm.js';
|
|
7
|
+
export { withToolLoop, fileReadTool, fileWriteTool, fileEditTool, bashTool, globTool, grepTool, listDirTool, } from './tool-loop.js';
|
|
8
|
+
export type { ToolLoopConfig, ToolDefinition, ToolLoopResult, ToolCallEvent, TurnEvent, } from './tool-loop.js';
|
|
9
|
+
export { withQwenCode } from './qwen-code.js';
|
|
10
|
+
export type { QwenCodeConfig, QwenCodeResult } from './qwen-code.js';
|
|
11
|
+
export { withOpenCode } from './opencode.js';
|
|
12
|
+
export type { OpenCodeConfig, OpenCodeResult } from './opencode.js';
|
|
13
|
+
export { withSkill, loadSkills, loadSkill, parseFrontmatter } from './skill.js';
|
|
14
|
+
export type { SkillConfig, Skill, SkillMeta } from './skill.js';
|
|
4
15
|
export { assembleContext, withContext } from './context.js';
|
|
5
|
-
export type { ActionHandler, ClaudeCodeConfig, AgentResult, StructuredOutputConfig, BashProviderConfig, LLMCallFunction, SignalDeposit, OutputMapping, ContextAssemblyConfig, } from './types.js';
|
|
16
|
+
export type { ActionHandler, ClaudeCodeConfig, AgentResult, StructuredOutputConfig, BashProviderConfig, LLMConfig, LLMCallFunction, SignalDeposit, OutputMapping, ContextAssemblyConfig, } from './types.js';
|
|
6
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAGrC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG5D,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,sBAAsB,EACtB,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,aAAa,EACb,qBAAqB,GACtB,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAGrC,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,WAAW,EACX,qBAAqB,EACrB,SAAS,GACV,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG3D,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,WAAW,GACZ,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,cAAc,EACd,cAAc,EACd,cAAc,EACd,aAAa,EACb,SAAS,GACV,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGpE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAChF,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGhE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG5D,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,sBAAsB,EACtB,kBAAkB,EAClB,SAAS,EACT,eAAe,EACf,aAAa,EACb,aAAa,EACb,qBAAqB,GACtB,MAAM,YAAY,CAAC"}
|
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
// Action providers
|
|
2
2
|
export { withClaudeCode, buildDefaultSystemPrompt } from './claude-code.js';
|
|
3
3
|
export { withStructuredOutput } from './structured-output.js';
|
|
4
|
+
export { withLLM } from './llm.js';
|
|
4
5
|
export { withBash } from './bash.js';
|
|
6
|
+
// vLLM local inference providers
|
|
7
|
+
export { vllmProvider, vllmStructuredProvider, vllmFromEnv, vllmStructuredFromEnv, VLLMError, } from './vllm.js';
|
|
8
|
+
// Tool-calling loop (local agentic coding via vLLM)
|
|
9
|
+
export { withToolLoop, fileReadTool, fileWriteTool, fileEditTool, bashTool, globTool, grepTool, listDirTool, } from './tool-loop.js';
|
|
10
|
+
// qwen-code subprocess wrapper (local agentic coding)
|
|
11
|
+
export { withQwenCode } from './qwen-code.js';
|
|
12
|
+
// OpenCode agent wrapper (provider-agnostic agentic coding)
|
|
13
|
+
export { withOpenCode } from './opencode.js';
|
|
14
|
+
// Skill-based colony provider
|
|
15
|
+
export { withSkill, loadSkills, loadSkill, parseFrontmatter } from './skill.js';
|
|
5
16
|
// Context assembly
|
|
6
17
|
export { assembleContext, withContext } from './context.js';
|
|
7
18
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/index.ts"],"names":[],"mappings":"AAAA,mBAAmB;AACnB,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,mBAAmB;AACnB,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/index.ts"],"names":[],"mappings":"AAAA,mBAAmB;AACnB,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,iCAAiC;AACjC,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,WAAW,EACX,qBAAqB,EACrB,SAAS,GACV,MAAM,WAAW,CAAC;AAGnB,oDAAoD;AACpD,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,WAAW,GACZ,MAAM,gBAAgB,CAAC;AASxB,sDAAsD;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,4DAA4D;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,8BAA8B;AAC9B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGhF,mBAAmB;AACnB,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { LLMConfig, ActionHandler } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Creates an action handler that calls an LLM for plain text generation
|
|
4
|
+
* and routes the result to appropriate signal types.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* colony('summarizer')
|
|
8
|
+
* .do('article:ready', withLLM({
|
|
9
|
+
* model: 'claude-sonnet-4-5-20250929',
|
|
10
|
+
* provider: 'anthropic',
|
|
11
|
+
* prompt: (signal) => `Summarize this article:\n${signal.payload.content}`,
|
|
12
|
+
* route: 'summary:ready',
|
|
13
|
+
* }))
|
|
14
|
+
* .build();
|
|
15
|
+
*/
|
|
16
|
+
export declare function withLLM<T = Record<string, unknown>>(config: LLMConfig<T>): ActionHandler<T>;
|
|
17
|
+
//# sourceMappingURL=llm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../../src/providers/llm.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,SAAS,EACT,aAAa,EAId,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;GAaG;AACH,wBAAgB,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjD,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,GACnB,aAAa,CAAC,CAAC,CAAC,CA+DlB"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
// PURPOSE: withLLM — Plain text LLM generation provider
|
|
2
|
+
// PURPOSE: Lightweight provider that calls an LLM and returns raw text, no schema validation
|
|
3
|
+
/**
|
|
4
|
+
* Creates an action handler that calls an LLM for plain text generation
|
|
5
|
+
* and routes the result to appropriate signal types.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* colony('summarizer')
|
|
9
|
+
* .do('article:ready', withLLM({
|
|
10
|
+
* model: 'claude-sonnet-4-5-20250929',
|
|
11
|
+
* provider: 'anthropic',
|
|
12
|
+
* prompt: (signal) => `Summarize this article:\n${signal.payload.content}`,
|
|
13
|
+
* route: 'summary:ready',
|
|
14
|
+
* }))
|
|
15
|
+
* .build();
|
|
16
|
+
*/
|
|
17
|
+
export function withLLM(config) {
|
|
18
|
+
const { model, provider = 'anthropic', prompt, systemPrompt, maxTokens = 4096, temperature = 0, format, route, autoWithdraw = true, bedrockConfig, } = config;
|
|
19
|
+
return async (signal, ctx) => {
|
|
20
|
+
// 1. Resolve the prompt
|
|
21
|
+
let resolvedPrompt = typeof prompt === 'function'
|
|
22
|
+
? await prompt(signal)
|
|
23
|
+
: prompt;
|
|
24
|
+
// 1b. Append format instruction when format is set
|
|
25
|
+
if (format === 'markdown') {
|
|
26
|
+
resolvedPrompt += '\n\nRespond using well-structured markdown.';
|
|
27
|
+
}
|
|
28
|
+
// 2. Call the LLM
|
|
29
|
+
let text;
|
|
30
|
+
if (typeof provider === 'function') {
|
|
31
|
+
text = await provider(resolvedPrompt, {
|
|
32
|
+
systemPrompt,
|
|
33
|
+
maxTokens,
|
|
34
|
+
temperature,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
text = await callTextProvider(provider, model, resolvedPrompt, {
|
|
39
|
+
systemPrompt,
|
|
40
|
+
maxTokens,
|
|
41
|
+
temperature,
|
|
42
|
+
bedrockConfig,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
// 3. Route to signal deposits
|
|
46
|
+
const defaultPayload = format && format !== 'text'
|
|
47
|
+
? { text, format }
|
|
48
|
+
: { text };
|
|
49
|
+
const deposits = resolveTextRoute(route, text, signal, defaultPayload);
|
|
50
|
+
for (const deposit of deposits) {
|
|
51
|
+
await ctx.deposit(deposit.type, deposit.payload ?? defaultPayload, {
|
|
52
|
+
causedBy: [signal.id],
|
|
53
|
+
tags: deposit.tags,
|
|
54
|
+
ttl: deposit.ttl,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
// 4. Withdraw
|
|
58
|
+
if (autoWithdraw) {
|
|
59
|
+
await ctx.withdraw(signal.id);
|
|
60
|
+
}
|
|
61
|
+
ctx.log(`LLM text generation completed. Deposited ${deposits.length} signal(s).`);
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
// ----------------------------------------------------------
|
|
65
|
+
// Provider implementations (text-only, no JSON parsing)
|
|
66
|
+
// ----------------------------------------------------------
|
|
67
|
+
async function callTextProvider(provider, model, prompt, options) {
|
|
68
|
+
switch (provider) {
|
|
69
|
+
case 'anthropic':
|
|
70
|
+
return callAnthropicText(model, prompt, options);
|
|
71
|
+
case 'bedrock':
|
|
72
|
+
return callBedrockText(model, prompt, options);
|
|
73
|
+
case 'openai':
|
|
74
|
+
return callOpenAIText(model, prompt, options);
|
|
75
|
+
case 'vercel-ai':
|
|
76
|
+
return callVercelAIText(model, prompt, options);
|
|
77
|
+
default:
|
|
78
|
+
throw new Error(`Unknown provider: ${provider}. Use 'anthropic', 'bedrock', 'openai', 'vercel-ai', or pass a custom function.`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
async function callAnthropicText(model, prompt, options) {
|
|
82
|
+
try {
|
|
83
|
+
const { default: Anthropic } = await import('@anthropic-ai/sdk');
|
|
84
|
+
const client = new Anthropic();
|
|
85
|
+
const response = await client.messages.create({
|
|
86
|
+
model,
|
|
87
|
+
max_tokens: options.maxTokens ?? 4096,
|
|
88
|
+
...(options.temperature !== undefined ? { temperature: options.temperature } : {}),
|
|
89
|
+
...(options.systemPrompt ? { system: options.systemPrompt } : {}),
|
|
90
|
+
messages: [{ role: 'user', content: prompt }],
|
|
91
|
+
});
|
|
92
|
+
return response.content
|
|
93
|
+
.filter((block) => block.type === 'text')
|
|
94
|
+
.map((block) => block.text)
|
|
95
|
+
.join('');
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
if (err.code === 'MODULE_NOT_FOUND' || err.code === 'ERR_MODULE_NOT_FOUND') {
|
|
99
|
+
throw new Error('Anthropic provider requires @anthropic-ai/sdk. Install it:\n' +
|
|
100
|
+
' npm install @anthropic-ai/sdk');
|
|
101
|
+
}
|
|
102
|
+
throw err;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
async function callBedrockText(model, prompt, options) {
|
|
106
|
+
if (!options.bedrockConfig) {
|
|
107
|
+
throw new Error("Bedrock provider requires bedrockConfig. Pass { provider: 'bedrock', bedrockConfig: { region: '...' } }.");
|
|
108
|
+
}
|
|
109
|
+
try {
|
|
110
|
+
// @ts-expect-error — optional peer dependency, may not be installed
|
|
111
|
+
const { default: AnthropicBedrock } = await import('@anthropic-ai/bedrock-sdk');
|
|
112
|
+
const clientOptions = {
|
|
113
|
+
awsRegion: options.bedrockConfig.region,
|
|
114
|
+
};
|
|
115
|
+
if (options.bedrockConfig.accessKeyId)
|
|
116
|
+
clientOptions.awsAccessKey = options.bedrockConfig.accessKeyId;
|
|
117
|
+
if (options.bedrockConfig.secretAccessKey)
|
|
118
|
+
clientOptions.awsSecretKey = options.bedrockConfig.secretAccessKey;
|
|
119
|
+
if (options.bedrockConfig.sessionToken)
|
|
120
|
+
clientOptions.awsSessionToken = options.bedrockConfig.sessionToken;
|
|
121
|
+
if (options.bedrockConfig.profile)
|
|
122
|
+
clientOptions.awsProfile = options.bedrockConfig.profile;
|
|
123
|
+
const client = new AnthropicBedrock(clientOptions);
|
|
124
|
+
const requestOptions = {
|
|
125
|
+
model: options.bedrockConfig.model ?? model,
|
|
126
|
+
max_tokens: options.maxTokens ?? 4096,
|
|
127
|
+
messages: [{ role: 'user', content: prompt }],
|
|
128
|
+
};
|
|
129
|
+
if (options.temperature !== undefined)
|
|
130
|
+
requestOptions.temperature = options.temperature;
|
|
131
|
+
if (options.systemPrompt)
|
|
132
|
+
requestOptions.system = options.systemPrompt;
|
|
133
|
+
const response = await client.messages.create(requestOptions);
|
|
134
|
+
return response.content
|
|
135
|
+
.filter((block) => block.type === 'text')
|
|
136
|
+
.map((block) => block.text)
|
|
137
|
+
.join('');
|
|
138
|
+
}
|
|
139
|
+
catch (err) {
|
|
140
|
+
if (err.code === 'MODULE_NOT_FOUND' || err.code === 'ERR_MODULE_NOT_FOUND') {
|
|
141
|
+
throw new Error('Bedrock provider requires @anthropic-ai/bedrock-sdk. Install it:\n' +
|
|
142
|
+
' npm install @anthropic-ai/bedrock-sdk');
|
|
143
|
+
}
|
|
144
|
+
throw err;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
async function callOpenAIText(model, prompt, options) {
|
|
148
|
+
try {
|
|
149
|
+
const { default: OpenAI } = await import('openai');
|
|
150
|
+
const client = new OpenAI();
|
|
151
|
+
const messages = [];
|
|
152
|
+
if (options.systemPrompt) {
|
|
153
|
+
messages.push({ role: 'system', content: options.systemPrompt });
|
|
154
|
+
}
|
|
155
|
+
messages.push({ role: 'user', content: prompt });
|
|
156
|
+
const response = await client.chat.completions.create({
|
|
157
|
+
model,
|
|
158
|
+
messages,
|
|
159
|
+
max_tokens: options.maxTokens ?? 4096,
|
|
160
|
+
temperature: options.temperature ?? 0,
|
|
161
|
+
});
|
|
162
|
+
return response.choices[0]?.message?.content ?? '';
|
|
163
|
+
}
|
|
164
|
+
catch (err) {
|
|
165
|
+
if (err.code === 'MODULE_NOT_FOUND' || err.code === 'ERR_MODULE_NOT_FOUND') {
|
|
166
|
+
throw new Error('OpenAI provider requires openai. Install it:\n' +
|
|
167
|
+
' npm install openai');
|
|
168
|
+
}
|
|
169
|
+
throw err;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
async function callVercelAIText(model, prompt, options) {
|
|
173
|
+
try {
|
|
174
|
+
const { generateText } = await import('ai');
|
|
175
|
+
const modelInstance = await resolveVercelModel(model);
|
|
176
|
+
const { text } = await generateText({
|
|
177
|
+
model: modelInstance,
|
|
178
|
+
prompt,
|
|
179
|
+
...(options.systemPrompt ? { system: options.systemPrompt } : {}),
|
|
180
|
+
...(options.maxTokens ? { maxTokens: options.maxTokens } : {}),
|
|
181
|
+
...(options.temperature !== undefined ? { temperature: options.temperature } : {}),
|
|
182
|
+
});
|
|
183
|
+
return text;
|
|
184
|
+
}
|
|
185
|
+
catch (err) {
|
|
186
|
+
if (err.code === 'MODULE_NOT_FOUND' || err.code === 'ERR_MODULE_NOT_FOUND') {
|
|
187
|
+
throw new Error('Vercel AI provider requires ai and a model provider. Install them:\n' +
|
|
188
|
+
' npm install ai @ai-sdk/anthropic\n' +
|
|
189
|
+
' # or: npm install ai @ai-sdk/openai');
|
|
190
|
+
}
|
|
191
|
+
throw err;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Resolve a model string to a Vercel AI SDK model instance.
|
|
196
|
+
* Auto-detects provider based on model name prefix.
|
|
197
|
+
*/
|
|
198
|
+
async function resolveVercelModel(model) {
|
|
199
|
+
if (model.startsWith('claude') || model.startsWith('anthropic/')) {
|
|
200
|
+
const { anthropic } = await import('@ai-sdk/anthropic');
|
|
201
|
+
return anthropic(model.replace('anthropic/', ''));
|
|
202
|
+
}
|
|
203
|
+
if (model.startsWith('gpt') || model.startsWith('openai/')) {
|
|
204
|
+
const { openai } = await import('@ai-sdk/openai');
|
|
205
|
+
return openai(model.replace('openai/', ''));
|
|
206
|
+
}
|
|
207
|
+
if (model.startsWith('gemini') || model.startsWith('google/')) {
|
|
208
|
+
const { google } = await import('@ai-sdk/google');
|
|
209
|
+
return google(model.replace('google/', ''));
|
|
210
|
+
}
|
|
211
|
+
// Default to Anthropic
|
|
212
|
+
const { anthropic } = await import('@ai-sdk/anthropic');
|
|
213
|
+
return anthropic(model);
|
|
214
|
+
}
|
|
215
|
+
// ----------------------------------------------------------
|
|
216
|
+
// Helpers
|
|
217
|
+
// ----------------------------------------------------------
|
|
218
|
+
function resolveTextRoute(route, text, signal, defaultPayload) {
|
|
219
|
+
if (typeof route === 'string') {
|
|
220
|
+
return [{ type: route, payload: defaultPayload }];
|
|
221
|
+
}
|
|
222
|
+
const mapped = route(text, signal);
|
|
223
|
+
return Array.isArray(mapped) ? mapped : [mapped];
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=llm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm.js","sourceRoot":"","sources":["../../../src/providers/llm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import type { Signal } from '../core/types.js';
|
|
2
|
+
import type { ActionHandler, OutputMapping } from './types.js';
|
|
3
|
+
export interface OpenCodeConfig<T = Record<string, unknown>> {
|
|
4
|
+
/**
|
|
5
|
+
* OpenCode server URL. Default: 'http://localhost:4096'.
|
|
6
|
+
* Start the server with: opencode serve
|
|
7
|
+
*/
|
|
8
|
+
serverUrl?: string;
|
|
9
|
+
/**
|
|
10
|
+
* Model in "provider/modelId" format.
|
|
11
|
+
* e.g. 'anthropic/claude-sonnet-4-5-20250929', 'openai/gpt-5.1'
|
|
12
|
+
* Falls back to the server's configured default model.
|
|
13
|
+
*/
|
|
14
|
+
model?: string;
|
|
15
|
+
/**
|
|
16
|
+
* OpenCode agent type.
|
|
17
|
+
* - 'build': Full development (file editing, commands, all tools)
|
|
18
|
+
* - 'plan': Read-only analysis, suggests changes without executing
|
|
19
|
+
* - 'general': Multi-step research with subagent support
|
|
20
|
+
* - 'explore': Fast read-only codebase scanning
|
|
21
|
+
* Default: 'build'.
|
|
22
|
+
*/
|
|
23
|
+
agent?: 'build' | 'plan' | 'general' | 'explore';
|
|
24
|
+
/** Build the prompt from the incoming signal. */
|
|
25
|
+
prompt: string | ((signal: Signal<T>) => string | Promise<string>);
|
|
26
|
+
/**
|
|
27
|
+
* System prompt. Injected as a noReply message before the main prompt
|
|
28
|
+
* to set the agent's role and constraints.
|
|
29
|
+
*/
|
|
30
|
+
systemPrompt?: string;
|
|
31
|
+
/**
|
|
32
|
+
* Working directory for the OpenCode session.
|
|
33
|
+
* Can be static or derived from the signal.
|
|
34
|
+
*/
|
|
35
|
+
workingDirectory?: string | ((signal: Signal<T>) => string);
|
|
36
|
+
/** Timeout in ms for the prompt call. Default: 600_000 (10 min). */
|
|
37
|
+
timeout?: number;
|
|
38
|
+
/**
|
|
39
|
+
* JSON schema for structured output. When set, the agent returns
|
|
40
|
+
* validated JSON matching this schema instead of free-form text.
|
|
41
|
+
*/
|
|
42
|
+
schema?: {
|
|
43
|
+
name: string;
|
|
44
|
+
schema: Record<string, unknown>;
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Event stream callback for observability.
|
|
48
|
+
* Called with each SSE event from the OpenCode server.
|
|
49
|
+
* Errors in this callback are caught and do not crash the agent.
|
|
50
|
+
*/
|
|
51
|
+
onEvent?: (event: unknown) => void;
|
|
52
|
+
/** Map output to signal deposits. */
|
|
53
|
+
output?: OutputMapping<T>;
|
|
54
|
+
/** Auto-withdraw the triggering signal. Default: true. */
|
|
55
|
+
autoWithdraw?: boolean;
|
|
56
|
+
}
|
|
57
|
+
export interface OpenCodeResult {
|
|
58
|
+
/** Final text output from the agent. */
|
|
59
|
+
text: string;
|
|
60
|
+
/** Structured output (parsed JSON) when schema was provided. */
|
|
61
|
+
structuredOutput?: unknown;
|
|
62
|
+
/** Wall-clock duration in ms. */
|
|
63
|
+
durationMs: number;
|
|
64
|
+
/** OpenCode session ID (for debugging/resumption). */
|
|
65
|
+
sessionId: string;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Creates an action handler powered by the OpenCode SDK.
|
|
69
|
+
*
|
|
70
|
+
* The SDK must be installed separately:
|
|
71
|
+
* npm install @opencode-ai/sdk
|
|
72
|
+
*
|
|
73
|
+
* The OpenCode server must be running:
|
|
74
|
+
* opencode serve
|
|
75
|
+
*
|
|
76
|
+
* The handler:
|
|
77
|
+
* 1. Connects to the OpenCode server via the SDK
|
|
78
|
+
* 2. Creates a session with the specified agent and model
|
|
79
|
+
* 3. Optionally injects a system prompt as a noReply message
|
|
80
|
+
* 4. Sends the main prompt (with optional structured output schema)
|
|
81
|
+
* 5. Extracts text and structured output from the response
|
|
82
|
+
* 6. Maps the output to signal deposits
|
|
83
|
+
* 7. Cleans up the session
|
|
84
|
+
*/
|
|
85
|
+
export declare function withOpenCode<T = Record<string, unknown>>(config: OpenCodeConfig<T>): ActionHandler<T>;
|
|
86
|
+
export declare function buildOpenCodeSystemPrompt(colonyName: string): string;
|
|
87
|
+
//# sourceMappingURL=opencode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../../src/providers/opencode.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAiB,MAAM,YAAY,CAAC;AAM9E,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACzD;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IAEjD,iDAAiD;IACjD,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAEnE;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;IAE5D,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;IAE3D;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAEnC,qCAAqC;IACrC,MAAM,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAE1B,0DAA0D;IAC1D,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAMD,MAAM,WAAW,cAAc;IAC7B,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtD,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,GACxB,aAAa,CAAC,CAAC,CAAC,CAqIlB;AAMD,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAOpE"}
|