@deepseek-insight/dsi 0.6.8 → 0.6.9
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/build/client/_app/immutable/assets/0.CRU0GiZX.css +2 -0
- package/build/client/_app/immutable/chunks/C1F3aCiz.js +2 -0
- package/build/client/_app/immutable/chunks/CmnxnK6v.js +1 -0
- package/build/client/_app/immutable/chunks/{CZajmeaf.js → UkmEG9Ws.js} +1 -1
- package/build/client/_app/immutable/chunks/jugX_o5s.js +1 -0
- package/build/client/_app/immutable/entry/{app.DEAFrkJ-.js → app.e7xoYywe.js} +2 -2
- package/build/client/_app/immutable/entry/start.CnkkMjJa.js +1 -0
- package/build/client/_app/immutable/nodes/{1.BM2g39Jr.js → 1.E4wiL8sP.js} +1 -1
- package/build/client/_app/immutable/nodes/2.BBV-AGuB.js +337 -0
- package/build/client/_app/version.json +1 -1
- package/build/handler.js +4 -4
- package/build/index.js +4 -4
- package/build/server/chunks/chunks/{internal.js-DrVZK6tf.js → internal.js-BnJXHc1S.js} +2 -2
- package/build/server/chunks/chunks/{state.js-C_zC7v8L.js → state.js-CAjHzrRZ.js} +2 -2
- package/build/server/chunks/entries/pages/{_error.svelte.js-BLQNkziv.js → _error.svelte.js-BXeIuPj-.js} +3 -3
- package/build/server/chunks/entries/pages/{_page.svelte.js-U6RBvo4b.js → _page.svelte.js-CW-EdJ00.js} +31 -6
- package/build/server/chunks/{handler-B_uG0xBL.js → handler-DimUSmTW.js} +3 -3
- package/build/server/chunks/{index.js-CFMhxqkR.js → index.js-BQUp4Xgn.js} +2 -2
- package/build/server/chunks/{manifest.js-rflC1wxY.js → manifest.js-BWy6zgHL.js} +5 -5
- package/build/server/chunks/nodes/{0.js-PpYt5eF3.js → 0.js-B0560RI0.js} +3 -3
- package/build/server/chunks/nodes/1.js-DJ3dsgdq.js +9 -0
- package/build/server/chunks/nodes/{2.js-Bkg7QRk0.js → 2.js-CzgP_zp4.js} +3 -3
- package/package.json +1 -1
- package/skills/dsi-rca/SKILL.md +103 -0
- package/skills/dsi-rca/references/mermaid-rules.md +46 -0
- package/skills/dsi-rca/references/rca-template.md +88 -0
- package/template/.dsi/resources/plugins-reff.md +3 -1
- package/template/dsh-app-dev-preset/README.md +69 -0
- package/template/dsh-app-dev-preset/cordis.patch.yml +219 -0
- package/template/dsh-app-dev-preset/package.json +7 -0
- package/template/dsh-research-preset/README.md +57 -0
- package/template/dsh-research-preset/cordis.patch.yml +118 -0
- package/template/dsh-research-preset/package.json +7 -0
- package/build/client/_app/immutable/assets/0.Cz4GQ8ND.css +0 -2
- package/build/client/_app/immutable/chunks/CFUMLnMa.js +0 -1
- package/build/client/_app/immutable/chunks/CZ6XrzVa.js +0 -1
- package/build/client/_app/immutable/chunks/ipGk-mTd.js +0 -2
- package/build/client/_app/immutable/entry/start.B_n-sOmN.js +0 -1
- package/build/client/_app/immutable/nodes/2.BmfcXZrQ.js +0 -332
- package/build/server/chunks/nodes/1.js-BQCqfRee.js +0 -9
- /package/build/client/_app/immutable/nodes/{0.CKr_pvH3.js → 0.k1Ikzbp6.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"
|
|
1
|
+
{"version":"1791287547811"}
|
package/build/handler.js
CHANGED
|
@@ -2,9 +2,9 @@ import './shims.js';
|
|
|
2
2
|
import 'node:fs';
|
|
3
3
|
import 'node:path';
|
|
4
4
|
import 'node:process';
|
|
5
|
-
export { h as handler } from './server/chunks/handler-
|
|
6
|
-
import './server/chunks/index.js-
|
|
7
|
-
import './server/chunks/manifest.js-
|
|
5
|
+
export { h as handler } from './server/chunks/handler-DimUSmTW.js';
|
|
6
|
+
import './server/chunks/index.js-BQUp4Xgn.js';
|
|
7
|
+
import './server/chunks/manifest.js-BWy6zgHL.js';
|
|
8
8
|
import './env.js';
|
|
9
9
|
import 'node:buffer';
|
|
10
10
|
import 'node:crypto';
|
|
@@ -16,7 +16,7 @@ import './server/chunks/chunks/shared.js-HQ0rfhm4.js';
|
|
|
16
16
|
import './server/chunks/chunks/uneval.js-BJ9Qq2SF.js';
|
|
17
17
|
import './server/chunks/chunks/utils.js-CAdNO8Tu.js';
|
|
18
18
|
import 'node:url';
|
|
19
|
-
import './server/chunks/chunks/internal.js-
|
|
19
|
+
import './server/chunks/chunks/internal.js-BnJXHc1S.js';
|
|
20
20
|
import './server/chunks/chunks/server.js-11-pxAWV.js';
|
|
21
21
|
import './server/chunks/chunks/internal2.js-BcS47nI-.js';
|
|
22
22
|
import './server/chunks/chunks/exports.js-DH_tjtdv.js';
|
package/build/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import http from 'node:http';
|
|
2
2
|
import fs__default from 'node:fs';
|
|
3
3
|
import process from 'node:process';
|
|
4
|
-
import { p as polka, h as handler, f as format_listening_address } from './server/chunks/handler-
|
|
4
|
+
import { p as polka, h as handler, f as format_listening_address } from './server/chunks/handler-DimUSmTW.js';
|
|
5
5
|
import { env, timeout_env } from './env.js';
|
|
6
6
|
import { rm } from 'node:fs/promises';
|
|
7
7
|
import './shims.js';
|
|
@@ -14,12 +14,12 @@ import 'node:stream';
|
|
|
14
14
|
import './server/chunks/chunks/shared.js-HQ0rfhm4.js';
|
|
15
15
|
import './server/chunks/chunks/uneval.js-BJ9Qq2SF.js';
|
|
16
16
|
import './server/chunks/chunks/utils.js-CAdNO8Tu.js';
|
|
17
|
-
import './server/chunks/index.js-
|
|
18
|
-
import './server/chunks/chunks/internal.js-
|
|
17
|
+
import './server/chunks/index.js-BQUp4Xgn.js';
|
|
18
|
+
import './server/chunks/chunks/internal.js-BnJXHc1S.js';
|
|
19
19
|
import './server/chunks/chunks/server.js-11-pxAWV.js';
|
|
20
20
|
import './server/chunks/chunks/internal2.js-BcS47nI-.js';
|
|
21
21
|
import './server/chunks/chunks/exports.js-DH_tjtdv.js';
|
|
22
|
-
import './server/chunks/manifest.js-
|
|
22
|
+
import './server/chunks/manifest.js-BWy6zgHL.js';
|
|
23
23
|
import 'node:url';
|
|
24
24
|
|
|
25
25
|
const path = env('SOCKET_PATH', false);
|
|
@@ -722,7 +722,7 @@ var options = {
|
|
|
722
722
|
app: ({ head, body, assets, nonce, env }) => "<!doctype html>\n<html lang=\"%paraglide.locale%\">\n <head>\n <meta charset=\"utf-8\" />\n <link rel=\"icon\" href=\"" + assets + "/favicon.svg\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n " + head + "\n </head>\n <body data-sveltekit-preload-data=\"tap\">\n <div style=\"display: contents\">" + body + "</div>\n </body>\n</html>\n",
|
|
723
723
|
error: error_template_default
|
|
724
724
|
},
|
|
725
|
-
version_hash: "
|
|
725
|
+
version_hash: "13mzflk"
|
|
726
726
|
};
|
|
727
727
|
async function get_hooks() {
|
|
728
728
|
let handle;
|
|
@@ -745,4 +745,4 @@ async function get_hooks() {
|
|
|
745
745
|
}
|
|
746
746
|
|
|
747
747
|
export { __commonJSMin as _, set_public_env as a, set_read_implementation as b, onDestroy as c, __exportAll as d, get_hooks as g, index_server_exports as i, options as o, public_env as p, read_implementation as r, set_private_env as s };
|
|
748
|
-
//# sourceMappingURL=internal.js-
|
|
748
|
+
//# sourceMappingURL=internal.js-BnJXHc1S.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as index_server_exports } from './internal.js-
|
|
1
|
+
import { i as index_server_exports } from './internal.js-BnJXHc1S.js';
|
|
2
2
|
import './shared.js-HQ0rfhm4.js';
|
|
3
3
|
import './exports.js-DH_tjtdv.js';
|
|
4
4
|
import { U as snapshot, J as getContext, G as noop } from './server.js-11-pxAWV.js';
|
|
@@ -303,4 +303,4 @@ var page = {
|
|
|
303
303
|
};
|
|
304
304
|
|
|
305
305
|
export { afterNavigate as a, backtoworkspace2 as b, replaceState as c, dshunreachable1 as d, currentLocale as e, page as p, reapednote1 as r, sessionnotfound2 as s, t, unexpectederror1 as u };
|
|
306
|
-
//# sourceMappingURL=state.js-
|
|
306
|
+
//# sourceMappingURL=state.js-CAjHzrRZ.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { V as head, W as escape_html, y as derived } from '../../chunks/server.js-11-pxAWV.js';
|
|
2
|
-
import { t, p as page, s as sessionnotfound2, r as reapednote1, d as dshunreachable1, u as unexpectederror1, b as backtoworkspace2 } from '../../chunks/state.js-
|
|
2
|
+
import { t, p as page, s as sessionnotfound2, r as reapednote1, d as dshunreachable1, u as unexpectederror1, b as backtoworkspace2 } from '../../chunks/state.js-CAjHzrRZ.js';
|
|
3
3
|
import '../../chunks/uneval.js-BJ9Qq2SF.js';
|
|
4
|
-
import '../../chunks/internal.js-
|
|
4
|
+
import '../../chunks/internal.js-BnJXHc1S.js';
|
|
5
5
|
import '../../chunks/shared.js-HQ0rfhm4.js';
|
|
6
6
|
import '../../chunks/exports.js-DH_tjtdv.js';
|
|
7
7
|
import '../../chunks/config.js-B0w1-uCA.js';
|
|
@@ -40,4 +40,4 @@ function _error($$renderer, $$props) {
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
export { _error as default };
|
|
43
|
-
//# sourceMappingURL=_error.svelte.js-
|
|
43
|
+
//# sourceMappingURL=_error.svelte.js-BXeIuPj-.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as onDestroy, d as __exportAll } from '../../chunks/internal.js-
|
|
1
|
+
import { c as onDestroy, d as __exportAll } from '../../chunks/internal.js-BnJXHc1S.js';
|
|
2
2
|
import { V as head, y as derived, X as bind_props, W as escape_html, Y as attr, Z as attr_style, _ as attr_class, x as setContext, $ as spread_props, a0 as attributes, a1 as clsx, a2 as ensure_array_like, a3 as element, J as getContext, a4 as stringify, a5 as html, F as run, a6 as props_id } from '../../chunks/server.js-11-pxAWV.js';
|
|
3
3
|
import { U as UI_LOCALES } from '../../chunks/config.js-B0w1-uCA.js';
|
|
4
4
|
import { m as mergeEntries, c as collapseSystemPromptEntries, t as truncate } from '../../chunks/dsh-events.js-D9tSYE7f.js';
|
|
@@ -7,7 +7,7 @@ import { b as applyKnobEvent, E as EMPTY_KNOBS, r as resolvePermission, l as loc
|
|
|
7
7
|
import { D as DEFAULT_IMAGE_LIMITS } from '../../chunks/image-limits.js-CUdJ0f7r.js';
|
|
8
8
|
import { a as appConfig, t as triggerMode, g as getTrigger, p as previewSegments, i as isValidTagWord, b as textPreviewOf, s as searchKey, c as shouldRecordPrompt, d as parseTagWords } from '../../chunks/app-config.svelte.js-BW7TwbBy.js';
|
|
9
9
|
import { c as getLocale } from '../../chunks/runtime.js-CCJi3XaY.js';
|
|
10
|
-
import { p as page, a as afterNavigate, t, c as replaceState, e as currentLocale, u as unexpectederror1, s as sessionnotfound2, r as reapednote1, d as dshunreachable1, b as backtoworkspace2 } from '../../chunks/state.js-
|
|
10
|
+
import { p as page, a as afterNavigate, t, c as replaceState, e as currentLocale, u as unexpectederror1, s as sessionnotfound2, r as reapednote1, d as dshunreachable1, b as backtoworkspace2 } from '../../chunks/state.js-CAjHzrRZ.js';
|
|
11
11
|
import 'yaml';
|
|
12
12
|
import 'html-to-image';
|
|
13
13
|
import hljs from 'highlight.js/lib/core';
|
|
@@ -20999,6 +20999,23 @@ function normalizeFileLinkPath(href) {
|
|
|
20999
20999
|
return value;
|
|
21000
21000
|
}
|
|
21001
21001
|
/**
|
|
21002
|
+
* The deep fallback’s root lister: the workspace root’s top-level
|
|
21003
|
+
* DIRECTORY names, via the same confined tree route the existence gate
|
|
21004
|
+
* uses. Any refusal degrades to an empty list — the fallback then
|
|
21005
|
+
* silently does nothing and the honest drop stands.
|
|
21006
|
+
*/
|
|
21007
|
+
async function workspaceRootDirs(sessionId, fetchImpl = fetch) {
|
|
21008
|
+
try {
|
|
21009
|
+
const res = await fetchImpl(`/api/dsh/workspace-tree?sessionId=${encodeURIComponent(sessionId)}&path=`);
|
|
21010
|
+
if (!res.ok) return [];
|
|
21011
|
+
const body = await res.json();
|
|
21012
|
+
if (body?.ok !== true || !Array.isArray(body.listing?.entries)) return [];
|
|
21013
|
+
return body.listing.entries.filter((e) => e.type === "dir").map((e) => e.name);
|
|
21014
|
+
} catch {
|
|
21015
|
+
return [];
|
|
21016
|
+
}
|
|
21017
|
+
}
|
|
21018
|
+
/**
|
|
21002
21019
|
* Resolve a file-link path AGAINST the workspace root (Fullpath Bow ADR
|
|
21003
21020
|
* 2026-09-26 D1): the assistant speaks in its own cwd's paths, which sit
|
|
21004
21021
|
* one level ABOVE the workspace root, so real links carry the root path or
|
|
@@ -21052,13 +21069,21 @@ async function workspaceFileExists(sessionId, path, fetchImpl = fetch) {
|
|
|
21052
21069
|
* Returns the workspace-relative path to publish, or null when both
|
|
21053
21070
|
* candidates refuse (the click drops).
|
|
21054
21071
|
*/
|
|
21055
|
-
async function resolveFileLinkTarget(sessionId, path, root, exists = workspaceFileExists) {
|
|
21072
|
+
async function resolveFileLinkTarget(sessionId, path, root, exists = workspaceFileExists, listRoot) {
|
|
21056
21073
|
const resolved = resolveFileLinkPath(path, root);
|
|
21057
21074
|
const candidates = [resolved];
|
|
21058
21075
|
const slash = resolved.indexOf("/");
|
|
21059
21076
|
if (slash !== -1 && resolved !== path) candidates.push(resolved.slice(slash + 1));
|
|
21060
21077
|
if (!candidates.includes(path)) candidates.push(path);
|
|
21061
21078
|
for (const candidate of candidates) if (await exists(sessionId, candidate)) return candidate;
|
|
21079
|
+
if (listRoot && resolved !== "" && !hasDotDotSegment(resolved)) try {
|
|
21080
|
+
const dirs = await listRoot(sessionId);
|
|
21081
|
+
for (const dir of dirs) {
|
|
21082
|
+
if (dir === "" || dir === "." || dir === "..") continue;
|
|
21083
|
+
const candidate = dir + "/" + resolved;
|
|
21084
|
+
if (await exists(sessionId, candidate)) return candidate;
|
|
21085
|
+
}
|
|
21086
|
+
} catch {}
|
|
21062
21087
|
return null;
|
|
21063
21088
|
}
|
|
21064
21089
|
//#endregion
|
|
@@ -25220,7 +25245,7 @@ function FloatingAnchorContainerPopup($$renderer, $$props) {
|
|
|
25220
25245
|
function focus() {}
|
|
25221
25246
|
if (open) {
|
|
25222
25247
|
$$renderer.push("<!--[0-->");
|
|
25223
|
-
$$renderer.push(`<div data-svelte="FloatingAnchorContainerPopup" tabindex="-1" class="pointer-events-auto absolute right-full top-1/2 z-50 mr-2 max-h-[60vh] w-
|
|
25248
|
+
$$renderer.push(`<div data-svelte="FloatingAnchorContainerPopup" tabindex="-1" class="pointer-events-auto absolute right-full top-1/2 z-50 mr-2 max-h-[60vh] w-96 max-w-[80vw] -translate-y-1/2 overflow-y-auto rounded-lg border border-surface-border bg-surface-elevated py-1 shadow-xl outline-none focus:outline-none"${attr("data-testid", popupTestId)}>`);
|
|
25224
25249
|
if (title !== void 0) {
|
|
25225
25250
|
$$renderer.push("<!--[0-->");
|
|
25226
25251
|
$$renderer.push(`<div class="border-b border-surface-border px-2.5 py-1.5 text-[10px] font-medium uppercase tracking-wider text-text-muted"${attr("data-testid", titleTestId)}>${escape_html(title)}</div>`);
|
|
@@ -30477,7 +30502,7 @@ function _page($$renderer, $$props) {
|
|
|
30477
30502
|
async function openFileLinkFromMarkdown(sessionId, rawHref) {
|
|
30478
30503
|
const { path, lines } = parseFileLinkHref(rawHref);
|
|
30479
30504
|
if (path === "") return;
|
|
30480
|
-
const target = await resolveFileLinkTarget(sessionId, path, panelWorkspaceFor(sessionId));
|
|
30505
|
+
const target = await resolveFileLinkTarget(sessionId, path, panelWorkspaceFor(sessionId), void 0, workspaceRootDirs);
|
|
30481
30506
|
if (target === null) return;
|
|
30482
30507
|
if (!sessionWorkspaceExplorer(sessionId)) {
|
|
30483
30508
|
const root = panelWorkspaceFor(sessionId);
|
|
@@ -31079,4 +31104,4 @@ function _page($$renderer, $$props) {
|
|
|
31079
31104
|
}
|
|
31080
31105
|
|
|
31081
31106
|
export { _page as default };
|
|
31082
|
-
//# sourceMappingURL=_page.svelte.js-
|
|
31107
|
+
//# sourceMappingURL=_page.svelte.js-CW-EdJ00.js.map
|
|
@@ -9,8 +9,8 @@ import * as qs from 'node:querystring';
|
|
|
9
9
|
import { Readable } from 'node:stream';
|
|
10
10
|
import { S as SvelteKitError } from './chunks/shared.js-HQ0rfhm4.js';
|
|
11
11
|
import './chunks/utils.js-CAdNO8Tu.js';
|
|
12
|
-
import { S as Server } from './index.js-
|
|
13
|
-
import { m as manifest } from './manifest.js-
|
|
12
|
+
import { S as Server } from './index.js-BQUp4Xgn.js';
|
|
13
|
+
import { m as manifest } from './manifest.js-BWy6zgHL.js';
|
|
14
14
|
import { env, dir, env_prefix } from '../../env.js';
|
|
15
15
|
import { format } from 'node:url';
|
|
16
16
|
|
|
@@ -1732,4 +1732,4 @@ const handler = sequence(
|
|
|
1732
1732
|
);
|
|
1733
1733
|
|
|
1734
1734
|
export { format_listening_address as f, handler as h, polka as p };
|
|
1735
|
-
//# sourceMappingURL=handler-
|
|
1735
|
+
//# sourceMappingURL=handler-DimUSmTW.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _ as __commonJSMin, o as options, s as set_private_env, a as set_public_env, g as get_hooks, p as public_env, r as read_implementation, b as set_read_implementation } from './chunks/internal.js-
|
|
1
|
+
import { _ as __commonJSMin, o as options, s as set_private_env, a as set_public_env, g as get_hooks, p as public_env, r as read_implementation, b as set_read_implementation } from './chunks/internal.js-BnJXHc1S.js';
|
|
2
2
|
import { n as noop, T as TRAILING_SLASH_PARAM, I as INVALIDATED_PARAM, R as Redirect, b as get_relative_path, S as SvelteKitError, g as get_status, t as text_encoder, o as once, H as HttpError, d as normalize_error, e as create_remote_key, f as parse_remote_arg, s as stringify, h as stringify$1, A as ActionFailure, i as split_remote_key, j as base64_encode } from './chunks/shared.js-HQ0rfhm4.js';
|
|
3
3
|
import { b as base, o as override, a as assets, r as reset, c as app_dir } from './chunks/internal2.js-BcS47nI-.js';
|
|
4
4
|
import { f as format_server_error, j as json, i as is_form_content_type, t as text, h as has_prerendered_path, a as handle_fatal_error, r as redirect_response, g as get_set_cookies, n as negotiate, w as with_request_store, p as parseString, m as merge_tracing, b as method_not_allowed, s as static_error_page, c as handle_error_and_jsonify, d as get_global_name, e as create_replacer, k as serialize_uses, l as clarify_devalue_error, E as ENDPOINT_METHODS, P as PAGE_METHODS, o as get_node_type, q as isRedirect, u as escape_html, v as error, x as deserialize_binary_form } from './chunks/utils.js-CAdNO8Tu.js';
|
|
@@ -3861,4 +3861,4 @@ var Server = class {
|
|
|
3861
3861
|
};
|
|
3862
3862
|
|
|
3863
3863
|
export { Server as S };
|
|
3864
|
-
//# sourceMappingURL=index.js-
|
|
3864
|
+
//# sourceMappingURL=index.js-BQUp4Xgn.js.map
|
|
@@ -10,11 +10,11 @@ return {
|
|
|
10
10
|
assets: new Set(["favicon.svg"]),
|
|
11
11
|
mimeTypes: {".svg":"image/svg+xml"},
|
|
12
12
|
_: {
|
|
13
|
-
client: {start:"_app/immutable/entry/start.
|
|
13
|
+
client: {start:"_app/immutable/entry/start.CnkkMjJa.js",app:"_app/immutable/entry/app.e7xoYywe.js",imports:["_app/immutable/entry/start.CnkkMjJa.js","_app/immutable/chunks/C1F3aCiz.js","_app/immutable/chunks/C-58cZAk.js","_app/immutable/entry/app.e7xoYywe.js","_app/immutable/chunks/C-58cZAk.js","_app/immutable/chunks/HclGiUj8.js","_app/immutable/chunks/xihTtKlq.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},
|
|
14
14
|
nodes: [
|
|
15
|
-
__memo(() => import('./nodes/0.js-
|
|
16
|
-
__memo(() => import('./nodes/1.js-
|
|
17
|
-
__memo(() => import('./nodes/2.js-
|
|
15
|
+
__memo(() => import('./nodes/0.js-B0560RI0.js')),
|
|
16
|
+
__memo(() => import('./nodes/1.js-DJ3dsgdq.js')),
|
|
17
|
+
__memo(() => import('./nodes/2.js-CzgP_zp4.js'))
|
|
18
18
|
],
|
|
19
19
|
remotes: {
|
|
20
20
|
|
|
@@ -445,4 +445,4 @@ return {
|
|
|
445
445
|
})();
|
|
446
446
|
|
|
447
447
|
export { manifest as m };
|
|
448
|
-
//# sourceMappingURL=manifest.js-
|
|
448
|
+
//# sourceMappingURL=manifest.js-BWy6zgHL.js.map
|
|
@@ -4,9 +4,9 @@ const index = 0;
|
|
|
4
4
|
let component_cache;
|
|
5
5
|
const component = async () => component_cache ??= (await import('../entries/pages/_layout.svelte.js-EFiihTdF.js')).default;
|
|
6
6
|
const universal_id = "src/routes/+layout.ts";
|
|
7
|
-
const imports = ["_app/immutable/nodes/0.
|
|
8
|
-
const stylesheets = ["_app/immutable/assets/0.
|
|
7
|
+
const imports = ["_app/immutable/nodes/0.k1Ikzbp6.js","_app/immutable/chunks/C-58cZAk.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/BLxS3bAX.js","_app/immutable/chunks/DlfWhx6l.js"];
|
|
8
|
+
const stylesheets = ["_app/immutable/assets/0.CRU0GiZX.css"];
|
|
9
9
|
const fonts = [];
|
|
10
10
|
|
|
11
11
|
export { component, fonts, imports, index, stylesheets, universal_id };
|
|
12
|
-
//# sourceMappingURL=0.js-
|
|
12
|
+
//# sourceMappingURL=0.js-B0560RI0.js.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const index = 1;
|
|
2
|
+
let component_cache;
|
|
3
|
+
const component = async () => component_cache ??= (await import('../entries/pages/_error.svelte.js-BXeIuPj-.js')).default;
|
|
4
|
+
const imports = ["_app/immutable/nodes/1.E4wiL8sP.js","_app/immutable/chunks/C-58cZAk.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/UkmEG9Ws.js","_app/immutable/chunks/C1F3aCiz.js","_app/immutable/chunks/DlfWhx6l.js"];
|
|
5
|
+
const stylesheets = [];
|
|
6
|
+
const fonts = [];
|
|
7
|
+
|
|
8
|
+
export { component, fonts, imports, index, stylesheets };
|
|
9
|
+
//# sourceMappingURL=1.js-DJ3dsgdq.js.map
|
|
@@ -17,11 +17,11 @@ import '../chunks/uneval.js-BJ9Qq2SF.js';
|
|
|
17
17
|
|
|
18
18
|
const index = 2;
|
|
19
19
|
let component_cache;
|
|
20
|
-
const component = async () => component_cache ??= (await import('../entries/pages/_page.svelte.js-
|
|
20
|
+
const component = async () => component_cache ??= (await import('../entries/pages/_page.svelte.js-CW-EdJ00.js')).default;
|
|
21
21
|
const server_id = "src/routes/+page.server.ts";
|
|
22
|
-
const imports = ["_app/immutable/nodes/2.
|
|
22
|
+
const imports = ["_app/immutable/nodes/2.BBV-AGuB.js","_app/immutable/chunks/C-58cZAk.js","_app/immutable/chunks/C1F3aCiz.js","_app/immutable/chunks/HclGiUj8.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/DlfWhx6l.js","_app/immutable/chunks/BLxS3bAX.js","_app/immutable/chunks/UkmEG9Ws.js"];
|
|
23
23
|
const stylesheets = ["_app/immutable/assets/2.BGqV97Jd.css"];
|
|
24
24
|
const fonts = [];
|
|
25
25
|
|
|
26
26
|
export { component, fonts, imports, index, server_id, stylesheets };
|
|
27
|
-
//# sourceMappingURL=2.js-
|
|
27
|
+
//# sourceMappingURL=2.js-CzgP_zp4.js.map
|
package/package.json
CHANGED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dsi-rca
|
|
3
|
+
description: Use when writing, reviewing, or marking done any RCA in deepseek-insight's dev/kb/rca/ — before drafting the first line and as the final self-audit before claiming the RCA is finished. Enforces the narrative standard the operator set after rejecting a copy-paste RCA — layman glossary, story-driven failure chains, and a mermaid flowchart AND sequence diagram are hard requirements, not style preferences.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# DeepSeek Insight RCA Standard
|
|
7
|
+
|
|
8
|
+
An RCA that reads like release notes is a failed RCA. This skill exists
|
|
9
|
+
because an agent under context rot pastes the commit message into a template
|
|
10
|
+
and calls it a root-cause analysis — no story, no layman path in, no
|
|
11
|
+
diagrams. The operator rejected exactly that (2026-10-06: *"paragraph seems
|
|
12
|
+
like just copy paste, lack of proper narrative, not layman friendly, and
|
|
13
|
+
worst do not have mermaid flow & sequence diagram"*). Everything below is
|
|
14
|
+
that rejection turned into law.
|
|
15
|
+
|
|
16
|
+
The exemplar that defines the bar:
|
|
17
|
+
`dev/kb/rca/2026-10-06 - RCA — The Renderer That Told the Truth Badly
|
|
18
|
+
(Dull Diagrams, Single-Line Tables, Captures From the Top).md` — three bugs,
|
|
19
|
+
one shared root, four mermaid diagrams, and a glossary a newcomer reads
|
|
20
|
+
before any code.
|
|
21
|
+
|
|
22
|
+
**References (load before drafting):**
|
|
23
|
+
|
|
24
|
+
- `references/rca-template.md` — the copy-verbatim skeleton, section-by-
|
|
25
|
+
section depth guide, and the single-defect variant note. **The template
|
|
26
|
+
lives there, not here; never write an RCA from memory of this page.**
|
|
27
|
+
- `references/mermaid-rules.md` — diagram choice table (flowchart vs
|
|
28
|
+
sequence), the seven syntax gates that have each broken a real diagram,
|
|
29
|
+
and the accessibility/tone rules for label text.
|
|
30
|
+
|
|
31
|
+
## 1. RCA or ADR or plain KB?
|
|
32
|
+
|
|
33
|
+
- An **ADR** (dev/architectural-decission/, see the `dsi-adr` skill) records
|
|
34
|
+
a *decision and its cost* — what was chosen, what was rejected.
|
|
35
|
+
- A **KB note** documents *how a surface works* today.
|
|
36
|
+
- An **RCA** (dev/kb/rca/) reconstructs *how a defect came to exist and what
|
|
37
|
+
its existence teaches*. If your draft names no decision to revisit and no
|
|
38
|
+
defect to explain, it is not an RCA — rehome it. An RCA that ends without
|
|
39
|
+
a carry-forward lesson is a post-mortem of the code; the lesson is the
|
|
40
|
+
post-mortem of the *process*.
|
|
41
|
+
|
|
42
|
+
## 2. The hard requirements (any "no" = unfinished)
|
|
43
|
+
|
|
44
|
+
1. **Narrative, never paste.** Every section explains *why* in plain
|
|
45
|
+
sentences before naming a file or line. Commit messages, diff hunks, and
|
|
46
|
+
test output may be *cited*, never pasted as prose. If a paragraph could
|
|
47
|
+
stand inside a commit message, rewrite it.
|
|
48
|
+
2. **Quote the operator.** Open with the defect in the operator's (or the
|
|
49
|
+
test's, or the user's) own words. The gap between those words and the
|
|
50
|
+
code is the story the RCA tells.
|
|
51
|
+
3. **Layman glossary before the body.** A *Words used below* table defines
|
|
52
|
+
every term the body will use in one plain sentence each. A newcomer reads
|
|
53
|
+
the note top-to-bottom without opening the codebase.
|
|
54
|
+
4. **A mermaid flowchart per failure chain.** Each bug/defect gets its own
|
|
55
|
+
`flowchart TD` tracing decision → inherited consequence → visible
|
|
56
|
+
symptom → complaint. The chain shows how a *reasonable* choice at time T
|
|
57
|
+
became a defect at time T+1 — that is the root in root-cause.
|
|
58
|
+
5. **A mermaid sequenceDiagram wherever responsibility moves between
|
|
59
|
+
actors** (operator ↔ component ↔ runtime, caller ↔ clone). A flowchart
|
|
60
|
+
shows *how the state went bad*; the sequence shows *who handed it over*.
|
|
61
|
+
Choice table and syntax gates: `references/mermaid-rules.md`.
|
|
62
|
+
6. **A shared-root paragraph** when the RCA covers multiple defects: one
|
|
63
|
+
paragraph naming the single underlying cause (stale defaults, an
|
|
64
|
+
inheritance chain, a missing contract) that the individual fixes merely
|
|
65
|
+
trimmed. Multi-bug RCAs without a shared root are a changelog.
|
|
66
|
+
7. **"What does NOT change"** — the blast radius must be bounded in writing,
|
|
67
|
+
so the reader knows what the fix deliberately left alone.
|
|
68
|
+
8. **"What to carry forward"** — dated, portable lessons (not "be careful";
|
|
69
|
+
rules like *"a clone is a photograph of a fresh document"*), each earned
|
|
70
|
+
by a specific trap in this RCA.
|
|
71
|
+
9. **Fact discipline (same as the ADR skill):** every fact traces to
|
|
72
|
+
something inspected THIS session — file + line, a simulation's output, a
|
|
73
|
+
test run, a commit sha. Cite the shas.
|
|
74
|
+
|
|
75
|
+
## 3. The self-audit (before claiming done)
|
|
76
|
+
|
|
77
|
+
Answer each aloud, in the transcript, yes or no:
|
|
78
|
+
|
|
79
|
+
1. Is every section narrative — could any paragraph be pasted into a commit
|
|
80
|
+
message? (Must be no.)
|
|
81
|
+
2. Are the operator's own words quoted at the top?
|
|
82
|
+
3. Would a newcomer who reads only the glossary + opening follow the story
|
|
83
|
+
without the codebase?
|
|
84
|
+
4. Does EVERY failure chain have a mermaid flowchart, and does every
|
|
85
|
+
multi-actor hand-off have a sequence diagram — all parsing clean per
|
|
86
|
+
`references/mermaid-rules.md`?
|
|
87
|
+
5. Does a multi-defect RCA name the shared root in one paragraph?
|
|
88
|
+
6. Is "What does NOT change" present and specific?
|
|
89
|
+
7. Is every carry-forward lesson a rule earned by a named trap?
|
|
90
|
+
8. Does every fact carry a source inspected this session (file+line, sha,
|
|
91
|
+
simulation output)?
|
|
92
|
+
9. Does the note follow the `references/rca-template.md` skeleton — all
|
|
93
|
+
headings present, all guidance deleted?
|
|
94
|
+
|
|
95
|
+
Any "no" is an unfinished RCA. Fix it or shrink its claim — never declare
|
|
96
|
+
done with a standing "no".
|
|
97
|
+
|
|
98
|
+
## 4. Reviewing an RCA
|
|
99
|
+
|
|
100
|
+
Run the same audit from outside. The three rejection reasons that matter
|
|
101
|
+
most: a section that reads like a commit message; a missing or unparsable
|
|
102
|
+
diagram; a carry-forward list of vibes. Style is negotiable; those three
|
|
103
|
+
are not.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Mermaid Rules for RCAs — Syntax Gates & Diagram Choices
|
|
2
|
+
|
|
3
|
+
Companion to `rca-template.md`. Same discipline as dsi-spec's
|
|
4
|
+
`references/mermaid-pattern.md`: mermaid is grammar, not decoration — an
|
|
5
|
+
unparsable block renders as raw text and fails the narrative contract as
|
|
6
|
+
surely as a missing diagram.
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Which diagram, when
|
|
11
|
+
|
|
12
|
+
| Situation | Diagram | Why |
|
|
13
|
+
|---|---|---|
|
|
14
|
+
| One defect's decision → consequence → symptom chain | `flowchart TD` | Shows how a reasonable choice at time T became a defect at time T+1 — the root in root-cause. |
|
|
15
|
+
| Actors hand state/messages to each other (operator → component → runtime → clone) | `sequenceDiagram` | A flowchart shows how state went bad; the sequence shows WHO handed it over. |
|
|
16
|
+
| Multi-defect RCA | one flowchart per defect + at least one sequence for the shared actor story | Per-defect chains stay readable; the sequence carries the shared root. |
|
|
17
|
+
|
|
18
|
+
Hard floor: **every failure chain gets a flowchart; every multi-actor
|
|
19
|
+
hand-off gets a sequence.** A multi-defect RCA with zero diagrams cannot
|
|
20
|
+
pass the self-audit.
|
|
21
|
+
|
|
22
|
+
## Syntax gates (each one has broken a real diagram)
|
|
23
|
+
|
|
24
|
+
1. **No `;` in message or label text** — mermaid treats it as a statement
|
|
25
|
+
separator and silently eats the rest of the line.
|
|
26
|
+
2. **`<br/>` for line breaks inside node labels** — literal newlines inside
|
|
27
|
+
`["…"]` labels are unreliable across renderers.
|
|
28
|
+
3. **Single-token participant/actor names** — long names go on the `as`
|
|
29
|
+
clause: `participant Op as You (operator)`.
|
|
30
|
+
4. **Every `alt`/`else`/`opt`/`loop` closes with `end`.**
|
|
31
|
+
5. **Quote every node label** — `A["text (with parens)"]`; unquoted parens
|
|
32
|
+
and slashes are the classic parse error.
|
|
33
|
+
6. **Edge labels are pipes with quotes**: `-->|"label text"`.
|
|
34
|
+
7. **Validate before claiming done** — `mermaid.parse` in a scratch node
|
|
35
|
+
script, or the Preview tab in Zed, or DSI's own MarkdownContent preview.
|
|
36
|
+
An unparsable block is requirement-failing, cosmetic-fixable-later.
|
|
37
|
+
|
|
38
|
+
## Accessibility & tone
|
|
39
|
+
|
|
40
|
+
- Label text carries the *narrative* ("the reasonable decision at time T"),
|
|
41
|
+
not ids (`A`, `B`) — a diagram read aloud must still tell the story.
|
|
42
|
+
- Dotted edges (`-.->`) mark dead ends and disconnected paths (the legacy
|
|
43
|
+
folder that nothing reads) — visual grammar for "not part of the live
|
|
44
|
+
chain".
|
|
45
|
+
- Keep flowcharts ≤ ~8 boxes; split into per-defect diagrams rather than one
|
|
46
|
+
spaghetti graph.
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# RCA Template — The Skeleton (copy verbatim, delete the guidance, keep the headings)
|
|
2
|
+
|
|
3
|
+
The bracketed guidance in each section explains the depth that section owes.
|
|
4
|
+
Guidance is scaffolding: it ships in the skill, never in the finished RCA.
|
|
5
|
+
|
|
6
|
+
The exemplar that shows this template fully lived:
|
|
7
|
+
`dev/kb/rca/2026-10-06 - RCA — The Renderer That Told the Truth Badly
|
|
8
|
+
(Dull Diagrams, Single-Line Tables, Captures From the Top).md`.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
````markdown
|
|
13
|
+
# RCA — <The Name: a memorable claim about the defect, not its title>
|
|
14
|
+
|
|
15
|
+
> RCA note, YYYY-MM-DD. <Two or three sentences in plain language: what
|
|
16
|
+
> broke, for whom, and the shape of the cause. If multiple defects, say how
|
|
17
|
+
> many and promise the shared root. Cite the fix commits by sha.>
|
|
18
|
+
|
|
19
|
+
## The complaints, in the operator's own words
|
|
20
|
+
<Numbered verbatim quotes of each defect report (user words, test names, or
|
|
21
|
+
error text). These are the entrance of the story — never paraphrase them
|
|
22
|
+
into jargon here.>
|
|
23
|
+
|
|
24
|
+
## Words used below (layman glossary)
|
|
25
|
+
| Word | Meaning in this note |
|
|
26
|
+
|---|---|
|
|
27
|
+
| **<term>** | <One plain sentence. Every jargon word the body uses lands here first.> |
|
|
28
|
+
|
|
29
|
+
## The shared root, in one paragraph
|
|
30
|
+
<For multi-defect RCAs: the single underlying cause the individual bugs
|
|
31
|
+
share — a stale default, an inherited property, a missing contract. For a
|
|
32
|
+
single-defect RCA, this section merges into the first bug's story.>
|
|
33
|
+
|
|
34
|
+
## Bug 1 — <A name that states the defect as a claim>
|
|
35
|
+
### The failure chain
|
|
36
|
+
```mermaid
|
|
37
|
+
flowchart TD
|
|
38
|
+
A["<the reasonable decision at time T>"] --> B["<the inherited consequence>"]
|
|
39
|
+
B --> C["<the visible symptom>"]
|
|
40
|
+
C --> D["<the operator-visible complaint>"]
|
|
41
|
+
```
|
|
42
|
+
### The fix, and the trap inside it
|
|
43
|
+
<Narrative: what changed, then the secondary defect the fix itself nearly
|
|
44
|
+
introduced (there almost always is one — the inheritance chain, the false
|
|
45
|
+
positive, the escaped emergency net). Say how the trap was caught
|
|
46
|
+
(simulation, test, preview) and why that catcher works.>
|
|
47
|
+
|
|
48
|
+
<Repeat Bug N for each defect.>
|
|
49
|
+
|
|
50
|
+
## <A mermaid sequenceDiagram whenever actors hand state to each other>
|
|
51
|
+
<operator → component → runtime → clone; label each arrow with the actual
|
|
52
|
+
call or mutation. See references/mermaid-rules.md for syntax gates.>
|
|
53
|
+
|
|
54
|
+
## What does NOT change
|
|
55
|
+
<Explicit blast-radius bounds: the older protections still standing, the
|
|
56
|
+
modes untouched, the inputs that behave exactly as before.>
|
|
57
|
+
|
|
58
|
+
## What to carry forward
|
|
59
|
+
<Numbered portable lessons, each phrased as a rule with its earning trap
|
|
60
|
+
attached. "Be careful" is not a lesson; "a clone is a photograph of a fresh
|
|
61
|
+
document" is.>
|
|
62
|
+
````
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Section-by-section depth guide
|
|
67
|
+
|
|
68
|
+
- **The Name** — a claim someone remembers in six months ("The Photograph
|
|
69
|
+
That Reframed Itself"), never the component's name alone ("CanvasCopyButton
|
|
70
|
+
RCA").
|
|
71
|
+
- **The complaints** — the operator's words are the entrance of the story.
|
|
72
|
+
Paraphrasing them into jargon here defeats the whole narrative contract.
|
|
73
|
+
- **The glossary** — every jargon word the body will use, one plain sentence
|
|
74
|
+
each, BEFORE the body. A newcomer reads top-to-bottom without opening the
|
|
75
|
+
codebase.
|
|
76
|
+
- **The shared root** — one paragraph. If you cannot write it, you have a
|
|
77
|
+
changelog, not an RCA: either find the cause the bugs share or split the
|
|
78
|
+
note.
|
|
79
|
+
- **Failure chains** — the chain shows how a *reasonable* choice at time T
|
|
80
|
+
became a defect at time T+1. If your chain's first box is already a
|
|
81
|
+
mistake, you are narrating blame, not cause.
|
|
82
|
+
- **The trap inside the fix** — there almost always is one (an inheritance
|
|
83
|
+
chain, a false positive, an escaped emergency net). An RCA that reports a
|
|
84
|
+
clean one-step fix is usually hiding it. Say how the trap was caught
|
|
85
|
+
(simulation, test, preview) and why that catcher works.
|
|
86
|
+
- **What to carry forward** — rules with their earning trap attached.
|
|
87
|
+
"Be careful" is not a lesson; "a clone is a photograph of a fresh
|
|
88
|
+
document" is.
|
|
@@ -1,2 +1,4 @@
|
|
|
1
1
|
Plugins Resources:
|
|
2
|
-
1. [dsh
|
|
2
|
+
1. [superpowers-dsh](https://github.com/LayneChai/superpowers-dsh) - [LayneChai](https://github.com/LayneChai)
|
|
3
|
+
2. [dsh-agent-teams(*)](https://github.com/NanmiCoder/dsh-agent-teams) - [NanmiCoder](https://github.com/NanmiCoder)
|
|
4
|
+
3. [sandbase-harness](https://github.com/sandbaseai/sandbase-harness) - [sandbaseai](https://github.com/sandbaseai)
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# dsh-app-dev-preset — agent-preset bundle template
|
|
2
|
+
|
|
3
|
+
A starting point for a **user agent-preset bundle** for DeepSeek Harness
|
|
4
|
+
(DSH). (An *agent preset* is a recipe for one kind of agent; in DSI it appears as
|
|
5
|
+
a button in the session filter row.) Copy it, rename the identity, register it on the host profile, restart.
|
|
6
|
+
Full mechanics: `dev/kb/agent-presets/2026-10-06 - The Preset Bundle — Author,
|
|
7
|
+
Register, Remove an Agent Preset.md`. Decision record: ADR-0015 (2026-10-06).
|
|
8
|
+
|
|
9
|
+
## Files
|
|
10
|
+
|
|
11
|
+
- `package.json` — bundle manifest; `dsh.bundle.patch` points the loader at
|
|
12
|
+
the patch file. Rename `name` to `@local/dsh-<my-id>-preset`.
|
|
13
|
+
- `cordis.patch.yml` — inserts the preset row (`id`, `name`, `description`,
|
|
14
|
+
`order`) plus the agent-plane plugin composition (persona, tools, skills,
|
|
15
|
+
goals, plan mode, subagents, workflows, web).
|
|
16
|
+
|
|
17
|
+
## 1. Copy the template
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
cp -R ~/agentic-ai/deepseek-insight/template/dsh-app-dev-preset ~/agentic-ai/<my-id>-preset
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Then in the copy:
|
|
24
|
+
|
|
25
|
+
1. `package.json`: set `"name": "@local/dsh-<my-id>-preset"`.
|
|
26
|
+
2. `cordis.patch.yml`: change the insert row —
|
|
27
|
+
- `id: preset-<my-id>` (entry id),
|
|
28
|
+
- `config.id: <my-id>` (the preset id DSI filters on),
|
|
29
|
+
- `config.name` / `config.description` (roster copy),
|
|
30
|
+
- `config.order` (roster sort; shipped `standard`-class presets sit low).
|
|
31
|
+
3. Trim or keep the `plugins:` list. **Realm rule:** any row consuming
|
|
32
|
+
`compaction` / `toolResultPruner` (or publishing a process-global
|
|
33
|
+
service) must sit inside the matching `cordis:group` with `isolate:` —
|
|
34
|
+
loose rows fail the mount audit (*The Preset That Waited*, 2026-09-12).
|
|
35
|
+
|
|
36
|
+
## 2. Register on the host
|
|
37
|
+
|
|
38
|
+
Edit `~/.dsh/profiles/web/package.json` and add the dependency plus its
|
|
39
|
+
`link:` specifier (mirroring how `@local/dsh-app-dev-preset` is wired):
|
|
40
|
+
|
|
41
|
+
```json
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"@local/dsh-<my-id>-preset": "link:/Users/wharsojo/agentic-ai/<my-id>-preset"
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Then:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
cd ~/.dsh/profiles/web && pnpm install
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Restart `dsh web` — the registry is populated at boot; there is no watcher.
|
|
54
|
+
|
|
55
|
+
## 3. Remove
|
|
56
|
+
|
|
57
|
+
1. Delete the `@local/dsh-<my-id>-preset` entries from
|
|
58
|
+
`~/.dsh/profiles/web/package.json`.
|
|
59
|
+
2. `cd ~/.dsh/profiles/web && pnpm install`.
|
|
60
|
+
3. Restart `dsh web`; delete the bundle directory if desired.
|
|
61
|
+
|
|
62
|
+
Do **not** bother with `~/.dsh/.agent-presets/<id>/` — that legacy directory
|
|
63
|
+
is not read by anything any more.
|
|
64
|
+
|
|
65
|
+
## The prompt part
|
|
66
|
+
|
|
67
|
+
The only prompt text in the bundle is the `persona` row's `config.prefix`
|
|
68
|
+
(`{{model}}` / `{{cwd}}` resolve per session). Everything else is plugin
|
|
69
|
+
composition — capability, not wording.
|