agentix-cli 0.16.0 → 0.18.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.
Files changed (173) hide show
  1. package/dist/agent-RDVGL2TW.js +2 -0
  2. package/dist/audit-Z47AQFFD.js +3 -0
  3. package/dist/audit-Z47AQFFD.js.map +1 -0
  4. package/dist/board-dashboard-KX2CNOSY.js +7282 -0
  5. package/dist/board-dashboard-KX2CNOSY.js.map +1 -0
  6. package/dist/chunk-34NG7UDX.js +11 -0
  7. package/dist/chunk-34NG7UDX.js.map +1 -0
  8. package/dist/{chunk-6MKAXEE5.js → chunk-4ITQP3XL.js} +2 -2
  9. package/dist/{chunk-6MKAXEE5.js.map → chunk-4ITQP3XL.js.map} +1 -1
  10. package/dist/chunk-53NRX2NA.js +2 -0
  11. package/dist/chunk-53NRX2NA.js.map +1 -0
  12. package/dist/chunk-6PPIFDOQ.js +1742 -0
  13. package/dist/chunk-6PPIFDOQ.js.map +1 -0
  14. package/dist/chunk-AFRHKA7B.js +2 -0
  15. package/dist/chunk-AFRHKA7B.js.map +1 -0
  16. package/dist/chunk-ASSJ4Z6Z.js +164 -0
  17. package/dist/chunk-ASSJ4Z6Z.js.map +1 -0
  18. package/dist/chunk-BLUXL6HR.js +854 -0
  19. package/dist/chunk-BLUXL6HR.js.map +1 -0
  20. package/dist/chunk-BTAEYL3P.js +72 -0
  21. package/dist/chunk-BTAEYL3P.js.map +1 -0
  22. package/dist/chunk-CDNWCYF7.js +2 -0
  23. package/dist/chunk-CDNWCYF7.js.map +1 -0
  24. package/dist/chunk-DJEZ2HVU.js +5 -0
  25. package/dist/chunk-DJEZ2HVU.js.map +1 -0
  26. package/dist/{chunk-FLOGK2U7.js → chunk-DSCMCVTV.js} +3 -3
  27. package/dist/chunk-DSCMCVTV.js.map +1 -0
  28. package/dist/chunk-EW27SCCC.js +2 -0
  29. package/dist/chunk-EW27SCCC.js.map +1 -0
  30. package/dist/chunk-HPDHNIA3.js +2 -0
  31. package/dist/chunk-IM376SD6.js +13 -0
  32. package/dist/chunk-IM376SD6.js.map +1 -0
  33. package/dist/chunk-J4WKMKTP.js +5 -0
  34. package/dist/{chunk-YI2T5QYB.js.map → chunk-J4WKMKTP.js.map} +1 -1
  35. package/dist/chunk-JGXE2YNV.js +46 -0
  36. package/dist/chunk-JGXE2YNV.js.map +1 -0
  37. package/dist/chunk-JXEPJ3YD.js +118 -0
  38. package/dist/chunk-JXEPJ3YD.js.map +1 -0
  39. package/dist/chunk-LY7JGDV7.js +6 -0
  40. package/dist/chunk-LY7JGDV7.js.map +1 -0
  41. package/dist/chunk-N67JZAXU.js +2 -0
  42. package/dist/chunk-N67JZAXU.js.map +1 -0
  43. package/dist/chunk-SR3X25TN.js +3 -0
  44. package/dist/chunk-SR3X25TN.js.map +1 -0
  45. package/dist/{chunk-7MBTMCKY.js → chunk-TRQSP67X.js} +2 -2
  46. package/dist/chunk-U364GNQX.js +719 -0
  47. package/dist/chunk-U364GNQX.js.map +1 -0
  48. package/dist/chunk-VJUTQAPJ.js +2 -0
  49. package/dist/chunk-VJUTQAPJ.js.map +1 -0
  50. package/dist/{chunk-HI24KAEY.js → chunk-WJXU5F4Z.js} +3 -4
  51. package/dist/{chunk-HI24KAEY.js.map → chunk-WJXU5F4Z.js.map} +1 -1
  52. package/dist/{chunk-QZP65I2H.js → chunk-ZE2YFX4K.js} +2 -2
  53. package/dist/cli.js +1 -320
  54. package/dist/cli.js.map +1 -1
  55. package/dist/{compaction-JBZZ7I7Y.js → compaction-S5H6DTOR.js} +6 -6
  56. package/dist/compaction-S5H6DTOR.js.map +1 -0
  57. package/dist/config-UOHEG4BW.js +2 -0
  58. package/dist/config-mutator-KSEBWKJH.js +2 -0
  59. package/dist/context-planner-2RGHJHSO.js +17 -0
  60. package/dist/context-planner-2RGHJHSO.js.map +1 -0
  61. package/dist/debug-TGAP7E7W.js +2 -0
  62. package/dist/discover-OATU7SHI.js +4 -0
  63. package/dist/discover-OATU7SHI.js.map +1 -0
  64. package/dist/editor-chat-FUBQLMAQ.js +137 -0
  65. package/dist/editor-chat-FUBQLMAQ.js.map +1 -0
  66. package/dist/heal-YP7QI7D3.js +2 -0
  67. package/dist/inbox-O5UB3YQN.js +315 -0
  68. package/dist/inbox-O5UB3YQN.js.map +1 -0
  69. package/dist/index.d.ts +3390 -1814
  70. package/dist/index.js +23 -53
  71. package/dist/index.js.map +1 -1
  72. package/dist/ingest-whatsapp-C3O5UPBX.js +6 -0
  73. package/dist/ingest-whatsapp-C3O5UPBX.js.map +1 -0
  74. package/dist/loader-BGWA7IRY.js +2 -0
  75. package/dist/loader-LBHKSXBK.js +2 -0
  76. package/dist/memory-extract-KKPKAOPH.js +2 -0
  77. package/dist/processes-7W27G3J3.js +256 -0
  78. package/dist/processes-7W27G3J3.js.map +1 -0
  79. package/dist/program-2MDELQLX.js +2 -0
  80. package/dist/providers-WCQSKTNP.js +2 -0
  81. package/dist/query-FZAL7AQD.js +2 -0
  82. package/dist/recipes-LZ56TA3X.js +2 -0
  83. package/dist/registry-ONJSILH4.js +2 -0
  84. package/dist/scheduler-XRM2RJIV.js +2 -0
  85. package/dist/slack-D27BE37Q.js +3 -0
  86. package/dist/slack-D27BE37Q.js.map +1 -0
  87. package/dist/store-4UCO56K2.js +2 -0
  88. package/dist/store-4UCO56K2.js.map +1 -0
  89. package/dist/{subagent-2SJHSSJS.js → subagent-EPOT3QDM.js} +2 -2
  90. package/dist/task-store-3NUWLYRY.js +2 -0
  91. package/dist/task-store-3NUWLYRY.js.map +1 -0
  92. package/dist/telegram-UWV67KWG.js +3 -0
  93. package/dist/telegram-UWV67KWG.js.map +1 -0
  94. package/dist/timers-QB4KYNAE.js +2 -0
  95. package/dist/timers-QB4KYNAE.js.map +1 -0
  96. package/dist/types-ECMEC5BZ.js +2 -0
  97. package/dist/types-ECMEC5BZ.js.map +1 -0
  98. package/dist/types-TTB6DJUE.js +2 -0
  99. package/dist/types-TTB6DJUE.js.map +1 -0
  100. package/dist/usage-dashboard-FQGPPABD.js +803 -0
  101. package/dist/usage-dashboard-FQGPPABD.js.map +1 -0
  102. package/dist/web/workflow-editor.global.js +1450 -0
  103. package/dist/web/workflow-editor.global.js.map +1 -0
  104. package/dist/whatsapp-KJ2NRKKQ.js +3 -0
  105. package/dist/whatsapp-KJ2NRKKQ.js.map +1 -0
  106. package/dist/{whatsapp-state-6D6FHHD2.js → whatsapp-state-3ZVQ6MQD.js} +2 -2
  107. package/dist/{wiki-UDPYFJBL.js → wiki-OUYKM7MB.js} +2 -2
  108. package/dist/wiki-OUYKM7MB.js.map +1 -0
  109. package/dist/workspace-setup-6GDBEORT.js +2 -0
  110. package/dist/workspace-setup-6GDBEORT.js.map +1 -0
  111. package/package.json +19 -2
  112. package/dist/agent-BCDPSPKU.js +0 -2
  113. package/dist/board-dashboard-LA7WW56M.js +0 -5668
  114. package/dist/board-dashboard-LA7WW56M.js.map +0 -1
  115. package/dist/chunk-6U2XOQHU.js +0 -7
  116. package/dist/chunk-6U2XOQHU.js.map +0 -1
  117. package/dist/chunk-7FJQGD6U.js +0 -6
  118. package/dist/chunk-7FJQGD6U.js.map +0 -1
  119. package/dist/chunk-ABDP7TDL.js +0 -71
  120. package/dist/chunk-ABDP7TDL.js.map +0 -1
  121. package/dist/chunk-CXY2RYNI.js +0 -11
  122. package/dist/chunk-CXY2RYNI.js.map +0 -1
  123. package/dist/chunk-FIOB3MEX.js +0 -2
  124. package/dist/chunk-FLOGK2U7.js.map +0 -1
  125. package/dist/chunk-HVC6FJNP.js +0 -108
  126. package/dist/chunk-HVC6FJNP.js.map +0 -1
  127. package/dist/chunk-K7BE4E35.js +0 -138
  128. package/dist/chunk-K7BE4E35.js.map +0 -1
  129. package/dist/chunk-KXJSLLSQ.js +0 -199
  130. package/dist/chunk-KXJSLLSQ.js.map +0 -1
  131. package/dist/chunk-KXZMYLHQ.js +0 -46
  132. package/dist/chunk-KXZMYLHQ.js.map +0 -1
  133. package/dist/chunk-M7HKBG3V.js +0 -2
  134. package/dist/chunk-M7HKBG3V.js.map +0 -1
  135. package/dist/chunk-MCJUAE6V.js +0 -6
  136. package/dist/chunk-MCJUAE6V.js.map +0 -1
  137. package/dist/chunk-RB7265LO.js +0 -12
  138. package/dist/chunk-RB7265LO.js.map +0 -1
  139. package/dist/chunk-YI2T5QYB.js +0 -5
  140. package/dist/compaction-JBZZ7I7Y.js.map +0 -1
  141. package/dist/config-LN6JEHMF.js +0 -2
  142. package/dist/config-mutator-24TH7PHM.js +0 -2
  143. package/dist/debug-3MEUO2P2.js +0 -2
  144. package/dist/heal-WKY5I4KB.js +0 -2
  145. package/dist/loader-PTCXLJEX.js +0 -2
  146. package/dist/memory-extract-AD7KMRPC.js +0 -2
  147. package/dist/providers-VUIWO3ZK.js +0 -2
  148. package/dist/query-PKGYE5HR.js +0 -2
  149. package/dist/registry-ASC2QS5K.js +0 -2
  150. package/dist/scheduler-A3TQOCKT.js +0 -2
  151. package/dist/types-OIFU3KSQ.js +0 -2
  152. package/dist/usage-dashboard-QX3CF6KK.js +0 -404
  153. package/dist/usage-dashboard-QX3CF6KK.js.map +0 -1
  154. package/dist/workspace-setup-ZWTT42XT.js +0 -2
  155. /package/dist/{agent-BCDPSPKU.js.map → agent-RDVGL2TW.js.map} +0 -0
  156. /package/dist/{chunk-FIOB3MEX.js.map → chunk-HPDHNIA3.js.map} +0 -0
  157. /package/dist/{chunk-7MBTMCKY.js.map → chunk-TRQSP67X.js.map} +0 -0
  158. /package/dist/{chunk-QZP65I2H.js.map → chunk-ZE2YFX4K.js.map} +0 -0
  159. /package/dist/{config-LN6JEHMF.js.map → config-UOHEG4BW.js.map} +0 -0
  160. /package/dist/{config-mutator-24TH7PHM.js.map → config-mutator-KSEBWKJH.js.map} +0 -0
  161. /package/dist/{debug-3MEUO2P2.js.map → debug-TGAP7E7W.js.map} +0 -0
  162. /package/dist/{heal-WKY5I4KB.js.map → heal-YP7QI7D3.js.map} +0 -0
  163. /package/dist/{loader-PTCXLJEX.js.map → loader-BGWA7IRY.js.map} +0 -0
  164. /package/dist/{memory-extract-AD7KMRPC.js.map → loader-LBHKSXBK.js.map} +0 -0
  165. /package/dist/{providers-VUIWO3ZK.js.map → memory-extract-KKPKAOPH.js.map} +0 -0
  166. /package/dist/{query-PKGYE5HR.js.map → program-2MDELQLX.js.map} +0 -0
  167. /package/dist/{registry-ASC2QS5K.js.map → providers-WCQSKTNP.js.map} +0 -0
  168. /package/dist/{scheduler-A3TQOCKT.js.map → query-FZAL7AQD.js.map} +0 -0
  169. /package/dist/{types-OIFU3KSQ.js.map → recipes-LZ56TA3X.js.map} +0 -0
  170. /package/dist/{wiki-UDPYFJBL.js.map → registry-ONJSILH4.js.map} +0 -0
  171. /package/dist/{workspace-setup-ZWTT42XT.js.map → scheduler-XRM2RJIV.js.map} +0 -0
  172. /package/dist/{subagent-2SJHSSJS.js.map → subagent-EPOT3QDM.js.map} +0 -0
  173. /package/dist/{whatsapp-state-6D6FHHD2.js.map → whatsapp-state-3ZVQ6MQD.js.map} +0 -0
@@ -0,0 +1,2 @@
1
+ import{A as a,B as b,C as c}from"./chunk-JXEPJ3YD.js";import"./chunk-SFQUP3BP.js";import"./chunk-JGXE2YNV.js";import"./chunk-VJUTQAPJ.js";import"./chunk-DJEZ2HVU.js";import"./chunk-DSYKYZMT.js";import"./chunk-QOYAX2FT.js";import"./chunk-HPDHNIA3.js";export{a as createAgentContext,b as generate,c as generateStream};
2
+ //# sourceMappingURL=agent-RDVGL2TW.js.map
@@ -0,0 +1,3 @@
1
+ import"./chunk-HPDHNIA3.js";function h(e,t,o,n){let r=[],s=e.frontmatter,f=e.instructions??"",l="PASS";if(s.references?.length)for(let i of s.references)m(i,t)||(l="FAILING",r.push(`references: "${i}" does not resolve in the registry`));if(s.delegatesTo?.length)for(let i of s.delegatesTo)n.has(i)||(l="FAILING",r.push(`delegatesTo: "${i}" has no installed SKILL.md`));k(f)&&(l!=="FAILING"&&(l="REVIEW"),r.push("body contains raw `python3 ~/scripts/...` inside a code block \u2014 delegate to the relevant skill instead"));let d=["deploy","ssh","email","gitlab","ops"],p=(s.category||"").toLowerCase(),I=(s.tags||[]).map(i=>i.toLowerCase());(d.includes(p)||I.some(i=>d.includes(i))||/\b(deploy|ssh|gitlab|hotmail|server|host)\b/i.test(s.description||""))&&(!s.references||s.references.length===0)&&(l==="PASS"&&(l="REVIEW"),r.push("infrastructure-flavored skill has no `references:` frontmatter \u2014 facts should be cited from the registry"));let c=f.match(/\b\d{1,3}(?:\.\d{1,3}){3}\b/g);if(c&&c.length>0){let i=new Set([...t.byId.values()].flatMap(a=>Object.values(a.fields).filter(g=>typeof g=="string"))),u=c.filter(a=>!i.has(a));u.length>0&&(l==="PASS"&&(l="REVIEW"),r.push(`body contains raw IP(s) not in the registry: ${[...new Set(u)].slice(0,3).join(", ")}`))}return{skill:e,name:s.name,verdict:l,reasons:r}}function S(e,t){let o=new Set;for(let r of e.recipes)for(let s of r.skills)o.add(s);let n=[];for(let r of o)t.has(r)||n.push({skill:null,name:r,verdict:"FAILING",reasons:["required by a recipe, but no SKILL.md is installed"]});return n}function A(e){let t=new Set(e.skills.map(n=>n.frontmatter.name));return[...e.skills.map(n=>h(n,e.references,e.recipes,t)),...S(e.recipes,t)]}function k(e){let t=!1;for(let o of e.split(`
2
+ `)){if(/^\s*```/.test(o)){t=!t;continue}if(t&&/python3\s+~\/scripts\//.test(o))return!0}return!1}function m(e,t){if(e.endsWith(".*")){let o=e.slice(0,-2);for(let n of t.byId.keys())if(n===o||n.startsWith(`${o}.`))return!0;return!1}return t.byId.has(e)}export{A as auditAll,S as auditMissingSkills,h as auditSkill};
3
+ //# sourceMappingURL=audit-Z47AQFFD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/agent/skills/audit.ts"],"sourcesContent":["import type { Skill } from \"./types\"\nimport type { ReferenceIndex } from \"@/agents/references/types\"\nimport type { RecipeIndex } from \"@/agents/references/recipes\"\n\n// --- Skill audit lint ---\n//\n// Verdicts:\n// PASS — skill is deterministic and consistent with the references registry\n// REVIEW — skill works but embeds raw infra facts that should live in references,\n// or carries known-bad anti-patterns (e.g. raw `python3 ~/scripts/...`)\n// FAILING — skill cites references that don't resolve, OR a recipe requires this\n// skill but its SKILL.md is missing, OR delegatesTo points at a\n// non-existent skill\n\nexport type SkillAuditVerdict = \"PASS\" | \"REVIEW\" | \"FAILING\"\n\nexport interface SkillAuditResult {\n skill: Skill | null\n /** Either skill.frontmatter.name or — when missing — the requiredName. */\n name: string\n verdict: SkillAuditVerdict\n reasons: string[]\n}\n\nexport interface AuditInput {\n skills: Skill[]\n references: ReferenceIndex\n recipes: RecipeIndex\n}\n\n/**\n * Audit a single skill against the reference + recipe indices.\n * Pure function — easy to test, no I/O.\n */\nexport function auditSkill(\n skill: Skill,\n references: ReferenceIndex,\n recipes: RecipeIndex,\n knownSkillNames: Set<string>,\n): SkillAuditResult {\n const reasons: string[] = []\n const fm = skill.frontmatter\n const body = skill.instructions ?? \"\"\n let verdict: SkillAuditVerdict = \"PASS\"\n\n // --- FAILING: unresolved references ---\n if (fm.references?.length) {\n for (const ref of fm.references) {\n if (!referenceResolves(ref, references)) {\n verdict = \"FAILING\"\n reasons.push(`references: \"${ref}\" does not resolve in the registry`)\n }\n }\n }\n\n // --- FAILING: delegatesTo points at a missing skill ---\n if (fm.delegatesTo?.length) {\n for (const delegate of fm.delegatesTo) {\n if (!knownSkillNames.has(delegate)) {\n verdict = \"FAILING\"\n reasons.push(`delegatesTo: \"${delegate}\" has no installed SKILL.md`)\n }\n }\n }\n\n // --- REVIEW: hardcoded raw script invocations inside fenced code blocks ---\n // Flagging only fenced code blocks avoids false positives from prose like\n // \"Do not invoke `python3 ~/scripts/...`\" — the skill is *recommending*\n // the script when it puts it inside ```...``` (or indented as a runnable\n // command), not when it explicitly forbids it.\n if (containsRawScriptInCodeFence(body)) {\n if (verdict !== \"FAILING\") verdict = \"REVIEW\"\n reasons.push(\"body contains raw `python3 ~/scripts/...` inside a code block — delegate to the relevant skill instead\")\n }\n\n // --- REVIEW: deploy/ssh/email/gitlab skills with no references frontmatter ---\n const infraCategory = [\"deploy\", \"ssh\", \"email\", \"gitlab\", \"ops\"]\n const cat = (fm.category || \"\").toLowerCase()\n const tags = (fm.tags || []).map(t => t.toLowerCase())\n const looksInfra =\n infraCategory.includes(cat) ||\n tags.some(t => infraCategory.includes(t)) ||\n /\\b(deploy|ssh|gitlab|hotmail|server|host)\\b/i.test(fm.description || \"\")\n if (looksInfra && (!fm.references || fm.references.length === 0)) {\n if (verdict === \"PASS\") verdict = \"REVIEW\"\n reasons.push(\n \"infrastructure-flavored skill has no `references:` frontmatter — facts should be cited from the registry\",\n )\n }\n\n // --- REVIEW: raw IP/email patterns embedded that look like deterministic facts ---\n const ipMatches = body.match(/\\b\\d{1,3}(?:\\.\\d{1,3}){3}\\b/g)\n if (ipMatches && ipMatches.length > 0) {\n const known = new Set(\n [...references.byId.values()].flatMap(c =>\n Object.values(c.fields).filter(v => typeof v === \"string\"),\n ),\n )\n const stranded = ipMatches.filter(ip => !known.has(ip))\n if (stranded.length > 0) {\n if (verdict === \"PASS\") verdict = \"REVIEW\"\n reasons.push(\n `body contains raw IP(s) not in the registry: ${[...new Set(stranded)].slice(0, 3).join(\", \")}`,\n )\n }\n }\n\n return { skill, name: fm.name, verdict, reasons }\n}\n\n/**\n * Audit every recipe-required skill: if a recipe lists a skill name that has\n * no SKILL.md, report it as a FAILING phantom-skill row. The non-existent\n * skill is reported under its required name with skill=null.\n */\nexport function auditMissingSkills(\n recipes: RecipeIndex,\n knownSkillNames: Set<string>,\n): SkillAuditResult[] {\n const required = new Set<string>()\n for (const recipe of recipes.recipes) {\n for (const s of recipe.skills) required.add(s)\n }\n const results: SkillAuditResult[] = []\n for (const name of required) {\n if (!knownSkillNames.has(name)) {\n results.push({\n skill: null,\n name,\n verdict: \"FAILING\",\n reasons: [`required by a recipe, but no SKILL.md is installed`],\n })\n }\n }\n return results\n}\n\n/**\n * Convenience: audit every skill in `input.skills`, plus phantom-skill rows.\n */\nexport function auditAll(input: AuditInput): SkillAuditResult[] {\n const knownNames = new Set(input.skills.map(s => s.frontmatter.name))\n const results = input.skills.map(s =>\n auditSkill(s, input.references, input.recipes, knownNames),\n )\n return [...results, ...auditMissingSkills(input.recipes, knownNames)]\n}\n\nfunction containsRawScriptInCodeFence(body: string): boolean {\n let inFence = false\n for (const line of body.split(\"\\n\")) {\n if (/^\\s*```/.test(line)) {\n inFence = !inFence\n continue\n }\n if (inFence && /python3\\s+~\\/scripts\\//.test(line)) return true\n }\n return false\n}\n\nfunction referenceResolves(ref: string, idx: ReferenceIndex): boolean {\n if (ref.endsWith(\".*\")) {\n const prefix = ref.slice(0, -2)\n for (const id of idx.byId.keys()) {\n if (id === prefix || id.startsWith(`${prefix}.`)) return true\n }\n return false\n }\n return idx.byId.has(ref)\n}\n"],"mappings":"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","names":["auditSkill","skill","references","recipes","knownSkillNames","reasons","fm","body","verdict","ref","referenceResolves","delegate","containsRawScriptInCodeFence","infraCategory","cat","tags","t","ipMatches","known","c","v","stranded","ip","auditMissingSkills","required","recipe","results","name","auditAll","input","knownNames","s","inFence","line","idx","prefix","id"]}