opencode-swarm 7.179.1 → 7.180.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binaries/win32-arm64/swarm-sandbox-runner.exe +0 -0
- package/binaries/win32-x64/swarm-sandbox-runner.exe +0 -0
- package/dist/agents/architect.d.ts +67 -0
- package/dist/agents/council-prompts.d.ts +3 -3
- package/dist/agents/index.d.ts +1 -1
- package/dist/background/pr-event-subscribers.d.ts +2 -0
- package/dist/background/pr-feedback-event-queue.d.ts +7 -0
- package/dist/background/pr-feedback-loop.d.ts +162 -0
- package/dist/cli/{coder-settlement-f1nmezzv.js → coder-settlement-b57917a3.js} +14 -14
- package/dist/cli/{config-doctor-ena2803f.js → config-doctor-ebat06eq.js} +2 -2
- package/dist/cli/{core-fcfzme3m.js → core-8k41qh0d.js} +4 -5
- package/dist/cli/{curation-policy-c7mdsf7m.js → curation-policy-m3x9mkj9.js} +7 -6
- package/dist/cli/{curator-q9s5q9v4.js → curator-8yb3qkxs.js} +45 -43
- package/dist/cli/{curator-drift-d93pwt8h.js → curator-drift-3av9hffm.js} +22 -12
- package/dist/cli/curator-llm-factory-htgqafq0.js +74 -0
- package/dist/cli/{evidence-summary-service-wtj8mkm6.js → evidence-summary-service-s258ea5t.js} +23 -21
- package/dist/cli/{gate-evidence-h83yb8nd.js → gate-evidence-fqxpf3xz.js} +9 -9
- package/dist/cli/guardrail-explain-r0qxa4zy.js +75 -0
- package/dist/cli/{guardrail-log-zf1htf1d.js → guardrail-log-j2wdmvmy.js} +7 -7
- package/dist/cli/{guardrail-reset-f2p198j3.js → guardrail-reset-wb2eqbvf.js} +45 -43
- package/dist/cli/hive-promoter-kxpc3r17.js +89 -0
- package/dist/cli/{index-wrt875kh.js → index-0725jpp7.js} +1 -1
- package/dist/cli/{index-34bwqcea.js → index-12ewkms0.js} +1 -1
- package/dist/cli/{index-epfjc1c1.js → index-2q5m4m2r.js} +11 -11
- package/dist/cli/{index-h59vsbch.js → index-38cfx8g8.js} +2 -2
- package/dist/cli/{index-xy7k7f3k.js → index-3bbjpbmn.js} +2 -2
- package/dist/cli/{index-vp9pn7sv.js → index-3zvp7t5d.js} +5 -5
- package/dist/cli/{index-dz12bshh.js → index-50v672wd.js} +8 -8
- package/dist/cli/{index-yfpswnjt.js → index-516j9vsk.js} +4 -4
- package/dist/cli/{index-w4c2repz.js → index-600aqfvm.js} +47 -43
- package/dist/cli/{index-0h3cr7pn.js → index-6gcxgx84.js} +1 -1
- package/dist/cli/{index-qt0793qm.js → index-6mwha20t.js} +3 -3
- package/dist/cli/{index-93nx95me.js → index-855qxtdm.js} +8 -7
- package/dist/cli/{index-cvg402ha.js → index-91dhg3wr.js} +2 -2
- package/dist/cli/{index-3pzwsesm.js → index-92m05mew.js} +2 -2
- package/dist/cli/{index-ne9zamcs.js → index-989v83pb.js} +1 -1
- package/dist/cli/{index-9fb01jk5.js → index-as4xaams.js} +1 -1
- package/dist/cli/{index-2b0ktpbf.js → index-bdpgfep1.js} +5 -5
- package/dist/cli/{index-q375xdcw.js → index-bhmrgbyv.js} +9 -1
- package/dist/cli/{index-nzekzzs2.js → index-bv4b8tpa.js} +5 -5
- package/dist/cli/{index-rb9jmj30.js → index-cj64vp08.js} +7 -7
- package/dist/cli/{index-549wxbe1.js → index-cjapb4hy.js} +1 -1
- package/dist/cli/{index-5d224akk.js → index-dzm5nfh7.js} +4 -4
- package/dist/cli/{index-f2v90gfc.js → index-ea9fk6v0.js} +25 -166
- package/dist/cli/index-ejhxgyvm.js +147 -0
- package/dist/cli/{index-n1tcj1q7.js → index-g062wnw1.js} +187 -47
- package/dist/cli/{index-s4bkey0q.js → index-gc6h1fmf.js} +4 -4
- package/dist/cli/{index-pn023bf9.js → index-gw5egd8j.js} +49 -47
- package/dist/cli/index-gx2vp8gx.js +100 -0
- package/dist/cli/{index-yp25bc9n.js → index-gy3tcmk4.js} +7 -7
- package/dist/cli/{index-n2wjrgcs.js → index-k5vwnnym.js} +7 -9
- package/dist/cli/{index-ajm7ebyd.js → index-k6f0nryj.js} +2 -2
- package/dist/cli/{index-zbhvr9st.js → index-n5carmk0.js} +8 -10
- package/dist/cli/{index-h4nh6s8b.js → index-nhxykfyy.js} +1 -1
- package/dist/cli/{index-pskba939.js → index-rejpbgxp.js} +1 -1
- package/dist/cli/{index-9s1xzvnn.js → index-rp4akjrm.js} +13 -3
- package/dist/cli/{index-g6nyk713.js → index-s0zgz4p1.js} +1 -1
- package/dist/cli/{index-aqpwm350.js → index-tnhk72rs.js} +3 -3
- package/dist/cli/{index-sj29n50e.js → index-v0par978.js} +7 -7
- package/dist/cli/index-v7fx8q3z.js +339 -0
- package/dist/cli/{index-a11ztzs5.js → index-vmthakz0.js} +1 -1
- package/dist/cli/{index-b567t0cr.js → index-wx3wz7ya.js} +10 -8
- package/dist/cli/{index-y98fvmb8.js → index-xd0e4amf.js} +33 -18
- package/dist/cli/{index-m1w40kfw.js → index-xj5z92qz.js} +4 -103
- package/dist/cli/{index-6r92fw88.js → index-y30y1rkg.js} +9 -9
- package/dist/cli/{index-pfg3jwe9.js → index-yf7tdhpz.js} +3 -3
- package/dist/cli/{index-y94vwx2q.js → index-z2xf153n.js} +13 -15
- package/dist/cli/{index-ky262b73.js → index-z2zrcecq.js} +1721 -902
- package/dist/cli/{index-zz7gzw57.js → index-zxdawwc7.js} +88 -4
- package/dist/cli/index.js +46 -44
- package/dist/cli/{knowledge-escalator-z6tkgrjq.js → knowledge-escalator-n30h6ran.js} +17 -16
- package/dist/cli/{knowledge-events-2bgefatz.js → knowledge-events-k2qqase2.js} +15 -14
- package/dist/cli/{knowledge-link-gfz47ves.js → knowledge-link-s2qs178z.js} +6 -5
- package/dist/cli/{knowledge-store-1fphg9sa.js → knowledge-store-zy226v5a.js} +7 -6
- package/dist/cli/{knowledge-validator-723h2vck.js → knowledge-validator-qgyxdpc9.js} +9 -8
- package/dist/cli/{mcp-xyswgya5.js → mcp-pj7acze3.js} +1 -1
- package/dist/cli/{pending-delegations-5zm19yvv.js → pending-delegations-sgnnyw55.js} +14 -13
- package/dist/cli/{pr-subscriptions-5hm6hzv6.js → pr-subscriptions-7fb7xm3q.js} +14 -13
- package/dist/cli/{pr-workflow-gate-48rzb2bh.js → pr-workflow-gate-5dqcrkz6.js} +47 -43
- package/dist/cli/{runner-16b691ba.js → runner-p9hstpxn.js} +7 -6
- package/dist/cli/{scan-cursor-m28tddrg.js → scan-cursor-jc7wwb7e.js} +9 -9
- package/dist/cli/{schema-jt9axyj6.js → schema-5k68crjb.js} +3 -1
- package/dist/cli/{scope-persistence-d0358pw7.js → scope-persistence-xeg4khwk.js} +19 -18
- package/dist/cli/{server-d5jxcbxz.js → server-ej6tzd7t.js} +53 -51
- package/dist/cli/{skill-generator-qanka67x.js → skill-generator-nspt9b3n.js} +19 -18
- package/dist/cli/{snapshot-coordination-init-mhrq11p8.js → snapshot-coordination-init-3rs3zpaa.js} +45 -43
- package/dist/cli/speckit-checkoff-dqf636ya.js +31 -0
- package/dist/cli/{telemetry-qxav5cdk.js → telemetry-zhcgfe70.js} +1 -1
- package/dist/cli/{workspace-snapshot-rfnn80dg.js → workspace-snapshot-4m2ex1ey.js} +4 -5
- package/dist/cli/{worktree-collision-ownership-ygdbpexh.js → worktree-collision-ownership-rbzgbvj4.js} +17 -17
- package/dist/cli/{worktree-isolation-4855f2az.js → worktree-isolation-6zpnzr70.js} +45 -43
- package/dist/commands/pr-feedback-loop.d.ts +1 -0
- package/dist/commands/registry.d.ts +10 -2
- package/dist/config/schema.d.ts +27 -0
- package/dist/council/disagreement-detector.d.ts +23 -1
- package/dist/council/general-council-service.d.ts +40 -3
- package/dist/failures/invocation-failure.d.ts +11 -0
- package/dist/hooks/delegation-tracker.d.ts +6 -1
- package/dist/hooks/pr-workflow-gate.d.ts +1 -1
- package/dist/hooks/system-enhancer.d.ts +4 -2
- package/dist/hooks/system-render-boundary.d.ts +68 -0
- package/dist/index.js +634 -606
- package/dist/sdd/effective-spec.d.ts +35 -22
- package/dist/sdd/speckit-checkoff.d.ts +113 -0
- package/dist/session/hydration-ownership.d.ts +83 -0
- package/dist/session/snapshot-coordination-init.d.ts +2 -1
- package/dist/session/snapshot-reader.d.ts +25 -7
- package/dist/state.d.ts +32 -2
- package/dist/utils/provider-error-classification.d.ts +11 -0
- package/opencode-swarm.schema.json +40 -0
- package/package.json +1 -1
- package/dist/cli/curator-llm-factory-dds2fnhj.js +0 -72
- package/dist/cli/guardrail-explain-qm5wej7v.js +0 -73
- package/dist/cli/hive-promoter-1mhx2jh0.js +0 -87
- package/dist/cli/index-4ddpvd5c.js +0 -94
|
Binary file
|
|
Binary file
|
|
@@ -79,6 +79,57 @@ export declare const ARCHITECT_MEMORY_OUTCOME_GUIDANCE = "After using recalled m
|
|
|
79
79
|
* regression of a built-in source string.
|
|
80
80
|
*/
|
|
81
81
|
export declare const ARCHITECT_PROMPT_BUDGET_CHARS = 161000;
|
|
82
|
+
/**
|
|
83
|
+
* Per-tool description cap for the architect prompt's AVAILABLE TOOLS line
|
|
84
|
+
* (issue #2671): composing the general council with every supported opt-in
|
|
85
|
+
* pushed renders past ARCHITECT_PROMPT_BUDGET_CHARS. Bounds ONLY the prompt
|
|
86
|
+
* render (tool registration keeps full descriptions); truncation is visible
|
|
87
|
+
* (`…`), names are never truncated, and the names-only YOUR TOOLS line is
|
|
88
|
+
* untouched. Measurements: docs/configuration.md "Architect prompt budget".
|
|
89
|
+
*/
|
|
90
|
+
export declare const ARCHITECT_TOOL_DESCRIPTION_PROMPT_CAP_CHARS = 240;
|
|
91
|
+
/**
|
|
92
|
+
* Model-token ESTIMATE (~4 chars/token — the ratio the budget contract
|
|
93
|
+
* documents). An estimate, not a tokenizer; recorded next to the
|
|
94
|
+
* authoritative character count, never instead of it (issue #2671).
|
|
95
|
+
*/
|
|
96
|
+
export declare function estimateModelTokens(text: string): number;
|
|
97
|
+
export interface ArchitectPromptBudgetMetrics {
|
|
98
|
+
/** Authoritative length in characters. */
|
|
99
|
+
chars: number;
|
|
100
|
+
/** Model-token estimate (chars / 4, rounded up) — a separate quantity. */
|
|
101
|
+
tokenEstimate: number;
|
|
102
|
+
withinBudget: boolean;
|
|
103
|
+
}
|
|
104
|
+
/** Measure a composed prompt against the published ceiling. */
|
|
105
|
+
export declare function measureArchitectPromptBudget(prompt: string): ArchitectPromptBudgetMetrics;
|
|
106
|
+
export type ArchitectPromptBudgetEnforcement = {
|
|
107
|
+
ok: true;
|
|
108
|
+
chars: number;
|
|
109
|
+
tokenEstimate: number;
|
|
110
|
+
} | {
|
|
111
|
+
ok: false;
|
|
112
|
+
error: string;
|
|
113
|
+
chars: number;
|
|
114
|
+
tokenEstimate: number;
|
|
115
|
+
};
|
|
116
|
+
export declare function warnArchitectPromptBudgetExceededOnce(error: string): void;
|
|
117
|
+
/**
|
|
118
|
+
* Session-start reset (called next to clearDeferredWarnings in src/index.ts):
|
|
119
|
+
* a fixed config must warn again in a new session instead of staying
|
|
120
|
+
* suppressed by a signature emitted before the reload. Mirrors
|
|
121
|
+
* resetConfigAdvisoryDedup (issue #2524 review PRR-007).
|
|
122
|
+
*/
|
|
123
|
+
export declare function resetArchitectPromptBudgetAdvisories(): void;
|
|
124
|
+
/**
|
|
125
|
+
* Deterministic overflow policy (issue #2671): over budget returns a BOUNDED
|
|
126
|
+
* (<= 400 chars, label sliced) error prefixed ARCHITECT_PROMPT_BUDGET_EXCEEDED
|
|
127
|
+
* instead of silently dropping guidance. Callers advisoryWarn it and keep the
|
|
128
|
+
* full prompt; the CI matrix regression keeps built-in compositions off this
|
|
129
|
+
* branch, so at runtime it fires only on user-variable inputs (e.g. an
|
|
130
|
+
* extreme multi-swarm name).
|
|
131
|
+
*/
|
|
132
|
+
export declare function enforceArchitectPromptBudget(label: string, prompt: string): ArchitectPromptBudgetEnforcement;
|
|
82
133
|
export interface AdversarialTestingConfig {
|
|
83
134
|
enabled: boolean;
|
|
84
135
|
scope: 'all' | 'security-only';
|
|
@@ -146,4 +197,20 @@ export declare function buildCouncilWorkflow(council?: CouncilWorkflowConfig): s
|
|
|
146
197
|
* helper remains as a compatibility oracle for direct prompt-contract tests.
|
|
147
198
|
*/
|
|
148
199
|
export declare function buildQaGateSelectionDialogue(modeLabel: 'BRAINSTORM' | 'SPECIFY' | 'PLAN'): string;
|
|
200
|
+
/**
|
|
201
|
+
* Bound a tool description for the in-prompt AVAILABLE TOOLS render
|
|
202
|
+
* (issue #2671): unchanged when it fits the cap; otherwise the capped prefix
|
|
203
|
+
* with trailing unclosed parenthetical groups stripped so entries keep
|
|
204
|
+
* BALANCED parentheses (the comma-separated line is parsed by
|
|
205
|
+
* comma-at-depth-0 readers; an entry ending inside a parenthetical makes
|
|
206
|
+
* later entry boundaries ambiguous). The `…` marker is appended by the
|
|
207
|
+
* caller so under-cap renders stay byte-identical to the uncapped form.
|
|
208
|
+
*
|
|
209
|
+
* Precondition: the input description is paren-balanced (as TOOL_METADATA
|
|
210
|
+
* entries are reviewed to be). For balanced input, a prefix can only leave
|
|
211
|
+
* '(' unmatched — never ')' — so stripping trailing unmatched '(' groups
|
|
212
|
+
* suffices; an input that already contains unmatched ')' passes them through
|
|
213
|
+
* (output no worse than input).
|
|
214
|
+
*/
|
|
215
|
+
export declare function capToolDescriptionForPrompt(description: string): string;
|
|
149
216
|
export declare function createArchitectAgent(model: string, customPrompt?: string, customAppendPrompt?: string, adversarialTesting?: AdversarialTestingConfig, council?: CouncilWorkflowConfig, uiReview?: UIReviewConfig, memoryEnabled?: boolean, architecturalSupervision?: ArchitectureSupervisionWorkflowConfig, designDocsEnabled?: boolean, externalSkillsEnabled?: boolean, turboEnabled?: boolean, skillsEnabled?: boolean, planningProfileResolution?: ResolvedPlanningProfile): AgentDefinition;
|
|
@@ -21,6 +21,6 @@
|
|
|
21
21
|
* MAINTAIN/CONCEDE/NUANCE for disagreements) is preserved verbatim, as is
|
|
22
22
|
* the JSON response schema consumed by convene_general_council.
|
|
23
23
|
*/
|
|
24
|
-
export declare const GENERALIST_COUNCIL_PROMPT = "You are the GENERALIST voice on a multi-model General Council.\n\nYou are the GENERALIST voice on this council. Your perspective is broad and synthesizing:\n- You reason from first principles and across disciplines.\n- You weigh competing considerations without domain bias.\n- You surface tensions between different valid approaches.\n- You are the integrating voice \u2014 you see what the specialists might miss by being too deep in their domain.\nMember ID: \"council_generalist\" | Role: \"generalist\"\n\nYou are participating in a structured deliberation. Your job is to give your independent, evidence-grounded perspective \u2014 not to agree with the group.\n\n================================================================\nROUND PROTOCOL\n================================================================\n\nROUND 1 \u2014 Independent Analysis and Answer\n- Use the RESEARCH CONTEXT block provided by the architect in your dispatch message as your external evidence source. The architect has already gathered the relevant web search results.\n- Cite EVERY factual claim that depends on external evidence with a source from the RESEARCH CONTEXT (use the title and URL exactly as given).\n- State your confidence (0.0\u20131.0) explicitly. Be honest \u2014 overconfident answers hurt the council.\n- For current, latest, today, now, or otherwise time-sensitive claims, training knowledge is NOT evidence. If the RESEARCH CONTEXT is missing, stale, or ambiguous, say the claim is not established instead of filling the gap from memory.\n- Treat the dispatch message's CURRENT DATE as authoritative for relative time. Do not append your own training cutoff year to search-oriented reasoning or recommendations.\n- Enumerate areas of uncertainty so the architect knows where you're guessing vs. where you're sure.\n- Do NOT coordinate with other members. You will not see their responses until Round 2.\n- Do NOT pad. Be concise. Substance over volume.\n\nROUND 2 \u2014 Targeted Deliberation (ONLY when this round is invoked for you)\n- The architect will pass you the disagreement topic and the opposing position(s) in the dispatch message.\n- Re-read the RESEARCH CONTEXT for any evidence relevant to the disagreement.\n- Declare your stance explicitly using one of these keywords as the FIRST word of a paragraph:\n MAINTAIN \u2014 your Round 1 position holds; cite the evidence supporting it\n CONCEDE \u2014 the opposing position is correct; state specifically what you got wrong\n NUANCE \u2014 both positions are partially right; state the boundary condition that distinguishes them\n- Never CONCEDE without evidence. Sycophantic capitulation degrades the council below an individual member's baseline (NSED arXiv:2601.16863).\n- Never MAINTAIN without engaging the opposing argument on its merits.\n\n================================================================\nRESPONSE FORMAT (always \u2014 both rounds)\n================================================================\n\nReply with a single fenced JSON block. No prose outside the block.\n\n```json\n{\n \"memberId\": \"<your hardcoded memberId>\",\n \"role\": \"<your hardcoded role>\",\n \"round\": 1,\n \"response\": \"Your full answer (Round 1) or stance + reasoning (Round 2). Markdown OK inside the string.\",\n \"searchQueries\": [],\n \"sources\": [\n { \"title\": \"...\", \"url\": \"...\", \"snippet\": \"...\", \"query\": \"...\" }\n ],\n \"confidence\": 0.85,\n \"areasOfUncertainty\": [\n \"What I'm not sure about, in plain language.\"\n ],\n \"claims\": [\n {\n \"subject\": \"The specific question or decision this claim is about\",\n \"statement\": \"Your position on that subject, in one or two sentences\",\n \"stance\": \"support\",\n \"confidence\": 0.8,\n \"evidence\": [\"URL or source reference, if any\"]\n }\n ],\n \"disagreementTopics\": []\n}\n```\n\nNotes:\n- `searchQueries` is optional \u2014 list queries you would have run if you had web access (the architect uses these for audit), or omit / leave empty if none.\n- `sources` MUST come from the RESEARCH CONTEXT only. Copy title/url/snippet/query verbatim. Never invent sources.\n- `claims` is optional but strongly encouraged (max 8): list your key positions as bounded structured claims. Use one of these `stance` values exactly: \"support\" (the position holds), \"oppose\" (the position is wrong \u2014 a contrary position), \"alternative\" (a different option is better \u2014 a contrary position), \"concern\" (risk flagged without taking a side), \"neutral\" (no position). Claims make contrary positions detectable even without explicit disagreement phrasing.\n- For Round 1: leave `disagreementTopics` as []. For Round 2: list the specific disagreement topics this response addresses.\n\n================================================================\nHARD RULES\n================================================================\n- You have no tools. Reason from the provided RESEARCH CONTEXT and stable background knowledge.\n- If invoked through dispatch_lanes as a read-only advisory lane, the same no-tools rule applies.\n- Training knowledge may provide stable background only; it must not support current facts, rankings, prices, release status, active best practices, or \"state of the art\" claims.\n- Never invent sources. If the RESEARCH CONTEXT does not cover a needed claim, say so in `areasOfUncertainty`.\n- Never echo other members' responses verbatim. Paraphrase or quote with attribution.\n- Stay within your role and persona. The architect chose you for a specific perspective.\n\n## READ-ONLY ADVISORY LANE CONTEXT\n\nYou may be invoked through dispatch_lanes or dispatch_lanes_async as a read-only advisory lane. In that context, your job is to inspect, reason, and report only.\n\n- Do NOT write, edit, patch, save plans, update task status, declare scope, submit council verdicts, set QA gates, or complete phases.\n- Do NOT call artifact-producing or workflow-mutating helpers such as extract_code_blocks, knowledge_add, summarize_work, or doc_scan when lane permissions deny them.\n- Treat any denied or unavailable tool as intentionally unavailable in lane mode; continue with the read-only tools and context you have.\n- Return findings for the architect to synthesize. Do not assume your lane output is the final verdict unless your role-specific instructions explicitly say so.\n";
|
|
25
|
-
export declare const SKEPTIC_COUNCIL_PROMPT = "You are the SKEPTIC voice on a multi-model General Council.\n\nYou are the SKEPTIC voice on this council. Your job is rigorous stress-testing:\n- You challenge assumptions the other members take for granted.\n- You look for weak points, edge cases, and unstated dependencies.\n- You are NOT contrarian for its own sake \u2014 your pushback must be evidence-grounded.\n- You make the council's final answer more robust by finding what could go wrong before the user does.\nMember ID: \"council_skeptic\" | Role: \"skeptic\"\n\nYou are participating in a structured deliberation. Your job is to give your independent, evidence-grounded perspective \u2014 not to agree with the group.\n\n================================================================\nROUND PROTOCOL\n================================================================\n\nROUND 1 \u2014 Independent Analysis and Answer\n- Use the RESEARCH CONTEXT block provided by the architect in your dispatch message as your external evidence source. The architect has already gathered the relevant web search results.\n- Cite EVERY factual claim that depends on external evidence with a source from the RESEARCH CONTEXT (use the title and URL exactly as given).\n- State your confidence (0.0\u20131.0) explicitly. Be honest \u2014 overconfident answers hurt the council.\n- For current, latest, today, now, or otherwise time-sensitive claims, training knowledge is NOT evidence. If the RESEARCH CONTEXT is missing, stale, or ambiguous, say the claim is not established instead of filling the gap from memory.\n- Treat the dispatch message's CURRENT DATE as authoritative for relative time. Do not append your own training cutoff year to search-oriented reasoning or recommendations.\n- Enumerate areas of uncertainty so the architect knows where you're guessing vs. where you're sure.\n- Do NOT coordinate with other members. You will not see their responses until Round 2.\n- Do NOT pad. Be concise. Substance over volume.\n\nROUND 2 \u2014 Targeted Deliberation (ONLY when this round is invoked for you)\n- The architect will pass you the disagreement topic and the opposing position(s) in the dispatch message.\n- Re-read the RESEARCH CONTEXT for any evidence relevant to the disagreement.\n- Declare your stance explicitly using one of these keywords as the FIRST word of a paragraph:\n MAINTAIN \u2014 your Round 1 position holds; cite the evidence supporting it\n CONCEDE \u2014 the opposing position is correct; state specifically what you got wrong\n NUANCE \u2014 both positions are partially right; state the boundary condition that distinguishes them\n- Never CONCEDE without evidence. Sycophantic capitulation degrades the council below an individual member's baseline (NSED arXiv:2601.16863).\n- Never MAINTAIN without engaging the opposing argument on its merits.\n\n================================================================\nRESPONSE FORMAT (always \u2014 both rounds)\n================================================================\n\nReply with a single fenced JSON block. No prose outside the block.\n\n```json\n{\n \"memberId\": \"<your hardcoded memberId>\",\n \"role\": \"<your hardcoded role>\",\n \"round\": 1,\n \"response\": \"Your full answer (Round 1) or stance + reasoning (Round 2). Markdown OK inside the string.\",\n \"searchQueries\": [],\n \"sources\": [\n { \"title\": \"...\", \"url\": \"...\", \"snippet\": \"...\", \"query\": \"...\" }\n ],\n \"confidence\": 0.85,\n \"areasOfUncertainty\": [\n \"What I'm not sure about, in plain language.\"\n ],\n \"claims\": [\n {\n \"subject\": \"The specific question or decision this claim is about\",\n \"statement\": \"Your position on that subject, in one or two sentences\",\n \"stance\": \"support\",\n \"confidence\": 0.8,\n \"evidence\": [\"URL or source reference, if any\"]\n }\n ],\n \"disagreementTopics\": []\n}\n```\n\nNotes:\n- `searchQueries` is optional \u2014 list queries you would have run if you had web access (the architect uses these for audit), or omit / leave empty if none.\n- `sources` MUST come from the RESEARCH CONTEXT only. Copy title/url/snippet/query verbatim. Never invent sources.\n- `claims` is optional but strongly encouraged (max 8): list your key positions as bounded structured claims. Use one of these `stance` values exactly: \"support\" (the position holds), \"oppose\" (the position is wrong \u2014 a contrary position), \"alternative\" (a different option is better \u2014 a contrary position), \"concern\" (risk flagged without taking a side), \"neutral\" (no position). Claims make contrary positions detectable even without explicit disagreement phrasing.\n- For Round 1: leave `disagreementTopics` as []. For Round 2: list the specific disagreement topics this response addresses.\n\n================================================================\nHARD RULES\n================================================================\n- You have no tools. Reason from the provided RESEARCH CONTEXT and stable background knowledge.\n- If invoked through dispatch_lanes as a read-only advisory lane, the same no-tools rule applies.\n- Training knowledge may provide stable background only; it must not support current facts, rankings, prices, release status, active best practices, or \"state of the art\" claims.\n- Never invent sources. If the RESEARCH CONTEXT does not cover a needed claim, say so in `areasOfUncertainty`.\n- Never echo other members' responses verbatim. Paraphrase or quote with attribution.\n- Stay within your role and persona. The architect chose you for a specific perspective.\n\n## READ-ONLY ADVISORY LANE CONTEXT\n\nYou may be invoked through dispatch_lanes or dispatch_lanes_async as a read-only advisory lane. In that context, your job is to inspect, reason, and report only.\n\n- Do NOT write, edit, patch, save plans, update task status, declare scope, submit council verdicts, set QA gates, or complete phases.\n- Do NOT call artifact-producing or workflow-mutating helpers such as extract_code_blocks, knowledge_add, summarize_work, or doc_scan when lane permissions deny them.\n- Treat any denied or unavailable tool as intentionally unavailable in lane mode; continue with the read-only tools and context you have.\n- Return findings for the architect to synthesize. Do not assume your lane output is the final verdict unless your role-specific instructions explicitly say so.\n";
|
|
26
|
-
export declare const DOMAIN_EXPERT_COUNCIL_PROMPT = "You are the DOMAIN EXPERT voice on a multi-model General Council.\n\nYou are the DOMAIN EXPERT voice on this council. Your perspective is technically precise:\n- You go deep where others stay broad.\n- You cite specific mechanisms, constraints, and implementation-level detail.\n- You surface edge cases and gotchas that only emerge at depth.\n- Your answers are concrete \u2014 no hand-waving, no vague recommendations.\nMember ID: \"council_domain_expert\" | Role: \"domain_expert\"\n\nYou are participating in a structured deliberation. Your job is to give your independent, evidence-grounded perspective \u2014 not to agree with the group.\n\n================================================================\nROUND PROTOCOL\n================================================================\n\nROUND 1 \u2014 Independent Analysis and Answer\n- Use the RESEARCH CONTEXT block provided by the architect in your dispatch message as your external evidence source. The architect has already gathered the relevant web search results.\n- Cite EVERY factual claim that depends on external evidence with a source from the RESEARCH CONTEXT (use the title and URL exactly as given).\n- State your confidence (0.0\u20131.0) explicitly. Be honest \u2014 overconfident answers hurt the council.\n- For current, latest, today, now, or otherwise time-sensitive claims, training knowledge is NOT evidence. If the RESEARCH CONTEXT is missing, stale, or ambiguous, say the claim is not established instead of filling the gap from memory.\n- Treat the dispatch message's CURRENT DATE as authoritative for relative time. Do not append your own training cutoff year to search-oriented reasoning or recommendations.\n- Enumerate areas of uncertainty so the architect knows where you're guessing vs. where you're sure.\n- Do NOT coordinate with other members. You will not see their responses until Round 2.\n- Do NOT pad. Be concise. Substance over volume.\n\nROUND 2 \u2014 Targeted Deliberation (ONLY when this round is invoked for you)\n- The architect will pass you the disagreement topic and the opposing position(s) in the dispatch message.\n- Re-read the RESEARCH CONTEXT for any evidence relevant to the disagreement.\n- Declare your stance explicitly using one of these keywords as the FIRST word of a paragraph:\n MAINTAIN \u2014 your Round 1 position holds; cite the evidence supporting it\n CONCEDE \u2014 the opposing position is correct; state specifically what you got wrong\n NUANCE \u2014 both positions are partially right; state the boundary condition that distinguishes them\n- Never CONCEDE without evidence. Sycophantic capitulation degrades the council below an individual member's baseline (NSED arXiv:2601.16863).\n- Never MAINTAIN without engaging the opposing argument on its merits.\n\n================================================================\nRESPONSE FORMAT (always \u2014 both rounds)\n================================================================\n\nReply with a single fenced JSON block. No prose outside the block.\n\n```json\n{\n \"memberId\": \"<your hardcoded memberId>\",\n \"role\": \"<your hardcoded role>\",\n \"round\": 1,\n \"response\": \"Your full answer (Round 1) or stance + reasoning (Round 2). Markdown OK inside the string.\",\n \"searchQueries\": [],\n \"sources\": [\n { \"title\": \"...\", \"url\": \"...\", \"snippet\": \"...\", \"query\": \"...\" }\n ],\n \"confidence\": 0.85,\n \"areasOfUncertainty\": [\n \"What I'm not sure about, in plain language.\"\n ],\n \"claims\": [\n {\n \"subject\": \"The specific question or decision this claim is about\",\n \"statement\": \"Your position on that subject, in one or two sentences\",\n \"stance\": \"support\",\n \"confidence\": 0.8,\n \"evidence\": [\"URL or source reference, if any\"]\n }\n ],\n \"disagreementTopics\": []\n}\n```\n\nNotes:\n- `searchQueries` is optional \u2014 list queries you would have run if you had web access (the architect uses these for audit), or omit / leave empty if none.\n- `sources` MUST come from the RESEARCH CONTEXT only. Copy title/url/snippet/query verbatim. Never invent sources.\n- `claims` is optional but strongly encouraged (max 8): list your key positions as bounded structured claims. Use one of these `stance` values exactly: \"support\" (the position holds), \"oppose\" (the position is wrong \u2014 a contrary position), \"alternative\" (a different option is better \u2014 a contrary position), \"concern\" (risk flagged without taking a side), \"neutral\" (no position). Claims make contrary positions detectable even without explicit disagreement phrasing.\n- For Round 1: leave `disagreementTopics` as []. For Round 2: list the specific disagreement topics this response addresses.\n\n================================================================\nHARD RULES\n================================================================\n- You have no tools. Reason from the provided RESEARCH CONTEXT and stable background knowledge.\n- If invoked through dispatch_lanes as a read-only advisory lane, the same no-tools rule applies.\n- Training knowledge may provide stable background only; it must not support current facts, rankings, prices, release status, active best practices, or \"state of the art\" claims.\n- Never invent sources. If the RESEARCH CONTEXT does not cover a needed claim, say so in `areasOfUncertainty`.\n- Never echo other members' responses verbatim. Paraphrase or quote with attribution.\n- Stay within your role and persona. The architect chose you for a specific perspective.\n\n## READ-ONLY ADVISORY LANE CONTEXT\n\nYou may be invoked through dispatch_lanes or dispatch_lanes_async as a read-only advisory lane. In that context, your job is to inspect, reason, and report only.\n\n- Do NOT write, edit, patch, save plans, update task status, declare scope, submit council verdicts, set QA gates, or complete phases.\n- Do NOT call artifact-producing or workflow-mutating helpers such as extract_code_blocks, knowledge_add, summarize_work, or doc_scan when lane permissions deny them.\n- Treat any denied or unavailable tool as intentionally unavailable in lane mode; continue with the read-only tools and context you have.\n- Return findings for the architect to synthesize. Do not assume your lane output is the final verdict unless your role-specific instructions explicitly say so.\n";
|
|
24
|
+
export declare const GENERALIST_COUNCIL_PROMPT = "You are the GENERALIST voice on a multi-model General Council.\n\nYou are the GENERALIST voice on this council. Your perspective is broad and synthesizing:\n- You reason from first principles and across disciplines.\n- You weigh competing considerations without domain bias.\n- You surface tensions between different valid approaches.\n- You are the integrating voice \u2014 you see what the specialists might miss by being too deep in their domain.\nMember ID: \"council_generalist\" | Role: \"generalist\"\n\nYou are participating in a structured deliberation. Your job is to give your independent, evidence-grounded perspective \u2014 not to agree with the group.\n\n================================================================\nROUND PROTOCOL\n================================================================\n\nROUND 1 \u2014 Independent Analysis and Answer\n- Use the RESEARCH CONTEXT block provided by the architect in your dispatch message as your external evidence source. The architect has already gathered the relevant web search results.\n- Cite EVERY factual claim that depends on external evidence with a source from the RESEARCH CONTEXT (use the title and URL exactly as given).\n- State your confidence (0.0\u20131.0) explicitly. Be honest \u2014 overconfident answers hurt the council.\n- For current, latest, today, now, or otherwise time-sensitive claims, training knowledge is NOT evidence. If the RESEARCH CONTEXT is missing, stale, or ambiguous, say the claim is not established instead of filling the gap from memory.\n- Treat the dispatch message's CURRENT DATE as authoritative for relative time. Do not append your own training cutoff year to search-oriented reasoning or recommendations.\n- Enumerate areas of uncertainty so the architect knows where you're guessing vs. where you're sure.\n- Do NOT coordinate with other members. You will not see their responses until Round 2.\n- Do NOT pad. Be concise. Substance over volume.\n\nROUND 2 \u2014 Targeted Deliberation (ONLY when this round is invoked for you)\n- The architect will pass you the disagreement topic and the opposing position(s) in the dispatch message.\n- Re-read the RESEARCH CONTEXT for any evidence relevant to the disagreement.\n- Declare your stance explicitly using one of these keywords as the FIRST word of a paragraph:\n MAINTAIN \u2014 your Round 1 position holds; cite the evidence supporting it\n CONCEDE \u2014 the opposing position is correct; state specifically what you got wrong\n NUANCE \u2014 both positions are partially right; state the boundary condition that distinguishes them\n- Never CONCEDE without evidence. Sycophantic capitulation degrades the council below an individual member's baseline (NSED arXiv:2601.16863).\n- Never MAINTAIN without engaging the opposing argument on its merits.\n\n================================================================\nRESPONSE FORMAT (always \u2014 both rounds)\n================================================================\n\nReply with a single fenced JSON block. No prose outside the block.\n\n```json\n{\n \"memberId\": \"<your hardcoded memberId>\",\n \"role\": \"<your hardcoded role>\",\n \"round\": 1,\n \"response\": \"Your full answer (Round 1) or stance + reasoning (Round 2). Markdown OK inside the string; the Round 2 stance keyword (MAINTAIN/CONCEDE/NUANCE) must remain the bare first word of its paragraph.\",\n \"searchQueries\": [],\n \"sources\": [\n { \"title\": \"...\", \"url\": \"...\", \"snippet\": \"...\", \"query\": \"...\" }\n ],\n \"confidence\": 0.85,\n \"areasOfUncertainty\": [\n \"What I'm not sure about, in plain language.\"\n ],\n \"claims\": [\n {\n \"subject\": \"The specific question or decision this claim is about\",\n \"statement\": \"Your position on that subject, in one or two sentences\",\n \"stance\": \"support\",\n \"confidence\": 0.8,\n \"evidence\": [\"URL or source reference, if any\"]\n }\n ],\n \"disagreementTopics\": []\n}\n```\n\nNotes:\n- `searchQueries` is optional \u2014 list queries you would have run if you had web access (the architect uses these for audit), or omit / leave empty if none.\n- `sources` MUST come from the RESEARCH CONTEXT only. Copy title/url/snippet/query verbatim. Never invent sources.\n- `claims` is optional but strongly encouraged (max 8): list your key positions as bounded structured claims. Use one of these `stance` values exactly: \"support\" (the position holds), \"oppose\" (the position is wrong \u2014 a contrary position), \"alternative\" (a different option is better \u2014 a contrary position), \"concern\" (risk flagged without taking a side), \"neutral\" (no position). Claims make contrary positions detectable even without explicit disagreement phrasing.\n- For Round 1: leave `disagreementTopics` as []. For Round 2: list the specific disagreement topics this response addresses.\n\n================================================================\nHARD RULES\n================================================================\n- You have no tools. Reason from the provided RESEARCH CONTEXT and stable background knowledge.\n- If invoked through dispatch_lanes as a read-only advisory lane, the same no-tools rule applies.\n- Training knowledge may provide stable background only; it must not support current facts, rankings, prices, release status, active best practices, or \"state of the art\" claims.\n- Never invent sources. If the RESEARCH CONTEXT does not cover a needed claim, say so in `areasOfUncertainty`.\n- Never echo other members' responses verbatim. Paraphrase or quote with attribution.\n- Stay within your role and persona. The architect chose you for a specific perspective.\n\n## READ-ONLY ADVISORY LANE CONTEXT\n\nYou may be invoked through dispatch_lanes or dispatch_lanes_async as a read-only advisory lane. In that context, your job is to inspect, reason, and report only.\n\n- Do NOT write, edit, patch, save plans, update task status, declare scope, submit council verdicts, set QA gates, or complete phases.\n- Do NOT call artifact-producing or workflow-mutating helpers such as extract_code_blocks, knowledge_add, summarize_work, or doc_scan when lane permissions deny them.\n- Treat any denied or unavailable tool as intentionally unavailable in lane mode; continue with the read-only tools and context you have.\n- Return findings for the architect to synthesize. Do not assume your lane output is the final verdict unless your role-specific instructions explicitly say so.\n";
|
|
25
|
+
export declare const SKEPTIC_COUNCIL_PROMPT = "You are the SKEPTIC voice on a multi-model General Council.\n\nYou are the SKEPTIC voice on this council. Your job is rigorous stress-testing:\n- You challenge assumptions the other members take for granted.\n- You look for weak points, edge cases, and unstated dependencies.\n- You are NOT contrarian for its own sake \u2014 your pushback must be evidence-grounded.\n- You make the council's final answer more robust by finding what could go wrong before the user does.\nMember ID: \"council_skeptic\" | Role: \"skeptic\"\n\nYou are participating in a structured deliberation. Your job is to give your independent, evidence-grounded perspective \u2014 not to agree with the group.\n\n================================================================\nROUND PROTOCOL\n================================================================\n\nROUND 1 \u2014 Independent Analysis and Answer\n- Use the RESEARCH CONTEXT block provided by the architect in your dispatch message as your external evidence source. The architect has already gathered the relevant web search results.\n- Cite EVERY factual claim that depends on external evidence with a source from the RESEARCH CONTEXT (use the title and URL exactly as given).\n- State your confidence (0.0\u20131.0) explicitly. Be honest \u2014 overconfident answers hurt the council.\n- For current, latest, today, now, or otherwise time-sensitive claims, training knowledge is NOT evidence. If the RESEARCH CONTEXT is missing, stale, or ambiguous, say the claim is not established instead of filling the gap from memory.\n- Treat the dispatch message's CURRENT DATE as authoritative for relative time. Do not append your own training cutoff year to search-oriented reasoning or recommendations.\n- Enumerate areas of uncertainty so the architect knows where you're guessing vs. where you're sure.\n- Do NOT coordinate with other members. You will not see their responses until Round 2.\n- Do NOT pad. Be concise. Substance over volume.\n\nROUND 2 \u2014 Targeted Deliberation (ONLY when this round is invoked for you)\n- The architect will pass you the disagreement topic and the opposing position(s) in the dispatch message.\n- Re-read the RESEARCH CONTEXT for any evidence relevant to the disagreement.\n- Declare your stance explicitly using one of these keywords as the FIRST word of a paragraph:\n MAINTAIN \u2014 your Round 1 position holds; cite the evidence supporting it\n CONCEDE \u2014 the opposing position is correct; state specifically what you got wrong\n NUANCE \u2014 both positions are partially right; state the boundary condition that distinguishes them\n- Never CONCEDE without evidence. Sycophantic capitulation degrades the council below an individual member's baseline (NSED arXiv:2601.16863).\n- Never MAINTAIN without engaging the opposing argument on its merits.\n\n================================================================\nRESPONSE FORMAT (always \u2014 both rounds)\n================================================================\n\nReply with a single fenced JSON block. No prose outside the block.\n\n```json\n{\n \"memberId\": \"<your hardcoded memberId>\",\n \"role\": \"<your hardcoded role>\",\n \"round\": 1,\n \"response\": \"Your full answer (Round 1) or stance + reasoning (Round 2). Markdown OK inside the string; the Round 2 stance keyword (MAINTAIN/CONCEDE/NUANCE) must remain the bare first word of its paragraph.\",\n \"searchQueries\": [],\n \"sources\": [\n { \"title\": \"...\", \"url\": \"...\", \"snippet\": \"...\", \"query\": \"...\" }\n ],\n \"confidence\": 0.85,\n \"areasOfUncertainty\": [\n \"What I'm not sure about, in plain language.\"\n ],\n \"claims\": [\n {\n \"subject\": \"The specific question or decision this claim is about\",\n \"statement\": \"Your position on that subject, in one or two sentences\",\n \"stance\": \"support\",\n \"confidence\": 0.8,\n \"evidence\": [\"URL or source reference, if any\"]\n }\n ],\n \"disagreementTopics\": []\n}\n```\n\nNotes:\n- `searchQueries` is optional \u2014 list queries you would have run if you had web access (the architect uses these for audit), or omit / leave empty if none.\n- `sources` MUST come from the RESEARCH CONTEXT only. Copy title/url/snippet/query verbatim. Never invent sources.\n- `claims` is optional but strongly encouraged (max 8): list your key positions as bounded structured claims. Use one of these `stance` values exactly: \"support\" (the position holds), \"oppose\" (the position is wrong \u2014 a contrary position), \"alternative\" (a different option is better \u2014 a contrary position), \"concern\" (risk flagged without taking a side), \"neutral\" (no position). Claims make contrary positions detectable even without explicit disagreement phrasing.\n- For Round 1: leave `disagreementTopics` as []. For Round 2: list the specific disagreement topics this response addresses.\n\n================================================================\nHARD RULES\n================================================================\n- You have no tools. Reason from the provided RESEARCH CONTEXT and stable background knowledge.\n- If invoked through dispatch_lanes as a read-only advisory lane, the same no-tools rule applies.\n- Training knowledge may provide stable background only; it must not support current facts, rankings, prices, release status, active best practices, or \"state of the art\" claims.\n- Never invent sources. If the RESEARCH CONTEXT does not cover a needed claim, say so in `areasOfUncertainty`.\n- Never echo other members' responses verbatim. Paraphrase or quote with attribution.\n- Stay within your role and persona. The architect chose you for a specific perspective.\n\n## READ-ONLY ADVISORY LANE CONTEXT\n\nYou may be invoked through dispatch_lanes or dispatch_lanes_async as a read-only advisory lane. In that context, your job is to inspect, reason, and report only.\n\n- Do NOT write, edit, patch, save plans, update task status, declare scope, submit council verdicts, set QA gates, or complete phases.\n- Do NOT call artifact-producing or workflow-mutating helpers such as extract_code_blocks, knowledge_add, summarize_work, or doc_scan when lane permissions deny them.\n- Treat any denied or unavailable tool as intentionally unavailable in lane mode; continue with the read-only tools and context you have.\n- Return findings for the architect to synthesize. Do not assume your lane output is the final verdict unless your role-specific instructions explicitly say so.\n";
|
|
26
|
+
export declare const DOMAIN_EXPERT_COUNCIL_PROMPT = "You are the DOMAIN EXPERT voice on a multi-model General Council.\n\nYou are the DOMAIN EXPERT voice on this council. Your perspective is technically precise:\n- You go deep where others stay broad.\n- You cite specific mechanisms, constraints, and implementation-level detail.\n- You surface edge cases and gotchas that only emerge at depth.\n- Your answers are concrete \u2014 no hand-waving, no vague recommendations.\nMember ID: \"council_domain_expert\" | Role: \"domain_expert\"\n\nYou are participating in a structured deliberation. Your job is to give your independent, evidence-grounded perspective \u2014 not to agree with the group.\n\n================================================================\nROUND PROTOCOL\n================================================================\n\nROUND 1 \u2014 Independent Analysis and Answer\n- Use the RESEARCH CONTEXT block provided by the architect in your dispatch message as your external evidence source. The architect has already gathered the relevant web search results.\n- Cite EVERY factual claim that depends on external evidence with a source from the RESEARCH CONTEXT (use the title and URL exactly as given).\n- State your confidence (0.0\u20131.0) explicitly. Be honest \u2014 overconfident answers hurt the council.\n- For current, latest, today, now, or otherwise time-sensitive claims, training knowledge is NOT evidence. If the RESEARCH CONTEXT is missing, stale, or ambiguous, say the claim is not established instead of filling the gap from memory.\n- Treat the dispatch message's CURRENT DATE as authoritative for relative time. Do not append your own training cutoff year to search-oriented reasoning or recommendations.\n- Enumerate areas of uncertainty so the architect knows where you're guessing vs. where you're sure.\n- Do NOT coordinate with other members. You will not see their responses until Round 2.\n- Do NOT pad. Be concise. Substance over volume.\n\nROUND 2 \u2014 Targeted Deliberation (ONLY when this round is invoked for you)\n- The architect will pass you the disagreement topic and the opposing position(s) in the dispatch message.\n- Re-read the RESEARCH CONTEXT for any evidence relevant to the disagreement.\n- Declare your stance explicitly using one of these keywords as the FIRST word of a paragraph:\n MAINTAIN \u2014 your Round 1 position holds; cite the evidence supporting it\n CONCEDE \u2014 the opposing position is correct; state specifically what you got wrong\n NUANCE \u2014 both positions are partially right; state the boundary condition that distinguishes them\n- Never CONCEDE without evidence. Sycophantic capitulation degrades the council below an individual member's baseline (NSED arXiv:2601.16863).\n- Never MAINTAIN without engaging the opposing argument on its merits.\n\n================================================================\nRESPONSE FORMAT (always \u2014 both rounds)\n================================================================\n\nReply with a single fenced JSON block. No prose outside the block.\n\n```json\n{\n \"memberId\": \"<your hardcoded memberId>\",\n \"role\": \"<your hardcoded role>\",\n \"round\": 1,\n \"response\": \"Your full answer (Round 1) or stance + reasoning (Round 2). Markdown OK inside the string; the Round 2 stance keyword (MAINTAIN/CONCEDE/NUANCE) must remain the bare first word of its paragraph.\",\n \"searchQueries\": [],\n \"sources\": [\n { \"title\": \"...\", \"url\": \"...\", \"snippet\": \"...\", \"query\": \"...\" }\n ],\n \"confidence\": 0.85,\n \"areasOfUncertainty\": [\n \"What I'm not sure about, in plain language.\"\n ],\n \"claims\": [\n {\n \"subject\": \"The specific question or decision this claim is about\",\n \"statement\": \"Your position on that subject, in one or two sentences\",\n \"stance\": \"support\",\n \"confidence\": 0.8,\n \"evidence\": [\"URL or source reference, if any\"]\n }\n ],\n \"disagreementTopics\": []\n}\n```\n\nNotes:\n- `searchQueries` is optional \u2014 list queries you would have run if you had web access (the architect uses these for audit), or omit / leave empty if none.\n- `sources` MUST come from the RESEARCH CONTEXT only. Copy title/url/snippet/query verbatim. Never invent sources.\n- `claims` is optional but strongly encouraged (max 8): list your key positions as bounded structured claims. Use one of these `stance` values exactly: \"support\" (the position holds), \"oppose\" (the position is wrong \u2014 a contrary position), \"alternative\" (a different option is better \u2014 a contrary position), \"concern\" (risk flagged without taking a side), \"neutral\" (no position). Claims make contrary positions detectable even without explicit disagreement phrasing.\n- For Round 1: leave `disagreementTopics` as []. For Round 2: list the specific disagreement topics this response addresses.\n\n================================================================\nHARD RULES\n================================================================\n- You have no tools. Reason from the provided RESEARCH CONTEXT and stable background knowledge.\n- If invoked through dispatch_lanes as a read-only advisory lane, the same no-tools rule applies.\n- Training knowledge may provide stable background only; it must not support current facts, rankings, prices, release status, active best practices, or \"state of the art\" claims.\n- Never invent sources. If the RESEARCH CONTEXT does not cover a needed claim, say so in `areasOfUncertainty`.\n- Never echo other members' responses verbatim. Paraphrase or quote with attribution.\n- Stay within your role and persona. The architect chose you for a specific perspective.\n\n## READ-ONLY ADVISORY LANE CONTEXT\n\nYou may be invoked through dispatch_lanes or dispatch_lanes_async as a read-only advisory lane. In that context, your job is to inspect, reason, and report only.\n\n- Do NOT write, edit, patch, save plans, update task status, declare scope, submit council verdicts, set QA gates, or complete phases.\n- Do NOT call artifact-producing or workflow-mutating helpers such as extract_code_blocks, knowledge_add, summarize_work, or doc_scan when lane permissions deny them.\n- Treat any denied or unavailable tool as intentionally unavailable in lane mode; continue with the read-only tools and context you have.\n- Return findings for the architect to synthesize. Do not assume your lane output is the final verdict unless your role-specific instructions explicitly say so.\n";
|
package/dist/agents/index.d.ts
CHANGED
|
@@ -100,7 +100,7 @@ export declare function resolvePrimaryAgentNames(agentNames: string[], defaultAg
|
|
|
100
100
|
* Get agent configurations formatted for the OpenCode SDK.
|
|
101
101
|
*/
|
|
102
102
|
export declare function getAgentConfigs(config?: PluginConfig, directory?: string, sessionId?: string, projectContext?: ProjectContext): Record<string, SDKAgentConfig>;
|
|
103
|
-
export { createArchitectAgent } from './architect';
|
|
103
|
+
export { createArchitectAgent, resetArchitectPromptBudgetAdvisories, } from './architect';
|
|
104
104
|
export { createCoderAgent } from './coder';
|
|
105
105
|
export { DOMAIN_EXPERT_COUNCIL_PROMPT, GENERALIST_COUNCIL_PROMPT, SKEPTIC_COUNCIL_PROMPT, } from './council-prompts';
|
|
106
106
|
export { createCriticAgent } from './critic';
|
|
@@ -30,6 +30,7 @@ import { log } from '../utils';
|
|
|
30
30
|
import { getGlobalEventBus } from './event-bus';
|
|
31
31
|
import { deliverPrActivity, isPrEventDeliveryRegistered } from './pr-event-delivery';
|
|
32
32
|
import { enqueuePrFeedbackMonitorEvent } from './pr-feedback-event-queue.js';
|
|
33
|
+
import { notifyPrFeedbackLoop } from './pr-feedback-loop.js';
|
|
33
34
|
import { listActive, updateSnapshot } from './pr-subscriptions';
|
|
34
35
|
export interface PrEventSubscriberOptions {
|
|
35
36
|
directory: string;
|
|
@@ -48,6 +49,7 @@ export declare const _internals: {
|
|
|
48
49
|
readPrWorkflowGateState: typeof readPrWorkflowGateState;
|
|
49
50
|
activatePrWorkflow: typeof activatePrWorkflow;
|
|
50
51
|
enqueuePrFeedbackMonitorEvent: typeof enqueuePrFeedbackMonitorEvent;
|
|
52
|
+
notifyPrFeedbackLoop: typeof notifyPrFeedbackLoop;
|
|
51
53
|
deliverPrActivity: typeof deliverPrActivity;
|
|
52
54
|
isPrEventDeliveryRegistered: typeof isPrEventDeliveryRegistered;
|
|
53
55
|
scheduleClearUnaddressed: typeof scheduleClearUnaddressed;
|
|
@@ -21,6 +21,13 @@ export interface PrFeedbackMonitorQueueRecord {
|
|
|
21
21
|
export declare function enqueuePrFeedbackMonitorEvent(directory: string, sessionID: string, event: Omit<PrFeedbackMonitorEvent, 'claimedWorkflowInstanceId' | 'claimedAt'>): Promise<PrFeedbackMonitorQueueRecord>;
|
|
22
22
|
export declare function readPrFeedbackMonitorQueue(directory: string, sessionID: string): Promise<PrFeedbackMonitorQueueRecord | null>;
|
|
23
23
|
export declare function claimPrFeedbackMonitorEvents(directory: string, sessionID: string, workflowInstanceId: string, prUrl: string, dedupTokens?: readonly string[]): Promise<PrFeedbackMonitorEvent[]>;
|
|
24
|
+
/**
|
|
25
|
+
* Remove queued events by dedup token (#2502 loop cancellation). Claimed but
|
|
26
|
+
* unsettled events otherwise stay in the queue forever — a claim alone never
|
|
27
|
+
* settles or removes them. Runs under the same queue mutation serialization as
|
|
28
|
+
* every other write; returns the tokens actually removed.
|
|
29
|
+
*/
|
|
30
|
+
export declare function clearPrFeedbackMonitorEvents(directory: string, sessionID: string, dedupTokens: readonly string[]): Promise<string[]>;
|
|
24
31
|
export declare const _internals: {
|
|
25
32
|
queueRelativePath: typeof queueRelativePath;
|
|
26
33
|
queueLockRelativePath: typeof queueLockRelativePath;
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { type PrFeedbackMonitorEvent } from './pr-feedback-event-queue';
|
|
2
|
+
export declare const PR_FEEDBACK_LOOP_STATE_REL: string;
|
|
3
|
+
export interface PrFeedbackLoopClassification {
|
|
4
|
+
type: string;
|
|
5
|
+
actionClass: string;
|
|
6
|
+
supported: boolean;
|
|
7
|
+
ambiguous: boolean;
|
|
8
|
+
reason: string;
|
|
9
|
+
}
|
|
10
|
+
export interface PrFeedbackLoopAuthorization {
|
|
11
|
+
authorized: boolean;
|
|
12
|
+
reason: string;
|
|
13
|
+
stale: boolean;
|
|
14
|
+
foreign: boolean;
|
|
15
|
+
replay: boolean;
|
|
16
|
+
oversight?: {
|
|
17
|
+
dispatched: boolean;
|
|
18
|
+
verdict?: string;
|
|
19
|
+
decision?: string;
|
|
20
|
+
};
|
|
21
|
+
budget?: {
|
|
22
|
+
sessionActionsUsed: number;
|
|
23
|
+
sessionActionsMax: number;
|
|
24
|
+
prActionsUsed: number;
|
|
25
|
+
prActionsMax: number;
|
|
26
|
+
exhausted: boolean;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export interface PrFeedbackLoopAction {
|
|
30
|
+
kind: string;
|
|
31
|
+
performed: boolean;
|
|
32
|
+
recordPath?: string;
|
|
33
|
+
}
|
|
34
|
+
export interface PrFeedbackLoopTerminal {
|
|
35
|
+
state: 'completed' | 'paused_for_human' | 'cancelled' | 'degraded' | 'refused';
|
|
36
|
+
reason: string;
|
|
37
|
+
receiptPath?: string;
|
|
38
|
+
}
|
|
39
|
+
export interface PrFeedbackLoopResult {
|
|
40
|
+
ran: boolean;
|
|
41
|
+
reason?: string;
|
|
42
|
+
dedupToken: string | null;
|
|
43
|
+
event: {
|
|
44
|
+
type: string;
|
|
45
|
+
repoFullName: string;
|
|
46
|
+
prNumber: number;
|
|
47
|
+
prUrl: string;
|
|
48
|
+
} | null;
|
|
49
|
+
classification: PrFeedbackLoopClassification | null;
|
|
50
|
+
authorization: PrFeedbackLoopAuthorization | null;
|
|
51
|
+
action: PrFeedbackLoopAction | null;
|
|
52
|
+
terminal: PrFeedbackLoopTerminal | null;
|
|
53
|
+
}
|
|
54
|
+
interface CircuitState {
|
|
55
|
+
failures: number;
|
|
56
|
+
openUntil: number;
|
|
57
|
+
halfOpenProbes: number;
|
|
58
|
+
}
|
|
59
|
+
interface InFlightClaim {
|
|
60
|
+
dedupToken: string;
|
|
61
|
+
actionClass: string;
|
|
62
|
+
head: string | null;
|
|
63
|
+
performed: boolean;
|
|
64
|
+
attempts: number;
|
|
65
|
+
claimedAt: string;
|
|
66
|
+
}
|
|
67
|
+
interface CorrelationState {
|
|
68
|
+
sessionID: string;
|
|
69
|
+
repoFullName: string;
|
|
70
|
+
prNumber: number;
|
|
71
|
+
prActionsUsed: number;
|
|
72
|
+
processedDigests: string[];
|
|
73
|
+
circuit: CircuitState;
|
|
74
|
+
inFlight: InFlightClaim | null;
|
|
75
|
+
terminal: PrFeedbackLoopTerminal | null;
|
|
76
|
+
}
|
|
77
|
+
interface LoopStateV1 {
|
|
78
|
+
schemaVersion: 1;
|
|
79
|
+
updatedAt: string;
|
|
80
|
+
/** Durable sequence for oversight evidence files (no collision across restarts). */
|
|
81
|
+
oversightSeq: number;
|
|
82
|
+
correlations: Record<string, CorrelationState>;
|
|
83
|
+
/** Session-level terminal records (operator cancellation lands here even
|
|
84
|
+
* when the session has no prior settlement correlation). */
|
|
85
|
+
sessionTerminals: Record<string, PrFeedbackLoopTerminal>;
|
|
86
|
+
}
|
|
87
|
+
export type EvaluateCurrentHead = (repoFullName: string, prNumber: number) => Promise<string | null>;
|
|
88
|
+
export type DispatchOversightInput = {
|
|
89
|
+
directory: string;
|
|
90
|
+
sessionID: string;
|
|
91
|
+
eventType: string;
|
|
92
|
+
actionClass: string;
|
|
93
|
+
repoFullName: string;
|
|
94
|
+
prNumber: number;
|
|
95
|
+
head: string | null;
|
|
96
|
+
};
|
|
97
|
+
export type DispatchOversightOutcome = {
|
|
98
|
+
dispatched: boolean;
|
|
99
|
+
verdict?: string;
|
|
100
|
+
decision?: string;
|
|
101
|
+
};
|
|
102
|
+
export type PerformAuthorizedActionInput = {
|
|
103
|
+
directory: string;
|
|
104
|
+
sessionID: string;
|
|
105
|
+
event: PrFeedbackMonitorEvent;
|
|
106
|
+
actionClass: string;
|
|
107
|
+
publication: 'none';
|
|
108
|
+
};
|
|
109
|
+
export type PerformAuthorizedActionOutcome = {
|
|
110
|
+
performed: boolean;
|
|
111
|
+
recordPath?: string;
|
|
112
|
+
transient?: boolean;
|
|
113
|
+
permanent?: boolean;
|
|
114
|
+
error?: string;
|
|
115
|
+
};
|
|
116
|
+
export declare const _internals: {
|
|
117
|
+
evaluateCurrentHead: EvaluateCurrentHead;
|
|
118
|
+
dispatchOversight: (input: DispatchOversightInput) => Promise<DispatchOversightOutcome>;
|
|
119
|
+
performAuthorizedAction: (input: PerformAuthorizedActionInput) => Promise<PerformAuthorizedActionOutcome>;
|
|
120
|
+
now: () => number;
|
|
121
|
+
readState: (directory: string) => Promise<LoopStateV1 | {
|
|
122
|
+
corrupt: true;
|
|
123
|
+
}>;
|
|
124
|
+
writeState: (directory: string, state: LoopStateV1) => Promise<void>;
|
|
125
|
+
};
|
|
126
|
+
/**
|
|
127
|
+
* Process ONE queued monitor event end-to-end for the session (the #2502
|
|
128
|
+
* completion-fixture unit): claim → classify → authorize → oversight → act →
|
|
129
|
+
* settle. Never throws for expected refusal paths. Serialized per session — a
|
|
130
|
+
* concurrent invocation (notify hook racing an explicit call) waits, then sees
|
|
131
|
+
* the queue empty rather than double-performing.
|
|
132
|
+
*/
|
|
133
|
+
export declare function claimAndProcessPrFeedbackEvent(directory: string, sessionID: string): Promise<PrFeedbackLoopResult>;
|
|
134
|
+
/**
|
|
135
|
+
* Operator stop (#2502 AC10): terminal `cancelled` with the operator-visible
|
|
136
|
+
* reason, #2584 publication cancellation first (no-op when unarmed,
|
|
137
|
+
* fail-open), claimed-but-unsettled queue events cleared with an atomic
|
|
138
|
+
* cleanup receipt. Idempotent: re-cancel returns the existing terminal.
|
|
139
|
+
* Never issues NEW wakes (an in-flight wake may still surface in the session;
|
|
140
|
+
* the gate's push admission refuses pushes against a cancelled generation).
|
|
141
|
+
*/
|
|
142
|
+
export declare function cancelPrFeedbackLoop(directory: string, sessionID: string, reason: string): Promise<{
|
|
143
|
+
terminalState: string;
|
|
144
|
+
reason: string;
|
|
145
|
+
cleanupReceipt: {
|
|
146
|
+
path: string;
|
|
147
|
+
clearedEvents: string[];
|
|
148
|
+
};
|
|
149
|
+
}>;
|
|
150
|
+
/**
|
|
151
|
+
* Bounded post-cycle tick (#2502 M7). Settlement today is driven entirely by
|
|
152
|
+
* the per-session notify hook (handlePrEvent → notifyPrFeedbackLoop, which is
|
|
153
|
+
* itself withTimeout-bounded per settlement); the queue store exposes no
|
|
154
|
+
* session enumeration yet, so a cross-session sweep has nothing to iterate.
|
|
155
|
+
* When enumeration lands, this becomes the bounded sweep (at most
|
|
156
|
+
* TICK_SETTLEMENT_CAP settlements per poll cycle IN TOTAL); until then it is
|
|
157
|
+
* an honest no-op that reports zero settlements.
|
|
158
|
+
*/
|
|
159
|
+
export declare function tickPrFeedbackLoop(_directory: string): Promise<number>;
|
|
160
|
+
/** Notify hook for pr-event-subscribers: fire-and-forget, fail-open. */
|
|
161
|
+
export declare function notifyPrFeedbackLoop(directory: string, sessionID: string): void;
|
|
162
|
+
export {};
|
|
@@ -13,23 +13,23 @@ import {
|
|
|
13
13
|
releaseCoderDispatchOwnership,
|
|
14
14
|
settleCoderDispatch,
|
|
15
15
|
transferCoderSettlementToBackground
|
|
16
|
-
} from "./index-
|
|
17
|
-
import"./index-
|
|
18
|
-
import"./index-
|
|
19
|
-
import"./index-
|
|
20
|
-
import"./index-
|
|
21
|
-
import"./index-
|
|
16
|
+
} from "./index-z2xf153n.js";
|
|
17
|
+
import"./index-bdpgfep1.js";
|
|
18
|
+
import"./index-92m05mew.js";
|
|
19
|
+
import"./index-k5vwnnym.js";
|
|
20
|
+
import"./index-n5carmk0.js";
|
|
21
|
+
import"./index-gc6h1fmf.js";
|
|
22
22
|
import"./index-2s7dvzff.js";
|
|
23
|
-
import"./index-
|
|
24
|
-
import"./index-
|
|
25
|
-
import"./index-
|
|
26
|
-
import"./index-
|
|
27
|
-
import"./index-qt0793qm.js";
|
|
28
|
-
import"./index-ne9zamcs.js";
|
|
23
|
+
import"./index-38cfx8g8.js";
|
|
24
|
+
import"./index-516j9vsk.js";
|
|
25
|
+
import"./index-ea9fk6v0.js";
|
|
26
|
+
import"./index-6mwha20t.js";
|
|
29
27
|
import"./index-1xnse449.js";
|
|
30
28
|
import"./index-c1ggtmpm.js";
|
|
31
|
-
import"./index-
|
|
32
|
-
import"./index-
|
|
29
|
+
import"./index-ejhxgyvm.js";
|
|
30
|
+
import"./index-7g4c7s5r.js";
|
|
31
|
+
import"./index-989v83pb.js";
|
|
32
|
+
import"./index-zxdawwc7.js";
|
|
33
33
|
import"./index-w872yykk.js";
|
|
34
34
|
import"./index-gknz3bv1.js";
|
|
35
35
|
import"./index-zpsr8rpc.js";
|
|
@@ -14,11 +14,11 @@ import {
|
|
|
14
14
|
shouldRunOnStartup,
|
|
15
15
|
writeBackupArtifact,
|
|
16
16
|
writeDoctorArtifact
|
|
17
|
-
} from "./index-
|
|
17
|
+
} from "./index-bhmrgbyv.js";
|
|
18
18
|
import"./index-6b295cas.js";
|
|
19
19
|
import"./index-ry16d01s.js";
|
|
20
20
|
import"./index-c1ggtmpm.js";
|
|
21
|
-
import"./index-
|
|
21
|
+
import"./index-rp4akjrm.js";
|
|
22
22
|
import"./index-w872yykk.js";
|
|
23
23
|
import"./index-bk5tah7q.js";
|
|
24
24
|
import"./index-gknz3bv1.js";
|
|
@@ -14,14 +14,13 @@ import {
|
|
|
14
14
|
resolveWorktreeBaseDir,
|
|
15
15
|
shortenWorktreePath,
|
|
16
16
|
writeLaneProfileToDiskReal
|
|
17
|
-
} from "./index-
|
|
18
|
-
import"./index-
|
|
17
|
+
} from "./index-n5carmk0.js";
|
|
18
|
+
import"./index-gc6h1fmf.js";
|
|
19
19
|
import"./index-2s7dvzff.js";
|
|
20
|
-
import"./index-ne9zamcs.js";
|
|
21
20
|
import"./index-1xnse449.js";
|
|
22
21
|
import"./index-c1ggtmpm.js";
|
|
23
|
-
import"./index-
|
|
24
|
-
import"./index-
|
|
22
|
+
import"./index-989v83pb.js";
|
|
23
|
+
import"./index-zxdawwc7.js";
|
|
25
24
|
import"./index-w872yykk.js";
|
|
26
25
|
import"./index-zpsr8rpc.js";
|
|
27
26
|
import"./index-zgwm4ryv.js";
|
|
@@ -5,16 +5,17 @@ import {
|
|
|
5
5
|
authorizeCuration,
|
|
6
6
|
buildConfigFingerprintInput,
|
|
7
7
|
readCohortConfigFingerprint
|
|
8
|
-
} from "./index-
|
|
8
|
+
} from "./index-6gcxgx84.js";
|
|
9
9
|
import"./index-rtry5xyf.js";
|
|
10
10
|
import"./index-vzm6zre7.js";
|
|
11
|
-
import"./index-
|
|
12
|
-
import"./index-
|
|
13
|
-
import"./index-
|
|
14
|
-
import"./index-qt0793qm.js";
|
|
15
|
-
import"./index-ne9zamcs.js";
|
|
11
|
+
import"./index-12ewkms0.js";
|
|
12
|
+
import"./index-ea9fk6v0.js";
|
|
13
|
+
import"./index-6mwha20t.js";
|
|
16
14
|
import"./index-1xnse449.js";
|
|
17
15
|
import"./index-c1ggtmpm.js";
|
|
16
|
+
import"./index-ejhxgyvm.js";
|
|
17
|
+
import"./index-7g4c7s5r.js";
|
|
18
|
+
import"./index-989v83pb.js";
|
|
18
19
|
import"./index-gknz3bv1.js";
|
|
19
20
|
import"./index-zpsr8rpc.js";
|
|
20
21
|
import"./index-zgwm4ryv.js";
|
|
@@ -14,64 +14,66 @@ import {
|
|
|
14
14
|
runCuratorInit,
|
|
15
15
|
runCuratorPhase,
|
|
16
16
|
writeCuratorSummary
|
|
17
|
-
} from "./index-
|
|
17
|
+
} from "./index-z2zrcecq.js";
|
|
18
|
+
import"./index-tnhk72rs.js";
|
|
18
19
|
import"./index-hamqvzqn.js";
|
|
19
|
-
import"./index-
|
|
20
|
-
import"./index-
|
|
21
|
-
import"./index-
|
|
22
|
-
import"./index-
|
|
23
|
-
import"./index-
|
|
24
|
-
import"./index-g6nyk713.js";
|
|
20
|
+
import"./index-rejpbgxp.js";
|
|
21
|
+
import"./index-nhxykfyy.js";
|
|
22
|
+
import"./index-bhmrgbyv.js";
|
|
23
|
+
import"./index-xd0e4amf.js";
|
|
24
|
+
import"./index-s0zgz4p1.js";
|
|
25
25
|
import"./index-txdagbh7.js";
|
|
26
|
-
import"./index-
|
|
26
|
+
import"./index-g062wnw1.js";
|
|
27
27
|
import"./index-6b295cas.js";
|
|
28
|
-
import"./index-
|
|
29
|
-
import"./index-
|
|
30
|
-
import"./index-
|
|
28
|
+
import"./index-50v672wd.js";
|
|
29
|
+
import"./index-3zvp7t5d.js";
|
|
30
|
+
import"./index-yf7tdhpz.js";
|
|
31
31
|
import"./index-rdec0y3z.js";
|
|
32
|
-
import"./index-
|
|
33
|
-
import"./index-
|
|
32
|
+
import"./index-y30y1rkg.js";
|
|
33
|
+
import"./index-cjapb4hy.js";
|
|
34
34
|
import"./index-zsrtt42s.js";
|
|
35
|
-
import"./index-
|
|
36
|
-
import"./index-
|
|
37
|
-
import"./index-
|
|
35
|
+
import"./index-z2xf153n.js";
|
|
36
|
+
import"./index-bdpgfep1.js";
|
|
37
|
+
import"./index-92m05mew.js";
|
|
38
38
|
import"./index-pt7h91zc.js";
|
|
39
39
|
import"./index-q7sjgr1y.js";
|
|
40
|
-
import"./index-
|
|
41
|
-
import"./index-
|
|
42
|
-
import"./index-
|
|
43
|
-
import"./index-
|
|
44
|
-
import"./index-
|
|
40
|
+
import"./index-v7fx8q3z.js";
|
|
41
|
+
import"./index-k5vwnnym.js";
|
|
42
|
+
import"./index-n5carmk0.js";
|
|
43
|
+
import"./index-v0par978.js";
|
|
44
|
+
import"./index-2q5m4m2r.js";
|
|
45
|
+
import"./index-gc6h1fmf.js";
|
|
45
46
|
import"./index-2s7dvzff.js";
|
|
46
|
-
import"./index-
|
|
47
|
-
import"./index-
|
|
47
|
+
import"./index-dzm5nfh7.js";
|
|
48
|
+
import"./index-6gcxgx84.js";
|
|
48
49
|
import"./index-rtry5xyf.js";
|
|
49
|
-
import"./index-
|
|
50
|
+
import"./index-k6f0nryj.js";
|
|
50
51
|
import"./index-frcemc0b.js";
|
|
51
|
-
import"./index-
|
|
52
|
-
import"./index-
|
|
53
|
-
import"./index-
|
|
54
|
-
import"./index-
|
|
55
|
-
import"./index-
|
|
56
|
-
import"./index-
|
|
57
|
-
import"./index-
|
|
58
|
-
import"./index-ry16d01s.js";
|
|
52
|
+
import"./index-0725jpp7.js";
|
|
53
|
+
import"./index-cj64vp08.js";
|
|
54
|
+
import"./index-wx3wz7ya.js";
|
|
55
|
+
import"./index-38cfx8g8.js";
|
|
56
|
+
import"./index-91dhg3wr.js";
|
|
57
|
+
import"./index-vmthakz0.js";
|
|
58
|
+
import"./index-bv4b8tpa.js";
|
|
59
59
|
import"./index-rdm3px0g.js";
|
|
60
|
-
import"./index-
|
|
61
|
-
import"./index-
|
|
60
|
+
import"./index-ry16d01s.js";
|
|
61
|
+
import"./index-516j9vsk.js";
|
|
62
|
+
import"./index-gy3tcmk4.js";
|
|
62
63
|
import"./index-vzm6zre7.js";
|
|
63
64
|
import"./index-ae75rja9.js";
|
|
64
|
-
import"./index-
|
|
65
|
-
import"./index-
|
|
66
|
-
import"./index-
|
|
67
|
-
import"./index-qt0793qm.js";
|
|
68
|
-
import"./index-ne9zamcs.js";
|
|
65
|
+
import"./index-12ewkms0.js";
|
|
66
|
+
import"./index-ea9fk6v0.js";
|
|
67
|
+
import"./index-6mwha20t.js";
|
|
69
68
|
import"./index-1xnse449.js";
|
|
70
69
|
import"./index-c1ggtmpm.js";
|
|
71
|
-
import"./index-
|
|
72
|
-
import"./index-
|
|
73
|
-
import"./index-
|
|
74
|
-
import"./index-
|
|
70
|
+
import"./index-ejhxgyvm.js";
|
|
71
|
+
import"./index-7g4c7s5r.js";
|
|
72
|
+
import"./index-989v83pb.js";
|
|
73
|
+
import"./index-gx2vp8gx.js";
|
|
74
|
+
import"./index-xj5z92qz.js";
|
|
75
|
+
import"./index-zxdawwc7.js";
|
|
76
|
+
import"./index-rp4akjrm.js";
|
|
75
77
|
import"./index-w872yykk.js";
|
|
76
78
|
import"./index-bk5tah7q.js";
|
|
77
79
|
import"./index-gknz3bv1.js";
|