@corenel/harness 0.17.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.
@@ -104,15 +104,15 @@ export const RAW_DEFAULTS = {
104
104
  "crew/senior-test-engineer/PERSONA.md": "Direct and specific. Names the failure a test prevents rather than describing the\ntest.\n",
105
105
  "crew/senior-test-engineer/POLICY.yaml": "onViolation: stop\ndefaultPermission: ask\nmutatingDefault: ask\npermissions:\n fs:read_file: allow\n fs:list_files: allow\n fs:search_files: allow\n fs:stat_file: allow\n prompd:compile_prompd: allow\n memory:save_memory: allow\n memory:recall_memory: allow\n memory:kv_get: allow\n memory:kv_set: ask\n fs:write_file: allow\n fs:create_file: allow\n fs:rename_file: allow\n fs:delete_file: ask\n sidecar:run_check: allow\n web:web_search: deny\n sidecar:shell_exec: deny\n shell:spawn: deny\nskills:\n - test-driven-development\n - verification-before-completion\nunattended: park\n",
106
106
  "crew/senior-test-engineer/SOUL.md": "Sceptical in the useful way. Assumes green means \"not yet proven wrong\" and goes\nlooking for the case nobody wrote down.\n",
107
- "workflows/appointment-reminders/workflow.pdflow": "{\n \"version\": \"1.0\",\n \"metadata\": {\n \"id\": \"appointment-reminders\",\n \"name\": \"Appointment Reminders\",\n \"description\": \"Writes one short, friendly reminder per appointment from a pasted list, and flags any line it cannot write a reminder for instead of guessing.\",\n \"tags\": [\"Customers\"]\n },\n \"parameters\": [\n { \"name\": \"appointments\", \"label\": \"Appointments\", \"type\": \"string\", \"required\": true, \"multiline\": true, \"description\": \"One appointment per line, up to 100: the client's name, the day and time, and the service. For example: Maria Lopez, Tue Oct 14 10:30am, haircut. Paste straight from a sheet or calendar.\" },\n { \"name\": \"business\", \"label\": \"Your business\", \"type\": \"string\", \"required\": true, \"multiline\": true, \"description\": \"Your business name, where the appointment is, and how a client should reschedule (a phone number or link). Add anything every client should know, like 'arrive 10 minutes early'.\" },\n { \"name\": \"channel\", \"label\": \"Send as\", \"type\": \"string\", \"required\": true, \"default\": \"text message\", \"enum\": [\"text message\", \"email\"], \"description\": \"How the reminders will be sent. Text messages are kept short; emails get a subject line.\" }\n ],\n \"nodes\": [\n { \"id\": \"start\", \"type\": \"trigger\", \"position\": { \"x\": 0, \"y\": 0 }, \"data\": { \"label\": \"Start\", \"triggerType\": \"manual\" } },\n { \"id\": \"each\", \"type\": \"loop\", \"position\": { \"x\": 0, \"y\": 120 }, \"data\": { \"label\": \"Write each reminder\", \"loopType\": \"for-each\", \"items\": \"{{ appointments }}\", \"arraySource\": \"{{ appointments }}\", \"itemVariable\": \"appt\", \"body\": [\"reminder\"], \"onComplete\": \"no_invented_details\", \"maxIterations\": 100, \"collect\": \"text\", \"separator\": \"\\n\\n---\\n\\n\" } },\n { \"id\": \"reminder\", \"type\": \"prompt\", \"parentId\": \"each\", \"position\": { \"x\": 260, \"y\": 120 }, \"data\": { \"label\": \"Write one reminder\", \"sourceType\": \"raw\", \"source\": \"\", \"rawPrompt\": \"Write one appointment reminder to send as a {{ channel }}.\\n\\nTHE APPOINTMENT (one line from the owner's list)\\n{{ appt }}\\n\\nTHE BUSINESS\\n{{ business }}\\n\\nThe reminder must say who it is from, what the appointment is for, the day and time exactly as written in the appointment line, and how to reschedule using only the details given for the business. Address the client by first name. Keep a text message under 300 characters. For an email, put 'Subject: ' and a short subject on the first line, then the body.\\n\\nIf the appointment line is missing the client's name or the day and time, do NOT write a reminder. Return exactly: SKIPPED: <the line> - missing <what is missing>.\\n\\nNever invent a time, address, price, policy or rescheduling detail. Return the client's name on the first line, then the reminder ready to send. No commentary.\" } },\n { \"id\": \"no_invented_details\", \"type\": \"guardrail\", \"position\": { \"x\": 0, \"y\": 240 }, \"data\": { \"label\": \"Times and details match the list\", \"systemPrompt\": \"You are checking appointment reminders against the owner's own list and business details.\\n\\nTHE OWNER'S APPOINTMENT LIST\\n{{ appointments }}\\n\\nTHE OWNER'S BUSINESS DETAILS\\n{{ business }}\\n\\nA reminder FAILS if its day or time is a different day or time from its line in the list (the same time written differently, such as 10:30am and 10:30 AM, is NOT different), if it names a client who is not in the list, or if it states an address, phone number, link, price or policy that is not in the business details. Lines marked SKIPPED are correct behaviour and must pass. Wording and friendliness never fail a reminder.\\n\\nReply with JSON only: {\\\"pass\\\": true} or {\\\"pass\\\": false, \\\"reason\\\": \\\"<which reminder and what does not match>\\\"}.\", \"passExpression\": \"{{ pass }}\" } },\n { \"id\": \"final\", \"type\": \"transformer\", \"position\": { \"x\": 0, \"y\": 340 }, \"data\": { \"label\": \"Title the reminders\", \"mode\": \"template\", \"template\": \"REMINDERS ({{ channel }})\\n\\n{{ each }}\" } },\n { \"id\": \"out\", \"type\": \"output\", \"position\": { \"x\": 0, \"y\": 440 }, \"data\": { \"label\": \"Reminders\" } }\n ],\n \"edges\": [\n { \"id\": \"e-start-each\", \"source\": \"start\", \"target\": \"each\" },\n { \"id\": \"e-guard-final\", \"source\": \"no_invented_details\", \"target\": \"final\" },\n { \"id\": \"e-final-out\", \"source\": \"final\", \"target\": \"out\" }\n ]\n}\n",
108
- "workflows/competitor-teardown/workflow.pdflow": "{\n \"version\": \"1.0\",\n \"metadata\": {\n \"id\": \"competitor-teardown\",\n \"name\": \"Competitor Teardown\",\n \"description\": \"Researches each competitor into the same shape, then names where you are differentiated and where you are exposed.\",\n \"tags\": [\"Marketing\"]\n },\n \"parameters\": [\n { \"name\": \"ours\", \"label\": \"Your product\", \"type\": \"string\", \"required\": true, \"multiline\": true, \"description\": \"In a few sentences: what do you sell, to whom, and what do you claim makes it different?\" },\n { \"name\": \"rivals\", \"label\": \"Competitors\", \"type\": \"string\", \"required\": true, \"multiline\": true, \"description\": \"List the competitors to tear down - one name per line.\" }\n ],\n \"nodes\": [\n { \"id\": \"start\", \"type\": \"trigger\", \"position\": { \"x\": 0, \"y\": 0 }, \"data\": { \"label\": \"Start\", \"triggerType\": \"manual\" } },\n { \"id\": \"each\", \"type\": \"loop\", \"position\": { \"x\": 0, \"y\": 300 }, \"data\": { \"label\": \"Profile each competitor\", \"loopType\": \"for-each\", \"items\": \"{{ rivals }}\", \"arraySource\": \"{{ rivals }}\", \"itemVariable\": \"rival\", \"body\": [\"profile\"], \"onComplete\": \"gather\", \"maxIterations\": 12 } },\n { \"id\": \"profile\", \"type\": \"agent\", \"parentId\": \"each\", \"position\": { \"x\": 260, \"y\": 300 }, \"data\": { \"label\": \"Profile one competitor\", \"systemPrompt\": \"You profile one competitor at a time into a fixed shape so the profiles can be compared. Search for current information and prefer the company's own words for what they claim. Separate what you found from what you inferred, and say when you could not find something rather than guessing at it.\", \"userPrompt\": \"Competitor: {{ rival }}\\n\\nFor context, this is how we position ourselves:\\n{{ ours }}\\n\\nProfile the competitor under exactly these headings: Who they sell to. What they claim. What they actually appear to do well. Where they are weak. How they price, if findable. Keep it under 250 words and mark anything you inferred.\", \"maxIterations\": 8, \"outputMode\": \"final-response\" } },\n { \"id\": \"profile_tools\", \"type\": \"tool\", \"position\": { \"x\": 520, \"y\": 300 }, \"data\": { \"label\": \"Search\", \"attachedTo\": \"profile\", \"tools\": [\"web_search\"] } },\n { \"id\": \"gather\", \"type\": \"transformer\", \"position\": { \"x\": 0, \"y\": 420 }, \"data\": { \"label\": \"Gather profiles\", \"mode\": \"template\", \"template\": \"OUR POSITIONING\\n{{ ours }}\\n\\nCOMPETITOR PROFILES\\n{{ each }}\" } },\n { \"id\": \"gaps\", \"type\": \"prompt\", \"position\": { \"x\": 0, \"y\": 520 }, \"data\": { \"label\": \"Differentiation and exposure\", \"sourceType\": \"raw\", \"source\": \"\", \"rawPrompt\": \"Compare the profiles below against our own positioning.\\n\\n{{ input }}\\n\\nSay: where we are genuinely differentiated and which competitor most threatens that; where we are exposed and who exploits it today; and which of our claims a competitor could make just as credibly - that last one matters most, because a claim anyone can make is not positioning. Be blunt. Mark anything resting on an inference rather than a found fact.\" } },\n { \"id\": \"out\", \"type\": \"output\", \"position\": { \"x\": 0, \"y\": 620 }, \"data\": { \"label\": \"Teardown\" } }\n ],\n \"edges\": [\n { \"id\": \"e3\", \"source\": \"start\", \"target\": \"each\" },\n { \"id\": \"e4\", \"source\": \"gather\", \"target\": \"gaps\" },\n { \"id\": \"e5\", \"source\": \"gaps\", \"target\": \"out\" }\n ]\n}\n",
109
- "workflows/feedback-to-roadmap-themes/workflow.pdflow": "{\n \"version\": \"1.0\",\n \"metadata\": {\n \"id\": \"feedback-to-roadmap-themes\",\n \"name\": \"Feedback to Roadmap Themes\",\n \"description\": \"Turns a pile of customer feedback into ranked themes, one item at a time, so nothing is lost to a single oversized summary.\",\n \"tags\": [\"Customers\"]\n },\n \"parameters\": [\n { \"name\": \"feedback\", \"label\": \"Customer feedback\", \"type\": \"string\", \"required\": true, \"multiline\": true, \"description\": \"Paste the feedback - one item per line (a ticket, review, or survey comment each).\" }\n ],\n \"nodes\": [\n { \"id\": \"start\", \"type\": \"trigger\", \"position\": { \"x\": 0, \"y\": 0 }, \"data\": { \"label\": \"Start\", \"triggerType\": \"manual\" } },\n { \"id\": \"each\", \"type\": \"loop\", \"position\": { \"x\": 0, \"y\": 200 }, \"data\": { \"label\": \"Classify each item\", \"loopType\": \"for-each\", \"items\": \"{{ feedback }}\", \"arraySource\": \"{{ feedback }}\", \"itemVariable\": \"entry\", \"body\": [\"classify\"], \"onComplete\": \"gather\", \"maxIterations\": 60 } },\n { \"id\": \"classify\", \"type\": \"prompt\", \"parentId\": \"each\", \"position\": { \"x\": 260, \"y\": 200 }, \"data\": { \"label\": \"Classify one item\", \"sourceType\": \"raw\", \"source\": \"\", \"rawPrompt\": \"Classify this single piece of customer feedback.\\n\\n{{ entry }}\\n\\nReturn ONLY a JSON object: {\\\"theme\\\": \\\"<short noun phrase>\\\", \\\"severity\\\": \\\"low\\\"|\\\"medium\\\"|\\\"high\\\", \\\"quote\\\": \\\"<the most telling phrase, verbatim>\\\"}. Use the customer's own framing for the theme. If the item says nothing actionable, use the theme \\\"none\\\".\" } },\n { \"id\": \"gather\", \"type\": \"transformer\", \"position\": { \"x\": 0, \"y\": 320 }, \"data\": { \"label\": \"Gather classifications\", \"mode\": \"template\", \"template\": \"CLASSIFIED FEEDBACK\\n\\n{{ each }}\" } },\n { \"id\": \"cluster\", \"type\": \"prompt\", \"position\": { \"x\": 0, \"y\": 420 }, \"data\": { \"label\": \"Cluster and rank\", \"sourceType\": \"raw\", \"source\": \"\", \"rawPrompt\": \"Merge the classifications below into themes and rank them.\\n\\n{{ input }}\\n\\nCombine themes that are the same thing under different words, and say which you merged. Rank by how often a theme appears WEIGHTED by severity, and show both numbers so the ranking can be argued with. Drop \\\"none\\\". For each theme give one verbatim customer quote.\\n\\nEnd with what this data cannot tell you - who is missing from it, and what you would need to know before acting on the top theme.\" } },\n { \"id\": \"out\", \"type\": \"output\", \"position\": { \"x\": 0, \"y\": 520 }, \"data\": { \"label\": \"Themes\" } }\n ],\n \"edges\": [\n { \"id\": \"e2\", \"source\": \"start\", \"target\": \"each\" },\n { \"id\": \"e3\", \"source\": \"gather\", \"target\": \"cluster\" },\n { \"id\": \"e4\", \"source\": \"cluster\", \"target\": \"out\" }\n ]\n}\n",
110
- "workflows/marketing-strategy-pipeline/workflow.pdflow": "{\n \"version\": \"1.0\",\n \"metadata\": {\n \"id\": \"marketing-strategy-pipeline\",\n \"name\": \"Marketing Strategy Pipeline\",\n \"description\": \"Researches audience, messaging and channel for a product brief in parallel, then turns the three passes into one strategy.\",\n \"tags\": [\"Marketing\"]\n },\n \"parameters\": [\n { \"name\": \"brief\", \"label\": \"Product brief\", \"type\": \"string\", \"required\": true, \"multiline\": true, \"description\": \"The product or service this strategy is for - yours or a competitor's - and who you think it is for. The more concrete this is, the less the research has to guess at.\" }\n ],\n \"nodes\": [\n { \"id\": \"start\", \"type\": \"trigger\", \"position\": { \"x\": 0, \"y\": 0 }, \"data\": { \"label\": \"Start\", \"triggerType\": \"manual\" } },\n { \"id\": \"angles\", \"type\": \"parallel\", \"position\": { \"x\": 220, \"y\": 0 }, \"data\": { \"label\": \"Research the three angles\", \"mode\": \"fork\", \"branches\": [ { \"id\": \"angles-b1\", \"label\": \"Audience\", \"nodes\": [\"audience_pass\"] }, { \"id\": \"angles-b2\", \"label\": \"Messaging\", \"nodes\": [\"messaging_pass\"] }, { \"id\": \"angles-b3\", \"label\": \"Channel\", \"nodes\": [\"channel_pass\"] } ], \"forkCount\": 3, \"forkLabels\": [\"Audience\", \"Messaging\", \"Channel\"], \"waitFor\": \"all\", \"mergeStrategy\": \"object\", \"maxConcurrency\": 3 } },\n { \"id\": \"collect\", \"type\": \"transformer\", \"position\": { \"x\": 440, \"y\": 0 }, \"data\": { \"label\": \"Gather the passes\", \"mode\": \"template\", \"template\": \"AUDIENCE\\n\\n{{ audience_pass }}\\n\\nMESSAGING\\n\\n{{ messaging_pass }}\\n\\nCHANNEL\\n\\n{{ channel_pass }}\\n\\nORIGINAL BRIEF\\n\\n{{ brief }}\" } },\n { \"id\": \"strategy\", \"type\": \"prompt\", \"position\": { \"x\": 660, \"y\": 0 }, \"data\": { \"label\": \"Write the strategy\", \"sourceType\": \"raw\", \"source\": \"\", \"rawPrompt\": \"Turn the research below into a marketing strategy.\\n\\n{{ input }}\\n\\nWrite: who this is for and who it is not for; the one claim the strategy rests on; the three things to say and where to say them; and what you assumed that someone closer to the market should check. Do not pad. If the research does not support a section, say so instead of inventing it.\\n\\nDo not introduce any capability, channel, metric or price that is not in the brief or the research above. Where the product specifics are unknown, say the strategy rests on the brief alone - do not state an invented specific as the claim it rests on.\" } },\n { \"id\": \"out\", \"type\": \"output\", \"position\": { \"x\": 880, \"y\": 0 }, \"data\": { \"label\": \"Strategy\" } },\n { \"id\": \"audience_pass\", \"type\": \"prompt\", \"position\": { \"x\": 280, \"y\": -90 }, \"data\": { \"label\": \"Audience research\", \"sourceType\": \"raw\", \"source\": \"\", \"rawPrompt\": \"You are researching the AUDIENCE angle of a marketing strategy.\\n\\nProduct brief:\\n{{ brief }}\\n\\nWho specifically is this for, what are they trying to get done, and what are they doing instead today?\\n\\nSearch for whatever helps, including the product itself - researching a competitor or a named product is a normal use of this. Finding little about it is also a normal result: say so and work from the brief alone.\\n\\nEvery capability, channel, metric or price you state must come from the brief or from a source you found. If you have neither, say that plainly. Never fill the gap by inferring what a product like this usually does - a plausible category is not evidence.\\n\\nMark anything you inferred rather than found. Be concrete and brief - at most 250 words.\" } },\n { \"id\": \"messaging_pass\", \"type\": \"prompt\", \"position\": { \"x\": 280, \"y\": 0 }, \"data\": { \"label\": \"Messaging research\", \"sourceType\": \"raw\", \"source\": \"\", \"rawPrompt\": \"You are researching the MESSAGING angle of a marketing strategy.\\n\\nProduct brief:\\n{{ brief }}\\n\\nWhat do these people already believe, and what specific claim would move them? Say what the product is NOT for.\\n\\nSearch for whatever helps, including the product itself - researching a competitor or a named product is a normal use of this. Finding little about it is also a normal result: say so and work from the brief alone.\\n\\nEvery capability, channel, metric or price you state must come from the brief or from a source you found. If you have neither, say that plainly. Never fill the gap by inferring what a product like this usually does - a plausible category is not evidence.\\n\\nMark anything you inferred rather than found. Be concrete and brief - at most 250 words.\" } },\n { \"id\": \"channel_pass\", \"type\": \"prompt\", \"position\": { \"x\": 280, \"y\": 90 }, \"data\": { \"label\": \"Channel research\", \"sourceType\": \"raw\", \"source\": \"\", \"rawPrompt\": \"You are researching the CHANNEL angle of a marketing strategy.\\n\\nProduct brief:\\n{{ brief }}\\n\\nWhere does this audience already look for answers, and what format earns their attention there?\\n\\nSearch for whatever helps, including the product itself - researching a competitor or a named product is a normal use of this. Finding little about it is also a normal result: say so and work from the brief alone.\\n\\nEvery capability, channel, metric or price you state must come from the brief or from a source you found. If you have neither, say that plainly. Never fill the gap by inferring what a product like this usually does - a plausible category is not evidence.\\n\\nMark anything you inferred rather than found. Be concrete and brief - at most 250 words.\" } }\n ],\n \"edges\": [\n { \"id\": \"e-start-angles\", \"source\": \"start\", \"target\": \"angles\" },\n { \"id\": \"e-angles-audience_pass-f0\", \"source\": \"angles\", \"target\": \"audience_pass\", \"sourceHandle\": \"fork-0\", \"label\": \"Audience\" },\n { \"id\": \"e-audience_pass-collect-f0\", \"source\": \"audience_pass\", \"target\": \"collect\", \"targetHandle\": \"input-0\" },\n { \"id\": \"e-angles-messaging_pass-f1\", \"source\": \"angles\", \"target\": \"messaging_pass\", \"sourceHandle\": \"fork-1\", \"label\": \"Messaging\" },\n { \"id\": \"e-messaging_pass-collect-f1\", \"source\": \"messaging_pass\", \"target\": \"collect\", \"targetHandle\": \"input-1\" },\n { \"id\": \"e-angles-channel_pass-f2\", \"source\": \"angles\", \"target\": \"channel_pass\", \"sourceHandle\": \"fork-2\", \"label\": \"Channel\" },\n { \"id\": \"e-channel_pass-collect-f2\", \"source\": \"channel_pass\", \"target\": \"collect\", \"targetHandle\": \"input-2\" },\n { \"id\": \"e-collect-strategy\", \"source\": \"collect\", \"target\": \"strategy\" },\n { \"id\": \"e-strategy-out\", \"source\": \"strategy\", \"target\": \"out\" }\n ]\n}\n",
111
- "workflows/morning-brief/workflow.pdflow": "{\n \"version\": \"1.0\",\n \"metadata\": {\n \"id\": \"morning-brief\",\n \"name\": \"Morning Brief\",\n \"description\": \"Checks the web for what changed on each topic you follow and writes a short, sourced brief. 'Nothing new' is a valid answer, never filler.\",\n \"tags\": [\"Research\"]\n },\n \"parameters\": [\n { \"name\": \"topics\", \"label\": \"Topics to follow\", \"type\": \"string\", \"required\": true, \"multiline\": true, \"description\": \"One topic per line, up to 12: a competitor, a supplier, a local regulation, an industry, a question you keep asking. For example: new bakeries opening in Tempe.\" },\n { \"name\": \"reader\", \"label\": \"Who it is for\", \"type\": \"string\", \"required\": false, \"multiline\": true, \"default\": \"\", \"description\": \"Optional. Who the brief is for and what they decide with it, so it can lead with what matters to them. For example: I own a bakery and decide what to stock and what to promote.\" }\n ],\n \"nodes\": [\n { \"id\": \"start\", \"type\": \"trigger\", \"position\": { \"x\": 0, \"y\": 0 }, \"data\": { \"label\": \"Start\", \"triggerType\": \"manual\" } },\n { \"id\": \"each\", \"type\": \"loop\", \"position\": { \"x\": 0, \"y\": 120 }, \"data\": { \"label\": \"Check each topic\", \"loopType\": \"for-each\", \"items\": \"{{ topics }}\", \"arraySource\": \"{{ topics }}\", \"itemVariable\": \"topic\", \"body\": [\"check\"], \"onComplete\": \"gather\", \"maxIterations\": 12, \"collect\": \"text\", \"separator\": \"\\n\\n---\\n\\n\" } },\n { \"id\": \"check\", \"type\": \"agent\", \"parentId\": \"each\", \"position\": { \"x\": 260, \"y\": 120 }, \"data\": { \"label\": \"What changed on one topic\", \"systemPrompt\": \"You check one topic for recent news on behalf of a busy reader. Search before answering, and search more than once if the first results are old or off-topic. Only report items you found a dated source for, and give the date and the source for each. Prefer the last few days; say how old anything older is. If you found nothing recent and relevant, say exactly 'Nothing new found' - that is a useful answer, and padding it with old or generic material is not.\", \"userPrompt\": \"Topic: {{ topic }}\\n\\nWho the brief is for (may be empty): {{ reader }}\\n\\nWhat is new on this topic? At most 150 words: up to three items, each with its date and source.\", \"maxIterations\": 6, \"outputMode\": \"final-response\" } },\n { \"id\": \"check_tools\", \"type\": \"tool\", \"position\": { \"x\": 520, \"y\": 120 }, \"data\": { \"label\": \"Search\", \"attachedTo\": \"check\", \"tools\": [\"web_search\"] } },\n { \"id\": \"gather\", \"type\": \"transformer\", \"position\": { \"x\": 0, \"y\": 240 }, \"data\": { \"label\": \"Gather the findings\", \"mode\": \"template\", \"template\": \"WHO THE BRIEF IS FOR\\n{{ reader }}\\n\\nFINDINGS BY TOPIC\\n{{ each }}\" } },\n { \"id\": \"write\", \"type\": \"prompt\", \"position\": { \"x\": 0, \"y\": 340 }, \"data\": { \"label\": \"Write the brief\", \"sourceType\": \"raw\", \"source\": \"\", \"rawPrompt\": \"Write a morning brief from the findings below.\\n\\n{{ input }}\\n\\nStart with 'Worth your attention': at most three items that matter most to the reader, each one sentence plus why it matters, ending with its date and source in brackets. Then one short section per topic, keeping every date and source from the findings. List topics with nothing new in a single closing line rather than giving each a section.\\n\\nUse only what the findings contain. Do not add background knowledge, predictions or advice that the findings do not support. If every topic found nothing new, say so in one line - a short brief is a correct brief.\" } },\n { \"id\": \"sourced\", \"type\": \"guardrail\", \"position\": { \"x\": 0, \"y\": 440 }, \"data\": { \"label\": \"Every item has a source\", \"systemPrompt\": \"You are checking a news brief for one thing: does every reported news item carry a date and a source? An item stated as news with no source FAILS. Lines saying nothing new was found are fine and need no source.\\n\\nReply with JSON only: {\\\"pass\\\": true} or {\\\"pass\\\": false, \\\"reason\\\": \\\"<which item has no source>\\\"}.\", \"passExpression\": \"{{ pass }}\" } },\n { \"id\": \"out\", \"type\": \"output\", \"position\": { \"x\": 0, \"y\": 540 }, \"data\": { \"label\": \"Brief\" } }\n ],\n \"edges\": [\n { \"id\": \"e-start-each\", \"source\": \"start\", \"target\": \"each\" },\n { \"id\": \"e-gather-write\", \"source\": \"gather\", \"target\": \"write\" },\n { \"id\": \"e-write-guard\", \"source\": \"write\", \"target\": \"sourced\" },\n { \"id\": \"e-guard-out\", \"source\": \"sourced\", \"target\": \"out\" }\n ]\n}\n",
112
- "workflows/research-pipeline/workflow.pdflow": "{\n \"version\": \"1.0\",\n \"metadata\": {\n \"id\": \"research-pipeline\",\n \"name\": \"Research Pipeline\",\n \"description\": \"Breaks a question into sub-questions, researches each one, then synthesizes an answer that must cite its sources.\",\n \"tags\": [\"Research\"]\n },\n \"parameters\": [\n { \"name\": \"question\", \"label\": \"Your question\", \"type\": \"string\", \"required\": true, \"multiline\": true, \"description\": \"What do you want researched? One question, as specific as you can make it.\" }\n ],\n \"nodes\": [\n { \"id\": \"start\", \"type\": \"trigger\", \"position\": { \"x\": 0, \"y\": 0 }, \"data\": { \"label\": \"Start\", \"triggerType\": \"manual\" } },\n { \"id\": \"decompose\", \"type\": \"prompt\", \"position\": { \"x\": 0, \"y\": 200 }, \"data\": { \"label\": \"Break it down\", \"sourceType\": \"raw\", \"source\": \"\", \"rawPrompt\": \"Break this research question into between three and six sub-questions that together answer it. Each must be answerable on its own and worth answering separately.\\n\\nQuestion: {{ question }}\\n\\nReturn ONLY a JSON array of strings. No commentary, no code fence.\" } },\n { \"id\": \"each\", \"type\": \"loop\", \"position\": { \"x\": 0, \"y\": 300 }, \"data\": { \"label\": \"Research each sub-question\", \"loopType\": \"for-each\", \"items\": \"{{ decompose }}\", \"arraySource\": \"{{ decompose }}\", \"itemVariable\": \"subq\", \"body\": [\"sub_pass\"], \"onComplete\": \"gather\", \"maxIterations\": 6 } },\n { \"id\": \"sub_pass\", \"type\": \"agent\", \"parentId\": \"each\", \"position\": { \"x\": 260, \"y\": 300 }, \"data\": { \"label\": \"Answer one sub-question\", \"systemPrompt\": \"You research one narrow question at a time. Search before answering, and search more than once - one query returns one neighbourhood of an argument. Attribute every load-bearing claim to a source with its date. Separate what the sources support from what you inferred. If the evidence is thin, say so; that is a finding.\", \"userPrompt\": \"Sub-question: {{ subq }}\\n\\nContext - the overall question being researched: {{ question }}\\n\\nAnswer in at most 250 words, with sources.\", \"maxIterations\": 6, \"outputMode\": \"final-response\" } },\n { \"id\": \"sub_tools\", \"type\": \"tool\", \"position\": { \"x\": 520, \"y\": 300 }, \"data\": { \"label\": \"Search\", \"attachedTo\": \"sub_pass\", \"tools\": [\"web_search\"] } },\n { \"id\": \"gather\", \"type\": \"transformer\", \"position\": { \"x\": 0, \"y\": 420 }, \"data\": { \"label\": \"Gather findings\", \"mode\": \"template\", \"template\": \"ORIGINAL QUESTION\\n{{ question }}\\n\\nSUB-QUESTIONS\\n{{ decompose }}\\n\\nFINDINGS\\n{{ each }}\" } },\n { \"id\": \"synthesize\", \"type\": \"prompt\", \"position\": { \"x\": 0, \"y\": 520 }, \"data\": { \"label\": \"Synthesize\", \"sourceType\": \"raw\", \"source\": \"\", \"rawPrompt\": \"Write the answer to the original question from the findings below.\\n\\n{{ input }}\\n\\nLead with the answer. Attribute every load-bearing claim to its source. Where findings disagree, report the disagreement rather than picking a winner silently. Mark inferences as inferences. End with how confident you are and what would change your mind.\" } },\n { \"id\": \"sourced\", \"type\": \"guardrail\", \"position\": { \"x\": 0, \"y\": 620 }, \"data\": { \"label\": \"Sources present\", \"systemPrompt\": \"You are checking one thing: does the text below attribute its load-bearing factual claims to named sources? A synthesis that reads as confident but cites nothing FAILS. Inferences that are explicitly marked as inferences are acceptable and do not need a source.\\n\\nReply with JSON only: {\\\"pass\\\": true} or {\\\"pass\\\": false, \\\"reason\\\": \\\"<one sentence>\\\"}.\", \"passExpression\": \"{{ pass }}\" } },\n { \"id\": \"out\", \"type\": \"output\", \"position\": { \"x\": 0, \"y\": 720 }, \"data\": { \"label\": \"Answer\" } }\n ],\n \"edges\": [\n { \"id\": \"e2\", \"source\": \"start\", \"target\": \"decompose\" },\n { \"id\": \"e3\", \"source\": \"decompose\", \"target\": \"each\" },\n { \"id\": \"e4\", \"source\": \"gather\", \"target\": \"synthesize\" },\n { \"id\": \"e5\", \"source\": \"synthesize\", \"target\": \"sourced\" },\n { \"id\": \"e6\", \"source\": \"sourced\", \"target\": \"out\" }\n ]\n}\n",
113
- "workflows/review-responder/workflow.pdflow": "{\n \"version\": \"1.0\",\n \"metadata\": {\n \"id\": \"review-responder\",\n \"name\": \"Review Responder\",\n \"description\": \"Drafts a reply to each customer review you paste, takes unhappy reviews offline politely, and never promises a refund or discount you did not offer.\",\n \"tags\": [\"Customers\"]\n },\n \"parameters\": [\n { \"name\": \"reviews\", \"label\": \"Reviews\", \"type\": \"string\", \"required\": true, \"multiline\": true, \"description\": \"Paste up to 30 reviews, from Google, Yelp, Facebook or anywhere. Star ratings and reviewer names help if you have them.\" },\n { \"name\": \"business\", \"label\": \"Your business\", \"type\": \"string\", \"required\": true, \"multiline\": true, \"description\": \"Your business name, who signs the replies, how an unhappy customer can reach you directly, and anything you are willing to offer (for example 'we can rebook for free'). Replies offer nothing beyond what you write here.\" }\n ],\n \"nodes\": [\n { \"id\": \"start\", \"type\": \"trigger\", \"position\": { \"x\": 0, \"y\": 0 }, \"data\": { \"label\": \"Start\", \"triggerType\": \"manual\" } },\n { \"id\": \"extract\", \"type\": \"prompt\", \"position\": { \"x\": 0, \"y\": 120 }, \"data\": { \"label\": \"Separate the reviews\", \"sourceType\": \"raw\", \"source\": \"\", \"rawPrompt\": \"Split the text below into individual customer reviews. Keep each review's original wording, and keep the reviewer's name and star rating with it when they are present. Do not summarise, merge, reorder or invent reviews.\\n\\n{{ reviews }}\\n\\nReturn ONLY a JSON array of strings, one per review. No commentary, no code fence.\" } },\n { \"id\": \"each\", \"type\": \"loop\", \"position\": { \"x\": 0, \"y\": 240 }, \"data\": { \"label\": \"Reply to each review\", \"loopType\": \"for-each\", \"items\": \"{{ extract }}\", \"arraySource\": \"{{ extract }}\", \"itemVariable\": \"review\", \"body\": [\"reply\"], \"onComplete\": \"no_unoffered_promises\", \"maxIterations\": 30, \"collect\": \"text\", \"separator\": \"\\n\\n---\\n\\n\" } },\n { \"id\": \"reply\", \"type\": \"prompt\", \"parentId\": \"each\", \"position\": { \"x\": 260, \"y\": 240 }, \"data\": { \"label\": \"Draft one reply\", \"sourceType\": \"raw\", \"source\": \"\", \"rawPrompt\": \"Draft a public reply from the business to this customer review.\\n\\nTHE REVIEW\\n{{ review }}\\n\\nTHE BUSINESS\\n{{ business }}\\n\\nFirst decide whether the review is POSITIVE, MIXED or NEGATIVE.\\n- POSITIVE: thank them, mention one specific thing they said, keep it to two or three sentences.\\n- MIXED: thank them for the good, acknowledge the problem without arguing, and invite them to get in touch.\\n- NEGATIVE: stay calm and brief, apologise that their experience fell short without admitting fault or disputing their account, and give the direct contact from the business details so it can be sorted out privately.\\n\\nNever promise a refund, discount, free service or compensation unless the business details offer it. Never repeat a customer's personal details, and never mention anything about them that is not in the review. Sign with the name given in the business details.\\n\\nReturn the first line as 'POSITIVE', 'MIXED' or 'NEGATIVE' followed by the reviewer's name if known, then the reply ready to post. No commentary.\" } },\n { \"id\": \"no_unoffered_promises\", \"type\": \"guardrail\", \"position\": { \"x\": 0, \"y\": 360 }, \"data\": { \"label\": \"No promises you did not offer\", \"systemPrompt\": \"You are checking draft replies to customer reviews.\\n\\nWHAT THE BUSINESS OFFERS\\n{{ business }}\\n\\nTHE ORIGINAL REVIEWS\\n{{ reviews }}\\n\\nA reply FAILS if it promises a refund, discount, free service or other compensation that is not in WHAT THE BUSINESS OFFERS, if it argues with or blames the customer, or if it reveals a personal detail about the customer that is not in their own review. Using the reviewer's name, or repeating what they themselves wrote, is fine. A polite apology without an offer is fine.\\n\\nReply with JSON only: {\\\"pass\\\": true} or {\\\"pass\\\": false, \\\"reason\\\": \\\"<which reply and what it does>\\\"}.\", \"passExpression\": \"{{ pass }}\" } },\n { \"id\": \"final\", \"type\": \"transformer\", \"position\": { \"x\": 0, \"y\": 460 }, \"data\": { \"label\": \"Title the replies\", \"mode\": \"template\", \"template\": \"DRAFT REPLIES\\n\\n{{ each }}\" } },\n { \"id\": \"out\", \"type\": \"output\", \"position\": { \"x\": 0, \"y\": 560 }, \"data\": { \"label\": \"Replies\" } }\n ],\n \"edges\": [\n { \"id\": \"e-start-extract\", \"source\": \"start\", \"target\": \"extract\" },\n { \"id\": \"e-extract-each\", \"source\": \"extract\", \"target\": \"each\" },\n { \"id\": \"e-guard-final\", \"source\": \"no_unoffered_promises\", \"target\": \"final\" },\n { \"id\": \"e-final-out\", \"source\": \"final\", \"target\": \"out\" }\n ]\n}\n",
114
- "workflows/rfp-questionnaire-response/workflow.pdflow": "{\n \"version\": \"1.0\",\n \"metadata\": {\n \"id\": \"rfp-questionnaire-response\",\n \"name\": \"RFP / Questionnaire Response\",\n \"description\": \"Extracts every question from an RFP or vendor questionnaire, drafts each answer from your own documents, and refuses to claim anything the documents do not support.\",\n \"tags\": [\"Documents\"]\n },\n \"parameters\": [\n { \"name\": \"doc\", \"label\": \"RFP or questionnaire\", \"type\": \"string\", \"required\": true, \"multiline\": true, \"description\": \"Paste the RFP or questionnaire text.\" }\n ],\n \"nodes\": [\n { \"id\": \"start\", \"type\": \"trigger\", \"position\": { \"x\": 0, \"y\": 0 }, \"data\": { \"label\": \"Start\", \"triggerType\": \"manual\" } },\n { \"id\": \"extract\", \"type\": \"prompt\", \"position\": { \"x\": 0, \"y\": 200 }, \"data\": { \"label\": \"Extract the questions\", \"sourceType\": \"raw\", \"source\": \"\", \"rawPrompt\": \"Extract every question that requires an answer from the document below. Keep each question's original wording. Do not merge, reorder or invent questions.\\n\\n{{ doc }}\\n\\nReturn ONLY a JSON array of strings. No commentary, no code fence.\" } },\n { \"id\": \"each\", \"type\": \"loop\", \"position\": { \"x\": 0, \"y\": 300 }, \"data\": { \"label\": \"Answer each question\", \"loopType\": \"for-each\", \"items\": \"{{ extract }}\", \"arraySource\": \"{{ extract }}\", \"itemVariable\": \"q\", \"body\": [\"answer\"], \"onComplete\": \"assemble\", \"maxIterations\": 40 } },\n { \"id\": \"answer\", \"type\": \"agent\", \"parentId\": \"each\", \"position\": { \"x\": 260, \"y\": 300 }, \"data\": { \"label\": \"Draft one answer\", \"systemPrompt\": \"You draft answers to procurement and security questionnaires, grounded ONLY in the documents available to you in this workspace. Search the workspace before answering. Quote or reference the document that supports each claim. If you cannot find support for a capability, say plainly that it is not evidenced here and describe what would be needed to answer - never write a plausible answer to fill the gap. An unanswered question is recoverable; a false claim in a binding document is not.\", \"userPrompt\": \"Question: {{ q }}\\n\\nDraft the answer, then on a final line state either SUPPORTED (with the document you relied on) or UNSUPPORTED.\", \"maxIterations\": 8, \"outputMode\": \"final-response\" } },\n { \"id\": \"answer_tools\", \"type\": \"tool\", \"position\": { \"x\": 520, \"y\": 300 }, \"data\": { \"label\": \"Read the workspace\", \"attachedTo\": \"answer\", \"tools\": [\"read_file\", \"list_files\", \"search_files\", \"stat_file\"] } },\n { \"id\": \"assemble\", \"type\": \"transformer\", \"position\": { \"x\": 0, \"y\": 420 }, \"data\": { \"label\": \"Assemble\", \"mode\": \"template\", \"template\": \"DRAFT RESPONSE\\n\\n{{ each }}\" } },\n { \"id\": \"no_overclaim\", \"type\": \"guardrail\", \"position\": { \"x\": 0, \"y\": 520 }, \"data\": { \"label\": \"No unsupported claims\", \"systemPrompt\": \"You are checking a draft questionnaire response for claims that its own evidence does not support. An answer marked UNSUPPORTED that honestly says so is FINE and must pass. An answer that asserts a capability, certification or control while showing no supporting document FAILS.\\n\\nReply with JSON only: {\\\"pass\\\": true} or {\\\"pass\\\": false, \\\"reason\\\": \\\"<which answer and why>\\\"}.\", \"passExpression\": \"{{ pass }}\" } },\n { \"id\": \"final\", \"type\": \"prompt\", \"position\": { \"x\": 0, \"y\": 620 }, \"data\": { \"label\": \"Response and gap list\", \"sourceType\": \"raw\", \"source\": \"\", \"rawPrompt\": \"Produce two sections from the draft below.\\n\\n{{ input }}\\n\\nFirst: the response, question by question, using only the supported answers.\\nSecond: a gap list of every question marked UNSUPPORTED, each with what evidence would be needed to answer it. Do not soften the gap list - it is the part a human must act on.\" } },\n { \"id\": \"out\", \"type\": \"output\", \"position\": { \"x\": 0, \"y\": 720 }, \"data\": { \"label\": \"Response\" } }\n ],\n \"edges\": [\n { \"id\": \"e2\", \"source\": \"start\", \"target\": \"extract\" },\n { \"id\": \"e3\", \"source\": \"extract\", \"target\": \"each\" },\n { \"id\": \"e4\", \"source\": \"assemble\", \"target\": \"no_overclaim\" },\n { \"id\": \"e5\", \"source\": \"no_overclaim\", \"target\": \"final\" },\n { \"id\": \"e6\", \"source\": \"final\", \"target\": \"out\" }\n ]\n}\n",
115
- "workflows/weekly-social-posts/workflow.pdflow": "{\n \"version\": \"1.0\",\n \"metadata\": {\n \"id\": \"weekly-social-posts\",\n \"name\": \"Weekly Social Posts\",\n \"description\": \"Turns this week's news and offers into one ready-to-post draft per platform, in your voice, without inventing prices, dates or offers.\",\n \"tags\": [\"Marketing\"]\n },\n \"parameters\": [\n { \"name\": \"business\", \"label\": \"Your business\", \"type\": \"string\", \"required\": true, \"multiline\": true, \"description\": \"What your business does, who it is for, and how you sound. A few sentences, or paste a past post you liked.\" },\n { \"name\": \"news\", \"label\": \"This week\", \"type\": \"string\", \"required\": true, \"multiline\": true, \"description\": \"What is happening this week: offers, events, new products, a customer story. Include exact prices and dates - the posts will only use what you write here and above.\" },\n { \"name\": \"platforms\", \"label\": \"Platforms\", \"type\": \"string\", \"required\": true, \"multiline\": true, \"default\": \"Instagram\\nFacebook\\nLinkedIn\", \"description\": \"One platform per line, up to 8. For example Instagram, Facebook, LinkedIn.\" }\n ],\n \"nodes\": [\n { \"id\": \"start\", \"type\": \"trigger\", \"position\": { \"x\": 0, \"y\": 0 }, \"data\": { \"label\": \"Start\", \"triggerType\": \"manual\" } },\n { \"id\": \"angle\", \"type\": \"prompt\", \"position\": { \"x\": 0, \"y\": 120 }, \"data\": { \"label\": \"Pick this week's angle\", \"sourceType\": \"raw\", \"source\": \"\", \"rawPrompt\": \"You plan one week of social posts for a small business.\\n\\nTHE BUSINESS\\n{{ business }}\\n\\nTHIS WEEK\\n{{ news }}\\n\\nPick the single most worth-sharing thing from THIS WEEK and say in two or three sentences why a customer would care. Then list every concrete fact the posts may use - names, prices, dates, times, places, products - copied exactly as written above. If there is no price or date, say so. Do not add any fact that is not written above.\" } },\n { \"id\": \"each\", \"type\": \"loop\", \"position\": { \"x\": 0, \"y\": 240 }, \"data\": { \"label\": \"Draft for each platform\", \"loopType\": \"for-each\", \"items\": \"{{ platforms }}\", \"arraySource\": \"{{ platforms }}\", \"itemVariable\": \"platform\", \"body\": [\"draft\"], \"onComplete\": \"no_invented_facts\", \"maxIterations\": 8, \"collect\": \"text\", \"separator\": \"\\n\\n---\\n\\n\" } },\n { \"id\": \"draft\", \"type\": \"prompt\", \"parentId\": \"each\", \"position\": { \"x\": 260, \"y\": 240 }, \"data\": { \"label\": \"Draft one post\", \"sourceType\": \"raw\", \"source\": \"\", \"rawPrompt\": \"Write one social post for {{ platform }}.\\n\\nTHE BUSINESS AND ITS VOICE\\n{{ business }}\\n\\nTHE ANGLE AND THE FACTS YOU MAY USE\\n{{ angle }}\\n\\nFit the post to how {{ platform }} is actually used: its usual length, tone and hashtag habits. Sound like the business, not like an advertisement. End with one clear thing for the reader to do.\\n\\nUse only the facts listed above. Never invent a price, discount, date, time, product, testimonial or statistic. If the post would be stronger with a fact you do not have, leave it out.\\n\\nReturn the platform name on the first line, then the post text ready to paste. No commentary.\" } },\n { \"id\": \"no_invented_facts\", \"type\": \"guardrail\", \"position\": { \"x\": 0, \"y\": 360 }, \"data\": { \"label\": \"No invented facts\", \"systemPrompt\": \"You are checking draft social posts for a small business against the facts the owner supplied.\\n\\nTHE BUSINESS\\n{{ business }}\\n\\nTHIS WEEK\\n{{ news }}\\n\\nA post FAILS if it states a price, discount, date, time, product, testimonial or statistic that appears in neither THE BUSINESS nor THIS WEEK. Tone, wording, hashtags and calls to action are NOT facts and never fail a post.\\n\\nReply with JSON only: {\\\"pass\\\": true} or {\\\"pass\\\": false, \\\"reason\\\": \\\"<which post and which invented fact>\\\"}.\", \"passExpression\": \"{{ pass }}\" } },\n { \"id\": \"final\", \"type\": \"transformer\", \"position\": { \"x\": 0, \"y\": 460 }, \"data\": { \"label\": \"Title the posts\", \"mode\": \"template\", \"template\": \"THIS WEEK'S POSTS\\n\\n{{ each }}\" } },\n { \"id\": \"out\", \"type\": \"output\", \"position\": { \"x\": 0, \"y\": 560 }, \"data\": { \"label\": \"Posts\" } }\n ],\n \"edges\": [\n { \"id\": \"e-start-angle\", \"source\": \"start\", \"target\": \"angle\" },\n { \"id\": \"e-angle-each\", \"source\": \"angle\", \"target\": \"each\" },\n { \"id\": \"e-guard-final\", \"source\": \"no_invented_facts\", \"target\": \"final\" },\n { \"id\": \"e-final-out\", \"source\": \"final\", \"target\": \"out\" }\n ]\n}\n",
107
+ "workflows/appointment-reminders/workflow.pdflow": "{\n \"version\": \"1.0\",\n \"metadata\": {\n \"id\": \"appointment-reminders\",\n \"name\": \"Appointment Reminders\",\n \"description\": \"Writes one short, friendly reminder per appointment from a pasted list, and flags any line it cannot write a reminder for instead of guessing.\",\n \"tags\": [\"Customers\"]\n },\n \"parameters\": [\n { \"name\": \"appointments\", \"label\": \"Appointments\", \"type\": \"string\", \"required\": true, \"multiline\": true, \"description\": \"One appointment per line, up to 100: the client's name, the day and time, and the service. For example: Maria Lopez, Tue Oct 14 10:30am, haircut. Paste straight from a sheet or calendar.\" },\n { \"name\": \"business\", \"label\": \"Your business\", \"type\": \"string\", \"required\": true, \"multiline\": true, \"description\": \"Your business name, where the appointment is, and how a client should reschedule (a phone number or link). Add anything every client should know, like 'arrive 10 minutes early'.\" },\n { \"name\": \"channel\", \"label\": \"Send as\", \"type\": \"string\", \"required\": true, \"default\": \"text message\", \"enum\": [\"text message\", \"email\"], \"description\": \"How the reminders will be sent. Text messages are kept short; emails get a subject line.\" }\n ],\n \"nodes\": [\n { \"id\": \"start\", \"type\": \"trigger\", \"position\": { \"x\": 0, \"y\": 0 }, \"data\": { \"label\": \"Start\" } },\n { \"id\": \"each\", \"type\": \"loop\", \"position\": { \"x\": 0, \"y\": 120 }, \"data\": { \"label\": \"Write each reminder\", \"loopType\": \"for-each\", \"items\": \"{{ appointments }}\", \"arraySource\": \"{{ appointments }}\", \"itemVariable\": \"appt\", \"body\": [\"reminder\"], \"onComplete\": \"no_invented_details\", \"maxIterations\": 100, \"collect\": \"text\", \"separator\": \"\\n\\n---\\n\\n\" } },\n { \"id\": \"reminder\", \"type\": \"prompt\", \"parentId\": \"each\", \"position\": { \"x\": 260, \"y\": 120 }, \"data\": { \"label\": \"Write one reminder\", \"sourceType\": \"raw\", \"source\": \"\", \"rawPrompt\": \"Write one appointment reminder to send as a {{ channel }}.\\n\\nTHE APPOINTMENT (one line from the owner's list)\\n{{ appt }}\\n\\nTHE BUSINESS\\n{{ business }}\\n\\nThe reminder must say who it is from, what the appointment is for, the day and time exactly as written in the appointment line, and how to reschedule using only the details given for the business. Address the client by first name. Keep a text message under 300 characters. For an email, put 'Subject: ' and a short subject on the first line, then the body.\\n\\nIf the appointment line is missing the client's name or the day and time, do NOT write a reminder. Return exactly: SKIPPED: <the line> - missing <what is missing>.\\n\\nNever invent a time, address, price, policy or rescheduling detail. Return the client's name on the first line, then the reminder ready to send. No commentary.\" } },\n { \"id\": \"no_invented_details\", \"type\": \"guardrail\", \"position\": { \"x\": 0, \"y\": 240 }, \"data\": { \"label\": \"Times and details match the list\", \"systemPrompt\": \"You are checking appointment reminders against the owner's own list and business details.\\n\\nTHE OWNER'S APPOINTMENT LIST\\n{{ appointments }}\\n\\nTHE OWNER'S BUSINESS DETAILS\\n{{ business }}\\n\\nA reminder FAILS if its day or time is a different day or time from its line in the list (the same time written differently, such as 10:30am and 10:30 AM, is NOT different), if it names a client who is not in the list, or if it states an address, phone number, link, price or policy that is not in the business details. Lines marked SKIPPED are correct behaviour and must pass. Wording and friendliness never fail a reminder.\\n\\nReply with JSON only: {\\\"pass\\\": true} or {\\\"pass\\\": false, \\\"reason\\\": \\\"<which reminder and what does not match>\\\"}.\", \"passExpression\": \"{{ pass }}\" } },\n { \"id\": \"final\", \"type\": \"transformer\", \"position\": { \"x\": 0, \"y\": 340 }, \"data\": { \"label\": \"Title the reminders\", \"mode\": \"template\", \"template\": \"REMINDERS ({{ channel }})\\n\\n{{ each }}\" } },\n { \"id\": \"out\", \"type\": \"output\", \"position\": { \"x\": 0, \"y\": 440 }, \"data\": { \"label\": \"Reminders\" } }\n ],\n \"edges\": [\n { \"id\": \"e-start-each\", \"source\": \"start\", \"target\": \"each\" },\n { \"id\": \"e-guard-final\", \"source\": \"no_invented_details\", \"target\": \"final\" },\n { \"id\": \"e-final-out\", \"source\": \"final\", \"target\": \"out\" }\n ]\n}\n",
108
+ "workflows/competitor-teardown/workflow.pdflow": "{\n \"version\": \"1.0\",\n \"metadata\": {\n \"id\": \"competitor-teardown\",\n \"name\": \"Competitor Teardown\",\n \"description\": \"Researches each competitor into the same shape, then names where you are differentiated and where you are exposed.\",\n \"tags\": [\"Marketing\"]\n },\n \"parameters\": [\n { \"name\": \"ours\", \"label\": \"Your product\", \"type\": \"string\", \"required\": true, \"multiline\": true, \"description\": \"In a few sentences: what do you sell, to whom, and what do you claim makes it different?\" },\n { \"name\": \"rivals\", \"label\": \"Competitors\", \"type\": \"string\", \"required\": true, \"multiline\": true, \"description\": \"List the competitors to tear down - one name per line.\" }\n ],\n \"nodes\": [\n { \"id\": \"start\", \"type\": \"trigger\", \"position\": { \"x\": 0, \"y\": 0 }, \"data\": { \"label\": \"Start\" } },\n { \"id\": \"each\", \"type\": \"loop\", \"position\": { \"x\": 0, \"y\": 300 }, \"data\": { \"label\": \"Profile each competitor\", \"loopType\": \"for-each\", \"items\": \"{{ rivals }}\", \"arraySource\": \"{{ rivals }}\", \"itemVariable\": \"rival\", \"body\": [\"profile\"], \"onComplete\": \"gather\", \"maxIterations\": 12 } },\n { \"id\": \"profile\", \"type\": \"agent\", \"parentId\": \"each\", \"position\": { \"x\": 260, \"y\": 300 }, \"data\": { \"label\": \"Profile one competitor\", \"systemPrompt\": \"You profile one competitor at a time into a fixed shape so the profiles can be compared. Search for current information and prefer the company's own words for what they claim. Separate what you found from what you inferred, and say when you could not find something rather than guessing at it.\", \"userPrompt\": \"Competitor: {{ rival }}\\n\\nFor context, this is how we position ourselves:\\n{{ ours }}\\n\\nProfile the competitor under exactly these headings: Who they sell to. What they claim. What they actually appear to do well. Where they are weak. How they price, if findable. Keep it under 250 words and mark anything you inferred.\", \"maxIterations\": 8, \"outputMode\": \"final-response\" } },\n { \"id\": \"profile_tools\", \"type\": \"tool\", \"position\": { \"x\": 520, \"y\": 300 }, \"data\": { \"label\": \"Search\", \"attachedTo\": \"profile\", \"tools\": [\"web_search\"] } },\n { \"id\": \"gather\", \"type\": \"transformer\", \"position\": { \"x\": 0, \"y\": 420 }, \"data\": { \"label\": \"Gather profiles\", \"mode\": \"template\", \"template\": \"OUR POSITIONING\\n{{ ours }}\\n\\nCOMPETITOR PROFILES\\n{{ each }}\" } },\n { \"id\": \"gaps\", \"type\": \"prompt\", \"position\": { \"x\": 0, \"y\": 520 }, \"data\": { \"label\": \"Differentiation and exposure\", \"sourceType\": \"raw\", \"source\": \"\", \"rawPrompt\": \"Compare the profiles below against our own positioning.\\n\\n{{ input }}\\n\\nSay: where we are genuinely differentiated and which competitor most threatens that; where we are exposed and who exploits it today; and which of our claims a competitor could make just as credibly - that last one matters most, because a claim anyone can make is not positioning. Be blunt. Mark anything resting on an inference rather than a found fact.\" } },\n { \"id\": \"out\", \"type\": \"output\", \"position\": { \"x\": 0, \"y\": 620 }, \"data\": { \"label\": \"Teardown\" } }\n ],\n \"edges\": [\n { \"id\": \"e3\", \"source\": \"start\", \"target\": \"each\" },\n { \"id\": \"e4\", \"source\": \"gather\", \"target\": \"gaps\" },\n { \"id\": \"e5\", \"source\": \"gaps\", \"target\": \"out\" }\n ]\n}\n",
109
+ "workflows/feedback-to-roadmap-themes/workflow.pdflow": "{\n \"version\": \"1.0\",\n \"metadata\": {\n \"id\": \"feedback-to-roadmap-themes\",\n \"name\": \"Feedback to Roadmap Themes\",\n \"description\": \"Turns a pile of customer feedback into ranked themes, one item at a time, so nothing is lost to a single oversized summary.\",\n \"tags\": [\"Customers\"]\n },\n \"parameters\": [\n { \"name\": \"feedback\", \"label\": \"Customer feedback\", \"type\": \"string\", \"required\": true, \"multiline\": true, \"description\": \"Paste the feedback - one item per line (a ticket, review, or survey comment each).\" }\n ],\n \"nodes\": [\n { \"id\": \"start\", \"type\": \"trigger\", \"position\": { \"x\": 0, \"y\": 0 }, \"data\": { \"label\": \"Start\" } },\n { \"id\": \"each\", \"type\": \"loop\", \"position\": { \"x\": 0, \"y\": 200 }, \"data\": { \"label\": \"Classify each item\", \"loopType\": \"for-each\", \"items\": \"{{ feedback }}\", \"arraySource\": \"{{ feedback }}\", \"itemVariable\": \"entry\", \"body\": [\"classify\"], \"onComplete\": \"gather\", \"maxIterations\": 60 } },\n { \"id\": \"classify\", \"type\": \"prompt\", \"parentId\": \"each\", \"position\": { \"x\": 260, \"y\": 200 }, \"data\": { \"label\": \"Classify one item\", \"sourceType\": \"raw\", \"source\": \"\", \"rawPrompt\": \"Classify this single piece of customer feedback.\\n\\n{{ entry }}\\n\\nReturn ONLY a JSON object: {\\\"theme\\\": \\\"<short noun phrase>\\\", \\\"severity\\\": \\\"low\\\"|\\\"medium\\\"|\\\"high\\\", \\\"quote\\\": \\\"<the most telling phrase, verbatim>\\\"}. Use the customer's own framing for the theme. If the item says nothing actionable, use the theme \\\"none\\\".\" } },\n { \"id\": \"gather\", \"type\": \"transformer\", \"position\": { \"x\": 0, \"y\": 320 }, \"data\": { \"label\": \"Gather classifications\", \"mode\": \"template\", \"template\": \"CLASSIFIED FEEDBACK\\n\\n{{ each }}\" } },\n { \"id\": \"cluster\", \"type\": \"prompt\", \"position\": { \"x\": 0, \"y\": 420 }, \"data\": { \"label\": \"Cluster and rank\", \"sourceType\": \"raw\", \"source\": \"\", \"rawPrompt\": \"Merge the classifications below into themes and rank them.\\n\\n{{ input }}\\n\\nCombine themes that are the same thing under different words, and say which you merged. Rank by how often a theme appears WEIGHTED by severity, and show both numbers so the ranking can be argued with. Drop \\\"none\\\". For each theme give one verbatim customer quote.\\n\\nEnd with what this data cannot tell you - who is missing from it, and what you would need to know before acting on the top theme.\" } },\n { \"id\": \"out\", \"type\": \"output\", \"position\": { \"x\": 0, \"y\": 520 }, \"data\": { \"label\": \"Themes\" } }\n ],\n \"edges\": [\n { \"id\": \"e2\", \"source\": \"start\", \"target\": \"each\" },\n { \"id\": \"e3\", \"source\": \"gather\", \"target\": \"cluster\" },\n { \"id\": \"e4\", \"source\": \"cluster\", \"target\": \"out\" }\n ]\n}\n",
110
+ "workflows/marketing-strategy-pipeline/workflow.pdflow": "{\n \"version\": \"1.0\",\n \"metadata\": {\n \"id\": \"marketing-strategy-pipeline\",\n \"name\": \"Marketing Strategy Pipeline\",\n \"description\": \"Researches audience, messaging and channel for a product brief in parallel, then turns the three passes into one strategy.\",\n \"tags\": [\"Marketing\"]\n },\n \"parameters\": [\n { \"name\": \"brief\", \"label\": \"Product brief\", \"type\": \"string\", \"required\": true, \"multiline\": true, \"description\": \"The product or service this strategy is for - yours or a competitor's - and who you think it is for. The more concrete this is, the less the research has to guess at.\" }\n ],\n \"nodes\": [\n { \"id\": \"start\", \"type\": \"trigger\", \"position\": { \"x\": 0, \"y\": 0 }, \"data\": { \"label\": \"Start\" } },\n { \"id\": \"angles\", \"type\": \"parallel\", \"position\": { \"x\": 220, \"y\": 0 }, \"data\": { \"label\": \"Research the three angles\", \"mode\": \"fork\", \"branches\": [ { \"id\": \"angles-b1\", \"label\": \"Audience\", \"nodes\": [\"audience_pass\"] }, { \"id\": \"angles-b2\", \"label\": \"Messaging\", \"nodes\": [\"messaging_pass\"] }, { \"id\": \"angles-b3\", \"label\": \"Channel\", \"nodes\": [\"channel_pass\"] } ], \"forkCount\": 3, \"forkLabels\": [\"Audience\", \"Messaging\", \"Channel\"], \"waitFor\": \"all\", \"mergeStrategy\": \"object\", \"maxConcurrency\": 3 } },\n { \"id\": \"collect\", \"type\": \"transformer\", \"position\": { \"x\": 440, \"y\": 0 }, \"data\": { \"label\": \"Gather the passes\", \"mode\": \"template\", \"template\": \"AUDIENCE\\n\\n{{ audience_pass }}\\n\\nMESSAGING\\n\\n{{ messaging_pass }}\\n\\nCHANNEL\\n\\n{{ channel_pass }}\\n\\nORIGINAL BRIEF\\n\\n{{ brief }}\" } },\n { \"id\": \"strategy\", \"type\": \"prompt\", \"position\": { \"x\": 660, \"y\": 0 }, \"data\": { \"label\": \"Write the strategy\", \"sourceType\": \"raw\", \"source\": \"\", \"rawPrompt\": \"Turn the research below into a marketing strategy.\\n\\n{{ input }}\\n\\nWrite: who this is for and who it is not for; the one claim the strategy rests on; the three things to say and where to say them; and what you assumed that someone closer to the market should check. Do not pad. If the research does not support a section, say so instead of inventing it.\\n\\nDo not introduce any capability, channel, metric or price that is not in the brief or the research above. Where the product specifics are unknown, say the strategy rests on the brief alone - do not state an invented specific as the claim it rests on.\" } },\n { \"id\": \"out\", \"type\": \"output\", \"position\": { \"x\": 880, \"y\": 0 }, \"data\": { \"label\": \"Strategy\" } },\n { \"id\": \"audience_pass\", \"type\": \"prompt\", \"position\": { \"x\": 280, \"y\": -90 }, \"data\": { \"label\": \"Audience research\", \"sourceType\": \"raw\", \"source\": \"\", \"rawPrompt\": \"You are researching the AUDIENCE angle of a marketing strategy.\\n\\nProduct brief:\\n{{ brief }}\\n\\nWho specifically is this for, what are they trying to get done, and what are they doing instead today?\\n\\nSearch for whatever helps, including the product itself - researching a competitor or a named product is a normal use of this. Finding little about it is also a normal result: say so and work from the brief alone.\\n\\nEvery capability, channel, metric or price you state must come from the brief or from a source you found. If you have neither, say that plainly. Never fill the gap by inferring what a product like this usually does - a plausible category is not evidence.\\n\\nMark anything you inferred rather than found. Be concrete and brief - at most 250 words.\" } },\n { \"id\": \"messaging_pass\", \"type\": \"prompt\", \"position\": { \"x\": 280, \"y\": 0 }, \"data\": { \"label\": \"Messaging research\", \"sourceType\": \"raw\", \"source\": \"\", \"rawPrompt\": \"You are researching the MESSAGING angle of a marketing strategy.\\n\\nProduct brief:\\n{{ brief }}\\n\\nWhat do these people already believe, and what specific claim would move them? Say what the product is NOT for.\\n\\nSearch for whatever helps, including the product itself - researching a competitor or a named product is a normal use of this. Finding little about it is also a normal result: say so and work from the brief alone.\\n\\nEvery capability, channel, metric or price you state must come from the brief or from a source you found. If you have neither, say that plainly. Never fill the gap by inferring what a product like this usually does - a plausible category is not evidence.\\n\\nMark anything you inferred rather than found. Be concrete and brief - at most 250 words.\" } },\n { \"id\": \"channel_pass\", \"type\": \"prompt\", \"position\": { \"x\": 280, \"y\": 90 }, \"data\": { \"label\": \"Channel research\", \"sourceType\": \"raw\", \"source\": \"\", \"rawPrompt\": \"You are researching the CHANNEL angle of a marketing strategy.\\n\\nProduct brief:\\n{{ brief }}\\n\\nWhere does this audience already look for answers, and what format earns their attention there?\\n\\nSearch for whatever helps, including the product itself - researching a competitor or a named product is a normal use of this. Finding little about it is also a normal result: say so and work from the brief alone.\\n\\nEvery capability, channel, metric or price you state must come from the brief or from a source you found. If you have neither, say that plainly. Never fill the gap by inferring what a product like this usually does - a plausible category is not evidence.\\n\\nMark anything you inferred rather than found. Be concrete and brief - at most 250 words.\" } }\n ],\n \"edges\": [\n { \"id\": \"e-start-angles\", \"source\": \"start\", \"target\": \"angles\" },\n { \"id\": \"e-angles-audience_pass-f0\", \"source\": \"angles\", \"target\": \"audience_pass\", \"sourceHandle\": \"fork-0\", \"label\": \"Audience\" },\n { \"id\": \"e-audience_pass-collect-f0\", \"source\": \"audience_pass\", \"target\": \"collect\", \"targetHandle\": \"input-0\" },\n { \"id\": \"e-angles-messaging_pass-f1\", \"source\": \"angles\", \"target\": \"messaging_pass\", \"sourceHandle\": \"fork-1\", \"label\": \"Messaging\" },\n { \"id\": \"e-messaging_pass-collect-f1\", \"source\": \"messaging_pass\", \"target\": \"collect\", \"targetHandle\": \"input-1\" },\n { \"id\": \"e-angles-channel_pass-f2\", \"source\": \"angles\", \"target\": \"channel_pass\", \"sourceHandle\": \"fork-2\", \"label\": \"Channel\" },\n { \"id\": \"e-channel_pass-collect-f2\", \"source\": \"channel_pass\", \"target\": \"collect\", \"targetHandle\": \"input-2\" },\n { \"id\": \"e-collect-strategy\", \"source\": \"collect\", \"target\": \"strategy\" },\n { \"id\": \"e-strategy-out\", \"source\": \"strategy\", \"target\": \"out\" }\n ]\n}\n",
111
+ "workflows/morning-brief/workflow.pdflow": "{\n \"version\": \"1.0\",\n \"metadata\": {\n \"id\": \"morning-brief\",\n \"name\": \"Morning Brief\",\n \"description\": \"Checks the web for what changed on each topic you follow and writes a short, sourced brief. 'Nothing new' is a valid answer, never filler.\",\n \"tags\": [\"Research\"]\n },\n \"parameters\": [\n { \"name\": \"topics\", \"label\": \"Topics to follow\", \"type\": \"string\", \"required\": true, \"multiline\": true, \"description\": \"One topic per line, up to 12: a competitor, a supplier, a local regulation, an industry, a question you keep asking. For example: new bakeries opening in Tempe.\" },\n { \"name\": \"reader\", \"label\": \"Who it is for\", \"type\": \"string\", \"required\": false, \"multiline\": true, \"default\": \"\", \"description\": \"Optional. Who the brief is for and what they decide with it, so it can lead with what matters to them. For example: I own a bakery and decide what to stock and what to promote.\" }\n ],\n \"nodes\": [\n { \"id\": \"start\", \"type\": \"trigger\", \"position\": { \"x\": 0, \"y\": 0 }, \"data\": { \"label\": \"Start\" } },\n { \"id\": \"each\", \"type\": \"loop\", \"position\": { \"x\": 0, \"y\": 120 }, \"data\": { \"label\": \"Check each topic\", \"loopType\": \"for-each\", \"items\": \"{{ topics }}\", \"arraySource\": \"{{ topics }}\", \"itemVariable\": \"topic\", \"body\": [\"check\"], \"onComplete\": \"gather\", \"maxIterations\": 12, \"collect\": \"text\", \"separator\": \"\\n\\n---\\n\\n\" } },\n { \"id\": \"check\", \"type\": \"agent\", \"parentId\": \"each\", \"position\": { \"x\": 260, \"y\": 120 }, \"data\": { \"label\": \"What changed on one topic\", \"systemPrompt\": \"You check one topic for recent news on behalf of a busy reader. Search before answering, and search more than once if the first results are old or off-topic. Only report items you found a dated source for, and give the date and the source for each. Prefer the last few days; say how old anything older is. If you found nothing recent and relevant, say exactly 'Nothing new found' - that is a useful answer, and padding it with old or generic material is not.\", \"userPrompt\": \"Topic: {{ topic }}\\n\\nWho the brief is for (may be empty): {{ reader }}\\n\\nWhat is new on this topic? At most 150 words: up to three items, each with its date and source.\", \"maxIterations\": 6, \"outputMode\": \"final-response\" } },\n { \"id\": \"check_tools\", \"type\": \"tool\", \"position\": { \"x\": 520, \"y\": 120 }, \"data\": { \"label\": \"Search\", \"attachedTo\": \"check\", \"tools\": [\"web_search\"] } },\n { \"id\": \"gather\", \"type\": \"transformer\", \"position\": { \"x\": 0, \"y\": 240 }, \"data\": { \"label\": \"Gather the findings\", \"mode\": \"template\", \"template\": \"WHO THE BRIEF IS FOR\\n{{ reader }}\\n\\nFINDINGS BY TOPIC\\n{{ each }}\" } },\n { \"id\": \"write\", \"type\": \"prompt\", \"position\": { \"x\": 0, \"y\": 340 }, \"data\": { \"label\": \"Write the brief\", \"sourceType\": \"raw\", \"source\": \"\", \"rawPrompt\": \"Write a morning brief from the findings below.\\n\\n{{ input }}\\n\\nStart with 'Worth your attention': at most three items that matter most to the reader, each one sentence plus why it matters, ending with its date and source in brackets. Then one short section per topic, keeping every date and source from the findings. List topics with nothing new in a single closing line rather than giving each a section.\\n\\nUse only what the findings contain. Do not add background knowledge, predictions or advice that the findings do not support. If every topic found nothing new, say so in one line - a short brief is a correct brief.\" } },\n { \"id\": \"sourced\", \"type\": \"guardrail\", \"position\": { \"x\": 0, \"y\": 440 }, \"data\": { \"label\": \"Every item has a source\", \"systemPrompt\": \"You are checking a news brief for one thing: does every reported news item carry a date and a source? An item stated as news with no source FAILS. Lines saying nothing new was found are fine and need no source.\\n\\nReply with JSON only: {\\\"pass\\\": true} or {\\\"pass\\\": false, \\\"reason\\\": \\\"<which item has no source>\\\"}.\", \"passExpression\": \"{{ pass }}\" } },\n { \"id\": \"out\", \"type\": \"output\", \"position\": { \"x\": 0, \"y\": 540 }, \"data\": { \"label\": \"Brief\" } }\n ],\n \"edges\": [\n { \"id\": \"e-start-each\", \"source\": \"start\", \"target\": \"each\" },\n { \"id\": \"e-gather-write\", \"source\": \"gather\", \"target\": \"write\" },\n { \"id\": \"e-write-guard\", \"source\": \"write\", \"target\": \"sourced\" },\n { \"id\": \"e-guard-out\", \"source\": \"sourced\", \"target\": \"out\" }\n ]\n}\n",
112
+ "workflows/research-pipeline/workflow.pdflow": "{\n \"version\": \"1.0\",\n \"metadata\": {\n \"id\": \"research-pipeline\",\n \"name\": \"Research Pipeline\",\n \"description\": \"Breaks a question into sub-questions, researches each one, then synthesizes an answer that must cite its sources.\",\n \"tags\": [\"Research\"]\n },\n \"parameters\": [\n { \"name\": \"question\", \"label\": \"Your question\", \"type\": \"string\", \"required\": true, \"multiline\": true, \"description\": \"What do you want researched? One question, as specific as you can make it.\" }\n ],\n \"nodes\": [\n { \"id\": \"start\", \"type\": \"trigger\", \"position\": { \"x\": 0, \"y\": 0 }, \"data\": { \"label\": \"Start\" } },\n { \"id\": \"decompose\", \"type\": \"prompt\", \"position\": { \"x\": 0, \"y\": 200 }, \"data\": { \"label\": \"Break it down\", \"sourceType\": \"raw\", \"source\": \"\", \"rawPrompt\": \"Break this research question into between three and six sub-questions that together answer it. Each must be answerable on its own and worth answering separately.\\n\\nQuestion: {{ question }}\\n\\nReturn ONLY a JSON array of strings. No commentary, no code fence.\" } },\n { \"id\": \"each\", \"type\": \"loop\", \"position\": { \"x\": 0, \"y\": 300 }, \"data\": { \"label\": \"Research each sub-question\", \"loopType\": \"for-each\", \"items\": \"{{ decompose }}\", \"arraySource\": \"{{ decompose }}\", \"itemVariable\": \"subq\", \"body\": [\"sub_pass\"], \"onComplete\": \"gather\", \"maxIterations\": 6 } },\n { \"id\": \"sub_pass\", \"type\": \"agent\", \"parentId\": \"each\", \"position\": { \"x\": 260, \"y\": 300 }, \"data\": { \"label\": \"Answer one sub-question\", \"systemPrompt\": \"You research one narrow question at a time. Search before answering, and search more than once - one query returns one neighbourhood of an argument. Attribute every load-bearing claim to a source with its date. Separate what the sources support from what you inferred. If the evidence is thin, say so; that is a finding.\", \"userPrompt\": \"Sub-question: {{ subq }}\\n\\nContext - the overall question being researched: {{ question }}\\n\\nAnswer in at most 250 words, with sources.\", \"maxIterations\": 6, \"outputMode\": \"final-response\" } },\n { \"id\": \"sub_tools\", \"type\": \"tool\", \"position\": { \"x\": 520, \"y\": 300 }, \"data\": { \"label\": \"Search\", \"attachedTo\": \"sub_pass\", \"tools\": [\"web_search\"] } },\n { \"id\": \"gather\", \"type\": \"transformer\", \"position\": { \"x\": 0, \"y\": 420 }, \"data\": { \"label\": \"Gather findings\", \"mode\": \"template\", \"template\": \"ORIGINAL QUESTION\\n{{ question }}\\n\\nSUB-QUESTIONS\\n{{ decompose }}\\n\\nFINDINGS\\n{{ each }}\" } },\n { \"id\": \"synthesize\", \"type\": \"prompt\", \"position\": { \"x\": 0, \"y\": 520 }, \"data\": { \"label\": \"Synthesize\", \"sourceType\": \"raw\", \"source\": \"\", \"rawPrompt\": \"Write the answer to the original question from the findings below.\\n\\n{{ input }}\\n\\nLead with the answer. Attribute every load-bearing claim to its source. Where findings disagree, report the disagreement rather than picking a winner silently. Mark inferences as inferences. End with how confident you are and what would change your mind.\" } },\n { \"id\": \"sourced\", \"type\": \"guardrail\", \"position\": { \"x\": 0, \"y\": 620 }, \"data\": { \"label\": \"Sources present\", \"systemPrompt\": \"You are checking one thing: does the text below attribute its load-bearing factual claims to named sources? A synthesis that reads as confident but cites nothing FAILS. Inferences that are explicitly marked as inferences are acceptable and do not need a source.\\n\\nReply with JSON only: {\\\"pass\\\": true} or {\\\"pass\\\": false, \\\"reason\\\": \\\"<one sentence>\\\"}.\", \"passExpression\": \"{{ pass }}\" } },\n { \"id\": \"out\", \"type\": \"output\", \"position\": { \"x\": 0, \"y\": 720 }, \"data\": { \"label\": \"Answer\" } }\n ],\n \"edges\": [\n { \"id\": \"e2\", \"source\": \"start\", \"target\": \"decompose\" },\n { \"id\": \"e3\", \"source\": \"decompose\", \"target\": \"each\" },\n { \"id\": \"e4\", \"source\": \"gather\", \"target\": \"synthesize\" },\n { \"id\": \"e5\", \"source\": \"synthesize\", \"target\": \"sourced\" },\n { \"id\": \"e6\", \"source\": \"sourced\", \"target\": \"out\" }\n ]\n}\n",
113
+ "workflows/review-responder/workflow.pdflow": "{\n \"version\": \"1.0\",\n \"metadata\": {\n \"id\": \"review-responder\",\n \"name\": \"Review Responder\",\n \"description\": \"Drafts a reply to each customer review you paste, takes unhappy reviews offline politely, and never promises a refund or discount you did not offer.\",\n \"tags\": [\"Customers\"]\n },\n \"parameters\": [\n { \"name\": \"reviews\", \"label\": \"Reviews\", \"type\": \"string\", \"required\": true, \"multiline\": true, \"description\": \"Paste up to 30 reviews, from Google, Yelp, Facebook or anywhere. Star ratings and reviewer names help if you have them.\" },\n { \"name\": \"business\", \"label\": \"Your business\", \"type\": \"string\", \"required\": true, \"multiline\": true, \"description\": \"Your business name, who signs the replies, how an unhappy customer can reach you directly, and anything you are willing to offer (for example 'we can rebook for free'). Replies offer nothing beyond what you write here.\" }\n ],\n \"nodes\": [\n { \"id\": \"start\", \"type\": \"trigger\", \"position\": { \"x\": 0, \"y\": 0 }, \"data\": { \"label\": \"Start\" } },\n { \"id\": \"extract\", \"type\": \"prompt\", \"position\": { \"x\": 0, \"y\": 120 }, \"data\": { \"label\": \"Separate the reviews\", \"sourceType\": \"raw\", \"source\": \"\", \"rawPrompt\": \"Split the text below into individual customer reviews. Keep each review's original wording, and keep the reviewer's name and star rating with it when they are present. Do not summarise, merge, reorder or invent reviews.\\n\\n{{ reviews }}\\n\\nReturn ONLY a JSON array of strings, one per review. No commentary, no code fence.\" } },\n { \"id\": \"each\", \"type\": \"loop\", \"position\": { \"x\": 0, \"y\": 240 }, \"data\": { \"label\": \"Reply to each review\", \"loopType\": \"for-each\", \"items\": \"{{ extract }}\", \"arraySource\": \"{{ extract }}\", \"itemVariable\": \"review\", \"body\": [\"reply\"], \"onComplete\": \"no_unoffered_promises\", \"maxIterations\": 30, \"collect\": \"text\", \"separator\": \"\\n\\n---\\n\\n\" } },\n { \"id\": \"reply\", \"type\": \"prompt\", \"parentId\": \"each\", \"position\": { \"x\": 260, \"y\": 240 }, \"data\": { \"label\": \"Draft one reply\", \"sourceType\": \"raw\", \"source\": \"\", \"rawPrompt\": \"Draft a public reply from the business to this customer review.\\n\\nTHE REVIEW\\n{{ review }}\\n\\nTHE BUSINESS\\n{{ business }}\\n\\nFirst decide whether the review is POSITIVE, MIXED or NEGATIVE.\\n- POSITIVE: thank them, mention one specific thing they said, keep it to two or three sentences.\\n- MIXED: thank them for the good, acknowledge the problem without arguing, and invite them to get in touch.\\n- NEGATIVE: stay calm and brief, apologise that their experience fell short without admitting fault or disputing their account, and give the direct contact from the business details so it can be sorted out privately.\\n\\nNever promise a refund, discount, free service or compensation unless the business details offer it. Never repeat a customer's personal details, and never mention anything about them that is not in the review. Sign with the name given in the business details.\\n\\nReturn the first line as 'POSITIVE', 'MIXED' or 'NEGATIVE' followed by the reviewer's name if known, then the reply ready to post. No commentary.\" } },\n { \"id\": \"no_unoffered_promises\", \"type\": \"guardrail\", \"position\": { \"x\": 0, \"y\": 360 }, \"data\": { \"label\": \"No promises you did not offer\", \"systemPrompt\": \"You are checking draft replies to customer reviews.\\n\\nWHAT THE BUSINESS OFFERS\\n{{ business }}\\n\\nTHE ORIGINAL REVIEWS\\n{{ reviews }}\\n\\nA reply FAILS if it promises a refund, discount, free service or other compensation that is not in WHAT THE BUSINESS OFFERS, if it argues with or blames the customer, or if it reveals a personal detail about the customer that is not in their own review. Using the reviewer's name, or repeating what they themselves wrote, is fine. A polite apology without an offer is fine.\\n\\nReply with JSON only: {\\\"pass\\\": true} or {\\\"pass\\\": false, \\\"reason\\\": \\\"<which reply and what it does>\\\"}.\", \"passExpression\": \"{{ pass }}\" } },\n { \"id\": \"final\", \"type\": \"transformer\", \"position\": { \"x\": 0, \"y\": 460 }, \"data\": { \"label\": \"Title the replies\", \"mode\": \"template\", \"template\": \"DRAFT REPLIES\\n\\n{{ each }}\" } },\n { \"id\": \"out\", \"type\": \"output\", \"position\": { \"x\": 0, \"y\": 560 }, \"data\": { \"label\": \"Replies\" } }\n ],\n \"edges\": [\n { \"id\": \"e-start-extract\", \"source\": \"start\", \"target\": \"extract\" },\n { \"id\": \"e-extract-each\", \"source\": \"extract\", \"target\": \"each\" },\n { \"id\": \"e-guard-final\", \"source\": \"no_unoffered_promises\", \"target\": \"final\" },\n { \"id\": \"e-final-out\", \"source\": \"final\", \"target\": \"out\" }\n ]\n}\n",
114
+ "workflows/rfp-questionnaire-response/workflow.pdflow": "{\n \"version\": \"1.0\",\n \"metadata\": {\n \"id\": \"rfp-questionnaire-response\",\n \"name\": \"RFP / Questionnaire Response\",\n \"description\": \"Extracts every question from an RFP or vendor questionnaire, drafts each answer from your own documents, and refuses to claim anything the documents do not support.\",\n \"tags\": [\"Documents\"]\n },\n \"parameters\": [\n { \"name\": \"doc\", \"label\": \"RFP or questionnaire\", \"type\": \"string\", \"required\": true, \"multiline\": true, \"description\": \"Paste the RFP or questionnaire text.\" }\n ],\n \"nodes\": [\n { \"id\": \"start\", \"type\": \"trigger\", \"position\": { \"x\": 0, \"y\": 0 }, \"data\": { \"label\": \"Start\" } },\n { \"id\": \"extract\", \"type\": \"prompt\", \"position\": { \"x\": 0, \"y\": 200 }, \"data\": { \"label\": \"Extract the questions\", \"sourceType\": \"raw\", \"source\": \"\", \"rawPrompt\": \"Extract every question that requires an answer from the document below. Keep each question's original wording. Do not merge, reorder or invent questions.\\n\\n{{ doc }}\\n\\nReturn ONLY a JSON array of strings. No commentary, no code fence.\" } },\n { \"id\": \"each\", \"type\": \"loop\", \"position\": { \"x\": 0, \"y\": 300 }, \"data\": { \"label\": \"Answer each question\", \"loopType\": \"for-each\", \"items\": \"{{ extract }}\", \"arraySource\": \"{{ extract }}\", \"itemVariable\": \"q\", \"body\": [\"answer\"], \"onComplete\": \"assemble\", \"maxIterations\": 40 } },\n { \"id\": \"answer\", \"type\": \"agent\", \"parentId\": \"each\", \"position\": { \"x\": 260, \"y\": 300 }, \"data\": { \"label\": \"Draft one answer\", \"systemPrompt\": \"You draft answers to procurement and security questionnaires, grounded ONLY in the documents available to you in this workspace. Search the workspace before answering. Quote or reference the document that supports each claim. If you cannot find support for a capability, say plainly that it is not evidenced here and describe what would be needed to answer - never write a plausible answer to fill the gap. An unanswered question is recoverable; a false claim in a binding document is not.\", \"userPrompt\": \"Question: {{ q }}\\n\\nDraft the answer, then on a final line state either SUPPORTED (with the document you relied on) or UNSUPPORTED.\", \"maxIterations\": 8, \"outputMode\": \"final-response\" } },\n { \"id\": \"answer_tools\", \"type\": \"tool\", \"position\": { \"x\": 520, \"y\": 300 }, \"data\": { \"label\": \"Read the workspace\", \"attachedTo\": \"answer\", \"tools\": [\"read_file\", \"list_files\", \"search_files\", \"stat_file\"] } },\n { \"id\": \"assemble\", \"type\": \"transformer\", \"position\": { \"x\": 0, \"y\": 420 }, \"data\": { \"label\": \"Assemble\", \"mode\": \"template\", \"template\": \"DRAFT RESPONSE\\n\\n{{ each }}\" } },\n { \"id\": \"no_overclaim\", \"type\": \"guardrail\", \"position\": { \"x\": 0, \"y\": 520 }, \"data\": { \"label\": \"No unsupported claims\", \"systemPrompt\": \"You are checking a draft questionnaire response for claims that its own evidence does not support. An answer marked UNSUPPORTED that honestly says so is FINE and must pass. An answer that asserts a capability, certification or control while showing no supporting document FAILS.\\n\\nReply with JSON only: {\\\"pass\\\": true} or {\\\"pass\\\": false, \\\"reason\\\": \\\"<which answer and why>\\\"}.\", \"passExpression\": \"{{ pass }}\" } },\n { \"id\": \"final\", \"type\": \"prompt\", \"position\": { \"x\": 0, \"y\": 620 }, \"data\": { \"label\": \"Response and gap list\", \"sourceType\": \"raw\", \"source\": \"\", \"rawPrompt\": \"Produce two sections from the draft below.\\n\\n{{ input }}\\n\\nFirst: the response, question by question, using only the supported answers.\\nSecond: a gap list of every question marked UNSUPPORTED, each with what evidence would be needed to answer it. Do not soften the gap list - it is the part a human must act on.\" } },\n { \"id\": \"out\", \"type\": \"output\", \"position\": { \"x\": 0, \"y\": 720 }, \"data\": { \"label\": \"Response\" } }\n ],\n \"edges\": [\n { \"id\": \"e2\", \"source\": \"start\", \"target\": \"extract\" },\n { \"id\": \"e3\", \"source\": \"extract\", \"target\": \"each\" },\n { \"id\": \"e4\", \"source\": \"assemble\", \"target\": \"no_overclaim\" },\n { \"id\": \"e5\", \"source\": \"no_overclaim\", \"target\": \"final\" },\n { \"id\": \"e6\", \"source\": \"final\", \"target\": \"out\" }\n ]\n}\n",
115
+ "workflows/weekly-social-posts/workflow.pdflow": "{\n \"version\": \"1.0\",\n \"metadata\": {\n \"id\": \"weekly-social-posts\",\n \"name\": \"Weekly Social Posts\",\n \"description\": \"Turns this week's news and offers into one ready-to-post draft per platform, in your voice, without inventing prices, dates or offers.\",\n \"tags\": [\"Marketing\"]\n },\n \"parameters\": [\n { \"name\": \"business\", \"label\": \"Your business\", \"type\": \"string\", \"required\": true, \"multiline\": true, \"description\": \"What your business does, who it is for, and how you sound. A few sentences, or paste a past post you liked.\" },\n { \"name\": \"news\", \"label\": \"This week\", \"type\": \"string\", \"required\": true, \"multiline\": true, \"description\": \"What is happening this week: offers, events, new products, a customer story. Include exact prices and dates - the posts will only use what you write here and above.\" },\n { \"name\": \"platforms\", \"label\": \"Platforms\", \"type\": \"string\", \"required\": true, \"multiline\": true, \"default\": \"Instagram\\nFacebook\\nLinkedIn\", \"description\": \"One platform per line, up to 8. For example Instagram, Facebook, LinkedIn.\" }\n ],\n \"nodes\": [\n { \"id\": \"start\", \"type\": \"trigger\", \"position\": { \"x\": 0, \"y\": 0 }, \"data\": { \"label\": \"Start\" } },\n { \"id\": \"angle\", \"type\": \"prompt\", \"position\": { \"x\": 0, \"y\": 120 }, \"data\": { \"label\": \"Pick this week's angle\", \"sourceType\": \"raw\", \"source\": \"\", \"rawPrompt\": \"You plan one week of social posts for a small business.\\n\\nTHE BUSINESS\\n{{ business }}\\n\\nTHIS WEEK\\n{{ news }}\\n\\nPick the single most worth-sharing thing from THIS WEEK and say in two or three sentences why a customer would care. Then list every concrete fact the posts may use - names, prices, dates, times, places, products - copied exactly as written above. If there is no price or date, say so. Do not add any fact that is not written above.\" } },\n { \"id\": \"each\", \"type\": \"loop\", \"position\": { \"x\": 0, \"y\": 240 }, \"data\": { \"label\": \"Draft for each platform\", \"loopType\": \"for-each\", \"items\": \"{{ platforms }}\", \"arraySource\": \"{{ platforms }}\", \"itemVariable\": \"platform\", \"body\": [\"draft\"], \"onComplete\": \"no_invented_facts\", \"maxIterations\": 8, \"collect\": \"text\", \"separator\": \"\\n\\n---\\n\\n\" } },\n { \"id\": \"draft\", \"type\": \"prompt\", \"parentId\": \"each\", \"position\": { \"x\": 260, \"y\": 240 }, \"data\": { \"label\": \"Draft one post\", \"sourceType\": \"raw\", \"source\": \"\", \"rawPrompt\": \"Write one social post for {{ platform }}.\\n\\nTHE BUSINESS AND ITS VOICE\\n{{ business }}\\n\\nTHE ANGLE AND THE FACTS YOU MAY USE\\n{{ angle }}\\n\\nFit the post to how {{ platform }} is actually used: its usual length, tone and hashtag habits. Sound like the business, not like an advertisement. End with one clear thing for the reader to do.\\n\\nUse only the facts listed above. Never invent a price, discount, date, time, product, testimonial or statistic. If the post would be stronger with a fact you do not have, leave it out.\\n\\nReturn the platform name on the first line, then the post text ready to paste. No commentary.\" } },\n { \"id\": \"no_invented_facts\", \"type\": \"guardrail\", \"position\": { \"x\": 0, \"y\": 360 }, \"data\": { \"label\": \"No invented facts\", \"systemPrompt\": \"You are checking draft social posts for a small business against the facts the owner supplied.\\n\\nTHE BUSINESS\\n{{ business }}\\n\\nTHIS WEEK\\n{{ news }}\\n\\nA post FAILS if it states a price, discount, date, time, product, testimonial or statistic that appears in neither THE BUSINESS nor THIS WEEK. Tone, wording, hashtags and calls to action are NOT facts and never fail a post.\\n\\nReply with JSON only: {\\\"pass\\\": true} or {\\\"pass\\\": false, \\\"reason\\\": \\\"<which post and which invented fact>\\\"}.\", \"passExpression\": \"{{ pass }}\" } },\n { \"id\": \"final\", \"type\": \"transformer\", \"position\": { \"x\": 0, \"y\": 460 }, \"data\": { \"label\": \"Title the posts\", \"mode\": \"template\", \"template\": \"THIS WEEK'S POSTS\\n\\n{{ each }}\" } },\n { \"id\": \"out\", \"type\": \"output\", \"position\": { \"x\": 0, \"y\": 560 }, \"data\": { \"label\": \"Posts\" } }\n ],\n \"edges\": [\n { \"id\": \"e-start-angle\", \"source\": \"start\", \"target\": \"angle\" },\n { \"id\": \"e-angle-each\", \"source\": \"angle\", \"target\": \"each\" },\n { \"id\": \"e-guard-final\", \"source\": \"no_invented_facts\", \"target\": \"final\" },\n { \"id\": \"e-final-out\", \"source\": \"final\", \"target\": \"out\" }\n ]\n}\n",
116
116
  };
117
117
  /** Kernel prompts: shipped, never seeded (see generate.mjs). */
118
118
  export const KERNEL_PROMPTS = {
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.generated.js","sourceRoot":"","sources":["../../../prompts/library/defaults.generated.ts"],"names":[],"mappings":"AAAA;;gFAEgF;AAChF,MAAM,CAAC,MAAM,YAAY,GAA2B;IAClD,wBAAwB,EAAE,4iFAA4iF;IACtkF,mBAAmB,EAAE,0PAA0P;IAC/Q,2BAA2B,EAAE,87EAA87E;IAC39E,qCAAqC,EAAE,wuBAAwuB;IAC/wB,aAAa,EAAE,ysBAAysB;IACxtB,mBAAmB,EAAE,soJAAsoJ;IAC3pJ,eAAe,EAAE,krBAAkrB;IACnsB,qBAAqB,EAAE,mZAAmZ;IAC1a,eAAe,EAAE,uVAAuV;IACxW,eAAe,EAAE,6gBAA6gB;IAC9hB,2BAA2B,EAAE,qlBAAqlB;IAClnB,gBAAgB,EAAE,mnCAAmnC;IACroC,cAAc,EAAE,86HAA86H;IAC97H,wBAAwB,EAAE,utBAAutB;IACjvB,wBAAwB,EAAE,q7GAAq7G;IAC/8G,yBAAyB,EAAE,49CAA49C;IACv/C,gBAAgB,EAAE,8hCAA8hC;IAChjC,qBAAqB,EAAE,g7CAAg7C;IACv8C,2BAA2B,EAAE,+pBAA+pB;IAC5rB,mBAAmB,EAAE,uiBAAuiB;IAC5jB,wBAAwB,EAAE,+sBAA+sB;IACzuB,yBAAyB,EAAE,0jBAA0jB;IACrlB,mBAAmB,EAAE,qmBAAqmB;IAC1nB,mBAAmB,EAAE,koBAAkoB;IACvpB,yBAAyB,EAAE,2bAA2b;IACtd,sBAAsB,EAAE,yiBAAyiB;IACjkB,oBAAoB,EAAE,qbAAqb;IAC3c,uBAAuB,EAAE,mhBAAmhB;IAC5iB,qBAAqB,EAAE,oKAAoK;IAC3L,0BAA0B,EAAE,4uBAA4uB;IACxwB,6BAA6B,EAAE,00BAA00B;IACz2B,8BAA8B,EAAE,qlCAAqlC;IACrnC,wBAAwB,EAAE,ykCAAykC;IACnmC,mBAAmB,EAAE,2JAA2J;IAChL,kBAAkB,EAAE,8NAA8N;IAClP,wBAAwB,EAAE,8vHAA8vH;IACxxH,8BAA8B,EAAE,4+DAA4+D;IAC5gE,0BAA0B,EAAE,6lFAA6lF;IACznF,2BAA2B,EAAE,8jCAA8jC;IAC3lC,sBAAsB,EAAE,iuBAAiuB;IACzvB,kCAAkC,EAAE,0DAA0D;IAC9F,qCAAqC,EAAE,oJAAoJ;IAC3L,oCAAoC,EAAE,2NAA2N;IACjQ,sCAAsC,EAAE,8zDAA8zD;IACt2D,4BAA4B,EAAE,wtBAAwtB;IACtvB,4BAA4B,EAAE,8eAA8e;IAC5gB,0BAA0B,EAAE,oxBAAoxB;IAChzB,8BAA8B,EAAE,uoBAAuoB;IACvqB,qCAAqC,EAAE,q9EAAq9E;IAC5/E,0CAA0C,EAAE,2nDAA2nD;IACvqD,qCAAqC,EAAE,s0FAAs0F;IAC72F,2CAA2C,EAAE,8gDAA8gD;IAC3jD,kDAAkD,EAAE,0qCAA0qC;IAC9tC,iCAAiC,EAAE,+oEAA+oE;IAClrE,kCAAkC,EAAE,oFAAoF;IACxH,mCAAmC,EAAE,w3CAAw3C;IAC75C,+BAA+B,EAAE,4SAA4S;IAC7U,mCAAmC,EAAE,2FAA2F;IAChI,oCAAoC,EAAE,61CAA61C;IACn4C,gCAAgC,EAAE,uTAAuT;IACzV,2CAA2C,EAAE,4HAA4H;IACzK,4CAA4C,EAAE,86CAA86C;IAC59C,wCAAwC,EAAE,yUAAyU;IACnX,uCAAuC,EAAE,+FAA+F;IACxI,wCAAwC,EAAE,o7CAAo7C;IAC99C,oCAAoC,EAAE,0TAA0T;IAChW,6BAA6B,EAAE,0wCAA0wC;IACzyC,+BAA+B,EAAE,sGAAsG;IACvI,gCAAgC,EAAE,wsBAAwsB;IAC1uB,4BAA4B,EAAE,uHAAuH;IACrJ,4BAA4B,EAAE,uuCAAuuC;IACrwC,8BAA8B,EAAE,kFAAkF;IAClH,+BAA+B,EAAE,qTAAqT;IACtV,2BAA2B,EAAE,sGAAsG;IACnI,+BAA+B,EAAE,+rCAA+rC;IAChuC,iCAAiC,EAAE,6EAA6E;IAChH,kCAAkC,EAAE,sfAAsf;IAC1hB,8BAA8B,EAAE,mIAAmI;IACnK,0BAA0B,EAAE,gkCAAgkC;IAC5lC,4BAA4B,EAAE,mFAAmF;IACjH,6BAA6B,EAAE,8gBAA8gB;IAC7iB,yBAAyB,EAAE,oGAAoG;IAC/H,oCAAoC,EAAE,ivCAAivC;IACvxC,sCAAsC,EAAE,kGAAkG;IAC1I,uCAAuC,EAAE,qTAAqT;IAC9V,mCAAmC,EAAE,+JAA+J;IACpM,4BAA4B,EAAE,ioIAAioI;IAC/pI,8BAA8B,EAAE,oGAAoG;IACpI,+BAA+B,EAAE,m4BAAm4B;IACp6B,2BAA2B,EAAE,+HAA+H;IAC5J,gCAAgC,EAAE,4rCAA4rC;IAC9tC,kCAAkC,EAAE,2HAA2H;IAC/J,mCAAmC,EAAE,oWAAoW;IACzY,+BAA+B,EAAE,0GAA0G;IAC3I,wCAAwC,EAAE,o/CAAo/C;IAC9hD,0CAA0C,EAAE,4GAA4G;IACxJ,2CAA2C,EAAE,6lBAA6lB;IAC1oB,uCAAuC,EAAE,uIAAuI;IAChL,oCAAoC,EAAE,w7CAAw7C;IAC99C,sCAAsC,EAAE,4FAA4F;IACpI,uCAAuC,EAAE,6lBAA6lB;IACtoB,mCAAmC,EAAE,+HAA+H;IACpK,iDAAiD,EAAE,8gJAA8gJ;IACjkJ,+CAA+C,EAAE,giHAAgiH;IACjlH,sDAAsD,EAAE,y6FAAy6F;IACj+F,uDAAuD,EAAE,usNAAusN;IAChwN,yCAAyC,EAAE,8pJAA8pJ;IACzsJ,6CAA6C,EAAE,oyIAAoyI;IACn1I,4CAA4C,EAAE,m2JAAm2J;IACj5J,sDAAsD,EAAE,08IAA08I;IAClgJ,+CAA+C,EAAE,wnJAAwnJ;CAC1qJ,CAAC;AAEF,gEAAgE;AAChE,MAAM,CAAC,MAAM,cAAc,GAA2B;IACpD,gBAAgB,EAAE,uvDAAuvD;CAC1wD,CAAC"}
1
+ {"version":3,"file":"defaults.generated.js","sourceRoot":"","sources":["../../../prompts/library/defaults.generated.ts"],"names":[],"mappings":"AAAA;;gFAEgF;AAChF,MAAM,CAAC,MAAM,YAAY,GAA2B;IAClD,wBAAwB,EAAE,4iFAA4iF;IACtkF,mBAAmB,EAAE,0PAA0P;IAC/Q,2BAA2B,EAAE,87EAA87E;IAC39E,qCAAqC,EAAE,wuBAAwuB;IAC/wB,aAAa,EAAE,ysBAAysB;IACxtB,mBAAmB,EAAE,soJAAsoJ;IAC3pJ,eAAe,EAAE,krBAAkrB;IACnsB,qBAAqB,EAAE,mZAAmZ;IAC1a,eAAe,EAAE,uVAAuV;IACxW,eAAe,EAAE,6gBAA6gB;IAC9hB,2BAA2B,EAAE,qlBAAqlB;IAClnB,gBAAgB,EAAE,mnCAAmnC;IACroC,cAAc,EAAE,86HAA86H;IAC97H,wBAAwB,EAAE,utBAAutB;IACjvB,wBAAwB,EAAE,q7GAAq7G;IAC/8G,yBAAyB,EAAE,49CAA49C;IACv/C,gBAAgB,EAAE,8hCAA8hC;IAChjC,qBAAqB,EAAE,g7CAAg7C;IACv8C,2BAA2B,EAAE,+pBAA+pB;IAC5rB,mBAAmB,EAAE,uiBAAuiB;IAC5jB,wBAAwB,EAAE,+sBAA+sB;IACzuB,yBAAyB,EAAE,0jBAA0jB;IACrlB,mBAAmB,EAAE,qmBAAqmB;IAC1nB,mBAAmB,EAAE,koBAAkoB;IACvpB,yBAAyB,EAAE,2bAA2b;IACtd,sBAAsB,EAAE,yiBAAyiB;IACjkB,oBAAoB,EAAE,qbAAqb;IAC3c,uBAAuB,EAAE,mhBAAmhB;IAC5iB,qBAAqB,EAAE,oKAAoK;IAC3L,0BAA0B,EAAE,4uBAA4uB;IACxwB,6BAA6B,EAAE,00BAA00B;IACz2B,8BAA8B,EAAE,qlCAAqlC;IACrnC,wBAAwB,EAAE,ykCAAykC;IACnmC,mBAAmB,EAAE,2JAA2J;IAChL,kBAAkB,EAAE,8NAA8N;IAClP,wBAAwB,EAAE,8vHAA8vH;IACxxH,8BAA8B,EAAE,4+DAA4+D;IAC5gE,0BAA0B,EAAE,6lFAA6lF;IACznF,2BAA2B,EAAE,8jCAA8jC;IAC3lC,sBAAsB,EAAE,iuBAAiuB;IACzvB,kCAAkC,EAAE,0DAA0D;IAC9F,qCAAqC,EAAE,oJAAoJ;IAC3L,oCAAoC,EAAE,2NAA2N;IACjQ,sCAAsC,EAAE,8zDAA8zD;IACt2D,4BAA4B,EAAE,wtBAAwtB;IACtvB,4BAA4B,EAAE,8eAA8e;IAC5gB,0BAA0B,EAAE,oxBAAoxB;IAChzB,8BAA8B,EAAE,uoBAAuoB;IACvqB,qCAAqC,EAAE,q9EAAq9E;IAC5/E,0CAA0C,EAAE,2nDAA2nD;IACvqD,qCAAqC,EAAE,s0FAAs0F;IAC72F,2CAA2C,EAAE,8gDAA8gD;IAC3jD,kDAAkD,EAAE,0qCAA0qC;IAC9tC,iCAAiC,EAAE,+oEAA+oE;IAClrE,kCAAkC,EAAE,oFAAoF;IACxH,mCAAmC,EAAE,w3CAAw3C;IAC75C,+BAA+B,EAAE,4SAA4S;IAC7U,mCAAmC,EAAE,2FAA2F;IAChI,oCAAoC,EAAE,61CAA61C;IACn4C,gCAAgC,EAAE,uTAAuT;IACzV,2CAA2C,EAAE,4HAA4H;IACzK,4CAA4C,EAAE,86CAA86C;IAC59C,wCAAwC,EAAE,yUAAyU;IACnX,uCAAuC,EAAE,+FAA+F;IACxI,wCAAwC,EAAE,o7CAAo7C;IAC99C,oCAAoC,EAAE,0TAA0T;IAChW,6BAA6B,EAAE,0wCAA0wC;IACzyC,+BAA+B,EAAE,sGAAsG;IACvI,gCAAgC,EAAE,wsBAAwsB;IAC1uB,4BAA4B,EAAE,uHAAuH;IACrJ,4BAA4B,EAAE,uuCAAuuC;IACrwC,8BAA8B,EAAE,kFAAkF;IAClH,+BAA+B,EAAE,qTAAqT;IACtV,2BAA2B,EAAE,sGAAsG;IACnI,+BAA+B,EAAE,+rCAA+rC;IAChuC,iCAAiC,EAAE,6EAA6E;IAChH,kCAAkC,EAAE,sfAAsf;IAC1hB,8BAA8B,EAAE,mIAAmI;IACnK,0BAA0B,EAAE,gkCAAgkC;IAC5lC,4BAA4B,EAAE,mFAAmF;IACjH,6BAA6B,EAAE,8gBAA8gB;IAC7iB,yBAAyB,EAAE,oGAAoG;IAC/H,oCAAoC,EAAE,ivCAAivC;IACvxC,sCAAsC,EAAE,kGAAkG;IAC1I,uCAAuC,EAAE,qTAAqT;IAC9V,mCAAmC,EAAE,+JAA+J;IACpM,4BAA4B,EAAE,ioIAAioI;IAC/pI,8BAA8B,EAAE,oGAAoG;IACpI,+BAA+B,EAAE,m4BAAm4B;IACp6B,2BAA2B,EAAE,+HAA+H;IAC5J,gCAAgC,EAAE,4rCAA4rC;IAC9tC,kCAAkC,EAAE,2HAA2H;IAC/J,mCAAmC,EAAE,oWAAoW;IACzY,+BAA+B,EAAE,0GAA0G;IAC3I,wCAAwC,EAAE,o/CAAo/C;IAC9hD,0CAA0C,EAAE,4GAA4G;IACxJ,2CAA2C,EAAE,6lBAA6lB;IAC1oB,uCAAuC,EAAE,uIAAuI;IAChL,oCAAoC,EAAE,w7CAAw7C;IAC99C,sCAAsC,EAAE,4FAA4F;IACpI,uCAAuC,EAAE,6lBAA6lB;IACtoB,mCAAmC,EAAE,+HAA+H;IACpK,iDAAiD,EAAE,i/IAAi/I;IACpiJ,+CAA+C,EAAE,mgHAAmgH;IACpjH,sDAAsD,EAAE,44FAA44F;IACp8F,uDAAuD,EAAE,0qNAA0qN;IACnuN,yCAAyC,EAAE,ioJAAioJ;IAC5qJ,6CAA6C,EAAE,uwIAAuwI;IACtzI,4CAA4C,EAAE,s0JAAs0J;IACp3J,sDAAsD,EAAE,66IAA66I;IACr+I,+CAA+C,EAAE,2lJAA2lJ;CAC7oJ,CAAC;AAEF,gEAAgE;AAChE,MAAM,CAAC,MAAM,cAAc,GAA2B;IACpD,gBAAgB,EAAE,uvDAAuvD;CAC1wD,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import type { AgentTool, IMemoryProvider, IKeyValueStore, ISearchProvider, ISessionStore, PermissionRequest, AskQuestion, AskAnswers, AgentEvent, PermissionDecision, DaemonRunActivity, DaemonRegistration, AgentPause, HostSummary, ProcInfo, RunRecordInfo, RunHistoryCrew, SessionInfo, SessionRepoSpec, SessionSnapshotInfo, CrewMemoryInfo, SidecarConfigEntry, WebPushSubscription, ChecksState, WorkspaceLockRef, TaskSpec, TaskAutonomy, RunPlanView, DaemonApprovalChoice, DaemonApprovalOffer, DaemonApprovalsState, CrewAgentRef, CrewDeployReply, DeviceSummary, AccessReply, NodeEvent, PeerMcpToolDecl, MemberReply, AccessOverviewReply, AgentCredReply, AgentCredStatusReply, AgentRunsReply, PeerReply, AgentCredHeader, McpBinding } from '@corenel/protocol';
2
2
  import type { DontAsk, FileService } from '@corenel/protocol';
3
3
  import { type KeySigner } from './deviceKeys';
4
- import { type SpeechStreamMsg, type SidecarChannel, type SidecarMsg, type SidecarInfo, type AcpPromptPart, type AcpModeInfo, type AcpStartOptions, type RoomOpenRequest, type RoomSummary, type RoomFinding, type RoomFindingEdit } from '@corenel/protocol';
4
+ import { type SpeechStreamMsg, type SidecarChannel, type SidecarMsg, type SidecarInfo, type AcpPromptPart, type AcpModeInfo, type AcpStartOptions, type RoomOpenRequest, type RoomSummary, type RoomFinding, type RoomFindingEdit, type DeployRef, type WorkflowRef, type WorkflowPackagePut, type WorkflowPackageReply, type WorkflowResultsListReply, type WorkflowResultsTakeReply, type WorkflowResultsAckReply, type WorkflowStopReply } from '@corenel/protocol';
5
5
  /** A peer daemon's MCP servers, served to the daemon it connected to (spec
6
6
  * 2026-10-01 Part D). Arguments arrive over the wire: an implementation
7
7
  * validates them and applies its own policy. */
@@ -191,6 +191,13 @@ export type McpAdminReply = {
191
191
  error: string;
192
192
  reason?: 'no-oauth' | 'no-dcr' | 'failed';
193
193
  };
194
+ /** A workflow request the daemon has not answered by now never will be on
195
+ * this connection (a lost reply): it settles not ok, so the caller (the
196
+ * copy-home pass, say) is freed rather than held until the connection drops
197
+ * (M8). A package put carries up to 8 MiB, so it waits longer, sized for a
198
+ * slow link. */
199
+ export declare const WORKFLOW_REQUEST_TIMEOUT_MS = 60000;
200
+ export declare const WORKFLOW_PUT_TIMEOUT_MS = 120000;
194
201
  /** What a caller wants to hear about one process. Both handlers are optional:
195
202
  * a client that only wants to know when a build finishes should not have to
196
203
  * accept its output. */
@@ -272,6 +279,10 @@ export declare class SidecarHost {
272
279
  private readonly pausePending;
273
280
  private crewDeploySeq;
274
281
  private readonly crewDeployPending;
282
+ private workflowsSeq;
283
+ /** One pending map for the five workflow-* requests; each method checks it
284
+ * got its own reply type, then checks and rebuilds the reply itself. */
285
+ private readonly workflowsPending;
275
286
  private accessSeq;
276
287
  private readonly accessPending;
277
288
  private memberSeq;
@@ -855,12 +866,36 @@ export declare class SidecarHost {
855
866
  private crewDeployRequest;
856
867
  /** The machine's deploy list, statuses and audit. */
857
868
  crewDeployments(): Promise<CrewDeployReply>;
858
- crewDeploy(ref: CrewAgentRef, reason?: string): Promise<CrewDeployReply>;
859
- crewUndeploy(ref: CrewAgentRef, reason?: string): Promise<CrewDeployReply>;
860
- crewPause(ref: CrewAgentRef, reason: string): Promise<CrewDeployReply>;
861
- crewResume(ref: CrewAgentRef, reason?: string): Promise<CrewDeployReply>;
869
+ /** Deploy an agent or a workflow. `workspaceId`: where a deployed
870
+ * WORKFLOW's results go (the daemon refuses it on an agent). */
871
+ crewDeploy(ref: DeployRef, reason?: string, workspaceId?: string): Promise<CrewDeployReply>;
872
+ crewUndeploy(ref: DeployRef, reason?: string): Promise<CrewDeployReply>;
873
+ crewPause(ref: DeployRef, reason: string): Promise<CrewDeployReply>;
874
+ crewResume(ref: DeployRef, reason?: string): Promise<CrewDeployReply>;
862
875
  /** Stop a run AND record who stopped it and why (the plain `cancelRun` records nothing). */
863
876
  crewStop(ref: CrewAgentRef, runId: string, reason: string): Promise<CrewDeployReply>;
877
+ /** True when the connected daemon runs deployed workflows (package intake,
878
+ * the results outbox, and `workflow-stop`). Feature-detected from the welcome. */
879
+ supportsWorkflows(): boolean;
880
+ /** One workflow-* request. A refusal resolves; only a dropped connection
881
+ * rejects. Callers check the feature first, so nothing is sent to a daemon
882
+ * without it. */
883
+ /** One workflow-* request: its reply, or null when the daemon did not
884
+ * answer within `timeoutMs` (the request is then forgotten, so a late reply
885
+ * is dropped). Only a dropped connection rejects. */
886
+ private workflowsRequest;
887
+ /** Send one packaged workflow (`.pdpkg`, base64) to the daemon. */
888
+ workflowPackagePut(req: WorkflowPackagePut): Promise<WorkflowPackageReply>;
889
+ /** The results waiting for `workspaceId` in this connection's outbox. Every
890
+ * item is checked to be one of that workspace's own results. */
891
+ workflowResultsList(workspaceId: string): Promise<WorkflowResultsListReply>;
892
+ /** One waiting result's text. Nothing is deleted until `workflowResultsAck`. */
893
+ workflowResultsTake(path: string): Promise<WorkflowResultsTakeReply>;
894
+ /** The result at `path` is safely home: the daemon deletes it. */
895
+ workflowResultsAck(path: string): Promise<WorkflowResultsAckReply>;
896
+ /** Stop a running deployed workflow: every live run of `ref`, or only
897
+ * `runId`. The daemon records who stopped it and why. */
898
+ workflowStop(ref: WorkflowRef, reason: string, workspaceId?: string, runId?: string): Promise<WorkflowStopReply>;
864
899
  /** True when the connected daemon keeps per-agent access (team mode, Part B). */
865
900
  supportsAgentAccess(): boolean;
866
901
  /** One access-* request. `ok: false` is the daemon's considered answer and
@@ -1 +1 @@
1
- {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../sidecar/host.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../sidecar/host.ts"],"names":[],"mappings":"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"}