@canhta/dsh-autopilot 0.1.0-alpha.1 → 0.1.0-alpha.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 CHANGED
@@ -3,6 +3,7 @@
3
3
  # Autopilot
4
4
 
5
5
  [![License: MIT](https://img.shields.io/badge/license-MIT-78dba9?style=flat-square)](LICENSE)
6
+ [![npm: alpha](https://img.shields.io/npm/v/%40canhta%2Fdsh-autopilot/alpha?style=flat-square&label=npm)](https://www.npmjs.com/package/@canhta/dsh-autopilot)
6
7
  [![CI](https://img.shields.io/github/actions/workflow/status/canhta/dsh-autopilot/ci.yml?branch=main&style=flat-square&label=CI)](https://github.com/canhta/dsh-autopilot/actions/workflows/ci.yml)
7
8
  [![Status: alpha](https://img.shields.io/badge/status-alpha-d8b46a?style=flat-square)](https://github.com/canhta/dsh-autopilot/releases)
8
9
  [![Built for DeepSeek Harness](https://img.shields.io/badge/built_for-DeepSeek_Harness-6fa8dc?style=flat-square)](https://github.com/deepseek-ai/deepseek-harness)
@@ -53,7 +54,7 @@ Provider failures are isolated from the durable run result. For example, a notif
53
54
  Requires an existing DSH installation.
54
55
 
55
56
  ```sh
56
- dsh plugin --profile web add https://github.com/canhta/dsh-autopilot/releases/download/v0.1.0-alpha.1/canhta-dsh-autopilot-0.1.0-alpha.1.tgz
57
+ dsh plugin --profile web add @canhta/dsh-autopilot@alpha
57
58
  dsh --profile web
58
59
  ```
59
60
 
@@ -79,6 +80,50 @@ Open **Settings → Autopilot** to set the tracker and code-host bindings, sched
79
80
 
80
81
  Fresh installs keep execution disabled. Before enabling it, select the DSH default Agent preset and model, then configure each provider's DSH Settings namespace and official MCP server in the same profile. Keep vendor OAuth, model keys and tokens in DSH Credentials; Autopilot does not create a second authentication flow.
81
82
 
83
+ <details>
84
+ <summary>Connect the GitHub and Jira MCP servers</summary>
85
+
86
+ Autopilot's providers call the vendor's **official** MCP server through DSH's [`dsh-mcp-client`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/mcp/mcp-client/README.md) plugin, not a third-party clone. Add one entry per server to the profile's patch layer (`$DSH_HOME/profiles/<profile>/cordis.patch.yml`), then restart the profile (`dsh --profile web`).
87
+
88
+ **GitHub** — the official remote server needs no local install or Docker:
89
+
90
+ ```yaml
91
+ - insert:
92
+ - id: mcp-github
93
+ name: '@deepseek-ai/dsh-mcp-client'
94
+ config:
95
+ serverName: github
96
+ transport: streamable-http
97
+ url: https://api.githubcopilot.com/mcp/
98
+ headers:
99
+ Authorization: !!js '`Bearer ${process.env.GITHUB_TOKEN}`'
100
+ ```
101
+
102
+ Create a token at `github.com/settings/personal-access-tokens/new` with `Contents`, `Issues` and `Pull requests` read/write, then set `GITHUB_TOKEN` in your environment before starting DSH.
103
+
104
+ **Jira** — the Jira provider's MCP contracts target Atlassian's official **Rovo MCP Server**, not a community Jira MCP server. `serverName` must be `atlassian` (the provider's default):
105
+
106
+ ```yaml
107
+ - insert:
108
+ - id: mcp-jira
109
+ name: '@deepseek-ai/dsh-mcp-client'
110
+ config:
111
+ serverName: atlassian
112
+ transport: streamable-http
113
+ # tools=all: Rovo only advertises a "primary" tool subset by default and expects
114
+ # on-demand discovery, which dsh-mcp-client's one-time tools/list bridge doesn't do.
115
+ url: https://mcp.atlassian.com/v2/mcp?tools=all
116
+ headers:
117
+ Authorization: !!js >-
118
+ `Basic ${Buffer.from(`${process.env.JIRA_EMAIL}:${process.env.JIRA_API_TOKEN}`).toString('base64')}`
119
+ ```
120
+
121
+ Create an API token at `id.atlassian.com/manage-profile/security/api-tokens`, then set `JIRA_EMAIL` (your Atlassian login) and `JIRA_API_TOKEN`. An org admin must also enable **API token authentication** for the Rovo MCP Server (Atlassian Administration → Rovo → Rovo MCP server → Authentication) — OAuth-only organizations can't use this Basic-auth header form and need a different client integration.
122
+
123
+ Once connected, each provider's Settings card in Autopilot reports a live `lookup` status instead of a placeholder — a real, cached probe against that provider's declared MCP tools, not a static message.
124
+
125
+ </details>
126
+
82
127
  For a systemd-managed VPS installation and backup/restore procedure, see [One-VPS operation](docs/deployment.md).
83
128
 
84
129
  ## Contribute
@@ -29,6 +29,13 @@ export declare const operationsQuerySchema: z.ZodObject<{
29
29
  attentionOnly: z.ZodOptional<z.ZodBoolean>;
30
30
  }, z.core.$strip>;
31
31
  export type OperationsQuery = z.infer<typeof operationsQuerySchema>;
32
+ export declare const providerLookupSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
33
+ status: z.ZodLiteral<"available">;
34
+ }, z.core.$strip>, z.ZodObject<{
35
+ status: z.ZodLiteral<"unavailable">;
36
+ reason: z.ZodString;
37
+ }, z.core.$strip>], "status">;
38
+ export type ProviderLookupView = z.infer<typeof providerLookupSchema>;
32
39
  export declare const providerViewSchema: z.ZodObject<{
33
40
  id: z.ZodString;
34
41
  displayName: z.ZodString;
package/lib/client.js CHANGED
@@ -5303,6 +5303,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5303
5303
  states: array(runLifecycleSchema).max(9).optional(),
5304
5304
  attentionOnly: boolean().optional()
5305
5305
  });
5306
+ const providerLookupSchema = discriminatedUnion("status", [object({ status: literal("available") }), object({
5307
+ status: literal("unavailable"),
5308
+ reason: string()
5309
+ })]);
5306
5310
  const providerViewSchema = object({
5307
5311
  id: string(),
5308
5312
  displayName: string(),
@@ -5320,10 +5324,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5320
5324
  label: string(),
5321
5325
  ref: string()
5322
5326
  })),
5323
- lookup: discriminatedUnion("status", [object({ status: literal("available") }), object({
5324
- status: literal("unavailable"),
5325
- reason: string()
5326
- })])
5327
+ lookup: providerLookupSchema
5327
5328
  }), object({
5328
5329
  status: literal("unavailable"),
5329
5330
  reason: string()
@@ -6002,9 +6003,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
6002
6003
  configureHint: "请先在此设置页面选择已安装的提供方,再启用调度器。"
6003
6004
  };
6004
6005
  //#endregion
6005
- //#region \0dsh-autopilot-css:/Users/canh/Solo/Repo/dsh-autopilot/src/client/operations.module.css.mjs
6006
- const css$1 = ".xrrV_G_page{box-sizing:border-box;min-width:0;height:100%;color:var(--dsw-alias-label-primary,#202124);background:var(--dsw-alias-bg-layer-1,#fff);padding:20px 24px;font-size:14px;overflow:auto}.xrrV_G_header,.xrrV_G_headerActions,.xrrV_G_toolbar,.xrrV_G_detailHeader,.xrrV_G_detailActions{align-items:center;gap:8px;display:flex}.xrrV_G_header{justify-content:space-between;gap:24px;margin-bottom:14px}.xrrV_G_header h1{margin:0;font-size:20px;line-height:1.3}.xrrV_G_header p,.xrrV_G_summary>p{color:var(--dsw-alias-label-secondary,#5f6368);margin:4px 0 0}.xrrV_G_headerActions{flex-wrap:wrap;justify-content:flex-end}.xrrV_G_connectionNotice,.xrrV_G_attention,.xrrV_G_command,.xrrV_G_notice,.xrrV_G_blocker{border:1px solid var(--dsw-alias-border-l3,#d9dce1);border-radius:8px;margin:8px 0;padding:10px 12px}.xrrV_G_attention,.xrrV_G_blocker{border-color:var(--dsw-alias-state-warn-primary,#a15c00);color:var(--dsw-alias-state-warn-label,#713f00)}.xrrV_G_connectionNotice,.xrrV_G_command,.xrrV_G_notice{background:var(--dsw-alias-bg-layer-2,#f7f8fa)}.xrrV_G_tabs{border-bottom:1px solid var(--dsw-alias-border-l3,#d9dce1);gap:4px;margin-top:16px;display:flex;overflow-x:auto}.xrrV_G_tabs button{appearance:none;color:var(--dsw-alias-label-secondary,#5f6368);white-space:nowrap;cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;padding:10px 12px}.xrrV_G_tabs button:hover{background:var(--dsw-alias-interactive-bg-hover,#f1f3f4)}.xrrV_G_tabs button:focus-visible,.xrrV_G_runLink:focus-visible{outline:2px solid var(--dsw-alias-brand-primary,#315efb);outline-offset:2px}.xrrV_G_tabs .xrrV_G_activeTab{border-bottom-color:var(--dsw-alias-brand-primary,#315efb);color:var(--dsw-alias-label-primary,#202124)}.xrrV_G_content{min-width:0;padding-top:16px}.xrrV_G_runsOnly,.xrrV_G_split{min-width:0}.xrrV_G_split{grid-template-columns:minmax(480px,1fr) minmax(380px,460px);gap:16px;display:grid}.xrrV_G_listRegion{min-width:0}.xrrV_G_toolbar{flex-wrap:wrap;margin-bottom:12px}.xrrV_G_toolbar select{border:1px solid var(--dsw-alias-border-l4,#c7cbd1);min-height:34px;color:inherit;background:var(--dsw-alias-bg-layer-1,#fff);border-radius:8px;padding:0 10px}.xrrV_G_checkbox{align-items:center;gap:6px;display:inline-flex}.xrrV_G_resultCount{color:var(--dsw-alias-label-tertiary,#767b83);font-variant-numeric:tabular-nums;margin-left:auto}.xrrV_G_tableScroll{max-width:100%;overflow-x:auto}.xrrV_G_table{border-collapse:collapse;table-layout:fixed;width:100%}.xrrV_G_table th{color:var(--dsw-alias-label-tertiary,#767b83);text-align:left;padding:8px 10px;font-size:12px;font-weight:600}.xrrV_G_table th:first-child{width:30%}.xrrV_G_table th:nth-child(2){width:25%}.xrrV_G_table td{border-top:1px solid var(--dsw-alias-border-l3,#e2e4e8);vertical-align:middle;height:48px;padding:8px 10px}.xrrV_G_table tr[data-selected=true]{background:var(--dsw-alias-interactive-bg-active,#edf2ff)}.xrrV_G_runLink{width:100%;min-width:0;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;padding:0;display:grid}.xrrV_G_runLink span,.xrrV_G_stateLabel>span,.xrrV_G_worktreeList code{color:var(--dsw-alias-label-secondary,#5f6368);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.xrrV_G_stateLabel{justify-items:start;gap:3px;display:grid}.xrrV_G_numeric{text-align:right;font-variant-numeric:tabular-nums}.xrrV_G_detail{border-left:1px solid var(--dsw-alias-border-l3,#d9dce1);min-width:0;padding-left:16px}.xrrV_G_detailHeader{justify-content:space-between;align-items:flex-start;margin-top:12px}.xrrV_G_detailHeader h2,.xrrV_G_summary h2,.xrrV_G_empty h2{margin:0;font-size:17px}.xrrV_G_detailHeader p,.xrrV_G_reason{margin:4px 0 10px}.xrrV_G_detail details{border-top:1px solid var(--dsw-alias-border-l3,#d9dce1);padding:12px 0}.xrrV_G_detail summary{cursor:pointer;font-weight:600}.xrrV_G_longText{white-space:pre-wrap;overflow-wrap:anywhere}.xrrV_G_timeline{gap:10px;padding-left:20px;display:grid}.xrrV_G_timeline li{gap:2px;display:grid}.xrrV_G_timeline time,.xrrV_G_timeline span{color:var(--dsw-alias-label-tertiary,#767b83);font-size:12px}.xrrV_G_resource{grid-template-columns:100px minmax(0,1fr);gap:8px;margin-top:8px;display:grid}.xrrV_G_resource code,.xrrV_G_resource span{overflow-wrap:anywhere}.xrrV_G_summary,.xrrV_G_empty{max-width:820px;padding:16px 0}.xrrV_G_summary dl{gap:0;margin:16px 0;display:grid}.xrrV_G_summary dl>div{border-top:1px solid var(--dsw-alias-border-l3,#d9dce1);grid-template-columns:minmax(160px,1fr) minmax(180px,2fr);gap:12px;padding:10px 0;display:grid}.xrrV_G_summary dt{color:var(--dsw-alias-label-secondary,#5f6368)}.xrrV_G_summary dd{margin:0}.xrrV_G_empty{text-align:center;color:var(--dsw-alias-label-secondary,#5f6368)}.xrrV_G_worktreeList{gap:0;padding:0;list-style:none;display:grid}.xrrV_G_worktreeList li{border-top:1px solid var(--dsw-alias-border-l3,#d9dce1);justify-content:space-between;gap:16px;padding:12px 0;display:flex}.xrrV_G_worktreeList li>div{min-width:0;display:grid}.xrrV_G_success{color:var(--dsw-alias-state-success-primary,#0a7a45)}.xrrV_G_error{color:var(--dsw-alias-state-error-primary,#c62828)}@media (width<=1000px){.xrrV_G_split{grid-template-columns:1fr}.xrrV_G_detail{border-top:1px solid var(--dsw-alias-border-l3,#d9dce1);border-left:0;padding-top:16px;padding-left:0}}@media (width<=640px){.xrrV_G_page{padding:16px 12px}.xrrV_G_header{flex-direction:column;align-items:flex-start}.xrrV_G_headerActions{justify-content:flex-start}.xrrV_G_table th:nth-child(n+3),.xrrV_G_table td:nth-child(n+3){display:none}.xrrV_G_table th:first-child{width:52%}.xrrV_G_table th:nth-child(2){width:48%}.xrrV_G_toolbar>span:first-child{width:100%}.xrrV_G_resultCount{margin-left:0}}@media (prefers-reduced-motion:reduce){.xrrV_G_page *{scroll-behavior:auto;transition:none}}";
6007
- const tagId$1 = "@canhta/dsh-autopilot/operations.module.css";
6006
+ //#region \0dsh-autopilot-css:C:\Users\Admin\Projects\Indie\dsh-autopilot\src\client\operations.module.css.mjs
6007
+ const css$1 = ".gXqZ8G_page{box-sizing:border-box;min-width:0;height:100%;color:var(--dsw-alias-label-primary,#202124);background:var(--dsw-alias-bg-layer-1,#fff);padding:20px 24px;font-size:14px;overflow:auto}.gXqZ8G_header,.gXqZ8G_headerActions,.gXqZ8G_toolbar,.gXqZ8G_detailHeader,.gXqZ8G_detailActions{align-items:center;gap:8px;display:flex}.gXqZ8G_header{justify-content:space-between;gap:24px;margin-bottom:14px}.gXqZ8G_header h1{margin:0;font-size:20px;line-height:1.3}.gXqZ8G_header p,.gXqZ8G_summary>p{color:var(--dsw-alias-label-secondary,#5f6368);margin:4px 0 0}.gXqZ8G_headerActions{flex-wrap:wrap;justify-content:flex-end}.gXqZ8G_connectionNotice,.gXqZ8G_attention,.gXqZ8G_command,.gXqZ8G_notice,.gXqZ8G_blocker{border:1px solid var(--dsw-alias-border-l3,#d9dce1);border-radius:8px;margin:8px 0;padding:10px 12px}.gXqZ8G_attention,.gXqZ8G_blocker{border-color:var(--dsw-alias-state-warn-primary,#a15c00);color:var(--dsw-alias-state-warn-label,#713f00)}.gXqZ8G_connectionNotice,.gXqZ8G_command,.gXqZ8G_notice{background:var(--dsw-alias-bg-layer-2,#f7f8fa)}.gXqZ8G_tabs{border-bottom:1px solid var(--dsw-alias-border-l3,#d9dce1);gap:4px;margin-top:16px;display:flex;overflow-x:auto}.gXqZ8G_tabs button{appearance:none;color:var(--dsw-alias-label-secondary,#5f6368);white-space:nowrap;cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;padding:10px 12px}.gXqZ8G_tabs button:hover{background:var(--dsw-alias-interactive-bg-hover,#f1f3f4)}.gXqZ8G_tabs button:focus-visible,.gXqZ8G_runLink:focus-visible{outline:2px solid var(--dsw-alias-brand-primary,#315efb);outline-offset:2px}.gXqZ8G_tabs .gXqZ8G_activeTab{border-bottom-color:var(--dsw-alias-brand-primary,#315efb);color:var(--dsw-alias-label-primary,#202124)}.gXqZ8G_content{min-width:0;padding-top:16px}.gXqZ8G_runsOnly,.gXqZ8G_split{min-width:0}.gXqZ8G_split{grid-template-columns:minmax(480px,1fr) minmax(380px,460px);gap:16px;display:grid}.gXqZ8G_listRegion{min-width:0}.gXqZ8G_toolbar{flex-wrap:wrap;margin-bottom:12px}.gXqZ8G_toolbar select{border:1px solid var(--dsw-alias-border-l4,#c7cbd1);min-height:34px;color:inherit;background:var(--dsw-alias-bg-layer-1,#fff);border-radius:8px;padding:0 10px}.gXqZ8G_checkbox{align-items:center;gap:6px;display:inline-flex}.gXqZ8G_resultCount{color:var(--dsw-alias-label-tertiary,#767b83);font-variant-numeric:tabular-nums;margin-left:auto}.gXqZ8G_tableScroll{max-width:100%;overflow-x:auto}.gXqZ8G_table{border-collapse:collapse;table-layout:fixed;width:100%}.gXqZ8G_table th{color:var(--dsw-alias-label-tertiary,#767b83);text-align:left;padding:8px 10px;font-size:12px;font-weight:600}.gXqZ8G_table th:first-child{width:30%}.gXqZ8G_table th:nth-child(2){width:25%}.gXqZ8G_table td{border-top:1px solid var(--dsw-alias-border-l3,#e2e4e8);vertical-align:middle;height:48px;padding:8px 10px}.gXqZ8G_table tr[data-selected=true]{background:var(--dsw-alias-interactive-bg-active,#edf2ff)}.gXqZ8G_runLink{width:100%;min-width:0;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;padding:0;display:grid}.gXqZ8G_runLink span,.gXqZ8G_stateLabel>span,.gXqZ8G_worktreeList code{color:var(--dsw-alias-label-secondary,#5f6368);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.gXqZ8G_stateLabel{justify-items:start;gap:3px;display:grid}.gXqZ8G_numeric{text-align:right;font-variant-numeric:tabular-nums}.gXqZ8G_detail{border-left:1px solid var(--dsw-alias-border-l3,#d9dce1);min-width:0;padding-left:16px}.gXqZ8G_detailHeader{justify-content:space-between;align-items:flex-start;margin-top:12px}.gXqZ8G_detailHeader h2,.gXqZ8G_summary h2,.gXqZ8G_empty h2{margin:0;font-size:17px}.gXqZ8G_detailHeader p,.gXqZ8G_reason{margin:4px 0 10px}.gXqZ8G_detail details{border-top:1px solid var(--dsw-alias-border-l3,#d9dce1);padding:12px 0}.gXqZ8G_detail summary{cursor:pointer;font-weight:600}.gXqZ8G_longText{white-space:pre-wrap;overflow-wrap:anywhere}.gXqZ8G_timeline{gap:10px;padding-left:20px;display:grid}.gXqZ8G_timeline li{gap:2px;display:grid}.gXqZ8G_timeline time,.gXqZ8G_timeline span{color:var(--dsw-alias-label-tertiary,#767b83);font-size:12px}.gXqZ8G_resource{grid-template-columns:100px minmax(0,1fr);gap:8px;margin-top:8px;display:grid}.gXqZ8G_resource code,.gXqZ8G_resource span{overflow-wrap:anywhere}.gXqZ8G_summary,.gXqZ8G_empty{max-width:820px;padding:16px 0}.gXqZ8G_summary dl{gap:0;margin:16px 0;display:grid}.gXqZ8G_summary dl>div{border-top:1px solid var(--dsw-alias-border-l3,#d9dce1);grid-template-columns:minmax(160px,1fr) minmax(180px,2fr);gap:12px;padding:10px 0;display:grid}.gXqZ8G_summary dt{color:var(--dsw-alias-label-secondary,#5f6368)}.gXqZ8G_summary dd{margin:0}.gXqZ8G_empty{text-align:center;color:var(--dsw-alias-label-secondary,#5f6368)}.gXqZ8G_worktreeList{gap:0;padding:0;list-style:none;display:grid}.gXqZ8G_worktreeList li{border-top:1px solid var(--dsw-alias-border-l3,#d9dce1);justify-content:space-between;gap:16px;padding:12px 0;display:flex}.gXqZ8G_worktreeList li>div{min-width:0;display:grid}.gXqZ8G_success{color:var(--dsw-alias-state-success-primary,#0a7a45)}.gXqZ8G_error{color:var(--dsw-alias-state-error-primary,#c62828)}@media (width<=1000px){.gXqZ8G_split{grid-template-columns:1fr}.gXqZ8G_detail{border-top:1px solid var(--dsw-alias-border-l3,#d9dce1);border-left:0;padding-top:16px;padding-left:0}}@media (width<=640px){.gXqZ8G_page{padding:16px 12px}.gXqZ8G_header{flex-direction:column;align-items:flex-start}.gXqZ8G_headerActions{justify-content:flex-start}.gXqZ8G_table th:nth-child(n+3),.gXqZ8G_table td:nth-child(n+3){display:none}.gXqZ8G_table th:first-child{width:52%}.gXqZ8G_table th:nth-child(2){width:48%}.gXqZ8G_toolbar>span:first-child{width:100%}.gXqZ8G_resultCount{margin-left:0}}@media (prefers-reduced-motion:reduce){.gXqZ8G_page *{scroll-behavior:auto;transition:none}}";
6008
+ const tagId$1 = "@canhta/dsh-autopilot/C:\\Users\\Admin\\Projects\\Indie\\dsh-autopilot\\src\\client\\operations.module.css";
6008
6009
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$1) + "]") === null) {
6009
6010
  const element = document.createElement("style");
6010
6011
  element.dataset.plugin = "@canhta/dsh-autopilot";
@@ -6013,40 +6014,40 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
6013
6014
  document.head.appendChild(element);
6014
6015
  }
6015
6016
  var operations_module_css_default = {
6016
- "table": "xrrV_G_table",
6017
- "header": "xrrV_G_header",
6018
- "tabs": "xrrV_G_tabs",
6019
- "runsOnly": "xrrV_G_runsOnly",
6020
- "blocker": "xrrV_G_blocker",
6021
- "reason": "xrrV_G_reason",
6022
- "toolbar": "xrrV_G_toolbar",
6023
- "activeTab": "xrrV_G_activeTab",
6024
- "numeric": "xrrV_G_numeric",
6025
- "content": "xrrV_G_content",
6026
- "longText": "xrrV_G_longText",
6027
- "tableScroll": "xrrV_G_tableScroll",
6028
- "headerActions": "xrrV_G_headerActions",
6029
- "stateLabel": "xrrV_G_stateLabel",
6030
- "success": "xrrV_G_success",
6031
- "runLink": "xrrV_G_runLink",
6032
- "timeline": "xrrV_G_timeline",
6033
- "connectionNotice": "xrrV_G_connectionNotice",
6034
- "empty": "xrrV_G_empty",
6035
- "notice": "xrrV_G_notice",
6036
- "detail": "xrrV_G_detail",
6037
- "split": "xrrV_G_split",
6038
- "detailActions": "xrrV_G_detailActions",
6039
- "resultCount": "xrrV_G_resultCount",
6040
- "resource": "xrrV_G_resource",
6041
- "worktreeList": "xrrV_G_worktreeList",
6042
- "attention": "xrrV_G_attention",
6043
- "listRegion": "xrrV_G_listRegion",
6044
- "detailHeader": "xrrV_G_detailHeader",
6045
- "error": "xrrV_G_error",
6046
- "summary": "xrrV_G_summary",
6047
- "page": "xrrV_G_page",
6048
- "checkbox": "xrrV_G_checkbox",
6049
- "command": "xrrV_G_command"
6017
+ "attention": "gXqZ8G_attention",
6018
+ "resultCount": "gXqZ8G_resultCount",
6019
+ "error": "gXqZ8G_error",
6020
+ "tableScroll": "gXqZ8G_tableScroll",
6021
+ "table": "gXqZ8G_table",
6022
+ "detailActions": "gXqZ8G_detailActions",
6023
+ "blocker": "gXqZ8G_blocker",
6024
+ "detailHeader": "gXqZ8G_detailHeader",
6025
+ "activeTab": "gXqZ8G_activeTab",
6026
+ "checkbox": "gXqZ8G_checkbox",
6027
+ "reason": "gXqZ8G_reason",
6028
+ "toolbar": "gXqZ8G_toolbar",
6029
+ "listRegion": "gXqZ8G_listRegion",
6030
+ "longText": "gXqZ8G_longText",
6031
+ "split": "gXqZ8G_split",
6032
+ "command": "gXqZ8G_command",
6033
+ "detail": "gXqZ8G_detail",
6034
+ "runsOnly": "gXqZ8G_runsOnly",
6035
+ "tabs": "gXqZ8G_tabs",
6036
+ "connectionNotice": "gXqZ8G_connectionNotice",
6037
+ "content": "gXqZ8G_content",
6038
+ "empty": "gXqZ8G_empty",
6039
+ "resource": "gXqZ8G_resource",
6040
+ "page": "gXqZ8G_page",
6041
+ "header": "gXqZ8G_header",
6042
+ "worktreeList": "gXqZ8G_worktreeList",
6043
+ "numeric": "gXqZ8G_numeric",
6044
+ "timeline": "gXqZ8G_timeline",
6045
+ "runLink": "gXqZ8G_runLink",
6046
+ "summary": "gXqZ8G_summary",
6047
+ "notice": "gXqZ8G_notice",
6048
+ "success": "gXqZ8G_success",
6049
+ "stateLabel": "gXqZ8G_stateLabel",
6050
+ "headerActions": "gXqZ8G_headerActions"
6050
6051
  };
6051
6052
  //#endregion
6052
6053
  //#region src/client/OperationsAtoms.tsx
@@ -6751,9 +6752,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
6751
6752
  return state.command?.status === "pending" || state.command?.status === "accepted" || state.command?.status === "in-progress";
6752
6753
  }
6753
6754
  //#endregion
6754
- //#region \0dsh-autopilot-css:/Users/canh/Solo/Repo/dsh-autopilot/src/client/settings.module.css.mjs
6755
- const css = ".gRqt2a_settings{max-width:920px;color:var(--dsw-alias-label-primary,#202124);padding:0 8px 24px;font-size:14px}.gRqt2a_settings h2{margin:0;font-size:20px;line-height:1.3}.gRqt2a_settings>p,.gRqt2a_providerCard p,.gRqt2a_gap{color:var(--dsw-alias-label-secondary,#5f6368)}.gRqt2a_settings fieldset{border:1px solid var(--dsw-alias-border-l3,#d9dce1);border-radius:10px;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:20px 0;padding:16px;display:grid}.gRqt2a_settings legend{padding:0 6px;font-weight:600}.gRqt2a_settings label{gap:6px;display:grid}.gRqt2a_settings select{border:1px solid var(--dsw-alias-border-l4,#c7cbd1);color:inherit;background:var(--dsw-alias-bg-layer-1,#fff);border-radius:8px;padding:0 10px}.gRqt2a_settings label>select,.gRqt2a_settings input{width:100%;min-height:34px}.gRqt2a_notice,.gRqt2a_providerGrid,.gRqt2a_fullWidth{grid-column:1/-1}.gRqt2a_notice,.gRqt2a_gap{border:1px solid var(--dsw-alias-border-l3,#d9dce1);background:var(--dsw-alias-bg-layer-2,#f7f8fa);border-radius:8px;margin:8px 0;padding:10px 12px}.gRqt2a_gap{border-color:var(--dsw-alias-state-warn-primary,#a15c00)}.gRqt2a_providerGrid{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:12px;display:grid}.gRqt2a_providerCard{border:1px solid var(--dsw-alias-border-l3,#d9dce1);background:var(--dsw-alias-bg-layer-2,#f7f8fa);border-radius:8px;padding:12px}.gRqt2a_providerCard[data-selected=true]{border-color:var(--dsw-alias-brand-primary,#315efb)}.gRqt2a_providerCard>div:first-child,.gRqt2a_settingsFooter,.gRqt2a_credentialActions{align-items:center;gap:8px;display:flex}.gRqt2a_providerCard h3{margin:0 auto 0 0;font-size:15px}.gRqt2a_providerCard dl{gap:3px;margin:12px 0;display:grid}.gRqt2a_providerCard dt{color:var(--dsw-alias-label-secondary,#5f6368)}.gRqt2a_providerCard dd{overflow-wrap:anywhere;margin:0 0 6px}.gRqt2a_credential{border-top:1px solid var(--dsw-alias-border-l3,#d9dce1);gap:8px;padding-top:12px;display:grid}.gRqt2a_settings .gRqt2a_checkboxLabel{flex-direction:row;align-items:center;gap:8px;display:flex}.gRqt2a_checkboxLabel input[type=checkbox]{width:auto;min-height:auto;margin:0}.gRqt2a_notificationList{gap:12px;display:grid}.gRqt2a_notificationRow{border:1px solid var(--dsw-alias-border-l3,#d9dce1);background:var(--dsw-alias-bg-layer-2,#f7f8fa);border-radius:8px;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:12px;display:grid}.gRqt2a_settings .gRqt2a_eventChoices{border:0;flex-wrap:wrap;grid-column:1/-1;gap:8px 16px;margin:0;padding:0;display:flex}.gRqt2a_eventChoices legend{width:100%;padding:0;font-weight:400}.gRqt2a_settingsFooter{flex-wrap:wrap}.gRqt2a_success{color:var(--dsw-alias-state-success-primary,#0a7a45)}.gRqt2a_error{color:var(--dsw-alias-state-error-primary,#c62828)}@media (width<=640px){.gRqt2a_settings fieldset{grid-template-columns:1fr}.gRqt2a_notice,.gRqt2a_providerGrid,.gRqt2a_fullWidth{grid-column:auto}.gRqt2a_notificationRow{grid-template-columns:1fr}.gRqt2a_eventChoices{grid-column:auto}}@media (prefers-reduced-motion:reduce){.gRqt2a_settings *{scroll-behavior:auto;transition:none}}";
6756
- const tagId = "@canhta/dsh-autopilot/settings.module.css";
6755
+ //#region \0dsh-autopilot-css:C:\Users\Admin\Projects\Indie\dsh-autopilot\src\client\settings.module.css.mjs
6756
+ const css = ".rCFH-q_settings{max-width:920px;color:var(--dsw-alias-label-primary,#202124);padding:0 8px 24px;font-size:14px}.rCFH-q_settings h2{margin:0;font-size:20px;line-height:1.3}.rCFH-q_settings>p,.rCFH-q_providerCard p,.rCFH-q_gap{color:var(--dsw-alias-label-secondary,#5f6368)}.rCFH-q_settings fieldset{border:1px solid var(--dsw-alias-border-l3,#d9dce1);border-radius:10px;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:20px 0;padding:16px;display:grid}.rCFH-q_settings legend{padding:0 6px;font-weight:600}.rCFH-q_settings label{gap:6px;display:grid}.rCFH-q_settings select{border:1px solid var(--dsw-alias-border-l4,#c7cbd1);color:inherit;background:var(--dsw-alias-bg-layer-1,#fff);border-radius:8px;padding:0 10px}.rCFH-q_settings label>select,.rCFH-q_settings input{width:100%;min-height:34px}.rCFH-q_notice,.rCFH-q_fullWidth{grid-column:1/-1}.rCFH-q_notice,.rCFH-q_gap{border:1px solid var(--dsw-alias-border-l3,#d9dce1);background:var(--dsw-alias-bg-layer-2,#f7f8fa);border-radius:8px;margin:8px 0;padding:10px 12px}.rCFH-q_gap{border-color:var(--dsw-alias-state-warn-primary,#a15c00)}.rCFH-q_providerCard{border:1px solid var(--dsw-alias-border-l3,#d9dce1);background:var(--dsw-alias-bg-layer-2,#f7f8fa);border-radius:8px;padding:12px}.rCFH-q_providerCard>div:first-child,.rCFH-q_settingsFooter,.rCFH-q_credentialActions{align-items:center;gap:8px;display:flex}.rCFH-q_providerCard h3{margin:0 auto 0 0;font-size:15px}.rCFH-q_providerCard dl{gap:3px;margin:12px 0;display:grid}.rCFH-q_providerCard dt{color:var(--dsw-alias-label-secondary,#5f6368)}.rCFH-q_providerCard dd{overflow-wrap:anywhere;margin:0 0 6px}.rCFH-q_credential{border-top:1px solid var(--dsw-alias-border-l3,#d9dce1);gap:8px;padding-top:12px;display:grid}.rCFH-q_settings .rCFH-q_checkboxLabel{flex-direction:row;align-items:center;gap:8px;display:flex}.rCFH-q_checkboxLabel input[type=checkbox]{width:auto;min-height:auto;margin:0}.rCFH-q_notificationList{gap:12px;display:grid}.rCFH-q_notificationRow{border:1px solid var(--dsw-alias-border-l3,#d9dce1);background:var(--dsw-alias-bg-layer-2,#f7f8fa);border-radius:8px;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:12px;display:grid}.rCFH-q_settings .rCFH-q_eventChoices{border:0;flex-wrap:wrap;grid-column:1/-1;gap:8px 16px;margin:0;padding:0;display:flex}.rCFH-q_eventChoices legend{width:100%;padding:0;font-weight:400}.rCFH-q_settingsFooter{flex-wrap:wrap}.rCFH-q_success{color:var(--dsw-alias-state-success-primary,#0a7a45)}.rCFH-q_error{color:var(--dsw-alias-state-error-primary,#c62828)}@media (width<=640px){.rCFH-q_settings fieldset{grid-template-columns:1fr}.rCFH-q_notice,.rCFH-q_fullWidth{grid-column:auto}.rCFH-q_notificationRow{grid-template-columns:1fr}.rCFH-q_eventChoices{grid-column:auto}}@media (prefers-reduced-motion:reduce){.rCFH-q_settings *{scroll-behavior:auto;transition:none}}";
6757
+ const tagId = "@canhta/dsh-autopilot/C:\\Users\\Admin\\Projects\\Indie\\dsh-autopilot\\src\\client\\settings.module.css";
6757
6758
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
6758
6759
  const element = document.createElement("style");
6759
6760
  element.dataset.plugin = "@canhta/dsh-autopilot";
@@ -6762,21 +6763,20 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
6762
6763
  document.head.appendChild(element);
6763
6764
  }
6764
6765
  var settings_module_css_default = {
6765
- "fullWidth": "gRqt2a_fullWidth",
6766
- "error": "gRqt2a_error",
6767
- "credentialActions": "gRqt2a_credentialActions",
6768
- "settingsFooter": "gRqt2a_settingsFooter",
6769
- "checkboxLabel": "gRqt2a_checkboxLabel",
6770
- "providerGrid": "gRqt2a_providerGrid",
6771
- "notificationList": "gRqt2a_notificationList",
6772
- "notificationRow": "gRqt2a_notificationRow",
6773
- "gap": "gRqt2a_gap",
6774
- "providerCard": "gRqt2a_providerCard",
6775
- "notice": "gRqt2a_notice",
6776
- "settings": "gRqt2a_settings",
6777
- "eventChoices": "gRqt2a_eventChoices",
6778
- "success": "gRqt2a_success",
6779
- "credential": "gRqt2a_credential"
6766
+ "notificationList": "rCFH-q_notificationList",
6767
+ "eventChoices": "rCFH-q_eventChoices",
6768
+ "settingsFooter": "rCFH-q_settingsFooter",
6769
+ "checkboxLabel": "rCFH-q_checkboxLabel",
6770
+ "success": "rCFH-q_success",
6771
+ "providerCard": "rCFH-q_providerCard",
6772
+ "settings": "rCFH-q_settings",
6773
+ "notificationRow": "rCFH-q_notificationRow",
6774
+ "credentialActions": "rCFH-q_credentialActions",
6775
+ "notice": "rCFH-q_notice",
6776
+ "error": "rCFH-q_error",
6777
+ "gap": "rCFH-q_gap",
6778
+ "fullWidth": "rCFH-q_fullWidth",
6779
+ "credential": "rCFH-q_credential"
6780
6780
  };
6781
6781
  //#endregion
6782
6782
  //#region src/client/SettingsCapabilitySections.tsx
@@ -7070,6 +7070,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
7070
7070
  const [tests, setTests] = (0, react.useState)({});
7071
7071
  const testRequests = (0, react.useRef)(/* @__PURE__ */ new Map());
7072
7072
  const codeHostProviderInputId = (0, react.useId)();
7073
+ const activeProvider = providers.find((provider) => provider.id === selectedProvider);
7073
7074
  (0, react.useEffect)(() => () => {
7074
7075
  for (const request of testRequests.current.values()) request.abort();
7075
7076
  testRequests.current.clear();
@@ -7150,29 +7151,23 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
7150
7151
  className: settings_module_css_default.notice,
7151
7152
  children: t("mcpNotice")
7152
7153
  }),
7153
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
7154
- className: settings_module_css_default.providerGrid,
7155
- children: providers.map((provider) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ProviderCard, {
7156
- provider,
7157
- selected: provider.id === selectedProvider,
7158
- test: tests[provider.id],
7159
- credentials,
7160
- onTest: () => testProvider(provider),
7161
- onSetCredential,
7162
- onUnsetCredential,
7163
- t
7164
- }, provider.id))
7165
- }),
7166
- providers.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
7167
- className: settings_module_css_default.gap,
7154
+ activeProvider === void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
7155
+ className: `${settings_module_css_default.gap} ${settings_module_css_default.fullWidth}`,
7168
7156
  children: t("configureHint")
7169
- }) : null
7157
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ProviderCard, {
7158
+ provider: activeProvider,
7159
+ test: tests[activeProvider.id],
7160
+ credentials,
7161
+ onTest: () => testProvider(activeProvider),
7162
+ onSetCredential,
7163
+ onUnsetCredential,
7164
+ t
7165
+ })
7170
7166
  ] });
7171
7167
  }
7172
- function ProviderCard({ provider, selected, test, credentials, onTest, onSetCredential, onUnsetCredential, t }) {
7168
+ function ProviderCard({ provider, test, credentials, onTest, onSetCredential, onUnsetCredential, t }) {
7173
7169
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("article", {
7174
- className: settings_module_css_default.providerCard,
7175
- "data-selected": selected ? "true" : void 0,
7170
+ className: `${settings_module_css_default.providerCard} ${settings_module_css_default.fullWidth}`,
7176
7171
  children: [
7177
7172
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", { children: provider.displayName }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tag, {
7178
7173
  tone: provider.availability === "available" ? "success" : "danger",