dsh-plugin-github-issues 0.8.0 → 0.8.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/README.md +5 -1
- package/docs/README.zh.md +2 -0
- package/lib/client.js +128 -49
- package/lib/prompt.js +2 -2
- package/lib/prompt.js.map +1 -1
- package/lib/types/prompt.d.ts +2 -2
- package/lib/types/prompt.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -65,7 +65,8 @@ tarball (`dsh-plugin-github-issues.tgz`), installable by path.
|
|
|
65
65
|
|---|---|---|
|
|
66
66
|
| GitHub panel | left rail icon → main panel | organization → repository → **milestone** → assignee → state cascade (remembered across restarts) in one fixed toolbar; a default organization/repository is selected for you, the milestone dropdown lists only that repository's milestones, and only the list scrolls (search stays above it, the detail pane scrolls independently with the **full issue body rendered as sanitized GitHub-flavored Markdown**, milestone progress, labels, priority, assignees, linked/mentioned PRs and checks) |
|
|
67
67
|
| Issues right column | right sidebar tab | the same filtered issue list beside the Conversation, for drag-and-drop handoff |
|
|
68
|
-
| Composer card | inside the input box, above the editor | the staged issue as a draft-attachment-style card (240×64, GitHub glyph, `owner/repo#number`, state + title, hover-only remove). The card is not editable; it keeps its own space above the editor, survives a Workspace switch together with the draft, and is converted into the issue prompt on send |
|
|
68
|
+
| Composer card | inside the input box, above the editor | the staged issue as a draft-attachment-style card (240×64, GitHub glyph, `owner/repo#number`, state + title, hover-only remove). The card is not editable; it keeps its own space above the editor, survives a Workspace switch together with the draft, opens the issue URL when clicked, and is converted into the issue prompt on send |
|
|
69
|
+
| Sent issue reference | in a sent user message | the prompt names the issue as `owner/repo#number`; the conversation renders that token as a clickable GitHub chip, and the metadata stays a Markdown table |
|
|
69
70
|
| Linked chip | composer dock under the input | the Session's linked issue: state dot (green open / red closed) + `owner/repo#number`; the dot refreshes from GitHub on panel refresh, every poll, window focus and whenever the issue appears in the list; click for a detail popover, remove to unlink |
|
|
70
71
|
| Handoff actions | issue detail | one-click **enter Session** (latest link), **new Session for this issue**, plus a linked-Session list with per-Session enter/unlink |
|
|
71
72
|
| GitHub settings | Settings → GitHub | `gh` auth status and scopes, handoff behavior, prompt template |
|
|
@@ -123,6 +124,9 @@ Settings → GitHub → Prompt template. Variables: `{{repo}}`, `{{number}}`, `{
|
|
|
123
124
|
- The default handoff prompt renders its issue metadata as a Markdown table, so it survives as a real
|
|
124
125
|
table in the transcript after sending. Legacy pre-table prompts are upgraded once on load; **Reset
|
|
125
126
|
to default** in Settings restores this template.
|
|
127
|
+
- The card marker ends with a normal space, so typing `/command` or a skill reference after the card
|
|
128
|
+
still reaches the input trigger pipeline; the sent message keeps a clickable issue chip and both the
|
|
129
|
+
composer card and the sent chip open the issue on GitHub.
|
|
126
130
|
- Milestone choices come from the selected repository's full milestone list (open and closed).
|
|
127
131
|
- Priority falls back organization Issue Field → `P0`–`P4` labels when no project field is present.
|
|
128
132
|
- The list polls every 60–120 s while visible; use **Refresh** for an immediate update.
|
package/docs/README.zh.md
CHANGED
|
@@ -107,6 +107,8 @@ dsh plugin --profile <name> add /path/to/dsh-plugin-github-issues
|
|
|
107
107
|
- 详情展示完整正文(不是摘要、也不再限制在固定高度的小框里),按 Markdown 渲染并过滤危险 HTML。
|
|
108
108
|
- 默认交接提示词把 Issue 元信息排成 Markdown 表格,发送后在对话里会渲染成真正的表格;旧版没有表格的
|
|
109
109
|
提示词会在加载时自动升级一次,也可以在设置里点「恢复默认」重新套用。
|
|
110
|
+
- 卡片标记末尾带一个普通空格,所以卡片后面输入 `/命令` 或 skill 引用仍能进入输入触发管线;发送后保留
|
|
111
|
+
可点击的 Issue chip,输入框卡片和消息里的 chip 都会打开 Issue 网址。
|
|
110
112
|
- 里程碑的可选项来自当前仓库的完整里程碑列表(含已关闭)。
|
|
111
113
|
- 优先级回退顺序:组织 Issue Field → `P0`–`P4` 标签(不再读取 Projects v2 项目字段)。
|
|
112
114
|
- 列表可见时每 60–120 秒轮询一次;需要立刻更新点「刷新」。
|
package/lib/client.js
CHANGED
|
@@ -106,9 +106,9 @@ function renderPrompt(issue, template) {
|
|
|
106
106
|
\u2026\uFF08\u5DF2\u622A\u65AD\uFF09`;
|
|
107
107
|
return text2;
|
|
108
108
|
}
|
|
109
|
-
var PENDING_DRAFT_SENTINEL = "\u2063\u200B";
|
|
109
|
+
var PENDING_DRAFT_SENTINEL = "\u2063\u200B ";
|
|
110
110
|
function composeHandoffPrompt(prompt, memo) {
|
|
111
|
-
const extra = memo.split(PENDING_DRAFT_SENTINEL).join("").replace(/[\u200b\u200c\u200d\u2060\ufeff]/g, "").replace(/^\n+/, "").trim();
|
|
111
|
+
const extra = memo.split(PENDING_DRAFT_SENTINEL).join("").replace(/[\u200b\u200c\u200d\u2060\u2063\ufeff]/g, "").replace(/^\n+/, "").trim();
|
|
112
112
|
return extra === "" ? prompt : `${prompt}
|
|
113
113
|
|
|
114
114
|
${extra}`;
|
|
@@ -797,9 +797,10 @@ function GitHubDropZone({ dragging, t, onDrop, onCancel }) {
|
|
|
797
797
|
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
798
798
|
var PENDING_CSS = `
|
|
799
799
|
.ghp3-rail{position:absolute;top:8px;left:10px;right:10px;z-index:2;display:flex;align-items:flex-start;pointer-events:none}
|
|
800
|
-
.ghp3-card{pointer-events:auto;position:relative;display:inline-flex;align-items:center;
|
|
800
|
+
.ghp3-card{pointer-events:auto;position:relative;display:inline-flex;align-items:center;box-sizing:border-box;width:240px;max-width:100%;height:64px;border:0.5px solid var(--dsw-alias-border-l2,rgba(0,0,0,.12));border-radius:var(--dsw-radius-lg,12px);background:var(--dsw-specific-input-major,var(--dsw-alias-bg-base));color:var(--dsw-alias-label-primary);text-align:left;font-family:inherit}
|
|
801
801
|
.ghp3-card:hover{border-color:var(--dsw-alias-border-l3,rgba(0,0,0,.18))}
|
|
802
|
-
.ghp3-card:focus-
|
|
802
|
+
.ghp3-card:focus-within{outline:2px solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:1px}
|
|
803
|
+
.ghp3-link{display:inline-flex;align-items:center;gap:10px;box-sizing:border-box;width:100%;height:100%;padding:0 12px;color:inherit;text-decoration:none;border-radius:inherit}
|
|
803
804
|
.ghp3-icon{flex:none;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--dsw-radius-md,8px);background:color-mix(in srgb,var(--dsw-alias-state-business-primary,#4d6bfe) 12%,transparent);color:var(--dsw-alias-state-business-primary,#4d6bfe)}
|
|
804
805
|
.ghp3-body{display:flex;flex-direction:column;flex:1;min-width:0;padding:8px 0}
|
|
805
806
|
.ghp3-name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:500;line-height:22px;color:var(--dsw-alias-label-primary)}
|
|
@@ -811,53 +812,46 @@ var PENDING_CSS = `
|
|
|
811
812
|
@media (prefers-reduced-motion:reduce){.ghp3-remove{transition:none}}
|
|
812
813
|
`.trim();
|
|
813
814
|
function GitHubPendingCard(props) {
|
|
814
|
-
const { card, t,
|
|
815
|
+
const { card, t, onRemove } = props;
|
|
815
816
|
const ref = `${card.repo}#${String(card.number)}`;
|
|
816
817
|
const state = t(stateLabelKey(card.state));
|
|
817
818
|
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "ghp3-rail", "data-github-pending": true, children: [
|
|
818
819
|
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(StyleSheet, { chunks: [CONTROLS_CSS, PENDING_CSS] }),
|
|
819
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
820
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "ghp3-card", children: [
|
|
821
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
822
|
+
"a",
|
|
823
|
+
{
|
|
824
|
+
className: "ghp3-link",
|
|
825
|
+
href: card.url,
|
|
826
|
+
target: "_blank",
|
|
827
|
+
rel: "noreferrer noopener",
|
|
828
|
+
"aria-label": `${ref} \xB7 ${card.title}`,
|
|
829
|
+
title: `${ref} \xB7 ${card.title}
|
|
827
830
|
${t("pending.tip")}`,
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("span", { className: "ghp3-body", children: [
|
|
838
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "ghp3-name", children: ref }),
|
|
839
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("span", { className: "ghp3-meta", children: [
|
|
840
|
-
state,
|
|
841
|
-
" \xB7 ",
|
|
842
|
-
card.title === "" ? t("pending.noTitle") : card.title
|
|
831
|
+
children: [
|
|
832
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "ghp3-icon", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(GitHubIcon, { size: 16 }) }),
|
|
833
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("span", { className: "ghp3-body", children: [
|
|
834
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "ghp3-name", children: ref }),
|
|
835
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("span", { className: "ghp3-meta", children: [
|
|
836
|
+
state,
|
|
837
|
+
" \xB7 ",
|
|
838
|
+
card.title === "" ? t("pending.noTitle") : card.title
|
|
839
|
+
] })
|
|
843
840
|
] })
|
|
844
|
-
]
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
]
|
|
859
|
-
}
|
|
860
|
-
)
|
|
841
|
+
]
|
|
842
|
+
}
|
|
843
|
+
),
|
|
844
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
845
|
+
"button",
|
|
846
|
+
{
|
|
847
|
+
type: "button",
|
|
848
|
+
className: "ghp3-remove",
|
|
849
|
+
"aria-label": t("dock.removeDraft"),
|
|
850
|
+
onClick: onRemove,
|
|
851
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(CloseGlyph, { size: 12 })
|
|
852
|
+
}
|
|
853
|
+
)
|
|
854
|
+
] })
|
|
861
855
|
] });
|
|
862
856
|
}
|
|
863
857
|
|
|
@@ -5359,6 +5353,8 @@ function PendingOverlayHost({ store, t, sessionId, useInput, inputActions }) {
|
|
|
5359
5353
|
const [pending, setPending] = (0, import_react5.useState)(void 0);
|
|
5360
5354
|
const sending = (0, import_react5.useRef)(false);
|
|
5361
5355
|
const stagedFor = (0, import_react5.useRef)(void 0);
|
|
5356
|
+
const repairedFor = (0, import_react5.useRef)(void 0);
|
|
5357
|
+
const sawSentinel = (0, import_react5.useRef)(false);
|
|
5362
5358
|
const input = useInput === void 0 ? void 0 : useInput((state) => state);
|
|
5363
5359
|
const latestInput = (0, import_react5.useRef)(input);
|
|
5364
5360
|
latestInput.current = input;
|
|
@@ -5384,8 +5380,19 @@ function PendingOverlayHost({ store, t, sessionId, useInput, inputActions }) {
|
|
|
5384
5380
|
}
|
|
5385
5381
|
}, [card, draft, inputActions, pending?.id, sessionId, snapshot.pendingHandoffSession]);
|
|
5386
5382
|
(0, import_react5.useEffect)(() => {
|
|
5387
|
-
if (
|
|
5388
|
-
|
|
5383
|
+
if (draft.includes(PENDING_DRAFT_SENTINEL)) {
|
|
5384
|
+
sawSentinel.current = true;
|
|
5385
|
+
return;
|
|
5386
|
+
}
|
|
5387
|
+
if (pending === void 0 || inputActions === void 0 || sending.current) return;
|
|
5388
|
+
if (draft === "") return;
|
|
5389
|
+
if (repairedFor.current === draft) return;
|
|
5390
|
+
repairedFor.current = draft;
|
|
5391
|
+
inputActions.setDraft(`${PENDING_DRAFT_SENTINEL}${draft}`);
|
|
5392
|
+
}, [draft, inputActions, pending]);
|
|
5393
|
+
(0, import_react5.useEffect)(() => {
|
|
5394
|
+
if (pending === void 0 || draft !== "" || !sawSentinel.current || sending.current) return;
|
|
5395
|
+
setPending(void 0);
|
|
5389
5396
|
}, [draft, pending]);
|
|
5390
5397
|
(0, import_react5.useEffect)(() => {
|
|
5391
5398
|
if (pending === void 0) return;
|
|
@@ -5466,7 +5473,6 @@ function PendingOverlayHost({ store, t, sessionId, useInput, inputActions }) {
|
|
|
5466
5473
|
{
|
|
5467
5474
|
card: pending,
|
|
5468
5475
|
t,
|
|
5469
|
-
onOpenPanel: () => store.openInPanel(pending),
|
|
5470
5476
|
onRemove: () => {
|
|
5471
5477
|
inputActions?.setDraft("");
|
|
5472
5478
|
setPending(void 0);
|
|
@@ -5925,6 +5931,34 @@ function remoteContribution() {
|
|
|
5925
5931
|
};
|
|
5926
5932
|
}
|
|
5927
5933
|
|
|
5934
|
+
// src/client/reference.ts
|
|
5935
|
+
var ISSUE_TOKEN = /(?<![A-Za-z0-9_.\-/])([A-Za-z0-9_.\-]+\/[A-Za-z0-9_.\-]+)#([1-9][0-9]*)/g;
|
|
5936
|
+
var GITHUB_ISSUE_RULE = {
|
|
5937
|
+
id: "github-issue",
|
|
5938
|
+
order: 40,
|
|
5939
|
+
match(text2, from) {
|
|
5940
|
+
ISSUE_TOKEN.lastIndex = from;
|
|
5941
|
+
for (let match = ISSUE_TOKEN.exec(text2); match !== null; match = ISSUE_TOKEN.exec(text2)) {
|
|
5942
|
+
const repo = match[1];
|
|
5943
|
+
const numberText = match[2];
|
|
5944
|
+
if (repo === void 0 || numberText === void 0) continue;
|
|
5945
|
+
const number = Number(numberText);
|
|
5946
|
+
if (!Number.isInteger(number) || number <= 0) continue;
|
|
5947
|
+
return {
|
|
5948
|
+
id: "github-issue",
|
|
5949
|
+
start: match.index,
|
|
5950
|
+
end: match.index + match[0].length,
|
|
5951
|
+
data: {
|
|
5952
|
+
repo,
|
|
5953
|
+
number,
|
|
5954
|
+
url: `https://github.com/${repo}/issues/${String(number)}`
|
|
5955
|
+
}
|
|
5956
|
+
};
|
|
5957
|
+
}
|
|
5958
|
+
return void 0;
|
|
5959
|
+
}
|
|
5960
|
+
};
|
|
5961
|
+
|
|
5928
5962
|
// src/client/result.ts
|
|
5929
5963
|
var RemoteRefusal = class extends Error {
|
|
5930
5964
|
code;
|
|
@@ -6543,7 +6577,10 @@ var GitHubStore = class {
|
|
|
6543
6577
|
try {
|
|
6544
6578
|
const sessionId = await uiWorkspace.connectWorkspace(workspaceId);
|
|
6545
6579
|
this.update({ pendingHandoff: card, pendingHandoffSession: sessionId });
|
|
6546
|
-
uiWorkspace.startSession(workspaceId, {
|
|
6580
|
+
uiWorkspace.startSession(workspaceId, {
|
|
6581
|
+
prompt: PENDING_DRAFT_SENTINEL,
|
|
6582
|
+
whenDraftExists: "replace"
|
|
6583
|
+
});
|
|
6547
6584
|
} catch (error) {
|
|
6548
6585
|
this.update({ error: asPanelError(error) });
|
|
6549
6586
|
}
|
|
@@ -6790,6 +6827,37 @@ var GitHubStore = class {
|
|
|
6790
6827
|
}
|
|
6791
6828
|
};
|
|
6792
6829
|
|
|
6830
|
+
// src/client/views/IssueReference.tsx
|
|
6831
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
6832
|
+
var ISSUE_REFERENCE_CSS = `
|
|
6833
|
+
.ghx-inline-issue{display:inline-flex;align-items:center;gap:4px;box-sizing:border-box;height:20px;max-width:100%;padding:0 6px;border-radius:999px;background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-secondary);font-family:var(--dsh-font-family-code,ui-monospace,SFMono-Regular,Menlo,monospace);font-size:12px;line-height:18px;text-decoration:none;vertical-align:middle}
|
|
6834
|
+
.ghx-inline-issue:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}
|
|
6835
|
+
.ghx-inline-issue:focus-visible{outline:2px solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:1px}
|
|
6836
|
+
.ghx-inline-issue-label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
|
|
6837
|
+
`.trim();
|
|
6838
|
+
function GitHubIssueReference(props) {
|
|
6839
|
+
const { repo, number, url } = props.node.data;
|
|
6840
|
+
const label = `${repo.split("/")[1] ?? repo}#${String(number)}`;
|
|
6841
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_jsx_runtime12.Fragment, { children: [
|
|
6842
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(StyleSheet, { chunks: [ISSUE_REFERENCE_CSS] }),
|
|
6843
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
|
|
6844
|
+
"a",
|
|
6845
|
+
{
|
|
6846
|
+
className: "ghx-inline-issue",
|
|
6847
|
+
href: url,
|
|
6848
|
+
target: "_blank",
|
|
6849
|
+
rel: "noreferrer noopener",
|
|
6850
|
+
title: `${repo}#${String(number)}`,
|
|
6851
|
+
"aria-label": `${repo}#${String(number)}`,
|
|
6852
|
+
children: [
|
|
6853
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(GitHubIcon, { size: 12 }),
|
|
6854
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "ghx-inline-issue-label", children: label })
|
|
6855
|
+
]
|
|
6856
|
+
}
|
|
6857
|
+
)
|
|
6858
|
+
] });
|
|
6859
|
+
}
|
|
6860
|
+
|
|
6793
6861
|
// src/client/index.tsx
|
|
6794
6862
|
var PANEL_ID = "github";
|
|
6795
6863
|
var SETTINGS_ID = "github-issues";
|
|
@@ -6854,6 +6922,17 @@ function apply3(ctx) {
|
|
|
6854
6922
|
locale: NS,
|
|
6855
6923
|
inject: () => ({ store, t })
|
|
6856
6924
|
}, DropZoneHost));
|
|
6925
|
+
ctx.inject(["uiConversation"], (scoped) => {
|
|
6926
|
+
const conversation = scoped.uiConversation;
|
|
6927
|
+
if (conversation?.userText === void 0) return;
|
|
6928
|
+
scoped.effect(() => conversation.userText.register(GITHUB_ISSUE_RULE), "github-issues: user-text rule");
|
|
6929
|
+
scoped.slots.inject("conversation.user.text.node", () => scoped.slots.register({
|
|
6930
|
+
name: "conversation.user.text.node",
|
|
6931
|
+
key: "github-issue",
|
|
6932
|
+
priority: 100,
|
|
6933
|
+
locale: NS
|
|
6934
|
+
}, GitHubIssueReference));
|
|
6935
|
+
});
|
|
6857
6936
|
ctx.inject(["sidebarRightTabs"], (scoped) => {
|
|
6858
6937
|
const tabs = scoped.sidebarRightTabs;
|
|
6859
6938
|
scoped.effect(() => tabs.register({
|
package/lib/prompt.js
CHANGED
|
@@ -78,7 +78,7 @@ export function renderPrompt(issue, template) {
|
|
|
78
78
|
* non-whitespace, so the composer treats the draft as occupied without showing
|
|
79
79
|
* characters.
|
|
80
80
|
*/
|
|
81
|
-
export const PENDING_DRAFT_SENTINEL = '\u2063\u200b';
|
|
81
|
+
export const PENDING_DRAFT_SENTINEL = '\u2063\u200b ';
|
|
82
82
|
/** Backwards-compatible name for the marker the old overlay used. */
|
|
83
83
|
export const EMPTY_DRAFT_HOLD = PENDING_DRAFT_SENTINEL;
|
|
84
84
|
/**
|
|
@@ -94,7 +94,7 @@ export const EMPTY_DRAFT_HOLD = PENDING_DRAFT_SENTINEL;
|
|
|
94
94
|
export function composeHandoffPrompt(prompt, memo) {
|
|
95
95
|
const extra = memo
|
|
96
96
|
.split(PENDING_DRAFT_SENTINEL).join('')
|
|
97
|
-
.replace(/[\u200b\u200c\u200d\u2060\ufeff]/g, '')
|
|
97
|
+
.replace(/[\u200b\u200c\u200d\u2060\u2063\ufeff]/g, '')
|
|
98
98
|
.replace(/^\n+/, '')
|
|
99
99
|
.trim();
|
|
100
100
|
return extra === '' ? prompt : `${prompt}\n\n${extra}`;
|
package/lib/prompt.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"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"}
|
package/lib/types/prompt.d.ts
CHANGED
|
@@ -24,9 +24,9 @@ export declare function renderPrompt(issue: PromptIssue, template: string): stri
|
|
|
24
24
|
* non-whitespace, so the composer treats the draft as occupied without showing
|
|
25
25
|
* characters.
|
|
26
26
|
*/
|
|
27
|
-
export declare const PENDING_DRAFT_SENTINEL = "\u2063\u200B";
|
|
27
|
+
export declare const PENDING_DRAFT_SENTINEL = "\u2063\u200B ";
|
|
28
28
|
/** Backwards-compatible name for the marker the old overlay used. */
|
|
29
|
-
export declare const EMPTY_DRAFT_HOLD = "\u2063\u200B";
|
|
29
|
+
export declare const EMPTY_DRAFT_HOLD = "\u2063\u200B ";
|
|
30
30
|
/**
|
|
31
31
|
* Compose the message a pending issue card sends.
|
|
32
32
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AA0CpD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAezE;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AA0CpD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAezE;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,kBAAkB,CAAA;AAErD,qEAAqE;AACrE,eAAO,MAAM,gBAAgB,kBAAyB,CAAA;AAEtD;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAOzE"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-plugin-github-issues",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.2",
|
|
4
4
|
"description": "Browse GitHub issues, milestones, labels, priority, and linked PR status inside DeepSeek Harness, and hand an issue to the agent by dragging it into the composer.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"dsh-plugin",
|