From f70ace8514ce10ba6a7a1eed76ec401d1c4677e4 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 27 Jun 2026 20:11:41 +0000 Subject: [PATCH] Add Boardroom multi-agent committee to AgriAgent tab MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds a dual-mode AGENT / BOARDROOM toggle to the AgriAgent tab: AGENT mode (unchanged): single AgriAgent chat with full tool loop, farm memory, and agentic reasoning. BOARDROOM mode: four named committee members hold a structured meeting over the farm's live data context. Committee roster: πŸ’Ή Kount Kuekkens β€” CFO / Financials (spiraling economist, Dairy Moneyball math) 🌾 Rolf Forage β€” Agronomist / Crops (opinionated, field-first) πŸ„ Dr. Vera Hest β€” Chief Veterinarian / Herd Health (precise, biological thresholds) πŸ“‹ Marla Shift β€” Operations Manager / Personnel (reality-check, labor constraints) Each agent makes an independent streaming API call with a persona-specific system prompt. Agents run sequentially so later speakers receive a full transcript of what earlier colleagues said, enabling authentic cross-domain commentary (e.g. Vera referencing Rolf's harvest quality point). After the initial round, a target bar appears for cross-examination: the chair can direct follow-ups to All, or to a specific advisor by name. Five boardroom-specific suggested topics replace the standard agent prompts in this mode (weekly audit, data integrity, heat stress, risk per dept, biggest cross-dept contention). Co-Authored-By: Claude Sonnet 4.6 Claude-Session: https://claude.ai/code/session_01KBD2dN2KEjzz3UQFa9hEpu --- agrifine-extension/dist/sidebar.js | 578 ++++++++++++++++-- agrifine-extension/screenshots/agent_mode.png | Bin 0 -> 50877 bytes .../screenshots/boardroom_mode.png | Bin 0 -> 57574 bytes agrifine-extension/src/ag-refine/committee.js | 153 +++++ agrifine-extension/src/ag-refine/index.js | 497 +++++++++++---- 5 files changed, 1052 insertions(+), 176 deletions(-) create mode 100644 agrifine-extension/screenshots/agent_mode.png create mode 100644 agrifine-extension/screenshots/boardroom_mode.png create mode 100644 agrifine-extension/src/ag-refine/committee.js diff --git a/agrifine-extension/dist/sidebar.js b/agrifine-extension/dist/sidebar.js index 9937731..c17c74d 100644 --- a/agrifine-extension/dist/sidebar.js +++ b/agrifine-extension/dist/sidebar.js @@ -293,6 +293,215 @@ var AgrifineAgent = /*#__PURE__*/function () { /***/ }, +/***/ "./src/ag-refine/committee.js" +/*!************************************!*\ + !*** ./src/ag-refine/committee.js ***! + \************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ COMMITTEE: () => (/* binding */ COMMITTEE), +/* harmony export */ runCommitteeAgent: () => (/* binding */ runCommitteeAgent) +/* harmony export */ }); +/* harmony import */ var _utils_storage_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/storage.js */ "./src/utils/storage.js"); +function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); } +function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); } +function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; } +function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } +function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } +function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); } +function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; } +/** + * The Boardroom β€” Multi-Agent Audit Committee + * + * Four named advisors, each with a domain-specific persona, review the same + * farm data context and report in sequence. Later agents receive a summary of + * what earlier agents said, enabling authentic cross-domain commentary. + */ + +var MODEL = 'claude-sonnet-4-6'; +var ANTHROPIC_URL = 'https://api.anthropic.com/v1/messages'; +var COMMITTEE = [{ + id: 'financials', + name: 'Kount Kuekkens', + role: 'CFO Β· Financials', + emoji: 'πŸ’Ή', + accentColor: '#d97706', + borderStyle: 'border-l-[3px]', + borderColor: '#d97706', + persona: "You are Kount Kuekkens, a retired agricultural economist now serving as CFO for this farm operation. You speak with a spiraling rhetorical style \u2014 you begin broad, drift into economic theory or historical context, but always land on concrete \"Dairy Moneyball\" math that actually matters.\n\nYour domain: Income Over Feed Cost (IOFC), commodity price impacts on margins, feed efficiency ratios, processor quality premium/penalty thresholds, cash flow position, budget variances, and the financial consequences of operational data errors.\n\nWhen you spot data problems, quantify the financial blindspot they create. When you see opportunities, express them in dollar terms. You are candid about when you are \"spiraling\" into uncertainty vs. when you have hard numbers. You occasionally reference obscure economic principles before getting to the point.\n\nReport in 3\u20134 paragraphs. Be specific \u2014 name dollar figures, percentages, and cite the data points you are drawing from." +}, { + id: 'crops', + name: 'Rolf Forage', + role: 'Agronomist Β· Crops', + emoji: '🌾', + accentColor: '#16a34a', + borderColor: '#16a34a', + persona: "You are Rolf Forage (pronounced \"For-ahh-juz\"), a fiercely opinionated agronomist and crops director. You do not care about spreadsheets or financial models \u2014 you care about what is actually in the field and the bunker right now.\n\nYour domain: forage quality (dry matter, NDF, fiber digestibility), silage inventory and fermentation integrity, harvest timing windows, field conditions (soil type, drainage, compaction), cover crop programs, nutrient cycling, and input scheduling.\n\nYou are demanding and direct. If the data shows a crop problem that will compromise feed quality, you say so loudly and insist it be corrected immediately \u2014 you do not sugarcoat risk to protect someone's budget. You will call out the financial team for cutting corners that ultimately cost more in lost production. You speak in practical, field-level language.\n\nReport in 3\u20134 paragraphs. Be opinionated and specific about what needs to happen and when." +}, { + id: 'herd', + name: 'Dr. Vera Hest', + role: 'Chief Veterinarian Β· Herd Health', + emoji: 'πŸ„', + accentColor: '#60a5fa', + borderColor: '#60a5fa', + persona: "You are Dr. Vera Hest, a sharp-witted, data-driven veterinarian and herd health director. You value biological metrics and animal welfare above all else \u2014 and you will challenge any department that proposes to compromise herd health in the name of cost savings or operational convenience.\n\nYour domain: Somatic Cell Count (SCC) trends and penalty risk, Dry Matter Intake (DMI) per cow, Body Condition Score (BCS), transition cow health, Temperature-Humidity Index (THI) and heat stress protocol, milk component trends (fat, protein), reproductive performance, and disease incidence (ketosis, mastitis, lameness, displaced abomasum).\n\nYou connect biological metrics to production outcomes \u2014 a BCS over 3.75 at calving means dystocia and ketosis next month; a THI of 86 means DMI drops 10\u201315% and milk yield follows within 48 hours. You are precise with thresholds, not vague. You speak clinically but translate findings for the group when needed.\n\nReport in 3\u20134 paragraphs. Be incisive. Cite specific thresholds and explain their downstream consequences." +}, { + id: 'personnel', + name: 'Marla Shift', + role: 'Operations Manager Β· Personnel', + emoji: 'πŸ“‹', + accentColor: '#94a3b8', + borderColor: '#94a3b8', + persona: "You are Marla Shift, the operations-hardened manager who oversees labor, personnel scheduling, equipment maintenance, and day-to-day execution. You are the \"reality check\" of the boardroom.\n\nYour domain: labor availability and shift coverage, overtime costs and crew fatigue, equipment uptime and maintenance backlogs, safety compliance, training gaps, and operational root causes of data errors or production misses.\n\nWhen the other advisors make demands \u2014 Rolf needs an early harvest crew, Vera wants manual pen checks every two hours, Kount wants a new validation system built by Friday \u2014 you translate those demands into actual execution requirements: how many people, how many hours, what it costs, and what else will be delayed or skipped to make it happen.\n\nYou provide honest operational explanations (not excuses) for why things went wrong: mechanical failures, staffing gaps during peak periods, training slips under pressure. You are pragmatic, occasionally exasperated, and very good at finding workarounds under real-world constraints.\n\nReport in 3\u20134 paragraphs. Be concrete about labor, time, and resource constraints." +}]; + +/** + * Run a single committee agent and stream their response. + * priorStatements: array of { name, role, text } from agents who already spoke. + * onChunk: called with partial text as it streams in. + */ +function runCommitteeAgent(_x, _x2, _x3, _x4) { + return _runCommitteeAgent.apply(this, arguments); +} +function _runCommitteeAgent() { + _runCommitteeAgent = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(agent, topic, priorStatements, onChunk) { + var apiKey, contextBundle, priorContext, systemPrompt, res, text, reader, decoder, fullText, buffer, _lines$pop, _yield$reader$read, done, value, lines, _iterator, _step, line, payload, _evt$delta, evt, _t; + return _regenerator().w(function (_context) { + while (1) switch (_context.p = _context.n) { + case 0: + _context.n = 1; + return (0,_utils_storage_js__WEBPACK_IMPORTED_MODULE_0__.sessionGet)(_utils_storage_js__WEBPACK_IMPORTED_MODULE_0__.KEYS.API_KEY); + case 1: + apiKey = _context.v; + if (apiKey) { + _context.n = 2; + break; + } + throw new Error('No API key set β€” open βš™ Settings to add your Anthropic key.'); + case 2: + _context.n = 3; + return (0,_utils_storage_js__WEBPACK_IMPORTED_MODULE_0__.buildContextBundle)(); + case 3: + contextBundle = _context.v; + priorContext = priorStatements.length > 0 ? "\n\n\u2500\u2500 PRIOR STATEMENTS FROM YOUR COLLEAGUES \u2500\u2500\n".concat(priorStatements.map(function (s) { + return "".concat(s.name, " (").concat(s.role, "):\n").concat(s.text); + }).join('\n\n─────────────────────\n\n')) : ''; + systemPrompt = "".concat(agent.persona, "\n\n\u2500\u2500 FARM DATA CONTEXT \u2500\u2500\n").concat(contextBundle).concat(priorContext, "\n\nYou are presenting your department report at the weekly audit boardroom. Address the meeting topic directly from your domain's perspective. If colleagues have already spoken, you may reference or push back on their points where they intersect with your domain."); + _context.n = 4; + return fetch(ANTHROPIC_URL, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'x-api-key': apiKey, + 'anthropic-version': '2023-06-01', + 'anthropic-dangerous-direct-browser-access': 'true' + }, + body: JSON.stringify({ + model: MODEL, + max_tokens: 1024, + stream: true, + system: systemPrompt, + messages: [{ + role: 'user', + content: topic + }] + }) + }); + case 4: + res = _context.v; + if (res.ok) { + _context.n = 6; + break; + } + _context.n = 5; + return res.text(); + case 5: + text = _context.v; + throw new Error("API ".concat(res.status, ": ").concat(text)); + case 6: + // Stream SSE response + reader = res.body.getReader(); + decoder = new TextDecoder(); + fullText = ''; + buffer = ''; + case 7: + if (false) // removed by dead control flow +{} + _context.n = 8; + return reader.read(); + case 8: + _yield$reader$read = _context.v; + done = _yield$reader$read.done; + value = _yield$reader$read.value; + if (!done) { + _context.n = 9; + break; + } + return _context.a(3, 19); + case 9: + buffer += decoder.decode(value, { + stream: true + }); + lines = buffer.split('\n'); + buffer = (_lines$pop = lines.pop()) !== null && _lines$pop !== void 0 ? _lines$pop : ''; + _iterator = _createForOfIteratorHelper(lines); + _context.p = 10; + _iterator.s(); + case 11: + if ((_step = _iterator.n()).done) { + _context.n = 15; + break; + } + line = _step.value; + if (line.startsWith('data: ')) { + _context.n = 12; + break; + } + return _context.a(3, 14); + case 12: + payload = line.slice(6).trim(); + if (!(payload === '[DONE]')) { + _context.n = 13; + break; + } + return _context.a(3, 14); + case 13: + try { + evt = JSON.parse(payload); + if (evt.type === 'content_block_delta' && ((_evt$delta = evt.delta) === null || _evt$delta === void 0 ? void 0 : _evt$delta.type) === 'text_delta') { + fullText += evt.delta.text; + onChunk(evt.delta.text, fullText); + } + } catch (_) {} + case 14: + _context.n = 11; + break; + case 15: + _context.n = 17; + break; + case 16: + _context.p = 16; + _t = _context.v; + _iterator.e(_t); + case 17: + _context.p = 17; + _iterator.f(); + return _context.f(17); + case 18: + _context.n = 7; + break; + case 19: + return _context.a(2, fullText); + } + }, _callee, null, [[10, 16, 17, 18]]); + })); + return _runCommitteeAgent.apply(this, arguments); +} + +/***/ }, + /***/ "./src/ag-refine/index.js" /*!********************************!*\ !*** ./src/ag-refine/index.js ***! @@ -304,11 +513,18 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ AgRefineModule: () => (/* binding */ AgRefineModule) /* harmony export */ }); /* harmony import */ var _agent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./agent.js */ "./src/ag-refine/agent.js"); +/* harmony import */ var _committee_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./committee.js */ "./src/ag-refine/committee.js"); +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +function _regeneratorValues(e) { if (null != e) { var t = e["function" == typeof Symbol && Symbol.iterator || "@@iterator"], r = 0; if (t) return t.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) return { next: function next() { return e && r >= e.length && (e = void 0), { value: e && e[r++], done: !e }; } }; } throw new TypeError(_typeof(e) + " is not iterable"); } +function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; } +function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } +function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); } function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); } function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); } function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; } + var TOOL_ICONS = { get_reading_list: 'πŸ“–', get_field_profiles: '🌱', @@ -324,10 +540,20 @@ var TOOL_ICONS = { get_farm_memory: '🧠', update_farm_memory: 'πŸ’Ύ' }; -var SUGGESTED_PROMPTS = ['Review all my farm data and build a farm memory summary', 'What are my current field conditions and harvest windows?', 'What risks or opportunities do you see across my operation?', 'Screenshot this page and tell me what agricultural data you see', 'Export my reading list and field profiles to CSV']; +var AGENT_PROMPTS = ['Review all my farm data and build a farm memory summary', 'What are my current field conditions and harvest windows?', 'What risks or opportunities do you see across my operation?', 'Screenshot this page and tell me what agricultural data you see', 'Export my reading list and field profiles to CSV']; +var BOARDROOM_PROMPTS = ['Weekly operations audit β€” all departments, give me your status', 'We have a data integrity issue β€” assess the impact by department', 'Heat stress event incoming β€” what does each department need?', 'Review all farm data and identify the single biggest risk per department', 'What is the biggest point of contention between departments right now?']; function AgRefineModule() { - var messages = []; - var isRunning = false; + var mode = 'agent'; // 'agent' | 'boardroom' + + // Agent mode state + var agentMessages = []; + var agentRunning = false; + + // Boardroom mode state + var boardMessages = []; // { type: 'topic'|'report'|'chair'|'thinking', ... } + var boardRunning = false; + var boardTargetAgent = null; // null = all, or agent id for targeted response + return { id: 'ag-refine', label: 'AgriAgent', @@ -337,46 +563,116 @@ function AgRefineModule() { return _regenerator().w(function (_context) { while (1) switch (_context.n) { case 0: - container.innerHTML = "\n
\n\n \n
\n
\n \uD83E\uDD16\n

AgriAgent

\n AI Agent\n
\n

Multi-step reasoning over all your farm data

\n
\n\n \n
\n\n \n
\n

Try asking\u2026

\n
\n ".concat(SUGGESTED_PROMPTS.map(function (p) { - return "\n "); - }).join(''), "\n
\n
\n\n \n
\n
\n \n \n
\n \n
\n
\n "); + container.innerHTML = _this._html(); _this._bindEvents(container); - _this._renderMessages(container); + _this._switchMode(mode, container); case 1: return _context.a(2); } }, _callee); }))(); }, + _html: function _html() { + return "\n
\n\n \n
\n \n \n
\n\n \n
\n\n
\n
\n \uD83E\uDD16\n

AgriAgent

\n AI Agent\n
\n

Multi-step reasoning over all your farm data

\n
\n\n
\n\n
\n

Try asking\u2026

\n
\n ".concat(AGENT_PROMPTS.map(function (p) { + return "\n "); + }).join(''), "\n
\n
\n\n
\n
\n \n \n
\n \n
\n
\n\n \n
\n\n \n
\n
\n \uD83C\uDFDB\uFE0F\n

The Boardroom

\n
\n
\n ").concat(_committee_js__WEBPACK_IMPORTED_MODULE_1__.COMMITTEE.map(function (a) { + return "\n
\n ").concat(a.emoji, "\n ").concat(a.name, "\n
\n "); + }).join(''), "\n
\n
\n\n \n
\n\n \n
\n

Call the meeting to order\u2026

\n
\n ").concat(BOARDROOM_PROMPTS.map(function (p) { + return "\n "); + }).join(''), "\n
\n
\n\n \n
\n \n
\n Address:\n \n ").concat(_committee_js__WEBPACK_IMPORTED_MODULE_1__.COMMITTEE.map(function (a) { + return "\n \n "); + }).join(''), "\n
\n\n
\n \n \n
\n \n
\n
\n\n
\n "); + }, + _switchMode: function _switchMode(newMode, container) { + mode = newMode; + container.querySelector('#panel-agent').classList.toggle('hidden', mode !== 'agent'); + container.querySelector('#panel-boardroom').classList.toggle('hidden', mode !== 'boardroom'); + container.querySelectorAll('.mode-btn').forEach(function (btn) { + var active = btn.dataset.mode === mode; + btn.style.color = active ? '#22c55e' : '#3d4f66'; + btn.style.borderBottom = active ? '2px solid #22c55e' : '2px solid transparent'; + }); + }, _bindEvents: function _bindEvents(container) { var _this2 = this; - var input = container.querySelector('#agent-input'); - var sendBtn = container.querySelector('#agent-send'); - var send = function send() { - var text = input.value.trim(); - if (!text || isRunning) return; - input.value = ''; + // Mode toggle + container.querySelectorAll('.mode-btn').forEach(function (btn) { + btn.addEventListener('click', function () { + return _this2._switchMode(btn.dataset.mode, container); + }); + }); + + // ── Agent mode ── + var agentInput = container.querySelector('#agent-input'); + var agentSend = container.querySelector('#agent-send'); + var sendAgent = function sendAgent() { + var text = agentInput.value.trim(); + if (!text || agentRunning) return; + agentInput.value = ''; _this2._runAgent(text, container); }; - sendBtn.addEventListener('click', send); - input.addEventListener('keydown', function (e) { + agentSend.addEventListener('click', sendAgent); + agentInput.addEventListener('keydown', function (e) { if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); - send(); + sendAgent(); } }); - container.querySelectorAll('.suggest-btn').forEach(function (btn) { + container.querySelectorAll('.agent-suggest-btn').forEach(function (btn) { btn.addEventListener('click', function () { - input.value = btn.textContent.trim(); - send(); + agentInput.value = btn.textContent.trim(); + sendAgent(); }); }); container.querySelector('#agent-clear').addEventListener('click', function () { - messages = []; - isRunning = false; - _this2._renderMessages(container); + agentMessages = []; + agentRunning = false; + _this2._renderAgentMessages(container); + }); + + // ── Boardroom mode ── + var boardInput = container.querySelector('#board-input'); + var boardSend = container.querySelector('#board-send'); + var sendBoard = function sendBoard() { + var text = boardInput.value.trim(); + if (!text || boardRunning) return; + boardInput.value = ''; + _this2._runBoardroom(text, container); + }; + boardSend.addEventListener('click', sendBoard); + boardInput.addEventListener('keydown', function (e) { + if (e.key === 'Enter' && !e.shiftKey) { + e.preventDefault(); + sendBoard(); + } + }); + container.querySelectorAll('.board-suggest-btn').forEach(function (btn) { + btn.addEventListener('click', function () { + boardInput.value = btn.textContent.trim(); + sendBoard(); + }); + }); + container.querySelector('#board-clear').addEventListener('click', function () { + boardMessages = []; + boardRunning = false; + boardTargetAgent = null; + container.querySelector('#board-target-bar').classList.add('hidden'); + _this2._renderBoardMessages(container); + }); + + // Target agent selector + container.querySelectorAll('.target-btn').forEach(function (btn) { + btn.addEventListener('click', function () { + boardTargetAgent = btn.dataset.target === 'all' ? null : btn.dataset.target; + container.querySelectorAll('.target-btn').forEach(function (b) { + b.classList.toggle('active-target', b.dataset.target === (boardTargetAgent !== null && boardTargetAgent !== void 0 ? boardTargetAgent : 'all')); + b.style.borderColor = b.classList.contains('active-target') ? '#22c55e' : ''; + if (!b.classList.contains('active-target')) b.style.borderColor = '#253047'; + }); + }); }); }, + // ── Agent mode logic ────────────────────────────────────────────────────── _runAgent: function _runAgent(userText, container) { var _this3 = this; return _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() { @@ -385,33 +681,27 @@ function AgRefineModule() { return _regenerator().w(function (_context2) { while (1) switch (_context2.p = _context2.n) { case 0: - if (!isRunning) { + if (!agentRunning) { _context2.n = 1; break; } return _context2.a(2); case 1: - isRunning = true; - - // Hide suggestions + agentRunning = true; (_container$querySelec = container.querySelector('#agent-suggestions')) === null || _container$querySelec === void 0 || _container$querySelec.classList.add('hidden'); - - // Add user message - messages.push({ + agentMessages.push({ role: 'user', text: userText }); - _this3._renderMessages(container); - - // Thinking placeholder + _this3._renderAgentMessages(container); thinkingId = "thinking_".concat(Date.now()); - messages.push({ + agentMessages.push({ role: 'thinking', id: thinkingId, steps: [] }); - _this3._renderMessages(container); - thinkingMsg = messages[messages.length - 1]; + _this3._renderAgentMessages(container); + thinkingMsg = agentMessages[agentMessages.length - 1]; agent = new _agent_js__WEBPACK_IMPORTED_MODULE_0__.AgrifineAgent({ onEvent: function onEvent(_ref) { var type = _ref.type, @@ -433,28 +723,27 @@ function AgRefineModule() { var last = thinkingMsg.steps[thinkingMsg.steps.length - 1]; if ((last === null || last === void 0 ? void 0 : last.type) === 'tool') last.done = true; } else if (type === 'answer') { - // Replace thinking bubble with final answer - var idx = messages.findIndex(function (m) { + var idx = agentMessages.findIndex(function (m) { return m.id === thinkingId; }); - if (idx >= 0) messages.splice(idx, 1); - messages.push({ + if (idx >= 0) agentMessages.splice(idx, 1); + agentMessages.push({ role: 'assistant', text: data }); - isRunning = false; + agentRunning = false; } else if (type === 'error') { - var _idx = messages.findIndex(function (m) { + var _idx = agentMessages.findIndex(function (m) { return m.id === thinkingId; }); - if (_idx >= 0) messages.splice(_idx, 1); - messages.push({ + if (_idx >= 0) agentMessages.splice(_idx, 1); + agentMessages.push({ role: 'error', text: data }); - isRunning = false; + agentRunning = false; } - _this3._renderMessages(container); + _this3._renderAgentMessages(container); } }); _context2.p = 2; @@ -466,58 +755,225 @@ function AgRefineModule() { case 4: _context2.p = 4; _t = _context2.v; - idx = messages.findIndex(function (m) { + idx = agentMessages.findIndex(function (m) { return m.id === thinkingId; }); - if (idx >= 0) messages.splice(idx, 1); - messages.push({ + if (idx >= 0) agentMessages.splice(idx, 1); + agentMessages.push({ role: 'error', text: _t.message }); - isRunning = false; - _this3._renderMessages(container); + agentRunning = false; + _this3._renderAgentMessages(container); case 5: return _context2.a(2); } }, _callee2, null, [[2, 4]]); }))(); }, - _renderMessages: function _renderMessages(container) { + _renderAgentMessages: function _renderAgentMessages(container) { var chat = container.querySelector('#agent-chat'); if (!chat) return; - if (messages.length === 0) { + if (agentMessages.length === 0) { var _container$querySelec2; chat.innerHTML = ''; (_container$querySelec2 = container.querySelector('#agent-suggestions')) === null || _container$querySelec2 === void 0 || _container$querySelec2.classList.remove('hidden'); return; } - chat.innerHTML = messages.map(function (msg) { + chat.innerHTML = agentMessages.map(function (msg) { if (msg.role === 'user') { - return "\n
\n
\n ".concat(escapeHtml(msg.text), "\n
\n
"); + return "
\n
\n ".concat(escapeHtml(msg.text), "\n
\n
"); } if (msg.role === 'thinking') { var _msg$steps; var steps = (_msg$steps = msg.steps) !== null && _msg$steps !== void 0 ? _msg$steps : []; - return "\n
\n ".concat(steps.map(function (step) { + return "
\n ".concat(steps.map(function (step) { if (step.type === 'status') { - return "
\n ".concat(escapeHtml(step.text), "\n
"); + return "
\n ".concat(escapeHtml(step.text), "\n
"); } if (step.type === 'tool') { - return "
\n ".concat(step.icon, "\n ").concat(step.name, "\n ").concat(step.done ? 'βœ“' : '', "\n
"); + return "
\n ".concat(step.icon, "\n ").concat(step.name, "\n ").concat(step.done ? 'βœ“' : '', "\n
"); } return ''; - }).join(''), "\n ").concat(steps.length === 0 ? '
Starting…
' : '', "\n
"); + }).join(''), "\n ").concat(steps.length === 0 ? '
Starting…
' : '', "\n
"); } if (msg.role === 'assistant') { - return "\n
\n
\uD83E\uDD16
\n
\n ".concat(escapeHtml(msg.text), "\n
\n
"); + return "
\n
\uD83E\uDD16
\n
".concat(escapeHtml(msg.text), "
\n
"); } if (msg.role === 'error') { - return "\n
\n \u26A0\uFE0F ".concat(escapeHtml(msg.text), "\n
"); + return "
\u26A0\uFE0F ".concat(escapeHtml(msg.text), "
"); } return ''; }).join(''); + chat.scrollTop = chat.scrollHeight; + }, + // ── Boardroom mode logic ────────────────────────────────────────────────── + _runBoardroom: function _runBoardroom(topic, container) { + var _this4 = this; + return _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() { + var _container$querySelec3; + var agentsToRun, priorStatements, _iterator, _step, agent, _iterator2, _step2, _loop, _t3; + return _regenerator().w(function (_context4) { + while (1) switch (_context4.p = _context4.n) { + case 0: + if (!boardRunning) { + _context4.n = 1; + break; + } + return _context4.a(2); + case 1: + boardRunning = true; + (_container$querySelec3 = container.querySelector('#board-suggestions')) === null || _container$querySelec3 === void 0 || _container$querySelec3.classList.add('hidden'); - // Scroll to bottom + // Add chair statement + boardMessages.push({ + type: 'chair', + text: topic + }); + _this4._renderBoardMessages(container); + + // Determine which agents respond + agentsToRun = boardTargetAgent ? _committee_js__WEBPACK_IMPORTED_MODULE_1__.COMMITTEE.filter(function (a) { + return a.id === boardTargetAgent; + }) : _committee_js__WEBPACK_IMPORTED_MODULE_1__.COMMITTEE; // Build context: full prior statements from this meeting for sequential passing + priorStatements = boardMessages.filter(function (m) { + return m.type === 'report' && m.text; + }).map(function (m) { + return { + name: m.agent.name, + role: m.agent.role, + text: m.text + }; + }); // Add thinking placeholders for each agent that will speak + _iterator = _createForOfIteratorHelper(agentsToRun); + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + agent = _step.value; + boardMessages.push({ + type: 'thinking', + agentId: agent.id, + agent: agent + }); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + _this4._renderBoardMessages(container); + + // Run agents sequentially so each gets the prior context + _iterator2 = _createForOfIteratorHelper(agentsToRun); + _context4.p = 2; + _loop = /*#__PURE__*/_regenerator().m(function _loop() { + var agent, msgIdx, reportMsg, _t2; + return _regenerator().w(function (_context3) { + while (1) switch (_context3.p = _context3.n) { + case 0: + agent = _step2.value; + msgIdx = boardMessages.findIndex(function (m) { + return m.type === 'thinking' && m.agentId === agent.id; + }); // Convert thinking β†’ streaming report + reportMsg = { + type: 'report', + agent: agent, + text: '', + streaming: true + }; + if (msgIdx >= 0) boardMessages.splice(msgIdx, 1, reportMsg); + _this4._renderBoardMessages(container); + _context3.p = 1; + _context3.n = 2; + return (0,_committee_js__WEBPACK_IMPORTED_MODULE_1__.runCommitteeAgent)(agent, topic, priorStatements, function (chunk, fullText) { + reportMsg.text = fullText; + _this4._renderBoardMessages(container); + }); + case 2: + reportMsg.streaming = false; + priorStatements.push({ + name: agent.name, + role: agent.role, + text: reportMsg.text + }); + _context3.n = 4; + break; + case 3: + _context3.p = 3; + _t2 = _context3.v; + boardMessages.splice(boardMessages.indexOf(reportMsg), 1, { + type: 'error', + text: "".concat(agent.name, ": ").concat(_t2.message) + }); + case 4: + _this4._renderBoardMessages(container); + case 5: + return _context3.a(2); + } + }, _loop, null, [[1, 3]]); + }); + _iterator2.s(); + case 3: + if ((_step2 = _iterator2.n()).done) { + _context4.n = 5; + break; + } + return _context4.d(_regeneratorValues(_loop()), 4); + case 4: + _context4.n = 3; + break; + case 5: + _context4.n = 7; + break; + case 6: + _context4.p = 6; + _t3 = _context4.v; + _iterator2.e(_t3); + case 7: + _context4.p = 7; + _iterator2.f(); + return _context4.f(7); + case 8: + boardRunning = false; + + // Show target bar after the first meeting round + if (boardMessages.some(function (m) { + return m.type === 'report'; + })) { + container.querySelector('#board-target-bar').classList.remove('hidden'); + } + _this4._renderBoardMessages(container); + case 9: + return _context4.a(2); + } + }, _callee3, null, [[2, 6, 7, 8]]); + }))(); + }, + _renderBoardMessages: function _renderBoardMessages(container) { + var chat = container.querySelector('#board-chat'); + if (!chat) return; + if (boardMessages.length === 0) { + var _container$querySelec4; + chat.innerHTML = ''; + (_container$querySelec4 = container.querySelector('#board-suggestions')) === null || _container$querySelec4 === void 0 || _container$querySelec4.classList.remove('hidden'); + return; + } + chat.innerHTML = boardMessages.map(function (msg) { + if (msg.type === 'chair') { + return "\n
\n
\n
Chair \xB7 David
\n ".concat(escapeHtml(msg.text), "\n
\n
"); + } + if (msg.type === 'thinking') { + var a = msg.agent; + return "\n
\n
\n ").concat(a.emoji, "\n ").concat(a.name, "\n ").concat(a.role, "\n \n
\n
\n Reviewing data\u2026\n
\n
"); + } + if (msg.type === 'report') { + var _a = msg.agent; + return "\n
\n
\n ").concat(_a.emoji, "\n ").concat(_a.name, "\n ").concat(_a.role, "\n ").concat(msg.streaming ? '' : '', "\n
\n
\n ").concat(escapeHtml(msg.text || '…'), "\n
\n
"); + } + if (msg.type === 'error') { + return "
\u26A0\uFE0F ".concat(escapeHtml(msg.text), "
"); + } + return ''; + }).join(''); chat.scrollTop = chat.scrollHeight; } }; diff --git a/agrifine-extension/screenshots/agent_mode.png b/agrifine-extension/screenshots/agent_mode.png new file mode 100644 index 0000000000000000000000000000000000000000..1235abd7cd7497a2c5dfcb37bb1fd75de00359ff GIT binary patch literal 50877 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 literal 0 HcmV?d00001 diff --git a/agrifine-extension/src/ag-refine/committee.js b/agrifine-extension/src/ag-refine/committee.js new file mode 100644 index 0000000..09ecdfc --- /dev/null +++ b/agrifine-extension/src/ag-refine/committee.js @@ -0,0 +1,153 @@ +/** + * The Boardroom β€” Multi-Agent Audit Committee + * + * Four named advisors, each with a domain-specific persona, review the same + * farm data context and report in sequence. Later agents receive a summary of + * what earlier agents said, enabling authentic cross-domain commentary. + */ +import { sessionGet, KEYS, buildContextBundle } from '../utils/storage.js'; + +const MODEL = 'claude-sonnet-4-6'; +const ANTHROPIC_URL = 'https://api.anthropic.com/v1/messages'; + +export const COMMITTEE = [ + { + id: 'financials', + name: 'Kount Kuekkens', + role: 'CFO Β· Financials', + emoji: 'πŸ’Ή', + accentColor: '#d97706', + borderStyle: 'border-l-[3px]', + borderColor: '#d97706', + persona: `You are Kount Kuekkens, a retired agricultural economist now serving as CFO for this farm operation. You speak with a spiraling rhetorical style β€” you begin broad, drift into economic theory or historical context, but always land on concrete "Dairy Moneyball" math that actually matters. + +Your domain: Income Over Feed Cost (IOFC), commodity price impacts on margins, feed efficiency ratios, processor quality premium/penalty thresholds, cash flow position, budget variances, and the financial consequences of operational data errors. + +When you spot data problems, quantify the financial blindspot they create. When you see opportunities, express them in dollar terms. You are candid about when you are "spiraling" into uncertainty vs. when you have hard numbers. You occasionally reference obscure economic principles before getting to the point. + +Report in 3–4 paragraphs. Be specific β€” name dollar figures, percentages, and cite the data points you are drawing from.`, + }, + { + id: 'crops', + name: 'Rolf Forage', + role: 'Agronomist Β· Crops', + emoji: '🌾', + accentColor: '#16a34a', + borderColor: '#16a34a', + persona: `You are Rolf Forage (pronounced "For-ahh-juz"), a fiercely opinionated agronomist and crops director. You do not care about spreadsheets or financial models β€” you care about what is actually in the field and the bunker right now. + +Your domain: forage quality (dry matter, NDF, fiber digestibility), silage inventory and fermentation integrity, harvest timing windows, field conditions (soil type, drainage, compaction), cover crop programs, nutrient cycling, and input scheduling. + +You are demanding and direct. If the data shows a crop problem that will compromise feed quality, you say so loudly and insist it be corrected immediately β€” you do not sugarcoat risk to protect someone's budget. You will call out the financial team for cutting corners that ultimately cost more in lost production. You speak in practical, field-level language. + +Report in 3–4 paragraphs. Be opinionated and specific about what needs to happen and when.`, + }, + { + id: 'herd', + name: 'Dr. Vera Hest', + role: 'Chief Veterinarian Β· Herd Health', + emoji: 'πŸ„', + accentColor: '#60a5fa', + borderColor: '#60a5fa', + persona: `You are Dr. Vera Hest, a sharp-witted, data-driven veterinarian and herd health director. You value biological metrics and animal welfare above all else β€” and you will challenge any department that proposes to compromise herd health in the name of cost savings or operational convenience. + +Your domain: Somatic Cell Count (SCC) trends and penalty risk, Dry Matter Intake (DMI) per cow, Body Condition Score (BCS), transition cow health, Temperature-Humidity Index (THI) and heat stress protocol, milk component trends (fat, protein), reproductive performance, and disease incidence (ketosis, mastitis, lameness, displaced abomasum). + +You connect biological metrics to production outcomes β€” a BCS over 3.75 at calving means dystocia and ketosis next month; a THI of 86 means DMI drops 10–15% and milk yield follows within 48 hours. You are precise with thresholds, not vague. You speak clinically but translate findings for the group when needed. + +Report in 3–4 paragraphs. Be incisive. Cite specific thresholds and explain their downstream consequences.`, + }, + { + id: 'personnel', + name: 'Marla Shift', + role: 'Operations Manager Β· Personnel', + emoji: 'πŸ“‹', + accentColor: '#94a3b8', + borderColor: '#94a3b8', + persona: `You are Marla Shift, the operations-hardened manager who oversees labor, personnel scheduling, equipment maintenance, and day-to-day execution. You are the "reality check" of the boardroom. + +Your domain: labor availability and shift coverage, overtime costs and crew fatigue, equipment uptime and maintenance backlogs, safety compliance, training gaps, and operational root causes of data errors or production misses. + +When the other advisors make demands β€” Rolf needs an early harvest crew, Vera wants manual pen checks every two hours, Kount wants a new validation system built by Friday β€” you translate those demands into actual execution requirements: how many people, how many hours, what it costs, and what else will be delayed or skipped to make it happen. + +You provide honest operational explanations (not excuses) for why things went wrong: mechanical failures, staffing gaps during peak periods, training slips under pressure. You are pragmatic, occasionally exasperated, and very good at finding workarounds under real-world constraints. + +Report in 3–4 paragraphs. Be concrete about labor, time, and resource constraints.`, + }, +]; + +/** + * Run a single committee agent and stream their response. + * priorStatements: array of { name, role, text } from agents who already spoke. + * onChunk: called with partial text as it streams in. + */ +export async function runCommitteeAgent(agent, topic, priorStatements, onChunk) { + const apiKey = await sessionGet(KEYS.API_KEY); + if (!apiKey) throw new Error('No API key set β€” open βš™ Settings to add your Anthropic key.'); + + const contextBundle = await buildContextBundle(); + + const priorContext = priorStatements.length > 0 + ? `\n\n── PRIOR STATEMENTS FROM YOUR COLLEAGUES ──\n${priorStatements.map( + (s) => `${s.name} (${s.role}):\n${s.text}` + ).join('\n\n─────────────────────\n\n')}` + : ''; + + const systemPrompt = `${agent.persona} + +── FARM DATA CONTEXT ── +${contextBundle}${priorContext} + +You are presenting your department report at the weekly audit boardroom. Address the meeting topic directly from your domain's perspective. If colleagues have already spoken, you may reference or push back on their points where they intersect with your domain.`; + + const res = await fetch(ANTHROPIC_URL, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'x-api-key': apiKey, + 'anthropic-version': '2023-06-01', + 'anthropic-dangerous-direct-browser-access': 'true', + }, + body: JSON.stringify({ + model: MODEL, + max_tokens: 1024, + stream: true, + system: systemPrompt, + messages: [{ role: 'user', content: topic }], + }), + }); + + if (!res.ok) { + const text = await res.text(); + throw new Error(`API ${res.status}: ${text}`); + } + + // Stream SSE response + const reader = res.body.getReader(); + const decoder = new TextDecoder(); + let fullText = ''; + let buffer = ''; + + while (true) { + const { done, value } = await reader.read(); + if (done) break; + buffer += decoder.decode(value, { stream: true }); + const lines = buffer.split('\n'); + buffer = lines.pop() ?? ''; + + for (const line of lines) { + if (!line.startsWith('data: ')) continue; + const payload = line.slice(6).trim(); + if (payload === '[DONE]') continue; + try { + const evt = JSON.parse(payload); + if (evt.type === 'content_block_delta' && evt.delta?.type === 'text_delta') { + fullText += evt.delta.text; + onChunk(evt.delta.text, fullText); + } + } catch (_) {} + } + } + + return fullText; +} diff --git a/agrifine-extension/src/ag-refine/index.js b/agrifine-extension/src/ag-refine/index.js index 718eb07..fed6ae1 100644 --- a/agrifine-extension/src/ag-refine/index.js +++ b/agrifine-extension/src/ag-refine/index.js @@ -1,4 +1,5 @@ import { AgrifineAgent } from './agent.js'; +import { COMMITTEE, runCommitteeAgent } from './committee.js'; const TOOL_ICONS = { get_reading_list: 'πŸ“–', @@ -16,7 +17,7 @@ const TOOL_ICONS = { update_farm_memory: 'πŸ’Ύ', }; -const SUGGESTED_PROMPTS = [ +const AGENT_PROMPTS = [ 'Review all my farm data and build a farm memory summary', 'What are my current field conditions and harvest windows?', 'What risks or opportunities do you see across my operation?', @@ -24,111 +25,264 @@ const SUGGESTED_PROMPTS = [ 'Export my reading list and field profiles to CSV', ]; +const BOARDROOM_PROMPTS = [ + 'Weekly operations audit β€” all departments, give me your status', + 'We have a data integrity issue β€” assess the impact by department', + 'Heat stress event incoming β€” what does each department need?', + 'Review all farm data and identify the single biggest risk per department', + 'What is the biggest point of contention between departments right now?', +]; + export function AgRefineModule() { - let messages = []; - let isRunning = false; + let mode = 'agent'; // 'agent' | 'boardroom' + + // Agent mode state + let agentMessages = []; + let agentRunning = false; + + // Boardroom mode state + let boardMessages = []; // { type: 'topic'|'report'|'chair'|'thinking', ... } + let boardRunning = false; + let boardTargetAgent = null; // null = all, or agent id for targeted response return { id: 'ag-refine', label: 'AgriAgent', async render(container) { - container.innerHTML = ` + container.innerHTML = this._html(); + this._bindEvents(container); + this._switchMode(mode, container); + }, + + _html() { + return `
- -
-
- πŸ€– -

AgriAgent

- AI Agent -
-

Multi-step reasoning over all your farm data

+ +
+ +
- -
+ +