@runfusion/fusion 0.77.0-beta.2 → 0.77.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin.js +12324 -8618
- package/dist/child-process-worker.js +8252 -6106
- package/dist/client/.vite/manifest.json +294 -267
- package/dist/client/assets/{AgentDetailView-Dew3af1O.js → AgentDetailView-CH6GtXl9.js} +3 -3
- package/dist/client/assets/{AgentPermissionPolicyEditor-CxPQffiY.js → AgentPermissionPolicyEditor-YTEpMhUx.js} +1 -1
- package/dist/client/assets/{AgentsView-Cr4LDGdt.js → AgentsView-XOHHDo4a.js} +4 -4
- package/dist/client/assets/ChatView-gH7QX3TI.js +13 -0
- package/dist/client/assets/{CommandCenter-DCC90LOP.js → CommandCenter-BsH-R15f.js} +3 -3
- package/dist/client/assets/{DevServerView-B5b520w6.js → DevServerView-CKOa-lkc.js} +1 -1
- package/dist/client/assets/{DirectoryPicker-1JvRd5mC.js → DirectoryPicker-DHUYTE-j.js} +1 -1
- package/dist/client/assets/DocumentsView-BPzrxeP-.js +1 -0
- package/dist/client/assets/{EvalsView-a3LhgRSo.js → EvalsView-DojCiv47.js} +1 -1
- package/dist/client/assets/{ExperimentalAgentOnboardingModal-vdVa8h7F.js → ExperimentalAgentOnboardingModal-DuurZ8qe.js} +1 -1
- package/dist/client/assets/{GoalsView-Dz2o91fd.js → GoalsView-DDWPXcG1.js} +1 -1
- package/dist/client/assets/{InsightsView-De3R_46d.js → InsightsView-CgkMOD1A.js} +3 -3
- package/dist/client/assets/MemoryView-Cj49_z7O.js +3 -0
- package/dist/client/assets/{PiExtensionsManager-C9JABO_4.js → PiExtensionsManager-B_rRJiOd.js} +1 -1
- package/dist/client/assets/PluginManager-Dxwi88oY.js +1 -0
- package/dist/client/assets/{PullRequestView-DT8vTeVi.js → PullRequestView-z-5v2hQT.js} +2 -2
- package/dist/client/assets/ReportModal-DmOPEYWp.js +21 -0
- package/dist/client/assets/ReportModal-lzN_xrnM.css +1 -0
- package/dist/client/assets/{ResearchView-cNsjYu8F.js → ResearchView-D90Jbzbx.js} +2 -2
- package/dist/client/assets/{SecretsView-BAmf7KyS.js → SecretsView-CSyjZl5L.js} +1 -1
- package/dist/client/assets/SessionTerminal-Bwb8nGmU.js +2 -0
- package/dist/client/assets/SettingsModal-BAzmMjr9.js +21 -0
- package/dist/client/assets/SettingsModal-C5ic1ls7.css +1 -0
- package/dist/client/assets/{SettingsModal-C_9RiEI7.js → SettingsModal-CJof1Ett.js} +1 -1
- package/dist/client/assets/{SettingsTextareaRow-D8RHSj8b.js → SettingsTextareaRow-BYchnHfW.js} +1 -1
- package/dist/client/assets/SetupWizardModal-NqV-erVf.js +2 -0
- package/dist/client/assets/{SkillsView-DyeCwYit.js → SkillsView-BUrkIJ-p.js} +1 -1
- package/dist/client/assets/{WorkflowNodeEditor-C5Jc9w_A.js → WorkflowNodeEditor-DcPk2A1Z.js} +1 -1
- package/dist/client/assets/{agent-import-generation-SCPNeF25.js → agent-import-generation-X16OLfrL.js} +1 -1
- package/dist/client/assets/{agentsOrgChartLayout-CqKtNCjy.js → agentsOrgChartLayout-BhPIXckU.js} +1 -1
- package/dist/client/assets/app-B-TfWH9b.js +5 -0
- package/dist/client/assets/app-B2RDV_-t.js +13 -0
- package/dist/client/assets/app-CDo0mF2S.js +5 -0
- package/dist/client/assets/app-Cc18kAQS.js +13 -0
- package/dist/client/assets/app-DFF79EUn.js +13 -0
- package/dist/client/assets/app-DSeFHxgj.js +13 -0
- package/dist/client/assets/app-Ducr0y6r.js +13 -0
- package/dist/client/assets/{architectureDiagram-3BPJPVTR-Cz2HYn0b.js → architectureDiagram-3BPJPVTR-WArMtdqy.js} +1 -1
- package/dist/client/assets/{blockDiagram-GPEHLZMM-IimJVscG.js → blockDiagram-GPEHLZMM-emScogdV.js} +1 -1
- package/dist/client/assets/{c4Diagram-AAUBKEIU-C-xii7zn.js → c4Diagram-AAUBKEIU-CBY7-E0T.js} +1 -1
- package/dist/client/assets/channel-CP2ySYs0.js +1 -0
- package/dist/client/assets/{chunk-2J33WTMH-DQ-9Xccu.js → chunk-2J33WTMH-Bcai1sOm.js} +1 -1
- package/dist/client/assets/{chunk-4BX2VUAB-DmdAX9Bx.js → chunk-4BX2VUAB-hjiKRusj.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-IF2bk5IL.js → chunk-55IACEB6-DpO9nIb0.js} +1 -1
- package/dist/client/assets/{chunk-727SXJPM-AeYpIzVu.js → chunk-727SXJPM-B9JanA0o.js} +1 -1
- package/dist/client/assets/{chunk-AQP2D5EJ-DV942DD9.js → chunk-AQP2D5EJ-D6zdnEUE.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-Bt_riVlZ.js → chunk-FMBD7UC4-CRkrJ51d.js} +1 -1
- package/dist/client/assets/{chunk-ND2GUHAM-CbyjNbXR.js → chunk-ND2GUHAM-BLQsKt7a.js} +1 -1
- package/dist/client/assets/{chunk-QZHKN3VN-DqiRniYQ.js → chunk-QZHKN3VN-MCOlJ723.js} +1 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-DKkOBtzM.js +1 -0
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-DKkOBtzM.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-UCvthviL.js → cose-bilkent-S5V4N54A-Cv1XmKKG.js} +1 -1
- package/dist/client/assets/{dagre-BM42HDAG-DnMlT1Oi.js → dagre-BM42HDAG-flnNS_RW.js} +1 -1
- package/dist/client/assets/{dashboard-view-C9D0aoRW.js → dashboard-view-CC1aH-lp.js} +1 -1
- package/dist/client/assets/{dashboard-view-myjM9tr8.js → dashboard-view-CrV-rL9Q.js} +1 -1
- package/dist/client/assets/{dashboard-view-JysoyDRX.js → dashboard-view-DEAYb_TZ.js} +1 -1
- package/dist/client/assets/{dashboard-view-Cz0sp2Wl.js → dashboard-view-Dz7kqcJc.js} +1 -1
- package/dist/client/assets/{diagram-2AECGRRQ-BYFiqXGw.js → diagram-2AECGRRQ-Z3S7b_6_.js} +1 -1
- package/dist/client/assets/{diagram-5GNKFQAL-DZU3pSYq.js → diagram-5GNKFQAL-BAZHdMFq.js} +1 -1
- package/dist/client/assets/{diagram-KO2AKTUF-0ybdKuMm.js → diagram-KO2AKTUF-C2y3S8F0.js} +1 -1
- package/dist/client/assets/{diagram-LMA3HP47-Rxbgnbsp.js → diagram-LMA3HP47-Bfz0_IvT.js} +1 -1
- package/dist/client/assets/{diagram-OG6HWLK6-BAU_hTeV.js → diagram-OG6HWLK6-BBmSQsTI.js} +1 -1
- package/dist/client/assets/{erDiagram-TEJ5UH35-zr8HrwTt.js → erDiagram-TEJ5UH35-DnpdQi66.js} +1 -1
- package/dist/client/assets/{flowDiagram-I6XJVG4X-CrTw0iFw.js → flowDiagram-I6XJVG4X-IybTR_zf.js} +1 -1
- package/dist/client/assets/{folder-open-DnAlsXXn.js → folder-open-Dntm63x4.js} +1 -1
- package/dist/client/assets/{ganttDiagram-6RSMTGT7-CCORsxxz.js → ganttDiagram-6RSMTGT7-DEQOe2E9.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-PVQCEYII-C07wWSjj.js → gitGraphDiagram-PVQCEYII-BOKc-h63.js} +1 -1
- package/dist/client/assets/index-DXpztECA.css +1 -0
- package/dist/client/assets/index-I32FijPT.js +2821 -0
- package/dist/client/assets/{infoDiagram-5YYISTIA-hAeccD_4.js → infoDiagram-5YYISTIA-LqaYIdbj.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-WLCzv-NH.js → ishikawaDiagram-YF4QCWOH-a8qd512s.js} +1 -1
- package/dist/client/assets/{journeyDiagram-JHISSGLW-ClnasNhy.js → journeyDiagram-JHISSGLW-BgoNyeiy.js} +1 -1
- package/dist/client/assets/{kanban-definition-UN3LZRKU-CAuARhUz.js → kanban-definition-UN3LZRKU-Bqwow7D3.js} +1 -1
- package/dist/client/assets/{mermaid.core-Bh02RvfX.js → mermaid.core-B2zD934i.js} +4 -4
- package/dist/client/assets/{mindmap-definition-RKZ34NQL-KNTlbW4V.js → mindmap-definition-RKZ34NQL-CCTOigWu.js} +1 -1
- package/dist/client/assets/{pieDiagram-4H26LBE5-BouAfBEw.js → pieDiagram-4H26LBE5-Bq5DtXKR.js} +1 -1
- package/dist/client/assets/pixelify-sans-cyrillic-400-normal-DfOZNMlW.woff +0 -0
- package/dist/client/assets/pixelify-sans-latin-400-normal-DLrIX9QE.woff2 +0 -0
- package/dist/client/assets/pixelify-sans-latin-400-normal-JapMNN6Z.woff +0 -0
- package/dist/client/assets/pixelify-sans-latin-ext-400-normal-BkfTUL4s.woff +0 -0
- package/dist/client/assets/pixelify-sans-latin-ext-400-normal-DdH6zlBQ.woff2 +0 -0
- package/dist/client/assets/{puzzle-CC8Ur3Cy.js → puzzle-VhTPiCit.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-W4KKPZXB-wTdkCUJU.js → quadrantDiagram-W4KKPZXB-CGMP3nUx.js} +1 -1
- package/dist/client/assets/{requirementDiagram-4Y6WPE33-BnjY4Tc_.js → requirementDiagram-4Y6WPE33-Ckeu_szu.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-5OEKKPKP-C-QsS08u.js → sankeyDiagram-5OEKKPKP-SWbBDD4d.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-3UESZ5HK-DD36MILE.js → sequenceDiagram-3UESZ5HK-CiJrmL_G.js} +1 -1
- package/dist/client/assets/{shield-alert-DcXc56Fy.js → shield-alert-BBDlP6A5.js} +1 -1
- package/dist/client/assets/{standing-instructions-template-BF5y1BLz.js → standing-instructions-template-viu_kgDX.js} +2 -2
- package/dist/client/assets/{stateDiagram-AJRCARHV-WTq1wQr1.js → stateDiagram-AJRCARHV-DTCzK5Gt.js} +1 -1
- package/dist/client/assets/{stateDiagram-v2-BHNVJYJU-eILJdjII.js → stateDiagram-v2-BHNVJYJU-BIGAwFTT.js} +1 -1
- package/dist/client/assets/{timeline-definition-PNZ67QCA-PRNwI0NR.js → timeline-definition-PNZ67QCA-BQZEFEug.js} +1 -1
- package/dist/client/assets/{upload-qH_64O-B.js → upload-D5w3Ehwp.js} +1 -1
- package/dist/client/assets/{useDiscoveredSkillsCache-C-GPCNaO.js → useDiscoveredSkillsCache-D6zMSIaS.js} +1 -1
- package/dist/client/assets/{users-D2UesRE4.js → users-Bohihi_o.js} +1 -1
- package/dist/client/assets/{vennDiagram-CIIHVFJN-CG2Z4T4O.js → vennDiagram-CIIHVFJN-DnHguEv8.js} +1 -1
- package/dist/client/assets/{wardley-L42UT6IY-gO_fGvF9.js → wardley-L42UT6IY-BOqYltGN.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-YWT4CUSO-BkyNpjUb.js → wardleyDiagram-YWT4CUSO-Re0Ery2M.js} +1 -1
- package/dist/client/assets/{xychartDiagram-2RQKCTM6-CMlZsiPq.js → xychartDiagram-2RQKCTM6-CnVq21b2.js} +1 -1
- package/dist/client/index.html +4 -4
- package/dist/client/theme-data.css +183 -1
- package/dist/client/version.json +1 -1
- package/dist/droid-cli/package.json +1 -1
- package/dist/extension.js +9275 -6726
- package/dist/pi-claude-cli/package.json +1 -1
- package/dist/pi-claude-cli/src/__tests__/event-bridge.test.ts +29 -1
- package/dist/pi-claude-cli/src/event-bridge.ts +10 -4
- package/dist/plugin-sdk/index.d.ts +25 -3
- package/dist/plugin-sdk/index.js +10 -1
- package/dist/plugins/fusion-plugin-acp-runtime/bundled.js +12 -2
- package/dist/plugins/fusion-plugin-acp-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-claude-runtime/bundled.js +12 -2
- package/dist/plugins/fusion-plugin-claude-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-cli-printing-press/bundled.js +10 -1
- package/dist/plugins/fusion-plugin-cli-printing-press/package.json +1 -1
- package/dist/plugins/fusion-plugin-compound-engineering/bundled.js +10 -1
- package/dist/plugins/fusion-plugin-compound-engineering/package.json +1 -1
- package/dist/plugins/fusion-plugin-cursor-runtime/bundled.js +10 -1
- package/dist/plugins/fusion-plugin-cursor-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-dependency-graph/bundled.js +10 -1
- package/dist/plugins/fusion-plugin-dependency-graph/package.json +1 -1
- package/dist/plugins/fusion-plugin-droid-runtime/bundled.js +12 -2
- package/dist/plugins/fusion-plugin-droid-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-grok-runtime/bundled.js +12 -2
- package/dist/plugins/fusion-plugin-grok-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-hermes-runtime/bundled.js +10 -1
- package/dist/plugins/fusion-plugin-hermes-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-linear-import/bundled.js +10 -1
- package/dist/plugins/fusion-plugin-linear-import/package.json +1 -1
- package/dist/plugins/fusion-plugin-omp-runtime/bundled.js +12 -2
- package/dist/plugins/fusion-plugin-omp-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-openclaw-runtime/bundled.js +10 -1
- package/dist/plugins/fusion-plugin-openclaw-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-paperclip-runtime/bundled.js +10 -1
- package/dist/plugins/fusion-plugin-paperclip-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-quality/bundled.js +10 -1
- package/dist/plugins/fusion-plugin-quality/package.json +1 -1
- package/dist/plugins/fusion-plugin-reports/bundled.js +10 -1
- package/dist/plugins/fusion-plugin-reports/package.json +1 -1
- package/dist/plugins/fusion-plugin-roadmap/bundled.js +10 -1
- package/dist/plugins/fusion-plugin-roadmap/package.json +1 -1
- package/dist/plugins/fusion-plugin-todos/bundled.js +10 -1
- package/dist/plugins/fusion-plugin-todos/package.json +1 -1
- package/dist/plugins/fusion-plugin-whatsapp-chat/bundled.js +10 -1
- package/dist/plugins/fusion-plugin-whatsapp-chat/package.json +1 -1
- package/package.json +1 -1
- package/skill/fusion/SKILL.md +1 -1
- package/skill/fusion/references/extension-tools.md +17 -0
- package/skill/fusion/references/fusion-capabilities.md +2 -0
- package/dist/client/assets/ChatView-cNYtYx05.js +0 -13
- package/dist/client/assets/DocumentsView-ksK9f7xt.js +0 -1
- package/dist/client/assets/MemoryView-Cagk2wZG.js +0 -3
- package/dist/client/assets/PluginManager-D2csmdQa.js +0 -1
- package/dist/client/assets/ReportModal-M3uh98sc.css +0 -1
- package/dist/client/assets/ReportModal-YMP6V4vu.js +0 -21
- package/dist/client/assets/SessionTerminal-BjGcxq22.js +0 -2
- package/dist/client/assets/SettingsModal-C0FY8MPW.css +0 -1
- package/dist/client/assets/SettingsModal-DLfy2e_5.js +0 -21
- package/dist/client/assets/SetupWizardModal-DRJ96pHQ.js +0 -2
- package/dist/client/assets/app-BgpuMvTU.js +0 -13
- package/dist/client/assets/app-BlexHhbW.js +0 -13
- package/dist/client/assets/app-BsuUOR0P.js +0 -13
- package/dist/client/assets/app-DQVOujmO.js +0 -13
- package/dist/client/assets/app-DjyTRx1N.js +0 -5
- package/dist/client/assets/app-Dniggype.js +0 -13
- package/dist/client/assets/app-EV-lyZ0T.js +0 -5
- package/dist/client/assets/channel-D-UHgx8G.js +0 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-Do-8MdAc.js +0 -1
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-Do-8MdAc.js +0 -1
- package/dist/client/assets/index-B_z7OKl4.js +0 -2818
- package/dist/client/assets/index-DPo-IAb2.css +0 -1
|
@@ -179,7 +179,35 @@ describe("createEventBridge", () => {
|
|
|
179
179
|
expect(textEnd1.content).toBe("Second");
|
|
180
180
|
});
|
|
181
181
|
|
|
182
|
-
|
|
182
|
+
/*
|
|
183
|
+
FNXC:ChatStreaming 2026-08-19-13:52:
|
|
184
|
+
The Claude CLI bridge must classify numeric period boundaries before mutating its output accumulator, otherwise source labels and URL paths reach Chat already corrupted.
|
|
185
|
+
*/
|
|
186
|
+
it("preserves the reported dotted model links across text deltas", () => {
|
|
187
|
+
const bridge = createBridgeWithStart();
|
|
188
|
+
bridge.handleEvent({ type: "content_block_start", index: 0, content_block: { type: "text", text: "" } } as any);
|
|
189
|
+
for (const text of [
|
|
190
|
+
"[GPT‑5.",
|
|
191
|
+
"6 Luna](https://developers.openai.com/api/docs/models/gpt-5.",
|
|
192
|
+
"6-luna) [GPT‑5.",
|
|
193
|
+
"6 Sol](https://developers.openai.com/api/docs/models/gpt-5.",
|
|
194
|
+
"6-sol) [GPT‑5.",
|
|
195
|
+
"6 Terra](https://developers.openai.com/api/docs/models/gpt-5.",
|
|
196
|
+
"6-terra)",
|
|
197
|
+
]) {
|
|
198
|
+
bridge.handleEvent({ type: "content_block_delta", index: 0, delta: { type: "text_delta", text } } as any);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
const output = bridge.getOutput();
|
|
202
|
+
const text = (output.content[0] as any).text as string;
|
|
203
|
+
expect(text).toContain("GPT‑5.6 Luna");
|
|
204
|
+
expect(text).not.toContain("5. 6");
|
|
205
|
+
expect(text).toContain("/gpt-5.6-luna");
|
|
206
|
+
expect(text).toContain("/gpt-5.6-sol");
|
|
207
|
+
expect(text).toContain("/gpt-5.6-terra");
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
it("repairs a missing sentence boundary between consecutive text blocks", () => {
|
|
183
211
|
const bridge = createBridgeWithStart();
|
|
184
212
|
|
|
185
213
|
bridge.handleEvent({
|
|
@@ -72,11 +72,17 @@ function normalizeStreamingDelta(previousText: string, nextDelta: string): strin
|
|
|
72
72
|
return nextDelta;
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
+
/*
|
|
76
|
+
FNXC:ChatStreaming 2026-08-19-13:52:
|
|
77
|
+
Numeric dotted tokens and URL path segments are one token even when the provider splits them across deltas; do not insert a sentence space between their digits before Chat persistence.
|
|
78
|
+
*/
|
|
79
|
+
const isNumericTokenContinuation =
|
|
80
|
+
previousChar === "." && /\d/.test(previousText.slice(-2, -1)) && /\d/.test(nextChar);
|
|
81
|
+
|
|
75
82
|
// Claude sometimes splits adjacent sentences across separate deltas or text
|
|
76
|
-
// blocks without preserving the separating space.
|
|
77
|
-
//
|
|
78
|
-
|
|
79
|
-
if (/[.!?]/.test(previousChar) && /[A-Z0-9"'([]/.test(nextChar)) {
|
|
83
|
+
// blocks without preserving the separating space. Keep the repair narrow so
|
|
84
|
+
// code, domains, lowercase continuations, and numeric tokens remain intact.
|
|
85
|
+
if (!isNumericTokenContinuation && /[.!?]/.test(previousChar) && /[A-Z0-9"'([]/.test(nextChar)) {
|
|
80
86
|
return ` ${nextDelta}`;
|
|
81
87
|
}
|
|
82
88
|
|
|
@@ -209,7 +209,9 @@ declare class Database {
|
|
|
209
209
|
getPath(): string;
|
|
210
210
|
}
|
|
211
211
|
|
|
212
|
-
|
|
212
|
+
type TaskColumnSortMode = "completion-date-desc" | "task-id-desc";
|
|
213
|
+
|
|
214
|
+
declare const THINKING_LEVELS: readonly ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
|
|
213
215
|
type ThinkingLevel = (typeof THINKING_LEVELS)[number];
|
|
214
216
|
declare const COLUMNS: readonly ["triage", "todo", "in-progress", "in-review", "done", "archived"];
|
|
215
217
|
type Column = (typeof COLUMNS)[number];
|
|
@@ -1054,6 +1056,7 @@ declare class GlobalSettingsStore {
|
|
|
1054
1056
|
private readonly revisionIntentPath;
|
|
1055
1057
|
private readonly dir;
|
|
1056
1058
|
private cachedSettings;
|
|
1059
|
+
private cachedSettingsEpoch;
|
|
1057
1060
|
private lock;
|
|
1058
1061
|
constructor(dir?: string, asyncLayer?: AsyncDataLayer | undefined);
|
|
1059
1062
|
private getRevisionLayer;
|
|
@@ -1428,6 +1431,10 @@ interface MissionWithHierarchy extends Mission {
|
|
|
1428
1431
|
slices: SliceWithFeatures[];
|
|
1429
1432
|
}>;
|
|
1430
1433
|
}
|
|
1434
|
+
interface FeatureUnlinkedPayload {
|
|
1435
|
+
feature: MissionFeature;
|
|
1436
|
+
taskId?: string;
|
|
1437
|
+
}
|
|
1431
1438
|
interface FixFeatureCreatedPayload {
|
|
1432
1439
|
feature: MissionFeature;
|
|
1433
1440
|
sourceFeatureId: string;
|
|
@@ -1543,6 +1550,7 @@ interface MissionStoreEvents {
|
|
|
1543
1550
|
feature: MissionFeature;
|
|
1544
1551
|
taskId: string;
|
|
1545
1552
|
}];
|
|
1553
|
+
"feature:unlinked": [FeatureUnlinkedPayload];
|
|
1546
1554
|
"mission:event": [MissionEvent];
|
|
1547
1555
|
"assertion:created": [MissionContractAssertion];
|
|
1548
1556
|
"assertion:updated": [MissionContractAssertion];
|
|
@@ -1652,6 +1660,7 @@ declare class MissionStore extends EventEmitter<MissionStoreEvents> {
|
|
|
1652
1660
|
private resolveTaskLinkage;
|
|
1653
1661
|
linkFeatureToTask(featureId: string, taskId: string): MissionFeature;
|
|
1654
1662
|
unlinkFeatureFromTask(featureId: string): MissionFeature;
|
|
1663
|
+
repointFeatureToTask(featureId: string, taskId: string): MissionFeature;
|
|
1655
1664
|
updateFeatureStatus(featureId: string, status: FeatureStatus, options?: MissionUpdateOptions): MissionFeature;
|
|
1656
1665
|
getFeatureByTaskId(taskId: string): MissionFeature | undefined;
|
|
1657
1666
|
startManualValidatorRun(featureId: string, input?: {
|
|
@@ -1833,6 +1842,7 @@ declare class AsyncMissionStore extends EventEmitter<MissionStoreEvents> {
|
|
|
1833
1842
|
}): Promise<void>;
|
|
1834
1843
|
linkFeatureToTask(featureId: string, taskId: string): Promise<MissionFeature>;
|
|
1835
1844
|
unlinkFeatureFromTask(featureId: string): Promise<MissionFeature>;
|
|
1845
|
+
repointFeatureToTask(featureId: string, taskId: string): Promise<MissionFeature>;
|
|
1836
1846
|
repairFeatureValidationState(featureId: string, options: {
|
|
1837
1847
|
action: "clear" | "re_run";
|
|
1838
1848
|
actor: MissionTransitionActor;
|
|
@@ -3295,6 +3305,7 @@ interface GitRepositoryCommandResult {
|
|
|
3295
3305
|
type GitRepositoryCommandRunner = (command: string, args: string[], options: {
|
|
3296
3306
|
cwd?: string;
|
|
3297
3307
|
timeout: number;
|
|
3308
|
+
env?: NodeJS.ProcessEnv;
|
|
3298
3309
|
}) => Promise<GitRepositoryCommandResult>;
|
|
3299
3310
|
interface EnsureGitRepositoryOptions {
|
|
3300
3311
|
runner?: GitRepositoryCommandRunner;
|
|
@@ -3362,7 +3373,6 @@ interface EnsureProjectForPathInput {
|
|
|
3362
3373
|
isolationMode?: IsolationMode;
|
|
3363
3374
|
nodeId?: string;
|
|
3364
3375
|
settings?: ProjectSettings;
|
|
3365
|
-
skipGitInit?: boolean;
|
|
3366
3376
|
}
|
|
3367
3377
|
interface EnsureProjectForPathResult {
|
|
3368
3378
|
project: RegisteredProject;
|
|
@@ -4809,6 +4819,7 @@ interface TaskStoreEvents {
|
|
|
4809
4819
|
}];
|
|
4810
4820
|
"task:updated": [task: Task, meta?: {
|
|
4811
4821
|
lanes?: TaskMoveLanes;
|
|
4822
|
+
failedTransition?: boolean;
|
|
4812
4823
|
}];
|
|
4813
4824
|
"task:deleted": [task: Task, meta?: {
|
|
4814
4825
|
githubIssueAction?: GithubIssueAction;
|
|
@@ -5455,6 +5466,7 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
|
|
|
5455
5466
|
areAllDependenciesDone(dependencies: string[], tasksById: Map<string, Task>, satisfiedColumns?: ReadonlySet<string>): boolean;
|
|
5456
5467
|
readTaskForMove(id: string): Promise<Task>;
|
|
5457
5468
|
moveTask(id: string, toColumn: ColumnId, options?: MoveTaskOptions): Promise<Task>;
|
|
5469
|
+
resetTaskPublication(id: string, intakeColumn: ColumnId): Promise<Task>;
|
|
5458
5470
|
moveTaskIf(id: string, toColumn: ColumnId, predicate: (live: Task) => boolean | Promise<boolean>, options?: MoveTaskOptions): Promise<MoveTaskIfResult>;
|
|
5459
5471
|
handoffToReview(taskId: string, opts: HandoffToReviewOptions): Promise<Task>;
|
|
5460
5472
|
__setHandoffMergeQueueFailureInjectorForTesting(injector: ((taskId: string) => void | Promise<void>) | null): void;
|
|
@@ -5657,6 +5669,7 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
|
|
|
5657
5669
|
markToolFailureRetryExhaustedAudit(taskId: string): Promise<boolean>;
|
|
5658
5670
|
updateTaskAtomic(id: string, updater: (current: Task) => Parameters<TaskStore["updateTask"]>[1] | null | undefined | Promise<Parameters<TaskStore["updateTask"]>[1] | null | undefined>, runContext?: RunMutationContext): Promise<Task>;
|
|
5659
5671
|
linkTaskRecommendation(id: string, recommendationId: string, createdTaskId: string, completeColumns?: ReadonlySet<string>): Promise<Task>;
|
|
5672
|
+
normalizeWorkspaceTaskWorktreeMetadata(id: string): Promise<Task>;
|
|
5660
5673
|
mergeWorkspaceWorktreeEntry(id: string, repoRelPath: string, patch: Partial<WorkspaceWorktreeEntry>, options?: {
|
|
5661
5674
|
requireExistingEntry?: boolean;
|
|
5662
5675
|
clearSingularWorktree?: boolean;
|
|
@@ -6003,6 +6016,8 @@ declare class TaskStore extends EventEmitter<TaskStoreEvents> {
|
|
|
6003
6016
|
limit?: number;
|
|
6004
6017
|
offset?: number;
|
|
6005
6018
|
slim?: boolean;
|
|
6019
|
+
sort?: TaskColumnSortMode;
|
|
6020
|
+
sortMode?: TaskColumnSortMode;
|
|
6006
6021
|
}): Promise<{
|
|
6007
6022
|
tasks: Task[];
|
|
6008
6023
|
total: number;
|
|
@@ -6756,7 +6771,7 @@ declare const ANTHROPIC_AUTH_PREFERENCES: readonly ["api-key", "subscription"];
|
|
|
6756
6771
|
type AnthropicAuthPreference = (typeof ANTHROPIC_AUTH_PREFERENCES)[number];
|
|
6757
6772
|
declare const THEME_MODES: readonly ["dark", "light", "system"];
|
|
6758
6773
|
type ThemeMode = (typeof THEME_MODES)[number];
|
|
6759
|
-
declare const COLOR_THEMES: readonly ["default", "ocean", "forest", "sunset", "zen", "berry", "high-contrast", "industrial", "monochrome", "slate", "ash", "air", "graphite", "silver", "solarized", "factory", "factory-mono", "ayu", "one-dark", "nord", "dracula", "gruvbox", "tokyo-night", "catppuccin-mocha", "github-dark", "everforest", "rose-pine", "kanagawa", "night-owl", "palenight", "monokai-pro", "slime", "brutalist", "neon-city", "parchment", "terminal", "glass", "glass-silver", "horizon", "vitesse", "outrun", "snazzy", "porple", "espresso", "mars", "poimandres", "ember", "rust", "copper", "foundry", "carbon", "sandstone", "lagoon", "frost", "lavender", "neon-bloom", "sepia", "cobalt", "clay", "moss", "aurora", "calm", "dawn", "sage", "midnight", "factory-dark", "factory-light", "shadcn", "shadcn-ember", "shadcn-custom", "shadcn-blue", "shadcn-green", "shadcn-red", "shadcn-purple", "shadcn-pink", "shadcn-orange", "shadcn-yellow", "shadcn-mono", "shadcn-mono-red", "shadcn-mono-blue", "shadcn-mono-green", "shadcn-mono-purple", "shadcn-mono-pink", "shadcn-mono-orange", "shadcn-mono-yellow", "shadcn-black", "shadcn-gray", "shadcn-gray-blue"];
|
|
6774
|
+
declare const COLOR_THEMES: readonly ["default", "ocean", "forest", "sunset", "zen", "berry", "high-contrast", "industrial", "monochrome", "slate", "ash", "air", "graphite", "silver", "solarized", "factory", "factory-mono", "ayu", "one-dark", "nord", "dracula", "gruvbox", "tokyo-night", "catppuccin-mocha", "github-dark", "everforest", "rose-pine", "kanagawa", "night-owl", "palenight", "monokai-pro", "slime", "brutalist", "neon-city", "parchment", "medieval", "terminal", "glass", "glass-silver", "horizon", "vitesse", "outrun", "snazzy", "porple", "espresso", "mars", "poimandres", "ember", "rust", "copper", "foundry", "carbon", "sandstone", "lagoon", "frost", "lavender", "neon-bloom", "sepia", "cobalt", "clay", "moss", "aurora", "calm", "dawn", "sage", "midnight", "velvet", "factory-dark", "factory-light", "shadcn", "shadcn-ember", "shadcn-custom", "shadcn-blue", "shadcn-green", "shadcn-red", "shadcn-purple", "shadcn-pink", "shadcn-orange", "shadcn-yellow", "shadcn-mono", "shadcn-mono-red", "shadcn-mono-blue", "shadcn-mono-green", "shadcn-mono-purple", "shadcn-mono-pink", "shadcn-mono-orange", "shadcn-mono-yellow", "shadcn-black", "shadcn-gray", "shadcn-gray-blue"];
|
|
6760
6775
|
type ColorTheme = (typeof COLOR_THEMES)[number];
|
|
6761
6776
|
declare const SUPPORTED_LOCALES: readonly ["en", "zh-CN", "zh-TW", "fr", "es", "ko", "pt-BR"];
|
|
6762
6777
|
type Locale = (typeof SUPPORTED_LOCALES)[number];
|
|
@@ -7544,6 +7559,8 @@ interface TaskReleaseGateVerdict {
|
|
|
7544
7559
|
interface WorkspaceWorktreeEntry {
|
|
7545
7560
|
worktreePath: string;
|
|
7546
7561
|
branch: string;
|
|
7562
|
+
baseBranch?: string;
|
|
7563
|
+
baseBranchFallbackFrom?: string;
|
|
7547
7564
|
baseCommitSha?: string;
|
|
7548
7565
|
landedSha?: string;
|
|
7549
7566
|
revertBoundarySha?: string;
|
|
@@ -8219,6 +8236,7 @@ type ReportActionType = "bug" | "feedback" | "idea" | "help";
|
|
|
8219
8236
|
type ReportTarget = "issue" | "discussion";
|
|
8220
8237
|
interface ProjectSettings {
|
|
8221
8238
|
maxRecommendationsPerTask?: number;
|
|
8239
|
+
requireTaskRecommendations?: boolean;
|
|
8222
8240
|
recommendationMailboxNoticeEnabled?: boolean;
|
|
8223
8241
|
globalPause?: boolean;
|
|
8224
8242
|
globalPauseReason?: string;
|
|
@@ -8299,6 +8317,7 @@ interface ProjectSettings {
|
|
|
8299
8317
|
openMobileTasksInPopup?: boolean;
|
|
8300
8318
|
taskPopupsBoardListOnly?: boolean;
|
|
8301
8319
|
showCostBadgeOnCards?: boolean;
|
|
8320
|
+
chatMessageLayout?: "bubbles" | "full-width";
|
|
8302
8321
|
taskDetailChatFirst?: boolean;
|
|
8303
8322
|
executorAllowSiblingBranchRename?: boolean;
|
|
8304
8323
|
worktreeNaming?: "random" | "task-id" | "task-title";
|
|
@@ -8483,6 +8502,7 @@ interface ProjectSettings {
|
|
|
8483
8502
|
memoryBackupScope?: "project" | "agents" | "all";
|
|
8484
8503
|
autoSummarizeTitles?: boolean;
|
|
8485
8504
|
taskDefinitionInInputLanguage?: boolean;
|
|
8505
|
+
taskOutputLanguage?: TaskOutputLanguage;
|
|
8486
8506
|
useAiMergeCommitSummary?: boolean;
|
|
8487
8507
|
titleSummarizerProvider?: string;
|
|
8488
8508
|
titleSummarizerCredentialInstanceId?: string;
|
|
@@ -9208,6 +9228,8 @@ interface AgentPromptsConfig {
|
|
|
9208
9228
|
roleAssignments?: Partial<Record<AgentCapability, string>>;
|
|
9209
9229
|
}
|
|
9210
9230
|
|
|
9231
|
+
type TaskOutputLanguage = "english" | "input" | "interface";
|
|
9232
|
+
|
|
9211
9233
|
interface RunCommandResult {
|
|
9212
9234
|
stdout: string;
|
|
9213
9235
|
stderr: string;
|
package/dist/plugin-sdk/index.js
CHANGED
|
@@ -8743,7 +8743,7 @@ import { randomUUID as randomUUID2, randomBytes, createHash as createHash2 } fro
|
|
|
8743
8743
|
import { EventEmitter } from "events";
|
|
8744
8744
|
|
|
8745
8745
|
// ../core/src/types/board/board.ts
|
|
8746
|
-
var THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh"];
|
|
8746
|
+
var THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
|
|
8747
8747
|
|
|
8748
8748
|
// ../core/src/types/ui/execution-and-ui.ts
|
|
8749
8749
|
var STALE_HIGH_FANOUT_BLOCKER_AGE_THRESHOLD_MS = 2 * 60 * 60 * 1e3;
|
|
@@ -9181,6 +9181,8 @@ var DEFAULT_GLOBAL_SETTINGS = {
|
|
|
9181
9181
|
var DEFAULT_PROJECT_SETTINGS = {
|
|
9182
9182
|
// FNXC:TaskRecommendations 2026-08-08-05:02: completion follows-ups stay bounded by default; 0 disables writing them.
|
|
9183
9183
|
maxRecommendationsPerTask: 3,
|
|
9184
|
+
// FNXC:TaskRecommendations 2026-08-19-13:05: explicit recommendation evaluation is opt-in and only applies while the positive cap enables capture; relevance always outranks count.
|
|
9185
|
+
requireTaskRecommendations: false,
|
|
9184
9186
|
// FNXC:TaskRecommendations 2026-08-13-03:56: surface completed-task proposals by default; operators can suppress the notice without suppressing capture.
|
|
9185
9187
|
recommendationMailboxNoticeEnabled: true,
|
|
9186
9188
|
globalPause: false,
|
|
@@ -9292,6 +9294,11 @@ var DEFAULT_PROJECT_SETTINGS = {
|
|
|
9292
9294
|
*/
|
|
9293
9295
|
showCostBadgeOnCards: false,
|
|
9294
9296
|
/*
|
|
9297
|
+
FNXC:ChatMessageLayout 2026-08-18-20:27:
|
|
9298
|
+
The project preference applies one reversible layout choice to every standard and task chat surface. Explicitly seed the historical bubbles presentation so upgraded projects preserve their existing UI.
|
|
9299
|
+
*/
|
|
9300
|
+
chatMessageLayout: "bubbles",
|
|
9301
|
+
/*
|
|
9295
9302
|
FNXC:TaskDetailActivityFirst 2026-06-30-23:59:
|
|
9296
9303
|
Project task-detail defaults are Activity-first unless this opt-in is true. Keeping the default false preserves explicit deep-link ids while making omitted non-done task opens land on Activity → Live.
|
|
9297
9304
|
*/
|
|
@@ -9500,6 +9507,8 @@ var DEFAULT_PROJECT_SETTINGS = {
|
|
|
9500
9507
|
not variant-detected and unsupported input, including Japanese, remains English.
|
|
9501
9508
|
*/
|
|
9502
9509
|
taskDefinitionInInputLanguage: false,
|
|
9510
|
+
/* FNXC:TaskOutputLanguage 2026-08-19-14:56: Undefined preserves legacy true compatibility; the resolver supplies English for fresh projects. */
|
|
9511
|
+
taskOutputLanguage: void 0,
|
|
9503
9512
|
useAiMergeCommitSummary: true,
|
|
9504
9513
|
// Title-summarizer model lanes stay project-scoped (not moved in U4).
|
|
9505
9514
|
titleSummarizerProvider: void 0,
|
|
@@ -8742,7 +8742,7 @@ import { randomUUID, randomBytes, createHash as createHash2 } from "node:crypto"
|
|
|
8742
8742
|
import { EventEmitter } from "node:events";
|
|
8743
8743
|
|
|
8744
8744
|
// ../core/src/types/board/board.ts
|
|
8745
|
-
var THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh"];
|
|
8745
|
+
var THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
|
|
8746
8746
|
|
|
8747
8747
|
// ../core/src/types/ui/execution-and-ui.ts
|
|
8748
8748
|
var STALE_HIGH_FANOUT_BLOCKER_AGE_THRESHOLD_MS = 2 * 60 * 60 * 1e3;
|
|
@@ -9180,6 +9180,8 @@ var DEFAULT_GLOBAL_SETTINGS = {
|
|
|
9180
9180
|
var DEFAULT_PROJECT_SETTINGS = {
|
|
9181
9181
|
// FNXC:TaskRecommendations 2026-08-08-05:02: completion follows-ups stay bounded by default; 0 disables writing them.
|
|
9182
9182
|
maxRecommendationsPerTask: 3,
|
|
9183
|
+
// FNXC:TaskRecommendations 2026-08-19-13:05: explicit recommendation evaluation is opt-in and only applies while the positive cap enables capture; relevance always outranks count.
|
|
9184
|
+
requireTaskRecommendations: false,
|
|
9183
9185
|
// FNXC:TaskRecommendations 2026-08-13-03:56: surface completed-task proposals by default; operators can suppress the notice without suppressing capture.
|
|
9184
9186
|
recommendationMailboxNoticeEnabled: true,
|
|
9185
9187
|
globalPause: false,
|
|
@@ -9291,6 +9293,11 @@ var DEFAULT_PROJECT_SETTINGS = {
|
|
|
9291
9293
|
*/
|
|
9292
9294
|
showCostBadgeOnCards: false,
|
|
9293
9295
|
/*
|
|
9296
|
+
FNXC:ChatMessageLayout 2026-08-18-20:27:
|
|
9297
|
+
The project preference applies one reversible layout choice to every standard and task chat surface. Explicitly seed the historical bubbles presentation so upgraded projects preserve their existing UI.
|
|
9298
|
+
*/
|
|
9299
|
+
chatMessageLayout: "bubbles",
|
|
9300
|
+
/*
|
|
9294
9301
|
FNXC:TaskDetailActivityFirst 2026-06-30-23:59:
|
|
9295
9302
|
Project task-detail defaults are Activity-first unless this opt-in is true. Keeping the default false preserves explicit deep-link ids while making omitted non-done task opens land on Activity → Live.
|
|
9296
9303
|
*/
|
|
@@ -9499,6 +9506,8 @@ var DEFAULT_PROJECT_SETTINGS = {
|
|
|
9499
9506
|
not variant-detected and unsupported input, including Japanese, remains English.
|
|
9500
9507
|
*/
|
|
9501
9508
|
taskDefinitionInInputLanguage: false,
|
|
9509
|
+
/* FNXC:TaskOutputLanguage 2026-08-19-14:56: Undefined preserves legacy true compatibility; the resolver supplies English for fresh projects. */
|
|
9510
|
+
taskOutputLanguage: void 0,
|
|
9502
9511
|
useAiMergeCommitSummary: true,
|
|
9503
9512
|
// Title-summarizer model lanes stay project-scoped (not moved in U4).
|
|
9504
9513
|
titleSummarizerProvider: void 0,
|
|
@@ -36765,7 +36774,8 @@ function normalizeStreamingDelta(previousText, nextDelta) {
|
|
|
36765
36774
|
const previousChar = previousText.slice(-1);
|
|
36766
36775
|
const nextChar = nextDelta[0] ?? "";
|
|
36767
36776
|
if (/\s/.test(previousChar) || /\s/.test(nextChar)) return nextDelta;
|
|
36768
|
-
|
|
36777
|
+
const isNumericTokenContinuation = previousChar === "." && /\d/.test(previousText.slice(-2, -1)) && /\d/.test(nextChar);
|
|
36778
|
+
if (!isNumericTokenContinuation && /[.!?]/.test(previousChar) && /[A-Z0-9"'([]/.test(nextChar)) {
|
|
36769
36779
|
return ` ${nextDelta}`;
|
|
36770
36780
|
}
|
|
36771
36781
|
return nextDelta;
|
|
@@ -8742,7 +8742,7 @@ import { randomUUID, randomBytes, createHash as createHash2 } from "node:crypto"
|
|
|
8742
8742
|
import { EventEmitter } from "node:events";
|
|
8743
8743
|
|
|
8744
8744
|
// ../core/src/types/board/board.ts
|
|
8745
|
-
var THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh"];
|
|
8745
|
+
var THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
|
|
8746
8746
|
|
|
8747
8747
|
// ../core/src/types/ui/execution-and-ui.ts
|
|
8748
8748
|
var STALE_HIGH_FANOUT_BLOCKER_AGE_THRESHOLD_MS = 2 * 60 * 60 * 1e3;
|
|
@@ -9180,6 +9180,8 @@ var DEFAULT_GLOBAL_SETTINGS = {
|
|
|
9180
9180
|
var DEFAULT_PROJECT_SETTINGS = {
|
|
9181
9181
|
// FNXC:TaskRecommendations 2026-08-08-05:02: completion follows-ups stay bounded by default; 0 disables writing them.
|
|
9182
9182
|
maxRecommendationsPerTask: 3,
|
|
9183
|
+
// FNXC:TaskRecommendations 2026-08-19-13:05: explicit recommendation evaluation is opt-in and only applies while the positive cap enables capture; relevance always outranks count.
|
|
9184
|
+
requireTaskRecommendations: false,
|
|
9183
9185
|
// FNXC:TaskRecommendations 2026-08-13-03:56: surface completed-task proposals by default; operators can suppress the notice without suppressing capture.
|
|
9184
9186
|
recommendationMailboxNoticeEnabled: true,
|
|
9185
9187
|
globalPause: false,
|
|
@@ -9291,6 +9293,11 @@ var DEFAULT_PROJECT_SETTINGS = {
|
|
|
9291
9293
|
*/
|
|
9292
9294
|
showCostBadgeOnCards: false,
|
|
9293
9295
|
/*
|
|
9296
|
+
FNXC:ChatMessageLayout 2026-08-18-20:27:
|
|
9297
|
+
The project preference applies one reversible layout choice to every standard and task chat surface. Explicitly seed the historical bubbles presentation so upgraded projects preserve their existing UI.
|
|
9298
|
+
*/
|
|
9299
|
+
chatMessageLayout: "bubbles",
|
|
9300
|
+
/*
|
|
9294
9301
|
FNXC:TaskDetailActivityFirst 2026-06-30-23:59:
|
|
9295
9302
|
Project task-detail defaults are Activity-first unless this opt-in is true. Keeping the default false preserves explicit deep-link ids while making omitted non-done task opens land on Activity → Live.
|
|
9296
9303
|
*/
|
|
@@ -9499,6 +9506,8 @@ var DEFAULT_PROJECT_SETTINGS = {
|
|
|
9499
9506
|
not variant-detected and unsupported input, including Japanese, remains English.
|
|
9500
9507
|
*/
|
|
9501
9508
|
taskDefinitionInInputLanguage: false,
|
|
9509
|
+
/* FNXC:TaskOutputLanguage 2026-08-19-14:56: Undefined preserves legacy true compatibility; the resolver supplies English for fresh projects. */
|
|
9510
|
+
taskOutputLanguage: void 0,
|
|
9502
9511
|
useAiMergeCommitSummary: true,
|
|
9503
9512
|
// Title-summarizer model lanes stay project-scoped (not moved in U4).
|
|
9504
9513
|
titleSummarizerProvider: void 0,
|
|
@@ -36755,7 +36764,8 @@ function normalizeStreamingDelta(previousText, nextDelta) {
|
|
|
36755
36764
|
const previousChar = previousText.slice(-1);
|
|
36756
36765
|
const nextChar = nextDelta[0] ?? "";
|
|
36757
36766
|
if (/\s/.test(previousChar) || /\s/.test(nextChar)) return nextDelta;
|
|
36758
|
-
|
|
36767
|
+
const isNumericTokenContinuation = previousChar === "." && /\d/.test(previousText.slice(-2, -1)) && /\d/.test(nextChar);
|
|
36768
|
+
if (!isNumericTokenContinuation && /[.!?]/.test(previousChar) && /[A-Z0-9"'([]/.test(nextChar)) {
|
|
36759
36769
|
return ` ${nextDelta}`;
|
|
36760
36770
|
}
|
|
36761
36771
|
return nextDelta;
|
|
@@ -8862,7 +8862,7 @@ import { randomUUID, randomBytes, createHash as createHash2 } from "node:crypto"
|
|
|
8862
8862
|
import { EventEmitter } from "node:events";
|
|
8863
8863
|
|
|
8864
8864
|
// ../core/src/types/board/board.ts
|
|
8865
|
-
var THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh"];
|
|
8865
|
+
var THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
|
|
8866
8866
|
|
|
8867
8867
|
// ../core/src/types/ui/execution-and-ui.ts
|
|
8868
8868
|
var STALE_HIGH_FANOUT_BLOCKER_AGE_THRESHOLD_MS = 2 * 60 * 60 * 1e3;
|
|
@@ -9300,6 +9300,8 @@ var DEFAULT_GLOBAL_SETTINGS = {
|
|
|
9300
9300
|
var DEFAULT_PROJECT_SETTINGS = {
|
|
9301
9301
|
// FNXC:TaskRecommendations 2026-08-08-05:02: completion follows-ups stay bounded by default; 0 disables writing them.
|
|
9302
9302
|
maxRecommendationsPerTask: 3,
|
|
9303
|
+
// FNXC:TaskRecommendations 2026-08-19-13:05: explicit recommendation evaluation is opt-in and only applies while the positive cap enables capture; relevance always outranks count.
|
|
9304
|
+
requireTaskRecommendations: false,
|
|
9303
9305
|
// FNXC:TaskRecommendations 2026-08-13-03:56: surface completed-task proposals by default; operators can suppress the notice without suppressing capture.
|
|
9304
9306
|
recommendationMailboxNoticeEnabled: true,
|
|
9305
9307
|
globalPause: false,
|
|
@@ -9411,6 +9413,11 @@ var DEFAULT_PROJECT_SETTINGS = {
|
|
|
9411
9413
|
*/
|
|
9412
9414
|
showCostBadgeOnCards: false,
|
|
9413
9415
|
/*
|
|
9416
|
+
FNXC:ChatMessageLayout 2026-08-18-20:27:
|
|
9417
|
+
The project preference applies one reversible layout choice to every standard and task chat surface. Explicitly seed the historical bubbles presentation so upgraded projects preserve their existing UI.
|
|
9418
|
+
*/
|
|
9419
|
+
chatMessageLayout: "bubbles",
|
|
9420
|
+
/*
|
|
9414
9421
|
FNXC:TaskDetailActivityFirst 2026-06-30-23:59:
|
|
9415
9422
|
Project task-detail defaults are Activity-first unless this opt-in is true. Keeping the default false preserves explicit deep-link ids while making omitted non-done task opens land on Activity → Live.
|
|
9416
9423
|
*/
|
|
@@ -9619,6 +9626,8 @@ var DEFAULT_PROJECT_SETTINGS = {
|
|
|
9619
9626
|
not variant-detected and unsupported input, including Japanese, remains English.
|
|
9620
9627
|
*/
|
|
9621
9628
|
taskDefinitionInInputLanguage: false,
|
|
9629
|
+
/* FNXC:TaskOutputLanguage 2026-08-19-14:56: Undefined preserves legacy true compatibility; the resolver supplies English for fresh projects. */
|
|
9630
|
+
taskOutputLanguage: void 0,
|
|
9622
9631
|
useAiMergeCommitSummary: true,
|
|
9623
9632
|
// Title-summarizer model lanes stay project-scoped (not moved in U4).
|
|
9624
9633
|
titleSummarizerProvider: void 0,
|
|
@@ -8742,7 +8742,7 @@ import { randomUUID, randomBytes, createHash as createHash2 } from "node:crypto"
|
|
|
8742
8742
|
import { EventEmitter } from "node:events";
|
|
8743
8743
|
|
|
8744
8744
|
// ../core/src/types/board/board.ts
|
|
8745
|
-
var THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh"];
|
|
8745
|
+
var THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
|
|
8746
8746
|
|
|
8747
8747
|
// ../core/src/types/ui/execution-and-ui.ts
|
|
8748
8748
|
var STALE_HIGH_FANOUT_BLOCKER_AGE_THRESHOLD_MS = 2 * 60 * 60 * 1e3;
|
|
@@ -9180,6 +9180,8 @@ var DEFAULT_GLOBAL_SETTINGS = {
|
|
|
9180
9180
|
var DEFAULT_PROJECT_SETTINGS = {
|
|
9181
9181
|
// FNXC:TaskRecommendations 2026-08-08-05:02: completion follows-ups stay bounded by default; 0 disables writing them.
|
|
9182
9182
|
maxRecommendationsPerTask: 3,
|
|
9183
|
+
// FNXC:TaskRecommendations 2026-08-19-13:05: explicit recommendation evaluation is opt-in and only applies while the positive cap enables capture; relevance always outranks count.
|
|
9184
|
+
requireTaskRecommendations: false,
|
|
9183
9185
|
// FNXC:TaskRecommendations 2026-08-13-03:56: surface completed-task proposals by default; operators can suppress the notice without suppressing capture.
|
|
9184
9186
|
recommendationMailboxNoticeEnabled: true,
|
|
9185
9187
|
globalPause: false,
|
|
@@ -9291,6 +9293,11 @@ var DEFAULT_PROJECT_SETTINGS = {
|
|
|
9291
9293
|
*/
|
|
9292
9294
|
showCostBadgeOnCards: false,
|
|
9293
9295
|
/*
|
|
9296
|
+
FNXC:ChatMessageLayout 2026-08-18-20:27:
|
|
9297
|
+
The project preference applies one reversible layout choice to every standard and task chat surface. Explicitly seed the historical bubbles presentation so upgraded projects preserve their existing UI.
|
|
9298
|
+
*/
|
|
9299
|
+
chatMessageLayout: "bubbles",
|
|
9300
|
+
/*
|
|
9294
9301
|
FNXC:TaskDetailActivityFirst 2026-06-30-23:59:
|
|
9295
9302
|
Project task-detail defaults are Activity-first unless this opt-in is true. Keeping the default false preserves explicit deep-link ids while making omitted non-done task opens land on Activity → Live.
|
|
9296
9303
|
*/
|
|
@@ -9499,6 +9506,8 @@ var DEFAULT_PROJECT_SETTINGS = {
|
|
|
9499
9506
|
not variant-detected and unsupported input, including Japanese, remains English.
|
|
9500
9507
|
*/
|
|
9501
9508
|
taskDefinitionInInputLanguage: false,
|
|
9509
|
+
/* FNXC:TaskOutputLanguage 2026-08-19-14:56: Undefined preserves legacy true compatibility; the resolver supplies English for fresh projects. */
|
|
9510
|
+
taskOutputLanguage: void 0,
|
|
9502
9511
|
useAiMergeCommitSummary: true,
|
|
9503
9512
|
// Title-summarizer model lanes stay project-scoped (not moved in U4).
|
|
9504
9513
|
titleSummarizerProvider: void 0,
|
|
@@ -8745,7 +8745,7 @@ import { randomUUID, randomBytes, createHash as createHash2 } from "node:crypto"
|
|
|
8745
8745
|
import { EventEmitter } from "node:events";
|
|
8746
8746
|
|
|
8747
8747
|
// ../core/src/types/board/board.ts
|
|
8748
|
-
var THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh"];
|
|
8748
|
+
var THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
|
|
8749
8749
|
|
|
8750
8750
|
// ../core/src/types/ui/execution-and-ui.ts
|
|
8751
8751
|
var STALE_HIGH_FANOUT_BLOCKER_AGE_THRESHOLD_MS = 2 * 60 * 60 * 1e3;
|
|
@@ -9183,6 +9183,8 @@ var DEFAULT_GLOBAL_SETTINGS = {
|
|
|
9183
9183
|
var DEFAULT_PROJECT_SETTINGS = {
|
|
9184
9184
|
// FNXC:TaskRecommendations 2026-08-08-05:02: completion follows-ups stay bounded by default; 0 disables writing them.
|
|
9185
9185
|
maxRecommendationsPerTask: 3,
|
|
9186
|
+
// FNXC:TaskRecommendations 2026-08-19-13:05: explicit recommendation evaluation is opt-in and only applies while the positive cap enables capture; relevance always outranks count.
|
|
9187
|
+
requireTaskRecommendations: false,
|
|
9186
9188
|
// FNXC:TaskRecommendations 2026-08-13-03:56: surface completed-task proposals by default; operators can suppress the notice without suppressing capture.
|
|
9187
9189
|
recommendationMailboxNoticeEnabled: true,
|
|
9188
9190
|
globalPause: false,
|
|
@@ -9294,6 +9296,11 @@ var DEFAULT_PROJECT_SETTINGS = {
|
|
|
9294
9296
|
*/
|
|
9295
9297
|
showCostBadgeOnCards: false,
|
|
9296
9298
|
/*
|
|
9299
|
+
FNXC:ChatMessageLayout 2026-08-18-20:27:
|
|
9300
|
+
The project preference applies one reversible layout choice to every standard and task chat surface. Explicitly seed the historical bubbles presentation so upgraded projects preserve their existing UI.
|
|
9301
|
+
*/
|
|
9302
|
+
chatMessageLayout: "bubbles",
|
|
9303
|
+
/*
|
|
9297
9304
|
FNXC:TaskDetailActivityFirst 2026-06-30-23:59:
|
|
9298
9305
|
Project task-detail defaults are Activity-first unless this opt-in is true. Keeping the default false preserves explicit deep-link ids while making omitted non-done task opens land on Activity → Live.
|
|
9299
9306
|
*/
|
|
@@ -9502,6 +9509,8 @@ var DEFAULT_PROJECT_SETTINGS = {
|
|
|
9502
9509
|
not variant-detected and unsupported input, including Japanese, remains English.
|
|
9503
9510
|
*/
|
|
9504
9511
|
taskDefinitionInInputLanguage: false,
|
|
9512
|
+
/* FNXC:TaskOutputLanguage 2026-08-19-14:56: Undefined preserves legacy true compatibility; the resolver supplies English for fresh projects. */
|
|
9513
|
+
taskOutputLanguage: void 0,
|
|
9505
9514
|
useAiMergeCommitSummary: true,
|
|
9506
9515
|
// Title-summarizer model lanes stay project-scoped (not moved in U4).
|
|
9507
9516
|
titleSummarizerProvider: void 0,
|
|
@@ -8742,7 +8742,7 @@ import { randomUUID, randomBytes, createHash as createHash2 } from "node:crypto"
|
|
|
8742
8742
|
import { EventEmitter } from "node:events";
|
|
8743
8743
|
|
|
8744
8744
|
// ../core/src/types/board/board.ts
|
|
8745
|
-
var THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh"];
|
|
8745
|
+
var THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
|
|
8746
8746
|
|
|
8747
8747
|
// ../core/src/types/ui/execution-and-ui.ts
|
|
8748
8748
|
var STALE_HIGH_FANOUT_BLOCKER_AGE_THRESHOLD_MS = 2 * 60 * 60 * 1e3;
|
|
@@ -9180,6 +9180,8 @@ var DEFAULT_GLOBAL_SETTINGS = {
|
|
|
9180
9180
|
var DEFAULT_PROJECT_SETTINGS = {
|
|
9181
9181
|
// FNXC:TaskRecommendations 2026-08-08-05:02: completion follows-ups stay bounded by default; 0 disables writing them.
|
|
9182
9182
|
maxRecommendationsPerTask: 3,
|
|
9183
|
+
// FNXC:TaskRecommendations 2026-08-19-13:05: explicit recommendation evaluation is opt-in and only applies while the positive cap enables capture; relevance always outranks count.
|
|
9184
|
+
requireTaskRecommendations: false,
|
|
9183
9185
|
// FNXC:TaskRecommendations 2026-08-13-03:56: surface completed-task proposals by default; operators can suppress the notice without suppressing capture.
|
|
9184
9186
|
recommendationMailboxNoticeEnabled: true,
|
|
9185
9187
|
globalPause: false,
|
|
@@ -9291,6 +9293,11 @@ var DEFAULT_PROJECT_SETTINGS = {
|
|
|
9291
9293
|
*/
|
|
9292
9294
|
showCostBadgeOnCards: false,
|
|
9293
9295
|
/*
|
|
9296
|
+
FNXC:ChatMessageLayout 2026-08-18-20:27:
|
|
9297
|
+
The project preference applies one reversible layout choice to every standard and task chat surface. Explicitly seed the historical bubbles presentation so upgraded projects preserve their existing UI.
|
|
9298
|
+
*/
|
|
9299
|
+
chatMessageLayout: "bubbles",
|
|
9300
|
+
/*
|
|
9294
9301
|
FNXC:TaskDetailActivityFirst 2026-06-30-23:59:
|
|
9295
9302
|
Project task-detail defaults are Activity-first unless this opt-in is true. Keeping the default false preserves explicit deep-link ids while making omitted non-done task opens land on Activity → Live.
|
|
9296
9303
|
*/
|
|
@@ -9499,6 +9506,8 @@ var DEFAULT_PROJECT_SETTINGS = {
|
|
|
9499
9506
|
not variant-detected and unsupported input, including Japanese, remains English.
|
|
9500
9507
|
*/
|
|
9501
9508
|
taskDefinitionInInputLanguage: false,
|
|
9509
|
+
/* FNXC:TaskOutputLanguage 2026-08-19-14:56: Undefined preserves legacy true compatibility; the resolver supplies English for fresh projects. */
|
|
9510
|
+
taskOutputLanguage: void 0,
|
|
9502
9511
|
useAiMergeCommitSummary: true,
|
|
9503
9512
|
// Title-summarizer model lanes stay project-scoped (not moved in U4).
|
|
9504
9513
|
titleSummarizerProvider: void 0,
|
|
@@ -8742,7 +8742,7 @@ import { randomUUID, randomBytes, createHash as createHash2 } from "node:crypto"
|
|
|
8742
8742
|
import { EventEmitter } from "node:events";
|
|
8743
8743
|
|
|
8744
8744
|
// ../core/src/types/board/board.ts
|
|
8745
|
-
var THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh"];
|
|
8745
|
+
var THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
|
|
8746
8746
|
|
|
8747
8747
|
// ../core/src/types/ui/execution-and-ui.ts
|
|
8748
8748
|
var STALE_HIGH_FANOUT_BLOCKER_AGE_THRESHOLD_MS = 2 * 60 * 60 * 1e3;
|
|
@@ -9180,6 +9180,8 @@ var DEFAULT_GLOBAL_SETTINGS = {
|
|
|
9180
9180
|
var DEFAULT_PROJECT_SETTINGS = {
|
|
9181
9181
|
// FNXC:TaskRecommendations 2026-08-08-05:02: completion follows-ups stay bounded by default; 0 disables writing them.
|
|
9182
9182
|
maxRecommendationsPerTask: 3,
|
|
9183
|
+
// FNXC:TaskRecommendations 2026-08-19-13:05: explicit recommendation evaluation is opt-in and only applies while the positive cap enables capture; relevance always outranks count.
|
|
9184
|
+
requireTaskRecommendations: false,
|
|
9183
9185
|
// FNXC:TaskRecommendations 2026-08-13-03:56: surface completed-task proposals by default; operators can suppress the notice without suppressing capture.
|
|
9184
9186
|
recommendationMailboxNoticeEnabled: true,
|
|
9185
9187
|
globalPause: false,
|
|
@@ -9291,6 +9293,11 @@ var DEFAULT_PROJECT_SETTINGS = {
|
|
|
9291
9293
|
*/
|
|
9292
9294
|
showCostBadgeOnCards: false,
|
|
9293
9295
|
/*
|
|
9296
|
+
FNXC:ChatMessageLayout 2026-08-18-20:27:
|
|
9297
|
+
The project preference applies one reversible layout choice to every standard and task chat surface. Explicitly seed the historical bubbles presentation so upgraded projects preserve their existing UI.
|
|
9298
|
+
*/
|
|
9299
|
+
chatMessageLayout: "bubbles",
|
|
9300
|
+
/*
|
|
9294
9301
|
FNXC:TaskDetailActivityFirst 2026-06-30-23:59:
|
|
9295
9302
|
Project task-detail defaults are Activity-first unless this opt-in is true. Keeping the default false preserves explicit deep-link ids while making omitted non-done task opens land on Activity → Live.
|
|
9296
9303
|
*/
|
|
@@ -9499,6 +9506,8 @@ var DEFAULT_PROJECT_SETTINGS = {
|
|
|
9499
9506
|
not variant-detected and unsupported input, including Japanese, remains English.
|
|
9500
9507
|
*/
|
|
9501
9508
|
taskDefinitionInInputLanguage: false,
|
|
9509
|
+
/* FNXC:TaskOutputLanguage 2026-08-19-14:56: Undefined preserves legacy true compatibility; the resolver supplies English for fresh projects. */
|
|
9510
|
+
taskOutputLanguage: void 0,
|
|
9502
9511
|
useAiMergeCommitSummary: true,
|
|
9503
9512
|
// Title-summarizer model lanes stay project-scoped (not moved in U4).
|
|
9504
9513
|
titleSummarizerProvider: void 0,
|
|
@@ -20293,7 +20302,8 @@ function normalizeStreamingDelta(previousText, nextDelta) {
|
|
|
20293
20302
|
if (/\s/.test(previousChar) || /\s/.test(nextChar)) {
|
|
20294
20303
|
return nextDelta;
|
|
20295
20304
|
}
|
|
20296
|
-
|
|
20305
|
+
const isNumericTokenContinuation = previousChar === "." && /\d/.test(previousText.slice(-2, -1)) && /\d/.test(nextChar);
|
|
20306
|
+
if (!isNumericTokenContinuation && /[.!?]/.test(previousChar) && /[A-Z0-9"'([]/.test(nextChar)) {
|
|
20297
20307
|
return ` ${nextDelta}`;
|
|
20298
20308
|
}
|
|
20299
20309
|
return nextDelta;
|