@kynver-app/mcp-agent-os 0.3.74 → 0.3.75
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/worker.js +1 -1
- package/package.json +2 -2
package/dist/worker.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{McpServer as
|
|
2
|
+
import{McpServer as f}from"@modelcontextprotocol/sdk/server/mcp.js";import{StdioServerTransport as O}from"@modelcontextprotocol/sdk/server/stdio.js";import{z as c}from"zod";import{WORKER_BROKER_SOCKET_ENV as x,WorkerBrokerClient as $}from"@kynver-app/runtime/worker-broker";import{existsSync as h,readFileSync as b}from"node:fs";import{dirname as l,join as k}from"node:path";import{fileURLToPath as g}from"node:url";function S(r){let n=l(g(r));for(let o=0;o<6;o+=1){if(h(k(n,"package.json")))return n;let i=l(n);if(i===n)break;n=i}throw new Error(`package.json not found above ${l(g(r))}`)}function _(r,n){let o=k(S(r),"package.json"),t=JSON.parse(b(o,"utf8"))[n];if(typeof t!="string"||!t.trim())throw new Error(`Missing package.json ${n} at ${o}`);return t}function p(r=import.meta.url){return _(r,"version")}function E(r){return r.some(n=>n==="--version"||n==="-v")}function R(r,n){console.log(n?`${n} ${r}`:r),process.exit(0)}function y(r,n=import.meta.url,o){return E(r)?(R(p(n),o),!0):!1}var d=p(import.meta.url),w="X-Kynver-Job-Token";function T(){let r=process.env.KYNVER_API_URL?.trim().replace(/\/+$/,""),n=process.env.KYNVER_JOB_TOKEN?.trim(),o=process.env.KYNVER_AGENT_OS_ID?.trim(),i=process.env.KYNVER_TASK_ID?.trim();return!r||!n||!o||!i?{error:"Worker tools are not configured for this session (missing connection settings). Continue without them."}:{apiUrl:r,jobToken:n,agentOsId:o,taskId:i}}function v(r){return{content:[{type:"text",text:JSON.stringify(r,null,2)}],structuredContent:r}}function u(r){return{content:[{type:"text",text:r}],isError:!0}}async function m(r,n){let o=await fetch(`${r.apiUrl}${n}`,{headers:{[w]:r.jobToken}});if(!o.ok)throw new Error(`request failed (${o.status})`);return o.json()}async function W(r,n,o){let i=await fetch(`${r.apiUrl}${n}`,{method:"POST",headers:{[w]:r.jobToken,"Content-Type":"application/json"},body:JSON.stringify(o)});if(!i.ok)throw new Error(`request failed (${i.status})`);return i.json()}async function j(r){let n=new f({name:"kynver-worker-mcp",version:d},{capabilities:{tools:{}}}),o=await $.connect(r),i=await o.listTools();for(let t of i)n.registerTool(t.name,{description:t.description,inputSchema:K(t.inputSchema)},async e=>{try{let s=await o.callTool(t.name,e??{});return s.ok?v(s.result):u(s.error)}catch(s){return u(s instanceof Error?s.message:"worker tools unavailable")}});return n}function K(r){let n=new Set(r.required??[]),o={};for(let[i,t]of Object.entries(r.properties??{})){let e=t??{},s;if(Array.isArray(e.enum)&&e.enum.every(a=>typeof a=="string"))s=c.enum(e.enum);else if(e.type==="integer"||e.type==="number"){let a=e.type==="integer"?c.number().int():c.number();typeof e.minimum=="number"&&(a=a.min(e.minimum)),typeof e.maximum=="number"&&(a=a.max(e.maximum)),s=a}else e.type==="boolean"?s=c.boolean():s=c.string();o[i]=n.has(i)?s:s.optional()}return o}function P(){let r=new f({name:"kynver-worker-mcp",version:d},{capabilities:{tools:{}}});function n(t,e,s,a){r.registerTool(t,{description:e,inputSchema:s},a)}function o(t){return async e=>{let s=T();if("error"in s)return u(s.error);try{return v(await t(s,e))}catch(a){return u(a instanceof Error?a.message:"request failed")}}}let i=t=>`/api/agent-os/by-id/${encodeURIComponent(t.agentOsId)}/worker`;return n("agent_os_context_envelope","Fetch the context envelope for YOUR OWN task: goal/plan/task summaries, relevant memory, and recent session context. Optional memoryQuery focuses the memory portion.",{memoryQuery:c.string().optional(),mode:c.string().optional()},o(async(t,e)=>{let s=new URLSearchParams({task:t.taskId});return typeof e?.memoryQuery=="string"&&e.memoryQuery.trim()&&s.set("memoryQuery",e.memoryQuery.trim()),typeof e?.mode=="string"&&e.mode.trim()&&s.set("mode",e.mode.trim()),m(t,`${i(t)}/context-envelope?${s.toString()}`)})),n("agent_os_search_memory","Semantic search over the workspace's long-term memory. Returns a bounded top-N of relevant entries.",{query:c.string(),k:c.number().int().min(1).max(20).optional()},o(async(t,e)=>{let s=new URLSearchParams({q:String(e.query??"")});return typeof e?.k=="number"&&s.set("k",String(e.k)),m(t,`${i(t)}/memory-search?${s.toString()}`)})),n("agent_os_search_skills","Search the workspace's skill library (bounded, metadata-only index). Use agent_os_get_skill to fetch one full skill by slug.",{query:c.string().optional(),limit:c.number().int().min(1).max(25).optional()},o(async(t,e)=>{let s=new URLSearchParams;typeof e?.query=="string"&&e.query.trim()&&s.set("q",e.query.trim()),typeof e?.limit=="number"&&s.set("limit",String(e.limit));let a=s.toString();return m(t,`${i(t)}/skills${a?`?${a}`:""}`)})),n("agent_os_get_skill","Fetch ONE full skill (including instructions) by slug.",{slug:c.string()},o(async(t,e)=>m(t,`${i(t)}/skills/${encodeURIComponent(String(e.slug??""))}`))),n("agent_os_progress_note","Append a progress or blocker note to YOUR OWN task's journal. kind: 'progress' (default) or 'blocked'.",{note:c.string(),kind:c.enum(["progress","blocked"]).optional(),eventKey:c.string().optional()},o(async(t,e)=>W(t,`${i(t)}/progress-note`,{note:String(e.note??""),...e?.kind==="blocked"?{kind:"blocked"}:{},...typeof e?.eventKey=="string"&&e.eventKey.trim()?{eventKey:e.eventKey.trim()}:{}}))),r}var N=process.argv[1]?.endsWith("worker.js")||process.argv[1]?.endsWith("worker.ts");if(N){y(process.argv.slice(2),import.meta.url,"kynver-worker-mcp");let r=process.env[x]?.trim(),n=r?await j(r):P(),o=new O;await n.connect(o)}export{P as createWorkerServer,j as createWorkerServerViaBroker};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kynver-app/mcp-agent-os",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.75",
|
|
4
4
|
"description": "Kynver Agentic OS MCP server \u2014 slug-keyed agent identity, goals, projects, sessions, and long-term memory",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"node": ">=24.11.0"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@kynver-app/runtime": "^0.2.
|
|
31
|
+
"@kynver-app/runtime": "^0.2.45",
|
|
32
32
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
33
33
|
"zod": "^3.23.0"
|
|
34
34
|
},
|