zidane 8.2.1 → 8.2.2
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/acp-cli.js +8 -8
- package/dist/{acp-D7Pr8NGt.js → acp-oYRjlh71.js} +6 -6
- package/dist/{acp-D7Pr8NGt.js.map → acp-oYRjlh71.js.map} +1 -1
- package/dist/acp.d.ts +2 -2
- package/dist/acp.js +1 -1
- package/dist/{agent-DecDtKA_.js → agent-CBQglXtH.js} +9 -379
- package/dist/agent-CBQglXtH.js.map +1 -0
- package/dist/agent.d.ts +1 -1
- package/dist/agent.js +1 -1
- package/dist/{builtin-artifact-kinds-B_OEgf8b.js → builtin-artifact-kinds-BmorPkgz.js} +36 -9
- package/dist/builtin-artifact-kinds-BmorPkgz.js.map +1 -0
- package/dist/chat/pure.d.ts +3 -3
- package/dist/chat/pure.js +4 -4
- package/dist/chat.d.ts +4 -4
- package/dist/chat.js +14 -14
- package/dist/{cli-shared-Dx4vmif6.js → cli-shared-E5m_pI8A.js} +2 -2
- package/dist/{cli-shared-Dx4vmif6.js.map → cli-shared-E5m_pI8A.js.map} +1 -1
- package/dist/{client-core-imHuBWV3.d.ts → client-core-BdD20sOv.d.ts} +24 -5
- package/dist/{client-core-imHuBWV3.d.ts.map → client-core-BdD20sOv.d.ts.map} +1 -1
- package/dist/{connection-loop-CdHt3iQi.d.ts → connection-loop-DTk82YVl.d.ts} +3 -3
- package/dist/{connection-loop-CdHt3iQi.d.ts.map → connection-loop-DTk82YVl.d.ts.map} +1 -1
- package/dist/contexts/daytona.d.ts +1 -1
- package/dist/contexts/e2b.d.ts +1 -1
- package/dist/{credentials-Dti61yoi.js → credentials-B9DfBJP9.js} +11 -7
- package/dist/credentials-B9DfBJP9.js.map +1 -0
- package/dist/daemon-cli.js +2 -2
- package/dist/{dispatcher-vy3J6JMA.js → dispatcher-BICXFGiJ.js} +27 -13
- package/dist/dispatcher-BICXFGiJ.js.map +1 -0
- package/dist/{engine-BN6PjWAW.js → engine-QCX3GV-i.js} +5 -5
- package/dist/{engine-BN6PjWAW.js.map → engine-QCX3GV-i.js.map} +1 -1
- package/dist/{eval-BaJtxLCW.js → eval-CfQlBR81.js} +2 -2
- package/dist/{eval-BaJtxLCW.js.map → eval-CfQlBR81.js.map} +1 -1
- package/dist/eval.d.ts +1 -1
- package/dist/eval.js +1 -1
- package/dist/{executor-CT4oUkg6.js → executor-B8GoXaaE.js} +2 -2
- package/dist/{executor-CT4oUkg6.js.map → executor-B8GoXaaE.js.map} +1 -1
- package/dist/{extensions-BKt7lxxv.js → extensions-BeH3D-bq.js} +114 -113
- package/dist/extensions-BeH3D-bq.js.map +1 -0
- package/dist/extensions.d.ts +1 -1
- package/dist/extensions.js +2 -2
- package/dist/{fold-rules-BYedvsH7.d.ts → fold-rules-DSypi36k.d.ts} +2 -2
- package/dist/{fold-rules-BYedvsH7.d.ts.map → fold-rules-DSypi36k.d.ts.map} +1 -1
- package/dist/google-O6pRnddf.js +881 -0
- package/dist/google-O6pRnddf.js.map +1 -0
- package/dist/{headless-Ebd1ZEzC.js → headless-R4pbpTkm.js} +3 -3
- package/dist/{headless-Ebd1ZEzC.js.map → headless-R4pbpTkm.js.map} +1 -1
- package/dist/headless.d.ts +1 -1
- package/dist/headless.js +1 -1
- package/dist/{host-scoped-settings-Cy_zbmB_.js → host-scoped-settings-CCnaBkCV.js} +2 -2
- package/dist/{host-scoped-settings-Cy_zbmB_.js.map → host-scoped-settings-CCnaBkCV.js.map} +1 -1
- package/dist/{host-signals-Cx2IAbHh.js → host-signals-DI9JQvR9.js} +5 -5
- package/dist/{host-signals-Cx2IAbHh.js.map → host-signals-DI9JQvR9.js.map} +1 -1
- package/dist/{index-pc71ADi6.d.ts → index-BkNeiJYI.d.ts} +71 -4
- package/dist/index-BkNeiJYI.d.ts.map +1 -0
- package/dist/{index-CidMTcxS.d.ts → index-DyQyDLX1.d.ts} +167 -10
- package/dist/index-DyQyDLX1.d.ts.map +1 -0
- package/dist/{index-Bt_G2Z_2.d.ts → index-lcuvhQfF.d.ts} +5 -5
- package/dist/{index-Bt_G2Z_2.d.ts.map → index-lcuvhQfF.d.ts.map} +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +15 -15
- package/dist/ipc/remote.d.ts +5 -5
- package/dist/ipc/remote.js +3 -3
- package/dist/ipc.d.ts +5 -5
- package/dist/ipc.js +6 -6
- package/dist/{links-DSZ4uQ5w.js → links-CN5JFFde.js} +9 -9
- package/dist/{links-DSZ4uQ5w.js.map → links-CN5JFFde.js.map} +1 -1
- package/dist/mcp.d.ts +1 -1
- package/dist/{oauth-BSqXgads.js → oauth-TVPPye84.js} +155 -25
- package/dist/oauth-TVPPye84.js.map +1 -0
- package/dist/{openai-dTmPxM6T.js → openai-Rh6u5NXF.js} +121 -2
- package/dist/openai-Rh6u5NXF.js.map +1 -0
- package/dist/{openrouter-CtZbQDa0.js → openrouter-Dg0yaI-o.js} +91 -2
- package/dist/openrouter-Dg0yaI-o.js.map +1 -0
- package/dist/output/stream-json.d.ts +1 -1
- package/dist/output/terminal.d.ts +1 -1
- package/dist/plugins.d.ts +1 -1
- package/dist/{presets-EzlHyFSi.js → presets-DXeHsd24.js} +3 -3
- package/dist/{presets-EzlHyFSi.js.map → presets-DXeHsd24.js.map} +1 -1
- package/dist/presets.d.ts +1 -1
- package/dist/presets.js +1 -1
- package/dist/{prompts-D2lPHLOV.d.ts → prompts-DmY13jvF.d.ts} +2 -1
- package/dist/prompts-DmY13jvF.d.ts.map +1 -0
- package/dist/protocol-BIv1Yuvl.js.map +1 -1
- package/dist/providers/anthropic.d.ts +1 -1
- package/dist/providers/arcee.d.ts +1 -1
- package/dist/providers/baseten.d.ts +1 -1
- package/dist/providers/cerebras.d.ts +1 -1
- package/dist/providers/google.d.ts +1 -1
- package/dist/providers/google.js +1 -784
- package/dist/providers/local.d.ts +1 -1
- package/dist/providers/neuralwatt.d.ts +1 -1
- package/dist/providers/openai-compat.d.ts +1 -1
- package/dist/providers/openai.d.ts +1 -1
- package/dist/providers/openai.js +1 -1
- package/dist/providers/openrouter.d.ts +1 -1
- package/dist/providers/openrouter.js +1 -1
- package/dist/providers/xai.d.ts +1 -1
- package/dist/providers/xai.js +1 -101
- package/dist/providers.d.ts +2 -2
- package/dist/providers.js +6 -5
- package/dist/{registry-BBaEgTsX.js → registry-PNi9rsGi.js} +3 -3
- package/dist/{registry-BBaEgTsX.js.map → registry-PNi9rsGi.js.map} +1 -1
- package/dist/{remote-hosts-bO7wOt44.js → remote-hosts-b6Luwdhu.js} +4 -4
- package/dist/{remote-hosts-bO7wOt44.js.map → remote-hosts-b6Luwdhu.js.map} +1 -1
- package/dist/restate.d.ts +1 -1
- package/dist/{secret-shapes-Cda65uDH.js → secret-shapes-CEoGmfEE.js} +10 -1
- package/dist/secret-shapes-CEoGmfEE.js.map +1 -0
- package/dist/session/sqlite.d.ts +1 -1
- package/dist/{session-factory-BazyVdzj.js → session-factory-CMwIXE-7.js} +5 -5
- package/dist/{session-factory-BazyVdzj.js.map → session-factory-CMwIXE-7.js.map} +1 -1
- package/dist/session.d.ts +1 -1
- package/dist/{settings-keys-zYaer8DY.js → settings-keys-DssjmqAV.js} +3 -3
- package/dist/{settings-keys-zYaer8DY.js.map → settings-keys-DssjmqAV.js.map} +1 -1
- package/dist/{shell-path-od9XHRPt.js → shell-path-BUFwqU_A.js} +3 -3
- package/dist/{shell-path-od9XHRPt.js.map → shell-path-BUFwqU_A.js.map} +1 -1
- package/dist/{skills-use-D68a1gyZ.js → skills-use-CssTEaIj.js} +375 -2
- package/dist/skills-use-CssTEaIj.js.map +1 -0
- package/dist/skills.d.ts +1 -1
- package/dist/{system-freeze-DXvJpveP.js → system-freeze-Um9ZJiPo.js} +24 -9
- package/dist/system-freeze-Um9ZJiPo.js.map +1 -0
- package/dist/{todo-edits-CmqNFvLJ.js → todo-edits-H77ROt6X.js} +2 -2
- package/dist/{todo-edits-CmqNFvLJ.js.map → todo-edits-H77ROt6X.js.map} +1 -1
- package/dist/tools/fetch-url.d.ts +1 -1
- package/dist/tools/prompts.d.ts +1 -1
- package/dist/tools/prompts.js +7 -0
- package/dist/tools/prompts.js.map +1 -1
- package/dist/tools/web-search.d.ts +1 -1
- package/dist/{tools-9Dpm8F-f.js → tools-pZVFIJ_K.js} +273 -2
- package/dist/tools-pZVFIJ_K.js.map +1 -0
- package/dist/tools.d.ts +3 -3
- package/dist/tools.js +4 -4
- package/dist/{transcript-anchors-B3TFJqr_.js → transcript-anchors-s-yxh0jt.js} +10 -10
- package/dist/{transcript-anchors-B3TFJqr_.js.map → transcript-anchors-s-yxh0jt.js.map} +1 -1
- package/dist/{transcript-reconcile-BC2DbTmp.js → transcript-reconcile-DeFLIQ14.js} +19 -2
- package/dist/{transcript-reconcile-BC2DbTmp.js.map → transcript-reconcile-DeFLIQ14.js.map} +1 -1
- package/dist/tui.d.ts +7 -7
- package/dist/tui.js +24 -22
- package/dist/tui.js.map +1 -1
- package/dist/{turn-operations-CIFoOebZ.d.ts → turn-operations-BbGJ-KSt.d.ts} +2 -2
- package/dist/{turn-operations-CIFoOebZ.d.ts.map → turn-operations-BbGJ-KSt.d.ts.map} +1 -1
- package/dist/{types-iFLlZKd0.d.ts → types-C0PJmBaO.d.ts} +2 -2
- package/dist/{types-iFLlZKd0.d.ts.map → types-C0PJmBaO.d.ts.map} +1 -1
- package/dist/types-JzccL5GE.js +24 -0
- package/dist/types-JzccL5GE.js.map +1 -0
- package/dist/types.d.ts +2 -2
- package/dist/{url-BTH-HE9Y.js → url-CLl0u4Z8.js} +2 -2
- package/dist/{url-BTH-HE9Y.js.map → url-CLl0u4Z8.js.map} +1 -1
- package/dist/{version-4T82xRxQ.js → version-v77Y4A3C.js} +2 -2
- package/dist/{version-4T82xRxQ.js.map → version-v77Y4A3C.js.map} +1 -1
- package/dist/wire-DH77Z-rr.js +80 -0
- package/dist/wire-DH77Z-rr.js.map +1 -0
- package/dist/{workspace-exec-stream-By8na6vz.js → workspace-exec-stream-kqARO8iC.js} +4 -4
- package/dist/{workspace-exec-stream-By8na6vz.js.map → workspace-exec-stream-kqARO8iC.js.map} +1 -1
- package/dist/{write-file-B4vi3SvQ.js → write-file-QYrcDdl3.js} +3 -3
- package/dist/{write-file-B4vi3SvQ.js.map → write-file-QYrcDdl3.js.map} +1 -1
- package/dist/{ws-CS312Jpx.js → ws-BD9FN98u.js} +5 -5
- package/dist/{ws-CS312Jpx.js.map → ws-BD9FN98u.js.map} +1 -1
- package/dist/{ws-client-wWka-Jku.js → ws-client-D7eb2UbH.js} +3 -3
- package/dist/{ws-client-wWka-Jku.js.map → ws-client-D7eb2UbH.js.map} +1 -1
- package/dist/xai-CStTwCV2.js +182 -0
- package/dist/xai-CStTwCV2.js.map +1 -0
- package/docs/ARCHITECTURE.md +1 -0
- package/docs/ARTIFACTS.md +1 -1
- package/docs/EXTENSIONS.md +9 -5
- package/package.json +2 -2
- package/dist/agent-DecDtKA_.js.map +0 -1
- package/dist/builtin-artifact-kinds-B_OEgf8b.js.map +0 -1
- package/dist/credentials-Dti61yoi.js.map +0 -1
- package/dist/dispatcher-vy3J6JMA.js.map +0 -1
- package/dist/extensions-BKt7lxxv.js.map +0 -1
- package/dist/index-CidMTcxS.d.ts.map +0 -1
- package/dist/index-pc71ADi6.d.ts.map +0 -1
- package/dist/oauth-BSqXgads.js.map +0 -1
- package/dist/openai-dTmPxM6T.js.map +0 -1
- package/dist/openrouter-CtZbQDa0.js.map +0 -1
- package/dist/prompts-D2lPHLOV.d.ts.map +0 -1
- package/dist/providers/google.js.map +0 -1
- package/dist/providers/xai.js.map +0 -1
- package/dist/secret-shapes-Cda65uDH.js.map +0 -1
- package/dist/skills-use-D68a1gyZ.js.map +0 -1
- package/dist/system-freeze-DXvJpveP.js.map +0 -1
- package/dist/tools-9Dpm8F-f.js.map +0 -1
package/dist/agent.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Ai as createRunSummaryCollector, Ba as AgentOptions, Ci as RunSummaryByModel, Di as RunSummaryRepeatGuard, Ei as RunSummaryError, Fa as Agent, Ha as McpConnector, Oi as RunSummaryTokens, Si as RunSummaryBudget, Sx as snapshotCacheDimensions, Ta as createAgent, Ti as RunSummaryCollectorOptions, Ua as McpToolMeta, Wa as McpToolWrap, _x as CacheSystemSection, aE as ReadStateMap, bi as RunSummary, bx as hashMessages, cE as hydrateReadStateFromSession, dE as resolveReadStateMap, dx as CacheBreakLoggerOptions, fx as CacheDimensionDiff, gx as CachePromptSections, hx as CacheDriftInfo, iE as ReadStateEntry, ki as RunSummaryValidation, lE as hydrateReadStateFromSessionAsync, mx as CacheDimensionSnapshot, nx as AgentHooks, oE as getReadState, px as CacheDimensionName, rE as HydrateReadStateOptions, tx as AgentHookMap, uE as readStateKey, ux as CacheBreakInfo, vx as diffCacheDimensions, wi as RunSummaryCollector, xi as RunSummaryBlock, xx as installCacheBreakLogger, yx as fnv1a32 } from "./index-DyQyDLX1.js";
|
|
2
2
|
export { type Agent, type AgentHookMap, type AgentHooks, type AgentOptions, type CacheBreakInfo, type CacheBreakLoggerOptions, type CacheDimensionDiff, type CacheDimensionName, type CacheDimensionSnapshot, type CacheDriftInfo, type CachePromptSections, type CacheSystemSection, type HydrateReadStateOptions, type McpConnector, type McpToolMeta, type McpToolWrap, type ReadStateEntry, type ReadStateMap, type RunSummary, type RunSummaryBlock, type RunSummaryBudget, type RunSummaryByModel, type RunSummaryCollector, type RunSummaryCollectorOptions, type RunSummaryError, type RunSummaryRepeatGuard, type RunSummaryTokens, type RunSummaryValidation, createAgent, createRunSummaryCollector, diffCacheDimensions, fnv1a32, getReadState, hashMessages, hydrateReadStateFromSession, hydrateReadStateFromSessionAsync, installCacheBreakLogger, readStateKey, resolveReadStateMap, snapshotCacheDimensions };
|
package/dist/agent.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as installCacheBreakLogger, D as diffCacheDimensions, O as fnv1a32, j as snapshotCacheDimensions, k as hashMessages, n as createAgent } from "./agent-
|
|
1
|
+
import { A as installCacheBreakLogger, D as diffCacheDimensions, O as fnv1a32, j as snapshotCacheDimensions, k as hashMessages, n as createAgent } from "./agent-CBQglXtH.js";
|
|
2
2
|
import { a as hydrateReadStateFromSessionAsync, c as readStateKey, i as hydrateReadStateFromSession, l as resolveReadStateMap, t as getReadState } from "./read-state-BkoUdmZ9.js";
|
|
3
3
|
import { t as createRunSummaryCollector } from "./run-summary-2d26oMyQ.js";
|
|
4
4
|
export { createAgent, createRunSummaryCollector, diffCacheDimensions, fnv1a32, getReadState, hashMessages, hydrateReadStateFromSession, hydrateReadStateFromSessionAsync, installCacheBreakLogger, readStateKey, resolveReadStateMap, snapshotCacheDimensions };
|
|
@@ -544,13 +544,15 @@ const branchKind = {
|
|
|
544
544
|
render: (artifact) => ({ title: artifact.label })
|
|
545
545
|
};
|
|
546
546
|
/**
|
|
547
|
-
* `file` has NO automatic detector on purpose. Every
|
|
548
|
-
* an artifact is noise — a refactor would produce
|
|
549
|
-
* really just the diff and go stale on the next
|
|
550
|
-
* artifact only when something deliberately says so:
|
|
551
|
-
* `record_artifact` (a generated report, an export)
|
|
552
|
-
* `ctx.artifacts.record` (a build output)
|
|
553
|
-
*
|
|
547
|
+
* `file` has NO automatic detector for plain writes on purpose. Every
|
|
548
|
+
* `write_file` becoming an artifact is noise — a refactor would produce
|
|
549
|
+
* dozens of rows that are really just the diff and go stale on the next
|
|
550
|
+
* rename. A file is an artifact only when something deliberately says so:
|
|
551
|
+
* the model via `record_artifact` (a generated report, an export), an
|
|
552
|
+
* extension via `ctx.artifacts.record` (a build output), or a tool whose
|
|
553
|
+
* whole output is the file (`generate_image`, {@link generatedImageKind}).
|
|
554
|
+
* The kind keeps its rendering and `file:` URI canonicalization for those
|
|
555
|
+
* paths.
|
|
554
556
|
*/
|
|
555
557
|
const fileKind = {
|
|
556
558
|
kind: ARTIFACT_KINDS.file,
|
|
@@ -588,6 +590,27 @@ const recordArtifactKind = {
|
|
|
588
590
|
};
|
|
589
591
|
}
|
|
590
592
|
};
|
|
593
|
+
/**
|
|
594
|
+
* Not a kind of its own: records each image a `generate_image` call saved as
|
|
595
|
+
* a `file` artifact, read from the result's `Saved: <path> (<size>)` lines.
|
|
596
|
+
*/
|
|
597
|
+
const generatedImageKind = {
|
|
598
|
+
kind: "generate_image",
|
|
599
|
+
label: "Generated image",
|
|
600
|
+
detect({ tool, input, result, isError }) {
|
|
601
|
+
if (isError || tool !== "generate_image" || input.list === true) return void 0;
|
|
602
|
+
const detections = resultText(result).split("\n").flatMap((line) => {
|
|
603
|
+
const m = /^Saved: (.+?) \(([^)]*)\)$/.exec(line.trim());
|
|
604
|
+
return m ? [{
|
|
605
|
+
kind: ARTIFACT_KINDS.file,
|
|
606
|
+
uri: `file:${m[1]}`,
|
|
607
|
+
label: m[1],
|
|
608
|
+
meta: { size: m[2] }
|
|
609
|
+
}] : [];
|
|
610
|
+
});
|
|
611
|
+
return detections.length > 0 ? detections : void 0;
|
|
612
|
+
}
|
|
613
|
+
};
|
|
591
614
|
/** The built-in artifact kinds: pull request, branch, commit and file. */
|
|
592
615
|
const BUILTIN_ARTIFACT_KINDS = [
|
|
593
616
|
pullRequestKind,
|
|
@@ -596,7 +619,11 @@ const BUILTIN_ARTIFACT_KINDS = [
|
|
|
596
619
|
fileKind
|
|
597
620
|
];
|
|
598
621
|
/** Every built-in detector: the kinds plus the `record_artifact` producer. */
|
|
599
|
-
const BUILTIN_ARTIFACT_DETECTORS = [
|
|
622
|
+
const BUILTIN_ARTIFACT_DETECTORS = [
|
|
623
|
+
...BUILTIN_ARTIFACT_KINDS,
|
|
624
|
+
recordArtifactKind,
|
|
625
|
+
generatedImageKind
|
|
626
|
+
];
|
|
600
627
|
/**
|
|
601
628
|
* Resolve the registration for a stored artifact's kind: the active
|
|
602
629
|
* registry wins (an extension may refine a built-in's presentation), then
|
|
@@ -824,4 +851,4 @@ function metaRecord(artifact) {
|
|
|
824
851
|
//#endregion
|
|
825
852
|
export { commitKind as a, pullRequestKind as c, resolveArtifactKind as d, sessionBadges as f, branchKind as i, refreshArtifact as l, BUILTIN_ARTIFACT_KINDS as n, fileKind as o, createArtifactDetectHook as p, artifactKindLabel as r, parseShortstat as s, BUILTIN_ARTIFACT_DETECTORS as t, renderArtifactRow as u };
|
|
826
853
|
|
|
827
|
-
//# sourceMappingURL=builtin-artifact-kinds-
|
|
854
|
+
//# sourceMappingURL=builtin-artifact-kinds-BmorPkgz.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builtin-artifact-kinds-BmorPkgz.js","names":[],"sources":["../src/extensions/artifact-detect.ts","../src/extensions/builtin-artifact-kinds.ts"],"sourcesContent":["/**\n * Turn an artifact kind's `detect` into a `tool:transform` hook that can\n * only APPEND to the reserved `metadata.artifacts` namespace. Shared by\n * `registerArtifactKind` (extensions) and the built-in kinds preset so\n * the two can't drift on normalization, validation, or isolation.\n */\n\nimport type { AgentHooks } from '../agent'\nimport type { SessionArtifactInput } from '../session/artifacts'\nimport type { JsonValue } from '../types'\nimport type { ExtensionArtifactDetection, ExtensionArtifactKindRegistration } from './types'\nimport { ARTIFACTS_METADATA_KEY, normalizeArtifactInput } from '../session/artifacts'\n\n/** Options for {@link createArtifactDetectHook}. */\nexport interface ArtifactDetectHookOptions {\n /** Where isolation failures go (a throwing detector, a rejected meta). */\n warn?: (message: string, fields: Record<string, unknown>) => void\n}\n\n/**\n * `undefined` when the registration has no `detect`. The hook never\n * touches `result` / `isError`; a throwing detector emits nothing.\n * Entries default `kind` to the registration's kind; `validateMeta`\n * applies to entries of that kind only and drops `meta`, never the entry.\n *\n * @param registration - Artifact kind registration whose `detect` function the hook runs.\n * @param options - Options such as the `warn` sink for isolated failures.\n */\nexport function createArtifactDetectHook(\n registration: ExtensionArtifactKindRegistration,\n options: ArtifactDetectHookOptions = {},\n): AgentHooks['tool:transform'] | undefined {\n const detect = registration.detect\n if (!detect)\n return undefined\n const { validateMeta, kind } = registration\n return async (transformCtx) => {\n let detected: Awaited<ReturnType<typeof detect>>\n try {\n detected = await detect({\n tool: transformCtx.name,\n input: transformCtx.input,\n result: transformCtx.result,\n isError: transformCtx.isError,\n })\n }\n catch (err) {\n options.warn?.('artifact detect threw; nothing emitted', { kind, tool: transformCtx.name, error: String(err) })\n return\n }\n if (!detected)\n return\n const entries: readonly ExtensionArtifactDetection[] = Array.isArray(detected) ? detected : [detected as ExtensionArtifactDetection]\n const emitted: SessionArtifactInput[] = []\n for (const entry of entries) {\n const normalized = normalizeArtifactInput({ ...entry, kind: entry.kind ?? kind })\n if (!normalized)\n continue\n if (normalized.meta !== undefined && validateMeta && normalized.kind === kind) {\n let ok = false\n try {\n ok = validateMeta(normalized.meta)\n }\n catch {\n ok = false\n }\n if (!ok) {\n options.warn?.('artifact meta rejected by validateMeta; kept artifact without meta', { kind, uri: normalized.uri })\n delete normalized.meta\n }\n }\n emitted.push(normalized)\n }\n if (emitted.length === 0)\n return\n const existing = transformCtx.metadata[ARTIFACTS_METADATA_KEY]\n const list = Array.isArray(existing) ? existing : []\n // `SessionArtifactInput` is plain JSON by construction (normalized).\n transformCtx.metadata[ARTIFACTS_METADATA_KEY] = [...list, ...(emitted as unknown as JsonValue[])]\n }\n}\n","/**\n * Built-in artifact kinds — `pull_request`, `branch`, `commit`, `file` —\n * expressed as ordinary {@link ExtensionArtifactKindRegistration}s so they\n * exercise the same surface extensions use (dogfooding), and so a UI has\n * ONE resolution path: registry kinds first, then these, then the\n * `label` + `uri` fallback.\n *\n * Detection is deliberately conservative: it keys on the COMMAND the\n * model ran (`gh pr create`, `git commit`, `git switch -c`) or the tool\n * name (`*create_pull_request`), never on free text alone, so a\n * `cat README.md` that happens to contain a PR URL records nothing. Files\n * are never auto-detected — see `fileKind`.\n *\n * Known attribution gap: a PR / commit / branch detected from a shell\n * result carries no local path, so its `projectRoot` defaults to the\n * SESSION's root (`Session.addArtifact`). A `cd ../other && gh pr create`\n * is therefore filed under the current project. Fixing it needs either the\n * execution cwd on the detect outcome plus `cd` parsing, or an\n * `owner/repo` → local checkout map via `git remote`; neither is worth the\n * heuristics today. `file` artifacts don't have this problem — the loop\n * resolves their git root from the canonical path.\n */\n\nimport type { SessionArtifact } from '../session/artifacts'\nimport type { JsonValue, ToolResultContent } from '../types'\nimport type {\n ArtifactResolveOptions,\n ExtensionArtifactDetection,\n ExtensionArtifactKindRegistration,\n ExtensionArtifactRow,\n ExtensionBadgeIcon,\n\n ExtensionBadgeTone,\n ExtensionRegistry,\n ExtensionSessionBadge,\n ExtensionSessionBadgeCardRow,\n SessionBadgeEntry,\n} from './types'\nimport { githubPullConfirmedAt, queueGithubPull } from '../github/pulls'\nimport { ARTIFACT_KINDS } from '../session/artifacts'\nimport { GITHUB_SEGMENT, githubRateLimitText, pullChecks, pullMeta, pullStateLook } from './github-pulls'\nimport { normalizeRowFields } from './row-fields'\nimport { isBadgeColor } from './types'\n\nconst GITHUB_PR_URL = /https:\\/\\/github\\.com\\/([\\w.-]+)\\/([\\w.-]+)\\/pull\\/(\\d+)/g\n\nexport { githubTokenSource } from './github-pulls'\nconst GITLAB_MR_URL = /https?:\\/\\/[\\w.-]+\\/([\\w./-]+?)\\/-\\/merge_requests\\/(\\d+)/g\nconst GIT_COMMIT_LINE = /^\\[([^\\s\\]]+)(?: \\(root-commit\\))? ([0-9a-f]{7,40})\\] (.*)$/m\n/** The check summary's icon, by its tone (literal classes: the GUI's icon scan needs them). */\nconst CHECK_ICONS: Partial<Record<ExtensionBadgeTone, ExtensionBadgeIcon>> = {\n success: { gui: 'i-ph-check-circle', tui: '✓' },\n warn: { gui: 'i-ph-warning-circle', tui: '!' },\n muted: { gui: 'i-ph-prohibit', tui: '⊘' },\n}\n\n/** Don't re-resolve an open PR more often than this. */\nconst PR_RESOLVE_TTL_MS = 5 * 60_000\n\nfunction resultText(result: string | ToolResultContent[]): string {\n if (typeof result === 'string')\n return result\n return result.map(block => (block.type === 'text' ? block.text : '')).join('\\n')\n}\n\nfunction shellCommand(tool: string, input: Readonly<Record<string, unknown>>): string | undefined {\n if (tool !== 'shell')\n return undefined\n return typeof input.command === 'string' ? input.command : undefined\n}\n\n/** Split a shell line into rough tokens — enough to read flags off `git` invocations. */\nfunction tokens(command: string): string[] {\n return command.split(/\\s+/).filter(Boolean)\n}\n\n/** Built-in `pull_request` kind. Detects GitHub PRs and GitLab MRs from `gh pr create`, `glab mr create` and `*create_pull_request` / `*create_merge_request` tools. Refreshes GitHub PR state. */\nexport const pullRequestKind: ExtensionArtifactKindRegistration = {\n kind: ARTIFACT_KINDS.pullRequest,\n label: 'Pull request',\n detect({ tool, input, result, isError }) {\n if (isError)\n return undefined\n const command = shellCommand(tool, input)\n const viaCli = command !== undefined && (/\\bgh\\s+pr\\s+create\\b/.test(command) || /\\bglab\\s+mr\\s+create\\b/.test(command))\n const viaTool = /create_pull_request$/i.test(tool) || /create_merge_request$/i.test(tool)\n if (!viaCli && !viaTool)\n return undefined\n const text = resultText(result)\n const out: ExtensionArtifactDetection[] = []\n for (const m of text.matchAll(GITHUB_PR_URL)) {\n const [url, owner, repo, number] = m\n out.push({\n uri: url,\n label: `${owner}/${repo}#${number}`,\n meta: { provider: 'github', owner, repo, number: Number(number) },\n })\n }\n for (const m of text.matchAll(GITLAB_MR_URL)) {\n const [url, project, number] = m\n out.push({\n uri: url,\n label: `${project}!${number}`,\n meta: { provider: 'gitlab', project, number: Number(number) },\n })\n }\n return out.length > 0 ? out : undefined\n },\n validateMeta: meta => typeof meta === 'object' && meta !== null && !Array.isArray(meta) && typeof meta.number === 'number',\n /**\n * The shared row: the state icon (GitHub's colors), the PR title, the\n * state word; then `owner/repo#N` (linked to the repo), the diff (linked\n * to the files tab), reviews, comments, checks.\n */\n render(artifact) {\n const meta = metaRecord(artifact)\n const state = typeof meta.state === 'string' ? meta.state : undefined\n const look = pullStateLook(state, meta.draft === true)\n const owner = typeof meta.owner === 'string' && GITHUB_SEGMENT.test(meta.owner) ? meta.owner : undefined\n const repo = typeof meta.repo === 'string' && GITHUB_SEGMENT.test(meta.repo) ? meta.repo : undefined\n const web = /^https:\\/\\/github\\.com\\//.test(artifact.uri)\n const facts: NonNullable<ExtensionArtifactRow['facts']>[number][] = []\n const page = web ? artifact.uri.replace(/[?#].*$/, '').replace(/\\/+$/, '') : undefined\n if (typeof meta.reviews === 'number' && meta.reviews > 0) {\n facts.push({\n text: `${meta.reviews} review${meta.reviews === 1 ? '' : 's'}`,\n icon: { gui: 'i-ph-eye', tui: '◉' },\n tone: 'accent',\n ...(page ? { href: `${page}/files` } : {}),\n })\n }\n if (typeof meta.comments === 'number' && meta.comments > 0) {\n facts.push({\n text: `${meta.comments} comment${meta.comments === 1 ? '' : 's'}`,\n icon: { gui: 'i-ph-chat-circle', tui: '✎' },\n ...(page ? { href: page } : {}),\n })\n }\n const checks = state ? pullChecks({ state, ...(typeof meta.mergeable === 'string' ? { mergeable: meta.mergeable } : {}) }) : undefined\n if (checks)\n facts.push({ ...checks, icon: CHECK_ICONS[checks.tone] ?? CHECK_ICONS.muted!, ...(page ? { href: `${page}/checks` } : {}) })\n // A refresh a rate limit stopped: say so while it lasts, instead of quietly showing old data.\n if (typeof meta.rateLimitedUntil === 'number' && meta.rateLimitedUntil > Date.now()) {\n facts.push({\n text: githubRateLimitText({ retryAt: meta.rateLimitedUntil, anonymous: meta.rateLimitedAnonymous === true }),\n icon: CHECK_ICONS.warn!,\n tone: 'warn',\n })\n }\n const diff = diffOf(meta)\n // The PR's title is the row title once known; the `owner/repo#N` handle (the label) leads line 2.\n const prTitle = typeof meta.title === 'string' && meta.title.trim() ? meta.title.trim() : null\n return {\n title: prTitle ?? artifact.label,\n href: artifact.uri,\n icon: look.icon,\n tone: look.tone,\n ...(look.color ? { color: look.color } : {}),\n ...(look.label ? { status: look.label } : {}),\n ...(prTitle ? { lead: { text: artifact.label, ...(owner && repo ? { href: `https://github.com/${owner}/${repo}` } : {}) } } : {}),\n ...(diff ? { diff: { ...diff, ...(web ? { href: `${artifact.uri}/files` } : {}) } } : {}),\n ...(facts.length > 0 ? { facts } : {}),\n }\n },\n /**\n * GitHub only (GitLab needs per-host auth). Reads through the shared\n * GitHub client (`../github/client`): token from the environment or the\n * `gh` CLI, else anonymous — public repos work, private ones degrade to\n * `undefined`, i.e. \"no refresh\", never an error. Captures state, title,\n * diff size, changed files, comment counts and GitHub's `updated_at`\n * (`ghUpdatedAt`) into `meta` for the rail.\n *\n * Rate-limit hygiene:\n * - terminal states (`merged`, and `closed` outside a forced refresh)\n * never refresh; a fresh `resolvedAt` or a recent in-memory\n * confirmation (within {@link PR_RESOLVE_TTL_MS}) is reused;\n * - reads asked for together (the panel opening) travel as one batch\n * (`queueGithubPull`); a forced refresh is interactive (may use the\n * quota's reserve), a hover isn't;\n * - an answer that changes nothing returns no patch, so a refresh never\n * re-persists the row (`artifact:changed`, list refetch) for nothing;\n * - a rate limit records `rateLimitedUntil` / `rateLimitedAnonymous` once\n * (the row shows it), cleared by the next successful read.\n *\n * `meta` is NOT trusted here: the detector regex-captures these fields, but\n * `record_artifact` and `ctx.artifacts.record` let a model or an extension\n * write anything. Path segments are re-validated to the shape a real repo\n * has — rejecting is clearer than escaping, since nothing else is a repo —\n * so a crafted `owner` can't steer this token-bearing request at another\n * endpoint.\n */\n async resolve(artifact, opts) {\n const meta = metaRecord(artifact)\n if (meta.provider !== 'github')\n return undefined\n const { owner, repo, number } = meta\n if (typeof owner !== 'string' || !GITHUB_SEGMENT.test(owner))\n return undefined\n if (typeof repo !== 'string' || !GITHUB_SEGMENT.test(repo))\n return undefined\n if (typeof number !== 'number' || !Number.isInteger(number) || number <= 0)\n return undefined\n // `merged` is final. `closed` can be reopened, so a forced refresh (panel\n // open) re-checks it; only the hover path treats it as settled.\n if (meta.state === 'merged' || (meta.state === 'closed' && !opts?.force))\n return undefined\n const ref = { owner, repo, number }\n const freshAt = Math.max(typeof meta.resolvedAt === 'number' ? meta.resolvedAt : 0, githubPullConfirmedAt(ref) ?? 0)\n if (!opts?.force && Date.now() - freshAt < PR_RESOLVE_TTL_MS)\n return undefined\n const read = await queueGithubPull(ref, {\n interactive: opts?.force === true,\n known: {\n ...(typeof meta.state === 'string' ? { state: meta.state } : {}),\n ...(typeof meta.ghUpdatedAt === 'string' ? { updatedAt: meta.ghUpdatedAt } : {}),\n ...(typeof meta.resolvedAt === 'number' ? { resolvedAt: meta.resolvedAt } : {}),\n },\n })\n const prior = meta as Record<string, JsonValue>\n const { rateLimitedUntil: _until, rateLimitedAnonymous: _anon, ...cleared } = prior\n const wasLimited = 'rateLimitedUntil' in prior\n switch (read.kind) {\n case 'ok': {\n // The one stored copy: the hover card (`github.pull`) reads it too.\n const next = { ...cleared, ...pullMeta(read.pull) }\n const { resolvedAt: _a, ...nextFields } = next\n const { resolvedAt: _b, ...priorFields } = prior\n return sameFlatMeta(priorFields, nextFields) ? undefined : { meta: next }\n }\n case 'unchanged':\n return wasLimited ? { meta: cleared } : undefined\n case 'rateLimited': {\n const until = read.retryAt ?? Date.now() + 60_000\n const current = typeof prior.rateLimitedUntil === 'number' && prior.rateLimitedUntil > Date.now()\n // One write per pause, not one per refresh attempt.\n if (current && (prior.rateLimitedAnonymous === true) === read.anonymous)\n return undefined\n return { meta: { ...cleared, rateLimitedUntil: until, ...(read.anonymous ? { rateLimitedAnonymous: true } : {}) } }\n }\n case 'unavailable':\n return undefined\n }\n },\n badge: pullRequestBadge,\n}\n\n/** Built-in `commit` kind. Detects commits from `git commit` runs and shows their change size. */\nexport const commitKind: ExtensionArtifactKindRegistration = {\n kind: ARTIFACT_KINDS.commit,\n label: 'Commit',\n detect({ tool, input, result, isError }) {\n if (isError)\n return undefined\n const command = shellCommand(tool, input)\n if (!command || !/\\bgit\\s+commit\\b/.test(command))\n return undefined\n const m = GIT_COMMIT_LINE.exec(resultText(result))\n if (!m)\n return undefined\n const [, branch, sha, message] = m\n return {\n uri: `git:commit:${sha}`,\n label: message!.trim() || sha!,\n meta: { sha, branch, message: message!.trim() },\n }\n },\n async resolve(artifact) {\n const revision = /^git:commit:([0-9a-f]{7,40})$/.exec(artifact.uri)?.[1]\n if (!revision || !artifact.projectRoot)\n return undefined\n const { execFile } = await import('node:child_process')\n const git = (...args: string[]) => new Promise<string>((resolve, reject) => {\n execFile('git', ['-C', artifact.projectRoot!, ...args], { timeout: 3000, maxBuffer: 1024 * 1024 }, (err, stdout) => {\n if (err)\n reject(err)\n else\n resolve(stdout.trim())\n })\n })\n /*\n * Diff size (`+120 −8`, 4 files) is local evidence, same badge the PR\n * row shows. Read before the GitHub-link probe so a commit in a repo with\n * no `origin` — or one not pushed yet — still gets its stats. An unknown\n * revision (rebased away, different checkout) leaves the meta untouched.\n */\n const stats = await git('show', '--shortstat', '--format=', revision).then(parseShortstat, () => undefined)\n const prior = metaRecord(artifact)\n const base: Record<string, unknown> = { ...prior, ...stats }\n // A patch only when something moved: every refresh otherwise re-persists\n // the row (`updatedAt`, `artifact:changed`, list refetch) per panel open.\n const patch = (meta: Record<string, unknown>) => (sameFlatMeta(prior, meta) ? undefined : { meta: meta as JsonValue })\n const unlink = () => {\n const meta = { ...base }\n delete meta.url\n return patch(meta)\n }\n try {\n const origin = await git('remote', 'get-url', 'origin')\n const repo = /^(?:https:\\/\\/github\\.com\\/|git@github\\.com:|ssh:\\/\\/git@github\\.com\\/)([\\w.-]+)\\/([\\w.-]+?)(?:\\.git)?\\/?$/.exec(origin)\n if (!repo)\n return unlink()\n const sha = await git('rev-parse', '--verify', `${revision}^{commit}`)\n if (!/^[0-9a-f]{40}$/.test(sha))\n return unlink()\n // Tracking refs are local evidence only: never fetch or probe credentials.\n const refs = await git('for-each-ref', `--contains=${sha}`, '--format=%(refname)', 'refs/remotes/origin/')\n if (!refs)\n return unlink()\n return patch({ ...base, sha, url: `https://github.com/${repo[1]}/${repo[2]}/commit/${sha}` })\n }\n catch {\n return unlink()\n }\n },\n render(artifact) {\n const meta = metaRecord(artifact)\n const sha = typeof meta.sha === 'string' ? meta.sha.slice(0, 7) : undefined\n const branch = typeof meta.branch === 'string' ? meta.branch : undefined\n const url = typeof meta.url === 'string' && /^https:\\/\\/github\\.com\\/[\\w.-]+\\/[\\w.-]+\\/commit\\/[0-9a-f]{40}$/.test(meta.url) ? meta.url : undefined\n const diff = diffOf(meta)\n // The shared row: the message, then sha, diff and branch badges on one line.\n return {\n title: artifact.label,\n ...(url ? { href: url } : {}),\n icon: { gui: 'i-ph-git-commit', tui: '○' },\n tone: 'muted',\n ...(sha ? { lead: { text: sha, mono: true, ...(url ? { href: url } : {}) } } : {}),\n ...(diff ? { diff } : {}),\n ...(branch ? { facts: [{ text: branch, title: `Branch ${branch}`, icon: { gui: 'i-ph-git-branch', tui: '⎇' }, tone: 'accent' as const }] } : {}),\n }\n },\n badge(commits) {\n const shas = commits.map(commitSha)\n const single = commits.length === 1\n return {\n text: single ? shas[0] || commits[0]!.label || 'commit' : `${commits.length} commits`,\n ...(single ? {} : { count: commits.length }),\n icon: { gui: 'i-ph-git-commit', tui: '○' },\n tone: 'muted',\n // After pull requests (0): the work a PR wraps reads after the PR.\n order: 10,\n ...(single && commitKind.render?.(commits[0]!)?.href ? { href: commitKind.render(commits[0]!)!.href! } : {}),\n ...(single && fullSha(commits[0]!) ? { prompt: fullSha(commits[0]!)! } : {}),\n card: {\n title: 'Commits',\n rows: commits.map((c, i) => {\n const row = commitKind.render!(c)!\n const branch = metaRecord(c).branch\n return {\n title: c.label,\n lead: shas[i] || 'commit',\n tone: 'accent',\n ...(typeof branch === 'string' ? { trailing: branch } : {}),\n ...(row.href ? { href: row.href } : {}),\n uri: c.uri,\n // \"Add to prompt\": the commit itself, not its web page.\n ...(fullSha(c) ? { prompt: fullSha(c)! } : {}),\n }\n }),\n },\n }\n },\n}\n\n/** A commit's recorded SHA (as long as it was recorded), or `undefined`. */\nfunction fullSha(artifact: SessionArtifact): string | undefined {\n const meta = metaRecord(artifact)\n const sha = typeof meta.sha === 'string' ? meta.sha : artifact.uri.replace(/^git:commit:/, '')\n return /^[0-9a-f]{7,40}$/.test(sha) ? sha : undefined\n}\n\n/** A commit's short SHA, from `meta.sha` or its `git:commit:` URI; `''` when neither is one. */\nfunction commitSha(artifact: SessionArtifact): string {\n const meta = metaRecord(artifact)\n const sha = typeof meta.sha === 'string' ? meta.sha : artifact.uri.replace(/^git:commit:/, '')\n return /^[0-9a-f]{7,40}$/.test(sha) ? sha.slice(0, 7) : ''\n}\n\n/** A pull request's state, GitHub's way (`pullStateLook`), as badge fields. */\nfunction pullRequestLook(artifact: SessionArtifact): { icon: ExtensionBadgeIcon, tone: ExtensionBadgeTone, color?: string } {\n const meta = metaRecord(artifact)\n const look = pullStateLook(typeof meta.state === 'string' ? meta.state : undefined, meta.draft === true)\n return { icon: look.icon, tone: look.tone, ...(look.color ? { color: look.color } : {}) }\n}\n\nfunction pullRequestBadge(prs: readonly SessionArtifact[]): ExtensionSessionBadge {\n const latest = prs[0]!\n const number = (pr: SessionArtifact) => (typeof metaRecord(pr).number === 'number' ? metaRecord(pr).number as number : null)\n const n = number(latest)\n return {\n text: n !== null ? `#${n}` : 'PR',\n ...(n !== null ? { count: n } : {}),\n ...(prs.length > 1 ? { more: prs.length - 1 } : {}),\n ...pullRequestLook(latest),\n // A session's pull request leads its badges.\n order: 0,\n ...(prs.length === 1 && /^https?:\\/\\//.test(latest.uri) ? { href: latest.uri } : {}),\n ...(/^https?:\\/\\//.test(latest.uri) ? { prompt: latest.uri } : {}),\n card: {\n title: 'Pull requests',\n rows: prs.map((pr) => {\n const row = pullRequestKind.render!(pr)!\n const k = number(pr)\n return {\n title: row.title,\n lead: k !== null ? `#${k}` : 'PR',\n ...pullRequestLook(pr),\n ...(row.status ? { trailing: row.status } : {}),\n ...(row.href ? { href: row.href } : {}),\n uri: pr.uri,\n }\n }),\n },\n }\n}\n\n/**\n * `git show --shortstat --format=` → `{ additions, deletions, changedFiles }`\n * (` 4 files changed, 120 insertions(+), 8 deletions(-)`). Any missing\n * clause is 0; an empty stat (empty commit) is `undefined`.\n *\n * @param out - Output of `git show --shortstat --format=`.\n */\nexport function parseShortstat(out: string): { additions: number, deletions: number, changedFiles: number } | undefined {\n const files = /(\\d+) files? changed/.exec(out)\n if (!files)\n return undefined\n return {\n changedFiles: Number(files[1]),\n additions: Number(/(\\d+) insertions?\\(\\+\\)/.exec(out)?.[1] ?? 0),\n deletions: Number(/(\\d+) deletions?\\(-\\)/.exec(out)?.[1] ?? 0),\n }\n}\n\n/** Same keys, same primitive values — the commit meta is flat (sha, branch, message, url, stats). */\nfunction sameFlatMeta(a: Record<string, unknown>, b: Record<string, unknown>): boolean {\n const keys = Object.keys(a)\n return keys.length === Object.keys(b).length && keys.every(key => key in b && a[key] === b[key])\n}\n\n/** `additions` / `deletions` / `changedFiles` meta as the row's diff. */\nfunction diffOf(meta: Record<string, unknown>): { added: number, removed: number, files?: number } | undefined {\n if (typeof meta.additions !== 'number' && typeof meta.deletions !== 'number')\n return undefined\n const n = (v: unknown) => (typeof v === 'number' && Number.isFinite(v) && v >= 0 ? v : 0)\n return {\n added: n(meta.additions),\n removed: n(meta.deletions),\n ...(typeof meta.changedFiles === 'number' ? { files: meta.changedFiles } : {}),\n }\n}\n\n/** A token without the quotes around it (`\"release/1.2\"` names `release/1.2`). */\nfunction unquoted(token: string | undefined): string | undefined {\n return token && /^([\"']).*\\1$/.test(token) ? token.slice(1, -1) : token\n}\n\n/**\n * A branch name as written, not one the shell would still change: an\n * expansion (`$b`, `${b}`, `$(git …)`, a backtick, a glob, `{a,b}`), a\n * quote left inside it (`'a'\"b\"`, or a quoted name with a space, split by\n * the tokenizer), a redirect or pipe. The command text is all the detector\n * sees, so such a name would be recorded literally. Also what git refuses in\n * a ref name (`git check-ref-format`).\n */\nfunction isLiteralBranchName(name: string): boolean {\n return name !== '@'\n && !name.startsWith('-') && !name.startsWith('/')\n && !/[$`*?[\\\\~^:\\s\"'{}<>|&();]|\\.\\.|@\\{|\\/\\/|(?:^|\\/)\\./.test(name)\n && !name.endsWith('/') && !name.endsWith('.') && !name.endsWith('.lock')\n}\n\n/** Built-in `branch` kind. Detects branches the model created, such as with `git switch -c`. */\nexport const branchKind: ExtensionArtifactKindRegistration = {\n kind: ARTIFACT_KINDS.branch,\n label: 'Branch',\n detect({ tool, input, isError }) {\n if (isError)\n return undefined\n const command = shellCommand(tool, input)\n if (!command)\n return undefined\n const names = new Set<string>()\n // Each `&&`/`;`-chained segment is inspected on its own.\n for (const segment of command.split(/&&|;|\\|\\|/)) {\n const t = tokens(segment)\n const git = t.indexOf('git')\n if (git === -1)\n continue\n const sub = t[git + 1]\n if ((sub === 'checkout' || sub === 'switch')) {\n const flag = t.findIndex((x, i) => i > git + 1 && /^-[bc]$/i.test(x))\n const name = flag !== -1 ? unquoted(t[flag + 1]) : undefined\n if (name && isLiteralBranchName(name))\n names.add(name)\n }\n else if (sub === 'push') {\n const flag = t.findIndex((x, i) => i > git + 1 && (x === '-u' || x === '--set-upstream'))\n // `git push -u origin <branch>` — branch is two tokens after the flag.\n // `HEAD` / `@` are ref shorthands, not branch names: a preceding\n // `checkout -b` / `switch -c` in the same command already named it.\n const name = flag !== -1 ? unquoted(t[flag + 2]) : undefined\n if (name && !name.includes(':') && name !== 'HEAD' && name !== '@' && isLiteralBranchName(name))\n names.add(name)\n }\n }\n if (names.size === 0)\n return undefined\n return [...names].map(name => ({ uri: `git:branch:${name}`, label: name, meta: { name } }))\n },\n render: artifact => ({ title: artifact.label }),\n}\n\n/**\n * `file` has NO automatic detector for plain writes on purpose. Every\n * `write_file` becoming an artifact is noise — a refactor would produce\n * dozens of rows that are really just the diff and go stale on the next\n * rename. A file is an artifact only when something deliberately says so:\n * the model via `record_artifact` (a generated report, an export), an\n * extension via `ctx.artifacts.record` (a build output), or a tool whose\n * whole output is the file (`generate_image`, {@link generatedImageKind}).\n * The kind keeps its rendering and `file:` URI canonicalization for those\n * paths.\n */\nexport const fileKind: ExtensionArtifactKindRegistration = {\n kind: ARTIFACT_KINDS.file,\n label: 'File',\n render(artifact) {\n const path = artifact.uri.startsWith('file://') ? artifact.uri.slice('file://'.length) : artifact.uri\n return { title: artifact.label, ...(path !== artifact.label ? { subtitle: path } : {}), href: path }\n },\n}\n\n/**\n * Not a kind of its own: the producer behind the `record_artifact` tool.\n * Reads the tool INPUT (the tool has no store access) and emits it as-is;\n * `kind` is whatever the model said, so a custom `deployment` lands under\n * `deployment` and renders via the fallback until an extension registers\n * it. Only fires on a successful call — a rejected input never records.\n */\nexport const recordArtifactKind: ExtensionArtifactKindRegistration = {\n kind: 'record_artifact',\n label: 'Recorded',\n detect({ tool, input, result, isError }) {\n if (isError || tool !== 'record_artifact')\n return undefined\n if (!resultText(result).startsWith('Recorded '))\n return undefined\n const kind = typeof input.kind === 'string' ? input.kind : undefined\n const uri = typeof input.uri === 'string' ? input.uri : undefined\n if (!kind || !uri)\n return undefined\n return {\n kind,\n uri,\n ...(typeof input.label === 'string' ? { label: input.label } : { label: uri }),\n ...(input.meta !== undefined && input.meta !== null && typeof input.meta === 'object' ? { meta: input.meta as JsonValue } : {}),\n }\n },\n}\n\n/**\n * Not a kind of its own: records each image a `generate_image` call saved as\n * a `file` artifact, read from the result's `Saved: <path> (<size>)` lines.\n */\nexport const generatedImageKind: ExtensionArtifactKindRegistration = {\n kind: 'generate_image',\n label: 'Generated image',\n detect({ tool, input, result, isError }) {\n if (isError || tool !== 'generate_image' || input.list === true)\n return undefined\n const detections = resultText(result).split('\\n').flatMap((line) => {\n const m = /^Saved: (.+?) \\(([^)]*)\\)$/.exec(line.trim())\n return m ? [{ kind: ARTIFACT_KINDS.file, uri: `file:${m[1]}`, label: m[1]!, meta: { size: m[2]! } }] : []\n })\n return detections.length > 0 ? detections : undefined\n },\n}\n\n/** The built-in artifact kinds: pull request, branch, commit and file. */\nexport const BUILTIN_ARTIFACT_KINDS: readonly ExtensionArtifactKindRegistration[] = [\n pullRequestKind,\n branchKind,\n commitKind,\n fileKind,\n]\n\n/** Every built-in detector: the kinds plus the `record_artifact` producer. */\nexport const BUILTIN_ARTIFACT_DETECTORS: readonly ExtensionArtifactKindRegistration[] = [\n ...BUILTIN_ARTIFACT_KINDS,\n recordArtifactKind,\n generatedImageKind,\n]\n\n/**\n * Resolve the registration for a stored artifact's kind: the active\n * registry wins (an extension may refine a built-in's presentation), then\n * built-ins, then `undefined` — callers fall back to `label` + `uri`.\n *\n * @param kind - Artifact kind string.\n * @param registry - Active registry, consulted before the built-ins.\n */\nexport function resolveArtifactKind(\n kind: string,\n registry?: Pick<ExtensionRegistry, 'artifactKinds'>,\n): ExtensionArtifactKindRegistration | undefined {\n const fromRegistry = registry?.artifactKinds.find(c => c.value.kind === kind)?.value\n if (fromRegistry)\n return fromRegistry\n return BUILTIN_ARTIFACT_KINDS.find(k => k.kind === kind)\n}\n\n/**\n * Row presentation with the guaranteed fallback. A `render` that throws\n * or returns nothing degrades to `label` + `uri` — a stored artifact is\n * never invisible because its kind's extension is gone or buggy.\n *\n * @param artifact - Stored artifact.\n * @param registry - Active registry, consulted before the built-ins.\n */\nexport function renderArtifactRow(\n artifact: SessionArtifact,\n registry?: Pick<ExtensionRegistry, 'artifactKinds'>,\n): ExtensionArtifactRow {\n const registration = resolveArtifactKind(artifact.kind, registry)\n if (registration?.render) {\n try {\n const row = registration.render(artifact)\n if (row && typeof row.title === 'string' && row.title)\n return normalizeArtifactRow(row)\n }\n catch {\n // fall through to the fallback\n }\n }\n return {\n title: artifact.label,\n ...(artifact.uri !== artifact.label ? { subtitle: artifact.uri } : {}),\n ...(/^(?:https?:\\/\\/|file:\\/\\/)/.test(artifact.uri) ? { href: artifact.uri.replace(/^file:\\/\\//, '') } : {}),\n }\n}\n\n/** A `render()` answer with its shared-row fields checked (`row-fields.ts`). */\nfunction normalizeArtifactRow(row: ExtensionArtifactRow): ExtensionArtifactRow {\n const { icon: _i, tone: _t, color: _c, lead: _l, diff: _d, facts: _f, ...rest } = row\n return { ...rest, ...normalizeRowFields(row) }\n}\n\n/**\n * Lazy refresh: run the kind's `resolve()` and return the artifact with\n * the patch applied (`updatedAt` bumped), or `undefined` when the kind has\n * no resolver, the resolver declined, or it threw. Callers persist the\n * result through their store / RPC — this never writes.\n *\n * @param artifact - Stored artifact to refresh.\n * @param registry - Active registry, consulted before the built-ins.\n * @param opts - Resolve options, such as `force`.\n */\nexport async function refreshArtifact(\n artifact: SessionArtifact,\n registry?: Pick<ExtensionRegistry, 'artifactKinds'>,\n opts?: ArtifactResolveOptions,\n): Promise<SessionArtifact | undefined> {\n const registration = resolveArtifactKind(artifact.kind, registry)\n if (!registration?.resolve)\n return undefined\n try {\n const patch = await registration.resolve(artifact, opts)\n if (!patch || (patch.label === undefined && patch.meta === undefined))\n return undefined\n return {\n ...artifact,\n ...(patch.label !== undefined ? { label: patch.label } : {}),\n ...(patch.meta !== undefined ? { meta: patch.meta } : {}),\n updatedAt: Date.now(),\n }\n }\n catch {\n return undefined\n }\n}\n\nconst DEFAULT_BADGE_ORDER = 100\n\n/** Caps on a badge before it crosses IPC. */\nconst BADGE_TEXT_CHARS = 2000\nconst BADGE_CARD_ROWS = 200\nconst BADGE_TONES: readonly string[] = ['muted', 'subtle', 'accent', 'success', 'warn', 'danger'] satisfies ExtensionBadgeTone[]\n\nfunction badgeStr(v: unknown): string | undefined {\n return typeof v === 'string' && v ? v.slice(0, BADGE_TEXT_CHARS) : undefined\n}\n\nfunction badgeNum(v: unknown): number | undefined {\n return typeof v === 'number' && Number.isFinite(v) ? v : undefined\n}\n\nfunction badgeTone(v: unknown): ExtensionBadgeTone | undefined {\n return typeof v === 'string' && BADGE_TONES.includes(v) ? v as ExtensionBadgeTone : undefined\n}\n\nfunction badgeIcon(v: unknown): ExtensionBadgeIcon | undefined {\n if (!v || typeof v !== 'object')\n return undefined\n const o = v as Record<string, unknown>\n const gui = badgeStr(o.gui)\n const tui = badgeStr(o.tui)\n return gui || tui ? { ...(gui ? { gui } : {}), ...(tui ? { tui } : {}) } : undefined\n}\n\n/** Drop `undefined` values so the result is plain JSON. */\nfunction defined<T extends object>(o: T): T {\n return Object.fromEntries(Object.entries(o).filter(([, v]) => v !== undefined)) as T\n}\n\nfunction normalizeCardRow(raw: unknown): ExtensionSessionBadgeCardRow | undefined {\n if (!raw || typeof raw !== 'object' || Array.isArray(raw))\n return undefined\n const o = raw as Record<string, unknown>\n if (typeof o.title !== 'string')\n return undefined\n return defined({\n title: o.title.slice(0, BADGE_TEXT_CHARS),\n lead: badgeStr(o.lead),\n icon: badgeIcon(o.icon),\n tone: badgeTone(o.tone),\n color: isBadgeColor(o.color) ? o.color : undefined,\n trailing: badgeStr(o.trailing),\n href: badgeStr(o.href),\n uri: badgeStr(o.uri),\n prompt: badgeStr(o.prompt),\n })\n}\n\n/**\n * A `badge()` answer reduced to the known fields with the right primitive\n * types: it crosses IPC and hosts dereference it. `undefined` when there is\n * no usable `text`.\n */\nfunction normalizeSessionBadge(raw: unknown): ExtensionSessionBadge | undefined {\n if (!raw || typeof raw !== 'object')\n return undefined\n const o = raw as Record<string, unknown>\n const text = badgeStr(o.text)\n if (!text)\n return undefined\n let card: ExtensionSessionBadge['card']\n if (o.card && typeof o.card === 'object') {\n const c = o.card as Record<string, unknown>\n if (typeof c.title === 'string' && Array.isArray(c.rows)) {\n const rows = c.rows.slice(0, BADGE_CARD_ROWS).map(normalizeCardRow).filter((r): r is ExtensionSessionBadgeCardRow => !!r)\n card = { title: c.title.slice(0, BADGE_TEXT_CHARS), rows }\n }\n }\n return defined({\n text,\n detail: badgeStr(o.detail),\n count: badgeNum(o.count),\n more: badgeNum(o.more),\n icon: badgeIcon(o.icon),\n tone: badgeTone(o.tone),\n color: isBadgeColor(o.color) ? o.color : undefined,\n title: badgeStr(o.title),\n href: badgeStr(o.href),\n panel: badgeStr(o.panel),\n prompt: badgeStr(o.prompt),\n order: badgeNum(o.order),\n card,\n })\n}\n\n/** The built-in Artifacts panel's id (`chat/panels.ts` `ARTIFACTS_PANEL_ID`). */\nconst ARTIFACTS_PANEL = 'artifacts'\n\n/** `badge.panel` as a full id the hosts can open, or removed (see {@link sessionBadges}). */\nfunction withPanel(\n badge: ExtensionSessionBadge,\n owner: string | undefined,\n panels: ExtensionRegistry['panels'] | undefined,\n): ExtensionSessionBadge {\n const { panel, ...rest } = badge\n if (typeof panel !== 'string' || !panel)\n return rest\n if (panel === ARTIFACTS_PANEL)\n return { ...rest, panel }\n const id = panel.includes('/') ? panel : owner ? `${owner}/${panel}` : undefined\n if (!id || (panels && !panels.some(p => p.id === id)))\n return rest\n return { ...rest, panel: id }\n}\n\n/**\n * A session's badges: its artifacts grouped by kind (newest first within\n * each), each kind's `badge()` (registry first, then built-ins), ordered by\n * `badge.order` then kind. A kind without `badge`, or whose `badge` throws\n * or answers nothing, contributes none.\n *\n * `badge.panel` comes back as a full panel id: a bare one is prefixed with\n * the kind's extension, and, when `registry` lists its panels, one that no\n * active extension registered is dropped (hosts open Artifacts then).\n *\n * @param artifacts - Artifacts of one session.\n * @param registry - Active registry and, optionally, its panels.\n */\nexport function sessionBadges(\n artifacts: readonly SessionArtifact[],\n registry?: Pick<ExtensionRegistry, 'artifactKinds'> & Partial<Pick<ExtensionRegistry, 'panels'>>,\n): SessionBadgeEntry[] {\n const byKind = new Map<string, SessionArtifact[]>()\n for (const artifact of artifacts) {\n const list = byKind.get(artifact.kind)\n if (list)\n list.push(artifact)\n else\n byKind.set(artifact.kind, [artifact])\n }\n const out: SessionBadgeEntry[] = []\n for (const [kind, list] of byKind) {\n const registration = resolveArtifactKind(kind, registry)\n if (!registration?.badge)\n continue\n list.sort((a, b) => b.createdAt - a.createdAt)\n try {\n const badge = normalizeSessionBadge(registration.badge(list))\n if (badge) {\n const owner = registry?.artifactKinds.find(c => c.value === registration)?.extensionName\n out.push({ kind, artifactCount: list.length, badge: withPanel(badge, owner, registry?.panels) })\n }\n }\n catch {\n // a broken badge drops itself, never the row\n }\n }\n return out.sort((a, b) => (a.badge.order ?? DEFAULT_BADGE_ORDER) - (b.badge.order ?? DEFAULT_BADGE_ORDER) || a.kind.localeCompare(b.kind))\n}\n\n/**\n * Human label for a kind (`Pull request`), falling back to the raw kind string.\n *\n * @param kind - Artifact kind string.\n * @param registry - Active registry, consulted before the built-ins.\n */\nexport function artifactKindLabel(kind: string, registry?: Pick<ExtensionRegistry, 'artifactKinds'>): string {\n return resolveArtifactKind(kind, registry)?.label ?? kind\n}\n\nfunction metaRecord(artifact: SessionArtifact): Record<string, unknown> {\n const meta = artifact.meta\n return meta && typeof meta === 'object' && !Array.isArray(meta) ? (meta as Record<string, unknown>) : {}\n}\n"],"mappings":"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"}
|
package/dist/chat/pure.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { $_ as
|
|
2
|
-
import { $ as runStatusKey, $c as OnboardingCustomField, $i as createFilesCompletionProvider, $n as compareModelVersion, $o as MachineUseStatus, $r as SessionSearchIndex, $t as ONBOARDING_PREVIEW_EVENTS, A as finalizeStreamingMarkdownForOwner, Ac as isTurnHighlighted, Ai as daemonGate, Al as OnboardingTradeoff, An as ONBOARDING_FEATURES, Ao as TerminalAdoptResult, Ar as chunkMarkdownForRender, As as BROWSER_TEXT_MAX_CHARS, At as onboardingRecord, B as spawnLaneResolver, Bc as ConnectorAuth, Bn as connectorById, Bo as TerminalReadResult, Br as HostIdentity, Bs as BrowserResponse, Bt as ONBOARDING_AGENT_NAMES, C as ThinkingDeltaOptions, Cd as SESSION_ACCOUNT_METADATA_KEY, Ci as compactingParts, Cl as OnboardingStepId, Cn as OnboardingStart, Co as TERMINAL_MAX_PER_SCOPE, Cs as BROWSER_ACTION_TIMEOUT_MS, Ct as OnboardingGateInput, D as capTranscriptEvents, Da as TextModelPick, Dc as EDIT_TOOL_NAMES, Di as FEATURE_GATES, Dl as OnboardingTask, Dn as currentOnboardingStep, Do as TERMINAL_TEXT_MAX_LINES, Dr as FenceOpen, Ds as BROWSER_OPS, Dt as mergeOnboardingState, Du as canonicalKeyName, E as appendThinkingLines, Ea as TextModelOptions, Ec as CACHE_NOTICE_LABEL, Ei as runStatusCells, El as OnboardingSurface, En as createOnboardingFlow, Eo as TERMINAL_READ_MAX_CHARS, Er as enabledMcpsWithout, Es as BROWSER_OPEN_MOUNT_MS, Et as isExistingInstall, Eu as bindingAlternatives, Fc as retagUserPromptEvents, Fl as APPROVAL_MODE_OPTIONS, Fn as onboardingFeatures, Fo as TerminalOwner, Fr as RemoteHostError, Fs as BrowserOp, Ft as onboardingImportParts, G as RUN_STATUS_TIME_MS, Gc as ConnectorTransport, Gi as DAEMON_HEALTH_STYLE, Gn as ONBOARDING_AGENT_BRANDS, Gr as HighlightRange, Gs as BrowserWaitUntil, Gt as joinNames, H as oneLineTitle, Hc as ConnectorEntry, Hd as oauthAccountLabel, Hn as connectorInstalled, Ho as TerminalStatus, Hr as HostProbeResult, Hs as BrowserSnapshot, Ht as OnboardingWords, I as takeChars, Ic as retagUserPromptEventsFromRefs, Id as DEFAULT_OAUTH_ACCOUNT_LABEL, Il as BooleanSettingKey, In as CONNECTORS, Io as TerminalProjectOpenInput, Ir as displayHostUrl, Is as BrowserOpError, It as onboardingSwitchedFeatures, J as RunFoldStatus, Jc as NativeExtensionGroup, Ji as DaemonHealthTone, Jl as enforceSettingsInvariants, Jn as ModelSettingPick, Jo as MachineLinksStatus, Jr as SearchExcerpt, Jt as TUTORIAL_TOPICS, K as RUN_WAITING_DELAY_MS, Kc as NativeExtensionCommandNeed, Ki as DaemonHealth, Kl as SettingsToggle, Kn as PROVIDER_BRANDS, Ko as MachineInfo, Kr as HighlightSegment, Kt as nativeExtensionNeedText, L as turnContextSize, Lc as selectableTurnIds, Ln as CONNECTOR_CATEGORIES, Lo as TerminalProjectScope, Lr as parseRemoteHostUrl, Ls as BrowserOpInputs, Lt as ConnectorAuthWords, M as ownerOf, Mc as isVisible, Mi as engagedKillSwitches, Ml as TranscriptPresetId, Mn as OnboardingFeatureCopy, Mo as TerminalError, Mr as normalizeMarkdownCodeFences, Ms as BrowserChange, Mt as onboardingSettingsChange, N as smoothCharsForTick, Nc as messageSelectionOwnership, Ni as isKillSwitchEngaged, Nl as TranscriptPresetKey, Nn as OnboardingFeatureGroupMeta, No as TerminalInfo, Nr as parseFenceOpen, Ns as BrowserConsoleEntry, Nt as OnboardingImportWords, O as discardThinking, Oa as TextModelSource, Oc as PromptTurnRef, Oi as FeatureGate, Ol as OnboardingTaskKind, On as onboardingProgress, Oo as TERMINAL_VIEW_MAX_LINES, Or as MARKDOWN_RENDER_CHUNK_TARGET_BYTES, Os as BROWSER_OUTLINE_MAX_ELEMENTS, Ot as migratedOnboardingRecords, Ou as parseBindingSpec, P as smoothCpsForBacklog, Pc as promptTurnRefs, Pd as API_KEY_ACCOUNT_LABEL, Pi as remoteHostsGate, Pl as TranscriptPresetSettings, Pn as onboardingFeatureCopy, Po as TerminalOpenInput, Pr as splitMarkdownCodeBlocks, Ps as BrowserErrorCode, Pt as OnboardingSwitchedFeatures, Q as runRetryingLabel, Qc as OnboardingCredentialSource, Qi as FILES_TRIGGER, Ql as DEFAULT_SETTINGS, Qn as ModelIdParts, Qo as MachineStatusChange, Qr as SessionSearchExcerpt, Qt as ONBOARDING_PREVIEW_ATTACHMENTS, R as SpawnTreeRow, Rl as SETTINGS_CHOICES, Rn as ConnectorCategoryMeta, Ro as TerminalProjectState, Rr as HostEntry, Rs as BrowserOpResults, Rt as LOCAL_SERVER_NAMES, S as TRANSCRIPT_TRIM_TO_EVENTS, Si as compactingLabel, Sl as OnboardingState, Sn as OnboardingProgress, So as TERMINAL_HISTORY_MAX_CHARS, Ss as tokenize, St as createOnboardingRun, T as appendMarkdownDelta, Ta as TextModelCandidate, Tc as BASH_CALL_ID_PREFIX, Td as readSessionAccount, Ti as retryLabel, Tl as OnboardingStepScope, Tn as canSkipOnboardingStep, To as TERMINAL_OUTPUT_WINDOW, Tr as enabledMcpsWith, Ts as BROWSER_MAX_WAIT_MS, Tt as effectiveOnboardingMode, Tu as ParsedBinding, U as titleFromText, Uc as ConnectorInput, Ui as summarizeOutcomes, Un as connectorServerConfig, Uo as TerminalTarget, Ur as HostRegistryError, Us as BrowserStatus, Ut as connectorAuthText, V as spawnParents, Vc as ConnectorCategory, Vl as SETTINGS_TOGGLES, Vn as connectorInputError, Vo as TerminalSessionState, Vs as BrowserScreenshot, Vt as ONBOARDING_WORDS, W as LiveRunStatus, Wc as ConnectorTokenAuth, Wi as DAEMON_HEALTH_GLYPH, Wl as SettingsChoice, Wn as LOCAL_SERVER_BRANDS, Wr as HostTestResult, Ws as BrowserTarget, Wt as joinFewNames, Wu as TodoItem, X as RunTailActivity, Xc as OnboardingAgentId, Xi as createSkillsCompletionProvider, Xl as settingKeywords, Xn as parseModelSetting, Xo as MachineRoot, Xr as SearchTurnResult, Xt as TutorialTopic, Y as RunRetry, Yc as NativeExtensionNeed, Yi as SKILLS_TRIGGER, Yl as requirementMet, Yn as formatModelSetting, Yr as SearchSessionResult, Yt as TutorialStep, Z as runFoldStatus, Zc as OnboardingAppearance, Zi as uniqueSkillNamesFromReferences, Zl as toggleHeldOn, Zn as LineupEntry, Zo as MachineShareStatus, Zr as SessionHistoryMatch, Zt as TutorialWords, _ as SMOOTH_BASE_CPS, _a as cacheHintText, _i as CacheChipContent, _l as OnboardingRecord, _n as importsSomething, _r as MCP_STATUS_LABEL, _s as extractEditPayload, _t as OnboardingRun, a as truncateTurnsAt, aa as COMMANDS_TRIGGER, ai as searchSessionHistory, al as OnboardingGate, an as transcriptPresetOf, ar as buildModelCatalog, as as DiffOp, at as splitPromptSegments, b as STREAMING_MARKDOWN_SEGMENT_CHARS, bi as cacheBreakChip, bl as OnboardingSettingsChange, bn as OnboardingAction, br as McpAuthStatus, bs as splitLines, bt as OnboardingRunSetup, c as reconcileEvents, ca as ChatReferenceData, ci as searchSessionIndex, cl as OnboardingImportPreview, cn as transcriptPresetPalettePicker, cr as indexOfEntry, cs as HunkResolution, ct as ONBOARDING_STEPS, d as ToolFormatLine, da as chatReferenceTokensFromText, di as searchTurns, dl as OnboardingInstallSignals, dn as NATIVE_EXTENSIONS_REPO, dr as MCP_KEY_REFUSED_HINT, ds as PreviewResult, dt as SetupPaletteItem, ea as uniqueFilesFromReferences, ei as buildSessionSearchIndex, el as OnboardingDetection, en as TRANSCRIPT_PRESETS, er as currentModelKeys, es as isValidMachineName, et as runTailActivity, f as displayNameFor, fa as createChatsCompletionProvider, fi as searchableTurnText, fl as OnboardingLocalServer, fn as NATIVE_EXTENSION_GROUPS, fr as McpTestOutcomeKind, fs as applyEditPayload, ft as onboardingStep, g as MarkdownDeltaOptions, ga as CACHE_HINT_MIN_TOKENS, gl as OnboardingProviderPick, gn as defaultImportSelection, gs as computeLineDiff, gt as OnboardingReadable, h as MAX_TRANSCRIPT_EVENTS, ha as buildLinearRamp, hi as generateSessionTitle, hl as OnboardingProvider, hn as nativeExtensionSource, hs as computeInlineDiff, ht as OnboardingPhase, i as replaceTurnTextBlocks, id as TODO_STATUS_GLYPHS, ii as searchHighlightRanges, il as OnboardingFeatureGroup, in as transcriptPresetNotice, ir as CustomModelTarget, is as DiffLine, it as promptSegmentLines, j as mergeTargetIndex, jc as isUserBashEvent, ji as defineFeatureGate, jl as TranscriptPreset, jn as ONBOARDING_FEATURE_GROUPS, jo as TerminalAttachResult, jr as isFenceClose, js as BROWSER_WAIT_TIMEOUT_MS, jt as onboardingRecords, k as finalizeStreamingMarkdown, ka as autoTextModelId, kc as isEditErrorResult, ki as FeatureGateOptions, kl as OnboardingTaskStatus, kn as onboardingReducer, ko as TERMINAL_VIEW_SCROLLBACK, kr as MarkdownSegment, ks as BROWSER_REQUEST_SLACK_MS, kt as needsOnboarding, ku as parseBindingSpecs, l as TOOL_DISPLAY, la as ChatReferenceEntry, li as searchSessionIndexAsync, ll as OnboardingImportSelection, ln as EXCLUDED_NATIVE_EXTENSIONS, lr as parseCustomModelQuery, ls as InlineDiff, lt as ONBOARDING_VERSION, m as toolInputCode, ma as blendHsl, ml as OnboardingPlanContext, mn as nativeExtensionByName, mr as classifyMcpTest, ms as buildUnifiedDiff, mt as OnboardingImportPreviewState, n as deleteTurnSafely, ni as filterSessionSearchCatalog, nl as OnboardingFeature, nn as TRANSCRIPT_PRESET_PALETTE_ID, nr as parseModelId, ns as parseMachineKind, nt as PromptSegmentRef, o as turnAsText, oa as createCommandsCompletionProvider, oi as searchSessionHistoryIndex, ol as OnboardingGithubIdentity, on as transcriptPresetOfPaletteItem, or as customModelTargets, os as EditHunkSummary, ot as APPROVAL_MODE_TRADEOFFS, p as formatToolCall, pa as uniqueChatIdsFromReferences, pi as GenerateSessionTitleOptions, pl as OnboardingMode, pn as NativeExtensionGroupMeta, pr as McpTestResult, ps as buildContextualDiff, pt as planOnboarding, q as RUN_WAITING_LABEL, qc as NativeExtensionEntry, qi as DaemonHealthStyle, qn as providerBrand, qo as MachineLinkState, qr as IndexedSearchTurn, qt as TUTORIALS, r as editableTurnText, ri as highlightSegments, rl as OnboardingFeatureBadge, rn as transcriptPreset, rr as CatalogEntry, rs as toMachineName, rt as inferPromptRefs, s as ReconcilableEvent, sa as CHATS_TRIGGER, si as searchSessionHistoryIndexAsync, sl as OnboardingImportCategory, sn as transcriptPresetPaletteItem, sr as filterModelCatalog, ss as EditSummary, st as SETTING_TRADEOFFS, t as countNeighbors, ti as buildSessionSearchIndexAsync, tl as OnboardingDraft, tn as TRANSCRIPT_PRESET_KEYS, tr as currentModels, ts as machineKind, tt as PromptSegment, tu as decisionsEnabled, u as ToolDisplayMeta, ua as ChatReferenceScope, ui as searchSessionTurns, ul as OnboardingImportSessionCounts, un as NATIVE_EXTENSIONS, ur as modelConcern, us as InlineSegment, ut as SETUP_PALETTE_ITEM, v as SMOOTH_MAX_BACKLOG_CHARS, vi as CacheChipTone, vl as OnboardingResult, vn as ONBOARDING_SETTING_KEYS, vs as filetypeFromPath, vt as OnboardingRunHost, wi as liveSessionCost, wl as OnboardingStepMeta, wn as applySettingsPatch, wo as TERMINAL_MAX_PER_SESSION, ws as BROWSER_EVALUATE_MAX_BYTES, wt as buildOnboardingResult, xl as OnboardingSignInState, xn as OnboardingFlowState, xs as summarizeEditPayload, xt as connectorsFromImport, y as SMOOTH_MAX_CPS, yi as RunStatusCell, yl as OnboardingRunStart, yn as ONBOARDING_STEP_SETTINGS, ys as previewEditPayload, yt as OnboardingRunOptions, z as spawnLane, zc as turnSelectionOwnership, zn as InstalledServerRef, zo as TerminalProjectStateInput, zr as HostErrorCode, zs as BrowserRequest, zt as NativeExtensionNeedWords } from "../turn-operations-CIFoOebZ.js";
|
|
1
|
+
import { $_ as formatTaskStatus, $a as ReferenceMatch, $c as ExtensionReferenceCardFact, $g as normalizePanelLoadContext, $h as defaultSessionModel, $y as activeSnapshotFor, A_ as RunReceiptSegmentKind, Af as RECOMMENDED_SKILL_SOURCES, Ag as normalizePaletteRunResult, Al as SessionBadgeEntry, Ap as CommandArgSuggestion, B_ as runReceiptFromRun, Bb as ContextBreakdownContributionContext, Bd as skillTokenWeights, Bf as groupSkillPicks, Bg as PanelFocus, C_ as ModelNamer, Cf as sanitizeSkillName, Cg as PaletteRunResult, Cp as collectReferences, D_ as RunReceiptCell, Dg as groupPaletteRows, E_ as RunReceipt, Eg as fuzzyMatch, Eh as EditPayload, Ep as mergeSuggestions, F_ as formatRunReceiptLine, Fb as ContextSegmentFile, Ff as SkillSourceInfo, Fg as ExtensionPanelScope, Fp as CommandInvocation, Fu as BadgeActionEffect, G_ as compactPath, Gb as ContextExactCounts, Gc as ExtensionPaletteProviderEntry, Gg as PanelLoadContext, Gh as SessionKnobs, Gu as builtinBadgeEffect, H_ as SpawnEndSummary, Hb as ContextBreakdownOptions, Hf as skillPickKey, Hg as PanelItem, Hh as DEFAULT_SPACE_ID, I_ as formatTokenCount, Ib as ContextSegmentOrigin, If as SkillSourceListing, Ig as PANEL_CONTENT_LIMITS, Im as LogLevel, J_ as fmtTokens, Jb as ContextItem, Jg as PanelMarkdownItem, Jh as SpaceModelDefault, Jy as ProviderUsageCredits, K_ as describeSpawnEnd, Kb as ContextExtensionRow, Kg as PanelLoadContextInput, Kh as Space, Kp as parseCommandInvocation, L_ as formatTokensPerSecond, Lb as ContextSegmentsInput, Lf as SkillSourceSkill, Lg as PanelAction, Ll as ExtensionHudBadge, Lm as LogRecord, Lu as BadgeMenuItem, M_ as formatCostUsd, Mb as AgentAccent, Mf as SkillInstallTarget, Mg as rankPaletteItems, Ml as isBadgeColor, N_ as formatRunDuration, Nb as accentColor, Nf as SkillPick, Ng as ExtensionPanel, O_ as RunReceiptCellKind, Og as isPaletteContext, Op as Command, P_ as formatRunReceiptCells, Pb as ContextSegment, Pf as SkillPickGroup, Pg as ExtensionPanelEntry, Pl as ExtensionComposerBadge, Pu as BadgeAction, Q_ as formatElapsed, Qb as buildContextBreakdown, Qc as ExtensionReferenceCard, Qg as normalizePanelContent, Qh as defaultSessionKnobs, Qm as nextLogLevel, Qw as McpServerConfig, Qy as UsageTone, R_ as hasRunReceipt, Rb as buildContextSegments, Rf as githubAvatarUrl, Rg as PanelContent, Ru as BadgeTarget, S_ as truncateTitle, Sf as SkillPathCandidate, Sg as PaletteProvider, Sp as applyInsert, Sv as toggleKeyed, T_ as RUN_RECEIPT_TURN_GLYPH, Tg as createPaletteRanker, Tp as mergeReferences, U_ as ageStep, Ub as ContextCategory, Uf as skillPickOf, Ug as PanelKeyValueItem, Uh as DEFAULT_SPACE_NAME, Uu as badgePromptText, V_ as AgeStep, Vb as ContextBreakdownContributor, Vf as skillCategory, Vg as PanelIcon, Vu as artifactBadgeTarget, W_ as ageString, Wb as ContextCategoryId, Wg as PanelKeyValueRow, Wh as SPACE_METADATA_KEY, Wu as builtinBadgeActions, X_ as formatCount, Xb as ContextSnapshot, Xg as PanelSection, Xh as activeSpaceOf, Xm as filterLogRecords, Xy as ProviderUsageStatus, Y_ as formatCostLabel, Yb as ContextMcpGroup, Yg as PanelRowItem, Yh as SpacesSettings, Ym as LOG_LEVEL_CYCLE, Yy as ProviderUsageSnapshot, Z_ as formatDuration, Zb as ContextUsageSplit, Zg as isExtensionPanelScope, Zh as defaultSessionAgent, Zm as formatLogLine, Zu as sessionBadgeTarget, Zy as ProviderUsageWindow, __ as sessionEventExcerpt, _g as PaletteContext, _p as CompletionContext, _v as rememberableChain, a_ as SESSION_EVENT_STATUS_STYLE, ab as showsAccount, ag as resolveSessionSpace, ao as findReferences, b_ as shortSessionId, bg as PaletteItem, bp as CompletionReference, c_ as SessionEventStatus, cg as spaceMetadata, cv as chainPositionOf, d_ as WORKER_REPORT_FRAGMENT, dg as spaceSwitchItems, ds as GITHUB_PULL_PROVIDER_ID, e_ as panelBadgeText, eb as formatBalance, eg as findSpace, eo as ReferenceProviderWire, ev as formatTaskSummary, f_ as isMainSession, fc as ExtensionArtifactRowFact, fg as spacesEnabled, fv as modelPickKey, g_ as sessionDirLabel, gc as ExtensionBadgeTone, gg as PALETTE_RESULT_MAX, gp as ActiveTrigger, gs as githubPullUrl, hc as ExtensionBadgeIcon, hg as PALETTE_RECENT_GROUP, hp as patchInlineGhost, hv as positionKeyed, hy as ProviderAuth, ib as resetLabel, ig as readSessionSpaceId, iv as ModelChainEntry, j_ as fitRunReceiptCells, jf as RecommendedSkillSource, jg as pushPaletteRecent, k_ as RunReceiptSegment, kg as normalizePaletteItems, l_ as SessionEventStatusStyle, lg as spaceModelDefault, ll as ExtensionSessionBadge, ls as GITHUB_ISSUE_PROVIDER_ID, lv as chainsEqual, mc as ExtensionBadgeColor, mg as PALETTE_RECENTS_MAX, mp as InlineGhost, mv as pickPrimaryKeyed, my as ProviderAccount, n_ as resolvePanelLoadContext, nb as formatUsagePercent, ng as newSpaceId, nl as ExtensionReferenceSurface, nv as shortId, o_ as SESSION_ROLE_KEY, ob as updatedLabel, og as sessionSpaceFilter, ov as chainAccountConflict, p_ as orchestratedBy, pg as PALETTE_LIMITS, pv as pickChainPrimary, py as AuthMethod, q_ as fmtCost, qb as ContextExtensionSection, qg as PanelLoadScope, qh as SpaceIcon, qu as mergeBadgeMenu, rT as NestedToolCallRecord, r_ as ORCHESTRATED_BY_KEY, rb as mostConstrainedWindow, rg as normalizeSpaces, rl as ExtensionReferenceView, rv as spawnStartParts, s_ as SessionEvent, sb as usageTone, sg as spaceIdForNewSession, sv as chainEntryKey, t_ as panelShowsIn, tb as formatCredits, tg as newSessionModel, tv as previewLine, u_ as SessionEventTone, ug as spaceOfSwitchItem, ul as ExtensionSessionBadgeCardRow, uv as chainsEqualKeyed, v_ as sessionEventLabel, vg as PaletteGroup, vp as CompletionItem, vv as reorderKeyed, w_ as RUN_RECEIPT_GLYPH, wf as skillCandidatesFromPaths, wg as RankedPaletteItem, wp as findActiveTrigger, x_ as sideSessionParent, xf as SKILL_CANDIDATE_MAX_DEPTH, xg as PaletteItemKind, xv as toggleChainEntry, y_ as sessionEventMeta, yg as PaletteHost, yp as CompletionProvider, ys as githubRefKey, z_ as nameFromModelId, zb as ContextBreakdown, zd as SkillTokenWeights, zf as githubPreviewImageUrl, zg as PanelCustomItem, zh as StreamEvent, zu as BadgeTargetKind } from "../index-DyQyDLX1.js";
|
|
2
|
+
import { $ as runStatusKey, $c as OnboardingCustomField, $i as createFilesCompletionProvider, $n as compareModelVersion, $o as MachineUseStatus, $r as SessionSearchIndex, $t as ONBOARDING_PREVIEW_EVENTS, A as finalizeStreamingMarkdownForOwner, Ac as isTurnHighlighted, Ai as daemonGate, Al as OnboardingTradeoff, An as ONBOARDING_FEATURES, Ao as TerminalAdoptResult, Ar as chunkMarkdownForRender, As as BROWSER_TEXT_MAX_CHARS, At as onboardingRecord, B as spawnLaneResolver, Bc as ConnectorAuth, Bn as connectorById, Bo as TerminalReadResult, Br as HostIdentity, Bs as BrowserResponse, Bt as ONBOARDING_AGENT_NAMES, C as ThinkingDeltaOptions, Cd as SESSION_ACCOUNT_METADATA_KEY, Ci as compactingParts, Cl as OnboardingStepId, Cn as OnboardingStart, Co as TERMINAL_MAX_PER_SCOPE, Cs as BROWSER_ACTION_TIMEOUT_MS, Ct as OnboardingGateInput, D as capTranscriptEvents, Da as TextModelPick, Dc as EDIT_TOOL_NAMES, Di as FEATURE_GATES, Dl as OnboardingTask, Dn as currentOnboardingStep, Do as TERMINAL_TEXT_MAX_LINES, Dr as FenceOpen, Ds as BROWSER_OPS, Dt as mergeOnboardingState, Du as canonicalKeyName, E as appendThinkingLines, Ea as TextModelOptions, Ec as CACHE_NOTICE_LABEL, Ei as runStatusCells, El as OnboardingSurface, En as createOnboardingFlow, Eo as TERMINAL_READ_MAX_CHARS, Er as enabledMcpsWithout, Es as BROWSER_OPEN_MOUNT_MS, Et as isExistingInstall, Eu as bindingAlternatives, Fc as retagUserPromptEvents, Fl as APPROVAL_MODE_OPTIONS, Fn as onboardingFeatures, Fo as TerminalOwner, Fr as RemoteHostError, Fs as BrowserOp, Ft as onboardingImportParts, G as RUN_STATUS_TIME_MS, Gc as ConnectorTransport, Gi as DAEMON_HEALTH_STYLE, Gn as ONBOARDING_AGENT_BRANDS, Gr as HighlightRange, Gs as BrowserWaitUntil, Gt as joinNames, H as oneLineTitle, Hc as ConnectorEntry, Hd as oauthAccountLabel, Hn as connectorInstalled, Ho as TerminalStatus, Hr as HostProbeResult, Hs as BrowserSnapshot, Ht as OnboardingWords, I as takeChars, Ic as retagUserPromptEventsFromRefs, Id as DEFAULT_OAUTH_ACCOUNT_LABEL, Il as BooleanSettingKey, In as CONNECTORS, Io as TerminalProjectOpenInput, Ir as displayHostUrl, Is as BrowserOpError, It as onboardingSwitchedFeatures, J as RunFoldStatus, Jc as NativeExtensionGroup, Ji as DaemonHealthTone, Jl as enforceSettingsInvariants, Jn as ModelSettingPick, Jo as MachineLinksStatus, Jr as SearchExcerpt, Jt as TUTORIAL_TOPICS, K as RUN_WAITING_DELAY_MS, Kc as NativeExtensionCommandNeed, Ki as DaemonHealth, Kl as SettingsToggle, Kn as PROVIDER_BRANDS, Ko as MachineInfo, Kr as HighlightSegment, Kt as nativeExtensionNeedText, L as turnContextSize, Lc as selectableTurnIds, Ln as CONNECTOR_CATEGORIES, Lo as TerminalProjectScope, Lr as parseRemoteHostUrl, Ls as BrowserOpInputs, Lt as ConnectorAuthWords, M as ownerOf, Mc as isVisible, Mi as engagedKillSwitches, Ml as TranscriptPresetId, Mn as OnboardingFeatureCopy, Mo as TerminalError, Mr as normalizeMarkdownCodeFences, Ms as BrowserChange, Mt as onboardingSettingsChange, N as smoothCharsForTick, Nc as messageSelectionOwnership, Ni as isKillSwitchEngaged, Nl as TranscriptPresetKey, Nn as OnboardingFeatureGroupMeta, No as TerminalInfo, Nr as parseFenceOpen, Ns as BrowserConsoleEntry, Nt as OnboardingImportWords, O as discardThinking, Oa as TextModelSource, Oc as PromptTurnRef, Oi as FeatureGate, Ol as OnboardingTaskKind, On as onboardingProgress, Oo as TERMINAL_VIEW_MAX_LINES, Or as MARKDOWN_RENDER_CHUNK_TARGET_BYTES, Os as BROWSER_OUTLINE_MAX_ELEMENTS, Ot as migratedOnboardingRecords, Ou as parseBindingSpec, P as smoothCpsForBacklog, Pc as promptTurnRefs, Pd as API_KEY_ACCOUNT_LABEL, Pi as remoteHostsGate, Pl as TranscriptPresetSettings, Pn as onboardingFeatureCopy, Po as TerminalOpenInput, Pr as splitMarkdownCodeBlocks, Ps as BrowserErrorCode, Pt as OnboardingSwitchedFeatures, Q as runRetryingLabel, Qc as OnboardingCredentialSource, Qi as FILES_TRIGGER, Ql as DEFAULT_SETTINGS, Qn as ModelIdParts, Qo as MachineStatusChange, Qr as SessionSearchExcerpt, Qt as ONBOARDING_PREVIEW_ATTACHMENTS, R as SpawnTreeRow, Rl as SETTINGS_CHOICES, Rn as ConnectorCategoryMeta, Ro as TerminalProjectState, Rr as HostEntry, Rs as BrowserOpResults, Rt as LOCAL_SERVER_NAMES, S as TRANSCRIPT_TRIM_TO_EVENTS, Si as compactingLabel, Sl as OnboardingState, Sn as OnboardingProgress, So as TERMINAL_HISTORY_MAX_CHARS, Ss as tokenize, St as createOnboardingRun, T as appendMarkdownDelta, Ta as TextModelCandidate, Tc as BASH_CALL_ID_PREFIX, Td as readSessionAccount, Ti as retryLabel, Tl as OnboardingStepScope, Tn as canSkipOnboardingStep, To as TERMINAL_OUTPUT_WINDOW, Tr as enabledMcpsWith, Ts as BROWSER_MAX_WAIT_MS, Tt as effectiveOnboardingMode, Tu as ParsedBinding, U as titleFromText, Uc as ConnectorInput, Ui as summarizeOutcomes, Un as connectorServerConfig, Uo as TerminalTarget, Ur as HostRegistryError, Us as BrowserStatus, Ut as connectorAuthText, V as spawnParents, Vc as ConnectorCategory, Vl as SETTINGS_TOGGLES, Vn as connectorInputError, Vo as TerminalSessionState, Vs as BrowserScreenshot, Vt as ONBOARDING_WORDS, W as LiveRunStatus, Wc as ConnectorTokenAuth, Wi as DAEMON_HEALTH_GLYPH, Wl as SettingsChoice, Wn as LOCAL_SERVER_BRANDS, Wr as HostTestResult, Ws as BrowserTarget, Wt as joinFewNames, Wu as TodoItem, X as RunTailActivity, Xc as OnboardingAgentId, Xi as createSkillsCompletionProvider, Xl as settingKeywords, Xn as parseModelSetting, Xo as MachineRoot, Xr as SearchTurnResult, Xt as TutorialTopic, Y as RunRetry, Yc as NativeExtensionNeed, Yi as SKILLS_TRIGGER, Yl as requirementMet, Yn as formatModelSetting, Yr as SearchSessionResult, Yt as TutorialStep, Z as runFoldStatus, Zc as OnboardingAppearance, Zi as uniqueSkillNamesFromReferences, Zl as toggleHeldOn, Zn as LineupEntry, Zo as MachineShareStatus, Zr as SessionHistoryMatch, Zt as TutorialWords, _ as SMOOTH_BASE_CPS, _a as cacheHintText, _i as CacheChipContent, _l as OnboardingRecord, _n as importsSomething, _r as MCP_STATUS_LABEL, _s as extractEditPayload, _t as OnboardingRun, a as truncateTurnsAt, aa as COMMANDS_TRIGGER, ai as searchSessionHistory, al as OnboardingGate, an as transcriptPresetOf, ar as buildModelCatalog, as as DiffOp, at as splitPromptSegments, b as STREAMING_MARKDOWN_SEGMENT_CHARS, bi as cacheBreakChip, bl as OnboardingSettingsChange, bn as OnboardingAction, br as McpAuthStatus, bs as splitLines, bt as OnboardingRunSetup, c as reconcileEvents, ca as ChatReferenceData, ci as searchSessionIndex, cl as OnboardingImportPreview, cn as transcriptPresetPalettePicker, cr as indexOfEntry, cs as HunkResolution, ct as ONBOARDING_STEPS, d as ToolFormatLine, da as chatReferenceTokensFromText, di as searchTurns, dl as OnboardingInstallSignals, dn as NATIVE_EXTENSIONS_REPO, dr as MCP_KEY_REFUSED_HINT, ds as PreviewResult, dt as SetupPaletteItem, ea as uniqueFilesFromReferences, ei as buildSessionSearchIndex, el as OnboardingDetection, en as TRANSCRIPT_PRESETS, er as currentModelKeys, es as isValidMachineName, et as runTailActivity, f as displayNameFor, fa as createChatsCompletionProvider, fi as searchableTurnText, fl as OnboardingLocalServer, fn as NATIVE_EXTENSION_GROUPS, fr as McpTestOutcomeKind, fs as applyEditPayload, ft as onboardingStep, g as MarkdownDeltaOptions, ga as CACHE_HINT_MIN_TOKENS, gl as OnboardingProviderPick, gn as defaultImportSelection, gs as computeLineDiff, gt as OnboardingReadable, h as MAX_TRANSCRIPT_EVENTS, ha as buildLinearRamp, hi as generateSessionTitle, hl as OnboardingProvider, hn as nativeExtensionSource, hs as computeInlineDiff, ht as OnboardingPhase, i as replaceTurnTextBlocks, id as TODO_STATUS_GLYPHS, ii as searchHighlightRanges, il as OnboardingFeatureGroup, in as transcriptPresetNotice, ir as CustomModelTarget, is as DiffLine, it as promptSegmentLines, j as mergeTargetIndex, jc as isUserBashEvent, ji as defineFeatureGate, jl as TranscriptPreset, jn as ONBOARDING_FEATURE_GROUPS, jo as TerminalAttachResult, jr as isFenceClose, js as BROWSER_WAIT_TIMEOUT_MS, jt as onboardingRecords, k as finalizeStreamingMarkdown, ka as autoTextModelId, kc as isEditErrorResult, ki as FeatureGateOptions, kl as OnboardingTaskStatus, kn as onboardingReducer, ko as TERMINAL_VIEW_SCROLLBACK, kr as MarkdownSegment, ks as BROWSER_REQUEST_SLACK_MS, kt as needsOnboarding, ku as parseBindingSpecs, l as TOOL_DISPLAY, la as ChatReferenceEntry, li as searchSessionIndexAsync, ll as OnboardingImportSelection, ln as EXCLUDED_NATIVE_EXTENSIONS, lr as parseCustomModelQuery, ls as InlineDiff, lt as ONBOARDING_VERSION, m as toolInputCode, ma as blendHsl, ml as OnboardingPlanContext, mn as nativeExtensionByName, mr as classifyMcpTest, ms as buildUnifiedDiff, mt as OnboardingImportPreviewState, n as deleteTurnSafely, ni as filterSessionSearchCatalog, nl as OnboardingFeature, nn as TRANSCRIPT_PRESET_PALETTE_ID, nr as parseModelId, ns as parseMachineKind, nt as PromptSegmentRef, o as turnAsText, oa as createCommandsCompletionProvider, oi as searchSessionHistoryIndex, ol as OnboardingGithubIdentity, on as transcriptPresetOfPaletteItem, or as customModelTargets, os as EditHunkSummary, ot as APPROVAL_MODE_TRADEOFFS, p as formatToolCall, pa as uniqueChatIdsFromReferences, pi as GenerateSessionTitleOptions, pl as OnboardingMode, pn as NativeExtensionGroupMeta, pr as McpTestResult, ps as buildContextualDiff, pt as planOnboarding, q as RUN_WAITING_LABEL, qc as NativeExtensionEntry, qi as DaemonHealthStyle, qn as providerBrand, qo as MachineLinkState, qr as IndexedSearchTurn, qt as TUTORIALS, r as editableTurnText, ri as highlightSegments, rl as OnboardingFeatureBadge, rn as transcriptPreset, rr as CatalogEntry, rs as toMachineName, rt as inferPromptRefs, s as ReconcilableEvent, sa as CHATS_TRIGGER, si as searchSessionHistoryIndexAsync, sl as OnboardingImportCategory, sn as transcriptPresetPaletteItem, sr as filterModelCatalog, ss as EditSummary, st as SETTING_TRADEOFFS, t as countNeighbors, ti as buildSessionSearchIndexAsync, tl as OnboardingDraft, tn as TRANSCRIPT_PRESET_KEYS, tr as currentModels, ts as machineKind, tt as PromptSegment, tu as decisionsEnabled, u as ToolDisplayMeta, ua as ChatReferenceScope, ui as searchSessionTurns, ul as OnboardingImportSessionCounts, un as NATIVE_EXTENSIONS, ur as modelConcern, us as InlineSegment, ut as SETUP_PALETTE_ITEM, v as SMOOTH_MAX_BACKLOG_CHARS, vi as CacheChipTone, vl as OnboardingResult, vn as ONBOARDING_SETTING_KEYS, vs as filetypeFromPath, vt as OnboardingRunHost, wi as liveSessionCost, wl as OnboardingStepMeta, wn as applySettingsPatch, wo as TERMINAL_MAX_PER_SESSION, ws as BROWSER_EVALUATE_MAX_BYTES, wt as buildOnboardingResult, xl as OnboardingSignInState, xn as OnboardingFlowState, xs as summarizeEditPayload, xt as connectorsFromImport, y as SMOOTH_MAX_CPS, yi as RunStatusCell, yl as OnboardingRunStart, yn as ONBOARDING_STEP_SETTINGS, ys as previewEditPayload, yt as OnboardingRunOptions, z as spawnLane, zc as turnSelectionOwnership, zn as InstalledServerRef, zo as TerminalProjectStateInput, zr as HostErrorCode, zs as BrowserRequest, zt as NativeExtensionNeedWords } from "../turn-operations-BbGJ-KSt.js";
|
|
3
3
|
import { a as METHOD_NOT_FOUND, i as LOCAL_HOST_NAME, n as HostIdentityError, o as isMethodNotFound, r as LOCAL_HOST_KEY, t as HostConnectionStatus } from "../connection-CvoXPgZw.js";
|
|
4
|
-
import { a as FoldStepState, c as foldsInCompactShape, d as thoughtLabel, i as FoldStep, l as noteLabel, n as FoldShape, o as FoldUnit, r as FoldStats, s as foldSummary, t as FoldPlan, u as planFold } from "../fold-rules-
|
|
4
|
+
import { a as FoldStepState, c as foldsInCompactShape, d as thoughtLabel, i as FoldStep, l as noteLabel, n as FoldShape, o as FoldUnit, r as FoldStats, s as foldSummary, t as FoldPlan, u as planFold } from "../fold-rules-DSypi36k.js";
|
|
5
5
|
import { _ as syncAgo, a as SYNC_MODE_LABEL, c as SyncClaimResult, d as SyncPushResult, f as SyncSource, g as settingOfField, h as settingField, i as SYNC_MODES, l as SyncMode, m as fieldCategory, n as SYNC_CATEGORIES, o as SYSTEM_MD_FIELD, p as SyncStatus, r as SYNC_CATEGORY_INFO, s as SyncCategory, t as MCP_OAUTH_NOTE, v as syncMarkerOf } from "../types-BWzrS7jZ.js";
|
|
6
6
|
//#region src/format-bytes.d.ts
|
|
7
7
|
/**
|
package/dist/chat/pure.js
CHANGED
|
@@ -8,18 +8,18 @@ import { C as mergeBadgeMenu, D as sessionBadgeTarget, _ as artifactBadgeTarget,
|
|
|
8
8
|
import { i as nextLogLevel, n as filterLogRecords, r as formatLogLine, t as LOG_LEVEL_CYCLE } from "../logs-view-DF7ArI6t.js";
|
|
9
9
|
import { a as DEFAULT_OAUTH_ACCOUNT_LABEL, p as oauthAccountLabel, r as API_KEY_ACCOUNT_LABEL } from "../cred-keys-C0KaSRp7.js";
|
|
10
10
|
import { n as DEFAULT_MODEL_PICK } from "../anthropic-models-Bq6LkMW8.js";
|
|
11
|
-
import { $ as usageTone, $n as TODO_STATUS_GLYPHS, $t as onboardingFeatures, An as NATIVE_EXTENSIONS_REPO, At as applySettingsPatch, B as RUN_WAITING_LABEL, Bn as SKILLS_TRIGGER, Bt as planOnboarding, Cn as isFenceClose, Ct as TUTORIAL_TOPICS, Dt as importsSomething, En as splitMarkdownCodeBlocks, Et as defaultImportSelection, F as spawnLane, Fn as ONBOARDING_AGENT_BRANDS, Ft as onboardingReducer, G as activeSnapshotFor, Gn as uniqueFilesFromReferences, Gt as transcriptPresetNotice, H as runRetryingLabel, Hn as uniqueSkillNamesFromReferences, Ht as TRANSCRIPT_PRESET_KEYS, I as spawnLaneResolver, In as PROVIDER_BRANDS, It as ONBOARDING_STEPS, J as formatUsagePercent, Jn as blendHsl, Jt as transcriptPresetPaletteItem, K as formatBalance, Kn as COMMANDS_TRIGGER, Kt as transcriptPresetOf, L as spawnParents, Ln as providerBrand, Lt as ONBOARDING_VERSION, M as takeChars, Mn as nativeExtensionByName, Mt as createOnboardingFlow, N as turnContextSize, Nn as nativeExtensionSource, Nt as currentOnboardingStep, O as smoothCharsForTick, On as EXCLUDED_NATIVE_EXTENSIONS, Ot as ONBOARDING_SETTING_KEYS, Pn as LOCAL_SERVER_BRANDS, Pt as onboardingProgress, Q as updatedLabel, Qn as accentColor, Qt as onboardingFeatureCopy, R as RUN_STATUS_TIME_MS, Rn as DAEMON_HEALTH_GLYPH, Rt as SETUP_PALETTE_ITEM, St as TUTORIALS, T as ownerOf, Tn as parseFenceOpen, Tt as ONBOARDING_PREVIEW_EVENTS, U as runStatusKey, Un as FILES_TRIGGER, Ut as TRANSCRIPT_PRESET_PALETTE_ID, V as runFoldStatus, Vn as createSkillsCompletionProvider, Vt as TRANSCRIPT_PRESETS, W as runTailActivity, Wn as createFilesCompletionProvider, Wt as transcriptPreset, X as resetLabel, Xn as CACHE_HINT_MIN_TOKENS, Xt as ONBOARDING_FEATURES, Y as mostConstrainedWindow, Yn as buildLinearRamp, Yt as transcriptPresetPalettePicker, Z as showsAccount, Zn as cacheHintText, Zt as ONBOARDING_FEATURE_GROUPS, _ as capTranscriptEvents, _t as ONBOARDING_WORDS, a as displayNameFor, an as connectorServerConfig, at as effectiveOnboardingMode, b as finalizeStreamingMarkdown, bn as chunkMarkdownForRender, bt as joinNames, c as MAX_TRANSCRIPT_EVENTS, cn as filterModelCatalog, ct as migratedOnboardingRecords, d as SMOOTH_MAX_CPS, dn as MCP_KEY_REFUSED_HINT, dt as onboardingRecords, en as CONNECTORS, et as APPROVAL_MODE_TRADEOFFS, f as STREAMING_MARKDOWN_SEGMENT_CHARS, fn as classifyMcpTest, ft as onboardingSettingsChange, g as appendThinkingLines, gt as ONBOARDING_AGENT_NAMES, h as appendMarkdownDelta, hn as MCP_STATUS_LABEL, ht as LOCAL_SERVER_NAMES, in as connectorInstalled, it as buildOnboardingResult, jn as NATIVE_EXTENSION_GROUPS, jt as canSkipOnboardingStep, k as smoothCpsForBacklog, kn as NATIVE_EXTENSIONS, kt as ONBOARDING_STEP_SETTINGS, l as SMOOTH_BASE_CPS, ln as indexOfEntry, lt as needsOnboarding, m as TRANSCRIPT_TRIM_TO_EVENTS, mt as onboardingSwitchedFeatures, n as reconcileEvents, nn as connectorById, nt as connectorsFromImport, o as formatToolCall, on as buildModelCatalog, ot as isExistingInstall, pt as onboardingImportParts, q as formatCredits, qn as createCommandsCompletionProvider, qt as transcriptPresetOfPaletteItem, r as TOOL_DISPLAY, rn as connectorInputError, rt as createOnboardingRun, s as toolInputCode, sn as customModelTargets, st as mergeOnboardingState, tn as CONNECTOR_CATEGORIES, tt as SETTING_TRADEOFFS, u as SMOOTH_MAX_BACKLOG_CHARS, un as parseCustomModelQuery, ut as onboardingRecord, vt as connectorAuthText, w as mergeTargetIndex, wn as normalizeMarkdownCodeFences, wt as ONBOARDING_PREVIEW_ATTACHMENTS, x as finalizeStreamingMarkdownForOwner, xt as nativeExtensionNeedText, y as discardThinking, yn as MARKDOWN_RENDER_CHUNK_TARGET_BYTES, yt as joinFewNames, z as RUN_WAITING_DELAY_MS, zn as DAEMON_HEALTH_STYLE, zt as onboardingStep } from "../transcript-reconcile-
|
|
11
|
+
import { $ as usageTone, $n as TODO_STATUS_GLYPHS, $t as onboardingFeatures, An as NATIVE_EXTENSIONS_REPO, At as applySettingsPatch, B as RUN_WAITING_LABEL, Bn as SKILLS_TRIGGER, Bt as planOnboarding, Cn as isFenceClose, Ct as TUTORIAL_TOPICS, Dt as importsSomething, En as splitMarkdownCodeBlocks, Et as defaultImportSelection, F as spawnLane, Fn as ONBOARDING_AGENT_BRANDS, Ft as onboardingReducer, G as activeSnapshotFor, Gn as uniqueFilesFromReferences, Gt as transcriptPresetNotice, H as runRetryingLabel, Hn as uniqueSkillNamesFromReferences, Ht as TRANSCRIPT_PRESET_KEYS, I as spawnLaneResolver, In as PROVIDER_BRANDS, It as ONBOARDING_STEPS, J as formatUsagePercent, Jn as blendHsl, Jt as transcriptPresetPaletteItem, K as formatBalance, Kn as COMMANDS_TRIGGER, Kt as transcriptPresetOf, L as spawnParents, Ln as providerBrand, Lt as ONBOARDING_VERSION, M as takeChars, Mn as nativeExtensionByName, Mt as createOnboardingFlow, N as turnContextSize, Nn as nativeExtensionSource, Nt as currentOnboardingStep, O as smoothCharsForTick, On as EXCLUDED_NATIVE_EXTENSIONS, Ot as ONBOARDING_SETTING_KEYS, Pn as LOCAL_SERVER_BRANDS, Pt as onboardingProgress, Q as updatedLabel, Qn as accentColor, Qt as onboardingFeatureCopy, R as RUN_STATUS_TIME_MS, Rn as DAEMON_HEALTH_GLYPH, Rt as SETUP_PALETTE_ITEM, St as TUTORIALS, T as ownerOf, Tn as parseFenceOpen, Tt as ONBOARDING_PREVIEW_EVENTS, U as runStatusKey, Un as FILES_TRIGGER, Ut as TRANSCRIPT_PRESET_PALETTE_ID, V as runFoldStatus, Vn as createSkillsCompletionProvider, Vt as TRANSCRIPT_PRESETS, W as runTailActivity, Wn as createFilesCompletionProvider, Wt as transcriptPreset, X as resetLabel, Xn as CACHE_HINT_MIN_TOKENS, Xt as ONBOARDING_FEATURES, Y as mostConstrainedWindow, Yn as buildLinearRamp, Yt as transcriptPresetPalettePicker, Z as showsAccount, Zn as cacheHintText, Zt as ONBOARDING_FEATURE_GROUPS, _ as capTranscriptEvents, _t as ONBOARDING_WORDS, a as displayNameFor, an as connectorServerConfig, at as effectiveOnboardingMode, b as finalizeStreamingMarkdown, bn as chunkMarkdownForRender, bt as joinNames, c as MAX_TRANSCRIPT_EVENTS, cn as filterModelCatalog, ct as migratedOnboardingRecords, d as SMOOTH_MAX_CPS, dn as MCP_KEY_REFUSED_HINT, dt as onboardingRecords, en as CONNECTORS, et as APPROVAL_MODE_TRADEOFFS, f as STREAMING_MARKDOWN_SEGMENT_CHARS, fn as classifyMcpTest, ft as onboardingSettingsChange, g as appendThinkingLines, gt as ONBOARDING_AGENT_NAMES, h as appendMarkdownDelta, hn as MCP_STATUS_LABEL, ht as LOCAL_SERVER_NAMES, in as connectorInstalled, it as buildOnboardingResult, jn as NATIVE_EXTENSION_GROUPS, jt as canSkipOnboardingStep, k as smoothCpsForBacklog, kn as NATIVE_EXTENSIONS, kt as ONBOARDING_STEP_SETTINGS, l as SMOOTH_BASE_CPS, ln as indexOfEntry, lt as needsOnboarding, m as TRANSCRIPT_TRIM_TO_EVENTS, mt as onboardingSwitchedFeatures, n as reconcileEvents, nn as connectorById, nt as connectorsFromImport, o as formatToolCall, on as buildModelCatalog, ot as isExistingInstall, pt as onboardingImportParts, q as formatCredits, qn as createCommandsCompletionProvider, qt as transcriptPresetOfPaletteItem, r as TOOL_DISPLAY, rn as connectorInputError, rt as createOnboardingRun, s as toolInputCode, sn as customModelTargets, st as mergeOnboardingState, tn as CONNECTOR_CATEGORIES, tt as SETTING_TRADEOFFS, u as SMOOTH_MAX_BACKLOG_CHARS, un as parseCustomModelQuery, ut as onboardingRecord, vt as connectorAuthText, w as mergeTargetIndex, wn as normalizeMarkdownCodeFences, wt as ONBOARDING_PREVIEW_ATTACHMENTS, x as finalizeStreamingMarkdownForOwner, xt as nativeExtensionNeedText, y as discardThinking, yn as MARKDOWN_RENDER_CHUNK_TARGET_BYTES, yt as joinFewNames, z as RUN_WAITING_DELAY_MS, zn as DAEMON_HEALTH_STYLE, zt as onboardingStep } from "../transcript-reconcile-DeFLIQ14.js";
|
|
12
12
|
import { O as toggleChainEntry, S as positionKeyed, T as reorderKeyed, _ as chainsEqualKeyed, a as replaceTurnTextBlocks, b as pickChainPrimary, c as SESSION_ACCOUNT_METADATA_KEY, g as chainsEqual, h as chainPositionOf, k as toggleKeyed, m as chainEntryKey, n as deleteTurnSafely, o as truncateTurnsAt, p as chainAccountConflict, r as editableTurnText, s as turnAsText, t as countNeighbors, u as readSessionAccount, w as rememberableChain, x as pickPrimaryKeyed, y as modelPickKey } from "../turn-operations-CWoCTC_L.js";
|
|
13
13
|
import { $ as formatTokensPerSecond, B as sessionEventLabel, D as SESSION_ROLE_KEY, E as SESSION_EVENT_STATUS_STYLE, G as RUN_RECEIPT_GLYPH, H as shortSessionId, J as formatCostUsd, K as RUN_RECEIPT_TURN_GLYPH, M as isMainSession, P as orchestratedBy, Q as formatTokenCount, R as sessionDirLabel, S as parseModelSetting, T as ORCHESTRATED_BY_KEY, U as sideSessionParent, V as sessionEventMeta, W as truncateTitle, X as formatRunReceiptCells, Y as formatRunDuration, Z as formatRunReceiptLine, _ as spaceModelDefault, a as defaultSessionAgent, b as spacesEnabled, c as findSpace, d as normalizeSpaces, et as hasRunReceipt, f as readSessionSpaceId, g as spaceMetadata, h as spaceIdForNewSession, i as activeSpaceOf, k as WORKER_REPORT_FRAGMENT, l as newSessionModel, m as sessionSpaceFilter, n as DEFAULT_SPACE_NAME, nt as runReceiptFromRun, o as defaultSessionKnobs, p as resolveSessionSpace, q as fitRunReceiptCells, r as SPACE_METADATA_KEY, rt as modelDisplayName, s as defaultSessionModel, t as DEFAULT_SPACE_ID, tt as nameFromModelId, u as newSpaceId, v as spaceOfSwitchItem, x as formatModelSetting, y as spaceSwitchItems, z as sessionEventExcerpt } from "../spaces-CyjMh5Zf.js";
|
|
14
|
-
import { I as isAllowedBrowserUrl, L as isLocalBrowserUrl, M as decisionsEnabled, O as DEFAULT_SETTINGS, R as normalizeBrowserUrl, a as APPROVAL_MODE_OPTIONS, f as enforceSettingsInvariants, g as toggleHeldOn, m as settingKeywords, p as requirementMet, s as SETTINGS_CHOICES, u as SETTINGS_TOGGLES } from "../secret-shapes-
|
|
14
|
+
import { I as isAllowedBrowserUrl, L as isLocalBrowserUrl, M as decisionsEnabled, O as DEFAULT_SETTINGS, R as normalizeBrowserUrl, a as APPROVAL_MODE_OPTIONS, f as enforceSettingsInvariants, g as toggleHeldOn, m as settingKeywords, p as requirementMet, s as SETTINGS_CHOICES, u as SETTINGS_TOGGLES } from "../secret-shapes-CEoGmfEE.js";
|
|
15
15
|
import { C as splitLines, L as gatherCommandNotes, N as summarizeOutcomes, S as previewEditPayload, T as tokenize, b as extractEditPayload, c as inferPromptRefs, d as nestedRecordEvents, f as nestedResultEvent, g as buildUnifiedDiff, h as buildContextualDiff, l as promptSegmentLines, m as applyEditPayload, n as titleFromText, o as modelConcern, p as nestedToolEvent, t as oneLineTitle, u as splitPromptSegments, v as computeInlineDiff, w as summarizeEditPayload, x as filetypeFromPath, y as computeLineDiff } from "../session-title-text-DHCNlzjb.js";
|
|
16
16
|
import { a as searchHighlightRanges, c as searchSessionHistoryIndexAsync, d as searchSessionTurns, f as searchTurns, i as highlightSegments, l as searchSessionIndex, n as buildSessionSearchIndexAsync, o as searchSessionHistory, p as searchableTurnText, r as filterSessionSearchCatalog, s as searchSessionHistoryIndex, t as buildSessionSearchIndex, u as searchSessionIndexAsync } from "../history-search-CbDaXIfU.js";
|
|
17
17
|
import { $ as isKillSwitchEngaged, B as createChatsCompletionProvider, C as BROWSER_OPS, Ct as selectableTurnIds, D as BROWSER_WAIT_TIMEOUT_MS, E as BROWSER_TEXT_MAX_CHARS, Et as turnSelectionOwnership, F as CONTINUE_PROMPT, G as compactingParts, H as cacheBreakChip, I as mayHaveStreamFailure, J as runStatusCells, K as liveSessionCost, L as splitStreamFailure, M as currentModelKeys, N as currentModels, O as BrowserOpError, P as parseModelId, Q as engagedKillSwitches, R as CHATS_TRIGGER, S as BROWSER_OPEN_MOUNT_MS, St as retagUserPromptEventsFromRefs, T as BROWSER_REQUEST_SLACK_MS, V as uniqueChatIdsFromReferences, W as compactingLabel, X as daemonGate, Y as FEATURE_GATES, Z as defineFeatureGate, _ as TERMINAL_VIEW_SCROLLBACK, a as EMPTY_MODES, at as isValidMachineName, b as BROWSER_EVALUATE_MAX_BYTES, bt as promptTurnRefs, c as modePrefixLength, ct as parseMachineKind, d as TERMINAL_MAX_PER_SCOPE, dt as CACHE_NOTICE_LABEL, et as remoteHostsGate, f as TERMINAL_MAX_PER_SESSION, ft as EDIT_TOOL_NAMES, g as TERMINAL_VIEW_MAX_LINES, gt as isVisible, h as TERMINAL_TEXT_MAX_LINES, ht as isUserBashEvent, i as sliceEnd, j as compareModelVersion, k as autoTextModelId, l as scanModes, lt as toMachineName, m as TERMINAL_READ_MAX_CHARS, mt as isTurnHighlighted, n as enabledMcpsWithout, o as isMouseTracking, p as TERMINAL_OUTPUT_WINDOW, pt as isEditErrorResult, q as retryLabel, r as OutputHistory, s as modePrefix, st as machineKind, t as enabledMcpsWith, u as TERMINAL_HISTORY_MAX_CHARS, ut as BASH_CALL_ID_PREFIX, v as TerminalError, vt as messageSelectionOwnership, w as BROWSER_OUTLINE_MAX_ELEMENTS, x as BROWSER_MAX_WAIT_MS, xt as retagUserPromptEvents, y as BROWSER_ACTION_TIMEOUT_MS, z as chatReferenceTokensFromText } from "../mcp-allowlist-BQ5MvhHi.js";
|
|
18
18
|
import { a as isMethodNotFound, i as METHOD_NOT_FOUND, n as LOCAL_HOST_KEY, r as LOCAL_HOST_NAME, t as HostIdentityError } from "../connection-BaHd3T-D.js";
|
|
19
19
|
import { a as SYNC_MODE_LABEL, c as settingField, d as syncMarkerOf, i as SYNC_MODES, l as settingOfField, n as SYNC_CATEGORIES, o as SYSTEM_MD_FIELD, r as SYNC_CATEGORY_INFO, s as fieldCategory, t as MCP_OAUTH_NOTE, u as syncAgo } from "../types-B4oqzENY.js";
|
|
20
|
-
import { $ as MACHINE_LINK_STATE_TEXT, A as openProactive, At as planAttachment, B as createPaletteRanker, C as TERMINAL_PANEL_ID, Ct as isExpandableProvider, D as cycleTab, Dt as MAX_FILE_ATTACHMENT_BYTES, E as closePanel, Et as ATTACHMENT_SNIFF_BYTES, F as togglePanel, Ft as HostRemovedError, G as normalizePaletteRunResult, H as groupPaletteRows, I as PALETTE_LIMITS, It as UnknownHostIdError, J as NOTICE_GLYPH, K as pushPaletteRecent, L as PALETTE_RECENTS_MAX, Lt as createHostIndex, M as pinTab, Mt as parseSessionKey, N as reorderTabs, Nt as sessionKey, O as moveTab, Ot as MAX_IMAGE_ATTACHMENT_BYTES, P as resolveActiveTab, Pt as AmbiguousHostIdError, Q as validateMcpForm, R as PALETTE_RECENT_GROUP, S as SIDE_PANEL_ID, St as indexOfProviderRow, T as buildPanelCatalog, Tt as selectableSources, U as isPaletteContext, V as fuzzyMatch, W as normalizePaletteItems, X as parseKeyValueLines, Y as MCP_TRANSPORTS, Z as splitCommandLine, _ as DIFFS_PANEL_ID, _t as messagePreview, a as editTodo, at as machineWaiting, b as INITIAL_PANEL_STATE, bt as toolPhrase, c as EMPTY_RATE, ct as buildVisibleInstructionRows, d as streamRateValue, dt as foldSummary, et as MACHINE_NOTICE_LABEL, f as createRunStopMarker, ft as foldsInCompactShape, g as BUILTIN_PANEL_TABS, gt as commandGist, h as BROWSER_PANEL_ID, ht as thoughtLabel, i as cycleTodoStatus, it as machineDirListing, j as pickTab, jt as SESSION_KEY_SEPARATOR, k as openForAttention, kt as SENDABLE_IMAGE_TYPES, l as MAX_PLAUSIBLE_RATE, lt as instructionOriginBadge, m as ARTIFACTS_PANEL_ID, mt as planFold, n as buildTodoRetryMessage, nt as lastSeenText, o as nextTodoId, ot as orderByMachine, p as tidyPromptText, pt as noteLabel, q as rankPaletteItems, r as clearTodos, rt as machineBlockedReason, s as removeTodo, st as INSTRUCTION_PREVIEW_LINE_CAP, t as addTodo, tt as environmentLabel, u as stepStreamRate, ut as instructionPreviewLines, v as FILES_PANEL_ID, vt as summarizeTools, w as TODOS_PANEL_ID, wt as parentProviderKey, x as QUEUE_PANEL_ID, xt as buildVisibleAuthRows, y as INBOX_PANEL_ID, yt as toolOverview, z as PALETTE_RESULT_MAX } from "../todo-edits-
|
|
20
|
+
import { $ as MACHINE_LINK_STATE_TEXT, A as openProactive, At as planAttachment, B as createPaletteRanker, C as TERMINAL_PANEL_ID, Ct as isExpandableProvider, D as cycleTab, Dt as MAX_FILE_ATTACHMENT_BYTES, E as closePanel, Et as ATTACHMENT_SNIFF_BYTES, F as togglePanel, Ft as HostRemovedError, G as normalizePaletteRunResult, H as groupPaletteRows, I as PALETTE_LIMITS, It as UnknownHostIdError, J as NOTICE_GLYPH, K as pushPaletteRecent, L as PALETTE_RECENTS_MAX, Lt as createHostIndex, M as pinTab, Mt as parseSessionKey, N as reorderTabs, Nt as sessionKey, O as moveTab, Ot as MAX_IMAGE_ATTACHMENT_BYTES, P as resolveActiveTab, Pt as AmbiguousHostIdError, Q as validateMcpForm, R as PALETTE_RECENT_GROUP, S as SIDE_PANEL_ID, St as indexOfProviderRow, T as buildPanelCatalog, Tt as selectableSources, U as isPaletteContext, V as fuzzyMatch, W as normalizePaletteItems, X as parseKeyValueLines, Y as MCP_TRANSPORTS, Z as splitCommandLine, _ as DIFFS_PANEL_ID, _t as messagePreview, a as editTodo, at as machineWaiting, b as INITIAL_PANEL_STATE, bt as toolPhrase, c as EMPTY_RATE, ct as buildVisibleInstructionRows, d as streamRateValue, dt as foldSummary, et as MACHINE_NOTICE_LABEL, f as createRunStopMarker, ft as foldsInCompactShape, g as BUILTIN_PANEL_TABS, gt as commandGist, h as BROWSER_PANEL_ID, ht as thoughtLabel, i as cycleTodoStatus, it as machineDirListing, j as pickTab, jt as SESSION_KEY_SEPARATOR, k as openForAttention, kt as SENDABLE_IMAGE_TYPES, l as MAX_PLAUSIBLE_RATE, lt as instructionOriginBadge, m as ARTIFACTS_PANEL_ID, mt as planFold, n as buildTodoRetryMessage, nt as lastSeenText, o as nextTodoId, ot as orderByMachine, p as tidyPromptText, pt as noteLabel, q as rankPaletteItems, r as clearTodos, rt as machineBlockedReason, s as removeTodo, st as INSTRUCTION_PREVIEW_LINE_CAP, t as addTodo, tt as environmentLabel, u as stepStreamRate, ut as instructionPreviewLines, v as FILES_PANEL_ID, vt as summarizeTools, w as TODOS_PANEL_ID, wt as parentProviderKey, x as QUEUE_PANEL_ID, xt as buildVisibleAuthRows, y as INBOX_PANEL_ID, yt as toolOverview, z as PALETTE_RESULT_MAX } from "../todo-edits-H77ROt6X.js";
|
|
21
21
|
import { t as HostRegistryError } from "../types-CiUp8oom.js";
|
|
22
|
-
import { n as displayHostUrl, r as parseRemoteHostUrl, t as RemoteHostError } from "../url-
|
|
22
|
+
import { n as displayHostUrl, r as parseRemoteHostUrl, t as RemoteHostError } from "../url-CLl0u4Z8.js";
|
|
23
23
|
//#region src/chat/hosts/presence.ts
|
|
24
24
|
/** Creates an empty presence merge that keeps the last snapshot of each host. */
|
|
25
25
|
function createPresenceMerge() {
|